Fix normal10/normal25 raid detection in scripts.

Replace HEROIC(n,h) macro by DUNGEON_MODE(n,h), RAID_MODE(n10,n25) and RAID_MODE(n10,n25,h10,h25) functions
Cleanup all HeroicMode like flags in ScriptedAI sub-class
Fix some missing virtual destructors

--HG--
branch : trunk
This commit is contained in:
Trazom62
2010-01-12 20:51:59 +01:00
parent aeb008d4ef
commit 6cf82048a5
103 changed files with 454 additions and 536 deletions
+2 -1
View File
@@ -87,7 +87,8 @@ ScriptedAI::ScriptedAI(Creature* pCreature) : CreatureAI(pCreature),
m_bCombatMovement(true),
m_uiEvadeCheckCooldown(2500)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
m_heroicMode = m_creature->GetMap()->IsHeroic();
m_difficulty = Difficulty(m_creature->GetMap()->GetSpawnMode());
}
void ScriptedAI::AttackStartNoMove(Unit* pWho)
+62 -3
View File
@@ -43,7 +43,7 @@ class SummonList : public std::list<uint64>
struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
{
explicit ScriptedAI(Creature* pCreature);
~ScriptedAI() {}
virtual ~ScriptedAI() {}
//*************
//CreatureAI Functions
@@ -91,8 +91,6 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
//For fleeing
bool IsFleeing;
bool HeroicMode;
//*************
//Pure virtual functions
//*************
@@ -171,14 +169,74 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
bool EnterEvadeIfOutOfCombatArea(const uint32 uiDiff);
// return true for heroic mode. i.e.
// - for dungeon in mode 10-heroic,
// - for raid in mode 10-Heroic
// - for raid in mode 25-heroic
// DO NOT USE to check raid in mode 25-normal.
bool IsHeroic() { return m_heroicMode; }
// return the dungeon or raid difficulty
Difficulty getDifficulty() { return m_difficulty; }
template<class T> inline
const T& DUNGEON_MODE(const T& normal5, const T& heroic10)
{
switch(m_difficulty)
{
case DUNGEON_DIFFICULTY_NORMAL:
return normal5;
case DUNGEON_DIFFICULTY_HEROIC:
return heroic10;
}
return heroic10;
}
template<class T> inline
const T& RAID_MODE(const T& normal10, const T& normal25)
{
switch(m_difficulty)
{
case RAID_DIFFICULTY_10MAN_NORMAL:
return normal10;
case RAID_DIFFICULTY_25MAN_NORMAL:
return normal25;
}
return normal25;
}
template<class T> inline
const T& RAID_MODE(const T& normal10, const T& normal25, const T& heroic10, const T& heroic25)
{
switch(m_difficulty)
{
case RAID_DIFFICULTY_10MAN_NORMAL:
return normal10;
case RAID_DIFFICULTY_25MAN_NORMAL:
return normal25;
case RAID_DIFFICULTY_10MAN_HEROIC:
return heroic10;
case RAID_DIFFICULTY_25MAN_HEROIC:
return heroic25;
}
return heroic25;
}
private:
bool m_bCombatMovement;
uint32 m_uiEvadeCheckCooldown;
bool m_heroicMode;
Difficulty m_difficulty;
};
struct TRINITY_DLL_DECL Scripted_NoMovementAI : public ScriptedAI
{
Scripted_NoMovementAI(Creature* creature) : ScriptedAI(creature) {}
virtual ~Scripted_NoMovementAI() {}
//Called at each attack of m_creature by any victim
void AttackStart(Unit* who);
@@ -187,6 +245,7 @@ struct TRINITY_DLL_DECL Scripted_NoMovementAI : public ScriptedAI
struct TRINITY_DLL_DECL BossAI : public ScriptedAI
{
BossAI(Creature *c, uint32 id);
virtual ~BossAI() {}
const uint32 bossId;
EventMap events;
@@ -80,7 +80,6 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
boss_felblood_kaelthasAI(Creature* c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
Heroic = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
@@ -102,7 +101,6 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
// 4 = Applied an aura that allows them to fly, channeling visual, relased Arcane Orbs.
bool FirstGravityLapse;
bool Heroic;
bool HasTaunted;
uint8 Phase;
@@ -271,7 +269,7 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
case 0:
{
// *Heroic mode only:
if (Heroic)
if (IsHeroic())
{
if (PyroblastTimer <= diff)
{
@@ -285,7 +283,7 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
if (FireballTimer <= diff)
{
DoCast(m_creature->getVictim(), Heroic ? SPELL_FIREBALL_HEROIC : SPELL_FIREBALL_NORMAL);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_FIREBALL_NORMAL, SPELL_FIREBALL_HEROIC));
FireballTimer = urand(2000,6000);
} else FireballTimer -= diff;
@@ -421,11 +419,9 @@ struct TRINITY_DLL_DECL mob_felkael_flamestrikeAI : public ScriptedAI
{
mob_felkael_flamestrikeAI(Creature *c) : ScriptedAI(c)
{
Heroic = c->GetMap()->IsHeroic();
}
uint32 FlameStrikeTimer;
bool Heroic;
void Reset()
{
@@ -443,7 +439,7 @@ struct TRINITY_DLL_DECL mob_felkael_flamestrikeAI : public ScriptedAI
{
if (FlameStrikeTimer <= diff)
{
DoCast(m_creature, Heroic ? SPELL_FLAMESTRIKE1_HEROIC : SPELL_FLAMESTRIKE1_NORMAL, true);
DoCast(m_creature, DUNGEON_MODE(SPELL_FLAMESTRIKE1_NORMAL, SPELL_FLAMESTRIKE1_HEROIC), true);
m_creature->Kill(m_creature);
} else FlameStrikeTimer -= diff;
}
@@ -90,13 +90,11 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI
boss_priestess_delrissaAI(Creature* c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
Heroic = c->GetMap()->IsHeroic();
memset(&m_auiLackeyGUID, 0, sizeof(m_auiLackeyGUID));
LackeyEntryList.clear();
}
ScriptedInstance* pInstance;
bool Heroic;
std::vector<uint32> LackeyEntryList;
uint64 m_auiLackeyGUID[MAX_ACTIVE_LACKEY];
@@ -269,7 +267,7 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI
if (pAdd->isAlive())
pTarget = pAdd;
DoCast(pTarget, Heroic ? SPELL_RENEW_HEROIC : SPELL_RENEW_NORMAL);
DoCast(pTarget, DUNGEON_MODE(SPELL_RENEW_NORMAL, SPELL_RENEW_HEROIC));
RenewTimer = 5000;
} else RenewTimer -= diff;
@@ -314,7 +312,7 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI
if (SWPainTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, Heroic ? SPELL_SW_PAIN_HEROIC : SPELL_SW_PAIN_NORMAL);
DoCast(pTarget, DUNGEON_MODE(SPELL_SW_PAIN_NORMAL, SPELL_SW_PAIN_HEROIC));
SWPainTimer = 10000;
} else SWPainTimer -= diff;
@@ -67,11 +67,9 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
Crystals.push_back(guid);
}
}
Heroic = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool Heroic;
std::list<uint64> Crystals;
@@ -246,7 +244,7 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
} else DrainLifeTimer -= diff;
// Heroic only
if (Heroic)
if (IsHeroic())
{
if (DrainManaTimer <= diff)
{
@@ -272,8 +270,10 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
if (DrainCrystalTimer <= diff)
{
SelectNearestCrystal();
if (Heroic) DrainCrystalTimer = 10000 + rand()%5000;
else DrainCrystalTimer = 20000 + rand()%5000;
if (IsHeroic())
DrainCrystalTimer = 10000 + rand()%5000;
else
DrainCrystalTimer = 20000 + rand()%5000;
} else DrainCrystalTimer -= diff;
}
@@ -62,11 +62,9 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI
boss_vexallusAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
Heroic = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool Heroic;
uint32 ChainLightningTimer;
uint32 ArcaneShockTimer;
@@ -136,7 +134,7 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI
DoScriptText(SAY_ENERGY, m_creature);
DoScriptText(EMOTE_DISCHARGE_ENERGY, m_creature);
if (Heroic)
if (IsHeroic())
{
DoCast(m_creature, H_SPELL_SUMMON_PURE_ENERGY1, false);
DoCast(m_creature, H_SPELL_SUMMON_PURE_ENERGY2, false);
@@ -147,14 +145,14 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI
//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);
if (Heroic)
if (IsHeroic())
m_creature->SummonCreature(NPC_PURE_ENERGY, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
}
if (ChainLightningTimer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
DoCast(pTarget, Heroic ? SPELL_H_CHAIN_LIGHTNING : SPELL_CHAIN_LIGHTNING);
DoCast(pTarget, DUNGEON_MODE(SPELL_CHAIN_LIGHTNING, SPELL_H_CHAIN_LIGHTNING));
ChainLightningTimer = 8000;
} else ChainLightningTimer -= diff;
@@ -163,7 +161,7 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
if (pTarget)
DoCast(pTarget, Heroic ? SPELL_H_ARCANE_SHOCK : SPELL_ARCANE_SHOCK);
DoCast(pTarget, DUNGEON_MODE(SPELL_ARCANE_SHOCK, SPELL_H_ARCANE_SHOCK));
ArcaneShockTimer = 8000;
} else ArcaneShockTimer -= diff;
@@ -116,7 +116,7 @@ struct TRINITY_DLL_DECL boss_epochAI : public ScriptedAI
if (uiWoundingStrikeTimer < diff)
{
DoCastVictim(HEROIC(SPELL_WOUNDING_STRIKE, H_SPELL_WOUNDING_STRIKE));
DoCastVictim(DUNGEON_MODE(SPELL_WOUNDING_STRIKE, H_SPELL_WOUNDING_STRIKE));
uiWoundingStrikeTimer = 5300;
} else uiWoundingStrikeTimer -= diff;
@@ -156,14 +156,14 @@ struct TRINITY_DLL_DECL boss_mal_ganisAI : public ScriptedAI
if (uiCarrionSwarmTimer < diff)
{
DoCastVictim(HEROIC(SPELL_CARRION_SWARM,H_SPELL_CARRION_SWARM));
DoCastVictim(DUNGEON_MODE(SPELL_CARRION_SWARM,H_SPELL_CARRION_SWARM));
uiCarrionSwarmTimer = 7000;
} else uiCarrionSwarmTimer -= diff;
if (uiMindBlastTimer < diff)
{
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_MIND_BLAST, H_SPELL_MIND_BLAST));
DoCast(pTarget, DUNGEON_MODE(SPELL_MIND_BLAST, H_SPELL_MIND_BLAST));
} else uiMindBlastTimer -= diff;
if (uiVampiricTouchTimer < diff)
@@ -175,7 +175,7 @@ struct TRINITY_DLL_DECL boss_mal_ganisAI : public ScriptedAI
if (uiSleepTimer < diff)
{
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_SLEEP, H_SPELL_SLEEP));
DoCast(pTarget, DUNGEON_MODE(SPELL_SLEEP, H_SPELL_SLEEP));
uiSleepTimer = urand(15000,20000);
} else uiSleepTimer -= diff;
@@ -87,7 +87,7 @@ struct TRINITY_DLL_DECL boss_meathookAI : public ScriptedAI
if (uiDiseaseTimer <= diff)
{
DoCastAOE(HEROIC(SPELL_DISEASE_EXPULSION,H_SPELL_DISEASE_EXPULSION));
DoCastAOE(DUNGEON_MODE(SPELL_DISEASE_EXPULSION,H_SPELL_DISEASE_EXPULSION));
uiDiseaseTimer = urand(1500,4000);
} else uiDiseaseTimer -= diff;
@@ -100,7 +100,7 @@ struct TRINITY_DLL_DECL boss_meathookAI : public ScriptedAI
if (uiChainTimer <= diff)
{
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_CONSTRICTING_CHAINS, H_SPELL_CONSTRICTING_CHAINS)); //anyone but the tank
DoCast(pTarget, DUNGEON_MODE(SPELL_CONSTRICTING_CHAINS, H_SPELL_CONSTRICTING_CHAINS)); //anyone but the tank
uiChainTimer = urand(2000,4000);
} else uiChainTimer -= diff;
@@ -113,7 +113,7 @@ struct TRINITY_DLL_DECL boss_salrammAI : public ScriptedAI
if (Shadow_bolt_Timer <= diff)
{
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
DoCast(pTarget, HEROIC(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
DoCast(pTarget, DUNGEON_MODE(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
Shadow_bolt_Timer = urand(8000,12000);
} else Shadow_bolt_Timer -= diff;
@@ -46,11 +46,9 @@ struct TRINITY_DLL_DECL boss_aeonusAI : public ScriptedAI
boss_aeonusAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = m_creature->GetMap()->IsHeroic();
}
ScriptedInstance *pInstance;
bool HeroicMode;
uint32 SandBreath_Timer;
uint32 TimeStop_Timer;
@@ -108,7 +106,7 @@ struct TRINITY_DLL_DECL boss_aeonusAI : public ScriptedAI
//Sand Breath
if (SandBreath_Timer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_SAND_BREATH, H_SPELL_SAND_BREATH));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SAND_BREATH, H_SPELL_SAND_BREATH));
SandBreath_Timer = 15000+rand()%10000;
} else SandBreath_Timer -= diff;
@@ -46,11 +46,9 @@ struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI
boss_chrono_lord_dejaAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance *pInstance;
bool HeroicMode;
uint32 ArcaneBlast_Timer;
uint32 TimeLapse_Timer;
@@ -107,7 +105,7 @@ struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI
//Arcane Blast
if (ArcaneBlast_Timer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_ARCANE_BLAST, H_SPELL_ARCANE_BLAST));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_ARCANE_BLAST, H_SPELL_ARCANE_BLAST));
ArcaneBlast_Timer = 15000+rand()%10000;
} else ArcaneBlast_Timer -= diff;
@@ -115,7 +113,7 @@ struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI
if (ArcaneDischarge_Timer <= diff)
{
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
DoCast(pTarget, HEROIC(SPELL_ARCANE_DISCHARGE, H_SPELL_ARCANE_DISCHARGE));
DoCast(pTarget, DUNGEON_MODE(SPELL_ARCANE_DISCHARGE, H_SPELL_ARCANE_DISCHARGE));
ArcaneDischarge_Timer = 20000+rand()%10000;
} else ArcaneDischarge_Timer -= diff;
@@ -127,7 +125,7 @@ struct TRINITY_DLL_DECL boss_chrono_lord_dejaAI : public ScriptedAI
TimeLapse_Timer = 15000+rand()%10000;
} else TimeLapse_Timer -= diff;
if (HeroicMode)
if (IsHeroic())
{
if (Attraction_Timer <= diff)
{
@@ -45,11 +45,9 @@ struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI
boss_temporusAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance *pInstance;
bool HeroicMode;
uint32 Haste_Timer;
uint32 SpellReflection_Timer;
@@ -121,11 +119,11 @@ struct TRINITY_DLL_DECL boss_temporusAI : public ScriptedAI
//Wing ruffet
if (WingBuffet_Timer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_WING_BUFFET, H_SPELL_WING_BUFFET));
DoCast(m_creature, DUNGEON_MODE(SPELL_WING_BUFFET, H_SPELL_WING_BUFFET));
WingBuffet_Timer = 20000+rand()%10000;
} else WingBuffet_Timer -= diff;
if (HeroicMode)
if (IsHeroic())
{
if (SpellReflection_Timer <= diff)
{
@@ -58,10 +58,8 @@ struct TRINITY_DLL_DECL boss_elder_nadoxAI : public ScriptedAI
boss_elder_nadoxAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
bool HeroicMode;
uint32 plague_Timer;
uint32 rage_Timer;
@@ -106,7 +104,7 @@ struct TRINITY_DLL_DECL boss_elder_nadoxAI : public ScriptedAI
{
DoScriptText(SAY_SLAY_3,m_creature); //SAY_SLAY_3 on death?
if (HeroicMode && !DeadAhnkaharGuardian)
if (IsHeroic() && !DeadAhnkaharGuardian)
{
AchievementEntry const *AchievRespectYourElders = GetAchievementStore()->LookupEntry(ACHIEVEMENT_RESPECT_YOUR_ELDERS);
if (AchievRespectYourElders)
@@ -132,11 +130,11 @@ struct TRINITY_DLL_DECL boss_elder_nadoxAI : public ScriptedAI
if (plague_Timer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_BROOD_PLAGUE, H_SPELL_BROOD_PLAGUE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_BROOD_PLAGUE, H_SPELL_BROOD_PLAGUE));
plague_Timer = 15000;
} else plague_Timer -= diff;
if (HeroicMode)
if (IsHeroic())
if (rage_Timer <= diff)
{
Unit* Swarmer = m_creature->FindNearestCreature(MOB_AHNKAHAR_SWARMER, 35);
@@ -97,20 +97,20 @@ struct TRINITY_DLL_DECL boss_volazjAI : public ScriptedAI
if (uiMindFlayTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_MIND_FLAY, H_SPELL_MIND_FLAY));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MIND_FLAY, H_SPELL_MIND_FLAY));
uiMindFlayTimer = 20000;
} else uiMindFlayTimer -= diff;
if (uiShadowBoltVolleyTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_SHADOW_BOLT_VOLLEY, H_SPELL_SHADOW_BOLT_VOLLEY));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SHADOW_BOLT_VOLLEY, H_SPELL_SHADOW_BOLT_VOLLEY));
uiShadowBoltVolleyTimer = 5000;
} else uiShadowBoltVolleyTimer -= diff;
if (uiShiverTimer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
DoCast(pTarget, HEROIC(SPELL_SHIVER, H_SPELL_SHIVER));
DoCast(pTarget, DUNGEON_MODE(SPELL_SHIVER, H_SPELL_SHIVER));
uiShiverTimer = 15000;
} else uiShiverTimer -= diff;
@@ -128,7 +128,7 @@ struct TRINITY_DLL_DECL boss_volazjAI : public ScriptedAI
AchievementEntry const *AchievQuickDemise = GetAchievementStore()->LookupEntry(ACHIEVEMENT_QUICK_DEMISE);
Map* pMap = m_creature->GetMap();
if (HeroicMode && uiEncounterTimer < 120000 && pMap && pMap->IsDungeon() && AchievQuickDemise)
if (IsHeroic() && uiEncounterTimer < 120000 && pMap && pMap->IsDungeon() && AchievQuickDemise)
{
Map::PlayerList const &players = pMap->GetPlayers();
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
@@ -303,14 +303,14 @@ struct TRINITY_DLL_DECL boss_jedoga_shadowseekerAI : public ScriptedAI
if (uiCycloneTimer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_CYCLONE_STRIKE, SPELL_CYCLONE_STRIKE_H), false);
DoCast(m_creature, DUNGEON_MODE(SPELL_CYCLONE_STRIKE, SPELL_CYCLONE_STRIKE_H), false);
uiCycloneTimer = urand(15000,30000);
} else uiCycloneTimer -= diff;
if (uiBoltTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
m_creature->CastSpell(pTarget, HEROIC(SPELL_LIGHTNING_BOLT, SPELL_LIGHTNING_BOLT_H), false);
m_creature->CastSpell(pTarget, DUNGEON_MODE(SPELL_LIGHTNING_BOLT, SPELL_LIGHTNING_BOLT_H), false);
uiBoltTimer = urand(15000,30000);
} else uiBoltTimer -= diff;
@@ -318,7 +318,7 @@ struct TRINITY_DLL_DECL boss_jedoga_shadowseekerAI : public ScriptedAI
if (uiThunderTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
m_creature->CastSpell(pTarget, HEROIC(SPELL_THUNDERSHOCK, SPELL_THUNDERSHOCK_H), false);
m_creature->CastSpell(pTarget, DUNGEON_MODE(SPELL_THUNDERSHOCK, SPELL_THUNDERSHOCK_H), false);
uiThunderTimer = urand(15000,30000);
} else uiThunderTimer -= diff;
@@ -148,7 +148,7 @@ struct TRINITY_DLL_DECL boss_taldaramAI : public ScriptedAI
y = pSpheres[0]->GetPositionY() + DATA_SPHERE_DISTANCE * sin(angle);
pSpheres[0]->GetMotionMaster()->MovePoint(0, x, y, pSpheres[0]->GetPositionZ());
}
if (HeroicMode)
if (IsHeroic())
{
//DoCast(m_creature, H_SPELL_FLAME_SPHERE_SUMMON_1);
pSpheres[1] = DoSpawnCreature(H_CREATURE_FLAME_SPHERE_1, 0, 0, 5, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000);
@@ -183,7 +183,7 @@ struct TRINITY_DLL_DECL boss_taldaramAI : public ScriptedAI
break;
case VANISHED:
if(pEmbraceTarget)
DoCast(pEmbraceTarget, HEROIC(SPELL_EMBRACE_OF_THE_VAMPYR, H_SPELL_EMBRACE_OF_THE_VAMPYR));
DoCast(pEmbraceTarget, DUNGEON_MODE(SPELL_EMBRACE_OF_THE_VAMPYR, H_SPELL_EMBRACE_OF_THE_VAMPYR));
m_creature->GetMotionMaster()->Clear();
m_creature->SetSpeed(MOVE_WALK, 1.0f, true);
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
@@ -247,7 +247,7 @@ struct TRINITY_DLL_DECL boss_taldaramAI : public ScriptedAI
if (Phase == FEEDING && pEmbraceTarget && pEmbraceTarget->isAlive())
{
uiEmbraceTakenDamage += damage;
if (uiEmbraceTakenDamage > (HeroicMode ? H_DATA_EMBRACE_DMG : DATA_EMBRACE_DMG))
if (uiEmbraceTakenDamage > DUNGEON_MODE(DATA_EMBRACE_DMG, H_DATA_EMBRACE_DMG))
{
Phase = NORMAL;
uiPhaseTimer = 0;
@@ -268,7 +268,7 @@ struct TRINITY_DLL_DECL boss_taldaramAI : public ScriptedAI
//The Party's Over achievement:
AchievementEntry const *AchievThePartyIsOver = GetAchievementStore()->LookupEntry(ACHIEVEMENT_THE_PARTY_IS_OVER);
Map* pMap = m_creature->GetMap();
if (pMap && pMap->IsDungeon() && HeroicMode && AchievThePartyIsOver)
if (pMap && pMap->IsDungeon() && IsHeroic() && AchievThePartyIsOver)
{
Map::PlayerList const &players = pMap->GetPlayers();
if (players.getSize() < 5)
@@ -343,7 +343,7 @@ struct TRINITY_DLL_DECL mob_taldaram_flamesphereAI : public ScriptedAI
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.0f);
DoCast(m_creature, SPELL_FLAME_SPHERE_VISUAL);
DoCast(m_creature, SPELL_FLAME_SPHERE_SPAWN_EFFECT);
DoCast(m_creature, HEROIC(SPELL_FLAME_SPHERE_PERIODIC, H_SPELL_FLAME_SPHERE_PERIODIC));
DoCast(m_creature, DUNGEON_MODE(SPELL_FLAME_SPHERE_PERIODIC, H_SPELL_FLAME_SPHERE_PERIODIC));
uiDespawnTimer = 10000;
}
@@ -145,7 +145,7 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
if (SPELL_IMPALE_Timer <= diff)
{
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
m_creature->CastSpell(pTarget, HEROIC(SPELL_IMPALE,H_SPELL_IMPALE), true);
m_creature->CastSpell(pTarget, DUNGEON_MODE(SPELL_IMPALE,H_SPELL_IMPALE), true);
SPELL_IMPALE_Timer = 9000;
} else SPELL_IMPALE_Timer -= diff;
@@ -226,7 +226,7 @@ struct TRINITY_DLL_DECL boss_anub_arakAI : public ScriptedAI
if (SPELL_POUND_Timer <= diff)
{
DoCastVictim(HEROIC(SPELL_POUND, H_SPELL_POUND));
DoCastVictim(DUNGEON_MODE(SPELL_POUND, H_SPELL_POUND));
SPELL_POUND_Timer = 16500;
} else SPELL_POUND_Timer -= diff;
}
@@ -95,7 +95,7 @@ struct TRINITY_DLL_DECL boss_hadronoxAI : public ScriptedAI
void KilledUnit(Unit* Victim)
{
// not sure if this aura check is correct, I think it is though
if (!Victim || !Victim->HasAura(HEROIC(SPELL_LEECH_POISON, SPELL_LEECH_POISON_H)) || !m_creature->isAlive())
if (!Victim || !Victim->HasAura(DUNGEON_MODE(SPELL_LEECH_POISON, SPELL_LEECH_POISON_H)) || !m_creature->isAlive())
return;
uint32 health = (m_creature->GetMaxHealth()/100)*10;
@@ -165,7 +165,7 @@ struct TRINITY_DLL_DECL boss_hadronoxAI : public ScriptedAI
if (acidtimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_ACID_CLOUD, SPELL_ACID_CLOUD_H));
DoCast(pTarget, DUNGEON_MODE(SPELL_ACID_CLOUD, SPELL_ACID_CLOUD_H));
acidtimer = urand(20000,30000);
} else acidtimer -= diff;
@@ -173,7 +173,7 @@ struct TRINITY_DLL_DECL boss_hadronoxAI : public ScriptedAI
if (leechtimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_LEECH_POISON, SPELL_LEECH_POISON_H));
DoCast(pTarget, DUNGEON_MODE(SPELL_LEECH_POISON, SPELL_LEECH_POISON_H));
leechtimer = urand(11000,14000);
} else leechtimer -= diff;
@@ -181,7 +181,7 @@ struct TRINITY_DLL_DECL boss_hadronoxAI : public ScriptedAI
if (grabtimer <= diff)
{
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) // Draws all players (and attacking Mobs) to itself.
DoCast(pTarget, HEROIC(SPELL_WEB_GRAB, SPELL_WEB_GRAB_H));
DoCast(pTarget, DUNGEON_MODE(SPELL_WEB_GRAB, SPELL_WEB_GRAB_H));
grabtimer = urand(15000,30000);
} else grabtimer -= diff;
@@ -100,11 +100,9 @@ struct TRINITY_DLL_DECL boss_krik_thirAI : public ScriptedAI
boss_krik_thirAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool HeroicMode;
uint32 MindFlayTimer;
uint32 CurseFatigueTimer;
@@ -162,7 +160,7 @@ struct TRINITY_DLL_DECL boss_krik_thirAI : public ScriptedAI
if (MindFlayTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_MIND_FLAY, H_SPELL_MIND_FLAY));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MIND_FLAY, H_SPELL_MIND_FLAY));
MindFlayTimer = 15000;
} else MindFlayTimer -= diff;
@@ -172,8 +170,8 @@ struct TRINITY_DLL_DECL boss_krik_thirAI : public ScriptedAI
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
Unit *pTarget_1 = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true);
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, DUNGEON_MODE(SPELL_CURSE_OF_FATIGUE, H_SPELL_CURSE_OF_FATIGUE));
DoCast(pTarget_1, DUNGEON_MODE(SPELL_CURSE_OF_FATIGUE, H_SPELL_CURSE_OF_FATIGUE));
CurseFatigueTimer = 10000;
} else CurseFatigueTimer -= diff;
@@ -197,7 +195,7 @@ struct TRINITY_DLL_DECL boss_krik_thirAI : public ScriptedAI
if ((pAdd1 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_WATCHER_GASHRA))) && pAdd1->isAlive() &&
(pAdd2 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_WATCHER_SILTHIK))) && pAdd2->isAlive() &&
(pAdd3 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_WATCHER_NARJIL))) && pAdd3->isAlive() &&
HeroicMode && pMap && pMap->IsDungeon() && AchievWatchHimDie)
IsHeroic() && pMap && pMap->IsDungeon() && AchievWatchHimDie)
{
Map::PlayerList const &players = pMap->GetPlayers();
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
@@ -227,7 +225,7 @@ struct TRINITY_DLL_DECL npc_skittering_infectorAI : public ScriptedAI
void JustDied(Unit* killer)
{
//The spell is not working propperly
DoCast(m_creature->getVictim(),HEROIC(SPELL_ACID_SPLASH, H_SPELL_ACID_SPLASH), true);
DoCast(m_creature->getVictim(),DUNGEON_MODE(SPELL_ACID_SPLASH, H_SPELL_ACID_SPLASH), true);
}
};
@@ -294,13 +292,13 @@ struct TRINITY_DLL_DECL npc_anub_ar_shadowcasterAI : public ScriptedAI
if (ShadowBoltTimer <= diff)
{
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT), true);
DoCast(pTarget, DUNGEON_MODE(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT), true);
ShadowBoltTimer = 15000;
} else ShadowBoltTimer -= diff;
if (ShadowNovaTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_SHADOW_NOVA, H_SPELL_SHADOW_NOVA), true);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SHADOW_NOVA, H_SPELL_SHADOW_NOVA), true);
ShadowNovaTimer = 17000;
} else ShadowNovaTimer -= diff;
@@ -376,7 +374,7 @@ struct TRINITY_DLL_DECL npc_watcher_gashraAI : public ScriptedAI
if (InfectedBiteTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_INFECTED_BITE, H_SPELL_INFECTED_BITE), true);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_INFECTED_BITE, H_SPELL_INFECTED_BITE), true);
InfectedBiteTimer = 15000;
} else InfectedBiteTimer -= diff;
@@ -413,13 +411,13 @@ struct TRINITY_DLL_DECL npc_watcher_narjilAI : public ScriptedAI
if (InfectedBiteTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_INFECTED_BITE, H_SPELL_INFECTED_BITE), true);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_INFECTED_BITE, H_SPELL_INFECTED_BITE), true);
InfectedBiteTimer = 11000;
} else InfectedBiteTimer -= diff;
if (BlindingWebsTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_BLINDING_WEBS, H_SPELL_BLINDING_WEBS), true);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_BLINDING_WEBS, H_SPELL_BLINDING_WEBS), true);
BlindingWebsTimer = 17000;
} else BlindingWebsTimer -= diff;
@@ -457,13 +455,13 @@ struct TRINITY_DLL_DECL npc_watcher_silthikAI : public ScriptedAI
if (InfectedBiteTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_INFECTED_BITE, H_SPELL_INFECTED_BITE), true);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_INFECTED_BITE, H_SPELL_INFECTED_BITE), true);
InfectedBiteTimer = 15000;
} else InfectedBiteTimer -= diff;
if (PosionSprayTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_POSION_SPRAY, H_SPELL_POSION_SPRAY), true);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_POSION_SPRAY, H_SPELL_POSION_SPRAY), true);
PosionSprayTimer = 17000;
} else PosionSprayTimer -= diff;
@@ -164,7 +164,7 @@ struct TRINITY_DLL_DECL boss_paletressAI : public ScriptedAI
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 250, true))
{
if (pTarget && pTarget->isAlive())
DoCast(pTarget,HEROIC(SPELL_HOLY_FIRE,SPELL_HOLY_FIRE_H));
DoCast(pTarget,DUNGEON_MODE(SPELL_HOLY_FIRE,SPELL_HOLY_FIRE_H));
}
if (m_creature->HasAura(SPELL_SHIELD))
uiHolyFireTimer = 13000;
@@ -177,7 +177,7 @@ struct TRINITY_DLL_DECL boss_paletressAI : public ScriptedAI
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 250, true))
{
if (pTarget && pTarget->isAlive())
DoCast(pTarget,HEROIC(SPELL_SMITE,SPELL_SMITE_H));
DoCast(pTarget,DUNGEON_MODE(SPELL_SMITE,SPELL_SMITE_H));
}
if (m_creature->HasAura(SPELL_SHIELD))
uiHolySmiteTimer = 9000;
@@ -193,11 +193,11 @@ struct TRINITY_DLL_DECL boss_paletressAI : public ScriptedAI
switch(uiTarget)
{
case 0:
DoCast(m_creature,HEROIC(SPELL_RENEW,SPELL_RENEW_H));
DoCast(m_creature,DUNGEON_MODE(SPELL_RENEW,SPELL_RENEW_H));
break;
case 1:
if (pMemory && pMemory->isAlive())
DoCast(pMemory,HEROIC(SPELL_RENEW,SPELL_RENEW_H));
DoCast(pMemory,DUNGEON_MODE(SPELL_RENEW,SPELL_RENEW_H));
break;
}
uiRenewTimer = urand(15000,17000);
@@ -255,14 +255,14 @@ struct TRINITY_DLL_DECL npc_memoryAI : public ScriptedAI
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
{
if (pTarget && pTarget->isAlive())
DoCast(pTarget, HEROIC(SPELL_OLD_WOUNDS,SPELL_OLD_WOUNDS_H));
DoCast(pTarget, DUNGEON_MODE(SPELL_OLD_WOUNDS,SPELL_OLD_WOUNDS_H));
}
uiOldWoundsTimer = 12000;
}else uiOldWoundsTimer -= uiDiff;
if (uiWakingNightmare <= uiDiff)
{
DoCast(m_creature, HEROIC(SPELL_WAKING_NIGHTMARE,SPELL_WAKING_NIGHTMARE_H));
DoCast(m_creature, DUNGEON_MODE(SPELL_WAKING_NIGHTMARE,SPELL_WAKING_NIGHTMARE_H));
uiWakingNightmare = 7000;
}else uiWakingNightmare -= uiDiff;
@@ -271,7 +271,7 @@ struct TRINITY_DLL_DECL npc_memoryAI : public ScriptedAI
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
{
if (pTarget && pTarget->isAlive())
DoCast(pTarget,HEROIC(SPELL_SHADOWS_PAST,SPELL_SHADOWS_PAST_H));
DoCast(pTarget,DUNGEON_MODE(SPELL_SHADOWS_PAST,SPELL_SHADOWS_PAST_H));
}
uiShadowPastTimer = 5000;
}else uiShadowPastTimer -= uiDiff;
@@ -169,17 +169,17 @@ struct TRINITY_DLL_DECL boss_black_knightAI : public ScriptedAI
{
if (uiIcyTouchTimer <= uiDiff)
{
DoCastVictim(HEROIC(SPELL_ICY_TOUCH,SPELL_ICY_TOUCH_H));
DoCastVictim(DUNGEON_MODE(SPELL_ICY_TOUCH,SPELL_ICY_TOUCH_H));
uiIcyTouchTimer = urand(5000,7000);
} else uiIcyTouchTimer -= uiDiff;
if (uiPlagueStrikeTimer <= uiDiff)
{
DoCastVictim(HEROIC(SPELL_ICY_TOUCH,SPELL_ICY_TOUCH_H));
DoCastVictim(DUNGEON_MODE(SPELL_ICY_TOUCH,SPELL_ICY_TOUCH_H));
uiPlagueStrikeTimer = urand(12000,15000);
} else uiPlagueStrikeTimer -= uiDiff;
if (uiObliterateTimer <= uiDiff)
{
DoCastVictim(HEROIC(SPELL_OBLITERATE,SPELL_OBLITERATE_H));
DoCastVictim(DUNGEON_MODE(SPELL_OBLITERATE,SPELL_OBLITERATE_H));
uiObliterateTimer = urand(17000,19000);
} else uiObliterateTimer -= uiDiff;
switch(uiPhase)
@@ -236,7 +236,7 @@ struct TRINITY_DLL_DECL boss_black_knightAI : public ScriptedAI
{
if (uiDeathBiteTimer <= uiDiff)
{
DoCastAOE(HEROIC(SPELL_DEATH_BITE_H,SPELL_DEATH_BITE));
DoCastAOE(DUNGEON_MODE(SPELL_DEATH_BITE,SPELL_DEATH_BITE_H));
uiDeathBiteTimer = urand (2000, 4000);
} else uiDeathBiteTimer -= uiDiff;
if (uiMarkedDeathTimer <= uiDiff)
@@ -304,7 +304,7 @@ struct TRINITY_DLL_DECL npc_risen_ghoulAI : public ScriptedAI
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true))
{
if (pTarget && pTarget->isAlive())
DoCast(pTarget, (HEROIC(SPELL_LEAP_H,SPELL_LEAP)));
DoCast(pTarget, (DUNGEON_MODE(SPELL_LEAP,SPELL_LEAP_H)));
}
uiAttackTimer = 3500;
} else uiAttackTimer -= uiDiff;
@@ -71,7 +71,6 @@ struct TRINITY_DLL_DECL mob_toc5_warriorAI : public ScriptedAI
}
ScriptedInstance* m_pInstance;
bool m_bIsRegularMode;
uint32 Mortal_Strike_Timer;
uint32 Bladestorm_Timer;
@@ -122,7 +121,7 @@ struct TRINITY_DLL_DECL mob_toc5_warriorAI : public ScriptedAI
if (Mortal_Strike_Timer < diff)
{
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_MORTAL_STRIKE : SPELL_MORTAL_STRIKE_H);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MORTAL_STRIKE, SPELL_MORTAL_STRIKE_H));
Mortal_Strike_Timer = 6000;
}else Mortal_Strike_Timer -= diff;
@@ -172,7 +171,6 @@ struct TRINITY_DLL_DECL mob_toc5_mageAI : public ScriptedAI
}
ScriptedInstance* m_pInstance;
bool m_bIsRegularMode;
uint32 Fireball_Timer;
uint32 Blast_Wave_Timer;
@@ -221,13 +219,13 @@ struct TRINITY_DLL_DECL mob_toc5_mageAI : public ScriptedAI
if (Fireball_Timer < diff)
{
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_FIREBALL : SPELL_FIREBALL_H);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_FIREBALL, SPELL_FIREBALL_H));
Fireball_Timer = 3000;
}else Fireball_Timer -= diff;
if (Blast_Wave_Timer < diff)
{
DoCast(m_creature, m_bIsRegularMode ? SPELL_BLAST_WAVE : SPELL_BLAST_WAVE_H);
DoCast(m_creature, DUNGEON_MODE(SPELL_BLAST_WAVE, SPELL_BLAST_WAVE_H));
Blast_Wave_Timer = 20000;
}else Blast_Wave_Timer -= diff;
@@ -240,7 +238,7 @@ struct TRINITY_DLL_DECL mob_toc5_mageAI : public ScriptedAI
if (Polymorph_Timer < diff)
{
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
DoCast(target, m_bIsRegularMode ? SPELL_POLYMORPH : SPELL_POLYMORPH_H);
DoCast(target, DUNGEON_MODE(SPELL_POLYMORPH, SPELL_POLYMORPH_H));
Polymorph_Timer = 15000;
}else Polymorph_Timer -= diff;
@@ -263,7 +261,6 @@ struct TRINITY_DLL_DECL mob_toc5_shamanAI : public ScriptedAI
}
ScriptedInstance* m_pInstance;
bool m_bIsRegularMode;
uint32 Chain_Lightning_Timer;
uint32 Earth_Shield_Timer;
@@ -316,7 +313,7 @@ struct TRINITY_DLL_DECL mob_toc5_shamanAI : public ScriptedAI
if (Chain_Lightning_Timer < diff)
{
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_CHAIN_LIGHTNING : SPELL_CHAIN_LIGHTNING_H);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_CHAIN_LIGHTNING, SPELL_CHAIN_LIGHTNING_H));
Chain_Lightning_Timer = 10000;
}else Chain_Lightning_Timer -= diff;
@@ -331,7 +328,7 @@ struct TRINITY_DLL_DECL mob_toc5_shamanAI : public ScriptedAI
if(Unit* target = m_creature->SelectNearestTarget(40))
if(target->GetHealth() == target->GetHealth() * 100 / target->GetMaxHealth() && target->IsFriendlyTo(m_creature))
{
DoCast(target, HEROIC(SPELL_HEALING_WAVE, SPELL_HEALING_WAVE_H));
DoCast(target, DUNGEON_MODE(SPELL_HEALING_WAVE, SPELL_HEALING_WAVE_H));
Healing_Wave_Timer = 8000;
}
}else Healing_Wave_Timer -= diff;
@@ -365,7 +362,6 @@ struct TRINITY_DLL_DECL mob_toc5_hunterAI : public ScriptedAI
}
ScriptedInstance* m_pInstance;
bool m_bIsRegularMode;
uint32 Shoot_Timer;
uint32 Lightning_Arrows_Timer;
@@ -481,7 +477,6 @@ struct TRINITY_DLL_DECL mob_toc5_rogueAI : public ScriptedAI
}
ScriptedInstance* m_pInstance;
bool m_bIsRegularMode;
uint32 Eviscerate_Timer;
uint32 FoK_Timer;
@@ -528,7 +523,7 @@ struct TRINITY_DLL_DECL mob_toc5_rogueAI : public ScriptedAI
if (Eviscerate_Timer < diff)
{
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_EVISCERATE : SPELL_EVISCERATE_H);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_EVISCERATE, SPELL_EVISCERATE_H));
Eviscerate_Timer = 10000;
}else Eviscerate_Timer -= diff;
@@ -115,7 +115,7 @@ struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
if (FearsomeRoarTimer < diff)
{
DoCastAOE(HEROIC(SPELL_FEARSOME_ROAR, H_SPELL_FEARSOME_ROAR),false);
DoCastAOE(DUNGEON_MODE(SPELL_FEARSOME_ROAR, H_SPELL_FEARSOME_ROAR),false);
FearsomeRoarTimer = urand(16,18)*1000;
} else FearsomeRoarTimer -=diff;
@@ -146,7 +146,7 @@ struct TRINITY_DLL_DECL boss_dredAI : public ScriptedAI
{
pInstance->SetData(DATA_DRED_EVENT,DONE);
if (HeroicMode && pInstance->GetData(DATA_KING_DRED_ACHIEV) == 6)
if (IsHeroic() && pInstance->GetData(DATA_KING_DRED_ACHIEV) == 6)
pInstance->DoCompleteAchievement(ACHIEV_BETTER_OFF_DRED);
}
}
@@ -192,7 +192,7 @@ struct TRINITY_DLL_DECL npc_drakkari_gutripperAI : public ScriptedAI
{
if (pInstance)
{
if (m_creature->GetMap()->IsHeroic() && pInstance->GetData(DATA_DRED_EVENT) == IN_PROGRESS && pInstance->GetData(DATA_KING_DRED_ACHIEV) < 6)
if (IsHeroic() && pInstance->GetData(DATA_DRED_EVENT) == IN_PROGRESS && pInstance->GetData(DATA_KING_DRED_ACHIEV) < 6)
{
pInstance->SetData(DATA_KING_DRED_ACHIEV, pInstance->GetData(DATA_KING_DRED_ACHIEV) + 1);
}
@@ -240,7 +240,7 @@ struct TRINITY_DLL_DECL npc_drakkari_scytheclawAI : public ScriptedAI
{
if (pInstance)
{
if (m_creature->GetMap()->IsHeroic() && pInstance->GetData(DATA_DRED_EVENT) == IN_PROGRESS && pInstance->GetData(DATA_KING_DRED_ACHIEV) < 6)
if (IsHeroic() && pInstance->GetData(DATA_DRED_EVENT) == IN_PROGRESS && pInstance->GetData(DATA_KING_DRED_ACHIEV) < 6)
{
pInstance->SetData(DATA_KING_DRED_ACHIEV, pInstance->GetData(DATA_KING_DRED_ACHIEV) + 1);
}
@@ -169,7 +169,7 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI
if (uiTimer <= diff)
{
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(RAND(SPELL_ARCANE_BLAST,SPELL_BLIZZARD,SPELL_FROSTBOLT,SPELL_WRATH_OF_MISERY),
DoCast(pTarget, DUNGEON_MODE(RAND(SPELL_ARCANE_BLAST,SPELL_BLIZZARD,SPELL_FROSTBOLT,SPELL_WRATH_OF_MISERY),
RAND(H_SPELL_ARCANE_BLAST,H_SPELL_BLIZZARD,H_SPELL_FROSTBOLT,H_SPELL_WRATH_OF_MISERY)));
uiTimer = urand(1000,3000);
} else uiTimer -= diff;
@@ -182,7 +182,7 @@ struct TRINITY_DLL_DECL boss_novosAI : public Scripted_NoMovementAI
{
pInstance->SetData(DATA_NOVOS_EVENT, DONE);
if (HeroicMode && bAchiev)
if (IsHeroic() && bAchiev)
pInstance->DoCompleteAchievement(ACHIEV_OH_NOVOS);
}
lSummons.DespawnAll();
@@ -136,19 +136,19 @@ struct TRINITY_DLL_DECL boss_tharon_jaAI : public ScriptedAI
if (uiCurseOfLifeTimer < diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_CURSE_OF_LIFE, H_SPELL_CURSE_OF_LIFE));
DoCast(pTarget, DUNGEON_MODE(SPELL_CURSE_OF_LIFE, H_SPELL_CURSE_OF_LIFE));
uiCurseOfLifeTimer = urand(10000,15000);
} else uiCurseOfLifeTimer -= diff;
if (uiShadowVolleyTimer < diff)
{
DoCastVictim(HEROIC(SPELL_SHADOW_VOLLEY,H_SPELL_SHADOW_VOLLEY));
DoCastVictim(DUNGEON_MODE(SPELL_SHADOW_VOLLEY,H_SPELL_SHADOW_VOLLEY));
uiShadowVolleyTimer = urand(8000,10000);
} else uiShadowVolleyTimer -= diff;
if (uiRainOfFireTimer < diff)
{
DoCastAOE(HEROIC(SPELL_RAIN_OF_FIRE,H_SPELL_RAIN_OF_FIRE));
DoCastAOE(DUNGEON_MODE(SPELL_RAIN_OF_FIRE,H_SPELL_RAIN_OF_FIRE));
uiRainOfFireTimer = urand(14000,18000);
} else uiRainOfFireTimer -= diff;
@@ -187,20 +187,20 @@ struct TRINITY_DLL_DECL boss_tharon_jaAI : public ScriptedAI
if (uiLightningBreathTimer < diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_LIGHTNING_BREATH, H_SPELL_LIGHTNING_BREATH));
DoCast(pTarget, DUNGEON_MODE(SPELL_LIGHTNING_BREATH, H_SPELL_LIGHTNING_BREATH));
uiLightningBreathTimer = urand(6000,7000);
} else uiLightningBreathTimer -= diff;
if (uiEyeBeamTimer < diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_EYE_BEAM, H_SPELL_EYE_BEAM));
DoCast(pTarget, DUNGEON_MODE(SPELL_EYE_BEAM, H_SPELL_EYE_BEAM));
uiEyeBeamTimer = urand(4000,6000);
} else uiEyeBeamTimer -= diff;
if (uiPoisonCloudTimer < diff)
{
DoCastAOE(HEROIC(SPELL_POISON_CLOUD,H_SPELL_POISON_CLOUD));
DoCastAOE(DUNGEON_MODE(SPELL_POISON_CLOUD, H_SPELL_POISON_CLOUD));
uiPoisonCloudTimer = urand(10000,12000);
} else uiPoisonCloudTimer -= diff;
@@ -90,12 +90,12 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
uiExplodeCorpseTimer = 3000;
uiSpawnTimer = urand(30000,40000);
bAchiev = HeroicMode;
bAchiev = IsHeroic();
lSummons.DespawnAll();
if (m_creature->HasAura(HEROIC(SPELL_CONSUME,H_SPELL_CONSUME)))
m_creature->RemoveAura(HEROIC(SPELL_CONSUME,H_SPELL_CONSUME));
if (m_creature->HasAura(DUNGEON_MODE(SPELL_CONSUME,H_SPELL_CONSUME)))
m_creature->RemoveAura(DUNGEON_MODE(SPELL_CONSUME,H_SPELL_CONSUME));
if (pInstance)
pInstance->SetData(DATA_TROLLGORE_EVENT, NOT_STARTED);
@@ -117,7 +117,8 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
if (uiSpawnTimer <= diff)
{
for (uint8 i = 0; i < urand(2,HEROIC(3,5)); ++i)
uint32 spawnNumber = urand(2,DUNGEON_MODE(3,5));
for (uint8 i = 0; i < spawnNumber; ++i)
DoSpawnCreature(RAND(NPC_DRAKKARI_INVADER_1,NPC_DRAKKARI_INVADER_2), AddSpawnPoint.GetPositionX(), AddSpawnPoint.GetPositionY(), AddSpawnPoint.GetPositionZ(), AddSpawnPoint.GetOrientation(), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 90000);
uiSpawnTimer = urand(30000,40000);
} else uiSpawnTimer -= diff;
@@ -125,7 +126,7 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
if (uiConsumeTimer <= diff)
{
DoScriptText(SAY_CONSUME, m_creature);
DoCast(HEROIC(SPELL_CONSUME, H_SPELL_CONSUME));
DoCast(DUNGEON_MODE(SPELL_CONSUME, H_SPELL_CONSUME));
uiConsumeTimer = 15000;
} else uiConsumeTimer -= diff;
@@ -133,7 +134,7 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
{
if (uiAuraCountTimer <= diff)
{
if (Aura *pConsumeAura = m_creature->GetAura(HEROIC(SPELL_CONSUME,H_SPELL_CONSUME)))
if (Aura *pConsumeAura = m_creature->GetAura(DUNGEON_MODE(SPELL_CONSUME,H_SPELL_CONSUME)))
{
if (pConsumeAura && pConsumeAura->GetStackAmount() > 9)
bAchiev = false;
@@ -156,7 +157,7 @@ struct TRINITY_DLL_DECL boss_trollgoreAI : public ScriptedAI
if (uiExplodeCorpseTimer <= diff)
{
DoCast(HEROIC(SPELL_CORPSE_EXPLODE, H_SPELL_CORPSE_EXPLODE));
DoCast(DUNGEON_MODE(SPELL_CORPSE_EXPLODE, H_SPELL_CORPSE_EXPLODE));
DoScriptText(SAY_EXPLODE, m_creature);
uiExplodeCorpseTimer = urand(15000,19000);
} else uiExplodeCorpseTimer -= diff;
@@ -222,7 +222,6 @@ struct TRINITY_DLL_DECL npc_living_mojoAI : public ScriptedAI
{
npc_living_mojoAI(Creature* pCreature) : ScriptedAI(pCreature)
{
HeroicMode = pCreature->GetMap()->IsHeroic();
pInstance = pCreature->GetInstanceData();
}
@@ -230,8 +229,6 @@ struct TRINITY_DLL_DECL npc_living_mojoAI : public ScriptedAI
ScriptedInstance* pInstance;
bool HeroicMode;
uint32 uiMojoWaveTimer;
uint32 uiMojoPuddleTimer;
@@ -277,13 +274,13 @@ struct TRINITY_DLL_DECL npc_living_mojoAI : public ScriptedAI
if (uiMojoWaveTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_MOJO_WAVE, H_SPELL_MOJO_WAVE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MOJO_WAVE, H_SPELL_MOJO_WAVE));
uiMojoWaveTimer = 15000;
} else uiMojoWaveTimer -= diff;
if (uiMojoPuddleTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_MOJO_PUDDLE, H_SPELL_MOJO_PUDDLE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MOJO_PUDDLE, H_SPELL_MOJO_PUDDLE));
uiMojoPuddleTimer = 18000;
} else uiMojoPuddleTimer -= diff;
@@ -119,7 +119,7 @@ struct TRINITY_DLL_DECL boss_gal_darahAI : public ScriptedAI
if (uiWhirlingSlashTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_WHIRLING_SLASH, H_SPELL_WHIRLING_SLASH));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_WHIRLING_SLASH, H_SPELL_WHIRLING_SLASH));
uiWhirlingSlashTimer = 20000;
++uiPhaseCounter;
} else uiWhirlingSlashTimer -= diff;
@@ -137,26 +137,26 @@ struct TRINITY_DLL_DECL boss_gal_darahAI : public ScriptedAI
{
if (uiPunctureTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_PUNCTURE, H_SPELL_PUNCTURE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_PUNCTURE, H_SPELL_PUNCTURE));
uiPunctureTimer = 8000;
} else uiPunctureTimer -= diff;
if (uiEnrageTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_ENRAGE, H_SPELL_ENRAGE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_ENRAGE, H_SPELL_ENRAGE));
uiEnrageTimer = 20000;
} else uiEnrageTimer -= diff;
if (uiStompTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_STOMP, H_SPELL_STOMP));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_STOMP, H_SPELL_STOMP));
uiStompTimer = 20000;
} else uiStompTimer -= diff;
if (uiImpalingChargeTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_IMPALING_CHARGE, H_SPELL_IMPALING_CHARGE));
DoCast(pTarget, DUNGEON_MODE(SPELL_IMPALING_CHARGE, H_SPELL_IMPALING_CHARGE));
uiImpalingChargeTimer = 30000;
++uiPhaseCounter;
} else uiImpalingChargeTimer -= diff;
@@ -112,7 +112,7 @@ struct TRINITY_DLL_DECL boss_moorabiAI : public ScriptedAI
if (uiDeterminedStabTimer <= uiDiff)
{
if (bPhase)
DoCast(m_creature->getVictim(), HEROIC(SPELL_DETERMINED_GORE, SPELL_DETERMINED_GORE_1));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_DETERMINED_GORE, SPELL_DETERMINED_GORE_1));
else
DoCast(m_creature->getVictim(), SPELL_DETERMINED_STAB, true);
uiDeterminedStabTimer = 8000;
@@ -133,7 +133,7 @@ struct TRINITY_DLL_DECL boss_moorabiAI : public ScriptedAI
{
DoScriptText(SAY_DEATH, m_creature);
if (HeroicMode && !bPhase)
if (IsHeroic() && !bPhase)
{
AchievementEntry const *AchievLessRabi = GetAchievementStore()->LookupEntry(ACHIEVEMENT_LESS_RABI);
if (AchievLessRabi)
@@ -109,19 +109,19 @@ struct TRINITY_DLL_DECL boss_slad_ranAI : public ScriptedAI
if (uiPoisonNovaTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_POISON_NOVA, H_SPELL_POISON_NOVA));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_POISON_NOVA, H_SPELL_POISON_NOVA));
uiPoisonNovaTimer = 15000;
} else uiPoisonNovaTimer -= diff;
if (uiPowerfullBiteTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_POWERFULL_BITE, H_SPELL_POWERFULL_BITE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_POWERFULL_BITE, H_SPELL_POWERFULL_BITE));
uiPowerfullBiteTimer = 10000;
} else uiPowerfullBiteTimer -= diff;
if (uiVenomBoltTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_VENOM_BOLT, H_SPELL_VENOM_BOLT));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_VENOM_BOLT, H_SPELL_VENOM_BOLT));
uiVenomBoltTimer = 10000;
} else uiVenomBoltTimer -= diff;
@@ -130,10 +130,10 @@ struct TRINITY_DLL_DECL boss_slad_ranAI : public ScriptedAI
if (uiSpawnTimer <= diff)
{
if (uiPhase == 1)
for (uint8 i = 0; i < (HeroicMode ? 5 : 3); ++i)
for (uint8 i = 0; i < DUNGEON_MODE(3, 5); ++i)
m_creature->SummonCreature(CREATURE_SNAKE, SpawnLoc[i].x, SpawnLoc[i].y, SpawnLoc[i].z, SpawnLoc[i].orientation, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
if (uiPhase == 2)
for (uint8 i = 0; i < (HeroicMode ? 5 : 3); ++i)
for (uint8 i = 0; i < DUNGEON_MODE(3, 5); ++i)
m_creature->SummonCreature(CREATURE_CONSTRICTORS, SpawnLoc[i].x, SpawnLoc[i].y, SpawnLoc[i].z, SpawnLoc[i].orientation, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
uiSpawnTimer = 5000;
} else uiSpawnTimer -= diff;
@@ -218,7 +218,7 @@ struct TRINITY_DLL_DECL mob_slad_ran_viperAI : public ScriptedAI
if (uiVenomousBiteTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_VENOMOUS_BITE, H_SPELL_VENOMOUS_BITE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_VENOMOUS_BITE, H_SPELL_VENOMOUS_BITE));
uiVenomousBiteTimer = 10000;
} else uiVenomousBiteTimer -= diff;
}
@@ -21,8 +21,8 @@
#define SAY_AGGRO RAND(-1533001,-1533002,-1533003)
#define SAY_SLAY -1533008
#define SPELL_IMPALE HEROIC(28783,56090)
#define SPELL_LOCUSTSWARM HEROIC(28785,54021)
#define SPELL_IMPALE RAID_MODE(28783,56090)
#define SPELL_LOCUSTSWARM RAID_MODE(28785,54021)
#define SPELL_SELF_SPAWN_5 29105 //This spawns 5 corpse scarabs ontop of us (most likely the player casts this on death)
@@ -41,7 +41,7 @@ struct TRINITY_DLL_DECL boss_anubrekhanAI : public BossAI
{
HasTaunted = false;
if (HeroicMode)
if (IsHeroic())
{
DoSpawnCreature(MOB_CRYPT_GUARD, 0, -10, 0, me->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000);
DoSpawnCreature(MOB_CRYPT_GUARD, 0, 10, 0, me->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60000);
@@ -115,16 +115,16 @@ struct TRINITY_DLL_DECL boss_faerlinaAI : public BossAI
{
case EVENT_POISON:
if (!me->HasAura(SPELL_WIDOWS_EMBRACE))
DoCastAOE(HEROIC(SPELL_POISON_BOLT_VOLLEY,H_SPELL_POISON_BOLT_VOLLEY));
DoCastAOE(RAID_MODE(SPELL_POISON_BOLT_VOLLEY,H_SPELL_POISON_BOLT_VOLLEY));
events.ScheduleEvent(EVENT_POISON, urand(12000,15000));
return;
case EVENT_FIRE:
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
DoCast(pTarget, HEROIC(SPELL_RAIN_OF_FIRE, H_SPELL_RAIN_OF_FIRE));
DoCast(pTarget, RAID_MODE(SPELL_RAIN_OF_FIRE, H_SPELL_RAIN_OF_FIRE));
events.ScheduleEvent(EVENT_FIRE, urand(6000,18000));
return;
case EVENT_FRENZY:
DoCast(me, HEROIC(SPELL_FRENZY, H_SPELL_FRENZY));
DoCast(me, RAID_MODE(SPELL_FRENZY, H_SPELL_FRENZY));
delayFrenzy = false;
return;
case EVENT_AFTERENRAGE:
@@ -139,7 +139,7 @@ struct TRINITY_DLL_DECL boss_faerlinaAI : public BossAI
{
if (spell->Id == SPELL_WIDOWS_EMBRACE || spell->Id == H_SPELL_WIDOWS_EMBRACE)
{
if (m_creature->HasAura(HEROIC(SPELL_FRENZY,H_SPELL_FRENZY)))
if (m_creature->HasAura(RAID_MODE(SPELL_FRENZY,H_SPELL_FRENZY)))
{
if (!delayFrenzy)
{
@@ -169,7 +169,7 @@ struct TRINITY_DLL_DECL mob_faerlina_addAI : public ScriptedAI
void Reset()
{
if (!HeroicMode)
if (getDifficulty() == RAID_DIFFICULTY_10MAN_NORMAL)
m_creature->ApplySpellImmune(0, IMMUNITY_MECHANIC, SPELL_EFFECT_BIND, true);
}
@@ -178,7 +178,7 @@ struct TRINITY_DLL_DECL mob_faerlina_addAI : public ScriptedAI
if (pInstance)
{
if (Creature *pFaerlina = pInstance->instance->GetCreature(pInstance->GetData64(DATA_FAERLINA)))
DoCast(pFaerlina, HEROIC(SPELL_WIDOWS_EMBRACE, H_SPELL_WIDOWS_EMBRACE));
DoCast(pFaerlina, RAID_MODE(SPELL_WIDOWS_EMBRACE, H_SPELL_WIDOWS_EMBRACE));
}
}
@@ -55,10 +55,10 @@ const Position WaypointPositions[12] =
const uint32 MOB_HORSEMEN[] = {16064, 16065, 30549, 16063};
const uint32 SPELL_MARK[] = {28832, 28833, 28834, 28835};
#define SPELL_PRIMARY(i) HEROIC(SPELL_PRIMARY_N[i],SPELL_PRIMARY_H[i])
#define SPELL_PRIMARY(i) RAID_MODE(SPELL_PRIMARY_N[i],SPELL_PRIMARY_H[i])
const uint32 SPELL_PRIMARY_N[] = {28884, 28863, 28882, 28883};
const uint32 SPELL_PRIMARY_H[] = {57467, 57463, 57369, 57466};
#define SPELL_SECONDARY(i) HEROIC(SPELL_SECONDARY_N[i],SPELL_SECONDARY_H[i])
#define SPELL_SECONDARY(i) RAID_MODE(SPELL_SECONDARY_N[i],SPELL_SECONDARY_H[i])
const uint32 SPELL_SECONDARY_N[]= {0, 57374, 0, 57376};
const uint32 SPELL_SECONDARY_H[]= {0, 57464, 0, 57465};
const uint32 SPELL_PUNISH[] = {0, 57381, 0, 57377};
@@ -18,8 +18,8 @@
#include "naxxramas.h"
#define SPELL_MORTAL_WOUND 25646
#define SPELL_ENRAGE HEROIC(28371,54427)
#define SPELL_DECIMATE HEROIC(28374,54426)
#define SPELL_ENRAGE RAID_MODE(28371,54427)
#define SPELL_DECIMATE RAID_MODE(28374,54426)
#define SPELL_BERSERK 26662
#define SPELL_INFECTED_WOUND 29306
@@ -131,7 +131,7 @@ struct TRINITY_DLL_DECL boss_gluthAI : public BossAI
events.ScheduleEvent(EVENT_BERSERK, 5*60000);
break;
case EVENT_SUMMON:
for (uint32 i = 0; i < HEROIC(1,2); ++i)
for (uint32 i = 0; i < RAID_MODE(1,2); ++i)
DoSummon(MOB_ZOMBIE, triggers[rand()%3]);
events.ScheduleEvent(EVENT_SUMMON, 10000);
break;
@@ -290,7 +290,7 @@ struct TRINITY_DLL_DECL boss_gothikAI : public BossAI
}
break;
case EVENT_BOLT:
DoCast(me->getVictim(), HEROIC(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
DoCast(me->getVictim(), RAID_MODE(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
events.ScheduleEvent(EVENT_BOLT, 1000);
return;
case EVENT_HARVEST:
@@ -21,7 +21,7 @@
#define SPELL_POISON_CLOUD 28240
#define SPELL_MUTATING_INJECTION 28169
#define SPELL_SLIME_SPRAY HEROIC(28157,54364)
#define SPELL_SLIME_SPRAY RAID_MODE(28157,54364)
#define SPELL_BERSERK 26662
#define SPELL_POISON_CLOUD_ADD 59116
@@ -23,7 +23,7 @@
#define SAY_DEATH -1533118
#define SPELL_SPELL_DISRUPTION 29310
#define SPELL_DECREPIT_FEVER HEROIC(29998,55011)
#define SPELL_DECREPIT_FEVER RAID_MODE(29998,55011)
#define SPELL_PLAGUE_CLOUD 29350
enum Events
@@ -188,7 +188,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
events.ScheduleEvent(EVENT_DETONATE, 20000);
events.ScheduleEvent(EVENT_FISSURE, 25000);
events.ScheduleEvent(EVENT_BLAST, urand(30000,60000));
if (HeroicMode)
if (getDifficulty() == RAID_DIFFICULTY_25MAN_NORMAL)
events.ScheduleEvent(EVENT_CHAIN, urand(30000,60000));
Phase = 2;
return;
@@ -212,7 +212,7 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
DoScriptText(SAY_ANSWER_REQUEST, m_creature);
}
}
else if (GuardiansOfIcecrown_Count < HEROIC(2,5))
else if (GuardiansOfIcecrown_Count < RAID_MODE(2,5))
{
if (GuardiansOfIcecrown_Timer <= diff)
{
@@ -231,11 +231,11 @@ struct TRINITY_DLL_DECL boss_kelthuzadAI : public BossAI
switch(eventId)
{
case EVENT_BOLT:
DoCastVictim(HEROIC(SPELL_FROST_BOLT,H_SPELL_FROST_BOLT));
DoCastVictim(RAID_MODE(SPELL_FROST_BOLT,H_SPELL_FROST_BOLT));
events.RepeatEvent(urand(1000,10000));
return;
case EVENT_NOVA:
DoCastAOE(HEROIC(SPELL_FROST_BOLT_AOE,H_SPELL_FROST_BOLT_AOE));
DoCastAOE(RAID_MODE(SPELL_FROST_BOLT_AOE,H_SPELL_FROST_BOLT_AOE));
events.RepeatEvent(urand(10000,20000));
return;
case EVENT_CHAIN:
@@ -66,11 +66,11 @@ struct TRINITY_DLL_DECL boss_loathebAI : public BossAI
return;
case EVENT_BLOOM:
DoCastAOE(SPELL_SUMMON_SPORE, true);
DoCastAOE(HEROIC(SPELL_DEATHBLOOM,H_SPELL_DEATHBLOOM));
DoCastAOE(RAID_MODE(SPELL_DEATHBLOOM,H_SPELL_DEATHBLOOM));
events.ScheduleEvent(EVENT_BLOOM, 30000);
return;
case EVENT_DOOM:
DoCastAOE(HEROIC(SPELL_INEVITABLE_DOOM,H_SPELL_INEVITABLE_DOOM));
DoCastAOE(RAID_MODE(SPELL_INEVITABLE_DOOM,H_SPELL_INEVITABLE_DOOM));
events.ScheduleEvent(EVENT_DOOM, events.GetTimer() < 5*60000 ? 30000 : 15000);
return;
}
@@ -20,10 +20,10 @@
#include "naxxramas.h"
#define SPELL_WEB_WRAP 28622
#define SPELL_WEB_SPRAY HEROIC(29484,54125)
#define SPELL_POISON_SHOCK HEROIC(28741,54122)
#define SPELL_NECROTIC_POISON HEROIC(54121,28776)
#define SPELL_FRENZY HEROIC(54123,54124)
#define SPELL_WEB_SPRAY RAID_MODE(29484,54125)
#define SPELL_POISON_SHOCK RAID_MODE(28741,54122)
#define SPELL_NECROTIC_POISON RAID_MODE(54121,28776)
#define SPELL_FRENZY RAID_MODE(54123,54124)
#define MOB_WEB_WRAP 16486
#define MOB_SPIDERLING 17055
@@ -75,7 +75,7 @@ struct TRINITY_DLL_DECL boss_maexxnaAI : public BossAI
switch(eventId)
{
case EVENT_WRAP:
for (uint8 i = 0; i < HEROIC(1,2); ++i)
for (uint8 i = 0; i < RAID_MODE(1,2); ++i)
{
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 0, true, -SPELL_WEB_WRAP))
{
@@ -24,9 +24,9 @@
#define SOUND_DEATH 8848
#define SPELL_CURSE_PLAGUEBRINGER HEROIC(29213,54835)
#define SPELL_CURSE_PLAGUEBRINGER RAID_MODE(29213,54835)
#define SPELL_BLINK RAND(29208,29209,29210,29211)
#define SPELL_CRIPPLE HEROIC(29212,54814)
#define SPELL_CRIPPLE RAID_MODE(29212,54814)
#define SPELL_TELEPORT 29216
#define MOB_WARRIOR 16984
@@ -95,7 +95,7 @@ struct TRINITY_DLL_DECL boss_nothAI : public BossAI
events.ScheduleEvent(EVENT_BALCONY, 110000);
events.ScheduleEvent(EVENT_CURSE, 20000+rand()%10000);
events.ScheduleEvent(EVENT_WARRIOR, 30000);
if (HeroicMode)
if (getDifficulty() == RAID_DIFFICULTY_25MAN_NORMAL)
events.ScheduleEvent(EVENT_BLINK, 20000+rand()%10000);
}
}
@@ -146,7 +146,7 @@ struct TRINITY_DLL_DECL boss_nothAI : public BossAI
return;
case EVENT_WARRIOR:
DoScriptText(SAY_SUMMON, me);
SummonUndead(MOB_WARRIOR, HEROIC(2,3));
SummonUndead(MOB_WARRIOR, RAID_MODE(2,3));
events.ScheduleEvent(EVENT_WARRIOR, 30000);
return;
case EVENT_BLINK:
@@ -169,12 +169,12 @@ struct TRINITY_DLL_DECL boss_nothAI : public BossAI
DoScriptText(SAY_SUMMON, me);
switch(balconyCount)
{
case 0: SummonUndead(MOB_CHAMPION, HEROIC(2,4)); break;
case 1: SummonUndead(MOB_CHAMPION, HEROIC(1,2));
SummonUndead(MOB_GUARDIAN, HEROIC(1,2)); break;
case 2: SummonUndead(MOB_GUARDIAN, HEROIC(2,4)); break;
default:SummonUndead(MOB_CHAMPION, HEROIC(5,10));
SummonUndead(MOB_GUARDIAN, HEROIC(5,10));break;
case 0: SummonUndead(MOB_CHAMPION, RAID_MODE(2,4)); break;
case 1: SummonUndead(MOB_CHAMPION, RAID_MODE(1,2));
SummonUndead(MOB_GUARDIAN, RAID_MODE(1,2)); break;
case 2: SummonUndead(MOB_GUARDIAN, RAID_MODE(2,4)); break;
default:SummonUndead(MOB_CHAMPION, RAID_MODE(5,10));
SummonUndead(MOB_GUARDIAN, RAID_MODE(5,10));break;
}
++waveCount;
events.ScheduleEvent(waveCount < 2 ? EVENT_WAVE : EVENT_GROUND, 34000);
@@ -24,7 +24,7 @@
#define EMOTE_BERSERK -1533021
#define EMOTE_ENRAGE -1533022
#define SPELL_HATEFULSTRIKE HEROIC(41926,59192)
#define SPELL_HATEFULSTRIKE RAID_MODE(41926,59192)
#define SPELL_FRENZY 28131
#define SPELL_BERSERK 26662
#define SPELL_SLIMEBOLT 32309
@@ -33,7 +33,7 @@
#define EVENT_HATEFUL 2
#define EVENT_SLIME 3
#define ACHIEVEMENT_MAKE_QUICK_WERK_OF_HIM HEROIC(1856, 1857)
#define ACHIEVEMENT_MAKE_QUICK_WERK_OF_HIM RAID_MODE(1856, 1857)
#define MAX_ENCOUNTER_TIME 3 * 60 * 1000
struct TRINITY_DLL_DECL boss_patchwerkAI : public BossAI
@@ -40,7 +40,7 @@
#define SOUND_AGGROMIX 8847
#define SPELL_UNBALANCING_STRIKE 26613
#define SPELL_DISRUPTING_SHOUT HEROIC(29107,55543)
#define SPELL_DISRUPTING_SHOUT RAID_MODE(29107,55543)
#define SPELL_JAGGED_KNIFE 55550
#define SPELL_HOPELESS 29125
@@ -22,11 +22,11 @@
#define EMOTE_BREATH -1533082
#define EMOTE_ENRAGE -1533083
#define SPELL_FROST_AURA HEROIC(28531,55799)
#define SPELL_FROST_AURA RAID_MODE(28531,55799)
#define SPELL_CLEAVE 19983
#define SPELL_TAIL_SWEEP HEROIC(55697,55696)
#define SPELL_TAIL_SWEEP RAID_MODE(55697,55696)
#define SPELL_SUMMON_BLIZZARD 28560
#define SPELL_LIFE_DRAIN HEROIC(28542,55665)
#define SPELL_LIFE_DRAIN RAID_MODE(28542,55665)
#define SPELL_ICEBOLT 28522
#define SPELL_FROST_BREATH 29318
#define SPELL_FROST_EXPLOSION 28524
@@ -34,12 +34,12 @@
#define SPELL_BERSERK 26662
#define SPELL_DIES 29357
#define SPELL_CHILL HEROIC(28547,55699)
#define SPELL_CHILL RAID_MODE(28547,55699)
#define MOB_BLIZZARD 16474
#define GO_ICEBLOCK 181247
#define ACHIEVEMENT_THE_HUNDRED_CLUB HEROIC(2146, 2147)
#define ACHIEVEMENT_THE_HUNDRED_CLUB RAID_MODE(2146, 2147)
#define MAX_FROST_RESISTANCE 100
enum Phases
@@ -258,7 +258,7 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public BossAI
//DoCastAOE(SPELL_SUMMON_BLIZZARD);
if (Creature *pSummon = DoSummon(MOB_BLIZZARD, me, 0.0f, urand(25000,30000), TEMPSUMMON_TIMED_DESPAWN))
pSummon->GetMotionMaster()->MoveRandom(40);
events.ScheduleEvent(EVENT_BLIZZARD, HEROIC(20000,7000), 0, PHASE_GROUND);
events.ScheduleEvent(EVENT_BLIZZARD, RAID_MODE(20000,7000), 0, PHASE_GROUND);
break;
}
case EVENT_FLIGHT:
@@ -286,7 +286,7 @@ struct TRINITY_DLL_DECL boss_sapphironAI : public BossAI
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
me->SendMovementFlagUpdate();
events.ScheduleEvent(EVENT_ICEBOLT, 1500);
iceboltCount = HEROIC(2,3);
iceboltCount = RAID_MODE(2,3);
return;
case EVENT_ICEBOLT:
{
@@ -139,7 +139,7 @@ struct TRINITY_DLL_DECL boss_thaddiusAI : public BossAI
events.ScheduleEvent(EVENT_SHIFT, 30000);
return;
case EVENT_CHAIN:
DoCast(me->getVictim(), HEROIC(SPELL_CHAIN_LIGHTNING, H_SPELL_CHAIN_LIGHTNING));
DoCast(me->getVictim(), RAID_MODE(SPELL_CHAIN_LIGHTNING, H_SPELL_CHAIN_LIGHTNING));
events.ScheduleEvent(EVENT_CHAIN, urand(10000,20000));
return;
case EVENT_BERSERK:
@@ -180,7 +180,7 @@ struct TRINITY_DLL_DECL mob_stalaggAI : public ScriptedAI
{
if (PowerSurgeTimer <= uiDiff)
{
DoCast(m_creature, HEROIC(SPELL_POWERSURGE, H_SPELL_POWERSURGE));
DoCast(m_creature, RAID_MODE(SPELL_POWERSURGE, H_SPELL_POWERSURGE));
PowerSurgeTimer = urand(15000,20000);
} else PowerSurgeTimer -= uiDiff;
DoMeleeAttackIfReady();
@@ -213,7 +213,7 @@ struct TRINITY_DLL_DECL mob_feugenAI : public ScriptedAI
{
if (StaticFieldTimer <= uiDiff)
{
DoCast(m_creature, HEROIC(SPELL_STATICFIELD, H_SPELL_STATICFIELD));
DoCast(m_creature, RAID_MODE(SPELL_STATICFIELD, H_SPELL_STATICFIELD));
StaticFieldTimer = 5000;
} else StaticFieldTimer -= uiDiff;
DoMeleeAttackIfReady();
@@ -66,11 +66,9 @@ struct TRINITY_DLL_DECL boss_anomalusAI : public ScriptedAI
boss_anomalusAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool HeroicMode;
uint8 Phase;
uint32 SPELL_SPARK_Timer;
@@ -102,7 +100,7 @@ struct TRINITY_DLL_DECL boss_anomalusAI : public ScriptedAI
{
DoScriptText(SAY_DEATH, m_creature);
if (HeroicMode && !DeadChaoticRift)
if (IsHeroic() && !DeadChaoticRift)
{
AchievementEntry const *AchievChaosTheory = GetAchievementStore()->LookupEntry(ACHIEVEMENT_CHAOS_THEORY);
if (AchievChaosTheory)
@@ -205,7 +203,7 @@ struct TRINITY_DLL_DECL boss_anomalusAI : public ScriptedAI
if (SPELL_SPARK_Timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
DoCast(pTarget, HEROIC(SPELL_SPARK_N, SPELL_SPARK_H));
DoCast(pTarget, DUNGEON_MODE(SPELL_SPARK_N, SPELL_SPARK_H));
SPELL_SPARK_Timer = 5000;
} else SPELL_SPARK_Timer -=diff;
@@ -54,11 +54,9 @@ struct TRINITY_DLL_DECL boss_keristraszaAI : public ScriptedAI
boss_keristraszaAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool HeroicMode;
uint32 CRYSTALFIRE_BREATH_Timer;
uint32 CRYSTAL_CHAINS_CRYSTALIZE_Timer;
@@ -73,7 +71,7 @@ struct TRINITY_DLL_DECL boss_keristraszaAI : public ScriptedAI
void Reset()
{
CRYSTALFIRE_BREATH_Timer = 14000;
CRYSTAL_CHAINS_CRYSTALIZE_Timer = HEROIC(30000,11000);
CRYSTAL_CHAINS_CRYSTALIZE_Timer = DUNGEON_MODE(30000,11000);
TAIL_SWEEP_Timer = 5000;
Enrage = false;
@@ -101,7 +99,7 @@ struct TRINITY_DLL_DECL boss_keristraszaAI : public ScriptedAI
{
DoScriptText(SAY_DEATH, m_creature);
if (HeroicMode && !MoreThanTwoIntenseCold)
if (IsHeroic() && !MoreThanTwoIntenseCold)
{
AchievementEntry const *AchievIntenseCold = GetAchievementStore()->LookupEntry(ACHIEVEMENT_INTENSE_COLD);
if (AchievIntenseCold)
@@ -199,7 +197,7 @@ struct TRINITY_DLL_DECL boss_keristraszaAI : public ScriptedAI
if (CRYSTALFIRE_BREATH_Timer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_CRYSTALFIRE_BREATH_N, SPELL_CRYSTALFIRE_BREATH_H));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_CRYSTALFIRE_BREATH_N, SPELL_CRYSTALFIRE_BREATH_H));
CRYSTALFIRE_BREATH_Timer = 14000;
} else CRYSTALFIRE_BREATH_Timer -=diff;
@@ -212,11 +210,11 @@ struct TRINITY_DLL_DECL boss_keristraszaAI : public ScriptedAI
if (CRYSTAL_CHAINS_CRYSTALIZE_Timer <= diff)
{
DoScriptText(SAY_CRYSTAL_NOVA, m_creature);
if (HeroicMode)
if (IsHeroic())
DoCast(m_creature, SPELL_CRYSTALIZE);
else if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, SPELL_CRYSTAL_CHAINS);
CRYSTAL_CHAINS_CRYSTALIZE_Timer = HEROIC(30000,11000);
CRYSTAL_CHAINS_CRYSTALIZE_Timer = DUNGEON_MODE(30000,11000);
} else CRYSTAL_CHAINS_CRYSTALIZE_Timer -= diff;
DoMeleeAttackIfReady();
@@ -66,11 +66,9 @@ struct TRINITY_DLL_DECL boss_magus_telestraAI : public ScriptedAI
boss_magus_telestraAI(Creature* c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool HeroicMode;
uint64 FireMagusGUID;
uint64 FrostMagusGUID;
@@ -131,7 +129,7 @@ struct TRINITY_DLL_DECL boss_magus_telestraAI : public ScriptedAI
{
DoScriptText(SAY_DEATH, m_creature);
if (HeroicMode && AchievementProgress == 2)
if (IsHeroic() && AchievementProgress == 2)
{
AchievementEntry const *AchievSplitPersonality = GetAchievementStore()->LookupEntry(ACHIEV_SPLIT_PERSONALITY);
if (AchievSplitPersonality)
@@ -277,7 +275,7 @@ struct TRINITY_DLL_DECL boss_magus_telestraAI : public ScriptedAI
return;
}
if (HeroicMode && (Phase == 2) && (m_creature->GetHealth() <= (m_creature->GetMaxHealth() * 0.1)))
if (IsHeroic() && (Phase == 2) && (m_creature->GetHealth() <= (m_creature->GetMaxHealth() * 0.1)))
{
Phase = 3;
m_creature->CastStop();
@@ -309,7 +307,7 @@ struct TRINITY_DLL_DECL boss_magus_telestraAI : public ScriptedAI
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
{
DoCast(pTarget, HEROIC(SPELL_ICE_NOVA_N, SPELL_ICE_NOVA_H));
DoCast(pTarget, DUNGEON_MODE(SPELL_ICE_NOVA_N, SPELL_ICE_NOVA_H));
Cooldown = 1500;
}
SPELL_ICE_NOVA_Timer = 15000;
@@ -329,7 +327,7 @@ struct TRINITY_DLL_DECL boss_magus_telestraAI : public ScriptedAI
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
{
DoCast(pTarget, HEROIC(SPELL_FIREBOMB_N, SPELL_FIREBOMB_H));
DoCast(pTarget, DUNGEON_MODE(SPELL_FIREBOMB_N, SPELL_FIREBOMB_H));
Cooldown = 2000;
}
SPELL_FIREBOMB_Timer = 2000;
@@ -58,11 +58,10 @@ struct TRINITY_DLL_DECL boss_ormorokAI : public ScriptedAI
boss_ormorokAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool HeroicMode;
bool Frenzy;
bool CrystalSpikes;
uint8 CrystalSpikes_Count;
@@ -145,7 +144,7 @@ struct TRINITY_DLL_DECL boss_ormorokAI : public ScriptedAI
if (SPELL_TRAMPLE_Timer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_TRAMPLE_N, SPELL_TRAMPLE_H));
DoCast(m_creature, DUNGEON_MODE(SPELL_TRAMPLE_N, SPELL_TRAMPLE_H));
SPELL_TRAMPLE_Timer = 10000;
} else SPELL_TRAMPLE_Timer -= diff;
@@ -169,7 +168,7 @@ struct TRINITY_DLL_DECL boss_ormorokAI : public ScriptedAI
SPELL_CRYSTAL_SPIKES_Timer = 20000;
} else SPELL_CRYSTAL_SPIKES_Timer -=diff;
if (HeroicMode && (SPELL_SUMMON_CRYSTALLINE_TANGLER_Timer <= diff))
if (IsHeroic() && (SPELL_SUMMON_CRYSTALLINE_TANGLER_Timer <= diff))
{
Creature* Crystalline_Tangler = m_creature->SummonCreature(MOB_CRYSTALLINE_TANGLER, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1000);
if (Crystalline_Tangler)
@@ -217,11 +216,8 @@ struct TRINITY_DLL_DECL mob_crystal_spikeAI : public Scripted_NoMovementAI
{
mob_crystal_spikeAI(Creature *c) : Scripted_NoMovementAI(c)
{
HeroicMode = c->GetMap()->IsHeroic();
}
bool HeroicMode;
uint32 SPELL_CRYSTALL_SPIKE_DAMAGE_Timer;
uint32 SPELL_CRYSTAL_SPIKE_PREVISUAL_Timer;
@@ -245,7 +241,7 @@ struct TRINITY_DLL_DECL mob_crystal_spikeAI : public Scripted_NoMovementAI
if (SPELL_CRYSTALL_SPIKE_DAMAGE_Timer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_CRYSTALL_SPIKE_DAMAGE_N, SPELL_CRYSTALL_SPIKE_DAMAGE_H));
DoCast(m_creature, DUNGEON_MODE(SPELL_CRYSTALL_SPIKE_DAMAGE_N, SPELL_CRYSTALL_SPIKE_DAMAGE_H));
SPELL_CRYSTALL_SPIKE_DAMAGE_Timer = 10000;
} else SPELL_CRYSTALL_SPIKE_DAMAGE_Timer -=diff;
}
@@ -255,11 +255,11 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
if (pInstance)
{
if (achievProgress == 1)
pInstance->DoCompleteAchievement(HEROIC(ACHIEV_TWILIGHT_ASSIST,H_ACHIEV_TWILIGHT_ASSIST));
pInstance->DoCompleteAchievement(RAID_MODE(ACHIEV_TWILIGHT_ASSIST,H_ACHIEV_TWILIGHT_ASSIST));
else if (achievProgress == 2)
pInstance->DoCompleteAchievement(HEROIC(ACHIEV_TWILIGHT_DUO,H_ACHIEV_TWILIGHT_DUO));
pInstance->DoCompleteAchievement(RAID_MODE(ACHIEV_TWILIGHT_DUO,H_ACHIEV_TWILIGHT_DUO));
else if (achievProgress == 3)
pInstance->DoCompleteAchievement(HEROIC(ACHIEV_TWILIGHT_ZONE,H_ACHIEV_TWILIGHT_ZONE));
pInstance->DoCompleteAchievement(RAID_MODE(ACHIEV_TWILIGHT_ZONE,H_ACHIEV_TWILIGHT_ZONE));
pInstance->SetData(TYPE_SARTHARION_EVENT, DONE);
}
@@ -430,7 +430,7 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
if (m_uiFlameBreathTimer <= uiDiff)
{
DoScriptText(SAY_SARTHARION_BREATH, m_creature);
DoCast(m_creature->getVictim(), HEROIC(SPELL_FLAME_BREATH, SPELL_FLAME_BREATH_H));
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_FLAME_BREATH, SPELL_FLAME_BREATH_H));
m_uiFlameBreathTimer = urand(25000,35000);
}
else
@@ -439,7 +439,7 @@ struct TRINITY_DLL_DECL boss_sartharionAI : public ScriptedAI
// Tail Sweep
if (m_uiTailSweepTimer <= uiDiff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_TAIL_LASH, SPELL_TAIL_LASH_H));
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_TAIL_LASH, SPELL_TAIL_LASH_H));
m_uiTailSweepTimer = urand(15000,20000);
}
else
@@ -760,7 +760,7 @@ struct TRINITY_DLL_DECL mob_tenebronAI : public dummy_dragonAI
if (m_uiShadowFissureTimer <= uiDiff)
{
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
DoCast(pTarget, HEROIC(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE));
DoCast(pTarget, RAID_MODE(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE));
m_uiShadowFissureTimer = urand(15000,20000);
}
@@ -771,7 +771,7 @@ struct TRINITY_DLL_DECL mob_tenebronAI : public dummy_dragonAI
if (m_uiShadowBreathTimer <= uiDiff)
{
DoScriptText(SAY_TENEBRON_BREATH, m_creature);
DoCast(m_creature->getVictim(), HEROIC(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
m_uiShadowBreathTimer = urand(20000,25000);
}
else
@@ -836,7 +836,7 @@ struct TRINITY_DLL_DECL mob_shadronAI : public dummy_dragonAI
if (m_uiShadowFissureTimer <= uiDiff)
{
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
DoCast(pTarget, HEROIC(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE_H));
DoCast(pTarget, RAID_MODE(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE_H));
m_uiShadowFissureTimer = urand(15000,20000);
}
@@ -847,7 +847,7 @@ struct TRINITY_DLL_DECL mob_shadronAI : public dummy_dragonAI
if (m_uiShadowBreathTimer <= uiDiff)
{
DoScriptText(SAY_SHADRON_BREATH, m_creature);
DoCast(m_creature->getVictim(), HEROIC(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
m_uiShadowBreathTimer = urand(20000,25000);
}
else
@@ -906,7 +906,7 @@ struct TRINITY_DLL_DECL mob_vesperonAI : public dummy_dragonAI
if (m_uiShadowFissureTimer <= uiDiff)
{
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
DoCast(pTarget, HEROIC(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE_H));
DoCast(pTarget, RAID_MODE(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE_H));
m_uiShadowFissureTimer = urand(15000,20000);
}
@@ -917,7 +917,7 @@ struct TRINITY_DLL_DECL mob_vesperonAI : public dummy_dragonAI
if (m_uiShadowBreathTimer <= uiDiff)
{
DoScriptText(SAY_VESPERON_BREATH, m_creature);
DoCast(m_creature->getVictim(), HEROIC(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
m_uiShadowBreathTimer = urand(20000,25000);
}
else
@@ -84,14 +84,12 @@ struct TRINITY_DLL_DECL boss_bjarngrimAI : public ScriptedAI
boss_bjarngrimAI(Creature *pCreature) : ScriptedAI(pCreature)
{
m_pInstance = pCreature->GetInstanceData();
m_bIsHeroic = pCreature->GetMap()->IsHeroic();
m_uiStance = STANCE_DEFENSIVE;
memset(&m_auiStormforgedLieutenantGUID, 0, sizeof(m_auiStormforgedLieutenantGUID));
}
ScriptedInstance* m_pInstance;
bool m_bIsHeroic;
bool m_bIsChangingStance;
uint8 m_uiChargingStatus;
@@ -350,11 +348,9 @@ struct TRINITY_DLL_DECL mob_stormforged_lieutenantAI : public ScriptedAI
mob_stormforged_lieutenantAI(Creature *pCreature) : ScriptedAI(pCreature)
{
m_pInstance = pCreature->GetInstanceData();
m_bIsHeroic = pCreature->GetMap()->IsHeroic();
}
ScriptedInstance* m_pInstance;
bool m_bIsHeroic;
uint32 m_uiArcWeld_Timer;
uint32 m_uiRenewSteel_Timer;
@@ -398,7 +394,7 @@ struct TRINITY_DLL_DECL mob_stormforged_lieutenantAI : public ScriptedAI
if (Creature* pBjarngrim = m_pInstance->instance->GetCreature(m_pInstance->GetData64(DATA_BJARNGRIM)))
{
if (pBjarngrim->isAlive())
DoCast(pBjarngrim, m_bIsHeroic ? SPELL_RENEW_STEEL_H : SPELL_RENEW_STEEL_N);
DoCast(pBjarngrim, DUNGEON_MODE(SPELL_RENEW_STEEL_N, SPELL_RENEW_STEEL_H));
}
}
m_uiRenewSteel_Timer = 10000 + rand()%4000;
@@ -195,7 +195,7 @@ struct TRINITY_DLL_DECL boss_ionarAI : public ScriptedAI
{
if (pSummoned->GetEntry() == NPC_SPARK_OF_IONAR)
{
pSummoned->CastSpell(pSummoned, HEROIC(SPELL_SPARK_VISUAL_TRIGGER_N,SPELL_SPARK_VISUAL_TRIGGER_H), true);
pSummoned->CastSpell(pSummoned, DUNGEON_MODE(SPELL_SPARK_VISUAL_TRIGGER_N,SPELL_SPARK_VISUAL_TRIGGER_H), true);
Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
@@ -259,7 +259,7 @@ struct TRINITY_DLL_DECL boss_ionarAI : public ScriptedAI
if (m_uiStaticOverload_Timer <= uiDiff)
{
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
DoCast(pTarget, HEROIC(SPELL_STATIC_OVERLOAD_N, SPELL_STATIC_OVERLOAD_H));
DoCast(pTarget, DUNGEON_MODE(SPELL_STATIC_OVERLOAD_N, SPELL_STATIC_OVERLOAD_H));
m_uiStaticOverload_Timer = 5000 + rand()%1000;
}
@@ -268,7 +268,7 @@ struct TRINITY_DLL_DECL boss_ionarAI : public ScriptedAI
if (m_uiBallLightning_Timer <= uiDiff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_BALL_LIGHTNING_N, SPELL_BALL_LIGHTNING_H));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_BALL_LIGHTNING_N, SPELL_BALL_LIGHTNING_H));
m_uiBallLightning_Timer = 10000 + rand()%1000;
}
else
@@ -63,12 +63,10 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
boss_lokenAI(Creature* pCreature) : ScriptedAI(pCreature)
{
m_pInstance = pCreature->GetInstanceData();
m_bIsHeroic = pCreature->GetMap()->IsHeroic();
}
ScriptedInstance* m_pInstance;
bool m_bIsHeroic;
bool m_bIsAura;
uint32 m_uiArcLightning_Timer;
@@ -109,7 +107,7 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
{
DoScriptText(SAY_DEATH, m_creature);
if (m_bIsHeroic && EncounterTime <= MAX_ENCOUNTER_TIME)
if (IsHeroic() && EncounterTime <= MAX_ENCOUNTER_TIME)
{
AchievementEntry const *AchievTimelyDeath = GetAchievementStore()->LookupEntry(ACHIEVEMENT_TIMELY_DEATH);
if (AchievTimelyDeath)
@@ -160,12 +158,11 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
int32 dmg;
float m_fDist = m_creature->GetExactDist(i->getSource()->GetPositionX(), i->getSource()->GetPositionY(), i->getSource()->GetPositionZ());
if (m_fDist <= 1.0f) // Less than 1 yard
dmg = (m_bIsHeroic ? 150 : 100); // need to correct damage
else // Further from 1 yard
dmg = ((m_bIsHeroic ? 150 : 100) * m_fDist) + (m_bIsHeroic ? 150 : 100); // need to correct damage
dmg = DUNGEON_MODE(100, 150); // need to correct damage
if (m_fDist > 1.0f) // Further from 1 yard
dmg *= m_fDist;
m_creature->CastCustomSpell(i->getSource(), (m_bIsHeroic ? 59837 : 52942), &dmg, 0, 0, false);
m_creature->CastCustomSpell(i->getSource(), DUNGEON_MODE(52942, 59837), &dmg, 0, 0, false);
}
}
m_uiPulsingShockwave_Timer = 2000;
@@ -178,7 +175,7 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
//breaks at movement, can we assume when it's time, this spell is casted and also must stop movement?
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, DUNGEON_MODE(SPELL_PULSING_SHOCKWAVE_N, SPELL_PULSING_SHOCKWAVE_H)); // need core support
m_bIsAura = true;
m_uiResumePulsingShockwave_Timer = 0;
}
@@ -200,10 +197,10 @@ struct TRINITY_DLL_DECL boss_lokenAI : public ScriptedAI
{
DoScriptText(RAND(SAY_NOVA_1,SAY_NOVA_2,SAY_NOVA_3), m_creature);
DoScriptText(EMOTE_NOVA, m_creature);
DoCast(m_creature, m_bIsHeroic ? SPELL_LIGHTNING_NOVA_H : SPELL_LIGHTNING_NOVA_N);
DoCast(m_creature, DUNGEON_MODE(SPELL_LIGHTNING_NOVA_N, SPELL_LIGHTNING_NOVA_H));
m_bIsAura = false;
m_uiResumePulsingShockwave_Timer = (m_bIsHeroic ? 4000 : 5000); // Pause Pulsing Shockwave aura
m_uiResumePulsingShockwave_Timer = DUNGEON_MODE(5000, 4000); // Pause Pulsing Shockwave aura
m_uiLightningNova_Timer = 20000 + rand()%1000;
}
else
@@ -77,14 +77,12 @@ struct TRINITY_DLL_DECL boss_volkhanAI : public ScriptedAI
boss_volkhanAI(Creature *pCreature) : ScriptedAI(pCreature)
{
m_pInstance = pCreature->GetInstanceData();
m_bIsHeroic = pCreature->GetMap()->IsHeroic();
}
ScriptedInstance* m_pInstance;
std::list<uint64> m_lGolemGUIDList;
bool m_bIsHeroic;
bool m_bHasTemper;
bool m_bIsStriking;
bool m_bCanShatterGolem;
@@ -145,7 +143,7 @@ struct TRINITY_DLL_DECL boss_volkhanAI : public ScriptedAI
if (m_pInstance)
m_pInstance->SetData(TYPE_VOLKHAN, DONE);
if (HeroicMode && GolemsShattered < 5)
if (IsHeroic() && GolemsShattered < 5)
{
AchievementEntry const *AchievShatterResistant = GetAchievementStore()->LookupEntry(ACHIEVEMENT_SHATTER_RESISTANT);
if (AchievShatterResistant)
@@ -195,7 +193,7 @@ struct TRINITY_DLL_DECL boss_volkhanAI : public ScriptedAI
// only shatter brittle golems
if (pTemp->isAlive() && pTemp->GetEntry() == NPC_BRITTLE_GOLEM)
{
pTemp->CastSpell(pTemp, m_bIsHeroic ? SPELL_SHATTER_H : SPELL_SHATTER_N, false);
pTemp->CastSpell(pTemp, DUNGEON_MODE(SPELL_SHATTER_N, SPELL_SHATTER_H), false);
GolemsShattered += 1;
}
}
@@ -218,7 +216,7 @@ struct TRINITY_DLL_DECL boss_volkhanAI : public ScriptedAI
pSummoned->AI()->AttackStart(pTarget);
//why healing when just summoned?
pSummoned->CastSpell(pSummoned, m_bIsHeroic ? SPELL_HEAT_H : SPELL_HEAT_N, false, NULL, NULL, m_creature->GetGUID());
pSummoned->CastSpell(pSummoned, DUNGEON_MODE(SPELL_HEAT_N, SPELL_HEAT_H), false, NULL, NULL, m_creature->GetGUID());
}
}
@@ -257,7 +255,7 @@ struct TRINITY_DLL_DECL boss_volkhanAI : public ScriptedAI
DoScriptText(RAND(SAY_STOMP_1,SAY_STOMP_2), m_creature);
DoCast(m_creature, m_bIsHeroic ? SPELL_SHATTERING_STOMP_H : SPELL_SHATTERING_STOMP_N);
DoCast(m_creature, DUNGEON_MODE(SPELL_SHATTERING_STOMP_N, SPELL_SHATTERING_STOMP_H));
DoScriptText(EMOTE_SHATTER, m_creature);
@@ -369,10 +367,8 @@ struct TRINITY_DLL_DECL mob_molten_golemAI : public ScriptedAI
{
mob_molten_golemAI(Creature *pCreature) : ScriptedAI(pCreature)
{
m_bIsHeroic = pCreature->GetMap()->IsHeroic();
}
bool m_bIsHeroic;
bool m_bIsFrozen;
uint32 m_uiBlast_Timer;
@@ -445,7 +441,7 @@ struct TRINITY_DLL_DECL mob_molten_golemAI : public ScriptedAI
if (m_uiImmolation_Timer <= uiDiff)
{
DoCast(m_creature->getVictim(), m_bIsHeroic ? SPELL_IMMOLATION_STRIKE_H : SPELL_IMMOLATION_STRIKE_N);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_IMMOLATION_STRIKE_N, SPELL_IMMOLATION_STRIKE_H));
m_uiImmolation_Timer = 5000;
}
else
@@ -79,7 +79,7 @@ struct TRINITY_DLL_DECL boss_krystallusAI : public ScriptedAI
if (uiBoulderTossTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_BOULDER_TOSS, H_SPELL_BOULDER_TOSS));
DoCast(pTarget, DUNGEON_MODE(SPELL_BOULDER_TOSS, H_SPELL_BOULDER_TOSS));
uiBoulderTossTimer = 9000 + rand()%6000;
} else uiBoulderTossTimer -= diff;
@@ -92,7 +92,7 @@ struct TRINITY_DLL_DECL boss_krystallusAI : public ScriptedAI
if (uiStompTimer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_STOMP, H_SPELL_STOMP));
DoCast(m_creature, DUNGEON_MODE(SPELL_STOMP, H_SPELL_STOMP));
uiStompTimer = 20000 + rand()%9000;
} else uiStompTimer -= diff;
@@ -108,7 +108,7 @@ struct TRINITY_DLL_DECL boss_krystallusAI : public ScriptedAI
{
if (uiShatterTimer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_SHATTER, H_SPELL_SHATTER));
DoCast(m_creature, DUNGEON_MODE(SPELL_SHATTER, H_SPELL_SHATTER));
bIsSlam = false;
} else uiShatterTimer -= diff;
}
@@ -44,11 +44,9 @@ struct TRINITY_DLL_DECL boss_maiden_of_griefAI : public ScriptedAI
boss_maiden_of_griefAI(Creature *c) : ScriptedAI(c)
{
pInstance = m_creature->GetInstanceData();
IsHeroic = m_creature->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool IsHeroic;
uint32 PartingSorrowTimer;
uint32 StormOfGriefTimer;
@@ -92,7 +90,7 @@ struct TRINITY_DLL_DECL boss_maiden_of_griefAI : public ScriptedAI
if (pInstance->GetData(DATA_MAIDEN_OF_GRIEF_EVENT) == IN_PROGRESS)
AchievTimer += diff;
if(IsHeroic)
if (IsHeroic())
{
if (PartingSorrowTimer <= diff)
{
@@ -107,7 +105,7 @@ struct TRINITY_DLL_DECL boss_maiden_of_griefAI : public ScriptedAI
if (StormOfGriefTimer <= diff)
{
DoCast(m_creature->getVictim(), IsHeroic ? SPELL_STORM_OF_GRIEF_H : SPELL_STORM_OF_GRIEF_N, true);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_STORM_OF_GRIEF_N, SPELL_STORM_OF_GRIEF_H), true);
StormOfGriefTimer = 15000 + rand()%5000;
} else StormOfGriefTimer -= diff;
@@ -115,7 +113,7 @@ struct TRINITY_DLL_DECL boss_maiden_of_griefAI : public ScriptedAI
{
DoResetThreat();
DoScriptText(SAY_STUN, m_creature);
DoCast(m_creature, IsHeroic ? SPELL_SHOCK_OF_SORROW_H : SPELL_SHOCK_OF_SORROW_N);
DoCast(m_creature, DUNGEON_MODE(SPELL_SHOCK_OF_SORROW_N, SPELL_SHOCK_OF_SORROW_H));
ShockOfSorrowTimer = 20000 + rand()%10000;
} else ShockOfSorrowTimer -= diff;
@@ -123,10 +121,10 @@ struct TRINITY_DLL_DECL boss_maiden_of_griefAI : public ScriptedAI
{
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);
if(pTarget)
DoCast(pTarget, IsHeroic ? SPELL_PILLAR_OF_WOE_H : SPELL_PILLAR_OF_WOE_N);
if (pTarget)
DoCast(pTarget, DUNGEON_MODE(SPELL_PILLAR_OF_WOE_N, SPELL_PILLAR_OF_WOE_H));
else
DoCast(m_creature->getVictim(), IsHeroic ? SPELL_PILLAR_OF_WOE_H : SPELL_PILLAR_OF_WOE_N);
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_PILLAR_OF_WOE_N, SPELL_PILLAR_OF_WOE_H));
PillarOfWoeTimer = 5000 + rand()%20000;
} else PillarOfWoeTimer -= diff;
@@ -143,7 +141,7 @@ struct TRINITY_DLL_DECL boss_maiden_of_griefAI : public ScriptedAI
AchievementEntry const *AchievGoodGrief = GetAchievementStore()->LookupEntry(ACHIEVEMENT_GOOD_GRIEF);
Map* pMap = m_creature->GetMap();
if (HeroicMode && AchievTimer < 60000 && pMap && pMap->IsDungeon() && AchievGoodGrief)
if (IsHeroic() && AchievTimer < 60000 && pMap && pMap->IsDungeon() && AchievGoodGrief)
{
Map::PlayerList const &players = pMap->GetPlayers();
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
@@ -130,19 +130,19 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
if (uiChainLightningTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_CHAIN_LIGHTING, H_SPELL_CHAIN_LIGHTING));
DoCast(pTarget, DUNGEON_MODE(SPELL_CHAIN_LIGHTING, H_SPELL_CHAIN_LIGHTING));
uiChainLightningTimer = 10000 + rand()%5000;
} else uiChainLightningTimer -= diff;
if (uiLightningShieldTimer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_LIGHTING_SHIELD, H_SPELL_LIGHTING_SHIELD));
DoCast(m_creature, DUNGEON_MODE(SPELL_LIGHTING_SHIELD, H_SPELL_LIGHTING_SHIELD));
uiLightningShieldTimer -= diff;
}
if (uiStaticChargeTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_STATIC_CHARGE, H_SPELL_STATIC_CHARGE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_STATIC_CHARGE, H_SPELL_STATIC_CHARGE));
uiStaticChargeTimer = 20000 + rand()%5000;
} uiStaticChargeTimer -= diff;
@@ -150,7 +150,7 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
{
if (m_creature->IsNonMeleeSpellCasted(false))
m_creature->InterruptNonMeleeSpells(false);
DoCast(m_creature, HEROIC(SPELL_LIGHTING_RING, H_SPELL_LIGHTING_RING));
DoCast(m_creature, DUNGEON_MODE(SPELL_LIGHTING_RING, H_SPELL_LIGHTING_RING));
uiLightningRingTimer = 30000 + rand()%5000;
} else uiLightningRingTimer -= diff;
@@ -195,7 +195,7 @@ struct TRINITY_DLL_DECL boss_sjonnirAI : public ScriptedAI
if (pInstance)
{
pInstance->SetData(DATA_SJONNIR_EVENT, DONE);
if (HeroicMode && uiKilledIronSludges > 4)
if (IsHeroic() && uiKilledIronSludges > 4)
pInstance->DoCompleteAchievement(ACHIEV_ABUSE_THE_OOZE);
}
}
@@ -184,7 +184,7 @@ struct TRINITY_DLL_DECL mob_tribuna_controllerAI : public ScriptedAI
if (!lKaddrakGUIDList.empty())
for (std::list<Creature*>::iterator itr = lKaddrakGUIDList.begin(); itr != lKaddrakGUIDList.end(); ++itr)
if ((*itr)->isAlive())
(*itr)->CastSpell(pTarget, HEROIC(SPELL_GLARE_OF_THE_TRIBUNAL, H_SPELL_GLARE_OF_THE_TRIBUNAL), true);
(*itr)->CastSpell(pTarget, DUNGEON_MODE(SPELL_GLARE_OF_THE_TRIBUNAL, H_SPELL_GLARE_OF_THE_TRIBUNAL), true);
uiKaddrakEncounterTimer = 1500;
} else uiKaddrakEncounterTimer -= diff;
}
@@ -198,7 +198,7 @@ struct TRINITY_DLL_DECL mob_tribuna_controllerAI : public ScriptedAI
{
pSummon->SetDisplayId(11686);
pSummon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
pSummon->CastSpell(pTarget, HEROIC(SPELL_DARK_MATTER, H_SPELL_DARK_MATTER), true);
pSummon->CastSpell(pTarget, DUNGEON_MODE(SPELL_DARK_MATTER, H_SPELL_DARK_MATTER), true);
}
}
uiMarnakEncounterTimer = 30000 + rand()%1000;
@@ -214,7 +214,7 @@ struct TRINITY_DLL_DECL mob_tribuna_controllerAI : public ScriptedAI
{
pSummon->SetDisplayId(11686);
pSummon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
pSummon->CastSpell(pTarget, HEROIC(SPELL_SEARING_GAZE, H_SPELL_SEARING_GAZE), true);
pSummon->CastSpell(pTarget, DUNGEON_MODE(SPELL_SEARING_GAZE, H_SPELL_SEARING_GAZE), true);
}
}
uiAbedneumEncounterTimer = 30000 + rand()%1000;
@@ -310,7 +310,7 @@ struct TRINITY_DLL_DECL npc_brann_hosAI : public npc_escortAI
{
case 1:
{
uint32 uiSpawnNumber = (HeroicMode ? 3 : 2);
uint32 uiSpawnNumber = DUNGEON_MODE(2,3);
for (uint8 i = 0; i < uiSpawnNumber; ++i)
m_creature->SummonCreature(CREATURE_DARK_RUNE_PROTECTOR, SpawnLocations[0].x, SpawnLocations[0].y, SpawnLocations[0].z, 0.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
m_creature->SummonCreature(CREATURE_DARK_RUNE_STORMCALLER, SpawnLocations[0].x, SpawnLocations[0].y, SpawnLocations[0].z, 0.0f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
@@ -132,7 +132,7 @@ struct TRINITY_DLL_DECL boss_steelbreakerAI : public ScriptedAI
void EnterCombat(Unit *who)
{
DoZoneInCombat();
DoCast(m_creature, HEROIC(SPELL_HIGH_VOLTAGE, SPELL_HIGH_VOLTAGE_H));
DoCast(m_creature, RAID_MODE(SPELL_HIGH_VOLTAGE, SPELL_HIGH_VOLTAGE_H));
events.ScheduleEvent(EVENT_ENRAGE, 900000);
UpdatePhase();
}
@@ -200,19 +200,19 @@ struct TRINITY_DLL_DECL boss_steelbreakerAI : public ScriptedAI
DoCast(SPELL_BERSERK);
break;
case EVENT_FUSION_PUNCH:
DoCast(me->getVictim(), HEROIC(SPELL_FUSION_PUNCH_H, SPELL_FUSION_PUNCH));
DoCast(me->getVictim(), RAID_MODE(SPELL_FUSION_PUNCH_H, SPELL_FUSION_PUNCH));
events.ScheduleEvent(EVENT_FUSION_PUNCH, 13000 + (rand()%9)*1000);
break;
case EVENT_STATIC_DISRUPTION:
{
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM);
DoCast(pTarget, HEROIC(SPELL_STATIC_DISRUPTION_H, SPELL_STATIC_DISRUPTION));
DoCast(pTarget, RAID_MODE(SPELL_STATIC_DISRUPTION_H, SPELL_STATIC_DISRUPTION));
events.ScheduleEvent(EVENT_STATIC_DISRUPTION, 20000 + (rand()%20)*1000);
}
break;
case EVENT_OVERWHELMING_POWER:
DoCast(me->getVictim(), HEROIC(SPELL_OVERWHELMING_POWER, SPELL_OVERWHELMING_POWER_H));
events.ScheduleEvent(EVENT_OVERWHELMING_POWER, (HeroicMode) ? 35000 : 60000);
DoCast(me->getVictim(), RAID_MODE(SPELL_OVERWHELMING_POWER, SPELL_OVERWHELMING_POWER_H));
events.ScheduleEvent(EVENT_OVERWHELMING_POWER, RAID_MODE(60000, 35000));
break;
}
}
@@ -315,7 +315,7 @@ struct TRINITY_DLL_DECL boss_runemaster_molgeimAI : public ScriptedAI
}
break;
case EVENT_SHIELD_OF_RUNES:
DoCast(m_creature, HEROIC(SPELL_SHIELD_OF_RUNES, SPELL_SHIELD_OF_RUNES_H));
DoCast(m_creature, RAID_MODE(SPELL_SHIELD_OF_RUNES, SPELL_SHIELD_OF_RUNES_H));
events.ScheduleEvent(EVENT_SHIELD_OF_RUNES, 27000+ (rand()%7)*1000);
break;
case EVENT_RUNE_OF_DEATH:
@@ -362,7 +362,7 @@ struct TRINITY_DLL_DECL mob_lightning_elementalAI : public ScriptedAI
if(m_creature->IsWithinMeleeRange(Target))
{
DoCast(Target, HEROIC(SPELL_LIGHTNING_BLAST, SPELL_LIGHTNING_BLAST_H));
DoCast(Target, RAID_MODE(SPELL_LIGHTNING_BLAST, SPELL_LIGHTNING_BLAST_H));
m_creature->Kill(m_creature); // hack until spell works
}
@@ -479,20 +479,20 @@ struct TRINITY_DLL_DECL boss_stormcaller_brundirAI : public ScriptedAI
case EVENT_CHAIN_LIGHTNING:
{
Unit* Target = SelectUnit(SELECT_TARGET_RANDOM,0);
DoCast(Target, HEROIC(SPELL_CHAIN_LIGHTNING_N , SPELL_CHAIN_LIGHTNING_H));
DoCast(Target, RAID_MODE(SPELL_CHAIN_LIGHTNING_N , SPELL_CHAIN_LIGHTNING_H));
events.ScheduleEvent(EVENT_CHAIN_LIGHTNING, 9000+ (rand()%8)*1000);
}
break;
case EVENT_OVERLOAD:
DoCast(HEROIC(SPELL_OVERLOAD , SPELL_OVERLOAD_H));
DoCast(RAID_MODE(SPELL_OVERLOAD , SPELL_OVERLOAD_H));
events.ScheduleEvent(EVENT_OVERLOAD, 60000+ (rand()%65)*1000);
break;
case EVENT_LIGHTNING_WHIRL:
DoCast(HEROIC(SPELL_LIGHTNING_WHIRL , SPELL_LIGHTNING_WHIRL_H));
DoCast(RAID_MODE(SPELL_LIGHTNING_WHIRL , SPELL_LIGHTNING_WHIRL_H));
events.ScheduleEvent(EVENT_LIGHTNING_WHIRL, 20000+ (rand()%20)*1000);
break;
case EVENT_LIGHTNING_TENDRILS:
DoCast(HEROIC(SPELL_LIGHTNING_TENDRILS, SPELL_LIGHTNING_TENDRILS_H));
DoCast(RAID_MODE(SPELL_LIGHTNING_TENDRILS, SPELL_LIGHTNING_TENDRILS_H));
events.DelayEvents(15000, 5000);
DoResetThreat();
break;
@@ -20,14 +20,14 @@
#include "ulduar.h"
#include "Vehicle.h"
#define SPELL_ARM_DEAD_DAMAGE HEROIC(63629,63979)
#define SPELL_TWO_ARM_SMASH HEROIC(63356,64003)
#define SPELL_ONE_ARM_SMASH HEROIC(63573,64006)
#define SPELL_STONE_SHOUT HEROIC(63716,64005)
#define SPELL_PETRIFY_BREATH HEROIC(62030,63980)
#define SPELL_ARM_DEAD_DAMAGE RAID_MODE(63629,63979)
#define SPELL_TWO_ARM_SMASH RAID_MODE(63356,64003)
#define SPELL_ONE_ARM_SMASH RAID_MODE(63573,64006)
#define SPELL_STONE_SHOUT RAID_MODE(63716,64005)
#define SPELL_PETRIFY_BREATH RAID_MODE(62030,63980)
#define SPELL_STONE_GRIP HEROIC(62166,63981)
#define SPELL_ARM_SWEEP HEROIC(63766,63983)
#define SPELL_STONE_GRIP RAID_MODE(62166,63981)
#define SPELL_ARM_SWEEP RAID_MODE(63766,63983)
enum Events
{
@@ -185,7 +185,7 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
{
DoScriptText(EMOTE_BREATH, m_creature);
std::list<Unit*> pTargets;
SelectTargetList(pTargets, HEROIC(3,9), SELECT_TARGET_RANDOM, 100, true);
SelectTargetList(pTargets, RAID_MODE(3,9), SELECT_TARGET_RANDOM, 100, true);
uint8 i = 0;
for (std::list<Unit*>::iterator itr = pTargets.begin(); itr != pTargets.end();)
{
@@ -194,7 +194,7 @@ struct TRINITY_DLL_DECL boss_razorscaleAI : public BossAI
DoCast(*itr, SPELL_FLAMEBUFFET, true);
++i;
}
if (++itr == pTargets.end() || i == HEROIC(3,9))
if (++itr == pTargets.end() || i == RAID_MODE(3,9))
{
AttackStart(*--itr); // seems to attack targets randomly during perma-ground phase..
break;
@@ -73,12 +73,10 @@ struct TRINITY_DLL_DECL boss_ingvar_the_plundererAI : public ScriptedAI
boss_ingvar_the_plundererAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool HeroicMode;
bool undead;
bool event_inProgress;
@@ -204,7 +202,7 @@ struct TRINITY_DLL_DECL boss_ingvar_the_plundererAI : public ScriptedAI
if (!wait_Timer)
{
if (undead)
DoCast(m_creature->getVictim(), HEROIC(SPELL_WOE_STRIKE, H_SPELL_WOE_STRIKE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_WOE_STRIKE, H_SPELL_WOE_STRIKE));
else
DoCast(m_creature->getVictim(), SPELL_CLEAVE);
Cleave_Timer = rand()%5000 + 2000;
@@ -220,7 +218,7 @@ struct TRINITY_DLL_DECL boss_ingvar_the_plundererAI : public ScriptedAI
if (undead)
DoCast(m_creature->getVictim(), SPELL_DARK_SMASH);
else
DoCast(m_creature->getVictim(), HEROIC(SPELL_SMASH, H_SPELL_SMASH));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SMASH, H_SPELL_SMASH));
Smash_Timer = 10000;
wait_Timer = 5000;
@@ -231,7 +229,7 @@ struct TRINITY_DLL_DECL boss_ingvar_the_plundererAI : public ScriptedAI
{
if (Enrage_Timer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_ENRAGE, H_SPELL_ENRAGE));
DoCast(m_creature, DUNGEON_MODE(SPELL_ENRAGE, H_SPELL_ENRAGE));
Enrage_Timer = 10000;
} else Enrage_Timer -= diff;
} else // In Undead form used to summon weapon
@@ -258,9 +256,9 @@ struct TRINITY_DLL_DECL boss_ingvar_the_plundererAI : public ScriptedAI
if (!wait_Timer)
{
if (undead)
DoCast(m_creature, HEROIC(SPELL_DREADFUL_ROAR, H_SPELL_DREADFUL_ROAR));
DoCast(m_creature, DUNGEON_MODE(SPELL_DREADFUL_ROAR, H_SPELL_DREADFUL_ROAR));
else
DoCast(m_creature, HEROIC(SPELL_STAGGERING_ROAR, H_SPELL_STAGGERING_ROAR));
DoCast(m_creature, DUNGEON_MODE(SPELL_STAGGERING_ROAR, H_SPELL_STAGGERING_ROAR));
Roar_Timer = 10000;
wait_Timer = 5000;
@@ -398,10 +396,8 @@ struct TRINITY_DLL_DECL mob_ingvar_throw_dummyAI : public ScriptedAI
{
mob_ingvar_throw_dummyAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = c->GetMap()->IsHeroic();
}
bool HeroicMode;
uint32 Despawn_Timer;
void Reset()
@@ -409,7 +405,7 @@ struct TRINITY_DLL_DECL mob_ingvar_throw_dummyAI : public ScriptedAI
Unit *pTarget = m_creature->FindNearestCreature(ENTRY_THROW_TARGET,50);
if (pTarget)
{
DoCast(m_creature, HEROIC(SPELL_SHADOW_AXE_DAMAGE, H_SPELL_SHADOW_AXE_DAMAGE));
DoCast(m_creature, DUNGEON_MODE(SPELL_SHADOW_AXE_DAMAGE, H_SPELL_SHADOW_AXE_DAMAGE));
float x,y,z;
pTarget->GetPosition(x,y,z);
m_creature->GetMotionMaster()->MovePoint(0,x,y,z);
@@ -106,7 +106,6 @@ struct TRINITY_DLL_DECL boss_kelesethAI : public ScriptedAI
boss_kelesethAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
Heroic = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
@@ -117,7 +116,6 @@ struct TRINITY_DLL_DECL boss_kelesethAI : public ScriptedAI
uint32 ShadowboltTimer;
uint64 SkeletonGUID[5];
bool Skeletons;
bool Heroic;
bool RespawnSkeletons;
void Reset()
@@ -145,7 +143,7 @@ struct TRINITY_DLL_DECL boss_kelesethAI : public ScriptedAI
{
DoScriptText(SAY_DEATH, m_creature);
if (Heroic && !ShatterFrostTomb)
if (IsHeroic() && !ShatterFrostTomb)
{
AchievementEntry const *AchievOnTheRocks = GetAchievementStore()->LookupEntry(ACHIEVEMENT_ON_THE_ROCKS);
if (AchievOnTheRocks)
@@ -188,7 +186,7 @@ struct TRINITY_DLL_DECL boss_kelesethAI : public ScriptedAI
{
Unit *pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO, 0);
if (pTarget && pTarget->isAlive() && pTarget->GetTypeId() == TYPEID_PLAYER)
m_creature->CastSpell(pTarget, HEROIC(SPELL_SHADOWBOLT, SPELL_SHADOWBOLT_HEROIC), true);
m_creature->CastSpell(pTarget, DUNGEON_MODE(SPELL_SHADOWBOLT, SPELL_SHADOWBOLT_HEROIC), true);
ShadowboltTimer = 10000;
} else ShadowboltTimer -= diff;
@@ -63,13 +63,11 @@ struct TRINITY_DLL_DECL boss_skarvald_the_constructorAI : public ScriptedAI
boss_skarvald_the_constructorAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool ghost;
bool HeroicMode;
uint32 Charge_Timer;
uint32 StoneStrike_Timer;
uint32 Response_Timer;
@@ -208,13 +206,11 @@ struct TRINITY_DLL_DECL boss_dalronn_the_controllerAI : public ScriptedAI
boss_dalronn_the_controllerAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool ghost;
bool HeroicMode;
uint32 ShadowBolt_Timer;
uint32 Debilitate_Timer;
uint32 Summon_Timer;
@@ -344,7 +340,7 @@ struct TRINITY_DLL_DECL boss_dalronn_the_controllerAI : public ScriptedAI
{
if (!m_creature->IsNonMeleeSpellCasted(false))
{
DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0),HEROIC(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), DUNGEON_MODE(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
ShadowBolt_Timer = 1000;
}
} else ShadowBolt_Timer -= diff;
@@ -358,7 +354,7 @@ struct TRINITY_DLL_DECL boss_dalronn_the_controllerAI : public ScriptedAI
}
} else Debilitate_Timer -= diff;
if (HeroicMode)
if (IsHeroic())
if (Summon_Timer <= diff)
{
DoCast(m_creature, H_SPELL_SUMMON_SKELETONS);
@@ -164,13 +164,13 @@ struct TRINITY_DLL_DECL boss_palehoofAI : public ScriptedAI
if (uiImpaleTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_IMPALE, H_SPELL_IMPALE));
DoCast(pTarget, DUNGEON_MODE(SPELL_IMPALE, H_SPELL_IMPALE));
uiImpaleTimer = urand(8000,12000);
} else uiImpaleTimer -= diff;
if (uiWhiteringRoarTimer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_WITHERING_ROAR, H_SPELL_WITHERING_ROAR));
DoCast(m_creature, DUNGEON_MODE(SPELL_WITHERING_ROAR, H_SPELL_WITHERING_ROAR));
uiWhiteringRoarTimer = urand(8000,12000);
} else uiWhiteringRoarTimer -= diff;
@@ -200,7 +200,7 @@ struct TRINITY_DLL_DECL boss_palehoofAI : public ScriptedAI
m_creature->SummonCreature(MOB_STASIS_CONTROLLER,moveLocs[5].x,moveLocs[5].y,moveLocs[5].z,0,TEMPSUMMON_CORPSE_DESPAWN);
}
Phase move = PHASE_NONE;
if (AddCount >= HEROIC(2,4))
if (AddCount >= DUNGEON_MODE(2,4))
move = PHASE_GORTOK_PALEHOOF;
else
{
@@ -290,7 +290,7 @@ struct TRINITY_DLL_DECL mob_ravenous_furbolgAI : public ScriptedAI
if (uiChainLightingTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_CHAIN_LIGHTING, H_SPELL_CHAIN_LIGHTING));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_CHAIN_LIGHTING, H_SPELL_CHAIN_LIGHTING));
uiChainLightingTimer = 5000 + rand()%5000;
} else uiChainLightingTimer -= diff;
@@ -396,7 +396,7 @@ struct TRINITY_DLL_DECL mob_frenzied_worgenAI : public ScriptedAI
if (uiMortalWoundTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_MORTAL_WOUND, H_SPELL_MORTAL_WOUND));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MORTAL_WOUND, H_SPELL_MORTAL_WOUND));
uiMortalWoundTimer = 3000 + rand()%4000;
} else uiMortalWoundTimer -= diff;
@@ -511,14 +511,14 @@ struct TRINITY_DLL_DECL mob_ferocious_rhinoAI : public ScriptedAI
if (uiGoreTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_GORE, H_SPELL_GORE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_GORE, H_SPELL_GORE));
uiGoreTimer = 13000 + rand()%4000;
} else uiGoreTimer -= diff;
if (uiGrievousWoundTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_GRIEVOUS_WOUND, H_SPELL_GRIEVOUS_WOUND));
DoCast(pTarget, DUNGEON_MODE(SPELL_GRIEVOUS_WOUND, H_SPELL_GRIEVOUS_WOUND));
uiGrievousWoundTimer = 18000 + rand()%4000;
} else uiGrievousWoundTimer -= diff;
@@ -625,14 +625,14 @@ struct TRINITY_DLL_DECL mob_massive_jormungarAI : public ScriptedAI
if (uiAcidSplatterTimer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_POISON_BREATH, H_SPELL_POISON_BREATH));
DoCast(m_creature, DUNGEON_MODE(SPELL_POISON_BREATH, H_SPELL_POISON_BREATH));
uiAcidSplatterTimer = 10000 + rand()%4000;
} else uiAcidSplatterTimer -= diff;
if (uiPoisonBreathTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_POISON_BREATH, H_SPELL_POISON_BREATH));
DoCast(pTarget, DUNGEON_MODE(SPELL_POISON_BREATH, H_SPELL_POISON_BREATH));
uiPoisonBreathTimer = 8000 + rand()%4000;
} else uiPoisonBreathTimer -= diff;
@@ -149,21 +149,21 @@ struct TRINITY_DLL_DECL boss_skadiAI : public ScriptedAI
if (uiCrushTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_CRUSH, H_SPELL_CRUSH));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_CRUSH, H_SPELL_CRUSH));
uiCrushTimer = 8000;
} else uiCrushTimer -= diff;
if (uiPoisonedSpearTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_POISONED_SPEAR, H_SPELL_POISONED_SPEAR));
DoCast(pTarget, DUNGEON_MODE(SPELL_POISONED_SPEAR, H_SPELL_POISONED_SPEAR));
uiPoisonedSpearTimer = 10000;
} else uiPoisonedSpearTimer -= diff;
if (uiWhirlwindTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
m_creature->CastSpell(pTarget, HEROIC(SPELL_WHIRLWIND, H_SPELL_WHIRLWIND), false);
m_creature->CastSpell(pTarget, DUNGEON_MODE(SPELL_WHIRLWIND, H_SPELL_WHIRLWIND), false);
} else uiWhirlwindTimer = 20000;
DoMeleeAttackIfReady();
@@ -189,7 +189,7 @@ struct TRINITY_DLL_DECL boss_skadiAI : public ScriptedAI
if(type != POINT_MOTION_TYPE)
return;
if (HeroicMode ? (uiSpawnCounter >= 4) : (uiSpawnCounter >= 5))
if (uiSpawnCounter >= DUNGEON_MODE(4, 5))
{
uiWaypointId = 200;
uiMovementTimer = 3000;
@@ -216,7 +216,7 @@ struct TRINITY_DLL_DECL boss_skadiAI : public ScriptedAI
void SpawnMobs(uint32 spot)
{
uint8 uiMaxSpawn = (HeroicMode ? 6 : 5);
uint8 uiMaxSpawn = DUNGEON_MODE(5, 6);
for (uint8 i = 0; i < uiMaxSpawn; ++i)
{
Creature* pTemp;
@@ -263,7 +263,7 @@ struct TRINITY_DLL_DECL boss_svala_sorrowgraveAI : public ScriptedAI
if (uiSinsterStrikeTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_SINSTER_STRIKE, H_SPELL_SINSTER_STRIKE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SINSTER_STRIKE, H_SPELL_SINSTER_STRIKE));
uiSinsterStrikeTimer = urand(5000,9000);
} else uiSinsterStrikeTimer -= diff;
@@ -137,7 +137,7 @@ struct TRINITY_DLL_DECL boss_ymironAI : public ScriptedAI
m_uiFetidRot_Timer = urand(8000,13000);
m_uiBane_Timer = urand(18000,23000);
m_uiDarkSlash_Timer = urand(28000,33000);
m_uiAncestors_Vengeance_Timer = HEROIC(60000,45000);
m_uiAncestors_Vengeance_Timer = DUNGEON_MODE(60000,45000);
m_uiPause_Timer = 0;
m_uiAbility_BJORN_Timer = 0;
@@ -147,7 +147,7 @@ struct TRINITY_DLL_DECL boss_ymironAI : public ScriptedAI
m_uiActivedNumber = 0;
m_uiHealthAmountModifier = 1;
m_uiHealthAmountMultipler = HEROIC(20,25);
m_uiHealthAmountMultipler = DUNGEON_MODE(20,25);
DespawnBoatGhosts(m_uiActivedCreatureGUID);
DespawnBoatGhosts(m_uiOrbGUID);
@@ -218,13 +218,13 @@ struct TRINITY_DLL_DECL boss_ymironAI : public ScriptedAI
// Normal spells ------------------------------------------------------------------------
if (m_uiBane_Timer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_BANE, H_SPELL_BANE));
DoCast(m_creature, DUNGEON_MODE(SPELL_BANE, H_SPELL_BANE));
m_uiBane_Timer = urand(20000,25000);
} else m_uiBane_Timer -= diff;
if (m_uiFetidRot_Timer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_FETID_ROT, H_SPELL_FETID_ROT));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_FETID_ROT, H_SPELL_FETID_ROT));
m_uiFetidRot_Timer = urand(10000,15000);
} else m_uiFetidRot_Timer -= diff;
@@ -237,7 +237,7 @@ struct TRINITY_DLL_DECL boss_ymironAI : public ScriptedAI
if (m_uiAncestors_Vengeance_Timer <= diff)
{
DoCast(m_creature, SPELL_ANCESTORS_VENGEANCE);
m_uiAncestors_Vengeance_Timer = HEROIC(urand(60000,65000),urand(45000,50000));
m_uiAncestors_Vengeance_Timer = DUNGEON_MODE(urand(60000,65000),urand(45000,50000));
} else m_uiAncestors_Vengeance_Timer -= diff;
// Abilities ------------------------------------------------------------------------------
@@ -247,7 +247,7 @@ struct TRINITY_DLL_DECL boss_ymironAI : public ScriptedAI
if (Creature* pTemp = m_creature->SummonCreature(CREATURE_SPIRIT_FOUNT, 385+rand()%10, -330+rand()%10, 104.756, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 180000))
{
pTemp->SetSpeed(MOVE_RUN, 0.4f);
pTemp->CastSpell(pTemp, HEROIC(SPELL_SPIRIT_FOUNT, H_SPELL_SPIRIT_FOUNT), true);
pTemp->CastSpell(pTemp, DUNGEON_MODE(SPELL_SPIRIT_FOUNT, H_SPELL_SPIRIT_FOUNT), true);
pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
pTemp->SetDisplayId(11686);
@@ -259,13 +259,13 @@ struct TRINITY_DLL_DECL boss_ymironAI : public ScriptedAI
if (m_bIsActiveWithHALDOR && m_uiAbility_HALDOR_Timer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_SPIRIT_STRIKE, H_SPELL_SPIRIT_STRIKE));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SPIRIT_STRIKE, H_SPELL_SPIRIT_STRIKE));
m_uiAbility_HALDOR_Timer = 5000; // overtime
} else m_uiAbility_HALDOR_Timer -= diff;
if (m_bIsActiveWithRANULF && m_uiAbility_RANULF_Timer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_SPIRIT_BURST, H_SPELL_SPIRIT_BURST));
DoCast(m_creature, DUNGEON_MODE(SPELL_SPIRIT_BURST, H_SPELL_SPIRIT_BURST));
m_uiAbility_RANULF_Timer = 10000; // overtime
} else m_uiAbility_RANULF_Timer -= diff;
@@ -9,14 +9,14 @@ UPDATE `creature_template` SET `ScriptName`='mob_archavon_warder' WHERE `entry`=
//Spells Archavon
#define SPELL_ROCK_SHARDS 58678
#define SPELL_CRUSHING_LEAP HEROIC(58960,60894)//Instant (10-80yr range) -- Leaps at an enemy, inflicting 8000 Physical damage, knocking all nearby enemies away, and creating a cloud of choking debris.
#define SPELL_STOMP HEROIC(58663,60880)
#define SPELL_IMPALE HEROIC(58666,60882) //Lifts an enemy off the ground with a spiked fist, inflicting 47125 to 52875 Physical damage and 9425 to 10575 additional damage each second for 8 sec.
#define SPELL_CRUSHING_LEAP RAID_MODE(58960,60894)//Instant (10-80yr range) -- Leaps at an enemy, inflicting 8000 Physical damage, knocking all nearby enemies away, and creating a cloud of choking debris.
#define SPELL_STOMP RAID_MODE(58663,60880)
#define SPELL_IMPALE RAID_MODE(58666,60882) //Lifts an enemy off the ground with a spiked fist, inflicting 47125 to 52875 Physical damage and 9425 to 10575 additional damage each second for 8 sec.
#define SPELL_BERSERK 47008
//Spells Archavon Warders
#define SPELL_ROCK_SHOWER HEROIC(60919,60923)
#define SPELL_SHIELD_CRUSH HEROIC(60897,60899)
#define SPELL_WHIRL HEROIC(60902,60916)
#define SPELL_ROCK_SHOWER RAID_MODE(60919,60923)
#define SPELL_SHIELD_CRUSH RAID_MODE(60897,60899)
#define SPELL_WHIRL RAID_MODE(60902,60916)
//4 Warders spawned
#define ARCHAVON_WARDER 32353 //npc 32353
@@ -2,8 +2,8 @@
#include "vault_of_archavon.h"
//Emalon spells
#define SPELL_CHAIN_LIGHTNING HEROIC(64213, 64215)
#define SPELL_LIGHTNING_NOVA HEROIC(64216, 65279)
#define SPELL_CHAIN_LIGHTNING RAID_MODE(64213, 64215)
#define SPELL_LIGHTNING_NOVA RAID_MODE(64216, 65279)
#define SPELL_OVERCHARGE 64218 //Casted every 45 sec on a random Tempest Minion
#define SPELL_BERSERK 26662
@@ -97,23 +97,23 @@ struct TRINITY_DLL_DECL boss_cyanigosaAI : public ScriptedAI
if (uiBlizzardTimer <= diff)
{
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(pTarget, HEROIC(SPELL_BLIZZARD, H_SPELL_BLIZZARD));
DoCast(pTarget, DUNGEON_MODE(SPELL_BLIZZARD, H_SPELL_BLIZZARD));
uiBlizzardTimer = 15000;
} else uiBlizzardTimer -= diff;
if (uiTailSweepTimer <= diff)
{
DoCast(HEROIC(SPELL_TAIL_SWEEP, H_SPELL_TAIL_SWEEP));
DoCast(DUNGEON_MODE(SPELL_TAIL_SWEEP, H_SPELL_TAIL_SWEEP));
uiTailSweepTimer = 20000;
} else uiTailSweepTimer -= diff;
if (uiUncontrollableEnergyTimer <= diff)
{
DoCastVictim(HEROIC(SPELL_UNCONTROLLABLE_ENERGY,H_SPELL_UNCONTROLLABLE_ENERGY));
DoCastVictim(DUNGEON_MODE(SPELL_UNCONTROLLABLE_ENERGY,H_SPELL_UNCONTROLLABLE_ENERGY));
uiUncontrollableEnergyTimer = 25000;
} else uiUncontrollableEnergyTimer -= diff;
if (HeroicMode)
if (IsHeroic())
if (uiManaDestructionTimer <= diff)
{
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
@@ -91,7 +91,7 @@ struct TRINITY_DLL_DECL boss_erekemAI : public ScriptedAI
void EnterCombat(Unit* who)
{
DoScriptText(SAY_AGGRO, m_creature);
DoCast(m_creature, HEROIC(SPELL_EARTH_SHIELD, H_SPELL_EARTH_SHIELD));
DoCast(m_creature, DUNGEON_MODE(SPELL_EARTH_SHIELD, H_SPELL_EARTH_SHIELD));
if (pInstance)
{
@@ -111,7 +111,7 @@ struct TRINITY_DLL_DECL boss_erekemAI : public ScriptedAI
return;
//spam stormstrike in hc mode if spawns are dead
if (HeroicMode)
if (IsHeroic())
{
if (pGuard1 && !pGuard1->isAlive() && pGuard2 && !pGuard2->isAlive())
{
@@ -121,7 +121,7 @@ struct TRINITY_DLL_DECL boss_erekemAI : public ScriptedAI
if (uiEarthShieldTimer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_EARTH_SHIELD, H_SPELL_EARTH_SHIELD));
DoCast(m_creature, DUNGEON_MODE(SPELL_EARTH_SHIELD, H_SPELL_EARTH_SHIELD));
uiEarthShieldTimer = 20000;
} else uiEarthShieldTimer -= diff;
@@ -129,7 +129,7 @@ struct TRINITY_DLL_DECL boss_erekemAI : public ScriptedAI
{
if (Creature *pTarget = GetChainHealTarget())
{
DoCast(pTarget, HEROIC(SPELL_CHAIN_HEAL, H_SPELL_CHAIN_HEAL));
DoCast(pTarget, DUNGEON_MODE(SPELL_CHAIN_HEAL, H_SPELL_CHAIN_HEAL));
//If one of the adds is dead spawn heals faster
uiChainHealTimer = ((pGuard1 && !pGuard1->isAlive()) || (pGuard2 && !pGuard2->isAlive()) ? 3000 : 8000) + rand()%3000;
}
@@ -78,10 +78,8 @@ struct TRINITY_DLL_DECL boss_ichoronAI : public ScriptedAI
boss_ichoronAI(Creature* pCreature) : ScriptedAI(pCreature)
{
pInstance = pCreature->GetInstanceData();
HeroicMode = pCreature->GetMap()->IsHeroic();
}
bool HeroicMode;
bool bIsExploded;
bool bIsFrenzy;
@@ -186,7 +184,7 @@ struct TRINITY_DLL_DECL boss_ichoronAI : public ScriptedAI
{
if (!m_creature->HasAura(SPELL_PROTECTIVE_BUBBLE, 0))
{
DoCast(m_creature, HEROIC(SPELL_WATER_BLAST, SPELL_WATER_BLAST_H));
DoCast(m_creature, DUNGEON_MODE(SPELL_WATER_BLAST, SPELL_WATER_BLAST_H));
//DoCast(m_creature, SPELL_DRAINED);
bIsExploded = true;
uiShowup_Counter = 0;
@@ -230,14 +228,14 @@ struct TRINITY_DLL_DECL boss_ichoronAI : public ScriptedAI
{
if (uiWaterBoltVolley_Timer < uiDiff)
{
DoCast(m_creature, HEROIC(SPELL_WATER_BOLT_VOLLEY, SPELL_WATER_BOLT_VOLLEY_H));
DoCast(m_creature, DUNGEON_MODE(SPELL_WATER_BOLT_VOLLEY, SPELL_WATER_BOLT_VOLLEY_H));
uiWaterBoltVolley_Timer = urand(10000, 15000);
}
else uiWaterBoltVolley_Timer -= uiDiff;
if (!bIsFrenzy && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 25)
{
DoCast(m_creature, HEROIC(SPELL_FRENZY, SPELL_FRENZY_H));
DoCast(m_creature, DUNGEON_MODE(SPELL_FRENZY, SPELL_FRENZY_H));
bIsFrenzy = true;
}
@@ -87,23 +87,23 @@ struct TRINITY_DLL_DECL boss_lavanthorAI : public ScriptedAI
if (uiFireboltTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_FIREBOLT, H_SPELL_FIREBOLT));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_FIREBOLT, H_SPELL_FIREBOLT));
uiFireboltTimer = urand(5000,13000);
} else uiFireboltTimer -= diff;
if (uiFlameBreathTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_FLAME_BREATH, H_SPELL_FLAME_BREATH));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_FLAME_BREATH, H_SPELL_FLAME_BREATH));
uiFlameBreathTimer = urand(10000,15000);
} else uiFlameBreathTimer -= diff;
if (uiLavaBurnTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_LAVA_BURN, H_SPELL_LAVA_BURN));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_LAVA_BURN, H_SPELL_LAVA_BURN));
uiLavaBurnTimer = urand(15000,23000);
}
if (HeroicMode)
if (IsHeroic())
{
if (uiCauterizingFlamesTimer <= diff)
{
@@ -69,13 +69,10 @@ struct TRINITY_DLL_DECL boss_xevozzAI : public ScriptedAI
boss_xevozzAI(Creature* pCreature) : ScriptedAI(pCreature)
{
pInstance = pCreature->GetInstanceData();
HeroicMode = pCreature->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool HeroicMode;
uint32 uiSummonEtherealSphere_Timer;
uint32 uiArcaneBarrageVolley_Timer;
uint32 uiArcaneBuffet_Timer;
@@ -157,7 +154,7 @@ struct TRINITY_DLL_DECL boss_xevozzAI : public ScriptedAI
if (uiArcaneBarrageVolley_Timer < uiDiff)
{
DoCast(m_creature, HEROIC(SPELL_ARCANE_BARRAGE_VOLLEY, SPELL_ARCANE_BARRAGE_VOLLEY_H));
DoCast(m_creature, DUNGEON_MODE(SPELL_ARCANE_BARRAGE_VOLLEY, SPELL_ARCANE_BARRAGE_VOLLEY_H));
uiArcaneBarrageVolley_Timer = urand(20000, 22000);
}
else uiArcaneBarrageVolley_Timer -= uiDiff;
@@ -165,7 +162,7 @@ struct TRINITY_DLL_DECL boss_xevozzAI : public ScriptedAI
if (uiArcaneBuffet_Timer)
if (uiArcaneBuffet_Timer < uiDiff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_ARCANE_BUFFET, SPELL_ARCANE_BUFFET_H));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_ARCANE_BUFFET, SPELL_ARCANE_BUFFET_H));
uiArcaneBuffet_Timer = 0;
}
else uiArcaneBuffet_Timer -= uiDiff;
@@ -174,7 +171,7 @@ struct TRINITY_DLL_DECL boss_xevozzAI : public ScriptedAI
{
DoScriptText(SAY_SPAWN, m_creature);
DoCast(m_creature, SPELL_SUMMON_ETHEREAL_SPHERE_1);
if (HeroicMode) // extra one for heroic
if (IsHeroic()) // extra one for heroic
m_creature->SummonCreature(NPC_ETHEREAL_SPHERE, m_creature->GetPositionX()-5+rand()%10, m_creature->GetPositionY()-5+rand()%10, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
uiSummonEtherealSphere_Timer = urand(45000, 47000);
@@ -224,11 +221,9 @@ struct TRINITY_DLL_DECL mob_ethereal_sphereAI : public ScriptedAI
mob_ethereal_sphereAI(Creature* pCreature) : ScriptedAI(pCreature)
{
pInstance = pCreature->GetInstanceData();
HeroicMode = pCreature->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool HeroicMode;
uint32 uiSummonPlayers_Timer;
uint32 uiRangeCheck_Timer;
@@ -256,7 +251,7 @@ struct TRINITY_DLL_DECL mob_ethereal_sphereAI : public ScriptedAI
{
float fDistance = m_creature->GetDistance2d(pXevozz);
if (fDistance <= 3)
DoCast(pXevozz, HEROIC(SPELL_ARCANE_POWER, H_SPELL_ARCANE_POWER));
DoCast(pXevozz, DUNGEON_MODE(SPELL_ARCANE_POWER, H_SPELL_ARCANE_POWER));
else
DoCast(m_creature, 35845); //Is it blizzlike?
}
@@ -109,13 +109,13 @@ struct TRINITY_DLL_DECL boss_zuramatAI : public ScriptedAI
if (SpellVoidShiftTimer <= diff)
{
if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0))
DoCast(pUnit, HEROIC(SPELL_VOID_SHIFT, H_SPELL_VOID_SHIFT));
DoCast(pUnit, DUNGEON_MODE(SPELL_VOID_SHIFT, H_SPELL_VOID_SHIFT));
SpellVoidShiftTimer = 20000;
} else SpellVoidShiftTimer -=diff;
if (SpellShroudOfDarknessTimer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_SHROUD_OF_DARKNESS, H_SPELL_SHROUD_OF_DARKNESS));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SHROUD_OF_DARKNESS, H_SPELL_SHROUD_OF_DARKNESS));
SpellShroudOfDarknessTimer = 20000;
} else SpellShroudOfDarknessTimer -=diff;
@@ -152,7 +152,7 @@ struct TRINITY_DLL_DECL boss_zuramatAI : public ScriptedAI
void JustSummoned(Creature* summon)
{
summon->AI()->AttackStart(m_creature->getVictim());
summon->AI()->DoCastAOE(HEROIC(SPELL_ZUMARAT_ADD_2, H_SPELL_ZUMARAT_ADD_2));
summon->AI()->DoCastAOE(DUNGEON_MODE(SPELL_ZUMARAT_ADD_2, H_SPELL_ZUMARAT_ADD_2));
summon->SetPhaseMask(17,true);
}
};
@@ -27,13 +27,13 @@ EndScriptData */
#define SPELL_ATTRACTMAGIC 32265
#define N_SPELL_CARNIVOROUSBITE 36383
#define H_SPELL_CARNIVOROUSBITE 39382
#define SPELL_CARNIVOROUSBITE (HeroicMode?H_SPELL_CARNIVOROUSBITE:N_SPELL_CARNIVOROUSBITE)
#define SPELL_CARNIVOROUSBITE DUNGEON_MODE(N_SPELL_CARNIVOROUSBITE, H_SPELL_CARNIVOROUSBITE)
#define ENTRY_FOCUS_FIRE 18374
#define N_SPELL_FIERY_BLAST 32302
#define H_SPELL_FIERY_BLAST 38382
#define SPELL_FIERY_BLAST (HeroicMode?H_SPELL_FIERY_BLAST:N_SPELL_FIERY_BLAST)
#define SPELL_FIERY_BLAST DUNGEON_MODE(N_SPELL_FIERY_BLAST, H_SPELL_FIERY_BLAST)
#define SPELL_FOCUS_FIRE_VISUAL 42075 //need to find better visual
#define EMOTE_FOCUSES_ON "focuses on "
@@ -42,14 +42,13 @@ struct TRINITY_DLL_DECL boss_shirrak_the_dead_watcherAI : public ScriptedAI
{
boss_shirrak_the_dead_watcherAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
uint32 Inhibitmagic_Timer;
uint32 Attractmagic_Timer;
uint32 Carnivorousbite_Timer;
uint32 FocusFire_Timer;
bool HeroicMode;
Unit *focusedTarget;
void Reset()
@@ -156,10 +155,8 @@ struct TRINITY_DLL_DECL mob_focus_fireAI : public ScriptedAI
{
mob_focus_fireAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
bool HeroicMode;
uint32 FieryBlast_Timer;
bool fiery1, fiery2;
@@ -216,10 +216,8 @@ struct TRINITY_DLL_DECL mob_ethereal_beaconAI : public ScriptedAI
{
mob_ethereal_beaconAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
bool HeroicMode;
uint32 Apprentice_Timer;
uint32 ArcaneBolt_Timer;
uint32 Check_Timer;
@@ -231,7 +229,7 @@ struct TRINITY_DLL_DECL mob_ethereal_beaconAI : public ScriptedAI
void Reset()
{
Apprentice_Timer = (HeroicMode ? 10000 : 20000);
Apprentice_Timer = DUNGEON_MODE(20000, 10000);
ArcaneBolt_Timer = 1000;
Check_Timer = 1000;
}
@@ -43,10 +43,8 @@ struct TRINITY_DLL_DECL boss_pandemoniusAI : public ScriptedAI
{
boss_pandemoniusAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
bool HeroicMode;
uint32 VoidBlast_Timer;
uint32 DarkShell_Timer;
uint32 VoidBlast_Counter;
@@ -82,7 +80,7 @@ struct TRINITY_DLL_DECL boss_pandemoniusAI : public ScriptedAI
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
{
DoCast(pTarget, HEROIC(SPELL_VOID_BLAST, H_SPELL_VOID_BLAST));
DoCast(pTarget, DUNGEON_MODE(SPELL_VOID_BLAST, H_SPELL_VOID_BLAST));
VoidBlast_Timer = 500;
++VoidBlast_Counter;
}
@@ -103,7 +101,7 @@ struct TRINITY_DLL_DECL boss_pandemoniusAI : public ScriptedAI
DoScriptText(EMOTE_DARK_SHELL, m_creature);
DoCast(m_creature, HEROIC(SPELL_DARK_SHELL, H_SPELL_DARK_SHELL));
DoCast(m_creature, DUNGEON_MODE(SPELL_DARK_SHELL, H_SPELL_DARK_SHELL));
DarkShell_Timer = 20000;
} else DarkShell_Timer -= diff;
}
@@ -46,17 +46,15 @@ EndScriptData */
#define SPELL_SUMMON_SYTH_FROST 33539 // Spawns 19204
#define SPELL_SUMMON_SYTH_SHADOW 33540 // Spawns 19206
#define SPELL_FLAME_BUFFET (HeroicMode?38141:33526)
#define SPELL_ARCANE_BUFFET (HeroicMode?38138:33527)
#define SPELL_FROST_BUFFET (HeroicMode?38142:33528)
#define SPELL_SHADOW_BUFFET (HeroicMode?38143:33529)
#define SPELL_FLAME_BUFFET DUNGEON_MODE(33526, 38141)
#define SPELL_ARCANE_BUFFET DUNGEON_MODE(33527, 38138)
#define SPELL_FROST_BUFFET DUNGEON_MODE(33528, 38142)
#define SPELL_SHADOW_BUFFET DUNGEON_MODE(33529, 38143)
struct TRINITY_DLL_DECL boss_darkweaver_sythAI : public ScriptedAI
{
boss_darkweaver_sythAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
uint32 flameshock_timer;
@@ -68,7 +66,6 @@ struct TRINITY_DLL_DECL boss_darkweaver_sythAI : public ScriptedAI
bool summon90;
bool summon50;
bool summon10;
bool HeroicMode;
void Reset()
{
@@ -197,14 +194,11 @@ CreatureAI* GetAI_boss_darkweaver_syth(Creature* pCreature)
struct TRINITY_DLL_DECL mob_syth_fireAI : public ScriptedAI
{
mob_syth_fireAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
uint32 flameshock_timer;
uint32 flamebuffet_timer;
bool HeroicMode;
void Reset()
{
@@ -248,14 +242,11 @@ CreatureAI* GetAI_mob_syth_fire(Creature* pCreature)
struct TRINITY_DLL_DECL mob_syth_arcaneAI : public ScriptedAI
{
mob_syth_arcaneAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
uint32 arcaneshock_timer;
uint32 arcanebuffet_timer;
bool HeroicMode;
void Reset()
{
@@ -299,14 +290,11 @@ CreatureAI* GetAI_mob_syth_arcane(Creature* pCreature)
struct TRINITY_DLL_DECL mob_syth_frostAI : public ScriptedAI
{
mob_syth_frostAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
uint32 frostshock_timer;
uint32 frostbuffet_timer;
bool HeroicMode;
void Reset()
{
@@ -350,14 +338,11 @@ CreatureAI* GetAI_mob_syth_frost(Creature* pCreature)
struct TRINITY_DLL_DECL mob_syth_shadowAI : public ScriptedAI
{
mob_syth_shadowAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
uint32 shadowshock_timer;
uint32 shadowbuffet_timer;
bool HeroicMode;
void Reset()
{
@@ -59,8 +59,6 @@ struct TRINITY_DLL_DECL boss_talon_king_ikissAI : public ScriptedAI
ScriptedInstance* pInstance;
bool HeroicMode;
uint32 ArcaneVolley_Timer;
uint32 Sheep_Timer;
uint32 Blink_Timer;
@@ -72,8 +70,6 @@ struct TRINITY_DLL_DECL boss_talon_king_ikissAI : public ScriptedAI
void Reset()
{
HeroicMode = m_creature->GetMap()->IsHeroic();
ArcaneVolley_Timer = 5000;
Sheep_Timer = 8000;
Blink_Timer = 35000;
@@ -130,24 +126,29 @@ struct TRINITY_DLL_DECL boss_talon_king_ikissAI : public ScriptedAI
if (Blink)
{
DoCast(m_creature, HEROIC(SPELL_ARCANE_EXPLOSION, H_SPELL_ARCANE_EXPLOSION));
DoCast(m_creature, DUNGEON_MODE(SPELL_ARCANE_EXPLOSION, H_SPELL_ARCANE_EXPLOSION));
DoCast(m_creature, SPELL_ARCANE_BUBBLE, true);
Blink = false;
}
if (ArcaneVolley_Timer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_ARCANE_VOLLEY, H_SPELL_ARCANE_VOLLEY));
DoCast(m_creature, DUNGEON_MODE(SPELL_ARCANE_VOLLEY, H_SPELL_ARCANE_VOLLEY));
ArcaneVolley_Timer = 7000+rand()%5000;
} else ArcaneVolley_Timer -= diff;
if (Sheep_Timer <= diff)
{
Unit *pTarget;
//second top aggro target in normal, random target in heroic correct?
Unit *pTarget = NULL;
pTarget = HeroicMode ? SelectUnit(SELECT_TARGET_RANDOM,0) : SelectUnit(SELECT_TARGET_TOPAGGRO,1);
if (IsHeroic())
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
else
pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO,1);
if (pTarget)
DoCast(pTarget, HEROIC(SPELL_POLYMORPH, H_SPELL_POLYMORPH));
DoCast(pTarget, DUNGEON_MODE(SPELL_POLYMORPH, H_SPELL_POLYMORPH));
Sheep_Timer = 15000+rand()%2500;
} else Sheep_Timer -= diff;
@@ -158,7 +159,7 @@ struct TRINITY_DLL_DECL boss_talon_king_ikissAI : public ScriptedAI
ManaShield = true;
}
if (HeroicMode)
if (IsHeroic())
{
if (Slow_Timer <= diff)
{
@@ -47,11 +47,9 @@ struct TRINITY_DLL_DECL boss_ambassador_hellmawAI : public npc_escortAI
boss_ambassador_hellmawAI(Creature* pCreature) : npc_escortAI(pCreature)
{
m_pInstance = pCreature->GetInstanceData();
HeroicMode = pCreature->GetMap()->IsHeroic();
}
ScriptedInstance* m_pInstance;
bool HeroicMode;
uint32 EventCheck_Timer;
uint32 CorrosiveAcid_Timer;
@@ -181,7 +179,7 @@ struct TRINITY_DLL_DECL boss_ambassador_hellmawAI : public npc_escortAI
Fear_Timer = 20000 + rand()%15000;
} else Fear_Timer -= diff;
if (HeroicMode)
if (IsHeroic())
{
if (!Enraged && Enrage_Timer <= diff)
{
@@ -64,10 +64,8 @@ struct TRINITY_DLL_DECL mob_voidtravelerAI : public ScriptedAI
{
mob_voidtravelerAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
bool HeroicMode;
Unit *Vorpil;
uint32 move;
bool sacrificed;
@@ -92,7 +90,7 @@ struct TRINITY_DLL_DECL mob_voidtravelerAI : public ScriptedAI
{
if (sacrificed)
{
m_creature->AddAura(HEROIC(H_SPELL_EMPOWERING_SHADOWS, SPELL_EMPOWERING_SHADOWS), Vorpil);
m_creature->AddAura(DUNGEON_MODE(SPELL_EMPOWERING_SHADOWS, H_SPELL_EMPOWERING_SHADOWS), Vorpil);
Vorpil->SetHealth(Vorpil->GetHealth() + Vorpil->GetMaxHealth()/25);
DoCast(m_creature, SPELL_SHADOW_NOVA, true);
m_creature->Kill(m_creature);
@@ -125,14 +123,12 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
boss_grandmaster_vorpilAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
Intro = false;
}
ScriptedInstance *pInstance;
bool Intro, HelpYell;
bool sumportals;
bool HeroicMode;
uint32 ShadowBoltVolley_Timer;
uint32 DrawShadows_Timer;
@@ -249,7 +245,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
ShadowBoltVolley_Timer = 15000 + rand()%15000;
} else ShadowBoltVolley_Timer -= diff;
if (HeroicMode && banish_Timer <= diff)
if (IsHeroic() && banish_Timer <= diff)
{
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,0,30,false);
if (pTarget)
@@ -271,7 +267,7 @@ struct TRINITY_DLL_DECL boss_grandmaster_vorpilAI : public ScriptedAI
m_creature->GetMap()->CreatureRelocation(m_creature, VorpilPosition[0],VorpilPosition[1],VorpilPosition[2],0.0f);
DoCast(m_creature, SPELL_DRAW_SHADOWS, true);
DoCast(m_creature, HeroicMode?H_SPELL_RAIN_OF_FIRE:SPELL_RAIN_OF_FIRE);
DoCast(m_creature, DUNGEON_MODE(SPELL_RAIN_OF_FIRE, H_SPELL_RAIN_OF_FIRE));
ShadowBoltVolley_Timer = 6000;
DrawShadows_Timer = 30000;
@@ -26,10 +26,10 @@ EndScriptData */
#define EMOTE_SONIC_BOOM -1555036
#define SPELL_SONIC_BOOM_CAST (HeroicMode?38796:33923)
#define SPELL_SONIC_BOOM_EFFECT (HeroicMode?38795:33666)
#define SPELL_SONIC_BOOM_CAST DUNGEON_MODE(33923, 38796)
#define SPELL_SONIC_BOOM_EFFECT DUNGEON_MODE(33666, 38795)
#define SPELL_RESONANCE 33657
#define SPELL_MURMURS_TOUCH (HeroicMode?38794:33711)
#define SPELL_MURMURS_TOUCH DUNGEON_MODE(33711, 38794)
#define SPELL_MAGNETIC_PULL 33689
#define SPELL_SONIC_SHOCK 38797
#define SPELL_THUNDERING_STORM 39365
@@ -39,7 +39,6 @@ struct TRINITY_DLL_DECL boss_murmurAI : public ScriptedAI
boss_murmurAI(Creature *c) : ScriptedAI(c)
{
SetCombatMovement(false);
HeroicMode = m_creature->GetMap()->IsHeroic();
}
uint32 SonicBoom_Timer;
@@ -48,7 +47,6 @@ struct TRINITY_DLL_DECL boss_murmurAI : public ScriptedAI
uint32 MagneticPull_Timer;
uint32 SonicShock_Timer;
uint32 ThunderingStorm_Timer;
bool HeroicMode;
bool SonicBoom;
void Reset()
@@ -149,7 +147,7 @@ struct TRINITY_DLL_DECL boss_murmurAI : public ScriptedAI
MagneticPull_Timer = 500;
} else MagneticPull_Timer -= diff;
if (HeroicMode)
if (IsHeroic())
{
// Thundering Storm
if (ThunderingStorm_Timer <= diff)
@@ -46,11 +46,9 @@ struct TRINITY_DLL_DECL boss_thespiaAI : public ScriptedAI
boss_thespiaAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = m_creature->GetMap()->IsHeroic();
}
ScriptedInstance *pInstance;
bool HeroicMode;
uint32 LightningCloud_Timer;
uint32 LungBurst_Timer;
@@ -95,12 +93,14 @@ struct TRINITY_DLL_DECL boss_thespiaAI : public ScriptedAI
//LightningCloud_Timer
if (LightningCloud_Timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_LIGHTNING_CLOUD);
//cast twice in Heroic mode
if (IsHeroic())
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_LIGHTNING_CLOUD);
if (HeroicMode)
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_LIGHTNING_CLOUD);
LightningCloud_Timer = 15000+rand()%10000;
} else LightningCloud_Timer -=diff;
@@ -115,10 +115,11 @@ struct TRINITY_DLL_DECL boss_thespiaAI : public ScriptedAI
//EnvelopingWinds_Timer
if (EnvelopingWinds_Timer <= diff)
{
//cast twice in Heroic mode
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_ENVELOPING_WINDS);
if (HeroicMode)
//cast twice in Heroic mode
if (IsHeroic())
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
DoCast(pTarget, SPELL_ENVELOPING_WINDS);
EnvelopingWinds_Timer = 10000+rand()%5000;
@@ -135,12 +136,10 @@ struct TRINITY_DLL_DECL mob_coilfang_waterelementalAI : public ScriptedAI
{
mob_coilfang_waterelementalAI(Creature *c) : ScriptedAI(c) {}
bool HeroicMode;
uint32 WaterBoltVolley_Timer;
void Reset()
{
HeroicMode = m_creature->GetMap()->IsHeroic();
WaterBoltVolley_Timer = 3000+rand()%3000;
}
@@ -153,7 +152,7 @@ struct TRINITY_DLL_DECL mob_coilfang_waterelementalAI : public ScriptedAI
if (WaterBoltVolley_Timer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_WATER_BOLT_VOLLEY, H_SPELL_WATER_BOLT_VOLLEY));
DoCast(m_creature, DUNGEON_MODE(SPELL_WATER_BOLT_VOLLEY, H_SPELL_WATER_BOLT_VOLLEY));
WaterBoltVolley_Timer = 7000+rand()%5000;
} else WaterBoltVolley_Timer -= diff;
@@ -51,11 +51,9 @@ struct TRINITY_DLL_DECL boss_mekgineer_steamriggerAI : public ScriptedAI
boss_mekgineer_steamriggerAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance *pInstance;
bool HeroicMode;
uint32 Shrink_Timer;
uint32 Saw_Blade_Timer;
@@ -190,11 +188,9 @@ struct TRINITY_DLL_DECL mob_steamrigger_mechanicAI : public ScriptedAI
mob_steamrigger_mechanicAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool HeroicMode;
uint32 Repair_Timer;
@@ -227,7 +223,7 @@ struct TRINITY_DLL_DECL mob_steamrigger_mechanicAI : public ScriptedAI
//m_creature->GetMotionMaster()->MovementExpired();
//m_creature->GetMotionMaster()->MoveIdle();
DoCast(m_creature,HEROIC(SPELL_REPAIR, H_SPELL_REPAIR), true);
DoCast(m_creature, DUNGEON_MODE(SPELL_REPAIR, H_SPELL_REPAIR), true);
}
Repair_Timer = 5000;
}
@@ -30,10 +30,8 @@ struct TRINITY_DLL_DECL boss_hungarfenAI : public ScriptedAI
{
boss_hungarfenAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
bool HeroicMode;
bool Root;
uint32 Mushroom_Timer;
uint32 AcidGeyser_Timer;
@@ -37,10 +37,8 @@ struct TRINITY_DLL_DECL boss_the_black_stalkerAI : public ScriptedAI
{
boss_the_black_stalkerAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
bool HeroicMode;
uint32 SporeStriders_Timer;
uint32 Levitate_Timer;
uint32 ChainLightning_Timer;
@@ -104,7 +102,7 @@ struct TRINITY_DLL_DECL boss_the_black_stalkerAI : public ScriptedAI
} else check_Timer -= diff;
// Spore Striders
if (HeroicMode && SporeStriders_Timer <= diff)
if (IsHeroic() && SporeStriders_Timer <= diff)
{
DoCast(m_creature, SPELL_SUMMON_SPORE_STRIDER);
SporeStriders_Timer = 10000+rand()%5000;
@@ -70,13 +70,11 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI
boss_kelidan_the_breakerAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
for (uint8 i=0; i<5; ++i)
Channelers[i] = 0;
}
ScriptedInstance* pInstance;
bool HeroicMode;
uint32 ShadowVolley_Timer;
uint32 BurningNova_Timer;
@@ -203,7 +201,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI
{
if (Firenova_Timer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_FIRE_NOVA, H_SPELL_FIRE_NOVA), true);
DoCast(m_creature, DUNGEON_MODE(SPELL_FIRE_NOVA, H_SPELL_FIRE_NOVA), true);
Firenova = false;
ShadowVolley_Timer = 2000;
} else Firenova_Timer -=diff;
@@ -213,7 +211,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI
if (ShadowVolley_Timer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_SHADOW_BOLT_VOLLEY, H_SPELL_SHADOW_BOLT_VOLLEY));
DoCast(m_creature, DUNGEON_MODE(SPELL_SHADOW_BOLT_VOLLEY, H_SPELL_SHADOW_BOLT_VOLLEY));
ShadowVolley_Timer = 5000+rand()%8000;
} else ShadowVolley_Timer -=diff;
@@ -236,7 +234,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI
aura->ApplyForTargets();
}
if (HeroicMode)
if (IsHeroic())
DoTeleportAll(m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(),m_creature->GetOrientation());
BurningNova_Timer = 20000+rand()%8000;
@@ -271,11 +269,8 @@ struct TRINITY_DLL_DECL mob_shadowmoon_channelerAI : public ScriptedAI
{
mob_shadowmoon_channelerAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = c->GetMap()->IsHeroic();
}
bool HeroicMode;
uint32 ShadowBolt_Timer;
uint32 MarkOfShadow_Timer;
uint32 check_Timer;
@@ -331,7 +326,7 @@ struct TRINITY_DLL_DECL mob_shadowmoon_channelerAI : public ScriptedAI
if (ShadowBolt_Timer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
ShadowBolt_Timer = 5000+rand()%1000;
} else ShadowBolt_Timer -=diff;
@@ -46,11 +46,8 @@ struct TRINITY_DLL_DECL boss_omor_the_unscarredAI : public ScriptedAI
boss_omor_the_unscarredAI(Creature *c) : ScriptedAI(c)
{
SetCombatMovement(false);
HeroicMode = m_creature->GetMap()->IsHeroic();
}
bool HeroicMode;
uint32 OrbitalStrike_Timer;
uint32 ShadowWhip_Timer;
uint32 Aura_Timer;
@@ -171,7 +168,7 @@ struct TRINITY_DLL_DECL boss_omor_the_unscarredAI : public ScriptedAI
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
{
DoCast(pTarget, HEROIC(SPELL_TREACHEROUS_AURA, H_SPELL_BANE_OF_TREACHERY));
DoCast(pTarget, DUNGEON_MODE(SPELL_TREACHEROUS_AURA, H_SPELL_BANE_OF_TREACHERY));
Aura_Timer = 8000+rand()%8000;
}
} else Aura_Timer -= diff;
@@ -183,7 +180,7 @@ struct TRINITY_DLL_DECL boss_omor_the_unscarredAI : public ScriptedAI
if (pTarget)
pTarget = m_creature->getVictim();
DoCast(pTarget, HEROIC(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
DoCast(pTarget, DUNGEON_MODE(SPELL_SHADOW_BOLT, H_SPELL_SHADOW_BOLT));
Shadowbolt_Timer = 4000+rand()%2500;
}
} else Shadowbolt_Timer -= diff;
@@ -23,11 +23,11 @@ EndScriptData */
#include "precompiled.h"
#define SPELL_FIREBALL (HeroicMode?36920:34653)
#define SPELL_CONE_OF_FIRE (HeroicMode?36921:30926)
#define SPELL_SUMMON_LIQUID_FIRE (HeroicMode?30928:23971)
#define SPELL_FIREBALL DUNGEON_MODE(34653, 36920)
#define SPELL_CONE_OF_FIRE DUNGEON_MODE(30926, 36921)
#define SPELL_SUMMON_LIQUID_FIRE DUNGEON_MODE(23971, 30928)
#define SPELL_BELLOWING_ROAR 39427
#define SPELL_REVENGE (HeroicMode?40392:19130)
#define SPELL_REVENGE DUNGEON_MODE(19130, 40392)
#define SPELL_KIDNEY_SHOT 30621
#define SPELL_FIRE_NOVA_VISUAL 19823
@@ -36,7 +36,7 @@ EndScriptData */
#define ENTRY_VAZRUDEN 17537
#define ENTRY_NAZAN 17536
#define ENTRY_LIQUID_FIRE 22515
#define ENTRY_REINFORCED_FEL_IRON_CHEST (HeroicMode?185169:185168)
#define ENTRY_REINFORCED_FEL_IRON_CHEST DUNGEON_MODE(185168, 185169)
#define SAY_INTRO -1543017
#define SAY_WIPE -1543018
@@ -61,7 +61,6 @@ struct TRINITY_DLL_DECL boss_nazanAI : public ScriptedAI
{
boss_nazanAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
VazrudenGUID = 0;
flight = true;
}
@@ -74,7 +73,6 @@ struct TRINITY_DLL_DECL boss_nazanAI : public ScriptedAI
uint32 UnsummonCheck;
bool flight;
uint64 VazrudenGUID;
bool HeroicMode;
SpellEntry *liquid_fire;
void Reset()
@@ -157,7 +155,8 @@ struct TRINITY_DLL_DECL boss_nazanAI : public ScriptedAI
Fireball_Timer = 4000;
} else ConeOfFire_Timer -= diff;
if (HeroicMode && BellowingRoar_Timer <= diff)
if (IsHeroic())
if (BellowingRoar_Timer <= diff)
{
DoCast(m_creature, SPELL_BELLOWING_ROAR);
BellowingRoar_Timer = 45000;
@@ -172,11 +171,9 @@ struct TRINITY_DLL_DECL boss_vazrudenAI : public ScriptedAI
{
boss_vazrudenAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
uint32 Revenge_Timer;
bool HeroicMode;
bool WipeSaid;
uint32 UnsummonCheck;
@@ -239,7 +236,6 @@ struct TRINITY_DLL_DECL boss_vazruden_the_heraldAI : public ScriptedAI
sentryDown = false;
NazanGUID = 0;
VazrudenGUID = 0;
HeroicMode = m_creature->GetMap()->IsHeroic();
}
uint32 phase;
@@ -249,7 +245,6 @@ struct TRINITY_DLL_DECL boss_vazruden_the_heraldAI : public ScriptedAI
uint64 NazanGUID;
uint64 VazrudenGUID;
bool summoned;
bool HeroicMode;
void Reset()
{
@@ -42,11 +42,8 @@ struct TRINITY_DLL_DECL boss_watchkeeper_gargolmarAI : public ScriptedAI
{
boss_watchkeeper_gargolmarAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = m_creature->GetMap()->IsHeroic();
}
bool HeroicMode;
uint32 Surge_Timer;
uint32 MortalWound_Timer;
uint32 Retaliation_Timer;
@@ -107,7 +104,7 @@ struct TRINITY_DLL_DECL boss_watchkeeper_gargolmarAI : public ScriptedAI
if (MortalWound_Timer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_MORTAL_WOUND, H_SPELL_MORTAL_WOUND));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MORTAL_WOUND, H_SPELL_MORTAL_WOUND));
MortalWound_Timer = 5000+rand()%8000;
} else MortalWound_Timer -= diff;
@@ -78,11 +78,9 @@ struct TRINITY_DLL_DECL boss_grand_warlock_nethekurseAI : public ScriptedAI
boss_grand_warlock_nethekurseAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool HeroicMode;
bool IntroOnce;
bool IsIntroEvent;
@@ -255,7 +253,7 @@ struct TRINITY_DLL_DECL boss_grand_warlock_nethekurseAI : public ScriptedAI
if (Cleave_Timer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_SHADOW_CLEAVE, H_SPELL_SHADOW_SLAM));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_SHADOW_CLEAVE, H_SPELL_SHADOW_SLAM));
Cleave_Timer = 6000+rand()%2500;
} else Cleave_Timer -= diff;
}
@@ -138,11 +138,9 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
LeftHeadGUID = 0;
RightHeadGUID = 0;
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance* pInstance;
bool HeroicMode;
uint64 LeftHeadGUID;
uint64 RightHeadGUID;
@@ -346,7 +344,7 @@ struct TRINITY_DLL_DECL boss_warbringer_omroggAI : public ScriptedAI
if (BurningMaul_Timer <= diff)
{
DoScriptText(EMOTE_ENRAGE, m_creature);
DoCast(m_creature, HEROIC(SPELL_BURNING_MAUL, H_SPELL_BURNING_MAUL));
DoCast(m_creature, DUNGEON_MODE(SPELL_BURNING_MAUL, H_SPELL_BURNING_MAUL));
BurningMaul_Timer = 40000;
BlastWave_Timer = 16000;
BlastCount = 1;
@@ -52,11 +52,8 @@ struct TRINITY_DLL_DECL boss_warchief_kargath_bladefistAI : public ScriptedAI
{
boss_warchief_kargath_bladefistAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = c->GetMap()->IsHeroic();
}
bool HeroicMode;
std::vector<uint64> adds;
std::vector<uint64> assassins;
@@ -202,10 +199,10 @@ struct TRINITY_DLL_DECL boss_warchief_kargath_bladefistAI : public ScriptedAI
// stop bladedance
InBlade = false;
m_creature->SetSpeed(MOVE_RUN,2);
(*m_creature).GetMotionMaster()->MoveChase(m_creature->getVictim());
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
Blade_Dance_Timer = 30000;
Wait_Timer = 0;
if (HeroicMode)
if (IsHeroic())
Charge_timer = 5000;
}
else
@@ -216,7 +213,7 @@ struct TRINITY_DLL_DECL boss_warchief_kargath_bladefistAI : public ScriptedAI
randy = (rand()%40);
x = 210+ randx ;
y = -60- randy ;
(*m_creature).GetMotionMaster()->MovePoint(1,x,y,m_creature->GetPositionZ());
m_creature->GetMotionMaster()->MovePoint(1,x,y,m_creature->GetPositionZ());
Wait_Timer = 0;
}
} else Wait_Timer -= diff;
@@ -58,12 +58,10 @@ struct TRINITY_DLL_DECL boss_harbinger_skyrissAI : public ScriptedAI
boss_harbinger_skyrissAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
Intro = false;
}
ScriptedInstance *pInstance;
bool HeroicMode;
bool Intro;
bool IsImage33;
@@ -199,9 +197,9 @@ struct TRINITY_DLL_DECL boss_harbinger_skyrissAI : public ScriptedAI
if (MindRend_Timer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
DoCast(pTarget, HEROIC(SPELL_MIND_REND, H_SPELL_MIND_REND));
DoCast(pTarget, DUNGEON_MODE(SPELL_MIND_REND, H_SPELL_MIND_REND));
else
DoCast(m_creature->getVictim(), HEROIC(SPELL_MIND_REND, H_SPELL_MIND_REND));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_MIND_REND, H_SPELL_MIND_REND));
MindRend_Timer = 8000;
} else MindRend_Timer -=diff;
@@ -229,14 +227,14 @@ struct TRINITY_DLL_DECL boss_harbinger_skyrissAI : public ScriptedAI
DoScriptText(RAND(SAY_MIND_1,SAY_MIND_2), m_creature);
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
DoCast(pTarget, HEROIC(SPELL_DOMINATION, H_SPELL_DOMINATION));
DoCast(pTarget, DUNGEON_MODE(SPELL_DOMINATION, H_SPELL_DOMINATION));
else
DoCast(m_creature->getVictim(), HEROIC(SPELL_DOMINATION, H_SPELL_DOMINATION));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_DOMINATION, H_SPELL_DOMINATION));
Domination_Timer = 16000+rand()%16000;
} else Domination_Timer -=diff;
if (HeroicMode)
if (IsHeroic())
{
if (ManaBurn_Timer <= diff)
{
@@ -266,11 +264,8 @@ struct TRINITY_DLL_DECL boss_harbinger_skyriss_illusionAI : public ScriptedAI
{
boss_harbinger_skyriss_illusionAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = c->GetMap()->IsHeroic();
}
bool HeroicMode;
void Reset() { }
void EnterCombat(Unit *who) { }
@@ -88,7 +88,7 @@ struct TRINITY_DLL_DECL mob_treantAI : public ScriptedAI
#define WAR_STOMP 34716
#define SUMMON_TREANTS 34727 // DBC: 34727, 34731, 34733, 34734, 34736, 34739, 34741 (with Ancestral Life spell 34742) // won't work (guardian summon)
#define ARCANE_VOLLEY (HeroicMode?39133:36705)
#define ARCANE_VOLLEY DUNGEON_MODE(36705, 39133)
#define CREATURE_TREANT 19949
@@ -108,7 +108,6 @@ struct TRINITY_DLL_DECL boss_warp_splinterAI : public ScriptedAI
{
boss_warp_splinterAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = c->GetMap()->IsHeroic();
Treant_Spawn_Pos_X = c->GetPositionX();
Treant_Spawn_Pos_Y = c->GetPositionY();
}
@@ -116,7 +115,6 @@ struct TRINITY_DLL_DECL boss_warp_splinterAI : public ScriptedAI
uint32 War_Stomp_Timer;
uint32 Summon_Treants_Timer;
uint32 Arcane_Volley_Timer;
bool HeroicMode;
float Treant_Spawn_Pos_X;
float Treant_Spawn_Pos_Y;
@@ -44,11 +44,8 @@ struct TRINITY_DLL_DECL boss_gatewatcher_iron_handAI : public ScriptedAI
{
boss_gatewatcher_iron_handAI(Creature *c) : ScriptedAI(c)
{
HeroicMode = c->GetMap()->IsHeroic();
}
bool HeroicMode;
uint32 Shadow_Power_Timer;
uint32 Jackhammer_Timer;
uint32 Stream_of_Machine_Fluid_Timer;
@@ -88,7 +85,7 @@ struct TRINITY_DLL_DECL boss_gatewatcher_iron_handAI : public ScriptedAI
//Shadow Power
if (Shadow_Power_Timer <= diff)
{
DoCast(m_creature, HEROIC(SPELL_SHADOW_POWER, H_SPELL_SHADOW_POWER));
DoCast(m_creature, DUNGEON_MODE(SPELL_SHADOW_POWER, H_SPELL_SHADOW_POWER));
Shadow_Power_Timer = 20000 + rand()%8000;
} else Shadow_Power_Timer -= diff;
@@ -97,7 +94,7 @@ struct TRINITY_DLL_DECL boss_gatewatcher_iron_handAI : public ScriptedAI
{
//TODO: expect cast this about 5 times in a row (?), announce it by emote only once
DoScriptText(EMOTE_HAMMER, m_creature);
DoCast(m_creature->getVictim(), HEROIC(SPELL_JACKHAMMER, H_SPELL_JACKHAMMER));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_JACKHAMMER, H_SPELL_JACKHAMMER));
//chance to yell, but not same time as emote (after spell in fact casted)
if (rand()%2)
@@ -46,13 +46,10 @@ struct TRINITY_DLL_DECL boss_nethermancer_sepethreaAI : public ScriptedAI
boss_nethermancer_sepethreaAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData();
HeroicMode = c->GetMap()->IsHeroic();
}
ScriptedInstance *pInstance;
bool HeroicMode;
uint32 frost_attack_Timer;
uint32 arcane_blast_Timer;
uint32 dragons_breath_Timer;
@@ -77,7 +74,7 @@ struct TRINITY_DLL_DECL boss_nethermancer_sepethreaAI : public ScriptedAI
pInstance->SetData(DATA_NETHERMANCER_EVENT, IN_PROGRESS);
DoScriptText(SAY_AGGRO, m_creature);
DoCast(who, HEROIC(SPELL_SUMMON_RAGIN_FLAMES, H_SPELL_SUMMON_RAGIN_FLAMES));
DoCast(who, DUNGEON_MODE(SPELL_SUMMON_RAGIN_FLAMES, H_SPELL_SUMMON_RAGIN_FLAMES));
DoScriptText(SAY_SUMMON, m_creature);
}
@@ -158,13 +155,11 @@ struct TRINITY_DLL_DECL mob_ragin_flamesAI : public ScriptedAI
{
mob_ragin_flamesAI(Creature *c) : ScriptedAI(c)
{
pInstance = c->GetInstanceData(); HeroicMode = m_creature->GetMap()->IsHeroic();
pInstance = c->GetInstanceData();
}
ScriptedInstance *pInstance;
bool HeroicMode;
uint32 inferno_Timer;
uint32 flame_timer;
uint32 Check_Timer;
@@ -179,7 +174,7 @@ struct TRINITY_DLL_DECL mob_ragin_flamesAI : public ScriptedAI
onlyonce = false;
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
m_creature->SetSpeed(MOVE_RUN, HeroicMode ? 0.7f : 0.5f);
m_creature->SetSpeed(MOVE_RUN, DUNGEON_MODE(0.5f, 0.7f));
}
void EnterCombat(Unit* who)
@@ -215,7 +210,7 @@ struct TRINITY_DLL_DECL mob_ragin_flamesAI : public ScriptedAI
if (inferno_Timer <= diff)
{
DoCast(m_creature->getVictim(), HEROIC(SPELL_INFERNO, H_SPELL_INFERNO));
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_INFERNO, H_SPELL_INFERNO));
m_creature->TauntApply(m_creature->getVictim());
inferno_Timer = 10000;
} else inferno_Timer -= diff;

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