Scripts/Molten Core: Ragnaros gets spawned after Majordomus dies. Majordomus gets spawned by killing everything else.
Signed-off-by: Machiavelli <[email protected]>
This commit is contained in:
@@ -24,6 +24,7 @@ SDCategory: Molten Core
|
|||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
#include "ScriptPCH.h"
|
#include "ScriptPCH.h"
|
||||||
|
#include "molten_core.h"
|
||||||
|
|
||||||
#define EMOTE_SERVICE -1409000
|
#define EMOTE_SERVICE -1409000
|
||||||
|
|
||||||
@@ -44,7 +45,11 @@ public:
|
|||||||
|
|
||||||
struct boss_baron_geddonAI : public ScriptedAI
|
struct boss_baron_geddonAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
boss_baron_geddonAI(Creature *c) : ScriptedAI(c) {}
|
boss_baron_geddonAI(Creature *pCreature) : ScriptedAI(pCreature)
|
||||||
|
{
|
||||||
|
m_pInstance = pCreature->GetInstanceScript();
|
||||||
|
}
|
||||||
|
InstanceScript* m_pInstance;
|
||||||
|
|
||||||
uint32 Inferno_Timer;
|
uint32 Inferno_Timer;
|
||||||
uint32 IgniteMana_Timer;
|
uint32 IgniteMana_Timer;
|
||||||
@@ -57,6 +62,12 @@ public:
|
|||||||
LivingBomb_Timer = 35000;
|
LivingBomb_Timer = 35000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*pKiller*/)
|
||||||
|
{
|
||||||
|
if (m_pInstance)
|
||||||
|
m_pInstance->SetData(DATA_GEDDON, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit * /*who*/)
|
void EnterCombat(Unit * /*who*/)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ SDCategory: Molten Core
|
|||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
#include "ScriptPCH.h"
|
#include "ScriptPCH.h"
|
||||||
|
#include "molten_core.h"
|
||||||
|
|
||||||
// Garr spells
|
// Garr spells
|
||||||
#define SPELL_ANTIMAGICPULSE 19492
|
#define SPELL_ANTIMAGICPULSE 19492
|
||||||
@@ -46,7 +47,11 @@ public:
|
|||||||
|
|
||||||
struct boss_garrAI : public ScriptedAI
|
struct boss_garrAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
boss_garrAI(Creature *c) : ScriptedAI(c) {}
|
boss_garrAI(Creature *pCreature) : ScriptedAI(pCreature)
|
||||||
|
{
|
||||||
|
m_pInstance = pCreature->GetInstanceScript();
|
||||||
|
}
|
||||||
|
InstanceScript* m_pInstance;
|
||||||
|
|
||||||
uint32 AntiMagicPulse_Timer;
|
uint32 AntiMagicPulse_Timer;
|
||||||
uint32 MagmaShackles_Timer;
|
uint32 MagmaShackles_Timer;
|
||||||
@@ -61,6 +66,12 @@ public:
|
|||||||
CheckAdds_Timer = 2000;
|
CheckAdds_Timer = 2000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*pKiller*/)
|
||||||
|
{
|
||||||
|
if (m_pInstance)
|
||||||
|
m_pInstance->SetData(DATA_GARR, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit * /*who*/)
|
void EnterCombat(Unit * /*who*/)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ SDCategory: Molten Core
|
|||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
#include "ScriptPCH.h"
|
#include "ScriptPCH.h"
|
||||||
|
#include "molten_core.h"
|
||||||
|
|
||||||
#define SPELL_SHADOWBOLT 19728
|
#define SPELL_SHADOWBOLT 19728
|
||||||
#define SPELL_RAINOFFIRE 19717
|
#define SPELL_RAINOFFIRE 19717
|
||||||
@@ -41,7 +42,11 @@ public:
|
|||||||
|
|
||||||
struct boss_gehennasAI : public ScriptedAI
|
struct boss_gehennasAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
boss_gehennasAI(Creature *c) : ScriptedAI(c) {}
|
boss_gehennasAI(Creature *pCreature) : ScriptedAI(pCreature)
|
||||||
|
{
|
||||||
|
m_pInstance = pCreature->GetInstanceScript();
|
||||||
|
}
|
||||||
|
InstanceScript* m_pInstance;
|
||||||
|
|
||||||
uint32 ShadowBolt_Timer;
|
uint32 ShadowBolt_Timer;
|
||||||
uint32 RainOfFire_Timer;
|
uint32 RainOfFire_Timer;
|
||||||
@@ -54,6 +59,12 @@ public:
|
|||||||
GehennasCurse_Timer = 12000;
|
GehennasCurse_Timer = 12000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*pKiller*/)
|
||||||
|
{
|
||||||
|
if (m_pInstance)
|
||||||
|
m_pInstance->SetData(DATA_GEHENNAS, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit * /*who*/) {}
|
void EnterCombat(Unit * /*who*/) {}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ public:
|
|||||||
void JustDied(Unit* /*pKiller*/)
|
void JustDied(Unit* /*pKiller*/)
|
||||||
{
|
{
|
||||||
if (m_pInstance)
|
if (m_pInstance)
|
||||||
m_pInstance->SetData(DATA_GOLEMAGG_DEATH, 0);
|
m_pInstance->SetData(DATA_GOLEMAGG, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 uiDiff)
|
void UpdateAI(const uint32 uiDiff)
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ SDCategory: Molten Core
|
|||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
#include "ScriptPCH.h"
|
#include "ScriptPCH.h"
|
||||||
|
#include "molten_core.h"
|
||||||
|
|
||||||
#define SPELL_IMPENDINGDOOM 19702
|
#define SPELL_IMPENDINGDOOM 19702
|
||||||
#define SPELL_LUCIFRONCURSE 19703
|
#define SPELL_LUCIFRONCURSE 19703
|
||||||
@@ -41,7 +42,11 @@ public:
|
|||||||
|
|
||||||
struct boss_lucifronAI : public ScriptedAI
|
struct boss_lucifronAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
boss_lucifronAI(Creature *c) : ScriptedAI(c) {}
|
boss_lucifronAI(Creature *pCreature) : ScriptedAI(pCreature)
|
||||||
|
{
|
||||||
|
m_pInstance = pCreature->GetInstanceScript();
|
||||||
|
}
|
||||||
|
InstanceScript* m_pInstance;
|
||||||
|
|
||||||
uint32 ImpendingDoom_Timer;
|
uint32 ImpendingDoom_Timer;
|
||||||
uint32 LucifronCurse_Timer;
|
uint32 LucifronCurse_Timer;
|
||||||
@@ -54,6 +59,12 @@ public:
|
|||||||
ShadowShock_Timer = 6000; //6 seconds
|
ShadowShock_Timer = 6000; //6 seconds
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*pKiller*/)
|
||||||
|
{
|
||||||
|
if (m_pInstance)
|
||||||
|
m_pInstance->SetData(DATA_LUCIFRON, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit * /*who*/)
|
void EnterCombat(Unit * /*who*/)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ SDCategory: Molten Core
|
|||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
#include "ScriptPCH.h"
|
#include "ScriptPCH.h"
|
||||||
|
#include "molten_core.h"
|
||||||
|
|
||||||
#define EMOTE_FRENZY -1409001
|
#define EMOTE_FRENZY -1409001
|
||||||
|
|
||||||
@@ -45,7 +46,11 @@ public:
|
|||||||
|
|
||||||
struct boss_magmadarAI : public ScriptedAI
|
struct boss_magmadarAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
boss_magmadarAI(Creature *c) : ScriptedAI(c) {}
|
boss_magmadarAI(Creature *pCreature) : ScriptedAI(pCreature)
|
||||||
|
{
|
||||||
|
m_pInstance = pCreature->GetInstanceScript();
|
||||||
|
}
|
||||||
|
InstanceScript* m_pInstance;
|
||||||
|
|
||||||
uint32 Frenzy_Timer;
|
uint32 Frenzy_Timer;
|
||||||
uint32 Panic_Timer;
|
uint32 Panic_Timer;
|
||||||
@@ -60,6 +65,12 @@ public:
|
|||||||
DoCast(me, SPELL_MAGMASPIT, true);
|
DoCast(me, SPELL_MAGMASPIT, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*pKiller*/)
|
||||||
|
{
|
||||||
|
if (m_pInstance)
|
||||||
|
m_pInstance->SetData(DATA_MAGMADAR, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit * /*who*/)
|
void EnterCombat(Unit * /*who*/)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ SDCategory: Molten Core
|
|||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
#include "ScriptPCH.h"
|
#include "ScriptPCH.h"
|
||||||
|
#include "molten_core.h"
|
||||||
|
|
||||||
#define SAY_AGGRO -1409003
|
#define SAY_AGGRO -1409003
|
||||||
#define SAY_SPAWN -1409004
|
#define SAY_SPAWN -1409004
|
||||||
@@ -37,10 +38,14 @@ EndScriptData */
|
|||||||
#define SAY_ARRIVAL3_RAG -1409011
|
#define SAY_ARRIVAL3_RAG -1409011
|
||||||
#define SAY_ARRIVAL5_RAG -1409012
|
#define SAY_ARRIVAL5_RAG -1409012
|
||||||
|
|
||||||
#define SPAWN_RAG_X 838.51
|
#define ENTRY_RAGNAROS 11502
|
||||||
#define SPAWN_RAG_Y -829.84
|
|
||||||
#define SPAWN_RAG_Z -232.00
|
#define EMOTE_EMERGE 449
|
||||||
#define SPAWN_RAG_O 1.70
|
|
||||||
|
#define TELE_TO_RAG_X 829.159f
|
||||||
|
#define TELE_TO_RAG_Y -815.773f
|
||||||
|
#define TELE_TO_RAG_Z -228.972f
|
||||||
|
#define TELE_TO_RAG_O 5.305f
|
||||||
|
|
||||||
#define SPELL_MAGIC_REFLECTION 20619
|
#define SPELL_MAGIC_REFLECTION 20619
|
||||||
#define SPELL_DAMAGE_REFLECTION 21075
|
#define SPELL_DAMAGE_REFLECTION 21075
|
||||||
@@ -53,6 +58,9 @@ EndScriptData */
|
|||||||
#define ENTRY_FLAMEWALKER_HEALER 11663
|
#define ENTRY_FLAMEWALKER_HEALER 11663
|
||||||
#define ENTRY_FLAMEWALKER_ELITE 11664
|
#define ENTRY_FLAMEWALKER_ELITE 11664
|
||||||
|
|
||||||
|
#define GOSSIP_HELLO 4995
|
||||||
|
#define GOSSIP_SELLECT "Tell me more."
|
||||||
|
|
||||||
class boss_majordomo : public CreatureScript
|
class boss_majordomo : public CreatureScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -63,19 +71,49 @@ public:
|
|||||||
return new boss_majordomoAI (pCreature);
|
return new boss_majordomoAI (pCreature);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct boss_majordomoAI : public ScriptedAI
|
bool OnGossipHello(Player* pPlayer, Creature* pCreature)
|
||||||
{
|
{
|
||||||
boss_majordomoAI(Creature *c) : ScriptedAI(c) {}
|
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SELLECT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
|
||||||
|
pPlayer->SEND_GOSSIP_MENU(GOSSIP_HELLO, pCreature->GetGUID());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
|
||||||
|
{
|
||||||
|
//ScriptedInstance* pInstance = pCreature->GetInstanceData();
|
||||||
|
|
||||||
|
BossAI* pBossAI = CAST_AI(boss_majordomoAI, pCreature->AI());
|
||||||
|
|
||||||
|
if (/*pInstance && */pBossAI)
|
||||||
|
{
|
||||||
|
pPlayer->CLOSE_GOSSIP_MENU();
|
||||||
|
CAST_AI(boss_majordomoAI, pCreature->AI())->StartRagsEvent();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct boss_majordomoAI : public BossAI
|
||||||
|
{
|
||||||
|
boss_majordomoAI(Creature *pCreature) : BossAI(pCreature, BOSS_MAJORDOMO)
|
||||||
|
{
|
||||||
|
m_pInstance = pCreature->GetInstanceScript();
|
||||||
|
}
|
||||||
|
InstanceScript* m_pInstance;
|
||||||
|
|
||||||
uint32 MagicReflection_Timer;
|
uint32 MagicReflection_Timer;
|
||||||
uint32 DamageReflection_Timer;
|
uint32 DamageReflection_Timer;
|
||||||
uint32 Blastwave_Timer;
|
uint32 Blastwave_Timer;
|
||||||
|
uint32 Teleport_Timer;
|
||||||
|
uint32 Phase_Timer; //for teleport and ragnaros's intro
|
||||||
|
uint8 Phase;
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
MagicReflection_Timer = 30000; //Damage reflection first so we alternate
|
MagicReflection_Timer = 30000; //Damage reflection first so we alternate
|
||||||
DamageReflection_Timer = 15000;
|
DamageReflection_Timer = 15000;
|
||||||
Blastwave_Timer = 10000;
|
Blastwave_Timer = 10000;
|
||||||
|
Teleport_Timer = 20000;
|
||||||
|
Phase = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit(Unit* /*victim*/)
|
void KilledUnit(Unit* /*victim*/)
|
||||||
@@ -93,41 +131,97 @@ public:
|
|||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
if (!UpdateVictim())
|
if (Phase == 0)
|
||||||
return;
|
|
||||||
|
|
||||||
//Cast Ageis if less than 50% hp
|
|
||||||
if (HealthBelowPct(50))
|
|
||||||
{
|
{
|
||||||
DoCast(me, SPELL_AEGIS);
|
if (!UpdateVictim())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (((!me->FindNearestCreature(ENTRY_FLAMEWALKER_HEALER,100.0f)) && (!me->FindNearestCreature(ENTRY_FLAMEWALKER_ELITE,100.0f))) && (!m_pInstance->GetData(DATA_MAJORDOMOISDEAD)))
|
||||||
|
{
|
||||||
|
me->setFaction(35);
|
||||||
|
me->AI()->EnterEvadeMode();
|
||||||
|
DoScriptText(SAY_DEFEAT, me);
|
||||||
|
//DoCast(SPELL_SUMMON_RAGNAROS); Not working atm ,doing workaround
|
||||||
|
if (m_pInstance)
|
||||||
|
m_pInstance->SetData(DATA_MAJORDOMO, DONE);
|
||||||
|
//m_pInstance->SetBossState(DATA_MAJORDOMO, DONE);
|
||||||
|
Phase_Timer = 32000;
|
||||||
|
Phase = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Cast Ageis if less than 50% hp
|
||||||
|
if (me->GetHealth()*100 / me->GetMaxHealth() < 50)
|
||||||
|
if (HealthBelowPct(50))
|
||||||
|
{
|
||||||
|
DoCast(me, SPELL_AEGIS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MagicReflection_Timer <= diff)
|
||||||
|
{
|
||||||
|
DoCast(me, SPELL_MAGIC_REFLECTION);
|
||||||
|
MagicReflection_Timer = 30000;
|
||||||
|
} else MagicReflection_Timer -= diff;
|
||||||
|
|
||||||
|
if (DamageReflection_Timer <= diff)
|
||||||
|
{
|
||||||
|
DoCast(me, SPELL_DAMAGE_REFLECTION);
|
||||||
|
DamageReflection_Timer = 30000;
|
||||||
|
} else DamageReflection_Timer -= diff;
|
||||||
|
|
||||||
|
//Blastwave_Timer
|
||||||
|
if (Blastwave_Timer <= diff)
|
||||||
|
{
|
||||||
|
DoCast(me->getVictim(), SPELL_BLASTWAVE);
|
||||||
|
Blastwave_Timer = 10000;
|
||||||
|
} else Blastwave_Timer -= diff;
|
||||||
|
|
||||||
|
if (Teleport_Timer <= diff)
|
||||||
|
{
|
||||||
|
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1))
|
||||||
|
DoCast(pTarget, SPELL_TELEPORT);
|
||||||
|
Teleport_Timer = 20000;
|
||||||
|
} else Teleport_Timer -= diff;
|
||||||
|
|
||||||
|
DoMeleeAttackIfReady();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
//MagicReflection_Timer
|
|
||||||
// if (MagicReflection_Timer <= diff)
|
|
||||||
// {
|
|
||||||
// DoCast(me, SPELL_MAGICREFLECTION);
|
|
||||||
|
|
||||||
//60 seconds until we should cast this agian
|
|
||||||
// MagicReflection_Timer = 30000;
|
|
||||||
// } else MagicReflection_Timer -= diff;
|
|
||||||
|
|
||||||
//DamageReflection_Timer
|
|
||||||
// if (DamageReflection_Timer <= diff)
|
|
||||||
// {
|
|
||||||
// DoCast(me, SPELL_DAMAGEREFLECTION);
|
|
||||||
|
|
||||||
//60 seconds until we should cast this agian
|
|
||||||
// DamageReflection_Timer = 30000;
|
|
||||||
// } else DamageReflection_Timer -= diff;
|
|
||||||
|
|
||||||
//Blastwave_Timer
|
|
||||||
if (Blastwave_Timer <= diff)
|
|
||||||
{
|
{
|
||||||
DoCast(me->getVictim(), SPELL_BLASTWAVE);
|
if (Phase == 1)
|
||||||
Blastwave_Timer = 10000;
|
{
|
||||||
} else Blastwave_Timer -= diff;
|
if (Phase_Timer <= diff)
|
||||||
|
{
|
||||||
|
me->NearTeleportTo(TELE_TO_RAG_X, TELE_TO_RAG_Y, TELE_TO_RAG_Z, TELE_TO_RAG_O);
|
||||||
|
Phase = 2;
|
||||||
|
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
|
} else Phase_Timer -= diff;
|
||||||
|
}
|
||||||
|
if (Phase == 3)
|
||||||
|
{
|
||||||
|
if (Phase_Timer <= diff)
|
||||||
|
{
|
||||||
|
if (m_pInstance)
|
||||||
|
m_pInstance->SetData(DATA_RAGNAROS, true);
|
||||||
|
Phase = 4;
|
||||||
|
Phase_Timer = 16000;
|
||||||
|
} else Phase_Timer -= diff;
|
||||||
|
}
|
||||||
|
if (Phase == 4)
|
||||||
|
{
|
||||||
|
if (Phase_Timer <= diff)
|
||||||
|
{
|
||||||
|
DoScriptText(SAY_ARRIVAL2_MAJ, me);
|
||||||
|
Phase = 5;
|
||||||
|
} else Phase_Timer -= diff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
void StartRagsEvent()
|
||||||
|
{
|
||||||
|
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
|
Phase = 3;
|
||||||
|
DoScriptText(SAY_SUMMON_MAJ, me);
|
||||||
|
Phase_Timer = 8000;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -18,12 +18,13 @@
|
|||||||
|
|
||||||
/* ScriptData
|
/* ScriptData
|
||||||
SDName: Boss_Ragnaros
|
SDName: Boss_Ragnaros
|
||||||
SD%Complete: 75
|
SD%Complete: 95
|
||||||
SDComment: Intro Dialog and event NYI
|
SDComment: missing effects in intro (summon, majordomos tele) annd some spells doesnt work correctly
|
||||||
SDCategory: Molten Core
|
SDCategory: Molten Core
|
||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
#include "ScriptPCH.h"
|
#include "ScriptPCH.h"
|
||||||
|
#include "molten_core.h"
|
||||||
|
|
||||||
#define SAY_REINFORCEMENTS1 -1409013
|
#define SAY_REINFORCEMENTS1 -1409013
|
||||||
#define SAY_REINFORCEMENTS2 -1409014
|
#define SAY_REINFORCEMENTS2 -1409014
|
||||||
@@ -45,6 +46,14 @@ EndScriptData */
|
|||||||
#define SPELL_ELEMENTALFIRE 20564
|
#define SPELL_ELEMENTALFIRE 20564
|
||||||
#define SPELL_ERRUPTION 17731
|
#define SPELL_ERRUPTION 17731
|
||||||
|
|
||||||
|
#define SAY_SUMMON_MAJ -1409008 //intro
|
||||||
|
#define SAY_ARRIVAL1_RAG -1409009
|
||||||
|
#define SAY_ARRIVAL2_MAJ -1409010
|
||||||
|
#define SAY_ARRIVAL3_RAG -1409011
|
||||||
|
#define SAY_ARRIVAL5_RAG -1409012
|
||||||
|
|
||||||
|
#define UNIT_DYNFLAG_ROOTED 8
|
||||||
|
|
||||||
#define ADD_1X 848.740356
|
#define ADD_1X 848.740356
|
||||||
#define ADD_1Y -816.103455
|
#define ADD_1Y -816.103455
|
||||||
#define ADD_1Z -229.74327
|
#define ADD_1Z -229.74327
|
||||||
@@ -95,10 +104,14 @@ public:
|
|||||||
return new boss_ragnarosAI (pCreature);
|
return new boss_ragnarosAI (pCreature);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct boss_ragnarosAI : public ScriptedAI
|
struct boss_ragnarosAI : public BossAI
|
||||||
{
|
{
|
||||||
boss_ragnarosAI(Creature *c) : ScriptedAI(c)
|
boss_ragnarosAI(Creature *pCreature) : BossAI(pCreature, BOSS_RAGNAROS)
|
||||||
{
|
{
|
||||||
|
Intro_Timer = 0;
|
||||||
|
Intro = 0;
|
||||||
|
me->SetReactState(REACT_PASSIVE);
|
||||||
|
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
SetCombatMovement(false);
|
SetCombatMovement(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,6 +123,8 @@ public:
|
|||||||
uint32 Erruption_Timer;
|
uint32 Erruption_Timer;
|
||||||
uint32 Submerge_Timer;
|
uint32 Submerge_Timer;
|
||||||
uint32 Attack_Timer;
|
uint32 Attack_Timer;
|
||||||
|
uint32 Intro_Timer;
|
||||||
|
uint8 Intro;
|
||||||
|
|
||||||
bool HasYelledMagmaBurst;
|
bool HasYelledMagmaBurst;
|
||||||
bool HasSubmergedOnce;
|
bool HasSubmergedOnce;
|
||||||
@@ -132,6 +147,8 @@ public:
|
|||||||
|
|
||||||
DoCast(me, SPELL_MELTWEAPON, true);
|
DoCast(me, SPELL_MELTWEAPON, true);
|
||||||
HasAura = true;
|
HasAura = true;
|
||||||
|
|
||||||
|
me->RemoveFlag(UNIT_NPC_EMOTESTATE,EMOTE_STATE_SUBMERGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KilledUnit(Unit* /*victim*/)
|
void KilledUnit(Unit* /*victim*/)
|
||||||
@@ -148,155 +165,268 @@ public:
|
|||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
if (WasBanished && Attack_Timer <= diff)
|
if (Intro == 1)
|
||||||
{
|
|
||||||
//Become unbanished again
|
|
||||||
me->setFaction(14);
|
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
|
||||||
DoCast(me, SPELL_RAGEMERGE);
|
|
||||||
WasBanished = false;
|
|
||||||
} else if (WasBanished)
|
|
||||||
{
|
|
||||||
Attack_Timer -= diff;
|
|
||||||
//Do nothing while banished
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Return since we have no target
|
|
||||||
if (!UpdateVictim())
|
|
||||||
return;
|
|
||||||
|
|
||||||
//WrathOfRagnaros_Timer
|
|
||||||
if (WrathOfRagnaros_Timer <= diff)
|
|
||||||
{
|
|
||||||
DoCast(me->getVictim(), SPELL_WRATHOFRAGNAROS);
|
|
||||||
|
|
||||||
if (urand(0,1))
|
|
||||||
DoScriptText(SAY_WRATH, me);
|
|
||||||
|
|
||||||
WrathOfRagnaros_Timer = 30000;
|
|
||||||
} else WrathOfRagnaros_Timer -= diff;
|
|
||||||
|
|
||||||
//HandOfRagnaros_Timer
|
|
||||||
if (HandOfRagnaros_Timer <= diff)
|
|
||||||
{
|
|
||||||
DoCast(me, SPELL_HANDOFRAGNAROS);
|
|
||||||
|
|
||||||
if (urand(0,1))
|
|
||||||
DoScriptText(SAY_HAND, me);
|
|
||||||
|
|
||||||
HandOfRagnaros_Timer = 25000;
|
|
||||||
} else HandOfRagnaros_Timer -= diff;
|
|
||||||
|
|
||||||
//LavaBurst_Timer
|
|
||||||
if (LavaBurst_Timer <= diff)
|
|
||||||
{
|
|
||||||
DoCast(me->getVictim(), SPELL_LAVABURST);
|
|
||||||
LavaBurst_Timer = 10000;
|
|
||||||
} else LavaBurst_Timer -= diff;
|
|
||||||
|
|
||||||
//Erruption_Timer
|
|
||||||
if (LavaBurst_Timer <= diff)
|
|
||||||
{
|
|
||||||
DoCast(me->getVictim(), SPELL_ERRUPTION);
|
|
||||||
Erruption_Timer = urand(20000,45000);
|
|
||||||
} else Erruption_Timer -= diff;
|
|
||||||
|
|
||||||
//ElementalFire_Timer
|
|
||||||
if (ElementalFire_Timer <= diff)
|
|
||||||
{
|
|
||||||
DoCast(me->getVictim(), SPELL_ELEMENTALFIRE);
|
|
||||||
ElementalFire_Timer = urand(10000,14000);
|
|
||||||
} else ElementalFire_Timer -= diff;
|
|
||||||
|
|
||||||
//Submerge_Timer
|
|
||||||
if (!WasBanished && Submerge_Timer <= diff)
|
|
||||||
{
|
|
||||||
//Creature spawning and ragnaros becomming unattackable
|
|
||||||
//is not very well supported in the core
|
|
||||||
//so added normaly spawning and banish workaround and attack again after 90 secs.
|
|
||||||
|
|
||||||
me->InterruptNonMeleeSpells(false);
|
|
||||||
//Root self
|
|
||||||
DoCast(me, 23973);
|
|
||||||
me->setFaction(35);
|
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
|
||||||
me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
|
|
||||||
|
|
||||||
if (!HasSubmergedOnce)
|
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_REINFORCEMENTS1, me);
|
if (Intro_Timer <= diff)
|
||||||
|
|
||||||
// summon 10 elementals
|
|
||||||
for (uint8 i = 0; i < 9; ++i)
|
|
||||||
{
|
{
|
||||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
DoScriptText(SAY_ARRIVAL1_RAG, me);
|
||||||
|
Intro_Timer = 18000;
|
||||||
|
Intro = 2;
|
||||||
|
} else Intro_Timer -= diff;
|
||||||
|
}
|
||||||
|
else if (Intro == 2)
|
||||||
|
{
|
||||||
|
if (Intro_Timer <= diff)
|
||||||
|
{
|
||||||
|
DoScriptText(SAY_ARRIVAL3_RAG, me);
|
||||||
|
Intro_Timer = 19000;
|
||||||
|
Intro = 3;
|
||||||
|
} else Intro_Timer -= diff;
|
||||||
|
}
|
||||||
|
else if (Intro == 3)
|
||||||
|
{
|
||||||
|
if (Intro_Timer <= diff)
|
||||||
|
{
|
||||||
|
me->HandleEmoteCommand(EMOTE_ONESHOT_ATTACK1H);
|
||||||
|
Intro_Timer = 1000;
|
||||||
|
Intro = 4;
|
||||||
|
} else Intro_Timer -= diff;
|
||||||
|
}
|
||||||
|
else if (Intro == 4)
|
||||||
|
{
|
||||||
|
if (Intro_Timer <= diff)
|
||||||
|
{
|
||||||
|
DoScriptText(SAY_ARRIVAL5_RAG, me);
|
||||||
|
if (instance)
|
||||||
|
if (Creature *pMajordomo = me->GetCreature(*me, instance->GetData64(DATA_MAJORDOMO_GUID)))
|
||||||
|
me->Kill(pMajordomo);
|
||||||
|
Intro_Timer = 10000;
|
||||||
|
Intro = 5;
|
||||||
|
} else Intro_Timer -= diff;
|
||||||
|
}
|
||||||
|
else if (Intro == 5)
|
||||||
|
{
|
||||||
|
if (Intro_Timer <= diff)
|
||||||
|
{
|
||||||
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
|
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||||
|
Intro = 6;
|
||||||
|
} else Intro_Timer -= diff;
|
||||||
|
}
|
||||||
|
else if (Intro == 6)
|
||||||
|
{
|
||||||
|
if (instance)
|
||||||
|
{
|
||||||
|
if (WasBanished && ((Attack_Timer <= diff) || (instance->GetData(DATA_RAG_ELE_COUNTER)) > 8))
|
||||||
|
{
|
||||||
|
//Become unbanished again
|
||||||
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
|
me->setFaction(14);
|
||||||
|
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
me->RemoveFlag(UNIT_NPC_EMOTESTATE,EMOTE_STATE_SUBMERGED);
|
||||||
|
me->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
|
||||||
|
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
|
AttackStart(pTarget);
|
||||||
|
instance->SetData(DATA_RAG_ELE_COUNTER, 0);
|
||||||
|
|
||||||
|
//DoCast(me, SPELL_RAGEMERGE); //"phase spells" didnt worked correctly so Ive commented them and wrote solution witch doesnt need core support
|
||||||
|
WasBanished = false;
|
||||||
|
}
|
||||||
|
else if (WasBanished)
|
||||||
|
{
|
||||||
|
Attack_Timer -= diff;
|
||||||
|
//Do nothing while banished
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Return since we have no target
|
||||||
|
if (!UpdateVictim())
|
||||||
|
return;
|
||||||
|
|
||||||
|
//Erruption_Timer
|
||||||
|
if (LavaBurst_Timer <= diff)
|
||||||
|
{
|
||||||
|
DoCast(me->getVictim(), SPELL_ERRUPTION);
|
||||||
|
Erruption_Timer = urand(20000,45000);
|
||||||
|
} else Erruption_Timer -= diff;
|
||||||
|
|
||||||
|
//WrathOfRagnaros_Timer
|
||||||
|
if (WrathOfRagnaros_Timer <= diff)
|
||||||
|
{
|
||||||
|
DoCast(me->getVictim(), SPELL_WRATHOFRAGNAROS);
|
||||||
|
|
||||||
|
if (urand(0,1))
|
||||||
|
DoScriptText(SAY_WRATH, me);
|
||||||
|
|
||||||
|
WrathOfRagnaros_Timer = 25000;
|
||||||
|
} else WrathOfRagnaros_Timer -= diff;
|
||||||
|
|
||||||
|
//HandOfRagnaros_Timer
|
||||||
|
if (HandOfRagnaros_Timer <= diff)
|
||||||
|
{
|
||||||
|
DoCast(me, SPELL_HANDOFRAGNAROS);
|
||||||
|
|
||||||
|
if (urand(0,1))
|
||||||
|
DoScriptText(SAY_HAND, me);
|
||||||
|
|
||||||
|
HandOfRagnaros_Timer = 20000;
|
||||||
|
} else HandOfRagnaros_Timer -= diff;
|
||||||
|
|
||||||
|
//LavaBurst_Timer
|
||||||
|
if (LavaBurst_Timer <= diff)
|
||||||
|
{
|
||||||
|
DoCast(me->getVictim(), SPELL_LAVABURST);
|
||||||
|
LavaBurst_Timer = 10000;
|
||||||
|
} else LavaBurst_Timer -= diff;
|
||||||
|
|
||||||
|
//ElementalFire_Timer
|
||||||
|
if (ElementalFire_Timer <= diff)
|
||||||
|
{
|
||||||
|
DoCast(me->getVictim(), SPELL_ELEMENTALFIRE);
|
||||||
|
ElementalFire_Timer = urand(10000,14000);
|
||||||
|
} else ElementalFire_Timer -= diff;
|
||||||
|
|
||||||
|
//Submerge_Timer
|
||||||
|
if (!WasBanished && Submerge_Timer <= diff && instance)
|
||||||
|
{
|
||||||
|
//Creature spawning and ragnaros becomming unattackable
|
||||||
|
//is not very well supported in the core //no it really isnt
|
||||||
|
//so added normaly spawning and banish workaround and attack again after 90 secs.
|
||||||
|
|
||||||
|
me->AttackStop();
|
||||||
|
DoResetThreat();
|
||||||
|
me->SetReactState(REACT_PASSIVE);
|
||||||
|
me->InterruptNonMeleeSpells(false);
|
||||||
|
//Root self
|
||||||
|
//DoCast(me, 23973);
|
||||||
|
me->setFaction(35);
|
||||||
|
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
me->SetFlag(UNIT_NPC_EMOTESTATE,EMOTE_STATE_SUBMERGED);
|
||||||
|
me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
|
||||||
|
instance->SetData(DATA_RAG_ELE_COUNTER, 0);
|
||||||
|
|
||||||
|
if (!HasSubmergedOnce)
|
||||||
|
{
|
||||||
|
DoScriptText(SAY_REINFORCEMENTS1, me);
|
||||||
|
|
||||||
|
// summon 10 elementals
|
||||||
|
for (uint8 i = 0; i < 9; ++i)
|
||||||
{
|
{
|
||||||
if (Creature* pSummoned = me->SummonCreature(12143,pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(),0.0f,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000))
|
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
pSummoned->AI()->AttackStart(pTarget);
|
{
|
||||||
|
if (Creature* pSummoned = me->SummonCreature(12143,pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(),0.0f,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000))
|
||||||
|
pSummoned->AI()->AttackStart(pTarget);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HasSubmergedOnce = true;
|
||||||
|
WasBanished = true;
|
||||||
|
//DoCast(me, SPELL_RAGSUBMERGE);
|
||||||
|
Attack_Timer = 90000;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DoScriptText(SAY_REINFORCEMENTS2, me);
|
||||||
|
|
||||||
|
for (uint8 i = 0; i < 9; ++i)
|
||||||
|
{
|
||||||
|
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
|
{
|
||||||
|
if (Creature* pSummoned = me->SummonCreature(12143,pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(),0.0f,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000))
|
||||||
|
pSummoned->AI()->AttackStart(pTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WasBanished = true;
|
||||||
|
//DoCast(me, SPELL_RAGSUBMERGE);
|
||||||
|
Attack_Timer = 90000;
|
||||||
}
|
}
|
||||||
|
|
||||||
HasSubmergedOnce = true;
|
Submerge_Timer = 180000;
|
||||||
WasBanished = true;
|
} else Submerge_Timer -= diff;
|
||||||
DoCast(me, SPELL_RAGSUBMERGE);
|
|
||||||
Attack_Timer = 90000;
|
|
||||||
|
|
||||||
|
//If we are within range melee the target
|
||||||
|
if (me->IsWithinMeleeRange(me->getVictim()))
|
||||||
|
{
|
||||||
|
//Make sure our attack is ready and we arn't currently casting
|
||||||
|
if (me->isAttackReady() && !me->IsNonMeleeSpellCasted(false))
|
||||||
|
{
|
||||||
|
me->AttackerStateUpdate(me->getVictim());
|
||||||
|
me->resetAttackTimer();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DoScriptText(SAY_REINFORCEMENTS2, me);
|
//MagmaBurst_Timer
|
||||||
|
if (MagmaBurst_Timer <= diff)
|
||||||
for (uint8 i = 0; i < 9; ++i)
|
|
||||||
{
|
{
|
||||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
DoCast(me->getVictim(), SPELL_MAGMABURST);
|
||||||
|
|
||||||
|
if (!HasYelledMagmaBurst)
|
||||||
{
|
{
|
||||||
if (Creature* pSummoned = me->SummonCreature(12143,pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(),0.0f,TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN,900000))
|
//Say our dialog
|
||||||
pSummoned->AI()->AttackStart(pTarget);
|
DoScriptText(SAY_MAGMABURST, me);
|
||||||
|
HasYelledMagmaBurst = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
WasBanished = true;
|
MagmaBurst_Timer = 2500;
|
||||||
DoCast(me, SPELL_RAGSUBMERGE);
|
} else MagmaBurst_Timer -= diff;
|
||||||
Attack_Timer = 90000;
|
|
||||||
}
|
|
||||||
|
|
||||||
Submerge_Timer = 180000;
|
|
||||||
} else Submerge_Timer -= diff;
|
|
||||||
|
|
||||||
//If we are within range melee the target
|
|
||||||
if (me->IsWithinMeleeRange(me->getVictim()))
|
|
||||||
{
|
|
||||||
//Make sure our attack is ready and we arn't currently casting
|
|
||||||
if (me->isAttackReady() && !me->IsNonMeleeSpellCasted(false))
|
|
||||||
{
|
|
||||||
me->AttackerStateUpdate(me->getVictim());
|
|
||||||
me->resetAttackTimer();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//MagmaBurst_Timer
|
me->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
|
||||||
if (MagmaBurst_Timer <= diff)
|
Intro_Timer = 4000;
|
||||||
{
|
Intro = 1;
|
||||||
DoCast(me->getVictim(), SPELL_MAGMABURST);
|
|
||||||
|
|
||||||
if (!HasYelledMagmaBurst)
|
|
||||||
{
|
|
||||||
//Say our dialog
|
|
||||||
DoScriptText(SAY_MAGMABURST, me);
|
|
||||||
HasYelledMagmaBurst = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
MagmaBurst_Timer = 2500;
|
|
||||||
} else MagmaBurst_Timer -= diff;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class mob_SonOfFlame : public CreatureScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mob_SonOfFlame() : CreatureScript("mob_SonOfFlame") { }
|
||||||
|
|
||||||
|
CreatureAI* GetAI(Creature* pCreature) const
|
||||||
|
{
|
||||||
|
return new mob_SonOfFlameAI(pCreature);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct mob_SonOfFlameAI : public ScriptedAI //didnt work correctly in EAI for me...
|
||||||
|
{
|
||||||
|
mob_SonOfFlameAI(Creature *c) : ScriptedAI(c)
|
||||||
|
{
|
||||||
|
pInstance = me->GetInstanceScript();
|
||||||
|
}
|
||||||
|
|
||||||
|
InstanceScript* pInstance;
|
||||||
|
|
||||||
|
void JustDied(Unit * /*victim*/)
|
||||||
|
{
|
||||||
|
if (pInstance)
|
||||||
|
pInstance->SetData(DATA_RAG_ELE_COUNTER, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateAI(const uint32 diff)
|
||||||
|
{
|
||||||
|
if (!UpdateVictim())
|
||||||
|
return;
|
||||||
|
|
||||||
|
DoMeleeAttackIfReady();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void AddSC_boss_ragnaros()
|
void AddSC_boss_ragnaros()
|
||||||
{
|
{
|
||||||
new boss_ragnaros();
|
new boss_ragnaros();
|
||||||
|
new mob_SonOfFlame();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ SDCategory: Molten Core
|
|||||||
EndScriptData */
|
EndScriptData */
|
||||||
|
|
||||||
#include "ScriptPCH.h"
|
#include "ScriptPCH.h"
|
||||||
|
#include "molten_core.h"
|
||||||
|
|
||||||
#define SPELL_ARCANEEXPLOSION 19712
|
#define SPELL_ARCANEEXPLOSION 19712
|
||||||
#define SPELL_SHAZZRAHCURSE 19713
|
#define SPELL_SHAZZRAHCURSE 19713
|
||||||
@@ -42,7 +43,12 @@ public:
|
|||||||
|
|
||||||
struct boss_shazzrahAI : public ScriptedAI
|
struct boss_shazzrahAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
boss_shazzrahAI(Creature *c) : ScriptedAI(c) {}
|
boss_shazzrahAI(Creature *pCreature) : ScriptedAI(pCreature)
|
||||||
|
{
|
||||||
|
m_pInstance = pCreature->GetInstanceScript();
|
||||||
|
}
|
||||||
|
|
||||||
|
InstanceScript* m_pInstance;
|
||||||
|
|
||||||
uint32 ArcaneExplosion_Timer;
|
uint32 ArcaneExplosion_Timer;
|
||||||
uint32 ShazzrahCurse_Timer;
|
uint32 ShazzrahCurse_Timer;
|
||||||
@@ -59,6 +65,12 @@ public:
|
|||||||
Blink_Timer = 30000;
|
Blink_Timer = 30000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*pKiller*/)
|
||||||
|
{
|
||||||
|
if (m_pInstance)
|
||||||
|
m_pInstance->SetData(DATA_SHAZZRAH, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit * /*who*/)
|
void EnterCombat(Unit * /*who*/)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,11 @@ public:
|
|||||||
|
|
||||||
struct boss_sulfuronAI : public ScriptedAI
|
struct boss_sulfuronAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
boss_sulfuronAI(Creature *c) : ScriptedAI(c) {}
|
boss_sulfuronAI(Creature *pCreature) : ScriptedAI(pCreature)
|
||||||
|
{
|
||||||
|
m_pInstance = pCreature->GetInstanceScript();
|
||||||
|
}
|
||||||
|
InstanceScript* m_pInstance;
|
||||||
|
|
||||||
uint32 Darkstrike_Timer;
|
uint32 Darkstrike_Timer;
|
||||||
uint32 DemoralizingShout_Timer;
|
uint32 DemoralizingShout_Timer;
|
||||||
@@ -66,6 +70,12 @@ public:
|
|||||||
Flamespear_Timer = 2000;
|
Flamespear_Timer = 2000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*pKiller*/)
|
||||||
|
{
|
||||||
|
if (m_pInstance)
|
||||||
|
m_pInstance->SetData(DATA_SULFURON, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit * /*who*/)
|
void EnterCombat(Unit * /*who*/)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ EndScriptData */
|
|||||||
#include "ScriptPCH.h"
|
#include "ScriptPCH.h"
|
||||||
#include "molten_core.h"
|
#include "molten_core.h"
|
||||||
|
|
||||||
#define MAX_ENCOUNTER 9
|
#define MAX_ENCOUNTER 10
|
||||||
|
|
||||||
#define ID_LUCIFRON 12118
|
#define ID_LUCIFRON 12118
|
||||||
#define ID_MAGMADAR 11982
|
#define ID_MAGMADAR 11982
|
||||||
@@ -39,6 +39,22 @@ EndScriptData */
|
|||||||
#define ID_DOMO 12018
|
#define ID_DOMO 12018
|
||||||
#define ID_RAGNAROS 11502
|
#define ID_RAGNAROS 11502
|
||||||
#define ID_FLAMEWAKERPRIEST 11662
|
#define ID_FLAMEWAKERPRIEST 11662
|
||||||
|
#define ID_FLAMEWAKERHEALER 11663
|
||||||
|
#define ID_FLAMEWAKERELITE 11664
|
||||||
|
|
||||||
|
const Position Pos[10] =
|
||||||
|
{
|
||||||
|
{737.85f,-1145.35f,-120.288f,4.71368f},
|
||||||
|
{744.162f,-1151.63f,-119.726f,4.58204f},
|
||||||
|
{751.247f,-1152.82f,-119.744f,4.49673f},
|
||||||
|
{759.206f,-1155.09f,-120.051f,4.30104f},
|
||||||
|
{755.973f,-1152.33f,-120.029f,4.25588f},
|
||||||
|
{731.712f,-1147.56f,-120.195f,4.95955f},
|
||||||
|
{726.499f,-1149.8f,-120.156f,5.24055f},
|
||||||
|
{722.408f,-1152.41f,-120.029f,5.33087f},
|
||||||
|
{718.994f,-1156.36f,-119.805f,5.75738f},
|
||||||
|
{838.51f,-829.84f,-232.00f,2.00f},
|
||||||
|
};
|
||||||
|
|
||||||
class instance_molten_core : public InstanceMapScript
|
class instance_molten_core : public InstanceMapScript
|
||||||
{
|
{
|
||||||
@@ -54,214 +70,304 @@ public:
|
|||||||
{
|
{
|
||||||
instance_molten_core_InstanceMapScript(Map* pMap) : InstanceScript(pMap) {Initialize();};
|
instance_molten_core_InstanceMapScript(Map* pMap) : InstanceScript(pMap) {Initialize();};
|
||||||
|
|
||||||
uint64 Lucifron, Magmadar, Gehennas, Garr, Geddon, Shazzrah, Sulfuron, Golemagg, Domo, Ragnaros, FlamewakerPriest;
|
uint64 Lucifron, Magmadar, Gehennas, Garr, Geddon, Shazzrah, Sulfuron, Golemagg, Domo, Ragnaros, FlamewakerPriest;
|
||||||
uint64 RuneKoro, RuneZeth, RuneMazj, RuneTheri, RuneBlaz, RuneKress, RuneMohn, m_uiFirelordCacheGUID;
|
uint64 RuneKoro, RuneZeth, RuneMazj, RuneTheri, RuneBlaz, RuneKress, RuneMohn, m_uiFirelordCacheGUID;
|
||||||
|
uint8 rag_ele_counter;
|
||||||
|
|
||||||
//If all Bosses are dead.
|
//If all Bosses are dead.
|
||||||
bool IsBossDied[9];
|
bool IsBossDied[9];
|
||||||
|
bool summoned;
|
||||||
|
|
||||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
bool rag_summoned;
|
||||||
|
|
||||||
void Initialize()
|
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||||
{
|
|
||||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
|
||||||
|
|
||||||
Lucifron = 0;
|
void Initialize()
|
||||||
Magmadar = 0;
|
{
|
||||||
Gehennas = 0;
|
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||||
Garr = 0;
|
|
||||||
Geddon = 0;
|
|
||||||
Shazzrah = 0;
|
|
||||||
Sulfuron = 0;
|
|
||||||
Golemagg = 0;
|
|
||||||
Domo = 0;
|
|
||||||
Ragnaros = 0;
|
|
||||||
FlamewakerPriest = 0;
|
|
||||||
|
|
||||||
RuneKoro = 0;
|
Lucifron = 0;
|
||||||
RuneZeth = 0;
|
Magmadar = 0;
|
||||||
RuneMazj = 0;
|
Gehennas = 0;
|
||||||
RuneTheri = 0;
|
Garr = 0;
|
||||||
RuneBlaz = 0;
|
Geddon = 0;
|
||||||
RuneKress = 0;
|
Shazzrah = 0;
|
||||||
RuneMohn = 0;
|
Sulfuron = 0;
|
||||||
|
Golemagg = 0;
|
||||||
|
Domo = 0;
|
||||||
|
Ragnaros = 0;
|
||||||
|
FlamewakerPriest = 0;
|
||||||
|
|
||||||
m_uiFirelordCacheGUID = 0;
|
RuneKoro = 0;
|
||||||
|
RuneZeth = 0;
|
||||||
|
RuneMazj = 0;
|
||||||
|
RuneTheri = 0;
|
||||||
|
RuneBlaz = 0;
|
||||||
|
RuneKress = 0;
|
||||||
|
RuneMohn = 0;
|
||||||
|
|
||||||
IsBossDied[0] = false;
|
rag_ele_counter = 0;
|
||||||
IsBossDied[1] = false;
|
|
||||||
IsBossDied[2] = false;
|
|
||||||
IsBossDied[3] = false;
|
|
||||||
IsBossDied[4] = false;
|
|
||||||
IsBossDied[5] = false;
|
|
||||||
IsBossDied[6] = false;
|
|
||||||
|
|
||||||
IsBossDied[7] = false;
|
m_uiFirelordCacheGUID = 0;
|
||||||
IsBossDied[8] = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsEncounterInProgress() const
|
IsBossDied[0] = false;
|
||||||
{
|
IsBossDied[1] = false;
|
||||||
return false;
|
IsBossDied[2] = false;
|
||||||
};
|
IsBossDied[3] = false;
|
||||||
|
IsBossDied[4] = false;
|
||||||
|
IsBossDied[5] = false;
|
||||||
|
IsBossDied[6] = false;
|
||||||
|
IsBossDied[7] = false;
|
||||||
|
IsBossDied[8] = false;
|
||||||
|
summoned = false;
|
||||||
|
rag_summoned = false;
|
||||||
|
}
|
||||||
|
|
||||||
void OnGameObjectCreate(GameObject* go)
|
bool IsEncounterInProgress() const
|
||||||
{
|
{
|
||||||
switch(go->GetEntry())
|
return false;
|
||||||
{
|
|
||||||
case 176951: //Sulfuron
|
|
||||||
RuneKoro = go->GetGUID();
|
|
||||||
break;
|
|
||||||
case 176952: //Geddon
|
|
||||||
RuneZeth = go->GetGUID();
|
|
||||||
break;
|
|
||||||
case 176953: //Shazzrah
|
|
||||||
RuneMazj = go->GetGUID();
|
|
||||||
break;
|
|
||||||
case 176954: //Golemagg
|
|
||||||
RuneTheri = go->GetGUID();
|
|
||||||
break;
|
|
||||||
case 176955: //Garr
|
|
||||||
RuneBlaz = go->GetGUID();
|
|
||||||
break;
|
|
||||||
case 176956: //Magmadar
|
|
||||||
RuneKress = go->GetGUID();
|
|
||||||
break;
|
|
||||||
case 176957: //Gehennas
|
|
||||||
RuneMohn = go->GetGUID();
|
|
||||||
break;
|
|
||||||
case 179703:
|
|
||||||
m_uiFirelordCacheGUID = go->GetGUID(); //when majordomo event == DONE DoRespawnGameObject(m_uiFirelordCacheGUID,);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnCreatureCreate(Creature* creature)
|
|
||||||
{
|
|
||||||
switch (creature->GetEntry())
|
|
||||||
{
|
|
||||||
case ID_LUCIFRON:
|
|
||||||
Lucifron = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_MAGMADAR:
|
|
||||||
Magmadar = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_GEHENNAS:
|
|
||||||
Gehennas = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_GARR:
|
|
||||||
Garr = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_GEDDON:
|
|
||||||
Geddon = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_SHAZZRAH:
|
|
||||||
Shazzrah = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_SULFURON:
|
|
||||||
Sulfuron = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_GOLEMAGG:
|
|
||||||
Golemagg = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_DOMO:
|
|
||||||
Domo = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_RAGNAROS:
|
|
||||||
Ragnaros = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_FLAMEWAKERPRIEST:
|
|
||||||
FlamewakerPriest = creature->GetGUID();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64 GetData64 (uint32 identifier)
|
|
||||||
{
|
|
||||||
switch(identifier)
|
|
||||||
{
|
|
||||||
case DATA_SULFURON:
|
|
||||||
return Sulfuron;
|
|
||||||
case DATA_GOLEMAGG:
|
|
||||||
return Golemagg;
|
|
||||||
|
|
||||||
case DATA_FLAMEWAKERPRIEST:
|
|
||||||
return FlamewakerPriest;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 GetData(uint32 type)
|
|
||||||
{
|
|
||||||
switch(type)
|
|
||||||
{
|
|
||||||
case DATA_LUCIFRONISDEAD:
|
|
||||||
if (IsBossDied[0])
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_MAGMADARISDEAD:
|
|
||||||
if (IsBossDied[1])
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_GEHENNASISDEAD:
|
|
||||||
if (IsBossDied[2])
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_GARRISDEAD:
|
|
||||||
if (IsBossDied[3])
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_GEDDONISDEAD:
|
|
||||||
if (IsBossDied[4])
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_SHAZZRAHISDEAD:
|
|
||||||
if (IsBossDied[5])
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_SULFURONISDEAD:
|
|
||||||
if (IsBossDied[6])
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_GOLEMAGGISDEAD:
|
|
||||||
if (IsBossDied[7])
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DATA_MAJORDOMOISDEAD:
|
|
||||||
if (IsBossDied[8])
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetData(uint32 type, uint32 /*data*/)
|
|
||||||
{
|
|
||||||
if (type == DATA_GOLEMAGG_DEATH)
|
|
||||||
IsBossDied[7] = true;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void OnGameObjectCreate(GameObject* pGo)
|
||||||
|
{
|
||||||
|
switch(pGo->GetEntry())
|
||||||
|
{
|
||||||
|
case 176951: //Sulfuron
|
||||||
|
RuneKoro = pGo->GetGUID();
|
||||||
|
break;
|
||||||
|
case 176952: //Geddon
|
||||||
|
RuneZeth = pGo->GetGUID();
|
||||||
|
break;
|
||||||
|
case 176953: //Shazzrah
|
||||||
|
RuneMazj = pGo->GetGUID();
|
||||||
|
break;
|
||||||
|
case 176954: //Golemagg
|
||||||
|
RuneTheri = pGo->GetGUID();
|
||||||
|
break;
|
||||||
|
case 176955: //Garr
|
||||||
|
RuneBlaz = pGo->GetGUID();
|
||||||
|
break;
|
||||||
|
case 176956: //Magmadar
|
||||||
|
RuneKress = pGo->GetGUID();
|
||||||
|
break;
|
||||||
|
case 176957: //Gehennas
|
||||||
|
RuneMohn = pGo->GetGUID();
|
||||||
|
break;
|
||||||
|
case 179703:
|
||||||
|
m_uiFirelordCacheGUID = pGo->GetGUID(); //when majordomo event == DONE DoRespawnGameObject(m_uiFirelordCacheGUID,);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnCreatureCreate(Creature* pCreature)
|
||||||
|
{
|
||||||
|
switch (pCreature->GetEntry())
|
||||||
|
{
|
||||||
|
case ID_LUCIFRON:
|
||||||
|
Lucifron = pCreature->GetGUID();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_MAGMADAR:
|
||||||
|
Magmadar = pCreature->GetGUID();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_GEHENNAS:
|
||||||
|
Gehennas = pCreature->GetGUID();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_GARR:
|
||||||
|
Garr = pCreature->GetGUID();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_GEDDON:
|
||||||
|
Geddon = pCreature->GetGUID();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_SHAZZRAH:
|
||||||
|
Shazzrah = pCreature->GetGUID();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_SULFURON:
|
||||||
|
Sulfuron = pCreature->GetGUID();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_GOLEMAGG:
|
||||||
|
Golemagg = pCreature->GetGUID();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_DOMO:
|
||||||
|
Domo = pCreature->GetGUID();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_RAGNAROS:
|
||||||
|
Ragnaros = pCreature->GetGUID();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ID_FLAMEWAKERPRIEST:
|
||||||
|
FlamewakerPriest = pCreature->GetGUID();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64 GetData64 (uint32 identifier)
|
||||||
|
{
|
||||||
|
switch(identifier)
|
||||||
|
{
|
||||||
|
case DATA_SULFURON:
|
||||||
|
return Sulfuron;
|
||||||
|
case DATA_GOLEMAGG:
|
||||||
|
return Golemagg;
|
||||||
|
case DATA_MAJORDOMO_GUID:
|
||||||
|
return Domo;
|
||||||
|
|
||||||
|
case DATA_FLAMEWAKERPRIEST:
|
||||||
|
return FlamewakerPriest;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32 GetData(uint32 type)
|
||||||
|
{
|
||||||
|
switch(type)
|
||||||
|
{
|
||||||
|
case DATA_LUCIFRONISDEAD:
|
||||||
|
if (IsBossDied[0])
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_MAGMADARISDEAD:
|
||||||
|
if (IsBossDied[1])
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_GEHENNASISDEAD:
|
||||||
|
if (IsBossDied[2])
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_GARRISDEAD:
|
||||||
|
if (IsBossDied[3])
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_GEDDONISDEAD:
|
||||||
|
if (IsBossDied[4])
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_SHAZZRAHISDEAD:
|
||||||
|
if (IsBossDied[5])
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_SULFURONISDEAD:
|
||||||
|
if (IsBossDied[6])
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_GOLEMAGGISDEAD:
|
||||||
|
if (IsBossDied[7])
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_MAJORDOMOISDEAD:
|
||||||
|
if (IsBossDied[8])
|
||||||
|
return 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DATA_RAG_ELE_COUNTER:
|
||||||
|
return rag_ele_counter;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*bool SetBossState(uint32 id, EncounterState state)
|
||||||
|
{
|
||||||
|
if (!InstanceData::SetBossState(id, state))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (id == DATA_MAJORDOMO && state == DONE)
|
||||||
|
{
|
||||||
|
if (GameObject *pFirelordCache = instance->GetGameObject(m_uiFirelordCacheGUID)){
|
||||||
|
pFirelordCache->SetRespawnTime(pFirelordCache->GetRespawnDelay());
|
||||||
|
}
|
||||||
|
instance->SummonCreature(ID_RAGNAROS, Pos[9], TEMPSUMMON_CORPSE_DESPAWN);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} */
|
||||||
|
|
||||||
|
void SetData(uint32 type, uint32 data)
|
||||||
|
{
|
||||||
|
if (type == DATA_LUCIFRON)
|
||||||
|
IsBossDied[0] = true;
|
||||||
|
|
||||||
|
if (type == DATA_MAGMADAR)
|
||||||
|
IsBossDied[1] = true;
|
||||||
|
|
||||||
|
if (type == DATA_GEHENNAS)
|
||||||
|
IsBossDied[2] = true;
|
||||||
|
|
||||||
|
if (type == DATA_GARR)
|
||||||
|
IsBossDied[3] = true;
|
||||||
|
|
||||||
|
if (type == DATA_SHAZZRAH)
|
||||||
|
IsBossDied[4] = true;
|
||||||
|
|
||||||
|
if (type == DATA_GEDDON)
|
||||||
|
IsBossDied[5] = true;
|
||||||
|
|
||||||
|
if (type == DATA_GOLEMAGG)
|
||||||
|
IsBossDied[6] = true;
|
||||||
|
|
||||||
|
if (type == DATA_SULFURON)
|
||||||
|
IsBossDied[7] = true;
|
||||||
|
|
||||||
|
if (type == DATA_RAGNAROS)
|
||||||
|
{
|
||||||
|
rag_summoned = true;
|
||||||
|
instance->SummonCreature(ID_RAGNAROS, Pos[9]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == DATA_RAG_ELE_COUNTER)
|
||||||
|
{
|
||||||
|
if (data == 1)
|
||||||
|
++rag_ele_counter;
|
||||||
|
else if (data == 0)
|
||||||
|
rag_ele_counter = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == DATA_MAJORDOMO)
|
||||||
|
{
|
||||||
|
IsBossDied[8] = true;
|
||||||
|
if (GameObject *pFirelordCache = instance->GetGameObject(m_uiFirelordCacheGUID))
|
||||||
|
{
|
||||||
|
pFirelordCache->SetRespawnTime(pFirelordCache->GetRespawnDelay());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (summoned == false)
|
||||||
|
{
|
||||||
|
|
||||||
|
for(int i=0;i<8;i++)
|
||||||
|
{
|
||||||
|
if (IsBossDied[i] == false)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
instance->SummonCreature(ID_DOMO, Pos[0]);
|
||||||
|
instance->SummonCreature(ID_FLAMEWAKERHEALER, Pos[1]);
|
||||||
|
instance->SummonCreature(ID_FLAMEWAKERHEALER, Pos[2]);
|
||||||
|
instance->SummonCreature(ID_FLAMEWAKERHEALER, Pos[3]);
|
||||||
|
instance->SummonCreature(ID_FLAMEWAKERHEALER, Pos[4]);
|
||||||
|
instance->SummonCreature(ID_FLAMEWAKERELITE, Pos[5]);
|
||||||
|
instance->SummonCreature(ID_FLAMEWAKERELITE, Pos[6]);
|
||||||
|
instance->SummonCreature(ID_FLAMEWAKERELITE, Pos[7]);
|
||||||
|
instance->SummonCreature(ID_FLAMEWAKERELITE, Pos[8]);
|
||||||
|
summoned = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -19,18 +19,37 @@
|
|||||||
#ifndef DEF_MOLTEN_CORE_H
|
#ifndef DEF_MOLTEN_CORE_H
|
||||||
#define DEF_MOLTEN_CORE_H
|
#define DEF_MOLTEN_CORE_H
|
||||||
|
|
||||||
#define DATA_FLAMEWAKERPRIEST 1
|
enum eData
|
||||||
#define DATA_GARRISDEAD 2
|
{
|
||||||
#define DATA_GEDDONISDEAD 3
|
DATA_FLAMEWAKERPRIEST,
|
||||||
#define DATA_GEHENNASISDEAD 4
|
DATA_GARRISDEAD,
|
||||||
#define DATA_GOLEMAGGISDEAD 5
|
DATA_GEDDONISDEAD,
|
||||||
#define DATA_GOLEMAGG_DEATH 6
|
DATA_GEHENNASISDEAD,
|
||||||
#define DATA_LUCIFRONISDEAD 7
|
DATA_GOLEMAGGISDEAD,
|
||||||
#define DATA_MAGMADARISDEAD 8
|
DATA_GOLEMAGG_DEATH,
|
||||||
#define DATA_MAJORDOMOISDEAD 9
|
DATA_LUCIFRONISDEAD,
|
||||||
#define DATA_SHAZZRAHISDEAD 10
|
DATA_MAGMADARISDEAD,
|
||||||
#define DATA_SULFURON 11
|
DATA_MAJORDOMOISDEAD,
|
||||||
#define DATA_SULFURONISDEAD 12
|
DATA_SHAZZRAHISDEAD,
|
||||||
#define DATA_GOLEMAGG 13
|
DATA_SULFURON,
|
||||||
#endif
|
DATA_SULFURONISDEAD,
|
||||||
|
DATA_GOLEMAGG,
|
||||||
|
DATA_LUCIFRON,
|
||||||
|
DATA_MAGMADAR,
|
||||||
|
DATA_GEHENNAS,
|
||||||
|
DATA_GARR,
|
||||||
|
DATA_SHAZZRAH,
|
||||||
|
DATA_GEDDON,
|
||||||
|
DATA_MAJORDOMO,
|
||||||
|
DATA_MAJORDOMO_GUID,
|
||||||
|
DATA_RAGNAROS,
|
||||||
|
DATA_RAG_ELE_COUNTER,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum Encounter
|
||||||
|
{
|
||||||
|
BOSS_MAJORDOMO,
|
||||||
|
BOSS_RAGNAROS
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user