mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-24 10:56:38 +01:00
convert Mechanar to new format
--HG-- branch : trunk
This commit is contained in:
@@ -25,108 +25,126 @@ EndScriptData */
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
|
||||
#define SAY_AGGRO_1 -1554006
|
||||
#define SAY_HAMMER_1 -1554007
|
||||
#define SAY_HAMMER_2 -1554008
|
||||
#define SAY_SLAY_1 -1554009
|
||||
#define SAY_SLAY_2 -1554010
|
||||
#define SAY_DEATH_1 -1554011
|
||||
#define EMOTE_HAMMER -1554012
|
||||
|
||||
// Spells to be casted
|
||||
#define SPELL_SHADOW_POWER 35322
|
||||
#define H_SPELL_SHADOW_POWER 39193
|
||||
#define SPELL_HAMMER_PUNCH 35326
|
||||
#define SPELL_JACKHAMMER 35327
|
||||
#define H_SPELL_JACKHAMMER 39194
|
||||
#define SPELL_STREAM_OF_MACHINE_FLUID 35311
|
||||
|
||||
// Gatewatcher Iron-Hand AI
|
||||
struct boss_gatewatcher_iron_handAI : public ScriptedAI
|
||||
enum eSays
|
||||
{
|
||||
boss_gatewatcher_iron_handAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
}
|
||||
|
||||
uint32 Shadow_Power_Timer;
|
||||
uint32 Jackhammer_Timer;
|
||||
uint32 Stream_of_Machine_Fluid_Timer;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
Shadow_Power_Timer = 25000;
|
||||
Jackhammer_Timer = 45000;
|
||||
Stream_of_Machine_Fluid_Timer = 55000;
|
||||
|
||||
}
|
||||
void EnterCombat(Unit * /*who*/)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO_1, me);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
if (rand()%2)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*Killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH_1, me);
|
||||
//TODO: Add door check/open code
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
//Shadow Power
|
||||
if (Shadow_Power_Timer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_SHADOW_POWER);
|
||||
Shadow_Power_Timer = 20000 + rand()%8000;
|
||||
} else Shadow_Power_Timer -= diff;
|
||||
|
||||
//Jack Hammer
|
||||
if (Jackhammer_Timer <= diff)
|
||||
{
|
||||
//TODO: expect cast this about 5 times in a row (?), announce it by emote only once
|
||||
DoScriptText(EMOTE_HAMMER, me);
|
||||
DoCast(me->getVictim(), SPELL_JACKHAMMER);
|
||||
|
||||
//chance to yell, but not same time as emote (after spell in fact casted)
|
||||
if (rand()%2)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_HAMMER_1,SAY_HAMMER_2), me);
|
||||
Jackhammer_Timer = 30000;
|
||||
} else Jackhammer_Timer -= diff;
|
||||
|
||||
//Stream of Machine Fluid
|
||||
if (Stream_of_Machine_Fluid_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_STREAM_OF_MACHINE_FLUID);
|
||||
Stream_of_Machine_Fluid_Timer = 35000 + rand()%15000;
|
||||
} else Stream_of_Machine_Fluid_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
SAY_AGGRO_1 = -1554006,
|
||||
SAY_HAMMER_1 = -1554007,
|
||||
SAY_HAMMER_2 = -1554008,
|
||||
SAY_SLAY_1 = -1554009,
|
||||
SAY_SLAY_2 = -1554010,
|
||||
SAY_DEATH_1 = -1554011,
|
||||
EMOTE_HAMMER = -1554012,
|
||||
};
|
||||
CreatureAI* GetAI_boss_gatewatcher_iron_hand(Creature* pCreature)
|
||||
|
||||
enum eSpells
|
||||
{
|
||||
return new boss_gatewatcher_iron_handAI (pCreature);
|
||||
}
|
||||
// Spells to be casted
|
||||
SPELL_SHADOW_POWER = 35322,
|
||||
H_SPELL_SHADOW_POWER = 39193,
|
||||
SPELL_HAMMER_PUNCH = 35326,
|
||||
SPELL_JACKHAMMER = 35327,
|
||||
H_SPELL_JACKHAMMER = 39194,
|
||||
SPELL_STREAM_OF_MACHINE_FLUID = 35311,
|
||||
};
|
||||
|
||||
class boss_gatewatcher_iron_hand : public CreatureScript
|
||||
{
|
||||
public:
|
||||
|
||||
boss_gatewatcher_iron_hand()
|
||||
: CreatureScript("boss_gatewatcher_iron_hand")
|
||||
{
|
||||
}
|
||||
// Gatewatcher Iron-Hand AI
|
||||
struct boss_gatewatcher_iron_handAI : public ScriptedAI
|
||||
{
|
||||
boss_gatewatcher_iron_handAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
}
|
||||
|
||||
uint32 Shadow_Power_Timer;
|
||||
uint32 Jackhammer_Timer;
|
||||
uint32 Stream_of_Machine_Fluid_Timer;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
Shadow_Power_Timer = 25000;
|
||||
Jackhammer_Timer = 45000;
|
||||
Stream_of_Machine_Fluid_Timer = 55000;
|
||||
|
||||
}
|
||||
void EnterCombat(Unit * /*who*/)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO_1, me);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
if (rand()%2)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*Killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH_1, me);
|
||||
//TODO: Add door check/open code
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
//Shadow Power
|
||||
if (Shadow_Power_Timer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_SHADOW_POWER);
|
||||
Shadow_Power_Timer = 20000 + rand()%8000;
|
||||
}
|
||||
else
|
||||
Shadow_Power_Timer -= diff;
|
||||
|
||||
//Jack Hammer
|
||||
if (Jackhammer_Timer <= diff)
|
||||
{
|
||||
//TODO: expect cast this about 5 times in a row (?), announce it by emote only once
|
||||
DoScriptText(EMOTE_HAMMER, me);
|
||||
DoCast(me->getVictim(), SPELL_JACKHAMMER);
|
||||
|
||||
//chance to yell, but not same time as emote (after spell in fact casted)
|
||||
if (rand()%2)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_HAMMER_1,SAY_HAMMER_2), me);
|
||||
Jackhammer_Timer = 30000;
|
||||
}
|
||||
else
|
||||
Jackhammer_Timer -= diff;
|
||||
|
||||
//Stream of Machine Fluid
|
||||
if (Stream_of_Machine_Fluid_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_STREAM_OF_MACHINE_FLUID);
|
||||
Stream_of_Machine_Fluid_Timer = 35000 + rand()%15000;
|
||||
}
|
||||
else
|
||||
Stream_of_Machine_Fluid_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* OnGetAI(Creature* creature) const
|
||||
{
|
||||
return new boss_gatewatcher_iron_handAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_gatewatcher_iron_hand()
|
||||
{
|
||||
Script *newscript;
|
||||
newscript = new Script;
|
||||
newscript->Name = "boss_gatewatcher_iron_hand";
|
||||
newscript->GetAI = &GetAI_boss_gatewatcher_iron_hand;
|
||||
newscript->RegisterSelf();
|
||||
new boss_gatewatcher_iron_hand();
|
||||
}
|
||||
|
||||
|
||||
@@ -26,222 +26,244 @@ EndScriptData */
|
||||
#include "ScriptPCH.h"
|
||||
#include "mechanar.h"
|
||||
|
||||
#define SAY_AGGRO -1554013
|
||||
#define SAY_SUMMON -1554014
|
||||
#define SAY_DRAGONS_BREATH_1 -1554015
|
||||
#define SAY_DRAGONS_BREATH_2 -1554016
|
||||
#define SAY_SLAY1 -1554017
|
||||
#define SAY_SLAY2 -1554018
|
||||
#define SAY_DEATH -1554019
|
||||
|
||||
#define SPELL_SUMMON_RAGIN_FLAMES 35275
|
||||
#define H_SPELL_SUMMON_RAGIN_FLAMES 39084
|
||||
|
||||
#define SPELL_FROST_ATTACK 35263
|
||||
#define SPELL_ARCANE_BLAST 35314
|
||||
#define SPELL_DRAGONS_BREATH 35250
|
||||
#define SPELL_KNOCKBACK 37317
|
||||
#define SPELL_SOLARBURN 35267
|
||||
|
||||
struct boss_nethermancer_sepethreaAI : public ScriptedAI
|
||||
enum eSays
|
||||
{
|
||||
boss_nethermancer_sepethreaAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
SAY_AGGRO = -1554013,
|
||||
SAY_SUMMON = -1554014,
|
||||
SAY_DRAGONS_BREATH_1 = -1554015,
|
||||
SAY_DRAGONS_BREATH_2 = -1554016,
|
||||
SAY_SLAY1 = -1554017,
|
||||
SAY_SLAY2 = -1554018,
|
||||
SAY_DEATH = -1554019,
|
||||
};
|
||||
|
||||
ScriptedInstance *pInstance;
|
||||
enum eSpells
|
||||
{
|
||||
SPELL_SUMMON_RAGIN_FLAMES = 35275,
|
||||
SPELL_FROST_ATTACK = 35263,
|
||||
SPELL_ARCANE_BLAST = 35314,
|
||||
SPELL_DRAGONS_BREATH = 35250,
|
||||
SPELL_KNOCKBACK = 37317,
|
||||
SPELL_SOLARBURN = 35267,
|
||||
H_SPELL_SUMMON_RAGIN_FLAMES = 39084,
|
||||
SPELL_INFERNO = 35268,
|
||||
H_SPELL_INFERNO = 39346,
|
||||
SPELL_FIRE_TAIL = 35278,
|
||||
};
|
||||
|
||||
uint32 frost_attack_Timer;
|
||||
uint32 arcane_blast_Timer;
|
||||
uint32 dragons_breath_Timer;
|
||||
uint32 knockback_Timer;
|
||||
uint32 solarburn_Timer;
|
||||
class boss_nethermancer_sepethrea : public CreatureScript
|
||||
{
|
||||
public:
|
||||
|
||||
void Reset()
|
||||
{
|
||||
frost_attack_Timer = 7000 + rand()%3000;
|
||||
arcane_blast_Timer = 12000 + rand()%6000;
|
||||
dragons_breath_Timer = 18000 + rand()%4000;
|
||||
knockback_Timer = 22000 + rand()%6000;
|
||||
solarburn_Timer = 30000;
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_NETHERMANCER_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_NETHERMANCER_EVENT, IN_PROGRESS);
|
||||
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
DoCast(who, SPELL_SUMMON_RAGIN_FLAMES);
|
||||
DoScriptText(SAY_SUMMON, me);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY1,SAY_SLAY2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*Killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_NETHERMANCER_EVENT, DONE);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
//Frost Attack
|
||||
if (frost_attack_Timer <= diff)
|
||||
boss_nethermancer_sepethrea()
|
||||
: CreatureScript("boss_nethermancer_sepethrea")
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_FROST_ATTACK);
|
||||
frost_attack_Timer = 7000 + rand()%3000;
|
||||
} else frost_attack_Timer -= diff;
|
||||
|
||||
//Arcane Blast
|
||||
if (arcane_blast_Timer <= diff)
|
||||
}
|
||||
struct boss_nethermancer_sepethreaAI : public ScriptedAI
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_ARCANE_BLAST);
|
||||
arcane_blast_Timer = 15000;
|
||||
} else arcane_blast_Timer -= diff;
|
||||
|
||||
//Dragons Breath
|
||||
if (dragons_breath_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_DRAGONS_BREATH);
|
||||
boss_nethermancer_sepethreaAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
if (rand()%2)
|
||||
pInstance = pCreature->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance *pInstance;
|
||||
|
||||
uint32 frost_attack_Timer;
|
||||
uint32 arcane_blast_Timer;
|
||||
uint32 dragons_breath_Timer;
|
||||
uint32 knockback_Timer;
|
||||
uint32 solarburn_Timer;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
frost_attack_Timer = 7000 + rand()%3000;
|
||||
arcane_blast_Timer = 12000 + rand()%6000;
|
||||
dragons_breath_Timer = 18000 + rand()%4000;
|
||||
knockback_Timer = 22000 + rand()%6000;
|
||||
solarburn_Timer = 30000;
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_NETHERMANCER_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_NETHERMANCER_EVENT, IN_PROGRESS);
|
||||
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
DoCast(who, SPELL_SUMMON_RAGIN_FLAMES);
|
||||
DoScriptText(SAY_SUMMON, me);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY1,SAY_SLAY2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*Killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_NETHERMANCER_EVENT, DONE);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_DRAGONS_BREATH_1,SAY_DRAGONS_BREATH_2), me);
|
||||
}
|
||||
dragons_breath_Timer = 12000 + rand()%10000;
|
||||
} else dragons_breath_Timer -= diff;
|
||||
|
||||
//Knockback
|
||||
if (knockback_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_KNOCKBACK);
|
||||
knockback_Timer = 15000 + rand()%10000;
|
||||
} else knockback_Timer -= diff;
|
||||
|
||||
//Solarburn
|
||||
if (solarburn_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_SOLARBURN);
|
||||
solarburn_Timer = 30000;
|
||||
} else solarburn_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_boss_nethermancer_sepethrea(Creature* pCreature)
|
||||
{
|
||||
return new boss_nethermancer_sepethreaAI (pCreature);
|
||||
}
|
||||
|
||||
#define SPELL_INFERNO 35268
|
||||
#define H_SPELL_INFERNO 39346
|
||||
#define SPELL_FIRE_TAIL 35278
|
||||
|
||||
struct mob_ragin_flamesAI : public ScriptedAI
|
||||
{
|
||||
mob_ragin_flamesAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance *pInstance;
|
||||
|
||||
uint32 inferno_Timer;
|
||||
uint32 flame_timer;
|
||||
uint32 Check_Timer;
|
||||
|
||||
bool onlyonce;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
inferno_Timer = 10000;
|
||||
flame_timer = 500;
|
||||
Check_Timer = 2000;
|
||||
onlyonce = false;
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
|
||||
me->SetSpeed(MOVE_RUN, DUNGEON_MODE(0.5f, 0.7f));
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Check_Timer
|
||||
if (Check_Timer <= diff)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
if (pInstance->GetData(DATA_NETHERMANCER_EVENT) != IN_PROGRESS)
|
||||
//Frost Attack
|
||||
if (frost_attack_Timer <= diff)
|
||||
{
|
||||
//remove
|
||||
me->setDeathState(JUST_DIED);
|
||||
me->RemoveCorpse();
|
||||
}
|
||||
DoCast(me->getVictim(), SPELL_FROST_ATTACK);
|
||||
|
||||
frost_attack_Timer = 7000 + rand()%3000;
|
||||
}
|
||||
else
|
||||
frost_attack_Timer -= diff;
|
||||
|
||||
//Arcane Blast
|
||||
if (arcane_blast_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_ARCANE_BLAST);
|
||||
arcane_blast_Timer = 15000;
|
||||
}
|
||||
else
|
||||
arcane_blast_Timer -= diff;
|
||||
//Dragons Breath
|
||||
if (dragons_breath_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_DRAGONS_BREATH);
|
||||
{
|
||||
if (rand()%2)
|
||||
return;
|
||||
DoScriptText(RAND(SAY_DRAGONS_BREATH_1,SAY_DRAGONS_BREATH_2), me);
|
||||
}
|
||||
dragons_breath_Timer = 12000 + rand()%10000;
|
||||
}
|
||||
else
|
||||
dragons_breath_Timer -= diff;
|
||||
|
||||
//Knockback
|
||||
if (knockback_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_KNOCKBACK);
|
||||
knockback_Timer = 15000 + rand()%10000;
|
||||
}
|
||||
else
|
||||
knockback_Timer -= diff;
|
||||
|
||||
//Solarburn
|
||||
if (solarburn_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_SOLARBURN);
|
||||
solarburn_Timer = 30000;
|
||||
}
|
||||
else
|
||||
solarburn_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
Check_Timer = 1000;
|
||||
} else Check_Timer -= diff;
|
||||
};
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (!onlyonce)
|
||||
CreatureAI* OnGetAI(Creature* creature) const
|
||||
{
|
||||
return new boss_nethermancer_sepethreaAI(creature);
|
||||
}
|
||||
};
|
||||
class mob_ragin_flames : public CreatureScript
|
||||
{
|
||||
public:
|
||||
mob_ragin_flames()
|
||||
: CreatureScript("mob_ragin_flames")
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
me->GetMotionMaster()->MoveChase(pTarget);
|
||||
onlyonce = true;
|
||||
}
|
||||
|
||||
if (inferno_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_INFERNO);
|
||||
me->TauntApply(me->getVictim());
|
||||
inferno_Timer = 10000;
|
||||
} else inferno_Timer -= diff;
|
||||
struct mob_ragin_flamesAI : public ScriptedAI
|
||||
{
|
||||
mob_ragin_flamesAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
pInstance = pCreature->GetInstanceData();
|
||||
}
|
||||
|
||||
if (flame_timer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_FIRE_TAIL);
|
||||
flame_timer = 500;
|
||||
} else flame_timer -=diff;
|
||||
ScriptedInstance *pInstance;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
uint32 inferno_Timer;
|
||||
uint32 flame_timer;
|
||||
uint32 Check_Timer;
|
||||
|
||||
bool onlyonce;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
inferno_Timer = 10000;
|
||||
flame_timer = 500;
|
||||
Check_Timer = 2000;
|
||||
onlyonce = false;
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
|
||||
me->SetSpeed(MOVE_RUN, DUNGEON_MODE(0.5f, 0.7f));
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Check_Timer
|
||||
if (Check_Timer <= diff)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
if (pInstance->GetData(DATA_NETHERMANCER_EVENT) != IN_PROGRESS)
|
||||
{
|
||||
//remove
|
||||
me->setDeathState(JUST_DIED);
|
||||
me->RemoveCorpse();
|
||||
}
|
||||
}
|
||||
Check_Timer = 1000;
|
||||
} else Check_Timer -= diff;
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (!onlyonce)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
me->GetMotionMaster()->MoveChase(pTarget);
|
||||
onlyonce = true;
|
||||
}
|
||||
|
||||
if (inferno_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_INFERNO);
|
||||
me->TauntApply(me->getVictim());
|
||||
inferno_Timer = 10000;
|
||||
} else inferno_Timer -= diff;
|
||||
|
||||
if (flame_timer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_FIRE_TAIL);
|
||||
flame_timer = 500;
|
||||
} else flame_timer -=diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
};
|
||||
CreatureAI* OnGetAI(Creature* creature) const
|
||||
{
|
||||
return new mob_ragin_flamesAI(creature);
|
||||
}
|
||||
};
|
||||
CreatureAI* GetAI_mob_ragin_flames(Creature* pCreature)
|
||||
{
|
||||
return new mob_ragin_flamesAI (pCreature);
|
||||
}
|
||||
void AddSC_boss_nethermancer_sepethrea()
|
||||
{
|
||||
Script *newscript;
|
||||
newscript = new Script;
|
||||
newscript->Name = "boss_nethermancer_sepethrea";
|
||||
newscript->GetAI = &GetAI_boss_nethermancer_sepethrea;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "mob_ragin_flames";
|
||||
newscript->GetAI = &GetAI_mob_ragin_flames;
|
||||
newscript->RegisterSelf();
|
||||
new boss_nethermancer_sepethrea();
|
||||
new mob_ragin_flames();
|
||||
}
|
||||
|
||||
|
||||
@@ -25,224 +25,257 @@ EndScriptData */
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
|
||||
#define SAY_AGGRO -1554020
|
||||
#define SAY_DOMINATION_1 -1554021
|
||||
#define SAY_DOMINATION_2 -1554022
|
||||
#define SAY_SUMMON -1554023
|
||||
#define SAY_ENRAGE -1554024
|
||||
#define SAY_SLAY_1 -1554025
|
||||
#define SAY_SLAY_2 -1554026
|
||||
#define SAY_DEATH -1554027
|
||||
|
||||
enum eSays
|
||||
{
|
||||
SAY_AGGRO = -1554020,
|
||||
SAY_DOMINATION_1 = -1554021,
|
||||
SAY_DOMINATION_2 = -1554022,
|
||||
SAY_SUMMON = -1554023,
|
||||
SAY_ENRAGE = -1554024,
|
||||
SAY_SLAY_1 = -1554025,
|
||||
SAY_SLAY_2 = -1554026,
|
||||
SAY_DEATH = -1554027,
|
||||
};
|
||||
// Spells to be casted
|
||||
#define SPELL_MANA_TAP 36021
|
||||
#define SPELL_ARCANE_TORRENT 36022
|
||||
#define SPELL_DOMINATION 35280
|
||||
#define H_SPELL_ARCANE_EXPLOSION 15453
|
||||
#define SPELL_FRENZY 36992
|
||||
|
||||
#define SPELL_SUMMON_NETHER_WRAITH_1 35285 //Spells work, but not implemented
|
||||
#define SPELL_SUMMON_NETHER_WRAITH_2 35286
|
||||
#define SPELL_SUMMON_NETHER_WRAITH_3 35287
|
||||
#define SPELL_SUMMON_NETHER_WRAITH_4 35288
|
||||
|
||||
// Add Spells
|
||||
#define SPELL_DETONATION 35058
|
||||
#define SPELL_ARCANE_MISSILES 35034
|
||||
|
||||
struct boss_pathaleon_the_calculatorAI : public ScriptedAI
|
||||
enum eSpells
|
||||
{
|
||||
boss_pathaleon_the_calculatorAI(Creature *c) : ScriptedAI(c), summons(me)
|
||||
{
|
||||
}
|
||||
|
||||
uint32 Summon_Timer;
|
||||
SummonList summons;
|
||||
uint32 ManaTap_Timer;
|
||||
uint32 ArcaneTorrent_Timer;
|
||||
uint32 Domination_Timer;
|
||||
uint32 ArcaneExplosion_Timer;
|
||||
|
||||
bool Enraged;
|
||||
|
||||
uint32 Counter;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
Summon_Timer = 30000;
|
||||
ManaTap_Timer = 12000 + rand()%8000;
|
||||
ArcaneTorrent_Timer = 16000 + rand()%9000;
|
||||
Domination_Timer = 25000 + rand()%15000;
|
||||
ArcaneExplosion_Timer = 8000 + rand()%5000;
|
||||
|
||||
Enraged = false;
|
||||
|
||||
Counter = 0;
|
||||
summons.DespawnAll();
|
||||
}
|
||||
void EnterCombat(Unit * /*who*/)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*Killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
summons.DespawnAll();
|
||||
}
|
||||
|
||||
void JustSummoned(Creature *summon) {summons.Summon(summon);}
|
||||
void SummonedCreatureDespawn(Creature *summon) {summons.Despawn(summon);}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (Summon_Timer <= diff)
|
||||
{
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
{
|
||||
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
Creature* Wraith = me->SummonCreature(21062,me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000);
|
||||
if (pTarget && Wraith)
|
||||
Wraith->AI()->AttackStart(pTarget);
|
||||
}
|
||||
DoScriptText(SAY_SUMMON, me);
|
||||
Summon_Timer = 30000 + rand()%15000;
|
||||
} else Summon_Timer -= diff;
|
||||
|
||||
if (ManaTap_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_MANA_TAP);
|
||||
ManaTap_Timer = 14000 + rand()%8000;
|
||||
} else ManaTap_Timer -= diff;
|
||||
|
||||
if (ArcaneTorrent_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_ARCANE_TORRENT);
|
||||
ArcaneTorrent_Timer = 12000 + rand()%6000;
|
||||
} else ArcaneTorrent_Timer -= diff;
|
||||
|
||||
if (Domination_Timer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
{
|
||||
DoScriptText(RAND(SAY_DOMINATION_1,SAY_DOMINATION_2), me);
|
||||
|
||||
DoCast(pTarget, SPELL_DOMINATION);
|
||||
}
|
||||
Domination_Timer = 25000 + rand()%5000;
|
||||
} else Domination_Timer -= diff;
|
||||
|
||||
//Only casting if Heroic Mode is used
|
||||
if (IsHeroic())
|
||||
{
|
||||
if (ArcaneExplosion_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), H_SPELL_ARCANE_EXPLOSION);
|
||||
ArcaneExplosion_Timer = 10000 + rand()%4000;
|
||||
} else ArcaneExplosion_Timer -= diff;
|
||||
}
|
||||
|
||||
if (!Enraged && me->GetHealth()*100 / me->GetMaxHealth() < 21)
|
||||
{
|
||||
DoCast(me, SPELL_FRENZY);
|
||||
DoScriptText(SAY_ENRAGE, me);
|
||||
Enraged = true;
|
||||
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
SPELL_MANA_TAP = 36021,
|
||||
SPELL_ARCANE_TORRENT = 36022,
|
||||
SPELL_DOMINATION = 35280,
|
||||
H_SPELL_ARCANE_EXPLOSION = 15453,
|
||||
SPELL_FRENZY = 36992,
|
||||
//Spells work, but not implemented
|
||||
SPELL_SUMMON_NETHER_WRAITH_1 = 35285,
|
||||
SPELL_SUMMON_NETHER_WRAITH_2 = 35286,
|
||||
SPELL_SUMMON_NETHER_WRAITH_3 = 35287,
|
||||
SPELL_SUMMON_NETHER_WRAITH_4 = 35288,
|
||||
// Add Spells
|
||||
SPELL_DETONATION = 35058,
|
||||
SPELL_ARCANE_MISSILES = 35034,
|
||||
};
|
||||
CreatureAI* GetAI_boss_pathaleon_the_calculator(Creature* pCreature)
|
||||
|
||||
class boss_pathaleon_the_calculator : public CreatureScript
|
||||
{
|
||||
return new boss_pathaleon_the_calculatorAI (pCreature);
|
||||
}
|
||||
public:
|
||||
|
||||
struct mob_nether_wraithAI : public ScriptedAI
|
||||
{
|
||||
mob_nether_wraithAI(Creature *c) : ScriptedAI(c) {}
|
||||
|
||||
uint32 ArcaneMissiles_Timer;
|
||||
uint32 Detonation_Timer;
|
||||
uint32 Die_Timer;
|
||||
bool Detonation;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
ArcaneMissiles_Timer = 1000 + rand()%3000;
|
||||
Detonation_Timer = 20000;
|
||||
Die_Timer = 2200;
|
||||
Detonation = false;
|
||||
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (ArcaneMissiles_Timer <= diff)
|
||||
boss_pathaleon_the_calculator()
|
||||
: CreatureScript("boss_pathaleon_the_calculator")
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(pTarget, SPELL_ARCANE_MISSILES);
|
||||
else
|
||||
DoCast(me->getVictim(), SPELL_ARCANE_MISSILES);
|
||||
|
||||
ArcaneMissiles_Timer = 5000 + rand()%5000;
|
||||
} else ArcaneMissiles_Timer -=diff;
|
||||
|
||||
if (!Detonation)
|
||||
{
|
||||
if (Detonation_Timer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_DETONATION);
|
||||
Detonation = true;
|
||||
} else Detonation_Timer -= diff;
|
||||
}
|
||||
|
||||
if (Detonation)
|
||||
|
||||
struct boss_pathaleon_the_calculatorAI : public ScriptedAI
|
||||
{
|
||||
if (Die_Timer <= diff)
|
||||
boss_pathaleon_the_calculatorAI(Creature* pCreature) : ScriptedAI(pCreature), summons(me)
|
||||
{
|
||||
me->setDeathState(JUST_DIED);
|
||||
me->RemoveCorpse();
|
||||
} else Die_Timer -= diff;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 Summon_Timer;
|
||||
SummonList summons;
|
||||
uint32 ManaTap_Timer;
|
||||
uint32 ArcaneTorrent_Timer;
|
||||
uint32 Domination_Timer;
|
||||
uint32 ArcaneExplosion_Timer;
|
||||
|
||||
bool Enraged;
|
||||
|
||||
uint32 Counter;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
void Reset()
|
||||
{
|
||||
Summon_Timer = 30000;
|
||||
ManaTap_Timer = 12000 + rand()%8000;
|
||||
ArcaneTorrent_Timer = 16000 + rand()%9000;
|
||||
Domination_Timer = 25000 + rand()%15000;
|
||||
ArcaneExplosion_Timer = 8000 + rand()%5000;
|
||||
|
||||
Enraged = false;
|
||||
|
||||
Counter = 0;
|
||||
summons.DespawnAll();
|
||||
}
|
||||
void EnterCombat(Unit * /*who*/)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*Killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
summons.DespawnAll();
|
||||
}
|
||||
|
||||
void JustSummoned(Creature *summon)
|
||||
{
|
||||
summons.Summon(summon);
|
||||
}
|
||||
void SummonedCreatureDespawn(Creature *summon)
|
||||
{
|
||||
summons.Despawn(summon);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (Summon_Timer <= diff)
|
||||
{
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
{
|
||||
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
Creature* Wraith = me->SummonCreature(21062,me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000);
|
||||
if (pTarget && Wraith)
|
||||
Wraith->AI()->AttackStart(pTarget);
|
||||
}
|
||||
DoScriptText(SAY_SUMMON, me);
|
||||
Summon_Timer = 30000 + rand()%15000;
|
||||
}
|
||||
else
|
||||
Summon_Timer -= diff;
|
||||
|
||||
if (ManaTap_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_MANA_TAP);
|
||||
ManaTap_Timer = 14000 + rand()%8000;
|
||||
}
|
||||
else
|
||||
ManaTap_Timer -= diff;
|
||||
|
||||
if (ArcaneTorrent_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_ARCANE_TORRENT);
|
||||
ArcaneTorrent_Timer = 12000 + rand()%6000;
|
||||
}
|
||||
else
|
||||
ArcaneTorrent_Timer -= diff;
|
||||
|
||||
if (Domination_Timer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
{
|
||||
DoScriptText(RAND(SAY_DOMINATION_1,SAY_DOMINATION_2), me);
|
||||
DoCast(pTarget, SPELL_DOMINATION);
|
||||
}
|
||||
Domination_Timer = 25000 + rand()%5000;
|
||||
}
|
||||
else
|
||||
Domination_Timer -= diff;
|
||||
|
||||
//Only casting if Heroic Mode is used
|
||||
if (IsHeroic())
|
||||
{
|
||||
if (ArcaneExplosion_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), H_SPELL_ARCANE_EXPLOSION);
|
||||
ArcaneExplosion_Timer = 10000 + rand()%4000;
|
||||
}
|
||||
else
|
||||
ArcaneExplosion_Timer -= diff;
|
||||
}
|
||||
|
||||
if (!Enraged && me->GetHealth()*100 / me->GetMaxHealth() < 21)
|
||||
{
|
||||
DoCast(me, SPELL_FRENZY);
|
||||
DoScriptText(SAY_ENRAGE, me);
|
||||
Enraged = true;
|
||||
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_boss_pathaleon_the_calculator(Creature* pCreature)
|
||||
{
|
||||
return new boss_pathaleon_the_calculatorAI (pCreature);
|
||||
}
|
||||
};
|
||||
CreatureAI* GetAI_mob_nether_wraith(Creature* pCreature)
|
||||
|
||||
class mob_nether_wraith : public CreatureScript
|
||||
{
|
||||
return new mob_nether_wraithAI (pCreature);
|
||||
}
|
||||
public:
|
||||
|
||||
mob_nether_wraith()
|
||||
: CreatureScript("mob_nether_wraith")
|
||||
{
|
||||
}
|
||||
|
||||
struct mob_nether_wraithAI : public ScriptedAI
|
||||
{
|
||||
mob_nether_wraithAI(Creature* pCreature) : ScriptedAI(pCreature) {}
|
||||
|
||||
uint32 ArcaneMissiles_Timer;
|
||||
uint32 Detonation_Timer;
|
||||
uint32 Die_Timer;
|
||||
bool Detonation;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
ArcaneMissiles_Timer = 1000 + rand()%3000;
|
||||
Detonation_Timer = 20000;
|
||||
Die_Timer = 2200;
|
||||
Detonation = false;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) {}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (ArcaneMissiles_Timer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(pTarget, SPELL_ARCANE_MISSILES);
|
||||
else
|
||||
DoCast(me->getVictim(), SPELL_ARCANE_MISSILES);
|
||||
ArcaneMissiles_Timer = 5000 + rand()%5000;
|
||||
}
|
||||
else
|
||||
ArcaneMissiles_Timer -=diff;
|
||||
|
||||
if (!Detonation)
|
||||
{
|
||||
if (Detonation_Timer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_DETONATION);
|
||||
Detonation = true;
|
||||
}
|
||||
else
|
||||
Detonation_Timer -= diff;
|
||||
}
|
||||
|
||||
if (Detonation)
|
||||
{
|
||||
if (Die_Timer <= diff)
|
||||
{
|
||||
me->setDeathState(JUST_DIED);
|
||||
me->RemoveCorpse();
|
||||
}
|
||||
else
|
||||
Die_Timer -= diff;
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_mob_nether_wraith(Creature* pCreature)
|
||||
{
|
||||
return new mob_nether_wraithAI (pCreature);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_pathaleon_the_calculator()
|
||||
{
|
||||
Script *newscript;
|
||||
newscript = new Script;
|
||||
newscript->Name = "boss_pathaleon_the_calculator";
|
||||
newscript->GetAI = &GetAI_boss_pathaleon_the_calculator;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "mob_nether_wraith";
|
||||
newscript->GetAI = &GetAI_mob_nether_wraith;
|
||||
newscript->RegisterSelf();
|
||||
new boss_pathaleon_the_calculator();
|
||||
new mob_nether_wraith();
|
||||
}
|
||||
|
||||
|
||||
@@ -28,61 +28,67 @@ EndScriptData */
|
||||
|
||||
#define MAX_ENCOUNTER 1
|
||||
|
||||
struct instance_mechanar : public ScriptedInstance
|
||||
class instance_mechanar : public InstanceMapScript
|
||||
{
|
||||
instance_mechanar(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type)
|
||||
{
|
||||
switch(type)
|
||||
public:
|
||||
instance_mechanar()
|
||||
: InstanceMapScript("instance_mechanar")
|
||||
{
|
||||
case DATA_NETHERMANCER_EVENT: return m_auiEncounter[0];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
uint64 GetData64 (uint32 /*identifier*/)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data)
|
||||
{
|
||||
switch(type)
|
||||
|
||||
struct instance_mechanar_InstanceMapScript : public ScriptedInstance
|
||||
{
|
||||
case DATA_NETHERMANCER_EVENT: m_auiEncounter[0] = data; break;
|
||||
}
|
||||
}
|
||||
instance_mechanar_InstanceMapScript(Map* pMap) : ScriptedInstance(pMap) { Initialize(); };
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DATA_NETHERMANCER_EVENT: return m_auiEncounter[0];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
uint64 GetData64 (uint32 /*identifier*/)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DATA_NETHERMANCER_EVENT: m_auiEncounter[0] = data; break;
|
||||
}
|
||||
}
|
||||
};
|
||||
InstanceData* OnGetInstanceData(InstanceMap* pMap)
|
||||
{
|
||||
return new instance_mechanar_InstanceMapScript(pMap);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
InstanceData* GetInstanceData_instance_mechanar(Map* pMap)
|
||||
{
|
||||
return new instance_mechanar(pMap);
|
||||
}
|
||||
|
||||
void AddSC_instance_mechanar()
|
||||
{
|
||||
Script *newscript;
|
||||
newscript = new Script;
|
||||
newscript->Name = "instance_mechanar";
|
||||
newscript->GetInstanceData = &GetInstanceData_instance_mechanar;
|
||||
newscript->RegisterSelf();
|
||||
new instance_mechanar;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user