diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-01-19 21:23:06 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-01-19 21:23:06 +0100 |
commit | 3df16c12b75c27c85b720a3eced4943a06f060f5 (patch) | |
tree | 6ae179130fae00602dc119bd2509fc50a71fbc11 | |
parent | 8568b08350b954afb6603bf2c64897493230f2b1 (diff) |
Core/Scripts: Move EvadeReason outside of CreatureAI class
63 files changed, 495 insertions, 446 deletions
diff --git a/src/server/game/AI/CoreAI/PassiveAI.cpp b/src/server/game/AI/CoreAI/PassiveAI.cpp index 63a6f9932a1..8bae96a6092 100644 --- a/src/server/game/AI/CoreAI/PassiveAI.cpp +++ b/src/server/game/AI/CoreAI/PassiveAI.cpp @@ -48,7 +48,7 @@ int32 NullCreatureAI::Permissible(Creature const* creature) void PassiveAI::UpdateAI(uint32) { if (me->IsEngaged() && !me->IsInCombat()) - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); } void PossessedAI::AttackStart(Unit* target) @@ -82,7 +82,7 @@ void CritterAI::JustEngagedWith(Unit* /*who*/) void CritterAI::MovementInform(uint32 type, uint32 /*id*/) { if (type == TIMED_FLEEING_MOTION_TYPE) - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); } void CritterAI::EnterEvadeMode(EvadeReason why) diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp index a807a178acb..b503441b976 100644 --- a/src/server/game/AI/CoreAI/UnitAI.cpp +++ b/src/server/game/AI/CoreAI/UnitAI.cpp @@ -423,166 +423,3 @@ std::string UnitAI::GetDebugInfo() const << "Me: " << (me ? me->GetDebugInfo() : "NULL"); return sstr.str(); } - -DefaultTargetSelector::DefaultTargetSelector(Unit const* unit, float dist, bool playerOnly, bool withTank, int32 aura) - : _me(unit), _dist(dist), _playerOnly(playerOnly), _exception(!withTank ? unit->GetThreatManager().GetLastVictim() : nullptr), _aura(aura) -{ -} - -bool DefaultTargetSelector::operator()(Unit const* target) const -{ - if (!_me) - return false; - - if (!target) - return false; - - if (_exception && target == _exception) - return false; - - if (_playerOnly && (target->GetTypeId() != TYPEID_PLAYER)) - return false; - - if (_dist > 0.0f && !_me->IsWithinCombatRange(target, _dist)) - return false; - - if (_dist < 0.0f && _me->IsWithinCombatRange(target, -_dist)) - return false; - - if (_aura) - { - if (_aura > 0) - { - if (!target->HasAura(_aura)) - return false; - } - else - { - if (target->HasAura(-_aura)) - return false; - } - } - - return true; -} - -SpellTargetSelector::SpellTargetSelector(Unit* caster, uint32 spellId) : - _caster(caster), _spellInfo(sSpellMgr->GetSpellInfo(spellId, caster->GetMap()->GetDifficultyID())) -{ - ASSERT(_spellInfo); -} - -bool SpellTargetSelector::operator()(Unit const* target) const -{ - if (!target) - return false; - - if (_spellInfo->CheckTarget(_caster, target) != SPELL_CAST_OK) - return false; - - // copypasta from Spell::CheckRange - float minRange = 0.0f; - float maxRange = 0.0f; - float rangeMod = 0.0f; - if (_spellInfo->RangeEntry) - { - if (_spellInfo->RangeEntry->Flags & SPELL_RANGE_MELEE) - { - rangeMod = _caster->GetCombatReach() + 4.0f / 3.0f; - rangeMod += target->GetCombatReach(); - - rangeMod = std::max(rangeMod, NOMINAL_MELEE_RANGE); - } - else - { - float meleeRange = 0.0f; - if (_spellInfo->RangeEntry->Flags & SPELL_RANGE_RANGED) - { - meleeRange = _caster->GetCombatReach() + 4.0f / 3.0f; - meleeRange += target->GetCombatReach(); - - meleeRange = std::max(meleeRange, NOMINAL_MELEE_RANGE); - } - - minRange = _caster->GetSpellMinRangeForTarget(target, _spellInfo) + meleeRange; - maxRange = _caster->GetSpellMaxRangeForTarget(target, _spellInfo); - - rangeMod = _caster->GetCombatReach(); - rangeMod += target->GetCombatReach(); - - if (minRange > 0.0f && !(_spellInfo->RangeEntry->Flags & SPELL_RANGE_RANGED)) - minRange += rangeMod; - } - - if (_caster->isMoving() && target->isMoving() && !_caster->IsWalking() && !target->IsWalking() && - (_spellInfo->RangeEntry->Flags & SPELL_RANGE_MELEE || target->GetTypeId() == TYPEID_PLAYER)) - rangeMod += 8.0f / 3.0f; - } - - maxRange += rangeMod; - - minRange *= minRange; - maxRange *= maxRange; - - if (target != _caster) - { - if (_caster->GetExactDistSq(target) > maxRange) - return false; - - if (minRange > 0.0f && _caster->GetExactDistSq(target) < minRange) - return false; - } - - return true; -} - -bool NonTankTargetSelector::operator()(Unit const* target) const -{ - if (!target) - return false; - - if (_playerOnly && target->GetTypeId() != TYPEID_PLAYER) - return false; - - if (Unit* currentVictim = _source->GetThreatManager().GetCurrentVictim()) - return target != currentVictim; - - return target != _source->GetVictim(); -} - -bool PowerUsersSelector::operator()(Unit const* target) const -{ - if (!_me || !target) - return false; - - if (target->GetPowerType() != _power) - return false; - - if (_playerOnly && target->GetTypeId() != TYPEID_PLAYER) - return false; - - if (_dist > 0.0f && !_me->IsWithinCombatRange(target, _dist)) - return false; - - if (_dist < 0.0f && _me->IsWithinCombatRange(target, -_dist)) - return false; - - return true; -} - -bool FarthestTargetSelector::operator()(Unit const* target) const -{ - if (!_me || !target) - return false; - - if (_playerOnly && target->GetTypeId() != TYPEID_PLAYER) - return false; - - if (_dist > 0.0f && !_me->IsWithinCombatRange(target, _dist)) - return false; - - if (_inLos && !_me->IsWithinLOSInMap(target)) - return false; - - return true; -} diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index 631f4f45ff6..e7165b69d3f 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -22,6 +22,7 @@ #include "ObjectGuid.h" #include "SharedDefines.h" #include "SpellDefines.h" +#include "UnitAICommon.h" #include <unordered_map> #define CAST_AI(a, b) (dynamic_cast<a*>(b)) @@ -45,90 +46,6 @@ enum Difficulty : uint8; enum MovementGeneratorType : uint8; enum SpellEffIndex : uint8; -// Selection method used by SelectTarget -enum class SelectTargetMethod -{ - Random, // just pick a random target - MaxThreat, // prefer targets higher in the threat list - MinThreat, // prefer targets lower in the threat list - MaxDistance, // prefer targets further from us - MinDistance // prefer targets closer to us -}; - -// default predicate function to select target based on distance, player and/or aura criteria -struct TC_GAME_API DefaultTargetSelector -{ - public: - // unit: the reference unit - // dist: if 0: ignored, if > 0: maximum distance to the reference unit, if < 0: minimum distance to the reference unit - // playerOnly: self explaining - // withMainTank: allow current tank to be selected - // aura: if 0: ignored, if > 0: the target shall have the aura, if < 0, the target shall NOT have the aura - DefaultTargetSelector(Unit const* unit, float dist, bool playerOnly, bool withMainTank, int32 aura); - bool operator()(Unit const* target) const; - - private: - Unit const* _me; - float _dist; - bool _playerOnly; - Unit const* _exception; - int32 _aura; -}; - -// Target selector for spell casts checking range, auras and attributes -/// @todo Add more checks from Spell::CheckCast -struct TC_GAME_API SpellTargetSelector -{ - public: - SpellTargetSelector(Unit* caster, uint32 spellId); - bool operator()(Unit const* target) const; - - private: - Unit const* _caster; - SpellInfo const* _spellInfo; -}; - -// Very simple target selector, will just skip main target -// NOTE: When passing to UnitAI::SelectTarget remember to use 0 as position for random selection -// because tank will not be in the temporary list -struct TC_GAME_API NonTankTargetSelector -{ - public: - NonTankTargetSelector(Unit* source, bool playerOnly = true) : _source(source), _playerOnly(playerOnly) { } - bool operator()(Unit const* target) const; - - private: - Unit* _source; - bool _playerOnly; -}; - -// Simple selector for units using mana -struct TC_GAME_API PowerUsersSelector -{ -public: - PowerUsersSelector(Unit const* unit, Powers power, float dist, bool playerOnly) : _me(unit), _power(power), _dist(dist), _playerOnly(playerOnly) { } - bool operator()(Unit const* target) const; - -private: - Unit const* _me; - Powers const _power; - float const _dist; - bool const _playerOnly; -}; - -struct TC_GAME_API FarthestTargetSelector -{ -public: - FarthestTargetSelector(Unit const* unit, float dist, bool playerOnly, bool inLos) : _me(unit), _dist(dist), _playerOnly(playerOnly), _inLos(inLos) {} - bool operator()(Unit const* target) const; - - private: - Unit const* _me; - float _dist; - bool _playerOnly; - bool _inLos; -}; - class TC_GAME_API UnitAI { protected: diff --git a/src/server/game/AI/CoreAI/UnitAICommon.cpp b/src/server/game/AI/CoreAI/UnitAICommon.cpp new file mode 100644 index 00000000000..51b60ed64f4 --- /dev/null +++ b/src/server/game/AI/CoreAI/UnitAICommon.cpp @@ -0,0 +1,186 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "UnitAICommon.h" +#include "Map.h" +#include "Spell.h" +#include "SpellInfo.h" +#include "SpellMgr.h" +#include "Unit.h" + +DefaultTargetSelector::DefaultTargetSelector(Unit const* unit, float dist, bool playerOnly, bool withTank, int32 aura) + : _me(unit), _dist(dist), _playerOnly(playerOnly), _exception(!withTank ? unit->GetThreatManager().GetLastVictim() : nullptr), _aura(aura) +{ +} + +bool DefaultTargetSelector::operator()(Unit const* target) const +{ + if (!_me) + return false; + + if (!target) + return false; + + if (_exception && target == _exception) + return false; + + if (_playerOnly && (target->GetTypeId() != TYPEID_PLAYER)) + return false; + + if (_dist > 0.0f && !_me->IsWithinCombatRange(target, _dist)) + return false; + + if (_dist < 0.0f && _me->IsWithinCombatRange(target, -_dist)) + return false; + + if (_aura) + { + if (_aura > 0) + { + if (!target->HasAura(_aura)) + return false; + } + else + { + if (target->HasAura(-_aura)) + return false; + } + } + + return true; +} + +SpellTargetSelector::SpellTargetSelector(Unit* caster, uint32 spellId) : + _caster(caster), _spellInfo(sSpellMgr->GetSpellInfo(spellId, caster->GetMap()->GetDifficultyID())) +{ + ASSERT(_spellInfo); +} + +bool SpellTargetSelector::operator()(Unit const* target) const +{ + if (!target) + return false; + + if (_spellInfo->CheckTarget(_caster, target) != SPELL_CAST_OK) + return false; + + // copypasta from Spell::CheckRange + float minRange = 0.0f; + float maxRange = 0.0f; + float rangeMod = 0.0f; + if (_spellInfo->RangeEntry) + { + if (_spellInfo->RangeEntry->Flags & SPELL_RANGE_MELEE) + { + rangeMod = _caster->GetCombatReach() + 4.0f / 3.0f; + rangeMod += target->GetCombatReach(); + + rangeMod = std::max(rangeMod, NOMINAL_MELEE_RANGE); + } + else + { + float meleeRange = 0.0f; + if (_spellInfo->RangeEntry->Flags & SPELL_RANGE_RANGED) + { + meleeRange = _caster->GetCombatReach() + 4.0f / 3.0f; + meleeRange += target->GetCombatReach(); + + meleeRange = std::max(meleeRange, NOMINAL_MELEE_RANGE); + } + + minRange = _caster->GetSpellMinRangeForTarget(target, _spellInfo) + meleeRange; + maxRange = _caster->GetSpellMaxRangeForTarget(target, _spellInfo); + + rangeMod = _caster->GetCombatReach(); + rangeMod += target->GetCombatReach(); + + if (minRange > 0.0f && !(_spellInfo->RangeEntry->Flags & SPELL_RANGE_RANGED)) + minRange += rangeMod; + } + + if (_caster->isMoving() && target->isMoving() && !_caster->IsWalking() && !target->IsWalking() && + (_spellInfo->RangeEntry->Flags & SPELL_RANGE_MELEE || target->GetTypeId() == TYPEID_PLAYER)) + rangeMod += 8.0f / 3.0f; + } + + maxRange += rangeMod; + + minRange *= minRange; + maxRange *= maxRange; + + if (target != _caster) + { + if (_caster->GetExactDistSq(target) > maxRange) + return false; + + if (minRange > 0.0f && _caster->GetExactDistSq(target) < minRange) + return false; + } + + return true; +} + +bool NonTankTargetSelector::operator()(Unit const* target) const +{ + if (!target) + return false; + + if (_playerOnly && target->GetTypeId() != TYPEID_PLAYER) + return false; + + if (Unit* currentVictim = _source->GetThreatManager().GetCurrentVictim()) + return target != currentVictim; + + return target != _source->GetVictim(); +} + +bool PowerUsersSelector::operator()(Unit const* target) const +{ + if (!_me || !target) + return false; + + if (target->GetPowerType() != _power) + return false; + + if (_playerOnly && target->GetTypeId() != TYPEID_PLAYER) + return false; + + if (_dist > 0.0f && !_me->IsWithinCombatRange(target, _dist)) + return false; + + if (_dist < 0.0f && _me->IsWithinCombatRange(target, -_dist)) + return false; + + return true; +} + +bool FarthestTargetSelector::operator()(Unit const* target) const +{ + if (!_me || !target) + return false; + + if (_playerOnly && target->GetTypeId() != TYPEID_PLAYER) + return false; + + if (_dist > 0.0f && !_me->IsWithinCombatRange(target, _dist)) + return false; + + if (_inLos && !_me->IsWithinLOSInMap(target)) + return false; + + return true; +} diff --git a/src/server/game/AI/CoreAI/UnitAICommon.h b/src/server/game/AI/CoreAI/UnitAICommon.h new file mode 100644 index 00000000000..1c27fb55341 --- /dev/null +++ b/src/server/game/AI/CoreAI/UnitAICommon.h @@ -0,0 +1,117 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TRINITYCORE_UNIT_AI_COMMON_H +#define TRINITYCORE_UNIT_AI_COMMON_H + +#include "Define.h" + +class SpellInfo; +class Unit; + +enum Powers : int8; + +// EnumUtils: DESCRIBE THIS +enum class EvadeReason +{ + NoHostiles, // the creature's threat list is empty + Boundary, // the creature has moved outside its evade boundary + NoPath, // the creature was unable to reach its target for over 5 seconds + SequenceBreak, // this is a boss and the pre-requisite encounters for engaging it are not defeated yet + Other, // anything else +}; + +// Selection method used by SelectTarget +enum class SelectTargetMethod +{ + Random, // just pick a random target + MaxThreat, // prefer targets higher in the threat list + MinThreat, // prefer targets lower in the threat list + MaxDistance, // prefer targets further from us + MinDistance // prefer targets closer to us +}; + +// default predicate function to select target based on distance, player and/or aura criteria +struct TC_GAME_API DefaultTargetSelector +{ + // unit: the reference unit + // dist: if 0: ignored, if > 0: maximum distance to the reference unit, if < 0: minimum distance to the reference unit + // playerOnly: self explaining + // withMainTank: allow current tank to be selected + // aura: if 0: ignored, if > 0: the target shall have the aura, if < 0, the target shall NOT have the aura + DefaultTargetSelector(Unit const* unit, float dist, bool playerOnly, bool withMainTank, int32 aura); + bool operator()(Unit const* target) const; + +private: + Unit const* _me; + float _dist; + bool _playerOnly; + Unit const* _exception; + int32 _aura; +}; + +// Target selector for spell casts checking range, auras and attributes +/// @todo Add more checks from Spell::CheckCast +struct TC_GAME_API SpellTargetSelector +{ + SpellTargetSelector(Unit* caster, uint32 spellId); + bool operator()(Unit const* target) const; + +private: + Unit const* _caster; + SpellInfo const* _spellInfo; +}; + +// Very simple target selector, will just skip main target +// NOTE: When passing to UnitAI::SelectTarget remember to use 0 as position for random selection +// because tank will not be in the temporary list +struct TC_GAME_API NonTankTargetSelector +{ + NonTankTargetSelector(Unit* source, bool playerOnly = true) : _source(source), _playerOnly(playerOnly) { } + bool operator()(Unit const* target) const; + +private: + Unit* _source; + bool _playerOnly; +}; + +// Simple selector for units using mana +struct TC_GAME_API PowerUsersSelector +{ + PowerUsersSelector(Unit const* unit, Powers power, float dist, bool playerOnly) : _me(unit), _power(power), _dist(dist), _playerOnly(playerOnly) { } + bool operator()(Unit const* target) const; + +private: + Unit const* _me; + Powers const _power; + float const _dist; + bool const _playerOnly; +}; + +struct TC_GAME_API FarthestTargetSelector +{ + FarthestTargetSelector(Unit const* unit, float dist, bool playerOnly, bool inLos) : _me(unit), _dist(dist), _playerOnly(playerOnly), _inLos(inLos) { } + bool operator()(Unit const* target) const; + +private: + Unit const* _me; + float _dist; + bool _playerOnly; + bool _inLos; +}; + +#endif // TRINITYCORE_UNIT_AI_COMMON_H diff --git a/src/server/game/AI/CoreAI/enuminfo_UnitAICommon.cpp b/src/server/game/AI/CoreAI/enuminfo_UnitAICommon.cpp new file mode 100644 index 00000000000..cd70ccd8211 --- /dev/null +++ b/src/server/game/AI/CoreAI/enuminfo_UnitAICommon.cpp @@ -0,0 +1,73 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "UnitAICommon.h" +#include "Define.h" +#include "SmartEnum.h" +#include <stdexcept> + +namespace Trinity::Impl::EnumUtilsImpl +{ + +/******************************************************************\ +|* data for enum 'EvadeReason' in 'UnitAICommon.h' auto-generated *| +\******************************************************************/ +template <> +TC_API_EXPORT EnumText EnumUtils<EvadeReason>::ToString(EvadeReason value) +{ + switch (value) + { + case EvadeReason::NoHostiles: return { "NoHostiles", "NoHostiles", "the creature's threat list is empty" }; + case EvadeReason::Boundary: return { "Boundary", "Boundary", "the creature has moved outside its evade boundary" }; + case EvadeReason::NoPath: return { "NoPath", "NoPath", "the creature was unable to reach its target for over 5 seconds" }; + case EvadeReason::SequenceBreak: return { "SequenceBreak", "SequenceBreak", "this is a boss and the pre-requisite encounters for engaging it are not defeated yet" }; + case EvadeReason::Other: return { "Other", "Other", "anything else" }; + default: throw std::out_of_range("value"); + } +} + +template <> +TC_API_EXPORT size_t EnumUtils<EvadeReason>::Count() { return 5; } + +template <> +TC_API_EXPORT EvadeReason EnumUtils<EvadeReason>::FromIndex(size_t index) +{ + switch (index) + { + case 0: return EvadeReason::NoHostiles; + case 1: return EvadeReason::Boundary; + case 2: return EvadeReason::NoPath; + case 3: return EvadeReason::SequenceBreak; + case 4: return EvadeReason::Other; + default: throw std::out_of_range("index"); + } +} + +template <> +TC_API_EXPORT size_t EnumUtils<EvadeReason>::ToIndex(EvadeReason value) +{ + switch (value) + { + case EvadeReason::NoHostiles: return 0; + case EvadeReason::Boundary: return 1; + case EvadeReason::NoPath: return 2; + case EvadeReason::SequenceBreak: return 3; + case EvadeReason::Other: return 4; + default: throw std::out_of_range("value"); + } +} +} diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index 3d90489034c..0ae258856a6 100644 --- a/src/server/game/AI/CreatureAI.cpp +++ b/src/server/game/AI/CreatureAI.cpp @@ -30,6 +30,7 @@ #include "MotionMaster.h" #include "ObjectAccessor.h" #include "Player.h" +#include "SmartEnum.h" #include "SpellHistory.h" #include "TemporarySummon.h" #include "Vehicle.h" @@ -71,7 +72,7 @@ void CreatureAI::OnCharmed(bool isNew) me->LastCharmerGUID.Clear(); if (!me->IsInCombat()) - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); } UnitAI::OnCharmed(isNew); @@ -223,7 +224,7 @@ void CreatureAI::EnterEvadeMode(EvadeReason why) if (!_EnterEvadeMode(why)) return; - TC_LOG_DEBUG("scripts.ai", "CreatureAI::EnterEvadeMode: entering evade mode (why: {}) ({})", why, me->GetGUID().ToString()); + TC_LOG_DEBUG("scripts.ai", "CreatureAI::EnterEvadeMode: entering evade mode (why: {}) ({})", EnumUtils::ToConstant(why), me->GetGUID().ToString()); if (!me->GetVehicle()) // otherwise me will be in evade mode forever { @@ -265,7 +266,7 @@ bool CreatureAI::UpdateVictim() } else if (!me->IsInCombat()) { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return false; } else if (me->GetVictim()) @@ -440,7 +441,7 @@ bool CreatureAI::CheckInRoom() return true; else { - EnterEvadeMode(EVADE_REASON_BOUNDARY); + EnterEvadeMode(EvadeReason::Boundary); return false; } } diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h index 041b27b6889..a6c03467ca2 100644 --- a/src/server/game/AI/CreatureAI.h +++ b/src/server/game/AI/CreatureAI.h @@ -67,16 +67,6 @@ class TC_GAME_API CreatureAI : public UnitAI Creature* DoSummonFlyer(uint32 entry, WorldObject* obj, float flightZ, float radius = 5.0f, Milliseconds despawnTime = 30s, TempSummonType summonType = TEMPSUMMON_CORPSE_TIMED_DESPAWN); public: - // EnumUtils: DESCRIBE THIS (in CreatureAI::) - enum EvadeReason - { - EVADE_REASON_NO_HOSTILES, // the creature's threat list is empty - EVADE_REASON_BOUNDARY, // the creature has moved outside its evade boundary - EVADE_REASON_NO_PATH, // the creature was unable to reach its target for over 5 seconds - EVADE_REASON_SEQUENCE_BREAK, // this is a boss and the pre-requisite encounters for engaging it are not defeated yet - EVADE_REASON_OTHER, // anything else - }; - explicit CreatureAI(Creature* creature, uint32 scriptId = {}); virtual ~CreatureAI(); @@ -97,7 +87,7 @@ class TC_GAME_API CreatureAI : public UnitAI void TriggerAlert(Unit const* who) const; // Called for reaction at stopping attack at no attackers or targets - virtual void EnterEvadeMode(EvadeReason why = EVADE_REASON_OTHER); + virtual void EnterEvadeMode(EvadeReason why = EvadeReason::Other); // Called for reaction whenever we start being in combat (overridden from base UnitAI) void JustEnteredCombat(Unit* /*who*/) override; @@ -250,7 +240,7 @@ class TC_GAME_API CreatureAI : public UnitAI void EngagementOver(); virtual void MoveInLineOfSight(Unit* /*who*/); - bool _EnterEvadeMode(EvadeReason why = EVADE_REASON_OTHER); + bool _EnterEvadeMode(EvadeReason why = EvadeReason::Other); CreatureBoundary const* _boundary; bool _negateBoundary; diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp index 13892b25bc8..e8711ffe473 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp @@ -540,7 +540,7 @@ void BossAI::_JustEngagedWith(Unit* who) // bosses do not respawn, check only on enter combat if (!instance->CheckRequiredBosses(_bossId, who->ToPlayer())) { - EnterEvadeMode(EVADE_REASON_SEQUENCE_BREAK); + EnterEvadeMode(EvadeReason::SequenceBreak); return; } instance->SetBossState(_bossId, IN_PROGRESS); diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h index ce37b3dfe73..3a5ed989f43 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h +++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h @@ -43,7 +43,7 @@ struct TC_GAME_API EscortAI : public ScriptedAI void MoveInLineOfSight(Unit* who) override; void JustDied(Unit*) override; void ReturnToLastPoint(); - void EnterEvadeMode(EvadeReason /*why*/ = EVADE_REASON_OTHER) override; + void EnterEvadeMode(EvadeReason why) override; void MovementInform(uint32, uint32) override; void UpdateAI(uint32 diff) override; // the "internal" update, calls UpdateEscortAI() diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index d05e22664b4..b7d94165672 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -716,7 +716,7 @@ void SmartAI::OnCharmed(bool isNew) me->LastCharmerGUID.Clear(); if (!me->IsInCombat()) - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); } } diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h index 1dfd2f9642b..b5f07778d32 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.h +++ b/src/server/game/AI/SmartScripts/SmartAI.h @@ -97,7 +97,7 @@ class TC_GAME_API SmartAI : public CreatureAI void JustEngagedWith(Unit* enemy) override; // Called for reaction at stopping attack at no attackers or targets - void EnterEvadeMode(EvadeReason why = EVADE_REASON_OTHER) override; + void EnterEvadeMode(EvadeReason why) override; // Called when the creature is killed void JustDied(Unit* killer) override; diff --git a/src/server/game/AI/enuminfo_CreatureAI.cpp b/src/server/game/AI/enuminfo_CreatureAI.cpp deleted file mode 100644 index c2865d4ebc4..00000000000 --- a/src/server/game/AI/enuminfo_CreatureAI.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "CreatureAI.h" -#include "Define.h" -#include "SmartEnum.h" -#include <stdexcept> - -namespace Trinity::Impl::EnumUtilsImpl -{ - -/****************************************************************************\ -|* data for enum 'CreatureAI::EvadeReason' in 'CreatureAI.h' auto-generated *| -\****************************************************************************/ -template <> -TC_API_EXPORT EnumText EnumUtils<CreatureAI::EvadeReason>::ToString(CreatureAI::EvadeReason value) -{ - switch (value) - { - case CreatureAI::EVADE_REASON_NO_HOSTILES: return { "EVADE_REASON_NO_HOSTILES", "EVADE_REASON_NO_HOSTILES", "the creature's threat list is empty" }; - case CreatureAI::EVADE_REASON_BOUNDARY: return { "EVADE_REASON_BOUNDARY", "EVADE_REASON_BOUNDARY", "the creature has moved outside its evade boundary" }; - case CreatureAI::EVADE_REASON_NO_PATH: return { "EVADE_REASON_NO_PATH", "EVADE_REASON_NO_PATH", "the creature was unable to reach its target for over 5 seconds" }; - case CreatureAI::EVADE_REASON_SEQUENCE_BREAK: return { "EVADE_REASON_SEQUENCE_BREAK", "EVADE_REASON_SEQUENCE_BREAK", "this is a boss and the pre-requisite encounters for engaging it are not defeated yet" }; - case CreatureAI::EVADE_REASON_OTHER: return { "EVADE_REASON_OTHER", "EVADE_REASON_OTHER", "anything else" }; - default: throw std::out_of_range("value"); - } -} - -template <> -TC_API_EXPORT size_t EnumUtils<CreatureAI::EvadeReason>::Count() { return 5; } - -template <> -TC_API_EXPORT CreatureAI::EvadeReason EnumUtils<CreatureAI::EvadeReason>::FromIndex(size_t index) -{ - switch (index) - { - case 0: return CreatureAI::EVADE_REASON_NO_HOSTILES; - case 1: return CreatureAI::EVADE_REASON_BOUNDARY; - case 2: return CreatureAI::EVADE_REASON_NO_PATH; - case 3: return CreatureAI::EVADE_REASON_SEQUENCE_BREAK; - case 4: return CreatureAI::EVADE_REASON_OTHER; - default: throw std::out_of_range("index"); - } -} - -template <> -TC_API_EXPORT size_t EnumUtils<CreatureAI::EvadeReason>::ToIndex(CreatureAI::EvadeReason value) -{ - switch (value) - { - case CreatureAI::EVADE_REASON_NO_HOSTILES: return 0; - case CreatureAI::EVADE_REASON_BOUNDARY: return 1; - case CreatureAI::EVADE_REASON_NO_PATH: return 2; - case CreatureAI::EVADE_REASON_SEQUENCE_BREAK: return 3; - case CreatureAI::EVADE_REASON_OTHER: return 4; - default: throw std::out_of_range("value"); - } -} -} diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index aace76abc41..5196192ded6 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -890,7 +890,7 @@ void Creature::Update(uint32 diff) m_cannotReachTimer += diff; if (m_cannotReachTimer >= CREATURE_NOPATH_EVADE_TIME) if (CreatureAI* ai = AI()) - ai->EnterEvadeMode(CreatureAI::EVADE_REASON_NO_PATH); + ai->EnterEvadeMode(EvadeReason::NoPath); } break; } @@ -1235,7 +1235,7 @@ Unit* Creature::SelectVictim() { if ((*itr)->GetBase()->IsPermanent()) { - AI()->EnterEvadeMode(CreatureAI::EVADE_REASON_OTHER); + AI()->EnterEvadeMode(EvadeReason::Other); break; } } @@ -1243,7 +1243,7 @@ Unit* Creature::SelectVictim() } // enter in evade mode in other case - AI()->EnterEvadeMode(CreatureAI::EVADE_REASON_NO_HOSTILES); + AI()->EnterEvadeMode(EvadeReason::NoHostiles); return nullptr; } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 55bc9162a0c..cb3bbe1a0d6 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -81,21 +81,6 @@ Object::Object() : m_values(this) m_objectUpdated = false; } -WorldObject::~WorldObject() -{ - // this may happen because there are many !create/delete - if (IsWorldObject() && m_currMap) - { - if (GetTypeId() == TYPEID_CORPSE) - { - TC_LOG_FATAL("misc", "WorldObject::~WorldObject Corpse Type: {} ({}) deleted but still in map!!", - ToCorpse()->GetType(), GetGUID().ToString()); - ABORT(); - } - ResetMap(); - } -} - Object::~Object() { if (IsInWorld()) @@ -868,6 +853,21 @@ m_currMap(nullptr), m_InstanceId(0), _dbPhase(0), m_notifyflags(0) m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE); } +WorldObject::~WorldObject() +{ + // this may happen because there are many !create/delete + if (IsWorldObject() && m_currMap) + { + if (GetTypeId() == TYPEID_CORPSE) + { + TC_LOG_FATAL("misc", "WorldObject::~WorldObject Corpse Type: {} ({}) deleted but still in map!!", + ToCorpse()->GetType(), GetGUID().ToString()); + ABORT(); + } + ResetMap(); + } +} + void WorldObject::SetWorldObject(bool on) { if (!IsInWorld()) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 3192fb9015e..7297f65bb1a 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -333,16 +333,6 @@ enum CombatRating #define MAX_COMBAT_RATING 32 -enum DamageEffectType : uint8 -{ - DIRECT_DAMAGE = 0, // used for normal weapon damage (not for class abilities or spells) - SPELL_DIRECT_DAMAGE = 1, // spell/class abilities damage - DOT = 2, - HEAL = 3, - NODAMAGE = 4, // used also in case when damage applied to health but not applied to spell channelInterruptFlags/etc - SELF_DAMAGE = 5 -}; - enum UnitTypeMask { UNIT_MASK_NONE = 0x00000000, diff --git a/src/server/game/Entities/Unit/UnitDefines.h b/src/server/game/Entities/Unit/UnitDefines.h index 759f3070458..43fd866adb9 100644 --- a/src/server/game/Entities/Unit/UnitDefines.h +++ b/src/server/game/Entities/Unit/UnitDefines.h @@ -122,6 +122,16 @@ enum UnitMoveType #define MAX_MOVE_TYPE 9 +enum DamageEffectType : uint8 +{ + DIRECT_DAMAGE = 0, // used for normal weapon damage (not for class abilities or spells) + SPELL_DIRECT_DAMAGE = 1, // spell/class abilities damage + DOT = 2, + HEAL = 3, + NODAMAGE = 4, // used also in case when damage applied to health but not applied to spell channelInterruptFlags/etc + SELF_DAMAGE = 5 +}; + // Value masks for UNIT_FIELD_FLAGS // EnumUtils: DESCRIBE THIS enum UnitFlags : uint32 diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 8e5c5978af9..94023ff1db4 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -1138,7 +1138,7 @@ public: return true; } - static bool HandleNpcEvadeCommand(ChatHandler* handler, Optional<CreatureAI::EvadeReason> why, Optional<EXACT_SEQUENCE("force")> force) + static bool HandleNpcEvadeCommand(ChatHandler* handler, Optional<EvadeReason> why, Optional<EXACT_SEQUENCE("force")> force) { Creature* creatureTarget = handler->getSelectedCreature(); if (!creatureTarget || creatureTarget->IsPet()) @@ -1157,7 +1157,7 @@ public: if (force) creatureTarget->ClearUnitState(UNIT_STATE_EVADE); - creatureTarget->AI()->EnterEvadeMode(why.value_or(CreatureAI::EVADE_REASON_OTHER)); + creatureTarget->AI()->EnterEvadeMode(why.value_or(EvadeReason::Other)); return true; } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp index 2a66ff8bf05..4756ad281b5 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp @@ -113,7 +113,7 @@ struct boss_broodlord : public BossAI if (me->GetDistance(me->GetHomePosition()) > 150.0f) { Talk(SAY_LEASH); - EnterEvadeMode(EVADE_REASON_BOUNDARY); + EnterEvadeMode(EvadeReason::Boundary); } events.ScheduleEvent(EVENT_CHECK, 1s); break; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp index 06668bbed4f..fb33ea12fdd 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp @@ -322,7 +322,7 @@ public: if (RaidWiped) { - EnterEvadeMode(); + EnterEvadeMode(EvadeReason::Other); return; } diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp index 68b0bbf3618..4f7854702a0 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp @@ -301,7 +301,7 @@ struct boss_felmyst : public BossAI if (!target) { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return; } @@ -327,7 +327,7 @@ struct boss_felmyst : public BossAI if (!target) { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return; } @@ -356,7 +356,7 @@ struct boss_felmyst : public BossAI if (!target) { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return; } @@ -396,7 +396,7 @@ struct boss_felmyst : public BossAI DoStartMovement(target); else { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return; } break; @@ -415,7 +415,7 @@ struct boss_felmyst : public BossAI if (!UpdateVictim()) { if (phase == PHASE_FLIGHT && !me->IsInEvadeMode()) - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return; } diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp index c6b116441a9..2157a128fd4 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp @@ -499,7 +499,7 @@ struct boss_sathrovarr : public BossAI else if (Creature* kalecgosHuman = instance->GetCreature(DATA_KALECGOS_HUMAN)) { if (kalecgosHuman->GetGUID() == target->GetGUID()) - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); } } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h index acb08d891b9..11cf84b91f6 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.h @@ -126,13 +126,13 @@ struct hyjalAI : public EscortAI void Reset() override; // Generically used to reset our variables. Do *not* call in EnterEvadeMode as this may make problems if the raid is still in combat - void EnterEvadeMode(EvadeReason /*why*/ = EVADE_REASON_OTHER) override; // Send creature back to spawn location and evade. + void EnterEvadeMode(EvadeReason why) override; // Send creature back to spawn location and evade. - void JustEngagedWith(Unit* /*who*/) override; // Used to reset cooldowns for our spells and to inform the raid that we're under attack + void JustEngagedWith(Unit* who) override; // Used to reset cooldowns for our spells and to inform the raid that we're under attack void UpdateAI(uint32 diff) override; // Called to summon waves, check for boss deaths and to cast our spells. - void JustDied(Unit* /*killer*/) override; // Called on death, informs the raid that they have failed. + void JustDied(Unit* killer) override; // Called on death, informs the raid that they have failed. void SetFaction(uint32 _faction) // Set the faction to either Alliance or Horde in Hyjal { diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp index 82ce28abb91..651a6337b4d 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp @@ -31,6 +31,7 @@ #include "ScriptedGossip.h" #include "ScriptMgr.h" #include "ScriptSystem.h" +#include "SmartEnum.h" #include "SpellScript.h" #include "SplineChainMovementGenerator.h" #include "TemporarySummon.h" @@ -1551,7 +1552,7 @@ public: void EnterEvadeMode(EvadeReason why) override { - TC_LOG_TRACE("scripts.cos", "npc_arthas_stratholmeAI::EnterEvadeMode: why = {} ", why); + TC_LOG_TRACE("scripts.cos", "npc_arthas_stratholmeAI::EnterEvadeMode: why = {} ", EnumUtils::ToConstant(why)); ScriptedAI::EnterEvadeMode(why); } diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp index 8975ec6c774..61b5167bcd8 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp @@ -150,7 +150,7 @@ struct boss_prince_taldaram : public BossAI { if (me->GetThreatManager().IsThreatListEmpty(true)) { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return; } } diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index e43c200529b..c72da7380e9 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -148,7 +148,7 @@ struct boss_anub_arak : public BossAI me->SummonCreatureGroup(SUMMON_GROUP_WORLD_TRIGGER_GUARDIAN, &summoned); if (summoned.empty()) // something went wrong { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return; } _guardianTrigger = (*summoned.begin())->GetGUID(); @@ -157,7 +157,7 @@ struct boss_anub_arak : public BossAI _assassinTrigger = trigger->GetGUID(); else { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return; } } @@ -221,7 +221,7 @@ struct boss_anub_arak : public BossAI events.Repeat(11s); } else - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); break; } case EVENT_ASSASSIN: @@ -238,7 +238,7 @@ struct boss_anub_arak : public BossAI _assassinCount = 0; } else // something went wrong - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); break; case EVENT_GUARDIAN: if (Creature* trigger = ObjectAccessor::GetCreature(*me, _guardianTrigger)) @@ -254,7 +254,7 @@ struct boss_anub_arak : public BossAI _guardianCount = 0; } else - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); break; case EVENT_VENOMANCER: if (Creature* trigger = ObjectAccessor::GetCreature(*me, _guardianTrigger)) @@ -270,7 +270,7 @@ struct boss_anub_arak : public BossAI _venomancerCount = 0; } else - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); break; default: break; @@ -304,7 +304,7 @@ struct boss_anub_arak : public BossAI if (Creature* creature = ObjectAccessor::GetCreature(*me, guid)) JustSummoned(creature); else // something has gone horribly wrong - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); break; } case GUID_TYPE_IMPALE: @@ -321,7 +321,7 @@ struct boss_anub_arak : public BossAI case ACTION_PET_DIED: if (!_petCount) // underflow check - something has gone horribly wrong { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return; } if (!--_petCount) // last pet died, emerge @@ -337,7 +337,7 @@ struct boss_anub_arak : public BossAI } break; case ACTION_PET_EVADE: - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); break; } } diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp index 63490558494..30c672d3d6c 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp @@ -327,7 +327,7 @@ struct boss_hadronox : public BossAI { if (!instance->CheckRequiredBosses(DATA_HADRONOX)) { - EnterEvadeMode(EVADE_REASON_SEQUENCE_BREAK); + EnterEvadeMode(EvadeReason::SequenceBreak); return; } // cancel current point movement if engaged by players @@ -339,7 +339,7 @@ struct boss_hadronox : public BossAI } } else // we are no longer in combat with players - reset the encounter - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); } events.Repeat(Seconds(1)); break; @@ -408,7 +408,7 @@ struct npc_hadronox_crusherPackAI : public ScriptedAI void EnterEvadeMode(EvadeReason /*why*/) override { if (Creature* hadronox = _instance->GetCreature(DATA_HADRONOX)) - hadronox->AI()->EnterEvadeMode(EVADE_REASON_OTHER); + hadronox->AI()->EnterEvadeMode(EvadeReason::Other); } uint32 GetData(uint32 data) const override diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp index 3bed7f43837..7e744bd8cc8 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp @@ -218,7 +218,7 @@ struct boss_krik_thir : public BossAI case ACTION_SILTHIK_DIED: if (!_watchersActive) // something is wrong { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return; } if (!--_watchersActive) // if there are no watchers currently in combat... @@ -235,7 +235,7 @@ struct boss_krik_thir : public BossAI events.ScheduleEvent(EVENT_SEND_GROUP, 70s); break; case ACTION_PET_EVADE: - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); break; } } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 1a4037914c5..bbf80507f43 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -235,7 +235,7 @@ class boss_halion : public CreatureScript void EnterEvadeMode(EvadeReason why) override { - if (why == EVADE_REASON_BOUNDARY || events.IsInPhase(PHASE_ONE)) + if (why == EvadeReason::Boundary || events.IsInPhase(PHASE_ONE)) if (Creature* controller = instance->GetCreature(DATA_HALION_CONTROLLER)) controller->AI()->EnterEvadeMode(why); } @@ -773,7 +773,7 @@ class npc_halion_controller : public CreatureScript if (player->IsAlive() && IsInBoundary(player) && !player->IsGameMaster()) return; - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); } void SetData(uint32 id, uint32 value) override diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index a6e17d673be..62148407500 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -1367,7 +1367,7 @@ class npc_the_lich_king_escape_hor : public CreatureScript } else if (me->GetCombatManager().GetPvECombatRefs().size() < 2 && me->HasAura(SPELL_REMORSELESS_WINTER)) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return false; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index c4043240376..0aa1ae99750 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -266,7 +266,7 @@ struct boss_blood_council_controller : public BossAI if (!instance->CheckRequiredBosses(DATA_BLOOD_PRINCE_COUNCIL, who->ToPlayer())) { - EnterEvadeMode(EVADE_REASON_SEQUENCE_BREAK); + EnterEvadeMode(EvadeReason::SequenceBreak); instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT); return; } @@ -304,7 +304,7 @@ struct boss_blood_council_controller : public BossAI { _resetCounter += uint8(data); if (_resetCounter == 3) - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); } uint32 GetData(uint32 data) const override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index 69bbd94092e..a98a839653c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -170,7 +170,7 @@ struct boss_blood_queen_lana_thel : public BossAI { if (!instance->CheckRequiredBosses(DATA_BLOOD_QUEEN_LANA_THEL, who->ToPlayer())) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT); return; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 5b43d922e4b..1b43db638bc 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -282,7 +282,7 @@ struct boss_deathbringer_saurfang : public BossAI if (!instance->CheckRequiredBosses(DATA_DEATHBRINGER_SAURFANG, who->ToPlayer())) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT); return; } @@ -387,7 +387,7 @@ struct boss_deathbringer_saurfang : public BossAI if (target->GetTransport()) { summon->DespawnOrUnsummon(1ms); - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return; } @@ -417,7 +417,7 @@ struct boss_deathbringer_saurfang : public BossAI { if (target->GetTransport()) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp index 57e05600fdc..e10c1069fcb 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp @@ -114,7 +114,7 @@ struct boss_festergut : public BossAI { if (!instance->CheckRequiredBosses(DATA_FESTERGUT, who->ToPlayer())) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT); return; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp index 8f1494bf990..3820ec8f52b 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp @@ -633,7 +633,7 @@ protected: { if (Instance->GetBossState(DATA_ICECROWN_GUNSHIP_BATTLE) != IN_PROGRESS) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return false; } @@ -647,7 +647,7 @@ protected: } else if (me->GetThreatManager().IsThreatListEmpty()) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return false; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index 44274861f4f..a0e8260dc4e 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -283,7 +283,7 @@ struct boss_lady_deathwhisper : public BossAI { if (!instance->CheckRequiredBosses(DATA_LADY_DEATHWHISPER, who->ToPlayer())) { - EnterEvadeMode(EVADE_REASON_SEQUENCE_BREAK); + EnterEvadeMode(EvadeReason::SequenceBreak); instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT); return; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index 7779b0be457..b6d5cbe6ae2 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -126,7 +126,7 @@ struct boss_rotface : public BossAI { if (!instance->CheckRequiredBosses(DATA_ROTFACE, who->ToPlayer())) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT); return; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 94bc112d91a..c7f60b6e853 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -271,7 +271,7 @@ struct boss_sindragosa : public BossAI { if (!instance->CheckRequiredBosses(DATA_SINDRAGOSA, victim->ToPlayer())) { - EnterEvadeMode(EVADE_REASON_SEQUENCE_BREAK); + EnterEvadeMode(EvadeReason::SequenceBreak); instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT); return; } @@ -288,7 +288,7 @@ struct boss_sindragosa : public BossAI void EnterEvadeMode(EvadeReason why) override { - if (_isInAirPhase && why == EVADE_REASON_BOUNDARY) + if (_isInAirPhase && why == EvadeReason::Boundary) return; BossAI::EnterEvadeMode(why); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index cfccc62fab7..c0e2bd0262b 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -544,7 +544,7 @@ struct boss_the_lich_king : public BossAI { if (!instance->CheckRequiredBosses(DATA_THE_LICH_KING, target->ToPlayer())) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT); return; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index 69331e22550..c4a03791d37 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -499,7 +499,7 @@ struct npc_green_dragon_combat_trigger : public BossAI if (!instance->CheckRequiredBosses(DATA_VALITHRIA_DREAMWALKER, target->ToPlayer())) { - EnterEvadeMode(EVADE_REASON_SEQUENCE_BREAK); + EnterEvadeMode(EvadeReason::SequenceBreak); instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT); return; } diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp index dc6359628c3..c29fb0ec62d 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp @@ -535,7 +535,7 @@ struct boss_four_horsemen_lady : public boss_four_horsemen_baseAI return; if (me->GetThreatManager().IsThreatListEmpty()) { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return; } @@ -594,7 +594,7 @@ struct boss_four_horsemen_sir : public boss_four_horsemen_baseAI return; if (me->GetThreatManager().IsThreatListEmpty()) { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return; } diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp index c5f5964dc57..68e8279c164 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp @@ -384,7 +384,7 @@ struct boss_gothik : public BossAI { case ACTION_MINION_EVADE: if (_gateIsOpen || me->GetThreatManager().IsThreatListEmpty()) - return EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + return EnterEvadeMode(EvadeReason::NoHostiles); if (_gateCanOpen) OpenGate(); break; @@ -581,7 +581,7 @@ struct npc_gothik_minion_baseAI : public ScriptedAI AttackStart(target); } else - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); break; } } @@ -610,7 +610,7 @@ struct npc_gothik_minion_baseAI : public ScriptedAI AttackStart(newTarget); } else - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); } _UpdateAI(diff); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index 6dbc99e7d01..829eafd379f 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -338,7 +338,7 @@ struct boss_kelthuzad : public BossAI me->GetCreatureListWithEntryInGrid(skeletons, NPC_SKELETON2, 200.0f); if (skeletons.empty()) { // prevent UB - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return; } std::list<Creature*>::iterator it = skeletons.begin(); @@ -594,7 +594,7 @@ struct npc_kelthuzad_minionAI : public ScriptedAI { ScriptedAI::EnterEvadeMode(why); if (Creature* kelThuzad = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_KELTHUZAD))) - kelThuzad->AI()->EnterEvadeMode(EVADE_REASON_OTHER); + kelThuzad->AI()->EnterEvadeMode(EvadeReason::Other); } void JustEngagedWith(Unit* who) override diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp index 7603050aec1..4a6bb76f6b3 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp @@ -120,7 +120,7 @@ struct boss_noth : public BossAI DoZoneInCombat(); if (!me->IsThreatened()) - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); else { uint8 timeGround; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp index c476ba65995..79c5b4cf561 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp @@ -119,7 +119,7 @@ struct boss_patchwerk : public BossAI auto it = list.begin(), end = list.end(); if (it == end) { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return; } diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp index 71aef922a5f..c9c443797e8 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp @@ -181,7 +181,7 @@ public: void EnterEvadeMode(EvadeReason why) override { - if (!ballLightningEnabled && why == EVADE_REASON_NO_HOSTILES) + if (!ballLightningEnabled && why == EvadeReason::NoHostiles) { ballLightningEnabled = true; return; // try again diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 1d3a33f196f..a2c7d55454a 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -560,7 +560,7 @@ struct boss_malygos : public BossAI me->setActive(true); if (!instance->CheckRequiredBosses(DATA_MALYGOS_EVENT)) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return; } diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp index 230a2e59563..265827cbd1d 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp @@ -102,7 +102,7 @@ struct boss_sjonnir : public BossAI { if (!instance->CheckRequiredBosses(DATA_SJONNIR_THE_IRONSHAPER, who->ToPlayer())) { - EnterEvadeMode(EVADE_REASON_SEQUENCE_BREAK); + EnterEvadeMode(EvadeReason::SequenceBreak); return; } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp index 9e61811832c..5eca8427e41 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp @@ -607,7 +607,7 @@ struct boss_algalon_the_observer : public BossAI events.ScheduleEvent(EVENT_EVADE, 2s + 500ms); break; case EVENT_EVADE: - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); break; case EVENT_COSMIC_SMASH: Talk(EMOTE_ALGALON_COSMIC_SMASH); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index f49c57b4e85..457ac16ad2f 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -371,7 +371,7 @@ class boss_flame_leviathan : public CreatureScript if (!me->IsInCombat()) { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return; } @@ -1689,7 +1689,7 @@ class spell_pursue : public SpellScriptLoader { if (Unit* caster = GetCaster()) if (Creature* cCaster = caster->ToCreature()) - cCaster->AI()->EnterEvadeMode(CreatureAI::EVADE_REASON_NO_HOSTILES); + cCaster->AI()->EnterEvadeMode(EvadeReason::NoHostiles); } else _target = targets.front(); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index ea4d81f5c97..1df2ee350d6 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -513,7 +513,7 @@ struct boss_razorscale : public BossAI void EnterEvadeMode(EvadeReason why) override { - if (why == EVADE_REASON_BOUNDARY && !events.IsInPhase(PHASE_PERMA_GROUND)) + if (why == EvadeReason::Boundary && !events.IsInPhase(PHASE_PERMA_GROUND)) return; instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index b8cfe0b3213..b6809ef5f08 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -1265,7 +1265,7 @@ class npc_thorim_arena_phase : public CreatureScript void EnterEvadeMode(EvadeReason why) override { - if (why != EVADE_REASON_NO_HOSTILES && why != EVADE_REASON_BOUNDARY) + if (why != EvadeReason::NoHostiles && why != EvadeReason::Boundary) return; // this should only happen if theres no alive player in the arena -> summon orb diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp index 03a61fee5ea..dcf7e993bee 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -540,7 +540,7 @@ class boss_voice_of_yogg_saron : public CreatureScript return; if (!me->GetCombatManager().HasPvECombatWithPlayers()) - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); events.Update(diff); // don't summon tentacles when illusion is shattered, delay them diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index 9655a4b5851..117e7daca4d 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -673,7 +673,7 @@ class spell_skadi_reset_check : public SpellScript if (InstanceScript* instance = target->GetInstanceScript()) if (instance->GetBossState(DATA_SKADI_THE_RUTHLESS) == IN_PROGRESS) - target->AI()->EnterEvadeMode(CreatureAI::EVADE_REASON_NO_HOSTILES); + target->AI()->EnterEvadeMode(EvadeReason::NoHostiles); } void Register() override diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index b94f4e315bd..57b13922988 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -272,7 +272,7 @@ struct npc_tournament_training_dummy : ScriptedAI case EVENT_DUMMY_RESET: if (UpdateVictim()) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); events.ScheduleEvent(EVENT_DUMMY_RESET, 10s); } break; diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index fca4ef3021e..654e2e687f2 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -700,7 +700,7 @@ struct npc_wild_wyrm : public VehicleAI if (_playerCheckTimer <= diff) { if (!EvadeCheck()) - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); _playerCheckTimer = 1 * IN_MILLISECONDS; } diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp index 252e1ac88f4..1d246096c7b 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp @@ -133,7 +133,7 @@ struct boss_ambassador_hellmaw : public EscortAI if (me->HasAura(SPELL_BANISH)) { - EnterEvadeMode(EVADE_REASON_OTHER); + EnterEvadeMode(EvadeReason::Other); return; } diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp index 39488ff7709..50e8cc2d488 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp @@ -112,7 +112,7 @@ struct boss_blackheart_the_inciter : public BossAI else { if (!charmCount) - EnterEvadeMode(EVADE_REASON_OTHER); // sanity check + EnterEvadeMode(EvadeReason::Other); // sanity check --charmCount; } if (charmCount) diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index 2a072e86ead..7bbd48dfe6a 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -699,7 +699,7 @@ struct boss_illidan_stormrage : public BossAI if (player->IsAlive() && !player->IsGameMaster() && IsInBoundary(player)) return; - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); } void SummonMinions() diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 92d577f4d6d..3ecaaf5e886 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -290,7 +290,7 @@ struct boss_shade_of_akama : public BossAI if (player->IsAlive() && !player->IsGameMaster() && IsInBoundary(player)) return; - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); } void UpdateAI(uint32 diff) override @@ -529,7 +529,7 @@ struct npc_akama_shade : public ScriptedAI Talk(SAY_DEAD); if (Creature* shade = _instance->GetCreature(DATA_SHADE_OF_AKAMA)) if (shade->IsAlive()) - shade->AI()->EnterEvadeMode(EVADE_REASON_OTHER); + shade->AI()->EnterEvadeMode(EvadeReason::Other); } bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp index 8350dc0ad48..4600933b378 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp @@ -347,7 +347,7 @@ struct npc_hellfire_channeler : public ScriptedAI { if (_instance->GetBossState(DATA_MAGTHERIDON) == IN_PROGRESS) if (Creature* magtheridon = _instance->GetCreature(DATA_MAGTHERIDON)) - magtheridon->AI()->EnterEvadeMode(EVADE_REASON_OTHER); + magtheridon->AI()->EnterEvadeMode(EvadeReason::Other); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Pet/pet_mage.cpp b/src/server/scripts/Pet/pet_mage.cpp index c78c3ff7678..714ca28cb93 100644 --- a/src/server/scripts/Pet/pet_mage.cpp +++ b/src/server/scripts/Pet/pet_mage.cpp @@ -124,7 +124,7 @@ struct npc_pet_mage_mirror_image : ScriptedAI if (!selectedTarget) { - EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + EnterEvadeMode(EvadeReason::NoHostiles); return false; } diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 48f760eaacb..2d15f0a3f78 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -1069,7 +1069,7 @@ public: Start(false, true); } else - EnterEvadeMode(); //something went wrong + EnterEvadeMode(EvadeReason::Other); //something went wrong RunAwayTimer = 30000; } |