mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-14 01:19:08 +00:00
* 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
42 lines
1.1 KiB
C++
42 lines
1.1 KiB
C++
#include "OpenItemAction.h"
|
|
#include "PlayerbotAI.h"
|
|
#include "ItemTemplate.h"
|
|
#include "WorldPacket.h"
|
|
#include "Player.h"
|
|
#include "ObjectMgr.h"
|
|
#include "LootObjectStack.h"
|
|
#include "AiObjectContext.h"
|
|
|
|
bool OpenItemAction::Execute(Event event)
|
|
{
|
|
bool foundOpenable = false;
|
|
|
|
Item* item = botAI->FindOpenableItem();
|
|
if (item)
|
|
{
|
|
uint8 bag = item->GetBagSlot(); // Retrieves the bag slot (0 for main inventory)
|
|
uint8 slot = item->GetSlot(); // Retrieves the actual slot inside the bag
|
|
|
|
OpenItem(item, bag, slot);
|
|
foundOpenable = true;
|
|
}
|
|
|
|
return foundOpenable;
|
|
}
|
|
|
|
void OpenItemAction::OpenItem(Item* item, uint8 bag, uint8 slot)
|
|
{
|
|
WorldPacket packet(CMSG_OPEN_ITEM);
|
|
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());
|
|
}
|