mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
fix(Core/SmartAI): Suppress evade during SMART_ACTION_COMBAT_STOP (#25249)
Co-authored-by: blinkysc <blinkysc@users.noreply.github.com>
This commit is contained in:
@@ -44,6 +44,7 @@ SmartAI::SmartAI(Creature* c) : CreatureAI(c)
|
|||||||
mCanRepeatPath = false;
|
mCanRepeatPath = false;
|
||||||
|
|
||||||
mEvadeDisabled = false;
|
mEvadeDisabled = false;
|
||||||
|
mSuppressEvade = false;
|
||||||
|
|
||||||
mCanAutoAttack = true;
|
mCanAutoAttack = true;
|
||||||
|
|
||||||
@@ -698,6 +699,9 @@ void SmartAI::MovementInform(uint32 MovementType, uint32 Data)
|
|||||||
|
|
||||||
void SmartAI::EnterEvadeMode(EvadeReason /*why*/)
|
void SmartAI::EnterEvadeMode(EvadeReason /*why*/)
|
||||||
{
|
{
|
||||||
|
if (mSuppressEvade)
|
||||||
|
return;
|
||||||
|
|
||||||
if (mEvadeDisabled)
|
if (mEvadeDisabled)
|
||||||
{
|
{
|
||||||
GetScript()->ProcessEventsFor(SMART_EVENT_EVADE);
|
GetScript()->ProcessEventsFor(SMART_EVENT_EVADE);
|
||||||
|
|||||||
@@ -181,6 +181,7 @@ public:
|
|||||||
void SetSwim(bool swim = true);
|
void SetSwim(bool swim = true);
|
||||||
|
|
||||||
void SetEvadeDisabled(bool disable = true);
|
void SetEvadeDisabled(bool disable = true);
|
||||||
|
void SetSuppressEvade(bool suppress) { mSuppressEvade = suppress; }
|
||||||
|
|
||||||
void SetInvincibilityHpLevel(uint32 level) { mInvincibilityHpLevel = level; }
|
void SetInvincibilityHpLevel(uint32 level) { mInvincibilityHpLevel = level; }
|
||||||
|
|
||||||
@@ -249,6 +250,7 @@ private:
|
|||||||
uint32 GetWPCount() { return mWayPoints ? mWayPoints->Nodes.size() : 0; }
|
uint32 GetWPCount() { return mWayPoints ? mWayPoints->Nodes.size() : 0; }
|
||||||
bool mCanRepeatPath;
|
bool mCanRepeatPath;
|
||||||
bool mEvadeDisabled;
|
bool mEvadeDisabled;
|
||||||
|
bool mSuppressEvade;
|
||||||
bool mCanAutoAttack;
|
bool mCanAutoAttack;
|
||||||
bool mForcedPaused;
|
bool mForcedPaused;
|
||||||
uint32 mInvincibilityHpLevel;
|
uint32 mInvincibilityHpLevel;
|
||||||
|
|||||||
@@ -1039,7 +1039,16 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
|||||||
if (!me)
|
if (!me)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// Suppress evade during script-initiated combat stop so
|
||||||
|
// JustExitedCombat does not trigger EnterEvadeMode.
|
||||||
|
if (SmartAI* sai = CAST_AI(SmartAI, me->AI()))
|
||||||
|
sai->SetSuppressEvade(true);
|
||||||
|
|
||||||
me->CombatStop(true);
|
me->CombatStop(true);
|
||||||
|
|
||||||
|
if (SmartAI* sai = CAST_AI(SmartAI, me->AI()))
|
||||||
|
sai->SetSuppressEvade(false);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SMART_ACTION_CALL_GROUPEVENTHAPPENS:
|
case SMART_ACTION_CALL_GROUPEVENTHAPPENS:
|
||||||
|
|||||||
Reference in New Issue
Block a user