ItemUsageValue: Handle items that create required items (#1091)

* Updated IsItemUsefulForQuest to handle items that create required quest items

* Debug output

* Removed unneeded botAI->

* Debug output in Calculate

* -> not .

* Comprehensive debug output for quest usage

* Corrected logic for lootable items when sync quest is enabled

* #include "LootObjectStack.h"

* Corrected call to IsItem

* Removed debug statements

* Reimplement ItemCount >= RequiredItemCount

* Modified CanLoot to loot all items when loot source is an item in their bags

* Set loot target when sending Open packet
This commit is contained in:
avirar
2025-03-25 00:47:25 +11:00
committed by GitHub
parent 47ffe37519
commit c83cf0706a
3 changed files with 91 additions and 11 deletions

View File

@@ -4,6 +4,9 @@
#include "WorldPacket.h"
#include "Player.h"
#include "ObjectMgr.h"
#include "LootObjectStack.h"
#include "AiObjectContext.h"
bool OpenItemAction::Execute(Event event)
{
bool foundOpenable = false;
@@ -27,6 +30,11 @@ void OpenItemAction::OpenItem(Item* item, uint8 bag, uint8 slot)
packet << bag << slot;
bot->GetSession()->HandleOpenItemOpcode(packet);
// Store the item GUID as the loot target
LootObject lootObject;
lootObject.guid = item->GetGUID();
botAI->GetAiObjectContext()->GetValue<LootObject>("loot target")->Set(lootObject);
std::ostringstream out;
out << "Opened item: " << item->GetTemplate()->Name1;
botAI->TellMaster(out.str());