mirror of
https://github.com/araxiaonline/TrinityCore2.git
synced 2026-06-14 20:13:04 -04:00
Core/SmartAI: modified ACTION_EQUIP to use a bitmask to send slot updates (for more blzzlike packet handling)
--HG-- branch : trunk
This commit is contained in:
@@ -930,14 +930,32 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u
|
||||
{
|
||||
if(Creature* npc = (*itr)->ToCreature())
|
||||
{
|
||||
if (e.action.equip.entry && !e.action.equip.slot1 && !e.action.equip.slot2 && !e.action.equip.slot3)
|
||||
npc->LoadEquipment(e.action.equip.entry, true);
|
||||
uint32 slot[3];
|
||||
if (e.action.equip.entry)
|
||||
{
|
||||
EquipmentInfo const *einfo = sObjectMgr.GetEquipmentInfo(e.action.equip.entry);
|
||||
if (!einfo)
|
||||
{
|
||||
sLog.outErrorDb("SmartScript: SMART_ACTION_EQUIP uses non-existent equipment info entry %u", e.action.equip.entry);
|
||||
return;
|
||||
}
|
||||
npc->SetCurrentEquipmentId(e.action.equip.entry);
|
||||
slot[0] = einfo->equipentry[0];
|
||||
slot[1] = einfo->equipentry[1];
|
||||
slot[2] = einfo->equipentry[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
npc->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, e.action.equip.slot1);
|
||||
npc->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, e.action.equip.slot2);
|
||||
npc->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 2, e.action.equip.slot3);
|
||||
slot[0] = e.action.equip.slot1;
|
||||
slot[1] = e.action.equip.slot2;
|
||||
slot[2] = e.action.equip.slot3;
|
||||
}
|
||||
if (!e.action.equip.mask || e.action.equip.mask & 1)
|
||||
npc->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, e.action.equip.slot1);
|
||||
if (!e.action.equip.mask || e.action.equip.mask & 2)
|
||||
npc->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, e.action.equip.slot2);
|
||||
if (!e.action.equip.mask || e.action.equip.mask & 4)
|
||||
npc->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 2, e.action.equip.slot3);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user