convert Magtheridons Lair and Shattered Halls to new format
--HG-- branch : trunk
This commit is contained in:
+188
-114
@@ -41,58 +41,75 @@ static Yell RandomTaunt[]=
|
||||
{-1544005},
|
||||
};
|
||||
|
||||
#define SAY_FREED -1544006
|
||||
#define SAY_AGGRO -1544007
|
||||
#define SAY_BANISH -1544008
|
||||
#define SAY_CHAMBER_DESTROY -1544009
|
||||
#define SAY_PLAYER_KILLED -1544010
|
||||
#define SAY_DEATH -1544011
|
||||
enum eSays
|
||||
{
|
||||
SAY_FREED = -1544006,
|
||||
SAY_AGGRO = -1544007,
|
||||
SAY_BANISH = -1544008,
|
||||
SAY_CHAMBER_DESTROY = -1544009,
|
||||
SAY_PLAYER_KILLED = -1544010,
|
||||
SAY_DEATH = -1544011,
|
||||
};
|
||||
|
||||
#define EMOTE_BERSERK -1544012
|
||||
#define EMOTE_BLASTNOVA -1544013
|
||||
#define EMOTE_BEGIN -1544014
|
||||
enum eEmotes
|
||||
{
|
||||
EMOTE_BERSERK = -1544012,
|
||||
EMOTE_BLASTNOVA = -1544013,
|
||||
EMOTE_BEGIN = -1544014,
|
||||
};
|
||||
|
||||
#define MOB_MAGTHERIDON 17257
|
||||
#define MOB_ROOM 17516
|
||||
#define MOB_CHANNELLER 17256
|
||||
#define MOB_ABYSSAL 17454
|
||||
enum eCreatures
|
||||
{
|
||||
MOB_MAGTHERIDON = 17257,
|
||||
MOB_ROOM = 17516,
|
||||
MOB_CHANNELLER = 17256,
|
||||
MOB_ABYSSAL = 17454,
|
||||
};
|
||||
|
||||
#define SPELL_BLASTNOVA 30616
|
||||
#define SPELL_CLEAVE 30619
|
||||
#define SPELL_QUAKE_TRIGGER 30657 // must be cast with 30561 as the proc spell
|
||||
#define SPELL_QUAKE_KNOCKBACK 30571
|
||||
#define SPELL_BLAZE_TARGET 30541 // core bug, does not support target 7
|
||||
#define SPELL_BLAZE_TRAP 30542
|
||||
#define SPELL_DEBRIS_KNOCKDOWN 36449
|
||||
#define SPELL_DEBRIS_VISUAL 30632
|
||||
#define SPELL_DEBRIS_DAMAGE 30631 // core bug, does not support target 8
|
||||
#define SPELL_CAMERA_SHAKE 36455
|
||||
#define SPELL_BERSERK 27680
|
||||
enum eSpells
|
||||
{
|
||||
SPELL_BLASTNOVA = 30616,
|
||||
SPELL_CLEAVE = 30619,
|
||||
SPELL_QUAKE_TRIGGER = 30657, //must be cast with 30561 as the proc spell
|
||||
SPELL_QUAKE_KNOCKBACK = 30571,
|
||||
SPELL_BLAZE_TARGET = 30541, //core bug, does not support target 7
|
||||
SPELL_BLAZE_TRAP = 30542,
|
||||
SPELL_DEBRIS_KNOCKDOWN = 36449,
|
||||
SPELL_DEBRIS_VISUAL = 30632,
|
||||
SPELL_DEBRIS_DAMAGE = 30631, //core bug, does not support target 8
|
||||
SPELL_CAMERA_SHAKE = 36455,
|
||||
SPELL_BERSERK = 27680,
|
||||
SPELL_SHADOW_CAGE = 30168,
|
||||
SPELL_SHADOW_GRASP = 30410,
|
||||
SPELL_SHADOW_GRASP_VISUAL = 30166,
|
||||
SPELL_MIND_EXHAUSTION = 44032, //Casted by the cubes when channeling ends
|
||||
SPELL_SHADOW_CAGE_C = 30205,
|
||||
SPELL_SHADOW_GRASP_C = 30207,
|
||||
SPELL_SHADOW_BOLT_VOLLEY = 30510,
|
||||
SPELL_DARK_MENDING = 30528,
|
||||
SPELL_FEAR = 30530, //39176
|
||||
SPELL_BURNING_ABYSSAL = 30511,
|
||||
SPELL_SOUL_TRANSFER = 30531, //core bug, does not support target 7
|
||||
SPELL_FIRE_BLAST = 37110,
|
||||
};
|
||||
|
||||
#define SPELL_SHADOW_CAGE 30168
|
||||
#define SPELL_SHADOW_GRASP 30410
|
||||
#define SPELL_SHADOW_GRASP_VISUAL 30166
|
||||
#define SPELL_MIND_EXHAUSTION 44032 //Casted by the cubes when channeling ends
|
||||
|
||||
#define SPELL_SHADOW_CAGE_C 30205
|
||||
#define SPELL_SHADOW_GRASP_C 30207
|
||||
|
||||
#define SPELL_SHADOW_BOLT_VOLLEY 30510
|
||||
#define SPELL_DARK_MENDING 30528
|
||||
#define SPELL_FEAR 30530 //39176
|
||||
#define SPELL_BURNING_ABYSSAL 30511
|
||||
#define SPELL_SOUL_TRANSFER 30531 // core bug, does not support target 7
|
||||
|
||||
#define SPELL_FIRE_BLAST 37110
|
||||
|
||||
// count of clickers needed to interrupt blast nova
|
||||
//count of clickers needed to interrupt blast nova
|
||||
#define CLICKERS_COUNT 5
|
||||
|
||||
typedef std::map<uint64, uint64> CubeMap;
|
||||
|
||||
struct mob_abyssalAI : public ScriptedAI
|
||||
class mob_abyssal : public CreatureScript
|
||||
{
|
||||
mob_abyssalAI(Creature *c) : ScriptedAI(c)
|
||||
public:
|
||||
|
||||
mob_abyssal()
|
||||
: CreatureScript("mob_abyssal")
|
||||
{
|
||||
}
|
||||
|
||||
struct mob_abyssalAI : public ScriptedAI
|
||||
{
|
||||
mob_abyssalAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
trigger = 0;
|
||||
Despawn_Timer = 60000;
|
||||
@@ -130,9 +147,20 @@ struct mob_abyssalAI : public ScriptedAI
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) {DoZoneInCombat();}
|
||||
void AttackStart(Unit *who) {if (!trigger) ScriptedAI::AttackStart(who);}
|
||||
void MoveInLineOfSight(Unit *who) {if (!trigger) ScriptedAI::MoveInLineOfSight(who);}
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
DoZoneInCombat();
|
||||
}
|
||||
void AttackStart(Unit *who)
|
||||
{
|
||||
if (!trigger)
|
||||
ScriptedAI::AttackStart(who);
|
||||
}
|
||||
void MoveInLineOfSight(Unit *who)
|
||||
{
|
||||
if (!trigger)
|
||||
ScriptedAI::MoveInLineOfSight(who);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
@@ -144,7 +172,8 @@ struct mob_abyssalAI : public ScriptedAI
|
||||
{
|
||||
DoCast(me, SPELL_DEBRIS_DAMAGE, true);
|
||||
trigger = 3;
|
||||
} else FireBlast_Timer -= diff;
|
||||
}
|
||||
else FireBlast_Timer -= diff;
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -152,7 +181,8 @@ struct mob_abyssalAI : public ScriptedAI
|
||||
if (Despawn_Timer <= diff)
|
||||
{
|
||||
me->ForcedDespawn();
|
||||
} else Despawn_Timer -= diff;
|
||||
}
|
||||
else Despawn_Timer -= diff;
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
@@ -161,17 +191,33 @@ struct mob_abyssalAI : public ScriptedAI
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_FIRE_BLAST);
|
||||
FireBlast_Timer = 5000+rand()%10000;
|
||||
} else FireBlast_Timer -= diff;
|
||||
}
|
||||
else FireBlast_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* Creature) const
|
||||
{
|
||||
return new mob_abyssalAI(Creature);
|
||||
}
|
||||
};
|
||||
|
||||
struct boss_magtheridonAI : public ScriptedAI
|
||||
class boss_magtheridon : public CreatureScript
|
||||
{
|
||||
boss_magtheridonAI(Creature *c) : ScriptedAI(c)
|
||||
public:
|
||||
|
||||
boss_magtheridon()
|
||||
: CreatureScript("boss_magtheridon")
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
struct boss_magtheridonAI : public ScriptedAI
|
||||
{
|
||||
boss_magtheridonAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
pInstance = pCreature->GetInstanceData();
|
||||
me->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 10);
|
||||
me->SetFloatValue(UNIT_FIELD_COMBATREACH, 10);
|
||||
|
||||
@@ -266,7 +312,9 @@ struct boss_magtheridonAI : public ScriptedAI
|
||||
{
|
||||
DebuffClicker(clicker);
|
||||
(*i).second = 0;
|
||||
} else ++ClickerNum;
|
||||
}
|
||||
else
|
||||
++ClickerNum;
|
||||
}
|
||||
|
||||
// if 5 clickers from other cubes apply shadow cage
|
||||
@@ -275,10 +323,12 @@ struct boss_magtheridonAI : public ScriptedAI
|
||||
DoScriptText(SAY_BANISH, me);
|
||||
DoCast(me, SPELL_SHADOW_CAGE, true);
|
||||
}
|
||||
else if (ClickerNum < CLICKERS_COUNT && me->HasAura(SPELL_SHADOW_CAGE))
|
||||
else
|
||||
if (ClickerNum < CLICKERS_COUNT && me->HasAura(SPELL_SHADOW_CAGE))
|
||||
me->RemoveAurasDueToSpell(SPELL_SHADOW_CAGE);
|
||||
|
||||
if (!ClickerNum) NeedCheckCube = false;
|
||||
if (!ClickerNum)
|
||||
NeedCheckCube = false;
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
@@ -322,7 +372,9 @@ struct boss_magtheridonAI : public ScriptedAI
|
||||
{
|
||||
DoScriptText(RandomTaunt[rand()%6].id, me);
|
||||
RandChat_Timer = 90000;
|
||||
} else RandChat_Timer -= diff;
|
||||
}
|
||||
else
|
||||
RandChat_Timer -= diff;
|
||||
}
|
||||
|
||||
if (!UpdateVictim())
|
||||
@@ -335,13 +387,17 @@ struct boss_magtheridonAI : public ScriptedAI
|
||||
DoCast(me, SPELL_BERSERK, true);
|
||||
DoScriptText(EMOTE_BERSERK, me);
|
||||
Berserk_Timer = 60000;
|
||||
} else Berserk_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Berserk_Timer -= diff;
|
||||
|
||||
if (Cleave_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_CLEAVE);
|
||||
Cleave_Timer = 10000;
|
||||
} else Cleave_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Cleave_Timer -= diff;
|
||||
|
||||
if (BlastNova_Timer <= diff)
|
||||
{
|
||||
@@ -352,7 +408,9 @@ struct boss_magtheridonAI : public ScriptedAI
|
||||
DoCast(me, SPELL_BLASTNOVA);
|
||||
BlastNova_Timer = 60000;
|
||||
}
|
||||
} else BlastNova_Timer -= diff;
|
||||
}
|
||||
else
|
||||
BlastNova_Timer -= diff;
|
||||
|
||||
if (Quake_Timer <= diff)
|
||||
{
|
||||
@@ -362,7 +420,9 @@ struct boss_magtheridonAI : public ScriptedAI
|
||||
DoCast(me, SPELL_QUAKE_TRIGGER, true);
|
||||
Quake_Timer = 50000;
|
||||
}
|
||||
} else Quake_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Quake_Timer -= diff;
|
||||
|
||||
if (Blaze_Timer <= diff)
|
||||
{
|
||||
@@ -373,13 +433,15 @@ struct boss_magtheridonAI : public ScriptedAI
|
||||
Creature *summon = me->SummonCreature(MOB_ABYSSAL, x, y, z, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
if (summon)
|
||||
{
|
||||
CAST_AI(mob_abyssalAI, summon->AI())->SetTrigger(2);
|
||||
CAST_AI(mob_abyssal::mob_abyssalAI, summon->AI())->SetTrigger(2);
|
||||
DoCast(summon, SPELL_BLAZE_TARGET, true);
|
||||
summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
}
|
||||
Blaze_Timer = 20000 + rand()%20000;
|
||||
} else Blaze_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Blaze_Timer -= diff;
|
||||
|
||||
if (!Phase3 && me->GetHealth()*10 < me->GetMaxHealth()*3
|
||||
&& !me->IsNonMeleeSpellCasted(false) // blast nova
|
||||
@@ -403,21 +465,39 @@ struct boss_magtheridonAI : public ScriptedAI
|
||||
float x, y, z;
|
||||
pTarget->GetPosition(x, y, z);
|
||||
Creature *summon = me->SummonCreature(MOB_ABYSSAL, x, y, z, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
if (summon) CAST_AI(mob_abyssalAI, summon->AI())->SetTrigger(1);
|
||||
if (summon)
|
||||
CAST_AI(mob_abyssal::mob_abyssalAI, summon->AI())->SetTrigger(1);
|
||||
}
|
||||
Debris_Timer = 10000;
|
||||
} else Debris_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Debris_Timer -= diff;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* Creature) const
|
||||
{
|
||||
return new boss_magtheridonAI(Creature);
|
||||
}
|
||||
};
|
||||
|
||||
struct mob_hellfire_channelerAI : public ScriptedAI
|
||||
class mob_hellfire_channeler : public CreatureScript
|
||||
{
|
||||
mob_hellfire_channelerAI(Creature *c) : ScriptedAI(c)
|
||||
public:
|
||||
|
||||
mob_hellfire_channeler()
|
||||
: CreatureScript("mob_hellfire_channeler")
|
||||
{
|
||||
pInstance =me->GetInstanceData();
|
||||
}
|
||||
|
||||
struct mob_hellfire_channelerAI : public ScriptedAI
|
||||
{
|
||||
mob_hellfire_channelerAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
pInstance = pCreature->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -482,42 +562,67 @@ struct mob_hellfire_channelerAI : public ScriptedAI
|
||||
{
|
||||
DoCast(me, SPELL_SHADOW_BOLT_VOLLEY);
|
||||
ShadowBoltVolley_Timer = 10000 + rand()%10000;
|
||||
} else ShadowBoltVolley_Timer -= diff;
|
||||
}
|
||||
else
|
||||
ShadowBoltVolley_Timer -= diff;
|
||||
|
||||
if (DarkMending_Timer <= diff)
|
||||
{
|
||||
if ((me->GetHealth()*100 / me->GetMaxHealth()) < 50)
|
||||
DoCast(me, SPELL_DARK_MENDING);
|
||||
DarkMending_Timer = 10000 +(rand() % 10000);
|
||||
} else DarkMending_Timer -= diff;
|
||||
}
|
||||
else
|
||||
DarkMending_Timer -= diff;
|
||||
|
||||
if (Fear_Timer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1))
|
||||
DoCast(pTarget, SPELL_FEAR);
|
||||
Fear_Timer = 25000 + rand()%15000;
|
||||
} else Fear_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Fear_Timer -= diff;
|
||||
|
||||
if (Infernal_Timer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, SPELL_BURNING_ABYSSAL, true);
|
||||
Infernal_Timer = 30000 + rand()%10000;
|
||||
} else Infernal_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Infernal_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* Creature) const
|
||||
{
|
||||
return new mob_hellfire_channelerAI(Creature);
|
||||
}
|
||||
};
|
||||
|
||||
//Manticron Cube
|
||||
bool GOHello_go_Manticron_Cube(Player* pPlayer, GameObject* pGo)
|
||||
class go_manticron_cube : public GameObjectScript
|
||||
{
|
||||
ScriptedInstance* pInstance = pGo->GetInstanceData();
|
||||
public:
|
||||
go_manticron_cube() : GameObjectScript("go_manticron_cube")
|
||||
{
|
||||
}
|
||||
|
||||
bool OnGossipHello(Player *pPlayer, GameObject * pGO)
|
||||
{
|
||||
ScriptedInstance* pInstance = pGO->GetInstanceData();
|
||||
|
||||
if (!pInstance)
|
||||
return true;
|
||||
if (pInstance->GetData(DATA_MAGTHERIDON_EVENT) != IN_PROGRESS) return true;
|
||||
Creature *Magtheridon =Unit::GetCreature(*pGo, pInstance->GetData64(DATA_MAGTHERIDON));
|
||||
if (!Magtheridon || !Magtheridon->isAlive()) return true;
|
||||
|
||||
if (pInstance->GetData(DATA_MAGTHERIDON_EVENT) != IN_PROGRESS)
|
||||
return true;
|
||||
Creature *Magtheridon =Unit::GetCreature(*pGO, pInstance->GetData64(DATA_MAGTHERIDON));
|
||||
if (!Magtheridon || !Magtheridon->isAlive())
|
||||
return true;
|
||||
|
||||
// if exhausted or already channeling return
|
||||
if (pPlayer->HasAura(SPELL_MIND_EXHAUSTION) || pPlayer->HasAura(SPELL_SHADOW_GRASP))
|
||||
@@ -526,47 +631,16 @@ bool GOHello_go_Manticron_Cube(Player* pPlayer, GameObject* pGo)
|
||||
pPlayer->InterruptNonMeleeSpells(false);
|
||||
pPlayer->CastSpell(pPlayer, SPELL_SHADOW_GRASP, true);
|
||||
pPlayer->CastSpell(pPlayer, SPELL_SHADOW_GRASP_VISUAL, false);
|
||||
CAST_AI(boss_magtheridonAI, Magtheridon->AI())->SetClicker(pGo->GetGUID(), pPlayer->GetGUID());
|
||||
CAST_AI(boss_magtheridon::boss_magtheridonAI, Magtheridon->AI())->SetClicker(pGO->GetGUID(), pPlayer->GetGUID());
|
||||
return true;
|
||||
}
|
||||
|
||||
CreatureAI* GetAI_boss_magtheridon(Creature* pCreature)
|
||||
{
|
||||
return new boss_magtheridonAI(pCreature);
|
||||
}
|
||||
|
||||
CreatureAI* GetAI_mob_hellfire_channeler(Creature* pCreature)
|
||||
{
|
||||
return new mob_hellfire_channelerAI(pCreature);
|
||||
}
|
||||
|
||||
CreatureAI* GetAI_mob_abyssalAI(Creature* pCreature)
|
||||
{
|
||||
return new mob_abyssalAI(pCreature);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_magtheridon()
|
||||
{
|
||||
Script *newscript;
|
||||
newscript = new Script;
|
||||
newscript->Name = "boss_magtheridon";
|
||||
newscript->GetAI = &GetAI_boss_magtheridon;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "mob_hellfire_channeler";
|
||||
newscript->GetAI = &GetAI_mob_hellfire_channeler;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "go_manticron_cube";
|
||||
newscript->pGOHello = &GOHello_go_Manticron_Cube;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "mob_abyssal";
|
||||
newscript->GetAI = &GetAI_mob_abyssalAI;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
new boss_magtheridon();
|
||||
new mob_hellfire_channeler();
|
||||
new mob_abyssal();
|
||||
new go_manticron_cube();
|
||||
}
|
||||
|
||||
|
||||
+22
-13
@@ -26,8 +26,11 @@ EndScriptData */
|
||||
#include "ScriptPCH.h"
|
||||
#include "magtheridons_lair.h"
|
||||
|
||||
#define SPELL_SOUL_TRANSFER 30531 // core bug, does not support target 7
|
||||
#define SPELL_BLAZE_TARGET 30541 // core bug, does not support target 7
|
||||
enum eSpells
|
||||
{
|
||||
SPELL_SOUL_TRANSFER = 30531, // core bug, does not support target 7
|
||||
SPELL_BLAZE_TARGET = 30541, // core bug, does not support target 7
|
||||
};
|
||||
|
||||
#define CHAMBER_CENTER_X -15.14
|
||||
#define CHAMBER_CENTER_Y 1.8
|
||||
@@ -37,9 +40,17 @@ EndScriptData */
|
||||
|
||||
#define EMOTE_BONDS_WEAKEN "'s bonds begin to weaken!"
|
||||
|
||||
struct instance_magtheridons_lair : public ScriptedInstance
|
||||
class instance_magtheridons_lair : public InstanceMapScript
|
||||
{
|
||||
instance_magtheridons_lair(Map* pMap) : ScriptedInstance(pMap)
|
||||
public:
|
||||
instance_magtheridons_lair()
|
||||
: InstanceMapScript("instance_magtheridons_lair")
|
||||
{
|
||||
}
|
||||
|
||||
struct instance_magtheridons_lair_InstanceMapScript : public ScriptedInstance
|
||||
{
|
||||
instance_magtheridons_lair_InstanceMapScript(Map* pMap) : ScriptedInstance(pMap)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
@@ -238,19 +249,17 @@ struct instance_magtheridons_lair : public ScriptedInstance
|
||||
} else RespawnTimer -= diff;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
InstanceData* GetInstanceData(Map* pMap) const
|
||||
{
|
||||
return new instance_magtheridons_lair_InstanceMapScript(pMap);
|
||||
}
|
||||
};
|
||||
|
||||
InstanceData* GetInstanceData_instance_magtheridons_lair(Map* pMap)
|
||||
{
|
||||
return new instance_magtheridons_lair(pMap);
|
||||
}
|
||||
|
||||
void AddSC_instance_magtheridons_lair()
|
||||
{
|
||||
Script *newscript;
|
||||
newscript = new Script;
|
||||
newscript->Name = "instance_magtheridons_lair";
|
||||
newscript->GetInstanceData = &GetInstanceData_instance_magtheridons_lair;
|
||||
newscript->RegisterSelf();
|
||||
new instance_magtheridons_lair();
|
||||
}
|
||||
|
||||
|
||||
@@ -52,34 +52,46 @@ static Say PeonDies[]=
|
||||
{-1540008},
|
||||
};
|
||||
|
||||
#define SAY_INTRO -1540000
|
||||
#define SAY_TAUNT_1 -1540009
|
||||
#define SAY_TAUNT_2 -1540010
|
||||
#define SAY_TAUNT_3 -1540011
|
||||
#define SAY_AGGRO_1 -1540012
|
||||
#define SAY_AGGRO_2 -1540013
|
||||
#define SAY_AGGRO_3 -1540014
|
||||
#define SAY_SLAY_1 -1540015
|
||||
#define SAY_SLAY_2 -1540016
|
||||
#define SAY_DIE -1540017
|
||||
|
||||
#define SPELL_DEATH_COIL 30500
|
||||
#define SPELL_DARK_SPIN 30502 // core bug spell attack caster :D
|
||||
#define SPELL_SHADOW_FISSURE 30496 // Summon the ShadowFissure NPC
|
||||
|
||||
#define SPELL_SHADOW_CLEAVE 30495
|
||||
#define H_SPELL_SHADOW_SLAM 35953
|
||||
|
||||
#define SPELL_HEMORRHAGE 30478
|
||||
|
||||
#define SPELL_CONSUMPTION 30497
|
||||
#define SPELL_TEMPORARY_VISUAL 39312 // this is wrong, a temporary solution. spell consumption already has the purple visual, but doesn't display as it should
|
||||
|
||||
struct boss_grand_warlock_nethekurseAI : public ScriptedAI
|
||||
enum eSays
|
||||
{
|
||||
boss_grand_warlock_nethekurseAI(Creature *c) : ScriptedAI(c)
|
||||
SAY_INTRO = -1540000,
|
||||
SAY_TAUNT_1 = -1540009,
|
||||
SAY_TAUNT_2 = -1540010,
|
||||
SAY_TAUNT_3 = -1540011,
|
||||
SAY_AGGRO_1 = -1540012,
|
||||
SAY_AGGRO_2 = -1540013,
|
||||
SAY_AGGRO_3 = -1540014,
|
||||
SAY_SLAY_1 = -1540015,
|
||||
SAY_SLAY_2 = -1540016,
|
||||
SAY_DIE = -1540017,
|
||||
};
|
||||
|
||||
enum eSpells
|
||||
{
|
||||
SPELL_DEATH_COIL = 30500,
|
||||
SPELL_DARK_SPIN = 30502, // core bug spell attack caster :D
|
||||
SPELL_SHADOW_FISSURE = 30496, // Summon the ShadowFissure NPC
|
||||
SPELL_SHADOW_CLEAVE = 30495,
|
||||
H_SPELL_SHADOW_SLAM = 35953,
|
||||
SPELL_HEMORRHAGE = 30478,
|
||||
SPELL_CONSUMPTION = 30497,
|
||||
SPELL_TEMPORARY_VISUAL = 39312, // this is wrong, a temporary solution. spell consumption already has the purple visual, but doesn't display as it should
|
||||
};
|
||||
|
||||
class boss_grand_warlock_nethekurse : public CreatureScript
|
||||
{
|
||||
public:
|
||||
|
||||
boss_grand_warlock_nethekurse()
|
||||
: CreatureScript("boss_grand_warlock_nethekurse")
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
struct boss_grand_warlock_nethekurseAI : public ScriptedAI
|
||||
{
|
||||
boss_grand_warlock_nethekurseAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
pInstance = pCreature->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -257,7 +269,9 @@ struct boss_grand_warlock_nethekurseAI : public ScriptedAI
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_SHADOW_CLEAVE);
|
||||
Cleave_Timer = 6000+rand()%2500;
|
||||
} else Cleave_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Cleave_Timer -= diff;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -266,14 +280,18 @@ struct boss_grand_warlock_nethekurseAI : public ScriptedAI
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget, SPELL_SHADOW_FISSURE);
|
||||
ShadowFissure_Timer = urand(7500,15000);
|
||||
} else ShadowFissure_Timer -= diff;
|
||||
}
|
||||
else
|
||||
ShadowFissure_Timer -= diff;
|
||||
|
||||
if (DeathCoil_Timer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget, SPELL_DEATH_COIL);
|
||||
DeathCoil_Timer = urand(15000,20000);
|
||||
} else DeathCoil_Timer -= diff;
|
||||
}
|
||||
else
|
||||
DeathCoil_Timer -= diff;
|
||||
|
||||
if ((me->GetHealth()*100) / me->GetMaxHealth() <= 20)
|
||||
Phase = true;
|
||||
@@ -281,13 +299,29 @@ struct boss_grand_warlock_nethekurseAI : public ScriptedAI
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* Creature) const
|
||||
{
|
||||
return new boss_grand_warlock_nethekurseAI (Creature);
|
||||
}
|
||||
};
|
||||
|
||||
struct mob_fel_orc_convertAI : public ScriptedAI
|
||||
|
||||
class mob_fel_orc_convert : public CreatureScript
|
||||
{
|
||||
mob_fel_orc_convertAI(Creature *c) : ScriptedAI(c)
|
||||
public:
|
||||
|
||||
mob_fel_orc_convert()
|
||||
: CreatureScript("mob_fel_orc_convert")
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
struct mob_fel_orc_convertAI : public ScriptedAI
|
||||
{
|
||||
mob_fel_orc_convertAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
pInstance = pCreature->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -312,7 +346,7 @@ struct mob_fel_orc_convertAI : public ScriptedAI
|
||||
Creature *pKurse = Unit::GetCreature(*me,pInstance->GetData64(DATA_NETHEKURSE));
|
||||
if (pKurse && me->IsWithinDist(pKurse, 45.0f))
|
||||
{
|
||||
CAST_AI(boss_grand_warlock_nethekurseAI, pKurse->AI())->DoYellForPeonAggro();
|
||||
CAST_AI(boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI, pKurse->AI())->DoYellForPeonAggro();
|
||||
|
||||
if (pInstance->GetData(TYPE_NETHEKURSE) == IN_PROGRESS)
|
||||
return;
|
||||
@@ -331,7 +365,7 @@ struct mob_fel_orc_convertAI : public ScriptedAI
|
||||
return;
|
||||
if (pInstance->GetData64(DATA_NETHEKURSE))
|
||||
if (Creature *pKurse = Unit::GetCreature(*me,pInstance->GetData64(DATA_NETHEKURSE)))
|
||||
CAST_AI(boss_grand_warlock_nethekurseAI, pKurse->AI())->DoYellForPeonDeath();
|
||||
CAST_AI(boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI, pKurse->AI())->DoYellForPeonDeath();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -348,51 +382,44 @@ struct mob_fel_orc_convertAI : public ScriptedAI
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* Creature) const
|
||||
{
|
||||
return new mob_fel_orc_convertAI (Creature);
|
||||
}
|
||||
};
|
||||
|
||||
//NOTE: this Creature are also summoned by other spells, for different creatures
|
||||
struct mob_lesser_shadow_fissureAI : public ScriptedAI
|
||||
class mob_lesser_shadow_fissure : public CreatureScript
|
||||
{
|
||||
mob_lesser_shadow_fissureAI(Creature *c) : ScriptedAI(c) {}
|
||||
public:
|
||||
|
||||
mob_lesser_shadow_fissure()
|
||||
: CreatureScript("mob_lesser_shadow_fissure")
|
||||
{
|
||||
}
|
||||
|
||||
struct mob_lesser_shadow_fissureAI : public ScriptedAI
|
||||
{
|
||||
mob_lesser_shadow_fissureAI(Creature* pCreature) : ScriptedAI(pCreature) {}
|
||||
|
||||
void Reset() { }
|
||||
void MoveInLineOfSight(Unit * /*who*/) {}
|
||||
void AttackStart(Unit* /*who*/) {}
|
||||
void EnterCombat(Unit* /*who*/) {}
|
||||
};
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_boss_grand_warlock_nethekurse(Creature* pCreature)
|
||||
{
|
||||
return new boss_grand_warlock_nethekurseAI (pCreature);
|
||||
}
|
||||
|
||||
CreatureAI* GetAI_mob_fel_orc_convert(Creature* pCreature)
|
||||
{
|
||||
return new mob_fel_orc_convertAI (pCreature);
|
||||
}
|
||||
|
||||
CreatureAI* GetAI_mob_lesser_shadow_fissure(Creature* pCreature)
|
||||
{
|
||||
CreatureAI* GetAI_mob_lesser_shadow_fissure(Creature* pCreature)
|
||||
{
|
||||
return new mob_lesser_shadow_fissureAI (pCreature);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_grand_warlock_nethekurse()
|
||||
{
|
||||
Script *newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "boss_grand_warlock_nethekurse";
|
||||
newscript->GetAI = &GetAI_boss_grand_warlock_nethekurse;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "mob_fel_orc_convert";
|
||||
newscript->GetAI = &GetAI_mob_fel_orc_convert;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "mob_lesser_shadow_fissure";
|
||||
newscript->GetAI = &GetAI_mob_lesser_shadow_fissure;
|
||||
newscript->RegisterSelf();
|
||||
new boss_grand_warlock_nethekurse();
|
||||
new mob_fel_orc_convert();
|
||||
new mob_lesser_shadow_fissure();
|
||||
}
|
||||
|
||||
|
||||
+53
-32
@@ -94,15 +94,25 @@ static Yell Killing[]=
|
||||
{-1540036, NPC_LEFT_HEAD},
|
||||
{-1540037, NPC_RIGHT_HEAD},
|
||||
};
|
||||
|
||||
static Yell KillingDelay[]=
|
||||
{
|
||||
{-1540038, NPC_RIGHT_HEAD},
|
||||
{-1000000, NPC_LEFT_HEAD},
|
||||
};
|
||||
|
||||
struct mob_omrogg_headsAI : public ScriptedAI
|
||||
class mob_omrogg_heads : public CreatureScript
|
||||
{
|
||||
mob_omrogg_headsAI(Creature *c) : ScriptedAI(c) {}
|
||||
public:
|
||||
|
||||
mob_omrogg_heads()
|
||||
: CreatureScript("mob_omrogg_heads")
|
||||
{
|
||||
}
|
||||
|
||||
struct mob_omrogg_headsAI : public ScriptedAI
|
||||
{
|
||||
mob_omrogg_headsAI(Creature* pCreature) : ScriptedAI(pCreature) {}
|
||||
|
||||
bool DeathYell;
|
||||
uint32 Death_Timer;
|
||||
@@ -131,15 +141,30 @@ struct mob_omrogg_headsAI : public ScriptedAI
|
||||
me->setDeathState(JUST_DIED);
|
||||
} else Death_Timer -= diff;
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* Creature) const
|
||||
{
|
||||
return new mob_omrogg_headsAI (Creature);
|
||||
}
|
||||
};
|
||||
|
||||
struct boss_warbringer_omroggAI : public ScriptedAI
|
||||
class boss_warbringer_omrogg : public CreatureScript
|
||||
{
|
||||
boss_warbringer_omroggAI(Creature *c) : ScriptedAI(c)
|
||||
public:
|
||||
|
||||
boss_warbringer_omrogg()
|
||||
: CreatureScript("boss_warbringer_omrogg")
|
||||
{
|
||||
}
|
||||
|
||||
struct boss_warbringer_omroggAI : public ScriptedAI
|
||||
{
|
||||
boss_warbringer_omroggAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
LeftHeadGUID = 0;
|
||||
RightHeadGUID = 0;
|
||||
pInstance = c->GetInstanceData();
|
||||
pInstance = pCreature->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -280,7 +305,7 @@ struct boss_warbringer_omroggAI : public ScriptedAI
|
||||
|
||||
DoScriptText(YELL_DIE_L, pLeftHead);
|
||||
|
||||
CAST_AI(mob_omrogg_headsAI, CAST_CRE(pRightHead)->AI())->DoDeathYell();
|
||||
CAST_AI(mob_omrogg_heads::mob_omrogg_headsAI, CAST_CRE(pRightHead)->AI())->DoDeathYell();
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_OMROGG, DONE);
|
||||
@@ -341,7 +366,9 @@ struct boss_warbringer_omroggAI : public ScriptedAI
|
||||
|
||||
if (BlastCount == 3)
|
||||
BlastCount = 0;
|
||||
} else BlastWave_Timer -= diff;
|
||||
}
|
||||
else
|
||||
BlastWave_Timer -= diff;
|
||||
|
||||
if (BurningMaul_Timer <= diff)
|
||||
{
|
||||
@@ -350,7 +377,9 @@ struct boss_warbringer_omroggAI : public ScriptedAI
|
||||
BurningMaul_Timer = 40000;
|
||||
BlastWave_Timer = 16000;
|
||||
BlastCount = 1;
|
||||
} else BurningMaul_Timer -= diff;
|
||||
}
|
||||
else
|
||||
BurningMaul_Timer -= diff;
|
||||
|
||||
if (ResetThreat_Timer <= diff)
|
||||
{
|
||||
@@ -361,46 +390,38 @@ struct boss_warbringer_omroggAI : public ScriptedAI
|
||||
me->AddThreat(pTarget, 0.0f);
|
||||
}
|
||||
ResetThreat_Timer = 25000+rand()%15000;
|
||||
} else ResetThreat_Timer -= diff;
|
||||
}
|
||||
else
|
||||
ResetThreat_Timer -= diff;
|
||||
|
||||
if (Fear_Timer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_FEAR);
|
||||
Fear_Timer = 15000+rand()%20000;
|
||||
} else Fear_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Fear_Timer -= diff;
|
||||
|
||||
if (ThunderClap_Timer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_THUNDERCLAP);
|
||||
ThunderClap_Timer = 15000+rand()%15000;
|
||||
} else ThunderClap_Timer -= diff;
|
||||
}
|
||||
else
|
||||
ThunderClap_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_boss_warbringer_omrogg(Creature* pCreature)
|
||||
{
|
||||
CreatureAI* GetAI_boss_warbringer_omrogg(Creature* pCreature)
|
||||
{
|
||||
return new boss_warbringer_omroggAI (pCreature);
|
||||
}
|
||||
|
||||
CreatureAI* GetAI_mob_omrogg_heads(Creature* pCreature)
|
||||
{
|
||||
return new mob_omrogg_headsAI (pCreature);
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
void AddSC_boss_warbringer_omrogg()
|
||||
{
|
||||
Script *newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "boss_warbringer_omrogg";
|
||||
newscript->GetAI = &GetAI_boss_warbringer_omrogg;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "mob_omrogg_heads";
|
||||
newscript->GetAI = &GetAI_mob_omrogg_heads;
|
||||
newscript->RegisterSelf();
|
||||
new boss_warbringer_omrogg();
|
||||
new mob_omrogg_heads();
|
||||
}
|
||||
|
||||
|
||||
+67
-34
@@ -29,30 +29,48 @@ EndContentData */
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
|
||||
#define SAY_AGGRO1 -1540042
|
||||
#define SAY_AGGRO2 -1540043
|
||||
#define SAY_AGGRO3 -1540044
|
||||
#define SAY_SLAY1 -1540045
|
||||
#define SAY_SLAY2 -1540046
|
||||
#define SAY_DEATH -1540047
|
||||
enum eSays
|
||||
{
|
||||
SAY_AGGRO1 = -1540042,
|
||||
SAY_AGGRO2 = -1540043,
|
||||
SAY_AGGRO3 = -1540044,
|
||||
SAY_SLAY1 = -1540045,
|
||||
SAY_SLAY2 = -1540046,
|
||||
SAY_DEATH = -1540047,
|
||||
};
|
||||
|
||||
#define SPELL_BLADE_DANCE 30739
|
||||
#define H_SPELL_CHARGE 25821
|
||||
enum eSpells
|
||||
{
|
||||
SPELL_BLADE_DANCE = 30739,
|
||||
H_SPELL_CHARGE = 25821,
|
||||
};
|
||||
|
||||
enum eCreatures
|
||||
{
|
||||
MOB_SHATTERED_ASSASSIN = 17695,
|
||||
MOB_HEARTHEN_GUARD = 17621,
|
||||
MOB_SHARPSHOOTER_GUARD = 17622,
|
||||
MOB_REAVER_GUARD = 17623,
|
||||
};
|
||||
|
||||
#define TARGET_NUM 5
|
||||
|
||||
#define MOB_SHATTERED_ASSASSIN 17695
|
||||
#define MOB_HEARTHEN_GUARD 17621
|
||||
#define MOB_SHARPSHOOTER_GUARD 17622
|
||||
#define MOB_REAVER_GUARD 17623
|
||||
|
||||
float AssassEntrance[3] = {275.136,-84.29,2.3}; // y -8
|
||||
float AssassExit[3] = {184.233,-84.29,2.3}; // y -8
|
||||
float AddsEntrance[3] = {306.036,-84.29,1.93};
|
||||
|
||||
struct boss_warchief_kargath_bladefistAI : public ScriptedAI
|
||||
class boss_warchief_kargath_bladefist : public CreatureScript
|
||||
{
|
||||
boss_warchief_kargath_bladefistAI(Creature *c) : ScriptedAI(c)
|
||||
public:
|
||||
|
||||
boss_warchief_kargath_bladefist()
|
||||
: CreatureScript("boss_warchief_kargath_bladefist")
|
||||
{
|
||||
}
|
||||
|
||||
struct boss_warchief_kargath_bladefistAI : public ScriptedAI
|
||||
{
|
||||
boss_warchief_kargath_bladefistAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -189,7 +207,9 @@ struct boss_warchief_kargath_bladefistAI : public ScriptedAI
|
||||
{
|
||||
SpawnAssassin();
|
||||
Assassins_Timer = 0;
|
||||
} else Assassins_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Assassins_Timer -= diff;
|
||||
|
||||
if (InBlade)
|
||||
{
|
||||
@@ -218,7 +238,9 @@ struct boss_warchief_kargath_bladefistAI : public ScriptedAI
|
||||
me->GetMotionMaster()->MovePoint(1,x,y,me->GetPositionZ());
|
||||
Wait_Timer = 0;
|
||||
}
|
||||
} else Wait_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Wait_Timer -= diff;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -231,14 +253,18 @@ struct boss_warchief_kargath_bladefistAI : public ScriptedAI
|
||||
Blade_Dance_Timer = 0;
|
||||
me->SetSpeed(MOVE_RUN,4);
|
||||
return;
|
||||
} else Blade_Dance_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Blade_Dance_Timer -= diff;
|
||||
|
||||
if (Charge_timer)
|
||||
if (Charge_timer <= diff)
|
||||
{
|
||||
DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), H_SPELL_CHARGE);
|
||||
Charge_timer = 0;
|
||||
} else Charge_timer -= diff;
|
||||
}
|
||||
else
|
||||
Charge_timer -= diff;
|
||||
|
||||
if (Summon_Assistant_Timer <= diff)
|
||||
{
|
||||
@@ -246,15 +272,23 @@ struct boss_warchief_kargath_bladefistAI : public ScriptedAI
|
||||
{
|
||||
switch (urand(0,2))
|
||||
{
|
||||
case 0: me->SummonCreature(MOB_HEARTHEN_GUARD,AddsEntrance[0],AddsEntrance[1], AddsEntrance[2], 0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,30000); break;
|
||||
case 1: me->SummonCreature(MOB_SHARPSHOOTER_GUARD,AddsEntrance[0],AddsEntrance[1], AddsEntrance[2], 0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,30000); break;
|
||||
case 2: me->SummonCreature(MOB_REAVER_GUARD,AddsEntrance[0],AddsEntrance[1], AddsEntrance[2], 0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,30000); break;
|
||||
case 0:
|
||||
me->SummonCreature(MOB_HEARTHEN_GUARD,AddsEntrance[0],AddsEntrance[1], AddsEntrance[2], 0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,30000);
|
||||
break;
|
||||
case 1:
|
||||
me->SummonCreature(MOB_SHARPSHOOTER_GUARD,AddsEntrance[0],AddsEntrance[1], AddsEntrance[2], 0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,30000);
|
||||
break;
|
||||
case 2:
|
||||
me->SummonCreature(MOB_REAVER_GUARD,AddsEntrance[0],AddsEntrance[1], AddsEntrance[2], 0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,30000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (urand(0,9) < 2)
|
||||
++summoned;
|
||||
Summon_Assistant_Timer = urand(25000,35000);
|
||||
} else Summon_Assistant_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Summon_Assistant_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -270,21 +304,20 @@ struct boss_warchief_kargath_bladefistAI : public ScriptedAI
|
||||
return;
|
||||
}
|
||||
resetcheck_timer = 5000;
|
||||
} else resetcheck_timer -= diff;
|
||||
}
|
||||
else
|
||||
resetcheck_timer -= diff;
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* Creature) const
|
||||
{
|
||||
return new boss_warchief_kargath_bladefistAI (Creature);
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_boss_warchief_kargath_bladefist(Creature* pCreature)
|
||||
{
|
||||
return new boss_warchief_kargath_bladefistAI (pCreature);
|
||||
}
|
||||
|
||||
void AddSC_boss_warchief_kargath_bladefist()
|
||||
{
|
||||
Script *newscript;
|
||||
newscript = new Script;
|
||||
newscript->Name = "boss_warchief_kargath_bladefist";
|
||||
newscript->GetAI = &GetAI_boss_warchief_kargath_bladefist;
|
||||
newscript->RegisterSelf();
|
||||
new boss_warchief_kargath_bladefist();
|
||||
}
|
||||
|
||||
|
||||
+22
-14
@@ -30,9 +30,16 @@ EndScriptData */
|
||||
|
||||
#define DOOR_NETHEKURSE 1
|
||||
|
||||
struct instance_shattered_halls : public ScriptedInstance
|
||||
class instance_shattered_halls : public InstanceMapScript
|
||||
{
|
||||
instance_shattered_halls(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
|
||||
public:
|
||||
instance_shattered_halls()
|
||||
: InstanceMapScript("instance_shattered_halls")
|
||||
{
|
||||
}
|
||||
struct instance_shattered_halls_InstanceMapScript : public ScriptedInstance
|
||||
{
|
||||
instance_shattered_halls_InstanceMapScript(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
uint64 nethekurseGUID;
|
||||
@@ -50,7 +57,9 @@ struct instance_shattered_halls : public ScriptedInstance
|
||||
{
|
||||
switch(pGo->GetEntry())
|
||||
{
|
||||
case DOOR_NETHEKURSE: nethekurseDoorGUID = pGo->GetGUID(); break;
|
||||
case DOOR_NETHEKURSE:
|
||||
nethekurseDoorGUID = pGo->GetGUID();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +67,9 @@ struct instance_shattered_halls : public ScriptedInstance
|
||||
{
|
||||
switch(pCreature->GetEntry())
|
||||
{
|
||||
case 16807: nethekurseGUID = pCreature->GetGUID(); break;
|
||||
case 16807:
|
||||
nethekurseGUID = pCreature->GetGUID();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,19 +109,16 @@ struct instance_shattered_halls : public ScriptedInstance
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
InstanceData* GetInstanceData_instance_shattered_halls(Map* pMap)
|
||||
{
|
||||
return new instance_shattered_halls(pMap);
|
||||
}
|
||||
InstanceData* GetInstanceData(Map* pMap) const
|
||||
{
|
||||
return new instance_shattered_halls_InstanceMapScript(pMap);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_instance_shattered_halls()
|
||||
{
|
||||
Script *newscript;
|
||||
newscript = new Script;
|
||||
newscript->Name = "instance_shattered_halls";
|
||||
newscript->GetInstanceData = &GetInstanceData_instance_shattered_halls;
|
||||
newscript->RegisterSelf();
|
||||
new instance_shattered_halls();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user