refactor(Scripts/Raids): move spell ids for Raids to dungeondifficulty_dbc (#23477)

This commit is contained in:
Tereneckla
2025-10-31 12:35:13 +00:00
committed by GitHub
parent 65dac317c7
commit a4a9d215d8
38 changed files with 586 additions and 582 deletions

View File

@@ -0,0 +1,207 @@
-- | present in spelldifficulty.dbc | new ->
DELETE FROM `spelldifficulty_dbc` WHERE `ID` IN (66809,70867,70877,70879,70994,71623,68186,69037,72224,70873,28783,28785,28732,28884,57374,28863,28883,57376,28882,28371,28374,29317,28157,28158,29998,28478,28479,29865,29204,29484,28741,54121,54123,29213,29212,41926,55543,28531,55697,28542,54529,28135,28167,64717,64776,61916,61890,61903,61911,64637,62274,62269,62054,61879,61869,61915,61887,64389,64422,64666,64375,64478,64496,64458,62584,62528,62623,64587,62437,62862,62861,62451,62240,62217,62310,62275,62283,62285,62325,62337,62664,62653,62654,62648,62649,62589,62598,62478,65123,63711,62680,62546,62717,62548,65722,62836,63356,63573,62030,63716,63347,63629,63821,63766,62166,62056,63818,63666,62997,66351,63387,64019,63689,64352,64348,64626,64016,63317,46763,63809,64758,62131,62577,62334,62335,62333,62315,62316,62331,62332,62327,62328,62321,62613,62411,63024,63018,65737,64203,64227,63795,64125,64159,58695,58960,58663,58666,64213,64216);
INSERT INTO `spelldifficulty_dbc` (`ID`,`DifficultySpellID_1`,`DifficultySpellID_2`,`DifficultySpellID_3`,`DifficultySpellID_4`) VALUES
-- Trial of the Crusader
-- Anubarak
(68186,68186,68515,68186,68515),
-- ICC
-- Lich King
(69037,69037,74361,69037,74361),
-- Valithria
(72224,72224,72224,72480,72480),
(70873,70873,70873,71941,71941),
-- Naxxramas
-- Anubrekhan
(28783,28783,56090,0,0),
(28785,28785,54021,0,0),
-- Faerlina
(28732,28732,54097,0,0),
-- Horsemen
(28884,28884,57467,0,0),
(57374,57374,57464,0,0),
(28863,28863,57463,0,0),
(28883,28883,57466,0,0),
(57376,57376,57465,0,0),
(28882,28882,57369,0,0),
-- Gluth
(28371,28371,54427,0,0),
(28374,28374,54426,0,0),
-- Gothik
(29317,29317,56405,0,0),
-- Grobbulus
(28157,28157,54364,0,0),
(28158,28158,54362,0,0),
-- Heigan
(29998,29998,55011,0,0),
-- Kelthuzad
(28478,28478,55802,0,0),
(28479,28479,55807,0,0),
-- Loatheb
(29865,29865,55053,0,0),
(29204,29204,55052,0,0),
-- Maexxna
(29484,29484,54125,0,0),
(28741,28741,54122,0,0),
(54121,54121,28776,0,0),
(54123,54123,54124,0,0),
-- Noth
(29213,29213,54835,0,0),
(29212,29212,54814,0,0),
-- Patchwerk
(41926,41926,59192,0,0),
-- Razuvious
(55543,55543,29107,0,0),
-- Sapphiron
(28531,28531,55799,0,0),
(55697,55697,55696,0,0),
(28542,28542,55665,0,0),
-- Thaddius
(54529,54529,28134,0,0),
(28135,28135,54528,0,0),
(28167,28167,54531,0,0),
-- Ulduar
(64717,64717,65241,0,0),
(64776,64776,65240,0,0),
-- Assembly of Iron
(61916,61916,63482,0,0),
(61890,61890,63498,0,0),
(61903,61903,63493,0,0),
(61911,61911,63495,0,0),
(64637,64637,61888,0,0),
(62274,62274,63489,0,0),
(62269,62269,63490,0,0),
(62054,62054,63491,0,0),
(61879,61879,63479,0,0),
(61869,61869,63481,0,0),
(61915,61915,63483,0,0),
(61887,61887,63486,0,0),
-- Auriaya
(64389,64389,64678,0,0),
(64422,64422,64688,0,0),
(64666,64666,64374,0,0),
(64375,64375,64667,0,0),
(64478,64478,64669,0,0),
(64496,64496,64674,0,0),
(64458,64458,64676,0,0),
-- Freya
(62584,62584,64185,0,0),
(62528,62528,62892,0,0),
(62623,62623,62872,0,0),
(64587,64587,64650,0,0),
(62437,62437,62859,0,0),
(62862,62862,62439,0,0),
(62861,62861,62438,0,0),
(62451,62451,62865,0,0),
(62240,62240,64087,0,0),
(62217,62217,62922,0,0),
(62310,62310,62928,0,0),
(62275,62275,62929,0,0),
(62283,62283,62930,0,0),
(62285,62285,62931,0,0),
(62325,62325,62932,0,0),
(62337,62337,62933,0,0),
(62664,62664,64191,0,0),
(62653,62653,62935,0,0),
(62654,62654,62936,0,0),
(62648,62648,62939,0,0),
(62649,62649,62938,0,0),
(62589,62589,63571,0,0),
(62598,62598,62937,0,0),
-- Hodir
(62478,62478,63512,0,0),
(65123,65123,65133,0,0),
(63711,63711,65134,0,0),
-- Ignis
(62680,62680,63472,0,0),
(62546,62546,63474,0,0),
(62717,62717,63477,0,0),
(62548,62548,63476,0,0),
(65722,65722,65723,0,0),
(62836,62836,63536,0,0),
-- Kologarn
(63356,63356,64003,0,0),
(63573,63573,64006,0,0),
(62030,62030,63980,0,0),
(63716,63716,64005,0,0),
(63347,63347,63977,0,0),
(63629,63629,63979,0,0),
(63821,63821,64001,0,0),
(63766,63766,63983,0,0),
(62166,62166,63981,0,0),
(62056,62056,63985,0,0),
(63818,63818,63978,0,0),
-- Mimiron
(63666,63666,65026,0,0),
(62997,62997,64529,0,0),
(66351,66351,63009,0,0),
(63387,63387,64531,0,0),
(64019,64019,64532,0,0),
(63689,63689,64535,0,0),
(64352,64352,64537,0,0),
(64348,64348,64536,0,0),
(64626,64626,65333,0,0),
-- Razorscale
(64016,64016,64023,0,0),
(63317,63317,64021,0,0),
(46763,46763,64062,0,0),
(63809,63809,64696,0,0),
(64758,64758,64759,0,0),
-- Thorim
(62131,62131,64390,0,0),
(62577,62577,62603,0,0),
(62334,62334,62442,0,0),
(62335,62335,62443,0,0),
(62333,62333,62441,0,0),
(62315,62315,62415,0,0),
(62316,62316,62417,0,0),
(62331,62331,62418,0,0),
(62332,62332,62420,0,0),
(62327,62327,62445,0,0),
(62328,62328,62446,0,0),
(62321,62321,62529,0,0),
(62613,62613,62614,0,0),
(62411,62411,62413,0,0),
-- XT
(63024,63024,64234,0,0),
(63018,63018,65121,0,0),
(65737,65737,64193,0,0),
(64203,64203,64235,0,0),
(64227,64227,64236,0,0),
-- Yoggsaron
(63795,63795,65301,0,0),
(64125,64125,64126,0,0),
(64159,64159,64160,0,0),
-- Vault of Archavon
-- Archavon
(58695,58695,60883,0,0),
(58960,58960,60894,0,0),
(58663,58663,60880,0,0),
(58666,58666,60882,0,0),
-- Emalon
(64213,64213,64215,0,0),
(64216,64216,65279,0,0);
DELETE FROM `spell_script_names` WHERE `spell_id` IN (63716,64005,69159,70136,69161,70139,69163,70469,70135,70138,70468,70137,70140,70470,28157,54364,66351,63009);
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(63716,"spell_kologarn_stone_shout_aura"),
(64005,"spell_kologarn_stone_shout_aura"),
(69159,"spell_festergut_gaseous_blight"),
(70136,"spell_festergut_gaseous_blight"),
(69161,"spell_festergut_gaseous_blight"),
(70139,"spell_festergut_gaseous_blight"),
(69163,"spell_festergut_gaseous_blight"),
(70469,"spell_festergut_gaseous_blight"),
(70135,"spell_festergut_gaseous_blight"),
(70138,"spell_festergut_gaseous_blight"),
(70468,"spell_festergut_gaseous_blight"),
(70137,"spell_festergut_gaseous_blight"),
(70140,"spell_festergut_gaseous_blight"),
(70470,"spell_festergut_gaseous_blight"),
(28157,"spell_grobbulus_slime_spray"),
(54364,"spell_grobbulus_slime_spray"),
(66351,"spell_ulduar_mimiron_mine_explosion"),
(63009,"spell_ulduar_mimiron_mine_explosion");

View File

@@ -19,6 +19,7 @@
#include "PassiveAI.h" #include "PassiveAI.h"
#include "Player.h" #include "Player.h"
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "SharedDefines.h"
#include "SpellAuraEffects.h" #include "SpellAuraEffects.h"
#include "SpellScript.h" #include "SpellScript.h"
#include "SpellScriptLoader.h" #include "SpellScriptLoader.h"
@@ -161,7 +162,7 @@ public:
events.Reset(); events.Reset();
bIntro = false; bIntro = false;
bPhase3 = false; bPhase3 = false;
me->ApplySpellImmune(0, IMMUNITY_ID, RAID_MODE(66193, 67855, 67856, 67857), true); me->ApplySpellImmune(0, IMMUNITY_ID, sSpellMgr->GetSpellIdForDifficulty(SPELL_PERMAFROST, me), true);
me->m_SightDistance = 90.0f; // for MoveInLineOfSight distance me->m_SightDistance = 90.0f; // for MoveInLineOfSight distance
} }
@@ -501,7 +502,7 @@ public:
void JustDied(Unit* /*killer*/) override void JustDied(Unit* /*killer*/) override
{ {
me->CastSpell(me, RAID_MODE(SPELL_TRAITOR_KING_10, SPELL_TRAITOR_KING_25, SPELL_TRAITOR_KING_10, SPELL_TRAITOR_KING_25), true); me->CastSpell(me, SPELL_TRAITOR_KING, true);
me->m_Events.AddEventAtOffset(new HideNpcEvent(*me), 5s); me->m_Events.AddEventAtOffset(new HideNpcEvent(*me), 5s);
} }
@@ -679,7 +680,7 @@ public:
events.Repeat(30s, 45s); events.Repeat(30s, 45s);
break; break;
case EVENT_SUBMERGE: case EVENT_SUBMERGE:
if (HealthBelowPct(80) && !me->HasAura(RAID_MODE(66193, 67855, 67856, 67857))) // not having permafrost - allow submerge if (HealthBelowPct(80) && !me->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_PERMAFROST, me))) // not having permafrost - allow submerge
{ {
me->GetMotionMaster()->MoveIdle(); me->GetMotionMaster()->MoveIdle();
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);

View File

@@ -351,8 +351,7 @@ enum EventSpells
SPELL_JORMUNGAR_ACHIEV = 68523, SPELL_JORMUNGAR_ACHIEV = 68523,
SPELL_FACTION_CHAMPIONS_KILL_CREDIT = 68184, SPELL_FACTION_CHAMPIONS_KILL_CREDIT = 68184,
SPELL_RESILIENCE_WILL_FIX_IT_CREDIT = 68620, SPELL_RESILIENCE_WILL_FIX_IT_CREDIT = 68620,
SPELL_TRAITOR_KING_10 = 68186, SPELL_TRAITOR_KING = 68186,
SPELL_TRAITOR_KING_25 = 68515,
SPELL_PORTAL_TO_DALARAN = 53142, SPELL_PORTAL_TO_DALARAN = 53142,
}; };

View File

@@ -19,7 +19,9 @@
#include "CreatureScript.h" #include "CreatureScript.h"
#include "Player.h" #include "Player.h"
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "SharedDefines.h"
#include "SpellAuras.h" #include "SpellAuras.h"
#include "SpellMgr.h"
#include "SpellScript.h" #include "SpellScript.h"
#include "SpellScriptLoader.h" #include "SpellScriptLoader.h"
#include "pit_of_saron.h" #include "pit_of_saron.h"
@@ -54,11 +56,11 @@ enum Spells
SPELL_CHILLING_WAVE = 68778, SPELL_CHILLING_WAVE = 68778,
SPELL_DEEP_FREEZE = 70381, SPELL_DEEP_FREEZE = 70381,
};
#define SPELL_FORGE_BLADE RAID_MODE(68774, 70334) SPELL_FORGE_BLADE = 68774,
#define SPELL_FORGE_MACE RAID_MODE(68785, 70335) SPELL_FORGE_MACE = 68785,
#define SPELL_SARONITE_TRIGGERED RAID_MODE(68789, 70851) SPELL_SARONITE_TRIGGERED = 68789,
};
enum Events enum Events
{ {
@@ -154,21 +156,45 @@ public:
if (phase == 1) if (phase == 1)
{ {
me->SetControlled(true, UNIT_STATE_ROOT); me->SetControlled(true, UNIT_STATE_ROOT);
me->CastSpell(me, SPELL_FORGE_BLADE, false); if (me->CastSpell(me, SPELL_FORGE_BLADE, false) == SPELL_CAST_OK)
{
events.RescheduleEvent(EVENT_SPELL_CHILLING_WAVE, 10s);
SetEquipmentSlots(false, EQUIP_ID_SWORD);
me->SetReactState(REACT_AGGRESSIVE);
me->SetControlled(false, UNIT_STATE_ROOT);
me->DisableRotate(false);
if (me->GetVictim())
{
AttackStart(me->GetVictim());
me->SetTarget(me->GetVictim()->GetGUID());
}
}
Talk(SAY_HP_66); Talk(SAY_HP_66);
} }
else if (phase == 2) else if (phase == 2)
{ {
me->SetControlled(true, UNIT_STATE_ROOT); me->SetControlled(true, UNIT_STATE_ROOT);
me->RemoveAurasDueToSpell(SPELL_FORGE_BLADE); me->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_FORGE_BLADE, me));
me->CastSpell(me, SPELL_FORGE_MACE, false); if (me->CastSpell(me, SPELL_FORGE_MACE, false) == SPELL_CAST_OK)
{
events.RescheduleEvent(EVENT_SPELL_DEEP_FREEZE, 10s);
SetEquipmentSlots(false, EQUIP_ID_MACE);
me->SetReactState(REACT_AGGRESSIVE);
me->SetControlled(false, UNIT_STATE_ROOT);
me->DisableRotate(false);
if (me->GetVictim())
{
AttackStart(me->GetVictim());
me->SetTarget(me->GetVictim()->GetGUID());
}
}
Talk(SAY_HP_33); Talk(SAY_HP_33);
} }
} }
void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
{ {
if (spell->Id == uint32(SPELL_SARONITE_TRIGGERED)) if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_SARONITE_TRIGGERED, me))
{ {
if (bCanSayBoulderHit) if (bCanSayBoulderHit)
{ {
@@ -176,32 +202,6 @@ public:
Talk(SAY_BOULDER_HIT); Talk(SAY_BOULDER_HIT);
} }
} }
if (spell->Id == uint32(SPELL_FORGE_BLADE))
{
events.RescheduleEvent(EVENT_SPELL_CHILLING_WAVE, 10s);
SetEquipmentSlots(false, EQUIP_ID_SWORD);
me->SetReactState(REACT_AGGRESSIVE);
me->SetControlled(false, UNIT_STATE_ROOT);
me->DisableRotate(false);
if (me->GetVictim())
{
AttackStart(me->GetVictim());
me->SetTarget(me->GetVictim()->GetGUID());
}
}
else if (spell->Id == uint32(SPELL_FORGE_MACE))
{
events.RescheduleEvent(EVENT_SPELL_DEEP_FREEZE, 10s);
SetEquipmentSlots(false, EQUIP_ID_MACE);
me->SetReactState(REACT_AGGRESSIVE);
me->SetControlled(false, UNIT_STATE_ROOT);
me->DisableRotate(false);
if (me->GetVictim())
{
AttackStart(me->GetVictim());
me->SetTarget(me->GetVictim()->GetGUID());
}
}
} }
void UpdateAI(uint32 diff) override void UpdateAI(uint32 diff) override

View File

@@ -118,9 +118,6 @@ enum Spells
SPELL_ACHIEVEMENT = 72928, SPELL_ACHIEVEMENT = 72928,
}; };
// Helper to get id of the aura on different modes (HasAura(baseId) wont work)
#define BOILING_BLOOD_HELPER RAID_MODE<int32>(72385, 72441, 72442, 72443)
enum EventTypes enum EventTypes
{ {
EVENT_INTRO_ALLIANCE_1 = 1, EVENT_INTRO_ALLIANCE_1 = 1,

View File

@@ -19,7 +19,10 @@
#include "CreatureScript.h" #include "CreatureScript.h"
#include "ObjectMgr.h" #include "ObjectMgr.h"
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "SharedDefines.h"
#include "SpellAuras.h" #include "SpellAuras.h"
#include "SpellInfo.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h" #include "SpellScriptLoader.h"
#include "icecrown_citadel.h" #include "icecrown_citadel.h"
#include "SpellAuraEffects.h" #include "SpellAuraEffects.h"
@@ -57,10 +60,6 @@ enum Spells
SPELL_PLAGUE_STENCH = 71805, SPELL_PLAGUE_STENCH = 71805,
}; };
// Used for HasAura checks
#define PUNGENT_BLIGHT_HELPER RAID_MODE<uint32>(69195, 71219, 73031, 73032)
#define INOCULATED_HELPER RAID_MODE<uint32>(69291, 72101, 72102, 72103)
uint32 const gaseousBlight[3] = {69157, 69162, 69164}; uint32 const gaseousBlight[3] = {69157, 69162, 69164};
uint32 const gaseousBlightVisual[3] = {69126, 69152, 69154}; uint32 const gaseousBlightVisual[3] = {69126, 69152, 69154};
@@ -168,19 +167,6 @@ public:
Talk(SAY_KILL); Talk(SAY_KILL);
} }
void SpellHitTarget(Unit* target, SpellInfo const* spell) override
{
if (spell->Id == PUNGENT_BLIGHT_HELPER)
target->RemoveAurasDueToSpell(INOCULATED_HELPER);
else if (Player* p = target->ToPlayer())
{
// Gaseous Blight damage
if (((spell->Id == 69159 || spell->Id == 70136 || spell->Id == 69161 || spell->Id == 70139 || spell->Id == 69163 || spell->Id == 70469) && p->GetQuestStatus(QUEST_RESIDUE_RENDEZVOUS_10) == QUEST_STATUS_INCOMPLETE) ||
((spell->Id == 70135 || spell->Id == 70138 || spell->Id == 70468 || spell->Id == 70137 || spell->Id == 70140 || spell->Id == 70470) && p->GetQuestStatus(QUEST_RESIDUE_RENDEZVOUS_25) == QUEST_STATUS_INCOMPLETE))
p->CastSpell(p, SPELL_ORANGE_BLIGHT_RESIDUE, true);
}
}
void RemoveBlight() void RemoveBlight()
{ {
if (Creature* gasDummy = ObjectAccessor::GetCreature(*me, _gasDummyGUID)) if (Creature* gasDummy = ObjectAccessor::GetCreature(*me, _gasDummyGUID))
@@ -313,8 +299,15 @@ class spell_festergut_pungent_blight : public SpellScript
professor->AI()->DoAction(ACTION_FESTERGUT_GAS); professor->AI()->DoAction(ACTION_FESTERGUT_GAS);
} }
void HandleHit(SpellEffIndex /*effIndex*/)
{
if (Unit* target = GetHitUnit())
target->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_INOCULATED, GetCaster()));
}
void Register() override void Register() override
{ {
OnEffectHitTarget += SpellEffectFn(spell_festergut_pungent_blight::HandleHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
OnEffectHitTarget += SpellEffectFn(spell_festergut_pungent_blight::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); OnEffectHitTarget += SpellEffectFn(spell_festergut_pungent_blight::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
} }
}; };
@@ -378,6 +371,34 @@ class spell_festergut_gastric_bloat : public SpellScript
} }
}; };
class spell_festergut_gaseous_blight : public SpellScript
{
PrepareSpellScript(spell_festergut_gaseous_blight);
bool Validate(SpellInfo const* /*spell*/) override
{
return ValidateSpellInfo({ SPELL_ORANGE_BLIGHT_RESIDUE });
}
void HandleScript(SpellEffIndex /*effIndex*/)
{
if (Player* p = GetHitUnit()->ToPlayer())
{
if (Map* map = GetCaster()->GetMap())
{
uint32 questId = map->Is25ManRaid() ? QUEST_RESIDUE_RENDEZVOUS_25 : QUEST_RESIDUE_RENDEZVOUS_10;
if (p->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE)
p->CastSpell(p, SPELL_ORANGE_BLIGHT_RESIDUE, true);
}
}
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_festergut_gaseous_blight::HandleScript, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
class achievement_flu_shot_shortage : public AchievementCriteriaScript class achievement_flu_shot_shortage : public AchievementCriteriaScript
{ {
public: public:
@@ -468,6 +489,7 @@ void AddSC_boss_festergut()
RegisterSpellScript(spell_festergut_pungent_blight); RegisterSpellScript(spell_festergut_pungent_blight);
RegisterSpellScript(spell_festergut_blighted_spores_aura); RegisterSpellScript(spell_festergut_blighted_spores_aura);
RegisterSpellScript(spell_festergut_gastric_bloat); RegisterSpellScript(spell_festergut_gastric_bloat);
RegisterSpellScript(spell_festergut_gaseous_blight);
new achievement_flu_shot_shortage(); new achievement_flu_shot_shortage();
new npc_stinky_icc(); new npc_stinky_icc();

View File

@@ -72,8 +72,6 @@ enum Spells
SPELL_AWAKEN_PLAGUED_ZOMBIES = 71159, SPELL_AWAKEN_PLAGUED_ZOMBIES = 71159,
}; };
#define MUTATED_INFECTION RAID_MODE<int32>(69674, 71224, 73022, 73023)
enum Events enum Events
{ {
EVENT_NONE, EVENT_NONE,
@@ -193,7 +191,7 @@ public:
void JustDied(Unit* /*killer*/) override void JustDied(Unit* /*killer*/) override
{ {
instance->DoRemoveAurasDueToSpellOnPlayers(MUTATED_INFECTION); instance->DoRemoveAurasDueToSpellOnPlayers(sSpellMgr->GetSpellIdForDifficulty(SPELL_MUTATED_INFECTION, me));
_JustDied(); _JustDied();
Talk(SAY_DEATH); Talk(SAY_DEATH);
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE))) if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))

View File

@@ -141,7 +141,6 @@ enum Spells
SPELL_SOUL_REAPER = 69409, // instant SPELL_SOUL_REAPER = 69409, // instant
SPELL_SOUL_REAPER_BUFF = 69410, SPELL_SOUL_REAPER_BUFF = 69410,
SPELL_SUMMON_VALKYR = 69037, // instant SPELL_SUMMON_VALKYR = 69037, // instant
SPELL_SUMMON_VALKYR_PERIODIC = 74361,
SPELL_WINGS_OF_THE_DAMNED = 74352, SPELL_WINGS_OF_THE_DAMNED = 74352,
SPELL_VALKYR_TARGET_SEARCH = 69030, SPELL_VALKYR_TARGET_SEARCH = 69030,
SPELL_HARVEST_SOUL_VALKYR = 68985, // vehicle aura used by Val'kyr Shadowguard and Strangulate Vehicle SPELL_HARVEST_SOUL_VALKYR = 68985, // vehicle aura used by Val'kyr Shadowguard and Strangulate Vehicle
@@ -188,14 +187,6 @@ enum Spells
SPELL_FRENZY = 28747, SPELL_FRENZY = 28747,
}; };
#define NECROTIC_PLAGUE_LK RAID_MODE<uint32>(70337, 73912, 73913, 73914)
#define NECROTIC_PLAGUE_PLR RAID_MODE<uint32>(70338, 73785, 73786, 73787)
#define REMORSELESS_WINTER_1 RAID_MODE<uint32>(68981, 74270, 74271, 74272)
#define REMORSELESS_WINTER_2 RAID_MODE<uint32>(72259, 74273, 74274, 74275)
#define SUMMON_VALKYR RAID_MODE<uint32>(69037, 74361, 69037, 74361)
//#define HARVEST_SOUL RAID_MODE<uint32>(68980, 74325, 74296, 74297)
#define HARVESTED_SOUL_BUFF RAID_MODE<uint32>(72679, 74318, 74319, 74320)
enum Events enum Events
{ {
EVENT_NONE, EVENT_NONE,
@@ -915,7 +906,7 @@ public:
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{ {
if (spell->Id == HARVESTED_SOUL_BUFF && me->IsInCombat() && !IsHeroic() && _phase != PHASE_OUTRO && _lastTalkTimeBuff + 5 <= GameTime::GetGameTime().count()) if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_HARVESTED_SOUL_LK_BUFF, me) && me->IsInCombat() && !IsHeroic() && _phase != PHASE_OUTRO && _lastTalkTimeBuff + 5 <= GameTime::GetGameTime().count())
{ {
_lastTalkTimeBuff = GameTime::GetGameTime().count(); _lastTalkTimeBuff = GameTime::GetGameTime().count();
Talk(SAY_LK_FROSTMOURNE_KILL); Talk(SAY_LK_FROSTMOURNE_KILL);
@@ -924,7 +915,7 @@ public:
void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
{ {
if (spell->Id == REMORSELESS_WINTER_1 || spell->Id == REMORSELESS_WINTER_2) if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_REMORSELESS_WINTER_1, me) || spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_REMORSELESS_WINTER_2, me))
{ {
me->GetMap()->SetZoneOverrideLight(AREA_THE_FROZEN_THRONE, LIGHT_SNOWSTORM, 5s); me->GetMap()->SetZoneOverrideLight(AREA_THE_FROZEN_THRONE, LIGHT_SNOWSTORM, 5s);
me->GetMap()->SetZoneWeather(AREA_THE_FROZEN_THRONE, WEATHER_STATE_LIGHT_SNOW, 0.5f); me->GetMap()->SetZoneWeather(AREA_THE_FROZEN_THRONE, WEATHER_STATE_LIGHT_SNOW, 0.5f);
@@ -1064,7 +1055,7 @@ public:
events.ScheduleEvent(EVENT_INFEST, 22s + 500ms, EVENT_GROUP_ABILITIES); events.ScheduleEvent(EVENT_INFEST, 22s + 500ms, EVENT_GROUP_ABILITIES);
break; break;
case EVENT_NECROTIC_PLAGUE: case EVENT_NECROTIC_PLAGUE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, NecroticPlagueTargetCheck(me, NECROTIC_PLAGUE_LK, NECROTIC_PLAGUE_PLR))) if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, NecroticPlagueTargetCheck(me, sSpellMgr->GetSpellIdForDifficulty(SPELL_NECROTIC_PLAGUE, me), sSpellMgr->GetSpellIdForDifficulty(SPELL_NECROTIC_PLAGUE_JUMP, me))))
{ {
Talk(EMOTE_NECROTIC_PLAGUE_WARNING, target); Talk(EMOTE_NECROTIC_PLAGUE_WARNING, target);
me->CastSpell(target, SPELL_NECROTIC_PLAGUE, false); me->CastSpell(target, SPELL_NECROTIC_PLAGUE, false);
@@ -1145,7 +1136,7 @@ public:
{ {
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL); me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
Talk(SAY_LK_SUMMON_VALKYR); Talk(SAY_LK_SUMMON_VALKYR);
me->CastSpell((Unit*)nullptr, SUMMON_VALKYR, false); me->CastSpell((Unit*)nullptr, SPELL_SUMMON_VALKYR, false);
events.ScheduleEvent(EVENT_SUMMON_VALKYR, 45s, EVENT_GROUP_ABILITIES); events.ScheduleEvent(EVENT_SUMMON_VALKYR, 45s, EVENT_GROUP_ABILITIES);
// schedule a defile (or reschedule it) if next defile event // schedule a defile (or reschedule it) if next defile event
@@ -2352,8 +2343,7 @@ class spell_the_lich_king_defile : public SpellScript
{ {
targets.remove_if(VehicleCheck()); targets.remove_if(VehicleCheck());
targets.remove_if(Acore::AllWorldObjectsInExactRange(GetCaster(), 10.0f * GetCaster()->GetFloatValue(OBJECT_FIELD_SCALE_X), true)); targets.remove_if(Acore::AllWorldObjectsInExactRange(GetCaster(), 10.0f * GetCaster()->GetFloatValue(OBJECT_FIELD_SCALE_X), true));
uint32 strangulatedAura[4] = {68980, 74325, 74296, 74297}; targets.remove_if(Acore::UnitAuraCheck(true, sSpellMgr->GetSpellIdForDifficulty(SPELL_HARVEST_SOUL, GetCaster())));
targets.remove_if(Acore::UnitAuraCheck(true, strangulatedAura[GetCaster()->GetMap()->GetDifficulty()]));
} }
void ChangeDamageAndGrow() void ChangeDamageAndGrow()

View File

@@ -52,8 +52,8 @@ enum Spells
SPELL_NIGHTMARE_PORTAL_VISUAL_PRE = 71986, SPELL_NIGHTMARE_PORTAL_VISUAL_PRE = 71986,
SPELL_NIGHTMARE_CLOUD = 71970, SPELL_NIGHTMARE_CLOUD = 71970,
SPELL_NIGHTMARE_CLOUD_VISUAL = 71939, SPELL_NIGHTMARE_CLOUD_VISUAL = 71939,
SPELL_PRE_SUMMON_DREAM_PORTAL = 72224, SPELL_PRE_SUMMON_DREAM_PORTAL = 72224, // normal
SPELL_PRE_SUMMON_NIGHTMARE_PORTAL = 72480, SPELL_PRE_SUMMON_NIGHTMARE_PORTAL = 72480, // heroic
SPELL_SUMMON_DREAM_PORTAL = 71305, SPELL_SUMMON_DREAM_PORTAL = 71305,
SPELL_SUMMON_NIGHTMARE_PORTAL = 71987, SPELL_SUMMON_NIGHTMARE_PORTAL = 71987,
SPELL_DREAMWALKERS_RAGE = 71189, SPELL_DREAMWALKERS_RAGE = 71189,
@@ -94,16 +94,13 @@ enum Spells
SPELL_GUT_SPRAY = 70633, SPELL_GUT_SPRAY = 70633,
SPELL_ROT_WORM_SPAWNER = 70675, SPELL_ROT_WORM_SPAWNER = 70675,
// Dream Cloud // Dream Cloud (normal)
SPELL_EMERALD_VIGOR = 70873, SPELL_EMERALD_VIGOR = 70873,
// Nightmare Cloud // Nightmare Cloud (heroic)
SPELL_TWISTED_NIGHTMARE = 71941, SPELL_TWISTED_NIGHTMARE = 71941,
}; };
#define SUMMON_PORTAL RAID_MODE<uint32>(SPELL_PRE_SUMMON_DREAM_PORTAL, SPELL_PRE_SUMMON_DREAM_PORTAL, SPELL_PRE_SUMMON_NIGHTMARE_PORTAL, SPELL_PRE_SUMMON_NIGHTMARE_PORTAL)
#define EMERALD_VIGOR RAID_MODE<uint32>(SPELL_EMERALD_VIGOR, SPELL_EMERALD_VIGOR, SPELL_TWISTED_NIGHTMARE, SPELL_TWISTED_NIGHTMARE)
enum Events enum Events
{ {
// Valithria Dreamwalker // Valithria Dreamwalker
@@ -462,7 +459,7 @@ public:
if (!IsHeroic()) if (!IsHeroic())
Talk(SAY_VALITHRIA_DREAM_PORTAL); Talk(SAY_VALITHRIA_DREAM_PORTAL);
for (uint32 i = 0; i < _portalCount; ++i) for (uint32 i = 0; i < _portalCount; ++i)
me->CastSpell(me, SUMMON_PORTAL, false); me->CastSpell(me, SPELL_PRE_SUMMON_DREAM_PORTAL, false);
_events.ScheduleEvent(EVENT_DREAM_PORTAL, 45s, 48s); _events.ScheduleEvent(EVENT_DREAM_PORTAL, 45s, 48s);
break; break;
case EVENT_DREAM_SLIP: case EVENT_DREAM_SLIP:
@@ -885,7 +882,7 @@ public:
me->GetMotionMaster()->Clear(false); me->GetMotionMaster()->Clear(false);
me->GetMotionMaster()->MoveIdle(); me->GetMotionMaster()->MoveIdle();
// must use originalCaster the same for all clouds to allow stacking // must use originalCaster the same for all clouds to allow stacking
me->CastSpell(me, EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER)); me->CastSpell(me, SPELL_EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
me->DespawnOrUnsummon(1s); me->DespawnOrUnsummon(1s);
break; break;
default: default:

View File

@@ -35,10 +35,8 @@ enum GuardSays
enum Spells enum Spells
{ {
SPELL_IMPALE_10 = 28783, SPELL_IMPALE = 28783,
SPELL_IMPALE_25 = 56090, SPELL_LOCUST_SWARM = 28785,
SPELL_LOCUST_SWARM_10 = 28785,
SPELL_LOCUST_SWARM_25 = 54021,
SPELL_SUMMON_CORPSE_SCRABS_5 = 29105, SPELL_SUMMON_CORPSE_SCRABS_5 = 29105,
SPELL_SUMMON_CORPSE_SCRABS_10 = 28864, SPELL_SUMMON_CORPSE_SCRABS_10 = 28864,
SPELL_BERSERK = 26662 SPELL_BERSERK = 26662
@@ -138,12 +136,12 @@ public:
} }
ScheduleTimedEvent(15s, [&] { ScheduleTimedEvent(15s, [&] {
DoCastRandomTarget(RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25)); DoCastRandomTarget(SPELL_IMPALE);
}, 20s); }, 20s);
ScheduleTimedEvent(70s, 2min, [&] { ScheduleTimedEvent(70s, 2min, [&] {
Talk(EMOTE_LOCUST); Talk(EMOTE_LOCUST);
DoCastSelf(RAID_MODE(SPELL_LOCUST_SWARM_10, SPELL_LOCUST_SWARM_25)); DoCastSelf(SPELL_LOCUST_SWARM);
me->m_Events.AddEventAtOffset([&] me->m_Events.AddEventAtOffset([&]
{ {

View File

@@ -18,6 +18,7 @@
#include "CreatureScript.h" #include "CreatureScript.h"
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "SpellInfo.h" #include "SpellInfo.h"
#include "SpellMgr.h"
#include "naxxramas.h" #include "naxxramas.h"
enum Yells enum Yells
@@ -37,7 +38,6 @@ enum Spells
SPELL_RAIN_OF_FIRE = 28794, SPELL_RAIN_OF_FIRE = 28794,
SPELL_FRENZY = 28798, SPELL_FRENZY = 28798,
SPELL_WIDOWS_EMBRACE = 28732, SPELL_WIDOWS_EMBRACE = 28732,
SPELL_MINION_WIDOWS_EMBRACE = 54097
}; };
enum Groups enum Groups
@@ -143,7 +143,7 @@ public:
void SpellHit(Unit* caster, SpellInfo const* spell) override void SpellHit(Unit* caster, SpellInfo const* spell) override
{ {
if (spell->Id == RAID_MODE(SPELL_WIDOWS_EMBRACE, SPELL_MINION_WIDOWS_EMBRACE)) if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_WIDOWS_EMBRACE, me))
{ {
Talk(EMOTE_WIDOWS_EMBRACE); Talk(EMOTE_WIDOWS_EMBRACE);
scheduler.RescheduleGroup(GROUP_FRENZY, 1min); scheduler.RescheduleGroup(GROUP_FRENZY, 1min);

View File

@@ -33,23 +33,17 @@ enum Spells
SPELL_MARK_OF_ZELIEK = 28835, SPELL_MARK_OF_ZELIEK = 28835,
SPELL_MARK_DAMAGE = 28836, SPELL_MARK_DAMAGE = 28836,
// Korth'azz // Korth'azz
SPELL_KORTHAZZ_METEOR_10 = 28884, SPELL_KORTHAZZ_METEOR = 28884,
SPELL_KORTHAZZ_METEOR_25 = 57467,
// Blaumeux // Blaumeux
SPELL_BLAUMEUX_SHADOW_BOLT_10 = 57374, SPELL_BLAUMEUX_SHADOW_BOLT = 57374,
SPELL_BLAUMEUX_SHADOW_BOLT_25 = 57464, SPELL_BLAUMEUX_VOID_ZONE = 28863,
SPELL_BLAUMEUX_VOID_ZONE_10 = 28863,
SPELL_BLAUMEUX_VOID_ZONE_25 = 57463,
SPELL_BLAUMEUX_UNYIELDING_PAIN = 57381, SPELL_BLAUMEUX_UNYIELDING_PAIN = 57381,
// Zeliek // Zeliek
SPELL_ZELIEK_HOLY_WRATH_10 = 28883, SPELL_ZELIEK_HOLY_WRATH = 28883,
SPELL_ZELIEK_HOLY_WRATH_25 = 57466, SPELL_ZELIEK_HOLY_BOLT = 57376,
SPELL_ZELIEK_HOLY_BOLT_10 = 57376,
SPELL_ZELIEK_HOLY_BOLT_25 = 57465,
SPELL_ZELIEK_CONDEMNATION = 57377, SPELL_ZELIEK_CONDEMNATION = 57377,
// Rivendare // Rivendare
SPELL_RIVENDARE_UNHOLY_SHADOW_10 = 28882, SPELL_RIVENDARE_UNHOLY_SHADOW = 28882,
SPELL_RIVENDARE_UNHOLY_SHADOW_25 = 57369
}; };
enum Events enum Events
@@ -87,15 +81,13 @@ enum FourHorsemen
const uint32 TABLE_SPELL_MARK[4] = {SPELL_MARK_OF_ZELIEK, SPELL_MARK_OF_BLAUMEUX, SPELL_MARK_OF_RIVENDARE, SPELL_MARK_OF_KORTHAZZ}; const uint32 TABLE_SPELL_MARK[4] = {SPELL_MARK_OF_ZELIEK, SPELL_MARK_OF_BLAUMEUX, SPELL_MARK_OF_RIVENDARE, SPELL_MARK_OF_KORTHAZZ};
// PRIMARY SPELL // PRIMARY SPELL
const uint32 TABLE_SPELL_PRIMARY_10[4] = {SPELL_ZELIEK_HOLY_BOLT_10, SPELL_BLAUMEUX_SHADOW_BOLT_10, SPELL_RIVENDARE_UNHOLY_SHADOW_10, SPELL_KORTHAZZ_METEOR_10}; const uint32 TABLE_SPELL_PRIMARY[4] = {SPELL_ZELIEK_HOLY_BOLT, SPELL_BLAUMEUX_SHADOW_BOLT, SPELL_RIVENDARE_UNHOLY_SHADOW, SPELL_KORTHAZZ_METEOR};
const uint32 TABLE_SPELL_PRIMARY_25[4] = {SPELL_ZELIEK_HOLY_BOLT_25, SPELL_BLAUMEUX_SHADOW_BOLT_25, SPELL_RIVENDARE_UNHOLY_SHADOW_25, SPELL_KORTHAZZ_METEOR_25};
// PUNISH // PUNISH
const uint32 TABLE_SPELL_PUNISH[4] = {SPELL_ZELIEK_CONDEMNATION, SPELL_BLAUMEUX_UNYIELDING_PAIN, 0, 0}; const uint32 TABLE_SPELL_PUNISH[4] = {SPELL_ZELIEK_CONDEMNATION, SPELL_BLAUMEUX_UNYIELDING_PAIN, 0, 0};
// SECONDARY SPELL // SECONDARY SPELL
const uint32 TABLE_SPELL_SECONDARY_10[4] = {SPELL_ZELIEK_HOLY_WRATH_10, SPELL_BLAUMEUX_VOID_ZONE_10, 0, 0}; const uint32 TABLE_SPELL_SECONDARY[4] = {SPELL_ZELIEK_HOLY_WRATH, SPELL_BLAUMEUX_VOID_ZONE, 0, 0};
const uint32 TABLE_SPELL_SECONDARY_25[4] = {SPELL_ZELIEK_HOLY_WRATH_25, SPELL_BLAUMEUX_VOID_ZONE_25, 0, 0};
const Position WaypointPositions[12] = const Position WaypointPositions[12] =
{ {
@@ -308,11 +300,11 @@ public:
return; return;
case EVENT_PRIMARY_SPELL: case EVENT_PRIMARY_SPELL:
Talk(SAY_TAUNT); Talk(SAY_TAUNT);
me->CastSpell(me->GetVictim(), RAID_MODE(TABLE_SPELL_PRIMARY_10[horsemanId], TABLE_SPELL_PRIMARY_25[horsemanId]), false); me->CastSpell(me->GetVictim(), TABLE_SPELL_PRIMARY[horsemanId], false);
events.Repeat(15s); events.Repeat(15s);
return; return;
case EVENT_SECONDARY_SPELL: case EVENT_SECONDARY_SPELL:
me->CastSpell(me->GetVictim(), RAID_MODE(TABLE_SPELL_SECONDARY_10[horsemanId], TABLE_SPELL_SECONDARY_25[horsemanId]), false); me->CastSpell(me->GetVictim(), TABLE_SPELL_SECONDARY[horsemanId], false);
events.Repeat(15s); events.Repeat(15s);
return; return;
} }
@@ -328,7 +320,7 @@ public:
} }
if (me->IsWithinDistInMap(me->GetVictim(), 45.0f) && me->IsValidAttackTarget(me->GetVictim())) if (me->IsWithinDistInMap(me->GetVictim(), 45.0f) && me->IsValidAttackTarget(me->GetVictim()))
{ {
DoCastVictim(RAID_MODE(TABLE_SPELL_PRIMARY_10[horsemanId], TABLE_SPELL_PRIMARY_25[horsemanId])); DoCastVictim(TABLE_SPELL_PRIMARY[horsemanId]);
} }
else if (!me->IsWithinDistInMap(me->GetVictim(), 45.0f) || !me->IsValidAttackTarget(me->GetVictim())) else if (!me->IsWithinDistInMap(me->GetVictim(), 45.0f) || !me->IsValidAttackTarget(me->GetVictim()))
{ {

View File

@@ -25,10 +25,8 @@
enum Spells enum Spells
{ {
SPELL_MORTAL_WOUND = 25646, SPELL_MORTAL_WOUND = 25646,
SPELL_ENRAGE_10 = 28371, SPELL_ENRAGE = 28371,
SPELL_ENRAGE_25 = 54427, SPELL_DECIMATE = 28374,
SPELL_DECIMATE_10 = 28374,
SPELL_DECIMATE_25 = 54426,
SPELL_DECIMATE_DAMAGE = 28375, SPELL_DECIMATE_DAMAGE = 28375,
SPELL_BERSERK = 26662, SPELL_BERSERK = 26662,
SPELL_INFECTED_WOUND = 29306, SPELL_INFECTED_WOUND = 29306,
@@ -184,7 +182,7 @@ public:
break; break;
case EVENT_ENRAGE: case EVENT_ENRAGE:
Talk(EMOTE_ENRAGE); Talk(EMOTE_ENRAGE);
me->CastSpell(me, RAID_MODE(SPELL_ENRAGE_10, SPELL_ENRAGE_25), true); me->CastSpell(me, SPELL_ENRAGE, true);
events.Repeat(22s); events.Repeat(22s);
break; break;
case EVENT_MORTAL_WOUND: case EVENT_MORTAL_WOUND:
@@ -193,7 +191,7 @@ public:
break; break;
case EVENT_DECIMATE: case EVENT_DECIMATE:
Talk(EMOTE_DECIMATE); Talk(EMOTE_DECIMATE);
me->CastSpell(me, RAID_MODE(SPELL_DECIMATE_10, SPELL_DECIMATE_25), false); me->CastSpell(me, SPELL_DECIMATE, false);
events.Repeat(RAID_MODE(110s, 90s)); events.Repeat(RAID_MODE(110s, 90s));
break; break;
case EVENT_SUMMON_ZOMBIE: case EVENT_SUMMON_ZOMBIE:

View File

@@ -41,8 +41,7 @@ enum Spells
{ {
// Gothik // Gothik
SPELL_HARVEST_SOUL = 28679, SPELL_HARVEST_SOUL = 28679,
SPELL_SHADOW_BOLT_10 = 29317, SPELL_SHADOW_BOLT = 29317,
SPELL_SHADOW_BOLT_25 = 56405,
// Teleport spells // Teleport spells
SPELL_TELEPORT_DEAD = 28025, SPELL_TELEPORT_DEAD = 28025,
SPELL_TELEPORT_LIVE = 28026, SPELL_TELEPORT_LIVE = 28026,
@@ -400,7 +399,7 @@ public:
Talk(SAY_INTRO_4); Talk(SAY_INTRO_4);
break; break;
case EVENT_SHADOW_BOLT: case EVENT_SHADOW_BOLT:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_SHADOW_BOLT_10, SPELL_SHADOW_BOLT_25), false); me->CastSpell(me->GetVictim(), SPELL_SHADOW_BOLT, false);
events.Repeat(1s); events.Repeat(1s);
break; break;
case EVENT_HARVEST_SOUL: case EVENT_HARVEST_SOUL:

View File

@@ -29,10 +29,8 @@ enum Spells
SPELL_POISON_CLOUD = 28240, SPELL_POISON_CLOUD = 28240,
SPELL_MUTATING_INJECTION = 28169, SPELL_MUTATING_INJECTION = 28169,
SPELL_MUTATING_EXPLOSION = 28206, SPELL_MUTATING_EXPLOSION = 28206,
SPELL_SLIME_SPRAY_10 = 28157, SPELL_SLIME_SPRAY = 28157,
SPELL_SLIME_SPRAY_25 = 54364, SPELL_POISON_CLOUD_DAMAGE_AURA = 28158,
SPELL_POISON_CLOUD_DAMAGE_AURA_10 = 28158,
SPELL_POISON_CLOUD_DAMAGE_AURA_25 = 54362,
SPELL_BERSERK = 26662, SPELL_BERSERK = 26662,
SPELL_BOMBARD_SLIME = 28280 SPELL_BOMBARD_SLIME = 28280
}; };
@@ -105,14 +103,6 @@ public:
events.ScheduleEvent(EVENT_BERSERK, RAID_MODE(720s, 540s)); events.ScheduleEvent(EVENT_BERSERK, RAID_MODE(720s, 540s));
} }
void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == RAID_MODE(SPELL_SLIME_SPRAY_10, SPELL_SLIME_SPRAY_25) && target->IsPlayer())
{
me->SummonCreature(NPC_FALLOUT_SLIME, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
}
}
void JustSummoned(Creature* cr) override void JustSummoned(Creature* cr) override
{ {
if (cr->GetEntry() == NPC_FALLOUT_SLIME) if (cr->GetEntry() == NPC_FALLOUT_SLIME)
@@ -169,7 +159,7 @@ public:
break; break;
case EVENT_SLIME_SPRAY: case EVENT_SLIME_SPRAY:
Talk(EMOTE_SLIME); Talk(EMOTE_SLIME);
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_SLIME_SPRAY_10, SPELL_SLIME_SPRAY_25), false); me->CastSpell(me->GetVictim(), SPELL_SLIME_SPRAY, false);
events.Repeat(20s); events.Repeat(20s);
break; break;
case EVENT_MUTATING_INJECTION: case EVENT_MUTATING_INJECTION:
@@ -223,7 +213,7 @@ public:
auraVisualTimer += diff; auraVisualTimer += diff;
if (auraVisualTimer >= 1000) if (auraVisualTimer >= 1000)
{ {
me->CastSpell(me, (me->GetMap()->Is25ManRaid() ? SPELL_POISON_CLOUD_DAMAGE_AURA_25 : SPELL_POISON_CLOUD_DAMAGE_AURA_10), true); me->CastSpell(me, SPELL_POISON_CLOUD_DAMAGE_AURA, true);
auraVisualTimer = 0; auraVisualTimer = 0;
} }
} }
@@ -291,10 +281,27 @@ class spell_grobbulus_mutating_injection_aura : public AuraScript
} }
}; };
class spell_grobbulus_slime_spray : public SpellScript
{
PrepareSpellScript(spell_grobbulus_slime_spray);
void HandleHit()
{
if (Unit* target = GetHitUnit())
GetCaster()->SummonCreature(NPC_FALLOUT_SLIME, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
}
void Register() override
{
OnHit += SpellHitFn(spell_grobbulus_slime_spray::HandleHit);
}
};
void AddSC_boss_grobbulus() void AddSC_boss_grobbulus()
{ {
new boss_grobbulus(); new boss_grobbulus();
new boss_grobbulus_poison_cloud(); new boss_grobbulus_poison_cloud();
RegisterSpellScript(spell_grobbulus_mutating_injection_aura); RegisterSpellScript(spell_grobbulus_mutating_injection_aura);
RegisterSpellScript(spell_grobbulus_poison); RegisterSpellScript(spell_grobbulus_poison);
RegisterSpellScript(spell_grobbulus_slime_spray);
} }

View File

@@ -34,8 +34,7 @@ enum Says
enum Spells enum Spells
{ {
SPELL_SPELL_DISRUPTION = 29310, SPELL_SPELL_DISRUPTION = 29310,
SPELL_DECREPIT_FEVER_10 = 29998, SPELL_DECREPIT_FEVER = 29998,
SPELL_DECREPIT_FEVER_25 = 55011,
SPELL_PLAGUE_CLOUD = 29350, SPELL_PLAGUE_CLOUD = 29350,
SPELL_TELEPORT_SELF = 30211 SPELL_TELEPORT_SELF = 30211
}; };
@@ -168,7 +167,7 @@ public:
events.Repeat(10s); events.Repeat(10s);
break; break;
case EVENT_DECEPIT_FEVER: case EVENT_DECEPIT_FEVER:
me->CastSpell(me, RAID_MODE(SPELL_DECREPIT_FEVER_10, SPELL_DECREPIT_FEVER_25), false); me->CastSpell(me, SPELL_DECREPIT_FEVER, false);
events.Repeat(22s, 25s); events.Repeat(22s, 25s);
break; break;
case EVENT_PLAGUE_CLOUD: case EVENT_PLAGUE_CLOUD:

View File

@@ -43,10 +43,8 @@ enum Yells
enum Spells enum Spells
{ {
// Kel'Thzuad // Kel'Thzuad
SPELL_FROST_BOLT_SINGLE_10 = 28478, SPELL_FROST_BOLT_SINGLE = 28478,
SPELL_FROST_BOLT_SINGLE_25 = 55802, SPELL_FROST_BOLT_MULTI = 28479,
SPELL_FROST_BOLT_MULTI_10 = 28479,
SPELL_FROST_BOLT_MULTI_25 = 55807,
SPELL_SHADOW_FISURE = 27810, SPELL_SHADOW_FISURE = 27810,
SPELL_VOID_BLAST = 27812, SPELL_VOID_BLAST = 27812,
SPELL_DETONATE_MANA = 27819, SPELL_DETONATE_MANA = 27819,
@@ -367,11 +365,11 @@ public:
me->CastSpell(me, SPELL_BERSERK, true); me->CastSpell(me, SPELL_BERSERK, true);
break; break;
case EVENT_FROST_BOLT_SINGLE: case EVENT_FROST_BOLT_SINGLE:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_FROST_BOLT_SINGLE_10, SPELL_FROST_BOLT_SINGLE_25), false); me->CastSpell(me->GetVictim(), SPELL_FROST_BOLT_SINGLE, false);
events.Repeat(2s, 10s); events.Repeat(2s, 10s);
break; break;
case EVENT_FROST_BOLT_MULTI: case EVENT_FROST_BOLT_MULTI:
me->CastSpell(me, RAID_MODE(SPELL_FROST_BOLT_MULTI_10, SPELL_FROST_BOLT_MULTI_25), false); me->CastSpell(me, SPELL_FROST_BOLT_MULTI, false);
events.Repeat(15s, 30s); events.Repeat(15s, 30s);
break; break;
case EVENT_SHADOW_FISSURE: case EVENT_SHADOW_FISSURE:

View File

@@ -23,10 +23,8 @@ enum Spells
{ {
SPELL_NECROTIC_AURA = 55593, SPELL_NECROTIC_AURA = 55593,
SPELL_SUMMON_SPORE = 29234, SPELL_SUMMON_SPORE = 29234,
SPELL_DEATHBLOOM_10 = 29865, SPELL_DEATHBLOOM = 29865,
SPELL_DEATHBLOOM_25 = 55053, SPELL_INEVITABLE_DOOM = 29204,
SPELL_INEVITABLE_DOOM_10 = 29204,
SPELL_INEVITABLE_DOOM_25 = 55052,
SPELL_BERSERK = 26662 SPELL_BERSERK = 26662
}; };
@@ -134,11 +132,11 @@ public:
events.Repeat(20s); events.Repeat(20s);
break; break;
case EVENT_DEATHBLOOM: case EVENT_DEATHBLOOM:
me->CastSpell(me, RAID_MODE(SPELL_DEATHBLOOM_10, SPELL_DEATHBLOOM_25), false); me->CastSpell(me, SPELL_DEATHBLOOM, false);
events.Repeat(30s); events.Repeat(30s);
break; break;
case EVENT_INEVITABLE_DOOM: case EVENT_INEVITABLE_DOOM:
me->CastSpell(me, RAID_MODE(SPELL_INEVITABLE_DOOM_10, SPELL_INEVITABLE_DOOM_25), false); me->CastSpell(me, SPELL_INEVITABLE_DOOM, false);
doomCounter++; doomCounter++;
events.Repeat(doomCounter < 6 ? 30s : 15s); events.Repeat(doomCounter < 6 ? 30s : 15s);
break; break;

View File

@@ -26,14 +26,10 @@
enum Spells enum Spells
{ {
SPELL_WEB_SPRAY_10 = 29484, SPELL_WEB_SPRAY = 29484,
SPELL_WEB_SPRAY_25 = 54125, SPELL_POISON_SHOCK = 28741,
SPELL_POISON_SHOCK_10 = 28741, SPELL_NECROTIC_POISON = 54121,
SPELL_POISON_SHOCK_25 = 54122, SPELL_FRENZY = 54123,
SPELL_NECROTIC_POISON_10 = 54121,
SPELL_NECROTIC_POISON_25 = 28776,
SPELL_FRENZY_10 = 54123,
SPELL_FRENZY_25 = 54124,
SPELL_WEB_WRAP_STUN = 28622, SPELL_WEB_WRAP_STUN = 28622,
SPELL_WEB_WRAP_SUMMON = 28627, SPELL_WEB_WRAP_SUMMON = 28627,
SPELL_WEB_WRAP_KILL_WEBS = 52512, SPELL_WEB_WRAP_KILL_WEBS = 52512,
@@ -231,15 +227,15 @@ public:
{ {
case EVENT_WEB_SPRAY: case EVENT_WEB_SPRAY:
Talk(EMOTE_WEB_SPRAY); Talk(EMOTE_WEB_SPRAY);
me->CastSpell(me, RAID_MODE(SPELL_WEB_SPRAY_10, SPELL_WEB_SPRAY_25), true); me->CastSpell(me, SPELL_WEB_SPRAY, true);
events.Repeat(40s); events.Repeat(40s);
break; break;
case EVENT_POISON_SHOCK: case EVENT_POISON_SHOCK:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_POISON_SHOCK_10, SPELL_POISON_SHOCK_25), false); me->CastSpell(me->GetVictim(), SPELL_POISON_SHOCK, false);
events.Repeat(10s); events.Repeat(10s);
break; break;
case EVENT_NECROTIC_POISON: case EVENT_NECROTIC_POISON:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_NECROTIC_POISON_10, SPELL_NECROTIC_POISON_25), false); me->CastSpell(me->GetVictim(), SPELL_NECROTIC_POISON, false);
events.Repeat(30s); events.Repeat(30s);
break; break;
case EVENT_SUMMON_SPIDERLINGS: case EVENT_SUMMON_SPIDERLINGS:
@@ -253,7 +249,7 @@ public:
case EVENT_HEALTH_CHECK: case EVENT_HEALTH_CHECK:
if (me->GetHealthPct() < 30) if (me->GetHealthPct() < 30)
{ {
me->CastSpell(me, RAID_MODE(SPELL_FRENZY_10, SPELL_FRENZY_25), true); me->CastSpell(me, SPELL_FRENZY, true);
break; break;
} }
events.Repeat(1s); events.Repeat(1s);

View File

@@ -34,10 +34,8 @@ enum Says
enum Spells enum Spells
{ {
SPELL_CURSE_OF_THE_PLAGUEBRINGER_10 = 29213, SPELL_CURSE_OF_THE_PLAGUEBRINGER = 29213,
SPELL_CURSE_OF_THE_PLAGUEBRINGER_25 = 54835, SPELL_CRIPPLE = 29212,
SPELL_CRIPPLE_10 = 29212,
SPELL_CRIPPLE_25 = 54814,
SPELL_SUMMON_PLAGUED_WARRIORS = 29237, SPELL_SUMMON_PLAGUED_WARRIORS = 29237,
SPELL_TELEPORT = 29216, SPELL_TELEPORT = 29216,
SPELL_TELEPORT_BACK = 29231, SPELL_TELEPORT_BACK = 29231,
@@ -207,7 +205,7 @@ public:
case EVENT_CURSE: case EVENT_CURSE:
if (events.GetPhaseMask() == 0) if (events.GetPhaseMask() == 0)
{ {
me->CastCustomSpell(RAID_MODE(SPELL_CURSE_OF_THE_PLAGUEBRINGER_10, SPELL_CURSE_OF_THE_PLAGUEBRINGER_25), SPELLVALUE_MAX_TARGETS, RAID_MODE(3, 10), me, false); me->CastCustomSpell(SPELL_CURSE_OF_THE_PLAGUEBRINGER, SPELLVALUE_MAX_TARGETS, RAID_MODE(3, 10), me, false);
} }
events.Repeat(25s); events.Repeat(25s);
break; break;
@@ -228,7 +226,7 @@ public:
break; break;
case EVENT_BLINK: case EVENT_BLINK:
DoResetThreatList(); DoResetThreatList();
me->CastSpell(me, RAID_MODE(SPELL_CRIPPLE_10, SPELL_CRIPPLE_25), false); me->CastSpell(me, SPELL_CRIPPLE, false);
me->CastSpell(me, SPELL_BLINK, true); me->CastSpell(me, SPELL_BLINK, true);
Talk(EMOTE_BLINK); Talk(EMOTE_BLINK);
events.Repeat(30s); events.Repeat(30s);

View File

@@ -30,8 +30,7 @@ enum Yells
enum Spells enum Spells
{ {
SPELL_HATEFUL_STRIKE_10 = 41926, SPELL_HATEFUL_STRIKE = 41926,
SPELL_HATEFUL_STRIKE_25 = 59192,
SPELL_FRENZY = 28131, SPELL_FRENZY = 28131,
SPELL_BERSERK = 26662, SPELL_BERSERK = 26662,
SPELL_SLIME_BOLT = 32309 SPELL_SLIME_BOLT = 32309
@@ -155,7 +154,7 @@ public:
} }
if (finalTarget) if (finalTarget)
{ {
me->CastSpell(finalTarget, RAID_MODE(SPELL_HATEFUL_STRIKE_10, SPELL_HATEFUL_STRIKE_25), false); me->CastSpell(finalTarget, SPELL_HATEFUL_STRIKE, false);
} }
events.Repeat(1s); events.Repeat(1s);
break; break;

View File

@@ -34,8 +34,7 @@ enum Says
enum Spells enum Spells
{ {
SPELL_UNBALANCING_STRIKE = 26613, SPELL_UNBALANCING_STRIKE = 26613,
SPELL_DISRUPTING_SHOUT_10 = 55543, SPELL_DISRUPTING_SHOUT = 55543,
SPELL_DISRUPTING_SHOUT_25 = 29107,
SPELL_JAGGED_KNIFE = 55550, SPELL_JAGGED_KNIFE = 55550,
SPELL_HOPELESS = 29125, SPELL_HOPELESS = 29125,
SPELL_TAUNT = 29060 SPELL_TAUNT = 29060
@@ -267,7 +266,7 @@ public:
events.Repeat(20s); events.Repeat(20s);
break; break;
case EVENT_DISRUPTING_SHOUT: case EVENT_DISRUPTING_SHOUT:
me->CastSpell(me, RAID_MODE(SPELL_DISRUPTING_SHOUT_10, SPELL_DISRUPTING_SHOUT_25), false); me->CastSpell(me, SPELL_DISRUPTING_SHOUT, false);
events.Repeat(15s); events.Repeat(15s);
break; break;
case EVENT_JAGGED_KNIFE: case EVENT_JAGGED_KNIFE:

View File

@@ -33,14 +33,11 @@ enum Yells
enum Spells enum Spells
{ {
// Fight // Fight
SPELL_FROST_AURA_10 = 28531, SPELL_FROST_AURA = 28531,
SPELL_FROST_AURA_25 = 55799,
SPELL_CLEAVE = 19983, SPELL_CLEAVE = 19983,
SPELL_TAIL_SWEEP_10 = 55697, SPELL_TAIL_SWEEP = 55697,
SPELL_TAIL_SWEEP_25 = 55696,
SPELL_SUMMON_BLIZZARD = 28560, SPELL_SUMMON_BLIZZARD = 28560,
SPELL_LIFE_DRAIN_10 = 28542, SPELL_LIFE_DRAIN = 28542,
SPELL_LIFE_DRAIN_25 = 55665,
SPELL_BERSERK = 26662, SPELL_BERSERK = 26662,
// Ice block // Ice block
@@ -160,7 +157,7 @@ public:
{ {
BossAI::JustEngagedWith(who); BossAI::JustEngagedWith(who);
EnterCombatSelfFunction(); EnterCombatSelfFunction();
me->CastSpell(me, RAID_MODE(SPELL_FROST_AURA_10, SPELL_FROST_AURA_25), true); me->CastSpell(me, SPELL_FROST_AURA, true);
events.ScheduleEvent(EVENT_BERSERK, 15min); events.ScheduleEvent(EVENT_BERSERK, 15min);
events.ScheduleEvent(EVENT_CLEAVE, 5s); events.ScheduleEvent(EVENT_CLEAVE, 5s);
events.ScheduleEvent(EVENT_TAIL_SWEEP, 10s); events.ScheduleEvent(EVENT_TAIL_SWEEP, 10s);
@@ -258,11 +255,11 @@ public:
events.Repeat(10s); events.Repeat(10s);
return; return;
case EVENT_TAIL_SWEEP: case EVENT_TAIL_SWEEP:
me->CastSpell(me, RAID_MODE(SPELL_TAIL_SWEEP_10, SPELL_TAIL_SWEEP_25), false); me->CastSpell(me, SPELL_TAIL_SWEEP, false);
events.Repeat(10s); events.Repeat(10s);
return; return;
case EVENT_LIFE_DRAIN: case EVENT_LIFE_DRAIN:
me->CastCustomSpell(RAID_MODE(SPELL_LIFE_DRAIN_10, SPELL_LIFE_DRAIN_25), SPELLVALUE_MAX_TARGETS, RAID_MODE(2, 5), me, false); me->CastCustomSpell(SPELL_LIFE_DRAIN, SPELLVALUE_MAX_TARGETS, RAID_MODE(2, 5), me, false);
events.Repeat(24s); events.Repeat(24s);
return; return;
case EVENT_BLIZZARD: case EVENT_BLIZZARD:

View File

@@ -59,20 +59,17 @@ enum Spells
SPELL_SHOCK_VISUAL = 28159, SPELL_SHOCK_VISUAL = 28159,
// Stalagg // Stalagg
SPELL_POWER_SURGE_10 = 54529, SPELL_POWER_SURGE = 54529,
SPELL_POWER_SURGE_25 = 28134,
SPELL_STALAGG_CHAIN = 28096, SPELL_STALAGG_CHAIN = 28096,
// Feugen // Feugen
SPELL_STATIC_FIELD_10 = 28135, SPELL_STATIC_FIELD = 28135,
SPELL_STATIC_FIELD_25 = 54528,
SPELL_FEUGEN_CHAIN = 28111, SPELL_FEUGEN_CHAIN = 28111,
// Thaddius // Thaddius
SPELL_POLARITY_SHIFT = 28089, SPELL_POLARITY_SHIFT = 28089,
SPELL_BALL_LIGHTNING = 28299, SPELL_BALL_LIGHTNING = 28299,
SPELL_CHAIN_LIGHTNING_10 = 28167, SPELL_CHAIN_LIGHTNING = 28167,
SPELL_CHAIN_LIGHTNING_25 = 54531,
SPELL_BERSERK = 27680, SPELL_BERSERK = 27680,
SPELL_THADDIUS_VISUAL_LIGHTNING = 28136, SPELL_THADDIUS_VISUAL_LIGHTNING = 28136,
SPELL_THADDIUS_SPAWN_STUN = 28160, SPELL_THADDIUS_SPAWN_STUN = 28160,
@@ -318,7 +315,7 @@ public:
me->CastSpell(me, SPELL_BERSERK, true); me->CastSpell(me, SPELL_BERSERK, true);
break; break;
case EVENT_THADDIUS_CHAIN_LIGHTNING: case EVENT_THADDIUS_CHAIN_LIGHTNING:
me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25), false); me->CastSpell(me->GetVictim(), SPELL_CHAIN_LIGHTNING, false);
events.Repeat(15s); events.Repeat(15s);
break; break;
case EVENT_THADDIUS_POLARITY_SHIFT: case EVENT_THADDIUS_POLARITY_SHIFT:
@@ -498,11 +495,11 @@ public:
switch (events.ExecuteEvent()) switch (events.ExecuteEvent())
{ {
case EVENT_MINION_POWER_SURGE: case EVENT_MINION_POWER_SURGE:
me->CastSpell(me, RAID_MODE(SPELL_POWER_SURGE_10, SPELL_POWER_SURGE_25), false); me->CastSpell(me, SPELL_POWER_SURGE, false);
events.Repeat(19s); events.Repeat(19s);
break; break;
case EVENT_MINION_STATIC_FIELD: case EVENT_MINION_STATIC_FIELD:
me->CastSpell(me, RAID_MODE(SPELL_STATIC_FIELD_10, SPELL_STATIC_FIELD_25), false); me->CastSpell(me, SPELL_STATIC_FIELD, false);
events.Repeat(3s); events.Repeat(3s);
break; break;
case EVENT_MINION_MAGNETIC_PULL: case EVENT_MINION_MAGNETIC_PULL:

View File

@@ -31,55 +31,35 @@ enum AssemblySpells
SPELL_BERSERK = 47008, SPELL_BERSERK = 47008,
// Steelbreaker // Steelbreaker
SPELL_HIGH_VOLTAGE_10 = 61890, SPELL_HIGH_VOLTAGE = 61890,
SPELL_HIGH_VOLTAGE_25 = 63498, SPELL_FUSION_PUNCH = 61903,
SPELL_FUSION_PUNCH_10 = 61903, SPELL_STATIC_DISRUPTION = 61911,
SPELL_FUSION_PUNCH_25 = 63493, SPELL_OVERWHELMING_POWER = 64637,
SPELL_STATIC_DISRUPTION_10 = 61911,
SPELL_STATIC_DISRUPTION_25 = 63495,
SPELL_OVERWHELMING_POWER_10 = 64637,
SPELL_OVERWHELMING_POWER_25 = 61888,
SPELL_ELECTRICAL_CHARGE = 61902, SPELL_ELECTRICAL_CHARGE = 61902,
// Runemaster Molgeim // Runemaster Molgeim
SPELL_SHIELD_OF_RUNES_BUFF = 62277, SPELL_SHIELD_OF_RUNES_BUFF = 62277,
SPELL_SHIELD_OF_RUNES_10 = 62274, SPELL_SHIELD_OF_RUNES = 62274,
SPELL_SHIELD_OF_RUNES_25 = 63489,
SPELL_RUNE_OF_POWER = 61973, SPELL_RUNE_OF_POWER = 61973,
SPELL_RUNE_OF_DEATH_10 = 62269, SPELL_RUNE_OF_DEATH = 62269,
SPELL_RUNE_OF_DEATH_25 = 63490,
SPELL_RUNE_OF_SUMMONING = 62273, SPELL_RUNE_OF_SUMMONING = 62273,
SPELL_RUNE_OF_SUMMONING_SUMMON = 62020, SPELL_RUNE_OF_SUMMONING_SUMMON = 62020,
SPELL_LIGHTNING_BLAST_10 = 62054, SPELL_LIGHTNING_BLAST = 62054,
SPELL_LIGHTNING_BLAST_25 = 63491,
CREATURE_LIGHTNING_ELEMENTAL = 32958, CREATURE_LIGHTNING_ELEMENTAL = 32958,
CREATURE_RUNE_OF_SUMMONING = 33051, CREATURE_RUNE_OF_SUMMONING = 33051,
SPELL_RUNE_OF_POWER_OOC_CHANNEL = 61975, SPELL_RUNE_OF_POWER_OOC_CHANNEL = 61975,
// Stormcaller Brundir // Stormcaller Brundir
SPELL_CHAIN_LIGHTNING_10 = 61879, SPELL_CHAIN_LIGHTNING = 61879,
SPELL_CHAIN_LIGHTNING_25 = 63479, SPELL_OVERLOAD = 61869,
SPELL_OVERLOAD_10 = 61869, SPELL_LIGHTNING_WHIRL = 61915,
SPELL_OVERLOAD_25 = 63481, SPELL_LIGHTNING_WHIRL_TRIGG = 61916,
SPELL_LIGHTNING_WHIRL_10 = 61915, SPELL_LIGHTNING_TENDRILS = 61887,
SPELL_LIGHTNING_WHIRL_25 = 63483, SPELL_LIGHTNING_TENDRILS_2 = 61883,
SPELL_LIGHTNING_TENDRILS_10 = 61887,
SPELL_LIGHTNING_TENDRILS_25 = 63486,
SPELL_STORMSHIELD = 64187, SPELL_STORMSHIELD = 64187,
SPELL_LIGHTNING_CHANNEL_PRE = 61942, SPELL_LIGHTNING_CHANNEL_PRE = 61942,
};
#define SPELL_HIGH_VOLTAGE RAID_MODE(SPELL_HIGH_VOLTAGE_10, SPELL_HIGH_VOLTAGE_25) };
#define SPELL_FUSION_PUNCH RAID_MODE(SPELL_FUSION_PUNCH_10, SPELL_FUSION_PUNCH_25)
#define SPELL_STATIC_DISRUPTION RAID_MODE(SPELL_STATIC_DISRUPTION_10, SPELL_STATIC_DISRUPTION_25)
#define SPELL_OVERWHELMING_POWER RAID_MODE(SPELL_OVERWHELMING_POWER_10, SPELL_OVERWHELMING_POWER_25)
#define SPELL_SHIELD_OF_RUNES RAID_MODE(SPELL_SHIELD_OF_RUNES_10, SPELL_SHIELD_OF_RUNES_25)
#define SPELL_RUNE_OF_DEATH RAID_MODE(SPELL_RUNE_OF_DEATH_10, SPELL_RUNE_OF_DEATH_25)
#define SPELL_LIGHTNING_BLAST RAID_MODE(SPELL_LIGHTNING_BLAST_10, SPELL_LIGHTNING_BLAST_25)
#define SPELL_CHAIN_LIGHTNING RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25)
#define SPELL_OVERLOAD RAID_MODE(SPELL_OVERLOAD_10, SPELL_OVERLOAD_25)
#define SPELL_LIGHTNING_WHIRL RAID_MODE(SPELL_LIGHTNING_WHIRL_10, SPELL_LIGHTNING_WHIRL_25)
#define SPELL_LIGHTNING_TENDRILS RAID_MODE(SPELL_LIGHTNING_TENDRILS_10, SPELL_LIGHTNING_TENDRILS_25)
enum eEnums enum eEnums
{ {
@@ -720,7 +700,7 @@ public:
void SpellHitTarget(Unit* /*target*/, SpellInfo const* spellInfo) override void SpellHitTarget(Unit* /*target*/, SpellInfo const* spellInfo) override
{ {
if (spellInfo->Id == SPELL_CHAIN_LIGHTNING || spellInfo->Id == uint32(RAID_MODE(61916, 63482))) // Lightning Whirl triggered if (spellInfo->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_CHAIN_LIGHTNING, me) || spellInfo->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_LIGHTNING_WHIRL_TRIGG, me))
_stunnedAchievement = false; _stunnedAchievement = false;
} }
@@ -797,7 +777,7 @@ public:
me->SetUnitFlag(UNIT_FLAG_STUNNED); me->SetUnitFlag(UNIT_FLAG_STUNNED);
me->CastSpell(me, SPELL_LIGHTNING_TENDRILS, true); me->CastSpell(me, SPELL_LIGHTNING_TENDRILS, true);
me->CastSpell(me, 61883, true); me->CastSpell(me, SPELL_LIGHTNING_TENDRILS_2, true);
events.ScheduleEvent(EVENT_LIGHTNING_LAND, 16s); events.ScheduleEvent(EVENT_LIGHTNING_LAND, 16s);
events.ScheduleEvent(EVENT_LIGHTNING_FLIGHT, 1s); events.ScheduleEvent(EVENT_LIGHTNING_FLIGHT, 1s);
break; break;
@@ -821,8 +801,8 @@ public:
me->SetRegeneratingHealth(true); me->SetRegeneratingHealth(true);
_flyTargetGUID.Clear(); _flyTargetGUID.Clear();
me->RemoveAura(SPELL_LIGHTNING_TENDRILS); me->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_LIGHTNING_TENDRILS, me));
me->RemoveAura(61883); me->RemoveAura(SPELL_LIGHTNING_TENDRILS_2);
DoResetThreatList(); DoResetThreatList();
events.CancelEvent(EVENT_LIGHTNING_FLIGHT); events.CancelEvent(EVENT_LIGHTNING_FLIGHT);
break; break;

View File

@@ -28,40 +28,25 @@ enum AuriayaSpells
{ {
// BASIC // BASIC
SPELL_TERRIFYING_SCREECH = 64386, SPELL_TERRIFYING_SCREECH = 64386,
SPELL_SENTINEL_BLAST_10 = 64389, SPELL_SENTINEL_BLAST = 64389,
SPELL_SENTINEL_BLAST_25 = 64678, SPELL_SONIC_SCREECH = 64422,
SPELL_SONIC_SCREECH_10 = 64422,
SPELL_SONIC_SCREECH_25 = 64688,
SPELL_GUARDIAN_SWARM = 64396, SPELL_GUARDIAN_SWARM = 64396,
SPELL_ENRAGE = 47008, SPELL_ENRAGE = 47008,
SPELL_ACTIVATE_FERAL_DEFENDER = 64449, SPELL_ACTIVATE_FERAL_DEFENDER = 64449,
// Sanctum Sentry // Sanctum Sentry
SPELL_SAVAGE_POUNCE_10 = 64666, SPELL_SAVAGE_POUNCE = 64666,
SPELL_SAVAGE_POUNCE_25 = 64374, SPELL_RIP_FLESH = 64375,
SPELL_RIP_FLESH_10 = 64375,
SPELL_RIP_FLESH_25 = 64667,
SPELL_STRENGTH_OF_THE_PACK = 64369, SPELL_STRENGTH_OF_THE_PACK = 64369,
// Feral Defender // Feral Defender
SPELL_FERAL_ESSENCE = 64455, SPELL_FERAL_ESSENCE = 64455,
SPELL_FERAL_POUNCE_10 = 64478, SPELL_FERAL_POUNCE = 64478,
SPELL_FERAL_POUNCE_25 = 64669, SPELL_FERAL_RUSH = 64496,
SPELL_FERAL_RUSH_10 = 64496,
SPELL_FERAL_RUSH_25 = 64674,
//SPELL_SEEPING_FERAL_ESSENCE_SUMMON = 64457, //SPELL_SEEPING_FERAL_ESSENCE_SUMMON = 64457,
SPELL_SEEPING_FERAL_ESSENCE_10 = 64458, SPELL_SEEPING_FERAL_ESSENCE = 64458,
SPELL_SEEPING_FERAL_ESSENCE_25 = 64676,
}; };
#define SPELL_SONIC_SCREECH RAID_MODE(SPELL_SONIC_SCREECH_10, SPELL_SONIC_SCREECH_25)
#define SPELL_SENTINEL_BLAST RAID_MODE(SPELL_SENTINEL_BLAST_10, SPELL_SENTINEL_BLAST_25)
#define SPELL_SAVAGE_POUNCE RAID_MODE(SPELL_SAVAGE_POUNCE_10, SPELL_SAVAGE_POUNCE_25)
#define SPELL_RIP_FLESH RAID_MODE(SPELL_RIP_FLESH_10, SPELL_RIP_FLESH_25)
#define SPELL_FERAL_POUNCE RAID_MODE(SPELL_FERAL_POUNCE_10, SPELL_FERAL_POUNCE_25)
#define SPELL_FERAL_RUSH RAID_MODE(SPELL_FERAL_RUSH_10, SPELL_FERAL_RUSH_25)
//#define SPELL_SEEPING_FERAL_ESSENCE RAID_MODE(SPELL_SEEPING_FERAL_ESSENCE_10, SPELL_SEEPING_FERAL_ESSENCE_25)
enum AuriayaNPC enum AuriayaNPC
{ {
NPC_FERAL_DEFENDER = 34035, NPC_FERAL_DEFENDER = 34035,

View File

@@ -29,31 +29,23 @@ enum FreyaSpells
SPELL_AUTO_GROW = 62559, SPELL_AUTO_GROW = 62559,
SPELL_LIFEBINDER_PHERONOMES = 62619, SPELL_LIFEBINDER_PHERONOMES = 62619,
SPELL_LIFEBINDER_VISUAL = 62579, SPELL_LIFEBINDER_VISUAL = 62579,
SPELL_LIFEBINDER_HEAL_10 = 62584, SPELL_LIFEBINDER_HEAL = 62584,
SPELL_LIFEBINDER_HEAL_25 = 64185,
// FREYA // FREYA
SPELL_TOUCH_OF_EONAR_10 = 62528, SPELL_TOUCH_OF_EONAR = 62528,
SPELL_TOUCH_OF_EONAR_25 = 62892,
SPELL_ATTUNED_TO_NATURE = 62519, SPELL_ATTUNED_TO_NATURE = 62519,
SPELL_SUMMON_LIFEBINDER = 62870, SPELL_SUMMON_LIFEBINDER = 62870,
SPELL_SUNBEAM_10 = 62623, SPELL_SUNBEAM = 62623,
SPELL_SUNBEAM_25 = 62872,
SPELL_NATURE_BOMB_FLIGHT = 64648, SPELL_NATURE_BOMB_FLIGHT = 64648,
SPELL_NATURE_BOMB_DAMAGE_10 = 64587, SPELL_NATURE_BOMB_DAMAGE = 64587,
SPELL_NATURE_BOMB_DAMAGE_25 = 64650,
SPELL_GREEN_BANISH_STATE = 32567, SPELL_GREEN_BANISH_STATE = 32567,
SPELL_BERSERK = 47008, SPELL_BERSERK = 47008,
// HARD MODE // HARD MODE
SPELL_GROUND_TREMOR_FREYA_10 = 62437, SPELL_GROUND_TREMOR_FREYA = 62437,
SPELL_GROUND_TREMOR_FREYA_25 = 62859, SPELL_IRON_ROOTS_FREYA = 62862,
SPELL_IRON_ROOTS_FREYA_10 = 62862, SPELL_IRON_ROOTS_FREYA_DAMAGE = 62861,
SPELL_IRON_ROOTS_FREYA_25 = 62439, SPELL_UNSTABLE_SUN_FREYA_DAMAGE = 62451,
SPELL_IRON_ROOTS_FREYA_DAMAGE_10 = 62861,
SPELL_IRON_ROOTS_FREYA_DAMAGE_25 = 62438,
SPELL_UNSTABLE_SUN_FREYA_DAMAGE_10 = 62451,
SPELL_UNSTABLE_SUN_FREYA_DAMAGE_25 = 62865,
SPELL_UNSTABLE_SUN_VISUAL = 62216, SPELL_UNSTABLE_SUN_VISUAL = 62216,
// ELDERS // ELDERS
@@ -64,86 +56,49 @@ enum FreyaSpells
// BRIGHTLEAF // BRIGHTLEAF
SPELL_BRIGHTLEAF_FLUX = 62239, SPELL_BRIGHTLEAF_FLUX = 62239,
SPELL_SOLAR_FLARE_10 = 62240, SPELL_SOLAR_FLARE = 62240,
SPELL_SOLAR_FLARE_25 = 64087,
SPELL_UNSTABLE_SUN_BEAM_AURA = 62211, SPELL_UNSTABLE_SUN_BEAM_AURA = 62211,
SPELL_PHOTOSYNTHESIS = 62209, SPELL_PHOTOSYNTHESIS = 62209,
SPELL_UNSTABLE_SUN_DAMAGE_10 = 62217, SPELL_UNSTABLE_SUN_DAMAGE = 62217,
SPELL_UNSTABLE_SUN_DAMAGE_25 = 62922,
// IRONBRANCH // IRONBRANCH
SPELL_IMPALE_10 = 62310, SPELL_IMPALE = 62310,
SPELL_IMPALE_25 = 62928, SPELL_IRON_ROOTS = 62275,
SPELL_IRON_ROOTS_10 = 62275, SPELL_IRON_ROOTS_DAMAGE = 62283,
SPELL_IRON_ROOTS_25 = 62929, SPELL_THORN_SWARM = 62285,
SPELL_IRON_ROOTS_DAMAGE_10 = 62283,
SPELL_IRON_ROOTS_DAMAGE_25 = 62930,
SPELL_THORN_SWARM_10 = 62285,
SPELL_THORN_SWARM_25 = 62931,
// STONEBARK // STONEBARK
SPELL_FISTS_OF_STONE = 62344, SPELL_FISTS_OF_STONE = 62344,
SPELL_GROUND_TREMOR_10 = 62325, SPELL_GROUND_TREMOR = 62325,
SPELL_GROUND_TREMOR_25 = 62932, SPELL_PETRIFIED_BARK = 62337,
SPELL_PETRIFIED_BARK_10 = 62337,
SPELL_PETRIFIED_BARK_25 = 62933,
// SNAPLASHER // SNAPLASHER
SPELL_HARDENED_BARK_10 = 62664, SPELL_HARDENED_BARK = 62664,
SPELL_HARDENED_BARK_25 = 64191,
// ANCIENT WATER SPIRIT // ANCIENT WATER SPIRIT
SPELL_TIDAL_WAVE_10 = 62653, SPELL_TIDAL_WAVE = 62653,
SPELL_TIDAL_WAVE_25 = 62935, SPELL_TIDAL_WAVE_DAMAGE = 62654,
SPELL_TIDAL_WAVE_DAMAGE_10 = 62654,
SPELL_TIDAL_WAVE_DAMAGE_25 = 62936,
SPELL_TIDAL_WAVE_AURA = 62655, SPELL_TIDAL_WAVE_AURA = 62655,
// STORM LASHER // STORM LASHER
SPELL_LIGHTNING_LASH_10 = 62648, SPELL_LIGHTNING_LASH = 62648,
SPELL_LIGHTNING_LASH_25 = 62939, SPELL_STORMBOLT = 62649,
SPELL_STORMBOLT_10 = 62649,
SPELL_STORMBOLT_25 = 62938,
// ANCIENT CONSERVATOR // ANCIENT CONSERVATOR
SPELL_CONSERVATOR_GRIP = 62532, SPELL_CONSERVATOR_GRIP = 62532,
SPELL_NATURE_FURY_10 = 62589, SPELL_NATURE_FURY = 62589,
SPELL_NATURE_FURY_25 = 63571,
SPELL_POTENT_PHEROMONES = 62541, SPELL_POTENT_PHEROMONES = 62541,
SPELL_HEALTHY_SPORE_VISUAL = 62538, SPELL_HEALTHY_SPORE_VISUAL = 62538,
SPELL_HEALTHY_SPORE_SUMMON = 62566, SPELL_HEALTHY_SPORE_SUMMON = 62566,
// DETONATING LASHER // DETONATING LASHER
SPELL_DETONATE_10 = 62598, SPELL_DETONATE = 62598,
SPELL_DETONATE_25 = 62937,
SPELL_FLAME_LASH = 62608, SPELL_FLAME_LASH = 62608,
// ACHIEVEMENT // ACHIEVEMENT
SPELL_DEFORESTATION_CREDIT = 65015, SPELL_DEFORESTATION_CREDIT = 65015,
}; };
#define SPELL_GROUND_TREMOR RAID_MODE(SPELL_GROUND_TREMOR_10, SPELL_GROUND_TREMOR_25)
#define SPELL_PETRIFIED_BARK RAID_MODE(SPELL_PETRIFIED_BARK_10, SPELL_PETRIFIED_BARK_25)
#define SPELL_IRON_ROOTS RAID_MODE(SPELL_IRON_ROOTS_10, SPELL_IRON_ROOTS_25)
#define SPELL_IMPALE RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25)
#define SPELL_THORN_SWARM RAID_MODE(SPELL_THORN_SWARM_10, SPELL_THORN_SWARM_25)
#define SPELL_UNSTABLE_SUN_DAMAGE RAID_MODE(SPELL_UNSTABLE_SUN_DAMAGE_10, SPELL_UNSTABLE_SUN_DAMAGE_25)
#define SPELL_SOLAR_FLARE RAID_MODE(SPELL_SOLAR_FLARE_10, SPELL_SOLAR_FLARE_25)
#define SPELL_TOUCH_OF_EONAR RAID_MODE(SPELL_TOUCH_OF_EONAR_10, SPELL_TOUCH_OF_EONAR_25)
#define SPELL_LIFEBINDER_HEAL RAID_MODE(SPELL_LIFEBINDER_HEAL_10, SPELL_LIFEBINDER_HEAL_25)
#define SPELL_TIDAL_WAVE RAID_MODE(SPELL_TIDAL_WAVE_10, SPELL_TIDAL_WAVE_25)
#define SPELL_TIDAL_WAVE_DAMAGE RAID_MODE(SPELL_TIDAL_WAVE_DAMAGE_10, SPELL_TIDAL_WAVE_DAMAGE_25)
#define SPELL_NATURE_FURY RAID_MODE(SPELL_NATURE_FURY_10, SPELL_NATURE_FURY_25)
#define SPELL_HARDENED_BARK RAID_MODE(SPELL_HARDENED_BARK_10, SPELL_HARDENED_BARK_25)
#define SPELL_DETONATE RAID_MODE(SPELL_DETONATE_10, SPELL_DETONATE_25)
//#define SPELL_NATURE_BOMB_DAMAGE RAID_MODE(SPELL_NATURE_BOMB_DAMAGE_10, SPELL_NATURE_BOMB_DAMAGE_25)
#define SPELL_SUNBEAM RAID_MODE(SPELL_SUNBEAM_10, SPELL_SUNBEAM_25)
#define SPELL_GROUND_TREMOR_FREYA RAID_MODE(SPELL_GROUND_TREMOR_FREYA_10, SPELL_GROUND_TREMOR_FREYA_25)
#define SPELL_IRON_ROOTS_FREYA RAID_MODE(SPELL_IRON_ROOTS_FREYA_10, SPELL_IRON_ROOTS_FREYA_25)
#define SPELL_UNSTABLE_SUN_FREYA_DAMAGE RAID_MODE(SPELL_UNSTABLE_SUN_FREYA_DAMAGE_10, SPELL_UNSTABLE_SUN_FREYA_DAMAGE_25)
#define SPELL_LIGHTNING_LASH RAID_MODE(SPELL_LIGHTNING_LASH_10, SPELL_LIGHTNING_LASH_25)
#define SPELL_STORMBOLT RAID_MODE(SPELL_STORMBOLT_10, SPELL_STORMBOLT_25)
enum FreyaEvents enum FreyaEvents
{ {
// FREYA // FREYA
@@ -983,9 +938,9 @@ public:
if (Unit* target = ObjectAccessor::GetUnit(*me, me->ToTempSummon()->GetSummonerGUID())) if (Unit* target = ObjectAccessor::GetUnit(*me, me->ToTempSummon()->GetSummonerGUID()))
{ {
if (me->GetEntry() == NPC_IRON_ROOT_TRIGGER) // Iron Branch spell if (me->GetEntry() == NPC_IRON_ROOT_TRIGGER) // Iron Branch spell
target->RemoveAura(target->GetMap()->Is25ManRaid() ? SPELL_IRON_ROOTS_DAMAGE_25 : SPELL_IRON_ROOTS_DAMAGE_10); target->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_IRON_ROOTS_DAMAGE, me));
else else
target->RemoveAura(target->GetMap()->Is25ManRaid() ? SPELL_IRON_ROOTS_FREYA_DAMAGE_25 : SPELL_IRON_ROOTS_FREYA_DAMAGE_10); target->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_IRON_ROOTS_FREYA_DAMAGE, me));
} }
} }
}; };
@@ -1023,7 +978,7 @@ public:
if (_healTimer >= 12000) if (_healTimer >= 12000)
{ {
me->RemoveAurasDueToSpell(SPELL_AUTO_GROW); me->RemoveAurasDueToSpell(SPELL_AUTO_GROW);
me->CastSpell(me, me->GetMap()->Is25ManRaid() ? SPELL_LIFEBINDER_HEAL_25 : SPELL_LIFEBINDER_HEAL_10, true); me->CastSpell(me, SPELL_LIFEBINDER_HEAL, true);
me->DespawnOrUnsummon(2s); me->DespawnOrUnsummon(2s);
_healTimer = 0; _healTimer = 0;
} }
@@ -1249,7 +1204,7 @@ public:
_explodeTimer += diff; _explodeTimer += diff;
if (_explodeTimer >= 11000) if (_explodeTimer >= 11000)
{ {
me->CastSpell(me, me->GetMap()->Is25ManRaid() ? SPELL_NATURE_BOMB_DAMAGE_25 : SPELL_NATURE_BOMB_DAMAGE_10, false); me->CastSpell(me, SPELL_NATURE_BOMB_DAMAGE, false);
me->DespawnOrUnsummon(1s); me->DespawnOrUnsummon(1s);
_explodeTimer = 0; _explodeTimer = 0;
} }

View File

@@ -58,8 +58,7 @@ enum HodirSpellData
SPELL_ICE_SHARDS_BIG = 65370, SPELL_ICE_SHARDS_BIG = 65370,
SPELL_SNOWDRIFT = 62463, SPELL_SNOWDRIFT = 62463,
SPELL_FROZEN_BLOWS_10 = 62478, SPELL_FROZEN_BLOWS = 62478,
SPELL_FROZEN_BLOWS_25 = 63512,
// Helpers: // Helpers:
SPELL_PRIEST_DISPELL_MAGIC = 63499, SPELL_PRIEST_DISPELL_MAGIC = 63499,
@@ -70,9 +69,8 @@ enum HodirSpellData
SPELL_DRUID_STARLIGHT_AREA_AURA = 62807, SPELL_DRUID_STARLIGHT_AREA_AURA = 62807,
SPELL_SHAMAN_LAVA_BURST = 61924, SPELL_SHAMAN_LAVA_BURST = 61924,
SPELL_SHAMAN_STORM_CLOUD_10 = 65123, SPELL_SHAMAN_STORM_CLOUD = 65123,
SPELL_SHAMAN_STORM_CLOUD_25 = 65133, SPELL_SHAMAN_STORM_POWER = 63711,
SPELL_SHAMAN_STORM_POWER_10 = 63711,
SPELL_SHAMAN_STORM_POWER_25 = 65134, SPELL_SHAMAN_STORM_POWER_25 = 65134,
SPELL_MAGE_FIREBALL = 61909, SPELL_MAGE_FIREBALL = 61909,
@@ -153,9 +151,6 @@ enum HodirText
TEXT_EMOTE_BLOW = 8, TEXT_EMOTE_BLOW = 8,
}; };
#define SPELL_FROZEN_BLOWS RAID_MODE(SPELL_FROZEN_BLOWS_10, SPELL_FROZEN_BLOWS_25)
#define SPELL_SHAMAN_STORM_CLOUD RAID_MODE(SPELL_SHAMAN_STORM_CLOUD_10, SPELL_SHAMAN_STORM_CLOUD_25)
enum HodirSounds enum HodirSounds
{ {
SOUND_HODIR_AGGRO = 15552, SOUND_HODIR_AGGRO = 15552,
@@ -483,7 +478,7 @@ public:
{ {
Talk(TEXT_EMOTE_BLOW); Talk(TEXT_EMOTE_BLOW);
Talk(TEXT_STALACTITE); Talk(TEXT_STALACTITE);
me->CastSpell(me, Is25ManRaid()? SPELL_FROZEN_BLOWS_25 : SPELL_FROZEN_BLOWS_10, true); me->CastSpell(me, SPELL_FROZEN_BLOWS, true);
} }
break; break;
case EVENT_FREEZE: case EVENT_FREEZE:
@@ -1008,8 +1003,9 @@ public:
void SpellHitTarget(Unit* target, SpellInfo const* spell) override void SpellHitTarget(Unit* target, SpellInfo const* spell) override
{ {
if (target && spell->Id == SPELL_SHAMAN_STORM_CLOUD) uint32 spellid = sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_CLOUD, me);
if (Aura* a = target->GetAura(SPELL_SHAMAN_STORM_CLOUD, me->GetGUID())) if (target && spell->Id == spellid)
if (Aura* a = target->GetAura(spellid, me->GetGUID()))
a->SetStackAmount(spell->StackAmount); a->SetStackAmount(spell->StackAmount);
} }
@@ -1044,10 +1040,13 @@ public:
events.Repeat(2600ms); events.Repeat(2600ms);
break; break;
case EVENT_SHAMAN_STORM_CLOUD: case EVENT_SHAMAN_STORM_CLOUD:
if (Player* target = ScriptedAI::SelectTargetFromPlayerList(35.0f, SPELL_SHAMAN_STORM_CLOUD)) {
me->CastSpell(target, SPELL_SHAMAN_STORM_CLOUD, false); uint32 spellid = sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_CLOUD, me);
events.Repeat(30s); if (Player* target = ScriptedAI::SelectTargetFromPlayerList(35.0f, spellid))
break; me->CastSpell(target, spellid, false);
events.Repeat(30s);
break;
}
} }
} }
@@ -1403,7 +1402,7 @@ class spell_hodir_storm_power_aura : public AuraScript
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{ {
if (Unit* caster = GetCaster()) if (Unit* caster = GetCaster())
if (Aura* a = caster->GetAura(GetId() == SPELL_SHAMAN_STORM_POWER_10 ? SPELL_SHAMAN_STORM_CLOUD_10 : SPELL_SHAMAN_STORM_CLOUD_25)) if (Aura* a = caster->GetAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_CLOUD, caster)))
a->ModStackAmount(-1); a->ModStackAmount(-1);
} }
@@ -1427,14 +1426,14 @@ class spell_hodir_storm_cloud_aura : public AuraScript
bool Validate(SpellInfo const* /*spellInfo*/) override bool Validate(SpellInfo const* /*spellInfo*/) override
{ {
return ValidateSpellInfo({ SPELL_SHAMAN_STORM_CLOUD_10, SPELL_SHAMAN_STORM_POWER_10, SPELL_SHAMAN_STORM_POWER_25 }); return ValidateSpellInfo({ SPELL_SHAMAN_STORM_POWER });
} }
void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
{ {
PreventDefaultAction(); PreventDefaultAction();
if (Unit* target = GetTarget()) if (Unit* target = GetTarget())
target->CastSpell((Unit*)nullptr, (GetId() == SPELL_SHAMAN_STORM_CLOUD_10 ? SPELL_SHAMAN_STORM_POWER_10 : SPELL_SHAMAN_STORM_POWER_25), true); target->CastSpell((Unit*)nullptr, (sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_POWER, GetCaster())), true);
} }
void Register() override void Register() override
@@ -1528,7 +1527,7 @@ public:
bool OnCheck(Player* player, Unit* /*target*/, uint32 /*criteria_id*/) override bool OnCheck(Player* player, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
return player && player->HasAllAuras(SPELL_MAGE_TOASTY_FIRE_AURA, SPELL_DRUID_STARLIGHT_AREA_AURA, SPELL_SHAMAN_STORM_POWER_10); return player && player->HasAllAuras(SPELL_MAGE_TOASTY_FIRE_AURA, SPELL_DRUID_STARLIGHT_AREA_AURA, SPELL_SHAMAN_STORM_POWER);
} }
}; };

View File

@@ -26,37 +26,33 @@
#include "SpellScriptLoader.h" #include "SpellScriptLoader.h"
#include "ulduar.h" #include "ulduar.h"
#define SPELL_FLAME_JETS_10 62680 enum IgnisSpellData
#define SPELL_FLAME_JETS_25 63472 {
#define S_FLAME_JETS RAID_MODE(SPELL_FLAME_JETS_10, SPELL_FLAME_JETS_25) SPELL_FLAME_JETS = 62680,
#define SPELL_SCORCH_10 62546 SPELL_SCORCH = 62546,
#define SPELL_SCORCH_25 63474 SPELL_ACTIVATE_CONSTRUCT = 62488,
#define S_SCORCH RAID_MODE(SPELL_SCORCH_10, SPELL_SCORCH_25) SPELL_STRENGTH_OF_THE_CREATOR = 64473,
#define SPELL_ACTIVATE_CONSTRUCT 62488 SPELL_SLAG_POT = 62717,
#define SPELL_STRENGTH_OF_THE_CREATOR 64473 SPELL_BERSERK = 64238,
#define SPELL_SLAG_POT_10 62717 SPELL_GRAB = 62707,
#define SPELL_SLAG_POT_25 63477 SPELL_GRAB_TRIGGERED = 62708,
#define S_SLAG_POT RAID_MODE(SPELL_SLAG_POT_10, SPELL_SLAG_POT_25) SPELL_GRAB_CONTROL_2 = 62711,
#define SPELL_BERSERK 64238
#define SPELL_GRAB 62707
#define SPELL_GRAB_TRIGGERED 62708
#define SPELL_GRAB_CONTROL_2 62711
#define SPELL_SCORCHED_GROUND_10 62548 SPELL_SCORCHED_GROUND = 62548,
#define SPELL_SCORCHED_GROUND_25 63476 SPELL_HEAT_AREA = 62343,
#define S_SCORCHED_GROUND RAID_MODE(SPELL_SCORCHED_GROUND_10, SPELL_SCORCHED_GROUND_25) SPELL_HEAT_BUFF = 65667,
#define SPELL_HEAT_AREA 62343 SPELL_MOLTEN = 62373,
#define SPELL_HEAT_BUFF 65667 SPELL_BRITTLE = 62382,
#define SPELL_MOLTEN 62373 SPELL_SHATTER = 62383,
#define SPELL_BRITTLE_10 62382 };
#define SPELL_BRITTLE_25 67114
#define S_BRITTLE RAID_MODE(SPELL_BRITTLE_10, SPELL_BRITTLE_25)
#define SPELL_SHATTER 62383
#define BOSS_IGNIS 33118 enum IgnisNPCs
#define NPC_IRON_CONSTRUCT 33121 {
#define NPC_SCORCHED_GROUND 33123 BOSS_IGNIS = 33118,
#define NPC_WATER_TRIGGER 22515 NPC_IRON_CONSTRUCT = 33121,
NPC_SCORCHED_GROUND = 33123,
NPC_WATER_TRIGGER = 22515,
};
enum Texts enum Texts
{ {
@@ -147,7 +143,7 @@ public:
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType, SpellSchoolMask) override void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType, SpellSchoolMask) override
{ {
if (damage >= RAID_MODE(3000U, 5000U) && me->GetAura(S_BRITTLE)) if (damage >= RAID_MODE(3000U, 5000U) && me->GetAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_BRITTLE, me)))
{ {
me->CastSpell(me, SPELL_SHATTER, true); me->CastSpell(me, SPELL_SHATTER, true);
Unit::Kill(attacker, me); Unit::Kill(attacker, me);
@@ -177,7 +173,7 @@ public:
if (me->FindNearestCreature(NPC_WATER_TRIGGER, 18.0f, true)) if (me->FindNearestCreature(NPC_WATER_TRIGGER, 18.0f, true))
{ {
me->RemoveAura(a); me->RemoveAura(a);
me->CastSpell(me, S_BRITTLE, true); me->CastSpell(me, SPELL_BRITTLE, true);
} }
} }
else else
@@ -312,7 +308,7 @@ public:
if (caster && spell->Id == SPELL_GRAB_CONTROL_2) if (caster && spell->Id == SPELL_GRAB_CONTROL_2)
{ {
//caster->ClearUnitState(UNIT_STATE_ONVEHICLE); //caster->ClearUnitState(UNIT_STATE_ONVEHICLE);
me->CastSpell(caster, S_SLAG_POT, true); me->CastSpell(caster, SPELL_SLAG_POT, true);
} }
} }
@@ -354,7 +350,7 @@ public:
me->SetControlled(true, UNIT_STATE_ROOT); me->SetControlled(true, UNIT_STATE_ROOT);
me->DisableRotate(true); me->DisableRotate(true);
me->SendMovementFlagUpdate(); me->SendMovementFlagUpdate();
me->CastSpell(me->GetVictim(), S_SCORCH, false); me->CastSpell(me->GetVictim(), SPELL_SCORCH, false);
events.Repeat(20s); events.Repeat(20s);
events.RescheduleEvent(EVENT_ENABLE_ROTATE, 3s); events.RescheduleEvent(EVENT_ENABLE_ROTATE, 3s);
break; break;
@@ -364,7 +360,7 @@ public:
break; break;
case EVENT_SPELL_FLAME_JETS: case EVENT_SPELL_FLAME_JETS:
Talk(EMOTE_JETS); Talk(EMOTE_JETS);
me->CastSpell(me->GetVictim(), S_FLAME_JETS, false); me->CastSpell(me->GetVictim(), SPELL_FLAME_JETS, false);
events.Repeat(25s); events.Repeat(25s);
break; break;
case EVENT_GRAB: case EVENT_GRAB:
@@ -431,7 +427,7 @@ class spell_ignis_scorch_aura : public AuraScript
bool Validate(SpellInfo const* /*spellInfo*/) override bool Validate(SpellInfo const* /*spellInfo*/) override
{ {
return ValidateSpellInfo({ SPELL_SCORCHED_GROUND_10, SPELL_SCORCHED_GROUND_25 }); return ValidateSpellInfo({ SPELL_SCORCHED_GROUND });
} }
void HandleEffectPeriodic(AuraEffect const* aurEff) void HandleEffectPeriodic(AuraEffect const* aurEff)
@@ -441,7 +437,7 @@ class spell_ignis_scorch_aura : public AuraScript
if (Creature* summon = caster->SummonCreature(NPC_SCORCHED_GROUND, caster->GetPositionX() + 20.0f * cos(caster->GetOrientation()), caster->GetPositionY() + 20.0f * std::sin(caster->GetOrientation()), 361.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 30000)) if (Creature* summon = caster->SummonCreature(NPC_SCORCHED_GROUND, caster->GetPositionX() + 20.0f * cos(caster->GetOrientation()), caster->GetPositionY() + 20.0f * std::sin(caster->GetOrientation()), 361.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 30000))
{ {
if (!summon->FindNearestCreature(NPC_WATER_TRIGGER, 25.0f, true)) // must be away from the water if (!summon->FindNearestCreature(NPC_WATER_TRIGGER, 25.0f, true)) // must be away from the water
summon->CastSpell(summon, (aurEff->GetId() == SPELL_SCORCH_10 ? SPELL_SCORCHED_GROUND_10 : SPELL_SCORCHED_GROUND_25), true); summon->CastSpell(summon, SPELL_SCORCHED_GROUND, true);
} }
} }
@@ -474,12 +470,10 @@ class spell_ignis_grab_initial : public SpellScript
enum SlagPot enum SlagPot
{ {
SPELL_SLAG_POT_DAMAGE_1 = 65722, SPELL_SLAG_POT_DAMAGE = 65722,
SPELL_SLAG_POT_DAMAGE_2 = 65723,
SPELL_SCORCH_DAMAGE_1 = 62549, SPELL_SCORCH_DAMAGE_1 = 62549,
SPELL_SCORCH_DAMAGE_2 = 63475, SPELL_SCORCH_DAMAGE_2 = 63475,
SPELL_SLAG_IMBUED_1 = 62836, SPELL_SLAG_IMBUED = 62836,
SPELL_SLAG_IMBUED_2 = 63536
}; };
class spell_ignis_slag_pot_aura : public AuraScript class spell_ignis_slag_pot_aura : public AuraScript
@@ -490,12 +484,10 @@ class spell_ignis_slag_pot_aura : public AuraScript
{ {
return ValidateSpellInfo( return ValidateSpellInfo(
{ {
SPELL_SLAG_POT_DAMAGE_1, SPELL_SLAG_POT_DAMAGE,
SPELL_SLAG_POT_DAMAGE_2,
SPELL_SCORCH_DAMAGE_1, SPELL_SCORCH_DAMAGE_1,
SPELL_SCORCH_DAMAGE_2, SPELL_SCORCH_DAMAGE_2,
SPELL_SLAG_IMBUED_1, SPELL_SLAG_IMBUED
SPELL_SLAG_IMBUED_2
}); });
} }
@@ -503,7 +495,7 @@ class spell_ignis_slag_pot_aura : public AuraScript
{ {
if (Unit* caster = GetCaster()) if (Unit* caster = GetCaster())
if (Unit* target = GetTarget()) if (Unit* target = GetTarget())
caster->CastSpell(target, (GetId() == SPELL_SLAG_POT_10 ? SPELL_SLAG_POT_DAMAGE_1 : SPELL_SLAG_POT_DAMAGE_2), true); caster->CastSpell(target, SPELL_SLAG_POT_DAMAGE, true);
} }
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -522,7 +514,7 @@ class spell_ignis_slag_pot_aura : public AuraScript
target->ApplySpellImmune(GetId(), IMMUNITY_ID, SPELL_SCORCH_DAMAGE_1, false); target->ApplySpellImmune(GetId(), IMMUNITY_ID, SPELL_SCORCH_DAMAGE_1, false);
target->ApplySpellImmune(GetId(), IMMUNITY_ID, SPELL_SCORCH_DAMAGE_2, false); target->ApplySpellImmune(GetId(), IMMUNITY_ID, SPELL_SCORCH_DAMAGE_2, false);
if (target->IsAlive()) if (target->IsAlive())
target->CastSpell(target, (GetId() == SPELL_SLAG_POT_10 ? SPELL_SLAG_IMBUED_1 : SPELL_SLAG_IMBUED_2), true); target->CastSpell(target, SPELL_SLAG_IMBUED, true);
} }
} }

View File

@@ -45,56 +45,33 @@ enum KologarnSpells
SPELL_KOLOGARN_REDUCE_PARRY = 64651, SPELL_KOLOGARN_REDUCE_PARRY = 64651,
// BASIC // BASIC
SPELL_OVERHEAD_SMASH_10 = 63356, SPELL_OVERHEAD_SMASH = 63356,
SPELL_OVERHEAD_SMASH_25 = 64003, SPELL_ONEARMED_OVERHEAD_SMASH = 63573,
SPELL_ONEARMED_OVERHEAD_SMASH_10 = 63573, SPELL_PETRIFYING_BREATH = 62030,
SPELL_ONEARMED_OVERHEAD_SMASH_25 = 64006, SPELL_STONE_SHOUT = 63716,
SPELL_PETRIFYING_BREATH_10 = 62030,
SPELL_PETRIFYING_BREATH_25 = 63980,
SPELL_STONE_SHOUT_10 = 63716,
SPELL_STONE_SHOUT_25 = 64005,
// EYEBEAM // EYEBEAM
SPELL_FOCUSED_EYEBEAM_SUMMON = 63342, SPELL_FOCUSED_EYEBEAM_SUMMON = 63342,
SPELL_FOCUSED_EYEBEAM_10 = 63347, SPELL_FOCUSED_EYEBEAM = 63347,
SPELL_FOCUSED_EYEBEAM_25 = 63977,
SPELL_FOCUSED_EYEBEAM_RIGHT = 63702, SPELL_FOCUSED_EYEBEAM_RIGHT = 63702,
SPELL_FOCUSED_EYEBEAM_LEFT = 63676, SPELL_FOCUSED_EYEBEAM_LEFT = 63676,
// ARMS // ARMS
SPELL_ARM_DEAD_10 = 63629, SPELL_ARM_DEAD = 63629,
SPELL_ARM_DEAD_25 = 63979, SPELL_RUBBLE_FALL = 63821,
SPELL_RUBBLE_FALL_10 = 63821,
SPELL_RUBBLE_FALL_25 = 64001,
SPELL_ARM_RESPAWN_VISUAL = 64753, SPELL_ARM_RESPAWN_VISUAL = 64753,
// LEFT ARM // LEFT ARM
SPELL_ARM_SWEEP_10 = 63766, SPELL_ARM_SWEEP = 63766,
SPELL_ARM_SWEEP_25 = 63983,
// RIGHT ARM // RIGHT ARM
SPELL_STONE_GRIP_10 = 62166, SPELL_STONE_GRIP = 62166,
SPELL_STONE_GRIP_25 = 63981, SPELL_RIDE_RIGHT_ARM = 62056,
SPELL_RIDE_RIGHT_ARM_10 = 62056,
SPELL_RIDE_RIGHT_ARM_25 = 63985,
// RUBBLE TRASH // RUBBLE TRASH
SPELL_RUBBLE_ATTACK_10 = 63818, SPELL_RUBBLE_ATTACK = 63818,
SPELL_RUBBLE_ATTACK_25 = 63978,
}; };
#define SPELL_PETRIFYING_BREATH RAID_MODE(SPELL_PETRIFYING_BREATH_10, SPELL_PETRIFYING_BREATH_25)
#define SPELL_OVERHEAD_SMASH RAID_MODE(SPELL_OVERHEAD_SMASH_10, SPELL_OVERHEAD_SMASH_25)
#define SPELL_ONEARMED_OVERHEAD_SMASH RAID_MODE(SPELL_ONEARMED_OVERHEAD_SMASH_10, SPELL_ONEARMED_OVERHEAD_SMASH_25)
#define SPELL_ARM_DEAD RAID_MODE(SPELL_ARM_DEAD_10, SPELL_ARM_DEAD_25)
#define SPELL_ARM_SWEEP RAID_MODE(SPELL_ARM_SWEEP_10, SPELL_ARM_SWEEP_25)
#define SPELL_STONE_GRIP RAID_MODE(SPELL_STONE_GRIP_10, SPELL_STONE_GRIP_25)
#define SPELL_FOCUSED_EYEBEAM RAID_MODE(SPELL_FOCUSED_EYEBEAM_10, SPELL_FOCUSED_EYEBEAM_25)
#define SPELL_RUBBLE_FALL RAID_MODE(SPELL_RUBBLE_FALL_10, SPELL_RUBBLE_FALL_25)
#define SPELL_RUBBLE_ATTACK RAID_MODE(SPELL_RUBBLE_ATTACK_10, SPELL_RUBBLE_ATTACK_25)
#define SPELL_RIDE_RIGHT_ARM RAID_MODE(SPELL_RIDE_RIGHT_ARM_10, SPELL_RIDE_RIGHT_ARM_25)
#define SPELL_STONE_SHOUT RAID_MODE(SPELL_STONE_SHOUT_10, SPELL_STONE_SHOUT_25)
enum KologarnEvents enum KologarnEvents
{ {
EVENT_SMASH = 1, EVENT_SMASH = 1,
@@ -796,9 +773,7 @@ class spell_ulduar_stone_grip_cast_target : public SpellScript
// Remove "main tank" and non-player targets // Remove "main tank" and non-player targets
targets.remove_if(StoneGripTargetSelector(GetCaster()->ToCreature(), GetCaster()->GetVictim())); targets.remove_if(StoneGripTargetSelector(GetCaster()->ToCreature(), GetCaster()->GetVictim()));
// Maximum affected targets per difficulty mode // Maximum affected targets per difficulty mode
uint32 maxTargets = 1; uint32 maxTargets = GetSpellInfo()->Id == SPELL_STONE_GRIP ? 1 : 3;
if (GetSpellInfo()->Id == SPELL_STONE_GRIP_25)
maxTargets = 3;
// Return a random amount of targets based on maxTargets // Return a random amount of targets based on maxTargets
while (maxTargets < targets.size()) while (maxTargets < targets.size())
@@ -850,6 +825,7 @@ class spell_ulduar_squeezed_lifeless : public SpellScript
} }
}; };
// 63720, 64004
class spell_kologarn_stone_shout : public SpellScript class spell_kologarn_stone_shout : public SpellScript
{ {
PrepareSpellScript(spell_kologarn_stone_shout); PrepareSpellScript(spell_kologarn_stone_shout);
@@ -861,7 +837,6 @@ class spell_kologarn_stone_shout : public SpellScript
void Register() override void Register() override
{ {
if (m_scriptSpellId != SPELL_STONE_SHOUT_10 && m_scriptSpellId != SPELL_STONE_SHOUT_25)
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_kologarn_stone_shout::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_kologarn_stone_shout::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
} }
}; };
@@ -879,7 +854,6 @@ class spell_kologarn_stone_shout_aura : public AuraScript
void Register() override void Register() override
{ {
if (m_scriptSpellId == SPELL_STONE_SHOUT_10 || m_scriptSpellId == SPELL_STONE_SHOUT_25)
OnEffectPeriodic += AuraEffectPeriodicFn(spell_kologarn_stone_shout_aura::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); OnEffectPeriodic += AuraEffectPeriodicFn(spell_kologarn_stone_shout_aura::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
} }
}; };
@@ -945,7 +919,8 @@ void AddSC_boss_kologarn()
RegisterSpellScript(spell_ulduar_stone_grip_aura); RegisterSpellScript(spell_ulduar_stone_grip_aura);
RegisterSpellScript(spell_ulduar_squeezed_lifeless); RegisterSpellScript(spell_ulduar_squeezed_lifeless);
RegisterSpellScript(spell_kologarn_focused_eyebeam); RegisterSpellScript(spell_kologarn_focused_eyebeam);
RegisterSpellAndAuraScriptPair(spell_kologarn_stone_shout, spell_kologarn_stone_shout_aura); RegisterSpellScript(spell_kologarn_stone_shout);
RegisterSpellScript(spell_kologarn_stone_shout_aura);
// Achievements // Achievements
new achievement_kologarn_looks_could_kill(); new achievement_kologarn_looks_could_kill();

