diff options
| author | Shauren <shauren.trinity@gmail.com> | 2017-02-19 10:58:08 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2017-02-19 10:58:08 +0100 |
| commit | 5dbe9e7890e41b16933e4651edc634373d4d876b (patch) | |
| tree | 8f997abff36d456ce562c956da12b45d0f668901 /src/server/game/AI/SmartScripts | |
| parent | 7b5bbf2c3544f824fd672fcad05af2ced58fd7ff (diff) | |
Core/Creatures: Implemented all creature equipment modifiers
* It is now possible to give creatures a mythic/heroic weapon
Closes #19160
Diffstat (limited to 'src/server/game/AI/SmartScripts')
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 20 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 11 |
2 files changed, 13 insertions, 18 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 465cc4b5c84..16506842570 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1603,7 +1603,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u { if (Creature* npc = (*itr)->ToCreature()) { - uint32 slot[3]; + EquipmentItem slot[3]; int8 equipId = (int8)e.action.equip.entry; if (equipId) { @@ -1615,22 +1615,22 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u } npc->SetCurrentEquipmentId(equipId); - slot[0] = einfo->ItemEntry[0]; - slot[1] = einfo->ItemEntry[1]; - slot[2] = einfo->ItemEntry[2]; + slot[0] = einfo->Items[0]; + slot[1] = einfo->Items[1]; + slot[2] = einfo->Items[2]; } else { - slot[0] = e.action.equip.slot1; - slot[1] = e.action.equip.slot2; - slot[2] = e.action.equip.slot3; + slot[0].ItemId = e.action.equip.slot1; + slot[1].ItemId = e.action.equip.slot2; + slot[2].ItemId = e.action.equip.slot3; } if (!e.action.equip.mask || (e.action.equip.mask & 1)) - npc->SetVirtualItem(0, slot[0]); + npc->SetVirtualItem(0, slot[0].ItemId, slot[0].AppearanceModId, slot[0].ItemVisual); if (!e.action.equip.mask || (e.action.equip.mask & 2)) - npc->SetVirtualItem(1, slot[1]); + npc->SetVirtualItem(1, slot[1].ItemId, slot[1].AppearanceModId, slot[1].ItemVisual); if (!e.action.equip.mask || (e.action.equip.mask & 4)) - npc->SetVirtualItem(2, slot[2]); + npc->SetVirtualItem(2, slot[2].ItemId, slot[2].AppearanceModId, slot[2].ItemVisual); } } diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index a4ed92e6dcf..62954a4bcbe 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -1146,15 +1146,10 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) if (e.GetScriptType() == SMART_SCRIPT_TYPE_CREATURE) { int8 equipId = (int8)e.action.equip.entry; - - if (equipId) + if (equipId && !sObjectMgr->GetEquipmentInfo(e.entryOrGuid, equipId)) { - EquipmentInfo const* einfo = sObjectMgr->GetEquipmentInfo(e.entryOrGuid, equipId); - if (!einfo) - { - TC_LOG_ERROR("sql.sql", "SmartScript: SMART_ACTION_EQUIP uses non-existent equipment info id %u for creature " SI64FMTD ", skipped.", equipId, e.entryOrGuid); - return false; - } + TC_LOG_ERROR("sql.sql", "SmartScript: SMART_ACTION_EQUIP uses non-existent equipment info id %u for creature " SI64FMTD ", skipped.", equipId, e.entryOrGuid); + return false; } } break; |
