diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index 17d48bf54..1f97131cb 100644 --- a/src/server/game/AI/CreatureAI.cpp +++ b/src/server/game/AI/CreatureAI.cpp @@ -223,14 +223,14 @@ void CreatureAI::EnterEvadeMode(EvadeReason why) me->GetVehicleKit()->Reset(true); } + sScriptMgr->OnUnitEnterEvadeMode(me, why); + // despawn bosses at reset - only verified tbc/woltk bosses with this reset type CreatureTemplate const* cInfo = sObjectMgr->GetCreatureTemplate(me->GetEntry()); if (cInfo && cInfo->HasFlagsExtra(CREATURE_FLAG_EXTRA_HARD_RESET)) { me->DespawnOnEvade(); } - - sScriptMgr->OnUnitEnterEvadeMode(me, why); } /*void CreatureAI::AttackedBy(Unit* attacker) diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp index dbfd88504..9dbd754ff 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp @@ -650,6 +650,16 @@ void BossAI::_JustEngagedWith() } } +void BossAI::_EnterEvadeMode(EvadeReason why) +{ + CreatureAI::EnterEvadeMode(why); + if (instance) + { + instance->SetBossState(_bossId, NOT_STARTED); + instance->SaveToDB(); + } +} + void BossAI::TeleportCheaters() { float x, y, z; diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h index 55a838d24..be04450d0 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h @@ -488,6 +488,7 @@ public: void Reset() override { _Reset(); } void JustEngagedWith(Unit* /*who*/) override { _JustEngagedWith(); } + void EnterEvadeMode(EvadeReason why = EVADE_REASON_OTHER) override { _EnterEvadeMode(why); } void JustDied(Unit* /*killer*/) override { _JustDied(); } void JustReachedHome() override { _JustReachedHome(); } @@ -496,6 +497,7 @@ protected: void _JustEngagedWith(); void _JustDied(); void _JustReachedHome() { me->setActive(false); } + void _EnterEvadeMode(EvadeReason why = EVADE_REASON_OTHER); [[nodiscard]] bool _ProccessHealthCheckEvent(uint8 healthPct, uint32 damage, std::function exec) const; void TeleportCheaters(); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index c9b6f89b4..403f690a4 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -94,7 +94,7 @@ struct boss_jindo : public BossAI void EnterEvadeMode(EvadeReason evadeReason) override { - if (_EnterEvadeMode(evadeReason)) + if (CreatureAI::_EnterEvadeMode(evadeReason)) { Reset(); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_DANCE);