Merge pull request #5733 from GyxTom/master

Core/Script: Clean-ups in scripts
This commit is contained in:
Shocker
2012-03-16 15:13:44 -07:00
135 changed files with 1270 additions and 1057 deletions
+1 -1
View File
@@ -382,7 +382,7 @@ public:
// Let set addon state only for lesser (strong) security level // Let set addon state only for lesser (strong) security level
// or to self account // or to self account
if (handler->GetSession() && handler->GetSession()->GetAccountId () != accountId && if (handler->GetSession() && handler->GetSession()->GetAccountId() != accountId &&
handler->HasLowerSecurityAccount(NULL, accountId, true)) handler->HasLowerSecurityAccount(NULL, accountId, true))
return false; return false;
+5 -3
View File
@@ -360,7 +360,9 @@ public:
//Edit Player Spell //Edit Player Spell
static bool HandleModifySpellCommand(ChatHandler* handler, const char* args) static bool HandleModifySpellCommand(ChatHandler* handler, const char* args)
{ {
if (!*args) return false; if (!*args)
return false;
char* pspellflatid = strtok((char*)args, " "); char* pspellflatid = strtok((char*)args, " ");
if (!pspellflatid) if (!pspellflatid)
return false; return false;
@@ -1141,10 +1143,10 @@ public:
static bool HandleModifyRepCommand(ChatHandler* handler, const char* args) static bool HandleModifyRepCommand(ChatHandler* handler, const char* args)
{ {
if (!*args) return false; if (!*args)
return false;
Player* target = handler->getSelectedPlayer(); Player* target = handler->getSelectedPlayer();
if (!target) if (!target)
{ {
handler->SendSysMessage(LANG_PLAYER_NOT_FOUND); handler->SendSysMessage(LANG_PLAYER_NOT_FOUND);
+9 -8
View File
@@ -108,6 +108,7 @@ public:
{ {
if (!*args) if (!*args)
return false; return false;
char* charID = handler->extractKeyFromLink((char*)args, "Hcreature_entry"); char* charID = handler->extractKeyFromLink((char*)args, "Hcreature_entry");
if (!charID) if (!charID)
return false; return false;
@@ -135,7 +136,7 @@ public:
return true; return true;
} }
Creature* creature = new Creature; Creature* creature = new Creature();
if (!creature->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id, 0, (uint32)teamval, x, y, z, o)) if (!creature->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_UNIT), map, chr->GetPhaseMaskForSpawn(), id, 0, (uint32)teamval, x, y, z, o))
{ {
delete creature; delete creature;
@@ -1036,7 +1037,7 @@ public:
} }
if (/*creature->GetMotionMaster()->empty() ||*/ if (/*creature->GetMotionMaster()->empty() ||*/
creature->GetMotionMaster()->GetCurrentMovementGeneratorType () != FOLLOW_MOTION_TYPE) creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != FOLLOW_MOTION_TYPE)
{ {
handler->PSendSysMessage(LANG_CREATURE_NOT_FOLLOW_YOU, creature->GetName()); handler->PSendSysMessage(LANG_CREATURE_NOT_FOLLOW_YOU, creature->GetName());
handler->SetSentErrorMessage(true); handler->SetSentErrorMessage(true);
@@ -1131,17 +1132,17 @@ public:
//npc tame handling //npc tame handling
static bool HandleNpcTameCommand(ChatHandler* handler, const char* /*args*/) static bool HandleNpcTameCommand(ChatHandler* handler, const char* /*args*/)
{ {
Creature* creatureTarget = handler->getSelectedCreature (); Creature* creatureTarget = handler->getSelectedCreature();
if (!creatureTarget || creatureTarget->isPet ()) if (!creatureTarget || creatureTarget->isPet())
{ {
handler->PSendSysMessage (LANG_SELECT_CREATURE); handler->PSendSysMessage (LANG_SELECT_CREATURE);
handler->SetSentErrorMessage (true); handler->SetSentErrorMessage (true);
return false; return false;
} }
Player* player = handler->GetSession()->GetPlayer (); Player* player = handler->GetSession()->GetPlayer();
if (player->GetPetGUID ()) if (player->GetPetGUID())
{ {
handler->SendSysMessage (LANG_YOU_ALREADY_HAVE_PET); handler->SendSysMessage (LANG_YOU_ALREADY_HAVE_PET);
handler->SetSentErrorMessage (true); handler->SetSentErrorMessage (true);
@@ -1168,8 +1169,8 @@ public:
// place pet before player // place pet before player
float x, y, z; float x, y, z;
player->GetClosePoint (x, y, z, creatureTarget->GetObjectSize (), CONTACT_DISTANCE); player->GetClosePoint (x, y, z, creatureTarget->GetObjectSize(), CONTACT_DISTANCE);
pet->Relocate (x, y, z, M_PI-player->GetOrientation ()); pet->Relocate(x, y, z, M_PI-player->GetOrientation());
// set pet to defensive mode by default (some classes can't control controlled pets in fact). // set pet to defensive mode by default (some classes can't control controlled pets in fact).
pet->SetReactState(REACT_DEFENSIVE); pet->SetReactState(REACT_DEFENSIVE);
+2 -1
View File
@@ -277,7 +277,8 @@ public:
std::string show = show_str; std::string show = show_str;
// Check // Check
if ((show != "add") && (show != "mod") && (show != "del") && (show != "listid")) return false; if ((show != "add") && (show != "mod") && (show != "del") && (show != "listid"))
return false;
char* arg_id = strtok(NULL, " "); char* arg_id = strtok(NULL, " ");
uint32 id = 0; uint32 id = 0;
@@ -1089,7 +1089,7 @@ public:
struct npc_tobias_seecherAI : public npc_escortAI struct npc_tobias_seecherAI : public npc_escortAI
{ {
npc_tobias_seecherAI(Creature* c) :npc_escortAI(c) {} npc_tobias_seecherAI(Creature* creature) : npc_escortAI(creature) {}
void EnterCombat(Unit* who) {} void EnterCombat(Unit* who) {}
void Reset() {} void Reset() {}
@@ -416,7 +416,7 @@ public:
struct boss_baroness_dorothea_millstipeAI : public boss_moroes_guestAI struct boss_baroness_dorothea_millstipeAI : public boss_moroes_guestAI
{ {
//Shadow Priest //Shadow Priest
boss_baroness_dorothea_millstipeAI(Creature* c) : boss_moroes_guestAI(c) {} boss_baroness_dorothea_millstipeAI(Creature* creature) : boss_moroes_guestAI(creature) {}
uint32 ManaBurn_Timer; uint32 ManaBurn_Timer;
uint32 MindFlay_Timer; uint32 MindFlay_Timer;
@@ -480,7 +480,7 @@ public:
struct boss_baron_rafe_dreugerAI : public boss_moroes_guestAI struct boss_baron_rafe_dreugerAI : public boss_moroes_guestAI
{ {
//Retr Pally //Retr Pally
boss_baron_rafe_dreugerAI(Creature* c) : boss_moroes_guestAI(c){} boss_baron_rafe_dreugerAI(Creature* creature) : boss_moroes_guestAI(creature){}
uint32 HammerOfJustice_Timer; uint32 HammerOfJustice_Timer;
uint32 SealOfCommand_Timer; uint32 SealOfCommand_Timer;
@@ -538,7 +538,7 @@ public:
struct boss_lady_catriona_von_indiAI : public boss_moroes_guestAI struct boss_lady_catriona_von_indiAI : public boss_moroes_guestAI
{ {
//Holy Priest //Holy Priest
boss_lady_catriona_von_indiAI(Creature* c) : boss_moroes_guestAI(c) {} boss_lady_catriona_von_indiAI(Creature* creature) : boss_moroes_guestAI(creature) {}
uint32 DispelMagic_Timer; uint32 DispelMagic_Timer;
uint32 GreaterHeal_Timer; uint32 GreaterHeal_Timer;
@@ -609,7 +609,7 @@ public:
struct boss_lady_keira_berrybuckAI : public boss_moroes_guestAI struct boss_lady_keira_berrybuckAI : public boss_moroes_guestAI
{ {
//Holy Pally //Holy Pally
boss_lady_keira_berrybuckAI(Creature* c) : boss_moroes_guestAI(c) {} boss_lady_keira_berrybuckAI(Creature* creature) : boss_moroes_guestAI(creature) {}
uint32 Cleanse_Timer; uint32 Cleanse_Timer;
uint32 GreaterBless_Timer; uint32 GreaterBless_Timer;
@@ -684,7 +684,7 @@ public:
struct boss_lord_robin_darisAI : public boss_moroes_guestAI struct boss_lord_robin_darisAI : public boss_moroes_guestAI
{ {
//Arms Warr //Arms Warr
boss_lord_robin_darisAI(Creature* c) : boss_moroes_guestAI(c) {} boss_lord_robin_darisAI(Creature* creature) : boss_moroes_guestAI(creature) {}
uint32 Hamstring_Timer; uint32 Hamstring_Timer;
uint32 MortalStrike_Timer; uint32 MortalStrike_Timer;
@@ -741,7 +741,7 @@ public:
struct boss_lord_crispin_ferenceAI : public boss_moroes_guestAI struct boss_lord_crispin_ferenceAI : public boss_moroes_guestAI
{ {
//Arms Warr //Arms Warr
boss_lord_crispin_ferenceAI(Creature* c) : boss_moroes_guestAI(c) {} boss_lord_crispin_ferenceAI(Creature* creature) : boss_moroes_guestAI(creature) {}
uint32 Disarm_Timer; uint32 Disarm_Timer;
uint32 HeroicStrike_Timer; uint32 HeroicStrike_Timer;
@@ -178,7 +178,7 @@ public:
struct mob_fiendish_portalAI : public PassiveAI struct mob_fiendish_portalAI : public PassiveAI
{ {
mob_fiendish_portalAI(Creature* c) : PassiveAI(c), summons(me){} mob_fiendish_portalAI(Creature* creature) : PassiveAI(creature), summons(me){}
SummonList summons; SummonList summons;
@@ -495,7 +495,7 @@ public:
struct boss_kagani_nightstrikeAI : public boss_priestess_lackey_commonAI struct boss_kagani_nightstrikeAI : public boss_priestess_lackey_commonAI
{ {
//Rogue //Rogue
boss_kagani_nightstrikeAI(Creature* c) : boss_priestess_lackey_commonAI(c) {} boss_kagani_nightstrikeAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) {}
uint32 Gouge_Timer; uint32 Gouge_Timer;
uint32 Kick_Timer; uint32 Kick_Timer;
@@ -600,7 +600,7 @@ public:
struct boss_ellris_duskhallowAI : public boss_priestess_lackey_commonAI struct boss_ellris_duskhallowAI : public boss_priestess_lackey_commonAI
{ {
//Warlock //Warlock
boss_ellris_duskhallowAI(Creature* c) : boss_priestess_lackey_commonAI(c) {} boss_ellris_duskhallowAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) {}
uint32 Immolate_Timer; uint32 Immolate_Timer;
uint32 Shadow_Bolt_Timer; uint32 Shadow_Bolt_Timer;
@@ -692,7 +692,7 @@ public:
struct boss_eramas_brightblazeAI : public boss_priestess_lackey_commonAI struct boss_eramas_brightblazeAI : public boss_priestess_lackey_commonAI
{ {
//Monk //Monk
boss_eramas_brightblazeAI(Creature* c) : boss_priestess_lackey_commonAI(c) {} boss_eramas_brightblazeAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) {}
uint32 Knockdown_Timer; uint32 Knockdown_Timer;
uint32 Snap_Kick_Timer; uint32 Snap_Kick_Timer;
@@ -754,7 +754,7 @@ public:
struct boss_yazzaiAI : public boss_priestess_lackey_commonAI struct boss_yazzaiAI : public boss_priestess_lackey_commonAI
{ {
//Mage //Mage
boss_yazzaiAI(Creature* c) : boss_priestess_lackey_commonAI(c) {} boss_yazzaiAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) {}
bool HasIceBlocked; bool HasIceBlocked;
@@ -885,7 +885,7 @@ public:
struct boss_warlord_salarisAI : public boss_priestess_lackey_commonAI struct boss_warlord_salarisAI : public boss_priestess_lackey_commonAI
{ {
//Warrior //Warrior
boss_warlord_salarisAI(Creature* c) : boss_priestess_lackey_commonAI(c) {} boss_warlord_salarisAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) {}
uint32 Intercept_Stun_Timer; uint32 Intercept_Stun_Timer;
uint32 Disarm_Timer; uint32 Disarm_Timer;
@@ -1006,7 +1006,10 @@ public:
struct boss_garaxxasAI : public boss_priestess_lackey_commonAI struct boss_garaxxasAI : public boss_priestess_lackey_commonAI
{ {
//Hunter //Hunter
boss_garaxxasAI(Creature* c) : boss_priestess_lackey_commonAI(c) { m_uiPetGUID = 0; } boss_garaxxasAI(Creature* creature) : boss_priestess_lackey_commonAI(creature)
{
m_uiPetGUID = 0;
}
uint64 m_uiPetGUID; uint64 m_uiPetGUID;
@@ -1126,7 +1129,7 @@ public:
struct boss_apokoAI : public boss_priestess_lackey_commonAI struct boss_apokoAI : public boss_priestess_lackey_commonAI
{ {
//Shaman //Shaman
boss_apokoAI(Creature* c) : boss_priestess_lackey_commonAI(c) {} boss_apokoAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) {}
uint32 Totem_Timer; uint32 Totem_Timer;
uint8 Totem_Amount; uint8 Totem_Amount;
@@ -1225,7 +1228,7 @@ public:
struct boss_zelfanAI : public boss_priestess_lackey_commonAI struct boss_zelfanAI : public boss_priestess_lackey_commonAI
{ {
//Engineer //Engineer
boss_zelfanAI(Creature* c) : boss_priestess_lackey_commonAI(c) {} boss_zelfanAI(Creature* creature) : boss_priestess_lackey_commonAI(creature) {}
uint32 Goblin_Dragon_Gun_Timer; uint32 Goblin_Dragon_Gun_Timer;
uint32 Rocket_Launch_Timer; uint32 Rocket_Launch_Timer;
@@ -293,7 +293,7 @@ public:
struct npc_unworthy_initiate_anchorAI : public PassiveAI struct npc_unworthy_initiate_anchorAI : public PassiveAI
{ {
npc_unworthy_initiate_anchorAI(Creature* c) : PassiveAI(c), prisonerGUID(0) {} npc_unworthy_initiate_anchorAI(Creature* creature) : PassiveAI(creature), prisonerGUID(0) {}
uint64 prisonerGUID; uint64 prisonerGUID;
@@ -303,9 +303,11 @@ public:
prisonerGUID = guid; prisonerGUID = guid;
} }
uint64 GetGUID(int32 /*id*/) { return prisonerGUID; } uint64 GetGUID(int32 /*id*/)
{
return prisonerGUID;
}
}; };
}; };
class go_acherus_soul_prison : public GameObjectScript class go_acherus_soul_prison : public GameObjectScript
@@ -702,7 +704,9 @@ public:
void Reset() void Reset()
{ {
Creature* deathcharger = me->FindNearestCreature(28782, 30); Creature* deathcharger = me->FindNearestCreature(28782, 30);
if (!deathcharger) return; if (!deathcharger)
return;
deathcharger->RestoreFaction(); deathcharger->RestoreFaction();
deathcharger->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); deathcharger->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
deathcharger->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); deathcharger->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -713,7 +717,9 @@ public:
void JustDied(Unit* killer) void JustDied(Unit* killer)
{ {
Creature* deathcharger = me->FindNearestCreature(28782, 30); Creature* deathcharger = me->FindNearestCreature(28782, 30);
if (!deathcharger) return; if (!deathcharger)
return;
if (killer->GetTypeId() == TYPEID_PLAYER && deathcharger->GetTypeId() == TYPEID_UNIT && deathcharger->IsVehicle()) if (killer->GetTypeId() == TYPEID_PLAYER && deathcharger->GetTypeId() == TYPEID_UNIT && deathcharger->IsVehicle())
{ {
deathcharger->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK); deathcharger->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
@@ -868,14 +874,14 @@ class npc_scarlet_miner_cart : public CreatureScript
public: public:
npc_scarlet_miner_cart() : CreatureScript("npc_scarlet_miner_cart") { } npc_scarlet_miner_cart() : CreatureScript("npc_scarlet_miner_cart") { }
CreatureAI* GetAI(Creature* _Creature) const CreatureAI* GetAI(Creature* creature) const
{ {
return new npc_scarlet_miner_cartAI(_Creature); return new npc_scarlet_miner_cartAI(creature);
} }
struct npc_scarlet_miner_cartAI : public PassiveAI struct npc_scarlet_miner_cartAI : public PassiveAI
{ {
npc_scarlet_miner_cartAI(Creature* c) : PassiveAI(c), minerGUID(0) npc_scarlet_miner_cartAI(Creature* creature) : PassiveAI(creature), minerGUID(0)
{ {
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
me->SetDisplayId(me->GetCreatureTemplate()->Modelid1); // Modelid2 is a horse. me->SetDisplayId(me->GetCreatureTemplate()->Modelid1); // Modelid2 is a horse.
@@ -924,9 +930,9 @@ class npc_scarlet_miner : public CreatureScript
public: public:
npc_scarlet_miner() : CreatureScript("npc_scarlet_miner") { } npc_scarlet_miner() : CreatureScript("npc_scarlet_miner") { }
CreatureAI* GetAI(Creature* _Creature) const CreatureAI* GetAI(Creature* creature) const
{ {
return new npc_scarlet_minerAI(_Creature); return new npc_scarlet_minerAI(creature);
} }
struct npc_scarlet_minerAI : public npc_escortAI struct npc_scarlet_minerAI : public npc_escortAI
@@ -1057,7 +1063,7 @@ class go_inconspicuous_mine_car : public GameObjectScript
public: public:
go_inconspicuous_mine_car() : GameObjectScript("go_inconspicuous_mine_car") { } go_inconspicuous_mine_car() : GameObjectScript("go_inconspicuous_mine_car") { }
bool OnGossipHello(Player* player, GameObject* /*pGO*/) bool OnGossipHello(Player* player, GameObject* /*go*/)
{ {
if (player->GetQuestStatus(12701) == QUEST_STATUS_INCOMPLETE) if (player->GetQuestStatus(12701) == QUEST_STATUS_INCOMPLETE)
{ {
@@ -35,7 +35,7 @@ public:
struct npc_valkyr_battle_maidenAI : public PassiveAI struct npc_valkyr_battle_maidenAI : public PassiveAI
{ {
npc_valkyr_battle_maidenAI(Creature* c) : PassiveAI(c) {} npc_valkyr_battle_maidenAI(Creature* creature) : PassiveAI(creature) {}
uint32 FlyBackTimer; uint32 FlyBackTimer;
float x, y, z; float x, y, z;
@@ -296,8 +296,11 @@ public:
if (spell->Id == SPELL_FLYING_HEAD) if (spell->Id == SPELL_FLYING_HEAD)
{ {
if (Phase < 3) ++Phase; if (Phase < 3)
else Phase = 3; ++Phase;
else
Phase = 3;
withbody = false; withbody = false;
if (!bodyGUID) if (!bodyGUID)
bodyGUID = caster->GetGUID(); bodyGUID = caster->GetGUID();
@@ -319,7 +322,8 @@ public:
if (wait <= diff) if (wait <= diff)
{ {
wait = 1000; wait = 1000;
if (!me->getVictim()) return; if (!me->getVictim())
return;
me->GetMotionMaster()->Clear(false); me->GetMotionMaster()->Clear(false);
me->GetMotionMaster()->MoveFleeing(me->getVictim()); me->GetMotionMaster()->MoveFleeing(me->getVictim());
} }
@@ -485,12 +489,18 @@ public:
instance->SetData(DATA_HORSEMAN_EVENT, IN_PROGRESS); instance->SetData(DATA_HORSEMAN_EVENT, IN_PROGRESS);
DoZoneInCombat(); DoZoneInCombat();
} }
void AttackStart(Unit* who) {ScriptedAI::AttackStart(who);}
void AttackStart(Unit* who)
{
ScriptedAI::AttackStart(who);
}
void MoveInLineOfSight(Unit* who) void MoveInLineOfSight(Unit* who)
{ {
if (withhead && Phase != 0) if (withhead && Phase != 0)
ScriptedAI::MoveInLineOfSight(who); ScriptedAI::MoveInLineOfSight(who);
} }
void KilledUnit(Unit* player) void KilledUnit(Unit* player)
{ {
if (player->GetTypeId() == TYPEID_PLAYER) if (player->GetTypeId() == TYPEID_PLAYER)
@@ -595,6 +605,7 @@ public:
if (!headGUID) if (!headGUID)
headGUID = DoSpawnCreature(HEAD, float(rand()%6), float(rand()%6), 0, 0, TEMPSUMMON_DEAD_DESPAWN, 0)->GetGUID(); headGUID = DoSpawnCreature(HEAD, float(rand()%6), float(rand()%6), 0, 0, TEMPSUMMON_DEAD_DESPAWN, 0)->GetGUID();
Unit* Head = Unit::GetUnit((*me), headGUID); Unit* Head = Unit::GetUnit((*me), headGUID);
if (Head && Head->isAlive()) if (Head && Head->isAlive())
{ {
@@ -803,14 +814,22 @@ public:
void Despawn() void Despawn()
{ {
if (!debuffGUID) return; if (!debuffGUID)
return;
Unit* debuff = Unit::GetUnit((*me), debuffGUID); Unit* debuff = Unit::GetUnit((*me), debuffGUID);
if (debuff) if (debuff)
{
debuff->SetVisible(false); debuff->SetVisible(false);
debuffGUID = 0; debuffGUID = 0;
} }
}
void JustDied(Unit* /*killer*/) { if (!sprouted) Despawn(); } void JustDied(Unit* /*killer*/)
{
if (!sprouted)
Despawn();
}
void MoveInLineOfSight(Unit* who) void MoveInLineOfSight(Unit* who)
{ {
@@ -175,10 +175,7 @@ public:
if (uiDarkOffering <= uiDiff) if (uiDarkOffering <= uiDiff)
{ {
if (Creature* pFriend = me->FindNearestCreature(me->GetEntry(), 25.0f, true)) if (Creature* pFriend = me->FindNearestCreature(me->GetEntry(), 25.0f, true))
{
if (pFriend)
DoCast(pFriend, SPELL_DARK_OFFERING); DoCast(pFriend, SPELL_DARK_OFFERING);
}
else else
DoCast(me, SPELL_DARK_OFFERING); DoCast(me, SPELL_DARK_OFFERING);
uiDarkOffering = urand(4400, 12500); uiDarkOffering = urand(4400, 12500);
@@ -676,7 +676,9 @@ public:
void TeleportAllPlayersBack() void TeleportAllPlayersBack()
{ {
Map* map = me->GetMap(); Map* map = me->GetMap();
if (!map->IsDungeon()) return; if (!map->IsDungeon())
return;
Map::PlayerList const &PlayerList = map->GetPlayers(); Map::PlayerList const &PlayerList = map->GetPlayers();
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
{ {
@@ -153,7 +153,7 @@ class boss_archaedas : public CreatureScript
// wake a wall minion // wake a wall minion
if (uiWallMinionTimer <= uiDiff) if (uiWallMinionTimer <= uiDiff)
{ {
instance->SetData (DATA_MINIONS, IN_PROGRESS); instance->SetData(DATA_MINIONS, IN_PROGRESS);
uiWallMinionTimer = 10000; uiWallMinionTimer = 10000;
} else uiWallMinionTimer -= uiDiff; } else uiWallMinionTimer -= uiDiff;
@@ -394,7 +394,7 @@ class go_altar_of_archaedas : public GameObjectScript
{ {
} }
bool OnGossipHello(Player* player, GameObject* /*pGO*/) bool OnGossipHello(Player* player, GameObject* /*go*/)
{ {
InstanceScript* instance = player->GetInstanceScript(); InstanceScript* instance = player->GetInstanceScript();
if (!instance) if (!instance)
@@ -184,8 +184,8 @@ class instance_uldaman : public InstanceMapScript
return; // only want the first one we find return; // only want the first one we find
} }
// if we get this far than all four are dead so open the door // if we get this far than all four are dead so open the door
SetData (DATA_ALTAR_DOORS, DONE); SetData(DATA_ALTAR_DOORS, DONE);
SetDoor (uiArchaedasTempleDoor, true); //open next the door too SetDoor(uiArchaedasTempleDoor, true); //open next the door too
} }
void ActivateWallMinions() void ActivateWallMinions()
@@ -320,7 +320,7 @@ class instance_uldaman : public InstanceMapScript
uiIronayaSealDoorTimer -= diff; uiIronayaSealDoorTimer -= diff;
} }
void SetData (uint32 type, uint32 data) void SetData(uint32 type, uint32 data)
{ {
switch (type) switch (type)
{ {
@@ -386,7 +386,7 @@ class instance_uldaman : public InstanceMapScript
} }
} }
void SetData64 (uint32 type, uint64 data) void SetData64(uint32 type, uint64 data)
{ {
// Archaedas // Archaedas
if (type == 0) if (type == 0)
@@ -425,7 +425,8 @@ class instance_uldaman : public InstanceMapScript
void OnCreatureCreate(Creature* creature) void OnCreatureCreate(Creature* creature)
{ {
switch (creature->GetEntry()) { switch (creature->GetEntry())
{
case 4857: // Stone Keeper case 4857: // Stone Keeper
SetFrozenState (creature); SetFrozenState (creature);
vStoneKeeper.push_back(creature->GetGUID()); vStoneKeeper.push_back(creature->GetGUID());
@@ -458,10 +459,10 @@ class instance_uldaman : public InstanceMapScript
uiArchaedasGUID = creature->GetGUID(); uiArchaedasGUID = creature->GetGUID();
break; break;
} // end switch }
} // end OnCreatureCreate }
uint64 GetData64 (uint32 identifier) uint64 GetData64(uint32 identifier)
{ {
if (identifier == 0) return uiWhoWokeuiArchaedasGUID; if (identifier == 0) return uiWhoWokeuiArchaedasGUID;
if (identifier == 1) return vVaultWalker[0]; // VaultWalker1 if (identifier == 1) return vVaultWalker[0]; // VaultWalker1
@@ -488,7 +488,7 @@ class boss_thurg : public CreatureScript
struct boss_thurgAI : public boss_hexlord_addAI struct boss_thurgAI : public boss_hexlord_addAI
{ {
boss_thurgAI(Creature* c) : boss_hexlord_addAI(c) {} boss_thurgAI(Creature* creature) : boss_hexlord_addAI(creature) {}
uint32 bloodlust_timer; uint32 bloodlust_timer;
uint32 cleave_timer; uint32 cleave_timer;
@@ -548,7 +548,7 @@ class boss_alyson_antille : public CreatureScript
struct boss_alyson_antilleAI : public boss_hexlord_addAI struct boss_alyson_antilleAI : public boss_hexlord_addAI
{ {
//Holy Priest //Holy Priest
boss_alyson_antilleAI(Creature* c) : boss_hexlord_addAI(c) {} boss_alyson_antilleAI(Creature* creature) : boss_hexlord_addAI(creature) {}
uint32 flashheal_timer; uint32 flashheal_timer;
uint32 dispelmagic_timer; uint32 dispelmagic_timer;
@@ -637,7 +637,7 @@ class boss_alyson_antille : public CreatureScript
struct boss_gazakrothAI : public boss_hexlord_addAI struct boss_gazakrothAI : public boss_hexlord_addAI
{ {
boss_gazakrothAI(Creature* c) : boss_hexlord_addAI(c) {} boss_gazakrothAI(Creature* creature) : boss_hexlord_addAI(creature) {}
uint32 firebolt_timer; uint32 firebolt_timer;
@@ -691,7 +691,7 @@ class boss_lord_raadan : public CreatureScript
struct boss_lord_raadanAI : public boss_hexlord_addAI struct boss_lord_raadanAI : public boss_hexlord_addAI
{ {
boss_lord_raadanAI(Creature* c) : boss_hexlord_addAI(c) {} boss_lord_raadanAI(Creature* creature) : boss_hexlord_addAI(creature) {}
uint32 flamebreath_timer; uint32 flamebreath_timer;
uint32 thunderclap_timer; uint32 thunderclap_timer;
@@ -744,7 +744,7 @@ class boss_darkheart : public CreatureScript
struct boss_darkheartAI : public boss_hexlord_addAI struct boss_darkheartAI : public boss_hexlord_addAI
{ {
boss_darkheartAI(Creature* c) : boss_hexlord_addAI(c) {} boss_darkheartAI(Creature* creature) : boss_hexlord_addAI(creature) {}
uint32 psychicwail_timer; uint32 psychicwail_timer;
@@ -787,7 +787,7 @@ class boss_slither : public CreatureScript
struct boss_slitherAI : public boss_hexlord_addAI struct boss_slitherAI : public boss_hexlord_addAI
{ {
boss_slitherAI(Creature* c) : boss_hexlord_addAI(c) {} boss_slitherAI(Creature* creature) : boss_hexlord_addAI(creature) {}
uint32 venomspit_timer; uint32 venomspit_timer;
@@ -847,7 +847,7 @@ class boss_fenstalker : public CreatureScript
struct boss_fenstalkerAI : public boss_hexlord_addAI struct boss_fenstalkerAI : public boss_hexlord_addAI
{ {
boss_fenstalkerAI(Creature* c) : boss_hexlord_addAI(c) {} boss_fenstalkerAI(Creature* creature) : boss_hexlord_addAI(creature) {}
uint32 volatileinf_timer; uint32 volatileinf_timer;
@@ -894,7 +894,7 @@ class boss_koragg : public CreatureScript
struct boss_koraggAI : public boss_hexlord_addAI struct boss_koraggAI : public boss_hexlord_addAI
{ {
boss_koraggAI(Creature* c) : boss_hexlord_addAI(c) {} boss_koraggAI(Creature* creature) : boss_hexlord_addAI(creature) {}
uint32 coldstare_timer; uint32 coldstare_timer;
uint32 mightyblow_timer; uint32 mightyblow_timer;
@@ -221,7 +221,8 @@ class boss_janalai : public CreatureScript
dy = float(irand(-area_dy/2, area_dy/2)); dy = float(irand(-area_dy/2, area_dy/2));
Creature* bomb = DoSpawnCreature(MOB_FIRE_BOMB, dx, dy, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 15000); Creature* bomb = DoSpawnCreature(MOB_FIRE_BOMB, dx, dy, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 15000);
if (bomb) FireBombGUIDs[i] = bomb->GetGUID(); if (bomb)
FireBombGUIDs[i] = bomb->GetGUID();
} }
BombCount = 0; BombCount = 0;
} }
@@ -374,7 +375,9 @@ class boss_janalai : public CreatureScript
//Teleport every Player into the middle //Teleport every Player into the middle
Map* map = me->GetMap(); Map* map = me->GetMap();
if (!map->IsDungeon()) return; if (!map->IsDungeon())
return;
Map::PlayerList const &PlayerList = map->GetPlayers(); Map::PlayerList const &PlayerList = map->GetPlayers();
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
if (Player* i_pl = i->getSource()) if (Player* i_pl = i->getSource())
@@ -109,7 +109,8 @@ class instance_zulaman : public InstanceMapScript
bool IsEncounterInProgress() const bool IsEncounterInProgress() const
{ {
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS) return true; if (m_auiEncounter[i] == IN_PROGRESS)
return true;
return false; return false;
} }
@@ -188,7 +189,9 @@ class instance_zulaman : public InstanceMapScript
void Load(const char* load) void Load(const char* load)
{ {
if (!load) return; if (!load)
return;
std::istringstream ss(load); std::istringstream ss(load);
//sLog->outError("TSCR: Zul'aman loaded, %s.", ss.str().c_str()); //sLog->outError("TSCR: Zul'aman loaded, %s.", ss.str().c_str());
char dataHead; // S char dataHead; // S
@@ -120,24 +120,29 @@ static uint32 ChestEntry[] = {186648, 187021, 186672, 186667};
class npc_zulaman_hostage : public CreatureScript class npc_zulaman_hostage : public CreatureScript
{ {
public: public:
npc_zulaman_hostage() : CreatureScript("npc_zulaman_hostage") { }
npc_zulaman_hostage()
: CreatureScript("npc_zulaman_hostage")
{
}
struct npc_zulaman_hostageAI : public ScriptedAI struct npc_zulaman_hostageAI : public ScriptedAI
{ {
npc_zulaman_hostageAI(Creature* creature) : ScriptedAI(creature) {IsLoot = false;} npc_zulaman_hostageAI(Creature* creature) : ScriptedAI(creature)
{
IsLoot = false;
}
bool IsLoot; bool IsLoot;
uint64 PlayerGUID; uint64 PlayerGUID;
void Reset() {} void Reset() {}
void EnterCombat(Unit* /*who*/) {} void EnterCombat(Unit* /*who*/) {}
void JustDied(Unit* /*who*/) void JustDied(Unit* /*who*/)
{ {
Player* player = Unit::GetPlayer(*me, PlayerGUID); Player* player = Unit::GetPlayer(*me, PlayerGUID);
if (player) player->SendLoot(me->GetGUID(), LOOT_CORPSE); if (player)
player->SendLoot(me->GetGUID(), LOOT_CORPSE);
} }
void UpdateAI(const uint32 /*diff*/) void UpdateAI(const uint32 /*diff*/)
{ {
if (IsLoot) if (IsLoot)
@@ -160,11 +165,13 @@ class npc_zulaman_hostage : public CreatureScript
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
{ {
player->PlayerTalkClass->ClearMenus(); player->PlayerTalkClass->ClearMenus();
if (action == GOSSIP_ACTION_INFO_DEF + 1) if (action == GOSSIP_ACTION_INFO_DEF + 1)
player->CLOSE_GOSSIP_MENU(); player->CLOSE_GOSSIP_MENU();
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
return true; return true;
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
InstanceScript* instance = creature->GetInstanceScript(); InstanceScript* instance = creature->GetInstanceScript();
@@ -61,10 +61,10 @@ class boss_arlokk : public CreatureScript
{ {
boss_arlokkAI(Creature* creature) : ScriptedAI(creature) boss_arlokkAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiShadowWordPain_Timer; uint32 m_uiShadowWordPain_Timer;
uint32 m_uiGouge_Timer; uint32 m_uiGouge_Timer;
@@ -110,8 +110,8 @@ class boss_arlokk : public CreatureScript
void JustReachedHome() void JustReachedHome()
{ {
if (m_instance) if (instance)
m_instance->SetData(DATA_ARLOKK, NOT_STARTED); instance->SetData(DATA_ARLOKK, NOT_STARTED);
//we should be summoned, so despawn //we should be summoned, so despawn
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
@@ -124,8 +124,8 @@ class boss_arlokk : public CreatureScript
me->SetDisplayId(MODEL_ID_NORMAL); me->SetDisplayId(MODEL_ID_NORMAL);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
if (m_instance) if (instance)
m_instance->SetData(DATA_ARLOKK, DONE); instance->SetData(DATA_ARLOKK, DONE);
} }
void DoSummonPhanters() void DoSummonPhanters()
@@ -271,12 +271,12 @@ class go_gong_of_bethekk : public GameObjectScript
bool OnGossipHello(Player* /*player*/, GameObject* go) bool OnGossipHello(Player* /*player*/, GameObject* go)
{ {
if (InstanceScript* m_instance = go->GetInstanceScript()) if (InstanceScript* instance = go->GetInstanceScript())
{ {
if (m_instance->GetData(DATA_ARLOKK) == DONE || m_instance->GetData(DATA_ARLOKK) == IN_PROGRESS) if (instance->GetData(DATA_ARLOKK) == DONE || instance->GetData(DATA_ARLOKK) == IN_PROGRESS)
return true; return true;
m_instance->SetData(DATA_ARLOKK, IN_PROGRESS); instance->SetData(DATA_ARLOKK, IN_PROGRESS);
return true; return true;
} }
@@ -57,10 +57,10 @@ class boss_hakkar : public CreatureScript
{ {
boss_hakkarAI(Creature* creature) : ScriptedAI(creature) boss_hakkarAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 BloodSiphon_Timer; uint32 BloodSiphon_Timer;
uint32 CorruptedBlood_Timer; uint32 CorruptedBlood_Timer;
@@ -156,9 +156,9 @@ class boss_hakkar : public CreatureScript
//Checking if Jeklik is dead. If not we cast her Aspect //Checking if Jeklik is dead. If not we cast her Aspect
if (CheckJeklik_Timer <= diff) if (CheckJeklik_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
if (m_instance->GetData(DATA_JEKLIK) != DONE) if (instance->GetData(DATA_JEKLIK) != DONE)
{ {
if (AspectOfJeklik_Timer <= diff) if (AspectOfJeklik_Timer <= diff)
{ {
@@ -173,9 +173,9 @@ class boss_hakkar : public CreatureScript
//Checking if Venoxis is dead. If not we cast his Aspect //Checking if Venoxis is dead. If not we cast his Aspect
if (CheckVenoxis_Timer <= diff) if (CheckVenoxis_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
if (m_instance->GetData(DATA_VENOXIS) != DONE) if (instance->GetData(DATA_VENOXIS) != DONE)
{ {
if (AspectOfVenoxis_Timer <= diff) if (AspectOfVenoxis_Timer <= diff)
{ {
@@ -190,9 +190,9 @@ class boss_hakkar : public CreatureScript
//Checking if Marli is dead. If not we cast her Aspect //Checking if Marli is dead. If not we cast her Aspect
if (CheckMarli_Timer <= diff) if (CheckMarli_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
if (m_instance->GetData(DATA_MARLI) != DONE) if (instance->GetData(DATA_MARLI) != DONE)
{ {
if (AspectOfMarli_Timer <= diff) if (AspectOfMarli_Timer <= diff)
{ {
@@ -208,9 +208,9 @@ class boss_hakkar : public CreatureScript
//Checking if Thekal is dead. If not we cast his Aspect //Checking if Thekal is dead. If not we cast his Aspect
if (CheckThekal_Timer <= diff) if (CheckThekal_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
if (m_instance->GetData(DATA_THEKAL) != DONE) if (instance->GetData(DATA_THEKAL) != DONE)
{ {
if (AspectOfThekal_Timer <= diff) if (AspectOfThekal_Timer <= diff)
{ {
@@ -225,9 +225,9 @@ class boss_hakkar : public CreatureScript
//Checking if Arlokk is dead. If yes we cast her Aspect //Checking if Arlokk is dead. If yes we cast her Aspect
if (CheckArlokk_Timer <= diff) if (CheckArlokk_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
if (m_instance->GetData(DATA_ARLOKK) != DONE) if (instance->GetData(DATA_ARLOKK) != DONE)
{ {
if (AspectOfArlokk_Timer <= diff) if (AspectOfArlokk_Timer <= diff)
{ {
@@ -56,10 +56,10 @@ class boss_jeklik : public CreatureScript
{ {
boss_jeklikAI(Creature* creature) : ScriptedAI(creature) boss_jeklikAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 Charge_Timer; uint32 Charge_Timer;
uint32 SonicBurst_Timer; uint32 SonicBurst_Timer;
@@ -98,8 +98,8 @@ class boss_jeklik : public CreatureScript
{ {
DoScriptText(SAY_DEATH, me); DoScriptText(SAY_DEATH, me);
if (m_instance) if (instance)
m_instance->SetData(DATA_JEKLIK, DONE); instance->SetData(DATA_JEKLIK, DONE);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -238,10 +238,10 @@ class mob_batrider : public CreatureScript
{ {
mob_batriderAI(Creature* creature) : ScriptedAI(creature) mob_batriderAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 Bomb_Timer; uint32 Bomb_Timer;
uint32 Check_Timer; uint32 Check_Timer;
@@ -274,9 +274,9 @@ class mob_batrider : public CreatureScript
//Check_Timer //Check_Timer
if (Check_Timer <= diff) if (Check_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
if (m_instance->GetData(DATA_JEKLIK) == DONE) if (instance->GetData(DATA_JEKLIK) == DONE)
{ {
me->setDeathState(JUST_DIED); me->setDeathState(JUST_DIED);
me->RemoveCorpse(); me->RemoveCorpse();
@@ -57,7 +57,7 @@ class boss_mandokir : public CreatureScript
{ {
boss_mandokirAI(Creature* creature) : ScriptedAI(creature) boss_mandokirAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
uint32 KillCount; uint32 KillCount;
@@ -72,7 +72,7 @@ class boss_mandokir : public CreatureScript
float targetY; float targetY;
float targetZ; float targetZ;
InstanceScript* m_instance; InstanceScript* instance;
bool endWatch; bool endWatch;
bool someWatched; bool someWatched;
@@ -116,9 +116,9 @@ class boss_mandokir : public CreatureScript
{ {
DoScriptText(SAY_DING_KILL, me); DoScriptText(SAY_DING_KILL, me);
if (m_instance) if (instance)
{ {
uint64 JindoGUID = m_instance->GetData64(DATA_JINDO); uint64 JindoGUID = instance->GetData64(DATA_JINDO);
if (JindoGUID) if (JindoGUID)
{ {
if (Unit* jTemp = Unit::GetUnit(*me, JindoGUID)) if (Unit* jTemp = Unit::GetUnit(*me, JindoGUID))
@@ -256,9 +256,9 @@ class boss_mandokir : public CreatureScript
//Checking if Ohgan is dead. If yes Mandokir will enrage. //Checking if Ohgan is dead. If yes Mandokir will enrage.
if (Check_Timer <= diff) if (Check_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
if (m_instance->GetData(DATA_OHGAN) == DONE) if (instance->GetData(DATA_OHGAN) == DONE)
{ {
if (!RaptorDead) if (!RaptorDead)
{ {
@@ -296,11 +296,11 @@ class mob_ohgan : public CreatureScript
{ {
mob_ohganAI(Creature* creature) : ScriptedAI(creature) mob_ohganAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
uint32 SunderArmor_Timer; uint32 SunderArmor_Timer;
InstanceScript* m_instance; InstanceScript* instance;
void Reset() void Reset()
{ {
@@ -311,8 +311,8 @@ class mob_ohgan : public CreatureScript
void JustDied(Unit* /*Killer*/) void JustDied(Unit* /*Killer*/)
{ {
if (m_instance) if (instance)
m_instance->SetData(DATA_OHGAN, DONE); instance->SetData(DATA_OHGAN, DONE);
} }
void UpdateAI (const uint32 diff) void UpdateAI (const uint32 diff)
@@ -53,10 +53,10 @@ class boss_marli : public CreatureScript
{ {
boss_marliAI(Creature* creature) : ScriptedAI(creature) boss_marliAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 SpawnStartSpiders_Timer; uint32 SpawnStartSpiders_Timer;
uint32 PoisonVolley_Timer; uint32 PoisonVolley_Timer;
@@ -91,8 +91,8 @@ class boss_marli : public CreatureScript
void JustDied(Unit* /*Killer*/) void JustDied(Unit* /*Killer*/)
{ {
DoScriptText(SAY_DEATH, me); DoScriptText(SAY_DEATH, me);
if (m_instance) if (instance)
m_instance->SetData(DATA_MARLI, DONE); instance->SetData(DATA_MARLI, DONE);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -68,7 +68,7 @@ class boss_thekal : public CreatureScript
{ {
boss_thekalAI(Creature* creature) : ScriptedAI(creature) boss_thekalAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
uint32 MortalCleave_Timer; uint32 MortalCleave_Timer;
@@ -81,7 +81,7 @@ class boss_thekal : public CreatureScript
uint32 Check_Timer; uint32 Check_Timer;
uint32 Resurrect_Timer; uint32 Resurrect_Timer;
InstanceScript* m_instance; InstanceScript* instance;
bool Enraged; bool Enraged;
bool PhaseTwo; bool PhaseTwo;
bool WasDead; bool WasDead;
@@ -111,14 +111,14 @@ class boss_thekal : public CreatureScript
void JustDied(Unit* /*Killer*/) void JustDied(Unit* /*Killer*/)
{ {
DoScriptText(SAY_DEATH, me); DoScriptText(SAY_DEATH, me);
if (m_instance) if (instance)
m_instance->SetData(DATA_THEKAL, DONE); instance->SetData(DATA_THEKAL, DONE);
} }
void JustReachedHome() void JustReachedHome()
{ {
if (m_instance) if (instance)
m_instance->SetData(DATA_THEKAL, NOT_STARTED); instance->SetData(DATA_THEKAL, NOT_STARTED);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -129,26 +129,26 @@ class boss_thekal : public CreatureScript
//Check_Timer for the death of LorKhan and Zath. //Check_Timer for the death of LorKhan and Zath.
if (!WasDead && Check_Timer <= diff) if (!WasDead && Check_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
if (m_instance->GetData(DATA_LORKHAN) == SPECIAL) if (instance->GetData(DATA_LORKHAN) == SPECIAL)
{ {
//Resurrect LorKhan //Resurrect LorKhan
if (Unit* pLorKhan = Unit::GetUnit((*me), m_instance->GetData64(DATA_LORKHAN))) if (Unit* pLorKhan = Unit::GetUnit((*me), instance->GetData64(DATA_LORKHAN)))
{ {
pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
pLorKhan->setFaction(14); pLorKhan->setFaction(14);
pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
pLorKhan->SetFullHealth(); pLorKhan->SetFullHealth();
m_instance->SetData(DATA_LORKHAN, DONE); instance->SetData(DATA_LORKHAN, DONE);
} }
} }
if (m_instance->GetData(DATA_ZATH) == SPECIAL) if (instance->GetData(DATA_ZATH) == SPECIAL)
{ {
//Resurrect Zath //Resurrect Zath
Unit* pZath = Unit::GetUnit((*me), m_instance->GetData64(DATA_ZATH)); Unit* pZath = Unit::GetUnit((*me), instance->GetData64(DATA_ZATH));
if (pZath) if (pZath)
{ {
pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
@@ -156,7 +156,7 @@ class boss_thekal : public CreatureScript
pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
pZath->SetFullHealth(); pZath->SetFullHealth();
m_instance->SetData(DATA_ZATH, DONE); instance->SetData(DATA_ZATH, DONE);
} }
} }
} }
@@ -185,8 +185,8 @@ class boss_thekal : public CreatureScript
me->SetStandState(UNIT_STAND_STATE_SLEEP); me->SetStandState(UNIT_STAND_STATE_SLEEP);
me->AttackStop(); me->AttackStop();
if (m_instance) if (instance)
m_instance->SetData(DATA_THEKAL, SPECIAL); instance->SetData(DATA_THEKAL, SPECIAL);
WasDead=true; WasDead=true;
} }
@@ -279,7 +279,7 @@ class mob_zealot_lorkhan : public CreatureScript
{ {
mob_zealot_lorkhanAI(Creature* creature) : ScriptedAI(creature) mob_zealot_lorkhanAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
uint32 Shield_Timer; uint32 Shield_Timer;
@@ -290,7 +290,7 @@ class mob_zealot_lorkhan : public CreatureScript
bool FakeDeath; bool FakeDeath;
InstanceScript* m_instance; InstanceScript* instance;
void Reset() void Reset()
{ {
@@ -302,8 +302,8 @@ class mob_zealot_lorkhan : public CreatureScript
FakeDeath = false; FakeDeath = false;
if (m_instance) if (instance)
m_instance->SetData(DATA_LORKHAN, NOT_STARTED); instance->SetData(DATA_LORKHAN, NOT_STARTED);
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -335,10 +335,10 @@ class mob_zealot_lorkhan : public CreatureScript
//Casting Greaterheal to Thekal or Zath if they are in meele range. //Casting Greaterheal to Thekal or Zath if they are in meele range.
if (GreaterHeal_Timer <= diff) if (GreaterHeal_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
Unit* pThekal = Unit::GetUnit((*me), m_instance->GetData64(DATA_THEKAL)); Unit* pThekal = Unit::GetUnit((*me), instance->GetData64(DATA_THEKAL));
Unit* pZath = Unit::GetUnit((*me), m_instance->GetData64(DATA_ZATH)); Unit* pZath = Unit::GetUnit((*me), instance->GetData64(DATA_ZATH));
if (!pThekal || !pZath) if (!pThekal || !pZath)
return; return;
@@ -369,12 +369,12 @@ class mob_zealot_lorkhan : public CreatureScript
//Check_Timer for the death of LorKhan and Zath. //Check_Timer for the death of LorKhan and Zath.
if (!FakeDeath && Check_Timer <= diff) if (!FakeDeath && Check_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
if (m_instance->GetData(DATA_THEKAL) == SPECIAL) if (instance->GetData(DATA_THEKAL) == SPECIAL)
{ {
//Resurrect Thekal //Resurrect Thekal
if (Unit* pThekal = Unit::GetUnit((*me), m_instance->GetData64(DATA_THEKAL))) if (Unit* pThekal = Unit::GetUnit((*me), instance->GetData64(DATA_THEKAL)))
{ {
pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -383,10 +383,10 @@ class mob_zealot_lorkhan : public CreatureScript
} }
} }
if (m_instance->GetData(DATA_ZATH) == SPECIAL) if (instance->GetData(DATA_ZATH) == SPECIAL)
{ {
//Resurrect Zath //Resurrect Zath
if (Unit* pZath = Unit::GetUnit((*me), m_instance->GetData64(DATA_ZATH))) if (Unit* pZath = Unit::GetUnit((*me), instance->GetData64(DATA_ZATH)))
{ {
pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -409,8 +409,8 @@ class mob_zealot_lorkhan : public CreatureScript
me->setFaction(35); me->setFaction(35);
me->AttackStop(); me->AttackStop();
if (m_instance) if (instance)
m_instance->SetData(DATA_LORKHAN, SPECIAL); instance->SetData(DATA_LORKHAN, SPECIAL);
FakeDeath = true; FakeDeath = true;
} }
@@ -439,7 +439,7 @@ class mob_zealot_zath : public CreatureScript
{ {
mob_zealot_zathAI(Creature* creature) : ScriptedAI(creature) mob_zealot_zathAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
uint32 SweepingStrikes_Timer; uint32 SweepingStrikes_Timer;
@@ -451,7 +451,7 @@ class mob_zealot_zath : public CreatureScript
bool FakeDeath; bool FakeDeath;
InstanceScript* m_instance; InstanceScript* instance;
void Reset() void Reset()
{ {
@@ -464,8 +464,8 @@ class mob_zealot_zath : public CreatureScript
FakeDeath = false; FakeDeath = false;
if (m_instance) if (instance)
m_instance->SetData(DATA_ZATH, NOT_STARTED); instance->SetData(DATA_ZATH, NOT_STARTED);
me->SetStandState(UNIT_STAND_STATE_STAND); me->SetStandState(UNIT_STAND_STATE_STAND);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -522,12 +522,12 @@ class mob_zealot_zath : public CreatureScript
//Check_Timer for the death of LorKhan and Zath. //Check_Timer for the death of LorKhan and Zath.
if (!FakeDeath && Check_Timer <= diff) if (!FakeDeath && Check_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
if (m_instance->GetData(DATA_LORKHAN) == SPECIAL) if (instance->GetData(DATA_LORKHAN) == SPECIAL)
{ {
//Resurrect LorKhan //Resurrect LorKhan
if (Unit* pLorKhan = Unit::GetUnit((*me), m_instance->GetData64(DATA_LORKHAN))) if (Unit* pLorKhan = Unit::GetUnit((*me), instance->GetData64(DATA_LORKHAN)))
{ {
pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -536,10 +536,10 @@ class mob_zealot_zath : public CreatureScript
} }
} }
if (m_instance->GetData(DATA_THEKAL) == SPECIAL) if (instance->GetData(DATA_THEKAL) == SPECIAL)
{ {
//Resurrect Thekal //Resurrect Thekal
if (Unit* pThekal = Unit::GetUnit((*me), m_instance->GetData64(DATA_THEKAL))) if (Unit* pThekal = Unit::GetUnit((*me), instance->GetData64(DATA_THEKAL)))
{ {
pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -562,8 +562,8 @@ class mob_zealot_zath : public CreatureScript
me->setFaction(35); me->setFaction(35);
me->AttackStop(); me->AttackStop();
if (m_instance) if (instance)
m_instance->SetData(DATA_ZATH, SPECIAL); instance->SetData(DATA_ZATH, SPECIAL);
FakeDeath = true; FakeDeath = true;
} }
@@ -417,10 +417,10 @@ class go_second_trial : public GameObjectScript
public: public:
go_second_trial() : GameObjectScript("go_second_trial") { } go_second_trial() : GameObjectScript("go_second_trial") { }
bool OnGossipHello(Player* /*player*/, GameObject* pGO) bool OnGossipHello(Player* /*player*/, GameObject* go)
{ {
// find spawn :: master_kelerun_bloodmourn // find spawn :: master_kelerun_bloodmourn
if (Creature* creature = pGO->FindNearestCreature(MASTER_KELERUN_BLOODMOURN, 30.0f)) if (Creature* creature = go->FindNearestCreature(MASTER_KELERUN_BLOODMOURN, 30.0f))
CAST_AI(npc_second_trial_controller::master_kelerun_bloodmournAI, creature->AI())->StartEvent(); CAST_AI(npc_second_trial_controller::master_kelerun_bloodmournAI, creature->AI())->StartEvent();
return true; return true;
@@ -68,7 +68,6 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
} }
uint32 SwarmTimer; uint32 SwarmTimer;
@@ -76,7 +75,6 @@ public:
uint32 AuraTimer; uint32 AuraTimer;
uint32 InfernoTimer; uint32 InfernoTimer;
bool go; bool go;
uint32 pos;
void Reset() void Reset()
{ {
@@ -119,7 +117,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 7 && instance) if (i == 7 && instance)
{ {
Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_JAINAPROUDMOORE)); Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_JAINAPROUDMOORE));
@@ -59,7 +59,6 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
} }
uint32 RainTimer; uint32 RainTimer;
@@ -70,7 +69,6 @@ public:
bool enraged; bool enraged;
bool go; bool go;
uint32 pos;
void Reset() void Reset()
{ {
@@ -115,7 +113,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 7 && instance) if (i == 7 && instance)
{ {
Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_THRALL)); Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_THRALL));
@@ -56,7 +56,6 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
} }
uint32 CleaveTimer; uint32 CleaveTimer;
@@ -64,7 +63,6 @@ public:
uint32 MarkTimer; uint32 MarkTimer;
uint32 MarkTimerBase; uint32 MarkTimerBase;
bool go; bool go;
uint32 pos;
void Reset() void Reset()
{ {
@@ -107,7 +105,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 7 && instance) if (i == 7 && instance)
{ {
Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_THRALL)); Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_THRALL));
@@ -62,7 +62,6 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
} }
uint32 FrostArmorTimer; uint32 FrostArmorTimer;
@@ -70,7 +69,6 @@ public:
uint32 NovaTimer; uint32 NovaTimer;
uint32 IceboltTimer; uint32 IceboltTimer;
bool go; bool go;
uint32 pos;
void Reset() void Reset()
{ {
@@ -109,7 +107,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 7 && instance) if (i == 7 && instance)
{ {
Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_JAINAPROUDMOORE)); Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_JAINAPROUDMOORE));
@@ -405,7 +405,6 @@ public:
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetDisplayId(MODEL_INVIS); me->SetDisplayId(MODEL_INVIS);
go = false; go = false;
pos = 0;
Reset(); Reset();
} }
@@ -413,7 +412,6 @@ public:
bool CanMove; bool CanMove;
bool WpEnabled; bool WpEnabled;
bool go; bool go;
uint32 pos;
uint32 spawnTimer; uint32 spawnTimer;
uint32 FlameBuffetTimer; uint32 FlameBuffetTimer;
bool imol; bool imol;
@@ -429,7 +427,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 0 && instance && !IsOverrun) if (i == 0 && instance && !IsOverrun)
{ {
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
@@ -543,13 +540,11 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
Reset(); Reset();
} }
bool go; bool go;
uint32 KnockDownTimer; uint32 KnockDownTimer;
uint32 pos;
void Reset() void Reset()
{ {
KnockDownTimer = 10000; KnockDownTimer = 10000;
@@ -557,7 +552,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 7 && instance && !IsOverrun) if (i == 7 && instance && !IsOverrun)
{ {
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
@@ -644,13 +638,11 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
Reset(); Reset();
} }
bool go; bool go;
uint32 FrenzyTimer; uint32 FrenzyTimer;
uint32 pos;
uint32 MoveTimer; uint32 MoveTimer;
bool RandomMove; bool RandomMove;
void Reset() void Reset()
@@ -662,7 +654,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 7 && instance && !IsOverrun) if (i == 7 && instance && !IsOverrun)
{ {
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
@@ -753,13 +744,13 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
Reset(); Reset();
} }
SummonList summons; SummonList summons;
bool go; bool go;
uint32 ShadowBoltTimer; uint32 ShadowBoltTimer;
uint32 pos;
void Reset() void Reset()
{ {
ShadowBoltTimer = 1000+rand()%5000; ShadowBoltTimer = 1000+rand()%5000;
@@ -773,10 +764,14 @@ public:
summon->Attack(target, false); summon->Attack(target, false);
summons.Summon(summon); summons.Summon(summon);
} }
void SummonedCreatureDespawn(Creature* summon) {summons.Despawn(summon);}
void SummonedCreatureDespawn(Creature* summon)
{
summons.Despawn(summon);
}
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 7 && instance && !IsOverrun) if (i == 7 && instance && !IsOverrun)
{ {
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
@@ -815,8 +810,10 @@ public:
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
hyjal_trashAI::UpdateAI(diff); hyjal_trashAI::UpdateAI(diff);
if (IsEvent || IsOverrun) if (IsEvent || IsOverrun)
npc_escortAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff);
if (IsEvent) if (IsEvent)
{ {
if (!go) if (!go)
@@ -840,8 +837,10 @@ public:
} }
} }
} }
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
if (ShadowBoltTimer <= diff) if (ShadowBoltTimer <= diff)
{ {
DoCast(me->getVictim(), SPELL_SHADOW_BOLT); DoCast(me->getVictim(), SPELL_SHADOW_BOLT);
@@ -874,7 +873,6 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
Reset(); Reset();
} }
@@ -882,7 +880,7 @@ public:
uint32 CourseTimer; uint32 CourseTimer;
uint32 WailTimer; uint32 WailTimer;
uint32 ShellTimer; uint32 ShellTimer;
uint32 pos;
void Reset() void Reset()
{ {
CourseTimer = 20000+rand()%5000; CourseTimer = 20000+rand()%5000;
@@ -892,7 +890,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 7 && instance && !IsOverrun) if (i == 7 && instance && !IsOverrun)
{ {
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
@@ -979,13 +976,12 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
Reset(); Reset();
} }
bool go; bool go;
uint32 WebTimer; uint32 WebTimer;
uint32 pos;
void Reset() void Reset()
{ {
WebTimer = 20000+rand()%5000; WebTimer = 20000+rand()%5000;
@@ -993,7 +989,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 7 && instance && !IsOverrun) if (i == 7 && instance && !IsOverrun)
{ {
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
@@ -1071,13 +1066,12 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
Reset(); Reset();
} }
bool go; bool go;
uint32 ManaBurnTimer; uint32 ManaBurnTimer;
uint32 pos;
void Reset() void Reset()
{ {
ManaBurnTimer = 9000+rand()%5000; ManaBurnTimer = 9000+rand()%5000;
@@ -1085,7 +1079,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 7 && instance && !IsOverrun) if (i == 7 && instance && !IsOverrun)
{ {
if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall if (instance->GetData(DATA_ALLIANCE_RETREAT))//2.alliance boss down, attack thrall
@@ -1163,13 +1156,11 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
Reset(); Reset();
} }
bool go; bool go;
uint32 FrostBreathTimer; uint32 FrostBreathTimer;
uint32 pos;
uint32 MoveTimer; uint32 MoveTimer;
void Reset() void Reset()
@@ -1181,7 +1172,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 2 && instance && !IsOverrun) if (i == 2 && instance && !IsOverrun)
{ {
Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_THRALL)); Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_THRALL));
@@ -1280,14 +1270,12 @@ public:
{ {
instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
go = false; go = false;
pos = 0;
DummyTarget[0] = 0;DummyTarget[1] = 0;DummyTarget[2] = 0; DummyTarget[0] = 0;DummyTarget[1] = 0;DummyTarget[2] = 0;
Reset(); Reset();
} }
bool go; bool go;
uint32 StrikeTimer; uint32 StrikeTimer;
uint32 pos;
uint32 MoveTimer; uint32 MoveTimer;
float Zpos; float Zpos;
bool forcemove; bool forcemove;
@@ -1303,7 +1291,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
pos = i;
if (i == 2 && instance && !IsOverrun) if (i == 2 && instance && !IsOverrun)
{ {
Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_THRALL)); Unit* target = Unit::GetUnit((*me), instance->GetData64(DATA_THRALL));
@@ -1382,8 +1369,9 @@ public:
float x, y, z; float x, y, z;
me->getVictim()->GetPosition(x, y, z); me->getVictim()->GetPosition(x, y, z);
me->GetMotionMaster()->MovePoint(0, x, y, z+Zpos); me->GetMotionMaster()->MovePoint(0, x, y, z+Zpos);
Zpos-=1.0f; Zpos -= 1.0f;
if (Zpos <= 0)Zpos=0; if (Zpos <= 0)
Zpos = 0;
MoveTimer = 2000; MoveTimer = 2000;
} else MoveTimer-=diff; } else MoveTimer-=diff;
} }
@@ -110,7 +110,8 @@ public:
bool IsEncounterInProgress() const bool IsEncounterInProgress() const
{ {
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS) return true; if (m_auiEncounter[i] == IN_PROGRESS)
return true;
return false; return false;
} }
@@ -36,9 +36,9 @@ class go_barrel_old_hillsbrad : public GameObjectScript
public: public:
go_barrel_old_hillsbrad() : GameObjectScript("go_barrel_old_hillsbrad") { } go_barrel_old_hillsbrad() : GameObjectScript("go_barrel_old_hillsbrad") { }
bool OnGossipHello(Player* /*player*/, GameObject* pGO) bool OnGossipHello(Player* /*player*/, GameObject* go)
{ {
if (InstanceScript* instance = pGO->GetInstanceScript()) if (InstanceScript* instance = go->GetInstanceScript())
{ {
if (instance->GetData(TYPE_BARREL_DIVERSION) == DONE) if (instance->GetData(TYPE_BARREL_DIVERSION) == DONE)
return false; return false;
@@ -114,11 +114,11 @@ public:
{ {
boss_onyxiaAI(Creature* creature) : ScriptedAI(creature), Summons(me) boss_onyxiaAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
Reset(); Reset();
} }
InstanceScript* m_instance; InstanceScript* instance;
SummonList Summons; SummonList Summons;
uint32 m_uiPhase; uint32 m_uiPhase;
@@ -169,11 +169,11 @@ public:
m_uiSummonWhelpCount = 0; m_uiSummonWhelpCount = 0;
m_bIsMoving = false; m_bIsMoving = false;
if (m_instance) if (instance)
{ {
m_instance->SetData(DATA_ONYXIA, NOT_STARTED); instance->SetData(DATA_ONYXIA, NOT_STARTED);
m_instance->SetData(DATA_ONYXIA_PHASE, m_uiPhase); instance->SetData(DATA_ONYXIA_PHASE, m_uiPhase);
m_instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
} }
} }
@@ -182,17 +182,17 @@ public:
DoScriptText(SAY_AGGRO, me); DoScriptText(SAY_AGGRO, me);
me->SetInCombatWithZone(); me->SetInCombatWithZone();
if (m_instance) if (instance)
{ {
m_instance->SetData(DATA_ONYXIA, IN_PROGRESS); instance->SetData(DATA_ONYXIA, IN_PROGRESS);
m_instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
} }
} }
void JustDied(Unit* /*killer*/) void JustDied(Unit* /*killer*/)
{ {
if (m_instance) if (instance)
m_instance->SetData(DATA_ONYXIA, DONE); instance->SetData(DATA_ONYXIA, DONE);
Summons.DespawnAll(); Summons.DespawnAll();
} }
@@ -265,8 +265,8 @@ public:
me->GetMotionMaster()->MovePoint(11, Phase2Location.GetPositionX(), Phase2Location.GetPositionY(), Phase2Location.GetPositionZ()+25); me->GetMotionMaster()->MovePoint(11, Phase2Location.GetPositionX(), Phase2Location.GetPositionY(), Phase2Location.GetPositionZ()+25);
me->SetSpeed(MOVE_FLIGHT, 1.0f); me->SetSpeed(MOVE_FLIGHT, 1.0f);
DoScriptText(SAY_PHASE_2_TRANS, me); DoScriptText(SAY_PHASE_2_TRANS, me);
if (m_instance) if (instance)
m_instance->SetData(DATA_ONYXIA_PHASE, m_uiPhase); instance->SetData(DATA_ONYXIA_PHASE, m_uiPhase);
m_uiWhelpTimer = 5000; m_uiWhelpTimer = 5000;
m_uiLairGuardTimer = 15000; m_uiLairGuardTimer = 15000;
break; break;
@@ -301,9 +301,9 @@ public:
(pSpell->Id >= 22267 && pSpell->Id <= 22268)) && (pSpell->Id >= 22267 && pSpell->Id <= 22268)) &&
(target->GetTypeId() == TYPEID_PLAYER)) (target->GetTypeId() == TYPEID_PLAYER))
{ {
if (m_instance) if (instance)
{ {
m_instance->SetData(DATA_SHE_DEEP_BREATH_MORE, FAIL); instance->SetData(DATA_SHE_DEEP_BREATH_MORE, FAIL);
} }
} }
} }
@@ -362,8 +362,8 @@ public:
Trinity::GameObjectInRangeCheck check(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 15); Trinity::GameObjectInRangeCheck check(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 15);
Trinity::GameObjectLastSearcher<Trinity::GameObjectInRangeCheck> searcher(me, pFloor, check); Trinity::GameObjectLastSearcher<Trinity::GameObjectInRangeCheck> searcher(me, pFloor, check);
me->VisitNearbyGridObject(30, searcher); me->VisitNearbyGridObject(30, searcher);
if (m_instance && pFloor) if (instance && pFloor)
m_instance->SetData64(DATA_FLOOR_ERUPTION_GUID, pFloor->GetGUID()); instance->SetData64(DATA_FLOOR_ERUPTION_GUID, pFloor->GetGUID());
m_uiBellowingRoarTimer = 30000; m_uiBellowingRoarTimer = 30000;
} }
else else
@@ -409,8 +409,8 @@ public:
if (HealthBelowPct(40)) if (HealthBelowPct(40))
{ {
m_uiPhase = PHASE_END; m_uiPhase = PHASE_END;
if (m_instance) if (instance)
m_instance->SetData(DATA_ONYXIA_PHASE, m_uiPhase); instance->SetData(DATA_ONYXIA_PHASE, m_uiPhase);
DoScriptText(SAY_PHASE_3_TRANS, me); DoScriptText(SAY_PHASE_3_TRANS, me);
SetCombatMovement(true); SetCombatMovement(true);
@@ -93,10 +93,10 @@ class go_gong : public GameObjectScript
public: public:
go_gong() : GameObjectScript("go_gong") { } go_gong() : GameObjectScript("go_gong") { }
bool OnGossipHello(Player* /*player*/, GameObject* pGO) bool OnGossipHello(Player* /*player*/, GameObject* go)
{ {
//basic support, not blizzlike data is missing... //basic support, not blizzlike data is missing...
InstanceScript* instance = pGO->GetInstanceScript(); InstanceScript* instance = go->GetInstanceScript();
if (instance) if (instance)
{ {
@@ -607,7 +607,8 @@ public:
if (WisperTimer <= diff) if (WisperTimer <= diff)
{ {
Map* map = me->GetMap(); Map* map = me->GetMap();
if (!map->IsDungeon()) return; if (!map->IsDungeon())
return;
//Play random sound to the zone //Play random sound to the zone
Map::PlayerList const &PlayerList = map->GetPlayers(); Map::PlayerList const &PlayerList = map->GetPlayers();
@@ -393,7 +393,7 @@ public:
struct boss_veknilashAI : public boss_twinemperorsAI struct boss_veknilashAI : public boss_twinemperorsAI
{ {
bool IAmVeklor() {return false;} bool IAmVeklor() {return false;}
boss_veknilashAI(Creature* c) : boss_twinemperorsAI(c) {} boss_veknilashAI(Creature* creature) : boss_twinemperorsAI(creature) {}
uint32 UpperCut_Timer; uint32 UpperCut_Timer;
uint32 UnbalancingStrike_Timer; uint32 UnbalancingStrike_Timer;
@@ -479,7 +479,7 @@ public:
struct boss_veklorAI : public boss_twinemperorsAI struct boss_veklorAI : public boss_twinemperorsAI
{ {
bool IAmVeklor() {return true;} bool IAmVeklor() {return true;}
boss_veklorAI(Creature* c) : boss_twinemperorsAI(c) {} boss_veklorAI(Creature* creature) : boss_twinemperorsAI(creature) {}
uint32 ShadowBolt_Timer; uint32 ShadowBolt_Timer;
uint32 Blizzard_Timer; uint32 Blizzard_Timer;
@@ -117,7 +117,7 @@ public:
return 0; return 0;
} }
uint64 GetData64 (uint32 identifier) uint64 GetData64(uint32 identifier)
{ {
switch (identifier) switch (identifier)
{ {
@@ -308,7 +308,8 @@ public:
} }
} }
void SpawnPyramidWave(uint32 wave){ void SpawnPyramidWave(uint32 wave)
{
for (int i = 0; i < pyramidSpawnTotal; i++) for (int i = 0; i < pyramidSpawnTotal; i++)
{ {
if (pyramidSpawns[i][0] == (float)wave) if (pyramidSpawns[i][0] == (float)wave)
@@ -321,7 +322,8 @@ public:
} }
} }
bool IsWaveAllDead(){ bool IsWaveAllDead()
{
for (std::list<uint64>::iterator itr = addsAtBase.begin(); itr != addsAtBase.end(); ++itr) for (std::list<uint64>::iterator itr = addsAtBase.begin(); itr != addsAtBase.end(); ++itr)
{ {
if (Creature* add = instance->GetCreature((*itr))) if (Creature* add = instance->GetCreature((*itr)))
@@ -199,18 +199,6 @@ public:
+## go_troll_cage +## go_troll_cage
+######*/ +######*/
void initBlyCrewMember(InstanceScript* instance, uint32 entry, float x, float y, float z)
{
if (Creature* crew = instance->instance->GetCreature(instance->GetData64(entry)))
{
crew->SetReactState(REACT_AGGRESSIVE);
crew->SetWalk(true);
crew->SetHomePosition(x, y, z, 0);
crew->GetMotionMaster()->MovePoint(1, x, y, z);
crew->setFaction(FACTION_FREED);
}
}
class go_troll_cage : public GameObjectScript class go_troll_cage : public GameObjectScript
{ {
public: public:
@@ -231,6 +219,18 @@ public:
return false; return false;
} }
private:
void initBlyCrewMember(InstanceScript* instance, uint32 entry, float x, float y, float z)
{
if (Creature* crew = instance->instance->GetCreature(instance->GetData64(entry)))
{
crew->SetReactState(REACT_AGGRESSIVE);
crew->SetWalk(true);
crew->SetHomePosition(x, y, z, 0);
crew->GetMotionMaster()->MovePoint(1, x, y, z);
crew->setFaction(FACTION_FREED);
}
}
}; };
/*###### /*######
@@ -234,7 +234,6 @@ public:
void WaypointReached(uint32 i) void WaypointReached(uint32 i)
{ {
Player* player = GetPlayerForEscort(); Player* player = GetPlayerForEscort();
if (!player) if (!player)
return; return;
+1 -1
View File
@@ -55,7 +55,7 @@ public:
uint32 m_uiRebuffTimer; uint32 m_uiRebuffTimer;
bool work; bool work;
void Reset () void Reset()
{ {
uiPlayerGUID = 0; uiPlayerGUID = 0;
m_uiRebuffTimer = 0; m_uiRebuffTimer = 0;
+4 -5
View File
@@ -53,12 +53,12 @@ public:
bool OnGossipHello(Player* player, Creature* creature) bool OnGossipHello(Player* player, Creature* creature)
{ {
uint32 eCreature = creature->GetEntry();
if (creature->isQuestGiver()) if (creature->isQuestGiver())
player->PrepareQuestMenu(creature->GetGUID()); player->PrepareQuestMenu(creature->GetGUID());
if (eCreature == 9528) uint32 creatureId = creature->GetEntry();
if (creatureId == 9528)
{ {
if (player->GetQuestRewardStatus(4101)) if (player->GetQuestRewardStatus(4101))
{ {
@@ -70,7 +70,7 @@ public:
player->SEND_GOSSIP_MENU(2844, creature->GetGUID()); player->SEND_GOSSIP_MENU(2844, creature->GetGUID());
} }
if (eCreature == 9529) if (creatureId == 9529)
{ {
if (player->GetQuestRewardStatus(4102)) if (player->GetQuestRewardStatus(4102))
{ {
@@ -84,7 +84,6 @@ public:
return true; return true;
} }
}; };
void AddSC_felwood() void AddSC_felwood()
+6 -3
View File
@@ -385,7 +385,8 @@ public:
void MoveInLineOfSight(Unit* who) void MoveInLineOfSight(Unit* who)
{ {
if (!who || (!who->isAlive())) return; if (!who || (!who->isAlive()))
return;
if (me->IsWithinDistInMap(who, 10.0f) && (who->GetTypeId() == TYPEID_PLAYER) && CAST_PLR(who)->GetQuestStatus(1719) == QUEST_STATUS_INCOMPLETE && !EventInProgress) if (me->IsWithinDistInMap(who, 10.0f) && (who->GetTypeId() == TYPEID_PLAYER) && CAST_PLR(who)->GetQuestStatus(1719) == QUEST_STATUS_INCOMPLETE && !EventInProgress)
{ {
@@ -433,8 +434,10 @@ public:
if (BigWill) if (BigWill)
{ {
Creature* creature = Unit::GetCreature((*me), BigWill); Creature* creature = Unit::GetCreature((*me), BigWill);
if (creature) { if (creature)
if (creature->isAlive()) { {
if (creature->isAlive())
{
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT); creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
creature->setDeathState(JUST_DIED); creature->setDeathState(JUST_DIED);
@@ -387,20 +387,20 @@ class prince_taldaram_sphere : public GameObjectScript
public: public:
prince_taldaram_sphere() : GameObjectScript("prince_taldaram_sphere") { } prince_taldaram_sphere() : GameObjectScript("prince_taldaram_sphere") { }
bool OnGossipHello(Player* /*player*/, GameObject* pGO) bool OnGossipHello(Player* /*player*/, GameObject* go)
{ {
InstanceScript* instance = pGO->GetInstanceScript(); InstanceScript* instance = go->GetInstanceScript();
if (!instance) if (!instance)
return true; return true;
Creature* pPrinceTaldaram = Unit::GetCreature(*pGO, instance->GetData64(DATA_PRINCE_TALDARAM)); Creature* pPrinceTaldaram = Unit::GetCreature(*go, instance->GetData64(DATA_PRINCE_TALDARAM));
if (pPrinceTaldaram && pPrinceTaldaram->isAlive()) if (pPrinceTaldaram && pPrinceTaldaram->isAlive())
{ {
// maybe these are hacks :( // maybe these are hacks :(
pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
pGO->SetGoState(GO_STATE_ACTIVE); go->SetGoState(GO_STATE_ACTIVE);
switch (pGO->GetEntry()) switch (go->GetEntry())
{ {
case GO_SPHERE1: instance->SetData(DATA_SPHERE1_EVENT, IN_PROGRESS); break; case GO_SPHERE1: instance->SetData(DATA_SPHERE1_EVENT, IN_PROGRESS); break;
case GO_SPHERE2: instance->SetData(DATA_SPHERE2_EVENT, IN_PROGRESS); break; case GO_SPHERE2: instance->SetData(DATA_SPHERE2_EVENT, IN_PROGRESS); break;
@@ -87,7 +87,8 @@ public:
bool IsEncounterInProgress() const bool IsEncounterInProgress() const
{ {
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS) return true; if (m_auiEncounter[i] == IN_PROGRESS)
return true;
return false; return false;
} }
@@ -236,7 +237,8 @@ public:
for (std::set<uint64>::const_iterator itr = InitiandGUIDs.begin(); itr != InitiandGUIDs.end(); ++itr) for (std::set<uint64>::const_iterator itr = InitiandGUIDs.begin(); itr != InitiandGUIDs.end(); ++itr)
{ {
Creature* cr = instance->GetCreature(*itr); Creature* cr = instance->GetCreature(*itr);
if (!cr || (cr && cr->isAlive())) return 0; if (!cr || (cr && cr->isAlive()))
return 0;
} }
return 1; return 1;
case DATA_JEDOGA_TRIGGER_SWITCH: return switchtrigger; case DATA_JEDOGA_TRIGGER_SWITCH: return switchtrigger;
@@ -136,7 +136,8 @@ public:
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
//Return since we have no target //Return since we have no target
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
// Without he comes up through the air to players on the bridge after krikthir if players crossing this bridge! // Without he comes up through the air to players on the bridge after krikthir if players crossing this bridge!
CheckDistance(fMaxDistance, diff); CheckDistance(fMaxDistance, diff);
@@ -64,7 +64,8 @@ public:
bool IsEncounterInProgress() const bool IsEncounterInProgress() const
{ {
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (auiEncounter[i] == IN_PROGRESS) return true; if (auiEncounter[i] == IN_PROGRESS)
return true;
return false; return false;
} }
@@ -926,9 +926,7 @@ struct dummy_dragonAI : public ScriptedAI
if (instance && instance->GetData(TYPE_SARTHARION_EVENT) != IN_PROGRESS) if (instance && instance->GetData(TYPE_SARTHARION_EVENT) != IN_PROGRESS)
instance->SetData(TYPE_SHADRON_PREKILLED, 1); instance->SetData(TYPE_SHADRON_PREKILLED, 1);
if (Creature* pAcolyte = me->FindNearestCreature(NPC_ACOLYTE_OF_SHADRON, 100.0f)) if (Creature* pAcolyte = me->FindNearestCreature(NPC_ACOLYTE_OF_SHADRON, 100.0f))
{
pAcolyte->Kill(pAcolyte); pAcolyte->Kill(pAcolyte);
}
break; break;
case NPC_VESPERON: case NPC_VESPERON:
iTextId = SAY_VESPERON_DEATH; iTextId = SAY_VESPERON_DEATH;
@@ -936,9 +934,7 @@ struct dummy_dragonAI : public ScriptedAI
if (instance && instance->GetData(TYPE_SARTHARION_EVENT) != IN_PROGRESS) if (instance && instance->GetData(TYPE_SARTHARION_EVENT) != IN_PROGRESS)
instance->SetData(TYPE_VESPERON_PREKILLED, 1); instance->SetData(TYPE_VESPERON_PREKILLED, 1);
if (Creature* pAcolyte = me->FindNearestCreature(NPC_ACOLYTE_OF_VESPERON, 100.0f)) if (Creature* pAcolyte = me->FindNearestCreature(NPC_ACOLYTE_OF_VESPERON, 100.0f))
{
pAcolyte->Kill(pAcolyte); pAcolyte->Kill(pAcolyte);
}
break; break;
} }
@@ -125,8 +125,8 @@ public:
break; break;
case DATA_IN_POSITION: //movement done. case DATA_IN_POSITION: //movement done.
me->GetMotionMaster()->MovePoint(1, 735.81f, 661.92f, 412.39f); me->GetMotionMaster()->MovePoint(1, 735.81f, 661.92f, 412.39f);
if (GameObject* pGO = GameObject::GetGameObject(*me, instance->GetData64(DATA_MAIN_GATE))) if (GameObject* go = GameObject::GetGameObject(*me, instance->GetData64(DATA_MAIN_GATE)))
instance->HandleGameObject(pGO->GetGUID(), false); instance->HandleGameObject(go->GetGUID(), false);
NextStep(10000, false, 3); NextStep(10000, false, 3);
break; break;
case DATA_LESSER_CHAMPIONS_DEFEATED: case DATA_LESSER_CHAMPIONS_DEFEATED:
@@ -141,10 +141,10 @@ public:
{ {
boss_anubarak_trialAI(Creature* creature) : ScriptedAI(creature), Summons(me) boss_anubarak_trialAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
SummonList Summons; SummonList Summons;
std::list<uint64> m_vBurrowGUID; std::list<uint64> m_vBurrowGUID;
@@ -195,8 +195,8 @@ public:
if (who->GetTypeId() == TYPEID_PLAYER) if (who->GetTypeId() == TYPEID_PLAYER)
{ {
DoScriptText(urand(0, 1) ? SAY_KILL1 : SAY_KILL2, me); DoScriptText(urand(0, 1) ? SAY_KILL1 : SAY_KILL2, me);
if (m_instance) if (instance)
m_instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE, 0); instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE, 0);
} }
} }
@@ -211,8 +211,8 @@ public:
void JustReachedHome() void JustReachedHome()
{ {
if (m_instance) if (instance)
m_instance->SetData(TYPE_ANUBARAK, FAIL); instance->SetData(TYPE_ANUBARAK, FAIL);
//Summon Scarab Swarms neutral at random places //Summon Scarab Swarms neutral at random places
for (int i=0; i < 10; i++) for (int i=0; i < 10; i++)
if (Creature* temp = me->SummonCreature(NPC_SCARAB, AnubarakLoc[1].GetPositionX()+urand(0, 50)-25, AnubarakLoc[1].GetPositionY()+urand(0, 50)-25, AnubarakLoc[1].GetPositionZ())) if (Creature* temp = me->SummonCreature(NPC_SCARAB, AnubarakLoc[1].GetPositionX()+urand(0, 50)-25, AnubarakLoc[1].GetPositionY()+urand(0, 50)-25, AnubarakLoc[1].GetPositionZ()))
@@ -223,8 +223,8 @@ public:
{ {
Summons.DespawnAll(); Summons.DespawnAll();
DoScriptText(SAY_DEATH, me); DoScriptText(SAY_DEATH, me);
if (m_instance) if (instance)
m_instance->SetData(TYPE_ANUBARAK, DONE); instance->SetData(TYPE_ANUBARAK, DONE);
} }
void JustSummoned(Creature* summoned) void JustSummoned(Creature* summoned)
@@ -260,8 +260,8 @@ public:
DoScriptText(SAY_AGGRO, me); DoScriptText(SAY_AGGRO, me);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->SetInCombatWithZone(); me->SetInCombatWithZone();
if (m_instance) if (instance)
m_instance->SetData(TYPE_ANUBARAK, IN_PROGRESS); instance->SetData(TYPE_ANUBARAK, IN_PROGRESS);
//Despawn Scarab Swarms neutral //Despawn Scarab Swarms neutral
Summons.DoAction(NPC_SCARAB, ACTION_SCARAB_SUBMERGE); Summons.DoAction(NPC_SCARAB, ACTION_SCARAB_SUBMERGE);
//Spawn Burrow //Spawn Burrow
@@ -426,10 +426,10 @@ public:
{ {
mob_swarm_scarabAI(Creature* creature) : ScriptedAI(creature) mob_swarm_scarabAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiDeterminationTimer; uint32 m_uiDeterminationTimer;
@@ -493,10 +493,10 @@ public:
{ {
mob_nerubian_burrowerAI(Creature* creature) : ScriptedAI(creature) mob_nerubian_burrowerAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiSpiderFrenzyTimer; uint32 m_uiSpiderFrenzyTimer;
uint32 m_uiSubmergeTimer; uint32 m_uiSubmergeTimer;
@@ -639,10 +639,10 @@ public:
{ {
mob_anubarak_spikeAI(Creature* creature) : ScriptedAI(creature) mob_anubarak_spikeAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiIncreaseSpeedTimer; uint32 m_uiIncreaseSpeedTimer;
uint8 m_uiSpeed; uint8 m_uiSpeed;
uint64 m_uiTargetGUID; uint64 m_uiTargetGUID;
@@ -674,7 +674,7 @@ public:
Unit* target = Unit::GetPlayer(*me, m_uiTargetGUID); Unit* target = Unit::GetPlayer(*me, m_uiTargetGUID);
if (!target || !target->isAlive() || !target->HasAura(SPELL_MARK)) if (!target || !target->isAlive() || !target->HasAura(SPELL_MARK))
{ {
if (Creature* pAnubarak = Unit::GetCreature((*me), m_instance->GetData64(NPC_ANUBARAK))) if (Creature* pAnubarak = Unit::GetCreature((*me), instance->GetData64(NPC_ANUBARAK)))
pAnubarak->CastSpell(pAnubarak, SPELL_SPIKE_TELE, false); pAnubarak->CastSpell(pAnubarak, SPELL_SPIKE_TELE, false);
me->DisappearAndDie(); me->DisappearAndDie();
return; return;
@@ -64,10 +64,10 @@ public:
{ {
boss_toc_champion_controllerAI(Creature* creature) : ScriptedAI(creature), Summons(me) boss_toc_champion_controllerAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{ {
m_instance = (InstanceScript*) creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
SummonList Summons; SummonList Summons;
uint32 m_uiChampionsNotStarted; uint32 m_uiChampionsNotStarted;
uint32 m_uiChampionsFailed; uint32 m_uiChampionsFailed;
@@ -101,7 +101,7 @@ public:
vOtherEntries.push_back(playerTeam == ALLIANCE ? NPC_HORDE_WARRIOR : NPC_ALLIANCE_WARRIOR); vOtherEntries.push_back(playerTeam == ALLIANCE ? NPC_HORDE_WARRIOR : NPC_ALLIANCE_WARRIOR);
uint8 healersSubtracted = 2; uint8 healersSubtracted = 2;
if (m_instance->instance->GetSpawnMode() == RAID_DIFFICULTY_25MAN_NORMAL || m_instance->instance->GetSpawnMode() == RAID_DIFFICULTY_25MAN_HEROIC) if (instance->instance->GetSpawnMode() == RAID_DIFFICULTY_25MAN_NORMAL || instance->instance->GetSpawnMode() == RAID_DIFFICULTY_25MAN_HEROIC)
healersSubtracted = 1; healersSubtracted = 1;
for (uint8 i = 0; i < healersSubtracted; ++i) for (uint8 i = 0; i < healersSubtracted; ++i)
{ {
@@ -136,7 +136,7 @@ public:
vHealersEntries.erase(vHealersEntries.begin()+pos); vHealersEntries.erase(vHealersEntries.begin()+pos);
} }
if (m_instance->instance->GetSpawnMode() == RAID_DIFFICULTY_10MAN_NORMAL || m_instance->instance->GetSpawnMode() == RAID_DIFFICULTY_10MAN_HEROIC) if (instance->instance->GetSpawnMode() == RAID_DIFFICULTY_10MAN_NORMAL || instance->instance->GetSpawnMode() == RAID_DIFFICULTY_10MAN_HEROIC)
for (uint8 i = 0; i < 4; ++i) for (uint8 i = 0; i < 4; ++i)
vOtherEntries.erase(vOtherEntries.begin()+urand(0, vOtherEntries.size()-1)); vOtherEntries.erase(vOtherEntries.begin()+urand(0, vOtherEntries.size()-1));
@@ -214,7 +214,7 @@ public:
m_uiChampionsFailed++; m_uiChampionsFailed++;
if (m_uiChampionsFailed + m_uiChampionsKilled >= Summons.size()) if (m_uiChampionsFailed + m_uiChampionsKilled >= Summons.size())
{ {
m_instance->SetData(TYPE_CRUSADERS, FAIL); instance->SetData(TYPE_CRUSADERS, FAIL);
Summons.DespawnAll(); Summons.DespawnAll();
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
} }
@@ -227,16 +227,16 @@ public:
m_uiChampionsKilled = 0; m_uiChampionsKilled = 0;
m_bInProgress = true; m_bInProgress = true;
Summons.DoZoneInCombat(); Summons.DoZoneInCombat();
m_instance->SetData(TYPE_CRUSADERS, IN_PROGRESS); instance->SetData(TYPE_CRUSADERS, IN_PROGRESS);
} }
break; break;
case DONE: case DONE:
m_uiChampionsKilled++; m_uiChampionsKilled++;
if (m_uiChampionsKilled == 1) if (m_uiChampionsKilled == 1)
m_instance->SetData(TYPE_CRUSADERS, SPECIAL); instance->SetData(TYPE_CRUSADERS, SPECIAL);
else if (m_uiChampionsKilled >= Summons.size()) else if (m_uiChampionsKilled >= Summons.size())
{ {
m_instance->SetData(TYPE_CRUSADERS, DONE); instance->SetData(TYPE_CRUSADERS, DONE);
Summons.DespawnAll(); Summons.DespawnAll();
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
} }
@@ -253,11 +253,11 @@ struct boss_faction_championsAI : public ScriptedAI
{ {
boss_faction_championsAI(Creature* creature, uint32 aitype) : ScriptedAI(creature) boss_faction_championsAI(Creature* creature, uint32 aitype) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*) creature->GetInstanceScript(); instance = creature->GetInstanceScript();
mAIType = aitype; mAIType = aitype;
} }
InstanceScript* m_instance; InstanceScript* instance;
uint64 championControllerGUID; uint64 championControllerGUID;
uint32 mAIType; uint32 mAIType;
@@ -273,8 +273,8 @@ struct boss_faction_championsAI : public ScriptedAI
void JustReachedHome() void JustReachedHome()
{ {
if (m_instance) if (instance)
if (Creature* pChampionController = Unit::GetCreature((*me), m_instance->GetData64(NPC_CHAMPIONS_CONTROLLER))) if (Creature* pChampionController = Unit::GetCreature((*me), instance->GetData64(NPC_CHAMPIONS_CONTROLLER)))
pChampionController->AI()->SetData(2, FAIL); pChampionController->AI()->SetData(2, FAIL);
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
} }
@@ -326,8 +326,8 @@ struct boss_faction_championsAI : public ScriptedAI
void JustDied(Unit* /*killer*/) void JustDied(Unit* /*killer*/)
{ {
if (mAIType != AI_PET) if (mAIType != AI_PET)
if (m_instance) if (instance)
if (Creature* pChampionController = Unit::GetCreature((*me), m_instance->GetData64(NPC_CHAMPIONS_CONTROLLER))) if (Creature* pChampionController = Unit::GetCreature((*me), instance->GetData64(NPC_CHAMPIONS_CONTROLLER)))
pChampionController->AI()->SetData(2, DONE); pChampionController->AI()->SetData(2, DONE);
} }
@@ -335,8 +335,8 @@ struct boss_faction_championsAI : public ScriptedAI
{ {
DoCast(me, SPELL_ANTI_AOE, true); DoCast(me, SPELL_ANTI_AOE, true);
me->SetInCombatWithZone(); me->SetInCombatWithZone();
if (m_instance) if (instance)
if (Creature* pChampionController = Unit::GetCreature((*me), m_instance->GetData64(NPC_CHAMPIONS_CONTROLLER))) if (Creature* pChampionController = Unit::GetCreature((*me), instance->GetData64(NPC_CHAMPIONS_CONTROLLER)))
pChampionController->AI()->SetData(2, IN_PROGRESS); pChampionController->AI()->SetData(2, IN_PROGRESS);
} }
@@ -351,18 +351,18 @@ struct boss_faction_championsAI : public ScriptedAI
if (Player* player = players.begin()->getSource()) if (Player* player = players.begin()->getSource())
TeamInInstance = player->GetTeam(); TeamInInstance = player->GetTeam();
if (m_instance) if (instance)
{ {
if (TeamInInstance == ALLIANCE) if (TeamInInstance == ALLIANCE)
{ {
if (Creature* temp = Unit::GetCreature(*me, m_instance->GetData64(NPC_VARIAN))) if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_VARIAN)))
DoScriptText(SAY_VARIAN_KILL_HORDE_PLAYER4+urand(0, 3), temp); // + cause we are on negative DoScriptText(SAY_VARIAN_KILL_HORDE_PLAYER4+urand(0, 3), temp); // + cause we are on negative
} }
else else
if (Creature* temp = me->FindNearestCreature(NPC_GARROSH, 300.f)) if (Creature* temp = me->FindNearestCreature(NPC_GARROSH, 300.f))
DoScriptText(SAY_GARROSH_KILL_ALLIANCE_PLAYER4+urand(0, 3), temp); // + cause we are on negative DoScriptText(SAY_GARROSH_KILL_ALLIANCE_PLAYER4+urand(0, 3), temp); // + cause we are on negative
m_instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE, 0); instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE, 0);
} }
} }
} }
@@ -408,7 +408,8 @@ struct boss_faction_championsAI : public ScriptedAI
void AttackStart(Unit* who) void AttackStart(Unit* who)
{ {
if (!who) return; if (!who)
return;
if (me->Attack(who, true)) if (me->Attack(who, true))
{ {
@@ -494,7 +495,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiNatureGraspTimer <= uiDiff) if (m_uiNatureGraspTimer <= uiDiff)
{ {
@@ -588,7 +590,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiHeroismOrBloodlustTimer <= uiDiff) if (m_uiHeroismOrBloodlustTimer <= uiDiff)
{ {
@@ -687,7 +690,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiBubbleTimer <= uiDiff) if (m_uiBubbleTimer <= uiDiff)
{ {
@@ -786,7 +790,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiPsychicScreamTimer <= uiDiff) if (m_uiPsychicScreamTimer <= uiDiff)
{ {
@@ -879,7 +884,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiPsychicScreamTimer <= uiDiff) if (m_uiPsychicScreamTimer <= uiDiff)
{ {
@@ -990,7 +996,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiFearTimer <= uiDiff) if (m_uiFearTimer <= uiDiff)
{ {
@@ -1093,7 +1100,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiCounterspellTimer <= uiDiff) if (m_uiCounterspellTimer <= uiDiff)
{ {
@@ -1204,7 +1212,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiDisengageTimer <= uiDiff) if (m_uiDisengageTimer <= uiDiff)
{ {
@@ -1312,7 +1321,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiBarkskinTimer <= uiDiff) if (m_uiBarkskinTimer <= uiDiff)
{ {
@@ -1424,7 +1434,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiBladestormTimer <= uiDiff) if (m_uiBladestormTimer <= uiDiff)
{ {
@@ -1534,7 +1545,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiIceboundFortitudeTimer <= uiDiff) if (m_uiIceboundFortitudeTimer <= uiDiff)
{ {
@@ -1636,7 +1648,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiFanOfKnivesTimer <= uiDiff) if (m_uiFanOfKnivesTimer <= uiDiff)
{ {
@@ -1773,7 +1786,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiHeroismOrBloodlustTimer <= uiDiff) if (m_uiHeroismOrBloodlustTimer <= uiDiff)
{ {
@@ -1873,7 +1887,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiRepeteanceTimer <= uiDiff) if (m_uiRepeteanceTimer <= uiDiff)
{ {
@@ -1951,7 +1966,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiDevourMagicTimer <= uiDiff) if (m_uiDevourMagicTimer <= uiDiff)
{ {
@@ -2000,7 +2016,8 @@ public:
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (m_uiClawTimer <= uiDiff) if (m_uiClawTimer <= uiDiff)
{ {
@@ -2011,11 +2028,8 @@ public:
boss_faction_championsAI::UpdateAI(uiDiff); boss_faction_championsAI::UpdateAI(uiDiff);
} }
}; };
}; };
/*========================================================*/
void AddSC_boss_faction_champions() void AddSC_boss_faction_champions()
{ {
new boss_toc_champion_controller(); new boss_toc_champion_controller();
@@ -106,11 +106,11 @@ public:
{ {
boss_jaraxxusAI(Creature* creature) : ScriptedAI(creature), Summons(me) boss_jaraxxusAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
Reset(); Reset();
} }
InstanceScript* m_instance; InstanceScript* instance;
SummonList Summons; SummonList Summons;
@@ -124,8 +124,8 @@ public:
void Reset() void Reset()
{ {
if (m_instance) if (instance)
m_instance->SetData(TYPE_JARAXXUS, NOT_STARTED); instance->SetData(TYPE_JARAXXUS, NOT_STARTED);
SetEquipmentSlots(false, EQUIP_MAIN, EQUIP_OFFHAND, EQUIP_RANGED); SetEquipmentSlots(false, EQUIP_MAIN, EQUIP_OFFHAND, EQUIP_RANGED);
m_uiFelFireballTimer = 5*IN_MILLISECONDS; m_uiFelFireballTimer = 5*IN_MILLISECONDS;
m_uiFelLightningTimer = urand(10*IN_MILLISECONDS, 15*IN_MILLISECONDS); m_uiFelLightningTimer = urand(10*IN_MILLISECONDS, 15*IN_MILLISECONDS);
@@ -139,8 +139,8 @@ public:
void JustReachedHome() void JustReachedHome()
{ {
if (m_instance) if (instance)
m_instance->SetData(TYPE_JARAXXUS, FAIL); instance->SetData(TYPE_JARAXXUS, FAIL);
DoCast(me, SPELL_JARAXXUS_CHAINS); DoCast(me, SPELL_JARAXXUS_CHAINS);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->SetReactState(REACT_PASSIVE); me->SetReactState(REACT_PASSIVE);
@@ -150,8 +150,8 @@ public:
{ {
if (who->GetTypeId() == TYPEID_PLAYER) if (who->GetTypeId() == TYPEID_PLAYER)
{ {
if (m_instance) if (instance)
m_instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE, 0); instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE, 0);
} }
} }
@@ -159,8 +159,8 @@ public:
{ {
Summons.DespawnAll(); Summons.DespawnAll();
DoScriptText(SAY_DEATH, me); DoScriptText(SAY_DEATH, me);
if (m_instance) if (instance)
m_instance->SetData(TYPE_JARAXXUS, DONE); instance->SetData(TYPE_JARAXXUS, DONE);
} }
void JustSummoned(Creature* summoned) void JustSummoned(Creature* summoned)
@@ -171,8 +171,8 @@ public:
void EnterCombat(Unit* /*who*/) void EnterCombat(Unit* /*who*/)
{ {
me->SetInCombatWithZone(); me->SetInCombatWithZone();
if (m_instance) if (instance)
m_instance->SetData(TYPE_JARAXXUS, IN_PROGRESS); instance->SetData(TYPE_JARAXXUS, IN_PROGRESS);
DoScriptText(SAY_AGGRO, me); DoScriptText(SAY_AGGRO, me);
} }
@@ -289,11 +289,11 @@ public:
{ {
mob_infernal_volcanoAI(Creature* creature) : Scripted_NoMovementAI(creature), Summons(me) mob_infernal_volcanoAI(Creature* creature) : Scripted_NoMovementAI(creature), Summons(me)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
Reset(); Reset();
} }
InstanceScript* m_instance; InstanceScript* instance;
SummonList Summons; SummonList Summons;
@@ -344,11 +344,11 @@ public:
{ {
mob_fel_infernalAI(Creature* creature) : ScriptedAI(creature) mob_fel_infernalAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
Reset(); Reset();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiFelStreakTimer; uint32 m_uiFelStreakTimer;
void Reset() void Reset()
@@ -368,7 +368,7 @@ public:
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
if (m_instance && m_instance->GetData(TYPE_JARAXXUS) != IN_PROGRESS) if (instance && instance->GetData(TYPE_JARAXXUS) != IN_PROGRESS)
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
if (m_uiFelStreakTimer <= uiDiff) if (m_uiFelStreakTimer <= uiDiff)
@@ -398,11 +398,11 @@ public:
{ {
mob_nether_portalAI(Creature* creature) : ScriptedAI(creature), Summons(me) mob_nether_portalAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
Reset(); Reset();
} }
InstanceScript* m_instance; InstanceScript* instance;
SummonList Summons; SummonList Summons;
@@ -453,13 +453,13 @@ public:
{ {
mob_mistress_of_painAI(Creature* creature) : ScriptedAI(creature) mob_mistress_of_painAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
if (m_instance) if (instance)
m_instance->SetData(DATA_MISTRESS_OF_PAIN_COUNT, INCREASE); instance->SetData(DATA_MISTRESS_OF_PAIN_COUNT, INCREASE);
Reset(); Reset();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiShivanSlashTimer; uint32 m_uiShivanSlashTimer;
uint32 m_uiSpinningStrikeTimer; uint32 m_uiSpinningStrikeTimer;
uint32 m_uiMistressKissTimer; uint32 m_uiMistressKissTimer;
@@ -474,13 +474,13 @@ public:
void JustDied(Unit* /*killer*/) void JustDied(Unit* /*killer*/)
{ {
if (m_instance) if (instance)
m_instance->SetData(DATA_MISTRESS_OF_PAIN_COUNT, DECREASE); instance->SetData(DATA_MISTRESS_OF_PAIN_COUNT, DECREASE);
} }
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (m_instance && m_instance->GetData(TYPE_JARAXXUS) != IN_PROGRESS) if (instance && instance->GetData(TYPE_JARAXXUS) != IN_PROGRESS)
{ {
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
return; return;
@@ -123,10 +123,10 @@ public:
{ {
boss_gormokAI(Creature* creature) : ScriptedAI(creature), Summons(me) boss_gormokAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiImpaleTimer; uint32 m_uiImpaleTimer;
uint32 m_uiStaggeringStompTimer; uint32 m_uiStaggeringStompTimer;
@@ -151,7 +151,7 @@ public:
void EnterEvadeMode() void EnterEvadeMode()
{ {
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
ScriptedAI::EnterEvadeMode(); ScriptedAI::EnterEvadeMode();
} }
@@ -163,7 +163,7 @@ public:
switch (pointId) switch (pointId)
{ {
case 0: case 0:
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_AGGRESSIVE); me->SetReactState(REACT_AGGRESSIVE);
me->SetInCombatWithZone(); me->SetInCombatWithZone();
@@ -173,16 +173,16 @@ public:
void JustDied(Unit* /*killer*/) void JustDied(Unit* /*killer*/)
{ {
if (m_instance) if (instance)
m_instance->SetData(TYPE_NORTHREND_BEASTS, GORMOK_DONE); instance->SetData(TYPE_NORTHREND_BEASTS, GORMOK_DONE);
} }
void JustReachedHome() void JustReachedHome()
{ {
if (m_instance) if (instance)
{ {
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
m_instance->SetData(TYPE_NORTHREND_BEASTS, FAIL); instance->SetData(TYPE_NORTHREND_BEASTS, FAIL);
} }
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
} }
@@ -190,7 +190,7 @@ public:
void EnterCombat(Unit* /*who*/) void EnterCombat(Unit* /*who*/)
{ {
me->SetInCombatWithZone(); me->SetInCombatWithZone();
m_instance->SetData(TYPE_NORTHREND_BEASTS, GORMOK_IN_PROGRESS); instance->SetData(TYPE_NORTHREND_BEASTS, GORMOK_IN_PROGRESS);
} }
void JustSummoned(Creature* summon) void JustSummoned(Creature* summon)
@@ -263,12 +263,12 @@ public:
{ {
mob_snobold_vassalAI(Creature* creature) : ScriptedAI(creature) mob_snobold_vassalAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
if (m_instance) if (instance)
m_instance->SetData(DATA_SNOBOLD_COUNT, INCREASE); instance->SetData(DATA_SNOBOLD_COUNT, INCREASE);
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiFireBombTimer; uint32 m_uiFireBombTimer;
uint32 m_uiBatterTimer; uint32 m_uiBatterTimer;
uint32 m_uiHeadCrackTimer; uint32 m_uiHeadCrackTimer;
@@ -284,15 +284,15 @@ public:
m_uiTargetGUID = 0; m_uiTargetGUID = 0;
m_bTargetDied = false; m_bTargetDied = false;
if (m_instance) if (instance)
m_uiBossGUID = m_instance->GetData64(NPC_GORMOK); m_uiBossGUID = instance->GetData64(NPC_GORMOK);
//Workaround for Snobold //Workaround for Snobold
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
} }
void EnterEvadeMode() void EnterEvadeMode()
{ {
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
ScriptedAI::EnterEvadeMode(); ScriptedAI::EnterEvadeMode();
} }
@@ -328,8 +328,8 @@ public:
if (Unit* target = Unit::GetPlayer(*me, m_uiTargetGUID)) if (Unit* target = Unit::GetPlayer(*me, m_uiTargetGUID))
if (target->isAlive()) if (target->isAlive())
target->RemoveAurasDueToSpell(SPELL_SNOBOLLED); target->RemoveAurasDueToSpell(SPELL_SNOBOLLED);
if (m_instance) if (instance)
m_instance->SetData(DATA_SNOBOLD_COUNT, DECREASE); instance->SetData(DATA_SNOBOLD_COUNT, DECREASE);
} }
void UpdateAI(uint32 const diff) void UpdateAI(uint32 const diff)
@@ -341,9 +341,9 @@ public:
{ {
if (!target->isAlive()) if (!target->isAlive())
{ {
if (m_instance) if (instance)
{ {
Unit* gormok = ObjectAccessor::GetCreature(*me, m_instance->GetData64(NPC_GORMOK)); Unit* gormok = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_GORMOK));
if (gormok && gormok->isAlive()) if (gormok && gormok->isAlive())
{ {
SetCombatMovement(false); SetCombatMovement(false);
@@ -454,7 +454,8 @@ struct boss_jormungarAI : public ScriptedAI
void UpdateAI(uint32 const diff) void UpdateAI(uint32 const diff)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (instanceScript && instanceScript->GetData(TYPE_NORTHREND_BEASTS) == SNAKES_SPECIAL && !enraged) if (instanceScript && instanceScript->GetData(TYPE_NORTHREND_BEASTS) == SNAKES_SPECIAL && !enraged)
{ {
@@ -757,10 +758,10 @@ public:
{ {
boss_icehowlAI(Creature* creature) : ScriptedAI(creature) boss_icehowlAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiFerociousButtTimer; uint32 m_uiFerociousButtTimer;
uint32 m_uiArticBreathTimer; uint32 m_uiArticBreathTimer;
@@ -794,8 +795,8 @@ public:
void JustDied(Unit* /*killer*/) void JustDied(Unit* /*killer*/)
{ {
if (m_instance) if (instance)
m_instance->SetData(TYPE_NORTHREND_BEASTS, ICEHOWL_DONE); instance->SetData(TYPE_NORTHREND_BEASTS, ICEHOWL_DONE);
} }
void MovementInform(uint32 type, uint32 pointId) void MovementInform(uint32 type, uint32 pointId)
@@ -826,7 +827,7 @@ public:
m_bMovementFinish = true; m_bMovementFinish = true;
break; break;
case 2: case 2:
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_AGGRESSIVE); me->SetReactState(REACT_AGGRESSIVE);
me->SetInCombatWithZone(); me->SetInCombatWithZone();
@@ -836,16 +837,16 @@ public:
void EnterEvadeMode() void EnterEvadeMode()
{ {
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
ScriptedAI::EnterEvadeMode(); ScriptedAI::EnterEvadeMode();
} }
void JustReachedHome() void JustReachedHome()
{ {
if (m_instance) if (instance)
{ {
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
m_instance->SetData(TYPE_NORTHREND_BEASTS, FAIL); instance->SetData(TYPE_NORTHREND_BEASTS, FAIL);
} }
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
} }
@@ -854,15 +855,15 @@ public:
{ {
if (who->GetTypeId() == TYPEID_PLAYER) if (who->GetTypeId() == TYPEID_PLAYER)
{ {
if (m_instance) if (instance)
m_instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE, 0); instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE, 0);
} }
} }
void EnterCombat(Unit* /*who*/) void EnterCombat(Unit* /*who*/)
{ {
if (m_instance) if (instance)
m_instance->SetData(TYPE_NORTHREND_BEASTS, ICEHOWL_IN_PROGRESS); instance->SetData(TYPE_NORTHREND_BEASTS, ICEHOWL_IN_PROGRESS);
me->SetInCombatWithZone(); me->SetInCombatWithZone();
} }
@@ -143,10 +143,10 @@ struct boss_twin_baseAI : public ScriptedAI
{ {
boss_twin_baseAI(Creature* creature) : ScriptedAI(creature), Summons(me) boss_twin_baseAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
SummonList Summons; SummonList Summons;
AuraStateType m_uiAuraState; AuraStateType m_uiAuraState;
@@ -190,8 +190,8 @@ struct boss_twin_baseAI : public ScriptedAI
void JustReachedHome() void JustReachedHome()
{ {
if (m_instance) if (instance)
m_instance->SetData(TYPE_VALKIRIES, FAIL); instance->SetData(TYPE_VALKIRIES, FAIL);
Summons.DespawnAll(); Summons.DespawnAll();
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
@@ -199,12 +199,13 @@ struct boss_twin_baseAI : public ScriptedAI
void MovementInform(uint32 uiType, uint32 uiId) void MovementInform(uint32 uiType, uint32 uiId)
{ {
if (uiType != POINT_MOTION_TYPE) return; if (uiType != POINT_MOTION_TYPE)
return;
switch (uiId) switch (uiId)
{ {
case 1: case 1:
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_AGGRESSIVE); me->SetReactState(REACT_AGGRESSIVE);
break; break;
@@ -216,8 +217,8 @@ struct boss_twin_baseAI : public ScriptedAI
if (who->GetTypeId() == TYPEID_PLAYER) if (who->GetTypeId() == TYPEID_PLAYER)
{ {
DoScriptText(urand(0, 1) ? SAY_KILL1 : SAY_KILL2, me); DoScriptText(urand(0, 1) ? SAY_KILL1 : SAY_KILL2, me);
if (m_instance) if (instance)
m_instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE, 0); instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELEGIBLE, 0);
} }
} }
@@ -231,12 +232,12 @@ struct boss_twin_baseAI : public ScriptedAI
switch (summoned->GetEntry()) switch (summoned->GetEntry())
{ {
case NPC_LIGHT_ESSENCE: case NPC_LIGHT_ESSENCE:
m_instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_LIGHT_ESSENCE_HELPER); instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_LIGHT_ESSENCE_HELPER);
m_instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_POWERING_UP_HELPER); instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_POWERING_UP_HELPER);
break; break;
case NPC_DARK_ESSENCE: case NPC_DARK_ESSENCE:
m_instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_DARK_ESSENCE_HELPER); instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_DARK_ESSENCE_HELPER);
m_instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_POWERING_UP_HELPER); instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_POWERING_UP_HELPER);
break; break;
case NPC_BULLET_CONTROLLER: case NPC_BULLET_CONTROLLER:
me->m_Events.AddEvent(new OrbsDespawner(me), me->m_Events.CalculateTime(100)); me->m_Events.AddEvent(new OrbsDespawner(me), me->m_Events.CalculateTime(100));
@@ -248,7 +249,7 @@ struct boss_twin_baseAI : public ScriptedAI
void JustDied(Unit* /*killer*/) void JustDied(Unit* /*killer*/)
{ {
DoScriptText(SAY_DEATH, me); DoScriptText(SAY_DEATH, me);
if (m_instance) if (instance)
{ {
if (Creature* pSister = GetSister()) if (Creature* pSister = GetSister())
{ {
@@ -257,13 +258,13 @@ struct boss_twin_baseAI : public ScriptedAI
me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
pSister->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); pSister->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
m_instance->SetData(TYPE_VALKIRIES, DONE); instance->SetData(TYPE_VALKIRIES, DONE);
Summons.DespawnAll(); Summons.DespawnAll();
} }
else else
{ {
me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
m_instance->SetData(TYPE_VALKIRIES, SPECIAL); instance->SetData(TYPE_VALKIRIES, SPECIAL);
} }
} }
} }
@@ -273,20 +274,20 @@ struct boss_twin_baseAI : public ScriptedAI
// Called when sister pointer needed // Called when sister pointer needed
Creature* GetSister() Creature* GetSister()
{ {
return Unit::GetCreature((*me), m_instance->GetData64(m_uiSisterNpcId)); return Unit::GetCreature((*me), instance->GetData64(m_uiSisterNpcId));
} }
void EnterCombat(Unit* /*who*/) void EnterCombat(Unit* /*who*/)
{ {
me->SetInCombatWithZone(); me->SetInCombatWithZone();
if (m_instance) if (instance)
{ {
if (Creature* pSister = GetSister()) if (Creature* pSister = GetSister())
{ {
me->AddAura(m_uiMyEmphatySpellId, pSister); me->AddAura(m_uiMyEmphatySpellId, pSister);
pSister->SetInCombatWithZone(); pSister->SetInCombatWithZone();
} }
m_instance->SetData(TYPE_VALKIRIES, IN_PROGRESS); instance->SetData(TYPE_VALKIRIES, IN_PROGRESS);
} }
DoScriptText(SAY_AGGRO, me); DoScriptText(SAY_AGGRO, me);
@@ -315,7 +316,7 @@ struct boss_twin_baseAI : public ScriptedAI
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!m_instance || !UpdateVictim()) if (!instance || !UpdateVictim())
return; return;
switch (m_uiStage) switch (m_uiStage)
@@ -406,10 +407,10 @@ public:
{ {
boss_fjolaAI(Creature* creature) : boss_twin_baseAI(creature) boss_fjolaAI(Creature* creature) : boss_twin_baseAI(creature)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
void Reset() { void Reset() {
boss_twin_baseAI::Reset(); boss_twin_baseAI::Reset();
@@ -429,17 +430,17 @@ public:
m_uiTouchSpellId = SPELL_LIGHT_TOUCH; m_uiTouchSpellId = SPELL_LIGHT_TOUCH;
m_uiSpikeSpellId = SPELL_LIGHT_TWIN_SPIKE; m_uiSpikeSpellId = SPELL_LIGHT_TWIN_SPIKE;
if (m_instance) if (instance)
{ {
m_instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, EVENT_START_TWINS_FIGHT); instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, EVENT_START_TWINS_FIGHT);
} }
} }
void EnterCombat(Unit* who) void EnterCombat(Unit* who)
{ {
if (m_instance) if (instance)
{ {
m_instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, EVENT_START_TWINS_FIGHT); instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, EVENT_START_TWINS_FIGHT);
} }
me->SummonCreature(NPC_BULLET_CONTROLLER, ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY(), ToCCommonLoc[1].GetPositionZ(), 0.0f, TEMPSUMMON_MANUAL_DESPAWN); me->SummonCreature(NPC_BULLET_CONTROLLER, ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY(), ToCCommonLoc[1].GetPositionZ(), 0.0f, TEMPSUMMON_MANUAL_DESPAWN);
@@ -448,14 +449,14 @@ public:
void EnterEvadeMode() void EnterEvadeMode()
{ {
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
boss_twin_baseAI::EnterEvadeMode(); boss_twin_baseAI::EnterEvadeMode();
} }
void JustReachedHome() void JustReachedHome()
{ {
if (m_instance) if (instance)
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
boss_twin_baseAI::JustReachedHome(); boss_twin_baseAI::JustReachedHome();
} }
@@ -552,10 +553,10 @@ struct mob_unleashed_ballAI : public ScriptedAI
{ {
mob_unleashed_ballAI(Creature* creature) : ScriptedAI(creature) mob_unleashed_ballAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiRangeCheckTimer; uint32 m_uiRangeCheckTimer;
void MoveToNextPoint() void MoveToNextPoint()
@@ -585,7 +586,8 @@ struct mob_unleashed_ballAI : public ScriptedAI
void MovementInform(uint32 uiType, uint32 uiId) void MovementInform(uint32 uiType, uint32 uiId)
{ {
if (uiType != POINT_MOTION_TYPE) return; if (uiType != POINT_MOTION_TYPE)
return;
switch (uiId) switch (uiId)
{ {
@@ -106,10 +106,10 @@ class npc_announcer_toc10 : public CreatureScript
{ {
npc_announcer_toc10AI(Creature* creature) : ScriptedAI(creature) npc_announcer_toc10AI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
void Reset() void Reset()
{ {
@@ -239,10 +239,10 @@ class boss_lich_king_toc : public CreatureScript
{ {
boss_lich_king_tocAI(Creature* creature) : ScriptedAI(creature) boss_lich_king_tocAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiUpdateTimer; uint32 m_uiUpdateTimer;
void Reset() void Reset()
@@ -254,7 +254,7 @@ class boss_lich_king_toc : public CreatureScript
summoned->CastSpell(summoned, 51807, false); summoned->CastSpell(summoned, 51807, false);
summoned->SetDisplayId(11686); summoned->SetDisplayId(11686);
} }
if (m_instance) m_instance->SetData(TYPE_LICH_KING, IN_PROGRESS); if (instance) instance->SetData(TYPE_LICH_KING, IN_PROGRESS);
me->SetWalk(true); me->SetWalk(true);
} }
@@ -265,77 +265,80 @@ class boss_lich_king_toc : public CreatureScript
switch (uiId) switch (uiId)
{ {
case 0: case 0:
m_instance->SetData(TYPE_EVENT, 5030); instance->SetData(TYPE_EVENT, 5030);
break; break;
case 1: case 1:
m_instance->SetData(TYPE_EVENT, 5050); instance->SetData(TYPE_EVENT, 5050);
break; break;
} }
} }
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!m_instance) return; if (!instance)
if (m_instance->GetData(TYPE_EVENT_NPC) != NPC_LICH_KING_1) return; return;
m_uiUpdateTimer = m_instance->GetData(TYPE_EVENT_TIMER); if (instance->GetData(TYPE_EVENT_NPC) != NPC_LICH_KING_1)
return;
m_uiUpdateTimer = instance->GetData(TYPE_EVENT_TIMER);
if (m_uiUpdateTimer <= uiDiff) if (m_uiUpdateTimer <= uiDiff)
{ {
switch (m_instance->GetData(TYPE_EVENT)) switch (instance->GetData(TYPE_EVENT))
{ {
case 5010: case 5010:
DoScriptText(SAY_STAGE_4_02, me); DoScriptText(SAY_STAGE_4_02, me);
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
me->GetMotionMaster()->MovePoint(0, LichKingLoc[0]); me->GetMotionMaster()->MovePoint(0, LichKingLoc[0]);
m_instance->SetData(TYPE_EVENT, 5020); instance->SetData(TYPE_EVENT, 5020);
break; break;
case 5030: case 5030:
DoScriptText(SAY_STAGE_4_04, me); DoScriptText(SAY_STAGE_4_04, me);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_TALK); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_TALK);
m_uiUpdateTimer = 10000; m_uiUpdateTimer = 10000;
m_instance->SetData(TYPE_EVENT, 5040); instance->SetData(TYPE_EVENT, 5040);
break; break;
case 5040: case 5040:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
me->GetMotionMaster()->MovePoint(1, LichKingLoc[1]); me->GetMotionMaster()->MovePoint(1, LichKingLoc[1]);
m_uiUpdateTimer = 1000; m_uiUpdateTimer = 1000;
m_instance->SetData(TYPE_EVENT, 0); instance->SetData(TYPE_EVENT, 0);
break; break;
case 5050: case 5050:
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION); me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 5060); instance->SetData(TYPE_EVENT, 5060);
break; break;
case 5060: case 5060:
DoScriptText(SAY_STAGE_4_05, me); DoScriptText(SAY_STAGE_4_05, me);
me->HandleEmoteCommand(EMOTE_ONESHOT_KNEEL); me->HandleEmoteCommand(EMOTE_ONESHOT_KNEEL);
m_uiUpdateTimer = 2500; m_uiUpdateTimer = 2500;
m_instance->SetData(TYPE_EVENT, 5070); instance->SetData(TYPE_EVENT, 5070);
break; break;
case 5070: case 5070:
me->CastSpell(me, 68198, false); me->CastSpell(me, 68198, false);
m_uiUpdateTimer = 1500; m_uiUpdateTimer = 1500;
m_instance->SetData(TYPE_EVENT, 5080); instance->SetData(TYPE_EVENT, 5080);
break; break;
case 5080: case 5080:
if (GameObject* pGoFloor = m_instance->instance->GetGameObject(m_instance->GetData64(GO_ARGENT_COLISEUM_FLOOR))) if (GameObject* go = instance->instance->GetGameObject(instance->GetData64(GO_ARGENT_COLISEUM_FLOOR)))
pGoFloor->SetDestructibleState(GO_DESTRUCTIBLE_DESTROYED); go->SetDestructibleState(GO_DESTRUCTIBLE_DESTROYED);
me->CastSpell(me, 69016, false); me->CastSpell(me, 69016, false);
if (m_instance) if (instance)
{ {
m_instance->SetData(TYPE_LICH_KING, DONE); instance->SetData(TYPE_LICH_KING, DONE);
Creature* temp = Unit::GetCreature(*me, m_instance->GetData64(NPC_ANUBARAK)); Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_ANUBARAK));
if (!temp || !temp->isAlive()) if (!temp || !temp->isAlive())
temp = me->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 3, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME); temp = me->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 3, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
m_instance->SetData(TYPE_EVENT, 0); instance->SetData(TYPE_EVENT, 0);
} }
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
m_uiUpdateTimer = 20000; m_uiUpdateTimer = 20000;
break; break;
} }
} else m_uiUpdateTimer -= uiDiff; } else m_uiUpdateTimer -= uiDiff;
m_instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer); instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer);
} }
}; };
@@ -355,10 +358,10 @@ class npc_fizzlebang_toc : public CreatureScript
{ {
npc_fizzlebang_tocAI(Creature* creature) : ScriptedAI(creature), Summons(me) npc_fizzlebang_tocAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{ {
m_instance = (InstanceScript*)me->GetInstanceScript(); instance = me->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
SummonList Summons; SummonList Summons;
uint32 m_uiUpdateTimer; uint32 m_uiUpdateTimer;
uint64 m_uiPortalGUID; uint64 m_uiPortalGUID;
@@ -367,8 +370,8 @@ class npc_fizzlebang_toc : public CreatureScript
void JustDied(Unit* killer) void JustDied(Unit* killer)
{ {
DoScriptText(SAY_STAGE_1_06, me, killer); DoScriptText(SAY_STAGE_1_06, me, killer);
m_instance->SetData(TYPE_EVENT, 1180); instance->SetData(TYPE_EVENT, 1180);
if (Creature* temp = Unit::GetCreature(*me, m_instance->GetData64(NPC_JARAXXUS))) if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_JARAXXUS)))
{ {
temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
temp->SetReactState(REACT_AGGRESSIVE); temp->SetReactState(REACT_AGGRESSIVE);
@@ -385,17 +388,18 @@ class npc_fizzlebang_toc : public CreatureScript
void MovementInform(uint32 uiType, uint32 uiId) void MovementInform(uint32 uiType, uint32 uiId)
{ {
if (uiType != POINT_MOTION_TYPE) return; if (uiType != POINT_MOTION_TYPE)
return;
switch (uiId) switch (uiId)
{ {
case 1: case 1:
me->SetWalk(false); me->SetWalk(false);
if (m_instance) if (instance)
{ {
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
m_instance->SetData(TYPE_EVENT, 1120); instance->SetData(TYPE_EVENT, 1120);
m_instance->SetData(TYPE_EVENT_TIMER, 1000); instance->SetData(TYPE_EVENT_TIMER, 1000);
} }
break; break;
} }
@@ -408,22 +412,24 @@ class npc_fizzlebang_toc : public CreatureScript
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!m_instance) return; if (!instance)
return;
if (m_instance->GetData(TYPE_EVENT_NPC) != NPC_FIZZLEBANG) return; if (instance->GetData(TYPE_EVENT_NPC) != NPC_FIZZLEBANG)
return;
m_uiUpdateTimer = m_instance->GetData(TYPE_EVENT_TIMER); m_uiUpdateTimer = instance->GetData(TYPE_EVENT_TIMER);
if (m_uiUpdateTimer <= uiDiff) if (m_uiUpdateTimer <= uiDiff)
{ {
switch (m_instance->GetData(TYPE_EVENT)) switch (instance->GetData(TYPE_EVENT))
{ {
case 1110: case 1110:
m_instance->SetData(TYPE_EVENT, 1120); instance->SetData(TYPE_EVENT, 1120);
m_uiUpdateTimer = 4000; m_uiUpdateTimer = 4000;
break; break;
case 1120: case 1120:
DoScriptText(SAY_STAGE_1_02, me); DoScriptText(SAY_STAGE_1_02, me);
m_instance->SetData(TYPE_EVENT, 1130); instance->SetData(TYPE_EVENT, 1130);
m_uiUpdateTimer = 12000; m_uiUpdateTimer = 12000;
break; break;
case 1130: case 1130:
@@ -437,12 +443,12 @@ class npc_fizzlebang_toc : public CreatureScript
pTrigger->SetDisplayId(22862); pTrigger->SetDisplayId(22862);
pTrigger->CastSpell(pTrigger, SPELL_WILFRED_PORTAL, false); pTrigger->CastSpell(pTrigger, SPELL_WILFRED_PORTAL, false);
} }
m_instance->SetData(TYPE_EVENT, 1132); instance->SetData(TYPE_EVENT, 1132);
m_uiUpdateTimer = 4000; m_uiUpdateTimer = 4000;
break; break;
case 1132: case 1132:
me->GetMotionMaster()->MovementExpired(); me->GetMotionMaster()->MovementExpired();
m_instance->SetData(TYPE_EVENT, 1134); instance->SetData(TYPE_EVENT, 1134);
m_uiUpdateTimer = 4000; m_uiUpdateTimer = 4000;
break; break;
case 1134: case 1134:
@@ -455,10 +461,10 @@ class npc_fizzlebang_toc : public CreatureScript
m_uiPortalGUID = pPortal->GetGUID(); m_uiPortalGUID = pPortal->GetGUID();
} }
m_uiUpdateTimer = 4000; m_uiUpdateTimer = 4000;
m_instance->SetData(TYPE_EVENT, 1135); instance->SetData(TYPE_EVENT, 1135);
break; break;
case 1135: case 1135:
m_instance->SetData(TYPE_EVENT, 1140); instance->SetData(TYPE_EVENT, 1140);
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
break; break;
case 1140: case 1140:
@@ -469,27 +475,27 @@ class npc_fizzlebang_toc : public CreatureScript
temp->SetReactState(REACT_PASSIVE); temp->SetReactState(REACT_PASSIVE);
temp->GetMotionMaster()->MovePoint(0, ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY()-10, ToCCommonLoc[1].GetPositionZ()); temp->GetMotionMaster()->MovePoint(0, ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY()-10, ToCCommonLoc[1].GetPositionZ());
} }
m_instance->SetData(TYPE_EVENT, 1142); instance->SetData(TYPE_EVENT, 1142);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
break; break;
case 1142: case 1142:
if (Creature* temp = Unit::GetCreature(*me, m_instance->GetData64(NPC_JARAXXUS))) if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_JARAXXUS)))
temp->SetTarget(me->GetGUID()); temp->SetTarget(me->GetGUID());
if (Creature* pTrigger = Unit::GetCreature(*me, m_uiTriggerGUID)) if (Creature* pTrigger = Unit::GetCreature(*me, m_uiTriggerGUID))
pTrigger->DespawnOrUnsummon(); pTrigger->DespawnOrUnsummon();
if (Creature* pPortal = Unit::GetCreature(*me, m_uiPortalGUID)) if (Creature* pPortal = Unit::GetCreature(*me, m_uiPortalGUID))
pPortal->DespawnOrUnsummon(); pPortal->DespawnOrUnsummon();
m_instance->SetData(TYPE_EVENT, 1144); instance->SetData(TYPE_EVENT, 1144);
m_uiUpdateTimer = 10000; m_uiUpdateTimer = 10000;
break; break;
case 1144: case 1144:
if (Creature* temp = Unit::GetCreature(*me, m_instance->GetData64(NPC_JARAXXUS))) if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_JARAXXUS)))
DoScriptText(SAY_STAGE_1_05, temp); DoScriptText(SAY_STAGE_1_05, temp);
m_instance->SetData(TYPE_EVENT, 1150); instance->SetData(TYPE_EVENT, 1150);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
break; break;
case 1150: case 1150:
if (Creature* temp = Unit::GetCreature(*me, m_instance->GetData64(NPC_JARAXXUS))) if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_JARAXXUS)))
{ {
//1-shot Fizzlebang //1-shot Fizzlebang
temp->CastSpell(me, 67888, false); temp->CastSpell(me, 67888, false);
@@ -497,12 +503,12 @@ class npc_fizzlebang_toc : public CreatureScript
temp->AddThreat(me, 1000.0f); temp->AddThreat(me, 1000.0f);
temp->AI()->AttackStart(me); temp->AI()->AttackStart(me);
} }
m_instance->SetData(TYPE_EVENT, 1160); instance->SetData(TYPE_EVENT, 1160);
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
break; break;
} }
} else m_uiUpdateTimer -= uiDiff; } else m_uiUpdateTimer -= uiDiff;
m_instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer); instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer);
} }
}; };
@@ -522,10 +528,10 @@ class npc_tirion_toc : public CreatureScript
{ {
npc_tirion_tocAI(Creature* creature) : ScriptedAI(creature) npc_tirion_tocAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)me->GetInstanceScript(); instance = me->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiUpdateTimer; uint32 m_uiUpdateTimer;
void Reset() {} void Reset() {}
@@ -534,31 +540,34 @@ class npc_tirion_toc : public CreatureScript
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!m_instance) return; if (!instance)
if (m_instance->GetData(TYPE_EVENT_NPC) != NPC_TIRION) return; return;
m_uiUpdateTimer = m_instance->GetData(TYPE_EVENT_TIMER); if (instance->GetData(TYPE_EVENT_NPC) != NPC_TIRION)
return;
m_uiUpdateTimer = instance->GetData(TYPE_EVENT_TIMER);
if (m_uiUpdateTimer <= uiDiff) if (m_uiUpdateTimer <= uiDiff)
{ {
switch (m_instance->GetData(TYPE_EVENT)) switch (instance->GetData(TYPE_EVENT))
{ {
case 110: case 110:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK);
DoScriptText(SAY_STAGE_0_01, me); DoScriptText(SAY_STAGE_0_01, me);
m_uiUpdateTimer = 22000; m_uiUpdateTimer = 22000;
m_instance->SetData(TYPE_EVENT, 120); instance->SetData(TYPE_EVENT, 120);
break; break;
case 140: case 140:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK);
DoScriptText(SAY_STAGE_0_02, me); DoScriptText(SAY_STAGE_0_02, me);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 150); instance->SetData(TYPE_EVENT, 150);
break; break;
case 150: case 150:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
if (m_instance->GetData(TYPE_BEASTS) != DONE) if (instance->GetData(TYPE_BEASTS) != DONE)
{ {
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
if (Creature* temp = me->SummonCreature(NPC_GORMOK, ToCSpawnLoc[0].GetPositionX(), ToCSpawnLoc[0].GetPositionY(), ToCSpawnLoc[0].GetPositionZ(), 5, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30*IN_MILLISECONDS)) if (Creature* temp = me->SummonCreature(NPC_GORMOK, ToCSpawnLoc[0].GetPositionX(), ToCSpawnLoc[0].GetPositionY(), ToCSpawnLoc[0].GetPositionZ(), 5, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30*IN_MILLISECONDS))
{ {
@@ -568,26 +577,26 @@ class npc_tirion_toc : public CreatureScript
} }
} }
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 155); instance->SetData(TYPE_EVENT, 155);
break; break;
case 155: case 155:
m_instance->SetData(TYPE_BEASTS, IN_PROGRESS); instance->SetData(TYPE_BEASTS, IN_PROGRESS);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 160); instance->SetData(TYPE_EVENT, 160);
break; break;
case 200: case 200:
DoScriptText(SAY_STAGE_0_04, me); DoScriptText(SAY_STAGE_0_04, me);
m_uiUpdateTimer = 8000; m_uiUpdateTimer = 8000;
m_instance->SetData(TYPE_EVENT, 205); instance->SetData(TYPE_EVENT, 205);
break; break;
case 205: case 205:
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 210); instance->SetData(TYPE_EVENT, 210);
break; break;
case 210: case 210:
if (m_instance->GetData(TYPE_BEASTS) != DONE) if (instance->GetData(TYPE_BEASTS) != DONE)
{ {
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
if (Creature* temp = me->SummonCreature(NPC_DREADSCALE, ToCSpawnLoc[1].GetPositionX(), ToCSpawnLoc[1].GetPositionY(), ToCSpawnLoc[1].GetPositionZ(), 5, TEMPSUMMON_MANUAL_DESPAWN)) if (Creature* temp = me->SummonCreature(NPC_DREADSCALE, ToCSpawnLoc[1].GetPositionX(), ToCSpawnLoc[1].GetPositionY(), ToCSpawnLoc[1].GetPositionZ(), 5, TEMPSUMMON_MANUAL_DESPAWN))
{ {
temp->GetMotionMaster()->MovePoint(0, ToCCommonLoc[8].GetPositionX(), ToCCommonLoc[8].GetPositionY(), ToCCommonLoc[8].GetPositionZ()); temp->GetMotionMaster()->MovePoint(0, ToCCommonLoc[8].GetPositionX(), ToCCommonLoc[8].GetPositionY(), ToCCommonLoc[8].GetPositionZ());
@@ -602,24 +611,24 @@ class npc_tirion_toc : public CreatureScript
} }
} }
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 220); instance->SetData(TYPE_EVENT, 220);
break; break;
case 220: case 220:
m_instance->SetData(TYPE_EVENT, 230); instance->SetData(TYPE_EVENT, 230);
break; break;
case 300: case 300:
DoScriptText(SAY_STAGE_0_05, me); DoScriptText(SAY_STAGE_0_05, me);
m_uiUpdateTimer = 8000; m_uiUpdateTimer = 8000;
m_instance->SetData(TYPE_EVENT, 305); instance->SetData(TYPE_EVENT, 305);
break; break;
case 305: case 305:
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 310); instance->SetData(TYPE_EVENT, 310);
break; break;
case 310: case 310:
if (m_instance->GetData(TYPE_BEASTS) != DONE) if (instance->GetData(TYPE_BEASTS) != DONE)
{ {
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
if (Creature* temp = me->SummonCreature(NPC_ICEHOWL, ToCSpawnLoc[0].GetPositionX(), ToCSpawnLoc[0].GetPositionY(), ToCSpawnLoc[0].GetPositionZ(), 5, TEMPSUMMON_DEAD_DESPAWN)) if (Creature* temp = me->SummonCreature(NPC_ICEHOWL, ToCSpawnLoc[0].GetPositionX(), ToCSpawnLoc[0].GetPositionY(), ToCSpawnLoc[0].GetPositionZ(), 5, TEMPSUMMON_DEAD_DESPAWN))
{ {
temp->GetMotionMaster()->MovePoint(2, ToCCommonLoc[5].GetPositionX(), ToCCommonLoc[5].GetPositionY(), ToCCommonLoc[5].GetPositionZ()); temp->GetMotionMaster()->MovePoint(2, ToCCommonLoc[5].GetPositionX(), ToCCommonLoc[5].GetPositionY(), ToCCommonLoc[5].GetPositionZ());
@@ -629,92 +638,92 @@ class npc_tirion_toc : public CreatureScript
} }
} }
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 315); instance->SetData(TYPE_EVENT, 315);
break; break;
case 315: case 315:
m_instance->SetData(TYPE_EVENT, 320); instance->SetData(TYPE_EVENT, 320);
break; break;
case 400: case 400:
DoScriptText(SAY_STAGE_0_06, me); DoScriptText(SAY_STAGE_0_06, me);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 0); instance->SetData(TYPE_EVENT, 0);
break; break;
case 666: case 666:
DoScriptText(SAY_STAGE_0_WIPE, me); DoScriptText(SAY_STAGE_0_WIPE, me);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 0); instance->SetData(TYPE_EVENT, 0);
break; break;
case 1010: case 1010:
DoScriptText(SAY_STAGE_1_01, me); DoScriptText(SAY_STAGE_1_01, me);
m_uiUpdateTimer = 7000; m_uiUpdateTimer = 7000;
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
me->SummonCreature(NPC_FIZZLEBANG, ToCSpawnLoc[0].GetPositionX(), ToCSpawnLoc[0].GetPositionY(), ToCSpawnLoc[0].GetPositionZ(), 2, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME); me->SummonCreature(NPC_FIZZLEBANG, ToCSpawnLoc[0].GetPositionX(), ToCSpawnLoc[0].GetPositionY(), ToCSpawnLoc[0].GetPositionZ(), 2, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
m_instance->SetData(TYPE_EVENT, 0); instance->SetData(TYPE_EVENT, 0);
break; break;
case 1180: case 1180:
DoScriptText(SAY_STAGE_1_07, me); DoScriptText(SAY_STAGE_1_07, me);
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 0); instance->SetData(TYPE_EVENT, 0);
break; break;
case 2000: case 2000:
DoScriptText(SAY_STAGE_1_08, me); DoScriptText(SAY_STAGE_1_08, me);
m_uiUpdateTimer = 18000; m_uiUpdateTimer = 18000;
m_instance->SetData(TYPE_EVENT, 2010); instance->SetData(TYPE_EVENT, 2010);
break; break;
case 2030: case 2030:
DoScriptText(SAY_STAGE_1_11, me); DoScriptText(SAY_STAGE_1_11, me);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 0); instance->SetData(TYPE_EVENT, 0);
break; break;
case 3000: case 3000:
DoScriptText(SAY_STAGE_2_01, me); DoScriptText(SAY_STAGE_2_01, me);
m_uiUpdateTimer = 12000; m_uiUpdateTimer = 12000;
m_instance->SetData(TYPE_EVENT, 3050); instance->SetData(TYPE_EVENT, 3050);
break; break;
case 3001: case 3001:
DoScriptText(SAY_STAGE_2_01, me); DoScriptText(SAY_STAGE_2_01, me);
m_uiUpdateTimer = 12000; m_uiUpdateTimer = 12000;
m_instance->SetData(TYPE_EVENT, 3051); instance->SetData(TYPE_EVENT, 3051);
break; break;
case 3060: case 3060:
DoScriptText(SAY_STAGE_2_03, me); DoScriptText(SAY_STAGE_2_03, me);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 3070); instance->SetData(TYPE_EVENT, 3070);
break; break;
case 3061: case 3061:
DoScriptText(SAY_STAGE_2_03, me); DoScriptText(SAY_STAGE_2_03, me);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 3071); instance->SetData(TYPE_EVENT, 3071);
break; break;
//Summoning crusaders //Summoning crusaders
case 3091: case 3091:
if (Creature* pChampionController = me->SummonCreature(NPC_CHAMPIONS_CONTROLLER, ToCCommonLoc[1])) if (Creature* pChampionController = me->SummonCreature(NPC_CHAMPIONS_CONTROLLER, ToCCommonLoc[1]))
pChampionController->AI()->SetData(0, HORDE); pChampionController->AI()->SetData(0, HORDE);
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 3092); instance->SetData(TYPE_EVENT, 3092);
break; break;
//Summoning crusaders //Summoning crusaders
case 3090: case 3090:
if (Creature* pChampionController = me->SummonCreature(NPC_CHAMPIONS_CONTROLLER, ToCCommonLoc[1])) if (Creature* pChampionController = me->SummonCreature(NPC_CHAMPIONS_CONTROLLER, ToCCommonLoc[1]))
pChampionController->AI()->SetData(0, ALLIANCE); pChampionController->AI()->SetData(0, ALLIANCE);
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 3092); instance->SetData(TYPE_EVENT, 3092);
break; break;
case 3092: case 3092:
if (Creature* pChampionController = Unit::GetCreature((*me), m_instance->GetData64(NPC_CHAMPIONS_CONTROLLER))) if (Creature* pChampionController = Unit::GetCreature((*me), instance->GetData64(NPC_CHAMPIONS_CONTROLLER)))
pChampionController->AI()->SetData(1, NOT_STARTED); pChampionController->AI()->SetData(1, NOT_STARTED);
m_instance->SetData(TYPE_EVENT, 3095); instance->SetData(TYPE_EVENT, 3095);
break; break;
//Crusaders battle end //Crusaders battle end
case 3100: case 3100:
DoScriptText(SAY_STAGE_2_06, me); DoScriptText(SAY_STAGE_2_06, me);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 0); instance->SetData(TYPE_EVENT, 0);
break; break;
case 4000: case 4000:
DoScriptText(SAY_STAGE_3_01, me); DoScriptText(SAY_STAGE_3_01, me);
m_uiUpdateTimer = 13000; m_uiUpdateTimer = 13000;
m_instance->SetData(TYPE_EVENT, 4010); instance->SetData(TYPE_EVENT, 4010);
break; break;
case 4010: case 4010:
DoScriptText(SAY_STAGE_3_02, me); DoScriptText(SAY_STAGE_3_02, me);
@@ -733,72 +742,72 @@ class npc_tirion_toc : public CreatureScript
temp->SummonCreature(NPC_DARK_ESSENCE, TwinValkyrsLoc[3].GetPositionX(), TwinValkyrsLoc[3].GetPositionY(), TwinValkyrsLoc[3].GetPositionZ()); temp->SummonCreature(NPC_DARK_ESSENCE, TwinValkyrsLoc[3].GetPositionX(), TwinValkyrsLoc[3].GetPositionY(), TwinValkyrsLoc[3].GetPositionZ());
} }
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 4015); instance->SetData(TYPE_EVENT, 4015);
break; break;
case 4015: case 4015:
m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR)); instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR));
if (Creature* temp = Unit::GetCreature((*me), m_instance->GetData64(NPC_LIGHTBANE))) if (Creature* temp = Unit::GetCreature((*me), instance->GetData64(NPC_LIGHTBANE)))
{ {
temp->GetMotionMaster()->MovePoint(1, ToCCommonLoc[8].GetPositionX(), ToCCommonLoc[8].GetPositionY(), ToCCommonLoc[8].GetPositionZ()); temp->GetMotionMaster()->MovePoint(1, ToCCommonLoc[8].GetPositionX(), ToCCommonLoc[8].GetPositionY(), ToCCommonLoc[8].GetPositionZ());
temp->SetVisible(true); temp->SetVisible(true);
} }
if (Creature* temp = Unit::GetCreature((*me), m_instance->GetData64(NPC_DARKBANE))) if (Creature* temp = Unit::GetCreature((*me), instance->GetData64(NPC_DARKBANE)))
{ {
temp->GetMotionMaster()->MovePoint(1, ToCCommonLoc[9].GetPositionX(), ToCCommonLoc[9].GetPositionY(), ToCCommonLoc[9].GetPositionZ()); temp->GetMotionMaster()->MovePoint(1, ToCCommonLoc[9].GetPositionX(), ToCCommonLoc[9].GetPositionY(), ToCCommonLoc[9].GetPositionZ());
temp->SetVisible(true); temp->SetVisible(true);
} }
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 4016); instance->SetData(TYPE_EVENT, 4016);
break; break;
case 4016: case 4016:
m_instance->SetData(TYPE_EVENT, 4017); instance->SetData(TYPE_EVENT, 4017);
break; break;
case 4040: case 4040:
m_uiUpdateTimer = 60000; m_uiUpdateTimer = 60000;
m_instance->SetData(TYPE_EVENT, 5000); instance->SetData(TYPE_EVENT, 5000);
break; break;
case 5000: case 5000:
DoScriptText(SAY_STAGE_4_01, me); DoScriptText(SAY_STAGE_4_01, me);
m_uiUpdateTimer = 10000; m_uiUpdateTimer = 10000;
m_instance->SetData(TYPE_EVENT, 5005); instance->SetData(TYPE_EVENT, 5005);
break; break;
case 5005: case 5005:
m_uiUpdateTimer = 8000; m_uiUpdateTimer = 8000;
m_instance->SetData(TYPE_EVENT, 5010); instance->SetData(TYPE_EVENT, 5010);
me->SummonCreature(NPC_LICH_KING_1, ToCSpawnLoc[0].GetPositionX(), ToCSpawnLoc[0].GetPositionY(), ToCSpawnLoc[0].GetPositionZ(), 5); me->SummonCreature(NPC_LICH_KING_1, ToCSpawnLoc[0].GetPositionX(), ToCSpawnLoc[0].GetPositionY(), ToCSpawnLoc[0].GetPositionZ(), 5);
break; break;
case 5020: case 5020:
DoScriptText(SAY_STAGE_4_03, me); DoScriptText(SAY_STAGE_4_03, me);
m_uiUpdateTimer = 1000; m_uiUpdateTimer = 1000;
m_instance->SetData(TYPE_EVENT, 0); instance->SetData(TYPE_EVENT, 0);
break; break;
case 6000: case 6000:
me->NearTeleportTo(AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 4.0f); me->NearTeleportTo(AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 4.0f);
m_uiUpdateTimer = 20000; m_uiUpdateTimer = 20000;
m_instance->SetData(TYPE_EVENT, 6005); instance->SetData(TYPE_EVENT, 6005);
break; break;
case 6005: case 6005:
DoScriptText(SAY_STAGE_4_06, me); DoScriptText(SAY_STAGE_4_06, me);
m_uiUpdateTimer = 20000; m_uiUpdateTimer = 20000;
m_instance->SetData(TYPE_EVENT, 6010); instance->SetData(TYPE_EVENT, 6010);
break; break;
case 6010: case 6010:
if (IsHeroic()) if (IsHeroic())
{ {
DoScriptText(SAY_STAGE_4_07, me); DoScriptText(SAY_STAGE_4_07, me);
m_uiUpdateTimer = 60000; m_uiUpdateTimer = 60000;
m_instance->SetData(TYPE_ANUBARAK, SPECIAL); instance->SetData(TYPE_ANUBARAK, SPECIAL);
m_instance->SetData(TYPE_EVENT, 6020); instance->SetData(TYPE_EVENT, 6020);
} else m_instance->SetData(TYPE_EVENT, 6030); } else instance->SetData(TYPE_EVENT, 6030);
break; break;
case 6020: case 6020:
me->DespawnOrUnsummon(); me->DespawnOrUnsummon();
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 6030); instance->SetData(TYPE_EVENT, 6030);
break; break;
} }
} else m_uiUpdateTimer -= uiDiff; } else m_uiUpdateTimer -= uiDiff;
m_instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer); instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer);
} }
}; };
@@ -818,10 +827,10 @@ class npc_garrosh_toc : public CreatureScript
{ {
npc_garrosh_tocAI(Creature* creature) : ScriptedAI(creature) npc_garrosh_tocAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)me->GetInstanceScript(); instance = me->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiUpdateTimer; uint32 m_uiUpdateTimer;
void Reset() {} void Reset() {}
@@ -830,53 +839,56 @@ class npc_garrosh_toc : public CreatureScript
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!m_instance) return; if (!instance)
if (m_instance->GetData(TYPE_EVENT_NPC) != NPC_GARROSH) return; return;
m_uiUpdateTimer = m_instance->GetData(TYPE_EVENT_TIMER); if (instance->GetData(TYPE_EVENT_NPC) != NPC_GARROSH)
return;
m_uiUpdateTimer = instance->GetData(TYPE_EVENT_TIMER);
if (m_uiUpdateTimer <= uiDiff) if (m_uiUpdateTimer <= uiDiff)
{ {
switch (m_instance->GetData(TYPE_EVENT)) switch (instance->GetData(TYPE_EVENT))
{ {
case 130: case 130:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK);
DoScriptText(SAY_STAGE_0_03h, me); DoScriptText(SAY_STAGE_0_03h, me);
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 132); instance->SetData(TYPE_EVENT, 132);
break; break;
case 132: case 132:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 140); instance->SetData(TYPE_EVENT, 140);
break; break;
case 2010: case 2010:
DoScriptText(SAY_STAGE_1_09, me); DoScriptText(SAY_STAGE_1_09, me);
m_uiUpdateTimer = 9000; m_uiUpdateTimer = 9000;
m_instance->SetData(TYPE_EVENT, 2020); instance->SetData(TYPE_EVENT, 2020);
break; break;
case 3050: case 3050:
DoScriptText(SAY_STAGE_2_02h, me); DoScriptText(SAY_STAGE_2_02h, me);
m_uiUpdateTimer = 15000; m_uiUpdateTimer = 15000;
m_instance->SetData(TYPE_EVENT, 3060); instance->SetData(TYPE_EVENT, 3060);
break; break;
case 3070: case 3070:
DoScriptText(SAY_STAGE_2_04h, me); DoScriptText(SAY_STAGE_2_04h, me);
m_uiUpdateTimer = 6000; m_uiUpdateTimer = 6000;
m_instance->SetData(TYPE_EVENT, 3080); instance->SetData(TYPE_EVENT, 3080);
break; break;
case 3081: case 3081:
DoScriptText(SAY_STAGE_2_05h, me); DoScriptText(SAY_STAGE_2_05h, me);
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 3091); instance->SetData(TYPE_EVENT, 3091);
break; break;
case 4030: case 4030:
DoScriptText(SAY_STAGE_3_03h, me); DoScriptText(SAY_STAGE_3_03h, me);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 4040); instance->SetData(TYPE_EVENT, 4040);
break; break;
} }
} else m_uiUpdateTimer -= uiDiff; } else m_uiUpdateTimer -= uiDiff;
m_instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer); instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer);
} }
}; };
@@ -896,10 +908,10 @@ class npc_varian_toc : public CreatureScript
{ {
npc_varian_tocAI(Creature* creature) : ScriptedAI(creature) npc_varian_tocAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = (InstanceScript*)me->GetInstanceScript(); instance = me->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiUpdateTimer; uint32 m_uiUpdateTimer;
void Reset() {} void Reset() {}
@@ -908,53 +920,56 @@ class npc_varian_toc : public CreatureScript
void UpdateAI(const uint32 uiDiff) void UpdateAI(const uint32 uiDiff)
{ {
if (!m_instance) return; if (!instance)
if (m_instance->GetData(TYPE_EVENT_NPC) != NPC_VARIAN) return; return;
m_uiUpdateTimer = m_instance->GetData(TYPE_EVENT_TIMER); if (instance->GetData(TYPE_EVENT_NPC) != NPC_VARIAN)
return;
m_uiUpdateTimer = instance->GetData(TYPE_EVENT_TIMER);
if (m_uiUpdateTimer <= uiDiff) if (m_uiUpdateTimer <= uiDiff)
{ {
switch (m_instance->GetData(TYPE_EVENT)) switch (instance->GetData(TYPE_EVENT))
{ {
case 120: case 120:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK);
DoScriptText(SAY_STAGE_0_03a, me); DoScriptText(SAY_STAGE_0_03a, me);
m_uiUpdateTimer = 2000; m_uiUpdateTimer = 2000;
m_instance->SetData(TYPE_EVENT, 122); instance->SetData(TYPE_EVENT, 122);
break; break;
case 122: case 122:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE); me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 130); instance->SetData(TYPE_EVENT, 130);
break; break;
case 2020: case 2020:
DoScriptText(SAY_STAGE_1_10, me); DoScriptText(SAY_STAGE_1_10, me);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 2030); instance->SetData(TYPE_EVENT, 2030);
break; break;
case 3051: case 3051:
DoScriptText(SAY_STAGE_2_02a, me); DoScriptText(SAY_STAGE_2_02a, me);
m_uiUpdateTimer = 10000; m_uiUpdateTimer = 10000;
m_instance->SetData(TYPE_EVENT, 3061); instance->SetData(TYPE_EVENT, 3061);
break; break;
case 3071: case 3071:
DoScriptText(SAY_STAGE_2_04a, me); DoScriptText(SAY_STAGE_2_04a, me);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 3081); instance->SetData(TYPE_EVENT, 3081);
break; break;
case 3080: case 3080:
DoScriptText(SAY_STAGE_2_05a, me); DoScriptText(SAY_STAGE_2_05a, me);
m_uiUpdateTimer = 3000; m_uiUpdateTimer = 3000;
m_instance->SetData(TYPE_EVENT, 3090); instance->SetData(TYPE_EVENT, 3090);
break; break;
case 4020: case 4020:
DoScriptText(SAY_STAGE_3_03a, me); DoScriptText(SAY_STAGE_3_03a, me);
m_uiUpdateTimer = 5000; m_uiUpdateTimer = 5000;
m_instance->SetData(TYPE_EVENT, 4040); instance->SetData(TYPE_EVENT, 4040);
break; break;
} }
} else m_uiUpdateTimer -= uiDiff; } else m_uiUpdateTimer -= uiDiff;
m_instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer); instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer);
} }
}; };
@@ -83,7 +83,8 @@ public:
bool IsEncounterInProgress() const bool IsEncounterInProgress() const
{ {
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS) return true; if (m_auiEncounter[i] == IN_PROGRESS)
return true;
return false; return false;
} }
@@ -792,7 +792,7 @@ public:
struct npc_phantom_hallucinationAI : public npc_phantom_mage::npc_phantom_mageAI struct npc_phantom_hallucinationAI : public npc_phantom_mage::npc_phantom_mageAI
{ {
npc_phantom_hallucinationAI(Creature* c) : npc_phantom_mage::npc_phantom_mageAI(c) npc_phantom_hallucinationAI(Creature* creature) : npc_phantom_mage::npc_phantom_mageAI(creature)
{ {
} }
@@ -131,7 +131,8 @@ public:
bool IsEncounterInProgress() const bool IsEncounterInProgress() const
{ {
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS) return true; if (m_auiEncounter[i] == IN_PROGRESS)
return true;
return false; return false;
} }
@@ -519,17 +520,17 @@ class go_gundrak_altar : public GameObjectScript
public: public:
go_gundrak_altar() : GameObjectScript("go_gundrak_altar") { } go_gundrak_altar() : GameObjectScript("go_gundrak_altar") { }
bool OnGossipHello(Player* /*player*/, GameObject* pGO) bool OnGossipHello(Player* /*player*/, GameObject* go)
{ {
InstanceScript* instance = pGO->GetInstanceScript(); InstanceScript* instance = go->GetInstanceScript();
uint64 uiStatue = 0; uint64 uiStatue = 0;
pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
pGO->SetGoState(GO_STATE_ACTIVE); go->SetGoState(GO_STATE_ACTIVE);
if (instance) if (instance)
{ {
switch (pGO->GetEntry()) switch (go->GetEntry())
{ {
case 192518: case 192518:
uiStatue = instance->GetData64(DATA_SLAD_RAN_STATUE); uiStatue = instance->GetData64(DATA_SLAD_RAN_STATUE);
@@ -545,8 +546,8 @@ public:
if (!instance->GetData64(DATA_STATUE_ACTIVATE)) if (!instance->GetData64(DATA_STATUE_ACTIVATE))
{ {
instance->SetData64(DATA_STATUE_ACTIVATE, uiStatue); instance->SetData64(DATA_STATUE_ACTIVATE, uiStatue);
pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
pGO->SetGoState(GO_STATE_ACTIVE); go->SetGoState(GO_STATE_ACTIVE);
} }
return true; return true;
} }
@@ -63,7 +63,7 @@ public:
struct boss_anubrekhanAI : public BossAI struct boss_anubrekhanAI : public BossAI
{ {
boss_anubrekhanAI(Creature* c) : BossAI(c, BOSS_ANUBREKHAN) {} boss_anubrekhanAI(Creature* creature) : BossAI(creature, BOSS_ANUBREKHAN) {}
bool hasTaunted; bool hasTaunted;
@@ -89,7 +89,7 @@ public:
struct boss_four_horsemenAI : public BossAI struct boss_four_horsemenAI : public BossAI
{ {
boss_four_horsemenAI(Creature* c) : BossAI(c, BOSS_HORSEMEN) boss_four_horsemenAI(Creature* creature) : BossAI(creature, BOSS_HORSEMEN)
{ {
id = Horsemen(0); id = Horsemen(0);
for (uint8 i = 0; i < 4; ++i) for (uint8 i = 0; i < 4; ++i)
@@ -57,7 +57,7 @@ public:
struct boss_gluthAI : public BossAI struct boss_gluthAI : public BossAI
{ {
boss_gluthAI(Creature* c) : BossAI(c, BOSS_GLUTH) boss_gluthAI(Creature* creature) : BossAI(creature, BOSS_GLUTH)
{ {
// Do not let Gluth be affected by zombies' debuff // Do not let Gluth be affected by zombies' debuff
me->ApplySpellImmune(0, IMMUNITY_ID, SPELL_INFECTED_WOUND, true); me->ApplySpellImmune(0, IMMUNITY_ID, SPELL_INFECTED_WOUND, true);
@@ -45,7 +45,7 @@ public:
struct boss_grobbulusAI : public BossAI struct boss_grobbulusAI : public BossAI
{ {
boss_grobbulusAI(Creature* c) : BossAI(c, BOSS_GROBBULUS) boss_grobbulusAI(Creature* creature) : BossAI(creature, BOSS_GROBBULUS)
{ {
me->ApplySpellImmune(0, IMMUNITY_ID, SPELL_POISON_CLOUD_ADD, true); me->ApplySpellImmune(0, IMMUNITY_ID, SPELL_POISON_CLOUD_ADD, true);
} }
@@ -57,7 +57,7 @@ public:
struct boss_heiganAI : public BossAI struct boss_heiganAI : public BossAI
{ {
boss_heiganAI(Creature* c) : BossAI(c, BOSS_HEIGAN) {} boss_heiganAI(Creature* creature) : BossAI(creature, BOSS_HEIGAN) {}
uint32 eruptSection; uint32 eruptSection;
bool eruptDirection; bool eruptDirection;
@@ -266,7 +266,7 @@ public:
struct boss_kelthuzadAI : public BossAI struct boss_kelthuzadAI : public BossAI
{ {
boss_kelthuzadAI(Creature* c) : BossAI(c, BOSS_KELTHUZAD), spawns(c) boss_kelthuzadAI(Creature* creature) : BossAI(creature, BOSS_KELTHUZAD), spawns(creature)
{ {
uiFaction = me->getFaction(); uiFaction = me->getFaction();
} }
@@ -68,7 +68,7 @@ public:
struct boss_maexxnaAI : public BossAI struct boss_maexxnaAI : public BossAI
{ {
boss_maexxnaAI(Creature* c) : BossAI(c, BOSS_MAEXXNA) {} boss_maexxnaAI(Creature* creature) : BossAI(creature, BOSS_MAEXXNA) {}
bool enraged; bool enraged;
@@ -159,7 +159,7 @@ public:
struct mob_webwrapAI : public NullCreatureAI struct mob_webwrapAI : public NullCreatureAI
{ {
mob_webwrapAI(Creature* c) : NullCreatureAI(c), victimGUID(0) {} mob_webwrapAI(Creature* creature) : NullCreatureAI(creature), victimGUID(0) {}
uint64 victimGUID; uint64 victimGUID;
@@ -75,7 +75,7 @@ public:
struct boss_nothAI : public BossAI struct boss_nothAI : public BossAI
{ {
boss_nothAI(Creature* c) : BossAI(c, BOSS_NOTH) {} boss_nothAI(Creature* creature) : BossAI(creature, BOSS_NOTH) {}
uint32 waveCount, balconyCount; uint32 waveCount, balconyCount;
@@ -62,7 +62,7 @@ public:
struct boss_patchwerkAI : public BossAI struct boss_patchwerkAI : public BossAI
{ {
boss_patchwerkAI(Creature* c) : BossAI(c, BOSS_PATCHWERK) {} boss_patchwerkAI(Creature* creature) : BossAI(creature, BOSS_PATCHWERK) {}
bool Enraged; bool Enraged;
@@ -64,7 +64,7 @@ public:
struct boss_razuviousAI : public BossAI struct boss_razuviousAI : public BossAI
{ {
boss_razuviousAI(Creature* c) : BossAI(c, BOSS_RAZUVIOUS) {} boss_razuviousAI(Creature* creature) : BossAI(creature, BOSS_RAZUVIOUS) {}
void KilledUnit(Unit* /*victim*/) void KilledUnit(Unit* /*victim*/)
{ {
@@ -81,7 +81,7 @@ public:
struct boss_sapphironAI : public BossAI struct boss_sapphironAI : public BossAI
{ {
boss_sapphironAI(Creature* c) : BossAI(c, BOSS_SAPPHIRON) boss_sapphironAI(Creature* creature) : BossAI(creature, BOSS_SAPPHIRON)
, phase(PHASE_NULL) , phase(PHASE_NULL)
{ {
map = me->GetMap(); map = me->GetMap();
@@ -120,7 +120,7 @@ public:
struct boss_thaddiusAI : public BossAI struct boss_thaddiusAI : public BossAI
{ {
boss_thaddiusAI(Creature* c) : BossAI(c, BOSS_THADDIUS) boss_thaddiusAI(Creature* creature) : BossAI(creature, BOSS_THADDIUS)
{ {
// init is a bit tricky because thaddius shall track the life of both adds, but not if there was a wipe // init is a bit tricky because thaddius shall track the life of both adds, but not if there was a wipe
// and, in particular, if there was a crash after both adds were killed (should not respawn) // and, in particular, if there was a crash after both adds were killed (should not respawn)
@@ -208,16 +208,16 @@ class containment_sphere : public GameObjectScript
public: public:
containment_sphere() : GameObjectScript("containment_sphere") { } containment_sphere() : GameObjectScript("containment_sphere") { }
bool OnGossipHello(Player* /*player*/, GameObject* pGO) bool OnGossipHello(Player* /*player*/, GameObject* go)
{ {
InstanceScript* instance = pGO->GetInstanceScript(); InstanceScript* instance = go->GetInstanceScript();
Creature* pKeristrasza = Unit::GetCreature(*pGO, instance ? instance->GetData64(DATA_KERISTRASZA) : 0); Creature* pKeristrasza = Unit::GetCreature(*go, instance ? instance->GetData64(DATA_KERISTRASZA) : 0);
if (pKeristrasza && pKeristrasza->isAlive()) if (pKeristrasza && pKeristrasza->isAlive())
{ {
// maybe these are hacks :( // maybe these are hacks :(
pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
pGO->SetGoState(GO_STATE_ACTIVE); go->SetGoState(GO_STATE_ACTIVE);
CAST_AI(boss_keristrasza::boss_keristraszaAI, pKeristrasza->AI())->CheckContainmentSpheres(true); CAST_AI(boss_keristrasza::boss_keristraszaAI, pKeristrasza->AI())->CheckContainmentSpheres(true);
} }
@@ -93,13 +93,13 @@ public:
{ {
boss_bjarngrimAI(Creature* creature) : ScriptedAI(creature) boss_bjarngrimAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
m_uiStance = STANCE_DEFENSIVE; m_uiStance = STANCE_DEFENSIVE;
memset(&m_auiStormforgedLieutenantGUID, 0, sizeof(m_auiStormforgedLieutenantGUID)); memset(&m_auiStormforgedLieutenantGUID, 0, sizeof(m_auiStormforgedLieutenantGUID));
canBuff = true; canBuff = true;
} }
InstanceScript* m_instance; InstanceScript* instance;
bool m_bIsChangingStance; bool m_bIsChangingStance;
bool canBuff; bool canBuff;
@@ -167,8 +167,8 @@ public:
SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SHIELD, EQUIP_NO_CHANGE); SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SHIELD, EQUIP_NO_CHANGE);
if (m_instance) if (instance)
m_instance->SetData(TYPE_BJARNGRIM, NOT_STARTED); instance->SetData(TYPE_BJARNGRIM, NOT_STARTED);
} }
void EnterEvadeMode() void EnterEvadeMode()
@@ -188,8 +188,8 @@ public:
//must get both lieutenants here and make sure they are with him //must get both lieutenants here and make sure they are with him
me->CallForHelp(30.0f); me->CallForHelp(30.0f);
if (m_instance) if (instance)
m_instance->SetData(TYPE_BJARNGRIM, IN_PROGRESS); instance->SetData(TYPE_BJARNGRIM, IN_PROGRESS);
} }
void KilledUnit(Unit* /*victim*/) void KilledUnit(Unit* /*victim*/)
@@ -201,8 +201,8 @@ public:
{ {
Talk(SAY_DEATH); Talk(SAY_DEATH);
if (m_instance) if (instance)
m_instance->SetData(TYPE_BJARNGRIM, DONE); instance->SetData(TYPE_BJARNGRIM, DONE);
} }
//TODO: remove when removal is done by the core //TODO: remove when removal is done by the core
@@ -385,10 +385,10 @@ public:
{ {
mob_stormforged_lieutenantAI(Creature* creature) : ScriptedAI(creature) mob_stormforged_lieutenantAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 m_uiArcWeld_Timer; uint32 m_uiArcWeld_Timer;
uint32 m_uiRenewSteel_Timer; uint32 m_uiRenewSteel_Timer;
@@ -401,9 +401,9 @@ public:
void EnterCombat(Unit* who) void EnterCombat(Unit* who)
{ {
if (m_instance) if (instance)
{ {
if (Creature* pBjarngrim = m_instance->instance->GetCreature(m_instance->GetData64(DATA_BJARNGRIM))) if (Creature* pBjarngrim = instance->instance->GetCreature(instance->GetData64(DATA_BJARNGRIM)))
{ {
if (pBjarngrim->isAlive() && !pBjarngrim->getVictim()) if (pBjarngrim->isAlive() && !pBjarngrim->getVictim())
pBjarngrim->AI()->AttackStart(who); pBjarngrim->AI()->AttackStart(who);
@@ -427,9 +427,9 @@ public:
if (m_uiRenewSteel_Timer <= uiDiff) if (m_uiRenewSteel_Timer <= uiDiff)
{ {
if (m_instance) if (instance)
{ {
if (Creature* pBjarngrim = m_instance->instance->GetCreature(m_instance->GetData64(DATA_BJARNGRIM))) if (Creature* pBjarngrim = instance->instance->GetCreature(instance->GetData64(DATA_BJARNGRIM)))
{ {
if (pBjarngrim->isAlive()) if (pBjarngrim->isAlive())
DoCast(pBjarngrim, SPELL_RENEW_STEEL_N); DoCast(pBjarngrim, SPELL_RENEW_STEEL_N);
@@ -68,10 +68,10 @@ public:
{ {
boss_lokenAI(Creature* creature) : ScriptedAI(creature) boss_lokenAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
bool m_bIsAura; bool m_bIsAura;
@@ -93,10 +93,10 @@ public:
m_uiHealthAmountModifier = 1; m_uiHealthAmountModifier = 1;
if (m_instance) if (instance)
{ {
m_instance->SetData(TYPE_LOKEN, NOT_STARTED); instance->SetData(TYPE_LOKEN, NOT_STARTED);
m_instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMELY_DEATH_START_EVENT); instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMELY_DEATH_START_EVENT);
} }
} }
@@ -104,10 +104,10 @@ public:
{ {
Talk(SAY_AGGRO); Talk(SAY_AGGRO);
if (m_instance) if (instance)
{ {
m_instance->SetData(TYPE_LOKEN, IN_PROGRESS); instance->SetData(TYPE_LOKEN, IN_PROGRESS);
m_instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMELY_DEATH_START_EVENT); instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMELY_DEATH_START_EVENT);
} }
} }
@@ -115,8 +115,8 @@ public:
{ {
Talk(SAY_DEATH); Talk(SAY_DEATH);
if (m_instance) if (instance)
m_instance->SetData(TYPE_LOKEN, DONE); instance->SetData(TYPE_LOKEN, DONE);
} }
void KilledUnit(Unit* /*victim*/) void KilledUnit(Unit* /*victim*/)
@@ -79,10 +79,10 @@ public:
{ {
boss_volkhanAI(Creature* creature) : ScriptedAI(creature) boss_volkhanAI(Creature* creature) : ScriptedAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
std::list<uint64> m_lGolemGUIDList; std::list<uint64> m_lGolemGUIDList;
@@ -117,16 +117,16 @@ public:
DespawnGolem(); DespawnGolem();
m_lGolemGUIDList.clear(); m_lGolemGUIDList.clear();
if (m_instance) if (instance)
m_instance->SetData(TYPE_VOLKHAN, NOT_STARTED); instance->SetData(TYPE_VOLKHAN, NOT_STARTED);
} }
void EnterCombat(Unit* /*who*/) void EnterCombat(Unit* /*who*/)
{ {
Talk(SAY_AGGRO); Talk(SAY_AGGRO);
if (m_instance) if (instance)
m_instance->SetData(TYPE_VOLKHAN, IN_PROGRESS); instance->SetData(TYPE_VOLKHAN, IN_PROGRESS);
} }
void AttackStart(Unit* who) void AttackStart(Unit* who)
@@ -147,8 +147,8 @@ public:
Talk(SAY_DEATH); Talk(SAY_DEATH);
DespawnGolem(); DespawnGolem();
if (m_instance) if (instance)
m_instance->SetData(TYPE_VOLKHAN, DONE); instance->SetData(TYPE_VOLKHAN, DONE);
if (IsHeroic() && GolemsShattered < 5) if (IsHeroic() && GolemsShattered < 5)
{ {
@@ -643,7 +643,7 @@ class boss_flame_leviathan_defense_cannon : public CreatureScript
uint32 NapalmTimer; uint32 NapalmTimer;
void Reset () void Reset()
{ {
NapalmTimer = 5*IN_MILLISECONDS; NapalmTimer = 5*IN_MILLISECONDS;
DoCast(me, AURA_STEALTH_DETECTION); DoCast(me, AURA_STEALTH_DETECTION);
@@ -183,13 +183,10 @@ class boss_kologarn : public CreatureScript
who->CastSpell(me, SPELL_ARM_DEAD_DAMAGE, true); who->CastSpell(me, SPELL_ARM_DEAD_DAMAGE, true);
if (Creature* rubbleStalker = who->FindNearestCreature(NPC_RUBBLE_STALKER, 70.0f)) if (Creature* rubbleStalker = who->FindNearestCreature(NPC_RUBBLE_STALKER, 70.0f))
{
if (rubbleStalker)
{ {
rubbleStalker->CastSpell(rubbleStalker, SPELL_FALLING_RUBBLE, true); rubbleStalker->CastSpell(rubbleStalker, SPELL_FALLING_RUBBLE, true);
rubbleStalker->CastSpell(rubbleStalker, SPELL_SUMMON_RUBBLE, true); rubbleStalker->CastSpell(rubbleStalker, SPELL_SUMMON_RUBBLE, true);
} }
}
if (!right && !left) if (!right && !left)
events.ScheduleEvent(EVENT_STONE_SHOUT, 5000); events.ScheduleEvent(EVENT_STONE_SHOUT, 5000);
@@ -445,6 +445,7 @@ public:
void AttackStart(Unit* /*who*/) {} void AttackStart(Unit* /*who*/) {}
void MoveInLineOfSight(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {}
void EnterCombat(Unit* /*who*/) {} void EnterCombat(Unit* /*who*/) {}
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
if (uiDespawnTimer <= diff) if (uiDespawnTimer <= diff)
@@ -455,7 +456,6 @@ public:
} else uiDespawnTimer -= diff; } else uiDespawnTimer -= diff;
} }
}; };
}; };
void AddSC_boss_ingvar_the_plunderer() void AddSC_boss_ingvar_the_plunderer()
@@ -100,7 +100,8 @@ public:
bool IsEncounterInProgress() const bool IsEncounterInProgress() const
{ {
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS) return true; if (m_auiEncounter[i] == IN_PROGRESS)
return true;
return false; return false;
} }
@@ -835,15 +835,15 @@ class go_palehoof_sphere : public GameObjectScript
public: public:
go_palehoof_sphere() : GameObjectScript("go_palehoof_sphere") { } go_palehoof_sphere() : GameObjectScript("go_palehoof_sphere") { }
bool OnGossipHello(Player* /*player*/, GameObject* pGO) bool OnGossipHello(Player* /*player*/, GameObject* go)
{ {
InstanceScript* instance = pGO->GetInstanceScript(); InstanceScript* instance = go->GetInstanceScript();
Creature* pPalehoof = Unit::GetCreature(*pGO, instance ? instance->GetData64(DATA_GORTOK_PALEHOOF) : 0); Creature* pPalehoof = Unit::GetCreature(*go, instance ? instance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
if (pPalehoof && pPalehoof->isAlive()) if (pPalehoof && pPalehoof->isAlive())
{ {
pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
pGO->SetGoState(GO_STATE_ACTIVE); go->SetGoState(GO_STATE_ACTIVE);
CAST_AI(boss_palehoof::boss_palehoofAI, pPalehoof->AI())->NextPhase(); CAST_AI(boss_palehoof::boss_palehoofAI, pPalehoof->AI())->NextPhase();
} }
@@ -170,10 +170,10 @@ public:
{ {
boss_skadiAI(Creature* creature) : ScriptedAI(creature), Summons(me) boss_skadiAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
SummonList Summons; SummonList Summons;
uint64 m_uiGraufGUID; uint64 m_uiGraufGUID;
std::vector<uint64> triggersGUID; std::vector<uint64> triggersGUID;
@@ -208,10 +208,10 @@ public:
me->SetSpeed(MOVE_FLIGHT, 3.0f); me->SetSpeed(MOVE_FLIGHT, 3.0f);
if ((Unit::GetCreature((*me), m_uiGraufGUID) == NULL) && !me->IsMounted()) if ((Unit::GetCreature((*me), m_uiGraufGUID) == NULL) && !me->IsMounted())
me->SummonCreature(CREATURE_GRAUF, Location[0].GetPositionX(), Location[0].GetPositionY(), Location[0].GetPositionZ(), 3.0f); me->SummonCreature(CREATURE_GRAUF, Location[0].GetPositionX(), Location[0].GetPositionY(), Location[0].GetPositionZ(), 3.0f);
if (m_instance) if (instance)
{ {
m_instance->SetData(DATA_SKADI_THE_RUTHLESS_EVENT, NOT_STARTED); instance->SetData(DATA_SKADI_THE_RUTHLESS_EVENT, NOT_STARTED);
m_instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
} }
} }
@@ -235,10 +235,10 @@ public:
m_uiMovementTimer = 1000; m_uiMovementTimer = 1000;
m_uiSummonTimer = 10000; m_uiSummonTimer = 10000;
me->SetInCombatWithZone(); me->SetInCombatWithZone();
if (m_instance) if (instance)
{ {
m_instance->SetData(DATA_SKADI_THE_RUTHLESS_EVENT, IN_PROGRESS); instance->SetData(DATA_SKADI_THE_RUTHLESS_EVENT, IN_PROGRESS);
m_instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
me->GetMotionMaster()->MoveJump(Location[0].GetPositionX(), Location[0].GetPositionY(), Location[0].GetPositionZ(), 5.0f, 10.0f); me->GetMotionMaster()->MoveJump(Location[0].GetPositionX(), Location[0].GetPositionY(), Location[0].GetPositionZ(), 5.0f, 10.0f);
me->SetWalk(false); me->SetWalk(false);
m_uiMountTimer = 1000; m_uiMountTimer = 1000;
@@ -411,8 +411,8 @@ public:
{ {
DoScriptText(SAY_DEATH, me); DoScriptText(SAY_DEATH, me);
Summons.DespawnAll(); Summons.DespawnAll();
if (m_instance) if (instance)
m_instance->SetData(DATA_SKADI_THE_RUTHLESS_EVENT, DONE); instance->SetData(DATA_SKADI_THE_RUTHLESS_EVENT, DONE);
} }
void KilledUnit(Unit* /*victim*/) void KilledUnit(Unit* /*victim*/)
@@ -461,15 +461,15 @@ class go_harpoon_launcher : public GameObjectScript
public: public:
go_harpoon_launcher() : GameObjectScript("go_harpoon_launcher") { } go_harpoon_launcher() : GameObjectScript("go_harpoon_launcher") { }
bool OnGossipHello(Player* player, GameObject* pGO) bool OnGossipHello(Player* player, GameObject* go)
{ {
InstanceScript* m_instance = pGO->GetInstanceScript(); InstanceScript* instance = go->GetInstanceScript();
if (!m_instance) return false; if (!instance)
return false;
if (Creature* pSkadi = Unit::GetCreature((*pGO), m_instance->GetData64(DATA_SKADI_THE_RUTHLESS))) if (Creature* pSkadi = Unit::GetCreature(*go, instance->GetData64(DATA_SKADI_THE_RUTHLESS)))
{
player->CastSpell(pSkadi, SPELL_RAPID_FIRE, true); player->CastSpell(pSkadi, SPELL_RAPID_FIRE, true);
}
return false; return false;
} }
@@ -97,7 +97,8 @@ public:
bool IsEncounterInProgress() const bool IsEncounterInProgress() const
{ {
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS) return true; if (m_auiEncounter[i] == IN_PROGRESS)
return true;
return false; return false;
} }
@@ -221,7 +221,8 @@ public:
bool IsEncounterInProgress() const bool IsEncounterInProgress() const
{ {
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS) return true; if (m_auiEncounter[i] == IN_PROGRESS)
return true;
return false; return false;
} }
@@ -795,7 +796,7 @@ public:
} }
} }
void ProcessEvent(WorldObject* /*pGO*/, uint32 uiEventId) void ProcessEvent(WorldObject* /*go*/, uint32 uiEventId)
{ {
switch (uiEventId) switch (uiEventId)
{ {
@@ -403,9 +403,9 @@ public:
{ {
me->SetReactState(REACT_PASSIVE); me->SetReactState(REACT_PASSIVE);
if (GameObject* pGO = me->FindNearestGameObject(GO_SCOURGE_CAGE, 5.0f)) if (GameObject* go = me->FindNearestGameObject(GO_SCOURGE_CAGE, 5.0f))
if (pGO->GetGoState() == GO_STATE_ACTIVE) if (go->GetGoState() == GO_STATE_ACTIVE)
pGO->SetGoState(GO_STATE_READY); go->SetGoState(GO_STATE_READY);
} }
}; };
@@ -849,7 +849,7 @@ public:
struct npc_nexus_drake_hatchlingAI : public FollowerAI //The spell who makes the npc follow the player is missing, also we can use FollowerAI! struct npc_nexus_drake_hatchlingAI : public FollowerAI //The spell who makes the npc follow the player is missing, also we can use FollowerAI!
{ {
npc_nexus_drake_hatchlingAI(Creature* c) : FollowerAI(c) {} npc_nexus_drake_hatchlingAI(Creature* creature) : FollowerAI(creature) {}
uint64 HarpoonerGUID; uint64 HarpoonerGUID;
bool WithRedDragonBlood; bool WithRedDragonBlood;
+8 -12
View File
@@ -194,9 +194,7 @@ public:
if (HasEscortState(STATE_ESCORT_ESCORTING)) if (HasEscortState(STATE_ESCORT_ESCORTING))
{ {
if (m_uiChatTimer <= uiDiff) if (m_uiChatTimer <= uiDiff)
{
m_uiChatTimer = 12000; m_uiChatTimer = 12000;
}
else else
m_uiChatTimer -= uiDiff; m_uiChatTimer -= uiDiff;
} }
@@ -209,9 +207,7 @@ public:
{ {
DoScriptText(SAY_QUEST_ACCEPT, creature); DoScriptText(SAY_QUEST_ACCEPT, creature);
if (Creature* Mrfloppy = GetClosestCreatureWithEntry(creature, NPC_MRFLOPPY, 180.0f)) if (Creature* Mrfloppy = GetClosestCreatureWithEntry(creature, NPC_MRFLOPPY, 180.0f))
{
Mrfloppy->GetMotionMaster()->MoveFollow(creature, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); Mrfloppy->GetMotionMaster()->MoveFollow(creature, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
}
if (npc_escortAI* pEscortAI = CAST_AI(npc_emily::npc_emilyAI, (creature->AI()))) if (npc_escortAI* pEscortAI = CAST_AI(npc_emily::npc_emilyAI, (creature->AI())))
pEscortAI->Start(true, false, player->GetGUID()); pEscortAI->Start(true, false, player->GetGUID());
@@ -477,7 +473,7 @@ public:
uint32 DespawnTimer; uint32 DespawnTimer;
void Reset () void Reset()
{ {
DespawnTimer = 5000; DespawnTimer = 5000;
uiPlayerGUID = 0; uiPlayerGUID = 0;
@@ -503,7 +499,6 @@ public:
me->SetStandState(UNIT_STAND_STATE_STAND); me->SetStandState(UNIT_STAND_STATE_STAND);
me->DespawnOrUnsummon(DespawnTimer); me->DespawnOrUnsummon(DespawnTimer);
} }
} }
} }
@@ -511,6 +506,7 @@ public:
{ {
if (!UpdateVictim()) if (!UpdateVictim())
return; return;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
}; };
@@ -695,12 +691,12 @@ public:
void AddSC_grizzly_hills() void AddSC_grizzly_hills()
{ {
new npc_emily; new npc_emily();
new npc_mrfloppy; new npc_mrfloppy();
new npc_outhouse_bunny; new npc_outhouse_bunny();
new npc_tallhorn_stag; new npc_tallhorn_stag();
new npc_amberpine_woodsman; new npc_amberpine_woodsman();
new npc_wounded_skirmisher; new npc_wounded_skirmisher();
new npc_lightning_sentry(); new npc_lightning_sentry();
new npc_venture_co_straggler(); new npc_venture_co_straggler();
} }
@@ -71,7 +71,7 @@ public:
npc_Apothecary_HanesAI(Creature* creature) : npc_escortAI(creature){} npc_Apothecary_HanesAI(Creature* creature) : npc_escortAI(creature){}
uint32 PotTimer; uint32 PotTimer;
void Reset () void Reset()
{ {
SetDespawnAtFar(false); SetDespawnAtFar(false);
PotTimer = 10000; //10 sec cooldown on potion PotTimer = 10000; //10 sec cooldown on potion
+1 -1
View File
@@ -709,7 +709,7 @@ class npc_hyldsmeet_protodrake : public CreatureScript
class npc_hyldsmeet_protodrakeAI : public CreatureAI class npc_hyldsmeet_protodrakeAI : public CreatureAI
{ {
public: public:
npc_hyldsmeet_protodrakeAI(Creature* c) : CreatureAI(c), _accessoryRespawnTimer(0), _vehicleKit(c->GetVehicleKit()) {} npc_hyldsmeet_protodrakeAI(Creature* creature) : CreatureAI(creature), _accessoryRespawnTimer(0), _vehicleKit(creature->GetVehicleKit()) {}
void PassengerBoarded(Unit* who, int8 /*seat*/, bool apply) void PassengerBoarded(Unit* who, int8 /*seat*/, bool apply)
{ {
+4 -5
View File
@@ -52,8 +52,7 @@ public:
float x, y, z; float x, y, z;
me->GetClosePoint(x, y, z, me->GetObjectSize() / 3, 0.1f); me->GetClosePoint(x, y, z, me->GetObjectSize() / 3, 0.1f);
if (Unit* summon = me->SummonCreature(NPC_RAGECLAW, x, y, z, if (Unit* summon = me->SummonCreature(NPC_RAGECLAW, x, y, z, 0, TEMPSUMMON_DEAD_DESPAWN, 1000))
0, TEMPSUMMON_DEAD_DESPAWN, 1000))
{ {
RageclawGUID = summon->GetGUID(); RageclawGUID = summon->GetGUID();
LockRageclaw(); LockRageclaw();
@@ -1397,14 +1396,14 @@ class go_scourge_enclosure : public GameObjectScript
public: public:
go_scourge_enclosure() : GameObjectScript("go_scourge_enclosure") { } go_scourge_enclosure() : GameObjectScript("go_scourge_enclosure") { }
bool OnGossipHello(Player* player, GameObject* pGO) bool OnGossipHello(Player* player, GameObject* go)
{ {
if (player->GetQuestStatus(QUEST_OUR_ONLY_HOPE) == QUEST_STATUS_INCOMPLETE) if (player->GetQuestStatus(QUEST_OUR_ONLY_HOPE) == QUEST_STATUS_INCOMPLETE)
{ {
Creature* pGymerDummy = pGO->FindNearestCreature(NPC_GYMER_DUMMY, 20.0f); Creature* pGymerDummy = go->FindNearestCreature(NPC_GYMER_DUMMY, 20.0f);
if (pGymerDummy) if (pGymerDummy)
{ {
pGO->UseDoorOrButton(); go->UseDoorOrButton();
player->KilledMonsterCredit(pGymerDummy->GetEntry(), pGymerDummy->GetGUID()); player->KilledMonsterCredit(pGymerDummy->GetEntry(), pGymerDummy->GetGUID());
pGymerDummy->CastSpell(pGymerDummy, 55529, true); pGymerDummy->CastSpell(pGymerDummy, 55529, true);
pGymerDummy->DisappearAndDie(); pGymerDummy->DisappearAndDie();
@@ -58,10 +58,10 @@ public:
{ {
boss_ambassador_hellmawAI(Creature* creature) : npc_escortAI(creature) boss_ambassador_hellmawAI(Creature* creature) : npc_escortAI(creature)
{ {
m_instance = creature->GetInstanceScript(); instance = creature->GetInstanceScript();
} }
InstanceScript* m_instance; InstanceScript* instance;
uint32 EventCheck_Timer; uint32 EventCheck_Timer;
uint32 CorrosiveAcid_Timer; uint32 CorrosiveAcid_Timer;
@@ -81,17 +81,17 @@ public:
IsBanished = true; IsBanished = true;
Enraged = false; Enraged = false;
if (m_instance && me->isAlive()) if (instance && me->isAlive())
{ {
if (m_instance->GetData(TYPE_OVERSEER) != DONE) if (instance->GetData(TYPE_OVERSEER) != DONE)
DoCast(me, SPELL_BANISH, true); DoCast(me, SPELL_BANISH, true);
} }
} }
void JustReachedHome() void JustReachedHome()
{ {
if (m_instance) if (instance)
m_instance->SetData(TYPE_HELLMAW, FAIL); instance->SetData(TYPE_HELLMAW, FAIL);
} }
void MoveInLineOfSight(Unit* who) void MoveInLineOfSight(Unit* who)
@@ -114,15 +114,15 @@ public:
IsBanished = false; IsBanished = false;
Intro = true; Intro = true;
if (m_instance) if (instance)
{ {
if (m_instance->GetData(TYPE_HELLMAW) != FAIL) if (instance->GetData(TYPE_HELLMAW) != FAIL)
{ {
DoScriptText(SAY_INTRO, me); DoScriptText(SAY_INTRO, me);
Start(true, false, 0, NULL, false, true); Start(true, false, 0, NULL, false, true);
} }
m_instance->SetData(TYPE_HELLMAW, IN_PROGRESS); instance->SetData(TYPE_HELLMAW, IN_PROGRESS);
} }
} }
@@ -140,8 +140,8 @@ public:
{ {
DoScriptText(SAY_DEATH, me); DoScriptText(SAY_DEATH, me);
if (m_instance) if (instance)
m_instance->SetData(TYPE_HELLMAW, DONE); instance->SetData(TYPE_HELLMAW, DONE);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -150,9 +150,9 @@ public:
{ {
if (EventCheck_Timer <= diff) if (EventCheck_Timer <= diff)
{ {
if (m_instance) if (instance)
{ {
if (m_instance->GetData(TYPE_OVERSEER) == DONE) if (instance->GetData(TYPE_OVERSEER) == DONE)
{ {
DoIntro(); DoIntro();
return; return;
@@ -75,7 +75,8 @@ public:
bool IsEncounterInProgress() const bool IsEncounterInProgress() const
{ {
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS) return true; if (m_auiEncounter[i] == IN_PROGRESS)
return true;
return false; return false;
} }
@@ -430,7 +430,10 @@ public:
} }
} }
void SetGlaiveGUID(uint64 guid){ GlaiveGUID = guid; } void SetGlaiveGUID(uint64 guid)
{
GlaiveGUID = guid;
}
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
@@ -566,7 +569,9 @@ public:
void KilledUnit(Unit* victim) void KilledUnit(Unit* victim)
{ {
if (victim == me) return; if (victim == me)
return;
// TODO: Find better way to handle emote // TODO: Find better way to handle emote
switch (urand(0, 1)) switch (urand(0, 1))
{ {
@@ -747,7 +752,8 @@ public:
final.y = 2 * final.y - initial.y; final.y = 2 * final.y - initial.y;
Creature* Trigger = me->SummonCreature(23069, initial.x, initial.y, initial.z, 0, TEMPSUMMON_TIMED_DESPAWN, 13000); Creature* Trigger = me->SummonCreature(23069, initial.x, initial.y, initial.z, 0, TEMPSUMMON_TIMED_DESPAWN, 13000);
if (!Trigger) return; if (!Trigger)
return;
Trigger->SetSpeed(MOVE_WALK, 3); Trigger->SetSpeed(MOVE_WALK, 3);
Trigger->SetWalk(true); Trigger->SetWalk(true);
@@ -1181,7 +1187,11 @@ public:
void EnterCombat(Unit* /*who*/) {} void EnterCombat(Unit* /*who*/) {}
void MoveInLineOfSight(Unit* /*who*/) {} void MoveInLineOfSight(Unit* /*who*/) {}
void EnterEvadeMode() {} void EnterEvadeMode() {}
void GetIllidanGUID(uint64 guid) { IllidanGUID = guid; }
void GetIllidanGUID(uint64 guid)
{
IllidanGUID = guid;
}
void DamageTaken(Unit* done_by, uint32 &damage) void DamageTaken(Unit* done_by, uint32 &damage)
{ {
@@ -2137,9 +2147,11 @@ public:
void UpdateAI(const uint32 /*diff*/) void UpdateAI(const uint32 /*diff*/)
{ {
if (!UpdateVictim()) return; if (!UpdateVictim())
return;
if (me->getVictim()->GetTypeId() != TYPEID_PLAYER) return; // Only cast the below on players. if (me->getVictim()->GetTypeId() != TYPEID_PLAYER)
return; // Only cast the below on players.
if (!me->getVictim()->HasAura(SPELL_PARALYZE)) if (!me->getVictim()->HasAura(SPELL_PARALYZE))
{ {
@@ -2168,7 +2180,7 @@ public:
struct blade_of_azzinothAI : public NullCreatureAI struct blade_of_azzinothAI : public NullCreatureAI
{ {
blade_of_azzinothAI(Creature* c) : NullCreatureAI(c) {} blade_of_azzinothAI(Creature* creature) : NullCreatureAI(creature) {}
void SpellHit(Unit* /*caster*/, const SpellInfo* spell) void SpellHit(Unit* /*caster*/, const SpellInfo* spell)
{ {
@@ -197,8 +197,11 @@ public:
uint32 random = rand()%6; uint32 random = rand()%6;
float x = Coords[random].x; float x = Coords[random].x;
float y = Coords[random].y; float y = Coords[random].y;
Creature* Soul = me->SummonCreature(CREATURE_ENSLAVED_SOUL, x, y, me->GetPositionZ(), me->GetOrientation(), TEMPSUMMON_CORPSE_DESPAWN, 0); Creature* Soul = me->SummonCreature(CREATURE_ENSLAVED_SOUL, x, y, me->GetPositionZ(), me->GetOrientation(), TEMPSUMMON_CORPSE_DESPAWN, 0);
if (!Soul) return false; if (!Soul)
return false;
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{ {
CAST_AI(npc_enslaved_soul::npc_enslaved_soulAI, Soul->AI())->ReliquaryGUID = me->GetGUID(); CAST_AI(npc_enslaved_soul::npc_enslaved_soulAI, Soul->AI())->ReliquaryGUID = me->GetGUID();
@@ -121,7 +121,10 @@ public:
struct mob_ashtongue_channelerAI : public ScriptedAI struct mob_ashtongue_channelerAI : public ScriptedAI
{ {
mob_ashtongue_channelerAI(Creature* creature) : ScriptedAI(creature) {ShadeGUID = 0;} mob_ashtongue_channelerAI(Creature* creature) : ScriptedAI(creature)
{
ShadeGUID = 0;
}
uint64 ShadeGUID; uint64 ShadeGUID;
@@ -147,7 +150,10 @@ public:
struct mob_ashtongue_sorcererAI : public ScriptedAI struct mob_ashtongue_sorcererAI : public ScriptedAI
{ {
mob_ashtongue_sorcererAI(Creature* creature) : ScriptedAI(creature) {ShadeGUID = 0;} mob_ashtongue_sorcererAI(Creature* creature) : ScriptedAI(creature)
{
ShadeGUID = 0;
}
uint64 ShadeGUID; uint64 ShadeGUID;
uint32 CheckTimer; uint32 CheckTimer;
@@ -320,7 +326,8 @@ public:
void AttackStart(Unit* who) void AttackStart(Unit* who)
{ {
if (!who || IsBanished) return; if (!who || IsBanished)
return;
if (who->isTargetableForAttack() && who != me) if (who->isTargetableForAttack() && who != me)
DoStartMovement(who); DoStartMovement(who);
@@ -662,7 +669,8 @@ public:
me->CombatStart(Shade); me->CombatStart(Shade);
Shade->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE); Shade->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
Shade->SetTarget(me->GetGUID()); Shade->SetTarget(me->GetGUID());
if (player) Shade->AddThreat(player, 1.0f); if (player)
Shade->AddThreat(player, 1.0f);
DoZoneInCombat(Shade); DoZoneInCombat(Shade);
EventBegun = true; EventBegun = true;
} }
@@ -675,7 +683,9 @@ public:
switch (id) switch (id)
{ {
case 0: ++WayPointId; break; case 0:
++WayPointId;
break;
case 1: case 1:
if (Creature* Shade = Unit::GetCreature(*me, ShadeGUID)) if (Creature* Shade = Unit::GetCreature(*me, ShadeGUID))
@@ -878,7 +888,6 @@ public:
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
}; };
}; };
void AddSC_boss_shade_of_akama() void AddSC_boss_shade_of_akama()
@@ -65,7 +65,7 @@ public:
struct molten_flameAI : public NullCreatureAI struct molten_flameAI : public NullCreatureAI
{ {
molten_flameAI(Creature* c) : NullCreatureAI(c) {} molten_flameAI(Creature* creature) : NullCreatureAI(creature) {}
void InitializeAI() void InitializeAI()
{ {
@@ -165,8 +165,15 @@ public:
summons.DespawnAll(); summons.DespawnAll();
} }
void JustSummoned(Creature* summon) {summons.Summon(summon);} void JustSummoned(Creature* summon)
void SummonedCreatureDespawn(Creature* summon) {summons.Despawn(summon);} {
summons.Summon(summon);
}
void SummonedCreatureDespawn(Creature* summon)
{
summons.Despawn(summon);
}
Unit* CalculateHatefulStrikeTarget() Unit* CalculateHatefulStrikeTarget()
{ {
@@ -112,9 +112,11 @@ public:
return; return;
} }
void SetTeronGUID(uint64 guid){ TeronGUID = guid; } void SetTeronGUID(uint64 guid)
{
TeronGUID = guid;
}
}; };
}; };
class mob_shadowy_construct : public CreatureScript class mob_shadowy_construct : public CreatureScript
@@ -316,7 +318,8 @@ public:
void SetThreatList(Creature* Blossom) void SetThreatList(Creature* Blossom)
{ {
if (!Blossom) return; if (!Blossom)
return;
std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList(); std::list<HostileReference*>& m_threatlist = me->getThreatManager().getThreatList();
std::list<HostileReference*>::const_iterator i = m_threatlist.begin(); std::list<HostileReference*>::const_iterator i = m_threatlist.begin();
@@ -130,7 +130,9 @@ public:
bool RemoveImpalingSpine() bool RemoveImpalingSpine()
{ {
if (!SpineTargetGUID) return false; if (!SpineTargetGUID)
return false;
Unit* target = Unit::GetUnit(*me, SpineTargetGUID); Unit* target = Unit::GetUnit(*me, SpineTargetGUID);
if (target && target->HasAura(SPELL_IMPALING_SPINE)) if (target && target->HasAura(SPELL_IMPALING_SPINE))
target->RemoveAurasDueToSpell(SPELL_IMPALING_SPINE); target->RemoveAurasDueToSpell(SPELL_IMPALING_SPINE);
@@ -313,7 +313,8 @@ public:
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
if (!EventBegun) return; if (!EventBegun)
return;
if (EndEventTimer) if (EndEventTimer)
{ {
@@ -475,7 +476,7 @@ public:
struct boss_gathios_the_shattererAI : public boss_illidari_councilAI struct boss_gathios_the_shattererAI : public boss_illidari_councilAI
{ {
boss_gathios_the_shattererAI(Creature* c) : boss_illidari_councilAI(c) {} boss_gathios_the_shattererAI(Creature* creature) : boss_illidari_councilAI(creature) {}
uint32 ConsecrationTimer; uint32 ConsecrationTimer;
uint32 HammerOfJusticeTimer; uint32 HammerOfJusticeTimer;
@@ -602,7 +603,7 @@ public:
struct boss_high_nethermancer_zerevorAI : public boss_illidari_councilAI struct boss_high_nethermancer_zerevorAI : public boss_illidari_councilAI
{ {
boss_high_nethermancer_zerevorAI(Creature* c) : boss_illidari_councilAI(c) {} boss_high_nethermancer_zerevorAI(Creature* creature) : boss_illidari_councilAI(creature) {}
uint32 BlizzardTimer; uint32 BlizzardTimer;
uint32 FlamestrikeTimer; uint32 FlamestrikeTimer;
@@ -706,7 +707,7 @@ public:
struct boss_lady_malandeAI : public boss_illidari_councilAI struct boss_lady_malandeAI : public boss_illidari_councilAI
{ {
boss_lady_malandeAI(Creature* c) : boss_illidari_councilAI(c) {} boss_lady_malandeAI(Creature* creature) : boss_illidari_councilAI(creature) {}
uint32 EmpoweredSmiteTimer; uint32 EmpoweredSmiteTimer;
uint32 CircleOfHealingTimer; uint32 CircleOfHealingTimer;
@@ -784,7 +785,7 @@ public:
struct boss_veras_darkshadowAI : public boss_illidari_councilAI struct boss_veras_darkshadowAI : public boss_illidari_councilAI
{ {
boss_veras_darkshadowAI(Creature* c) : boss_illidari_councilAI(c) {} boss_veras_darkshadowAI(Creature* creature) : boss_illidari_councilAI(creature) {}
uint64 EnvenomTargetGUID; uint64 EnvenomTargetGUID;
@@ -118,7 +118,8 @@ public:
bool IsEncounterInProgress() const bool IsEncounterInProgress() const
{ {
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
if (m_auiEncounter[i] == IN_PROGRESS) return true; if (m_auiEncounter[i] == IN_PROGRESS)
return true;
return false; return false;
} }
@@ -112,7 +112,8 @@ public:
void EnterCombat(Unit* /*who*/) void EnterCombat(Unit* /*who*/)
{ {
if (!victimGUID) return; if (!victimGUID)
return;
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -383,13 +383,12 @@ public:
void MoveInLineOfSight(Unit* who) void MoveInLineOfSight(Unit* who)
{ {
if (!who || me->getVictim()) return; if (!who || me->getVictim())
return;
if (who->isInAccessiblePlaceFor(me) && me->IsValidAttackTarget(who) && me->IsWithinDistInMap(who, 45)) if (who->isInAccessiblePlaceFor(me) && me->IsValidAttackTarget(who) && me->IsWithinDistInMap(who, 45))
{
AttackStart(who); AttackStart(who);
} }
}
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {

Some files were not shown because too many files have changed in this diff Show More