aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/AI/SmartScripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/AI/SmartScripts')
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp6
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp64
2 files changed, 53 insertions, 17 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index 751337ca3d1..c7dbdfe6653 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -68,8 +68,8 @@ void SmartAI::StartPath(bool run/* = false*/, uint32 pathId/* = 0*/, bool repeat
if (invoker && invoker->GetTypeId() == TYPEID_PLAYER)
{
- _escortNPCFlags = me->GetUInt32Value(UNIT_NPC_FLAGS);
- me->SetFlag(UNIT_NPC_FLAGS, 0);
+ _escortNPCFlags = me->GetNpcFlags();
+ me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
}
me->GetMotionMaster()->MovePath(_path, _repeatWaypointPath);
@@ -193,7 +193,7 @@ void SmartAI::EndPath(bool fail)
if (_escortNPCFlags)
{
- me->SetFlag(UNIT_NPC_FLAGS, _escortNPCFlags);
+ me->ReplaceAllNpcFlags((NPCFlags)_escortNPCFlags);
_escortNPCFlags = 0;
}
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index b9aa990a071..285e736317d 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -727,7 +727,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
{
if (IsUnit(target))
{
- target->ToUnit()->SetUInt32Value(UNIT_NPC_EMOTESTATE, e.action.emote.emote);
+ target->ToUnit()->SetEmoteState(Emote(e.action.emote.emote));
TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_SET_EMOTE_STATE. Unit %s set emotestate to %u",
target->GetGUID().ToString().c_str(), e.action.emote.emote);
}
@@ -1526,7 +1526,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
for (uint32 i = 0; i < MAX_EQUIPMENT_ITEMS; ++i)
if (!e.action.equip.mask || (e.action.equip.mask & (1 << i)))
- npc->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + i, slot[i]);
+ npc->SetVirtualItem(i, slot[i]);
}
}
break;
@@ -1625,21 +1625,21 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
{
for (WorldObject* target : targets)
if (IsCreature(target))
- target->ToUnit()->SetUInt32Value(UNIT_NPC_FLAGS, e.action.flag.flag);
+ target->ToUnit()->ReplaceAllNpcFlags(NPCFlags(e.action.flag.flag));
break;
}
case SMART_ACTION_ADD_NPC_FLAG:
{
for (WorldObject* target : targets)
if (IsCreature(target))
- target->ToUnit()->SetFlag(UNIT_NPC_FLAGS, e.action.flag.flag);
+ target->ToUnit()->SetNpcFlag(NPCFlags(e.action.flag.flag));
break;
}
case SMART_ACTION_REMOVE_NPC_FLAG:
{
for (WorldObject* target : targets)
if (IsCreature(target))
- target->ToUnit()->RemoveFlag(UNIT_NPC_FLAGS, e.action.flag.flag);
+ target->ToUnit()->RemoveNpcFlag(NPCFlags(e.action.flag.flag));
break;
}
case SMART_ACTION_CROSS_CAST:
@@ -1768,15 +1768,51 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
case SMART_ACTION_SET_UNIT_FIELD_BYTES_1:
{
for (WorldObject* target : targets)
+ {
if (IsUnit(target))
- target->ToUnit()->SetByteFlag(UNIT_FIELD_BYTES_1, e.action.setunitByte.type, e.action.setunitByte.byte1);
+ {
+ switch (e.action.setunitByte.type)
+ {
+ case 0:
+ target->ToUnit()->SetStandState(UnitStandStateType(e.action.setunitByte.byte1));
+ break;
+ case 1:
+ // pet talent points
+ break;
+ case 2:
+ target->ToUnit()->SetVisFlag(UnitVisFlags(e.action.setunitByte.byte1));
+ break;
+ case 3:
+ target->ToUnit()->SetAnimTier(AnimTier(e.action.setunitByte.byte1));
+ break;
+ }
+ }
+ }
break;
}
case SMART_ACTION_REMOVE_UNIT_FIELD_BYTES_1:
{
for (WorldObject* target : targets)
+ {
if (IsUnit(target))
- target->ToUnit()->RemoveByteFlag(UNIT_FIELD_BYTES_1, e.action.delunitByte.type, e.action.delunitByte.byte1);
+ {
+ switch (e.action.setunitByte.type)
+ {
+ case 0:
+ target->ToUnit()->SetStandState(UNIT_STAND_STATE_STAND);
+ break;
+ case 1:
+ // pet talent points
+ break;
+ case 2:
+ target->ToUnit()->RemoveVisFlag(UnitVisFlags(e.action.setunitByte.byte1));
+ break;
+ case 3:
+ target->ToUnit()->SetAnimTier(AnimTier::Ground);
+ break;
+ }
+ }
+ }
break;
}
case SMART_ACTION_INTERRUPT_SPELL:
@@ -2234,9 +2270,9 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
if (IsUnit(target))
{
if (e.action.setImmunePC.immunePC)
- target->ToUnit()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
+ target->ToUnit()->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
else
- target->ToUnit()->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
+ target->ToUnit()->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
}
}
break;
@@ -2248,9 +2284,9 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
if (IsUnit(target))
{
if (e.action.setImmuneNPC.immuneNPC)
- target->ToUnit()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
+ target->ToUnit()->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
else
- target->ToUnit()->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
+ target->ToUnit()->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
}
}
break;
@@ -2262,9 +2298,9 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
if (IsUnit(target))
{
if (e.action.setUninteractible.uninteractible)
- target->ToUnit()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNINTERACTIBLE);
+ target->ToUnit()->SetUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
else
- target->ToUnit()->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNINTERACTIBLE);
+ target->ToUnit()->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
}
}
break;
@@ -2767,7 +2803,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
{
if (!me || !me->IsEngaged() || !me->GetMaxPower(POWER_MANA))
return;
- uint32 perc = uint32(100.0f * me->GetPower(POWER_MANA) / me->GetMaxPower(POWER_MANA));
+ uint32 perc = uint32(me->GetPowerPct(POWER_MANA));
if (perc > e.event.minMaxRepeat.max || perc < e.event.minMaxRepeat.min)
return;
ProcessTimedAction(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax);