Naxxramas, Kelthuzad: Fix Chains of Keltuzhad, by Tali (implements ref #21)
Cleanup --HG-- branch : trunk
This commit is contained in:
@@ -24,37 +24,39 @@ EndScriptData */
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
#include "naxxramas.h"
|
#include "naxxramas.h"
|
||||||
|
|
||||||
//when shappiron dies. dialog between kel and lich king (in this order)
|
enum Yells
|
||||||
#define SAY_SAPP_DIALOG1 -1533084 //not used
|
{
|
||||||
#define SAY_SAPP_DIALOG2_LICH -1533085 //not used
|
//when shappiron dies. dialog between kel and lich king (in this order)
|
||||||
#define SAY_SAPP_DIALOG3 -1533086 //not used
|
SAY_SAPP_DIALOG1 = -1533084, //not used
|
||||||
#define SAY_SAPP_DIALOG4_LICH -1533087 //not used
|
SAY_SAPP_DIALOG2_LICH = -1533085, //not used
|
||||||
#define SAY_SAPP_DIALOG5 -1533088 //not used
|
SAY_SAPP_DIALOG3 = -1533086, //not used
|
||||||
|
SAY_SAPP_DIALOG4_LICH = -1533087, //not used
|
||||||
//when cat dies
|
SAY_SAPP_DIALOG5 = -1533088, //not used
|
||||||
#define SAY_CAT_DIED -1533089 //not used
|
SAY_CAT_DIED = -1533089, //when cat dies, not used
|
||||||
|
//when each of the 4 wing bosses dies
|
||||||
//when each of the 4 wing bosses dies
|
SAY_TAUNT1 = -1533090, //not used
|
||||||
#define SAY_TAUNT1 -1533090 //not used
|
SAY_TAUNT2 = -1533091, //not used
|
||||||
#define SAY_TAUNT2 -1533091 //not used
|
SAY_TAUNT3 = -1533092, //not used
|
||||||
#define SAY_TAUNT3 -1533092 //not used
|
SAY_TAUNT4 = -1533093, //not used
|
||||||
#define SAY_TAUNT4 -1533093 //not used
|
SAY_SUMMON_MINIONS = -1533105, //start of phase 1 not used
|
||||||
|
SAY_AGGRO_1 = -1533094, //start of phase 2
|
||||||
#define SAY_SUMMON_MINIONS -1533105 //start of phase 1 not used
|
SAY_AGGRO_2 = -1533095,
|
||||||
|
SAY_AGGRO_3 = -1533096,
|
||||||
#define SAY_AGGRO RAND(-1533094,-1533095,-1533096) //start of phase 2
|
SAY_SLAY_1 = -1533097,
|
||||||
#define SAY_SLAY RAND(-1533097,-1533098)
|
SAY_SLAY_2 = -1533098,
|
||||||
#define SAY_DEATH -1533099
|
SAY_DEATH = -1533099,
|
||||||
#define SAY_CHAIN RAND(-1533100,-1533101)
|
SAY_CHAIN_1 = -1533100,
|
||||||
#define SAY_FROST_BLAST -1533102
|
SAY_CHAIN_2 = -1533101,
|
||||||
#define SAY_SPECIAL RAND(-1533106,-1533107,-1533108)
|
SAY_FROST_BLAST = -1533102,
|
||||||
|
SAY_SPECIAL_1 = -1533106,
|
||||||
#define SAY_REQUEST_AID -1533103 //start of phase 3
|
SAY_SPECIAL_2 = -1533107,
|
||||||
#define SAY_ANSWER_REQUEST -1533104 //lich king answer
|
SAY_SPECIAL_3 = -1533108,
|
||||||
|
SAY_REQUEST_AID = -1533103, //start of phase 3
|
||||||
|
SAY_ANSWER_REQUEST = -1533104 //lich king answer
|
||||||
|
};
|
||||||
enum Event
|
enum Event
|
||||||
{
|
{
|
||||||
EVENT_BOLT = 1,
|
EVENT_BOLT,
|
||||||
EVENT_NOVA,
|
EVENT_NOVA,
|
||||||
EVENT_CHAIN,
|
EVENT_CHAIN,
|
||||||
EVENT_DETONATE,
|
EVENT_DETONATE,
|
||||||
@@ -69,34 +71,42 @@ enum Event
|
|||||||
EVENT_PHASE,
|
EVENT_PHASE,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SPELL_FROST_BOLT HEROIC(28478,55802)
|
enum Spells
|
||||||
#define SPELL_FROST_BOLT_AOE HEROIC(28479,55807)
|
{
|
||||||
#define SPELL_SHADOW_FISURE 27810
|
SPELL_FROST_BOLT = 28478,
|
||||||
#define SPELL_VOID_BLAST 27812
|
H_SPELL_FROST_BOLT = 55802,
|
||||||
#define SPELL_MANA_DETONATION 27819
|
SPELL_FROST_BOLT_AOE = 28479,
|
||||||
#define SPELL_FROST_BLAST 27808
|
H_SPELL_FROST_BOLT_AOE = 55807,
|
||||||
#define SPELL_CHAINS_OF_KELTHUZAD 28410 //28408 script effect
|
SPELL_SHADOW_FISURE = 27810,
|
||||||
#define SPELL_BERSERK 28498
|
SPELL_VOID_BLAST = 27812,
|
||||||
|
SPELL_MANA_DETONATION = 27819,
|
||||||
|
SPELL_FROST_BLAST = 27808,
|
||||||
|
SPELL_CHAINS_OF_KELTHUZAD = 28410, //28408 script effect
|
||||||
|
SPELL_BERSERK = 28498
|
||||||
|
};
|
||||||
|
|
||||||
#define MOB_WASTE 16427 // Soldiers of the Frozen Wastes
|
enum Creatures
|
||||||
#define MOB_ABOMINATION 16428 // Unstoppable Abominations
|
{
|
||||||
#define MOB_WEAVER 16429 // Soul Weavers
|
NPC_WASTE = 16427, // Soldiers of the Frozen Wastes
|
||||||
#define MOB_ICECROWN 16441 // Guardians of Icecrown
|
NPC_ABOMINATION = 16428, // Unstoppable Abominations
|
||||||
|
NPC_WEAVER = 16429, // Soul Weavers
|
||||||
|
NPC_ICECROWN = 16441 // Guardians of Icecrown
|
||||||
|
};
|
||||||
|
|
||||||
const Position Pos[12] =
|
const Position Pos[12] =
|
||||||
{
|
{
|
||||||
{3783.272705, -5062.697266, 143.711203,3.617599},//LEFT_FAR
|
{3783.272705, -5062.697266, 143.711203, 3.617599}, //LEFT_FAR
|
||||||
{3730.291260, -5027.239258,143.956909,4.461900},//LEFT_MIDDLE
|
{3730.291260, -5027.239258, 143.956909, 4.461900}, //LEFT_MIDDLE
|
||||||
{3683.868652,-5057.281250,143.183884,5.237086},//LEFT_NEAR
|
{3683.868652, -5057.281250, 143.183884, 5.237086}, //LEFT_NEAR
|
||||||
{3759.355225,-5174.128418,143.802383,2.170104},//RIGHT_FAR
|
{3759.355225, -5174.128418, 143.802383, 2.170104}, //RIGHT_FAR
|
||||||
{3700.724365,-5185.123047,143.928024,1.309310},//RIGHT_MIDDLE
|
{3700.724365, -5185.123047, 143.928024, 1.309310}, //RIGHT_MIDDLE
|
||||||
{3665.121094,-5138.679199,143.183212,0.604023},//RIGHT_NEAR
|
{3665.121094, -5138.679199, 143.183212, 0.604023}, //RIGHT_NEAR
|
||||||
{3754.431396,-5080.727734,142.036316,3.736189},//LEFT_FAR
|
{3754.431396, -5080.727734, 142.036316, 3.736189}, //LEFT_FAR
|
||||||
{3724.396484, -5061.330566,142.032700, 4.564785},//LEFT_MIDDLE
|
{3724.396484, -5061.330566, 142.032700, 4.564785}, //LEFT_MIDDLE
|
||||||
{3687.158424,-5076.834473,142.017319,5.237086},//LEFT_NEAR
|
{3687.158424, -5076.834473, 142.017319, 5.237086}, //LEFT_NEAR
|
||||||
{3687.571777,-5126.831055,142.017807,0.604023},//RIGHT_FAR
|
{3687.571777, -5126.831055, 142.017807, 0.604023}, //RIGHT_FAR
|
||||||
{3707.990733,-5151.450195,142.032562,1.376855},//RIGHT_MIDDLE
|
{3707.990733, -5151.450195, 142.032562, 1.376855}, //RIGHT_MIDDLE
|
||||||
{3739.500000,-5141.883989,142.0141130, 2.121412}//RIGHT_NEAR
|
{3739.500000, -5141.883989, 142.014113, 2.121412} //RIGHT_NEAR
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
||||||
@@ -121,7 +131,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
|||||||
|
|
||||||
void KilledUnit()
|
void KilledUnit()
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_SLAY, m_creature);
|
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* Killer)
|
void JustDied(Unit* Killer)
|
||||||
@@ -133,7 +143,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
|||||||
void EnterCombat(Unit* who)
|
void EnterCombat(Unit* who)
|
||||||
{
|
{
|
||||||
_EnterCombat();
|
_EnterCombat();
|
||||||
DoScriptText(SAY_AGGRO, me);
|
DoScriptText(RAND(SAY_AGGRO_1,SAY_AGGRO_2,SAY_AGGRO_3), me);
|
||||||
Phase=1;
|
Phase=1;
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
@@ -157,15 +167,15 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
|||||||
switch(eventId)
|
switch(eventId)
|
||||||
{
|
{
|
||||||
case EVENT_WASTE:
|
case EVENT_WASTE:
|
||||||
DoSummon(MOB_WASTE, Pos[RAND(0,3,6,9)]);
|
DoSummon(NPC_WASTE, Pos[RAND(0,3,6,9)]);
|
||||||
events.RepeatEvent(5000);
|
events.RepeatEvent(5000);
|
||||||
break;
|
break;
|
||||||
case EVENT_ABOMIN:
|
case EVENT_ABOMIN:
|
||||||
DoSummon(MOB_ABOMINATION, Pos[RAND(1,4,7,10)]);
|
DoSummon(NPC_ABOMINATION, Pos[RAND(1,4,7,10)]);
|
||||||
events.RepeatEvent(25000);
|
events.RepeatEvent(25000);
|
||||||
break;
|
break;
|
||||||
case EVENT_WEAVER:
|
case EVENT_WEAVER:
|
||||||
DoSummon(MOB_WEAVER, Pos[RAND(0,3,6,9)]);
|
DoSummon(NPC_WEAVER, Pos[RAND(0,3,6,9)]);
|
||||||
events.RepeatEvent(20000);
|
events.RepeatEvent(20000);
|
||||||
break;
|
break;
|
||||||
case EVENT_PHASE:
|
case EVENT_PHASE:
|
||||||
@@ -177,6 +187,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
|||||||
events.ScheduleEvent(EVENT_DETONATE, 20000);
|
events.ScheduleEvent(EVENT_DETONATE, 20000);
|
||||||
events.ScheduleEvent(EVENT_FISSURE, 25000);
|
events.ScheduleEvent(EVENT_FISSURE, 25000);
|
||||||
events.ScheduleEvent(EVENT_BLAST, urand(30000,60000));
|
events.ScheduleEvent(EVENT_BLAST, urand(30000,60000));
|
||||||
|
if (HeroicMode)
|
||||||
events.ScheduleEvent(EVENT_CHAIN, urand(30000,60000));
|
events.ScheduleEvent(EVENT_CHAIN, urand(30000,60000));
|
||||||
Phase = 2;
|
Phase = 2;
|
||||||
return;
|
return;
|
||||||
@@ -204,7 +215,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
|||||||
{
|
{
|
||||||
if (GuardiansOfIcecrown_Timer <= diff)
|
if (GuardiansOfIcecrown_Timer <= diff)
|
||||||
{
|
{
|
||||||
DoSummon(MOB_ICECROWN, Pos[RAND(2,5,8)]);
|
DoSummon(NPC_ICECROWN, Pos[RAND(2,5,8)]);
|
||||||
++GuardiansOfIcecrown_Count;
|
++GuardiansOfIcecrown_Count;
|
||||||
GuardiansOfIcecrown_Timer = 5000;
|
GuardiansOfIcecrown_Timer = 5000;
|
||||||
}
|
}
|
||||||
@@ -219,17 +230,17 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
|||||||
switch(eventId)
|
switch(eventId)
|
||||||
{
|
{
|
||||||
case EVENT_BOLT:
|
case EVENT_BOLT:
|
||||||
DoCast(m_creature->getVictim(),SPELL_FROST_BOLT);
|
DoCastVictim(HEROIC(SPELL_FROST_BOLT,H_SPELL_FROST_BOLT));
|
||||||
events.RepeatEvent(urand(1000,10000));
|
events.RepeatEvent(urand(1000,10000));
|
||||||
return;
|
return;
|
||||||
case EVENT_NOVA:
|
case EVENT_NOVA:
|
||||||
DoCastAOE(SPELL_FROST_BOLT_AOE);
|
DoCastAOE(HEROIC(SPELL_FROST_BOLT_AOE,H_SPELL_FROST_BOLT_AOE));
|
||||||
events.RepeatEvent(urand(10000,20000));
|
events.RepeatEvent(urand(10000,20000));
|
||||||
return;
|
return;
|
||||||
case EVENT_CHAIN:
|
case EVENT_CHAIN:
|
||||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 0, true))
|
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 200, true))
|
||||||
DoCast(pTarget, SPELL_CHAINS_OF_KELTHUZAD);
|
DoCast(pTarget, SPELL_CHAINS_OF_KELTHUZAD);
|
||||||
DoScriptText(SAY_CHAIN, me);
|
DoScriptText(RAND(SAY_CHAIN_1,SAY_CHAIN_2), me);
|
||||||
events.RepeatEvent(urand(30000,60000));
|
events.RepeatEvent(urand(30000,60000));
|
||||||
return;
|
return;
|
||||||
case EVENT_DETONATE:
|
case EVENT_DETONATE:
|
||||||
@@ -249,7 +260,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
|
|||||||
std::vector<Unit*>::iterator itr = unitList.begin();
|
std::vector<Unit*>::iterator itr = unitList.begin();
|
||||||
advance(itr, rand()%unitList.size());
|
advance(itr, rand()%unitList.size());
|
||||||
DoCast(*itr, SPELL_MANA_DETONATION);
|
DoCast(*itr, SPELL_MANA_DETONATION);
|
||||||
DoScriptText(SAY_SPECIAL, me);
|
DoScriptText(RAND(SAY_SPECIAL_1,SAY_SPECIAL_2,SAY_SPECIAL_3), me);
|
||||||
}
|
}
|
||||||
|
|
||||||
events.RepeatEvent(20000);
|
events.RepeatEvent(20000);
|
||||||
|
|||||||
Reference in New Issue
Block a user