*More of that cleanup you all know and love ;)

--HG--
branch : trunk
This commit is contained in:
maximius
2009-11-11 13:47:21 -08:00
parent 718fe5008e
commit 2874864bc0
266 changed files with 1092 additions and 1103 deletions
@@ -193,7 +193,7 @@ struct TRINITY_DLL_DECL boss_doomrelAI : public ScriptedAI
//Summon Voidwalkers //Summon Voidwalkers
if (!Voidwalkers && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 51) if (!Voidwalkers && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 51)
{ {
m_creature->CastSpell(m_creature->getVictim(), SPELL_SUMMON_VOIDWALKERS, true); DoCast(m_creature->getVictim(), SPELL_SUMMON_VOIDWALKERS, true);
Voidwalkers = true; Voidwalkers = true;
} }
@@ -45,7 +45,7 @@ struct TRINITY_DLL_DECL boss_mothersmolderwebAI : public ScriptedAI
void DamageTaken(Unit *done_by, uint32 &damage) void DamageTaken(Unit *done_by, uint32 &damage)
{ {
if (m_creature->GetHealth() <= damage) if (m_creature->GetHealth() <= damage)
m_creature->CastSpell(m_creature,SPELL_SUMMON_SPIRE_SPIDERLING,true); DoCast(m_creature, SPELL_SUMMON_SPIRE_SPIDERLING, true);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -41,12 +41,10 @@ struct TRINITY_DLL_DECL boss_shadowvoshAI : public ScriptedAI
Hex_Timer = 8000; Hex_Timer = 8000;
Cleave_Timer = 14000; Cleave_Timer = 14000;
//m_creature->CastSpell(m_creature,SPELL_ICEARMOR,true); //DoCast(m_creature, SPELL_ICEARMOR, true);
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who){}
{
}
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
@@ -386,7 +386,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
DoScriptText(SAY_AXE_TOSS1, m_creature); DoScriptText(SAY_AXE_TOSS1, m_creature);
//passive thrash aura //passive thrash aura
m_creature->CastSpell(m_creature, SPELL_THRASH_AURA, true); DoCast(m_creature, SPELL_THRASH_AURA, true);
//models //models
SetEquipmentSlots(false, EQUIP_ID_AXE, EQUIP_ID_AXE, EQUIP_NO_CHANGE); SetEquipmentSlots(false, EQUIP_ID_AXE, EQUIP_ID_AXE, EQUIP_NO_CHANGE);
@@ -201,7 +201,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
FlameWreathTarget[i] = (*itr)->GetGUID(); FlameWreathTarget[i] = (*itr)->GetGUID();
FWTargPosX[i] = (*itr)->GetPositionX(); FWTargPosX[i] = (*itr)->GetPositionX();
FWTargPosY[i] = (*itr)->GetPositionY(); FWTargPosY[i] = (*itr)->GetPositionY();
m_creature->CastSpell((*itr), SPELL_FLAME_WREATH, true); DoCast((*itr), SPELL_FLAME_WREATH, true);
++i; ++i;
} }
} }
@@ -255,9 +255,9 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
if (!DrinkInturrupted) if (!DrinkInturrupted)
{ {
m_creature->CastSpell(m_creature, SPELL_MASS_POLY, true); DoCast(m_creature, SPELL_MASS_POLY, true);
m_creature->CastSpell(m_creature, SPELL_CONJURE, false); DoCast(m_creature, SPELL_CONJURE, false);
m_creature->CastSpell(m_creature, SPELL_DRINK, false); DoCast(m_creature, SPELL_DRINK, false);
m_creature->SetStandState(UNIT_STAND_STATE_SIT); m_creature->SetStandState(UNIT_STAND_STATE_SIT);
DrinkInturruptTimer = 10000; DrinkInturruptTimer = 10000;
} }
@@ -270,7 +270,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
m_creature->RemoveAurasDueToSpell(SPELL_DRINK); m_creature->RemoveAurasDueToSpell(SPELL_DRINK);
m_creature->SetStandState(UNIT_STAND_STATE_STAND); m_creature->SetStandState(UNIT_STAND_STATE_STAND);
m_creature->SetPower(POWER_MANA, m_creature->GetMaxPower(POWER_MANA)-32000); m_creature->SetPower(POWER_MANA, m_creature->GetMaxPower(POWER_MANA)-32000);
m_creature->CastSpell(m_creature, SPELL_POTION, false); DoCast(m_creature, SPELL_POTION, false);
} }
//Drink Inturrupt Timer //Drink Inturrupt Timer
@@ -280,8 +280,8 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
else else
{ {
m_creature->SetStandState(UNIT_STAND_STATE_STAND); m_creature->SetStandState(UNIT_STAND_STATE_STAND);
m_creature->CastSpell(m_creature, SPELL_POTION, true); DoCast(m_creature, SPELL_POTION, true);
m_creature->CastSpell(m_creature, SPELL_AOE_PYROBLAST, false); DoCast(m_creature, SPELL_AOE_PYROBLAST, false);
DrinkInturrupted = true; DrinkInturrupted = true;
Drinking = false; Drinking = false;
} }
@@ -371,10 +371,10 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
case SUPER_AE: case SUPER_AE:
DoScriptText(RAND(SAY_EXPLOSION1,SAY_EXPLOSION2), m_creature); DoScriptText(RAND(SAY_EXPLOSION1,SAY_EXPLOSION2), m_creature);
m_creature->CastSpell(m_creature, SPELL_BLINK_CENTER, true); DoCast(m_creature, SPELL_BLINK_CENTER, true);
m_creature->CastSpell(m_creature, SPELL_PLAYERPULL, true); DoCast(m_creature, SPELL_PLAYERPULL, true);
m_creature->CastSpell(m_creature, SPELL_MASSSLOW, true); DoCast(m_creature, SPELL_MASSSLOW, true);
m_creature->CastSpell(m_creature, SPELL_AEXPLOSION, false); DoCast(m_creature, SPELL_AEXPLOSION, false);
break; break;
case SUPER_FLAME: case SUPER_FLAME:
@@ -159,7 +159,7 @@ struct TRINITY_DLL_DECL npc_barnesAI : public npc_escortAI
switch(i) switch(i)
{ {
case 0: case 0:
m_creature->CastSpell(m_creature, SPELL_TUXEDO, false); DoCast(m_creature, SPELL_TUXEDO, false);
pInstance->DoUseDoorOrButton(pInstance->GetData64(DATA_GO_STAGEDOORLEFT)); pInstance->DoUseDoorOrButton(pInstance->GetData64(DATA_GO_STAGEDOORLEFT));
break; break;
case 4: case 4:
@@ -546,7 +546,7 @@ struct TRINITY_DLL_DECL npc_image_of_medivhAI : public ScriptedAI
return 10000; return 10000;
case 10: case 10:
if (arca) if (arca)
m_creature->CastSpell(arca, SPELL_CONFLAGRATION_BLAST, false); DoCast(arca, SPELL_CONFLAGRATION_BLAST, false);
return 1000; return 1000;
case 11: case 11:
if (arca) if (arca)
@@ -466,7 +466,7 @@ struct TRINITY_DLL_DECL mob_felkael_phoenixAI : public ScriptedAI
{ {
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING); m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
m_creature->CastSpell(m_creature,SPELL_PHOENIX_BURN,true); DoCast(m_creature, SPELL_PHOENIX_BURN, true);
BurnTimer = 2000; BurnTimer = 2000;
Death_Timer = 3000; Death_Timer = 3000;
Rebirth = false; Rebirth = false;
@@ -138,11 +138,11 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI
if (Heroic) if (Heroic)
{ {
m_creature->CastSpell(m_creature,H_SPELL_SUMMON_PURE_ENERGY1,false); DoCast(m_creature, H_SPELL_SUMMON_PURE_ENERGY1, false);
m_creature->CastSpell(m_creature,H_SPELL_SUMMON_PURE_ENERGY2,false); DoCast(m_creature, H_SPELL_SUMMON_PURE_ENERGY2, false);
} }
else else
m_creature->CastSpell(m_creature,SPELL_SUMMON_PURE_ENERGY,false); DoCast(m_creature, SPELL_SUMMON_PURE_ENERGY, false);
//below are workaround summons, remove when summoning spells w/implicitTarget 73 implemented in Mangos //below are workaround summons, remove when summoning spells w/implicitTarget 73 implemented in Mangos
m_creature->SummonCreature(NPC_PURE_ENERGY, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0); m_creature->SummonCreature(NPC_PURE_ENERGY, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
@@ -104,11 +104,11 @@ struct TRINITY_DLL_DECL npc_kalecgosAI : public ScriptedAI
{ {
if (m_uiTransformTimer <= uiDiff) if (m_uiTransformTimer <= uiDiff)
{ {
m_creature->CastSpell(m_creature,SPELL_ORB_KILL_CREDIT,false); DoCast(m_creature, SPELL_ORB_KILL_CREDIT, false);
DoWorkaroundForQuestCredit(); DoWorkaroundForQuestCredit();
// Transform and update entry, now ready for quest/read gossip // Transform and update entry, now ready for quest/read gossip
m_creature->CastSpell(m_creature,SPELL_TRANSFORM_TO_KAEL,false); DoCast(m_creature, SPELL_TRANSFORM_TO_KAEL, false);
m_creature->UpdateEntry(NPC_KAEL); m_creature->UpdateEntry(NPC_KAEL);
m_uiTransformTimer = 0; m_uiTransformTimer = 0;
@@ -58,7 +58,7 @@ struct TRINITY_DLL_DECL boss_golemaggAI : public ScriptedAI
m_uiBuffTimer = 2.5*IN_MILISECONDS; m_uiBuffTimer = 2.5*IN_MILISECONDS;
m_bEnraged = false; m_bEnraged = false;
m_creature->CastSpell(m_creature, SPELL_MAGMASPLASH, true); DoCast(m_creature, SPELL_MAGMASPLASH, true);
} }
void JustDied(Unit* pKiller) void JustDied(Unit* pKiller)
@@ -45,7 +45,7 @@ struct TRINITY_DLL_DECL boss_magmadarAI : public ScriptedAI
Panic_Timer = 20000; Panic_Timer = 20000;
Lavabomb_Timer = 12000; Lavabomb_Timer = 12000;
m_creature->CastSpell(m_creature,SPELL_MAGMASPIT,true); DoCast(m_creature, SPELL_MAGMASPIT, true);
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
@@ -118,7 +118,7 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public ScriptedAI
HasSubmergedOnce = false; HasSubmergedOnce = false;
WasBanished = false; WasBanished = false;
m_creature->CastSpell(m_creature,SPELL_MELTWEAPON,true); DoCast(m_creature, SPELL_MELTWEAPON, true);
HasAura = true; HasAura = true;
} }
@@ -43,7 +43,7 @@ struct TRINITY_DLL_DECL instance_molten_core : public ScriptedInstance
instance_molten_core(Map* pMap) : ScriptedInstance(pMap) {Initialize();}; instance_molten_core(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
uint64 Lucifron, Magmadar, Gehennas, Garr, Geddon, Shazzrah, Sulfuron, Golemagg, Domo, Ragnaros, FlamewakerPriest; uint64 Lucifron, Magmadar, Gehennas, Garr, Geddon, Shazzrah, Sulfuron, Golemagg, Domo, Ragnaros, FlamewakerPriest;
uint64 RuneKoro, RuneZeth, RuneMazj, RuneTheri, RuneBlaz, RuneKress, RuneMohn, m_uiFirelordCacheGUID;; uint64 RuneKoro, RuneZeth, RuneMazj, RuneTheri, RuneBlaz, RuneKress, RuneMohn, m_uiFirelordCacheGUID;
//If all Bosses are dead. //If all Bosses are dead.
bool IsBossDied[9]; bool IsBossDied[9];
@@ -721,7 +721,7 @@ struct TRINITY_DLL_DECL npc_scarlet_ghoulAI : public ScriptedAI
{ {
// Ghouls should display their Birth Animation // Ghouls should display their Birth Animation
// Crawling out of the ground // Crawling out of the ground
//m_creature->CastSpell(m_creature,35177,true); //DoCast(m_creature, 35177, true);
//m_creature->MonsterSay("Mommy?",LANG_UNIVERSAL,0); //m_creature->MonsterSay("Mommy?",LANG_UNIVERSAL,0);
m_creature->SetReactState(REACT_DEFENSIVE); m_creature->SetReactState(REACT_DEFENSIVE);
} }
@@ -589,7 +589,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
m_creature->InterruptNonMeleeSpells(false); m_creature->InterruptNonMeleeSpells(false);
DoCast(m_creature, SPELL_IMMUNE, true); DoCast(m_creature, SPELL_IMMUNE, true);
DoCast(m_creature, SPELL_BODY_REGEN, true); DoCast(m_creature, SPELL_BODY_REGEN, true);
m_creature->CastSpell(Head, SPELL_FLYING_HEAD,true); DoCast(Head, SPELL_FLYING_HEAD, true);
DoCast(m_creature, SPELL_CONFUSE, false); //test DoCast(m_creature, SPELL_CONFUSE, false); //test
done_by->ProcDamageAndSpell(m_creature,PROC_FLAG_KILL,PROC_FLAG_KILLED,PROC_EX_NONE,0); done_by->ProcDamageAndSpell(m_creature,PROC_FLAG_KILL,PROC_FLAG_KILLED,PROC_EX_NONE,0);
whirlwind = urand(4000,8000); whirlwind = urand(4000,8000);
@@ -658,7 +658,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
if (conflagrate <= diff) if (conflagrate <= diff)
{ {
if (Unit *plr = SelectRandomPlayer(30.0f)) if (Unit *plr = SelectRandomPlayer(30.0f))
m_creature->CastSpell(plr,SPELL_CONFLAGRATION,false); DoCast(plr, SPELL_CONFLAGRATION, false);
conflagrate = urand(10000,16000); conflagrate = urand(10000,16000);
} else conflagrate -= diff; } else conflagrate -= diff;
break; break;
@@ -95,7 +95,7 @@ struct TRINITY_DLL_DECL boss_interrogator_vishasAI : public ScriptedAI
if (ShadowWordPain_Timer <= diff) if (ShadowWordPain_Timer <= diff)
{ {
DoCast(m_creature->getVictim(), SPELL_SHADOWWORDPAIN); DoCast(m_creature->getVictim(), SPELL_SHADOWWORDPAIN);
ShadowWordPain_Timer = 5000 + rand()%10000;; ShadowWordPain_Timer = 5000 + rand()%10000;
} else ShadowWordPain_Timer -= diff; } else ShadowWordPain_Timer -= diff;
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
@@ -34,9 +34,7 @@ struct TRINITY_DLL_DECL boss_death_knight_darkreaverAI : public ScriptedAI
void DamageTaken(Unit *done_by, uint32 &damage) void DamageTaken(Unit *done_by, uint32 &damage)
{ {
if (m_creature->GetHealth() <= damage) if (m_creature->GetHealth() <= damage)
{ DoCast(m_creature, 23261, true); //Summon Darkreaver's Fallen Charger
m_creature->CastSpell(m_creature,23261,true); //Summon Darkreaver's Fallen Charger
}
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
@@ -50,12 +50,10 @@ struct TRINITY_DLL_DECL boss_rasfrostAI : public ScriptedAI
FrostVolley_Timer = 24000; FrostVolley_Timer = 24000;
Fear_Timer = 45000; Fear_Timer = 45000;
m_creature->CastSpell(m_creature,SPELL_ICEARMOR,true); DoCast(m_creature, SPELL_ICEARMOR, true);
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who){}
{
}
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
@@ -72,9 +70,8 @@ struct TRINITY_DLL_DECL boss_rasfrostAI : public ScriptedAI
//Frostbolt_Timer //Frostbolt_Timer
if (Frostbolt_Timer <= diff) if (Frostbolt_Timer <= diff)
{ {
Unit *pTarget = NULL; if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0); DoCast(pTarget, SPELL_FROSTBOLT);
if (pTarget) DoCast(pTarget,SPELL_FROSTBOLT);
Frostbolt_Timer = 8000; Frostbolt_Timer = 8000;
} else Frostbolt_Timer -= diff; } else Frostbolt_Timer -= diff;
@@ -85,7 +85,7 @@ struct TRINITY_DLL_DECL boss_magistrate_barthilasAI : public ScriptedAI
return; return;
++AngerCount; ++AngerCount;
m_creature->CastSpell(m_creature,SPELL_FURIOUS_ANGER,false); DoCast(m_creature, SPELL_FURIOUS_ANGER, false);
} else FuriousAnger_Timer -= diff; } else FuriousAnger_Timer -= diff;
//DrainingBlow //DrainingBlow
@@ -230,7 +230,7 @@ struct TRINITY_DLL_DECL mobs_spectral_ghostly_citizenAI : public ScriptedAI
break; break;
case TEXTEMOTE_RUDE: case TEXTEMOTE_RUDE:
if (m_creature->IsWithinDistInMap(pPlayer, 5)) if (m_creature->IsWithinDistInMap(pPlayer, 5))
m_creature->CastSpell(pPlayer,SPELL_SLAP,false); DoCast(pPlayer, SPELL_SLAP, false);
else else
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_RUDE); m_creature->HandleEmoteCommand(EMOTE_ONESHOT_RUDE);
break; break;
@@ -104,7 +104,7 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true); DoCast(m_creature, SPELL_DUAL_WIELD, true);
if (pInstance) if (pInstance)
pInstance->SetData(DATA_BRUTALLUS_EVENT, NOT_STARTED); pInstance->SetData(DATA_BRUTALLUS_EVENT, NOT_STARTED);
@@ -174,8 +174,8 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
{ {
m_creature->setActive(true); m_creature->setActive(true);
DoZoneInCombat(); DoZoneInCombat();
m_creature->CastSpell(m_creature, AURA_SUNWELL_RADIANCE, true); DoCast(m_creature, AURA_SUNWELL_RADIANCE, true);
m_creature->CastSpell(m_creature, AURA_NOXIOUS_FUMES, true); DoCast(m_creature, AURA_NOXIOUS_FUMES, true);
EnterPhase(PHASE_GROUND); EnterPhase(PHASE_GROUND);
if (pInstance) if (pInstance)
@@ -311,7 +311,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
{ {
Vapor->AI()->AttackStart(pTarget); Vapor->AI()->AttackStart(pTarget);
m_creature->InterruptNonMeleeSpells(false); m_creature->InterruptNonMeleeSpells(false);
m_creature->CastSpell(Vapor, SPELL_VAPOR_CHANNEL, false); // core bug DoCast(Vapor, SPELL_VAPOR_CHANNEL, false); // core bug
Vapor->CastSpell(Vapor, SPELL_VAPOR_TRIGGER, true); Vapor->CastSpell(Vapor, SPELL_VAPOR_TRIGGER, true);
} }
} }
@@ -325,7 +325,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
case 3: { case 3: {
DespawnSummons(MOB_VAPOR_TRAIL); DespawnSummons(MOB_VAPOR_TRAIL);
error_log("Summon Vapor case3"); error_log("Summon Vapor case3");
//m_creature->CastSpell(m_creature, SPELL_VAPOR_SELECT); need core support //DoCast(m_creature, SPELL_VAPOR_SELECT); need core support
Unit *pTarget; Unit *pTarget;
pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 150, true); pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 150, true);
if (!pTarget) pTarget = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_PLAYER_GUID) : 0); if (!pTarget) pTarget = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_PLAYER_GUID) : 0);
@@ -337,7 +337,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
{ {
Vapor->AI()->AttackStart(pTarget); Vapor->AI()->AttackStart(pTarget);
m_creature->InterruptNonMeleeSpells(false); m_creature->InterruptNonMeleeSpells(false);
m_creature->CastSpell(Vapor, SPELL_VAPOR_CHANNEL, false); // core bug DoCast(Vapor, SPELL_VAPOR_CHANNEL, false); // core bug
Vapor->CastSpell(Vapor, SPELL_VAPOR_TRIGGER, true); Vapor->CastSpell(Vapor, SPELL_VAPOR_TRIGGER, true);
} }
} }
@@ -377,7 +377,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
Timer[EVENT_FLIGHT_SEQUENCE] = 10000; Timer[EVENT_FLIGHT_SEQUENCE] = 10000;
break; break;
case 7: case 7:
m_creature->CastSpell(m_creature, SPELL_FOG_BREATH, true); DoCast(m_creature, SPELL_FOG_BREATH, true);
{ {
float x, y, z; float x, y, z;
m_creature->GetPosition(x, y, z); m_creature->GetPosition(x, y, z);
@@ -451,26 +451,26 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
{ {
case EVENT_BERSERK: case EVENT_BERSERK:
DoScriptText(YELL_BERSERK, m_creature); DoScriptText(YELL_BERSERK, m_creature);
m_creature->CastSpell(m_creature, SPELL_BERSERK, true); DoCast(m_creature, SPELL_BERSERK, true);
Timer[EVENT_BERSERK] = 10000; Timer[EVENT_BERSERK] = 10000;
break; break;
case EVENT_CLEAVE: case EVENT_CLEAVE:
m_creature->CastSpell(m_creature->getVictim(), SPELL_CLEAVE, false); DoCast(m_creature->getVictim(), SPELL_CLEAVE, false);
Timer[EVENT_CLEAVE] = 5000 + rand()%5 * 1000; Timer[EVENT_CLEAVE] = urand(5000,10000);
break; break;
case EVENT_CORROSION: case EVENT_CORROSION:
m_creature->CastSpell(m_creature->getVictim(), SPELL_CORROSION, false); DoCast(m_creature->getVictim(), SPELL_CORROSION, false);
Timer[EVENT_CORROSION] = 20000 + rand()%10 * 1000; Timer[EVENT_CORROSION] = urand(20000,30000);
break; break;
case EVENT_GAS_NOVA: case EVENT_GAS_NOVA:
m_creature->CastSpell(m_creature, SPELL_GAS_NOVA, false); DoCast(m_creature, SPELL_GAS_NOVA, false);
Timer[EVENT_GAS_NOVA] = 20000 + rand()%5 * 1000; Timer[EVENT_GAS_NOVA] = urand(20000,25000);
break; break;
case EVENT_ENCAPSULATE: case EVENT_ENCAPSULATE:
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 150, true)) if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 150, true))
{ {
m_creature->CastSpell(pTarget, SPELL_ENCAPSULATE_CHANNEL, false); DoCast(pTarget, SPELL_ENCAPSULATE_CHANNEL, false);
Timer[EVENT_ENCAPSULATE] = 25000 + rand()%5 * 1000; Timer[EVENT_ENCAPSULATE] = urand(25000,30000);
} }
break; break;
case EVENT_FLIGHT: case EVENT_FLIGHT:
@@ -488,7 +488,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
{ {
case EVENT_BERSERK: case EVENT_BERSERK:
DoScriptText(YELL_BERSERK, m_creature); DoScriptText(YELL_BERSERK, m_creature);
m_creature->CastSpell(m_creature, SPELL_BERSERK, true); DoCast(m_creature, SPELL_BERSERK, true);
Timer[EVENT_BERSERK] = 0; Timer[EVENT_BERSERK] = 0;
break; break;
case EVENT_FLIGHT_SEQUENCE: case EVENT_FLIGHT_SEQUENCE:
@@ -560,12 +560,13 @@ struct TRINITY_DLL_DECL mob_felmyst_vaporAI : public ScriptedAI
void EnterCombat(Unit* who) void EnterCombat(Unit* who)
{ {
DoZoneInCombat(); DoZoneInCombat();
//m_creature->CastSpell(m_creature, SPELL_VAPOR_FORCE, true); core bug //DoCast(m_creature, SPELL_VAPOR_FORCE, true); core bug
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
if (!m_creature->getVictim()) if (!m_creature->getVictim())
AttackStart(SelectUnit(SELECT_TARGET_RANDOM, 0)); if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
AttackStart(pTarget);
} }
}; };
@@ -574,7 +575,7 @@ struct TRINITY_DLL_DECL mob_felmyst_trailAI : public ScriptedAI
mob_felmyst_trailAI(Creature *c) : ScriptedAI(c) mob_felmyst_trailAI(Creature *c) : ScriptedAI(c)
{ {
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
m_creature->CastSpell(m_creature, SPELL_TRAIL_TRIGGER, true); DoCast(m_creature, SPELL_TRAIL_TRIGGER, true);
m_creature->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->GetGUID()); m_creature->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->GetGUID());
m_creature->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 0.01); // core bug m_creature->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 0.01); // core bug
} }
@@ -604,7 +604,7 @@ struct TRINITY_DLL_DECL boss_kiljaedenAI : public Scripted_NoMovementAI
case TIMER_SOUL_FLAY: case TIMER_SOUL_FLAY:
if (!m_creature->IsNonMeleeSpellCasted(false)) if (!m_creature->IsNonMeleeSpellCasted(false))
{ {
m_creature->CastSpell(m_creature->getVictim(), SPELL_SOUL_FLAY, false); DoCast(m_creature->getVictim(), SPELL_SOUL_FLAY, false);
m_creature->getVictim()->CastSpell(m_creature->getVictim(), SPELL_SOUL_FLAY_SLOW, true); m_creature->getVictim()->CastSpell(m_creature->getVictim(), SPELL_SOUL_FLAY_SLOW, true);
Timer[TIMER_SOUL_FLAY] = 3500; Timer[TIMER_SOUL_FLAY] = 3500;
} }
@@ -107,10 +107,10 @@ struct TRINITY_DLL_DECL npc_calvin_montagueAI : public ScriptedAI
++m_uiPhase; ++m_uiPhase;
break; break;
case 2: case 2:
if (Unit* pUnit = Unit::GetUnit(*m_creature, m_uiPlayerGUID)) if (Player *pPlayer = Unit::GetPlayer(m_uiPlayerGUID))
CAST_PLR(pUnit)->AreaExploredOrEventHappens(QUEST_590); pPlayer->AreaExploredOrEventHappens(QUEST_590);
m_creature->CastSpell(m_creature,SPELL_DRINK,true); DoCast(m_creature, SPELL_DRINK, true);
++m_uiPhase; ++m_uiPhase;
break; break;
case 3: case 3:
@@ -132,9 +132,9 @@ CreatureAI* GetAI_npc_calvin_montague(Creature* pCreature)
return new npc_calvin_montagueAI (pCreature); return new npc_calvin_montagueAI (pCreature);
} }
bool QuestAccept_npc_calvin_montague(Player* pPlayer, Creature* pCreature, Quest const* quest) bool QuestAccept_npc_calvin_montague(Player* pPlayer, Creature* pCreature, Quest const* pQuest)
{ {
if (quest->GetQuestId() == QUEST_590) if (pQuest->GetQuestId() == QUEST_590)
{ {
pCreature->setFaction(FACTION_HOSTILE); pCreature->setFaction(FACTION_HOSTILE);
pCreature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); pCreature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
@@ -58,7 +58,7 @@ struct TRINITY_DLL_DECL boss_ironayaAI : public ScriptedAI
//If we are <50% hp do knockaway ONCE //If we are <50% hp do knockaway ONCE
if (!hasCastedKnockaway && m_creature->GetHealth()*2 < m_creature->GetMaxHealth()) if (!hasCastedKnockaway && m_creature->GetHealth()*2 < m_creature->GetMaxHealth())
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_KNOCKAWAY, true); DoCast(m_creature->getVictim(), SPELL_KNOCKAWAY, true);
// current aggro target is knocked away pick new target // current aggro target is knocked away pick new target
Unit* Target = SelectUnit(SELECT_TARGET_TOPAGGRO, 0); Unit* Target = SelectUnit(SELECT_TARGET_TOPAGGRO, 0);
@@ -60,7 +60,7 @@ struct TRINITY_DLL_DECL mob_jadespine_basiliskAI : public ScriptedAI
{ {
//Cast //Cast
// DoCast(m_creature->getVictim(), SPELL_CSLUMBER); // DoCast(m_creature->getVictim(), SPELL_CSLUMBER);
m_creature->CastSpell(m_creature->getVictim(),SPELL_CSLUMBER, true); DoCast(m_creature->getVictim(), SPELL_CSLUMBER, true);
//Stop attacking target thast asleep and pick new target //Stop attacking target thast asleep and pick new target
Cslumber_Timer = 28000; Cslumber_Timer = 28000;
@@ -68,7 +68,7 @@ struct TRINITY_DLL_DECL mob_jadespine_basiliskAI : public ScriptedAI
Unit* Target = SelectUnit(SELECT_TARGET_TOPAGGRO, 0); Unit* Target = SelectUnit(SELECT_TARGET_TOPAGGRO, 0);
if (!Target || Target == m_creature->getVictim()) if (!Target || Target == m_creature->getVictim())
Target = SelectUnit(SELECT_TARGET_RANDOM, 0); Target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
if (Target) if (Target)
m_creature->TauntApply(Target); m_creature->TauntApply(Target);
@@ -76,7 +76,7 @@ struct TRINITY_DLL_DECL npc_tapoke_slim_jahnAI : public npc_escortAI
if (HasEscortState(STATE_ESCORT_ESCORTING) && !m_bFriendSummoned && pPlayer) if (HasEscortState(STATE_ESCORT_ESCORTING) && !m_bFriendSummoned && pPlayer)
{ {
for (uint8 i = 0; i < 3; ++i) for (uint8 i = 0; i < 3; ++i)
m_creature->CastSpell(m_creature, SPELL_CALL_FRIENDS, true); DoCast(m_creature, SPELL_CALL_FRIENDS, true);
m_bFriendSummoned = true; m_bFriendSummoned = true;
} }
@@ -266,7 +266,7 @@ struct TRINITY_DLL_DECL boss_akilzonAI : public ScriptedAI
{ {
m_creature->MonsterYell(SAY_ONENRAGE, LANG_UNIVERSAL, NULL); m_creature->MonsterYell(SAY_ONENRAGE, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_ONENRAGE); DoPlaySoundToSet(m_creature, SOUND_ONENRAGE);
m_creature->CastSpell(m_creature, SPELL_BERSERK, true); DoCast(m_creature, SPELL_BERSERK, true);
Enrage_Timer = 600000; Enrage_Timer = 600000;
} else Enrage_Timer -= diff; } else Enrage_Timer -= diff;
@@ -275,7 +275,7 @@ struct TRINITY_DLL_DECL boss_akilzonAI : public ScriptedAI
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1); Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);
if (!pTarget) pTarget = m_creature->getVictim(); if (!pTarget) pTarget = m_creature->getVictim();
TargetGUID = pTarget->GetGUID(); TargetGUID = pTarget->GetGUID();
m_creature->CastSpell(pTarget, SPELL_STATIC_DISRUPTION, false); DoCast(pTarget, SPELL_STATIC_DISRUPTION, false);
m_creature->SetInFront(m_creature->getVictim()); m_creature->SetInFront(m_creature->getVictim());
StaticDisruption_Timer = (10+rand()%8)*1000; // < 20s StaticDisruption_Timer = (10+rand()%8)*1000; // < 20s
@@ -311,7 +311,7 @@ struct TRINITY_DLL_DECL boss_akilzonAI : public ScriptedAI
return; return;
} }
pTarget->CastSpell(pTarget, 44007, true);//cloud visual pTarget->CastSpell(pTarget, 44007, true);//cloud visual
m_creature->CastSpell(pTarget, SPELL_ELECTRICAL_STORM, false);//storm cyclon + visual DoCast(pTarget, SPELL_ELECTRICAL_STORM, false);//storm cyclon + visual
float x,y,z; float x,y,z;
pTarget->GetPosition(x,y,z); pTarget->GetPosition(x,y,z);
if (pTarget) if (pTarget)
@@ -399,7 +399,7 @@ struct TRINITY_DLL_DECL mob_soaring_eagleAI : public ScriptedAI
if (TargetGUID) if (TargetGUID)
{ {
if (Unit *pTarget = Unit::GetUnit(*m_creature, TargetGUID)) if (Unit *pTarget = Unit::GetUnit(*m_creature, TargetGUID))
m_creature->CastSpell(pTarget, SPELL_EAGLE_SWOOP, true); DoCast(pTarget, SPELL_EAGLE_SWOOP, true);
TargetGUID = 0; TargetGUID = 0;
m_creature->SetSpeed(MOVE_RUN, 1.2f); m_creature->SetSpeed(MOVE_RUN, 1.2f);
EagleSwoop_Timer = 5000 + rand()%5000; EagleSwoop_Timer = 5000 + rand()%5000;
@@ -155,15 +155,12 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
case PHASE_ENRAGE: case PHASE_ENRAGE:
if (Phase == PHASE_MERGE) if (Phase == PHASE_MERGE)
{ {
m_creature->CastSpell(m_creature, SPELL_TRANSFORM_MERGE, true); DoCast(m_creature, SPELL_TRANSFORM_MERGE, true);
m_creature->Attack(m_creature->getVictim(), true); m_creature->Attack(m_creature->getVictim(), true);
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
} }
if (Unit *Lynx = Unit::GetUnit(*m_creature, LynxGUID)) if (Creature *Lynx = Unit::GetCreature(*m_creature, LynxGUID))
{ Lynx->DisappearAndDie();
Lynx->SetVisibility(VISIBILITY_OFF);
Lynx->setDeathState(JUST_DIED);
}
m_creature->SetMaxHealth(600000); m_creature->SetMaxHealth(600000);
m_creature->SetHealth(600000 - 150000 * TransformCount); m_creature->SetHealth(600000 - 150000 * TransformCount);
FrenzyTimer = 16000; FrenzyTimer = 16000;
@@ -174,7 +171,7 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
case PHASE_SPLIT: case PHASE_SPLIT:
m_creature->MonsterYell(YELL_SPLIT, LANG_UNIVERSAL, NULL); m_creature->MonsterYell(YELL_SPLIT, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_SPLIT); DoPlaySoundToSet(m_creature, SOUND_SPLIT);
m_creature->CastSpell(m_creature, SPELL_TRANSFORM_SPLIT, true); DoCast(m_creature, SPELL_TRANSFORM_SPLIT, true);
break; break;
case PHASE_HUMAN: case PHASE_HUMAN:
//DoCast(m_creature, SPELL_SUMMON_LYNX, true); //DoCast(m_creature, SPELL_SUMMON_LYNX, true);
@@ -221,8 +218,8 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
if (SaberlashTimer <= diff) if (SaberlashTimer <= diff)
{ {
// A tank with more than 490 defense skills should receive no critical hit // A tank with more than 490 defense skills should receive no critical hit
//m_creature->CastSpell(m_creature, 41296, true); //DoCast(m_creature, 41296, true);
m_creature->CastSpell(m_creature->getVictim(), SPELL_SABER_LASH, true); DoCast(m_creature->getVictim(), SPELL_SABER_LASH, true);
//m_creature->RemoveAurasDueToSpell(41296); //m_creature->RemoveAurasDueToSpell(41296);
SaberlashTimer = 30000; SaberlashTimer = 30000;
} else SaberlashTimer -= diff; } else SaberlashTimer -= diff;
@@ -230,7 +227,7 @@ struct TRINITY_DLL_DECL boss_halazziAI : public ScriptedAI
if (FrenzyTimer <= diff) if (FrenzyTimer <= diff)
{ {
DoCast(m_creature, SPELL_FRENZY); DoCast(m_creature, SPELL_FRENZY);
FrenzyTimer = (10+rand()%5)*1000; FrenzyTimer = urand(10000,15000);
} else FrenzyTimer -= diff; } else FrenzyTimer -= diff;
if (Phase == PHASE_LYNX) if (Phase == PHASE_LYNX)
@@ -350,17 +350,16 @@ struct TRINITY_DLL_DECL boss_hex_lord_malacrassAI : public ScriptedAI
if (CheckAddState_Timer <= diff) if (CheckAddState_Timer <= diff)
{ {
for (uint8 i = 0; i < 4; ++i) for (uint8 i = 0; i < 4; ++i)
{ if (Creature *pTemp = Unit::GetCreature(*m_creature, AddGUID[i]))
Unit* Temp = Unit::GetUnit((*m_creature),AddGUID[i]); if (pTemp->isAlive() && !pTemp->getVictim())
if (Temp && Temp->isAlive() && !Temp->getVictim()) pTemp->AI()->AttackStart(m_creature->getVictim());
CAST_CRE(Temp)->AI()->AttackStart(m_creature->getVictim());
}
CheckAddState_Timer = 5000; CheckAddState_Timer = 5000;
} else CheckAddState_Timer -= diff; } else CheckAddState_Timer -= diff;
if (DrainPower_Timer <= diff) if (DrainPower_Timer <= diff)
{ {
m_creature->CastSpell(m_creature, SPELL_DRAIN_POWER, true); DoCast(m_creature, SPELL_DRAIN_POWER, true);
m_creature->MonsterYell(YELL_DRAIN_POWER, LANG_UNIVERSAL, NULL); m_creature->MonsterYell(YELL_DRAIN_POWER, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_YELL_DRAIN_POWER); DoPlaySoundToSet(m_creature, SOUND_YELL_DRAIN_POWER);
DrainPower_Timer = urand(40000,55000); // must cast in 60 sec, or buff/debuff will disappear DrainPower_Timer = urand(40000,55000); // must cast in 60 sec, or buff/debuff will disappear
@@ -372,7 +371,7 @@ struct TRINITY_DLL_DECL boss_hex_lord_malacrassAI : public ScriptedAI
SpiritBolts_Timer = 13000; // cast drain power first SpiritBolts_Timer = 13000; // cast drain power first
else else
{ {
m_creature->CastSpell(m_creature, SPELL_SPIRIT_BOLTS, false); DoCast(m_creature, SPELL_SPIRIT_BOLTS, false);
m_creature->MonsterYell(YELL_SPIRIT_BOLTS, LANG_UNIVERSAL, NULL); m_creature->MonsterYell(YELL_SPIRIT_BOLTS, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_YELL_SPIRIT_BOLTS); DoPlaySoundToSet(m_creature, SOUND_YELL_SPIRIT_BOLTS);
SpiritBolts_Timer = 40000; SpiritBolts_Timer = 40000;
@@ -397,7 +396,7 @@ struct TRINITY_DLL_DECL boss_hex_lord_malacrassAI : public ScriptedAI
trigger->CastSpell(pTarget, SPELL_SIPHON_SOUL, true); trigger->CastSpell(pTarget, SPELL_SIPHON_SOUL, true);
trigger->GetMotionMaster()->MoveChase(m_creature); trigger->GetMotionMaster()->MoveChase(m_creature);
//m_creature->CastSpell(pTarget, SPELL_SIPHON_SOUL, true); //DoCast(pTarget, SPELL_SIPHON_SOUL, true);
//m_creature->SetUInt64Value(UNIT_FIELD_CHANNEL_OBJECT, pTarget->GetGUID()); //m_creature->SetUInt64Value(UNIT_FIELD_CHANNEL_OBJECT, pTarget->GetGUID());
//m_creature->SetUInt32Value(UNIT_CHANNEL_SPELL, SPELL_SIPHON_SOUL); //m_creature->SetUInt32Value(UNIT_CHANNEL_SPELL, SPELL_SIPHON_SOUL);
@@ -455,7 +454,7 @@ struct TRINITY_DLL_DECL boss_hex_lord_malacrassAI : public ScriptedAI
break; break;
} }
if (pTarget) if (pTarget)
m_creature->CastSpell(pTarget, PlayerAbility[PlayerClass][random].spell, false); DoCast(pTarget, PlayerAbility[PlayerClass][random].spell, false);
} }
}; };
@@ -489,14 +488,14 @@ struct TRINITY_DLL_DECL boss_thurgAI : public boss_hexlord_addAI
if (!templist.empty()) if (!templist.empty())
{ {
if (Unit *pTarget = *(templist.begin())) if (Unit *pTarget = *(templist.begin()))
m_creature->CastSpell(pTarget, SPELL_BLOODLUST, false); DoCast(pTarget, SPELL_BLOODLUST, false);
} }
bloodlust_timer = 12000; bloodlust_timer = 12000;
} else bloodlust_timer -= diff; } else bloodlust_timer -= diff;
if (cleave_timer <= diff) if (cleave_timer <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_CLEAVE, false); DoCast(m_creature->getVictim(), SPELL_CLEAVE, false);
cleave_timer = 12000; //3 sec cast cleave_timer = 12000; //3 sec cast
} else cleave_timer -= diff; } else cleave_timer -= diff;
@@ -551,7 +550,7 @@ struct TRINITY_DLL_DECL boss_alyson_antilleAI : public boss_hexlord_addAI
if (pTarget) if (pTarget)
{ {
if (pTarget->IsWithinDistInMap(m_creature, 50)) if (pTarget->IsWithinDistInMap(m_creature, 50))
m_creature->CastSpell(pTarget,SPELL_FLASH_HEAL, false); DoCast(pTarget, SPELL_FLASH_HEAL, false);
else else
{ {
// bugged // bugged
@@ -564,10 +563,10 @@ struct TRINITY_DLL_DECL boss_alyson_antilleAI : public boss_hexlord_addAI
if (urand(0,1)) if (urand(0,1))
{ {
if (pTarget = DoSelectLowestHpFriendly(50, 0)) if (pTarget = DoSelectLowestHpFriendly(50, 0))
m_creature->CastSpell(pTarget, SPELL_DISPEL_MAGIC, false); DoCast(pTarget, SPELL_DISPEL_MAGIC, false);
} }
else if (pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) else if (pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
m_creature->CastSpell(pTarget, SPELL_DISPEL_MAGIC, false); DoCast(pTarget, SPELL_DISPEL_MAGIC, false);
} }
flashheal_timer = 2500; flashheal_timer = 2500;
} else flashheal_timer -= diff; } else flashheal_timer -= diff;
@@ -578,7 +577,7 @@ struct TRINITY_DLL_DECL boss_alyson_antilleAI : public boss_hexlord_addAI
{ {
Unit *pTarget = SelectTarget(); Unit *pTarget = SelectTarget();
m_creature->CastSpell(pTarget, SPELL_DISPEL_MAGIC, false); DoCast(pTarget, SPELL_DISPEL_MAGIC, false);
} }
else else
m_creature->CastSpell(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_DISPEL_MAGIC, false); m_creature->CastSpell(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_DISPEL_MAGIC, false);
@@ -626,7 +625,7 @@ struct TRINITY_DLL_DECL boss_gazakrothAI : public boss_hexlord_addAI
if (firebolt_timer <= diff) if (firebolt_timer <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_FIREBOLT, false); DoCast(m_creature->getVictim(), SPELL_FIREBOLT, false);
firebolt_timer = 700; firebolt_timer = 700;
} else firebolt_timer -= diff; } else firebolt_timer -= diff;
@@ -659,13 +658,13 @@ struct TRINITY_DLL_DECL boss_lord_raadanAI : public boss_hexlord_addAI
if (thunderclap_timer <= diff) if (thunderclap_timer <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_THUNDERCLAP, false); DoCast(m_creature->getVictim(), SPELL_THUNDERCLAP, false);
thunderclap_timer = 12000; thunderclap_timer = 12000;
} else thunderclap_timer -= diff; } else thunderclap_timer -= diff;
if (flamebreath_timer <= diff) if (flamebreath_timer <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_FLAME_BREATH, false); DoCast(m_creature->getVictim(), SPELL_FLAME_BREATH, false);
flamebreath_timer = 12000; flamebreath_timer = 12000;
} else flamebreath_timer -= diff; } else flamebreath_timer -= diff;
@@ -693,7 +692,7 @@ struct TRINITY_DLL_DECL boss_darkheartAI : public boss_hexlord_addAI
if (psychicwail_timer <= diff) if (psychicwail_timer <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_PSYCHIC_WAIL, false); DoCast(m_creature->getVictim(), SPELL_PSYCHIC_WAIL, false);
psychicwail_timer = 12000; psychicwail_timer = 12000;
} else psychicwail_timer -= diff; } else psychicwail_timer -= diff;
@@ -738,7 +737,7 @@ struct TRINITY_DLL_DECL boss_slitherAI : public boss_hexlord_addAI
if (venomspit_timer <= diff) if (venomspit_timer <= diff)
{ {
if (Unit* victim = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) if (Unit* victim = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
m_creature->CastSpell(victim,SPELL_VENOM_SPIT, false); DoCast(victim, SPELL_VENOM_SPIT, false);
venomspit_timer = 2500; venomspit_timer = 2500;
} else venomspit_timer -= diff; } else venomspit_timer -= diff;
@@ -802,13 +801,13 @@ struct TRINITY_DLL_DECL boss_koraggAI : public boss_hexlord_addAI
if (mightyblow_timer <= diff) if (mightyblow_timer <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_MIGHTY_BLOW, false); DoCast(m_creature->getVictim(), SPELL_MIGHTY_BLOW, false);
mightyblow_timer = 12000; mightyblow_timer = 12000;
} }
if (coldstare_timer <= diff) if (coldstare_timer <= diff)
{ {
if (Unit* victim = SelectUnit(SELECT_TARGET_RANDOM, 0)) if (Unit* victim = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
m_creature->CastSpell(victim,SPELL_COLD_STARE, false); DoCast(victim, SPELL_COLD_STARE, false);
coldstare_timer = 12000; coldstare_timer = 12000;
} }
@@ -343,14 +343,14 @@ struct TRINITY_DLL_DECL boss_janalaiAI : public ScriptedAI
{ {
if (!enraged) if (!enraged)
{ {
m_creature->CastSpell(m_creature, SPELL_ENRAGE, true); DoCast(m_creature, SPELL_ENRAGE, true);
enraged = true; enraged = true;
EnrageTimer = 300000; EnrageTimer = 300000;
} }
else else
{ {
DoScriptText(SAY_BERSERK, m_creature); DoScriptText(SAY_BERSERK, m_creature);
m_creature->CastSpell(m_creature, SPELL_BERSERK, true); DoCast(m_creature, SPELL_BERSERK, true);
EnrageTimer = 300000; EnrageTimer = 300000;
} }
} else EnrageTimer -= diff; } else EnrageTimer -= diff;
@@ -363,9 +363,9 @@ struct TRINITY_DLL_DECL boss_janalaiAI : public ScriptedAI
m_creature->GetMotionMaster()->Clear(); m_creature->GetMotionMaster()->Clear();
DoTeleportTo(JanalainPos[0][0],JanalainPos[0][1],JanalainPos[0][2]); DoTeleportTo(JanalainPos[0][0],JanalainPos[0][1],JanalainPos[0][2]);
m_creature->StopMoving(); m_creature->StopMoving();
m_creature->CastSpell(m_creature, SPELL_FIRE_BOMB_CHANNEL, false); DoCast(m_creature, SPELL_FIRE_BOMB_CHANNEL, false);
//DoTeleportPlayer(m_creature, JanalainPos[0][0], JanalainPos[0][1],JanalainPos[0][2], 0); //DoTeleportPlayer(m_creature, JanalainPos[0][0], JanalainPos[0][1],JanalainPos[0][2], 0);
//m_creature->CastSpell(m_creature, SPELL_TELE_TO_CENTER, true); //DoCast(m_creature, SPELL_TELE_TO_CENTER, true);
FireWall(); FireWall();
SpawnBombs(); SpawnBombs();
@@ -380,7 +380,7 @@ struct TRINITY_DLL_DECL boss_janalaiAI : public ScriptedAI
if (Player* i_pl = i->getSource()) if (Player* i_pl = i->getSource())
if (i_pl->isAlive()) if (i_pl->isAlive())
DoTeleportPlayer(i_pl, JanalainPos[0][0]-5+rand()%10, JanalainPos[0][1]-5+rand()%10, JanalainPos[0][2], 0); DoTeleportPlayer(i_pl, JanalainPos[0][0]-5+rand()%10, JanalainPos[0][1]-5+rand()%10, JanalainPos[0][2], 0);
//m_creature->CastSpell(Temp, SPELL_SUMMON_PLAYERS, true); // core bug, spell does not work if too far //DoCast(Temp, SPELL_SUMMON_PLAYERS, true) // core bug, spell does not work if too far
return; return;
} else BombTimer -= diff; } else BombTimer -= diff;
@@ -394,7 +394,7 @@ struct TRINITY_DLL_DECL boss_janalaiAI : public ScriptedAI
m_creature->GetMotionMaster()->Clear(); m_creature->GetMotionMaster()->Clear();
DoTeleportTo(JanalainPos[0][0],JanalainPos[0][1],JanalainPos[0][2]); DoTeleportTo(JanalainPos[0][0],JanalainPos[0][1],JanalainPos[0][2]);
m_creature->StopMoving(); m_creature->StopMoving();
m_creature->CastSpell(m_creature, SPELL_HATCH_ALL, false); DoCast(m_creature, SPELL_HATCH_ALL, false);
HatchAllEggs(2); HatchAllEggs(2);
noeggs = true; noeggs = true;
} }
@@ -422,7 +422,7 @@ struct TRINITY_DLL_DECL boss_janalaiAI : public ScriptedAI
{ {
m_creature->AttackStop(); m_creature->AttackStop();
m_creature->GetMotionMaster()->Clear(); m_creature->GetMotionMaster()->Clear();
m_creature->CastSpell(pTarget, SPELL_FLAME_BREATH, false); DoCast(pTarget, SPELL_FLAME_BREATH, false);
m_creature->StopMoving(); m_creature->StopMoving();
isFlameBreathing = true; isFlameBreathing = true;
} }
@@ -445,7 +445,7 @@ struct TRINITY_DLL_DECL mob_janalai_firebombAI : public ScriptedAI
void SpellHit(Unit *caster, const SpellEntry *spell) void SpellHit(Unit *caster, const SpellEntry *spell)
{ {
if (spell->Id == SPELL_FIRE_BOMB_THROW) if (spell->Id == SPELL_FIRE_BOMB_THROW)
m_creature->CastSpell(m_creature, SPELL_FIRE_BOMB_DUMMY, true); DoCast(m_creature, SPELL_FIRE_BOMB_DUMMY, true);
} }
void EnterCombat(Unit* who) {} void EnterCombat(Unit* who) {}
@@ -621,7 +621,7 @@ struct TRINITY_DLL_DECL mob_hatchlingAI : public ScriptedAI
if (BuffetTimer <= diff) if (BuffetTimer <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(), SPELL_FLAMEBUFFET, false); DoCast(m_creature->getVictim(), SPELL_FLAMEBUFFET, false);
BuffetTimer = 10000; BuffetTimer = 10000;
} else BuffetTimer -= diff; } else BuffetTimer -= diff;
@@ -274,7 +274,7 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI
m_creature->AttackerStateUpdate(m_creature->getVictim()); m_creature->AttackerStateUpdate(m_creature->getVictim());
if (m_creature->getVictim() && health == m_creature->getVictim()->GetHealth()) if (m_creature->getVictim() && health == m_creature->getVictim()->GetHealth())
{ {
m_creature->CastSpell(m_creature->getVictim(), SPELL_OVERPOWER, false); DoCast(m_creature->getVictim(), SPELL_OVERPOWER, false);
Overpower_Timer = 5000; Overpower_Timer = 5000;
} }
} else m_creature->AttackerStateUpdate(m_creature->getVictim()); } else m_creature->AttackerStateUpdate(m_creature->getVictim());
@@ -353,7 +353,7 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI
if (NextPhase == 2) if (NextPhase == 2)
{ {
m_creature->GetMotionMaster()->Clear(); m_creature->GetMotionMaster()->Clear();
m_creature->CastSpell(m_creature, SPELL_ENERGY_STORM, true); // enemy aura DoCast(m_creature, SPELL_ENERGY_STORM, true); // enemy aura
for (uint8 i = 0; i < 4; ++i) for (uint8 i = 0; i < 4; ++i)
{ {
Creature* Vortex = DoSpawnCreature(CREATURE_FEATHER_VORTEX, 0, 0, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 0); Creature* Vortex = DoSpawnCreature(CREATURE_FEATHER_VORTEX, 0, 0, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
@@ -396,7 +396,7 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI
if (Berserk_Timer <= diff) if (Berserk_Timer <= diff)
{ {
m_creature->CastSpell(m_creature, SPELL_BERSERK, true); DoCast(m_creature, SPELL_BERSERK, true);
m_creature->MonsterYell(YELL_BERSERK, LANG_UNIVERSAL, NULL); m_creature->MonsterYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_BERSERK); DoPlaySoundToSet(m_creature, SOUND_BERSERK);
Berserk_Timer = 60000; Berserk_Timer = 60000;
@@ -423,8 +423,8 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI
if (Grievous_Throw_Timer <= diff) if (Grievous_Throw_Timer <= diff)
{ {
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
m_creature->CastSpell(pTarget, SPELL_GRIEVOUS_THROW, false); DoCast(pTarget, SPELL_GRIEVOUS_THROW, false);
Grievous_Throw_Timer = 10000; Grievous_Throw_Timer = 10000;
} else Grievous_Throw_Timer -= diff; } else Grievous_Throw_Timer -= diff;
break; break;
@@ -473,7 +473,7 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI
AttackStart(pTarget); AttackStart(pTarget);
if (m_creature->IsWithinMeleeRange(pTarget)) if (m_creature->IsWithinMeleeRange(pTarget))
{ {
m_creature->CastSpell(pTarget, SPELL_CLAW_RAGE_DAMAGE, true); DoCast(pTarget, SPELL_CLAW_RAGE_DAMAGE, true);
++Claw_Counter; ++Claw_Counter;
if (Claw_Counter == 12) if (Claw_Counter == 12)
{ {
@@ -521,7 +521,7 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI
{ {
if (m_creature->IsWithinMeleeRange(pTarget)) if (m_creature->IsWithinMeleeRange(pTarget))
{ {
m_creature->CastSpell(pTarget, SPELL_LYNX_RUSH_DAMAGE, true); DoCast(pTarget, SPELL_LYNX_RUSH_DAMAGE, true);
++Claw_Counter; ++Claw_Counter;
if (Claw_Counter == 9) if (Claw_Counter == 9)
{ {
@@ -591,7 +591,7 @@ struct TRINITY_DLL_DECL feather_vortexAI : public ScriptedAI
void SpellHit(Unit *caster, const SpellEntry *spell) void SpellHit(Unit *caster, const SpellEntry *spell)
{ {
if (spell->Id == SPELL_ZAP_INFORM) if (spell->Id == SPELL_ZAP_INFORM)
m_creature->CastSpell(caster, SPELL_ZAP_DAMAGE, true); DoCast(caster, SPELL_ZAP_DAMAGE, true);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -119,7 +119,8 @@ struct TRINITY_DLL_DECL npc_zulaman_hostageAI : public ScriptedAI
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
{ {
if (IsLoot) m_creature->CastSpell(m_creature, 7, false); if (IsLoot)
DoCast(m_creature, 7, false);
} }
}; };
@@ -207,12 +207,10 @@ struct TRINITY_DLL_DECL mob_shade_of_jindoAI : public ScriptedAI
void Reset() void Reset()
{ {
ShadowShock_Timer = 1000; ShadowShock_Timer = 1000;
m_creature->CastSpell(m_creature, SPELL_INVISIBLE,true); DoCast(m_creature, SPELL_INVISIBLE, true);
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who){}
{
}
void UpdateAI (const uint32 diff) void UpdateAI (const uint32 diff)
{ {
@@ -134,7 +134,7 @@ struct TRINITY_DLL_DECL example_escortAI : public npc_escortAI
if (m_uiDeathCoilTimer <= uiDiff) if (m_uiDeathCoilTimer <= uiDiff)
{ {
DoScriptText(SAY_SPELL, m_creature); DoScriptText(SAY_SPELL, m_creature);
m_creature->CastSpell(m_creature->getVictim(), SPELL_DEATH_COIL, false); DoCast(m_creature->getVictim(), SPELL_DEATH_COIL, false);
m_uiDeathCoilTimer = 4000; m_uiDeathCoilTimer = 4000;
} }
else else
@@ -150,12 +150,12 @@ struct TRINITY_DLL_DECL example_escortAI : public npc_escortAI
if (m_creature->HasAura(SPELL_ELIXIR_OF_FORTITUDE, 0)) if (m_creature->HasAura(SPELL_ELIXIR_OF_FORTITUDE, 0))
{ {
DoScriptText(SAY_RAND_1, m_creature); DoScriptText(SAY_RAND_1, m_creature);
m_creature->CastSpell(m_creature, SPELL_BLUE_FIREWORK, false); DoCast(m_creature, SPELL_BLUE_FIREWORK, false);
} }
else else
{ {
DoScriptText(SAY_RAND_2, m_creature); DoScriptText(SAY_RAND_2, m_creature);
m_creature->CastSpell(m_creature, SPELL_ELIXIR_OF_FORTITUDE, false); DoCast(m_creature, SPELL_ELIXIR_OF_FORTITUDE, false);
} }
m_uiChatTimer = 12000; m_uiChatTimer = 12000;
@@ -78,7 +78,7 @@ struct TRINITY_DLL_DECL npc_draenei_survivorAI : public ScriptedAI
CanSayHelp = true; CanSayHelp = true;
m_creature->CastSpell(m_creature, SPELL_IRRIDATION, true); DoCast(m_creature, SPELL_IRRIDATION, true);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
@@ -107,7 +107,7 @@ struct TRINITY_DLL_DECL npc_draenei_survivorAI : public ScriptedAI
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE);
m_creature->SetStandState(UNIT_STAND_STATE_STAND); m_creature->SetStandState(UNIT_STAND_STATE_STAND);
m_creature->CastSpell(m_creature, SPELL_STUNNED, true); DoCast(m_creature, SPELL_STUNNED, true);
pCaster = Caster->GetGUID(); pCaster = Caster->GetGUID();
@@ -78,11 +78,11 @@ struct TRINITY_DLL_DECL npc_medivh_bmAI : public ScriptedAI
return; return;
if (pInstance->GetData(TYPE_MEDIVH) == IN_PROGRESS) if (pInstance->GetData(TYPE_MEDIVH) == IN_PROGRESS)
m_creature->CastSpell(m_creature,SPELL_CHANNEL,true); DoCast(m_creature, SPELL_CHANNEL, true);
else if (m_creature->HasAura(SPELL_CHANNEL)) else if (m_creature->HasAura(SPELL_CHANNEL))
m_creature->RemoveAura(SPELL_CHANNEL); m_creature->RemoveAura(SPELL_CHANNEL);
m_creature->CastSpell(m_creature,SPELL_PORTAL_RUNE,true); DoCast(m_creature, SPELL_PORTAL_RUNE, true);
} }
void MoveInLineOfSight(Unit *who) void MoveInLineOfSight(Unit *who)
@@ -97,7 +97,7 @@ struct TRINITY_DLL_DECL npc_medivh_bmAI : public ScriptedAI
DoScriptText(SAY_INTRO, m_creature); DoScriptText(SAY_INTRO, m_creature);
pInstance->SetData(TYPE_MEDIVH,IN_PROGRESS); pInstance->SetData(TYPE_MEDIVH,IN_PROGRESS);
m_creature->CastSpell(m_creature,SPELL_CHANNEL,false); DoCast(m_creature, SPELL_CHANNEL, false);
Check_Timer = 5000; Check_Timer = 5000;
} }
else if (who->GetTypeId() == TYPEID_UNIT && m_creature->IsWithinDistInMap(who, 15.0f)) else if (who->GetTypeId() == TYPEID_UNIT && m_creature->IsWithinDistInMap(who, 15.0f))
@@ -741,7 +741,7 @@ void hyjalAI::UpdateAI(const uint32 diff)
{ {
if (MassTeleportTimer < diff && DoMassTeleport) if (MassTeleportTimer < diff && DoMassTeleport)
{ {
m_creature->CastSpell(m_creature,SPELL_MASS_TELEPORT,false); DoCast(m_creature, SPELL_MASS_TELEPORT, false);
DoMassTeleport = false; DoMassTeleport = false;
} else MassTeleportTimer -= diff; } else MassTeleportTimer -= diff;
return; return;
@@ -979,7 +979,7 @@ void hyjalAI::WaypointReached(uint32 i)
WaitForTeleport = true; WaitForTeleport = true;
TeleportTimer = 20000; TeleportTimer = 20000;
if (m_creature->GetEntry() == JAINA) if (m_creature->GetEntry() == JAINA)
m_creature->CastSpell(m_creature,SPELL_MASS_TELEPORT,false); DoCast(m_creature, SPELL_MASS_TELEPORT, false);
if (m_creature->GetEntry() == THRALL && DummyGuid) if (m_creature->GetEntry() == THRALL && DummyGuid)
{ {
Unit* Dummy = Unit::GetUnit((*m_creature),DummyGuid); Unit* Dummy = Unit::GetUnit((*m_creature),DummyGuid);
@@ -110,7 +110,7 @@ struct TRINITY_DLL_DECL npc_kerlonianAI : public FollowerAI
DoScriptText(RAND(SAY_KER_SLEEP_1,SAY_KER_SLEEP_2,SAY_KER_SLEEP_3,SAY_KER_SLEEP_4), m_creature); DoScriptText(RAND(SAY_KER_SLEEP_1,SAY_KER_SLEEP_2,SAY_KER_SLEEP_3,SAY_KER_SLEEP_4), m_creature);
m_creature->SetStandState(UNIT_STAND_STATE_SLEEP); m_creature->SetStandState(UNIT_STAND_STATE_SLEEP);
m_creature->CastSpell(m_creature, SPELL_SLEEP_VISUAL, false); DoCast(m_creature, SPELL_SLEEP_VISUAL, false);
} }
void ClearSleeping() void ClearSleeping()
@@ -72,7 +72,7 @@ struct TRINITY_DLL_DECL npc_aged_dying_ancient_kodoAI : public ScriptedAI
DoScriptText(RAND(SAY_SMEED_HOME_1,SAY_SMEED_HOME_2,SAY_SMEED_HOME_3), pWho); DoScriptText(RAND(SAY_SMEED_HOME_1,SAY_SMEED_HOME_2,SAY_SMEED_HOME_3), pWho);
//spell have no implemented effect (dummy), so useful to notify spellHit //spell have no implemented effect (dummy), so useful to notify spellHit
m_creature->CastSpell(m_creature,SPELL_KODO_KOMBO_GOSSIP,true); DoCast(m_creature, SPELL_KODO_KOMBO_GOSSIP, true);
} }
} }
} }
@@ -65,7 +65,7 @@ struct TRINITY_DLL_DECL mobs_risen_husk_spiritAI : public ScriptedAI
if (pDoneBy->GetTypeId() == TYPEID_PLAYER) if (pDoneBy->GetTypeId() == TYPEID_PLAYER)
{ {
if (damage >= m_creature->GetHealth() && CAST_PLR(pDoneBy)->GetQuestStatus(QUEST_WHATS_HAUNTING_WITCH_HILL) == QUEST_STATUS_INCOMPLETE) if (damage >= m_creature->GetHealth() && CAST_PLR(pDoneBy)->GetQuestStatus(QUEST_WHATS_HAUNTING_WITCH_HILL) == QUEST_STATUS_INCOMPLETE)
m_creature->CastSpell(pDoneBy, SPELL_SUMMON_RESTLESS_APPARITION, false); DoCast(pDoneBy, SPELL_SUMMON_RESTLESS_APPARITION, false);
} }
} }
@@ -91,7 +91,7 @@ struct TRINITY_DLL_DECL boss_kurinnaxxAI : public ScriptedAI
if (uiMortalWoundTimer <= diff) if (uiMortalWoundTimer <= diff)
{ {
DoCast(m_creature->getVictim(), SPELL_MORTALWOUND); DoCast(m_creature->getVictim(), SPELL_MORTALWOUND);
uiMortalWoundTimer = urand(2000,7000);; uiMortalWoundTimer = urand(2000,7000);
} else uiMortalWoundTimer -= diff; } else uiMortalWoundTimer -= diff;
//Santrap spell //Santrap spell
@@ -632,19 +632,19 @@ struct TRINITY_DLL_DECL npc_anachronos_the_ancientAI : public ScriptedAI
Caelestrasz->GetMotionMaster()->MoveCharge(-8165,1530,65,7); Caelestrasz->GetMotionMaster()->MoveCharge(-8165,1530,65,7);
break; //Text: sands will stop break; //Text: sands will stop
case 34: case 34:
m_creature->CastSpell(plr, 23017, true);//Arcane Channeling DoCast(plr, 23017, true);//Arcane Channeling
break; break;
case 35: case 35:
m_creature->CastSpell(-8088,1520.43,2.67,25158,true); m_creature->CastSpell(-8088,1520.43,2.67,25158,true);
break; break;
case 36: case 36:
m_creature->CastSpell(plr, 25159, true); DoCast(plr, 25159, true);
break; break;
case 37: case 37:
m_creature->SummonGameObject(GO_GATE_OF_AHN_QIRAJ,-8130,1525,17.5,0,0,0,0,0,0); m_creature->SummonGameObject(GO_GATE_OF_AHN_QIRAJ,-8130,1525,17.5,0,0,0,0,0,0);
break; break;
case 38: case 38:
m_creature->CastSpell(plr, 25166, true); DoCast(plr, 25166, true);
m_creature->SummonGameObject(GO_GLYPH_OF_AHN_QIRAJ,-8130,1525,17.5,0,0,0,0,0,0); m_creature->SummonGameObject(GO_GLYPH_OF_AHN_QIRAJ,-8130,1525,17.5,0,0,0,0,0,0);
break; break;
case 39: case 39:
@@ -322,7 +322,7 @@ struct TRINITY_DLL_DECL eye_of_cthunAI : public Scripted_NoMovementAI
m_creature->StopMoving(); m_creature->StopMoving();
//Actual dark glare cast, maybe something missing here? //Actual dark glare cast, maybe something missing here?
m_creature->CastSpell(m_creature, SPELL_DARK_GLARE, false); DoCast(m_creature, SPELL_DARK_GLARE, false);
//Increase tick //Increase tick
++DarkGlareTick; ++DarkGlareTick;
@@ -485,7 +485,7 @@ struct TRINITY_DLL_DECL boss_veklorAI : public boss_twinemperorsAI
{ {
TwinReset(); TwinReset();
ShadowBolt_Timer = 0; ShadowBolt_Timer = 0;
Blizzard_Timer = 15000 + rand()%5000;; Blizzard_Timer = 15000 + rand()%5000;
ArcaneBurst_Timer = 1000; ArcaneBurst_Timer = 1000;
Scorpions_Timer = 7000 + rand()%7000; Scorpions_Timer = 7000 + rand()%7000;
@@ -288,7 +288,7 @@ struct TRINITY_DLL_DECL npc_pluckyAI : public ScriptedAI
if (m_creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP)) if (m_creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
m_creature->CastSpell(m_creature, SPELL_PLUCKY_CHICKEN, false); DoCast(m_creature, SPELL_PLUCKY_CHICKEN, false);
} }
void ReceiveEmote(Player* pPlayer, uint32 uiTextEmote) void ReceiveEmote(Player* pPlayer, uint32 uiTextEmote)
@@ -299,7 +299,7 @@ struct TRINITY_DLL_DECL npc_pluckyAI : public ScriptedAI
{ {
m_creature->setFaction(FACTION_FRIENDLY); m_creature->setFaction(FACTION_FRIENDLY);
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
m_creature->CastSpell(m_creature, SPELL_PLUCKY_HUMAN, false); DoCast(m_creature, SPELL_PLUCKY_HUMAN, false);
} }
} }
@@ -311,7 +311,7 @@ struct TRINITY_DLL_DECL npc_pluckyAI : public ScriptedAI
{ {
m_creature->setFaction(FACTION_FRIENDLY); m_creature->setFaction(FACTION_FRIENDLY);
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
m_creature->CastSpell(m_creature, SPELL_PLUCKY_HUMAN, false); DoCast(m_creature, SPELL_PLUCKY_HUMAN, false);
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_WAVE); m_creature->HandleEmoteCommand(EMOTE_ONESHOT_WAVE);
} }
} }
@@ -101,7 +101,7 @@ struct MANGOS_DLL_DECL boss_amanitarAI : public ScriptedAI
if (pInstance) if (pInstance)
pInstance->SetData(DATA_AMANITAR_EVENT, IN_PROGRESS); pInstance->SetData(DATA_AMANITAR_EVENT, IN_PROGRESS);
m_creature->CastSpell(m_creature, SPELL_MINI, false); DoCast(m_creature, SPELL_MINI, false);
} }
void SpawnAdds() void SpawnAdds()
@@ -187,7 +187,7 @@ struct MANGOS_DLL_DECL mob_amanitar_mushroomsAI : public Scripted_NoMovementAI
if (m_creature->GetEntry() == NPC_HEALTHY_MUSHROOM && killer->GetTypeId() == TYPEID_PLAYER) if (m_creature->GetEntry() == NPC_HEALTHY_MUSHROOM && killer->GetTypeId() == TYPEID_PLAYER)
{ {
m_creature->InterruptNonMeleeSpells(false); m_creature->InterruptNonMeleeSpells(false);
m_creature->CastSpell(killer, HEALTHY_MUSHROOM_SPELL_POTENT_FUNGUS, false); DoCast(killer, HEALTHY_MUSHROOM_SPELL_POTENT_FUNGUS, false);
} }
} }
@@ -271,7 +271,7 @@ struct MANGOS_DLL_DECL boss_jedoga_shadowseekerAI : public ScriptedAI
DoScriptText(RAND(TEXT_SACRIFICE_2_1, TEXT_SACRIFICE_2_2), m_creature); DoScriptText(RAND(TEXT_SACRIFICE_2_1, TEXT_SACRIFICE_2_2), m_creature);
m_creature->InterruptNonMeleeSpells(false); m_creature->InterruptNonMeleeSpells(false);
m_creature->CastSpell(m_creature, SPELL_GIFT_OF_THE_HERALD, false); DoCast(m_creature, SPELL_GIFT_OF_THE_HERALD, false);
bOpFerok = false; bOpFerok = false;
bCanDown = true; bCanDown = true;
@@ -303,7 +303,7 @@ struct MANGOS_DLL_DECL boss_jedoga_shadowseekerAI : public ScriptedAI
if (uiCycloneTimer <= diff) if (uiCycloneTimer <= diff)
{ {
m_creature->CastSpell(m_creature, HEROIC(SPELL_CYCLONE_STRIKE, SPELL_CYCLONE_STRIKE_H), false); DoCast(m_creature, HEROIC(SPELL_CYCLONE_STRIKE, SPELL_CYCLONE_STRIKE_H), false);
uiCycloneTimer = urand(15000,30000); uiCycloneTimer = urand(15000,30000);
} else uiCycloneTimer -= diff; } else uiCycloneTimer -= diff;
@@ -363,7 +363,7 @@ struct MANGOS_DLL_DECL mob_jedoga_initiandAI : public ScriptedAI
} }
else else
{ {
m_creature->CastSpell(m_creature, SPELL_SPHERE_VISUAL, false); DoCast(m_creature, SPELL_SPHERE_VISUAL, false);
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true); m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true); m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
@@ -461,7 +461,7 @@ struct MANGOS_DLL_DECL mob_jedoga_initiandAI : public ScriptedAI
} }
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS && !m_creature->HasAura(SPELL_SPHERE_VISUAL)) if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS && !m_creature->HasAura(SPELL_SPHERE_VISUAL))
{ {
m_creature->CastSpell(m_creature, SPELL_SPHERE_VISUAL, false); DoCast(m_creature, SPELL_SPHERE_VISUAL, false);
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true); m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true); m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
@@ -533,7 +533,7 @@ struct MANGOS_DLL_DECL npc_jedogas_aufseher_triggerAI : public Scripted_NoMoveme
} }
if (!casted) if (!casted)
{ {
m_creature->CastSpell(m_creature, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_1, false); DoCast(m_creature, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_1, false);
casted = true; casted = true;
} }
} }
@@ -541,7 +541,7 @@ struct MANGOS_DLL_DECL npc_jedogas_aufseher_triggerAI : public Scripted_NoMoveme
{ {
if (!casted2 && pInstance->GetData(DATA_JEDOGA_TRIGGER_SWITCH)) if (!casted2 && pInstance->GetData(DATA_JEDOGA_TRIGGER_SWITCH))
{ {
m_creature->CastSpell(m_creature, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_2, false); DoCast(m_creature, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_2, false);
casted2 = true; casted2 = true;
} }
if (casted2 && !pInstance->GetData(DATA_JEDOGA_TRIGGER_SWITCH)) if (casted2 && !pInstance->GetData(DATA_JEDOGA_TRIGGER_SWITCH))
@@ -134,7 +134,7 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
if (Channeling == true) if (Channeling == true)
{ {
for(int ind = 0 ; ind < 4; ind++) m_creature->CastSpell(m_creature->getVictim(),SPELL_SUMMON_CARRION_BEETLES,true); for(int ind = 0 ; ind < 4; ind++) DoCast(m_creature->getVictim(), SPELL_SUMMON_CARRION_BEETLES, true);
Channeling = false; Channeling = false;
} }
@@ -226,7 +226,7 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
{ {
if (SPELL_LEECHING_SWARM_Timer <= diff) if (SPELL_LEECHING_SWARM_Timer <= diff)
{ {
m_creature->CastSpell(m_creature,SPELL_LEECHING_SWARM,true); DoCast(m_creature, SPELL_LEECHING_SWARM, true);
SPELL_LEECHING_SWARM_Timer = 19000; SPELL_LEECHING_SWARM_Timer = 19000;
} else SPELL_LEECHING_SWARM_Timer -= diff; } else SPELL_LEECHING_SWARM_Timer -= diff;
@@ -234,7 +234,7 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
if (SPELL_CARRION_BEETLES_Timer <= diff) if (SPELL_CARRION_BEETLES_Timer <= diff)
{ {
Channeling = true; Channeling = true;
m_creature->CastSpell(m_creature->getVictim(),SPELL_CARRION_BEETLES,false); DoCast(m_creature->getVictim(), SPELL_CARRION_BEETLES, false);
SPELL_CARRION_BEETLES_Timer = 25000; SPELL_CARRION_BEETLES_Timer = 25000;
} else SPELL_CARRION_BEETLES_Timer -= diff; } else SPELL_CARRION_BEETLES_Timer -= diff;
@@ -261,7 +261,7 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
VENOMANCER_Timer = 25000; VENOMANCER_Timer = 25000;
DATTER_Timer = 32000; DATTER_Timer = 32000;
m_creature->CastSpell(m_creature,SPELL_SUBMERGE,false); DoCast(m_creature, SPELL_SUBMERGE, false);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -169,8 +169,8 @@ struct TRINITY_DLL_DECL boss_krik_thirAI : public ScriptedAI
if (CurseFatigueTimer <= diff) if (CurseFatigueTimer <= diff)
{ {
//WowWiki say "Curse of Fatigue-Kirk'thir will cast Curse of Fatigue on 2-3 targets periodically." //WowWiki say "Curse of Fatigue-Kirk'thir will cast Curse of Fatigue on 2-3 targets periodically."
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0); Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
Unit *pTarget_1 = SelectUnit(SELECT_TARGET_RANDOM, 1); Unit *pTarget_1 = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true);
DoCast(pTarget, HEROIC(SPELL_CURSE_OF_FATIGUE, H_SPELL_CURSE_OF_FATIGUE)); DoCast(pTarget, HEROIC(SPELL_CURSE_OF_FATIGUE, H_SPELL_CURSE_OF_FATIGUE));
DoCast(pTarget_1, HEROIC(SPELL_CURSE_OF_FATIGUE, H_SPELL_CURSE_OF_FATIGUE)); DoCast(pTarget_1, HEROIC(SPELL_CURSE_OF_FATIGUE, H_SPELL_CURSE_OF_FATIGUE));
@@ -179,7 +179,7 @@ struct TRINITY_DLL_DECL boss_krik_thirAI : public ScriptedAI
} else CurseFatigueTimer -= diff; } else CurseFatigueTimer -= diff;
if (!m_creature->HasAura(SPELL_FRENZY) && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 10) if (!m_creature->HasAura(SPELL_FRENZY) && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 10)
m_creature->CastSpell(m_creature,SPELL_FRENZY,true); DoCast(m_creature, SPELL_FRENZY, true);
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }
@@ -201,6 +201,7 @@ struct TRINITY_DLL_DECL boss_krik_thirAI : public ScriptedAI
{ {
Map::PlayerList const &players = pMap->GetPlayers(); Map::PlayerList const &players = pMap->GetPlayers();
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
if (itr->getSource())
itr->getSource()->CompletedAchievement(AchievWatchHimDie); itr->getSource()->CompletedAchievement(AchievWatchHimDie);
} }
} }
@@ -327,13 +328,13 @@ struct TRINITY_DLL_DECL npc_anub_ar_warriorAI : public ScriptedAI
if (StrikeTimer <= diff) if (StrikeTimer <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(), SPELL_STRIKE, true); DoCast(m_creature->getVictim(), SPELL_STRIKE, true);
StrikeTimer = 15000; StrikeTimer = 15000;
} else StrikeTimer -= diff; } else StrikeTimer -= diff;
if (CleaveTimer <= diff) if (CleaveTimer <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(), SPELL_CLEAVE, true); DoCast(m_creature->getVictim(), SPELL_CLEAVE, true);
CleaveTimer = 17000; CleaveTimer = 17000;
} else CleaveTimer -= diff; } else CleaveTimer -= diff;
@@ -358,7 +359,7 @@ struct TRINITY_DLL_DECL npc_watcher_gashraAI : public ScriptedAI
void EnterCombat(Unit* who) void EnterCombat(Unit* who)
{ {
m_creature->CastSpell(m_creature,SPELL_ENRAGE,true); DoCast(m_creature, SPELL_ENRAGE, true);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -369,7 +370,7 @@ struct TRINITY_DLL_DECL npc_watcher_gashraAI : public ScriptedAI
if (WebWrapTimer <= diff) if (WebWrapTimer <= diff)
{ {
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
m_creature->CastSpell(pTarget, SPELL_WEB_WRAP,true); DoCast(pTarget, SPELL_WEB_WRAP, true);
WebWrapTimer = 17000; WebWrapTimer = 17000;
} else WebWrapTimer -= diff; } else WebWrapTimer -= diff;
@@ -558,7 +558,7 @@ struct TRINITY_DLL_DECL npc_jennyAI : public ScriptedAI
void DamageTaken(Unit* pDone_by, uint32& uiDamage) void DamageTaken(Unit* pDone_by, uint32& uiDamage)
{ {
m_creature->CastSpell(m_creature,SPELL_DROP_CRATE,true); DoCast(m_creature, SPELL_DROP_CRATE, true);
} }
void MoveInLineOfSight(Unit* pWho) void MoveInLineOfSight(Unit* pWho)
@@ -567,7 +567,7 @@ struct TRINITY_DLL_DECL npc_jennyAI : public ScriptedAI
{ {
if(CAST_PLR(m_creature->GetOwner())->GetQuestStatus(QUEST_LOADER_UP) == QUEST_STATUS_INCOMPLETE && m_creature->GetAura(SPELL_CRATES_CARRIED)) if(CAST_PLR(m_creature->GetOwner())->GetQuestStatus(QUEST_LOADER_UP) == QUEST_STATUS_INCOMPLETE && m_creature->GetAura(SPELL_CRATES_CARRIED))
{ {
m_creature->CastSpell(CAST_PLR(m_creature->GetOwner()),SPELL_GIVE_JENNY_CREDIT,true); // Maybe is not working. DoCast(CAST_PLR(m_creature->GetOwner()), SPELL_GIVE_JENNY_CREDIT, true); // Maybe is not working.
CAST_PLR(m_creature->GetOwner())->CompleteQuest(QUEST_LOADER_UP); CAST_PLR(m_creature->GetOwner())->CompleteQuest(QUEST_LOADER_UP);
m_creature->DisappearAndDie(); m_creature->DisappearAndDie();
} }
@@ -714,7 +714,7 @@ struct TRINITY_DLL_DECL npc_nesingwary_trapperAI : public ScriptedAI
Phase_Timer = 1000; Phase_Timer = 1000;
break; break;
case 8: case 8:
m_creature->CastSpell(m_creature,SPELL_TRAPPED,true); DoCast(m_creature, SPELL_TRAPPED, true);
Phase = 0; Phase = 0;
break; break;
} }
@@ -901,7 +901,7 @@ struct TRINITY_DLL_DECL npc_nexus_drake_hatchlingAI : public FollowerAI //The sp
if (spell->Id == SPELL_DRAKE_HARPOON && caster->GetTypeId() == TYPEID_PLAYER) if (spell->Id == SPELL_DRAKE_HARPOON && caster->GetTypeId() == TYPEID_PLAYER)
{ {
pHarpooner = CAST_PLR(caster); pHarpooner = CAST_PLR(caster);
m_creature->CastSpell(m_creature,SPELL_RED_DRAGONBLOOD,true); DoCast(m_creature, SPELL_RED_DRAGONBLOOD, true);
} }
} }
@@ -934,7 +934,7 @@ struct TRINITY_DLL_DECL npc_nexus_drake_hatchlingAI : public FollowerAI //The sp
pDrakeAI->StartFollow(pHarpooner, 35, NULL); pDrakeAI->StartFollow(pHarpooner, 35, NULL);
} }
m_creature->CastSpell(m_creature, SPELL_SUBDUED, true); DoCast(m_creature, SPELL_SUBDUED, true);
pHarpooner->CastSpell(pHarpooner, SPELL_DRAKE_HATCHLING_SUBDUED, true); pHarpooner->CastSpell(pHarpooner, SPELL_DRAKE_HATCHLING_SUBDUED, true);
m_creature->AttackStop(); m_creature->AttackStop();
@@ -91,7 +91,7 @@ struct TRINITY_DLL_DECL boss_drakkari_colossusAI : public ScriptedAI
{ {
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->addUnitState(UNIT_STAT_STUNNED); m_creature->addUnitState(UNIT_STAT_STUNNED);
m_creature->CastSpell(m_creature,SPELL_EMERGE,false); DoCast(m_creature, SPELL_EMERGE, false);
} }
void UpdateAI(const uint32 diff) void UpdateAI(const uint32 diff)
@@ -103,7 +103,7 @@ struct TRINITY_DLL_DECL boss_drakkari_colossusAI : public ScriptedAI
if (Summoned == false && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 50 && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() > 6) if (Summoned == false && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 50 && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() > 6)
{ {
PrepareToSummonElemental(); PrepareToSummonElemental();
m_creature->CastSpell(m_creature->getVictim(), SPELL_EMERGE_2, true); DoCast(m_creature->getVictim(), SPELL_EMERGE_2, true);
Summoned = true; Summoned = true;
} }
@@ -121,7 +121,7 @@ struct TRINITY_DLL_DECL boss_drakkari_colossusAI : public ScriptedAI
{ {
if (!m_creature->hasUnitState(UNIT_STAT_STUNNED)) if (!m_creature->hasUnitState(UNIT_STAT_STUNNED))
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_MIGHTY_BLOW,true); DoCast(m_creature->getVictim(), SPELL_MIGHTY_BLOW, true);
} }
MightyBlowTimer = 10000; MightyBlowTimer = 10000;
@@ -179,7 +179,7 @@ struct TRINITY_DLL_DECL boss_drakkari_elementalAI : public ScriptedAI
if(GoToColossus == false && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 50) if(GoToColossus == false && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 50)
{ {
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->CastSpell(Colossus ,SPELL_MERGE,true); DoCast(Colossus, SPELL_MERGE, true);
GoToColossus = true; GoToColossus = true;
PreparationDone = true; PreparationDone = true;
@@ -189,7 +189,7 @@ struct TRINITY_DLL_DECL boss_drakkari_elementalAI : public ScriptedAI
{ {
m_creature->addUnitState(UNIT_STAT_STUNNED); m_creature->addUnitState(UNIT_STAT_STUNNED);
m_creature->SetVisibility(VISIBILITY_OFF); m_creature->SetVisibility(VISIBILITY_OFF);
m_creature->CastSpell(Colossus ,SPELL_MERGE,true); DoCast(Colossus, SPELL_MERGE, true);
PreparationDone = false; PreparationDone = false;
@@ -202,7 +202,7 @@ struct TRINITY_DLL_DECL boss_drakkari_elementalAI : public ScriptedAI
if(m_creature->GetVisibility() == VISIBILITY_ON) if(m_creature->GetVisibility() == VISIBILITY_ON)
{ {
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0); Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
m_creature->CastSpell(pTarget,SPELL_SURGE,false); DoCast(pTarget, SPELL_SURGE, false);
} }
SurgeTimer = 7000; SurgeTimer = 7000;
@@ -65,7 +65,7 @@ struct TRINITY_DLL_DECL boss_moorabiAI : public ScriptedAI
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
{ {
DoScriptText(SAY_AGGRO, m_creature); DoScriptText(SAY_AGGRO, m_creature);
m_creature->CastSpell(m_creature,SPELL_MOJO_FRENZY,true); DoCast(m_creature, SPELL_MOJO_FRENZY, true);
if (pInstance) if (pInstance)
pInstance->SetData(DATA_MOORABI_EVENT, IN_PROGRESS); pInstance->SetData(DATA_MOORABI_EVENT, IN_PROGRESS);
@@ -87,13 +87,13 @@ struct TRINITY_DLL_DECL boss_moorabiAI : public ScriptedAI
if (SPELL_GROUND_TREMOR_TIMER <= diff) if (SPELL_GROUND_TREMOR_TIMER <= diff)
{ {
DoScriptText(SAY_QUAKE, m_creature); DoScriptText(SAY_QUAKE, m_creature);
m_creature->CastSpell(m_creature->getVictim(),SPELL_QUAKE,true); DoCast(m_creature->getVictim(), SPELL_QUAKE, true);
SPELL_GROUND_TREMOR_TIMER = 10000; SPELL_GROUND_TREMOR_TIMER = 10000;
} else SPELL_GROUND_TREMOR_TIMER -= diff; } else SPELL_GROUND_TREMOR_TIMER -= diff;
if (SPELL_NUMBING_SHOUT_TIMER <= diff) if (SPELL_NUMBING_SHOUT_TIMER <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_NUMBING_ROAR,true); DoCast(m_creature->getVictim(), SPELL_NUMBING_ROAR, true);
SPELL_NUMBING_SHOUT_TIMER = 10000; SPELL_NUMBING_SHOUT_TIMER = 10000;
} else SPELL_NUMBING_SHOUT_TIMER -=diff; } else SPELL_NUMBING_SHOUT_TIMER -=diff;
@@ -110,7 +110,7 @@ struct TRINITY_DLL_DECL boss_moorabiAI : public ScriptedAI
{ {
DoScriptText(EMOTE_TRANSFORM, m_creature); DoScriptText(EMOTE_TRANSFORM, m_creature);
DoScriptText(SAY_TRANSFORM, m_creature); DoScriptText(SAY_TRANSFORM, m_creature);
m_creature->CastSpell(m_creature,SPELL_TRANSFORMATION,false); DoCast(m_creature, SPELL_TRANSFORMATION, false);
SPELL_TRANSFORMATION_TIMER = 10000; SPELL_TRANSFORMATION_TIMER = 10000;
} else SPELL_TRANSFORMATION_TIMER -= diff; } else SPELL_TRANSFORMATION_TIMER -= diff;
@@ -118,20 +118,20 @@ struct TRINITY_DLL_DECL boss_moorabiAI : public ScriptedAI
if (SPELL_GROUND_TREMOR_TIMER <= diff) if (SPELL_GROUND_TREMOR_TIMER <= diff)
{ {
DoScriptText(SAY_QUAKE, m_creature); DoScriptText(SAY_QUAKE, m_creature);
m_creature->CastSpell(m_creature->getVictim(),SPELL_GROUND_TREMOR,true); DoCast(m_creature->getVictim(), SPELL_GROUND_TREMOR, true);
SPELL_GROUND_TREMOR_TIMER = 10000; SPELL_GROUND_TREMOR_TIMER = 10000;
} else SPELL_GROUND_TREMOR_TIMER -= diff; } else SPELL_GROUND_TREMOR_TIMER -= diff;
//CAST NUMBING SHOUT || DETERMINED_STAB //CAST NUMBING SHOUT || DETERMINED_STAB
if (SPELL_NUMBING_SHOUT_TIMER <= diff) if (SPELL_NUMBING_SHOUT_TIMER <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_NUMBING_SHOUT,true); DoCast(m_creature->getVictim(), SPELL_NUMBING_SHOUT, true);
SPELL_NUMBING_SHOUT_TIMER = 10000; SPELL_NUMBING_SHOUT_TIMER = 10000;
} else SPELL_NUMBING_SHOUT_TIMER -= diff; } else SPELL_NUMBING_SHOUT_TIMER -= diff;
if (SPELL_DETERMINED_STAB_TIMER <= diff) if (SPELL_DETERMINED_STAB_TIMER <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_DETERMINED_STAB,true); DoCast(m_creature->getVictim(), SPELL_DETERMINED_STAB, true);
SPELL_DETERMINED_STAB_TIMER = 8000; SPELL_DETERMINED_STAB_TIMER = 8000;
} else SPELL_DETERMINED_STAB_TIMER -= diff; } else SPELL_DETERMINED_STAB_TIMER -= diff;
} }
@@ -192,7 +192,7 @@ struct TRINITY_DLL_DECL mob_slad_ran_constrictorAI : public ScriptedAI
{ {
DoCast(m_creature->getVictim(), SPELL_GRIP_OF_SLAD_RAN); DoCast(m_creature->getVictim(), SPELL_GRIP_OF_SLAD_RAN);
uiGripOfSladRanTimer = 5000; uiGripOfSladRanTimer = 5000;
} else uiGripOfSladRanTimer -= diff;; } else uiGripOfSladRanTimer -= diff;
} }
ScriptedInstance* pInstance; ScriptedInstance* pInstance;
@@ -162,7 +162,7 @@ struct TRINITY_DLL_DECL boss_keristraszaAI : public ScriptedAI
{ {
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->CastSpell(m_creature, SPELL_FROZEN_PRISON, false); DoCast(m_creature, SPELL_FROZEN_PRISON, false);
} }
} }
@@ -677,7 +677,7 @@ struct TRINITY_DLL_DECL dummy_dragonAI : public ScriptedAI
// Twilight Revenge to main boss // Twilight Revenge to main boss
if (Unit* pSartharion = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_SARTHARION))) if (Unit* pSartharion = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_SARTHARION)))
if (pSartharion->isAlive()) if (pSartharion->isAlive())
m_creature->CastSpell(pSartharion,SPELL_TWILIGHT_REVENGE,true); DoCast(pSartharion, SPELL_TWILIGHT_REVENGE, true);
} }
} }
@@ -238,13 +238,13 @@ struct TRINITY_DLL_DECL npc_victorious_challengerAI : public ScriptedAI
if(RendTimer < diff) if(RendTimer < diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_REND_VC,true); DoCast(m_creature->getVictim(), SPELL_REND_VC, true);
RendTimer = 15000; RendTimer = 15000;
}else RendTimer -= diff; }else RendTimer -= diff;
if(SunderArmorTimer < diff) if(SunderArmorTimer < diff)
{ {
m_creature->CastSpell(m_creature->getVictim(), SPELL_SUNDER_ARMOR, true); DoCast(m_creature->getVictim(), SPELL_SUNDER_ARMOR, true);
SunderArmorTimer = 10000; SunderArmorTimer = 10000;
}else SunderArmorTimer -= diff; }else SunderArmorTimer -= diff;
@@ -231,7 +231,7 @@ struct TRINITY_DLL_DECL boss_ionarAI : public ScriptedAI
else if (m_uiSparkAtHomeCount == MAX_SPARKS) else if (m_uiSparkAtHomeCount == MAX_SPARKS)
{ {
m_creature->SetVisibility(VISIBILITY_ON); m_creature->SetVisibility(VISIBILITY_ON);
m_creature->CastSpell(m_creature, SPELL_SPARK_DESPAWN, false); DoCast(m_creature, SPELL_SPARK_DESPAWN, false);
DespawnSpark(); DespawnSpark();
@@ -176,7 +176,7 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
if (m_uiResumePulsingShockwave_Timer <= uiDiff) if (m_uiResumePulsingShockwave_Timer <= uiDiff)
{ {
//breaks at movement, can we assume when it's time, this spell is casted and also must stop movement? //breaks at movement, can we assume when it's time, this spell is casted and also must stop movement?
m_creature->CastSpell(m_creature, SPELL_PULSING_SHOCKWAVE_AURA, true); DoCast(m_creature, SPELL_PULSING_SHOCKWAVE_AURA, true);
DoCast(m_creature, m_bIsHeroic ? SPELL_PULSING_SHOCKWAVE_H : SPELL_PULSING_SHOCKWAVE_N); // need core support DoCast(m_creature, m_bIsHeroic ? SPELL_PULSING_SHOCKWAVE_H : SPELL_PULSING_SHOCKWAVE_N); // need core support
m_bIsAura = true; m_bIsAura = true;
@@ -293,7 +293,7 @@ struct TRINITY_DLL_DECL boss_volkhanAI : public ScriptedAI
m_bHasTemper = true; m_bHasTemper = true;
m_creature->CastSpell(m_creature, SPELL_TEMPER, false); DoCast(m_creature, SPELL_TEMPER, false);
} }
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
@@ -188,7 +188,7 @@ struct TRINITY_DLL_DECL boss_kelesethAI : public ScriptedAI
{ {
Unit *pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO, 0); Unit *pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO, 0);
if (pTarget && pTarget->isAlive() && pTarget->GetTypeId() == TYPEID_PLAYER) if (pTarget && pTarget->isAlive() && pTarget->GetTypeId() == TYPEID_PLAYER)
m_creature->CastSpell(pTarget, Heroic ? SPELL_SHADOWBOLT_HEROIC : SPELL_SHADOWBOLT, true); m_creature->CastSpell(pTarget, HEROIC(SPELL_SHADOWBOLT, SPELL_SHADOWBOLT_HEROIC), true);
ShadowboltTimer = 10000; ShadowboltTimer = 10000;
} else ShadowboltTimer -= diff; } else ShadowboltTimer -= diff;
@@ -199,8 +199,7 @@ struct TRINITY_DLL_DECL boss_kelesethAI : public ScriptedAI
DoScriptText(SAY_SKELETONS, m_creature); DoScriptText(SAY_SKELETONS, m_creature);
for (uint8 i = 0; i < 5; ++i) for (uint8 i = 0; i < 5; ++i)
{ {
Skeleton = m_creature->SummonCreature(CREATURE_SKELETON, SkeletonSpawnPoint[i][0], SkeletonSpawnPoint[i][1] , SKELETONSPAWN_Z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000); if (Skeleton = m_creature->SummonCreature(CREATURE_SKELETON, SkeletonSpawnPoint[i][0], SkeletonSpawnPoint[i][1] , SKELETONSPAWN_Z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000))
if (Skeleton)
{ {
Skeleton->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); Skeleton->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
Skeleton->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(), m_creature->GetPositionY() , m_creature->GetPositionZ()); Skeleton->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(), m_creature->GetPositionY() , m_creature->GetPositionZ());
@@ -213,8 +212,8 @@ struct TRINITY_DLL_DECL boss_kelesethAI : public ScriptedAI
if (FrostTombTimer <= diff) if (FrostTombTimer <= diff)
{ {
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1); if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
if (pTarget && pTarget->isAlive() && pTarget->GetTypeId() == TYPEID_PLAYER) if (pTarget->isAlive())
{ {
//DoCast(pTarget, SPELL_FROST_TOMB_SUMMON, true); //DoCast(pTarget, SPELL_FROST_TOMB_SUMMON, true);
if (Creature *pChains = m_creature->SummonCreature(CREATURE_FROSTTOMB, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 20000)) if (Creature *pChains = m_creature->SummonCreature(CREATURE_FROSTTOMB, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 20000))
@@ -249,7 +248,7 @@ struct TRINITY_DLL_DECL mob_vrykul_skeletonAI : public ScriptedAI
void Reset() void Reset()
{ {
Respawn_Time = 12000; Respawn_Time = 12000;
Decrepify_Timer = 10000 + rand()%20000; Decrepify_Timer = urand(10000,20000);
isDead = false; isDead = false;
} }
@@ -282,7 +281,7 @@ struct TRINITY_DLL_DECL mob_vrykul_skeletonAI : public ScriptedAI
isDead = false; isDead = false;
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->SetStandState(UNIT_STAND_STATE_STAND); m_creature->SetStandState(UNIT_STAND_STATE_STAND);
m_creature->CastSpell(m_creature,SPELL_SCOURGE_RESSURRECTION,true); DoCast(m_creature, SPELL_SCOURGE_RESSURRECTION, true);
if (m_creature->getVictim()) if (m_creature->getVictim())
{ {
@@ -95,14 +95,14 @@ struct TRINITY_DLL_DECL boss_zuramatAI : public ScriptedAI
if (SpellSummonVoidTimer <= diff) if (SpellSummonVoidTimer <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_SUMMON_VOID_SENTRY,false); DoCast(m_creature->getVictim(), SPELL_SUMMON_VOID_SENTRY, false);
SpellSummonVoidTimer = 20000; SpellSummonVoidTimer = 20000;
} else SpellSummonVoidTimer -=diff; } else SpellSummonVoidTimer -=diff;
if(SpellVoidShiftedTimer < diff && shiftcast) if(SpellVoidShiftedTimer < diff && shiftcast)
{ {
if (Shifted) if (Shifted)
m_creature->CastSpell(Shifted,SPELL_VOID_SHIFTED,false); DoCast(Shifted, SPELL_VOID_SHIFTED, false);
shiftcast = false; shiftcast = false;
} else SpellVoidShiftedTimer -=diff; } else SpellVoidShiftedTimer -=diff;
@@ -62,8 +62,8 @@ struct TRINITY_DLL_DECL npc_drakuru_shacklesAI : public ScriptedAI
m_creature->SetInFront(Rageclaw); m_creature->SetInFront(Rageclaw);
Rageclaw->SetInFront(m_creature); Rageclaw->SetInFront(m_creature);
m_creature->CastSpell(Rageclaw, SPELL_LEFT_CHAIN, true); DoCast(Rageclaw, SPELL_LEFT_CHAIN, true);
m_creature->CastSpell(Rageclaw, SPELL_RIGHT_CHAIN, true); DoCast(Rageclaw, SPELL_RIGHT_CHAIN, true);
} }
} }
else else
@@ -119,7 +119,7 @@ struct TRINITY_DLL_DECL npc_captured_rageclawAI : public ScriptedAI
Despawn = false; Despawn = false;
DespawnTimer = 0; DespawnTimer = 0;
m_creature->setFaction(35); m_creature->setFaction(35);
m_creature->CastSpell(m_creature, SPELL_KNEEL, true); // Little Hack for kneel - Thanks Illy :P DoCast(m_creature, SPELL_KNEEL, true); // Little Hack for kneel - Thanks Illy :P
} }
void MoveInLineOfSight(Unit *who){} void MoveInLineOfSight(Unit *who){}
@@ -281,7 +281,7 @@ struct TRINITY_DLL_DECL mob_ethereal_beaconAI : public ScriptedAI
if (m_creature->IsNonMeleeSpellCasted(false)) if (m_creature->IsNonMeleeSpellCasted(false))
m_creature->InterruptNonMeleeSpells(true); m_creature->InterruptNonMeleeSpells(true);
m_creature->CastSpell(m_creature,SPELL_ETHEREAL_APPRENTICE,true); DoCast(m_creature, SPELL_ETHEREAL_APPRENTICE, true);
m_creature->ForcedDespawn(); m_creature->ForcedDespawn();
return; return;
} else Apprentice_Timer -= diff; } else Apprentice_Timer -= diff;
@@ -322,10 +322,10 @@ struct TRINITY_DLL_DECL mob_ethereal_apprenticeAI : public ScriptedAI
{ {
if (isFireboltTurn) if (isFireboltTurn)
{ {
m_creature->CastSpell(m_creature->getVictim(), SPELL_ETHEREAL_APPRENTICE_FIREBOLT, true); DoCast(m_creature->getVictim(), SPELL_ETHEREAL_APPRENTICE_FIREBOLT, true);
isFireboltTurn = false; isFireboltTurn = false;
}else{ }else{
m_creature->CastSpell(m_creature->getVictim(), SPELL_ETHEREAL_APPRENTICE_FROSTBOLT, true); DoCast(m_creature->getVictim(), SPELL_ETHEREAL_APPRENTICE_FROSTBOLT, true);
isFireboltTurn = true; isFireboltTurn = true;
} }
Cast_Timer = 3000; Cast_Timer = 3000;
@@ -131,7 +131,7 @@ struct TRINITY_DLL_DECL boss_talon_king_ikissAI : public ScriptedAI
if (Blink) if (Blink)
{ {
DoCast(m_creature, HEROIC(SPELL_ARCANE_EXPLOSION, H_SPELL_ARCANE_EXPLOSION)); DoCast(m_creature, HEROIC(SPELL_ARCANE_EXPLOSION, H_SPELL_ARCANE_EXPLOSION));
m_creature->CastSpell(m_creature,SPELL_ARCANE_BUBBLE,true); DoCast(m_creature, SPELL_ARCANE_BUBBLE, true);
Blink = false; Blink = false;
} }
@@ -74,7 +74,7 @@ struct TRINITY_DLL_DECL boss_ambassador_hellmawAI : public npc_escortAI
if (m_pInstance && m_creature->isAlive()) if (m_pInstance && m_creature->isAlive())
{ {
if (m_pInstance->GetData(TYPE_OVERSEER) != DONE) if (m_pInstance->GetData(TYPE_OVERSEER) != DONE)
m_creature->CastSpell(m_creature, SPELL_BANISH, true); DoCast(m_creature, SPELL_BANISH, true);
} }
} }
@@ -248,7 +248,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
if (ShadowBoltVolley_Timer <= diff) if (ShadowBoltVolley_Timer <= diff)
{ {
DoCast(m_creature, SPELL_SHADOWBOLT_VOLLEY); DoCast(m_creature, SPELL_SHADOWBOLT_VOLLEY);
ShadowBoltVolley_Timer = 15000 + rand()%15000;; ShadowBoltVolley_Timer = 15000 + rand()%15000;
} else ShadowBoltVolley_Timer -= diff; } else ShadowBoltVolley_Timer -= diff;
if (HeroicMode && banish_Timer <= diff) if (HeroicMode && banish_Timer <= diff)
@@ -368,7 +368,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
boss_illidan_stormrageAI(Creature* c) : ScriptedAI(c), Summons(m_creature) boss_illidan_stormrageAI(Creature* c) : ScriptedAI(c), Summons(m_creature)
{ {
pInstance = c->GetInstanceData(); pInstance = c->GetInstanceData();
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true); DoCast(m_creature, SPELL_DUAL_WIELD, true);
SpellEntry *TempSpell = GET_SPELL(SPELL_SHADOWFIEND_PASSIVE); SpellEntry *TempSpell = GET_SPELL(SPELL_SHADOWFIEND_PASSIVE);
if (TempSpell) if (TempSpell)
@@ -783,7 +783,7 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI
case EVENT_PARASITIC_SHADOWFIEND: case EVENT_PARASITIC_SHADOWFIEND:
{ {
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 200, true)) if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 200, true))
m_creature->CastSpell(pTarget, SPELL_PARASITIC_SHADOWFIEND, true); DoCast(pTarget, SPELL_PARASITIC_SHADOWFIEND, true);
Timer[EVENT_PARASITIC_SHADOWFIEND] = 35000 + rand()%10000; Timer[EVENT_PARASITIC_SHADOWFIEND] = 35000 + rand()%10000;
} }
break; break;
@@ -1709,7 +1709,7 @@ struct TRINITY_DLL_DECL shadow_demonAI : public ScriptedAI
void Reset() void Reset()
{ {
TargetGUID = 0; TargetGUID = 0;
m_creature->CastSpell(m_creature, SPELL_SHADOW_DEMON_PASSIVE, true); DoCast(m_creature, SPELL_SHADOW_DEMON_PASSIVE, true);
} }
void JustDied(Unit *killer) void JustDied(Unit *killer)
@@ -2059,8 +2059,8 @@ void boss_illidan_stormrageAI::SummonFlamesOfAzzinoth()
void boss_illidan_stormrageAI::SummonMaiev() void boss_illidan_stormrageAI::SummonMaiev()
{ {
m_creature->CastSpell(m_creature, SPELL_SHADOW_PRISON, true); DoCast(m_creature, SPELL_SHADOW_PRISON, true);
m_creature->CastSpell(m_creature, 40403, true); DoCast(m_creature, 40403, true);
if (!MaievGUID) // If Maiev cannot be summoned, reset the encounter and post some errors to the console. if (!MaievGUID) // If Maiev cannot be summoned, reset the encounter and post some errors to the console.
{ {
EnterEvadeMode(); EnterEvadeMode();
@@ -109,7 +109,7 @@ struct TRINITY_DLL_DECL npc_enslaved_soulAI : public ScriptedAI
void EnterCombat(Unit* who) void EnterCombat(Unit* who)
{ {
m_creature->CastSpell(m_creature, ENSLAVED_SOUL_PASSIVE, true); DoCast(m_creature, ENSLAVED_SOUL_PASSIVE, true);
DoZoneInCombat(); DoZoneInCombat();
} }
@@ -260,7 +260,7 @@ struct TRINITY_DLL_DECL boss_reliquary_of_soulsAI : public ScriptedAI
if (Phase == 3) if (Phase == 3)
{ {
if (!Essence->isAlive()) if (!Essence->isAlive())
m_creature->CastSpell(m_creature, 7, true); DoCast(m_creature, 7, true);
else return; else return;
} }
else else
@@ -372,9 +372,9 @@ struct TRINITY_DLL_DECL boss_essence_of_sufferingAI : public ScriptedAI
{ {
DoScriptText(SUFF_SAY_FREED, m_creature); DoScriptText(SUFF_SAY_FREED, m_creature);
DoZoneInCombat(); DoZoneInCombat();
m_creature->CastSpell(m_creature, AURA_OF_SUFFERING, true); // linked aura need core support DoCast(m_creature, AURA_OF_SUFFERING, true); // linked aura need core support
m_creature->CastSpell(m_creature, ESSENCE_OF_SUFFERING_PASSIVE, true); DoCast(m_creature, ESSENCE_OF_SUFFERING_PASSIVE, true);
m_creature->CastSpell(m_creature, ESSENCE_OF_SUFFERING_PASSIVE2, true); DoCast(m_creature, ESSENCE_OF_SUFFERING_PASSIVE2, true);
} }
else return; else return;
} }
@@ -509,7 +509,7 @@ struct TRINITY_DLL_DECL boss_essence_of_desireAI : public ScriptedAI
if (RuneShieldTimer <= diff) if (RuneShieldTimer <= diff)
{ {
m_creature->InterruptNonMeleeSpells(false); m_creature->InterruptNonMeleeSpells(false);
m_creature->CastSpell(m_creature, SPELL_RUNE_SHIELD, true); DoCast(m_creature, SPELL_RUNE_SHIELD, true);
SoulShockTimer += 2000; SoulShockTimer += 2000;
DeadenTimer += 2000; DeadenTimer += 2000;
RuneShieldTimer = 60000; RuneShieldTimer = 60000;
@@ -179,7 +179,7 @@ struct TRINITY_DLL_DECL boss_supremusAI : public ScriptedAI
switch(eventId) switch(eventId)
{ {
case EVENT_BERSERK: case EVENT_BERSERK:
m_creature->CastSpell(m_creature, SPELL_BERSERK, true); DoCast(m_creature, SPELL_BERSERK, true);
break; break;
case EVENT_FLAME: case EVENT_FLAME:
DoCast(m_creature, SPELL_MOLTEN_PUNCH); DoCast(m_creature, SPELL_MOLTEN_PUNCH);
@@ -99,7 +99,7 @@ struct TRINITY_DLL_DECL boss_najentusAI : public ScriptedAI
if (spell->Id == SPELL_HURL_SPINE && m_creature->HasAura(SPELL_TIDAL_SHIELD)) if (spell->Id == SPELL_HURL_SPINE && m_creature->HasAura(SPELL_TIDAL_SHIELD))
{ {
m_creature->RemoveAurasDueToSpell(SPELL_TIDAL_SHIELD); m_creature->RemoveAurasDueToSpell(SPELL_TIDAL_SHIELD);
m_creature->CastSpell(m_creature, SPELL_TIDAL_BURST, true); DoCast(m_creature, SPELL_TIDAL_BURST, true);
ResetTimer(); ResetTimer();
} }
} }
@@ -145,12 +145,12 @@ struct TRINITY_DLL_DECL boss_najentusAI : public ScriptedAI
switch(eventId) switch(eventId)
{ {
case EVENT_SHIELD: case EVENT_SHIELD:
m_creature->CastSpell(m_creature, SPELL_TIDAL_SHIELD, true); DoCast(m_creature, SPELL_TIDAL_SHIELD, true);
ResetTimer(45000); ResetTimer(45000);
break; break;
case EVENT_BERSERK: case EVENT_BERSERK:
DoScriptText(SAY_ENRAGE2, m_creature); DoScriptText(SAY_ENRAGE2, m_creature);
m_creature->CastSpell(m_creature, SPELL_BERSERK, true); DoCast(m_creature, SPELL_BERSERK, true);
events.DelayEvents(15000, GCD_YELL); events.DelayEvents(15000, GCD_YELL);
break; break;
case EVENT_SPINE: case EVENT_SPINE:
@@ -159,7 +159,7 @@ struct TRINITY_DLL_DECL boss_najentusAI : public ScriptedAI
if (!pTarget) pTarget = m_creature->getVictim(); if (!pTarget) pTarget = m_creature->getVictim();
if (pTarget) if (pTarget)
{ {
m_creature->CastSpell(pTarget, SPELL_IMPALING_SPINE, true); DoCast(pTarget, SPELL_IMPALING_SPINE, true);
SpineTargetGUID = pTarget->GetGUID(); SpineTargetGUID = pTarget->GetGUID();
//must let target summon, otherwise you cannot click the spine //must let target summon, otherwise you cannot click the spine
pTarget->SummonGameObject(GOBJECT_SPINE, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), m_creature->GetOrientation(), 0, 0, 0, 0, 30); pTarget->SummonGameObject(GOBJECT_SPINE, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), m_creature->GetOrientation(), 0, 0, 0, 0, 30);
@@ -172,11 +172,11 @@ struct TRINITY_DLL_DECL boss_najentusAI : public ScriptedAI
} }
case EVENT_NEEDLE: case EVENT_NEEDLE:
{ {
//m_creature->CastSpell(m_creature, SPELL_NEEDLE_SPINE, true); //DoCast(m_creature, SPELL_NEEDLE_SPINE, true);
std::list<Unit*> pTargets; std::list<Unit*> pTargets;
SelectTargetList(pTargets, 3, SELECT_TARGET_RANDOM, 80, true); SelectTargetList(pTargets, 3, SELECT_TARGET_RANDOM, 80, true);
for (std::list<Unit*>::iterator i = pTargets.begin(); i != pTargets.end(); ++i) for (std::list<Unit*>::iterator i = pTargets.begin(); i != pTargets.end(); ++i)
m_creature->CastSpell(*i, 39835, true); DoCast(*i, 39835, true);
events.ScheduleEvent(EVENT_NEEDLE, urand(15000,25000), GCD_CAST); events.ScheduleEvent(EVENT_NEEDLE, urand(15000,25000), GCD_CAST);
events.DelayEvents(1500, GCD_CAST); events.DelayEvents(1500, GCD_CAST);
return; return;
@@ -157,9 +157,9 @@ struct TRINITY_DLL_DECL instance_black_temple : public ScriptedInstance
if (m_auiEncounter[1] == DONE)HandleGameObject(NULL,true,pGo);break; if (m_auiEncounter[1] == DONE)HandleGameObject(NULL,true,pGo);break;
case 185478: ShadeOfAkamaDoor = pGo->GetGUID();break; case 185478: ShadeOfAkamaDoor = pGo->GetGUID();break;
case 185480: CommonDoor = pGo->GetGUID(); case 185480: CommonDoor = pGo->GetGUID();
if (m_auiEncounter[3] == DONE)HandleGameObject(NULL,true,pGo);;break; if (m_auiEncounter[3] == DONE)HandleGameObject(NULL,true,pGo);break;
case 186153: TeronDoor = pGo->GetGUID(); case 186153: TeronDoor = pGo->GetGUID();
if (m_auiEncounter[3] == DONE)HandleGameObject(NULL,true,pGo);;break; if (m_auiEncounter[3] == DONE)HandleGameObject(NULL,true,pGo);break;
case 185892: GuurtogDoor = pGo->GetGUID(); case 185892: GuurtogDoor = pGo->GetGUID();
if (m_auiEncounter[4] == DONE)HandleGameObject(NULL,true,pGo);break; if (m_auiEncounter[4] == DONE)HandleGameObject(NULL,true,pGo);break;
case 185479: TempleDoor = pGo->GetGUID(); case 185479: TempleDoor = pGo->GetGUID();
@@ -264,7 +264,7 @@ struct TRINITY_DLL_DECL npc_daranelleAI : public ScriptedAI
{ {
DoScriptText(SAY_SPELL_INFLUENCE, m_creature, who); DoScriptText(SAY_SPELL_INFLUENCE, m_creature, who);
//TODO: Move the below to updateAI and run if this statement == true //TODO: Move the below to updateAI and run if this statement == true
m_creature->CastSpell(who,37028,true); DoCast(who, 37028, true);
} }
} }
@@ -897,7 +897,7 @@ struct TRINITY_DLL_DECL mob_shield_generator_channelAI : public ScriptedAI
//start visual channel //start visual channel
if (!Casted || !Vashj->HasAura(SPELL_MAGIC_BARRIER)) if (!Casted || !Vashj->HasAura(SPELL_MAGIC_BARRIER))
{ {
m_creature->CastSpell(Vashj,SPELL_MAGIC_BARRIER,true); DoCast(Vashj, SPELL_MAGIC_BARRIER, true);
Casted = true; Casted = true;
} }
} }
@@ -198,7 +198,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
m_creature->SetDisplayId(MODEL_NIGHTELF); m_creature->SetDisplayId(MODEL_NIGHTELF);
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0); m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID , 0);
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0); m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0);
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true); DoCast(m_creature, SPELL_DUAL_WIELD, true);
m_creature->SetCorpseDelay(1000*60*60); m_creature->SetCorpseDelay(1000*60*60);
if (pInstance) if (pInstance)
pInstance->SetData(DATA_LEOTHERASTHEBLINDEVENT, NOT_STARTED); pInstance->SetData(DATA_LEOTHERASTHEBLINDEVENT, NOT_STARTED);
@@ -469,7 +469,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blindAI : public ScriptedAI
// will cast only when in range of spell // will cast only when in range of spell
if (m_creature->IsWithinDist(m_creature->getVictim(), 30)) if (m_creature->IsWithinDist(m_creature->getVictim(), 30))
{ {
//m_creature->CastSpell(m_creature->getVictim(), SPELL_CHAOS_BLAST, true); //DoCast(m_creature->getVictim(), SPELL_CHAOS_BLAST, true);
int damage = 100; int damage = 100;
m_creature->CastCustomSpell(m_creature->getVictim(), SPELL_CHAOS_BLAST, &damage, NULL, NULL, false, NULL, NULL, m_creature->GetGUID()); m_creature->CastCustomSpell(m_creature->getVictim(), SPELL_CHAOS_BLAST, &damage, NULL, NULL, false, NULL, NULL, m_creature->GetGUID());
} }
@@ -592,7 +592,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blind_demonformAI : public ScriptedAI
void JustDied(Unit *victim) void JustDied(Unit *victim)
{ {
//invisibility (blizzlike, at the end of the fight he doesn't die, he disappears) //invisibility (blizzlike, at the end of the fight he doesn't die, he disappears)
m_creature->CastSpell(m_creature, 8149, true); DoCast(m_creature, 8149, true);
} }
void EnterCombat(Unit *who) void EnterCombat(Unit *who)
@@ -614,7 +614,7 @@ struct TRINITY_DLL_DECL boss_leotheras_the_blind_demonformAI : public ScriptedAI
// will cast only when in range od spell // will cast only when in range od spell
if (m_creature->IsWithinDist(m_creature->getVictim(), 30)) if (m_creature->IsWithinDist(m_creature->getVictim(), 30))
{ {
//m_creature->CastSpell(m_creature->getVictim(),SPELL_CHAOS_BLAST,true); //DoCast(m_creature->getVictim(), SPELL_CHAOS_BLAST, true);
int damage = 100; int damage = 100;
m_creature->CastCustomSpell(m_creature->getVictim(), SPELL_CHAOS_BLAST, &damage, NULL, NULL, false, NULL, NULL, m_creature->GetGUID()); m_creature->CastCustomSpell(m_creature->getVictim(), SPELL_CHAOS_BLAST, &damage, NULL, NULL, false, NULL, NULL, m_creature->GetGUID());
ChaosBlast_Timer = 3000; ChaosBlast_Timer = 3000;
@@ -628,7 +628,7 @@ struct TRINITY_DLL_DECL mob_greyheart_spellbinderAI : public ScriptedAI
{ {
mob_greyheart_spellbinderAI(Creature *c) : ScriptedAI(c) mob_greyheart_spellbinderAI(Creature *c) : ScriptedAI(c)
{ {
pInstance = c->GetInstanceData();; pInstance = c->GetInstanceData();
leotherasGUID = 0; leotherasGUID = 0;
AddedBanish = false; AddedBanish = false;
} }
@@ -133,7 +133,7 @@ struct TRINITY_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI
Charging_Timer = 0; Charging_Timer = 0;
Roar_Timer = 0; Roar_Timer = 0;
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, false); DoCast(m_creature, SPELL_DUAL_WIELD, false);
Phase2 = false; Phase2 = false;
@@ -258,7 +258,7 @@ struct TRINITY_DLL_DECL boss_high_king_maulgarAI : public ScriptedAI
Phase2 = true; Phase2 = true;
DoScriptText(SAY_ENRAGE, m_creature); DoScriptText(SAY_ENRAGE, m_creature);
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true); DoCast(m_creature, SPELL_DUAL_WIELD, true);
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 0); m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 0);
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0); m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0);
} }
@@ -109,7 +109,7 @@ struct TRINITY_DLL_DECL mob_abyssalAI : public ScriptedAI
{ {
if (trigger == 2 && spell->Id == SPELL_BLAZE_TARGET) if (trigger == 2 && spell->Id == SPELL_BLAZE_TARGET)
{ {
m_creature->CastSpell(m_creature, SPELL_BLAZE_TRAP, true); DoCast(m_creature, SPELL_BLAZE_TRAP, true);
m_creature->SetVisibility(VISIBILITY_OFF); m_creature->SetVisibility(VISIBILITY_OFF);
Despawn_Timer = 130000; Despawn_Timer = 130000;
} }
@@ -122,7 +122,7 @@ struct TRINITY_DLL_DECL mob_abyssalAI : public ScriptedAI
if (trigger == 1) //debris if (trigger == 1) //debris
{ {
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
m_creature->CastSpell(m_creature, SPELL_DEBRIS_VISUAL, true); DoCast(m_creature, SPELL_DEBRIS_VISUAL, true);
FireBlast_Timer = 5000; FireBlast_Timer = 5000;
Despawn_Timer = 10000; Despawn_Timer = 10000;
} }
@@ -140,7 +140,7 @@ struct TRINITY_DLL_DECL mob_abyssalAI : public ScriptedAI
{ {
if (FireBlast_Timer <= diff) if (FireBlast_Timer <= diff)
{ {
m_creature->CastSpell(m_creature, SPELL_DEBRIS_DAMAGE, true); DoCast(m_creature, SPELL_DEBRIS_DAMAGE, true);
trigger = 3; trigger = 3;
} else FireBlast_Timer -= diff; } else FireBlast_Timer -= diff;
} }
@@ -220,7 +220,7 @@ struct TRINITY_DLL_DECL boss_magtheridonAI : public ScriptedAI
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
m_creature->addUnitState(UNIT_STAT_STUNNED); m_creature->addUnitState(UNIT_STAT_STUNNED);
m_creature->CastSpell(m_creature, SPELL_SHADOW_CAGE_C, true); DoCast(m_creature, SPELL_SHADOW_CAGE_C, true);
} }
void JustReachedHome() void JustReachedHome()
@@ -271,7 +271,7 @@ struct TRINITY_DLL_DECL boss_magtheridonAI : public ScriptedAI
if (ClickerNum >= CLICKERS_COUNT && !m_creature->HasAura(SPELL_SHADOW_CAGE)) if (ClickerNum >= CLICKERS_COUNT && !m_creature->HasAura(SPELL_SHADOW_CAGE))
{ {
DoScriptText(SAY_BANISH, m_creature); DoScriptText(SAY_BANISH, m_creature);
m_creature->CastSpell(m_creature, SPELL_SHADOW_CAGE, true); DoCast(m_creature, SPELL_SHADOW_CAGE, true);
} }
else if (ClickerNum < CLICKERS_COUNT && m_creature->HasAura(SPELL_SHADOW_CAGE)) else if (ClickerNum < CLICKERS_COUNT && m_creature->HasAura(SPELL_SHADOW_CAGE))
m_creature->RemoveAurasDueToSpell(SPELL_SHADOW_CAGE); m_creature->RemoveAurasDueToSpell(SPELL_SHADOW_CAGE);
@@ -330,7 +330,7 @@ struct TRINITY_DLL_DECL boss_magtheridonAI : public ScriptedAI
if (Berserk_Timer <= diff) if (Berserk_Timer <= diff)
{ {
m_creature->CastSpell(m_creature, SPELL_BERSERK, true); DoCast(m_creature, SPELL_BERSERK, true);
DoScriptText(EMOTE_BERSERK, m_creature); DoScriptText(EMOTE_BERSERK, m_creature);
Berserk_Timer = 60000; Berserk_Timer = 60000;
} else Berserk_Timer -= diff; } else Berserk_Timer -= diff;
@@ -357,7 +357,7 @@ struct TRINITY_DLL_DECL boss_magtheridonAI : public ScriptedAI
// to avoid blastnova interruption // to avoid blastnova interruption
if (!m_creature->IsNonMeleeSpellCasted(false)) if (!m_creature->IsNonMeleeSpellCasted(false))
{ {
m_creature->CastSpell(m_creature, SPELL_QUAKE_TRIGGER, true); DoCast(m_creature, SPELL_QUAKE_TRIGGER, true);
Quake_Timer = 50000; Quake_Timer = 50000;
} }
} else Quake_Timer -= diff; } else Quake_Timer -= diff;
@@ -372,7 +372,7 @@ struct TRINITY_DLL_DECL boss_magtheridonAI : public ScriptedAI
if (summon) if (summon)
{ {
CAST_AI(mob_abyssalAI, summon->AI())->SetTrigger(2); CAST_AI(mob_abyssalAI, summon->AI())->SetTrigger(2);
m_creature->CastSpell(summon, SPELL_BLAZE_TARGET, true); DoCast(summon, SPELL_BLAZE_TARGET, true);
summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
} }
} }
@@ -385,8 +385,8 @@ struct TRINITY_DLL_DECL boss_magtheridonAI : public ScriptedAI
{ {
Phase3 = true; Phase3 = true;
DoScriptText(SAY_CHAMBER_DESTROY, m_creature); DoScriptText(SAY_CHAMBER_DESTROY, m_creature);
m_creature->CastSpell(m_creature, SPELL_CAMERA_SHAKE, true); DoCast(m_creature, SPELL_CAMERA_SHAKE, true);
m_creature->CastSpell(m_creature, SPELL_DEBRIS_KNOCKDOWN, true); DoCast(m_creature, SPELL_DEBRIS_KNOCKDOWN, true);
if (pInstance) if (pInstance)
pInstance->SetData(DATA_COLLAPSE, true); pInstance->SetData(DATA_COLLAPSE, true);
@@ -451,7 +451,7 @@ struct TRINITY_DLL_DECL mob_hellfire_channelerAI : public ScriptedAI
if (pInstance) if (pInstance)
pInstance->SetData(DATA_CHANNELER_EVENT, NOT_STARTED); pInstance->SetData(DATA_CHANNELER_EVENT, NOT_STARTED);
m_creature->CastSpell(m_creature, SPELL_SHADOW_GRASP_C, false); DoCast(m_creature, SPELL_SHADOW_GRASP_C, false);
} }
void JustSummoned(Creature *summon) void JustSummoned(Creature *summon)
@@ -462,7 +462,7 @@ struct TRINITY_DLL_DECL mob_hellfire_channelerAI : public ScriptedAI
void DamageTaken(Unit*, uint32 &damage) void DamageTaken(Unit*, uint32 &damage)
{ {
if (damage >= m_creature->GetHealth()) if (damage >= m_creature->GetHealth())
m_creature->CastSpell(m_creature, SPELL_SOUL_TRANSFER, true); DoCast(m_creature, SPELL_SOUL_TRANSFER, true);
} }
void JustDied(Unit* who) void JustDied(Unit* who)
@@ -499,7 +499,7 @@ struct TRINITY_DLL_DECL mob_hellfire_channelerAI : public ScriptedAI
if (Infernal_Timer <= diff) if (Infernal_Timer <= diff)
{ {
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
m_creature->CastSpell(pTarget, SPELL_BURNING_ABYSSAL, true); DoCast(pTarget, SPELL_BURNING_ABYSSAL, true);
Infernal_Timer = 30000 + rand()%10000; Infernal_Timer = 30000 + rand()%10000;
} else Infernal_Timer -= diff; } else Infernal_Timer -= diff;
@@ -151,7 +151,7 @@ struct TRINITY_DLL_DECL npc_ancestral_wolfAI : public npc_escortAI
void Reset() void Reset()
{ {
pRyga = NULL; pRyga = NULL;
m_creature->CastSpell(m_creature, SPELL_ANCESTRAL_WOLF_BUFF, true); DoCast(m_creature, SPELL_ANCESTRAL_WOLF_BUFF, true);
} }
void MoveInLineOfSight(Unit* pWho) void MoveInLineOfSight(Unit* pWho)
@@ -566,7 +566,7 @@ struct TRINITY_DLL_DECL npc_maghar_captiveAI : public npc_escortAI
void Aggro(Unit* pWho) void Aggro(Unit* pWho)
{ {
m_creature->CastSpell(m_creature, SPELL_EARTHBIND_TOTEM, false); DoCast(m_creature, SPELL_EARTHBIND_TOTEM, false);
} }
void WaypointReached(uint32 uiPointId) void WaypointReached(uint32 uiPointId)
@@ -808,7 +808,7 @@ struct TRINITY_DLL_DECL mob_sparrowhawkAI : public ScriptedAI
{ {
if (spell->Id == SPELL_SPARROWHAWK_NET && CAST_PLR(caster)->GetQuestStatus(10987) == QUEST_STATUS_INCOMPLETE) if (spell->Id == SPELL_SPARROWHAWK_NET && CAST_PLR(caster)->GetQuestStatus(10987) == QUEST_STATUS_INCOMPLETE)
{ {
m_creature->CastSpell(caster, SPELL_ITEM_CAPTIVE_SPARROWHAWK, true); DoCast(caster, SPELL_ITEM_CAPTIVE_SPARROWHAWK, true);
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
m_creature->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); m_creature->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
} }
@@ -204,7 +204,7 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI
if (Berserk_Timer <= diff) if (Berserk_Timer <= diff)
{ {
m_creature->CastSpell(m_creature, SPELL_BERSERK, true); DoCast(m_creature, SPELL_BERSERK, true);
Berserk_Timer = 60000; Berserk_Timer = 60000;
} else Berserk_Timer -= diff; } else Berserk_Timer -= diff;
@@ -235,7 +235,7 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI
Platforms_Move_Timer = 30000+rand()%5000; Platforms_Move_Timer = 30000+rand()%5000;
break; break;
case WE_QUILL: case WE_QUILL:
m_creature->CastSpell(m_creature, SPELL_FLAME_QUILLS, true); DoCast(m_creature, SPELL_FLAME_QUILLS, true);
Platforms_Move_Timer = 1; Platforms_Move_Timer = 1;
WaitTimer = 10000; WaitTimer = 10000;
WaitEvent = WE_DUMMY; WaitEvent = WE_DUMMY;
@@ -252,7 +252,7 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI
m_creature->SetSpeed(MOVE_RUN, DefaultMoveSpeedRate); m_creature->SetSpeed(MOVE_RUN, DefaultMoveSpeedRate);
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
DoZoneInCombat(); DoZoneInCombat();
m_creature->CastSpell(m_creature, SPELL_REBIRTH, true); DoCast(m_creature, SPELL_REBIRTH, true);
MeltArmor_Timer = 60000; MeltArmor_Timer = 60000;
Charge_Timer = 7000; Charge_Timer = 7000;
DiveBomb_Timer = 40000+rand()%5000; DiveBomb_Timer = 40000+rand()%5000;
@@ -261,7 +261,7 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI
break; break;
case WE_METEOR: case WE_METEOR:
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false); m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, false);
m_creature->CastSpell(m_creature, SPELL_DIVE_BOMB_VISUAL, false); DoCast(m_creature, SPELL_DIVE_BOMB_VISUAL, false);
WaitEvent = WE_DIVE; WaitEvent = WE_DIVE;
WaitTimer = 4000; WaitTimer = 4000;
return; return;
@@ -269,7 +269,7 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
{ {
m_creature->RemoveAurasDueToSpell(SPELL_DIVE_BOMB_VISUAL); m_creature->RemoveAurasDueToSpell(SPELL_DIVE_BOMB_VISUAL);
m_creature->CastSpell(pTarget, SPELL_DIVE_BOMB, true); DoCast(pTarget, SPELL_DIVE_BOMB, true);
float dist = 3.0f; float dist = 3.0f;
if (m_creature->IsWithinDist3d(pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 5.0f)) if (m_creature->IsWithinDist3d(pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 5.0f))
dist = 5.0f; dist = 5.0f;
@@ -293,7 +293,7 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI
m_creature->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 10); m_creature->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 10);
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
m_creature->SetDisplayId(m_creature->GetNativeDisplayId()); m_creature->SetDisplayId(m_creature->GetNativeDisplayId());
m_creature->CastSpell(m_creature, SPELL_REBIRTH_2, true); DoCast(m_creature, SPELL_REBIRTH_2, true);
break; break;
case WE_DUMMY: case WE_DUMMY:
default: default:
@@ -413,7 +413,7 @@ struct TRINITY_DLL_DECL boss_alarAI : public ScriptedAI
m_creature->AI()->AttackStart(pTarget); m_creature->AI()->AttackStart(pTarget);
else else
{ {
m_creature->CastSpell(m_creature, SPELL_FLAME_BUFFET, true); DoCast(m_creature, SPELL_FLAME_BUFFET, true);
m_creature->setAttackTimer(BASE_ATTACK, 1500); m_creature->setAttackTimer(BASE_ATTACK, 1500);
} }
} }
@@ -447,7 +447,7 @@ struct TRINITY_DLL_DECL mob_ember_of_alarAI : public ScriptedAI
if (damage >= m_creature->GetHealth() && pKiller != m_creature && !toDie) if (damage >= m_creature->GetHealth() && pKiller != m_creature && !toDie)
{ {
damage = 0; damage = 0;
m_creature->CastSpell(m_creature, SPELL_EMBER_BLAST, true); DoCast(m_creature, SPELL_EMBER_BLAST, true);
m_creature->SetDisplayId(11686); m_creature->SetDisplayId(11686);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
if (pInstance && pInstance->GetData(DATA_ALAREVENT) == 2) if (pInstance && pInstance->GetData(DATA_ALAREVENT) == 2)
@@ -640,12 +640,12 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
//Spawn weapons //Spawn weapons
if (PhaseSubphase == 1) if (PhaseSubphase == 1)
{ {
m_creature->CastSpell(m_creature, SPELL_SUMMON_WEAPONS, false); DoCast(m_creature, SPELL_SUMMON_WEAPONS, false);
uint8 uiMaxWeapon = sizeof(m_auiSpellSummonWeapon)/sizeof(uint32); uint8 uiMaxWeapon = sizeof(m_auiSpellSummonWeapon)/sizeof(uint32);
for (uint32 i = 0; i < uiMaxWeapon; ++i) for (uint32 i = 0; i < uiMaxWeapon; ++i)
m_creature->CastSpell(m_creature,m_auiSpellSummonWeapon[i],true); DoCast(m_creature, m_auiSpellSummonWeapon[i], true);
PhaseSubphase = 2; PhaseSubphase = 2;
Phase_Timer = TIME_PHASE_2_3; Phase_Timer = TIME_PHASE_2_3;
@@ -887,7 +887,7 @@ struct TRINITY_DLL_DECL boss_kaelthasAI : public ScriptedAI
{ {
if (Unit* pUnit = Unit::GetUnit((*m_creature), (*i)->getUnitGuid())) if (Unit* pUnit = Unit::GetUnit((*m_creature), (*i)->getUnitGuid()))
{ {
m_creature->CastSpell(pUnit, SPELL_KNOCKBACK, true); DoCast(pUnit, SPELL_KNOCKBACK, true);
//Gravity lapse - needs an exception in Spell system to work //Gravity lapse - needs an exception in Spell system to work
pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE, true, 0, 0, m_creature->GetGUID()); pUnit->CastSpell(pUnit, SPELL_GRAVITY_LAPSE, true, 0, 0, m_creature->GetGUID());
@@ -1340,13 +1340,13 @@ struct TRINITY_DLL_DECL mob_phoenix_tkAI : public ScriptedAI
void Reset() void Reset()
{ {
Cycle_Timer = 2000; Cycle_Timer = 2000;
m_creature->CastSpell(m_creature,SPELL_BURN,true); DoCast(m_creature, SPELL_BURN, true);
} }
void JustDied(Unit* killer) void JustDied(Unit* killer)
{ {
//is this spell in use anylonger? //is this spell in use anylonger?
//m_creature->CastSpell(m_creature,SPELL_EMBER_BLAST,true); //DoCast(m_creature, SPELL_EMBER_BLAST, true);
m_creature->SummonCreature(NPC_PHOENIX_EGG,m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(),m_creature->GetOrientation(),TEMPSUMMON_TIMED_DESPAWN,16000); m_creature->SummonCreature(NPC_PHOENIX_EGG,m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(),m_creature->GetOrientation(),TEMPSUMMON_TIMED_DESPAWN,16000);
} }
@@ -57,7 +57,7 @@ struct TRINITY_DLL_DECL mob_crystalcore_devastatorAI : public ScriptedAI
//Knockaway_Timer //Knockaway_Timer
if (Knockaway_Timer <= diff) if (Knockaway_Timer <= diff)
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_KNOCKAWAY, true); DoCast(m_creature->getVictim(), SPELL_KNOCKAWAY, true);
// current aggro target is knocked away pick new target // current aggro target is knocked away pick new target
Unit* pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO, 0); Unit* pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO, 0);
@@ -160,7 +160,7 @@ struct TRINITY_DLL_DECL mob_infested_root_walkerAI : public ScriptedAI
if (m_creature->GetHealth() <= damage) if (m_creature->GetHealth() <= damage)
if (rand()%100 < 75) if (rand()%100 < 75)
//Summon Wood Mites //Summon Wood Mites
m_creature->CastSpell(m_creature,39130,true); DoCast(m_creature, 39130, true);
} }
}; };
CreatureAI* GetAI_mob_infested_root_walker(Creature* pCreature) CreatureAI* GetAI_mob_infested_root_walker(Creature* pCreature)
@@ -240,7 +240,7 @@ struct TRINITY_DLL_DECL mob_rotting_forest_ragerAI : public ScriptedAI
if (m_creature->GetHealth() <= damage) if (m_creature->GetHealth() <= damage)
if (rand()%100 < 75) if (rand()%100 < 75)
//Summon Lots of Wood Mights //Summon Lots of Wood Mights
m_creature->CastSpell(m_creature,39134,true); DoCast(m_creature, 39134, true);
} }
}; };
CreatureAI* GetAI_mob_rotting_forest_rager(Creature* pCreature) CreatureAI* GetAI_mob_rotting_forest_rager(Creature* pCreature)
@@ -183,7 +183,7 @@ struct TRINITY_DLL_DECL boss_taerarAI : public ScriptedAI
int iSize = sizeof(m_auiSpellSummonShade) / sizeof(uint32); int iSize = sizeof(m_auiSpellSummonShade) / sizeof(uint32);
for (int i = 0; i < iSize; ++i) for (int i = 0; i < iSize; ++i)
m_creature->CastSpell(pTarget, m_auiSpellSummonShade[i], true); DoCast(pTarget, m_auiSpellSummonShade[i], true);
++m_uiShadesSummoned; // prevent casting twice at same health ++m_uiShadesSummoned; // prevent casting twice at same health
m_bShades = true; m_bShades = true;
@@ -398,7 +398,7 @@ struct TRINITY_DLL_DECL npc_dancing_flamesAI : public ScriptedAI
case TEXTEMOTE_DANCE: case TEXTEMOTE_DANCE:
{ {
if (!pPlayer->HasAura(SPELL_SEDUCTION)) if (!pPlayer->HasAura(SPELL_SEDUCTION))
m_creature->CastSpell(pPlayer,SPELL_SEDUCTION,true); DoCast(pPlayer, SPELL_SEDUCTION, true);
} }
break; break;
} }
@@ -1027,7 +1027,7 @@ struct TRINITY_DLL_DECL npc_guardianAI : public ScriptedAI
if (m_creature->isAttackReady()) if (m_creature->isAttackReady())
{ {
m_creature->CastSpell(m_creature->getVictim(),SPELL_DEATHTOUCH, true); DoCast(m_creature->getVictim(), SPELL_DEATHTOUCH, true);
m_creature->resetAttackTimer(); m_creature->resetAttackTimer();
} }
} }
@@ -1443,7 +1443,7 @@ struct TRINITY_DLL_DECL npc_tonk_mineAI : public ScriptedAI
{ {
if (ExplosionTimer <= diff) if (ExplosionTimer <= diff)
{ {
m_creature->CastSpell(m_creature, SPELL_TONK_MINE_DETONATE, true); DoCast(m_creature, SPELL_TONK_MINE_DETONATE, true);
m_creature->setDeathState(DEAD); // unsummon it m_creature->setDeathState(DEAD); // unsummon it
} else } else
ExplosionTimer -= diff; ExplosionTimer -= diff;
@@ -1681,7 +1681,7 @@ struct TRINITY_DLL_DECL mob_mojoAI : public ScriptedAI
} }
m_creature->AddAura(43906,pPlayer);//add polymorph frog thing m_creature->AddAura(43906,pPlayer);//add polymorph frog thing
victimGUID = pPlayer->GetGUID(); victimGUID = pPlayer->GetGUID();
m_creature->CastSpell(m_creature,20372,true);//tag.hearts DoCast(m_creature, 20372, true);//tag.hearts
m_creature->GetMotionMaster()->MoveFollow(pPlayer,0,0); m_creature->GetMotionMaster()->MoveFollow(pPlayer,0,0);
hearts = 15000; hearts = 15000;
} }
@@ -1824,7 +1824,7 @@ struct TRINITY_DLL_DECL npc_lightwellAI : public PassiveAI
void Reset() void Reset()
{ {
m_creature->CastSpell(m_creature, 59907, false); // Spell for Lightwell Charges DoCast(m_creature, 59907, false); // Spell for Lightwell Charges
} }
}; };