aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp38
1 files changed, 18 insertions, 20 deletions
diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp
index 11d8153367a..6f8c5b06e50 100644
--- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp
@@ -16,12 +16,11 @@
*/
#include "ScriptMgr.h"
-#include "InstanceScript.h"
-#include "ObjectAccessor.h"
#include "mechanar.h"
#include "ScriptedCreature.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
+#include "TemporarySummon.h"
enum Texts
{
@@ -43,7 +42,7 @@ enum Spells
// Raging Flames
SPELL_RAGING_FLAMES_DUMMY = 35274, // NYI, no clue what it can do
SPELL_RAGING_FLAMES_AREA_AURA = 35281,
- SPELL_INVIS_STEALTH_DETECTION = 18950, // For some reason every time it's used by summoned creatures, it's applied after random delay. Ignored
+ SPELL_INVIS_STEALTH_DETECTION = 18950,
SPELL_INFERNO = 35268,
SPELL_INFERNO_DAMAGE = 35283
};
@@ -60,10 +59,8 @@ struct boss_nethermancer_sepethrea : public BossAI
void Reset() override
{
+ _Reset();
DoCastSelf(SPELL_FROST_ATTACK);
- me->SetCombatPulseDelay(0);
- events.Reset();
- instance->SetBossState(DATA_NETHERMANCER_SEPRETHREA, NOT_STARTED);
}
void JustEngagedWith(Unit* who) override
@@ -83,9 +80,8 @@ struct boss_nethermancer_sepethrea : public BossAI
void EnterEvadeMode(EvadeReason why) override
{
- // Fails because target is in evade mode (yes, she kills them on evade too)
+ // Fails probably because target is in evade mode (yes, she kills them on evade too). We'll kill them directly in their script for now
DoCastSelf(SPELL_QUELL_RAGING_FLAMES, true);
- summons.DespawnAll();
ScriptedAI::EnterEvadeMode(why);
}
@@ -97,12 +93,14 @@ struct boss_nethermancer_sepethrea : public BossAI
void JustDied(Unit* /*killer*/) override
{
- events.Reset();
- instance->SetBossState(DATA_NETHERMANCER_SEPRETHREA, DONE);
+ _JustDied();
Talk(SAY_DEATH);
DoCastSelf(SPELL_QUELL_RAGING_FLAMES, true);
}
+ // Despawn is handled by spell, don't store anything
+ void JustSummoned(Creature* /*summon*/) override { }
+
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
@@ -150,20 +148,16 @@ struct npc_raging_flames : public ScriptedAI
me->SetCorpseDelay(20, true);
}
- void IsSummonedBy(WorldObject* summoner) override
- {
- _summonerGUID = summoner->GetGUID();
- }
-
// It's more tricky actually
void FixateRandomTarget()
{
ResetThreatList();
- if (Creature* _summoner = ObjectAccessor::GetCreature(*me, _summonerGUID))
- if (_summoner->IsAIEnabled())
- if (Unit* target = _summoner->AI()->SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true, false))
- AddThreat(target, 1000000.0f);
+ if (TempSummon* summon = me->ToTempSummon())
+ if (Creature* summoner = summon->GetSummonerCreatureBase())
+ if (summoner->IsAIEnabled())
+ if (Unit* target = summoner->AI()->SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true, false))
+ AddThreat(target, 1000000.0f);
}
void JustAppeared() override
@@ -188,6 +182,11 @@ struct npc_raging_flames : public ScriptedAI
_scheduler.CancelAll();
}
+ void EnterEvadeMode(EvadeReason /*why*/) override
+ {
+ me->KillSelf();
+ }
+
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
@@ -200,7 +199,6 @@ struct npc_raging_flames : public ScriptedAI
private:
TaskScheduler _scheduler;
- ObjectGuid _summonerGUID;
};
// 35268, 39346 - Inferno