reverting to base module

This commit is contained in:
Flerp 2025-11-01 17:17:33 -07:00
parent 3a8496b853
commit 12475ef9c2

View File

@ -2,19 +2,16 @@
#include "Player.h" #include "Player.h"
#include "GameObject.h" #include "GameObject.h"
#include "ObjectAccessor.h" #include "ObjectAccessor.h"
#include "GridNotifiers.h"
#include "CellImpl.h"
#include "Config.h" #include "Config.h"
#include "LootMgr.h"
#include <sstream>
#include <vector>
#include <list>
#include <string>
namespace namespace
{ {
std::vector<uint32> sBobberEntries;
bool sEnabled = true; bool sEnabled = true;
uint32 sTickMs = 200; uint32 sTickMs = 200;
float sScanRange = 30.0f; float sScanRange = 30.0f;
std::vector<uint32> sBobberEntries;
std::vector<uint32> ParseEntryList(std::string const& csv) std::vector<uint32> ParseEntryList(std::string const& csv)
{ {
@ -23,48 +20,47 @@ namespace
std::string item; std::string item;
while (std::getline(ss, item, ',')) while (std::getline(ss, item, ','))
{ {
item.erase(0, item.find_first_not_of(" \t\r\n")); auto trim = [](std::string& s)
item.erase(item.find_last_not_of(" \t\r\n") + 1); {
s.erase(0, s.find_first_not_of(" \t\r\n"));
s.erase(s.find_last_not_of(" \t\r\n") + 1);
};
trim(item);
if (!item.empty()) if (!item.empty())
out.push_back(uint32(std::stoul(item))); out.push_back(static_cast<uint32>(std::stoul(item)));
} }
return out; return out;
} }
void TryAutoFish(Player* plr) void TryAutoLootNearbyBobber(Player* plr)
{ {
if (!plr || !plr->IsInWorld()) if (!plr || !plr->IsInWorld())
return; return;
std::list<GameObject*> nearList; std::list<GameObject*> goList;
for (auto entry : sBobberEntries) Acore::AllGameObjectsMatchingOneEntryInRange check(plr, sBobberEntries, sScanRange);
plr->GetGameObjectListWithEntryInGrid(nearList, entry, sScanRange); Acore::GameObjectListSearcher<Acore::AllGameObjectsMatchingOneEntryInRange> searcher(plr, goList, check);
Cell::VisitObjects(plr, searcher, sScanRange);
for (GameObject* go : nearList) for (GameObject* go : goList)
{ {
if (!go || go->GetOwnerGUID() != plr->GetGUID()) if (!go)
continue;
if (go->GetOwnerGUID() != plr->GetGUID())
continue; continue;
if (go->getLootState() == GO_READY) if (go->getLootState() == GO_READY)
{ {
plr->SendLoot(go->GetGUID(), LOOT_FISHING); plr->SendLoot(go->GetGUID(), LOOT_FISHING);
Loot* loot = &go->loot;
for (uint32 i = 0; i < loot->items.size(); ++i)
plr->StoreLootItem(i, loot);
plr->SendLootRelease(go->GetGUID());
go->SetLootState(GO_JUST_DEACTIVATED);
return; return;
} }
} }
} }
} }
class AutoFish_WorldScript : public WorldScript class AutoFish_WorldUpdate : public WorldScript
{ {
public: public:
AutoFish_WorldScript() : WorldScript("AutoFish_WorldScript") {} AutoFish_WorldUpdate() : WorldScript("AutoFish_WorldUpdate") {}
void OnAfterConfigLoad(bool) override void OnAfterConfigLoad(bool) override
{ {
@ -91,12 +87,12 @@ public:
Player* plr = kv.second; Player* plr = kv.second;
if (!plr || !plr->IsInWorld() || plr->IsGameMaster()) if (!plr || !plr->IsInWorld() || plr->IsGameMaster())
continue; continue;
TryAutoFish(plr); TryAutoLootNearbyBobber(plr);
} }
} }
}; };
void AddSC_autofish_world() void AddSC_autofish_world()
{ {
new AutoFish_WorldScript(); new AutoFish_WorldUpdate();
} }