View File

@@ -23,6 +23,7 @@
#include "PassiveAI.h" #include "PassiveAI.h"
#include "Player.h" #include "Player.h"
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "SharedDefines.h"
#include "Spell.h" #include "Spell.h"
#include "SpellAuraEffects.h" #include "SpellAuraEffects.h"
#include "SpellScript.h" #include "SpellScript.h"
@@ -35,18 +36,15 @@ enum SpellData
SPELL_BERSERK = 64238, SPELL_BERSERK = 64238,
// PHASE 1: // PHASE 1:
SPELL_NAPALM_SHELL_25 = 65026, SPELL_NAPALM_SHELL = 63666,
SPELL_NAPALM_SHELL_10 = 63666,
SPELL_PLASMA_BLAST_25 = 64529, SPELL_PLASMA_BLAST = 62997,
SPELL_PLASMA_BLAST_10 = 62997,
SPELL_SHOCK_BLAST = 63631, SPELL_SHOCK_BLAST = 63631,
SPELL_PROXIMITY_MINES = 63027, SPELL_PROXIMITY_MINES = 63027,
NPC_PROXIMITY_MINE = 34362, NPC_PROXIMITY_MINE = 34362,
SPELL_MINE_EXPLOSION_25 = 63009, SPELL_MINE_EXPLOSION = 66351,
SPELL_MINE_EXPLOSION_10 = 66351,
SPELL_SUMMON_PROXIMITY_MINE = 65347, SPELL_SUMMON_PROXIMITY_MINE = 65347,
// PHASE 2: // PHASE 2:
@@ -57,17 +55,14 @@ enum SpellData
NPC_ROCKET_STRIKE_N = 34047, NPC_ROCKET_STRIKE_N = 34047,
SPELL_RAPID_BURST = 63382, SPELL_RAPID_BURST = 63382,
SPELL_RAPID_BURST_DAMAGE_25_1 = 64531, SPELL_RAPID_BURST_DAMAGE_1 = 63387,
SPELL_RAPID_BURST_DAMAGE_25_2 = 64532, SPELL_RAPID_BURST_DAMAGE_2 = 64019,
SPELL_RAPID_BURST_DAMAGE_10_1 = 63387,
SPELL_RAPID_BURST_DAMAGE_10_2 = 64019,
SPELL_SUMMON_BURST_TARGET = 64840, SPELL_SUMMON_BURST_TARGET = 64840,
SPELL_SPINNING_UP = 63414, SPELL_SPINNING_UP = 63414,
// PHASE 3: // PHASE 3:
SPELL_PLASMA_BALL_25 = 64535, SPELL_PLASMA_BALL = 63689,
SPELL_PLASMA_BALL_10 = 63689,
SPELL_MAGNETIC_CORE = 64436, SPELL_MAGNETIC_CORE = 64436,
SPELL_SPINNING = 64438, SPELL_SPINNING = 64438,
@@ -80,10 +75,8 @@ enum SpellData
SPELL_BEAM_BLUE = 63294, SPELL_BEAM_BLUE = 63294,
// PHASE 4: // PHASE 4:
SPELL_HAND_PULSE_10_R = 64352, SPELL_HAND_PULSE_R = 64352,
SPELL_HAND_PULSE_25_R = 64537, SPELL_HAND_PULSE_L = 64348,
SPELL_HAND_PULSE_10_L = 64348,
SPELL_HAND_PULSE_25_L = 64536,
SPELL_SELF_REPAIR = 64383, SPELL_SELF_REPAIR = 64383,
SPELL_SLEEP_VISUAL_1 = 64393, SPELL_SLEEP_VISUAL_1 = 64393,
@@ -219,14 +212,6 @@ enum EVENTS
EVENT_EMERGENCY_BOT_ATTACK = 70, EVENT_EMERGENCY_BOT_ATTACK = 70,
}; };
#define SPELL_NAPALM_SHELL RAID_MODE(SPELL_NAPALM_SHELL_10, SPELL_NAPALM_SHELL_25)
#define SPELL_PLASMA_BLAST RAID_MODE(SPELL_PLASMA_BLAST_10, SPELL_PLASMA_BLAST_25)
#define SPELL_MINE_EXPLOSION RAID_MODE(SPELL_MINE_EXPLOSION_10, SPELL_MINE_EXPLOSION_25)
#define SPELL_PLASMA_BALL RAID_MODE(SPELL_PLASMA_BALL_10, SPELL_PLASMA_BALL_25)
#define SPELL_HAND_PULSE_R RAID_MODE(SPELL_HAND_PULSE_10_R, SPELL_HAND_PULSE_25_R)
#define SPELL_HAND_PULSE_L RAID_MODE(SPELL_HAND_PULSE_10_L, SPELL_HAND_PULSE_25_L)
#define SPELL_FROST_BOMB_EXPLOSION RAID_MODE(SPELL_FROST_BOMB_EXPLOSION_10, SPELL_FROST_BOMB_EXPLOSION_25)
enum Texts enum Texts
{ {
// Mimiron // Mimiron
@@ -1889,14 +1874,6 @@ public:
void MoveInLineOfSight(Unit* /*who*/) override {} void MoveInLineOfSight(Unit* /*who*/) override {}
bool CanAIAttack(Unit const* /*target*/) const override { return false; } bool CanAIAttack(Unit const* /*target*/) const override { return false; }
void SpellHitTarget(Unit* target, SpellInfo const* spell) override
{
if (target && spell && target->IsPlayer() && spell->Id == SPELL_MINE_EXPLOSION)
if (InstanceScript* pInstance = me->GetInstanceScript())
if (Creature* c = GetMimiron())
c->AI()->SetData(0, 11);
}
// MoveInLineOfSight is checked every few yards, can't use it // MoveInLineOfSight is checked every few yards, can't use it
void UpdateAI(uint32 diff) override void UpdateAI(uint32 diff) override
{ {
@@ -1927,6 +1904,24 @@ public:
}; };
}; };
class spell_ulduar_mimiron_mine_explosion : public SpellScript
{
PrepareSpellScript(spell_ulduar_mimiron_mine_explosion);
void HandleDamage(SpellEffIndex /*effIndex*/)
{
if (GetHitPlayer())
if (InstanceScript* pInstance = GetCaster()->GetInstanceScript())
if (Creature* mimi = pInstance->GetCreature(TYPE_MIMIRON))
mimi->AI()->SetData(0, 11);
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_ulduar_mimiron_mine_explosion::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
class npc_ulduar_mimiron_rocket : public CreatureScript class npc_ulduar_mimiron_rocket : public CreatureScript
{ {
public: public:
@@ -2094,10 +2089,8 @@ class spell_mimiron_rapid_burst_aura : public AuraScript
{ {
return ValidateSpellInfo( return ValidateSpellInfo(
{ {
SPELL_RAPID_BURST_DAMAGE_10_1, SPELL_RAPID_BURST_DAMAGE_1,
SPELL_RAPID_BURST_DAMAGE_10_2, SPELL_RAPID_BURST_DAMAGE_2,
SPELL_RAPID_BURST_DAMAGE_25_1,
SPELL_RAPID_BURST_DAMAGE_25_2
}); });
} }
@@ -2105,7 +2098,7 @@ class spell_mimiron_rapid_burst_aura : public AuraScript
{ {
if (Unit* caster = GetCaster()) if (Unit* caster = GetCaster())
{ {
uint32 id = (caster->GetMap()->Is25ManRaid() ? ((aurEff->GetTickNumber() % 2) ? SPELL_RAPID_BURST_DAMAGE_25_2 : SPELL_RAPID_BURST_DAMAGE_25_1) : ((aurEff->GetTickNumber() % 2) ? SPELL_RAPID_BURST_DAMAGE_10_2 : SPELL_RAPID_BURST_DAMAGE_10_1)); uint32 id = (aurEff->GetTickNumber() % 2) ? SPELL_RAPID_BURST_DAMAGE_2 : SPELL_RAPID_BURST_DAMAGE_1;
caster->CastSpell((Unit*)nullptr, id, true); caster->CastSpell((Unit*)nullptr, id, true);
} }
} }
@@ -2498,6 +2491,7 @@ void AddSC_boss_mimiron()
new npc_ulduar_bot_summon_trigger(); new npc_ulduar_bot_summon_trigger();
RegisterSpellScript(spell_mimiron_rapid_burst_aura); RegisterSpellScript(spell_mimiron_rapid_burst_aura);
RegisterSpellScript(spell_mimiron_p3wx2_laser_barrage_aura); RegisterSpellScript(spell_mimiron_p3wx2_laser_barrage_aura);
RegisterSpellScript(spell_ulduar_mimiron_mine_explosion);
new go_ulduar_do_not_push_this_button(); new go_ulduar_do_not_push_this_button();
new npc_ulduar_flames_initial(); new npc_ulduar_flames_initial();
new npc_ulduar_flames_spread(); new npc_ulduar_flames_spread();

View File

@@ -30,12 +30,10 @@
enum Spells enum Spells
{ {
// Razorscale // Razorscale
SPELL_FLAMEBUFFET_10 = 64016, SPELL_FLAMEBUFFET = 64016,
SPELL_FLAMEBUFFET_25 = 64023,
SPELL_FIREBALL = 63815, SPELL_FIREBALL = 63815,
SPELL_WINGBUFFET = 62666, SPELL_WINGBUFFET = 62666,
SPELL_FLAMEBREATH_10 = 63317, SPELL_FLAMEBREATH = 63317,
SPELL_FLAMEBREATH_25 = 64021,
SPELL_FUSEARMOR = 64771, SPELL_FUSEARMOR = 64771,
SPELL_FUSED_ARMOR = 64774, // Applied on 5th stack of SPELL_FUSEARMOR SPELL_FUSED_ARMOR = 64774, // Applied on 5th stack of SPELL_FUSEARMOR
SPELL_DEVOURINGFLAME = 63236, SPELL_DEVOURINGFLAME = 63236,
@@ -50,25 +48,17 @@ enum Spells
// Dark Rune Sentinel // Dark Rune Sentinel
SPELL_WHIRLWIND = 63808, SPELL_WHIRLWIND = 63808,
SPELL_BATTLE_SHOUT_10 = 46763, SPELL_BATTLE_SHOUT = 46763,
SPELL_BATTLE_SHOUT_25 = 64062,
// Dark Rune Guardian // Dark Rune Guardian
SPELL_STORMSTRIKE_DMG = 65971, SPELL_STORMSTRIKE_DMG = 65971,
SPELL_STORMSTRIKE_DEBUFF = 64757, SPELL_STORMSTRIKE_DEBUFF = 64757,
// Dark Rune Watcher // Dark Rune Watcher
SPELL_LIGHTINGBOLT_10 = 63809, SPELL_LIGHTINGBOLT = 63809,
SPELL_LIGHTINGBOLT_25 = 64696, SPELL_CHAINLIGHTNING = 64758,
SPELL_CHAINLIGHTNING_10 = 64758,
SPELL_CHAINLIGHTNING_25 = 64759,
}; };
#define SPELL_FLAMEBUFFET RAID_MODE(SPELL_FLAMEBUFFET_10, SPELL_FLAMEBUFFET_25)
#define SPELL_FLAMEBREATH RAID_MODE(SPELL_FLAMEBREATH_10, SPELL_FLAMEBREATH_25)
#define SPELL_BATTLE_SHOUT RAID_MODE(SPELL_BATTLE_SHOUT_10, SPELL_BATTLE_SHOUT_25)
#define SPELL_LIGHTINGBOLT RAID_MODE(SPELL_LIGHTINGBOLT_10, SPELL_LIGHTINGBOLT_25)
#define SPELL_CHAINLIGHTNING RAID_MODE(SPELL_CHAINLIGHTNING_10, SPELL_CHAINLIGHTNING_25)
#define REQ_CHAIN_COUNT RAID_MODE(2, 4) #define REQ_CHAIN_COUNT RAID_MODE(2, 4)
enum NPCs enum NPCs

View File

@@ -23,6 +23,7 @@
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "ScriptedEscortAI.h" #include "ScriptedEscortAI.h"
#include "SpellAuraEffects.h" #include "SpellAuraEffects.h"
#include "SpellMgr.h"
#include "SpellScript.h" #include "SpellScript.h"
#include "SpellScriptLoader.h" #include "SpellScriptLoader.h"
#include "ulduar.h" #include "ulduar.h"
@@ -34,8 +35,7 @@ enum ThorimSpells
SPELL_SHEATH_OF_LIGHTNING = 62276, SPELL_SHEATH_OF_LIGHTNING = 62276,
SPELL_STORMHAMMER = 62042, SPELL_STORMHAMMER = 62042,
SPELL_BERSERK_FRIENDS = 62560, SPELL_BERSERK_FRIENDS = 62560,
SPELL_CHAIN_LIGHTNING_10 = 62131, SPELL_CHAIN_LIGHTNING = 62131,
SPELL_CHAIN_LIGHTNING_25 = 64390,
SPELL_UNBALANCING_STRIKE = 62130, SPELL_UNBALANCING_STRIKE = 62130,
SPELL_BERSERK = 26662, SPELL_BERSERK = 26662,
@@ -54,17 +54,13 @@ enum ThorimSpells
SPELL_SIF_CHANNEL_HOLOGRAM = 64324, SPELL_SIF_CHANNEL_HOLOGRAM = 64324,
SPELL_FROSTBOLT = 62601, SPELL_FROSTBOLT = 62601,
SPELL_FROSTBOLT_VALLEY = 62604, SPELL_FROSTBOLT_VALLEY = 62604,
SPELL_BLIZZARD_10 = 62577, SPELL_BLIZZARD = 62577,
SPELL_BLIZZARD_25 = 62603,
SPELL_FROST_NOVA = 62605, SPELL_FROST_NOVA = 62605,
// DARK RUNE ACOLYTE // DARK RUNE ACOLYTE
SPELL_GREATER_HEAL_10 = 62334, SPELL_GREATER_HEAL = 62334,
SPELL_GREATER_HEAL_25 = 62442, SPELL_HOLY_SMITE = 62335,
SPELL_HOLY_SMITE_10 = 62335, SPELL_RENEW = 62333,
SPELL_HOLY_SMITE_25 = 62443,
SPELL_RENEW_10 = 62333,
SPELL_RENEW_25 = 62441,
// CAPTURED MERCENARY SOLDIER // CAPTURED MERCENARY SOLDIER
SPELL_BARBED_SHOT = 62318, SPELL_BARBED_SHOT = 62318,
@@ -76,19 +72,15 @@ enum ThorimSpells
SPELL_HEROIC_STRIKE = 62444, SPELL_HEROIC_STRIKE = 62444,
// JORMUNGAR BEHEMOTH // JORMUNGAR BEHEMOTH
SPELL_ACID_BREATH_10 = 62315, SPELL_ACID_BREATH = 62315,
SPELL_ACID_BREATH_25 = 62415, SPELL_SWEEP = 62316,
SPELL_SWEEP_10 = 62316,
SPELL_SWEEP_25 = 62417,
// IRON RING GUARD // IRON RING GUARD
SPELL_IMPALE_10 = 62331, SPELL_IMPALE = 62331,
SPELL_IMPALE_25 = 62418,
SPELL_WHIRLING_TRIP = 64151, SPELL_WHIRLING_TRIP = 64151,
// IRON HONOR GUARD // IRON HONOR GUARD
SPELL_SHIELD_SMASH_10 = 62332, SPELL_SHIELD_SMASH = 62332,
SPELL_SHIELD_SMASH_25 = 62420,
SPELL_CLEAVE = 42724, SPELL_CLEAVE = 42724,
SPELL_HAMSTRING = 48639, SPELL_HAMSTRING = 48639,
@@ -97,12 +89,9 @@ enum ThorimSpells
SPELL_RUNIC_STRIKE = 62322, SPELL_RUNIC_STRIKE = 62322,
// DARK RUNE EVOKER // DARK RUNE EVOKER
SPELL_RUNIC_LIGHTNING_10 = 62327, SPELL_RUNIC_LIGHTNING = 62327,
SPELL_RUNIC_LIGHTNING_25 = 62445, SPELL_RUNIC_MENDING = 62328,
SPELL_RUNIC_MENDING_10 = 62328, SPELL_RUNIC_SHIELD = 62321,
SPELL_RUNIC_MENDING_25 = 62446,
SPELL_RUNIC_SHIELD_10 = 62321,
SPELL_RUNIC_SHIELD_25 = 62529,
// DARK RUNE CHAMPION // DARK RUNE CHAMPION
SPELL_CHARGE = 32323, SPELL_CHARGE = 32323,
@@ -114,8 +103,7 @@ enum ThorimSpells
SPELL_PUMMEL = 38313, SPELL_PUMMEL = 38313,
// RUNIC COLOSSUS // RUNIC COLOSSUS
SPELL_COLOSSUS_CHARGE_10 = 62613, SPELL_COLOSSUS_CHARGE = 62613,
SPELL_COLOSSUS_CHARGE_25 = 62614,
SPELL_RUNIC_BARRIER = 62338, SPELL_RUNIC_BARRIER = 62338,
SPELL_SMASH = 62339, SPELL_SMASH = 62339,
SPELL_RUNIC_SMASH_LEFT = 62057, SPELL_RUNIC_SMASH_LEFT = 62057,
@@ -125,8 +113,7 @@ enum ThorimSpells
// ANCIENT RUNE GIANT // ANCIENT RUNE GIANT
SPELL_RUNE_DETONATION = 62526, SPELL_RUNE_DETONATION = 62526,
SPELL_RUNIC_FORTIFICATION = 62942, SPELL_RUNIC_FORTIFICATION = 62942,
SPELL_STOMP_10 = 62411, SPELL_STOMP = 62411,
SPELL_STOMP_25 = 62413,
// TRAPS // TRAPS
SPELL_LIGHTNING_FIELD = 64972, SPELL_LIGHTNING_FIELD = 64972,
@@ -134,20 +121,6 @@ enum ThorimSpells
SPELL_PARALYTIC_FIELD_SECOND = 63540, SPELL_PARALYTIC_FIELD_SECOND = 63540,
}; };
#define SPELL_GREATER_HEAL RAID_MODE(SPELL_GREATER_HEAL_10, SPELL_GREATER_HEAL_25)
#define SPELL_HOLY_SMITE RAID_MODE(SPELL_HOLY_SMITE_10, SPELL_HOLY_SMITE_25)
#define SPELL_RENEW RAID_MODE(SPELL_RENEW_10, SPELL_RENEW_25)
#define SPELL_ACID_BREATH RAID_MODE(SPELL_ACID_BREATH_10, SPELL_ACID_BREATH_25)
#define SPELL_SWEEP RAID_MODE(SPELL_SWEEP_10, SPELL_SWEEP_25)
#define SPELL_IMPALE RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25)
#define SPELL_COLOSSUS_CHARGE RAID_MODE(SPELL_COLOSSUS_CHARGE_10, SPELL_COLOSSUS_CHARGE_25)
#define SPELL_STOMP RAID_MODE(SPELL_STOMP_10, SPELL_STOMP_25)
#define SPELL_SHIELD_SMASH RAID_MODE(SPELL_SHIELD_SMASH_10, SPELL_SHIELD_SMASH_25)
#define SPELL_RUNIC_LIGHTNING RAID_MODE(SPELL_RUNIC_LIGHTNING_10, SPELL_RUNIC_LIGHTNING_25)
#define SPELL_RUNIC_MENDING RAID_MODE(SPELL_RUNIC_MENDING_10, SPELL_RUNIC_MENDING_25)
#define SPELL_RUNIC_SHIELD RAID_MODE(SPELL_RUNIC_SHIELD_10, SPELL_RUNIC_SHIELD_25)
#define SPELL_CHAIN_LIGHTNING RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25)
enum ThormNPCandGOs : uint32 enum ThormNPCandGOs : uint32
{ {
// ARENA INIT // ARENA INIT
@@ -1044,7 +1017,7 @@ public:
{ {
me->SetSpeed(MOVE_RUN, 1); me->SetSpeed(MOVE_RUN, 1);
me->SetSpeed(MOVE_WALK, 1); me->SetSpeed(MOVE_WALK, 1);
me->CastSpell(me, RAID_MODE(SPELL_BLIZZARD_10, SPELL_BLIZZARD_25), true); me->CastSpell(me, SPELL_BLIZZARD, true);
} }
void WaypointReached(uint32 /*point*/) override void WaypointReached(uint32 /*point*/) override
@@ -1206,7 +1179,7 @@ public:
events.Repeat(1600ms); events.Repeat(1600ms);
break; break;
case EVENT_DR_ACOLYTE_R: case EVENT_DR_ACOLYTE_R:
if (HealthBelowPct(75) && !me->HasAura(SPELL_RENEW)) if (HealthBelowPct(75) && !me->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_RENEW, me)))
me->CastSpell(me, SPELL_GREATER_HEAL, false); me->CastSpell(me, SPELL_GREATER_HEAL, false);
else if (Unit* target = DoSelectLowestHpFriendly(60.0f, 10)) else if (Unit* target = DoSelectLowestHpFriendly(60.0f, 10))
me->CastSpell(target, SPELL_RENEW, false); me->CastSpell(target, SPELL_RENEW, false);
@@ -1331,7 +1304,7 @@ public:
events.Repeat(1600ms); events.Repeat(1600ms);
break; break;
case EVENT_DR_ACOLYTE_R: case EVENT_DR_ACOLYTE_R:
if (HealthBelowPct(75) && !me->HasAura(SPELL_RENEW)) if (HealthBelowPct(75) && !me->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_RENEW, me)))
me->CastSpell(me, SPELL_GREATER_HEAL, false); me->CastSpell(me, SPELL_GREATER_HEAL, false);
else if (Unit* target = DoSelectLowestHpFriendly(60.0f, 10)) else if (Unit* target = DoSelectLowestHpFriendly(60.0f, 10))
me->CastSpell(target, SPELL_RENEW, false); me->CastSpell(target, SPELL_RENEW, false);

