aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/AI/SmartScripts
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-02-19 10:58:08 +0100
committerShauren <shauren.trinity@gmail.com>2017-02-19 10:58:08 +0100
commit5dbe9e7890e41b16933e4651edc634373d4d876b (patch)
tree8f997abff36d456ce562c956da12b45d0f668901 /src/server/game/AI/SmartScripts
parent7b5bbf2c3544f824fd672fcad05af2ced58fd7ff (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.cpp20
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.cpp11
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;