diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-03-29 11:30:49 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-03-29 11:30:49 +0200 |
| commit | d611925dc7ab2b3f19c5ee9e0f75b8dfb6de1291 (patch) | |
| tree | 4428ac0728c043ca1cb4fc55427f87268ab4860c /src/server/game/AI/SmartScripts | |
| parent | c02b829788cb274a68b125aee4dab35b9a56a2b8 (diff) | |
Core/Units: Reduce differences between branches part 1 - unit updatefield accessors
Diffstat (limited to 'src/server/game/AI/SmartScripts')
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartAI.cpp | 6 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 64 |
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); |