View File

@@ -30,10 +30,8 @@
enum XT002Spells enum XT002Spells
{ {
// BASIC // BASIC
SPELL_GRAVITY_BOMB_10 = 63024, SPELL_GRAVITY_BOMB = 63024,
SPELL_GRAVITY_BOMB_25 = 64234, SPELL_SEARING_LIGHT = 63018,
SPELL_SEARING_LIGHT_10 = 63018,
SPELL_SEARING_LIGHT_25 = 65121,
SPELL_TYMPANIC_TANTARUM = 62776, SPELL_TYMPANIC_TANTARUM = 62776,
SPELL_XT002_ENRAGE = 26662, SPELL_XT002_ENRAGE = 26662,
@@ -48,27 +46,18 @@ enum XT002Spells
SPELL_EXPOSED_HEART = 63849, SPELL_EXPOSED_HEART = 63849,
SPELL_ENERGY_ORB = 62790, SPELL_ENERGY_ORB = 62790,
SPELL_ENERGY_ORB_TRIGGER = 62826, SPELL_ENERGY_ORB_TRIGGER = 62826,
SPELL_HEARTBREAK_10 = 65737, SPELL_HEARTBREAK = 65737,
SPELL_HEARTBREAK_25 = 64193,
// VOID ZONE // VOID ZONE
SPELL_VOID_ZONE_SUMMON_10 = 64203, SPELL_VOID_ZONE_SUMMON = 64203,
SPELL_VOID_ZONE_SUMMON_25 = 64235,
//SPELL_VOID_ZONE_SUMMON = RAID_MODE(SPELL_VOID_ZONE_SUMMON_10, SPELL_VOID_ZONE_SUMMON_25, SPELL_VOID_ZONE_SUMMON_10, SPELL_VOID_ZONE_SUMMON_25),
SPELL_VOID_ZONE_DAMAGE = 46262, SPELL_VOID_ZONE_DAMAGE = 46262,
// SPARK // SPARK
SPELL_SPARK_SUMMON = 64210, SPELL_SPARK_SUMMON = 64210,
SPELL_SPARK_DAMAGE_10 = 64227, SPELL_SPARK_DAMAGE = 64227,
SPELL_SPARK_DAMAGE_25 = 64236,
SPELL_SPARK_MELEE = 64230, SPELL_SPARK_MELEE = 64230,
}; };
#define SPELL_GRAVITY_BOMB RAID_MODE(SPELL_GRAVITY_BOMB_10, SPELL_GRAVITY_BOMB_25)
#define SPELL_SEARING_LIGHT RAID_MODE(SPELL_SEARING_LIGHT_10, SPELL_SEARING_LIGHT_25)
#define SPELL_HEARTBREAK RAID_MODE(SPELL_HEARTBREAK_10, SPELL_HEARTBREAK_25)
#define SPELL_SPARK_DAMAGE RAID_MODE(SPELL_SPARK_DAMAGE_10, SPELL_SPARK_DAMAGE_25)
enum XT002Events enum XT002Events
{ {
EVENT_HEALTH_CHECK = 1, EVENT_HEALTH_CHECK = 1,

View File

@@ -24,6 +24,7 @@
#include "ScriptedCreature.h" #include "ScriptedCreature.h"
#include "ScriptedEscortAI.h" #include "ScriptedEscortAI.h"
#include "SpellAuras.h" #include "SpellAuras.h"
#include "SpellMgr.h"
#include "SpellScript.h" #include "SpellScript.h"
#include "SpellScriptLoader.h" #include "SpellScriptLoader.h"
#include "ulduar.h" #include "ulduar.h"
@@ -102,8 +103,7 @@ enum YoggSpells
// CONSTRICTOR TENTACLE // CONSTRICTOR TENTACLE
SPELL_LUNGE = 64123, SPELL_LUNGE = 64123,
SPELL_SQUEEZE_10 = 64125, SPELL_SQUEEZE = 64125,
SPELL_SQUEEZE_25 = 64126,
// CORRUPTOR TENTACLE // CORRUPTOR TENTACLE
SPELL_APATHY = 64156, SPELL_APATHY = 64156,
@@ -142,15 +142,10 @@ enum YoggSpells
SPELL_SIMPLE_TELEPORT = 64195, SPELL_SIMPLE_TELEPORT = 64195,
SPELL_EMPOWERED = 65294, SPELL_EMPOWERED = 65294,
SPELL_EMPOWERED_PASSIVE = 64161, SPELL_EMPOWERED_PASSIVE = 64161,
SPELL_DRAIN_LIFE_10 = 64159, SPELL_DRAIN_LIFE = 64159,
SPELL_DRAIN_LIFE_25 = 64160,
SPELL_RECENTLY_SPAWNED = 64497, SPELL_RECENTLY_SPAWNED = 64497,
}; };
#define SPELL_PSYCHOSIS RAID_MODE(SPELL_SARA_PSYCHOSIS_10, SPELL_SARA_PSYCHOSIS_25)
#define SPELL_SQUEEZE RAID_MODE(SPELL_SQUEEZE_10, SPELL_SQUEEZE_25)
#define SPELL_DRAIN_LIFE RAID_MODE(SPELL_DRAIN_LIFE_10, SPELL_DRAIN_LIFE_25)
enum YoggEvents enum YoggEvents
{ {
EVENT_SARA_P1_DOORS_CLOSE = 1, EVENT_SARA_P1_DOORS_CLOSE = 1,
@@ -846,7 +841,7 @@ public:
{ {
Talk(SAY_SARA_PSYCHOSIS_HIT); Talk(SAY_SARA_PSYCHOSIS_HIT);
} }
me->CastCustomSpell(SPELL_PSYCHOSIS, SPELLVALUE_MAX_TARGETS, 1, me, false); me->CastCustomSpell(SPELL_SARA_PSYCHOSIS_10, SPELLVALUE_MAX_TARGETS, 1, me, false);
events.Repeat(3500ms); events.Repeat(3500ms);
break; break;
case EVENT_SARA_P2_DEATH_RAY: case EVENT_SARA_P2_DEATH_RAY:
@@ -1677,7 +1672,7 @@ public:
{ {
if (me->GetDistance(itr->GetSource()) > 10 || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster()) if (me->GetDistance(itr->GetSource()) > 10 || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster())
continue; continue;
if (itr->GetSource()->HasAura(SPELL_SQUEEZE) || itr->GetSource()->HasAura(SPELL_INSANE1)) if (itr->GetSource()->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_SQUEEZE, me)) || itr->GetSource()->HasAura(SPELL_INSANE1))
continue; continue;
if (count <= num || !target) if (count <= num || !target)
@@ -1719,7 +1714,7 @@ public:
void JustDied(Unit*) override void JustDied(Unit*) override
{ {
if (Unit* player = ObjectAccessor::GetUnit(*me, _playerGUID)) if (Unit* player = ObjectAccessor::GetUnit(*me, _playerGUID))
player->RemoveAura(SPELL_SQUEEZE); player->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_SQUEEZE, me));
} }
}; };
}; };

