*Updated, working script for Drak'Tharon Keep (Novos the Summoner), by Tartalo

--HG--
branch : trunk
This commit is contained in:
maximius
2009-10-14 15:24:21 -07:00
parent 3e8b377ac4
commit 67350d6602
9 changed files with 521 additions and 97 deletions
@@ -10,25 +10,40 @@ Script Data End */
update creature_template set scriptname = '' where entry = '';
*** SQL END ***/
#include "precompiled.h"
#include "def_drak_tharon_keep.h"
//Spells
#define SPELL_BELLOWING_ROAR 44863 // fears the group, can be resisted/dispelled
#define SPELL_GRIEVOUS_BITE 48920
#define SPELL_MANGLING_SLASH 48873 //casted on the current tank, adds debuf
#define SPELL_FEARSOME_ROAR_N 48849
#define SPELL_FEARSOME_ROAR_H 48849 //Not stacking, debuff
#define SPELL_PIERCING_SLASH 48878 //debuff -->Armor reduced by 75%
#define SPELL_RAPTOR_CALL 59416 //dummy
enum Spells
{
SPELL_BELLOWING_ROAR = 44863, // fears the group, can be resisted/dispelled
SPELL_GRIEVOUS_BITE = 48920,
SPELL_MANGLING_SLASH = 48873, //casted on the current tank, adds debuf
SPELL_FEARSOME_ROAR = 48849,
H_SPELL_FEARSOME_ROAR = 48849, //Not stacking, debuff
SPELL_PIERCING_SLASH = 48878, //debuff -->Armor reduced by 75%
SPELL_RAPTOR_CALL = 59416 //dummy
};
struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
{
boss_dredAI(Creature *c) : ScriptedAI(c) {}
boss_dredAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
}
ScriptedInstance* pInstance;
void Reset() {}
void EnterCombat(Unit* who) {}
void AttackStart(Unit* who) {}
void MoveInLineOfSight(Unit* who) {}
void Reset()
{
if (pInstance)
pInstance->SetData(DATA_DRED_EVENT,NOT_STARTED);
}
void EnterCombat(Unit* who)
{
if (pInstance)
pInstance->SetData(DATA_DRED_EVENT,IN_PROGRESS);
}
void UpdateAI(const uint32 diff)
{
//Return since we have no target
@@ -37,7 +52,12 @@ struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
DoMeleeAttackIfReady();
}
void JustDied(Unit* killer) {}
void JustDied(Unit* killer)
{
if (pInstance)
pInstance->SetData(DATA_DRED_EVENT,DONE);
}
};
CreatureAI* GetAI_boss_dred(Creature* pCreature)
@@ -10,54 +10,192 @@ Script Data End */
update creature_template set scriptname = 'boss_novos' where entry = '';
*** SQL END ***/
#include "precompiled.h"
#include "def_drak_tharon_keep.h"
//Spells
#define SPELL_ARCANE_BLAST_N 49198
#define SPELL_ARCANE_BLAST_H 59909
#define SPELL_ARCANE_FIELD 47346
#define SPELL_BLIZZARD_N 49034
#define SPELL_BLIZZARD_H 59854
#define SPELL_FROSTBOLT_N 49037
#define SPELL_FROSTBOLT_H 59855
#define SPELL_WRATH_OF_MISERY_N 50089
#define SPELL_WRATH_OF_MISERY_H 59856
#define SPELL_SUMMON_MINIONS 59910 //Summons an army of Fetid Troll Corpses to assist the caster.
//not in db
//Yell
#define SAY_AGGRO -1600000
#define SAY_KILL -1600001
#define SAY_DEATH -1600002
#define SAY_NECRO_ADD -1600003
#define SAY_REUBBLE_1 -1600004
#define SAY_REUBBLE_2 -1600005
struct TRINITY_DLL_DECL boss_novosAI : public ScriptedAI
enum Spells
{
boss_novosAI(Creature *c) : ScriptedAI(c) {}
SPELL_ARCANE_BLAST = 49198,
H_SPELL_ARCANE_BLAST = 59909,
SPELL_ARCANE_FIELD = 47346,
SPELL_BLIZZARD = 49034,
H_SPELL_BLIZZARD = 59854,
SPELL_FROSTBOLT = 49037,
H_SPELL_FROSTBOLT = 59855,
SPELL_WRATH_OF_MISERY = 50089,
H_SPELL_WRATH_OF_MISERY = 59856,
SPELL_SUMMON_MINIONS = 59910 //Summons an army of Fetid Troll Corpses to assist the caster.
};
//not in db
enum Yells
{
SAY_AGGRO = -1600000,
SAY_KILL = -1600001,
SAY_DEATH = -1600002,
SAY_NECRO_ADD = -1600003,
SAY_REUBBLE_1 = -1600004,
SAY_REUBBLE_2 = -1600005
};
enum Creatures
{
CREATURE_RISEN_SHADOWCASTER = 27600,
CREATURE_FETID_TROLL_CORPSE = 27598,
CREATURE_HULKING_CORPSE = 27597,
CREATURE_CRYSTAL_HANDLER = 26627
};
enum CombatPhase
{
IDLE,
PHASE_1,
PHASE_2
};
void Reset() {}
struct Location
{
float x,y,z;
};
static Location AddSpawnPoint = { -379.20, -816.76, 59.70};
struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI
{
boss_novosAI(Creature *c) : Scripted_NoMovementAI(c)
{
pInstance = c->GetInstanceData();
Reset();
}
uint32 uiTimer;
uint32 uiCrystalHandlerTimer;
std::list<uint64> luiCrystals;
CombatPhase Phase;
ScriptedInstance* pInstance;
void Reset()
{
Phase = IDLE;
luiCrystals.clear();
if (pInstance)
{
pInstance->SetData(DATA_NOVOS_EVENT, NOT_STARTED);
luiCrystals.push_back(pInstance->GetData64(DATA_NOVOS_CRYSTAL_1));
luiCrystals.push_back(pInstance->GetData64(DATA_NOVOS_CRYSTAL_2));
luiCrystals.push_back(pInstance->GetData64(DATA_NOVOS_CRYSTAL_3));
luiCrystals.push_back(pInstance->GetData64(DATA_NOVOS_CRYSTAL_4));
for (std::list<uint64>::iterator itr = luiCrystals.begin(); itr != luiCrystals.end(); ++itr)
{
if (GameObject* pTemp = pInstance->instance->GetGameObject(*itr))
pTemp->SetGoState(GO_STATE_READY);
}
}
}
void EnterCombat(Unit* who)
{
DoScriptText(SAY_AGGRO, m_creature);
Phase = PHASE_1;
uiCrystalHandlerTimer = 30000;
uiTimer = 1000;
DoCast(m_creature,SPELL_ARCANE_FIELD);
if (pInstance)
{
for (std::list<uint64>::iterator itr = luiCrystals.begin(); itr != luiCrystals.end(); ++itr)
{
if (GameObject *pTemp = pInstance->instance->GetGameObject(*itr))
pTemp->SetGoState(GO_STATE_ACTIVE);
}
pInstance->SetData(DATA_NOVOS_EVENT, IN_PROGRESS);
}
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
}
void AttackStart(Unit* who) {}
void MoveInLineOfSight(Unit* who) {}
void UpdateAI(const uint32 diff)
{
//Return since we have no target
if (!UpdateVictim())
return;
DoMeleeAttackIfReady();
switch (Phase)
{
case PHASE_1:
if (uiTimer < diff)
{
Creature *pSummon = m_creature->SummonCreature(RAND(CREATURE_FETID_TROLL_CORPSE,CREATURE_HULKING_CORPSE,CREATURE_RISEN_SHADOWCASTER), AddSpawnPoint.x, AddSpawnPoint.y , AddSpawnPoint.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
pSummon->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(), m_creature->GetPositionY() , m_creature->GetPositionZ());
//If spell is casted stops casting arcane field so no spell casting
//DoCast(m_creature,SPELL_SUMMON_MINIONS);
uiTimer = 3000;
} else uiTimer -= diff;
if (uiCrystalHandlerTimer < diff)
{
//TODO: say
Creature *pCrystalHandler = m_creature->SummonCreature(CREATURE_CRYSTAL_HANDLER, AddSpawnPoint.x, AddSpawnPoint.y , AddSpawnPoint.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
pCrystalHandler->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(), m_creature->GetPositionY() , m_creature->GetPositionZ());
uiCrystalHandlerTimer = 20000+rand()%10000;
} else uiCrystalHandlerTimer -= diff;
break;
case PHASE_2:
if (uiTimer < diff)
{
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
while (pTarget && pTarget->GetTypeId() != TYPEID_PLAYER)
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
if (pTarget)
DoCast(pTarget, HeroicMode ? RAND(H_SPELL_ARCANE_BLAST,H_SPELL_BLIZZARD,H_SPELL_FROSTBOLT,H_SPELL_WRATH_OF_MISERY) :
RAND(SPELL_ARCANE_BLAST,SPELL_BLIZZARD,SPELL_FROSTBOLT,SPELL_WRATH_OF_MISERY));
uiTimer = 1000 + rand()%2000;
} else uiTimer -= diff;
break;
}
}
void JustDied(Unit* killer) {}
void JustDied(Unit* killer)
{
if (pInstance)
pInstance->SetData(DATA_NOVOS_EVENT, DONE);
}
void KilledUnit(Unit *victim)
{
if (victim == m_creature)
return;
DoScriptText(SAY_KILL, m_creature);
}
void RemoveCrystal()
{
if (!luiCrystals.empty())
{
if (pInstance)
if (GameObject *pTemp = pInstance->instance->GetGameObject(luiCrystals.back()))
pTemp->SetGoState(GO_STATE_READY);
luiCrystals.pop_back();
}
if (luiCrystals.empty())
{
m_creature->CastStop();
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
Phase = PHASE_2;
uiTimer = 1000;
}
}
};
struct TRINITY_DLL_DECL mob_crystal_handlerAI : public ScriptedAI
{
mob_crystal_handlerAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
}
ScriptedInstance *pInstance;
void JustDied(Unit* killer)
{
if (Creature* pNovos = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_NOVOS) : 0))
CAST_AI(boss_novosAI,pNovos->AI())->RemoveCrystal();
}
};
CreatureAI* GetAI_boss_novos(Creature* pCreature)
@@ -65,6 +203,11 @@ CreatureAI* GetAI_boss_novos(Creature* pCreature)
return new boss_novosAI (pCreature);
}
CreatureAI* GetAI_mob_crystal_handler(Creature* pCreature)
{
return new mob_crystal_handlerAI (pCreature);
}
void AddSC_boss_novos()
{
Script *newscript;
@@ -73,4 +216,9 @@ void AddSC_boss_novos()
newscript->Name="boss_novos";
newscript->GetAI = &GetAI_boss_novos;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name="mob_crystal_handler";
newscript->GetAI = &GetAI_mob_crystal_handler;
newscript->RegisterSelf();
}
@@ -10,52 +10,70 @@ Script Data End */
update creature_template set scriptname = 'boss_tharon_ja' where entry = '';
*** SQL END ***/
#include "precompiled.h"
#include "def_drak_tharon_keep.h"
//Spells
#define SPELL_COURSE_OF_LIFE 49527
#define SPELL_DECAY_FLESH 49356 //casted at end of pahase 1, starts phase 2
#define SPELL_EYE_BEAM_N 49544
#define SPELL_LIGHTNING_BREATH_N 49537
#define SPELL_POISON_CLOUD_N 49548
#define SPELL_RAIN_OF_FIRE_N 49518
#define SPELL_RETURN_FLESH 53463 //Channeled spell ending phase two and returning to phase 1. This ability will stun the party for 6 seconds.
#define SPELL_SHADOW_VOLLEY_N 49528
enum Spells
{
SPELL_COURSE_OF_LIFE = 49527,
SPELL_DECAY_FLESH = 49356, //casted at end of pahase 1, starts phase 2
SPELL_EYE_BEAM = 49544,
SPELL_LIGHTNING_BREATH = 49537,
SPELL_POISON_CLOUD = 49548,
SPELL_RAIN_OF_FIRE = 49518,
SPELL_RETURN_FLESH = 53463, //Channeled spell ending phase two and returning to phase 1. This ability will stun the party for 6 seconds.
SPELL_SHADOW_VOLLEY = 49528,
//Spells Heroic
#define SPELL_COURSE_OF_LIFE_H 59972
#define SPELL_EYE_BEAM_H 59965
#define SPELL_LIGHTNING_BREATH_H 59963
#define SPELL_POISON_CLOUD_H 59969
#define SPELL_RAIN_OF_FIRE_H 59971
#define SPELL_SHADOW_VOLLEY_H 59973
H_SPELL_COURSE_OF_LIFE = 59972,
H_SPELL_EYE_BEAM = 59965,
H_SPELL_LIGHTNING_BREATH = 59963,
H_SPELL_POISON_CLOUD = 59969,
H_SPELL_RAIN_OF_FIRE = 59971,
H_SPELL_SHADOW_VOLLEY = 59973
};
enum PlayerSkills
{
//Players skills durring Phase2
#define PLAYER_PHASE2_SLAYING_STRIKE 50799
#define PLAYER_PHASE2_TAUNT 49613
#define PLAYER_PHASE2_BONE_ARMOR 49609
#define PLAYER_PHASE2_TOUCH_OF_LIFE 49617
PLAYER_PHASE2_SLAYING_STRIKE = 50799,
PLAYER_PHASE2_TAUNT = 49613,
PLAYER_PHASE2_BONE_ARMOR = 49609,
PLAYER_PHASE2_TOUCH_OF_LIFE = 49617
};
//Phase 1 all abilities except Eye beam
//Phase 2 turns players to skeletons with new abilities, boss grows skin
//not in db
//Yell
#define SAY_AGGRO -1600011
#define SAY_KILL_1 -1600012
#define SAY_KILL_2 -1600013
#define SAY_FLESH_1 -1600014
#define SAY_FLESH_2 -1600015
#define SAY_SKELETON_1 -1600016
#define SAY_SKELETON_2 -1600017
#define SAY_DEATH -1600018
enum Yells
{
SAY_AGGRO = -1600011,
SAY_KILL_1 = -1600012,
SAY_KILL_2 = -1600013,
SAY_FLESH_1 = -1600014,
SAY_FLESH_2 = -1600015,
SAY_SKELETON_1 = -1600016,
SAY_SKELETON_2 = -1600017,
SAY_DEATH = -1600018
};
struct TRINITY_DLL_DECL boss_tharon_jaAI : public ScriptedAI
{
boss_tharon_jaAI(Creature *c) : ScriptedAI(c) {}
boss_tharon_jaAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
}
ScriptedInstance* pInstance;
void Reset() {}
void Reset()
{
if (pInstance)
pInstance->SetData(DATA_THARON_JA_EVENT, NOT_STARTED);
}
void EnterCombat(Unit* who)
{
DoScriptText(SAY_AGGRO, m_creature);
if (pInstance)
pInstance->SetData(DATA_THARON_JA_EVENT, IN_PROGRESS);
}
void AttackStart(Unit* who) {}
void MoveInLineOfSight(Unit* who) {}
@@ -67,9 +85,18 @@ struct TRINITY_DLL_DECL boss_tharon_jaAI : public ScriptedAI
DoMeleeAttackIfReady();
}
void KilledUnit(Unit *victim)
{
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2),m_creature);
}
void JustDied(Unit* killer)
{
DoScriptText(SAY_DEATH,m_creature);
if (pInstance)
pInstance->SetData(DATA_THARON_JA_EVENT, DONE);
}
};
@@ -10,33 +10,49 @@ Script Data End */
update creature_template set scriptname = 'boss_trollgore' where entry = '';
*** SQL END ***/
#include "precompiled.h"
#include "def_drak_tharon_keep.h"
//Spell
#define SPELL_INFECTED_WOUND 49637
#define SPELL_CRUSH 49639
#define SPELL_CORPSE_EXPLODE_N 49555
#define SPELL_CONSUME_N 49380
enum Spells
{
SPELL_INFECTED_WOUND = 49637,
SPELL_CRUSH = 49639,
SPELL_CORPSE_EXPLODE = 49555,
SPELL_CONSUME = 49380,
//Spell Heroic
#define SPELL_CORPSE_EXPLODE_H 59807
#define SPELL_CONSUME_H 59803
H_SPELL_CORPSE_EXPLODE = 59807,
H_SPELL_CONSUME = 59803
};
//not in db
//Yell
#define SAY_AGGRO -1600006
#define SAY_KILL -1600007
#define SAY_CONSUME -1600008
#define SAY_EXPLODE -1600009
#define SAY_DEATH -1600010
enum Yells
{
SAY_AGGRO = -1600006,
SAY_KILL = -1600007,
SAY_CONSUME = -1600008,
SAY_EXPLODE = -1600009,
SAY_DEATH = -1600010
};
struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
{
boss_trollgoreAI(Creature *c) : ScriptedAI(c) {}
boss_trollgoreAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
}
ScriptedInstance* pInstance;
void Reset() {}
void Reset()
{
if (pInstance)
pInstance->SetData(DATA_TROLLGORE_EVENT, NOT_STARTED);
}
void EnterCombat(Unit* who)
{
DoScriptText(SAY_AGGRO, m_creature);
if (pInstance)
pInstance->SetData(DATA_TROLLGORE_EVENT, IN_PROGRESS);
}
void AttackStart(Unit* who) {}
void MoveInLineOfSight(Unit* who) {}
@@ -51,6 +67,9 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
void JustDied(Unit* killer)
{
DoScriptText(SAY_DEATH, m_creature);
if (pInstance)
pInstance->SetData(DATA_TROLLGORE_EVENT, DONE);
}
void KilledUnit(Unit *victim)
{
@@ -1,4 +1,21 @@
#ifndef DEF_DRAK_THARON_H
#define DEF_DRAK_THARON_H
enum Data
{
DATA_TROLLGORE_EVENT,
DATA_NOVOS_EVENT,
DATA_DRED_EVENT,
DATA_THARON_JA_EVENT
};
enum Data64
{
DATA_TROLLGORE,
DATA_NOVOS,
DATA_DRED,
DATA_THARON_JA,
DATA_NOVOS_CRYSTAL_1,
DATA_NOVOS_CRYSTAL_2,
DATA_NOVOS_CRYSTAL_3,
DATA_NOVOS_CRYSTAL_4
};
#endif
@@ -1,9 +1,189 @@
#include "precompiled.h"
#include "def_drak_tharon_keep.h"
#define MAX_ENCOUNTER 4
/* Drak'Tharon Keep encounters:
0 - Trollgore
1 - Novos
2 - King Dred
3 - Tharon Ja
*/
struct TRINITY_DLL_DECL instance_drak_tharon : public ScriptedInstance
{
instance_drak_tharon(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
uint64 uiTrollgore;
uint64 uiNovos;
uint64 uiDred;
uint64 uiTharonJa;
uint64 uiNovosCrystal1;
uint64 uiNovosCrystal2;
uint64 uiNovosCrystal3;
uint64 uiNovosCrystal4;
uint8 m_auiEncounter[MAX_ENCOUNTER];
std::string str_data;
void Initialize()
{
uiTrollgore = 0;
uiNovos = 0;
uiDred = 0;
uiTharonJa = 0;
uiNovosCrystal1 = 0;
uiNovosCrystal2 = 0;
uiNovosCrystal3 = 0;
uiNovosCrystal4 = 0;
}
bool IsEncounterInProgress() const
{
for(uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS) return true;
return false;
}
void OnGameObjectCreate(GameObject* pGo, bool add)
{
switch(pGo->GetEntry())
{
case 189299:
uiNovosCrystal1 = pGo->GetGUID();
break;
case 189300:
uiNovosCrystal2 = pGo->GetGUID();
break;
case 189301:
uiNovosCrystal3 = pGo->GetGUID();
break;
case 189302:
uiNovosCrystal4 = pGo->GetGUID();
break;
}
}
void OnCreatureCreate(Creature* pCreature, bool add)
{
switch(pCreature->GetEntry())
{
case 26630:
uiTrollgore = pCreature->GetGUID();
break;
case 26631:
uiNovos = pCreature->GetGUID();
break;
case 27483:
uiTrollgore = pCreature->GetGUID();
break;
case 26632:
uiTharonJa = pCreature->GetGUID();
break;
}
}
uint64 GetData64(uint32 identifier)
{
switch(identifier)
{
case DATA_TROLLGORE: return uiTrollgore;
case DATA_NOVOS: return uiNovos;
case DATA_DRED: return uiDred;
case DATA_THARON_JA: return uiTharonJa;
case DATA_NOVOS_CRYSTAL_1: return uiNovosCrystal1;
case DATA_NOVOS_CRYSTAL_2: return uiNovosCrystal2;
case DATA_NOVOS_CRYSTAL_3: return uiNovosCrystal3;
case DATA_NOVOS_CRYSTAL_4: return uiNovosCrystal4;
}
return 0;
}
void SetData(uint32 type, uint32 data)
{
switch(type)
{
case DATA_TROLLGORE_EVENT:
m_auiEncounter[0] = data;
break;
case DATA_NOVOS_EVENT:
m_auiEncounter[1] = data;
break;
case DATA_DRED_EVENT:
m_auiEncounter[2] = data;
break;
case DATA_THARON_JA_EVENT:
m_auiEncounter[3] = data;
break;
}
if (data == DONE)
{
SaveToDB();
}
}
uint32 GetData(uint32 type)
{
switch(type)
{
case DATA_TROLLGORE_EVENT: return m_auiEncounter[0];
case DATA_NOVOS_EVENT: return m_auiEncounter[1];
case DATA_DRED_EVENT: return m_auiEncounter[2];
case DATA_THARON_JA_EVENT: return m_auiEncounter[3];
}
}
std::string GetSaveData()
{
OUT_SAVE_INST_DATA;
std::string str_data;
std::ostringstream saveStream;
saveStream << "D K " << m_auiEncounter[0] << " " << m_auiEncounter[1] << " "
<< m_auiEncounter[2] << " " << m_auiEncounter[3];
str_data = saveStream.str();
OUT_SAVE_INST_DATA_COMPLETE;
return str_data;
}
void Load(const char* in)
{
if (!in)
{
OUT_LOAD_INST_DATA_FAIL;
return;
}
OUT_LOAD_INST_DATA(in);
char dataHead1, dataHead2;
uint16 data0,data1,data2,data3,data4, data5, data6;
std::istringstream loadStream(in);
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3;
if (dataHead1 == 'D' && dataHead2 == 'K')
{
m_auiEncounter[0] = data0;
m_auiEncounter[1] = data1;
m_auiEncounter[2] = data2;
m_auiEncounter[3] = data3;
m_auiEncounter[4] = data4;
for(uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS)
m_auiEncounter[i] = NOT_STARTED;
}else OUT_LOAD_INST_DATA_FAIL;
OUT_LOAD_INST_DATA_COMPLETE;
}
};
InstanceData* GetInstanceData_instance_drak_tharon(Map* pMap)
@@ -327,6 +327,8 @@ extern void AddSC_utgarde_keep();
extern void AddSC_boss_archavon(); //Vault of Archavon
extern void AddSC_boss_emalon();
extern void AddSC_instance_archavon();
extern void AddSC_boss_novos(); //Drak'Tharon Keep
extern void AddSC_instance_drak_tharon();
extern void AddSC_borean_tundra();
extern void AddSC_dragonblight();
@@ -746,6 +748,8 @@ void AddScripts()
AddSC_boss_archavon(); //Vault of Archavon
AddSC_boss_emalon();
AddSC_instance_archavon();
AddSC_boss_novos(); //Drak'Tharon Keep
AddSC_instance_drak_tharon();
AddSC_borean_tundra();
AddSC_dragonblight();