diff options
author | Andrew <47818697+Nyeriah@users.noreply.github.com> | 2024-06-16 13:57:51 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-16 18:57:51 +0200 |
commit | 9e122a0cad6dc57e22e6d689ea7a763c430a6d78 (patch) | |
tree | 65c2b7a4a59ec1bb997d429b73e18b0e025f3197 /src | |
parent | 737f487faef1c9bdbbf238ab0f0ec000b3d5089a (diff) |
fix(Core/AI): Fix bosses being stuck IN_PROGRESS if despawnonevade fl… (#19070)
fix(Core/AI): Fix bosses being stuck IN_PROGRESS if despawnonevade flag is used
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/CreatureAI.cpp | 4 | ||||
-rw-r--r-- | src/server/game/AI/ScriptedAI/ScriptedCreature.cpp | 10 | ||||
-rw-r--r-- | src/server/game/AI/ScriptedAI/ScriptedCreature.h | 2 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp | 2 |
4 files changed, 15 insertions, 3 deletions
diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index 17d48bf54b..1f97131cb1 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 dbfd885046..9dbd754fff 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 55a838d24e..be04450d04 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<void()> 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 c9b6f89b4f..403f690a42 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); |