aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/scripts/northrend/nexus/nexus/boss_anomalus.cpp143
-rw-r--r--src/scripts/northrend/nexus/nexus/boss_keristrasza.cpp149
-rw-r--r--src/scripts/northrend/nexus/nexus/boss_magus_telestra.cpp297
-rw-r--r--src/scripts/northrend/nexus/nexus/boss_ormorok.cpp211
-rw-r--r--src/scripts/northrend/nexus/nexus/instance_nexus.cpp14
5 files changed, 382 insertions, 432 deletions
diff --git a/src/scripts/northrend/nexus/nexus/boss_anomalus.cpp b/src/scripts/northrend/nexus/nexus/boss_anomalus.cpp
index f5d5ecede91..c14df38aadf 100644
--- a/src/scripts/northrend/nexus/nexus/boss_anomalus.cpp
+++ b/src/scripts/northrend/nexus/nexus/boss_anomalus.cpp
@@ -1,5 +1,5 @@
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- * Copyright (C) 2006 - 2010 TrinityCore <http://www.trinitycore.org>
+ * Copyright (C) 2008 - 2010 TrinityCore <http://www.trinitycore.org>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -18,31 +18,34 @@
#include "ScriptedPch.h"
#include "nexus.h"
-bool DeadChaoticRift; // needed for achievement: Chaos Theory(2037)
-
-enum eEnums
+enum Spells
{
- ACHIEVEMENT_CHAOS_THEORY = 2037,
-
//Spells
- SPELL_SPARK_N = 47751,
- SPELL_SPARK_H = 57062,
- SPELL_RIFT_SHIELD = 47748,
- SPELL_CHARGE_RIFT = 47747, //Works wrong (affect players, not rifts)
- SPELL_CREATE_RIFT = 47743, //Don't work, using WA
- SPELL_ARCANE_ATTRACTION = 57063, //No idea, when it's used
-
- MOB_CRAZED_MANA_WRAITH = 26746,
- MOB_CHAOTIC_RIFT = 26918,
- SPELL_CHAOTIC_ENERGY_BURST = 47688,
- SPELL_CHARGED_CHAOTIC_ENERGY_BURST = 47737,
- SPELL_ARCANEFORM = 48019, //Chaotic Rift visual
+ SPELL_SPARK = 47751,
+ H_SPELL_SPARK = 57062,
+ SPELL_RIFT_SHIELD = 47748,
+ SPELL_CHARGE_RIFT = 47747, //Works wrong (affect players, not rifts)
+ SPELL_CREATE_RIFT = 47743, //Don't work, using WA
+ SPELL_ARCANE_ATTRACTION = 57063, //No idea, when it's used
+};
+enum Adds
+{
+ MOB_CRAZED_MANA_WRAITH = 26746,
+ MOB_CHAOTIC_RIFT = 26918
+};
+enum Yells
+{
//Yell
- SAY_AGGRO = -1576010,
- SAY_DEATH = -1576011,
- SAY_RIFT = -1576012,
- SAY_SHIELD = -1576013
+ SAY_AGGRO = -1576010,
+ SAY_DEATH = -1576011,
+ SAY_RIFT = -1576012,
+ SAY_SHIELD = -1576013
+};
+
+enum Achievs
+{
+ ACHIEV_CHAOS_THEORY = 2037
};
const Position RiftLocation[6] =
@@ -65,18 +68,19 @@ struct boss_anomalusAI : public ScriptedAI
ScriptedInstance* pInstance;
uint8 Phase;
- uint32 SPELL_SPARK_Timer;
- uint32 SPELL_CREATE_RIFT_Timer;
- uint64 ChaoticRiftGUID;
+ uint32 uiSparkTimer;
+ uint32 uiCreateRiftTimer;
+ uint64 uiChaoticRiftGUID;
+
+ bool bDeadChaoticRift; // needed for achievement: Chaos Theory(2037)
void Reset()
{
Phase = 0;
- SPELL_SPARK_Timer = 5000;
- SPELL_CREATE_RIFT_Timer = 25000;
- ChaoticRiftGUID = 0;
+ uiSparkTimer = 5*IN_MILISECONDS;
+ uiChaoticRiftGUID = 0;
- DeadChaoticRift = false;
+ bDeadChaoticRift = false;
if (pInstance)
pInstance->SetData(DATA_ANOMALUS_EVENT, NOT_STARTED);
@@ -94,23 +98,12 @@ struct boss_anomalusAI : public ScriptedAI
{
DoScriptText(SAY_DEATH, m_creature);
- if (IsHeroic() && !DeadChaoticRift)
- {
- AchievementEntry const *AchievChaosTheory = GetAchievementStore()->LookupEntry(ACHIEVEMENT_CHAOS_THEORY);
- if (AchievChaosTheory)
- {
- Map* pMap = m_creature->GetMap();
- if (pMap && pMap->IsDungeon())
- {
- Map::PlayerList const &players = pMap->GetPlayers();
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- itr->getSource()->CompletedAchievement(AchievChaosTheory);
- }
- }
- }
-
if (pInstance)
+ {
+ if (IsHeroic() && !bDeadChaoticRift)
+ pInstance->DoCompleteAchievement(ACHIEV_CHAOS_THEORY);
pInstance->SetData(DATA_ANOMALUS_EVENT, DONE);
+ }
}
void UpdateAI(const uint32 diff)
@@ -127,44 +120,42 @@ struct boss_anomalusAI : public ScriptedAI
if (m_creature->HasAura(SPELL_RIFT_SHIELD))
{
- if (ChaoticRiftGUID)
+ if (uiChaoticRiftGUID)
{
- Unit* Rift = Unit::GetUnit((*m_creature), ChaoticRiftGUID);
+ Unit* Rift = Unit::GetUnit((*m_creature), uiChaoticRiftGUID);
if (Rift && Rift->isDead())
{
m_creature->RemoveAurasDueToSpell(SPELL_RIFT_SHIELD);
- ChaoticRiftGUID = 0;
+ uiChaoticRiftGUID = 0;
}
return;
}
} else
- ChaoticRiftGUID = 0;
+ uiChaoticRiftGUID = 0;
if ((Phase == 0) && HealthBelowPct(50))
{
Phase = 1;
DoScriptText(SAY_SHIELD, m_creature);
DoCast(m_creature, SPELL_RIFT_SHIELD);
-
- int tmp = rand()%(2);
- Creature* Rift = m_creature->SummonCreature(MOB_CHAOTIC_RIFT, RiftLocation[tmp], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1000);
+ Creature* Rift = m_creature->SummonCreature(MOB_CHAOTIC_RIFT, RiftLocation[urand(0,5)], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1*IN_MILISECONDS);
if (Rift)
{
//DoCast(Rift, SPELL_CHARGE_RIFT);
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
Rift->AI()->AttackStart(pTarget);
- ChaoticRiftGUID = Rift->GetGUID();
+ uiChaoticRiftGUID = Rift->GetGUID();
DoScriptText(SAY_RIFT , m_creature);
}
}
- if (SPELL_SPARK_Timer <= diff)
+ if (uiSparkTimer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- DoCast(pTarget, DUNGEON_MODE(SPELL_SPARK_N, SPELL_SPARK_H));
- SPELL_SPARK_Timer = 5000;
- } else SPELL_SPARK_Timer -=diff;
+ DoCast(pTarget, DUNGEON_MODE(SPELL_SPARK, H_SPELL_SPARK));
+ uiSparkTimer = 5*IN_MILISECONDS;
+ } else uiSparkTimer -= diff;
DoMeleeAttackIfReady();
}
@@ -175,6 +166,13 @@ CreatureAI* GetAI_boss_anomalus(Creature* pCreature)
return new boss_anomalusAI (pCreature);
}
+enum RiftSpells
+{
+ SPELL_CHAOTIC_ENERGY_BURST = 47688,
+ SPELL_CHARGED_CHAOTIC_ENERGY_BURST = 47737,
+ SPELL_ARCANEFORM = 48019 //Chaotic Rift visual
+};
+
struct mob_chaotic_riftAI : public Scripted_NoMovementAI
{
mob_chaotic_riftAI(Creature *c) : Scripted_NoMovementAI(c)
@@ -184,14 +182,14 @@ struct mob_chaotic_riftAI : public Scripted_NoMovementAI
ScriptedInstance* pInstance;
- uint32 SPELL_CHAOTIC_ENERGY_BURST_Timer;
- uint32 SUMMON_CRAZED_MANA_WRAITH_Timer;
+ uint32 uiChaoticEnergyBurstTimer;
+ uint32 uiSummonCrazedManaWraithTimer;
void Reset()
{
- SPELL_CHAOTIC_ENERGY_BURST_Timer = 1000;
- SUMMON_CRAZED_MANA_WRAITH_Timer = 5000;
- m_creature->SetDisplayId(25206); //For some reason in DB models for ally and horde are different.
+ uiChaoticEnergyBurstTimer = 1*IN_MILISECONDS;
+ uiSummonCrazedManaWraithTimer = 5*IN_MILISECONDS;
+ //m_creature->SetDisplayId(25206); //For some reason in DB models for ally and horde are different.
//Model for ally (1126) does not show auras. Horde model works perfect.
//Set model to horde number
DoCast(m_creature, SPELL_ARCANEFORM, false);
@@ -199,7 +197,8 @@ struct mob_chaotic_riftAI : public Scripted_NoMovementAI
void JustDied(Unit *killer)
{
- DeadChaoticRift = true;
+ if (Creature* pAnomalus = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_ANOMALUS) : 0))
+ CAST_AI(boss_anomalusAI,pAnomalus->AI())->bDeadChaoticRift = true;
}
void UpdateAI(const uint32 diff)
@@ -207,29 +206,29 @@ struct mob_chaotic_riftAI : public Scripted_NoMovementAI
if (!UpdateVictim())
return;
- if (SPELL_CHAOTIC_ENERGY_BURST_Timer <= diff)
+ if (uiChaoticEnergyBurstTimer <= diff)
{
- Unit* Anomalus = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_ANOMALUS) : 0);
+ Unit* pAnomalus = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_ANOMALUS) : 0);
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
- if (Anomalus && Anomalus->HasAura(SPELL_RIFT_SHIELD))
+ if (pAnomalus && pAnomalus->HasAura(SPELL_RIFT_SHIELD))
DoCast(pTarget, SPELL_CHARGED_CHAOTIC_ENERGY_BURST);
else
DoCast(pTarget, SPELL_CHAOTIC_ENERGY_BURST);
- SPELL_CHAOTIC_ENERGY_BURST_Timer = 1000;
- } else SPELL_CHAOTIC_ENERGY_BURST_Timer -=diff;
+ uiChaoticEnergyBurstTimer = 1*IN_MILISECONDS;
+ } else uiChaoticEnergyBurstTimer -= diff;
- if (SUMMON_CRAZED_MANA_WRAITH_Timer <= diff)
+ if (uiSummonCrazedManaWraithTimer <= diff)
{
- Creature* Wraith = m_creature->SummonCreature(MOB_CRAZED_MANA_WRAITH, m_creature->GetPositionX()+1, m_creature->GetPositionY()+1, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1000);
+ Creature* Wraith = m_creature->SummonCreature(MOB_CRAZED_MANA_WRAITH, m_creature->GetPositionX()+1, m_creature->GetPositionY()+1, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1*IN_MILISECONDS);
if (Wraith)
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
Wraith->AI()->AttackStart(pTarget);
Unit* Anomalus = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_ANOMALUS) : 0);
if (Anomalus && Anomalus->HasAura(SPELL_RIFT_SHIELD))
- SUMMON_CRAZED_MANA_WRAITH_Timer = 5000;
+ uiSummonCrazedManaWraithTimer = 5*IN_MILISECONDS;
else
- SUMMON_CRAZED_MANA_WRAITH_Timer = 10000;
- } else SUMMON_CRAZED_MANA_WRAITH_Timer -=diff;
+ uiSummonCrazedManaWraithTimer = 10*IN_MILISECONDS;
+ } else uiSummonCrazedManaWraithTimer -= diff;
}
};
diff --git a/src/scripts/northrend/nexus/nexus/boss_keristrasza.cpp b/src/scripts/northrend/nexus/nexus/boss_keristrasza.cpp
index 0b1257e5b94..76faf74856e 100644
--- a/src/scripts/northrend/nexus/nexus/boss_keristrasza.cpp
+++ b/src/scripts/northrend/nexus/nexus/boss_keristrasza.cpp
@@ -1,4 +1,5 @@
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * Copyright (C) 2008 - 2010 TrinityCore <http://www.trinitycore.org>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -14,39 +15,38 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Boss_Keristrasza
-SD%Complete:
-SDComment:
-SDCategory: The Nexus, The Nexus
-EndScriptData */
-
#include "ScriptedPch.h"
#include "nexus.h"
-enum eEnums
+enum Spells
{
- CONTAINMENT_SPHERES = 3,
-
- ACHIEVEMENT_INTENSE_COLD = 2036,
-
//Spells
- SPELL_FROZEN_PRISON = 47854,
- SPELL_TAIL_SWEEP = 50155,
- SPELL_CRYSTAL_CHAINS = 50997,
- SPELL_ENRAGE = 8599,
- SPELL_CRYSTALFIRE_BREATH_N = 48096,
- SPELL_CRYSTALFIRE_BREATH_H = 57091,
- SPELL_CRYSTALIZE = 48179,
- SPELL_INTENSE_COLD = 48094,
- SPELL_INTENSE_COLD_TRIGGERED = 48095,
-
+ SPELL_FROZEN_PRISON = 47854,
+ SPELL_TAIL_SWEEP = 50155,
+ SPELL_CRYSTAL_CHAINS = 50997,
+ SPELL_ENRAGE = 8599,
+ SPELL_CRYSTALFIRE_BREATH = 48096,
+ H_SPELL_CRYSTALFIRE_BREATH = 57091,
+ SPELL_CRYSTALIZE = 48179,
+ SPELL_INTENSE_COLD = 48094,
+ SPELL_INTENSE_COLD_TRIGGERED = 48095
+};
+enum Yells
+{
//Yell
- SAY_AGGRO = -1576040,
- SAY_SLAY = -1576041,
- SAY_ENRAGE = -1576042,
- SAY_DEATH = -1576043,
- SAY_CRYSTAL_NOVA = -1576044
+ SAY_AGGRO = -1576040,
+ SAY_SLAY = -1576041,
+ SAY_ENRAGE = -1576042,
+ SAY_DEATH = -1576043,
+ SAY_CRYSTAL_NOVA = -1576044
+};
+enum Achievements
+{
+ ACHIEV_INTENSE_COLD = 2036
+};
+enum Misc
+{
+ DATA_CONTAINMENT_SPHERES = 3
};
struct boss_keristraszaAI : public ScriptedAI
@@ -58,25 +58,25 @@ struct boss_keristraszaAI : public ScriptedAI
ScriptedInstance* pInstance;
- uint32 CRYSTALFIRE_BREATH_Timer;
- uint32 CRYSTAL_CHAINS_CRYSTALIZE_Timer;
- uint32 TAIL_SWEEP_Timer;
- bool Enrage;
+ uint32 uiCrystalfireBreathTimer;
+ uint32 uiCrystalChainsCrystalizeTimer;
+ uint32 uiTailSweepTimer;
+ bool bEnrage;
- uint64 ContainmentSphereGUIDs[CONTAINMENT_SPHERES];
+ uint64 auiContainmentSphereGUIDs[DATA_CONTAINMENT_SPHERES];
- uint32 CheckIntenseColdTimer;
- bool MoreThanTwoIntenseCold; // needed for achievement: Intense Cold(2036)
+ uint32 uiCheckIntenseColdTimer;
+ bool bMoreThanTwoIntenseCold; // needed for achievement: Intense Cold(2036)
void Reset()
{
- CRYSTALFIRE_BREATH_Timer = 14000;
- CRYSTAL_CHAINS_CRYSTALIZE_Timer = DUNGEON_MODE(30000,11000);
- TAIL_SWEEP_Timer = 5000;
- Enrage = false;
+ uiCrystalfireBreathTimer = 14*IN_MILISECONDS;
+ uiCrystalChainsCrystalizeTimer = DUNGEON_MODE(30*IN_MILISECONDS,11*IN_MILISECONDS);
+ uiTailSweepTimer = 5*IN_MILISECONDS;
+ bEnrage = false;
- CheckIntenseColdTimer = 2000;
- MoreThanTwoIntenseCold = false;
+ uiCheckIntenseColdTimer = 2*IN_MILISECONDS;
+ bMoreThanTwoIntenseCold = false;
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
@@ -99,23 +99,12 @@ struct boss_keristraszaAI : public ScriptedAI
{
DoScriptText(SAY_DEATH, m_creature);
- if (IsHeroic() && !MoreThanTwoIntenseCold)
- {
- AchievementEntry const *AchievIntenseCold = GetAchievementStore()->LookupEntry(ACHIEVEMENT_INTENSE_COLD);
- if (AchievIntenseCold)
- {
- Map* pMap = m_creature->GetMap();
- if (pMap && pMap->IsDungeon())
- {
- Map::PlayerList const &players = pMap->GetPlayers();
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- itr->getSource()->CompletedAchievement(AchievIntenseCold);
- }
- }
- }
-
if (pInstance)
+ {
+ if (IsHeroic() && !bMoreThanTwoIntenseCold)
+ pInstance->DoCompleteAchievement(ACHIEV_INTENSE_COLD);
pInstance->SetData(DATA_KERISTRASZA_EVENT, DONE);
+ }
}
void KilledUnit(Unit *victim)
@@ -128,15 +117,15 @@ struct boss_keristraszaAI : public ScriptedAI
if(!pInstance)
return false;
- ContainmentSphereGUIDs[0] = pInstance->GetData64(ANOMALUS_CONTAINMET_SPHERE);
- ContainmentSphereGUIDs[1] = pInstance->GetData64(ORMOROKS_CONTAINMET_SPHERE);
- ContainmentSphereGUIDs[2] = pInstance->GetData64(TELESTRAS_CONTAINMET_SPHERE);
+ auiContainmentSphereGUIDs[0] = pInstance->GetData64(ANOMALUS_CONTAINMET_SPHERE);
+ auiContainmentSphereGUIDs[1] = pInstance->GetData64(ORMOROKS_CONTAINMET_SPHERE);
+ auiContainmentSphereGUIDs[2] = pInstance->GetData64(TELESTRAS_CONTAINMET_SPHERE);
- GameObject *ContainmentSpheres[CONTAINMENT_SPHERES];
+ GameObject *ContainmentSpheres[DATA_CONTAINMENT_SPHERES];
- for (uint8 i = 0; i < CONTAINMENT_SPHERES; ++i)
+ for (uint8 i = 0; i < DATA_CONTAINMENT_SPHERES; ++i)
{
- ContainmentSpheres[i] = pInstance->instance->GetGameObject(ContainmentSphereGUIDs[i]);
+ ContainmentSpheres[i] = pInstance->instance->GetGameObject(auiContainmentSphereGUIDs[i]);
if (!ContainmentSpheres[i])
return false;
if (ContainmentSpheres[i]->GetGoState() != GO_STATE_ACTIVE)
@@ -169,7 +158,7 @@ struct boss_keristraszaAI : public ScriptedAI
if (!UpdateVictim())
return;
- if (CheckIntenseColdTimer < diff && !MoreThanTwoIntenseCold)
+ if (uiCheckIntenseColdTimer < diff && !bMoreThanTwoIntenseCold)
{
std::list<HostileReference*> ThreatList = m_creature->getThreatManager().getThreatList();
for (std::list<HostileReference*>::const_iterator itr = ThreatList.begin(); itr != ThreatList.end(); itr++)
@@ -181,41 +170,41 @@ struct boss_keristraszaAI : public ScriptedAI
Aura *AuraIntenseCold = pTarget->GetAura(SPELL_INTENSE_COLD_TRIGGERED);
if (AuraIntenseCold && AuraIntenseCold->GetStackAmount() > 2)
{
- MoreThanTwoIntenseCold = true;
+ bMoreThanTwoIntenseCold = true;
break;
}
}
- CheckIntenseColdTimer = 2000;
- } else CheckIntenseColdTimer -= diff;
+ uiCheckIntenseColdTimer = 2*IN_MILISECONDS;
+ } else uiCheckIntenseColdTimer -= diff;
- if (!Enrage && (m_creature->GetHealth() < m_creature->GetMaxHealth() * 0.25))
+ if (!bEnrage && (m_creature->GetHealth() < HealthBelowPct(25)))
{
DoScriptText(SAY_ENRAGE, m_creature);
DoCast(m_creature, SPELL_ENRAGE);
- Enrage = true;
+ bEnrage = true;
}
- if (CRYSTALFIRE_BREATH_Timer <= diff)
+ if (uiCrystalfireBreathTimer <= diff)
{
- DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_CRYSTALFIRE_BREATH_N, SPELL_CRYSTALFIRE_BREATH_H));
- CRYSTALFIRE_BREATH_Timer = 14000;
- } else CRYSTALFIRE_BREATH_Timer -=diff;
+ DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_CRYSTALFIRE_BREATH, H_SPELL_CRYSTALFIRE_BREATH));
+ uiCrystalfireBreathTimer = 14*IN_MILISECONDS;
+ } else uiCrystalfireBreathTimer -= diff;
- if (TAIL_SWEEP_Timer <= diff)
+ if (uiTailSweepTimer <= diff)
{
DoCast(m_creature, SPELL_TAIL_SWEEP);
- TAIL_SWEEP_Timer = 5000;
- } else TAIL_SWEEP_Timer -=diff;
+ uiTailSweepTimer = 5*IN_MILISECONDS;
+ } else uiTailSweepTimer -= diff;
- if (CRYSTAL_CHAINS_CRYSTALIZE_Timer <= diff)
+ if (uiCrystalChainsCrystalizeTimer <= diff)
{
DoScriptText(SAY_CRYSTAL_NOVA, m_creature);
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 = DUNGEON_MODE(30000,11000);
- } else CRYSTAL_CHAINS_CRYSTALIZE_Timer -= diff;
+ uiCrystalChainsCrystalizeTimer = DUNGEON_MODE(30*IN_MILISECONDS,11*IN_MILISECONDS);
+ } else uiCrystalChainsCrystalizeTimer -= diff;
DoMeleeAttackIfReady();
}
@@ -230,14 +219,14 @@ bool GOHello_containment_sphere(Player *pPlayer, GameObject *pGO)
{
ScriptedInstance *pInstance = pGO->GetInstanceData();
- Creature *Keristrasza = Unit::GetCreature(*pGO, pInstance ? pInstance->GetData64(DATA_KERISTRASZA) : 0);
- if (Keristrasza && Keristrasza->isAlive())
+ Creature *pKeristrasza = Unit::GetCreature(*pGO, pInstance ? pInstance->GetData64(DATA_KERISTRASZA) : 0);
+ if (pKeristrasza && pKeristrasza->isAlive())
{
// maybe these are hacks :(
pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNK1);
pGO->SetGoState(GO_STATE_ACTIVE);
- CAST_AI(boss_keristraszaAI, Keristrasza->AI())->CheckContainmentSpheres(true);
+ CAST_AI(boss_keristraszaAI, pKeristrasza->AI())->CheckContainmentSpheres(true);
}
return true;
}
diff --git a/src/scripts/northrend/nexus/nexus/boss_magus_telestra.cpp b/src/scripts/northrend/nexus/nexus/boss_magus_telestra.cpp
index 051fe209866..84687732860 100644
--- a/src/scripts/northrend/nexus/nexus/boss_magus_telestra.cpp
+++ b/src/scripts/northrend/nexus/nexus/boss_magus_telestra.cpp
@@ -1,4 +1,5 @@
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * Copyright (C) 2008 - 2010 TrinityCore <http://www.trinitycore.org>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -14,53 +15,45 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Boss_Magus_Telestra
-SD%Complete:
-SDComment:
-SDCategory: The Nexus, The Nexus
-EndScriptData */
-
#include "ScriptedPch.h"
#include "nexus.h"
-enum eEnums
+enum Spells
{
-//Spells
- SPELL_ICE_NOVA_N = 47772,
- SPELL_ICE_NOVA_H = 56935,
- SPELL_FIREBOMB_N = 47773,
- SPELL_FIREBOMB_H = 56934,
- SPELL_GRAVITY_WELL = 47756,
- SPELL_TELESTRA_BACK = 47714,
-
-//At 50% HP - 3 clones, Frost, Fire, Arcane (and in 10% HP in Heroic)
- MOB_FIRE_MAGUS = 26928,
- MOB_FROST_MAGUS = 26930,
- MOB_ARCANE_MAGUS = 26929,
-
- SPELL_FIRE_MAGUS_VISUAL = 47705,
- SPELL_FROST_MAGUS_VISUAL = 47706,
- SPELL_ARCANE_MAGUS_VISUAL = 47704,
-
-//Yell
- SAY_AGGRO = -1576000,
- SAY_KILL = -1576001,
- SAY_DEATH = -1576002,
- SAY_MERGE = -1576003,
- SAY_SPLIT_1 = -1576004,
- SAY_SPLIT_2 = -1576005,
-
-//Achievement
- ACHIEV_SPLIT_PERSONALITY = 2150,
- ACHIEV_TIMER = 5 * 1000
+ SPELL_ICE_NOVA = 47772,
+ H_SPELL_ICE_NOVA = 56935,
+ SPELL_FIREBOMB = 47773,
+ H_SPELL_FIREBOMB = 56934,
+ SPELL_GRAVITY_WELL = 47756,
+ SPELL_TELESTRA_BACK = 47714,
+
+ SPELL_FIRE_MAGUS_VISUAL = 47705,
+ SPELL_FROST_MAGUS_VISUAL = 47706,
+ SPELL_ARCANE_MAGUS_VISUAL = 47704
};
-
-float CenterOfRoom[1][4] =
+enum Creatures
+{
+ MOB_FIRE_MAGUS = 26928,
+ MOB_FROST_MAGUS = 26930,
+ MOB_ARCANE_MAGUS = 26929
+};
+enum Yells
+{
+ SAY_AGGRO = -1576000,
+ SAY_KILL = -1576001,
+ SAY_DEATH = -1576002,
+ SAY_MERGE = -1576003,
+ SAY_SPLIT_1 = -1576004,
+ SAY_SPLIT_2 = -1576005,
+};
+enum Achievements
{
- {504.80, 89.07, -16.12, 6.27}
+ ACHIEV_SPLIT_PERSONALITY = 2150,
+ ACHIEV_TIMER = 5*IN_MILISECONDS
};
+const Position CenterOfRoom = {504.80, 89.07, -16.12, 6.27};
+
struct boss_magus_telestraAI : public ScriptedAI
{
boss_magus_telestraAI(Creature* c) : ScriptedAI(c)
@@ -70,45 +63,44 @@ struct boss_magus_telestraAI : public ScriptedAI
ScriptedInstance* pInstance;
- uint64 FireMagusGUID;
- uint64 FrostMagusGUID;
- uint64 ArcaneMagusGUID;
- bool FireMagusDead;
- bool FrostMagusDead;
- bool ArcaneMagusDead;
-
- uint32 AppearDelay_Timer;
- bool AppearDelay;
+ uint64 uiFireMagusGUID;
+ uint64 uiFrostMagusGUID;
+ uint64 uiArcaneMagusGUID;
+
+ bool bFireMagusDead;
+ bool bFrostMagusDead;
+ bool bArcaneMagusDead;
+ bool bIsWaitingToAppear;
+ bool bIsAchievementTimerRunning;
+
+ uint32 uiIsWaitingToAppearTimer;
+ uint32 uiIceNovaTimer;
+ uint32 uiFireBombTimer;
+ uint32 uiGravityWellTimer;
+ uint32 uiCooldown;
+ uint32 uiAchievementTimer;
uint8 Phase;
-
- uint32 SPELL_ICE_NOVA_Timer;
- uint32 SPELL_FIREBOMB_Timer;
- uint32 SPELL_GRAVITY_WELL_Timer;
- uint32 Cooldown;
-
- bool AchievementTimerRunning;
- uint8 AchievementProgress;
- uint32 AchievementTimer;
+ uint8 uiAchievementProgress;
void Reset()
{
Phase = 0;
//These times are probably wrong
- SPELL_ICE_NOVA_Timer = 7000;
- SPELL_FIREBOMB_Timer = 0;
- SPELL_GRAVITY_WELL_Timer = 15000;
- Cooldown = 0;
-
- FireMagusGUID = 0;
- FrostMagusGUID = 0;
- ArcaneMagusGUID = 0;
+ uiIceNovaTimer = 7*IN_MILISECONDS;
+ uiFireBombTimer = 0;
+ uiGravityWellTimer = 15*IN_MILISECONDS;
+ uiCooldown = 0;
- AchievementProgress = 0;
- AchievementTimer = 0;
- AchievementTimerRunning = false;
+ uiFireMagusGUID = 0;
+ uiFrostMagusGUID = 0;
+ uiArcaneMagusGUID = 0;
- AppearDelay = false;
+ uiAchievementProgress = 0;
+ uiAchievementTimer = 0;
+
+ bIsAchievementTimerRunning = false;
+ bIsWaitingToAppear = false;
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
m_creature->SetVisibility(VISIBILITY_ON);
@@ -129,23 +121,12 @@ struct boss_magus_telestraAI : public ScriptedAI
{
DoScriptText(SAY_DEATH, m_creature);
- if (IsHeroic() && AchievementProgress == 2)
- {
- AchievementEntry const *AchievSplitPersonality = GetAchievementStore()->LookupEntry(ACHIEV_SPLIT_PERSONALITY);
- if (AchievSplitPersonality)
- {
- Map* pMap = m_creature->GetMap();
- if (pMap && pMap->IsDungeon())
- {
- Map::PlayerList const &players = pMap->GetPlayers();
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- itr->getSource()->CompletedAchievement(AchievSplitPersonality);
- }
- }
- }
-
if (pInstance)
+ {
+ if (IsHeroic() && uiAchievementProgress == 2)
+ pInstance->DoCompleteAchievement(ACHIEV_SPLIT_PERSONALITY);
pInstance->SetData(DATA_MAGUS_TELESTRA_EVENT, DONE);
+ }
}
void KilledUnit(Unit *victim)
@@ -155,8 +136,7 @@ struct boss_magus_telestraAI : public ScriptedAI
uint64 SplitPersonality(uint32 entry)
{
- Creature* Summoned = m_creature->SummonCreature(entry, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1000);
- if (Summoned)
+ if (Creature* Summoned = m_creature->SummonCreature(entry, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1*IN_MILISECONDS))
{
switch (entry)
{
@@ -191,147 +171,148 @@ struct boss_magus_telestraAI : public ScriptedAI
return;
}
- if (AppearDelay)
+ if (bIsWaitingToAppear)
{
m_creature->StopMoving();
m_creature->AttackStop();
- if (AppearDelay_Timer <= diff)
+ if (uiIsWaitingToAppearTimer <= diff)
{
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- AppearDelay = false;
- } else AppearDelay_Timer -= diff;
+ bIsWaitingToAppear = false;
+ } else uiIsWaitingToAppearTimer -= diff;
return;
}
- if ((Phase == 1)||(Phase == 3))
+ if ((Phase == 1) ||(Phase == 3))
{
- Unit* FireMagus;
- Unit* FrostMagus;
- Unit* ArcaneMagus;
- if (FireMagusGUID)
- FireMagus = Unit::GetUnit((*m_creature), FireMagusGUID);
- if (FrostMagusGUID)
- FrostMagus = Unit::GetUnit((*m_creature), FrostMagusGUID);
- if (ArcaneMagusGUID)
- ArcaneMagus = Unit::GetUnit((*m_creature), ArcaneMagusGUID);
- if (FireMagus && FireMagus->isDead())
+ Unit* pFireMagus;
+ Unit* pFrostMagus;
+ Unit* pArcaneMagus;
+ if (uiFireMagusGUID)
+ pFireMagus = Unit::GetUnit((*m_creature), uiFireMagusGUID);
+ if (uiFrostMagusGUID)
+ pFrostMagus = Unit::GetUnit((*m_creature), uiFrostMagusGUID);
+ if (uiArcaneMagusGUID)
+ pArcaneMagus = Unit::GetUnit((*m_creature), uiArcaneMagusGUID);
+ if (pFireMagus && pFireMagus->isDead())
{
- FireMagusDead = true;
- if (!AchievementTimerRunning)
- AchievementTimerRunning = true;
+ bFireMagusDead = true;
+ if (!bIsAchievementTimerRunning)
+ bIsAchievementTimerRunning = true;
}
- if (FrostMagus && FrostMagus->isDead())
+ if (pFrostMagus && pFrostMagus->isDead())
{
- FrostMagusDead = true;
- if (!AchievementTimerRunning)
- AchievementTimerRunning = true;
+ bFrostMagusDead = true;
+ if (!bIsAchievementTimerRunning)
+ bIsAchievementTimerRunning = true;
}
- if (ArcaneMagus && ArcaneMagus->isDead())
+ if (pArcaneMagus && pArcaneMagus->isDead())
{
- ArcaneMagusDead = true;
- if (!AchievementTimerRunning)
- AchievementTimerRunning = true;
+ bArcaneMagusDead = true;
+ if (!bIsAchievementTimerRunning)
+ bIsAchievementTimerRunning = true;
}
- if (AchievementTimerRunning)
- AchievementTimer += diff;
- if (FireMagusDead && FrostMagusDead && ArcaneMagusDead)
+ if (bIsAchievementTimerRunning)
+ uiAchievementTimer += diff;
+ if (bFireMagusDead && bFrostMagusDead && bArcaneMagusDead)
{
- if (AchievementTimer <= ACHIEV_TIMER)
- AchievementProgress +=1;
+ if (uiAchievementTimer <= ACHIEV_TIMER)
+ uiAchievementProgress +=1;
m_creature->GetMotionMaster()->Clear();
- m_creature->GetMap()->CreatureRelocation(m_creature, CenterOfRoom[0][0], CenterOfRoom[0][1], CenterOfRoom[0][2], CenterOfRoom[0][3]);
+ m_creature->GetMap()->CreatureRelocation(m_creature, CenterOfRoom.GetPositionX(), CenterOfRoom.GetPositionY(), CenterOfRoom.GetPositionZ(), CenterOfRoom.GetOrientation());
DoCast(m_creature, SPELL_TELESTRA_BACK);
m_creature->SetVisibility(VISIBILITY_ON);
if (Phase == 1)
Phase = 2;
if (Phase == 3)
Phase = 4;
- FireMagusGUID = 0;
- FrostMagusGUID = 0;
- ArcaneMagusGUID = 0;
- AppearDelay = true;
- AppearDelay_Timer = 4000;
+ uiFireMagusGUID = 0;
+ uiFrostMagusGUID = 0;
+ uiArcaneMagusGUID = 0;
+ bIsWaitingToAppear = true;
+ uiIsWaitingToAppearTimer = 4*IN_MILISECONDS;
DoScriptText(SAY_MERGE, m_creature);
- AchievementTimerRunning = false;
- AchievementTimer = 0;
- }else
+ bIsAchievementTimerRunning = false;
+ uiAchievementTimer = 0;
+ }
+ else
return;
}
- if ((Phase == 0) && (m_creature->GetHealth() <= (m_creature->GetMaxHealth() * 0.5)))
+ if ((Phase == 0) && HealthBelowPct(50))
{
Phase = 1;
m_creature->CastStop();
m_creature->RemoveAllAuras();
m_creature->SetVisibility(VISIBILITY_OFF);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- FireMagusGUID = SplitPersonality(MOB_FIRE_MAGUS);
- FrostMagusGUID = SplitPersonality(MOB_FROST_MAGUS);
- ArcaneMagusGUID = SplitPersonality(MOB_ARCANE_MAGUS);
- FireMagusDead = false;
- FrostMagusDead = false;
- ArcaneMagusDead = false;
+ uiFireMagusGUID = SplitPersonality(MOB_FIRE_MAGUS);
+ uiFrostMagusGUID = SplitPersonality(MOB_FROST_MAGUS);
+ uiArcaneMagusGUID = SplitPersonality(MOB_ARCANE_MAGUS);
+ bFireMagusDead = false;
+ bFrostMagusDead = false;
+ bArcaneMagusDead = false;
DoScriptText(RAND(SAY_SPLIT_1,SAY_SPLIT_2), m_creature);
return;
}
- if (IsHeroic() && (Phase == 2) && (m_creature->GetHealth() <= (m_creature->GetMaxHealth() * 0.1)))
+ if (IsHeroic() && (Phase == 2) && HealthBelowPct(10))
{
Phase = 3;
m_creature->CastStop();
m_creature->RemoveAllAuras();
m_creature->SetVisibility(VISIBILITY_OFF);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- FireMagusGUID = SplitPersonality(MOB_FIRE_MAGUS);
- FrostMagusGUID = SplitPersonality(MOB_FROST_MAGUS);
- ArcaneMagusGUID = SplitPersonality(MOB_ARCANE_MAGUS);
- FireMagusDead = false;
- FrostMagusDead = false;
- ArcaneMagusDead = false;
+ uiFireMagusGUID = SplitPersonality(MOB_FIRE_MAGUS);
+ uiFrostMagusGUID = SplitPersonality(MOB_FROST_MAGUS);
+ uiArcaneMagusGUID = SplitPersonality(MOB_ARCANE_MAGUS);
+ bFireMagusDead = false;
+ bFrostMagusDead = false;
+ bArcaneMagusDead = false;
DoScriptText(RAND(SAY_SPLIT_1,SAY_SPLIT_2), m_creature);
return;
}
- if (Cooldown)
+ if (uiCooldown)
{
- if (Cooldown <= diff)
- Cooldown = 0;
+ if (uiCooldown <= diff)
+ uiCooldown = 0;
else
{
- Cooldown -= diff;
+ uiCooldown -= diff;
return;
}
}
- if (SPELL_ICE_NOVA_Timer <= diff)
+ if (uiIceNovaTimer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
{
- DoCast(pTarget, DUNGEON_MODE(SPELL_ICE_NOVA_N, SPELL_ICE_NOVA_H));
- Cooldown = 1500;
+ DoCast(pTarget, DUNGEON_MODE(SPELL_ICE_NOVA, H_SPELL_ICE_NOVA));
+ uiCooldown = 1.5*IN_MILISECONDS;
}
- SPELL_ICE_NOVA_Timer = 15000;
- } else SPELL_ICE_NOVA_Timer -=diff;
+ uiIceNovaTimer = 15*IN_MILISECONDS;
+ } else uiIceNovaTimer -= diff;
- if (SPELL_GRAVITY_WELL_Timer <= diff)
+ if (uiGravityWellTimer <= diff)
{
if (Unit *pTarget = m_creature->getVictim())
{
DoCast(pTarget, SPELL_GRAVITY_WELL);
- Cooldown = 6000;
+ uiCooldown = 6*IN_MILISECONDS;
}
- SPELL_GRAVITY_WELL_Timer = 15000;
- } else SPELL_GRAVITY_WELL_Timer -=diff;
+ uiGravityWellTimer = 15*IN_MILISECONDS;
+ } else uiGravityWellTimer -= diff;
- if (SPELL_FIREBOMB_Timer <= diff)
+ if (uiFireBombTimer <= diff)
{
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
{
- DoCast(pTarget, DUNGEON_MODE(SPELL_FIREBOMB_N, SPELL_FIREBOMB_H));
- Cooldown = 2000;
+ DoCast(pTarget, DUNGEON_MODE(SPELL_FIREBOMB, H_SPELL_FIREBOMB));
+ uiCooldown = 2*IN_MILISECONDS;
}
- SPELL_FIREBOMB_Timer = 2000;
- } else SPELL_FIREBOMB_Timer -=diff;
+ uiFireBombTimer = 2*IN_MILISECONDS;
+ } else uiFireBombTimer -=diff;
DoMeleeAttackIfReady();
}
diff --git a/src/scripts/northrend/nexus/nexus/boss_ormorok.cpp b/src/scripts/northrend/nexus/nexus/boss_ormorok.cpp
index 95361f44732..3db2021ebf2 100644
--- a/src/scripts/northrend/nexus/nexus/boss_ormorok.cpp
+++ b/src/scripts/northrend/nexus/nexus/boss_ormorok.cpp
@@ -1,4 +1,5 @@
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * Copyright (C) 2008 - 2010 TrinityCore <http://www.trinitycore.org>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -14,41 +15,35 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Boss_Ormorok
-SD%Complete:
-SDComment:
-SDCategory: The Nexus, The Nexus
-EndScriptData */
-
#include "ScriptedPch.h"
#include "nexus.h"
-enum eEnums
+enum Spells
+{
+ SPELL_CRYSTAL_SPIKES = 47958, //Don't work, using walkaround
+ H_SPELL_CRYSTAL_SPIKES = 57082, //Don't work, using walkaround
+ SPELL_CRYSTALL_SPIKE_DAMAGE = 47944,
+ H_SPELL_CRYSTALL_SPIKE_DAMAGE = 57067,
+ SPELL_CRYSTAL_SPIKE_PREVISUAL = 50442,
+ MOB_CRYSTAL_SPIKE = 27099,
+ SPELL_SPELL_REFLECTION = 47981,
+ SPELL_TRAMPLE = 48016,
+ H_SPELL_TRAMPLE = 57066,
+ SPELL_FRENZY = 48017,
+ SPELL_SUMMON_CRYSTALLINE_TANGLER = 61564, //summons npc 32665
+ SPELL_ROOTS = 28858 //proper spell id is unknown
+};
+enum Yells
+{
+ SAY_AGGRO = -1576020,
+ SAY_DEATH = -1576021,
+ SAY_REFLECT = -1576022,
+ SAY_CRYSTAL_SPIKES = -1576023,
+ SAY_KILL = -1576024
+};
+enum Creatures
{
-//Spells
- SPELL_CRYSTAL_SPIKES_N = 47958, //Don't work, using walkaround
- SPELL_CRYSTAL_SPIKES_H = 57082, //Don't work, using walkaround
-//Walkaround for spells Crystal Spikes -----------------
- SPELL_CRYSTALL_SPIKE_DAMAGE_N = 47944,
- SPELL_CRYSTALL_SPIKE_DAMAGE_H = 57067,
- SPELL_CRYSTAL_SPIKE_PREVISUAL = 50442,
- MOB_CRYSTAL_SPIKE = 27099,
-//------------------------------------------------------
- SPELL_SPELL_REFLECTION = 47981,
- SPELL_TRAMPLE_N = 48016,
- SPELL_TRAMPLE_H = 57066,
- SPELL_FRENZY = 48017,
- SPELL_SUMMON_CRYSTALLINE_TANGLER = 61564, //summons npc 32665
- MOB_CRYSTALLINE_TANGLER = 32665,
- SPELL_ROOTS = 28858, //proper spell id is unknown
-
-//Yell
- SAY_AGGRO = -1576020,
- SAY_DEATH = -1576021,
- SAY_REFLECT = -1576022,
- SAY_CRYSTAL_SPIKES = -1576023,
- SAY_KILL = -1576024
+ MOB_CRYSTALLINE_TANGLER = 32665
};
#define SPIKE_DISTANCE 5.0f
@@ -62,30 +57,30 @@ struct boss_ormorokAI : public ScriptedAI
ScriptedInstance* pInstance;
- bool Frenzy;
- bool CrystalSpikes;
- uint8 CrystalSpikes_Count;
- float BaseX;
- float BaseY;
- float BaseZ;
- float BaseO;
- float SpikeXY[4][2];
-
- uint32 SPELL_CRYSTAL_SPIKES_Timer;
- uint32 CRYSTAL_SPIKES_Timer;
- uint32 SPELL_TRAMPLE_Timer;
- uint32 SPELL_FRENZY_Timer;
- uint32 SPELL_SPELL_REFLECTION_Timer;
- uint32 SPELL_SUMMON_CRYSTALLINE_TANGLER_Timer;
+ bool bFrenzy;
+ bool bCrystalSpikes;
+ uint8 uiCrystalSpikesCount;
+ float fBaseX;
+ float fBaseY;
+ float fBaseZ;
+ float fBaseO;
+ float fSpikeXY[4][2];
+
+ uint32 uiCrystalSpikesTimer;
+ uint32 uiCrystalSpikesTimer2;
+ uint32 uiTrampleTimer;
+ uint32 uiFrenzyTimer;
+ uint32 uiSpellReflectionTimer;
+ uint32 uiSummonCrystallineTanglerTimer;
void Reset()
{
- SPELL_CRYSTAL_SPIKES_Timer = 12000;
- SPELL_TRAMPLE_Timer = 10000;
- SPELL_SPELL_REFLECTION_Timer = 30000;
- SPELL_SUMMON_CRYSTALLINE_TANGLER_Timer = 17000;
- Frenzy = false;
- CrystalSpikes = false;
+ uiCrystalSpikesTimer = 12*IN_MILISECONDS;
+ uiTrampleTimer = 10*IN_MILISECONDS;
+ uiSpellReflectionTimer = 30*IN_MILISECONDS;
+ uiSummonCrystallineTanglerTimer = 17*IN_MILISECONDS;
+ bFrenzy = false;
+ bCrystalSpikes = false;
if (pInstance)
pInstance->SetData(DATA_ORMOROK_EVENT, NOT_STARTED);
@@ -118,57 +113,57 @@ struct boss_ormorokAI : public ScriptedAI
{
return;
}
- if (CrystalSpikes)
- if (CRYSTAL_SPIKES_Timer <= diff)
+ if (bCrystalSpikes)
+ if (uiCrystalSpikesTimer2 <= diff)
{
- SpikeXY[0][0] = BaseX+(SPIKE_DISTANCE*CrystalSpikes_Count*cos(BaseO));
- SpikeXY[0][1] = BaseY+(SPIKE_DISTANCE*CrystalSpikes_Count*sin(BaseO));
- SpikeXY[1][0] = BaseX-(SPIKE_DISTANCE*CrystalSpikes_Count*cos(BaseO));
- SpikeXY[1][1] = BaseY-(SPIKE_DISTANCE*CrystalSpikes_Count*sin(BaseO));
- SpikeXY[2][0] = BaseX+(SPIKE_DISTANCE*CrystalSpikes_Count*cos(BaseO-(M_PI/2)));
- SpikeXY[2][1] = BaseY+(SPIKE_DISTANCE*CrystalSpikes_Count*sin(BaseO-(M_PI/2)));
- SpikeXY[3][0] = BaseX-(SPIKE_DISTANCE*CrystalSpikes_Count*cos(BaseO-(M_PI/2)));
- SpikeXY[3][1] = BaseY-(SPIKE_DISTANCE*CrystalSpikes_Count*sin(BaseO-(M_PI/2)));
+ fSpikeXY[0][0] = fBaseX+(SPIKE_DISTANCE*uiCrystalSpikesCount*cos(fBaseO));
+ fSpikeXY[0][1] = fBaseY+(SPIKE_DISTANCE*uiCrystalSpikesCount*sin(fBaseO));
+ fSpikeXY[1][0] = fBaseX-(SPIKE_DISTANCE*uiCrystalSpikesCount*cos(fBaseO));
+ fSpikeXY[1][1] = fBaseY-(SPIKE_DISTANCE*uiCrystalSpikesCount*sin(fBaseO));
+ fSpikeXY[2][0] = fBaseX+(SPIKE_DISTANCE*uiCrystalSpikesCount*cos(fBaseO-(M_PI/2)));
+ fSpikeXY[2][1] = fBaseY+(SPIKE_DISTANCE*uiCrystalSpikesCount*sin(fBaseO-(M_PI/2)));
+ fSpikeXY[3][0] = fBaseX-(SPIKE_DISTANCE*uiCrystalSpikesCount*cos(fBaseO-(M_PI/2)));
+ fSpikeXY[3][1] = fBaseY-(SPIKE_DISTANCE*uiCrystalSpikesCount*sin(fBaseO-(M_PI/2)));
for (uint8 i = 0; i < 4; ++i)
- Creature* Spike = m_creature->SummonCreature(MOB_CRYSTAL_SPIKE, SpikeXY[i][0], SpikeXY[i][1], BaseZ, 0, TEMPSUMMON_TIMED_DESPAWN, 7000);
- if (++CrystalSpikes_Count >= 13)
- CrystalSpikes = false;
- CRYSTAL_SPIKES_Timer = 200;
- } else CRYSTAL_SPIKES_Timer -= diff;
+ Creature* Spike = m_creature->SummonCreature(MOB_CRYSTAL_SPIKE, fSpikeXY[i][0], fSpikeXY[i][1], fBaseZ, 0, TEMPSUMMON_TIMED_DESPAWN, 7*IN_MILISECONDS);
+ if (++uiCrystalSpikesCount >= 13)
+ bCrystalSpikes = false;
+ uiCrystalSpikesTimer2 = 200;
+ } else uiCrystalSpikesTimer2 -= diff;
- if (!Frenzy && (m_creature->GetHealth() < m_creature->GetMaxHealth() * 0.25))
+ if (!bFrenzy && (m_creature->GetHealth() < m_creature->GetMaxHealth() * 0.25))
{
DoCast(m_creature, SPELL_FRENZY);
- Frenzy = true;
+ bFrenzy = true;
}
- if (SPELL_TRAMPLE_Timer <= diff)
+ if (uiTrampleTimer <= diff)
{
- DoCast(m_creature, DUNGEON_MODE(SPELL_TRAMPLE_N, SPELL_TRAMPLE_H));
- SPELL_TRAMPLE_Timer = 10000;
- } else SPELL_TRAMPLE_Timer -= diff;
+ DoCast(m_creature, DUNGEON_MODE(SPELL_TRAMPLE, H_SPELL_TRAMPLE));
+ uiTrampleTimer = 10*IN_MILISECONDS;
+ } else uiTrampleTimer -= diff;
- if (SPELL_SPELL_REFLECTION_Timer <= diff)
+ if (uiSpellReflectionTimer <= diff)
{
DoScriptText(SAY_REFLECT, m_creature);
DoCast(m_creature, SPELL_SPELL_REFLECTION);
- SPELL_SPELL_REFLECTION_Timer = 30000;
- } else SPELL_SPELL_REFLECTION_Timer -= diff;
+ uiSpellReflectionTimer = 30*IN_MILISECONDS;
+ } else uiSpellReflectionTimer -= diff;
- if (SPELL_CRYSTAL_SPIKES_Timer <= diff)
+ if (uiCrystalSpikesTimer <= diff)
{
DoScriptText(SAY_CRYSTAL_SPIKES, m_creature);
- CrystalSpikes = true;
- CrystalSpikes_Count = 1;
- CRYSTAL_SPIKES_Timer = 0;
- BaseX = m_creature->GetPositionX();
- BaseY = m_creature->GetPositionY();
- BaseZ = m_creature->GetPositionZ();
- BaseO = m_creature->GetOrientation();
- SPELL_CRYSTAL_SPIKES_Timer = 20000;
- } else SPELL_CRYSTAL_SPIKES_Timer -=diff;
-
- if (IsHeroic() && (SPELL_SUMMON_CRYSTALLINE_TANGLER_Timer <= diff))
+ bCrystalSpikes = true;
+ uiCrystalSpikesCount = 1;
+ uiCrystalSpikesTimer2 = 0;
+ fBaseX = m_creature->GetPositionX();
+ fBaseY = m_creature->GetPositionY();
+ fBaseZ = m_creature->GetPositionZ();
+ fBaseO = m_creature->GetOrientation();
+ uiCrystalSpikesTimer = 20*IN_MILISECONDS;
+ } else uiCrystalSpikesTimer -= diff;
+
+ if (IsHeroic() && (uiSummonCrystallineTanglerTimer <= 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)
@@ -205,8 +200,8 @@ struct boss_ormorokAI : public ScriptedAI
Crystalline_Tangler->getThreatManager().addThreat(pTarget, 1000000000.0f);
}
}
- SPELL_SUMMON_CRYSTALLINE_TANGLER_Timer = 17000;
- } else SPELL_SUMMON_CRYSTALLINE_TANGLER_Timer -=diff;
+ uiSummonCrystallineTanglerTimer = 17*IN_MILISECONDS;
+ } else uiSummonCrystallineTanglerTimer -= diff;
DoMeleeAttackIfReady();
}
@@ -218,32 +213,28 @@ struct mob_crystal_spikeAI : public Scripted_NoMovementAI
{
}
- uint32 SPELL_CRYSTALL_SPIKE_DAMAGE_Timer;
- uint32 SPELL_CRYSTAL_SPIKE_PREVISUAL_Timer;
+ uint32 SpellCrystalSpikeDamageTimer;
+ uint32 SpellCrystalSpikePrevisualTimer;
void Reset()
{
- SPELL_CRYSTALL_SPIKE_DAMAGE_Timer = 3700;
- SPELL_CRYSTAL_SPIKE_PREVISUAL_Timer = 1000;
- m_creature->SetLevel(80); //
- m_creature->setFaction(16); //Walkaround to be independent from data in DB
- m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); //
- m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); //
+ SpellCrystalSpikeDamageTimer = 3.7*IN_MILISECONDS;
+ SpellCrystalSpikePrevisualTimer = 1*IN_MILISECONDS;
}
void UpdateAI(const uint32 diff)
{
- if (SPELL_CRYSTAL_SPIKE_PREVISUAL_Timer <= diff)
+ if (SpellCrystalSpikePrevisualTimer <= diff)
{
DoCast(m_creature, SPELL_CRYSTAL_SPIKE_PREVISUAL);
- SPELL_CRYSTAL_SPIKE_PREVISUAL_Timer = 10000;
- } else SPELL_CRYSTAL_SPIKE_PREVISUAL_Timer -=diff;
+ SpellCrystalSpikePrevisualTimer = 10*IN_MILISECONDS;
+ } else SpellCrystalSpikePrevisualTimer -= diff;
- if (SPELL_CRYSTALL_SPIKE_DAMAGE_Timer <= diff)
+ if (SpellCrystalSpikeDamageTimer <= diff)
{
- 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;
+ DoCast(m_creature, DUNGEON_MODE(SPELL_CRYSTALL_SPIKE_DAMAGE, H_SPELL_CRYSTALL_SPIKE_DAMAGE));
+ SpellCrystalSpikeDamageTimer = 10*IN_MILISECONDS;
+ } else SpellCrystalSpikeDamageTimer -= diff;
}
};
@@ -251,23 +242,23 @@ struct mob_crystalline_tanglerAI : public ScriptedAI
{
mob_crystalline_tanglerAI(Creature *c) : ScriptedAI(c) {}
- uint32 SPELL_ROOTS_Timer;
+ uint32 uiRootsTimer;
void Reset()
{
- SPELL_ROOTS_Timer = 1000;
+ uiRootsTimer = 1*IN_MILISECONDS;
}
void UpdateAI(const uint32 diff)
{
- if (SPELL_ROOTS_Timer <= diff)
+ if (uiRootsTimer <= diff)
{
if (m_creature->IsWithinDist(m_creature->getVictim(), 5.0f, false))
{
DoCast(m_creature->getVictim(), SPELL_ROOTS);
- SPELL_ROOTS_Timer = 15000;
+ uiRootsTimer = 15*IN_MILISECONDS;
}
- } else SPELL_ROOTS_Timer -=diff;
+ } else uiRootsTimer -= diff;
}
};
diff --git a/src/scripts/northrend/nexus/nexus/instance_nexus.cpp b/src/scripts/northrend/nexus/nexus/instance_nexus.cpp
index fd05f9c11ed..6e1732e0c2e 100644
--- a/src/scripts/northrend/nexus/nexus/instance_nexus.cpp
+++ b/src/scripts/northrend/nexus/nexus/instance_nexus.cpp
@@ -1,4 +1,5 @@
/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ * Copyright (C) 2008 - 2010 TrinityCore <http://www.trinitycore.org>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -14,13 +15,6 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* ScriptData
-SDName: Instance_Nexus
-SD%Complete:
-SDComment:
-SDCategory: The Nexus, The Nexus
-EndScriptData */
-
#include "ScriptedPch.h"
#include "nexus.h"
@@ -46,6 +40,7 @@ struct instance_nexus : public ScriptedInstance
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
Anomalus = 0;
+ Keristrasza = 0;
}
void OnCreatureCreate(Creature *pCreature, bool bAdd)
@@ -69,35 +64,30 @@ struct instance_nexus : public ScriptedInstance
// Alliance npcs are spawned by default, if you are alliance, you will fight against horde npcs.
case 26800:
{
- pCreature->setFaction(16);
if (TeamInInstance == ALLIANCE)
pCreature->UpdateEntry(26799, HORDE);
break;
}
case 26802:
{
- pCreature->setFaction(16);
if (TeamInInstance == ALLIANCE)
pCreature->UpdateEntry(26801, HORDE);
break;
}
case 26805:
{
- pCreature->setFaction(16);
if (TeamInInstance == ALLIANCE)
pCreature->UpdateEntry(26803, HORDE);
break;
}
case 27949:
{
- pCreature->setFaction(16);
if (TeamInInstance == ALLIANCE)
pCreature->UpdateEntry(27947, HORDE);
break;
}
case 26796:
{
- pCreature->setFaction(16);
if (TeamInInstance == ALLIANCE)
pCreature->UpdateEntry(26798, HORDE);
break;