View File

@@ -79,7 +79,11 @@ enum UldSpells
SPELL_SIMPLE_TELEPORT = 12980, SPELL_SIMPLE_TELEPORT = 12980,
SPELL_KEEPER_TELEPORT = 62940, SPELL_KEEPER_TELEPORT = 62940,
SPELL_SNOW_MOUND_PARTICLES = 64615, SPELL_SNOW_MOUND_PARTICLES = 64615,
SPELL_ENERGY_SAP_10 = 64740 SPELL_ENERGY_SAP_10 = 64740,
// Arachnopod Destroyer
SPELL_FLAME_SPRAY = 64717,
SPELL_MACHINE_GUN = 64776,
}; };
class npc_ulduar_keeper : public CreatureScript class npc_ulduar_keeper : public CreatureScript
@@ -473,11 +477,11 @@ public:
case 0: case 0:
break; break;
case 1: case 1:
me->CastSpell(me->GetVictim(), RAID_MODE(64717, 65241), false); me->CastSpell(me->GetVictim(), SPELL_FLAME_SPRAY, false);
events.Repeat(15s, 25s); events.Repeat(15s, 25s);
break; break;
case 2: case 2:
me->CastSpell(me->GetVictim(), RAID_MODE(64776, 65240), false); me->CastSpell(me->GetVictim(), SPELL_MACHINE_GUN, false);
events.Repeat(10s, 15s); events.Repeat(10s, 15s);
break; break;
case 3: case 3:

