fix(DB/Text): Add missing Netherspite text emotes (#17335)

* fix(DB/Text): Add missing Netherspite text emotes

* fix emote order

* Update boss_netherspite.cpp
This commit is contained in:
Skjalf
2023-09-25 08:04:15 -03:00
committed by GitHub
parent 708bfb2c48
commit 3c698f86af
2 changed files with 22 additions and 26 deletions
@@ -0,0 +1,5 @@
--
DELETE FROM `creature_text` WHERE `CreatureId` = 15689;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(15689, 0, 0, '%s goes into a nether-fed rage!', 41, 0, 100, 19877, 3, 'Netherspite EMOTE_PHASE_BANISH'),
(15689, 1, 0, '%s cries out in withdrawal, opening gates to the nether.', 41, 0, 100, 19880, 3, 'Netherspite EMOTE_PHASE_PORTAL');
@@ -24,8 +24,8 @@
enum Emotes enum Emotes
{ {
EMOTE_PHASE_PORTAL = 0, EMOTE_PHASE_BANISH = 0,
EMOTE_PHASE_BANISH = 1 EMOTE_PHASE_PORTAL = 1
}; };
enum Spells enum Spells
@@ -101,7 +101,6 @@ struct boss_netherspite : public BossAI
BossAI::Reset(); BossAI::Reset();
berserk = false; berserk = false;
HandleDoors(true); HandleDoors(true);
DestroyPortals();
} }
void SummonPortals() void SummonPortals()
@@ -121,23 +120,6 @@ struct boss_netherspite : public BossAI
} }
} }
void DestroyPortals()
{
for (int i = 0; i < 3; ++i)
{
if (Creature* portal = ObjectAccessor::GetCreature(*me, PortalGUID[i]))
{
portal->DisappearAndDie();
}
if (Creature* portal = ObjectAccessor::GetCreature(*me, BeamerGUID[i]))
{
portal->DisappearAndDie();
}
PortalGUID[i].Clear();
BeamTarget[i].Clear();
}
}
void UpdatePortals() // Here we handle the beams' behavior void UpdatePortals() // Here we handle the beams' behavior
{ {
for (int j = 0; j < 3; ++j) // j = color for (int j = 0; j < 3; ++j) // j = color
@@ -203,8 +185,13 @@ struct boss_netherspite : public BossAI
} }
} }
void SwitchToPortalPhase() void SwitchToPortalPhase(bool aggro = false)
{ {
if (!aggro)
{
Talk(EMOTE_PHASE_PORTAL);
}
scheduler.CancelGroup(VANISH_PHASE); scheduler.CancelGroup(VANISH_PHASE);
me->RemoveAurasDueToSpell(SPELL_BANISH_ROOT); me->RemoveAurasDueToSpell(SPELL_BANISH_ROOT);
me->RemoveAurasDueToSpell(SPELL_BANISH_VISUAL); me->RemoveAurasDueToSpell(SPELL_BANISH_VISUAL);
@@ -230,17 +217,22 @@ struct boss_netherspite : public BossAI
DoCastRandomTarget(SPELL_VOIDZONE, 1, 45.0f, true, true); DoCastRandomTarget(SPELL_VOIDZONE, 1, 45.0f, true, true);
context.Repeat(15s); context.Repeat(15s);
}); });
Talk(EMOTE_PHASE_PORTAL);
} }
void SwitchToBanishPhase() void SwitchToBanishPhase()
{ {
Talk(EMOTE_PHASE_BANISH);
scheduler.CancelGroup(PORTAL_PHASE); scheduler.CancelGroup(PORTAL_PHASE);
me->RemoveAurasDueToSpell(SPELL_EMPOWERMENT); me->RemoveAurasDueToSpell(SPELL_EMPOWERMENT);
me->RemoveAurasDueToSpell(SPELL_NETHERBURN_AURA); me->RemoveAurasDueToSpell(SPELL_NETHERBURN_AURA);
DoCastSelf(SPELL_BANISH_VISUAL, true); DoCastSelf(SPELL_BANISH_VISUAL, true);
DoCastSelf(SPELL_BANISH_ROOT, true); DoCastSelf(SPELL_BANISH_ROOT, true);
DestroyPortals();
for (uint32 id : PortalID)
{
summons.DespawnEntry(id);
}
scheduler.Schedule(30s, [this](TaskContext) scheduler.Schedule(30s, [this](TaskContext)
{ {
SwitchToPortalPhase(); SwitchToPortalPhase();
@@ -250,7 +242,7 @@ struct boss_netherspite : public BossAI
DoCastRandomTarget(SPELL_NETHERBREATH, 0, 40.0f, true); DoCastRandomTarget(SPELL_NETHERBREATH, 0, 40.0f, true);
context.Repeat(5s, 7s); context.Repeat(5s, 7s);
}); });
Talk(EMOTE_PHASE_BANISH);
for (uint8 i = 0; i < 3; ++i) for (uint8 i = 0; i < 3; ++i)
{ {
me->RemoveAurasDueToSpell(NetherBuff[i]); me->RemoveAurasDueToSpell(NetherBuff[i]);
@@ -269,7 +261,7 @@ struct boss_netherspite : public BossAI
{ {
BossAI::JustEngagedWith(who); BossAI::JustEngagedWith(who);
HandleDoors(false); HandleDoors(false);
SwitchToPortalPhase(); SwitchToPortalPhase(true);
DoZoneInCombat(); DoZoneInCombat();
scheduler.Schedule(9min, [this](TaskContext /*context*/) scheduler.Schedule(9min, [this](TaskContext /*context*/)
{ {
@@ -286,7 +278,6 @@ struct boss_netherspite : public BossAI
{ {
BossAI::JustDied(killer); BossAI::JustDied(killer);
HandleDoors(true); HandleDoors(true);
DestroyPortals();
} }
void UpdateAI(uint32 diff) override void UpdateAI(uint32 diff) override