Added equipment requirement option

This commit is contained in:
Flerp 2025-11-07 21:24:04 -08:00
parent 96b8f233e5
commit 383beffa06
2 changed files with 24 additions and 5 deletions

View File

@ -35,4 +35,8 @@ AutoFish.AutoLootDelayMs = 120
# Bag item required to activate autofish # Bag item required to activate autofish
# Values: Item ID, if 0 then no item required # Values: Item ID, if 0 then no item required
AutoFish.RequiredItemId = 0 AutoFish.RequiredItemId = 0
# Equipped item required to activate autofish
# Values: Item ID, if 0 then no item required
AutoFish.RequiredEquipId = 0

View File

@ -22,6 +22,7 @@ namespace
uint32 sRecastSpell = 18248; uint32 sRecastSpell = 18248;
uint32 sAutoLootDelayMs = 120; uint32 sAutoLootDelayMs = 120;
uint32 sRequiredItemId = 0; uint32 sRequiredItemId = 0;
uint32 sRequiredEquipId = 0;
std::vector<uint32> sBobberEntries; std::vector<uint32> sBobberEntries;
struct GuidHash { std::size_t operator()(ObjectGuid const& g) const noexcept { return std::hash<uint64>()(g.GetRawValue()); } }; struct GuidHash { std::size_t operator()(ObjectGuid const& g) const noexcept { return std::hash<uint64>()(g.GetRawValue()); } };
@ -46,13 +47,26 @@ namespace
return out; return out;
} }
bool HasEquippedItem(Player* plr, uint32 entry)
{
if (!entry) return true;
for (uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot)
{
if (Item* it = plr->GetItemByPos(INVENTORY_SLOT_BAG_0, slot))
if (it->GetEntry() == entry)
return true;
}
return false;
}
bool RequirementMet(Player* plr) bool RequirementMet(Player* plr)
{ {
if (!plr) if (!plr) return false;
if (sRequiredItemId && !plr->HasItemCount(sRequiredItemId, 1, false))
return false; return false;
if (sRequiredItemId == 0) if (sRequiredEquipId && !HasEquippedItem(plr, sRequiredEquipId))
return true; return false;
return plr->HasItemCount(sRequiredItemId, 1, false); return true;
} }
void ScheduleRecast(Player* plr) void ScheduleRecast(Player* plr)
@ -168,6 +182,7 @@ public:
sRecastSpell = sConfigMgr->GetOption<uint32>("AutoFish.RecastSpell", 18248u); sRecastSpell = sConfigMgr->GetOption<uint32>("AutoFish.RecastSpell", 18248u);
sAutoLootDelayMs = sConfigMgr->GetOption<uint32>("AutoFish.AutoLootDelayMs", 120u); sAutoLootDelayMs = sConfigMgr->GetOption<uint32>("AutoFish.AutoLootDelayMs", 120u);
sRequiredItemId = sConfigMgr->GetOption<uint32>("AutoFish.RequiredItemId", 0u); sRequiredItemId = sConfigMgr->GetOption<uint32>("AutoFish.RequiredItemId", 0u);
sRequiredEquipId = sConfigMgr->GetOption<uint32>("AutoFish.RequiredEquipId", 0u);
sBobberEntries = ParseEntryList(sConfigMgr->GetOption<std::string>("AutoFish.BobberEntries", "35591")); sBobberEntries = ParseEntryList(sConfigMgr->GetOption<std::string>("AutoFish.BobberEntries", "35591"));
} }