diff options
author | offl <11556157+offl@users.noreply.github.com> | 2022-02-17 22:41:57 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-03-26 14:50:20 +0100 |
commit | eb1da698ebb098d8acdb8559bb06f630644ee857 (patch) | |
tree | f1ee733cf341c841db138f22cda30bc444d85fd1 /src | |
parent | df841dc9f2fab6f2e151b0f3b4afb564352b32ac (diff) |
Scripts/TK: Few updates for Sepethrea (#27769)
(cherry picked from commit 951d7d3a58ceab286a903a4a68185fd045deb33a)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp | 38 |
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 |