View File

@@ -27,14 +27,10 @@ enum Archavon
SPELL_ROCK_SHARDS = 58678, SPELL_ROCK_SHARDS = 58678,
SPELL_ROCK_SHARDS_LEFT_HAND_VISUAL = 58689, SPELL_ROCK_SHARDS_LEFT_HAND_VISUAL = 58689,
SPELL_ROCK_SHARDS_RIGHT_HAND_VISUAL = 58692, SPELL_ROCK_SHARDS_RIGHT_HAND_VISUAL = 58692,
SPELL_ROCK_SHARDS_DAMAGE_10 = 58695, SPELL_ROCK_SHARDS_DAMAGE = 58695,
SPELL_ROCK_SHARDS_DAMAGE_25 = 60883, SPELL_CRUSHING_LEAP = 58960,
SPELL_CRUSHING_LEAP_10 = 58960, SPELL_STOMP = 58663,
SPELL_CRUSHING_LEAP_25 = 60894, // Instant (10-80yr range) -- Leaps at an enemy, inflicting 8000 Physical damage, knocking all nearby enemies away, and creating a cloud of choking debris. SPELL_IMPALE = 58666,
SPELL_STOMP_10 = 58663,
SPELL_STOMP_25 = 60880,
SPELL_IMPALE_10 = 58666,
SPELL_IMPALE_25 = 60882, // Lifts an enemy off the ground with a spiked fist, inflicting 47125 to 52875 Physical damage and 9425 to 10575 additional damage each second for 8 sec.
SPELL_BERSERK = 47008 SPELL_BERSERK = 47008
}; };
@@ -145,7 +141,7 @@ class boss_archavon : public CreatureScript
case EVENT_CHOKING_CLOUD: case EVENT_CHOKING_CLOUD:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false)) if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false))
{ {
DoCast(target, RAID_MODE(SPELL_CRUSHING_LEAP_10, SPELL_CRUSHING_LEAP_25), true); //10y ~ 80y, ignore range DoCast(target, SPELL_CRUSHING_LEAP, true); //10y ~ 80y, ignore range
} }
events.Repeat(30s); events.Repeat(30s);
@@ -156,14 +152,14 @@ class boss_archavon : public CreatureScript
snprintf(buffer, sizeof(buffer), "Archavon the Stone Watcher lunges for %s!", me->GetVictim()->GetName().c_str()); snprintf(buffer, sizeof(buffer), "Archavon the Stone Watcher lunges for %s!", me->GetVictim()->GetName().c_str());
me->TextEmote(buffer); me->TextEmote(buffer);
DoCastVictim(RAID_MODE(SPELL_STOMP_10, SPELL_STOMP_25)); DoCastVictim(SPELL_STOMP);
events.Repeat(45s); events.Repeat(45s);
events.ScheduleEvent(EVENT_IMPALE, 3s); events.ScheduleEvent(EVENT_IMPALE, 3s);
break; break;
} }
case EVENT_IMPALE: case EVENT_IMPALE:
DoCastVictim(RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25)); DoCastVictim(SPELL_IMPALE);
break; break;
case EVENT_BERSERK: case EVENT_BERSERK:
DoCast(me, SPELL_BERSERK, true); DoCast(me, SPELL_BERSERK, true);
@@ -205,17 +201,10 @@ class spell_archavon_rock_shards : public SpellScript
return; return;
} }
Map* map = caster->GetMap();
if (!map)
{
return;
}
caster->CastSpell(target, SPELL_ROCK_SHARDS_LEFT_HAND_VISUAL, true); caster->CastSpell(target, SPELL_ROCK_SHARDS_LEFT_HAND_VISUAL, true);
caster->CastSpell(target, SPELL_ROCK_SHARDS_RIGHT_HAND_VISUAL, true); caster->CastSpell(target, SPELL_ROCK_SHARDS_RIGHT_HAND_VISUAL, true);
uint32 spellId = map->Is25ManRaid() ? SPELL_ROCK_SHARDS_DAMAGE_25 : SPELL_ROCK_SHARDS_DAMAGE_10; caster->CastSpell(target, SPELL_ROCK_SHARDS_DAMAGE, true);
caster->CastSpell(target, spellId, true);
} }
void Register() override void Register() override

View File

@@ -29,10 +29,8 @@ enum Spells
SPELL_OVERCHARGE = 64218, SPELL_OVERCHARGE = 64218,
SPELL_BERSERK = 26662, SPELL_BERSERK = 26662,
SPELL_CHAIN_LIGHTNING_10 = 64213, SPELL_CHAIN_LIGHTNING = 64213,
SPELL_CHAIN_LIGHTNING_25 = 64215, SPELL_LIGHTNING_NOVA = 64216,
SPELL_LIGHTNING_NOVA_10 = 64216,
SPELL_LIGHTNING_NOVA_25 = 65279,
}; };
enum Events enum Events
@@ -171,11 +169,11 @@ public:
{ {
case EVENT_CHAIN_LIGHTNING: case EVENT_CHAIN_LIGHTNING:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
me->CastSpell(target, RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25), false); me->CastSpell(target, SPELL_CHAIN_LIGHTNING, false);
events.Repeat(25s); events.Repeat(25s);
break; break;
case EVENT_LIGHTNING_NOVA: case EVENT_LIGHTNING_NOVA:
me->CastSpell(me, RAID_MODE(SPELL_LIGHTNING_NOVA_10, SPELL_LIGHTNING_NOVA_25), false); me->CastSpell(me, SPELL_LIGHTNING_NOVA, false);
events.Repeat(40s); events.Repeat(40s);
break; break;
case EVENT_OVERCHARGE: case EVENT_OVERCHARGE: