summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew <47818697+Nyeriah@users.noreply.github.com>2024-06-16 13:57:51 -0300
committerGitHub <noreply@github.com>2024-06-16 18:57:51 +0200
commit9e122a0cad6dc57e22e6d689ea7a763c430a6d78 (patch)
tree65c2b7a4a59ec1bb997d429b73e18b0e025f3197 /src
parent737f487faef1c9bdbbf238ab0f0ec000b3d5089a (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.cpp4
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedCreature.cpp10
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedCreature.h2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp2
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);