convert Arcatraz to new format

--HG--
branch : trunk
extra : rebase_source : 9c77e524badeccac0c2adbe68110f741b5a3549b
This commit is contained in:
Supabad
2010-08-07 14:17:07 +02:00
parent f1c571a79e
commit 31887e6417
3 changed files with 943 additions and 882 deletions
@@ -36,36 +36,49 @@ EndContentData */
# npc_millhouse_manastorm
#####*/
#define SAY_INTRO_1 -1552010
#define SAY_INTRO_2 -1552011
#define SAY_WATER -1552012
#define SAY_BUFFS -1552013
#define SAY_DRINK -1552014
#define SAY_READY -1552015
#define SAY_KILL_1 -1552016
#define SAY_KILL_2 -1552017
#define SAY_PYRO -1552018
#define SAY_ICEBLOCK -1552019
#define SAY_LOWHP -1552020
#define SAY_DEATH -1552021
#define SAY_COMPLETE -1552022
enum eMillhouseSays
{
SAY_INTRO_1 = -1552010,
SAY_INTRO_2 = -1552011,
SAY_WATER = -1552012,
SAY_BUFFS = -1552013,
SAY_DRINK = -1552014,
SAY_READY = -1552015,
SAY_KILL_1 = -1552016,
SAY_KILL_2 = -1552017,
SAY_PYRO = -1552018,
SAY_ICEBLOCK = -1552019,
SAY_LOWHP = -1552020,
SAY_DEATH = -1552021,
SAY_COMPLETE = -1552022,
};
#define SPELL_CONJURE_WATER 36879
#define SPELL_ARCANE_INTELLECT 36880
#define SPELL_ICE_ARMOR 36881
enum eMillhouseSpells
{
SPELL_CONJURE_WATER = 36879,
SPELL_ARCANE_INTELLECT = 36880,
SPELL_ICE_ARMOR = 36881,
SPELL_ARCANE_MISSILES = 33833,
SPELL_CONE_OF_COLD = 12611,
SPELL_FIRE_BLAST = 13341,
SPELL_FIREBALL = 14034,
SPELL_FROSTBOLT = 15497,
SPELL_PYROBLAST = 33975,
};
#define SPELL_ARCANE_MISSILES 33833
#define SPELL_CONE_OF_COLD 12611
#define SPELL_FIRE_BLAST 13341
#define SPELL_FIREBALL 14034
#define SPELL_FROSTBOLT 15497
#define SPELL_PYROBLAST 33975
class npc_millhouse_manastorm : public CreatureScript
{
public:
npc_millhouse_manastorm()
: CreatureScript("npc_millhouse_manastorm")
{
}
struct npc_millhouse_manastormAI : public ScriptedAI
{
npc_millhouse_manastormAI(Creature *c) : ScriptedAI(c)
npc_millhouse_manastormAI(Creature* pCreature) : ScriptedAI(pCreature)
{
pInstance = c->GetInstanceData();
pInstance = pCreature->GetInstanceData();
}
ScriptedInstance* pInstance;
@@ -94,11 +107,9 @@ struct npc_millhouse_manastormAI : public ScriptedAI
Init = true;
if (pInstance->GetData(TYPE_HARBINGERSKYRISS) == DONE)
{
DoScriptText(SAY_COMPLETE, me);
}
}
}
void AttackStart(Unit* pWho)
{
@@ -107,14 +118,11 @@ struct npc_millhouse_manastormAI : public ScriptedAI
me->AddThreat(pWho, 0.0f);
me->SetInCombatWith(pWho);
pWho->SetInCombatWith(me);
me->GetMotionMaster()->MoveChase(pWho, 25.0f);
}
}
void EnterCombat(Unit * /*who*/)
{
}
void EnterCombat(Unit * /*who*/){}
void KilledUnit(Unit * /*victim*/)
{
@@ -175,12 +183,13 @@ struct npc_millhouse_manastormAI : public ScriptedAI
}
++Phase;
}
} else EventProgress_Timer -= diff;
}
else
EventProgress_Timer -= diff;
}
if (!UpdateVictim())
return;
if (!LowHp && ((me->GetHealth()*100 / me->GetMaxHealth()) < 20))
{
DoScriptText(SAY_LOWHP, me);
@@ -196,63 +205,84 @@ struct npc_millhouse_manastormAI : public ScriptedAI
DoCast(me->getVictim(), SPELL_PYROBLAST);
Pyroblast_Timer = 40000;
} else Pyroblast_Timer -=diff;
}
else
Pyroblast_Timer -=diff;
if (Fireball_Timer <= diff)
{
DoCast(me->getVictim(), SPELL_FIREBALL);
Fireball_Timer = 4000;
} else Fireball_Timer -=diff;
}
else
Fireball_Timer -=diff;
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAI_npc_millhouse_manastorm(Creature* pCreature)
CreatureAI* OnGetAI(Creature* creature) const
{
return new npc_millhouse_manastormAI (pCreature);
return new npc_millhouse_manastormAI(creature);
}
};
/*#####
# npc_warden_mellichar
#####*/
#define YELL_INTRO1 -1552023
#define YELL_INTRO2 -1552024
#define YELL_RELEASE1 -1552025
#define YELL_RELEASE2A -1552026
#define YELL_RELEASE2B -1552027
#define YELL_RELEASE3 -1552028
#define YELL_RELEASE4 -1552029
#define YELL_WELCOME -1552030
enum eWardenSays
{
YELL_INTRO1 = -1552023,
YELL_INTRO2 = -1552024,
YELL_RELEASE1 = -1552025,
YELL_RELEASE2A = -1552026,
YELL_RELEASE2B = -1552027,
YELL_RELEASE3 = -1552028,
YELL_RELEASE4 = -1552029,
YELL_WELCOME = -1552030,
};
enum eWardenUnits
{
//phase 2(acid mobs)
#define ENTRY_TRICKSTER 20905
#define ENTRY_PH_HUNTER 20906
ENTRY_TRICKSTER = 20905,
ENTRY_PH_HUNTER = 20906,
//phase 3
#define ENTRY_MILLHOUSE 20977
ENTRY_MILLHOUSE = 20977,
//phase 4(acid mobs)
#define ENTRY_AKKIRIS 20908
#define ENTRY_SULFURON 20909
ENTRY_AKKIRIS = 20908,
ENTRY_SULFURON = 20909,
//phase 5(acid mobs)
#define ENTRY_TW_DRAK 20910
#define ENTRY_BL_DRAK 20911
ENTRY_TW_DRAK = 20910,
ENTRY_BL_DRAK = 20911,
//phase 6
#define ENTRY_SKYRISS 20912
ENTRY_SKYRISS = 20912,
};
enum eWardenSpells
{
//TARGET_SCRIPT
#define SPELL_TARGET_ALPHA 36856
#define SPELL_TARGET_BETA 36854
#define SPELL_TARGET_DELTA 36857
#define SPELL_TARGET_GAMMA 36858
#define SPELL_TARGET_OMEGA 36852
#define SPELL_BUBBLE_VISUAL 36849
SPELL_TARGET_ALPHA = 36856,
SPELL_TARGET_BETA = 36854,
SPELL_TARGET_DELTA = 36857,
SPELL_TARGET_GAMMA = 36858,
SPELL_TARGET_OMEGA = 36852,
SPELL_BUBBLE_VISUAL = 36849,
};
class npc_warden_mellichar : public CreatureScript
{
public:
npc_warden_mellichar()
: CreatureScript("npc_warden_mellichar")
{
}
struct npc_warden_mellicharAI : public ScriptedAI
{
npc_warden_mellicharAI(Creature *c) : ScriptedAI(c)
npc_warden_mellicharAI(Creature* pCreature) : ScriptedAI(pCreature)
{
pInstance = c->GetInstanceData();
pInstance = pCreature->GetInstanceData();
}
ScriptedInstance* pInstance;
@@ -395,8 +425,12 @@ struct npc_warden_mellicharAI : public ScriptedAI
case 2:
switch (urand(0,1))
{
case 0: me->SummonCreature(ENTRY_TRICKSTER,478.326,-148.505,42.56,3.19,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break;
case 1: me->SummonCreature(ENTRY_PH_HUNTER,478.326,-148.505,42.56,3.19,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break;
case 0:
me->SummonCreature(ENTRY_TRICKSTER,478.326,-148.505,42.56,3.19,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000);
break;
case 1:
me->SummonCreature(ENTRY_PH_HUNTER,478.326,-148.505,42.56,3.19,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000);
break;
}
break;
case 3:
@@ -408,15 +442,23 @@ struct npc_warden_mellicharAI : public ScriptedAI
case 5:
switch (urand(0,1))
{
case 0: me->SummonCreature(ENTRY_AKKIRIS,420.179,-174.396,42.58,0.02,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break;
case 1: me->SummonCreature(ENTRY_SULFURON,420.179,-174.396,42.58,0.02,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break;
case 0:
me->SummonCreature(ENTRY_AKKIRIS,420.179,-174.396,42.58,0.02,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000);
break;
case 1:
me->SummonCreature(ENTRY_SULFURON,420.179,-174.396,42.58,0.02,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000);
break;
}
break;
case 6:
switch (urand(0,1))
{
case 0: me->SummonCreature(ENTRY_TW_DRAK,471.795,-174.58,42.58,3.06,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break;
case 1: me->SummonCreature(ENTRY_BL_DRAK,471.795,-174.58,42.58,3.06,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000); break;
case 0:
me->SummonCreature(ENTRY_TW_DRAK,471.795,-174.58,42.58,3.06,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000);
break;
case 1:
me->SummonCreature(ENTRY_BL_DRAK,471.795,-174.58,42.58,3.06,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,600000);
break;
}
break;
case 7:
@@ -466,13 +508,17 @@ struct npc_warden_mellicharAI : public ScriptedAI
break;
}
}
} else EventProgress_Timer -= diff;
}
else
EventProgress_Timer -= diff;
}
};
CreatureAI* GetAI_npc_warden_mellichar(Creature* pCreature)
CreatureAI* OnGetAI(Creature* creature) const
{
return new npc_warden_mellicharAI (pCreature);
return new npc_warden_mellicharAI(creature);
}
};
/*#####
# mob_zerekethvoidzone (this script probably not needed in future -> `creature_template_addon`.`auras`='36120 0')
@@ -480,9 +526,17 @@ CreatureAI* GetAI_npc_warden_mellichar(Creature* pCreature)
#define SPELL_VOID_ZONE_DAMAGE 36120
class mob_zerekethvoidzone : public CreatureScript
{
public:
mob_zerekethvoidzone()
: CreatureScript("mob_zerekethvoidzone")
{
}
struct mob_zerekethvoidzoneAI : public ScriptedAI
{
mob_zerekethvoidzoneAI(Creature *c) : ScriptedAI(c) {}
mob_zerekethvoidzoneAI(Creature* pCreature) : ScriptedAI(pCreature) {}
void Reset()
{
@@ -495,28 +549,16 @@ struct mob_zerekethvoidzoneAI : public ScriptedAI
void EnterCombat(Unit* /*who*/) {}
};
CreatureAI* GetAI_mob_zerekethvoidzoneAI(Creature* pCreature)
{
return new mob_zerekethvoidzoneAI (pCreature);
}
CreatureAI* OnGetAI(Creature* creature) const
{
return new mob_zerekethvoidzoneAI(creature);
}
};
void AddSC_arcatraz()
{
Script *newscript;
newscript = new Script;
newscript->Name = "npc_millhouse_manastorm";
newscript->GetAI = &GetAI_npc_millhouse_manastorm;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "npc_warden_mellichar";
newscript->GetAI = &GetAI_npc_warden_mellichar;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "mob_zerekethvoidzone";
newscript->GetAI = &GetAI_mob_zerekethvoidzoneAI;
newscript->RegisterSelf();
new npc_millhouse_manastorm();
new npc_warden_mellichar();
new mob_zerekethvoidzone();
}
@@ -31,35 +31,46 @@ EndContentData */
#include "ScriptPCH.h"
#include "arcatraz.h"
#define SAY_INTRO -1552000
#define SAY_AGGRO -1552001
#define SAY_KILL_1 -1552002
#define SAY_KILL_2 -1552003
#define SAY_MIND_1 -1552004
#define SAY_MIND_2 -1552005
#define SAY_FEAR_1 -1552006
#define SAY_FEAR_2 -1552007
#define SAY_IMAGE -1552008
#define SAY_DEATH -1552009
enum eSays
{
SAY_INTRO = -1552000,
SAY_AGGRO = -1552001,
SAY_KILL_1 = -1552002,
SAY_KILL_2 = -1552003,
SAY_MIND_1 = -1552004,
SAY_MIND_2 = -1552005,
SAY_FEAR_1 = -1552006,
SAY_FEAR_2 = -1552007,
SAY_IMAGE = -1552008,
SAY_DEATH = -1552009,
};
#define SPELL_FEAR 39415
enum eSpells
{
SPELL_FEAR = 39415,
SPELL_MIND_REND = 36924,
H_SPELL_MIND_REND = 39017,
SPELL_DOMINATION = 37162,
H_SPELL_DOMINATION = 39019,
H_SPELL_MANA_BURN = 39020,
SPELL_66_ILLUSION = 36931, //entry 21466
SPELL_33_ILLUSION = 36932, //entry 21467
};
#define SPELL_MIND_REND 36924
#define H_SPELL_MIND_REND 39017
#define SPELL_DOMINATION 37162
#define H_SPELL_DOMINATION 39019
#define H_SPELL_MANA_BURN 39020
#define SPELL_66_ILLUSION 36931 //entry 21466
#define SPELL_33_ILLUSION 36932 //entry 21467
class boss_harbinger_skyriss : public CreatureScript
{
public:
boss_harbinger_skyriss()
: CreatureScript("boss_harbinger_skyriss")
{
}
struct boss_harbinger_skyrissAI : public ScriptedAI
{
boss_harbinger_skyrissAI(Creature *c) : ScriptedAI(c)
boss_harbinger_skyrissAI(Creature* pCreature) : ScriptedAI(pCreature)
{
pInstance = c->GetInstanceData();
pInstance = pCreature->GetInstanceData();
Intro = false;
}
@@ -95,9 +106,8 @@ struct boss_harbinger_skyrissAI : public ScriptedAI
void MoveInLineOfSight(Unit *who)
{
if (!Intro)
{
return;
}
ScriptedAI::MoveInLineOfSight(who);
}
@@ -179,9 +189,10 @@ struct boss_harbinger_skyrissAI : public ScriptedAI
Intro = true;
break;
}
} else Intro_Timer -=diff;
}
else
Intro_Timer -=diff;
}
if (!UpdateVictim())
return;
@@ -204,7 +215,9 @@ struct boss_harbinger_skyrissAI : public ScriptedAI
DoCast(me->getVictim(), SPELL_MIND_REND);
MindRend_Timer = 8000;
} else MindRend_Timer -=diff;
}
else
MindRend_Timer -=diff;
if (Fear_Timer <= diff)
{
@@ -219,7 +232,9 @@ struct boss_harbinger_skyrissAI : public ScriptedAI
DoCast(me->getVictim(), SPELL_FEAR);
Fear_Timer = 25000;
} else Fear_Timer -=diff;
}
else
Fear_Timer -=diff;
if (Domination_Timer <= diff)
{
@@ -234,7 +249,9 @@ struct boss_harbinger_skyrissAI : public ScriptedAI
DoCast(me->getVictim(), SPELL_DOMINATION);
Domination_Timer = 16000+rand()%16000;
} else Domination_Timer -=diff;
}
else
Domination_Timer -=diff;
if (IsHeroic())
{
@@ -247,9 +264,10 @@ struct boss_harbinger_skyrissAI : public ScriptedAI
DoCast(pTarget, H_SPELL_MANA_BURN);
ManaBurn_Timer = 16000+rand()%16000;
} else ManaBurn_Timer -=diff;
}
else
ManaBurn_Timer -=diff;
}
DoMeleeAttackIfReady();
}
};
@@ -258,38 +276,39 @@ CreatureAI* GetAI_boss_harbinger_skyriss(Creature* pCreature)
{
return new boss_harbinger_skyrissAI (pCreature);
}
};
#define SPELL_MIND_REND_IMAGE 36929
#define H_SPELL_MIND_REND_IMAGE 39021
struct boss_harbinger_skyriss_illusionAI : public ScriptedAI
class boss_harbinger_skyriss_illusion : public CreatureScript
{
boss_harbinger_skyriss_illusionAI(Creature *c) : ScriptedAI(c)
public:
boss_harbinger_skyriss_illusion()
: CreatureScript("boss_harbinger_skyriss_illusion")
{
}
struct boss_harbinger_skyriss_illusionAI : public ScriptedAI
{
boss_harbinger_skyriss_illusionAI(Creature* pCreature) : ScriptedAI(pCreature) {}
void Reset() { }
void EnterCombat(Unit * /*who*/) { }
};
CreatureAI* GetAI_boss_harbinger_skyriss_illusion(Creature* pCreature)
CreatureAI* GetAI(Creature* creature) const
{
return new boss_harbinger_skyriss_illusionAI (pCreature);
return new boss_harbinger_skyriss_illusionAI(creature);
}
};
void AddSC_boss_harbinger_skyriss()
{
Script *newscript;
newscript = new Script;
newscript->Name = "boss_harbinger_skyriss";
newscript->GetAI = &GetAI_boss_harbinger_skyriss;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "boss_harbinger_skyriss_illusion";
newscript->GetAI = &GetAI_boss_harbinger_skyriss_illusion;
newscript->RegisterSelf();
new boss_harbinger_skyriss();
new boss_harbinger_skyriss_illusion();
}
@@ -28,17 +28,21 @@ EndScriptData */
#define MAX_ENCOUNTER 9
#define CONTAINMENT_CORE_SECURITY_FIELD_ALPHA 184318 //door opened when Wrath-Scryer Soccothrates dies
#define CONTAINMENT_CORE_SECURITY_FIELD_BETA 184319 //door opened when Dalliah the Doomsayer dies
#define POD_ALPHA 183961 //pod first boss wave
#define POD_BETA 183963 //pod second boss wave
#define POD_DELTA 183964 //pod third boss wave
#define POD_GAMMA 183962 //pod fourth boss wave
#define POD_OMEGA 183965 //pod fifth boss wave
#define WARDENS_SHIELD 184802 // warden shield
#define SEAL_SPHERE 184802 //shield 'protecting' mellichar
enum eUnits
{
CONTAINMENT_CORE_SECURITY_FIELD_ALPHA = 184318,//door opened when Wrath-Scryer Soccothrates dies
CONTAINMENT_CORE_SECURITY_FIELD_BETA = 184319,//door opened when Dalliah the Doomsayer dies
POD_ALPHA = 183961,//pod first boss wave
POD_BETA = 183963,//pod second boss wave
POD_DELTA = 183964,//pod third boss wave
POD_GAMMA = 183962,//pod fourth boss wave
POD_OMEGA = 183965,//pod fifth boss wave
WARDENS_SHIELD = 184802,// warden shield
SEAL_SPHERE = 184802,//shield 'protecting' mellichar
MELLICHAR = 20904,//skyriss will kill this unit
};
#define MELLICHAR 20904 //skyriss will kill this unit
/* Arcatraz encounters:
1 - Zereketh the Unbound event
@@ -47,9 +51,16 @@ EndScriptData */
4 - Harbinger Skyriss event, 5 sub-events
*/
struct instance_arcatraz : public ScriptedInstance
class instance_arcatraz : public InstanceMapScript
{
instance_arcatraz(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
public:
instance_arcatraz()
: InstanceMapScript("instance_arcatraz")
{
}
struct instance_arcatraz_InstanceMapScript : public ScriptedInstance
{
instance_arcatraz_InstanceMapScript(Map* pMap) : ScriptedInstance(pMap) { Initialize(); };
uint32 m_auiEncounter[MAX_ENCOUNTER];
@@ -88,6 +99,7 @@ struct instance_arcatraz : public ScriptedInstance
return false;
}
void OnGameObjectCreate(GameObject* pGo, bool /*add*/)
{
switch(pGo->GetEntry())
@@ -117,7 +129,6 @@ struct instance_arcatraz : public ScriptedInstance
case TYPE_ZEREKETH:
m_auiEncounter[0] = data;
break;
case TYPE_DALLIAH:
if (data == DONE)
{
@@ -126,7 +137,6 @@ struct instance_arcatraz : public ScriptedInstance
}
m_auiEncounter[1] = data;
break;
case TYPE_SOCCOTHRATES:
if (data == DONE)
{
@@ -135,7 +145,6 @@ struct instance_arcatraz : public ScriptedInstance
}
m_auiEncounter[2] = data;
break;
case TYPE_HARBINGERSKYRISS:
if (data == NOT_STARTED || data == FAIL)
{
@@ -147,14 +156,12 @@ struct instance_arcatraz : public ScriptedInstance
}
m_auiEncounter[3] = data;
break;
case TYPE_WARDEN_1:
if (data == IN_PROGRESS)
if (GameObject *pGo = instance->GetGameObject(Pod_AlphaGUID))
pGo->UseDoorOrButton();
m_auiEncounter[4] = data;
break;
case TYPE_WARDEN_2:
if (data == IN_PROGRESS)
{
@@ -163,7 +170,6 @@ struct instance_arcatraz : public ScriptedInstance
}
m_auiEncounter[5] = data;
break;
case TYPE_WARDEN_3:
if (data == IN_PROGRESS)
{
@@ -172,7 +178,6 @@ struct instance_arcatraz : public ScriptedInstance
}
m_auiEncounter[6] = data;
break;
case TYPE_WARDEN_4:
if (data == IN_PROGRESS)
{
@@ -181,7 +186,6 @@ struct instance_arcatraz : public ScriptedInstance
}
m_auiEncounter[7] = data;
break;
case TYPE_WARDEN_5:
if (data == IN_PROGRESS)
{
@@ -190,7 +194,6 @@ struct instance_arcatraz : public ScriptedInstance
}
m_auiEncounter[8] = data;
break;
case TYPE_SHIELD_OPEN:
if (data == IN_PROGRESS)
{
@@ -226,17 +229,14 @@ struct instance_arcatraz : public ScriptedInstance
}
};
InstanceData* GetInstanceData_instance_arcatraz(Map* pMap)
InstanceData* OnGetInstanceData(InstanceMap* pMap)
{
return new instance_arcatraz(pMap);
return new instance_arcatraz_InstanceMapScript(pMap);
}
};
void AddSC_instance_arcatraz()
{
Script *newscript;
newscript = new Script;
newscript->Name = "instance_arcatraz";
newscript->GetInstanceData = &GetInstanceData_instance_arcatraz;
newscript->RegisterSelf();
new instance_arcatraz;
}