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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user