aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Northrend
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2012-12-07 09:22:43 +0100
committerSpp <spp@jorge.gr>2012-12-07 09:22:43 +0100
commitfb2e5c3c5840a77452a2418805eabd01147a4346 (patch)
treea4490008845509814826b09f17ada5b2d9c9b405 /src/server/scripts/Northrend
parent4c78f667de319a9690493fddb690b57f940c862e (diff)
parent6ed36342a20d11657eda8473b59ee10cbe92a507 (diff)
Merge branch 'master' into 4.3.4
Conflicts: src/server/game/Conditions/ConditionMgr.cpp src/server/game/Conditions/ConditionMgr.h src/server/game/Entities/Player/Player.cpp src/server/game/Entities/Player/Player.h src/server/game/Entities/Unit/Unit.cpp src/server/game/Globals/ObjectMgr.cpp src/server/game/Handlers/ItemHandler.cpp src/server/game/Quests/QuestDef.cpp src/server/game/Quests/QuestDef.h src/server/game/Spells/Auras/SpellAuraEffects.cpp src/server/game/World/World.h src/server/scripts/Kalimdor/azshara.cpp src/server/scripts/Kalimdor/azuremyst_isle.cpp src/server/scripts/Kalimdor/darkshore.cpp src/server/scripts/Kalimdor/durotar.cpp src/server/scripts/Kalimdor/dustwallow_marsh.cpp src/server/scripts/Kalimdor/feralas.cpp src/server/scripts/Kalimdor/moonglade.cpp src/server/scripts/Kalimdor/silithus.cpp src/server/scripts/Kalimdor/stonetalon_mountains.cpp src/server/scripts/Kalimdor/tanaris.cpp src/server/scripts/Kalimdor/the_barrens.cpp src/server/scripts/Kalimdor/thousand_needles.cpp src/server/scripts/Spells/spell_generic.cpp
Diffstat (limited to 'src/server/scripts/Northrend')
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp23
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp25
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp119
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp19
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp23
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp20
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp21
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp78
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp58
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp19
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp18
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp262
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp20
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp106
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp72
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp28
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp26
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp24
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp3
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp3
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp17
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp20
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp40
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp16
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp25
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp59
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_noth.cpp38
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp21
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp589
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp51
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp16
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp20
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp23
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/commander_stoutbeard.cpp26
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp25
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp49
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp40
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp14
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp19
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp14
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp196
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp453
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp51
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp85
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp202
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp45
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp47
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp36
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp113
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp3
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp49
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp121
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp45
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp12
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp38
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h34
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp27
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp40
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp13
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp31
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp25
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp7
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp14
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp23
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_erekem.cpp20
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp28
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp51
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp20
-rw-r--r--src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp5
-rw-r--r--src/server/scripts/Northrend/VioletHold/violet_hold.cpp4
-rw-r--r--src/server/scripts/Northrend/borean_tundra.cpp676
-rw-r--r--src/server/scripts/Northrend/grizzly_hills.cpp77
-rw-r--r--src/server/scripts/Northrend/sholazar_basin.cpp52
-rw-r--r--src/server/scripts/Northrend/storm_peaks.cpp14
-rw-r--r--src/server/scripts/Northrend/zuldrak.cpp50
75 files changed, 2298 insertions, 2498 deletions
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
index 3bc91855d36..11ef00775d0 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
@@ -44,17 +44,12 @@ enum Creatures
// not in db
enum Yells
{
- SAY_INTRO = -1601010,
- SAY_AGGRO = -1601000,
- SAY_SLAY_1 = -1601001,
- SAY_SLAY_2 = -1601002,
- SAY_SLAY_3 = -1601003,
- SAY_LOCUST_1 = -1601005,
- SAY_LOCUST_2 = -1601006,
- SAY_LOCUST_3 = -1601007,
- SAY_SUBMERGE_1 = -1601008,
- SAY_SUBMERGE_2 = -1601009,
- SAY_DEATH = -1601004
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_LOCUST = 3,
+ SAY_SUBMERGE = 4,
+ SAY_INTRO = 5
};
enum
@@ -161,7 +156,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
DelayTimer = 0;
if (instance)
instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
@@ -338,7 +333,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
Summons.DespawnAll();
if (instance)
instance->SetData(DATA_ANUBARAK_EVENT, DONE);
@@ -348,7 +343,7 @@ public:
{
if (victim == me)
return;
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me);
+ Talk(SAY_SLAY);
}
void JustSummoned(Creature* summon)
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
index 1acc3b77a61..4c817fa9465 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
@@ -61,19 +61,12 @@ enum Mobs
enum Yells
{
- SAY_AGGRO = -1601011,
- SAY_SLAY_1 = -1601012,
- SAY_SLAY_2 = -1601013,
- SAY_DEATH = -1601014,
- //Not in db
- SAY_SEND_GROUP_1 = -1601020,
- SAY_SEND_GROUP_2 = -1601021,
- SAY_SEND_GROUP_3 = -1601022,
- SAY_SWARM_1 = -1601015,
- SAY_SWARM_2 = -1601016,
- SAY_PREFIGHT_1 = -1601017,
- SAY_PREFIGHT_2 = -1601018,
- SAY_PREFIGHT_3 = -1601019
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_SWARM = 3,
+ SAY_PREFIGHT = 4,
+ SAY_SEND_GROUP = 5
};
const Position SpawnPoint[] =
@@ -117,7 +110,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
Summon();
uiSummonTimer = 15*IN_MILLISECONDS;
@@ -180,7 +173,7 @@ public:
}
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_KRIKTHIR_THE_GATEWATCHER_EVENT, DONE);
@@ -191,7 +184,7 @@ public:
if (victim == me)
return;
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ Talk(SAY_SLAY);
}
void JustSummoned(Creature* summoned)
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
index e20b08c515e..6d4b4bc9379 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
@@ -23,30 +23,25 @@
#include "CellImpl.h"
#include "obsidian_sanctum.h"
-enum eEnums
+enum Enums
{
//Sartharion Yell
- SAY_SARTHARION_AGGRO = -1615018,
- SAY_SARTHARION_BERSERK = -1615019,
- SAY_SARTHARION_BREATH = -1615020,
- SAY_SARTHARION_CALL_SHADRON = -1615021,
- SAY_SARTHARION_CALL_TENEBRON = -1615022,
- SAY_SARTHARION_CALL_VESPERON = -1615023,
- SAY_SARTHARION_DEATH = -1615024,
- SAY_SARTHARION_SPECIAL_1 = -1615025,
- SAY_SARTHARION_SPECIAL_2 = -1615026,
- SAY_SARTHARION_SPECIAL_3 = -1615027,
- SAY_SARTHARION_SPECIAL_4 = -1615028,
- SAY_SARTHARION_SLAY_1 = -1615029,
- SAY_SARTHARION_SLAY_2 = -1615030,
- SAY_SARTHARION_SLAY_3 = -1615031,
-
- WHISPER_LAVA_CHURN = -1615032,
-
- WHISPER_SHADRON_DICIPLE = -1615008,
- WHISPER_VESPERON_DICIPLE = -1615041,
- WHISPER_HATCH_EGGS = -1615017,
- WHISPER_OPEN_PORTAL = -1615042, // whisper, shared by two dragons
+ SAY_SARTHARION_AGGRO = 0,
+ SAY_SARTHARION_BERSERK = 1,
+ SAY_SARTHARION_BREATH = 2,
+ SAY_SARTHARION_CALL_SHADRON = 3,
+ SAY_SARTHARION_CALL_TENEBRON = 4,
+ SAY_SARTHARION_CALL_VESPERON = 5,
+ SAY_SARTHARION_DEATH = 6,
+ SAY_SARTHARION_SPECIAL = 7,
+ SAY_SARTHARION_SLAY = 8,
+ WHISPER_LAVA_CHURN = 9,
+
+ WHISPER_HATCH_EGGS = 6,
+ WHISPER_OPEN_PORTAL = 6, // whisper, shared by two dragons
+
+ WHISPER_SHADRON_DICIPLE = 7,
+ WHISPER_VESPERON_DICIPLE = 7,
//Sartharion Spells
SPELL_BERSERK = 61632, // Increases the caster's attack speed by 150% and all damage it deals by 500% for 5 min.
@@ -357,7 +352,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_SARTHARION_AGGRO, me);
+ Talk(SAY_SARTHARION_AGGRO);
DoZoneInCombat();
if (instance)
@@ -369,7 +364,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_SARTHARION_DEATH, me);
+ Talk(SAY_SARTHARION_DEATH);
if (instance)
{
@@ -389,7 +384,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_SARTHARION_SLAY_1, SAY_SARTHARION_SLAY_2, SAY_SARTHARION_SLAY_3), me);
+ Talk(SAY_SARTHARION_SLAY);
}
// me->ResetLootMode() is called from Reset()
@@ -511,7 +506,7 @@ public:
break;
}
- DoScriptText(iTextId, me);
+ Talk(iTextId);
}
}
}
@@ -527,7 +522,7 @@ public:
if (!PlayerList.isEmpty())
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
if (i->getSource() && i->getSource()->isAlive())
- DoScriptText(WHISPER_LAVA_CHURN, me, i->getSource());
+ Talk(WHISPER_LAVA_CHURN, i->getSource()->GetGUID());
}
}
@@ -566,7 +561,7 @@ public:
if (!m_bIsBerserk && !HealthAbovePct(35)
&& ((pTene && pTene->isAlive()) || (pShad && pShad->isAlive()) || (pVesp && pVesp->isAlive())))
{
- DoScriptText(SAY_SARTHARION_BERSERK, me);
+ Talk(SAY_SARTHARION_BERSERK);
DoCast(me, SPELL_BERSERK);
m_bIsBerserk = true;
}
@@ -624,7 +619,7 @@ public:
// flame breath
if (m_uiFlameBreathTimer <= uiDiff)
{
- DoScriptText(SAY_SARTHARION_BREATH, me);
+ Talk(SAY_SARTHARION_BREATH);
DoCast(me->getVictim(), RAID_MODE(SPELL_FLAME_BREATH, SPELL_FLAME_BREATH_H));
m_uiFlameBreathTimer = urand(25000, 35000);
}
@@ -657,7 +652,7 @@ public:
CastLavaStrikeOnTarget(target);
if (urand(0, 5) == 0)
- DoScriptText(RAND(SAY_SARTHARION_SPECIAL_1, SAY_SARTHARION_SPECIAL_2, SAY_SARTHARION_SPECIAL_3), me);
+ Talk(SAY_SARTHARION_SPECIAL);
}
m_uiLavaStrikeTimer = (m_bIsSoftEnraged ? urand(1400, 2000) : urand(5000, 20000));
}
@@ -701,38 +696,32 @@ public:
enum TeneText
{
- SAY_TENEBRON_AGGRO = -1615009,
- SAY_TENEBRON_SLAY_1 = -1615010,
- SAY_TENEBRON_SLAY_2 = -1615011,
- SAY_TENEBRON_DEATH = -1615012,
- SAY_TENEBRON_BREATH = -1615013,
- SAY_TENEBRON_RESPOND = -1615014,
- SAY_TENEBRON_SPECIAL_1 = -1615015,
- SAY_TENEBRON_SPECIAL_2 = -1615016
+ SAY_TENEBRON_AGGRO = 0,
+ SAY_TENEBRON_SLAY = 1,
+ SAY_TENEBRON_DEATH = 2,
+ SAY_TENEBRON_BREATH = 3,
+ SAY_TENEBRON_RESPOND = 4,
+ SAY_TENEBRON_SPECIAL = 5
};
enum ShadText
{
- SAY_SHADRON_AGGRO = -1615000,
- SAY_SHADRON_SLAY_1 = -1615001,
- SAY_SHADRON_SLAY_2 = -1615002,
- SAY_SHADRON_DEATH = -1615003,
- SAY_SHADRON_BREATH = -1615004,
- SAY_SHADRON_RESPOND = -1615005,
- SAY_SHADRON_SPECIAL_1 = -1615006,
- SAY_SHADRON_SPECIAL_2 = -1615007
+ SAY_SHADRON_AGGRO = 0,
+ SAY_SHADRON_SLAY = 1,
+ SAY_SHADRON_DEATH = 2,
+ SAY_SHADRON_BREATH = 3,
+ SAY_SHADRON_RESPOND = 4,
+ SAY_SHADRON_SPECIAL = 5
};
enum VespText
{
- SAY_VESPERON_AGGRO = -1615033,
- SAY_VESPERON_SLAY_1 = -1615034,
- SAY_VESPERON_SLAY_2 = -1615035,
- SAY_VESPERON_DEATH = -1615036,
- SAY_VESPERON_BREATH = -1615037,
- SAY_VESPERON_RESPOND = -1615038,
- SAY_VESPERON_SPECIAL_1 = -1615039,
- SAY_VESPERON_SPECIAL_2 = -1615040
+ SAY_VESPERON_AGGRO = 0,
+ SAY_VESPERON_SLAY = 1,
+ SAY_VESPERON_DEATH = 2,
+ SAY_VESPERON_BREATH = 3,
+ SAY_VESPERON_RESPOND = 4,
+ SAY_VESPERON_SPECIAL = 5,
};
//to control each dragons common abilities
@@ -829,7 +818,7 @@ struct dummy_dragonAI : public ScriptedAI
if (!PlayerList.isEmpty())
{
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
- DoScriptText(iTextId, me, i->getSource());
+ Talk(iTextId, i->getSource()->GetGUID());
}
}
}
@@ -943,7 +932,7 @@ struct dummy_dragonAI : public ScriptedAI
break;
}
- DoScriptText(iTextId, me);
+ Talk(iTextId);
me->RemoveAurasDueToSpell(uiSpellId);
@@ -1019,13 +1008,13 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_TENEBRON_AGGRO, me);
+ Talk(SAY_TENEBRON_AGGRO);
DoZoneInCombat();
}
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_TENEBRON_SLAY_1, SAY_TENEBRON_SLAY_2), me);
+ Talk(SAY_TENEBRON_SLAY);
}
void UpdateAI(const uint32 uiDiff)
@@ -1060,7 +1049,7 @@ public:
// shadow breath
if (m_uiShadowBreathTimer <= uiDiff)
{
- DoScriptText(SAY_TENEBRON_BREATH, me);
+ Talk(SAY_TENEBRON_BREATH);
DoCast(me->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
m_uiShadowBreathTimer = urand(20000, 25000);
}
@@ -1114,13 +1103,13 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_SHADRON_AGGRO, me);
+ Talk(SAY_SHADRON_AGGRO);
DoZoneInCombat();
}
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_SHADRON_SLAY_1, SAY_SHADRON_SLAY_2), me);
+ Talk(SAY_SHADRON_SLAY);
}
void UpdateAI(const uint32 uiDiff)
@@ -1164,7 +1153,7 @@ public:
// shadow breath
if (m_uiShadowBreathTimer <= uiDiff)
{
- DoScriptText(SAY_SHADRON_BREATH, me);
+ Talk(SAY_SHADRON_BREATH);
DoCast(me->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
m_uiShadowBreathTimer = urand(20000, 25000);
}
@@ -1212,13 +1201,13 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_VESPERON_AGGRO, me);
+ Talk(SAY_VESPERON_AGGRO);
DoZoneInCombat();
}
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_VESPERON_SLAY_1, SAY_VESPERON_SLAY_2), me);
+ Talk(SAY_VESPERON_SLAY);
}
void UpdateAI(const uint32 uiDiff)
@@ -1259,7 +1248,7 @@ public:
// shadow breath
if (m_uiShadowBreathTimer <= uiDiff)
{
- DoScriptText(SAY_VESPERON_BREATH, me);
+ Talk(SAY_VESPERON_BREATH);
DoCast(me->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
m_uiShadowBreathTimer = urand(20000, 25000);
}
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
index 6ce56958d60..1ad776a0b46 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
@@ -36,12 +36,11 @@ enum Spells
//not in db
enum Yells
{
- SAY_AGGRO = -1600000,
- SAY_KILL = -1600001,
- SAY_DEATH = -1600002,
- SAY_NECRO_ADD = -1600003,
- SAY_REUBBLE_1 = -1600004,
- SAY_REUBBLE_2 = -1600005
+ SAY_AGGRO = 0,
+ SAY_KILL = 1,
+ SAY_DEATH = 2,
+ SAY_NECRO_ADD = 3,
+ SAY_REUBBLE = 4
};
enum Creatures
@@ -123,7 +122,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
Phase = PHASE_1;
uiCrystalHandlerTimer = 30*IN_MILLISECONDS;
uiTimer = 1*IN_MILLISECONDS;
@@ -159,7 +158,7 @@ public:
{
if (uiCrystalHandlerTimer <= diff)
{
- DoScriptText(SAY_NECRO_ADD, me);
+ Talk(SAY_NECRO_ADD);
Creature* pCrystalHandler = me->SummonCreature(CREATURE_CRYSTAL_HANDLER, CrystalHandlerSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20*IN_MILLISECONDS);
pCrystalHandler->GetMotionMaster()->MovePoint(0, AddDestinyPoint);
uiCrystalHandlerTimer = urand(20*IN_MILLISECONDS, 30*IN_MILLISECONDS);
@@ -181,7 +180,7 @@ public:
}
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_NOVOS_EVENT, DONE);
lSummons.DespawnAll();
@@ -191,7 +190,7 @@ public:
{
if (victim == me)
return;
- DoScriptText(SAY_KILL, me);
+ Talk(SAY_KILL);
}
void JustSummoned(Creature* summon)
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
index 79739280055..4cbabe2449a 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
@@ -44,14 +44,11 @@ enum Spells
enum Yells
{
- SAY_AGGRO = -1600011,
- SAY_KILL_1 = -1600012,
- SAY_KILL_2 = -1600013,
- SAY_FLESH_1 = -1600014,
- SAY_FLESH_2 = -1600015,
- SAY_SKELETON_1 = -1600016,
- SAY_SKELETON_2 = -1600017,
- SAY_DEATH = -1600018
+ SAY_AGGRO = 0,
+ SAY_KILL = 1,
+ SAY_FLESH = 2,
+ SAY_SKELETON = 3,
+ SAY_DEATH = 4
};
enum Models
{
@@ -104,7 +101,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_THARON_JA_EVENT, IN_PROGRESS);
@@ -150,7 +147,7 @@ public:
case GOING_FLESH:
if (uiPhaseTimer < diff)
{
- DoScriptText(RAND(SAY_FLESH_1, SAY_FLESH_2), me);
+ Talk(SAY_FLESH);
me->SetDisplayId(MODEL_FLESH);
std::list<Unit*> playerList;
@@ -200,7 +197,7 @@ public:
case GOING_SKELETAL:
if (uiPhaseTimer < diff)
{
- DoScriptText(RAND(SAY_SKELETON_1, SAY_SKELETON_2), me);
+ Talk(SAY_SKELETON);
me->DeMorph();
Phase = SKELETAL;
uiPhaseTimer = 20*IN_MILLISECONDS;
@@ -224,12 +221,12 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2), me);
+ Talk(SAY_KILL);
}
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
{
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
index d8c720b6f95..60001e048a3 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
@@ -39,11 +39,11 @@ enum Spells
enum Yells
{
- SAY_AGGRO = -1600006,
- SAY_KILL = -1600007,
- SAY_CONSUME = -1600008,
- SAY_EXPLODE = -1600009,
- SAY_DEATH = -1600010
+ SAY_AGGRO = 0,
+ SAY_KILL = 1,
+ SAY_CONSUME = 2,
+ SAY_EXPLODE = 3,
+ SAY_DEATH = 4
};
enum Creatures
@@ -102,7 +102,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_TROLLGORE_EVENT, IN_PROGRESS);
@@ -124,7 +124,7 @@ public:
if (uiConsumeTimer <= diff)
{
- DoScriptText(SAY_CONSUME, me);
+ Talk(SAY_CONSUME);
DoCast(SPELL_CONSUME);
uiConsumeTimer = 15*IN_MILLISECONDS;
} else uiConsumeTimer -= diff;
@@ -151,7 +151,7 @@ public:
if (uiExplodeCorpseTimer <= diff)
{
DoCast(SPELL_CORPSE_EXPLODE);
- DoScriptText(SAY_EXPLODE, me);
+ Talk(SAY_EXPLODE);
uiExplodeCorpseTimer = urand(15*IN_MILLISECONDS, 19*IN_MILLISECONDS);
} else uiExplodeCorpseTimer -= diff;
@@ -160,7 +160,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
lSummons.DespawnAll();
@@ -180,7 +180,7 @@ public:
{
if (victim == me)
return;
- DoScriptText(SAY_KILL, me);
+ Talk(SAY_KILL);
}
void JustSummoned(Creature* summon)
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
index b790ed518d5..1940ff4e2af 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
@@ -23,12 +23,11 @@
enum Yells
{
- SAY_AGGRO = -1632001,
- SAY_SLAY_1 = -1632002,
- SAY_SLAY_2 = -1632003,
- SAY_DEATH = -1632004,
- SAY_SOUL_STORM = -1632005,
- SAY_CORRUPT_SOUL = -1632006,
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_SOUL_STORM = 3,
+ SAY_CORRUPT_SOUL = 4,
};
enum Spells
@@ -98,7 +97,7 @@ class boss_bronjahm : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
me->RemoveAurasDueToSpell(SPELL_SOULSTORM_CHANNEL);
instance->SetBossState(DATA_BRONJAHM, IN_PROGRESS);
@@ -106,7 +105,7 @@ class boss_bronjahm : public CreatureScript
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
instance->SetBossState(DATA_BRONJAHM, DONE);
}
@@ -114,7 +113,7 @@ class boss_bronjahm : public CreatureScript
void KilledUnit(Unit* who)
{
if (who->GetTypeId() == TYPEID_PLAYER)
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ Talk(SAY_SLAY);
}
void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/)
@@ -163,13 +162,13 @@ class boss_bronjahm : public CreatureScript
case EVENT_CORRUPT_SOUL:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true))
{
- DoScriptText(SAY_CORRUPT_SOUL, me);
+ Talk(SAY_CORRUPT_SOUL);
DoCast(target, SPELL_CORRUPT_SOUL);
}
events.ScheduleEvent(EVENT_CORRUPT_SOUL, urand(25000, 35000), 0, PHASE_1);
break;
case EVENT_SOULSTORM:
- DoScriptText(SAY_SOUL_STORM, me);
+ Talk(SAY_SOUL_STORM);
me->CastSpell(me, SPELL_SOULSTORM_VISUAL, true);
me->CastSpell(me, SPELL_SOULSTORM, false);
break;
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
index 714e5df6444..248fe3c6eb0 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
@@ -29,40 +29,32 @@
enum Yells
{
- SAY_FACE_ANGER_AGGRO = -1632010,
- SAY_FACE_DESIRE_AGGRO = -1632011,
- SAY_FACE_ANGER_SLAY_1 = -1632012,
- SAY_FACE_SORROW_SLAY_1 = -1632013,
- SAY_FACE_DESIRE_SLAY_1 = -1632014,
- SAY_FACE_ANGER_SLAY_2 = -1632015,
- SAY_FACE_SORROW_SLAY_2 = -1632016,
- SAY_FACE_DESIRE_SLAY_2 = -1632017,
- SAY_FACE_SORROW_DEATH = -1632019,
- SAY_FACE_DESIRE_DEATH = -1632020,
- EMOTE_MIRRORED_SOUL = -1632021,
- EMOTE_UNLEASH_SOUL = -1632022,
- SAY_FACE_ANGER_UNLEASH_SOUL = -1632023,
- SAY_FACE_SORROW_UNLEASH_SOUL = -1632024,
- SAY_FACE_DESIRE_UNLEASH_SOUL = -1632025,
- EMOTE_WAILING_SOUL = -1632026,
- SAY_FACE_ANGER_WAILING_SOUL = -1632027,
- SAY_FACE_DESIRE_WAILING_SOUL = -1632028,
-
- SAY_JAINA_OUTRO = -1632029,
- SAY_SYLVANAS_OUTRO = -1632030,
+ SAY_FACE_AGGRO = 0,
+ SAY_FACE_ANGER_SLAY = 1,
+ SAY_FACE_SORROW_SLAY = 2,
+ SAY_FACE_DESIRE_SLAY = 3,
+ SAY_FACE_DEATH = 4,
+ EMOTE_MIRRORED_SOUL = 5,
+ EMOTE_UNLEASH_SOUL = 6,
+ SAY_FACE_UNLEASH_SOUL = 7,
+ EMOTE_WAILING_SOUL = 8,
+ SAY_FACE_WAILING_SOUL = 9,
+
+ SAY_JAINA_OUTRO = 0,
+ SAY_SYLVANAS_OUTRO = 0
};
enum Spells
{
- SPELL_PHANTOM_BLAST = 68982,
- H_SPELL_PHANTOM_BLAST = 70322,
- SPELL_MIRRORED_SOUL = 69051,
- SPELL_WELL_OF_SOULS = 68820,
- SPELL_UNLEASHED_SOULS = 68939,
- SPELL_WAILING_SOULS_STARTING = 68912, // Initial spell cast at begining of wailing souls phase
- SPELL_WAILING_SOULS_BEAM = 68875, // the beam visual
- SPELL_WAILING_SOULS = 68873, // the actual spell
- H_SPELL_WAILING_SOULS = 70324,
+ SPELL_PHANTOM_BLAST = 68982,
+ H_SPELL_PHANTOM_BLAST = 70322,
+ SPELL_MIRRORED_SOUL = 69051,
+ SPELL_WELL_OF_SOULS = 68820,
+ SPELL_UNLEASHED_SOULS = 68939,
+ SPELL_WAILING_SOULS_STARTING = 68912, // Initial spell cast at begining of wailing souls phase
+ SPELL_WAILING_SOULS_BEAM = 68875, // the beam visual
+ SPELL_WAILING_SOULS = 68873, // the actual spell
+ H_SPELL_WAILING_SOULS = 70324,
// 68871, 68873, 68875, 68876, 68899, 68912, 70324,
// 68899 trigger 68871
};
@@ -157,7 +149,7 @@ class boss_devourer_of_souls : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(RAND(SAY_FACE_ANGER_AGGRO, SAY_FACE_DESIRE_AGGRO), me);
+ Talk(SAY_FACE_AGGRO);
if (!me->FindNearestCreature(NPC_CRUCIBLE_OF_SOULS, 60)) // Prevent double spawn
instance->instance->SummonCreature(NPC_CRUCIBLE_OF_SOULS, CrucibleSummonPos);
@@ -196,20 +188,20 @@ class boss_devourer_of_souls : public CreatureScript
switch (me->GetDisplayId())
{
case DISPLAY_ANGER:
- textId = RAND(SAY_FACE_ANGER_SLAY_1, SAY_FACE_ANGER_SLAY_2);
+ textId = SAY_FACE_ANGER_SLAY;
break;
case DISPLAY_SORROW:
- textId = RAND(SAY_FACE_SORROW_SLAY_1, SAY_FACE_SORROW_SLAY_2);
+ textId = SAY_FACE_SORROW_SLAY;
break;
case DISPLAY_DESIRE:
- textId = RAND(SAY_FACE_DESIRE_SLAY_1, SAY_FACE_DESIRE_SLAY_2);
+ textId = SAY_FACE_DESIRE_SLAY;
break;
default:
break;
}
if (textId)
- DoScriptText(textId, me);
+ Talk(textId);
}
void JustDied(Unit* /*killer*/)
@@ -218,7 +210,7 @@ class boss_devourer_of_souls : public CreatureScript
Position spawnPoint = {5618.139f, 2451.873f, 705.854f, 0};
- DoScriptText(RAND(SAY_FACE_SORROW_DEATH, SAY_FACE_DESIRE_DEATH), me);
+ Talk(SAY_FACE_DEATH);
instance->SetData(DATA_DEVOURER_EVENT, DONE);
@@ -234,9 +226,9 @@ class boss_devourer_of_souls : public CreatureScript
{
summon->GetMotionMaster()->MovePoint(0, outroPositions[i].movePosition);
if (summon->GetEntry() == NPC_JAINA_PART2)
- DoScriptText(SAY_JAINA_OUTRO, summon);
+ summon->AI()->Talk(SAY_JAINA_OUTRO);
else if (summon->GetEntry() == NPC_SYLVANAS_PART2)
- DoScriptText(SAY_SYLVANAS_OUTRO, summon);
+ summon->AI()->Talk(SAY_SYLVANAS_OUTRO);
}
}
}
@@ -279,7 +271,7 @@ class boss_devourer_of_souls : public CreatureScript
{
mirroredSoulTarget = target->GetGUID();
DoCast(target, SPELL_MIRRORED_SOUL);
- DoScriptText(EMOTE_MIRRORED_SOUL, me);
+ Talk(EMOTE_MIRRORED_SOUL);
}
events.ScheduleEvent(EVENT_MIRRORED_SOUL, urand(15000, 30000));
break;
@@ -292,8 +284,8 @@ class boss_devourer_of_souls : public CreatureScript
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_UNLEASHED_SOULS);
me->SetDisplayId(DISPLAY_SORROW);
- DoScriptText(RAND(SAY_FACE_ANGER_UNLEASH_SOUL, SAY_FACE_SORROW_UNLEASH_SOUL, SAY_FACE_DESIRE_UNLEASH_SOUL), me);
- DoScriptText(EMOTE_UNLEASH_SOUL, me);
+ Talk(SAY_FACE_UNLEASH_SOUL);
+ Talk(EMOTE_UNLEASH_SOUL);
events.ScheduleEvent(EVENT_UNLEASHED_SOULS, 30000);
events.ScheduleEvent(EVENT_FACE_ANGER, 5000);
break;
@@ -303,8 +295,8 @@ class boss_devourer_of_souls : public CreatureScript
case EVENT_WAILING_SOULS:
me->SetDisplayId(DISPLAY_DESIRE);
- DoScriptText(RAND(SAY_FACE_ANGER_WAILING_SOUL, SAY_FACE_DESIRE_WAILING_SOUL), me);
- DoScriptText(EMOTE_WAILING_SOUL, me);
+ Talk(SAY_FACE_WAILING_SOUL);
+ Talk(EMOTE_WAILING_SOUL);
DoCast(me, SPELL_WAILING_SOULS_STARTING);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
index 2f89d3bd503..895efd84580 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
@@ -42,21 +42,21 @@ enum Events
enum Yells
{
- SAY_JAINA_INTRO_1 = -1632040,
- SAY_JAINA_INTRO_2 = -1632041,
- SAY_JAINA_INTRO_3 = -1632042,
- SAY_JAINA_INTRO_4 = -1632043,
- SAY_JAINA_INTRO_5 = -1632044,
- SAY_JAINA_INTRO_6 = -1632045,
- SAY_JAINA_INTRO_7 = -1632046,
- SAY_JAINA_INTRO_8 = -1632047,
-
- SAY_SYLVANAS_INTRO_1 = -1632050,
- SAY_SYLVANAS_INTRO_2 = -1632051,
- SAY_SYLVANAS_INTRO_3 = -1632052,
- SAY_SYLVANAS_INTRO_4 = -1632053,
- SAY_SYLVANAS_INTRO_5 = -1632054,
- SAY_SYLVANAS_INTRO_6 = -1632055,
+ SAY_JAINA_INTRO_1 = 0,
+ SAY_JAINA_INTRO_2 = 1,
+ SAY_JAINA_INTRO_3 = 2,
+ SAY_JAINA_INTRO_4 = 3,
+ SAY_JAINA_INTRO_5 = 4,
+ SAY_JAINA_INTRO_6 = 5,
+ SAY_JAINA_INTRO_7 = 6,
+ SAY_JAINA_INTRO_8 = 7,
+
+ SAY_SYLVANAS_INTRO_1 = 0,
+ SAY_SYLVANAS_INTRO_2 = 1,
+ SAY_SYLVANAS_INTRO_3 = 2,
+ SAY_SYLVANAS_INTRO_4 = 3,
+ SAY_SYLVANAS_INTRO_5 = 4,
+ SAY_SYLVANAS_INTRO_6 = 5,
};
enum eSylvanas
@@ -120,32 +120,32 @@ public:
switch (events.ExecuteEvent())
{
case EVENT_INTRO_1:
- DoScriptText(SAY_SYLVANAS_INTRO_1, me);
+ Talk(SAY_SYLVANAS_INTRO_1);
events.ScheduleEvent(EVENT_INTRO_2, 11500);
break;
case EVENT_INTRO_2:
- DoScriptText(SAY_SYLVANAS_INTRO_2, me);
+ Talk(SAY_SYLVANAS_INTRO_2);
events.ScheduleEvent(EVENT_INTRO_3, 10500);
break;
case EVENT_INTRO_3:
- DoScriptText(SAY_SYLVANAS_INTRO_3, me);
+ Talk(SAY_SYLVANAS_INTRO_3);
events.ScheduleEvent(EVENT_INTRO_4, 9500);
break;
case EVENT_INTRO_4:
- DoScriptText(SAY_SYLVANAS_INTRO_4, me);
+ Talk(SAY_SYLVANAS_INTRO_4);
events.ScheduleEvent(EVENT_INTRO_5, 10500);
break;
case EVENT_INTRO_5:
- DoScriptText(SAY_SYLVANAS_INTRO_5, me);
+ Talk(SAY_SYLVANAS_INTRO_5);
events.ScheduleEvent(EVENT_INTRO_6, 9500);
break;
case EVENT_INTRO_6:
- DoScriptText(SAY_SYLVANAS_INTRO_6, me);
+ Talk(SAY_SYLVANAS_INTRO_6);
// End of Intro
phase = PHASE_NORMAL;
break;
@@ -246,42 +246,42 @@ public:
switch (events.ExecuteEvent())
{
case EVENT_INTRO_1:
- DoScriptText(SAY_JAINA_INTRO_1, me);
+ Talk(SAY_JAINA_INTRO_1);
events.ScheduleEvent(EVENT_INTRO_2, 8000);
break;
case EVENT_INTRO_2:
- DoScriptText(SAY_JAINA_INTRO_2, me);
+ Talk(SAY_JAINA_INTRO_2);
events.ScheduleEvent(EVENT_INTRO_3, 8500);
break;
case EVENT_INTRO_3:
- DoScriptText(SAY_JAINA_INTRO_3, me);
+ Talk(SAY_JAINA_INTRO_3);
events.ScheduleEvent(EVENT_INTRO_4, 8000);
break;
case EVENT_INTRO_4:
- DoScriptText(SAY_JAINA_INTRO_4, me);
+ Talk(SAY_JAINA_INTRO_4);
events.ScheduleEvent(EVENT_INTRO_5, 10000);
break;
case EVENT_INTRO_5:
- DoScriptText(SAY_JAINA_INTRO_5, me);
+ Talk(SAY_JAINA_INTRO_5);
events.ScheduleEvent(EVENT_INTRO_6, 8000);
break;
case EVENT_INTRO_6:
- DoScriptText(SAY_JAINA_INTRO_6, me);
+ Talk(SAY_JAINA_INTRO_6);
events.ScheduleEvent(EVENT_INTRO_7, 12000);
break;
case EVENT_INTRO_7:
- DoScriptText(SAY_JAINA_INTRO_7, me);
+ Talk(SAY_JAINA_INTRO_7);
events.ScheduleEvent(EVENT_INTRO_8, 8000);
break;
case EVENT_INTRO_8:
- DoScriptText(SAY_JAINA_INTRO_8, me);
+ Talk(SAY_JAINA_INTRO_8);
// End of Intro
phase = PHASE_NORMAL;
break;
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp
index 4df13d32bf8..bb3028518ec 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp
@@ -21,12 +21,11 @@
enum Yells
{
- SAY_AGGRO = -1668050,
- SAY_SLAY_1 = -1668051,
- SAY_SLAY_2 = -1668052,
- SAY_DEATH = -1668053,
- SAY_IMPENDING_DESPAIR = -1668054,
- SAY_DEFILING_HORROR = -1668055,
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_IMPENDING_DESPAIR = 3,
+ SAY_DEFILING_HORROR = 4,
};
enum Spells
@@ -74,7 +73,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_FALRIC_EVENT, IN_PROGRESS);
@@ -85,7 +84,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_FALRIC_EVENT, DONE);
@@ -93,7 +92,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ Talk(SAY_SLAY);
}
void UpdateAI(const uint32 diff)
@@ -116,7 +115,7 @@ public:
case EVENT_IMPENDING_DESPAIR:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
{
- DoScriptText(SAY_IMPENDING_DESPAIR, me);
+ Talk(SAY_IMPENDING_DESPAIR);
DoCast(target, SPELL_IMPENDING_DESPAIR);
}
events.ScheduleEvent(EVENT_IMPENDING_DESPAIR, 13000);
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp
index 8334a199791..697e8cfb664 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp
@@ -21,12 +21,10 @@
enum Yells
{
- SAY_AGGRO = -1668060,
- SAY_SLAY_1 = -1668061,
- SAY_SLAY_2 = -1668062,
- SAY_DEATH = -1668063,
- SAY_CORRUPTED_FLESH_1 = -1668064,
- SAY_CORRUPTED_FLESH_2 = -1668065,
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_CORRUPTED_FLESH = 3
};
enum Spells
@@ -70,7 +68,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_MARWYN_EVENT, IN_PROGRESS);
@@ -82,7 +80,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_MARWYN_EVENT, DONE);
@@ -90,7 +88,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ Talk(SAY_SLAY);
}
void UpdateAI(const uint32 diff)
@@ -115,7 +113,7 @@ public:
events.ScheduleEvent(EVENT_WELL_OF_CORRUPTION, 13000);
break;
case EVENT_CORRUPTED_FLESH:
- DoScriptText(RAND(SAY_CORRUPTED_FLESH_1, SAY_CORRUPTED_FLESH_2), me);
+ Talk(SAY_CORRUPTED_FLESH);
DoCast(SPELL_CORRUPTED_FLESH);
events.ScheduleEvent(EVENT_CORRUPTED_FLESH, 20000);
break;
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
index 4f80fd746ee..d4e3a9e677d 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
@@ -23,52 +23,54 @@
enum Yells
{
- SAY_JAINA_INTRO_1 = -1668001,
- SAY_JAINA_INTRO_2 = -1668002,
- SAY_JAINA_INTRO_3 = -1668003,
- SAY_JAINA_INTRO_4 = -1668004,
- SAY_UTHER_INTRO_A2_1 = -1668005,
- SAY_JAINA_INTRO_5 = -1668006,
- SAY_UTHER_INTRO_A2_2 = -1668007,
- SAY_JAINA_INTRO_6 = -1668008,
- SAY_UTHER_INTRO_A2_3 = -1668009,
- SAY_JAINA_INTRO_7 = -1668010,
- SAY_UTHER_INTRO_A2_4 = -1668011,
- SAY_JAINA_INTRO_8 = -1668012,
- SAY_UTHER_INTRO_A2_5 = -1668013,
- SAY_JAINA_INTRO_9 = -1668014,
- SAY_UTHER_INTRO_A2_6 = -1668015,
- SAY_UTHER_INTRO_A2_7 = -1668016,
- SAY_JAINA_INTRO_10 = -1668017,
- SAY_UTHER_INTRO_A2_8 = -1668018,
- SAY_JAINA_INTRO_11 = -1668019,
- SAY_UTHER_INTRO_A2_9 = -1668020,
-
- SAY_SYLVANAS_INTRO_1 = -1668021,
- SAY_SYLVANAS_INTRO_2 = -1668022,
- SAY_SYLVANAS_INTRO_3 = -1668023,
- SAY_UTHER_INTRO_H2_1 = -1668024,
- SAY_SYLVANAS_INTRO_4 = -1668025,
- SAY_UTHER_INTRO_H2_2 = -1668026,
- SAY_SYLVANAS_INTRO_5 = -1668027,
- SAY_UTHER_INTRO_H2_3 = -1668028,
- SAY_SYLVANAS_INTRO_6 = -1668029,
- SAY_UTHER_INTRO_H2_4 = -1668030,
- SAY_SYLVANAS_INTRO_7 = -1668031,
- SAY_UTHER_INTRO_H2_5 = -1668032,
- SAY_UTHER_INTRO_H2_6 = -1668033,
- SAY_SYLVANAS_INTRO_8 = -1668034,
- SAY_UTHER_INTRO_H2_7 = -1668035,
-
- SAY_LK_INTRO_1 = -1668036,
- SAY_LK_INTRO_2 = -1668037,
- SAY_LK_INTRO_3 = -1668038,
- SAY_FALRIC_INTRO_1 = -1668039,
- SAY_MARWYN_INTRO_1 = -1668040,
- SAY_FALRIC_INTRO_2 = -1668041,
-
- SAY_JAINA_INTRO_END = -1668042,
- SAY_SYLVANAS_INTRO_END = -1668043,
+ SAY_JAINA_INTRO_1 = 0,
+ SAY_JAINA_INTRO_2 = 1,
+ SAY_JAINA_INTRO_3 = 2,
+ SAY_JAINA_INTRO_4 = 3,
+ SAY_JAINA_INTRO_5 = 4,
+ SAY_JAINA_INTRO_6 = 5,
+ SAY_JAINA_INTRO_7 = 6,
+ SAY_JAINA_INTRO_8 = 7,
+ SAY_JAINA_INTRO_9 = 8,
+ SAY_JAINA_INTRO_10 = 9,
+ SAY_JAINA_INTRO_11 = 10,
+ SAY_JAINA_INTRO_END = 11,
+
+ SAY_SYLVANAS_INTRO_1 = 0,
+ SAY_SYLVANAS_INTRO_2 = 1,
+ SAY_SYLVANAS_INTRO_3 = 2,
+ SAY_SYLVANAS_INTRO_4 = 3,
+ SAY_SYLVANAS_INTRO_5 = 4,
+ SAY_SYLVANAS_INTRO_6 = 5,
+ SAY_SYLVANAS_INTRO_7 = 6,
+ SAY_SYLVANAS_INTRO_8 = 7,
+ SAY_SYLVANAS_INTRO_END = 8,
+
+ SAY_UTHER_INTRO_A2_1 = 0,
+ SAY_UTHER_INTRO_A2_2 = 1,
+ SAY_UTHER_INTRO_A2_3 = 2,
+ SAY_UTHER_INTRO_A2_4 = 3,
+ SAY_UTHER_INTRO_A2_5 = 4,
+ SAY_UTHER_INTRO_A2_6 = 5,
+ SAY_UTHER_INTRO_A2_7 = 6,
+ SAY_UTHER_INTRO_A2_8 = 7,
+ SAY_UTHER_INTRO_A2_9 = 8,
+ SAY_UTHER_INTRO_H2_1 = 9,
+ SAY_UTHER_INTRO_H2_2 = 10,
+ SAY_UTHER_INTRO_H2_3 = 11,
+ SAY_UTHER_INTRO_H2_4 = 12,
+ SAY_UTHER_INTRO_H2_5 = 13,
+ SAY_UTHER_INTRO_H2_6 = 14,
+ SAY_UTHER_INTRO_H2_7 = 15,
+
+ SAY_LK_INTRO_1 = 0,
+ SAY_LK_INTRO_2 = 1,
+ SAY_LK_INTRO_3 = 2,
+
+ SAY_FALRIC_INTRO_1 = 5,
+ SAY_FALRIC_INTRO_2 = 6,
+
+ SAY_MARWYN_INTRO_1 = 0
};
enum Events
@@ -214,8 +216,8 @@ public:
}
InstanceScript* instance;
- uint64 uiUther;
- uint64 uiLichKing;
+ uint64 utherGUID;
+ uint64 lichkingGUID;
EventMap events;
@@ -223,8 +225,8 @@ public:
{
events.Reset();
- uiUther = 0;
- uiLichKing = 0;
+ utherGUID = 0;
+ lichkingGUID = 0;
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
me->SetStandState(UNIT_STAND_STATE_STAND);
@@ -260,11 +262,11 @@ public:
// A2 Intro Events
case EVENT_INTRO_A2_1:
- DoScriptText(SAY_JAINA_INTRO_3, me);
+ Talk(SAY_JAINA_INTRO_3);
events.ScheduleEvent(EVENT_INTRO_A2_2, 5000);
break;
case EVENT_INTRO_A2_2:
- DoScriptText(SAY_JAINA_INTRO_4, me);
+ Talk(SAY_JAINA_INTRO_4);
events.ScheduleEvent(EVENT_INTRO_A2_3, 10000);
break;
case EVENT_INTRO_A2_3:
@@ -274,197 +276,197 @@ public:
break;
case EVENT_INTRO_A2_4:
// spawn UTHER during speach 2
- if (Creature* pUther = me->SummonCreature(NPC_UTHER, UtherSpawnPos, TEMPSUMMON_MANUAL_DESPAWN))
+ if (Creature* uther = me->SummonCreature(NPC_UTHER, UtherSpawnPos, TEMPSUMMON_MANUAL_DESPAWN))
{
- pUther->GetMotionMaster()->MoveIdle();
- pUther->SetReactState(REACT_PASSIVE); // be sure he will not aggro arthas
- uiUther = pUther->GetGUID();
+ uther->GetMotionMaster()->MoveIdle();
+ uther->SetReactState(REACT_PASSIVE); // be sure he will not aggro arthas
+ utherGUID = uther->GetGUID();
}
events.ScheduleEvent(EVENT_INTRO_A2_5, 2000);
break;
case EVENT_INTRO_A2_5:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_A2_1, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_A2_1);
events.ScheduleEvent(EVENT_INTRO_A2_6, 3000);
break;
case EVENT_INTRO_A2_6:
- DoScriptText(SAY_JAINA_INTRO_5, me);
+ Talk(SAY_JAINA_INTRO_5);
events.ScheduleEvent(EVENT_INTRO_A2_7, 6000);
break;
case EVENT_INTRO_A2_7:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_A2_2, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_A2_2);
events.ScheduleEvent(EVENT_INTRO_A2_8, 6500);
break;
case EVENT_INTRO_A2_8:
- DoScriptText(SAY_JAINA_INTRO_6, me);
+ Talk(SAY_JAINA_INTRO_6);
events.ScheduleEvent(EVENT_INTRO_A2_9, 2000);
break;
case EVENT_INTRO_A2_9:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_A2_3, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_A2_3);
events.ScheduleEvent(EVENT_INTRO_A2_10, 9000);
break;
case EVENT_INTRO_A2_10:
- DoScriptText(SAY_JAINA_INTRO_7, me);
+ Talk(SAY_JAINA_INTRO_7);
events.ScheduleEvent(EVENT_INTRO_A2_11, 5000);
break;
case EVENT_INTRO_A2_11:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_A2_4, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_A2_4);
events.ScheduleEvent(EVENT_INTRO_A2_12, 11000);
break;
case EVENT_INTRO_A2_12:
- DoScriptText(SAY_JAINA_INTRO_8, me);
+ Talk(SAY_JAINA_INTRO_8);
events.ScheduleEvent(EVENT_INTRO_A2_13, 4000);
break;
case EVENT_INTRO_A2_13:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_A2_5, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_A2_5);
events.ScheduleEvent(EVENT_INTRO_A2_14, 12500);
break;
case EVENT_INTRO_A2_14:
- DoScriptText(SAY_JAINA_INTRO_9, me);
+ Talk(SAY_JAINA_INTRO_9);
events.ScheduleEvent(EVENT_INTRO_A2_15, 10000);
break;
case EVENT_INTRO_A2_15:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_A2_6, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_A2_6);
events.ScheduleEvent(EVENT_INTRO_A2_16, 22000);
break;
case EVENT_INTRO_A2_16:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_A2_7, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_A2_7);
events.ScheduleEvent(EVENT_INTRO_A2_17, 4000);
break;
case EVENT_INTRO_A2_17:
- DoScriptText(SAY_JAINA_INTRO_10, me);
+ Talk(SAY_JAINA_INTRO_10);
events.ScheduleEvent(EVENT_INTRO_A2_18, 2000);
break;
case EVENT_INTRO_A2_18:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
{
- pUther->HandleEmoteCommand(EMOTE_ONESHOT_NO);
- DoScriptText(SAY_UTHER_INTRO_A2_8, pUther);
+ uther->HandleEmoteCommand(EMOTE_ONESHOT_NO);
+ uther->AI()->Talk(SAY_UTHER_INTRO_A2_8);
}
events.ScheduleEvent(EVENT_INTRO_A2_19, 11000);
break;
case EVENT_INTRO_A2_19:
- DoScriptText(SAY_JAINA_INTRO_11, me);
+ Talk(SAY_JAINA_INTRO_11);
events.ScheduleEvent(EVENT_INTRO_LK_1, 2000);
break;
// H2 Intro Events
case EVENT_INTRO_H2_1:
- DoScriptText(SAY_SYLVANAS_INTRO_1, me);
+ Talk(SAY_SYLVANAS_INTRO_1);
events.ScheduleEvent(EVENT_INTRO_H2_2, 8000);
break;
case EVENT_INTRO_H2_2:
- DoScriptText(SAY_SYLVANAS_INTRO_2, me);
+ Talk(SAY_SYLVANAS_INTRO_2);
events.ScheduleEvent(EVENT_INTRO_H2_3, 6000);
break;
case EVENT_INTRO_H2_3:
- DoScriptText(SAY_SYLVANAS_INTRO_3, me);
+ Talk(SAY_SYLVANAS_INTRO_3);
// TODO: she's doing some kind of spell casting emote
events.ScheduleEvent(EVENT_INTRO_H2_4, 6000);
break;
case EVENT_INTRO_H2_4:
// spawn UTHER during speach 2
- if (Creature* pUther = me->SummonCreature(NPC_UTHER, UtherSpawnPos, TEMPSUMMON_MANUAL_DESPAWN))
+ if (Creature* uther = me->SummonCreature(NPC_UTHER, UtherSpawnPos, TEMPSUMMON_MANUAL_DESPAWN))
{
- pUther->GetMotionMaster()->MoveIdle();
- pUther->SetReactState(REACT_PASSIVE); // be sure he will not aggro arthas
- uiUther = pUther->GetGUID();
+ uther->GetMotionMaster()->MoveIdle();
+ uther->SetReactState(REACT_PASSIVE); // be sure he will not aggro arthas
+ utherGUID = uther->GetGUID();
}
events.ScheduleEvent(EVENT_INTRO_H2_5, 2000);
break;
case EVENT_INTRO_H2_5:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_H2_1, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_H2_1);
events.ScheduleEvent(EVENT_INTRO_H2_6, 11000);
break;
case EVENT_INTRO_H2_6:
- DoScriptText(SAY_SYLVANAS_INTRO_4, me);
+ Talk(SAY_SYLVANAS_INTRO_4);
events.ScheduleEvent(EVENT_INTRO_H2_7, 3000);
break;
case EVENT_INTRO_H2_7:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_H2_2, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_H2_2);
events.ScheduleEvent(EVENT_INTRO_H2_8, 6000);
break;
case EVENT_INTRO_H2_8:
- DoScriptText(SAY_SYLVANAS_INTRO_5, me);
+ Talk(SAY_SYLVANAS_INTRO_5);
events.ScheduleEvent(EVENT_INTRO_H2_9, 5000);
break;
case EVENT_INTRO_H2_9:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_H2_3, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_H2_3);
events.ScheduleEvent(EVENT_INTRO_H2_10, 19000);
break;
case EVENT_INTRO_H2_10:
- DoScriptText(SAY_SYLVANAS_INTRO_6, me);
+ Talk(SAY_SYLVANAS_INTRO_6);
events.ScheduleEvent(EVENT_INTRO_H2_11, 1500);
break;
case EVENT_INTRO_H2_11:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_H2_4, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_H2_4);
events.ScheduleEvent(EVENT_INTRO_H2_12, 19500);
break;
case EVENT_INTRO_H2_12:
- DoScriptText(SAY_SYLVANAS_INTRO_7, me);
+ Talk(SAY_SYLVANAS_INTRO_7);
events.ScheduleEvent(EVENT_INTRO_H2_13, 2000);
break;
case EVENT_INTRO_H2_13:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
{
- pUther->HandleEmoteCommand(EMOTE_ONESHOT_NO);
- DoScriptText(SAY_UTHER_INTRO_H2_5, pUther);
+ uther->HandleEmoteCommand(EMOTE_ONESHOT_NO);
+ uther->AI()->Talk(SAY_UTHER_INTRO_H2_5);
}
events.ScheduleEvent(EVENT_INTRO_H2_14, 12000);
break;
case EVENT_INTRO_H2_14:
- if (Creature* pUther = me->GetCreature(*me, uiUther))
- DoScriptText(SAY_UTHER_INTRO_H2_6, pUther);
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
+ uther->AI()->Talk(SAY_UTHER_INTRO_H2_6);
events.ScheduleEvent(EVENT_INTRO_H2_15, 8000);
break;
case EVENT_INTRO_H2_15:
- DoScriptText(SAY_SYLVANAS_INTRO_8, me);
+ Talk(SAY_SYLVANAS_INTRO_8);
events.ScheduleEvent(EVENT_INTRO_LK_1, 2000);
break;
// Remaining Intro Events common for both faction
case EVENT_INTRO_LK_1:
// Spawn LK in front of door, and make him move to the sword.
- if (Creature* pLichKing = me->SummonCreature(NPC_LICH_KING_EVENT, LichKingSpawnPos, TEMPSUMMON_MANUAL_DESPAWN))
+ if (Creature* lichking = me->SummonCreature(NPC_LICH_KING_EVENT, LichKingSpawnPos, TEMPSUMMON_MANUAL_DESPAWN))
{
- pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveThronePos);
- pLichKing->SetReactState(REACT_PASSIVE);
- uiLichKing = pLichKing->GetGUID();
+ lichking->GetMotionMaster()->MovePoint(0, LichKingMoveThronePos);
+ lichking->SetReactState(REACT_PASSIVE);
+ lichkingGUID = lichking->GetGUID();
}
- if (Creature* pUther = me->GetCreature(*me, uiUther))
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
{
if (instance->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE)
- DoScriptText(SAY_UTHER_INTRO_A2_9, pUther);
+ uther->AI()->Talk(SAY_UTHER_INTRO_A2_9);
else
- DoScriptText(SAY_UTHER_INTRO_H2_7, pUther);
+ uther->AI()->Talk(SAY_UTHER_INTRO_H2_7);
}
events.ScheduleEvent(EVENT_INTRO_LK_2, 11000);
break;
case EVENT_INTRO_LK_2:
- if (Creature* pLichKing = me->GetCreature(*me, uiLichKing))
- DoScriptText(SAY_LK_INTRO_1, pLichKing);
+ if (Creature* lichking = me->GetCreature(*me, lichkingGUID))
+ lichking->AI()->Talk(SAY_LK_INTRO_1);
events.ScheduleEvent(EVENT_INTRO_LK_3, 2000);
break;
case EVENT_INTRO_LK_3:
// The Lich King banishes Uther to the abyss.
- if (Creature* pUther = me->GetCreature(*me, uiUther))
+ if (Creature* uther = me->GetCreature(*me, utherGUID))
{
- pUther->DisappearAndDie();
- uiUther = 0;
+ uther->DisappearAndDie();
+ utherGUID = 0;
}
// He steps forward and removes the runeblade from the heap of skulls.
@@ -473,8 +475,8 @@ public:
break;
case EVENT_INTRO_LK_4:
- if (Creature* pLichKing = me->GetCreature(*me, uiLichKing))
- DoScriptText(SAY_LK_INTRO_2, pLichKing);
+ if (Creature* lichking = me->GetCreature(*me, lichkingGUID))
+ lichking->AI()->Talk(SAY_LK_INTRO_2);
events.ScheduleEvent(EVENT_INTRO_LK_5, 10000);
break;
@@ -485,41 +487,41 @@ public:
if (Creature* pMarwyn = me->GetCreature(*me, instance->GetData64(DATA_MARWYN)))
pMarwyn->SetVisible(true);
- if (Creature* pLichKing = me->GetCreature(*me, uiLichKing))
+ if (Creature* lichking = me->GetCreature(*me, lichkingGUID))
{
- pLichKing->GetMotionMaster()->MovePoint(0, LichKingSpawnPos);
- DoScriptText(SAY_LK_INTRO_3, pLichKing);
+ lichking->GetMotionMaster()->MovePoint(0, LichKingSpawnPos);
+ lichking->AI()->Talk(SAY_LK_INTRO_3);
}
events.ScheduleEvent(EVENT_INTRO_LK_6, 8000);
break;
case EVENT_INTRO_LK_6:
- if (Creature* pFalric = me->GetCreature(*me, instance->GetData64(DATA_FALRIC)))
- DoScriptText(SAY_FALRIC_INTRO_1, pFalric);
+ if (Creature* falric = me->GetCreature(*me, instance->GetData64(DATA_FALRIC)))
+ falric->AI()->Talk(SAY_FALRIC_INTRO_1);
events.ScheduleEvent(EVENT_INTRO_LK_7, 2000);
break;
case EVENT_INTRO_LK_7:
- if (Creature* pMarwyn = me->GetCreature(*me, instance->GetData64(DATA_MARWYN)))
- DoScriptText(SAY_MARWYN_INTRO_1, pMarwyn);
+ if (Creature* marwyn = me->GetCreature(*me, instance->GetData64(DATA_MARWYN)))
+ marwyn->AI()->Talk(SAY_MARWYN_INTRO_1);
events.ScheduleEvent(EVENT_INTRO_LK_8, 2000);
break;
case EVENT_INTRO_LK_8:
- if (Creature* pFalric = me->GetCreature(*me, instance->GetData64(DATA_FALRIC)))
- DoScriptText(SAY_FALRIC_INTRO_2, pFalric);
+ if (Creature* falric = me->GetCreature(*me, instance->GetData64(DATA_FALRIC)))
+ falric->AI()->Talk(SAY_FALRIC_INTRO_2);
events.ScheduleEvent(EVENT_INTRO_LK_9, 5000);
break;
case EVENT_INTRO_LK_9:
if (instance->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE)
- DoScriptText(SAY_JAINA_INTRO_END, me);
+ Talk(SAY_JAINA_INTRO_END);
else
- DoScriptText(SAY_SYLVANAS_INTRO_END, me);
+ Talk(SAY_SYLVANAS_INTRO_END);
me->GetMotionMaster()->MovePoint(0, LichKingSpawnPos);
// TODO: Loralen/Koreln shall run also
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
index 8d9269aa70f..e8557482420 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
@@ -23,15 +23,15 @@
enum Yells
{
- SAY_AGGRO = 0,
- SAY_PHASE2 = 1,
- SAY_PHASE3 = 2,
- SAY_DEATH = 3,
- SAY_SLAY = 4,
- SAY_THROW_SARONITE = 5,
- SAY_CAST_DEEP_FREEZE = 6,
-
- SAY_TYRANNUS_DEATH = -1658007, // todo
+ SAY_AGGRO = 0,
+ SAY_PHASE2 = 1,
+ SAY_PHASE3 = 2,
+ SAY_DEATH = 3,
+ SAY_SLAY = 4,
+ SAY_THROW_SARONITE = 5,
+ SAY_CAST_DEEP_FREEZE = 6,
+
+ SAY_TYRANNUS_DEATH = 0
};
enum Spells
@@ -129,7 +129,7 @@ enum Events
Talk(SAY_DEATH);
if (Creature* tyrannus = me->GetCreature(*me, instance->GetData64(DATA_TYRANNUS)))
- DoScriptText(SAY_TYRANNUS_DEATH, tyrannus);
+ tyrannus->AI()->Talk(SAY_TYRANNUS_DEATH);
instance->SetBossState(DATA_GARFROST, DONE);
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
index 41cfc300958..ed196d2cd0c 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
@@ -48,33 +48,30 @@ enum Spells
enum Yells
{
// Krick
- SAY_KRICK_AGGRO = -1658010,
- SAY_KRICK_SLAY_1 = -1658011,
- SAY_KRICK_SLAY_2 = -1658012,
- SAY_KRICK_BARRAGE_1 = -1658013,
- SAY_KRICK_BARRAGE_2 = -1658014,
- SAY_KRICK_POISON_NOVA = -1658015,
- SAY_KRICK_CHASE_1 = -1658016,
- SAY_KRICK_CHASE_2 = -1658017,
- SAY_KRICK_CHASE_3 = -1658018,
+ SAY_KRICK_AGGRO = 0,
+ SAY_KRICK_SLAY = 1,
+ SAY_KRICK_BARRAGE_1 = 2,
+ SAY_KRICK_BARRAGE_2 = 3,
+ SAY_KRICK_POISON_NOVA = 4,
+ SAY_KRICK_CHASE = 5,
+ SAY_KRICK_OUTRO_1 = 6,
+ SAY_KRICK_OUTRO_3 = 7,
+ SAY_KRICK_OUTRO_5 = 8,
+ SAY_KRICK_OUTRO_8 = 9,
// Ick
- SAY_ICK_POISON_NOVA = -1658020,
- SAY_ICK_CHASE_1 = -1658021,
+ SAY_ICK_POISON_NOVA = 0,
+ SAY_ICK_CHASE_1 = 1,
// OUTRO
- SAY_KRICK_OUTRO_1 = -1658030,
- SAY_JAYNA_OUTRO_2 = -1658031,
- SAY_SYLVANAS_OUTRO_2 = -1658032,
- SAY_KRICK_OUTRO_3 = -1658033,
- SAY_JAYNA_OUTRO_4 = -1658034,
- SAY_SYLVANAS_OUTRO_4 = -1658035,
- SAY_KRICK_OUTRO_5 = -1658036,
- SAY_TYRANNUS_OUTRO_7 = -1658037,
- SAY_KRICK_OUTRO_8 = -1658038,
- SAY_TYRANNUS_OUTRO_9 = -1658039,
- SAY_JAYNA_OUTRO_10 = -1658040,
- SAY_SYLVANAS_OUTRO_10 = -1658041,
+ SAY_JAYNA_OUTRO_2 = 0,
+ SAY_JAYNA_OUTRO_4 = 1,
+ SAY_JAYNA_OUTRO_10 = 2,
+ SAY_SYLVANAS_OUTRO_2 = 0,
+ SAY_SYLVANAS_OUTRO_4 = 1,
+ SAY_SYLVANAS_OUTRO_10 = 2,
+ SAY_TYRANNUS_OUTRO_7 = 1,
+ SAY_TYRANNUS_OUTRO_9 = 2,
};
enum Events
@@ -167,7 +164,7 @@ class boss_ick : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
if (Creature* krick = GetKrick())
- DoScriptText(SAY_KRICK_AGGRO, krick);
+ krick->AI()->Talk(SAY_KRICK_AGGRO);
events.ScheduleEvent(EVENT_MIGHTY_KICK, 20000);
events.ScheduleEvent(EVENT_TOXIC_WASTE, 5000);
@@ -250,8 +247,8 @@ class boss_ick : public CreatureScript
case EVENT_EXPLOSIVE_BARRAGE:
if (Creature* krick = GetKrick())
{
- DoScriptText(SAY_KRICK_BARRAGE_1, krick);
- DoScriptText(SAY_KRICK_BARRAGE_2, krick);
+ krick->AI()->Talk(SAY_KRICK_BARRAGE_1);
+ krick->AI()->Talk(SAY_KRICK_BARRAGE_2);
krick->CastSpell(krick, SPELL_EXPLOSIVE_BARRAGE_KRICK, true);
DoCast(me, SPELL_EXPLOSIVE_BARRAGE_ICK);
}
@@ -259,14 +256,14 @@ class boss_ick : public CreatureScript
break;
case EVENT_POISON_NOVA:
if (Creature* krick = GetKrick())
- DoScriptText(SAY_KRICK_POISON_NOVA, krick);
+ krick->AI()->Talk(SAY_KRICK_POISON_NOVA);
- DoScriptText(SAY_ICK_POISON_NOVA, me);
+ Talk(SAY_ICK_POISON_NOVA);
DoCast(me, SPELL_POISON_NOVA);
break;
case EVENT_PURSUIT:
if (Creature* krick = GetKrick())
- DoScriptText(RAND(SAY_KRICK_CHASE_1, SAY_KRICK_CHASE_2, SAY_KRICK_CHASE_3), krick);
+ krick->AI()->Talk(SAY_KRICK_CHASE);
DoCast(me, SPELL_PURSUIT);
break;
default:
@@ -328,7 +325,7 @@ class boss_krick : public CreatureScript
if (victim == me)
return;
- DoScriptText(RAND(SAY_KRICK_SLAY_1, SAY_KRICK_SLAY_2), me);
+ Talk(SAY_KRICK_SLAY);
}
void JustSummoned(Creature* summon)
@@ -362,7 +359,7 @@ class boss_krick : public CreatureScript
if (type != POINT_MOTION_TYPE || id != POINT_KRICK_INTRO)
return;
- DoScriptText(SAY_KRICK_OUTRO_1, me);
+ Talk(SAY_KRICK_OUTRO_1);
_phase = PHASE_OUTRO;
_events.Reset();
_events.ScheduleEvent(EVENT_OUTRO_1, 1000);
@@ -404,28 +401,28 @@ class boss_krick : public CreatureScript
jainaOrSylvanas->SetFacingToObject(me);
me->SetFacingToObject(jainaOrSylvanas);
if (_instanceScript->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE)
- DoScriptText(SAY_JAYNA_OUTRO_2, jainaOrSylvanas);
+ jainaOrSylvanas->AI()->Talk(SAY_JAYNA_OUTRO_2);
else
- DoScriptText(SAY_SYLVANAS_OUTRO_2, jainaOrSylvanas);
+ jainaOrSylvanas->AI()->Talk(SAY_SYLVANAS_OUTRO_2);
}
_events.ScheduleEvent(EVENT_OUTRO_3, 5000);
break;
case EVENT_OUTRO_3:
- DoScriptText(SAY_KRICK_OUTRO_3, me);
+ Talk(SAY_KRICK_OUTRO_3);
_events.ScheduleEvent(EVENT_OUTRO_4, 18000);
break;
case EVENT_OUTRO_4:
if (Creature* jainaOrSylvanas = ObjectAccessor::GetCreature(*me, _outroNpcGUID))
{
if (_instanceScript->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE)
- DoScriptText(SAY_JAYNA_OUTRO_4, jainaOrSylvanas);
+ jainaOrSylvanas->AI()->Talk(SAY_JAYNA_OUTRO_4);
else
- DoScriptText(SAY_SYLVANAS_OUTRO_4, jainaOrSylvanas);
+ jainaOrSylvanas->AI()->Talk(SAY_SYLVANAS_OUTRO_4);
}
_events.ScheduleEvent(EVENT_OUTRO_5, 5000);
break;
case EVENT_OUTRO_5:
- DoScriptText(SAY_KRICK_OUTRO_5, me);
+ Talk(SAY_KRICK_OUTRO_5);
_events.ScheduleEvent(EVENT_OUTRO_6, 1000);
break;
case EVENT_OUTRO_6:
@@ -439,7 +436,7 @@ class boss_krick : public CreatureScript
break;
case EVENT_OUTRO_7:
if (Creature* tyrannus = ObjectAccessor::GetCreature(*me, _tyrannusGUID))
- DoScriptText(SAY_TYRANNUS_OUTRO_7, tyrannus);
+ tyrannus->AI()->Talk(SAY_TYRANNUS_OUTRO_7);
_events.ScheduleEvent(EVENT_OUTRO_8, 5000);
break;
case EVENT_OUTRO_8:
@@ -450,7 +447,7 @@ class boss_krick : public CreatureScript
_events.ScheduleEvent(EVENT_OUTRO_9, 2000);
break;
case EVENT_OUTRO_9:
- DoScriptText(SAY_KRICK_OUTRO_8, me);
+ Talk(SAY_KRICK_OUTRO_8);
// TODO: Tyrannus starts killing Krick.
// there shall be some visual spell effect
if (Creature* tyrannus = ObjectAccessor::GetCreature(*me, _tyrannusGUID))
@@ -472,16 +469,16 @@ class boss_krick : public CreatureScript
break;
case EVENT_OUTRO_12:
if (Creature* tyrannus = ObjectAccessor::GetCreature(*me, _tyrannusGUID))
- DoScriptText(SAY_TYRANNUS_OUTRO_9, tyrannus);
+ tyrannus->AI()->Talk(SAY_TYRANNUS_OUTRO_9);
_events.ScheduleEvent(EVENT_OUTRO_13, 2000);
break;
case EVENT_OUTRO_13:
if (Creature* jainaOrSylvanas = ObjectAccessor::GetCreature(*me, _outroNpcGUID))
{
if (_instanceScript->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE)
- DoScriptText(SAY_JAYNA_OUTRO_10, jainaOrSylvanas);
+ jainaOrSylvanas->AI()->Talk(SAY_JAYNA_OUTRO_10);
else
- DoScriptText(SAY_SYLVANAS_OUTRO_10, jainaOrSylvanas);
+ jainaOrSylvanas->AI()->Talk(SAY_SYLVANAS_OUTRO_10);
}
// End of OUTRO. for now...
_events.ScheduleEvent(EVENT_OUTRO_END, 3000);
@@ -636,19 +633,18 @@ class spell_krick_pursuit : public SpellScriptLoader
void HandleScriptEffect(SpellEffIndex /*effIndex*/)
{
- if (GetCaster()->GetTypeId() != TYPEID_UNIT)
- return;
-
- Unit* caster = GetCaster();
- CreatureAI* ickAI = caster->ToCreature()->AI();
- if (Unit* target = ickAI->SelectTarget(SELECT_TARGET_RANDOM, 0, 200.0f, true))
- {
- DoScriptText(SAY_ICK_CHASE_1, caster, target);
- caster->AddAura(GetSpellInfo()->Id, target);
- CAST_AI(boss_ick::boss_ickAI, ickAI)->SetTempThreat(caster->getThreatManager().getThreat(target));
- caster->AddThreat(target, float(GetEffectValue()));
- target->AddThreat(caster, float(GetEffectValue()));
- }
+ if (GetCaster())
+ if (Creature* ick = GetCaster()->ToCreature())
+ {
+ if (Unit* target = ick->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, 200.0f, true))
+ {
+ ick->AI()->Talk(SAY_ICK_CHASE_1, target->GetGUID());
+ ick->AddAura(GetSpellInfo()->Id, target);
+ CAST_AI(boss_ick::boss_ickAI, ick->AI())->SetTempThreat(ick->getThreatManager().getThreat(target));
+ ick->AddThreat(target, float(GetEffectValue()));
+ target->AddThreat(ick, float(GetEffectValue()));
+ }
+ }
}
void Register()
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
index 44d9230a8d2..969a3621e8e 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
@@ -25,32 +25,36 @@
enum Yells
{
- SAY_AMBUSH_1 = -1658050,
- SAY_AMBUSH_2 = -1658051,
- SAY_GAUNTLET_START = -1658052,
- SAY_TYRANNUS_INTRO_1 = -1658053,
- SAY_GORKUN_INTRO_2 = -1658054,
- SAY_TYRANNUS_INTRO_3 = -1658055,
-
- SAY_AGGRO = -1658056,
- SAY_SLAY_1 = -1658057,
- SAY_SLAY_2 = -1658058,
- SAY_DEATH = -1658059,
- SAY_MARK_RIMEFANG_1 = -1658060,
- SAY_MARK_RIMEFANG_2 = -1658061,
- SAY_DARK_MIGHT_1 = -1658062,
- SAY_DARK_MIGHT_2 = -1658063,
-
- SAY_GORKUN_OUTRO_1 = -1658064,
- SAY_GORKUN_OUTRO_2 = -1658065,
- SAY_JAYNA_OUTRO_3 = -1658066,
- SAY_SYLVANAS_OUTRO_3 = -1658067,
- SAY_JAYNA_OUTRO_4 = -1658068,
- SAY_SYLVANAS_OUTRO_4 = -1658069,
- SAY_JAYNA_OUTRO_5 = -1658070,
+ //Gorkun
+ SAY_GORKUN_INTRO_2 = 0,
+ SAY_GORKUN_OUTRO_1 = 1,
+ SAY_GORKUN_OUTRO_2 = 2,
+
+ //Tyrannus
+ SAY_AMBUSH_1 = 3,
+ SAY_AMBUSH_2 = 4,
+ SAY_GAUNTLET_START = 5,
+ SAY_TYRANNUS_INTRO_1 = 6,
+ SAY_TYRANNUS_INTRO_3 = 7,
+ SAY_AGGRO = 8,
+ SAY_SLAY = 9,
+ SAY_DEATH = 10,
+ SAY_MARK_RIMEFANG_1 = 11,
+ SAY_MARK_RIMEFANG_2 = 12,
+ SAY_DARK_MIGHT_1 = 13,
+ SAY_DARK_MIGHT_2 = 14,
+
+ //Jaina
+ SAY_JAYNA_OUTRO_3 = 3,
+ SAY_JAYNA_OUTRO_4 = 4,
+ SAY_JAYNA_OUTRO_5 = 5,
+
+ //Sylvanas
+ SAY_SYLVANAS_OUTRO_3 = 3,
+ SAY_SYLVANAS_OUTRO_4 = 4
};
-enum Spells
+enum Spelsl
{
SPELL_OVERLORD_BRAND = 69172,
SPELL_OVERLORD_BRAND_HEAL = 69190,
@@ -156,7 +160,7 @@ class boss_tyrannus : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
}
void AttackStart(Unit* victim)
@@ -180,12 +184,12 @@ class boss_tyrannus : public CreatureScript
void KilledUnit(Unit* victim)
{
if (victim->GetTypeId() == TYPEID_PLAYER)
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
instance->SetBossState(DATA_TYRANNUS, DONE);
// Prevent corpse despawning
@@ -201,7 +205,7 @@ class boss_tyrannus : public CreatureScript
{
if (actionId == ACTION_START_INTRO)
{
- DoScriptText(SAY_TYRANNUS_INTRO_1, me);
+ Talk(SAY_TYRANNUS_INTRO_1);
events.SetPhase(PHASE_INTRO);
events.ScheduleEvent(EVENT_INTRO_1, 14000, 0, PHASE_INTRO);
events.ScheduleEvent(EVENT_INTRO_2, 22000, 0, PHASE_INTRO);
@@ -223,10 +227,10 @@ class boss_tyrannus : public CreatureScript
switch (eventId)
{
case EVENT_INTRO_1:
- //DoScriptText(SAY_GORKUN_INTRO_2, pGorkunOrVictus);
+ //Talk(SAY_GORKUN_INTRO_2, pGorkunOrVictus);
break;
case EVENT_INTRO_2:
- DoScriptText(SAY_TYRANNUS_INTRO_3, me);
+ Talk(SAY_TYRANNUS_INTRO_3);
break;
case EVENT_INTRO_3:
me->ExitVehicle();
@@ -254,16 +258,16 @@ class boss_tyrannus : public CreatureScript
events.ScheduleEvent(EVENT_UNHOLY_POWER, 1000);
break;
case EVENT_UNHOLY_POWER:
- DoScriptText(SAY_DARK_MIGHT_1, me);
- DoScriptText(SAY_DARK_MIGHT_2, me);
+ Talk(SAY_DARK_MIGHT_1);
+ Talk(SAY_DARK_MIGHT_2);
DoCast(me, SPELL_UNHOLY_POWER);
events.ScheduleEvent(EVENT_FORCEFUL_SMASH, urand(40000, 48000));
break;
case EVENT_MARK_OF_RIMEFANG:
- DoScriptText(SAY_MARK_RIMEFANG_1, me);
+ Talk(SAY_MARK_RIMEFANG_1);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true))
{
- DoScriptText(SAY_MARK_RIMEFANG_2, me, target);
+ Talk(SAY_MARK_RIMEFANG_2, target->GetGUID());
DoCast(target, SPELL_MARK_OF_RIMEFANG);
}
events.ScheduleEvent(EVENT_MARK_OF_RIMEFANG, urand(24000, 26000));
diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
index 595331d99d7..a7933fed046 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
@@ -38,16 +38,12 @@ enum Spells
//Yells
enum Yells
{
- SAY_AGGRO = -1604000,
- SAY_SLAY_1 = -1604001,
- SAY_SLAY_2 = -1604002,
- SAY_SLAY_3 = -1604003,
- SAY_DEATH = -1604004,
- SAY_SUMMON_RHINO_1 = -1604005,
- SAY_SUMMON_RHINO_2 = -1604006,
- SAY_SUMMON_RHINO_3 = -1604007,
- SAY_TRANSFORM_1 = -1604008, //Phase change
- SAY_TRANSFORM_2 = -1604009
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_SUMMON_RHINO = 3,
+ SAY_TRANSFORM_1 = 4,
+ SAY_TRANSFORM_2 = 5
};
enum Displays
@@ -125,7 +121,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_GAL_DARAH_EVENT, IN_PROGRESS);
@@ -146,7 +142,7 @@ public:
me->SetDisplayId(DISPLAY_RHINO);
Phase = RHINO;
uiPhaseCounter = 0;
- DoScriptText(SAY_TRANSFORM_1, me);
+ Talk(SAY_TRANSFORM_1);
uiTransformationTimer = 5*IN_MILLISECONDS;
bStartOfTransformation = true;
me->ClearUnitState(UNIT_STATE_STUNNED|UNIT_STATE_ROOT);
@@ -169,7 +165,7 @@ public:
if (uiStampedeTimer <= diff)
{
DoCast(me, SPELL_STAMPEDE);
- DoScriptText(RAND(SAY_SUMMON_RHINO_1, SAY_SUMMON_RHINO_2, SAY_SUMMON_RHINO_3), me);
+ Talk(SAY_SUMMON_RHINO);
uiStampedeTimer = 15*IN_MILLISECONDS;
} else uiStampedeTimer -= diff;
@@ -189,7 +185,7 @@ public:
me->SetDisplayId(DISPLAY_TROLL);
Phase = TROLL;
uiPhaseCounter = 0;
- DoScriptText(SAY_TRANSFORM_2, me);
+ Talk(SAY_TRANSFORM_2);
uiTransformationTimer = 9*IN_MILLISECONDS;
bStartOfTransformation = true;
me->ClearUnitState(UNIT_STATE_STUNNED|UNIT_STATE_ROOT);
@@ -268,7 +264,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_GAL_DARAH_EVENT, DONE);
@@ -279,7 +275,7 @@ public:
if (victim == me)
return;
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me);
+ Talk(SAY_SLAY);
}
};
diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
index 45c55f7ec9b..d5e10aedd70 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
@@ -34,14 +34,12 @@ enum eSpells
enum eSays
{
- SAY_AGGRO = -1604010,
- //SAY_SLAY_1 = -1604011, // not in db
- SAY_SLAY_2 = -1604012,
- SAY_SLAY_3 = -1604013,
- SAY_DEATH = -1604014,
- SAY_TRANSFORM = -1604015,
- SAY_QUAKE = -1604016,
- EMOTE_TRANSFORM = -1604017
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_TRANSFORM = 3,
+ SAY_QUAKE = 4,
+ EMOTE_TRANSFORM = 5
};
#define DATA_LESS_RABI 1
@@ -86,7 +84,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
DoCast(me, SPELL_MOJO_FRENZY, true);
if (instance)
@@ -107,7 +105,7 @@ public:
if (uiGroundTremorTimer <= uiDiff)
{
- DoScriptText(SAY_QUAKE, me);
+ Talk(SAY_QUAKE);
if (bPhase)
DoCast(me->getVictim(), SPELL_QUAKE, true);
else
@@ -135,8 +133,8 @@ public:
if (!bPhase && uiTransformationTImer <= uiDiff)
{
- DoScriptText(EMOTE_TRANSFORM, me);
- DoScriptText(SAY_TRANSFORM, me);
+ Talk(EMOTE_TRANSFORM);
+ Talk(SAY_TRANSFORM);
DoCast(me, SPELL_TRANSFORMATION, false);
uiTransformationTImer = 10*IN_MILLISECONDS;
} else uiTransformationTImer -= uiDiff;
@@ -154,7 +152,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_MOORABI_EVENT, DONE);
@@ -165,7 +163,7 @@ public:
if (victim == me)
return;
- DoScriptText(RAND(SAY_SLAY_2, SAY_SLAY_3), me);
+ Talk(SAY_SLAY);
}
};
diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
index f35228d44d9..cdbce68e337 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
@@ -35,13 +35,12 @@ enum Spells
//Yell
enum Yells
{
- SAY_AGGRO = -1604017,
- SAY_SLAY_1 = -1604018,
- SAY_SLAY_2 = -1604019,
- SAY_SLAY_3 = -1604020,
- SAY_DEATH = -1604021,
- SAY_SUMMON_SNAKES = -1604022,
- SAY_SUMMON_CONSTRICTORS = -1604023
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_SUMMON_SNAKES = 3,
+ SAY_SUMMON_CONSTRICTORS = 4,
+ EMOTE_NOVA = 5
};
//Creatures
@@ -117,7 +116,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_SLAD_RAN_EVENT, IN_PROGRESS);
@@ -132,6 +131,7 @@ public:
if (uiPoisonNovaTimer <= diff)
{
DoCast(me->getVictim(), SPELL_POISON_NOVA);
+ Talk(EMOTE_NOVA);
uiPoisonNovaTimer = 15*IN_MILLISECONDS;
} else uiPoisonNovaTimer -= diff;
@@ -163,13 +163,13 @@ public:
if (uiPhase == 0 && HealthBelowPct(30))
{
- DoScriptText(SAY_SUMMON_SNAKES, me);
+ Talk(SAY_SUMMON_SNAKES);
uiPhase = 1;
}
if (uiPhase == 1 && HealthBelowPct(25))
{
- DoScriptText(SAY_SUMMON_CONSTRICTORS, me);
+ Talk(SAY_SUMMON_CONSTRICTORS);
uiPhase = 2;
}
@@ -178,7 +178,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
lSummons.DespawnAll();
if (instance)
@@ -187,7 +187,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me);
+ Talk(SAY_SLAY);
}
void JustSummoned(Creature* summoned)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index 0d092ec86b2..2b240bc93d8 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -37,6 +37,7 @@ enum Texts
SAY_WIPE = 9,
SAY_BERSERK = 10,
SAY_DEATH = 11,
+ EMOTE_BERSERK_RAID = 12
};
enum Spells
@@ -336,7 +337,7 @@ class boss_blood_queen_lana_thel : public CreatureScript
switch (eventId)
{
case EVENT_BERSERK:
- DoScriptText(EMOTE_GENERIC_BERSERK_RAID, me);
+ Talk(EMOTE_BERSERK_RAID);
Talk(SAY_BERSERK);
DoCast(me, SPELL_BERSERK);
break;
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index a12a38b2f62..96cabfed918 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -36,6 +36,7 @@ enum Texts
// A flaw of mortality...
SAY_BERSERK = 9, // Enough! I tire of these games!
SAY_DEATH = 10, // Free...at last...
+ EMOTE_BERSERK_RAID = 11
};
enum Spells
@@ -440,7 +441,7 @@ class boss_sindragosa : public CreatureScript
switch (eventId)
{
case EVENT_BERSERK:
- DoScriptText(EMOTE_GENERIC_BERSERK_RAID, me);
+ Talk(EMOTE_BERSERK_RAID);
Talk(SAY_BERSERK);
DoCast(me, SPELL_BERSERK);
break;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
index 8901a61e79d..61ce8817b17 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
@@ -19,11 +19,14 @@
#include "ScriptedCreature.h"
#include "naxxramas.h"
-#define SAY_GREET RAND(-1533000, -1533004, -1533005, -1533006, -1533007)
-#define SAY_AGGRO RAND(-1533001, -1533002, -1533003)
-#define SAY_SLAY -1533008
+enum Anubrekhan
+{
+ SAY_AGGRO = 0,
+ SAY_GREET = 1,
+ SAY_SLAY = 2,
-#define MOB_CRYPT_GUARD 16573
+ MOB_CRYPT_GUARD = 16573
+};
const Position GuardSummonPos = {3333.72f, -3476.30f, 287.1f, 6.2801f};
@@ -97,7 +100,7 @@ public:
if (victim->GetTypeId() == TYPEID_PLAYER)
victim->CastSpell(victim, SPELL_SUMMON_CORPSE_SCARABS_PLR, true, NULL, NULL, me->GetGUID());
- DoScriptText(SAY_SLAY, me);
+ Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/)
@@ -111,7 +114,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_IMPALE, urand(10000, 20000));
events.ScheduleEvent(EVENT_LOCUST, 90000);
events.ScheduleEvent(EVENT_BERSERK, 600000);
@@ -124,7 +127,7 @@ public:
{
if (!hasTaunted && me->IsWithinDistInMap(who, 60.0f) && who->GetTypeId() == TYPEID_PLAYER)
{
- DoScriptText(SAY_GREET, me);
+ Talk(SAY_GREET);
hasTaunted = true;
}
ScriptedAI::MoveInLineOfSight(who);
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
index a75f87e91af..58db1d9caea 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
@@ -22,14 +22,10 @@
enum Yells
{
- SAY_GREET = -1533009,
- SAY_AGGRO_1 = -1533010,
- SAY_AGGRO_2 = -1533011,
- SAY_AGGRO_3 = -1533012,
- SAY_AGGRO_4 = -1533013,
- SAY_SLAY_1 = -1533014,
- SAY_SLAY_2 = -1533015,
- SAY_DEATH = -1533016
+ SAY_GREET = 0,
+ SAY_AGGRO = 1,
+ SAY_SLAY = 2,
+ SAY_DEATH = 3
};
enum Spells
@@ -71,7 +67,7 @@ class boss_faerlina : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
- DoScriptText(RAND(SAY_AGGRO_1, SAY_AGGRO_2, SAY_AGGRO_3, SAY_AGGRO_4), me);
+ Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_POISON, urand(10000, 15000));
events.ScheduleEvent(EVENT_FIRE, urand(6000, 18000));
events.ScheduleEvent(EVENT_FRENZY, urand(60000, 80000));
@@ -88,7 +84,7 @@ class boss_faerlina : public CreatureScript
{
if (!_introDone && who->GetTypeId() == TYPEID_PLAYER)
{
- DoScriptText(SAY_GREET, me);
+ Talk(SAY_GREET);
_introDone = true;
}
@@ -98,13 +94,13 @@ class boss_faerlina : public CreatureScript
void KilledUnit(Unit* /*victim*/)
{
if (!urand(0, 2))
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/)
{
_JustDied();
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
}
void SpellHit(Unit* caster, SpellInfo const* spell)
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
index 29a0a11af9b..7785044e7d1 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
@@ -73,17 +73,14 @@ const uint32 SPELL_SECONDARY_H[]= {0, 57464, 0, 57465};
const uint32 SPELL_PUNISH[] = {0, 57381, 0, 57377};
#define SPELL_BERSERK 26662
-// used by 16063, 16064, 16065, 30549, but signed for 16063
-const int32 SAY_AGGRO[] = {-1533051, -1533044, -1533065, -1533058};
-const int32 SAY_TAUNT[3][4] ={ {-1533052, -1533045, -1533071, -1533059},
- {-1533053, -1533046, -1533072, -1533060},
- {-1533054, -1533047, -1533073, -1533061}, };
-const int32 SAY_SPECIAL[] = {-1533055, -1533048, -1533070, -1533062};
-const int32 SAY_SLAY[] = {-1533056, -1533049, -1533068, -1533063};
-const int32 SAY_DEATH[] = {-1533057, -1533050, -1533074, -1533064};
-
-#define SAY_BARON_AGGRO RAND(-1533065, -1533066, -1533067)
-#define SAY_BARON_SLAY RAND(-1533068, -1533069)
+enum FourHorsemen
+{
+ SAY_AGGRO = 0,
+ SAY_TAUNT = 1,
+ SAY_SPECIAL = 2,
+ SAY_SLAY = 3,
+ SAY_DEATH = 4
+};
class boss_four_horsemen : public CreatureScript
{
@@ -295,12 +292,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
if (!(rand()%5))
- {
- if (id == HORSEMEN_BARON)
- DoScriptText(SAY_BARON_SLAY, me);
- else
- DoScriptText(SAY_SLAY[id], me);
- }
+ Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/)
@@ -321,17 +313,13 @@ public:
instance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, 59450);
}
- DoScriptText(SAY_DEATH[id], me);
+ Talk(SAY_DEATH);
}
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
-
- if (id == HORSEMEN_BARON)
- DoScriptText(SAY_BARON_AGGRO, me);
- else
- DoScriptText(SAY_AGGRO[id], me);
+ Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_MARK, 15000);
events.ScheduleEvent(EVENT_CAST, 20000+rand()%5000);
@@ -360,13 +348,13 @@ public:
{
case EVENT_MARK:
if (!(rand()%5))
- DoScriptText(SAY_SPECIAL[id], me);
+ Talk(SAY_SPECIAL);
DoCastAOE(SPELL_MARK[id]);
events.ScheduleEvent(EVENT_MARK, 15000);
break;
case EVENT_CAST:
if (!(rand()%5))
- DoScriptText(SAY_TAUNT[rand()%3][id], me);
+ Talk(SAY_TAUNT);
if (caster)
{
@@ -379,7 +367,7 @@ public:
events.ScheduleEvent(EVENT_CAST, 15000);
break;
case EVENT_BERSERK:
- DoScriptText(SAY_SPECIAL[id], me);
+ Talk(SAY_SPECIAL);
DoCast(me, EVENT_BERSERK);
break;
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
index d335d36e112..14043f00939 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
@@ -24,10 +24,10 @@
enum Yells
{
- SAY_SPEECH = -1533040,
- SAY_KILL = -1533041,
- SAY_DEATH = -1533042,
- SAY_TELEPORT = -1533043
+ SAY_SPEECH = 0,
+ SAY_KILL = 1,
+ SAY_DEATH = 2,
+ SAY_TELEPORT = 3
};
//Gothik
@@ -209,7 +209,7 @@ class boss_gothik : public CreatureScript
waveCount = 0;
events.ScheduleEvent(EVENT_SUMMON, 30000);
DoTeleportTo(PosPlatform);
- DoScriptText(SAY_SPEECH, me);
+ Talk(SAY_SPEECH);
if (instance)
instance->SetData(DATA_GOTHIK_GATE, GO_STATE_READY);
}
@@ -239,7 +239,7 @@ class boss_gothik : public CreatureScript
void KilledUnit(Unit* /*victim*/)
{
if (!(rand()%5))
- DoScriptText(SAY_KILL, me);
+ Talk(SAY_KILL);
}
void JustDied(Unit* /*killer*/)
@@ -247,7 +247,7 @@ class boss_gothik : public CreatureScript
LiveTriggerGUID.clear();
DeadTriggerGUID.clear();
_JustDied();
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE);
}
@@ -452,7 +452,7 @@ class boss_gothik : public CreatureScript
else
{
phaseTwo = true;
- DoScriptText(SAY_TELEPORT, me);
+ Talk(SAY_TELEPORT);
DoTeleportTo(PosGroundLiveSide);
me->SetReactState(REACT_AGGRESSIVE);
DummyEntryCheckPredicate pred;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp
index e7126ba7e33..0018c58f4cb 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp
@@ -21,14 +21,17 @@
#include "naxxramas.h"
#include "Player.h"
-#define SAY_AGGRO RAND(-1533109, -1533110, -1533111)
-#define SAY_SLAY -1533112
-#define SAY_TAUNT RAND(-1533113, -1533114, -1533115, -1533116, -1533117)
-#define SAY_DEATH -1533118
-
-#define SPELL_SPELL_DISRUPTION 29310
-#define SPELL_DECREPIT_FEVER RAID_MODE(29998, 55011)
-#define SPELL_PLAGUE_CLOUD 29350
+enum Heigan
+{
+ SPELL_DECREPIT_FEVER = 29998, // 25-man: 55011
+ SPELL_SPELL_DISRUPTION = 29310,
+ SPELL_PLAGUE_CLOUD = 29350,
+
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_TAUNT = 2,
+ SAY_DEATH = 3
+};
enum Events
{
@@ -70,7 +73,7 @@ public:
void KilledUnit(Unit* who)
{
if (!(rand()%5))
- DoScriptText(SAY_SLAY, me);
+ Talk(SAY_SLAY);
if (who->GetTypeId() == TYPEID_PLAYER)
safetyDance = false;
}
@@ -92,13 +95,13 @@ public:
void JustDied(Unit* /*killer*/)
{
_JustDied();
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
}
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
EnterPhase(PHASE_FIGHT);
safetyDance = true;
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
index 9167db45d20..183fb40e5a0 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
@@ -33,32 +33,23 @@ EndScriptData */
enum Yells
{
//when shappiron dies. dialog between kel and lich king (in this order)
- SAY_SAPP_DIALOG1 = -1533084, //not used
- SAY_SAPP_DIALOG2_LICH = -1533085, //not used
- SAY_SAPP_DIALOG3 = -1533086, //not used
- SAY_SAPP_DIALOG4_LICH = -1533087, //not used
- SAY_SAPP_DIALOG5 = -1533088, //not used
- SAY_CAT_DIED = -1533089, //when cat dies, not used
+ SAY_SAPP_DIALOG1 = 0, //not used
+ SAY_SAPP_DIALOG2_LICH = 1, //not used
+ SAY_SAPP_DIALOG3 = 2, //not used
+ SAY_SAPP_DIALOG4_LICH = 3, //not used
+ SAY_SAPP_DIALOG5 = 4, //not used
+ SAY_CAT_DIED = 5, //when cat dies, not used
//when each of the 4 wing bosses dies
- SAY_TAUNT1 = -1533090, //not used
- SAY_TAUNT2 = -1533091, //not used
- SAY_TAUNT3 = -1533092, //not used
- SAY_TAUNT4 = -1533093, //not used
- SAY_SUMMON_MINIONS = -1533105, //start of phase 1
- SAY_AGGRO_1 = -1533094, //start of phase 2
- SAY_AGGRO_2 = -1533095,
- SAY_AGGRO_3 = -1533096,
- SAY_SLAY_1 = -1533097,
- SAY_SLAY_2 = -1533098,
- SAY_DEATH = -1533099,
- SAY_CHAIN_1 = -1533100,
- SAY_CHAIN_2 = -1533101,
- SAY_FROST_BLAST = -1533102,
- SAY_SPECIAL_1 = -1533106,
- SAY_SPECIAL_2 = -1533107,
- SAY_SPECIAL_3 = -1533108,
- SAY_REQUEST_AID = -1533103, //start of phase 3
- SAY_ANSWER_REQUEST = -1533104 //lich king answer
+ SAY_TAUNT = 6,
+ SAY_AGGRO = 7,
+ SAY_SLAY = 8,
+ SAY_DEATH = 9,
+ SAY_CHAIN = 10,
+ SAY_FROST_BLAST = 11,
+ SAY_REQUEST_AID = 12, //start of phase 3
+ SAY_ANSWER_REQUEST = 13, //lich king answer
+ SAY_SUMMON_MINIONS = 14, //start of phase 1
+ SAY_SPECIAL = 15
};
enum Events
@@ -341,13 +332,13 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/)
{
_JustDied();
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
std::map<uint64, float>::const_iterator itr;
for (itr = chained.begin(); itr != chained.end(); ++itr)
@@ -370,7 +361,7 @@ public:
pPortal->ResetDoorOrButton();
}
DoCast(me, SPELL_KELTHUZAD_CHANNEL, false);
- DoScriptText(SAY_SUMMON_MINIONS, me);
+ Talk(SAY_SUMMON_MINIONS);
Phase = 1;
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NOT_SELECTABLE);
me->SetFloatValue(UNIT_FIELD_COMBATREACH, 4);
@@ -435,7 +426,7 @@ public:
break;
case EVENT_PHASE:
events.Reset();
- DoScriptText(RAND(SAY_AGGRO_1, SAY_AGGRO_2, SAY_AGGRO_3), me);
+ Talk(SAY_AGGRO);
spawns.DespawnAll();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NOT_SELECTABLE);
me->CastStop();
@@ -464,10 +455,10 @@ public:
if (HealthBelowPct(45))
{
Phase = 3;
- DoScriptText(SAY_REQUEST_AID, me);
+ Talk(SAY_REQUEST_AID);
//here Lich King should respond to KelThuzad but I don't know which Creature to make talk
//so for now just make Kelthuzad says it.
- DoScriptText(SAY_ANSWER_REQUEST, me);
+ Talk(SAY_ANSWER_REQUEST);
for (uint8 i = 0; i <= 3; ++i)
{
@@ -523,7 +514,7 @@ public:
}
}
if (!chained.empty())
- DoScriptText(RAND(SAY_CHAIN_1, SAY_CHAIN_2), me);
+ Talk(SAY_CHAIN);
events.RepeatEvent(urand(100000, 180000));
break;
}
@@ -627,7 +618,7 @@ public:
std::vector<Unit*>::const_iterator itr = unitList.begin();
advance(itr, rand()%unitList.size());
DoCast(*itr, SPELL_MANA_DETONATION);
- DoScriptText(RAND(SAY_SPECIAL_1, SAY_SPECIAL_2, SAY_SPECIAL_3), me);
+ Talk(SAY_SPECIAL);
}
events.RepeatEvent(urand(20000, 50000));
@@ -642,7 +633,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, RAID_MODE(1, 0), 0, true))
DoCast(target, SPELL_FROST_BLAST);
if (rand()%2)
- DoScriptText(SAY_FROST_BLAST, me);
+ Talk(SAY_FROST_BLAST);
events.RepeatEvent(urand(30000, 90000));
break;
default:
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
index d106b99ace0..b670e36fa96 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
@@ -19,21 +19,25 @@
#include "ScriptedCreature.h"
#include "naxxramas.h"
-#define SAY_AGGRO RAND(-1533075, -1533076, -1533077)
-#define SAY_SUMMON -1533078
-#define SAY_SLAY RAND(-1533079, -1533080)
-#define SAY_DEATH -1533081
+enum Noth
+{
+ SAY_AGGRO = 0,
+ SAY_SUMMON = 1,
+ SAY_SLAY = 2,
+ SAY_DEATH = 3,
-#define SOUND_DEATH 8848
+ SOUND_DEATH = 8848,
-#define SPELL_CURSE_PLAGUEBRINGER RAID_MODE(29213, 54835)
-#define SPELL_BLINK RAND(29208, 29209, 29210, 29211)
-#define SPELL_CRIPPLE RAID_MODE(29212, 54814)
-#define SPELL_TELEPORT 29216
+ SPELL_CURSE_PLAGUEBRINGER = 29213, // 25-man: 54835
+ SPELL_CRIPPLE = 29212, // 25-man: 54814
+ SPELL_TELEPORT = 29216,
-#define MOB_WARRIOR 16984
-#define MOB_CHAMPION 16983
-#define MOB_GUARDIAN 16981
+ MOB_WARRIOR = 16984,
+ MOB_CHAMPION = 16983,
+ MOB_GUARDIAN = 16981
+};
+
+#define SPELL_BLINK RAND(29208, 29209, 29210, 29211)
// Teleport position of Noth on his balcony
#define TELE_X 2631.370f
@@ -90,7 +94,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
balconyCount = 0;
EnterPhaseGround();
}
@@ -115,7 +119,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
if (!(rand()%5))
- DoScriptText(SAY_SLAY, me);
+ Talk(SAY_SLAY);
}
void JustSummoned(Creature* summon)
@@ -128,7 +132,7 @@ public:
void JustDied(Unit* /*killer*/)
{
_JustDied();
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
}
void SummonUndead(uint32 entry, uint32 num)
@@ -157,7 +161,7 @@ public:
events.ScheduleEvent(EVENT_CURSE, urand(50000, 60000));
return;
case EVENT_WARRIOR:
- DoScriptText(SAY_SUMMON, me);
+ Talk(SAY_SUMMON);
SummonUndead(MOB_WARRIOR, RAID_MODE(2, 3));
events.ScheduleEvent(EVENT_WARRIOR, 30000);
return;
@@ -178,7 +182,7 @@ public:
waveCount = 0;
return;
case EVENT_WAVE:
- DoScriptText(SAY_SUMMON, me);
+ Talk(SAY_SUMMON);
switch (balconyCount)
{
case 0: SummonUndead(MOB_CHAMPION, RAID_MODE(2, 4)); break;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
index b1b57836a89..d4b3f5ddce0 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
@@ -30,12 +30,11 @@ enum Spells
enum Yells
{
- SAY_AGGRO_1 = -1533017,
- SAY_AGGRO_2 = -1533018,
- SAY_SLAY = -1533019,
- SAY_DEATH = -1533020,
- EMOTE_BERSERK = -1533021,
- EMOTE_ENRAGE = -1533022,
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ EMOTE_BERSERK = 3,
+ EMOTE_ENRAGE = 4
};
enum Events
@@ -78,20 +77,20 @@ public:
void KilledUnit(Unit* /*Victim*/)
{
if (!(rand()%5))
- DoScriptText(SAY_SLAY, me);
+ Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/)
{
_JustDied();
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
}
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
Enraged = false;
- DoScriptText(RAND(SAY_AGGRO_1, SAY_AGGRO_2), me);
+ Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_HATEFUL, 1000);
events.ScheduleEvent(EVENT_BERSERK, 360000);
@@ -137,7 +136,7 @@ public:
}
case EVENT_BERSERK:
DoCast(me, SPELL_BERSERK, true);
- DoScriptText(EMOTE_BERSERK, me);
+ Talk(EMOTE_BERSERK);
events.ScheduleEvent(EVENT_SLIME, 2000);
break;
case EVENT_SLIME:
@@ -150,7 +149,7 @@ public:
if (!Enraged && HealthBelowPct(5))
{
DoCast(me, SPELL_FRENZY, true);
- DoScriptText(EMOTE_ENRAGE, me);
+ Talk(EMOTE_ENRAGE);
Enraged = true;
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
index c027dd3a97d..aebd7fdc19c 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
@@ -15,48 +15,47 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "AchievementMgr.h"
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
-#include "naxxramas.h"
#include "Player.h"
#include "SpellInfo.h"
+#include "naxxramas.h"
-#define EMOTE_BREATH -1533082
-#define EMOTE_ENRAGE -1533083
-
-#define SPELL_FROST_AURA RAID_MODE(28531, 55799)
-#define SPELL_CLEAVE 19983
-#define SPELL_TAIL_SWEEP RAID_MODE(55697, 55696)
-#define SPELL_SUMMON_BLIZZARD 28560
-#define SPELL_LIFE_DRAIN RAID_MODE(28542, 55665)
-#define SPELL_ICEBOLT 28522
-#define SPELL_FROST_BREATH 29318
-#define SPELL_FROST_EXPLOSION 28524
-#define SPELL_FROST_MISSILE 30101
-#define SPELL_BERSERK 26662
-#define SPELL_DIES 29357
-
-#define SPELL_CHILL RAID_MODE(28547, 55699)
-
-#define MOB_BLIZZARD 16474
-#define GO_ICEBLOCK 181247
+enum Yells
+{
+ EMOTE_AIR_PHASE = 0,
+ EMOTE_GROUND_PHASE = 1,
+ EMOTE_BREATH = 2,
+ EMOTE_ENRAGE = 3
+};
-#define ACHIEVEMENT_THE_HUNDRED_CLUB RAID_MODE(2146, 2147)
-#define MAX_FROST_RESISTANCE 100
+enum Spells
+{
+ SPELL_FROST_AURA = 28531,
+ SPELL_CLEAVE = 19983,
+ SPELL_TAIL_SWEEP = 55697,
+ SPELL_SUMMON_BLIZZARD = 28560,
+ SPELL_LIFE_DRAIN = 28542,
+ SPELL_ICEBOLT = 28522,
+ SPELL_FROST_BREATH = 29318,
+ SPELL_FROST_EXPLOSION = 28524,
+ SPELL_FROST_MISSILE = 30101,
+ SPELL_BERSERK = 26662,
+ SPELL_DIES = 29357,
+ SPELL_CHILL = 28547,
+};
enum Phases
{
- PHASE_NULL = 0,
+ PHASE_NULL = 0,
PHASE_BIRTH,
PHASE_GROUND,
- PHASE_FLIGHT,
+ PHASE_FLIGHT
};
enum Events
{
- EVENT_NONE,
- EVENT_BERSERK,
+ EVENT_BERSERK = 1,
EVENT_CLEAVE,
EVENT_TAIL,
EVENT_DRAIN,
@@ -68,342 +67,362 @@ enum Events
EVENT_EXPLOSION,
EVENT_LAND,
EVENT_GROUND,
- EVENT_BIRTH,
+ EVENT_BIRTH
+};
+
+enum Misc
+{
+ NPC_BLIZZARD = 16474,
+ GO_ICEBLOCK = 181247,
+
+ // The Hundred Club
+ DATA_THE_HUNDRED_CLUB = 21462147,
+ MAX_FROST_RESISTANCE = 100
};
typedef std::map<uint64, uint64> IceBlockMap;
class boss_sapphiron : public CreatureScript
{
-public:
- boss_sapphiron() : CreatureScript("boss_sapphiron") { }
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new boss_sapphironAI (creature);
- }
-
- struct boss_sapphironAI : public BossAI
- {
- boss_sapphironAI(Creature* creature) : BossAI(creature, BOSS_SAPPHIRON)
- , phase(PHASE_NULL)
+ public:
+ boss_sapphiron() : CreatureScript("boss_sapphiron") { }
+
+ struct boss_sapphironAI : public BossAI
{
- map = me->GetMap();
- }
+ boss_sapphironAI(Creature* creature) : BossAI(creature, BOSS_SAPPHIRON)
+ , _phase(PHASE_NULL)
+ {
+ _map = me->GetMap();
+ }
- Phases phase;
- uint32 iceboltCount;
- IceBlockMap iceblocks;
+ void InitializeAI()
+ {
+ float x, y, z;
+ me->GetPosition(x, y, z);
+ me->SummonGameObject(GO_BIRTH, x, y, z, 0, 0, 0, 0, 0, 0);
+ me->SetVisible(false);
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ me->SetReactState(REACT_PASSIVE);
+
+ BossAI::InitializeAI();
+ }
- bool CanTheHundredClub; // needed for achievement: The Hundred Club(2146, 2147)
- uint32 CheckFrostResistTimer;
- Map* map;
+ void Reset()
+ {
+ _Reset();
- void InitializeAI()
- {
- float x, y, z;
- me->GetPosition(x, y, z);
- me->SummonGameObject(GO_BIRTH, x, y, z, 0, 0, 0, 0, 0, 0);
- me->SetVisible(false);
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- me->SetReactState(REACT_PASSIVE);
-
- ScriptedAI::InitializeAI();
- }
+ if (_phase == PHASE_FLIGHT)
+ ClearIceBlock();
- void Reset()
- {
- _Reset();
+ _phase = PHASE_NULL;
- if (phase == PHASE_FLIGHT)
- ClearIceBlock();
+ _canTheHundredClub = true;
+ _checkFrostResistTimer = 5 * IN_MILLISECONDS;
+ }
- phase = PHASE_NULL;
+ void EnterCombat(Unit* /*who*/)
+ {
+ _EnterCombat();
- CanTheHundredClub = true;
- CheckFrostResistTimer = 5000;
- }
+ me->CastSpell(me, SPELL_FROST_AURA, true);
- void EnterCombat(Unit* /*who*/)
- {
- _EnterCombat();
+ events.ScheduleEvent(EVENT_BERSERK, 15 * MINUTE * IN_MILLISECONDS);
+ EnterPhaseGround();
- me->CastSpell(me, SPELL_FROST_AURA, true);
+ CheckPlayersFrostResist();
+ }
- events.ScheduleEvent(EVENT_BERSERK, 15*60000);
- EnterPhaseGround();
+ void SpellHitTarget(Unit* target, SpellInfo const* spell)
+ {
+ if (spell->Id == SPELL_ICEBOLT)
+ {
+ IceBlockMap::iterator itr = _iceblocks.find(target->GetGUID());
+ if (itr != _iceblocks.end() && !itr->second)
+ {
+ if (GameObject* iceblock = me->SummonGameObject(GO_ICEBLOCK, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, 0, 0, 0, 0, 25000))
+ itr->second = iceblock->GetGUID();
+ }
+ }
+ }
- CheckPlayersFrostResist();
- }
+ void JustDied(Unit* /*killer*/)
+ {
+ _JustDied();
+ me->CastSpell(me, SPELL_DIES, true);
- void SpellHitTarget(Unit* target, const SpellInfo* spell)
- {
- if (spell->Id == SPELL_ICEBOLT)
+ CheckPlayersFrostResist();
+ }
+
+ void MovementInform(uint32 /*type*/, uint32 id)
+ {
+ if (id == 1)
+ events.ScheduleEvent(EVENT_LIFTOFF, 0);
+ }
+
+ void DoAction(int32 const param)
{
- IceBlockMap::iterator itr = iceblocks.find(target->GetGUID());
- if (itr != iceblocks.end() && !itr->second)
+ if (param == DATA_SAPPHIRON_BIRTH)
{
- if (GameObject* iceblock = me->SummonGameObject(GO_ICEBLOCK, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, 0, 0, 0, 0, 25000))
- itr->second = iceblock->GetGUID();
+ _phase = PHASE_BIRTH;
+ events.ScheduleEvent(EVENT_BIRTH, 23 * IN_MILLISECONDS);
}
}
- }
-
- void JustDied(Unit* /*killer*/)
- {
- _JustDied();
- me->CastSpell(me, SPELL_DIES, true);
- CheckPlayersFrostResist();
- if (CanTheHundredClub)
+ void CheckPlayersFrostResist()
{
- AchievementEntry const* AchievTheHundredClub = sAchievementMgr->GetAchievement(ACHIEVEMENT_THE_HUNDRED_CLUB);
- if (AchievTheHundredClub)
+ if (_canTheHundredClub && _map && _map->IsRaid())
{
- if (map && map->IsDungeon())
+ Map::PlayerList const &players = _map->GetPlayers();
+ for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
{
- Map::PlayerList const &players = map->GetPlayers();
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- itr->getSource()->CompletedAchievement(AchievTheHundredClub);
+ if (itr->getSource()->GetResistance(SPELL_SCHOOL_FROST) > MAX_FROST_RESISTANCE)
+ {
+ _canTheHundredClub = false;
+ break;
+ }
}
}
}
- }
-
- void MovementInform(uint32, uint32 id)
- {
- if (id == 1)
- events.ScheduleEvent(EVENT_LIFTOFF, 0);
- }
- void DoAction(const int32 param)
- {
- if (param == DATA_SAPPHIRON_BIRTH)
+ void EnterPhaseGround()
{
- phase = PHASE_BIRTH;
- events.ScheduleEvent(EVENT_BIRTH, 23000);
+ _phase = PHASE_GROUND;
+ me->SetReactState(REACT_AGGRESSIVE);
+ events.SetPhase(PHASE_GROUND);
+ events.ScheduleEvent(EVENT_CLEAVE, urand(5, 15) * IN_MILLISECONDS, 0, PHASE_GROUND);
+ events.ScheduleEvent(EVENT_TAIL, urand(5, 15) * IN_MILLISECONDS, 0, PHASE_GROUND);
+ events.ScheduleEvent(EVENT_DRAIN, 24 * IN_MILLISECONDS, 0, PHASE_GROUND);
+ events.ScheduleEvent(EVENT_BLIZZARD, urand(5, 10) * IN_MILLISECONDS, 0, PHASE_GROUND);
+ events.ScheduleEvent(EVENT_FLIGHT, 45 * IN_MILLISECONDS);
}
- }
- void CheckPlayersFrostResist()
- {
- if (CanTheHundredClub && map && map->IsDungeon())
+ void ClearIceBlock()
{
- Map::PlayerList const &players = map->GetPlayers();
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
+ for (IceBlockMap::const_iterator itr = _iceblocks.begin(); itr != _iceblocks.end(); ++itr)
{
- if (itr->getSource()->GetResistance(SPELL_SCHOOL_FROST) > MAX_FROST_RESISTANCE)
- {
- CanTheHundredClub = false;
- break;
- }
+ if (Player* player = ObjectAccessor::GetPlayer(*me, itr->first))
+ player->RemoveAura(SPELL_ICEBOLT);
+
+ if (GameObject* go = ObjectAccessor::GetGameObject(*me, itr->second))
+ go->Delete();
}
+ _iceblocks.clear();
}
- }
- void EnterPhaseGround()
- {
- phase = PHASE_GROUND;
- me->SetReactState(REACT_AGGRESSIVE);
- events.SetPhase(PHASE_GROUND);
- events.ScheduleEvent(EVENT_CLEAVE, 5000+rand()%10000, 0, PHASE_GROUND);
- events.ScheduleEvent(EVENT_TAIL, 5000+rand()%10000, 0, PHASE_GROUND);
- events.ScheduleEvent(EVENT_DRAIN, 24000, 0, PHASE_GROUND);
- events.ScheduleEvent(EVENT_BLIZZARD, 5000+rand()%5000, 0, PHASE_GROUND);
- events.ScheduleEvent(EVENT_FLIGHT, 45000);
- }
-
- void ClearIceBlock()
- {
- for (IceBlockMap::const_iterator itr = iceblocks.begin(); itr != iceblocks.end(); ++itr)
+ uint32 GetData(uint32 data) const
{
- if (Player* player = Unit::GetPlayer(*me, itr->first))
- player->RemoveAura(SPELL_ICEBOLT);
- if (GameObject* go = GameObject::GetGameObject(*me, itr->second))
- go->Delete();
+ if (data == DATA_THE_HUNDRED_CLUB)
+ return _canTheHundredClub;
+
+ return 0;
}
- iceblocks.clear();
- }
- void UpdateAI(const uint32 diff)
- {
- if (!phase)
- return;
+ void UpdateAI(uint32 const diff)
+ {
+ if (!_phase)
+ return;
- events.Update(diff);
+ events.Update(diff);
- if ((phase != PHASE_BIRTH && !UpdateVictim()) || !CheckInRoom())
- return;
+ if ((_phase != PHASE_BIRTH && !UpdateVictim()) || !CheckInRoom())
+ return;
- if (CanTheHundredClub)
- {
- if (CheckFrostResistTimer <= diff)
+ if (_canTheHundredClub)
{
- CheckPlayersFrostResist();
- CheckFrostResistTimer = (rand() % 5 + 5) * 1000;
- } else CheckFrostResistTimer -= diff;
- }
+ if (_checkFrostResistTimer <= diff)
+ {
+ CheckPlayersFrostResist();
+ _checkFrostResistTimer = 5 * IN_MILLISECONDS;
+ }
+ else
+ _checkFrostResistTimer -= diff;
+ }
- if (phase == PHASE_GROUND)
- {
- while (uint32 eventId = events.ExecuteEvent())
+ if (_phase == PHASE_GROUND)
{
- switch (eventId)
+ while (uint32 eventId = events.ExecuteEvent())
{
- case EVENT_BERSERK:
- DoScriptText(EMOTE_ENRAGE, me);
- DoCast(me, SPELL_BERSERK);
- return;
- case EVENT_CLEAVE:
- DoCast(me->getVictim(), SPELL_CLEAVE);
- events.ScheduleEvent(EVENT_CLEAVE, 5000+rand()%10000, 0, PHASE_GROUND);
- return;
- case EVENT_TAIL:
- DoCastAOE(SPELL_TAIL_SWEEP);
- events.ScheduleEvent(EVENT_TAIL, 5000+rand()%10000, 0, PHASE_GROUND);
- return;
- case EVENT_DRAIN:
- DoCastAOE(SPELL_LIFE_DRAIN);
- events.ScheduleEvent(EVENT_DRAIN, 24000, 0, PHASE_GROUND);
- return;
- case EVENT_BLIZZARD:
+ switch (eventId)
{
- //DoCastAOE(SPELL_SUMMON_BLIZZARD);
- if (Creature* summon = DoSummon(MOB_BLIZZARD, me, 0.0f, urand(25000, 30000), TEMPSUMMON_TIMED_DESPAWN))
- summon->GetMotionMaster()->MoveRandom(40);
- events.ScheduleEvent(EVENT_BLIZZARD, RAID_MODE(20000, 7000), 0, PHASE_GROUND);
- break;
- }
- case EVENT_FLIGHT:
- if (HealthAbovePct(10))
- {
- phase = PHASE_FLIGHT;
- events.SetPhase(PHASE_FLIGHT);
- me->SetReactState(REACT_PASSIVE);
- me->AttackStop();
- float x, y, z, o;
- me->GetHomePosition(x, y, z, o);
- me->GetMotionMaster()->MovePoint(1, x, y, z);
+ case EVENT_BERSERK:
+ Talk(EMOTE_ENRAGE);
+ DoCast(me, SPELL_BERSERK);
+ return;
+ case EVENT_CLEAVE:
+ DoCastVictim(SPELL_CLEAVE);
+ events.ScheduleEvent(EVENT_CLEAVE, urand(5, 15) * IN_MILLISECONDS, 0, PHASE_GROUND);
+ return;
+ case EVENT_TAIL:
+ DoCastAOE(SPELL_TAIL_SWEEP);
+ events.ScheduleEvent(EVENT_TAIL, urand(5, 15) * IN_MILLISECONDS, 0, PHASE_GROUND);
+ return;
+ case EVENT_DRAIN:
+ DoCastAOE(SPELL_LIFE_DRAIN);
+ events.ScheduleEvent(EVENT_DRAIN, 24 * IN_MILLISECONDS, 0, PHASE_GROUND);
return;
+ case EVENT_BLIZZARD:
+ {
+ //DoCastAOE(SPELL_SUMMON_BLIZZARD);
+ if (Creature* summon = DoSummon(NPC_BLIZZARD, me, 0.0f, urand(25, 30) * IN_MILLISECONDS, TEMPSUMMON_TIMED_DESPAWN))
+ summon->GetMotionMaster()->MoveRandom(40);
+ events.ScheduleEvent(EVENT_BLIZZARD, RAID_MODE(20, 7) * IN_MILLISECONDS, 0, PHASE_GROUND);
+ break;
}
- break;
+ case EVENT_FLIGHT:
+ if (HealthAbovePct(10))
+ {
+ _phase = PHASE_FLIGHT;
+ events.SetPhase(PHASE_FLIGHT);
+ me->SetReactState(REACT_PASSIVE);
+ me->AttackStop();
+ float x, y, z, o;
+ me->GetHomePosition(x, y, z, o);
+ me->GetMotionMaster()->MovePoint(1, x, y, z);
+ return;
+ }
+ break;
+ }
}
- }
- DoMeleeAttackIfReady();
- }
- else
- {
- if (uint32 eventId = events.ExecuteEvent())
+ DoMeleeAttackIfReady();
+ }
+ else
{
- switch (eventId)
+ if (uint32 eventId = events.ExecuteEvent())
{
- case EVENT_LIFTOFF:
- me->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
- me->SetDisableGravity(true);
- me->SendMovementFlagUpdate();
- events.ScheduleEvent(EVENT_ICEBOLT, 1500);
- iceboltCount = RAID_MODE(2, 3);
- return;
- case EVENT_ICEBOLT:
+ switch (eventId)
{
- std::vector<Unit*> targets;
- std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();
- for (; i != me->getThreatManager().getThreatList().end(); ++i)
- if ((*i)->getTarget()->GetTypeId() == TYPEID_PLAYER && !(*i)->getTarget()->HasAura(SPELL_ICEBOLT))
- targets.push_back((*i)->getTarget());
-
- if (targets.empty())
- iceboltCount = 0;
- else
+ case EVENT_LIFTOFF:
+ Talk(EMOTE_AIR_PHASE);
+ me->SetDisableGravity(true);
+ me->SendMovementFlagUpdate();
+ events.ScheduleEvent(EVENT_ICEBOLT, 1500);
+ _iceboltCount = RAID_MODE(2, 3);
+ return;
+ case EVENT_ICEBOLT:
{
- std::vector<Unit*>::const_iterator itr = targets.begin();
- advance(itr, rand()%targets.size());
- iceblocks.insert(std::make_pair((*itr)->GetGUID(), 0));
- DoCast(*itr, SPELL_ICEBOLT);
- --iceboltCount;
+ std::vector<Unit*> targets;
+ std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();
+ for (; i != me->getThreatManager().getThreatList().end(); ++i)
+ if ((*i)->getTarget()->GetTypeId() == TYPEID_PLAYER && !(*i)->getTarget()->HasAura(SPELL_ICEBOLT))
+ targets.push_back((*i)->getTarget());
+
+ if (targets.empty())
+ _iceboltCount = 0;
+ else
+ {
+ std::vector<Unit*>::const_iterator itr = targets.begin();
+ advance(itr, rand()%targets.size());
+ _iceblocks.insert(std::make_pair((*itr)->GetGUID(), 0));
+ DoCast(*itr, SPELL_ICEBOLT);
+ --_iceboltCount;
+ }
+
+ if (_iceboltCount)
+ events.ScheduleEvent(EVENT_ICEBOLT, 1 * IN_MILLISECONDS);
+ else
+ events.ScheduleEvent(EVENT_BREATH, 1 * IN_MILLISECONDS);
+ return;
}
-
- if (iceboltCount)
- events.ScheduleEvent(EVENT_ICEBOLT, 1000);
- else
- events.ScheduleEvent(EVENT_BREATH, 1000);
- return;
- }
- case EVENT_BREATH:
- {
- DoScriptText(EMOTE_BREATH, me);
- DoCastAOE(SPELL_FROST_MISSILE);
- events.ScheduleEvent(EVENT_EXPLOSION, 8000);
- return;
+ case EVENT_BREATH:
+ {
+ Talk(EMOTE_BREATH);
+ DoCastAOE(SPELL_FROST_MISSILE);
+ events.ScheduleEvent(EVENT_EXPLOSION, 8 * IN_MILLISECONDS);
+ return;
+ }
+ case EVENT_EXPLOSION:
+ CastExplosion();
+ ClearIceBlock();
+ events.ScheduleEvent(EVENT_LAND, 3 * IN_MILLISECONDS);
+ return;
+ case EVENT_LAND:
+ me->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
+ Talk(EMOTE_GROUND_PHASE);
+ me->SetDisableGravity(false);
+ me->SendMovementFlagUpdate();
+ events.ScheduleEvent(EVENT_GROUND, 1500);
+ return;
+ case EVENT_GROUND:
+ EnterPhaseGround();
+ return;
+ case EVENT_BIRTH:
+ me->SetVisible(true);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ me->SetReactState(REACT_AGGRESSIVE);
+ return;
}
- case EVENT_EXPLOSION:
- CastExplosion();
- ClearIceBlock();
- events.ScheduleEvent(EVENT_LAND, 3000);
- return;
- case EVENT_LAND:
- me->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
- me->SetDisableGravity(false);
- me->SendMovementFlagUpdate();
- events.ScheduleEvent(EVENT_GROUND, 1500);
- return;
- case EVENT_GROUND:
- EnterPhaseGround();
- return;
- case EVENT_BIRTH:
- me->SetVisible(true);
- me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- me->SetReactState(REACT_AGGRESSIVE);
- return;
}
- }//if (uint32 eventId = events.ExecuteEvent())
- }//if (phase == PHASE_GROUND)
- }
+ }
+ }
- void CastExplosion()
- {
- DoZoneInCombat(); // make sure everyone is in threatlist
- std::vector<Unit*> targets;
- std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();
- for (; i != me->getThreatManager().getThreatList().end(); ++i)
+ void CastExplosion()
{
- Unit* target = (*i)->getTarget();
- if (target->GetTypeId() != TYPEID_PLAYER)
- continue;
-
- if (target->HasAura(SPELL_ICEBOLT))
+ DoZoneInCombat(); // make sure everyone is in threatlist
+ std::vector<Unit*> targets;
+ std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();
+ for (; i != me->getThreatManager().getThreatList().end(); ++i)
{
- target->ApplySpellImmune(0, IMMUNITY_ID, SPELL_FROST_EXPLOSION, true);
- targets.push_back(target);
- continue;
- }
+ Unit* target = (*i)->getTarget();
+ if (target->GetTypeId() != TYPEID_PLAYER)
+ continue;
- for (IceBlockMap::const_iterator itr = iceblocks.begin(); itr != iceblocks.end(); ++itr)
- {
- if (GameObject* go = GameObject::GetGameObject(*me, itr->second))
+ if (target->HasAura(SPELL_ICEBOLT))
{
- if (go->IsInBetween(me, target, 2.0f)
- && me->GetExactDist2d(target->GetPositionX(), target->GetPositionY()) - me->GetExactDist2d(go->GetPositionX(), go->GetPositionY()) < 5.0f)
+ target->ApplySpellImmune(0, IMMUNITY_ID, SPELL_FROST_EXPLOSION, true);
+ targets.push_back(target);
+ continue;
+ }
+
+ for (IceBlockMap::const_iterator itr = _iceblocks.begin(); itr != _iceblocks.end(); ++itr)
+ {
+ if (GameObject* go = GameObject::GetGameObject(*me, itr->second))
{
- target->ApplySpellImmune(0, IMMUNITY_ID, SPELL_FROST_EXPLOSION, true);
- targets.push_back(target);
- break;
+ if (go->IsInBetween(me, target, 2.0f)
+ && me->GetExactDist2d(target->GetPositionX(), target->GetPositionY()) - me->GetExactDist2d(go->GetPositionX(), go->GetPositionY()) < 5.0f)
+ {
+ target->ApplySpellImmune(0, IMMUNITY_ID, SPELL_FROST_EXPLOSION, true);
+ targets.push_back(target);
+ break;
+ }
}
}
}
+
+ me->CastSpell(me, SPELL_FROST_EXPLOSION, true);
+
+ for (std::vector<Unit*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr)
+ (*itr)->ApplySpellImmune(0, IMMUNITY_ID, SPELL_FROST_EXPLOSION, false);
}
- me->CastSpell(me, SPELL_FROST_EXPLOSION, true);
+ private:
+ Phases _phase;
+ uint32 _iceboltCount;
+ IceBlockMap _iceblocks;
+ bool _canTheHundredClub;
+ uint32 _checkFrostResistTimer;
+ Map* _map;
+ };
- for (std::vector<Unit*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr)
- (*itr)->ApplySpellImmune(0, IMMUNITY_ID, SPELL_FROST_EXPLOSION, false);
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new boss_sapphironAI (creature);
}
- };
+};
+class achievement_the_hundred_club : public AchievementCriteriaScript
+{
+ public:
+ achievement_the_hundred_club() : AchievementCriteriaScript("achievement_the_hundred_club") { }
+
+ bool OnCheck(Player* /*source*/, Unit* target)
+ {
+ return target && target->GetAI()->GetData(DATA_THE_HUNDRED_CLUB);
+ }
};
void AddSC_boss_sapphiron()
{
new boss_sapphiron();
+ new achievement_the_hundred_club();
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
index 482f8a1200d..c86cf1e9f28 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
@@ -24,9 +24,9 @@
//Stalagg
enum StalaggYells
{
- SAY_STAL_AGGRO = -1533023, //not used
- SAY_STAL_SLAY = -1533024, //not used
- SAY_STAL_DEATH = -1533025 //not used
+ SAY_STAL_AGGRO = 0,
+ SAY_STAL_SLAY = 1,
+ SAY_STAL_DEATH = 2
};
enum StalagSpells
@@ -40,9 +40,9 @@ enum StalagSpells
//Feugen
enum FeugenYells
{
- SAY_FEUG_AGGRO = -1533026, //not used
- SAY_FEUG_SLAY = -1533027, //not used
- SAY_FEUG_DEATH = -1533028 //not used
+ SAY_FEUG_AGGRO = 0,
+ SAY_FEUG_SLAY = 1,
+ SAY_FEUG_DEATH = 2
};
enum FeugenSpells
@@ -67,17 +67,12 @@ enum ThaddiusActions
//Thaddius
enum ThaddiusYells
{
- SAY_GREET = -1533029, //not used
- SAY_AGGRO_1 = -1533030,
- SAY_AGGRO_2 = -1533031,
- SAY_AGGRO_3 = -1533032,
- SAY_SLAY = -1533033,
- SAY_ELECT = -1533034, //not used
- SAY_DEATH = -1533035,
- SAY_SCREAM1 = -1533036, //not used
- SAY_SCREAM2 = -1533037, //not used
- SAY_SCREAM3 = -1533038, //not used
- SAY_SCREAM4 = -1533039 //not used
+ SAY_GREET = 0,
+ SAY_AGGRO = 1,
+ SAY_SLAY = 2,
+ SAY_ELECT = 3,
+ SAY_DEATH = 4,
+ SAY_SCREAM = 5
};
enum ThaddiusSpells
@@ -155,13 +150,13 @@ public:
void KilledUnit(Unit* /*victim*/)
{
if (!(rand()%5))
- DoScriptText(SAY_SLAY, me);
+ Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/)
{
_JustDied();
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
}
void DoAction(const int32 action)
@@ -198,7 +193,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
- DoScriptText(RAND(SAY_AGGRO_1, SAY_AGGRO_2, SAY_AGGRO_3), me);
+ Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_SHIFT, 30000);
events.ScheduleEvent(EVENT_CHAIN, urand(10000, 20000));
events.ScheduleEvent(EVENT_BERSERK, 360000);
@@ -315,13 +310,21 @@ public:
magneticPullTimer = 20000;
}
+ void KilledUnit(Unit* /*victim*/)
+ {
+ if (!(rand()%5))
+ Talk(SAY_STAL_SLAY);
+ }
+
void EnterCombat(Unit* /*who*/)
{
+ Talk(SAY_STAL_AGGRO);
DoCast(SPELL_STALAGG_TESLA);
}
void JustDied(Unit* /*killer*/)
{
+ Talk(SAY_STAL_DEATH);
if (instance)
if (Creature* pThaddius = me->GetCreature(*me, instance->GetData64(DATA_THADDIUS)))
if (pThaddius->AI())
@@ -399,13 +402,21 @@ public:
staticFieldTimer = 5000;
}
+ void KilledUnit(Unit* /*victim*/)
+ {
+ if (!(rand()%5))
+ Talk(SAY_FEUG_SLAY);
+ }
+
void EnterCombat(Unit* /*who*/)
{
+ Talk(SAY_FEUG_AGGRO);
DoCast(SPELL_FEUGEN_TESLA);
}
void JustDied(Unit* /*killer*/)
{
+ Talk(SAY_FEUG_DEATH);
if (instance)
if (Creature* pThaddius = me->GetCreature(*me, instance->GetData64(DATA_THADDIUS)))
if (pThaddius->AI())
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
index 80a5336a30c..2d89e5db0f0 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
@@ -38,10 +38,10 @@ enum Adds
enum Yells
{
- SAY_AGGRO = -1576010,
- SAY_DEATH = -1576011,
- SAY_RIFT = -1576012,
- SAY_SHIELD = -1576013
+ SAY_AGGRO = 0,
+ SAY_DEATH = 1,
+ SAY_RIFT = 2,
+ SAY_SHIELD = 3
};
enum RiftSpells
@@ -96,7 +96,7 @@ class boss_anomalus : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_ANOMALUS_EVENT, IN_PROGRESS);
@@ -104,7 +104,7 @@ class boss_anomalus : public CreatureScript
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_ANOMALUS_EVENT, DONE);
@@ -155,7 +155,7 @@ class boss_anomalus : public CreatureScript
if ((Phase == 0) && HealthBelowPct(50))
{
Phase = 1;
- DoScriptText(SAY_SHIELD, me);
+ Talk(SAY_SHIELD);
DoCast(me, SPELL_RIFT_SHIELD);
if (Creature* Rift = me->SummonCreature(MOB_CHAOTIC_RIFT, RiftLocation[urand(0, 5)], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1000))
{
@@ -163,7 +163,7 @@ class boss_anomalus : public CreatureScript
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
Rift->AI()->AttackStart(target);
uiChaoticRiftGUID = Rift->GetGUID();
- DoScriptText(SAY_RIFT, me);
+ Talk(SAY_RIFT);
}
}
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
index bbd86ec6a9f..c110a4a3e85 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
@@ -40,11 +40,11 @@ enum Spells
enum Yells
{
//Yell
- SAY_AGGRO = -1576040,
- SAY_SLAY = -1576041,
- SAY_ENRAGE = -1576042,
- SAY_DEATH = -1576043,
- SAY_CRYSTAL_NOVA = -1576044
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_ENRAGE = 2,
+ SAY_DEATH = 3,
+ SAY_CRYSTAL_NOVA = 4
};
enum Misc
@@ -100,7 +100,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
DoCastAOE(SPELL_INTENSE_COLD);
if (instance)
@@ -109,7 +109,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_KERISTRASZA_EVENT, DONE);
@@ -117,7 +117,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(SAY_SLAY, me);
+ Talk(SAY_SLAY);
}
bool CheckContainmentSpheres(bool remove_prison = false)
@@ -174,7 +174,7 @@ public:
if (!bEnrage && HealthBelowPct(25))
{
- DoScriptText(SAY_ENRAGE, me);
+ Talk(SAY_ENRAGE);
DoCast(me, SPELL_ENRAGE);
bEnrage = true;
}
@@ -193,7 +193,7 @@ public:
if (uiCrystalChainsCrystalizeTimer <= diff)
{
- DoScriptText(SAY_CRYSTAL_NOVA, me);
+ Talk(SAY_CRYSTAL_NOVA);
if (IsHeroic())
DoCast(me, SPELL_CRYSTALIZE);
else if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
index 317a9845e87..c8d3cc6416c 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
@@ -43,12 +43,11 @@ enum Creatures
enum Yells
{
- SAY_AGGRO = -1576000,
- SAY_KILL = -1576001,
- SAY_DEATH = -1576002,
- SAY_MERGE = -1576003,
- SAY_SPLIT_1 = -1576004,
- SAY_SPLIT_2 = -1576005,
+ SAY_AGGRO = 0,
+ SAY_KILL = 1,
+ SAY_DEATH = 2,
+ SAY_MERGE = 3,
+ SAY_SPLIT = 4
};
#define ACTION_MAGUS_DEAD 1
@@ -122,7 +121,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_MAGUS_TELESTRA_EVENT, IN_PROGRESS);
@@ -130,7 +129,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_MAGUS_TELESTRA_EVENT, DONE);
@@ -138,7 +137,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(SAY_KILL, me);
+ Talk(SAY_KILL);
}
void DoAction(int32 const action)
@@ -251,7 +250,7 @@ public:
uiArcaneMagusGUID = 0;
bIsWaitingToAppear = true;
uiIsWaitingToAppearTimer = 4*IN_MILLISECONDS;
- DoScriptText(SAY_MERGE, me);
+ Talk(SAY_MERGE);
}
else
return;
@@ -270,7 +269,7 @@ public:
bFireMagusDead = false;
bFrostMagusDead = false;
bArcaneMagusDead = false;
- DoScriptText(RAND(SAY_SPLIT_1, SAY_SPLIT_2), me);
+ Talk(SAY_SPLIT);
return;
}
@@ -287,7 +286,7 @@ public:
bFireMagusDead = false;
bFrostMagusDead = false;
bArcaneMagusDead = false;
- DoScriptText(RAND(SAY_SPLIT_1, SAY_SPLIT_2), me);
+ Talk(SAY_SPLIT);
return;
}
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/commander_stoutbeard.cpp b/src/server/scripts/Northrend/Nexus/Nexus/commander_stoutbeard.cpp
index 38808bc718d..1af1edcdf71 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/commander_stoutbeard.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/commander_stoutbeard.cpp
@@ -26,17 +26,15 @@ Script Data End */
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
-#define SPELL_BATTLE_SHOUT 31403
-#define SPELL_CHARGE 60067
-#define SPELL_FRIGHTENING_SHOUT 19134
-#define SPELL_WHIRLWIND_1 38619
-#define SPELL_WHIRLWIND_2 38618
+enum CommanderStoutbeard
+{
+ SPELL_BATTLE_SHOUT = 31403,
+ SPELL_CHARGE = 60067,
+ SPELL_FRIGHTENING_SHOUT = 19134,
+ SPELL_WHIRLWIND_1 = 38619,
+ SPELL_WHIRLWIND_2 = 38618
+};
-//not used
-//Yell
-#define SAY_AGGRO -1576021
-#define SAY_KILL -1576022
-#define SAY_DEATH -1576023
class boss_commander_stoutbeard : public CreatureScript
{
@@ -53,10 +51,6 @@ public:
boss_commander_stoutbeardAI(Creature* creature) : ScriptedAI(creature) {}
void Reset() {}
- void EnterCombat(Unit* /*who*/)
- {
- DoScriptText(SAY_AGGRO, me);
- }
void AttackStart(Unit* /*who*/) {}
void MoveInLineOfSight(Unit* /*who*/) {}
void UpdateAI(const uint32 /*diff*/)
@@ -67,10 +61,6 @@ public:
DoMeleeAttackIfReady();
}
- void JustDied(Unit* /*killer*/)
- {
- DoScriptText(SAY_DEATH, me);
- }
};
};
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
index 035e1a9a6df..60f9a3ddc9a 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
@@ -31,18 +31,11 @@ enum Spells
enum Yells
{
- SAY_AGGRO = -1578005,
- SAY_KILL_1 = -1578006,
- SAY_KILL_2 = -1578007,
- SAY_KILL_3 = -1578008,
- SAY_DEATH = -1578009,
- SAY_PULL_1 = -1578010,
- SAY_PULL_2 = -1578011,
- SAY_PULL_3 = -1578012,
- SAY_PULL_4 = -1578013,
- SAY_STOMP_1 = -1578014,
- SAY_STOMP_2 = -1578015,
- SAY_STOMP_3 = -1578016
+ SAY_AGGRO = 0,
+ SAY_KILL = 1,
+ SAY_DEATH = 2,
+ SAY_PULL = 3,
+ SAY_STOMP = 4
};
enum DrakosAchievement
@@ -85,7 +78,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
}
void UpdateAI(const uint32 diff)
@@ -122,7 +115,7 @@ public:
events.ScheduleEvent(EVENT_MAGIC_PULL, 15000);
break;
case EVENT_STOMP:
- DoScriptText(RAND(SAY_STOMP_1, SAY_STOMP_2, SAY_STOMP_3), me);
+ Talk(SAY_STOMP);
DoCast(SPELL_THUNDERING_STOMP);
events.ScheduleEvent(EVENT_STOMP, 17000);
break;
@@ -136,7 +129,7 @@ public:
{
_JustDied();
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
// start achievement timer (kill Eregos within 20 min)
instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
@@ -144,7 +137,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2, SAY_KILL_3), me);
+ Talk(SAY_KILL);
}
private:
bool postPull;
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
index 51e476785ff..ffd5e53e787 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
@@ -45,11 +45,14 @@ enum Spells
enum Yells
{
- SAY_AGGRO_1 = -1578000,
- SAY_AGGRO_2 = -1578001,
- SAY_AGGRO_3 = -1578002,
- SAY_AGGRO_4 = -1578003,
- SAY_TELEPORT = -1578004,
+ SAY_SUMMON_1 = 0,
+ SAY_SUMMON_2 = 1,
+ SAY_SUMMON_3 = 2,
+ SAY_AGGRO = 3,
+ EMOTE_ARCANE_EXPLOSION = 4,
+ SAY_ARCANE_EXPLOSION = 5,
+ SAY_DEATH = 6,
+ SAY_PLAYER_KILL = 7
};
enum eCreature
@@ -84,11 +87,6 @@ static uint32 TeleportSpells[]=
SPELL_SUMMON_MENAGERIE, SPELL_SUMMON_MENAGERIE_2, SPELL_SUMMON_MENAGERIE_3
};
-static int32 SayAggro[]=
-{
- SAY_AGGRO_1, SAY_AGGRO_2, SAY_AGGRO_3, SAY_AGGRO_4
-};
-
class boss_urom : public CreatureScript
{
public:
@@ -153,7 +151,7 @@ public:
{
if (me->Attack(who, true))
{
- DoScriptText(SayAggro[3], me);
+ Talk(SAY_AGGRO);
me->SetInCombatWith(who);
who->SetInCombatWith(me);
@@ -209,6 +207,22 @@ public:
{
SetPosition(i);
me->SummonCreature(Group[group[instance->GetData(DATA_UROM_PLATAFORM)]].entry[i], x, y, me->GetPositionZ(), me->GetOrientation());
+
+ // teleport to next platform and spawn adds
+ switch (instance->GetData(DATA_UROM_PLATAFORM))
+ {
+ case 1:
+ Talk(SAY_SUMMON_1);
+ break;
+ case 2:
+ Talk(SAY_SUMMON_2);
+ break;
+ case 3:
+ Talk(SAY_SUMMON_3);
+ break;
+ default:
+ break;
+ }
}
}
@@ -217,13 +231,17 @@ public:
if (!instance || instance->GetData(DATA_UROM_PLATAFORM) > 2)
return;
- DoScriptText(SayAggro[instance->GetData(DATA_UROM_PLATAFORM)], me);
+ Talk(instance->GetData(DATA_UROM_PLATAFORM) < 5 ? instance->GetData(DATA_UROM_PLATAFORM) : 0);
DoCast(TeleportSpells[instance->GetData(DATA_UROM_PLATAFORM)]);
}
+ void KilledUnit(Unit* /*victim*/)
+ {
+ Talk(SAY_PLAYER_KILL);
+ }
+
void UpdateAI(const uint32 uiDiff)
{
- //Return since we have no target
if (!UpdateVictim())
return;
@@ -233,7 +251,6 @@ public:
if (teleportTimer <= uiDiff)
{
me->InterruptNonMeleeSpells(false);
- DoScriptText(SAY_TELEPORT, me);
me->GetMotionMaster()->MoveIdle();
DoCast(SPELL_TELEPORT);
teleportTimer = urand(30000, 35000);
@@ -262,6 +279,9 @@ public:
me->GetMotionMaster()->MoveChase(me->getVictim(), 0, 0);
me->SetUnitMovementFlags(MOVEMENTFLAG_WALKING);
+ Talk(EMOTE_ARCANE_EXPLOSION);
+ Talk(SAY_ARCANE_EXPLOSION);
+
canCast = false;
canGoBack = false;
arcaneExplosionTimer = 9000;
@@ -291,6 +311,7 @@ public:
void JustDied(Unit* /*killer*/)
{
_JustDied();
+ Talk(SAY_DEATH);
DoCast(me, SPELL_DEATH_SPELL, true); // we cast the spell as triggered or the summon effect does not occur
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
index fc6de6b2faf..a7dae9aba78 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
@@ -23,14 +23,13 @@ SDComment: Event should be pretty close minus a few visual flaws
SDCategory: Halls of Lightning
EndScriptData */
-#include "AchievementMgr.h"
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "halls_of_lightning.h"
#include "Player.h"
#include "SpellInfo.h"
-enum eEnums
+enum Enums
{
SAY_AGGRO = 0,
SAY_FORGE = 1,
@@ -63,7 +62,7 @@ enum eEnums
MAX_GOLEM = 2,
- ACHIEVEMENT_SHATTER_RESISTANT = 2042
+ DATA_SHATTER_RESISTANT = 2042
};
/*######
@@ -153,21 +152,6 @@ public:
if (instance)
instance->SetData(TYPE_VOLKHAN, DONE);
-
- if (IsHeroic() && GolemsShattered < 5)
- {
- AchievementEntry const* AchievShatterResistant = sAchievementMgr->GetAchievement(ACHIEVEMENT_SHATTER_RESISTANT);
- if (AchievShatterResistant)
- {
- Map* map = me->GetMap();
- if (map && map->IsDungeon())
- {
- Map::PlayerList const &players = map->GetPlayers();
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- itr->getSource()->CompletedAchievement(AchievShatterResistant);
- }
- }
- }
}
void KilledUnit(Unit* /*victim*/)
@@ -234,6 +218,14 @@ public:
}
}
+ uint32 GetData(uint32 data) const
+ {
+ if (data == DATA_SHATTER_RESISTANT)
+ return GolemsShattered;
+
+ return 0;
+ }
+
void UpdateAI(const uint32 uiDiff)
{
if (!UpdateVictim())
@@ -462,8 +454,20 @@ public:
};
};
+class achievement_shatter_resistant : public AchievementCriteriaScript
+{
+ public:
+ achievement_shatter_resistant() : AchievementCriteriaScript("achievement_shatter_resistant") { }
+
+ bool OnCheck(Player* /*source*/, Unit* target)
+ {
+ return target && target->GetAI()->GetData(DATA_SHATTER_RESISTANT) < 5;
+ }
+};
+
void AddSC_boss_volkhan()
{
new boss_volkhan();
new mob_molten_golem();
+ new achievement_shatter_resistant();
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
index 93bea92503c..747bd699c81 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
@@ -45,10 +45,10 @@ enum Spells
enum Yells
{
- SAY_AGGRO = -1599007,
- SAY_KILL = -1599008,
- SAY_DEATH = -1599009,
- SAY_SHATTER = -1599010
+ SAY_AGGRO = 0,
+ SAY_KILL = 1,
+ SAY_DEATH = 2,
+ SAY_SHATTER = 3
};
class boss_krystallus : public CreatureScript
@@ -93,7 +93,7 @@ public:
}
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_KRYSTALLUS_EVENT, IN_PROGRESS);
@@ -146,7 +146,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_KRYSTALLUS_EVENT, DONE);
@@ -156,7 +156,7 @@ public:
{
if (victim == me)
return;
- DoScriptText(SAY_KILL, me);
+ Talk(SAY_KILL);
}
void SpellHitTarget(Unit* /*target*/, const SpellInfo* pSpell)
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
index 8d113bce226..4511b8b0f1e 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
@@ -40,13 +40,10 @@ enum Spells
enum Yells
{
- SAY_AGGRO = -1599000,
- SAY_SLAY_1 = -1599001,
- SAY_SLAY_2 = -1599002,
- SAY_SLAY_3 = -1599003,
- SAY_SLAY_4 = -1599004,
- SAY_DEATH = -1599005,
- SAY_STUN = -1599006
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_STUN = 3
};
enum Achievements
@@ -94,7 +91,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
{
@@ -138,7 +135,7 @@ public:
if (ShockOfSorrowTimer <= diff)
{
DoResetThreat();
- DoScriptText(SAY_STUN, me);
+ Talk(SAY_STUN);
DoCast(me, SPELL_SHOCK_OF_SORROW_N);
ShockOfSorrowTimer = urand(20000, 30000);
} else ShockOfSorrowTimer -= diff;
@@ -160,7 +157,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_MAIDEN_OF_GRIEF_EVENT, DONE);
@@ -171,7 +168,7 @@ public:
if (victim == me)
return;
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3, SAY_SLAY_4), me);
+ Talk(SAY_SLAY);
}
};
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
index c3e815f57dd..326779661cc 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
@@ -44,11 +44,9 @@ enum Spells
enum Yells
{
- SAY_AGGRO = -1599011,
- SAY_SLAY_1 = -1599012,
- SAY_SLAY_2 = -1599013,
- SAY_SLAY_3 = -1599014,
- SAY_DEATH = -1599015
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2
};
#define EMOTE_GENERIC_FRENZY -1000002
@@ -132,7 +130,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
uiEncounterTimer = 0;
@@ -217,7 +215,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
lSummons.DespawnAll();
if (instance)
@@ -227,7 +225,7 @@ public:
{
if (victim == me)
return;
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me);
+ Talk(SAY_SLAY);
}
void DoAction(int32 const action)
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
index 3c03508a14c..6b51d923517 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
@@ -24,68 +24,62 @@
enum Texts
{
- SAY_KILL_1 = -1599016,
- SAY_KILL_2 = -1599017,
- SAY_KILL_3 = -1599018,
- SAY_LOW_HEALTH = -1599019,
- SAY_DEATH = -1599020,
- SAY_PLAYER_DEATH_1 = -1599021,
- SAY_PLAYER_DEATH_2 = -1599022,
- SAY_PLAYER_DEATH_3 = -1599023,
- SAY_ESCORT_START = -1599024,
-
- SAY_SPAWN_DWARF = -1599025,
- SAY_SPAWN_TROGG = -1599026,
- SAY_SPAWN_OOZE = -1599027,
- SAY_SPAWN_EARTHEN = -1599028,
-
- SAY_EVENT_INTRO_1 = -1599029,
- SAY_EVENT_INTRO_2 = -1599030,
- SAY_EVENT_INTRO_3_ABED = -1599031,
-
- SAY_EVENT_A_1 = -1599032,
- SAY_EVENT_A_2_KADD = -1599033,
- SAY_EVENT_A_3 = -1599034,
-
- SAY_EVENT_B_1 = -1599035,
- SAY_EVENT_B_2_MARN = -1599036,
- SAY_EVENT_B_3 = -1599037,
-
- SAY_EVENT_C_1 = -1599038,
- SAY_EVENT_C_2_ABED = -1599039,
- SAY_EVENT_C_3 = -1599040,
-
- SAY_EVENT_D_1 = -1599041,
- SAY_EVENT_D_2_ABED = -1599042,
- SAY_EVENT_D_3 = -1599043,
- SAY_EVENT_D_4_ABED = -1599044,
-
- SAY_EVENT_END_01 = -1599045,
- SAY_EVENT_END_02 = -1599046,
- SAY_EVENT_END_03_ABED = -1599047,
- SAY_EVENT_END_04 = -1599048,
- SAY_EVENT_END_05_ABED = -1599049,
- SAY_EVENT_END_06 = -1599050,
- SAY_EVENT_END_07_ABED = -1599051,
- SAY_EVENT_END_08 = -1599052,
- SAY_EVENT_END_09_KADD = -1599053,
- SAY_EVENT_END_10 = -1599054,
- SAY_EVENT_END_11_KADD = -1599055,
- SAY_EVENT_END_12 = -1599056,
- SAY_EVENT_END_13_KADD = -1599057,
- SAY_EVENT_END_14 = -1599058,
- SAY_EVENT_END_15_MARN = -1599059,
- SAY_EVENT_END_16 = -1599060,
- SAY_EVENT_END_17_MARN = -1599061,
- SAY_EVENT_END_18 = -1599062,
- SAY_EVENT_END_19_MARN = -1599063,
- SAY_EVENT_END_20 = -1599064,
- SAY_EVENT_END_21_ABED = -1599065,
-
- SAY_VICTORY_SJONNIR_1 = -1599066,
- SAY_VICTORY_SJONNIR_2 = -1599067,
-
- SAY_ENTRANCE_MEET = -1599068,
+ SAY_KILL = 0,
+ SAY_LOW_HEALTH = 1,
+ SAY_DEATH = 2,
+ SAY_PLAYER_DEATH = 3,
+ SAY_ESCORT_START = 4,
+
+ SAY_SPAWN_DWARF = 5,
+ SAY_SPAWN_TROGG = 6,
+ SAY_SPAWN_OOZE = 7,
+ SAY_SPAWN_EARTHEN = 8,
+
+ SAY_EVENT_INTRO_1 = 9,
+ SAY_EVENT_INTRO_2 = 10,
+ SAY_EVENT_A_1 = 11,
+ SAY_EVENT_A_3 = 12,
+ SAY_EVENT_B_1 = 13,
+ SAY_EVENT_B_3 = 14,
+ SAY_EVENT_C_1 = 15,
+ SAY_EVENT_C_3 = 16,
+ SAY_EVENT_D_1 = 17,
+ SAY_EVENT_D_3 = 18,
+
+ SAY_EVENT_END_01 = 19,
+ SAY_EVENT_END_02 = 20,
+ SAY_EVENT_END_04 = 21,
+ SAY_EVENT_END_06 = 22,
+ SAY_EVENT_END_08 = 23,
+ SAY_EVENT_END_10 = 24,
+ SAY_EVENT_END_12 = 25,
+ SAY_EVENT_END_14 = 26,
+ SAY_EVENT_END_16 = 27,
+ SAY_EVENT_END_18 = 28,
+ SAY_EVENT_END_20 = 29,
+
+ SAY_VICTORY_SJONNIR_1 = 30,
+ SAY_VICTORY_SJONNIR_2 = 31,
+ SAY_ENTRANCE_MEET = 32,
+
+ SAY_EVENT_INTRO_3_ABED = 0,
+ SAY_EVENT_C_2_ABED = 1,
+ SAY_EVENT_D_2_ABED = 2,
+ SAY_EVENT_D_4_ABED = 3,
+ SAY_EVENT_END_03_ABED = 4,
+ SAY_EVENT_END_05_ABED = 5,
+ SAY_EVENT_END_07_ABED = 6,
+ SAY_EVENT_END_21_ABED = 7,
+
+ SAY_EVENT_A_2_KADD = 0,
+ SAY_EVENT_END_09_KADD = 1,
+ SAY_EVENT_END_11_KADD = 2,
+ SAY_EVENT_END_13_KADD = 3,
+
+ SAY_EVENT_B_2_MARN = 0,
+ SAY_EVENT_END_15_MARN = 1,
+ SAY_EVENT_END_17_MARN = 2,
+ SAY_EVENT_END_19_MARN = 3,
TEXT_ID_START = 13100,
TEXT_ID_PROGRESS = 13101
@@ -363,12 +357,12 @@ public:
}
break;
case 13:
- DoScriptText(SAY_EVENT_INTRO_1, me);
+ Talk(SAY_EVENT_INTRO_1);
SetEscortPaused(true);
JumpToNextStep(20000);
break;
case 17:
- DoScriptText(SAY_EVENT_INTRO_2, me);
+ Talk(SAY_EVENT_INTRO_2);
if (instance)
instance->HandleGameObject(instance->GetData64(DATA_GO_TRIBUNAL_CONSOLE), true);
me->SetStandState(UNIT_STAND_STATE_KNEEL);
@@ -452,7 +446,7 @@ public:
instance->SetData(DATA_BRANN_EVENT, IN_PROGRESS);
}
bIsBattle = false;
- DoScriptText(SAY_ESCORT_START, me);
+ Talk(SAY_ESCORT_START);
SetRun(true);
JumpToNextStep(0);
break;
@@ -463,21 +457,21 @@ public:
case 5:
if (instance)
if (Creature* temp = (Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))))
- DoScriptText(SAY_EVENT_INTRO_3_ABED, temp);
+ temp->AI()->Talk(SAY_EVENT_INTRO_3_ABED);
JumpToNextStep(8500);
break;
case 6:
- DoScriptText(SAY_EVENT_A_1, me);
+ Talk(SAY_EVENT_A_1);
JumpToNextStep(6500);
break;
case 7:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK)))
- DoScriptText(SAY_EVENT_A_2_KADD, temp);
+ temp->AI()->Talk(SAY_EVENT_A_2_KADD);
JumpToNextStep(12500);
break;
case 8:
- DoScriptText(SAY_EVENT_A_3, me);
+ Talk(SAY_EVENT_A_3);
if (instance)
instance->HandleGameObject(instance->GetData64(DATA_GO_KADDRAK), true);
if (Creature* temp = Unit::GetCreature(*me, uiControllerGUID))
@@ -490,18 +484,18 @@ public:
JumpToNextStep(20000);
break;
case 10:
- DoScriptText(SAY_EVENT_B_1, me);
+ Talk(SAY_EVENT_B_1);
JumpToNextStep(6000);
break;
case 11:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK)))
- DoScriptText(SAY_EVENT_B_2_MARN, temp);
+ temp->AI()->Talk(SAY_EVENT_B_2_MARN);
SpawnDwarf(1);
JumpToNextStep(20000);
break;
case 12:
- DoScriptText(SAY_EVENT_B_3, me);
+ Talk(SAY_EVENT_B_3);
if (instance)
instance->HandleGameObject(instance->GetData64(DATA_GO_MARNAK), true);
if (Creature* temp = Unit::GetCreature(*me, uiControllerGUID))
@@ -517,7 +511,7 @@ public:
JumpToNextStep(20000);
break;
case 15:
- DoScriptText(SAY_EVENT_C_1, me);
+ Talk(SAY_EVENT_C_1);
SpawnDwarf(1);
JumpToNextStep(10000);
break;
@@ -528,12 +522,12 @@ public:
case 17:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM)))
- DoScriptText(SAY_EVENT_C_2_ABED, temp);
+ temp->AI()->Talk(SAY_EVENT_C_2_ABED);
SpawnDwarf(1);
JumpToNextStep(20000);
break;
case 18:
- DoScriptText(SAY_EVENT_C_3, me);
+ Talk(SAY_EVENT_C_3);
if (instance)
instance->HandleGameObject(instance->GetData64(DATA_GO_ABEDNEUM), true);
if (Creature* temp = Unit::GetCreature(*me, uiControllerGUID))
@@ -549,14 +543,14 @@ public:
JumpToNextStep(15000);
break;
case 21:
- DoScriptText(SAY_EVENT_D_1, me);
+ Talk(SAY_EVENT_D_1);
SpawnDwarf(3);
JumpToNextStep(20000);
break;
case 22:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM)))
- DoScriptText(SAY_EVENT_D_2_ABED, temp);
+ temp->AI()->Talk(SAY_EVENT_D_2_ABED);
SpawnDwarf(1);
JumpToNextStep(5000);
break;
@@ -565,7 +559,7 @@ public:
JumpToNextStep(15000);
break;
case 24:
- DoScriptText(SAY_EVENT_D_3, me);
+ Talk(SAY_EVENT_D_3);
SpawnDwarf(3);
JumpToNextStep(5000);
break;
@@ -580,13 +574,13 @@ public:
case 27:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM)))
- DoScriptText(SAY_EVENT_D_4_ABED, temp);
+ temp->AI()->Talk(SAY_EVENT_D_4_ABED);
SpawnDwarf(1);
JumpToNextStep(10000);
break;
case 28:
me->SetReactState(REACT_DEFENSIVE);
- DoScriptText(SAY_EVENT_END_01, me);
+ Talk(SAY_EVENT_END_01);
me->SetStandState(UNIT_STAND_STATE_STAND);
if (instance)
instance->HandleGameObject(instance->GetData64(DATA_GO_SKY_FLOOR), true);
@@ -597,7 +591,7 @@ public:
JumpToNextStep(6500);
break;
case 29:
- DoScriptText(SAY_EVENT_END_02, me);
+ Talk(SAY_EVENT_END_02);
if (instance)
instance->SetData(DATA_BRANN_EVENT, DONE);
me->CastSpell(me, SPELL_REWARD_ACHIEVEMENT, true);
@@ -606,97 +600,97 @@ public:
case 30:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM)))
- DoScriptText(SAY_EVENT_END_03_ABED, temp);
+ temp->AI()->Talk(SAY_EVENT_END_03_ABED);
JumpToNextStep(8500);
break;
case 31:
- DoScriptText(SAY_EVENT_END_04, me);
+ Talk(SAY_EVENT_END_04);
JumpToNextStep(11500);
break;
case 32:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM)))
- DoScriptText(SAY_EVENT_END_05_ABED, temp);
+ temp->AI()->Talk(SAY_EVENT_END_05_ABED);
JumpToNextStep(11500);
break;
case 33:
- DoScriptText(SAY_EVENT_END_06, me);
+ Talk(SAY_EVENT_END_06);
JumpToNextStep(4500);
break;
case 34:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM)))
- DoScriptText(SAY_EVENT_END_07_ABED, temp);
+ temp->AI()->Talk(SAY_EVENT_END_07_ABED);
JumpToNextStep(22500);
break;
case 35:
- DoScriptText(SAY_EVENT_END_08, me);
+ Talk(SAY_EVENT_END_08);
JumpToNextStep(7500);
break;
case 36:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK)))
- DoScriptText(SAY_EVENT_END_09_KADD, temp);
+ temp->AI()->Talk(SAY_EVENT_END_09_KADD);
JumpToNextStep(18500);
break;
case 37:
- DoScriptText(SAY_EVENT_END_10, me);
+ Talk(SAY_EVENT_END_10);
JumpToNextStep(5500);
break;
case 38:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK)))
- DoScriptText(SAY_EVENT_END_11_KADD, temp);
+ temp->AI()->Talk(SAY_EVENT_END_11_KADD);
JumpToNextStep(20500);
break;
case 39:
- DoScriptText(SAY_EVENT_END_12, me);
+ Talk(SAY_EVENT_END_12);
JumpToNextStep(2500);
break;
case 40:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK)))
- DoScriptText(SAY_EVENT_END_13_KADD, temp);
+ temp->AI()->Talk(SAY_EVENT_END_13_KADD);
JumpToNextStep(19500);
break;
case 41:
- DoScriptText(SAY_EVENT_END_14, me);
+ Talk(SAY_EVENT_END_14);
JumpToNextStep(10500);
break;
case 42:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK)))
- DoScriptText(SAY_EVENT_END_15_MARN, temp);
+ temp->AI()->Talk(SAY_EVENT_END_15_MARN);
JumpToNextStep(6500);
break;
case 43:
- DoScriptText(SAY_EVENT_END_16, me);
+ Talk(SAY_EVENT_END_16);
JumpToNextStep(6500);
break;
case 44:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK)))
- DoScriptText(SAY_EVENT_END_17_MARN, temp);
+ temp->AI()->Talk(SAY_EVENT_END_17_MARN);
JumpToNextStep(25500);
break;
case 45:
- DoScriptText(SAY_EVENT_END_18, me);
+ Talk(SAY_EVENT_END_18);
JumpToNextStep(23500);
break;
case 46:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK)))
- DoScriptText(SAY_EVENT_END_19_MARN, temp);
+ temp->AI()->Talk(SAY_EVENT_END_19_MARN);
JumpToNextStep(3500);
break;
case 47:
- DoScriptText(SAY_EVENT_END_20, me);
+ Talk(SAY_EVENT_END_20);
JumpToNextStep(8500);
break;
case 48:
if (instance)
if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM)))
- DoScriptText(SAY_EVENT_END_21_ABED, temp);
+ temp->AI()->Talk(SAY_EVENT_END_21_ABED);
JumpToNextStep(5500);
break;
case 49:
@@ -723,7 +717,7 @@ public:
if (!bIsLowHP && HealthBelowPct(30))
{
- DoScriptText(SAY_LOW_HEALTH, me);
+ Talk(SAY_LOW_HEALTH);
bIsLowHP = true;
}
else if (bIsLowHP && !HealthBelowPct(30))
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
index 92e56d4dd9a..db8c7f38ef7 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
@@ -18,7 +18,7 @@
/* ScriptData
SDName: Assembly of Iron encounter
SD%Complete: 60%
-SDComment: Runes need DB support, chain lightning won't cast, supercharge won't cast (target error?) - it worked before during debugging.
+SDComment: chain lightning won't cast, supercharge don't work (auras don't stack from different casters)
SDCategory: Ulduar - Ulduar
EndScriptData */
@@ -33,6 +33,7 @@ enum AssemblySpells
// General
SPELL_SUPERCHARGE = 61920,
SPELL_BERSERK = 47008, // Hard enrage, don't know the correct ID.
+ SPELL_KILL_CREDIT = 65195, // spell_dbc
// Steelbreaker
SPELL_HIGH_VOLTAGE = 61890,
@@ -45,12 +46,9 @@ enum AssemblySpells
SPELL_SHIELD_OF_RUNES = 62274,
SPELL_SHIELD_OF_RUNES_BUFF = 62277,
SPELL_SUMMON_RUNE_OF_POWER = 63513,
- SPELL_RUNE_OF_POWER = 61974,
SPELL_RUNE_OF_DEATH = 62269,
SPELL_RUNE_OF_SUMMONING = 62273, // This is the spell that summons the rune
- SPELL_RUNE_OF_SUMMONING_VIS = 62019, // Visual
SPELL_RUNE_OF_SUMMONING_SUMMON = 62020, // Spell that summons
- SPELL_LIGHTNING_ELEMENTAL_PASSIVE = 62052,
// Stormcaller Brundir
SPELL_CHAIN_LIGHTNING = 61879,
@@ -59,7 +57,7 @@ enum AssemblySpells
SPELL_LIGHTNING_TENDRILS_10M = 61887,
SPELL_LIGHTNING_TENDRILS_25M = 63486,
SPELL_LIGHTNING_TENDRILS_VISUAL = 61883,
- SPELL_STORMSHIELD = 64187,
+ SPELL_STORMSHIELD = 64187
};
enum AssemblyEvents
@@ -88,115 +86,50 @@ enum AssemblyEvents
EVENT_ENDFLIGHT = 15,
EVENT_GROUND = 16,
EVENT_LAND = 17,
- EVENT_MOVE_POSITION = 18,
+ EVENT_MOVE_POSITION = 18
};
enum AssemblyActions
{
- ACTION_STEELBREAKER = 0,
- ACTION_MOLGEIM = 1,
- ACTION_BRUNDIR = 2,
- ACTION_ADD_CHARGE = 3,
+ ACTION_SUPERCHARGE = 1,
+ ACTION_ADD_CHARGE = 2
};
enum AssemblyYells
{
- SAY_STEELBREAKER_AGGRO = -1603020,
- SAY_STEELBREAKER_SLAY_1 = -1603021,
- SAY_STEELBREAKER_SLAY_2 = -1603022,
- SAY_STEELBREAKER_POWER = -1603023,
- SAY_STEELBREAKER_DEATH_1 = -1603024,
- SAY_STEELBREAKER_DEATH_2 = -1603025,
- SAY_STEELBREAKER_BERSERK = -1603026,
-
- SAY_MOLGEIM_AGGRO = -1603030,
- SAY_MOLGEIM_SLAY_1 = -1603031,
- SAY_MOLGEIM_SLAY_2 = -1603032,
- SAY_MOLGEIM_RUNE_DEATH = -1603033,
- SAY_MOLGEIM_SUMMON = -1603034,
- SAY_MOLGEIM_DEATH_1 = -1603035,
- SAY_MOLGEIM_DEATH_2 = -1603036,
- SAY_MOLGEIM_BERSERK = -1603037,
-
- SAY_BRUNDIR_AGGRO = -1603040,
- SAY_BRUNDIR_SLAY_1 = -1603041,
- SAY_BRUNDIR_SLAY_2 = -1603042,
- SAY_BRUNDIR_SPECIAL = -1603043,
- SAY_BRUNDIR_FLIGHT = -1603044,
- SAY_BRUNDIR_DEATH_1 = -1603045,
- SAY_BRUNDIR_DEATH_2 = -1603046,
- SAY_BRUNDIR_BERSERK = -1603047,
+ SAY_STEELBREAKER_AGGRO = 0,
+ SAY_STEELBREAKER_SLAY = 1,
+ SAY_STEELBREAKER_POWER = 2,
+ SAY_STEELBREAKER_DEATH = 3,
+ SAY_STEELBREAKER_ENCOUNTER_DEFEATED = 4,
+ SAY_STEELBREAKER_BERSERK = 5,
+
+ SAY_MOLGEIM_AGGRO = 0,
+ SAY_MOLGEIM_SLAY = 1,
+ SAY_MOLGEIM_RUNE_DEATH = 2,
+ SAY_MOLGEIM_SUMMON = 3,
+ SAY_MOLGEIM_DEATH = 4,
+ SAY_MOLGEIM_ENCOUNTER_DEFEATED = 5,
+ SAY_MOLGEIM_BERSERK = 6,
+
+ SAY_BRUNDIR_AGGRO = 0,
+ SAY_BRUNDIR_SLAY = 1,
+ SAY_BRUNDIR_SPECIAL = 2,
+ SAY_BRUNDIR_FLIGHT = 3,
+ SAY_BRUNDIR_DEATH = 4,
+ SAY_BRUNDIR_ENCOUNTER_DEFEATED = 5,
+ SAY_BRUNDIR_BERSERK = 6,
+ EMOTE_BRUNDIR_OVERLOAD = 7
};
enum AssemblyNPCs
{
- NPC_WORLD_TRIGGER = 22515,
+ NPC_WORLD_TRIGGER = 22515
};
-#define EMOTE_OVERLOAD "Stormcaller Brundir begins to Overload!" // Move it to DB
#define FLOOR_Z 427.28f
#define FINAL_FLIGHT_Z 435.0f
-bool IsEncounterComplete(InstanceScript* instance, Creature* me)
-{
- if (!instance || !me)
- return false;
-
- for (uint8 i = 0; i < 3; ++i)
- {
- uint64 guid = instance->GetData64(BOSS_STEELBREAKER + i);
- if (!guid)
- return false;
-
- if (Creature* boss = ObjectAccessor::GetCreature(*me, guid))
- {
- if (boss->isAlive())
- return false;
- }
- else
- return false;
- }
-
- return true;
-}
-
-void RespawnEncounter(InstanceScript* instance, Creature* me)
-{
- for (uint8 i = 0; i < 3; ++i)
- {
- uint64 guid = instance->GetData64(BOSS_STEELBREAKER + i);
- if (!guid)
- continue;
-
- if (Creature* boss = ObjectAccessor::GetCreature(*me, guid))
- {
- if (!boss->isAlive())
- {
- boss->Respawn();
- boss->GetMotionMaster()->MoveTargetedHome();
- }
- }
- }
-}
-
-void StartEncounter(InstanceScript* instance, Creature* me, Unit* /*target*/)
-{
- if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == IN_PROGRESS)
- return; // Prevent recursive calls
-
- instance->SetBossState(BOSS_ASSEMBLY_OF_IRON, IN_PROGRESS);
-
- for (uint8 i = 0; i < 3; ++i)
- {
- uint64 guid = instance->GetData64(BOSS_STEELBREAKER + i);
- if (!guid)
- continue;
-
- if (Creature* boss = ObjectAccessor::GetCreature(*me, guid))
- boss->SetInCombatWithZone();
- }
-}
-
class boss_steelbreaker : public CreatureScript
{
public:
@@ -204,12 +137,8 @@ class boss_steelbreaker : public CreatureScript
struct boss_steelbreakerAI : public BossAI
{
- boss_steelbreakerAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON)
- {
- instance = me->GetInstanceScript();
- }
+ boss_steelbreakerAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) { }
- InstanceScript* instance;
uint32 phase;
void Reset()
@@ -217,14 +146,12 @@ class boss_steelbreaker : public CreatureScript
_Reset();
phase = 0;
me->RemoveAllAuras();
- RespawnEncounter(instance, me);
}
- void EnterCombat(Unit* who)
+ void EnterCombat(Unit* /*who*/)
{
- StartEncounter(instance, me, who);
- DoScriptText(SAY_STEELBREAKER_AGGRO, me);
- DoZoneInCombat();
+ _EnterCombat();
+ Talk(SAY_STEELBREAKER_AGGRO);
DoCast(me, SPELL_HIGH_VOLTAGE);
events.SetPhase(++phase);
events.ScheduleEvent(EVENT_BERSERK, 900000);
@@ -235,8 +162,8 @@ class boss_steelbreaker : public CreatureScript
{
switch (action)
{
- case ACTION_STEELBREAKER:
- me->SetHealth(me->GetMaxHealth());
+ case ACTION_SUPERCHARGE:
+ me->SetFullHealth();
me->AddAura(SPELL_SUPERCHARGE, me);
events.SetPhase(++phase);
events.RescheduleEvent(EVENT_FUSION_PUNCH, 15000);
@@ -253,29 +180,33 @@ class boss_steelbreaker : public CreatureScript
void JustDied(Unit* /*killer*/)
{
- DoScriptText(RAND(SAY_STEELBREAKER_DEATH_1, SAY_STEELBREAKER_DEATH_2), me);
- if (IsEncounterComplete(instance, me))
+ _JustDied();
+
+ if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE)
{
- instance->SetBossState(BOSS_ASSEMBLY_OF_IRON, DONE);
- instance->SetBossState(BOSS_STEELBREAKER, DONE);
- instance->SetBossState(BOSS_MOLGEIM, DONE);
- instance->SetBossState(BOSS_BRUNDIR, DONE);
+ DoCastAOE(SPELL_KILL_CREDIT);
+ Talk(SAY_STEELBREAKER_ENCOUNTER_DEFEATED);
}
else
+ {
me->SetLootRecipient(NULL);
+ Talk(SAY_STEELBREAKER_DEATH);
+ //DoCastAOE(SPELL_SUPERCHARGE, true);
- if (Creature* Brundir = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_BRUNDIR)))
- if (Brundir->isAlive())
- Brundir->AI()->DoAction(ACTION_BRUNDIR);
+ if (Creature* Brundir = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BRUNDIR)))
+ if (Brundir->isAlive())
+ Brundir->AI()->DoAction(ACTION_SUPERCHARGE);
- if (Creature* Molgeim = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MOLGEIM)))
- if (Molgeim->isAlive())
- Molgeim->AI()->DoAction(ACTION_MOLGEIM);
+ if (Creature* Molgeim = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_MOLGEIM)))
+ if (Molgeim->isAlive())
+ Molgeim->AI()->DoAction(ACTION_SUPERCHARGE);
+ }
}
- void KilledUnit(Unit* /*who*/)
+ void KilledUnit(Unit* who)
{
- DoScriptText(RAND(SAY_STEELBREAKER_SLAY_1, SAY_STEELBREAKER_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_STEELBREAKER_SLAY);
if (phase == 3)
DoCast(me, SPELL_ELECTRICAL_CHARGE);
@@ -296,7 +227,7 @@ class boss_steelbreaker : public CreatureScript
switch (eventId)
{
case EVENT_BERSERK:
- DoScriptText(SAY_STEELBREAKER_BERSERK, me);
+ Talk(SAY_STEELBREAKER_BERSERK);
DoCast(SPELL_BERSERK);
events.CancelEvent(EVENT_BERSERK);
break;
@@ -311,7 +242,7 @@ class boss_steelbreaker : public CreatureScript
events.ScheduleEvent(EVENT_STATIC_DISRUPTION, urand(20000, 40000));
break;
case EVENT_OVERWHELMING_POWER:
- DoScriptText(SAY_STEELBREAKER_POWER, me);
+ Talk(SAY_STEELBREAKER_POWER);
DoCastVictim(SPELL_OVERWHELMING_POWER);
events.ScheduleEvent(EVENT_OVERWHELMING_POWER, RAID_MODE(60000, 35000));
break;
@@ -335,12 +266,8 @@ class boss_runemaster_molgeim : public CreatureScript
struct boss_runemaster_molgeimAI : public BossAI
{
- boss_runemaster_molgeimAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON)
- {
- instance = me->GetInstanceScript();
- }
+ boss_runemaster_molgeimAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) { }
- InstanceScript* instance;
uint32 phase;
void Reset()
@@ -348,14 +275,12 @@ class boss_runemaster_molgeim : public CreatureScript
_Reset();
phase = 0;
me->RemoveAllAuras();
- RespawnEncounter(instance, me);
}
- void EnterCombat(Unit* who)
+ void EnterCombat(Unit* /*who*/)
{
- StartEncounter(instance, me, who);
- DoScriptText(SAY_MOLGEIM_AGGRO, me);
- DoZoneInCombat();
+ _EnterCombat();
+ Talk(SAY_MOLGEIM_AGGRO);
events.SetPhase(++phase);
events.ScheduleEvent(EVENT_BERSERK, 900000);
events.ScheduleEvent(EVENT_SHIELD_OF_RUNES, 30000);
@@ -366,8 +291,9 @@ class boss_runemaster_molgeim : public CreatureScript
{
switch (action)
{
- case ACTION_MOLGEIM:
- me->SetHealth(me->GetMaxHealth());
+ case ACTION_SUPERCHARGE:
+ {
+ me->SetFullHealth();
me->AddAura(SPELL_SUPERCHARGE, me);
events.SetPhase(++phase);
events.RescheduleEvent(EVENT_SHIELD_OF_RUNES, 27000);
@@ -376,35 +302,40 @@ class boss_runemaster_molgeim : public CreatureScript
events.RescheduleEvent(EVENT_RUNE_OF_DEATH, 30000);
if (phase >= 3)
events.RescheduleEvent(EVENT_RUNE_OF_SUMMONING, urand(20000, 30000));
- break;
+ break;
+ }
}
}
void JustDied(Unit* /*killer*/)
{
- DoScriptText(RAND(SAY_MOLGEIM_DEATH_1, SAY_MOLGEIM_DEATH_2), me);
- if (IsEncounterComplete(instance, me))
+ _JustDied();
+
+ if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE)
{
- instance->SetBossState(BOSS_ASSEMBLY_OF_IRON, DONE);
- instance->SetBossState(BOSS_STEELBREAKER, DONE);
- instance->SetBossState(BOSS_MOLGEIM, DONE);
- instance->SetBossState(BOSS_BRUNDIR, DONE);
+ DoCastAOE(SPELL_KILL_CREDIT);
+ Talk(SAY_MOLGEIM_ENCOUNTER_DEFEATED);
}
else
+ {
me->SetLootRecipient(NULL);
+ Talk(SAY_MOLGEIM_DEATH);
+ //DoCastAOE(SPELL_SUPERCHARGE, true);
- if (Creature* Brundir = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_BRUNDIR)))
- if (Brundir->isAlive())
- Brundir->AI()->DoAction(ACTION_BRUNDIR);
+ if (Creature* Brundir = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BRUNDIR)))
+ if (Brundir->isAlive())
+ Brundir->AI()->DoAction(ACTION_SUPERCHARGE);
- if (Creature* Steelbreaker = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_STEELBREAKER)))
- if (Steelbreaker->isAlive())
- Steelbreaker->AI()->DoAction(ACTION_STEELBREAKER);
+ if (Creature* Steelbreaker = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_STEELBREAKER)))
+ if (Steelbreaker->isAlive())
+ Steelbreaker->AI()->DoAction(ACTION_SUPERCHARGE);
+ }
}
- void KilledUnit(Unit* /*who*/)
+ void KilledUnit(Unit* who)
{
- DoScriptText(RAND(SAY_MOLGEIM_SLAY_1, SAY_MOLGEIM_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_MOLGEIM_SLAY);
}
void UpdateAI(uint32 const diff)
@@ -422,28 +353,27 @@ class boss_runemaster_molgeim : public CreatureScript
switch (eventId)
{
case EVENT_BERSERK:
- DoScriptText(SAY_MOLGEIM_BERSERK, me);
+ Talk(SAY_MOLGEIM_BERSERK);
DoCast(SPELL_BERSERK);
events.CancelEvent(EVENT_BERSERK);
break;
case EVENT_RUNE_OF_POWER:
{
- Unit* target = NULL;
+ Unit* target = me;
switch (urand(0, 2))
{
- case 0:
- target = me;
- break;
case 1:
- if (Creature* Steelbreaker = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_STEELBREAKER)))
+ if (Creature* Steelbreaker = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_STEELBREAKER)))
if (Steelbreaker->isAlive())
target = Steelbreaker;
break;
case 2:
- if (Creature* Brundir = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_STEELBREAKER)))
+ if (Creature* Brundir = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_STEELBREAKER)))
if (Brundir->isAlive())
target = Brundir;
break;
+ default:
+ break;
}
DoCast(target, SPELL_SUMMON_RUNE_OF_POWER);
events.ScheduleEvent(EVENT_RUNE_OF_POWER, 60000);
@@ -454,13 +384,13 @@ class boss_runemaster_molgeim : public CreatureScript
events.ScheduleEvent(EVENT_SHIELD_OF_RUNES, urand(27000, 34000));
break;
case EVENT_RUNE_OF_DEATH:
- DoScriptText(SAY_MOLGEIM_RUNE_DEATH, me);
+ Talk(SAY_MOLGEIM_RUNE_DEATH);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_RUNE_OF_DEATH);
events.ScheduleEvent(EVENT_RUNE_OF_DEATH, urand(30000, 40000));
break;
case EVENT_RUNE_OF_SUMMONING:
- DoScriptText(SAY_MOLGEIM_SUMMON, me);
+ Talk(SAY_MOLGEIM_SUMMON);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_RUNE_OF_SUMMONING);
events.ScheduleEvent(EVENT_RUNE_OF_SUMMONING, urand(30000, 45000));
@@ -478,93 +408,6 @@ class boss_runemaster_molgeim : public CreatureScript
}
};
-class mob_rune_of_power : public CreatureScript
-{
- public:
- mob_rune_of_power() : CreatureScript("mob_rune_of_power") { }
-
- struct mob_rune_of_powerAI : public ScriptedAI
- {
- mob_rune_of_powerAI(Creature* creature) : ScriptedAI(creature)
- {
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- me->setFaction(16); // Same faction as bosses
- DoCast(SPELL_RUNE_OF_POWER);
-
- me->DespawnOrUnsummon(60000);
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new mob_rune_of_powerAI(creature);
- }
-};
-
-class mob_lightning_elemental : public CreatureScript
-{
- public:
- mob_lightning_elemental() : CreatureScript("mob_lightning_elemental") { }
-
- struct mob_lightning_elementalAI : public ScriptedAI
- {
- mob_lightning_elementalAI(Creature* creature) : ScriptedAI(creature)
- {
- me->SetInCombatWithZone();
- me->AddAura(SPELL_LIGHTNING_ELEMENTAL_PASSIVE, me);
- }
-
- // Nothing to do here, just let the creature chase players and procflags == 2 on the applied aura will trigger explosion
- };
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new mob_lightning_elementalAI(creature);
- }
-};
-
-class mob_rune_of_summoning : public CreatureScript
-{
- public:
- mob_rune_of_summoning() : CreatureScript("mob_rune_of_summoning") { }
-
- struct mob_rune_of_summoningAI : public ScriptedAI
- {
- mob_rune_of_summoningAI(Creature* creature) : ScriptedAI(creature)
- {
- me->AddAura(SPELL_RUNE_OF_SUMMONING_VIS, me);
- summonCount = 0;
- summonTimer = 2000;
- }
-
- uint32 summonCount;
- uint32 summonTimer;
-
- void UpdateAI(uint32 const diff)
- {
- if (summonTimer <= diff)
- SummonLightningElemental();
- else
- summonTimer -= diff;
- }
-
- void SummonLightningElemental()
- {
- me->CastSpell(me, SPELL_RUNE_OF_SUMMONING_SUMMON, false);
- if (++summonCount == 10) // TODO: Find out if this amount is right
- me->DespawnOrUnsummon();
- else
- summonTimer = 2000; // TODO: Find out of timer is right
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const
- {
- return new mob_rune_of_summoningAI(creature);
- }
-};
-
class boss_stormcaller_brundir : public CreatureScript
{
public:
@@ -572,12 +415,8 @@ class boss_stormcaller_brundir : public CreatureScript
struct boss_stormcaller_brundirAI : public BossAI
{
- boss_stormcaller_brundirAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON)
- {
- instance = me->GetInstanceScript();
- }
+ boss_stormcaller_brundirAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) { }
- InstanceScript* instance;
uint32 phase;
void Reset()
@@ -587,15 +426,13 @@ class boss_stormcaller_brundir : public CreatureScript
me->RemoveAllAuras();
me->SetDisableGravity(false);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_INTERRUPT, false); // Should be interruptable unless overridden by spell (Overload)
- me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, false); // Reset immumity, Brundir should be stunnable by default
- RespawnEncounter(instance, me);
+ me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, false); // Reset immumity, Brundir should be stunnable by default
}
- void EnterCombat(Unit* who)
+ void EnterCombat(Unit* /*who*/)
{
- StartEncounter(instance, me, who);
- DoScriptText(SAY_BRUNDIR_AGGRO, me);
- DoZoneInCombat();
+ _EnterCombat();
+ Talk(SAY_BRUNDIR_AGGRO);
events.SetPhase(++phase);
events.ScheduleEvent(EVENT_MOVE_POSITION, 1000);
events.ScheduleEvent(EVENT_BERSERK, 900000);
@@ -607,8 +444,9 @@ class boss_stormcaller_brundir : public CreatureScript
{
switch (action)
{
- case ACTION_BRUNDIR:
- me->SetHealth(me->GetMaxHealth());
+ case ACTION_SUPERCHARGE:
+ {
+ me->SetFullHealth();
me->AddAura(SPELL_SUPERCHARGE, me);
events.SetPhase(++phase);
events.RescheduleEvent(EVENT_CHAIN_LIGHTNING, urand(7000, 12000));
@@ -619,42 +457,46 @@ class boss_stormcaller_brundir : public CreatureScript
{
DoCast(me, SPELL_STORMSHIELD);
events.RescheduleEvent(EVENT_LIGHTNING_TENDRILS, urand(50000, 60000));
- me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, true); // Apply immumity to stuns
+ me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, true); // Apply immumity to stuns
}
- break;
-
+ break;
+ }
}
}
void JustDied(Unit* /*killer*/)
{
- DoScriptText(RAND(SAY_BRUNDIR_DEATH_1, SAY_BRUNDIR_DEATH_2), me);
- if (IsEncounterComplete(instance, me))
+ _JustDied();
+
+ if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE)
{
- instance->SetBossState(BOSS_ASSEMBLY_OF_IRON, DONE);
- instance->SetBossState(BOSS_STEELBREAKER, DONE);
- instance->SetBossState(BOSS_MOLGEIM, DONE);
- instance->SetBossState(BOSS_BRUNDIR, DONE);
+ DoCastAOE(SPELL_KILL_CREDIT);
+ Talk(SAY_BRUNDIR_ENCOUNTER_DEFEATED);
}
else
+ {
me->SetLootRecipient(NULL);
+ Talk(SAY_BRUNDIR_DEATH);
+ //DoCastAOE(SPELL_SUPERCHARGE, true);
- if (Creature* Molgeim = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_MOLGEIM)))
- if (Molgeim->isAlive())
- Molgeim->AI()->DoAction(ACTION_MOLGEIM);
+ if (Creature* Molgeim = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_MOLGEIM)))
+ if (Molgeim->isAlive())
+ Molgeim->AI()->DoAction(ACTION_SUPERCHARGE);
- if (Creature* Steelbreaker = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_STEELBREAKER)))
- if (Steelbreaker->isAlive())
- Steelbreaker->AI()->DoAction(ACTION_STEELBREAKER);
+ if (Creature* Steelbreaker = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_STEELBREAKER)))
+ if (Steelbreaker->isAlive())
+ Steelbreaker->AI()->DoAction(ACTION_SUPERCHARGE);
+ }
// Prevent to have Brundir somewhere in the air when he die in Air phase
if (me->GetPositionZ() > FLOOR_Z)
me->GetMotionMaster()->MoveFall();
}
- void KilledUnit(Unit* /*who*/)
+ void KilledUnit(Unit* who)
{
- DoScriptText(RAND(SAY_BRUNDIR_SLAY_1, SAY_BRUNDIR_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_BRUNDIR_SLAY);
}
void UpdateAI(uint32 const diff)
@@ -672,7 +514,7 @@ class boss_stormcaller_brundir : public CreatureScript
switch (eventId)
{
case EVENT_BERSERK:
- DoScriptText(SAY_BRUNDIR_BERSERK, me);
+ Talk(SAY_BRUNDIR_BERSERK);
DoCast(SPELL_BERSERK);
events.CancelEvent(EVENT_BERSERK);
break;
@@ -682,8 +524,8 @@ class boss_stormcaller_brundir : public CreatureScript
events.ScheduleEvent(EVENT_CHAIN_LIGHTNING, urand(7000, 10000));
break;
case EVENT_OVERLOAD:
- me->MonsterTextEmote(EMOTE_OVERLOAD, 0, true);
- DoScriptText(SAY_BRUNDIR_SPECIAL, me);
+ Talk(EMOTE_BRUNDIR_OVERLOAD);
+ Talk(SAY_BRUNDIR_SPECIAL);
DoCast(SPELL_OVERLOAD);
events.ScheduleEvent(EVENT_OVERLOAD, urand(60000, 120000));
break;
@@ -692,7 +534,7 @@ class boss_stormcaller_brundir : public CreatureScript
events.ScheduleEvent(EVENT_LIGHTNING_WHIRL, urand(15000, 20000));
break;
case EVENT_LIGHTNING_TENDRILS:
- DoScriptText(SAY_BRUNDIR_FLIGHT, me);
+ Talk(SAY_BRUNDIR_FLIGHT);
DoCast(RAID_MODE(SPELL_LIGHTNING_TENDRILS_10M, SPELL_LIGHTNING_TENDRILS_25M));
DoCast(SPELL_LIGHTNING_TENDRILS_VISUAL);
me->AttackStop();
@@ -798,7 +640,7 @@ class spell_assembly_meltdown : public SpellScriptLoader
void HandleInstaKill(SpellEffIndex /*effIndex*/)
{
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
- if (Creature* Steelbreaker = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(BOSS_STEELBREAKER)))
+ if (Creature* Steelbreaker = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_STEELBREAKER)))
Steelbreaker->AI()->DoAction(ACTION_ADD_CHARGE);
}
@@ -814,14 +656,53 @@ class spell_assembly_meltdown : public SpellScriptLoader
}
};
+class spell_assembly_rune_of_summoning : public SpellScriptLoader
+{
+ public:
+ spell_assembly_rune_of_summoning() : SpellScriptLoader("spell_assembly_rune_of_summoning") { }
+
+ class spell_assembly_rune_of_summoning_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_assembly_rune_of_summoning_AuraScript);
+
+ bool Validate(SpellInfo const* /*spell*/)
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_RUNE_OF_SUMMONING_SUMMON))
+ return false;
+ return true;
+ }
+
+ void HandlePeriodic(AuraEffect const* aurEff)
+ {
+ PreventDefaultAction();
+ GetTarget()->CastSpell(GetTarget(), SPELL_RUNE_OF_SUMMONING_SUMMON, true, NULL, aurEff, GetTarget()->isSummon() ? GetTarget()->ToTempSummon()->GetSummonerGUID() : 0);
+ }
+
+ void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ if (TempSummon* summ = GetTarget()->ToTempSummon())
+ summ->DespawnOrUnsummon(1);
+ }
+
+ void Register()
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_assembly_rune_of_summoning_AuraScript::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
+ OnEffectRemove += AuraEffectRemoveFn(spell_assembly_rune_of_summoning_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+ };
+
+ AuraScript* GetAuraScript() const
+ {
+ return new spell_assembly_rune_of_summoning_AuraScript();
+ }
+};
+
void AddSC_boss_assembly_of_iron()
{
new boss_steelbreaker();
new boss_runemaster_molgeim();
new boss_stormcaller_brundir();
- new mob_lightning_elemental();
- new mob_rune_of_summoning();
- new mob_rune_of_power();
new spell_shield_of_runes();
new spell_assembly_meltdown();
+ new spell_assembly_rune_of_summoning();
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
index bfe158051b1..bd063877d39 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
@@ -76,16 +76,12 @@ enum AuriayaEvents
enum AuriayaYells
{
- // Yells
- SAY_AGGRO = -1603050,
- SAY_SLAY_1 = -1603051,
- SAY_SLAY_2 = -1603052,
- SAY_DEATH = -1603053,
- SAY_BERSERK = -1603054,
-
- // Emotes
- EMOTE_FEAR = -1603055,
- EMOTE_DEFENDER = -1603056,
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_BERSERK = 3,
+ EMOTE_FEAR = 4,
+ EMOTE_DEFENDER = 5
};
enum AuriayaActions
@@ -121,7 +117,7 @@ class boss_auriaya : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_SCREECH, urand(45000, 65000));
events.ScheduleEvent(EVENT_BLAST, urand(20000, 25000));
@@ -131,9 +127,10 @@ class boss_auriaya : public CreatureScript
events.ScheduleEvent(EVENT_BERSERK, 600000);
}
- void KilledUnit(Unit* /*who*/)
+ void KilledUnit(Unit* who)
{
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
}
void JustSummoned(Creature* summoned)
@@ -206,8 +203,8 @@ class boss_auriaya : public CreatureScript
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
_JustDied();
+ Talk(SAY_DEATH);
}
void UpdateAI(uint32 const diff)
@@ -229,7 +226,7 @@ class boss_auriaya : public CreatureScript
events.ScheduleEvent(EVENT_SCREECH, urand(40000, 60000));
break;
case EVENT_TERRIFYING:
- DoScriptText(EMOTE_FEAR, me);
+ Talk(EMOTE_FEAR);
DoCast(SPELL_TERRIFYING_SCREECH);
events.ScheduleEvent(EVENT_TERRIFYING, urand(20000, 30000));
break;
@@ -238,7 +235,7 @@ class boss_auriaya : public CreatureScript
events.ScheduleEvent(EVENT_BLAST, urand(25000, 35000));
break;
case EVENT_DEFENDER:
- DoScriptText(EMOTE_DEFENDER, me);
+ Talk(EMOTE_DEFENDER);
DoCast(SPELL_DEFENDER_TRIGGER);
if (Creature* trigger = me->FindNearestCreature(NPC_FERAL_DEFENDER_TRIGGER, 15.0f, true))
DoCast(trigger, SPELL_ACTIVATE_DEFENDER, true);
@@ -262,7 +259,7 @@ class boss_auriaya : public CreatureScript
break;
case EVENT_BERSERK:
DoCast(me, SPELL_BERSERK, true);
- DoScriptText(SAY_BERSERK, me);
+ Talk(SAY_BERSERK);
events.CancelEvent(EVENT_BERSERK);
break;
}
@@ -296,17 +293,17 @@ class npc_auriaya_seeping_trigger : public CreatureScript
instance = me->GetInstanceScript();
}
- void Reset()
- {
- me->DespawnOrUnsummon(600000);
- DoCast(me, SPELL_SEEPING_ESSENCE);
- }
+ void Reset()
+ {
+ me->DespawnOrUnsummon(600000);
+ DoCast(me, SPELL_SEEPING_ESSENCE);
+ }
- void UpdateAI(uint32 const /*diff*/)
- {
- if (instance->GetBossState(BOSS_AURIAYA) != IN_PROGRESS)
- me->DespawnOrUnsummon();
- }
+ void UpdateAI(uint32 const /*diff*/)
+ {
+ if (instance->GetBossState(BOSS_AURIAYA) != IN_PROGRESS)
+ me->DespawnOrUnsummon();
+ }
private:
InstanceScript* instance;
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
index a26f5763472..921d67d6d65 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -141,9 +141,6 @@ enum Vehicles
VEHICLE_DEMOLISHER = 33109,
};
-#define EMOTE_PURSUE "Flame Leviathan pursues $N."
-#define EMOTE_OVERLOAD "Flame Leviathan's circuits overloaded."
-#define EMOTE_REPAIR "Automatic repair sequence initiated."
#define DATA_SHUTOUT 29112912 // 2911, 2912 are achievement IDs
#define DATA_ORBIT_ACHIEVEMENTS 1
#define VEHICLE_SPAWNS 5
@@ -151,22 +148,21 @@ enum Vehicles
enum Yells
{
- SAY_AGGRO = -1603060,
- SAY_SLAY = -1603061,
- SAY_DEATH = -1603062,
- SAY_TARGET_1 = -1603063,
- SAY_TARGET_2 = -1603064,
- SAY_TARGET_3 = -1603065,
- SAY_HARDMODE = -1603066,
- SAY_TOWER_NONE = -1603067,
- SAY_TOWER_FROST = -1603068,
- SAY_TOWER_FLAME = -1603069,
- SAY_TOWER_NATURE = -1603070,
- SAY_TOWER_STORM = -1603071,
- SAY_PLAYER_RIDING = -1603072,
- SAY_OVERLOAD_1 = -1603073,
- SAY_OVERLOAD_2 = -1603074,
- SAY_OVERLOAD_3 = -1603075,
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_TARGET = 3,
+ SAY_HARDMODE = 4,
+ SAY_TOWER_NONE = 5,
+ SAY_TOWER_FROST = 6,
+ SAY_TOWER_FLAME = 7,
+ SAY_TOWER_NATURE = 8,
+ SAY_TOWER_STORM = 9,
+ SAY_PLAYER_RIDING = 10,
+ SAY_OVERLOAD = 11,
+ EMOTE_PURSUE = 12,
+ EMOTE_OVERLOAD = 13,
+ EMOTE_REPAIR = 14
};
enum MiscellanousData
@@ -179,15 +175,8 @@ enum MiscellanousData
FOUR_SEATS = 4,
};
-Position const Center[]=
-{
- {354.8771f, -12.90240f, 409.803650f, 0.0f},
-};
-
-Position const InfernoStart[]=
-{
- {390.93f, -13.91f, 409.81f, 0.0f},
-};
+Position const Center = { 354.8771f, -12.90240f, 409.803650f, 0.0f };
+Position const InfernoStart = { 390.93f, -13.91f, 409.81f, 0.0f };
Position const PosSiege[VEHICLE_SPAWNS] =
{
@@ -320,12 +309,12 @@ class boss_flame_leviathan : public CreatureScript
}
if (!towerOfLife && !towerOfFrost && !towerOfFlames && !towerOfStorms)
- DoScriptText(SAY_TOWER_NONE, me);
+ Talk(SAY_TOWER_NONE);
else
- DoScriptText(SAY_HARDMODE, me);
+ Talk(SAY_HARDMODE);
}
else
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
}
void JustDied(Unit* /*killer*/)
@@ -334,7 +323,7 @@ class boss_flame_leviathan : public CreatureScript
// Set Field Flags 67108928 = 64 | 67108864 = UNIT_FLAG_UNK_6 | UNIT_FLAG_SKINNABLE
// Set DynFlags 12
// Set NPCFlags 0
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
}
void SpellHit(Unit* /*caster*/, SpellInfo const* spell)
@@ -397,7 +386,7 @@ class boss_flame_leviathan : public CreatureScript
switch (eventId)
{
case EVENT_PURSUE:
- DoScriptText(RAND(SAY_TARGET_1, SAY_TARGET_2, SAY_TARGET_3), me);
+ Talk(SAY_TARGET);
DoCast(SPELL_PURSUED); // Will select target in spellscript
events.ScheduleEvent(EVENT_PURSUE, 35*IN_MILLISECONDS);
break;
@@ -420,8 +409,8 @@ class boss_flame_leviathan : public CreatureScript
events.ScheduleEvent(EVENT_SUMMON, 2*IN_MILLISECONDS);
break;
case EVENT_SHUTDOWN:
- DoScriptText(RAND(SAY_OVERLOAD_1, SAY_OVERLOAD_2, SAY_OVERLOAD_3), me);
- me->MonsterTextEmote(EMOTE_OVERLOAD, 0, true);
+ Talk(SAY_OVERLOAD);
+ Talk(EMOTE_OVERLOAD);
me->CastSpell(me, SPELL_SYSTEMS_SHUTDOWN, true);
if (Shutout)
Shutout = false;
@@ -429,7 +418,7 @@ class boss_flame_leviathan : public CreatureScript
events.DelayEvents(20 * IN_MILLISECONDS, 0);
break;
case EVENT_REPAIR:
- me->MonsterTextEmote(EMOTE_REPAIR, 0, true);
+ Talk(EMOTE_REPAIR);
me->ClearUnitState(UNIT_STATE_STUNNED | UNIT_STATE_ROOT);
events.ScheduleEvent(EVENT_SHUTDOWN, 150*IN_MILLISECONDS);
events.CancelEvent(EVENT_REPAIR);
@@ -440,12 +429,12 @@ class boss_flame_leviathan : public CreatureScript
if (Creature* thorim = DoSummon(NPC_THORIM_BEACON, me, float(urand(20, 60)), 20000, TEMPSUMMON_TIMED_DESPAWN))
thorim->GetMotionMaster()->MoveRandom(100);
}
- DoScriptText(SAY_TOWER_STORM, me);
+ Talk(SAY_TOWER_STORM);
events.CancelEvent(EVENT_THORIM_S_HAMMER);
break;
case EVENT_MIMIRON_S_INFERNO: // Tower of Flames
- me->SummonCreature(NPC_MIMIRON_BEACON, InfernoStart->GetPositionX(), InfernoStart->GetPositionY(), InfernoStart->GetPositionZ());
- DoScriptText(SAY_TOWER_FLAME, me);
+ me->SummonCreature(NPC_MIMIRON_BEACON, InfernoStart);
+ Talk(SAY_TOWER_FLAME);
events.CancelEvent(EVENT_MIMIRON_S_INFERNO);
break;
case EVENT_HODIR_S_FURY: // Tower of Frost
@@ -454,11 +443,11 @@ class boss_flame_leviathan : public CreatureScript
if (Creature* hodir = DoSummon(NPC_HODIR_BEACON, me, 50, 0))
hodir->GetMotionMaster()->MoveRandom(100);
}
- DoScriptText(SAY_TOWER_FROST, me);
+ Talk(SAY_TOWER_FROST);
events.CancelEvent(EVENT_HODIR_S_FURY);
break;
case EVENT_FREYA_S_WARD: // Tower of Nature
- DoScriptText(SAY_TOWER_NATURE, me);
+ Talk(SAY_TOWER_NATURE);
for (int32 i = 0; i < 4; ++i)
me->SummonCreature(NPC_FREYA_BEACON, FreyaBeacons[i]);
@@ -529,8 +518,8 @@ class boss_flame_leviathan : public CreatureScript
case ACTION_MOVE_TO_CENTER_POSITION: // Triggered by 2 Collossus near door
if (!me->isDead())
{
- me->SetHomePosition(Center->GetPositionX(), Center->GetPositionY(), Center->GetPositionZ(), 0);
- me->GetMotionMaster()->MoveCharge(Center->GetPositionX(), Center->GetPositionY(), Center->GetPositionZ()); //position center
+ me->SetHomePosition(Center);
+ me->GetMotionMaster()->MoveCharge(Center.GetPositionX(), Center.GetPositionY(), Center.GetPositionZ()); // position center
me->SetReactState(REACT_AGGRESSIVE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED);
return;
@@ -593,8 +582,8 @@ class boss_flame_leviathan_seat : public CreatureScript
{
if (!apply)
return;
- else
- DoScriptText(SAY_PLAYER_RIDING, me);
+ else if (Creature* leviathan = me->GetVehicleCreatureBase())
+ leviathan->AI()->Talk(SAY_PLAYER_RIDING);
if (Creature* turret = me->GetVehicleKit()->GetPassenger(SEAT_TURRET)->ToCreature())
{
@@ -887,7 +876,7 @@ class npc_colossus : public CreatureScript
void JustDied(Unit* /*killer*/)
{
- if (me->GetHomePosition().IsInDist(Center, 50.f))
+ if (me->GetHomePosition().IsInDist(&Center, 50.f))
instance->SetData(DATA_COLOSSUS, instance->GetData(DATA_COLOSSUS)+1);
}
@@ -1187,7 +1176,7 @@ class npc_lorekeeper : public CreatureScript
if (Creature* Branz = creature->FindNearestCreature(NPC_BRANZ_BRONZBEARD, 1000, true))
{
Delorah->GetMotionMaster()->MovePoint(0, Branz->GetPositionX()-4, Branz->GetPositionY(), Branz->GetPositionZ());
- //TODO DoScriptText(xxxx, Delorah, Branz); when reached at branz
+ //TODO Delorah->AI()->Talk(xxxx, Branz->GetGUID()); when reached at branz
}
}
}
@@ -1700,7 +1689,7 @@ class spell_pursue : public SpellScriptLoader
{
if (IS_PLAYER_GUID(itr->second.Passenger))
{
- caster->MonsterTextEmote(EMOTE_PURSUE, itr->second.Passenger, true);
+ caster->AI()->Talk(EMOTE_PURSUE, itr->second.Passenger);
return;
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index f60922c426c..b894706e0bf 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -27,34 +27,23 @@
enum FreyaYells
{
// Freya
- SAY_AGGRO = -1603180,
- SAY_AGGRO_WITH_ELDER = -1603181,
- SAY_SLAY_1 = -1603182,
- SAY_SLAY_2 = -1603183,
- SAY_DEATH = -1603184,
- SAY_BERSERK = -1603185,
- SAY_SUMMON_CONSERVATOR = -1603186,
- SAY_SUMMON_TRIO = -1603187,
- SAY_SUMMON_LASHERS = -1603188,
- SAY_YS_HELP = -1603189,
-
- // Elder Brightleaf
- SAY_BRIGHTLEAF_AGGRO = -1603190,
- SAY_BRIGHTLEAF_SLAY_1 = -1603191,
- SAY_BRIGHTLEAF_SLAY_2 = -1603192,
- SAY_BRIGHTLEAF_DEATH = -1603193,
-
- // Elder Ironbranch
- SAY_IRONBRANCH_AGGRO = -1603194,
- SAY_IRONBRANCH_SLAY_1 = -1603195,
- SAY_IRONBRANCH_SLAY_2 = -1603196,
- SAY_IRONBRANCH_DEATH = -1603197,
-
- // Elder Stonebark
- SAY_STONEBARK_AGGRO = -1603198,
- SAY_STONEBARK_SLAY_1 = -1603199,
- SAY_STONEBARK_SLAY_2 = -1603200,
- SAY_STONEBARK_DEATH = -1603201,
+ SAY_AGGRO = 0,
+ SAY_AGGRO_WITH_ELDER = 1,
+ SAY_SLAY = 2,
+ SAY_DEATH = 3,
+ SAY_BERSERK = 4,
+ SAY_SUMMON_CONSERVATOR = 5,
+ SAY_SUMMON_TRIO = 6,
+ SAY_SUMMON_LASHERS = 7,
+ EMOTE_LIFEBINDERS_GIFT = 8,
+ EMOTE_ALLIES_OF_NATURE = 9,
+ EMOTE_GROUND_TREMOR = 10,
+ EMOTE_IRON_ROOTS = 11,
+
+ // Elder Brightleaf / Elder Ironbranch / Elder Stonebark
+ SAY_ELDER_AGGRO = 0,
+ SAY_ELDER_SLAY = 1,
+ SAY_ELDER_DEATH = 2
};
enum FreyaSpells
@@ -143,7 +132,7 @@ enum FreyaSpells
// Nature Bomb
SPELL_NATURE_BOMB = 64587,
SPELL_OBJECT_BOMB = 64600,
- SPELL_SUMMON_NATURE_BOMB = 64606,
+ SPELL_SUMMON_NATURE_BOMB = 64604,
// Unstable Sun Beam
SPELL_UNSTABLE_SUN_BEAM = 62211,
@@ -159,7 +148,7 @@ enum FreyaSpells
// Attuned To Nature spells
SPELL_ATTUNED_TO_NATURE_2_DOSE_REDUCTION = 62524,
SPELL_ATTUNED_TO_NATURE_10_DOSE_REDUCTION = 62525,
- SPELL_ATTUNED_TO_NATURE_25_DOSE_REDUCTION = 62521,
+ SPELL_ATTUNED_TO_NATURE_25_DOSE_REDUCTION = 62521
};
enum FreyaNpcs
@@ -177,13 +166,13 @@ enum FreyaNpcs
NPC_IRON_ROOTS = 33088,
NPC_STRENGTHENED_IRON_ROOTS = 33168,
- OBJECT_NATURE_BOMB = 194902,
+ OBJECT_NATURE_BOMB = 194902
};
enum FreyaActions
{
ACTION_ELDER_DEATH = 1,
- ACTION_ELDER_FREYA_KILLED = 2,
+ ACTION_ELDER_FREYA_KILLED = 2
};
enum FreyaEvents
@@ -211,13 +200,16 @@ enum FreyaEvents
// Elder Brightleaf
EVENT_SOLAR_FLARE = 15,
EVENT_UNSTABLE_SUN_BEAM = 16,
- EVENT_FLUX = 17,
+ EVENT_FLUX = 17
};
-#define WAVE_TIME 60000 // Normal wave is one minute
-#define TIME_DIFFERENCE 10000 // If difference between waveTime and WAVE_TIME is bigger then TIME_DIFFERENCE, schedule EVENT_WAVE in 10 seconds
-#define DATA_GETTING_BACK_TO_NATURE 1
-#define DATA_KNOCK_ON_WOOD 2
+enum Misc
+{
+ WAVE_TIME = 60000, // Normal wave is one minute
+ TIME_DIFFERENCE = 10000, // If difference between waveTime and WAVE_TIME is bigger then TIME_DIFFERENCE, schedule EVENT_WAVE in 10 seconds
+ DATA_GETTING_BACK_TO_NATURE = 1,
+ DATA_KNOCK_ON_WOOD = 2
+};
class npc_iron_roots : public CreatureScript
{
@@ -273,9 +265,7 @@ class boss_freya : public CreatureScript
struct boss_freyaAI : public BossAI
{
- boss_freyaAI(Creature* creature) : BossAI(creature, BOSS_FREYA)
- {
- }
+ boss_freyaAI(Creature* creature) : BossAI(creature, BOSS_FREYA) { }
uint64 ElementalGUID[3][2];
@@ -316,9 +306,10 @@ class boss_freya : public CreatureScript
random[n] = false;
}
- void KilledUnit(Unit* /*who*/)
+ void KilledUnit(Unit* who)
{
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
}
void DamageTaken(Unit* who, uint32& damage)
@@ -369,9 +360,9 @@ class boss_freya : public CreatureScript
}
if (elderCount == 0)
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
else
- DoScriptText(SAY_AGGRO_WITH_ELDER, me);
+ Talk(SAY_AGGRO_WITH_ELDER);
me->CastCustomSpell(SPELL_ATTUNED_TO_NATURE, SPELLVALUE_AURA_STACK, 150, me, true);
@@ -409,7 +400,7 @@ class boss_freya : public CreatureScript
switch (eventId)
{
case EVENT_ENRAGE:
- DoScriptText(SAY_BERSERK, me);
+ Talk(SAY_BERSERK);
DoCast(me, SPELL_ENRAGE);
break;
case EVENT_SUNBEAM:
@@ -418,17 +409,9 @@ class boss_freya : public CreatureScript
events.ScheduleEvent(EVENT_SUNBEAM, urand(10000, 15000));
break;
case EVENT_NATURE_BOMB:
- {
- // On every player
- std::list<Player*> PlayerList;
- Trinity::AnyPlayerInObjectRangeCheck checker(me, 50.0f);
- Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(me, PlayerList, checker);
- me->VisitNearbyWorldObject(50.0f, searcher);
- for (std::list<Player*>::const_iterator itr = PlayerList.begin(); itr != PlayerList.end(); ++itr)
- (*itr)->CastSpell(*itr, SPELL_SUMMON_NATURE_BOMB, true);
+ DoCastAOE(SPELL_SUMMON_NATURE_BOMB, true);
events.ScheduleEvent(EVENT_NATURE_BOMB, urand(10000, 12000));
break;
- }
case EVENT_UNSTABLE_ENERGY:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true))
DoCast(target, SPELL_FREYA_UNSTABLE_SUNBEAM, true);
@@ -442,15 +425,18 @@ class boss_freya : public CreatureScript
events.ScheduleEvent(EVENT_NATURE_BOMB, urand(10000, 20000));
break;
case EVENT_EONAR_GIFT:
+ Talk(EMOTE_LIFEBINDERS_GIFT);
DoCast(me, SPELL_SUMMON_EONAR_GIFT);
events.ScheduleEvent(EVENT_EONAR_GIFT, urand(40000, 50000));
break;
case EVENT_STRENGTHENED_IRON_ROOTS:
+ Talk(EMOTE_IRON_ROOTS);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true, -SPELL_ROOTS_FREYA))
target->CastSpell(target, SPELL_ROOTS_FREYA, true); // This must be casted by Target self
events.ScheduleEvent(EVENT_STRENGTHENED_IRON_ROOTS, urand(12000, 20000));
break;
case EVENT_GROUND_TREMOR:
+ Talk(EMOTE_GROUND_TREMOR);
DoCastAOE(SPELL_FREYA_GROUND_TREMOR);
events.ScheduleEvent(EVENT_GROUND_TREMOR, urand(25000, 28000));
break;
@@ -573,20 +559,21 @@ class boss_freya : public CreatureScript
switch (GetWaveId())
{
case 0:
- DoScriptText(SAY_SUMMON_LASHERS, me);
+ Talk(SAY_SUMMON_LASHERS);
for (uint8 n = 0; n < 10; ++n)
DoCast(SPELL_SUMMON_LASHERS);
break;
case 1:
- DoScriptText(SAY_SUMMON_TRIO, me);
+ Talk(SAY_SUMMON_TRIO);
DoCast(SPELL_SUMMON_TRIO);
trioWaveCount++;
break;
case 2:
- DoScriptText(SAY_SUMMON_CONSERVATOR, me);
+ Talk(SAY_SUMMON_CONSERVATOR);
DoCast(SPELL_SUMMON_ANCIENT_CONSERVATOR);
break;
}
+ Talk(EMOTE_ALLIES_OF_NATURE);
waveCount++;
}
@@ -602,7 +589,7 @@ class boss_freya : public CreatureScript
me->CastSpell((Unit*)NULL, summonSpell[me->GetMap()->GetDifficulty()][elderCount], true);
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
me->SetReactState(REACT_PASSIVE);
_JustDied();
me->RemoveAllAuras();
@@ -705,17 +692,18 @@ class boss_elder_brightleaf : public CreatureScript
lumberjack = false;
}
- void KilledUnit(Unit* /*who*/)
+ void KilledUnit(Unit* who)
{
- DoScriptText(RAND(SAY_BRIGHTLEAF_SLAY_1, SAY_BRIGHTLEAF_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_ELDER_SLAY);
}
void JustDied(Unit* killer)
{
_JustDied();
- DoScriptText(SAY_BRIGHTLEAF_DEATH, me);
+ Talk(SAY_ELDER_DEATH);
- if (killer && killer->GetTypeId() == TYPEID_PLAYER)
+ if (killer->GetTypeId() == TYPEID_PLAYER)
{
if (Creature* Ironbranch = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_IRONBRANCH)))
Ironbranch->AI()->DoAction(ACTION_ELDER_DEATH);
@@ -729,7 +717,7 @@ class boss_elder_brightleaf : public CreatureScript
{
_EnterCombat();
if (!me->HasAura(SPELL_DRAINED_OF_POWER))
- DoScriptText(SAY_BRIGHTLEAF_AGGRO, me);
+ Talk(SAY_ELDER_AGGRO);
}
void UpdateAI(uint32 const diff)
@@ -825,17 +813,18 @@ class boss_elder_stonebark : public CreatureScript
lumberjack = false;
}
- void KilledUnit(Unit* /*who*/)
+ void KilledUnit(Unit* who)
{
- DoScriptText(RAND(SAY_STONEBARK_SLAY_1, SAY_STONEBARK_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_ELDER_SLAY);
}
void JustDied(Unit* killer)
{
_JustDied();
- DoScriptText(SAY_STONEBARK_DEATH, me);
+ Talk(SAY_ELDER_DEATH);
- if (killer && killer->GetTypeId() == TYPEID_PLAYER)
+ if (killer->GetTypeId() == TYPEID_PLAYER)
{
if (Creature* Ironbranch = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_IRONBRANCH)))
Ironbranch->AI()->DoAction(ACTION_ELDER_DEATH);
@@ -849,7 +838,7 @@ class boss_elder_stonebark : public CreatureScript
{
_EnterCombat();
if (!me->HasAura(SPELL_DRAINED_OF_POWER))
- DoScriptText(SAY_STONEBARK_AGGRO, me);
+ Talk(SAY_ELDER_AGGRO);
}
void DamageTaken(Unit* who, uint32& damage)
@@ -951,17 +940,18 @@ class boss_elder_ironbranch : public CreatureScript
lumberjack = false;
}
- void KilledUnit(Unit* /*who*/)
+ void KilledUnit(Unit* who)
{
- DoScriptText(RAND(SAY_IRONBRANCH_SLAY_1, SAY_IRONBRANCH_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_ELDER_SLAY);
}
void JustDied(Unit* killer)
{
_JustDied();
- DoScriptText(SAY_IRONBRANCH_DEATH, me);
+ Talk(SAY_ELDER_DEATH);
- if (killer && killer->GetTypeId() == TYPEID_PLAYER)
+ if (killer->GetTypeId() == TYPEID_PLAYER)
{
if (Creature* Brightleaf = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_BRIGHTLEAF)))
Brightleaf->AI()->DoAction(ACTION_ELDER_DEATH);
@@ -975,7 +965,7 @@ class boss_elder_ironbranch : public CreatureScript
{
_EnterCombat();
if (!me->HasAura(SPELL_DRAINED_OF_POWER))
- DoScriptText(SAY_IRONBRANCH_AGGRO, me);
+ Talk(SAY_ELDER_AGGRO);
}
void UpdateAI(uint32 const diff)
@@ -1530,19 +1520,17 @@ class npc_unstable_sun_beam : public CreatureScript
class spell_freya_attuned_to_nature_dose_reduction : public SpellScriptLoader
{
public:
- spell_freya_attuned_to_nature_dose_reduction() : SpellScriptLoader("spell_freya_attuned_to_nature_dose_reduction")
- {
- }
+ spell_freya_attuned_to_nature_dose_reduction() : SpellScriptLoader("spell_freya_attuned_to_nature_dose_reduction") { }
class spell_freya_attuned_to_nature_dose_reduction_SpellScript : public SpellScript
{
- PrepareSpellScript(spell_freya_attuned_to_nature_dose_reduction_SpellScript)
+ PrepareSpellScript(spell_freya_attuned_to_nature_dose_reduction_SpellScript);
void HandleScript(SpellEffIndex /*effIndex*/)
{
Unit* target = GetHitUnit();
- SpellInfo const* spellInfo = GetSpellInfo();
- switch (spellInfo->Id)
+
+ switch (GetSpellInfo()->Id)
{
case SPELL_ATTUNED_TO_NATURE_2_DOSE_REDUCTION:
if (target->HasAura(GetEffectValue()))
@@ -1579,9 +1567,7 @@ class spell_freya_attuned_to_nature_dose_reduction : public SpellScriptLoader
class spell_freya_iron_roots : public SpellScriptLoader
{
public:
- spell_freya_iron_roots() : SpellScriptLoader("spell_freya_iron_roots")
- {
- }
+ spell_freya_iron_roots() : SpellScriptLoader("spell_freya_iron_roots") { }
class spell_freya_iron_roots_SpellScript : public SpellScript
{
@@ -1614,80 +1600,44 @@ class spell_freya_iron_roots : public SpellScriptLoader
class achievement_getting_back_to_nature : public AchievementCriteriaScript
{
public:
- achievement_getting_back_to_nature() : AchievementCriteriaScript("achievement_getting_back_to_nature")
- {
- }
+ achievement_getting_back_to_nature() : AchievementCriteriaScript("achievement_getting_back_to_nature") { }
bool OnCheck(Player* /*player*/, Unit* target)
{
- if (!target)
- return false;
-
- if (Creature* Freya = target->ToCreature())
- if (Freya->AI()->GetData(DATA_GETTING_BACK_TO_NATURE) >= 25)
- return true;
-
- return false;
+ return target && target->GetAI()->GetData(DATA_GETTING_BACK_TO_NATURE) >= 25;
}
};
class achievement_knock_on_wood : public AchievementCriteriaScript
{
public:
- achievement_knock_on_wood() : AchievementCriteriaScript("achievement_knock_on_wood")
- {
- }
+ achievement_knock_on_wood() : AchievementCriteriaScript("achievement_knock_on_wood") { }
bool OnCheck(Player* /*player*/, Unit* target)
{
- if (!target)
- return false;
-
- if (Creature* Freya = target->ToCreature())
- if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) >= 1)
- return true;
-
- return false;
+ return target && target->GetAI()->GetData(DATA_KNOCK_ON_WOOD) >= 1;
}
};
class achievement_knock_knock_on_wood : public AchievementCriteriaScript
{
public:
- achievement_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_on_wood")
- {
- }
+ achievement_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_on_wood") { }
bool OnCheck(Player* /*player*/, Unit* target)
{
- if (!target)
- return false;
-
- if (Creature* Freya = target->ToCreature())
- if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) >= 2)
- return true;
-
- return false;
+ return target && target->GetAI()->GetData(DATA_KNOCK_ON_WOOD) >= 2;
}
};
class achievement_knock_knock_knock_on_wood : public AchievementCriteriaScript
{
public:
- achievement_knock_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_knock_on_wood")
- {
- }
+ achievement_knock_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_knock_on_wood") { }
bool OnCheck(Player* /*player*/, Unit* target)
{
- if (!target)
- return false;
-
- if (Creature* Freya = target->ToCreature())
- if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) == 3)
- return true;
-
- return false;
+ return target && target->GetAI()->GetData(DATA_KNOCK_ON_WOOD) == 3;
}
};
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
index 1232c1b9051..43d203daedf 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
@@ -24,21 +24,22 @@
enum VezaxYells
{
- SAY_AGGRO = -1603290,
- SAY_SLAY_1 = -1603291,
- SAY_SLAY_2 = -1603292,
- SAY_SURGE_OF_DARKNESS = -1603293,
- SAY_DEATH = -1603294,
- SAY_BERSERK = -1603295,
- SAY_HARDMODE = -1603296,
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_SURGE_OF_DARKNESS = 2,
+ SAY_DEATH = 3,
+ SAY_BERSERK = 4,
+ SAY_HARDMODE = 5,
};
enum VezaxEmotes
{
- EMOTE_VAPORS = -1603289,
- EMOTE_ANIMUS = -1603297,
- EMOTE_BARRIER = -1603298,
- EMOTE_SURGE_OF_DARKNESS = -1603299,
+ EMOTE_ANIMUS = 6,
+ EMOTE_BARRIER = 7,
+ EMOTE_SURGE_OF_DARKNESS = 8,
+
+ // Saronite Vapor
+ EMOTE_VAPORS = 9
};
enum VezaxSpells
@@ -122,7 +123,7 @@ class boss_general_vezax : public CreatureScript
{
_EnterCombat();
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
DoCast(me, SPELL_AURA_OF_DESPAIR);
CheckShamanisticRage();
@@ -173,8 +174,8 @@ class boss_general_vezax : public CreatureScript
break;
}
case EVENT_SURGE_OF_DARKNESS:
- DoScriptText(EMOTE_SURGE_OF_DARKNESS, me);
- DoScriptText(SAY_SURGE_OF_DARKNESS, me);
+ Talk(EMOTE_SURGE_OF_DARKNESS);
+ Talk(SAY_SURGE_OF_DARKNESS);
DoCast(me, SPELL_SURGE_OF_DARKNESS);
events.ScheduleEvent(EVENT_SURGE_OF_DARKNESS, urand(50000, 70000));
break;
@@ -183,8 +184,8 @@ class boss_general_vezax : public CreatureScript
events.ScheduleEvent(EVENT_SARONITE_VAPORS, urand(30000, 35000));
if (++vaporCount == 6 && smellSaronite)
{
- DoScriptText(SAY_HARDMODE, me);
- DoScriptText(EMOTE_BARRIER, me);
+ Talk(SAY_HARDMODE);
+ Talk(EMOTE_BARRIER);
summons.DespawnAll();
DoCast(me, SPELL_SARONITE_BARRIER);
DoCast(SPELL_SUMMON_SARONITE_ANIMUS);
@@ -194,7 +195,7 @@ class boss_general_vezax : public CreatureScript
}
break;
case EVENT_BERSERK:
- DoScriptText(SAY_BERSERK, me);
+ Talk(SAY_BERSERK);
DoCast(me, SPELL_BERSERK);
break;
}
@@ -209,15 +210,16 @@ class boss_general_vezax : public CreatureScript
shadowDodger = false;
}
- void KilledUnit(Unit* /*who*/)
+ void KilledUnit(Unit* who)
{
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/)
{
_JustDied();
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_AURA_OF_DESPAIR);
}
@@ -316,7 +318,6 @@ class boss_saronite_animus : public CreatureScript
boss_saronite_animusAI(Creature* creature) : ScriptedAI(creature)
{
instance = me->GetInstanceScript();
- DoScriptText(EMOTE_BARRIER, me);
}
void Reset()
@@ -378,7 +379,7 @@ class npc_saronite_vapors : public CreatureScript
{
npc_saronite_vaporsAI(Creature* creature) : ScriptedAI(creature)
{
- DoScriptText(EMOTE_VAPORS, me);
+ Talk(EMOTE_VAPORS);
instance = me->GetInstanceScript();
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
me->ApplySpellImmune(0, IMMUNITY_ID, 49560, true); // Death Grip jump effect
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
index c9fe1c5b707..8247236016c 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
@@ -32,18 +32,15 @@
enum HodirYells
{
- SAY_AGGRO = -1603210,
- SAY_SLAY_1 = -1603211,
- SAY_SLAY_2 = -1603212,
- SAY_FLASH_FREEZE = -1603213,
- SAY_STALACTITE = -1603214,
- SAY_DEATH = -1603215,
- SAY_BERSERK = -1603216,
- SAY_YS_HELP = -1603217,
- SAY_HARD_MODE_FAILED = -1603218,
-
- EMOTE_FREEZE = -1603209,
- EMOTE_BLOWS = -1603219,
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_FLASH_FREEZE = 2,
+ SAY_STALACTITE = 3,
+ SAY_DEATH = 4,
+ SAY_BERSERK = 5,
+ SAY_HARD_MODE_FAILED = 6,
+ EMOTE_FREEZE = 7,
+ EMOTE_BLOWS = 8
};
enum HodirSpells
@@ -70,6 +67,8 @@ enum HodirSpells
SPELL_ICE_SHARD = 62457,
SPELL_ICE_SHARD_HIT = 65370,
+ SPELL_KILL_CREDIT = 64899,
+
// Druids
SPELL_WRATH = 62793,
SPELL_STARLIGHT = 62807,
@@ -329,7 +328,7 @@ class boss_hodir : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
DoCast(me, SPELL_BITING_COLD, true);
gettingColdInHereTimer = 1000;
@@ -346,10 +345,10 @@ class boss_hodir : public CreatureScript
events.ScheduleEvent(EVENT_BERSERK, 480000);
}
- void KilledUnit(Unit* /*who*/)
+ void KilledUnit(Unit* who)
{
- if (!urand(0, 3))
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
}
void DamageTaken(Unit* /*who*/, uint32& damage)
@@ -357,7 +356,7 @@ class boss_hodir : public CreatureScript
if (damage >= me->GetHealth())
{
damage = 0;
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (iCouldSayThatThisCacheWasRare)
instance->SetData(DATA_HODIR_RARE_CACHE, 1);
@@ -376,6 +375,8 @@ class boss_hodir : public CreatureScript
me->setFaction(35);
me->DespawnOrUnsummon(10000);
+ DoCastAOE(SPELL_KILL_CREDIT);
+
_JustDied();
}
}
@@ -404,8 +405,8 @@ class boss_hodir : public CreatureScript
events.ScheduleEvent(EVENT_ICICLE, RAID_MODE(5500, 3500));
break;
case EVENT_FLASH_FREEZE:
- DoScriptText(SAY_FLASH_FREEZE, me);
- DoScriptText(EMOTE_FREEZE, me);
+ Talk(SAY_FLASH_FREEZE);
+ Talk(EMOTE_FREEZE);
for (uint8 n = 0; n < RAID_MODE(2, 3); ++n)
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true))
target->CastSpell(target, SPELL_ICICLE_SNOWDRIFT, true);
@@ -424,19 +425,19 @@ class boss_hodir : public CreatureScript
break;
}
case EVENT_BLOWS:
- DoScriptText(SAY_STALACTITE, me);
- DoScriptText(EMOTE_BLOWS, me);
+ Talk(SAY_STALACTITE);
+ Talk(EMOTE_BLOWS);
DoCast(me, SPELL_FROZEN_BLOWS);
events.ScheduleEvent(EVENT_BLOWS, urand(60000, 65000));
break;
case EVENT_RARE_CACHE:
- DoScriptText(SAY_HARD_MODE_FAILED, me);
+ Talk(SAY_HARD_MODE_FAILED);
iCouldSayThatThisCacheWasRare = false;
instance->SetData(DATA_HODIR_RARE_CACHE, 0);
events.CancelEvent(EVENT_RARE_CACHE);
break;
case EVENT_BERSERK:
- DoScriptText(SAY_BERSERK, me);
+ Talk(SAY_BERSERK);
DoCast(me, SPELL_BERSERK, true);
events.CancelEvent(EVENT_BERSERK);
break;
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
index c0fb4e3ecc8..8f68542d462 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
@@ -24,16 +24,14 @@
enum Yells
{
- SAY_AGGRO = -1603220,
- SAY_SLAY_1 = -1603221,
- SAY_SLAY_2 = -1603222,
- SAY_DEATH = -1603223,
- SAY_SUMMON = -1603224,
- SAY_SLAG_POT = -1603225,
- SAY_SCORCH_1 = -1603226,
- SAY_SCORCH_2 = -1603227,
- SAY_BERSERK = -1603228,
- EMOTE_JETS = -1603229,
+ SAY_AGGRO = 0,
+ SAY_SUMMON = 1,
+ SAY_SLAG_POT = 2,
+ SAY_SCORCH = 3,
+ SAY_SLAY = 4,
+ SAY_BERSERK = 5,
+ SAY_DEATH = 6,
+ EMOTE_JETS = 7
};
enum Spells
@@ -135,7 +133,7 @@ class boss_ignis : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
_EnterCombat();
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_JET, 30000);
events.ScheduleEvent(EVENT_SCORCH, 25000);
events.ScheduleEvent(EVENT_SLAG_POT, 35000);
@@ -151,7 +149,7 @@ class boss_ignis : public CreatureScript
void JustDied(Unit* /*killer*/)
{
_JustDied();
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
}
uint32 GetData(uint32 type) const
@@ -162,10 +160,10 @@ class boss_ignis : public CreatureScript
return 0;
}
- void KilledUnit(Unit* /*victim*/)
+ void KilledUnit(Unit* who)
{
- if (!urand(0, 4))
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
}
void JustSummoned(Creature* summon)
@@ -217,7 +215,7 @@ class boss_ignis : public CreatureScript
case EVENT_SLAG_POT:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
{
- DoScriptText(SAY_SLAG_POT, me);
+ Talk(SAY_SLAG_POT);
_slagPotGUID = target->GetGUID();
DoCast(target, SPELL_GRAB);
events.DelayEvents(3000);
@@ -252,14 +250,14 @@ class boss_ignis : public CreatureScript
}
break;
case EVENT_SCORCH:
- DoScriptText(RAND(SAY_SCORCH_1, SAY_SCORCH_2), me);
+ Talk(SAY_SCORCH);
if (Unit* target = me->getVictim())
me->SummonCreature(NPC_GROUND_SCORCH, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 45000);
DoCast(SPELL_SCORCH);
events.ScheduleEvent(EVENT_SCORCH, 25000);
break;
case EVENT_CONSTRUCT:
- DoScriptText(SAY_SUMMON, me);
+ Talk(SAY_SUMMON);
DoSummon(NPC_IRON_CONSTRUCT, ConstructSpawnPosition[urand(0, CONSTRUCT_SPAWN_POINTS - 1)], 30000, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT);
DoCast(SPELL_STRENGHT);
DoCast(me, SPELL_ACTIVATE_CONSTRUCT);
@@ -267,7 +265,7 @@ class boss_ignis : public CreatureScript
break;
case EVENT_BERSERK:
DoCast(me, SPELL_BERSERK, true);
- DoScriptText(SAY_BERSERK, me);
+ Talk(SAY_BERSERK);
break;
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
index 9c77bb298a5..c1fc0a81989 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
@@ -30,34 +30,40 @@ SDComment: TODO: Achievements
SDCategory: Ulduar
EndScriptData */
-#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_ARM_SWEEP RAID_MODE(63766, 63983)
-#define SPELL_STONE_SHOUT RAID_MODE(63716, 64005)
-#define SPELL_PETRIFY_BREATH RAID_MODE(62030, 63980)
-#define SPELL_STONE_GRIP RAID_MODE(62166, 63981)
-#define SPELL_STONE_GRIP_CANCEL 65594
-#define SPELL_SUMMON_RUBBLE 63633
-#define SPELL_FALLING_RUBBLE 63821
-#define SPELL_ARM_ENTER_VEHICLE 65343
-#define SPELL_ARM_ENTER_VISUAL 64753
-
-#define SPELL_SUMMON_FOCUSED_EYEBEAM 63342
-#define SPELL_FOCUSED_EYEBEAM_PERIODIC RAID_MODE(63347, 63977)
-#define SPELL_FOCUSED_EYEBEAM_VISUAL 63369
-#define SPELL_FOCUSED_EYEBEAM_VISUAL_LEFT 63676
-#define SPELL_FOCUSED_EYEBEAM_VISUAL_RIGHT 63702
-
-// Passive
-#define SPELL_KOLOGARN_REDUCE_PARRY 64651
-#define SPELL_KOLOGARN_PACIFY 63726
-#define SPELL_KOLOGARN_UNK_0 65219 // Not found in DBC
-
-#define SPELL_BERSERK 47008 // guess
-
-#define NPC_RUBBLE_STALKER 33809
-#define NPC_ARM_SWEEP_STALKER 33661
+enum Spells
+{
+ SPELL_ARM_DEAD_DAMAGE = 63629,
+ SPELL_TWO_ARM_SMASH = 63356,
+ SPELL_ONE_ARM_SMASH = 63573,
+ SPELL_ARM_SWEEP = 63766,
+ SPELL_STONE_SHOUT = 63716,
+ SPELL_PETRIFY_BREATH = 62030,
+ SPELL_STONE_GRIP = 62166,
+ SPELL_STONE_GRIP_CANCEL = 65594,
+ SPELL_SUMMON_RUBBLE = 63633,
+ SPELL_FALLING_RUBBLE = 63821,
+ SPELL_ARM_ENTER_VEHICLE = 65343,
+ SPELL_ARM_ENTER_VISUAL = 64753,
+
+ SPELL_SUMMON_FOCUSED_EYEBEAM = 63342,
+ SPELL_FOCUSED_EYEBEAM_PERIODIC = 63347,
+ SPELL_FOCUSED_EYEBEAM_VISUAL = 63369,
+ SPELL_FOCUSED_EYEBEAM_VISUAL_LEFT = 63676,
+ SPELL_FOCUSED_EYEBEAM_VISUAL_RIGHT = 63702,
+
+ // Passive
+ SPELL_KOLOGARN_REDUCE_PARRY = 64651,
+ SPELL_KOLOGARN_PACIFY = 63726,
+ SPELL_KOLOGARN_UNK_0 = 65219, // Not found in DBC
+
+ SPELL_BERSERK = 47008 // guess
+};
+
+enum NPCs
+{
+ NPC_RUBBLE_STALKER = 33809,
+ NPC_ARM_SWEEP_STALKER = 33661
+};
enum Events
{
@@ -76,15 +82,15 @@ enum Events
enum Yells
{
- SAY_AGGRO = -1603230,
- SAY_SLAY_1 = -1603231,
- SAY_SLAY_2 = -1603232,
- SAY_LEFT_ARM_GONE = -1603233,
- SAY_RIGHT_ARM_GONE = -1603234,
- SAY_SHOCKWAVE = -1603235,
- SAY_GRAB_PLAYER = -1603236,
- SAY_DEATH = -1603237,
- SAY_BERSERK = -1603238,
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_LEFT_ARM_GONE = 2,
+ SAY_RIGHT_ARM_GONE = 3,
+ SAY_SHOCKWAVE = 4,
+ SAY_GRAB_PLAYER = 5,
+ SAY_DEATH = 6,
+ SAY_BERSERK = 7,
+ EMOTE_STONE_GRIP = 8
};
class boss_kologarn : public CreatureScript
@@ -113,7 +119,7 @@ class boss_kologarn : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_MELEE_CHECK, 6000);
events.ScheduleEvent(EVENT_SMASH, 5000);
@@ -138,7 +144,7 @@ class boss_kologarn : public CreatureScript
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
DoCast(SPELL_KOLOGARN_PACIFY);
me->GetMotionMaster()->MoveTargetedHome();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -146,9 +152,10 @@ class boss_kologarn : public CreatureScript
_JustDied();
}
- void KilledUnit(Unit* /*who*/)
+ void KilledUnit(Unit* who)
{
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
}
void PassengerBoarded(Unit* who, int8 /*seatId*/, bool apply)
@@ -160,7 +167,7 @@ class boss_kologarn : public CreatureScript
if (!apply && isEncounterInProgress)
{
who->ToCreature()->DisappearAndDie();
- DoScriptText(SAY_LEFT_ARM_GONE, me);
+ Talk(SAY_LEFT_ARM_GONE);
events.ScheduleEvent(EVENT_RESPAWN_LEFT_ARM, 40000);
}
}
@@ -171,7 +178,7 @@ class boss_kologarn : public CreatureScript
if (!apply && isEncounterInProgress)
{
who->ToCreature()->DisappearAndDie();
- DoScriptText(SAY_RIGHT_ARM_GONE, me);
+ Talk(SAY_RIGHT_ARM_GONE);
events.ScheduleEvent(EVENT_RESPAWN_RIGHT_ARM, 40000);
}
}
@@ -272,7 +279,7 @@ class boss_kologarn : public CreatureScript
break;
case EVENT_ENRAGE:
DoCast(SPELL_BERSERK);
- DoScriptText(SAY_BERSERK, me);
+ Talk(SAY_BERSERK);
break;
case EVENT_RESPAWN_LEFT_ARM:
case EVENT_RESPAWN_RIGHT_ARM:
@@ -290,11 +297,12 @@ class boss_kologarn : public CreatureScript
if (right)
{
DoCast(SPELL_STONE_GRIP);
- DoScriptText(SAY_GRAB_PLAYER, me);
+ Talk(SAY_GRAB_PLAYER);
+ Talk(EMOTE_STONE_GRIP);
}
events.ScheduleEvent(EVENT_STONE_GRIP, 25 * IN_MILLISECONDS);
+ break;
}
- break;
case EVENT_FOCUSED_EYEBEAM:
if (Unit* eyebeamTargetUnit = SelectTarget(SELECT_TARGET_FARTHEST, 0, 0, true))
{
@@ -404,12 +412,12 @@ class spell_ulduar_stone_grip_cast_target : public SpellScriptLoader
}
// For subsequent effects
- m_unitList = unitList;
+ _unitList = unitList;
}
void FillTargetsSubsequential(std::list<WorldObject*>& unitList)
{
- unitList = m_unitList;
+ unitList = _unitList;
}
void Register()
@@ -419,8 +427,9 @@ class spell_ulduar_stone_grip_cast_target : public SpellScriptLoader
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_ulduar_stone_grip_cast_target_SpellScript::FillTargetsSubsequential, EFFECT_2, TARGET_UNIT_SRC_AREA_ENEMY);
}
+ private:
// Shared between effects
- std::list<WorldObject*> m_unitList;
+ std::list<WorldObject*> _unitList;
};
SpellScript* GetSpellScript() const
@@ -625,10 +634,10 @@ class spell_kologarn_summon_focused_eyebeam : public SpellScriptLoader
{
PrepareSpellScript(spell_kologarn_summon_focused_eyebeam_SpellScript);
- void HandleForceCast(SpellEffIndex eff)
+ void HandleForceCast(SpellEffIndex effIndex)
{
- PreventHitDefaultEffect(eff);
- GetCaster()->CastSpell(GetCaster(), GetSpellInfo()->Effects[eff].TriggerSpell, true);
+ PreventHitDefaultEffect(effIndex);
+ GetCaster()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true);
}
void Register()
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index 6a4a5255293..b5c907af7f0 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -35,8 +35,7 @@ enum Yells
SAY_V07TRON_ACTIVATE = 11,
SAY_V07TRON_SLAY = 12,
SAY_V07TRON_DEATH = 13,
- SAY_BERSERK = 14,
- SAY_YS_HELP = 15
+ SAY_BERSERK = 14
};
enum Spells
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
index 5ea2678adfe..9643b2ec9ab 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
@@ -27,15 +27,22 @@
enum Says
{
- SAY_GREET = -1603260,
- SAY_GROUND_PHASE = -1603261,
- SAY_AGGRO_1 = -1603262,
- SAY_AGGRO_2 = -1603263,
- SAY_AGGRO_3 = -1603264,
- SAY_TURRETS = -1603265,
- EMOTE_HARPOON = -1603266,
- EMOTE_BREATH = -1603267,
- EMOTE_PERMA = -1603268,
+ // Expedition Commander
+ SAY_INTRO = 0,
+ SAY_GROUND_PHASE = 1,
+ SAY_AGGRO_2 = 2,
+
+ // Expedition Engineer
+ SAY_AGGRO_1 = 0,
+ SAY_AGGRO_3 = 1,
+ SAY_TURRETS = 2, // unused
+
+ // Razorscale Controller
+ EMOTE_HARPOON = 0,
+
+ // Razorscale
+ EMOTE_PERMA = 0,
+ EMOTE_BREATH = 1
};
enum Spells
@@ -245,7 +252,7 @@ class boss_razorscale_controller : public CreatureScript
switch (eventId)
{
case EVENT_BUILD_HARPOON_1:
- DoScriptText(EMOTE_HARPOON, me);
+ Talk(EMOTE_HARPOON);
if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_1, PosHarpoon[0].GetPositionX(), PosHarpoon[0].GetPositionY(), PosHarpoon[0].GetPositionZ(), 4.790f, 0.0f, 0.0f, 0.0f, 0.0f, uint32(me->GetRespawnTime())))
{
if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f)) //only nearest broken harpoon
@@ -255,7 +262,7 @@ class boss_razorscale_controller : public CreatureScript
}
return;
case EVENT_BUILD_HARPOON_2:
- DoScriptText(EMOTE_HARPOON, me);
+ Talk(EMOTE_HARPOON);
if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_2, PosHarpoon[1].GetPositionX(), PosHarpoon[1].GetPositionY(), PosHarpoon[1].GetPositionZ(), 4.659f, 0, 0, 0, 0, uint32(me->GetRespawnTime())))
{
if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
@@ -264,7 +271,7 @@ class boss_razorscale_controller : public CreatureScript
}
return;
case EVENT_BUILD_HARPOON_3:
- DoScriptText(EMOTE_HARPOON, me);
+ Talk(EMOTE_HARPOON);
if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_3, PosHarpoon[2].GetPositionX(), PosHarpoon[2].GetPositionY(), PosHarpoon[2].GetPositionZ(), 5.382f, 0, 0, 0, 0, uint32(me->GetRespawnTime())))
{
if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
@@ -274,7 +281,7 @@ class boss_razorscale_controller : public CreatureScript
}
return;
case EVENT_BUILD_HARPOON_4:
- DoScriptText(EMOTE_HARPOON, me);
+ Talk(EMOTE_HARPOON);
if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_4, PosHarpoon[3].GetPositionX(), PosHarpoon[3].GetPositionY(), PosHarpoon[3].GetPositionZ(), 4.266f, 0, 0, 0, 0, uint32(me->GetRespawnTime())))
{
if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
@@ -444,7 +451,7 @@ class boss_razorscale : public CreatureScript
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED);
me->RemoveAllAuras();
me->SetReactState(REACT_AGGRESSIVE);
- DoScriptText(EMOTE_BREATH, me, 0);
+ Talk(EMOTE_BREATH);
DoCastAOE(SPELL_FLAMEBREATH);
events.CancelEvent(EVENT_BREATH);
return;
@@ -468,7 +475,7 @@ class boss_razorscale : public CreatureScript
events.ScheduleEvent(EVENT_FLAME, 10000, 0, PHASE_PERMAGROUND);
return;
case EVENT_BREATH:
- me->MonsterTextEmote(EMOTE_BREATH, 0, true);
+ Talk(EMOTE_BREATH);
DoCastVictim(SPELL_FLAMEBREATH);
events.ScheduleEvent(EVENT_BREATH, 20000, 0, PHASE_PERMAGROUND);
return;
@@ -522,7 +529,7 @@ class boss_razorscale : public CreatureScript
void EnterPermaGround()
{
- me->MonsterTextEmote(EMOTE_PERMA, 0, true);
+ Talk(EMOTE_PERMA);
phase = PHASE_PERMAGROUND;
events.SetPhase(PHASE_PERMAGROUND);
me->SetCanFly(false);
@@ -608,7 +615,7 @@ class npc_expedition_commander : public CreatureScript
{
if (!Greet && me->IsWithinDistInMap(who, 10.0f) && who->GetTypeId() == TYPEID_PLAYER)
{
- DoScriptText(SAY_GREET, me);
+ Talk(SAY_INTRO);
Greet = true;
}
}
@@ -623,7 +630,7 @@ class npc_expedition_commander : public CreatureScript
switch (action)
{
case ACTION_GROUND_PHASE:
- DoScriptText(SAY_GROUND_PHASE, me);
+ Talk(SAY_GROUND_PHASE);
break;
case ACTION_COMMANDER_RESET:
summons.clear();
@@ -653,7 +660,7 @@ class npc_expedition_commander : public CreatureScript
Engineer[n]->SetHomePosition(PosEngRepair[n]);
Engineer[n]->GetMotionMaster()->MoveTargetedHome();
}
- Engineer[0]->MonsterYell(SAY_AGGRO_3, LANG_UNIVERSAL, 0);
+ Engineer[0]->AI()->Talk(SAY_AGGRO_3);
Phase = 3;
AttackStartTimer = 14000;
break;
@@ -672,7 +679,7 @@ class npc_expedition_commander : public CreatureScript
Engineer[n]->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
for (uint8 n = 0; n < 4; ++n)
Defender[n]->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
- me->MonsterYell(SAY_AGGRO_2, LANG_UNIVERSAL, 0);
+ Talk(SAY_AGGRO_2);
AttackStartTimer = 16000;
Phase = 5;
break;
@@ -682,7 +689,7 @@ class npc_expedition_commander : public CreatureScript
Razorscale->AI()->DoAction(ACTION_EVENT_START);
me->SetInCombatWith(Razorscale);
}
- Engineer[0]->MonsterYell(SAY_AGGRO_1, LANG_UNIVERSAL, 0);
+ Engineer[0]->AI()->Talk(SAY_AGGRO_1);
Phase = 6;
break;
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
index 084cd3e0f86..82845d10b8c 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
@@ -21,83 +21,80 @@
enum Yells
{
- SAY_AGGRO_1 = -1603270,
- SAY_AGGRO_2 = -1603271,
- SAY_SPECIAL_1 = -1603272,
- SAY_SPECIAL_2 = -1603273,
- SAY_SPECIAL_3 = -1603274,
- SAY_JUMPDOWN = -1603275,
- SAY_SLAY_1 = -1603276,
- SAY_SLAY_2 = -1603277,
- SAY_BERSERK = -1603278,
- SAY_WIPE = -1603279,
- SAY_DEATH = -1603280,
- SAY_END_NORMAL_1 = -1603281,
- SAY_END_NORMAL_2 = -1603282,
- SAY_END_NORMAL_3 = -1603283,
- SAY_END_HARD_1 = -1603284,
- SAY_END_HARD_2 = -1603285,
- SAY_END_HARD_3 = -1603286,
- SAY_YS_HELP = -1603287,
+ SAY_AGGRO = 0,
+ SAY_SPECIAL_1 = 1,
+ SAY_SPECIAL_2 = 2,
+ SAY_SPECIAL_3 = 3,
+ SAY_JUMPDOWN = 4,
+ SAY_SLAY = 5,
+ SAY_BERSERK = 6,
+ SAY_WIPE = 7,
+ SAY_DEATH = 8,
+ SAY_END_NORMAL_1 = 9,
+ SAY_END_NORMAL_2 = 10,
+ SAY_END_NORMAL_3 = 11,
+ SAY_END_HARD_1 = 12,
+ SAY_END_HARD_2 = 13,
+ SAY_END_HARD_3 = 14
};
class boss_thorim : public CreatureScript
{
-public:
- boss_thorim() : CreatureScript("boss_thorim") { }
+ public:
+ boss_thorim() : CreatureScript("boss_thorim") { }
- CreatureAI* GetAI(Creature* creature) const
- {
- return GetUlduarAI<boss_thorimAI>(creature);
- }
-
- struct boss_thorimAI : public BossAI
- {
- boss_thorimAI(Creature* creature) : BossAI(creature, BOSS_THORIM)
+ struct boss_thorimAI : public BossAI
{
- }
+ boss_thorimAI(Creature* creature) : BossAI(creature, BOSS_THORIM)
+ {
+ }
- void Reset()
- {
- _Reset();
- }
+ void Reset()
+ {
+ _Reset();
+ }
- void EnterEvadeMode()
- {
- DoScriptText(SAY_WIPE, me);
- _EnterEvadeMode();
- }
+ void EnterEvadeMode()
+ {
+ Talk(SAY_WIPE);
+ _EnterEvadeMode();
+ }
- void KilledUnit(Unit* /*victim*/)
- {
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
- }
+ void KilledUnit(Unit* who)
+ {
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
+ }
- void JustDied(Unit* /*killer*/)
- {
- DoScriptText(SAY_DEATH, me);
- _JustDied();
- }
+ void JustDied(Unit* /*killer*/)
+ {
+ Talk(SAY_DEATH);
+ _JustDied();
+ }
- void EnterCombat(Unit* /*who*/)
- {
- DoScriptText(RAND(SAY_AGGRO_1, SAY_AGGRO_2), me);
- _EnterCombat();
- }
+ void EnterCombat(Unit* /*who*/)
+ {
+ Talk(SAY_AGGRO);
+ _EnterCombat();
+ }
- void UpdateAI(const uint32 diff)
- {
- if (!UpdateVictim())
- return;
- //SPELLS TODO:
+ void UpdateAI(uint32 const diff)
+ {
+ if (!UpdateVictim())
+ return;
+ //SPELLS TODO:
- //
- DoMeleeAttackIfReady();
+ //
+ DoMeleeAttackIfReady();
- EnterEvadeIfOutOfCombatArea(diff);
- }
- };
+ EnterEvadeIfOutOfCombatArea(diff);
+ }
+ };
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return GetUlduarAI<boss_thorimAI>(creature);
+ }
};
void AddSC_boss_thorim()
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
index 30f60da178a..09ab35d6589 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
@@ -157,15 +157,18 @@ enum XT002Data
enum Yells
{
- SAY_AGGRO = -1603300,
- SAY_HEART_OPENED = -1603301,
- SAY_HEART_CLOSED = -1603302,
- SAY_TYMPANIC_TANTRUM = -1603303,
- SAY_SLAY_1 = -1603304,
- SAY_SLAY_2 = -1603305,
- SAY_BERSERK = -1603306,
- SAY_DEATH = -1603307,
- SAY_SUMMON = -1603308,
+ SAY_AGGRO = 0,
+ SAY_HEART_OPENED = 1,
+ SAY_HEART_CLOSED = 2,
+ SAY_TYMPANIC_TANTRUM = 3,
+ SAY_SLAY = 4,
+ SAY_BERSERK = 5,
+ SAY_DEATH = 6,
+ SAY_SUMMON = 7,
+ EMOTE_HEART_OPENED = 8,
+ EMOTE_HEART_CLOSED = 9,
+ EMOTE_TYMPANIC_TANTRUM = 10,
+ EMOTE_SCRAPBOT = 11
};
enum AchievementCredits
@@ -223,7 +226,7 @@ class boss_xt002 : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
_EnterCombat();
events.ScheduleEvent(EVENT_ENRAGE, TIMER_ENRAGE);
@@ -248,14 +251,15 @@ class boss_xt002 : public CreatureScript
}
}
- void KilledUnit(Unit* /*victim*/)
+ void KilledUnit(Unit* who)
{
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
_JustDied();
}
@@ -292,7 +296,8 @@ class boss_xt002 : public CreatureScript
events.ScheduleEvent(EVENT_GRAVITY_BOMB, TIMER_GRAVITY_BOMB);
break;
case EVENT_TYMPANIC_TANTRUM:
- DoScriptText(SAY_TYMPANIC_TANTRUM, me);
+ Talk(SAY_TYMPANIC_TANTRUM);
+ Talk(EMOTE_TYMPANIC_TANTRUM);
DoCast(SPELL_TYMPANIC_TANTRUM);
events.ScheduleEvent(EVENT_TYMPANIC_TANTRUM, urand(TIMER_TYMPANIC_TANTRUM_MIN, TIMER_TYMPANIC_TANTRUM_MAX));
break;
@@ -300,7 +305,7 @@ class boss_xt002 : public CreatureScript
SetPhaseOne();
break;
case EVENT_ENRAGE:
- DoScriptText(SAY_BERSERK, me);
+ Talk(SAY_BERSERK);
DoCast(me, SPELL_ENRAGE);
break;
case EVENT_ENTER_HARD_MODE:
@@ -325,6 +330,7 @@ class boss_xt002 : public CreatureScript
if (me->GetHealthPct() > (25 * (4 - _heartExposed)))
++_heartExposed;
+ Talk(EMOTE_SCRAPBOT);
_healthRecovered = true;
}
}
@@ -359,7 +365,8 @@ class boss_xt002 : public CreatureScript
void ExposeHeart()
{
- DoScriptText(SAY_HEART_OPENED, me);
+ Talk(SAY_HEART_OPENED);
+ Talk(EMOTE_HEART_OPENED);
DoCast(me, SPELL_SUBMERGE); // WIll make creature untargetable
me->AttackStop();
@@ -391,7 +398,8 @@ class boss_xt002 : public CreatureScript
void SetPhaseOne()
{
- DoScriptText(SAY_HEART_CLOSED, me);
+ Talk(SAY_HEART_CLOSED);
+ Talk(EMOTE_HEART_CLOSED);
DoCast(me, SPELL_STAND);
me->SetReactState(REACT_AGGRESSIVE);
@@ -928,7 +936,8 @@ class spell_xt002_heart_overload_periodic : public SpellScriptLoader
}
}
- DoScriptText(SAY_SUMMON, caster->GetVehicleBase());
+ if (Creature* base = caster->GetVehicleCreatureBase())
+ base->AI()->Talk(SAY_SUMMON);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp
index 58ba125b994..20d6a7a40da 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp
@@ -43,18 +43,6 @@ enum Sara
enum YoggSaron_Yells
{
- SAY_PHASE2_1 = -1603330,
- SAY_PHASE2_2 = -1603331,
- SAY_PHASE2_3 = -1603332,
- SAY_PHASE2_4 = -1603333,
- SAY_PHASE2_5 = -1603334,
- SAY_PHASE3 = -1603335,
- SAY_VISION = -1603336,
- SAY_SLAY_1 = -1603337,
- SAY_SLAY_2 = -1603338,
- WHISP_INSANITY_1 = -1603339,
- WHISP_INSANITY_2 = -1603340,
- SAY_DEATH = -1603341,
};
enum
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
index 7d3b943f7b0..b334b8dcbed 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
@@ -34,6 +34,14 @@ static DoorData const doorData[] =
{0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE },
};
+MinionData const minionData[] =
+{
+ { NPC_STEELBREAKER, BOSS_ASSEMBLY_OF_IRON },
+ { NPC_MOLGEIM, BOSS_ASSEMBLY_OF_IRON },
+ { NPC_BRUNDIR, BOSS_ASSEMBLY_OF_IRON },
+ { 0, 0, }
+};
+
class instance_ulduar : public InstanceMapScript
{
public:
@@ -43,8 +51,6 @@ class instance_ulduar : public InstanceMapScript
{
instance_ulduar_InstanceMapScript(InstanceMap* map) : InstanceScript(map) { }
- std::string m_strInstData;
-
// Creatures
uint64 LeviathanGUID;
uint64 IgnisGUID;
@@ -99,6 +105,7 @@ class instance_ulduar : public InstanceMapScript
{
SetBossNumber(MAX_ENCOUNTER);
LoadDoorData(doorData);
+ LoadMinionData(minionData);
IgnisGUID = 0;
RazorscaleGUID = 0;
RazorscaleController = 0;
@@ -202,18 +209,24 @@ class instance_ulduar : public InstanceMapScript
case NPC_XT_TOY_PILE:
for (uint8 i = 0; i < 4; ++i)
if (!XTToyPileGUIDs[i])
+ {
XTToyPileGUIDs[i] = creature->GetGUID();
+ break;
+ }
break;
// Assembly of Iron
case NPC_STEELBREAKER:
AssemblyGUIDs[0] = creature->GetGUID();
+ AddMinion(creature, true);
break;
case NPC_MOLGEIM:
AssemblyGUIDs[1] = creature->GetGUID();
+ AddMinion(creature, true);
break;
case NPC_BRUNDIR:
AssemblyGUIDs[2] = creature->GetGUID();
+ AddMinion(creature, true);
break;
// Freya's Keeper
@@ -314,10 +327,25 @@ class instance_ulduar : public InstanceMapScript
{
switch (creature->GetEntry())
{
+ case NPC_XT_TOY_PILE:
+ for (uint8 i = 0; i < 4; ++i)
+ if (XTToyPileGUIDs[i] == creature->GetGUID())
+ {
+ XTToyPileGUIDs[i] = 0;
+ break;
+ }
+ break;
+ case NPC_STEELBREAKER:
+ case NPC_MOLGEIM:
+ case NPC_BRUNDIR:
+ AddMinion(creature, false);
+ break;
case NPC_BRANN_BRONZBEARD_ALG:
if (BrannBronzebeardAlgGUID == creature->GetGUID())
BrannBronzebeardAlgGUID = 0;
break;
+ default:
+ break;
}
}
@@ -707,11 +735,11 @@ class instance_ulduar : public InstanceMapScript
return RazorHarpoonGUIDs[3];
// Assembly of Iron
- case BOSS_STEELBREAKER:
+ case DATA_STEELBREAKER:
return AssemblyGUIDs[0];
- case BOSS_MOLGEIM:
+ case DATA_MOLGEIM:
return AssemblyGUIDs[1];
- case BOSS_BRUNDIR:
+ case DATA_BRUNDIR:
return AssemblyGUIDs[2];
// Freya's Keepers
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
index 858a82bbe57..4dff89f7b2c 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
@@ -25,28 +25,25 @@ extern Position const AlgalonLandPos;
enum UlduarBosses
{
- MAX_ENCOUNTER = 20,
+ MAX_ENCOUNTER = 17,
BOSS_LEVIATHAN = 0,
BOSS_IGNIS = 1,
BOSS_RAZORSCALE = 2,
BOSS_XT002 = 3,
BOSS_ASSEMBLY_OF_IRON = 4,
- BOSS_STEELBREAKER = 5,
- BOSS_MOLGEIM = 6,
- BOSS_BRUNDIR = 7,
- BOSS_KOLOGARN = 8,
- BOSS_AURIAYA = 9,
- BOSS_MIMIRON = 10,
- BOSS_HODIR = 11,
- BOSS_THORIM = 12,
- BOSS_FREYA = 13,
- BOSS_BRIGHTLEAF = 14,
- BOSS_IRONBRANCH = 15,
- BOSS_STONEBARK = 16,
- BOSS_VEZAX = 17,
- BOSS_YOGGSARON = 18,
- BOSS_ALGALON = 19,
+ BOSS_KOLOGARN = 5,
+ BOSS_AURIAYA = 6,
+ BOSS_MIMIRON = 7,
+ BOSS_HODIR = 8,
+ BOSS_THORIM = 9,
+ BOSS_FREYA = 10,
+ BOSS_BRIGHTLEAF = 11,
+ BOSS_IRONBRANCH = 12,
+ BOSS_STONEBARK = 13,
+ BOSS_VEZAX = 14,
+ BOSS_YOGGSARON = 15,
+ BOSS_ALGALON = 16,
};
enum UlduarNPCs
@@ -207,6 +204,11 @@ enum UlduarData
DATA_TOY_PILE_2,
DATA_TOY_PILE_3,
+ // Assembly of Iron
+ DATA_STEELBREAKER,
+ DATA_MOLGEIM,
+ DATA_BRUNDIR,
+
// Hodir
DATA_HODIR_RARE_CACHE,
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
index aaa95631792..4fe56b346b2 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
@@ -29,14 +29,14 @@ EndScriptData */
enum Yells
{
//Yells Ingvar
- YELL_AGGRO_1 = -1574005,
- YELL_AGGRO_2 = -1574006,
+ YELL_AGGRO_1 = 0,
+ YELL_AGGRO_2 = 1,
- YELL_DEAD_1 = -1574007,
- YELL_DEAD_2 = -1574008,
+ YELL_DEAD_1 = 2,
+ YELL_DEAD_2 = 3,
- YELL_KILL_1 = -1574009,
- YELL_KILL_2 = -1574010,
+ YELL_KILL_1 = 4,
+ YELL_KILL_2 = 5,
};
enum Creatures
@@ -151,7 +151,7 @@ public:
events.SetPhase(PHASE_EVENT);
events.ScheduleEvent(EVENT_SUMMON_BANSHEE, 3 * IN_MILLISECONDS, 0, PHASE_EVENT);
- DoScriptText(YELL_DEAD_1, me);
+ Talk(YELL_DEAD_1);
}
if (events.GetPhaseMask() & (1 << PHASE_EVENT))
@@ -164,13 +164,13 @@ public:
me->UpdateEntry(MOB_INGVAR_UNDEAD);
events.ScheduleEvent(EVENT_JUST_TRANSFORMED, 2 * IN_MILLISECONDS, 0, PHASE_EVENT);
- DoScriptText(YELL_AGGRO_2, me);
+ Talk(YELL_AGGRO_2);
}
void EnterCombat(Unit* /*who*/)
{
if (!bIsUndead)
- DoScriptText(YELL_AGGRO_1, me);
+ Talk(YELL_AGGRO_1);
if (instance)
instance->SetData(DATA_INGVAR_EVENT, IN_PROGRESS);
@@ -180,7 +180,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(YELL_DEAD_2, me);
+ Talk(YELL_DEAD_2);
if (instance)
{
@@ -201,10 +201,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- if (bIsUndead)
- DoScriptText(YELL_KILL_1, me);
- else
- DoScriptText(YELL_KILL_2, me);
+ Talk(bIsUndead ? YELL_KILL_1 : YELL_KILL_2);
}
void UpdateAI(const uint32 diff)
@@ -329,7 +326,7 @@ public:
{
me->GetMotionMaster()->MovePoint(1, x, y, z+15);
- // DoScriptText(YELL_RESSURECT, me);
+ // Talk(YELL_RESSURECT);
}
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
index 7c977250e79..aad4c9989c1 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
@@ -29,18 +29,18 @@ EndScriptData */
enum eEnums
{
//signed for 24200, but used by 24200, 27390
- YELL_SKARVALD_AGGRO = -1574011,
- YELL_SKARVALD_DAL_DIED = -1574012,
- YELL_SKARVALD_SKA_DIEDFIRST = -1574013,
- YELL_SKARVALD_KILL = -1574014,
- YELL_SKARVALD_DAL_DIEDFIRST = -1574015,
+ YELL_SKARVALD_AGGRO = 0,
+ YELL_SKARVALD_DAL_DIED = 1,
+ YELL_SKARVALD_SKA_DIEDFIRST = 2,
+ YELL_SKARVALD_KILL = 3,
+ YELL_SKARVALD_DAL_DIEDFIRST = 4,
//signed for 24201, but used by 24201, 27389
- YELL_DALRONN_AGGRO = -1574016,
- YELL_DALRONN_SKA_DIED = -1574017,
- YELL_DALRONN_DAL_DIEDFIRST = -1574018,
- YELL_DALRONN_KILL = -1574019,
- YELL_DALRONN_SKA_DIEDFIRST = -1574020,
+ YELL_DALRONN_AGGRO = 0,
+ YELL_DALRONN_SKA_DIED = 1,
+ YELL_DALRONN_DAL_DIEDFIRST = 2,
+ YELL_DALRONN_KILL = 3,
+ YELL_DALRONN_SKA_DIEDFIRST = 4,
//Spells of Skarvald and his Ghost
MOB_SKARVALD_THE_CONSTRUCTOR = 24200,
@@ -123,7 +123,7 @@ public:
{
if (!ghost && instance)
{
- DoScriptText(YELL_SKARVALD_AGGRO, me);
+ Talk(YELL_SKARVALD_AGGRO);
Unit* dalronn = Unit::GetUnit(*me, instance->GetData64(DATA_DALRONN));
if (dalronn && dalronn->isAlive() && !dalronn->getVictim())
@@ -151,13 +151,13 @@ public:
{
if (dalronn->isDead())
{
- DoScriptText(YELL_SKARVALD_DAL_DIED, me);
+ Talk(YELL_SKARVALD_DAL_DIED);
instance->SetData(DATA_SKARVALD_DALRONN_EVENT, DONE);
}
else
{
- DoScriptText(YELL_SKARVALD_SKA_DIEDFIRST, me);
+ Talk(YELL_SKARVALD_SKA_DIEDFIRST);
me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
//DoCast(me, SPELL_SUMMON_SKARVALD_GHOST, true);
@@ -176,7 +176,7 @@ public:
{
if (!ghost)
{
- DoScriptText(YELL_SKARVALD_KILL, me);
+ Talk(YELL_SKARVALD_KILL);
}
}
@@ -211,7 +211,7 @@ public:
{
if (Response_Timer <= diff)
{
- DoScriptText(YELL_SKARVALD_DAL_DIEDFIRST, me);
+ Talk(YELL_SKARVALD_DAL_DIEDFIRST);
Response_Timer = 0;
} else Response_Timer -= diff;
@@ -310,14 +310,14 @@ public:
{
if (skarvald->isDead())
{
- DoScriptText(YELL_DALRONN_SKA_DIED, me);
+ Talk(YELL_DALRONN_SKA_DIED);
if (instance)
instance->SetData(DATA_SKARVALD_DALRONN_EVENT, DONE);
}
else
{
- DoScriptText(YELL_DALRONN_DAL_DIEDFIRST, me);
+ Talk(YELL_DALRONN_DAL_DIEDFIRST);
me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
//DoCast(me, SPELL_SUMMON_DALRONN_GHOST, true);
@@ -336,7 +336,7 @@ public:
{
if (!ghost)
{
- DoScriptText(YELL_DALRONN_KILL, me);
+ Talk(YELL_DALRONN_KILL);
}
}
@@ -355,7 +355,7 @@ public:
{
if (AggroYell_Timer <= diff)
{
- DoScriptText(YELL_DALRONN_AGGRO, me);
+ Talk(YELL_DALRONN_AGGRO);
AggroYell_Timer = 0;
} else AggroYell_Timer -= diff;
@@ -382,7 +382,7 @@ public:
{
if (Response_Timer <= diff)
{
- DoScriptText(YELL_DALRONN_SKA_DIEDFIRST, me);
+ Talk(YELL_DALRONN_SKA_DIEDFIRST);
Response_Timer = 0;
} else Response_Timer -= diff;
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
index 8cbfe4bafb4..d2772514edf 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
@@ -47,10 +47,9 @@ enum OrbSpells
//not in db
enum Yells
{
- SAY_AGGRO = -1575000,
- SAY_SLAY_1 = -1575001,
- SAY_SLAY_2 = -1575002,
- SAY_DEATH = -1575003
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1
+ //SAY_DEATH = 2 Missing in database
};
enum Creatures
@@ -155,7 +154,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
}
void AttackStart(Unit* who)
@@ -212,7 +211,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ //Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_GORTOK_PALEHOOF_EVENT, DONE);
Creature* temp = Unit::GetCreature((*me), instance ? instance->GetData64(DATA_MOB_ORB) : 0);
@@ -222,7 +221,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
+ Talk(SAY_SLAY);
}
void NextPhase()
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index 63898e57c08..45bab11c46a 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -34,16 +34,13 @@ Script Data End */
//Yell
enum eYells
{
- SAY_AGGRO = -1575004,
- SAY_KILL_1 = -1575005,
- SAY_KILL_2 = -1575006,
- EMOTE_RANGE = -1575007, //Skadi
- SAY_DEATH = -1575008,
- SAY_DRAKE_DEATH = -1575009,
- EMOTE_BREATH = -1575010, //Grauf
- SAY_DRAKE_BREATH_1 = -1575011,
- SAY_DRAKE_BREATH_2 = -1575012,
- SAY_DRAKE_BREATH_3 = -1575013,
+ SAY_AGGRO = 0,
+ SAY_KILL = 1,
+ EMOTE_RANGE = 2,
+ SAY_DEATH = 3,
+ SAY_DRAKE_DEATH = 4,
+ EMOTE_BREATH = 5,
+ SAY_DRAKE_BREATH = 6
};
static Position SpawnLoc = {468.931f, -513.555f, 104.723f, 0};
@@ -230,7 +227,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
@@ -297,7 +294,7 @@ public:
}
me->GetMotionMaster()->MoveJump(Location[4].GetPositionX(), Location[4].GetPositionY(), Location[4].GetPositionZ(), 5.0f, 10.0f);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
- DoScriptText(SAY_DRAKE_DEATH, me);
+ Talk(SAY_DRAKE_DEATH);
m_uiCrushTimer = 8000;
m_uiPoisonedSpearTimer = 10000;
m_uiWhirlwindTimer = 20000;
@@ -319,7 +316,7 @@ public:
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
if (!m_bSaidEmote)
{
- DoScriptText(EMOTE_RANGE, me);
+ Talk(EMOTE_RANGE);
m_bSaidEmote = true;
}
}
@@ -360,8 +357,8 @@ public:
break;
case 3:
me->GetMotionMaster()->MovePoint(0, Location[69].GetPositionX(), Location[69].GetPositionY(), Location[69].GetPositionZ());
- DoScriptText(RAND(SAY_DRAKE_BREATH_1, SAY_DRAKE_BREATH_2), me);
- DoScriptText(EMOTE_BREATH, me);
+ Talk(SAY_DRAKE_BREATH);
+ Talk(EMOTE_BREATH);
m_uiMovementTimer = 2500;
break;
case 4:
@@ -413,7 +410,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
Summons.DespawnAll();
if (instance)
instance->SetData(DATA_SKADI_THE_RUTHLESS_EVENT, DONE);
@@ -421,7 +418,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2), me);
+ Talk(SAY_KILL);
}
void SpawnMobs()
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
index 0278125deb3..96cfee7c2b8 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
@@ -55,16 +55,13 @@ enum Spells
//not in db
enum Yells
{
- SAY_AGGRO = -1575028,
- SAY_SLAY_1 = -1575029,
- SAY_SLAY_2 = -1575030,
- SAY_SLAY_3 = -1575031,
- SAY_SLAY_4 = -1575032,
- SAY_DEATH = -1575033,
- SAY_SUMMON_BJORN = -1575034,
- SAY_SUMMON_HALDOR = -1575035,
- SAY_SUMMON_RANULF = -1575036,
- SAY_SUMMON_TORGYN = -1575037
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_SUMMON_BJORN = 3,
+ SAY_SUMMON_HALDOR = 4,
+ SAY_SUMMON_RANULF = 5,
+ SAY_SUMMON_TORGYN = 6
};
enum Creatures
@@ -190,7 +187,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_KING_YMIRON_EVENT, IN_PROGRESS);
@@ -216,7 +213,7 @@ public:
{
if (m_uiPause_Timer <= diff)
{
- DoScriptText(ActiveBoat[m_uiActiveOrder[m_uiActivedNumber]].say, me);
+ Talk(ActiveBoat[m_uiActiveOrder[m_uiActivedNumber]].say);
DoCast(me, SPELL_CHANNEL_YMIRON_TO_SPIRIT); // should be on spirit
if (Creature* temp = me->SummonCreature(ActiveBoat[m_uiActiveOrder[m_uiActivedNumber]].npc, ActiveBoat[m_uiActiveOrder[m_uiActivedNumber]].SpawnX, ActiveBoat[m_uiActiveOrder[m_uiActivedNumber]].SpawnY, ActiveBoat[m_uiActiveOrder[m_uiActivedNumber]].SpawnZ, ActiveBoat[m_uiActiveOrder[m_uiActivedNumber]].SpawnO, TEMPSUMMON_CORPSE_DESPAWN, 0))
{
@@ -370,7 +367,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
DespawnBoatGhosts(m_uiActivedCreatureGUID);
DespawnBoatGhosts(m_uiOrbGUID);
@@ -381,7 +378,7 @@ public:
void KilledUnit(Unit* /*victim*/)
{
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3, SAY_SLAY_4), me);
+ Talk(SAY_SLAY);
}
void DespawnBoatGhosts(uint64 m_uiCreatureGUID)
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp
index 96e0bc66bd1..8a5e25e4487 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp
@@ -19,7 +19,10 @@
#include "ScriptedCreature.h"
#include "vault_of_archavon.h"
-#define EMOTE_BERSERK -1590002
+enum
+{
+ EMOTE_BERSERK = 0
+};
//Spells Archavon
#define SPELL_ROCK_SHARDS 58678
@@ -109,7 +112,7 @@ class boss_archavon : public CreatureScript
break;
case EVENT_BERSERK:
DoCast(me, SPELL_BERSERK);
- DoScriptText(EMOTE_BERSERK, me);
+ Talk(EMOTE_BERSERK);
break;
default:
break;
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
index 903280d317a..b61bb20389d 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
@@ -37,9 +37,9 @@ enum Spells
enum BossEmotes
{
- EMOTE_OVERCHARGE = -1590000,
- EMOTE_MINION_RESPAWN = -1590001,
- EMOTE_BERSERK = -1590002,
+ EMOTE_OVERCHARGE = 0,
+ EMOTE_MINION_RESPAWN = 1,
+ EMOTE_BERSERK = 2
};
enum Events
@@ -146,14 +146,14 @@ class boss_emalon : public CreatureScript
{
minion->CastSpell(me, SPELL_OVERCHARGED, true);
minion->SetFullHealth();
- DoScriptText(EMOTE_OVERCHARGE, me);
+ Talk(EMOTE_OVERCHARGE);
events.ScheduleEvent(EVENT_OVERCHARGE, 45000);
}
}
break;
case EVENT_BERSERK:
DoCast(me, SPELL_BERSERK);
- DoScriptText(EMOTE_BERSERK, me);
+ Talk(EMOTE_BERSERK);
break;
default:
break;
@@ -198,7 +198,7 @@ class mob_tempest_minion : public CreatureScript
if (emalon->isAlive())
{
emalon->SummonCreature(MOB_TEMPEST_MINION, 0, 0, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
- DoScriptText(EMOTE_MINION_RESPAWN, me);
+ Talk(EMOTE_MINION_RESPAWN);
}
}
}
@@ -244,7 +244,7 @@ class mob_tempest_minion : public CreatureScript
{
DoCast(me, SPELL_OVERCHARGED_BLAST);
me->DespawnOrUnsummon();
- DoScriptText(EMOTE_MINION_RESPAWN, me);
+ Talk(EMOTE_MINION_RESPAWN);
}
}
}
diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
index b4ce402e7de..7b1b9e96baf 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
@@ -34,16 +34,13 @@ enum Spells
enum Yells
{
- SAY_AGGRO = -1608000,
- SAY_SLAY_1 = -1608001,
- SAY_SLAY_2 = -1608002,
- SAY_SLAY_3 = -1608003,
- SAY_DEATH = -1608004,
- SAY_SPAWN = -1608005,
- SAY_DISRUPTION = -1608006,
- SAY_BREATH_ATTACK = -1608007,
- SAY_SPECIAL_ATTACK_1 = -1608008,
- SAY_SPECIAL_ATTACK_2 = -1608009
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_SPAWN = 3,
+ SAY_DISRUPTION = 4,
+ SAY_BREATH_ATTACK = 5,
+ SAY_SPECIAL_ATTACK = 6
};
class boss_cyanigosa : public CreatureScript
@@ -84,7 +81,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
instance->SetData(DATA_CYANIGOSA_EVENT, IN_PROGRESS);
@@ -144,7 +141,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
instance->SetData(DATA_CYANIGOSA_EVENT, DONE);
@@ -154,7 +151,7 @@ public:
{
if (victim == me)
return;
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me);
+ Talk(SAY_SLAY);
}
};
diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp
index bd59b731c3c..15cd12140cf 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp
@@ -34,14 +34,12 @@ enum Spells
enum Yells
{
- SAY_AGGRO = -1608010,
- SAY_SLAY_1 = -1608011,
- SAY_SLAY_2 = -1608012,
- SAY_SLAY_3 = -1608013,
- SAY_DEATH = -1608014,
- SAY_SPAWN = -1608015,
- SAY_ADD_KILLED = -1608016,
- SAY_BOTH_ADDS_KILLED = -1608017
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_SPAWN = 3,
+ SAY_ADD_KILLED = 4,
+ SAY_BOTH_ADDS_KILLED = 5
};
class boss_erekem : public CreatureScript
@@ -125,7 +123,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
DoCast(me, SPELL_EARTH_SHIELD);
if (instance)
@@ -209,7 +207,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
{
@@ -230,7 +228,7 @@ public:
{
if (victim == me)
return;
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me);
+ Talk(SAY_SLAY);
}
uint64 GetChainHealTargetGUID()
diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
index cea00417233..fba7efe43ab 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
@@ -40,15 +40,13 @@ enum IchoronCreatures
enum Yells
{
- SAY_AGGRO = -1608018,
- SAY_SLAY_1 = -1608019,
- SAY_SLAY_2 = -1608020,
- SAY_SLAY_3 = -1608021,
- SAY_DEATH = -1608022,
- SAY_SPAWN = -1608023,
- SAY_ENRAGE = -1608024,
- SAY_SHATTER = -1608025,
- SAY_BUBBLE = -1608026
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_SPAWN = 3,
+ SAY_ENRAGE = 4,
+ SAY_SHATTER = 5,
+ SAY_BUBBLE = 6
};
enum Actions
@@ -120,7 +118,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
DoCast(me, SPELL_PROTECTIVE_BUBBLE);
@@ -189,7 +187,7 @@ public:
if (!HealthBelowPct(25))
{
- DoScriptText(SAY_BUBBLE, me);
+ Talk(SAY_BUBBLE);
DoCast(me, SPELL_PROTECTIVE_BUBBLE, true);
}
@@ -214,7 +212,7 @@ public:
if (!bIsFrenzy && HealthBelowPct(25) && !bIsExploded)
{
- DoScriptText(SAY_ENRAGE, me);
+ Talk(SAY_ENRAGE);
DoCast(me, SPELL_FRENZY, true);
bIsFrenzy = true;
}
@@ -227,7 +225,7 @@ public:
{
if (!me->HasAura(SPELL_PROTECTIVE_BUBBLE, 0))
{
- DoScriptText(SAY_SHATTER, me);
+ Talk(SAY_SHATTER);
DoCast(me, SPELL_WATER_BLAST);
DoCast(me, SPELL_DRAINED);
bIsExploded = true;
@@ -277,7 +275,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (bIsExploded)
{
@@ -326,7 +324,7 @@ public:
{
if (victim == me)
return;
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me);
+ Talk(SAY_SLAY);
}
};
diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
index 58d7b59c7dd..429b2ac32ea 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
@@ -22,41 +22,38 @@
enum Spells
{
- SPELL_ARCANE_BARRAGE_VOLLEY = 54202,
- SPELL_ARCANE_BARRAGE_VOLLEY_H = 59483,
- SPELL_ARCANE_BUFFET = 54226,
- SPELL_ARCANE_BUFFET_H = 59485,
- SPELL_SUMMON_ETHEREAL_SPHERE_1 = 54102,
- SPELL_SUMMON_ETHEREAL_SPHERE_2 = 54137,
- SPELL_SUMMON_ETHEREAL_SPHERE_3 = 54138,
+ SPELL_ARCANE_BARRAGE_VOLLEY = 54202,
+ SPELL_ARCANE_BARRAGE_VOLLEY_H = 59483,
+ SPELL_ARCANE_BUFFET = 54226,
+ SPELL_ARCANE_BUFFET_H = 59485,
+ SPELL_SUMMON_ETHEREAL_SPHERE_1 = 54102,
+ SPELL_SUMMON_ETHEREAL_SPHERE_2 = 54137,
+ SPELL_SUMMON_ETHEREAL_SPHERE_3 = 54138,
};
enum NPCs
{
- NPC_ETHEREAL_SPHERE = 29271,
- //NPC_ETHEREAL_SPHERE2 = 32582, // heroic only?
+ NPC_ETHEREAL_SPHERE = 29271,
+ //NPC_ETHEREAL_SPHERE2 = 32582, // heroic only?
};
enum CreatureSpells
{
- SPELL_ARCANE_POWER = 54160,
- H_SPELL_ARCANE_POWER = 59474,
- SPELL_SUMMON_PLAYERS = 54164,
- SPELL_POWER_BALL_VISUAL = 54141,
+ SPELL_ARCANE_POWER = 54160,
+ H_SPELL_ARCANE_POWER = 59474,
+ SPELL_SUMMON_PLAYERS = 54164,
+ SPELL_POWER_BALL_VISUAL = 54141,
};
enum Yells
{
- SAY_AGGRO = -1608027,
- SAY_SLAY_1 = -1608028,
- SAY_SLAY_2 = -1608029,
- SAY_SLAY_3 = -1608030,
- SAY_DEATH = -1608031,
- SAY_SPAWN = -1608032,
- SAY_CHARGED = -1608033,
- SAY_REPEAT_SUMMON_1 = -1608034,
- SAY_REPEAT_SUMMON_2 = -1608035,
- SAY_SUMMON_ENERGY = -1608036
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_SPAWN = 3,
+ SAY_CHARGED = 4,
+ SAY_REPEAT_SUMMON = 5,
+ SAY_SUMMON_ENERGY = 6
};
class boss_xevozz : public CreatureScript
@@ -139,7 +136,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
{
if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_XEVOZZ_CELL)))
@@ -182,7 +179,7 @@ public:
if (uiSummonEtherealSphere_Timer < uiDiff)
{
- DoScriptText(SAY_SPAWN, me);
+ Talk(SAY_SPAWN);
DoCast(me, SPELL_SUMMON_ETHEREAL_SPHERE_1);
if (IsHeroic()) // extra one for heroic
me->SummonCreature(NPC_ETHEREAL_SPHERE, me->GetPositionX()-5+rand()%10, me->GetPositionY()-5+rand()%10, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
@@ -197,7 +194,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
DespawnSphere();
@@ -220,7 +217,7 @@ public:
if (victim == me)
return;
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me);
+ Talk(SAY_SLAY);
}
};
diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
index 408a7083383..5216ae9f08d 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
@@ -38,14 +38,12 @@ enum ZuramatCreatures
enum Yells
{
- SAY_AGGRO = -1608037,
- SAY_SLAY_1 = -1608038,
- SAY_SLAY_2 = -1608039,
- SAY_SLAY_3 = -1608040,
- SAY_DEATH = -1608041,
- SAY_SPAWN = -1608042,
- SAY_SHIELD = -1608043,
- SAY_WHISPER = -1608044
+ SAY_AGGRO = 0,
+ SAY_SLAY = 1,
+ SAY_DEATH = 2,
+ SAY_SPAWN = 3,
+ SAY_SHIELD = 4,
+ SAY_WHISPER = 5
};
#define DATA_VOID_DANCE 2153
@@ -106,7 +104,7 @@ public:
void EnterCombat(Unit* /*who*/)
{
- DoScriptText(SAY_AGGRO, me);
+ Talk(SAY_AGGRO);
if (instance)
{
if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_ZURAMAT_CELL)))
@@ -168,7 +166,7 @@ public:
void JustDied(Unit* /*killer*/)
{
- DoScriptText(SAY_DEATH, me);
+ Talk(SAY_DEATH);
if (instance)
{
@@ -190,7 +188,7 @@ public:
if (victim == me)
return;
- DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me);
+ Talk(SAY_SLAY);
}
void JustSummoned(Creature* summon)
diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
index 5e3bbc01025..c1c93c789de 100644
--- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
+++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
@@ -16,6 +16,7 @@
*/
#include "ScriptMgr.h"
+#include "ScriptedCreature.h"
#include "InstanceScript.h"
#include "violet_hold.h"
#include "Player.h"
@@ -94,7 +95,7 @@ const Position MiddleRoomPortalSaboLocation = {1896.622925f, 804.854126f, 38.504
//Cyanigosa's prefight event data
enum Yells
{
- CYANIGOSA_SAY_SPAWN = -1608005
+ CYANIGOSA_SAY_SPAWN = 0
};
enum Spells
@@ -742,7 +743,7 @@ public:
{
case 1:
pCyanigosa->CastSpell(pCyanigosa, CYANIGOSA_BLUE_AURA, false);
- DoScriptText(CYANIGOSA_SAY_SPAWN, pCyanigosa);
+ pCyanigosa->AI()->Talk(CYANIGOSA_SAY_SPAWN);
uiCyanigosaEventTimer = 7*IN_MILLISECONDS;
++uiCyanigosaEventPhase;
break;
diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp
index c73cb97f2d1..5e326af9891 100644
--- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp
+++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp
@@ -125,7 +125,7 @@ enum Spells
enum eSinclari
{
- SAY_SINCLARI_1 = -1608045
+ SAY_SINCLARI_1 = 0
};
float FirstPortalWPs [6][3] =
@@ -353,7 +353,7 @@ public:
switch (uiPhase)
{
case 1:
- DoScriptText(SAY_SINCLARI_1, me);
+ Talk(SAY_SINCLARI_1);
uiTimer = 4000;
uiPhase = 2;
break;
diff --git a/src/server/scripts/Northrend/borean_tundra.cpp b/src/server/scripts/Northrend/borean_tundra.cpp
index bbc26de85eb..628de0238e0 100644
--- a/src/server/scripts/Northrend/borean_tundra.cpp
+++ b/src/server/scripts/Northrend/borean_tundra.cpp
@@ -66,26 +66,26 @@ public:
{
npc_sinkhole_kill_creditAI(Creature* creature) : ScriptedAI(creature){}
- uint32 uiPhaseTimer;
- uint8 Phase;
+ uint32 phaseTimer;
+ uint8 phase;
uint64 casterGuid;
void Reset()
{
- uiPhaseTimer = 500;
- Phase = 0;
+ phaseTimer = 500;
+ phase = 0;
casterGuid = 0;
}
void SpellHit(Unit* caster, const SpellInfo* spell)
{
- if (Phase)
+ if (phase)
return;
if (spell->Id == SPELL_SET_CART && caster->GetTypeId() == TYPEID_PLAYER
&& CAST_PLR(caster)->GetQuestStatus(11897) == QUEST_STATUS_INCOMPLETE)
{
- Phase = 1;
+ phase = 1;
casterGuid = caster->GetGUID();
}
}
@@ -94,32 +94,32 @@ public:
void UpdateAI(const uint32 diff)
{
- if (!Phase)
+ if (!phase)
return;
- if (uiPhaseTimer <= diff)
+ if (phaseTimer <= diff)
{
- switch (Phase)
+ switch (phase)
{
case 1:
DoCast(me, SPELL_EXPLODE_CART, true);
DoCast(me, SPELL_SUMMON_CART, true);
if (GameObject* cart = me->FindNearestGameObject(188160, 3))
cart->SetUInt32Value(GAMEOBJECT_FACTION, 14);
- uiPhaseTimer = 3000;
- Phase = 2;
+ phaseTimer = 3000;
+ phase = 2;
break;
case 2:
if (GameObject* cart = me->FindNearestGameObject(188160, 3))
cart->UseDoorOrButton();
DoCast(me, SPELL_EXPLODE_CART, true);
- uiPhaseTimer = 3000;
- Phase = 3;
+ phaseTimer = 3000;
+ phase = 3;
break;
case 3:
DoCast(me, SPELL_EXPLODE_CART, true);
- uiPhaseTimer = 2000;
- Phase = 4;
+ phaseTimer = 2000;
+ phase = 4;
case 5:
DoCast(me, SPELL_SUMMON_WORM, true);
if (Unit* worm = me->FindNearestCreature(26250, 3))
@@ -127,8 +127,8 @@ public:
worm->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
worm->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
}
- uiPhaseTimer = 1000;
- Phase = 6;
+ phaseTimer = 1000;
+ phase = 6;
break;
case 6:
DoCast(me, SPELL_EXPLODE_CART, true);
@@ -137,21 +137,21 @@ public:
me->Kill(worm);
worm->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
}
- uiPhaseTimer = 2000;
- Phase = 7;
+ phaseTimer = 2000;
+ phase = 7;
break;
case 7:
DoCast(me, SPELL_EXPLODE_CART, true);
if (Player* caster = Unit::GetPlayer(*me, casterGuid))
caster->KilledMonster(me->GetCreatureTemplate(), me->GetGUID());
- uiPhaseTimer = 5000;
- Phase = 8;
+ phaseTimer = 5000;
+ phase = 8;
break;
case 8:
EnterEvadeMode();
break;
}
- } else uiPhaseTimer -= diff;
+ } else phaseTimer -= diff;
}
@@ -547,14 +547,14 @@ public:
npc_nesingwary_trapperAI(Creature* creature) : ScriptedAI(creature) { creature->SetVisible(false); }
uint64 go_caribouGUID;
- uint8 Phase;
- uint32 uiPhaseTimer;
+ uint8 phase;
+ uint32 phaseTimer;
void Reset()
{
me->SetVisible(false);
- uiPhaseTimer = 2500;
- Phase = 1;
+ phaseTimer = 2500;
+ phase = 1;
go_caribouGUID = 0;
}
@@ -578,41 +578,41 @@ public:
void UpdateAI(const uint32 diff)
{
- if (uiPhaseTimer <= diff)
+ if (phaseTimer <= diff)
{
- switch (Phase)
+ switch (phase)
{
case 1:
me->SetVisible(true);
- uiPhaseTimer = 2000;
- Phase = 2;
+ phaseTimer = 2000;
+ phase = 2;
break;
case 2:
if (GameObject* go_fur = me->FindNearestGameObject(GO_HIGH_QUALITY_FUR, 11.0f))
me->GetMotionMaster()->MovePoint(0, go_fur->GetPositionX(), go_fur->GetPositionY(), go_fur->GetPositionZ());
- uiPhaseTimer = 1500;
- Phase = 3;
+ phaseTimer = 1500;
+ phase = 3;
break;
case 3:
- //DoScriptText(SAY_NESINGWARY_1, me);
- uiPhaseTimer = 2000;
- Phase = 4;
+ //Talk(SAY_NESINGWARY_1);
+ phaseTimer = 2000;
+ phase = 4;
break;
case 4:
me->HandleEmoteCommand(EMOTE_ONESHOT_LOOT);
- uiPhaseTimer = 1000;
- Phase = 5;
+ phaseTimer = 1000;
+ phase = 5;
break;
case 5:
me->HandleEmoteCommand(EMOTE_ONESHOT_NONE);
- uiPhaseTimer = 500;
- Phase = 6;
+ phaseTimer = 500;
+ phase = 6;
break;
case 6:
if (GameObject* go_fur = me->FindNearestGameObject(GO_HIGH_QUALITY_FUR, 11.0f))
go_fur->Delete();
- uiPhaseTimer = 500;
- Phase = 7;
+ phaseTimer = 500;
+ phase = 7;
break;
case 7:
{
@@ -627,16 +627,16 @@ public:
break;
}
}
- Phase = 8;
- uiPhaseTimer = 1000;
+ phase = 8;
+ phaseTimer = 1000;
}
break;
case 8:
DoCast(me, SPELL_TRAPPED, true);
- Phase = 0;
+ phase = 0;
break;
}
- } else uiPhaseTimer -= diff;
+ } else phaseTimer -= diff;
}
};
@@ -658,12 +658,12 @@ enum eLurgglbr
FACTION_ESCORTEE_A = 774,
FACTION_ESCORTEE_H = 775,
-};
-/*#define SAY_WP_1_LUR_START -1571004
-#define SAY_WP_1_LUR_END -1571005
-#define SAY_WP_41_LUR_START -1571006
-#define SAY_WP_41_LUR_END -1571007*/
+ SAY_START_1 = 0,
+ SAY_START_2 = 1,
+ SAY_END_1 = 2,
+ SAY_END_2 = 3
+};
class npc_lurgglbr : public CreatureScript
{
@@ -710,12 +710,12 @@ public:
switch (IntroPhase)
{
case 1:
- //DoScriptText(SAY_WP_1_LUR_START, me);
+ Talk(SAY_START_1);
IntroPhase = 2;
IntroTimer = 7500;
break;
case 2:
- //DoScriptText(SAY_WP_1_LUR_END, me);
+ Talk(SAY_END_1);
IntroPhase = 3;
IntroTimer = 7500;
break;
@@ -725,12 +725,12 @@ public:
IntroTimer = 0;
break;
case 4:
- //DoScriptText(SAY_WP_41_LUR_START, me);
+ Talk(SAY_START_2);
IntroPhase = 5;
IntroTimer = 8000;
break;
case 5:
- //DoScriptText(SAY_WP_41_LUR_END, me);
+ Talk(SAY_END_2);
IntroPhase = 6;
IntroTimer = 2500;
break;
@@ -915,26 +915,30 @@ enum eThassarian
NPC_GENERAL_ARLOS = 25250,
NPC_LERYSSA = 25251,
- SAY_TALBOT_1 = -1571004,
- SAY_LICH_1 = -1571005,
- SAY_TALBOT_2 = -1571006,
- SAY_THASSARIAN_1 = -1571007,
- SAY_THASSARIAN_2 = -1571008,
- SAY_LICH_2 = -1571009,
- SAY_THASSARIAN_3 = -1571010,
- SAY_TALBOT_3 = -1571011,
- SAY_LICH_3 = -1571012,
- SAY_TALBOT_4 = -1571013,
- SAY_ARLOS_1 = -1571014,
- SAY_ARLOS_2 = -1571015,
- SAY_LERYSSA_1 = -1571016,
- SAY_THASSARIAN_4 = -1571017,
- SAY_LERYSSA_2 = -1571018,
- SAY_THASSARIAN_5 = -1571019,
- SAY_LERYSSA_3 = -1571020,
- SAY_THASSARIAN_6 = -1571021,
- SAY_LERYSSA_4 = -1571022,
- SAY_THASSARIAN_7 = -1571023,
+ SAY_THASSARIAN_1 = 0,
+ SAY_THASSARIAN_2 = 1,
+ SAY_THASSARIAN_3 = 2,
+ SAY_THASSARIAN_4 = 3,
+ SAY_THASSARIAN_5 = 4,
+ SAY_THASSARIAN_6 = 5,
+ SAY_THASSARIAN_7 = 6,
+
+ SAY_TALBOT_1 = 0,
+ SAY_TALBOT_2 = 1,
+ SAY_TALBOT_3 = 2,
+ SAY_TALBOT_4 = 3,
+
+ SAY_LICH_1 = 0,
+ SAY_LICH_2 = 1,
+ SAY_LICH_3 = 2,
+
+ SAY_ARLOS_1 = 0,
+ SAY_ARLOS_2 = 1,
+
+ SAY_LERYSSA_1 = 0,
+ SAY_LERYSSA_2 = 1,
+ SAY_LERYSSA_3 = 2,
+ SAY_LERYSSA_4 = 3
};
#define GOSSIP_ITEM_T "Let's do this, Thassarian. It's now or never."
@@ -946,40 +950,38 @@ public:
struct npc_thassarianAI : public npc_escortAI
{
- npc_thassarianAI(Creature* creature) : npc_escortAI(creature)
- {
- }
+ npc_thassarianAI(Creature* creature) : npc_escortAI(creature) {}
- uint64 uiArthas;
- uint64 uiTalbot;
- uint64 uiLeryssa;
- uint64 uiArlos;
+ uint64 arthasGUID;
+ uint64 talbotGUID;
+ uint64 leryssaGUID;
+ uint64 arlosGUID;
- bool bArthasInPosition;
- bool bArlosInPosition;
- bool bLeryssaInPosition;
- bool bTalbotInPosition;
+ bool arthasInPosition;
+ bool arlosInPosition;
+ bool leryssaInPosition;
+ bool talbotInPosition;
- uint32 uiPhase;
- uint32 uiPhaseTimer;
+ uint32 phase;
+ uint32 phaseTimer;
void Reset()
{
me->RestoreFaction();
me->RemoveStandFlags(UNIT_STAND_STATE_SIT);
- uiArthas = 0;
- uiTalbot = 0;
- uiLeryssa = 0;
- uiArlos = 0;
+ arthasGUID = 0;
+ talbotGUID = 0;
+ leryssaGUID = 0;
+ arlosGUID = 0;
- bArthasInPosition = false;
- bArlosInPosition = false;
- bLeryssaInPosition = false;
- bTalbotInPosition = false;
+ arthasInPosition = false;
+ arlosInPosition = false;
+ leryssaInPosition = false;
+ talbotInPosition = false;
- uiPhase = 0;
- uiPhaseTimer = 0;
+ phase = 0;
+ phaseTimer = 0;
}
void WaypointReached(uint32 waypointId)
@@ -992,25 +994,25 @@ public:
{
case 3:
SetEscortPaused(true);
- if (Creature* pArthas = me->SummonCreature(NPC_IMAGE_LICH_KING, 3730.313f, 3518.689f, 473.324f, 1.562f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
+ if (Creature* arthas = me->SummonCreature(NPC_IMAGE_LICH_KING, 3730.313f, 3518.689f, 473.324f, 1.562f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
{
- uiArthas = pArthas->GetGUID();
- pArthas->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- pArthas->SetReactState(REACT_PASSIVE);
- pArthas->SetWalk(true);
- pArthas->GetMotionMaster()->MovePoint(0, 3737.374756f, 3564.841309f, 477.433014f);
+ arthasGUID = arthas->GetGUID();
+ arthas->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ arthas->SetReactState(REACT_PASSIVE);
+ arthas->SetWalk(true);
+ arthas->GetMotionMaster()->MovePoint(0, 3737.374756f, 3564.841309f, 477.433014f);
}
- if (Creature* pTalbot = me->SummonCreature(NPC_COUNSELOR_TALBOT, 3747.23f, 3614.936f, 473.321f, 4.462012f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
+ if (Creature* talbot = me->SummonCreature(NPC_COUNSELOR_TALBOT, 3747.23f, 3614.936f, 473.321f, 4.462012f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
{
- uiTalbot = pTalbot->GetGUID();
- pTalbot->SetWalk(true);
- pTalbot->GetMotionMaster()->MovePoint(0, 3738.000977f, 3568.882080f, 477.433014f);
+ talbotGUID = talbot->GetGUID();
+ talbot->SetWalk(true);
+ talbot->GetMotionMaster()->MovePoint(0, 3738.000977f, 3568.882080f, 477.433014f);
}
me->SetWalk(false);
break;
case 4:
SetEscortPaused(true);
- uiPhase = 7;
+ phase = 7;
break;
}
}
@@ -1019,173 +1021,173 @@ public:
{
npc_escortAI::UpdateAI(uiDiff);
- if (bArthasInPosition && bTalbotInPosition)
+ if (arthasInPosition && talbotInPosition)
{
- uiPhase = 1;
- bArthasInPosition = false;
- bTalbotInPosition = false;
+ phase = 1;
+ arthasInPosition = false;
+ talbotInPosition = false;
}
- if (bArlosInPosition && bLeryssaInPosition)
+ if (arlosInPosition && leryssaInPosition)
{
- bArlosInPosition = false;
- bLeryssaInPosition = false;
- DoScriptText(SAY_THASSARIAN_1, me);
+ arlosInPosition = false;
+ leryssaInPosition = false;
+ Talk(SAY_THASSARIAN_1);
SetEscortPaused(false);
}
- if (uiPhaseTimer <= uiDiff)
+ if (phaseTimer <= uiDiff)
{
- Creature* pTalbot = me->GetCreature(*me, uiTalbot);
- Creature* pArthas = me->GetCreature(*me, uiArthas);
- switch (uiPhase)
+ Creature* talbot = me->GetCreature(*me, talbotGUID);
+ Creature* arthas = me->GetCreature(*me, arthasGUID);
+ switch (phase)
{
case 1:
- if (pTalbot)
- pTalbot->SetStandState(UNIT_STAND_STATE_KNEEL);
- uiPhaseTimer = 3000;
- ++uiPhase;
+ if (talbot)
+ talbot->SetStandState(UNIT_STAND_STATE_KNEEL);
+ phaseTimer = 3000;
+ ++phase;
break;
case 2:
- if (pTalbot)
+ if (talbot)
{
- pTalbot->UpdateEntry(NPC_PRINCE_VALANAR, ALLIANCE);
- pTalbot->setFaction(14);
- pTalbot->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- pTalbot->SetReactState(REACT_PASSIVE);
+ talbot->UpdateEntry(NPC_PRINCE_VALANAR, ALLIANCE);
+ talbot->setFaction(14);
+ talbot->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ talbot->SetReactState(REACT_PASSIVE);
}
- uiPhaseTimer = 5000;
- ++uiPhase;
+ phaseTimer = 5000;
+ ++phase;
break;
case 3:
- if (pTalbot)
- DoScriptText(SAY_TALBOT_1, pTalbot);
- uiPhaseTimer = 5000;
- ++uiPhase;
+ if (talbot)
+ talbot->AI()->Talk(SAY_TALBOT_1);
+ phaseTimer = 5000;
+ ++phase;
break;
case 4:
- if (pArthas)
- DoScriptText(SAY_LICH_1, pArthas);
- uiPhaseTimer = 5000;
- ++uiPhase;
+ if (arthas)
+ arthas->AI()->Talk(SAY_LICH_1);
+ phaseTimer = 5000;
+ ++phase;
break;
case 5:
- if (pTalbot)
- DoScriptText(SAY_TALBOT_2, pTalbot);
- uiPhaseTimer = 5000;
- ++uiPhase;
+ if (talbot)
+ talbot->AI()->Talk(SAY_TALBOT_2);
+ phaseTimer = 5000;
+ ++phase;
break;
case 6:
- if (Creature* pArlos = me->SummonCreature(NPC_GENERAL_ARLOS, 3745.527100f, 3615.655029f, 473.321533f, 4.447805f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
+ if (Creature* arlos = me->SummonCreature(NPC_GENERAL_ARLOS, 3745.527100f, 3615.655029f, 473.321533f, 4.447805f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
{
- uiArlos = pArlos->GetGUID();
- pArlos->SetWalk(true);
- pArlos->GetMotionMaster()->MovePoint(0, 3735.570068f, 3572.419922f, 477.441010f);
+ arlosGUID = arlos->GetGUID();
+ arlos->SetWalk(true);
+ arlos->GetMotionMaster()->MovePoint(0, 3735.570068f, 3572.419922f, 477.441010f);
}
- if (Creature* pLeryssa = me->SummonCreature(NPC_LERYSSA, 3749.654541f, 3614.959717f, 473.323486f, 4.524959f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
+ if (Creature* leryssa = me->SummonCreature(NPC_LERYSSA, 3749.654541f, 3614.959717f, 473.323486f, 4.524959f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
{
- uiLeryssa = pLeryssa->GetGUID();
- pLeryssa->SetWalk(false);
- pLeryssa->SetReactState(REACT_PASSIVE);
- pLeryssa->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- pLeryssa->GetMotionMaster()->MovePoint(0, 3741.969971f, 3571.439941f, 477.441010f);
+ leryssaGUID = leryssa->GetGUID();
+ leryssa->SetWalk(false);
+ leryssa->SetReactState(REACT_PASSIVE);
+ leryssa->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ leryssa->GetMotionMaster()->MovePoint(0, 3741.969971f, 3571.439941f, 477.441010f);
}
- uiPhaseTimer = 2000;
- uiPhase = 0;
+ phaseTimer = 2000;
+ phase = 0;
break;
case 7:
- DoScriptText(SAY_THASSARIAN_2, me);
- uiPhaseTimer = 5000;
- ++uiPhase;
+ Talk(SAY_THASSARIAN_2);
+ phaseTimer = 5000;
+ ++phase;
break;
case 8:
- if (pArthas && pTalbot)
+ if (arthas && talbot)
{
- pArthas->SetInFront(me); //The client doesen't update with the new orientation :l
- pTalbot->SetStandState(UNIT_STAND_STATE_STAND);
- DoScriptText(SAY_LICH_2, pArthas);
+ arthas->SetInFront(me); //The client doesen't update with the new orientation :l
+ talbot->SetStandState(UNIT_STAND_STATE_STAND);
+ arthas->AI()->Talk(SAY_LICH_2);
}
- uiPhaseTimer = 5000;
- uiPhase = 9;
+ phaseTimer = 5000;
+ phase = 9;
break;
case 9:
- DoScriptText(SAY_THASSARIAN_3, me);
- uiPhaseTimer = 5000;
- uiPhase = 10;
+ Talk(SAY_THASSARIAN_3);
+ phaseTimer = 5000;
+ phase = 10;
break;
case 10:
- if (pTalbot)
- DoScriptText(SAY_TALBOT_3, pTalbot);
- uiPhaseTimer = 5000;
- uiPhase = 11;
+ if (talbot)
+ talbot->AI()->Talk(SAY_TALBOT_3);
+ phaseTimer = 5000;
+ phase = 11;
break;
case 11:
- if (pArthas)
- DoScriptText(SAY_LICH_3, pArthas);
- uiPhaseTimer = 5000;
- uiPhase = 12;
+ if (arthas)
+ arthas->AI()->Talk(SAY_LICH_3);
+ phaseTimer = 5000;
+ phase = 12;
break;
case 12:
- if (pTalbot)
- DoScriptText(SAY_TALBOT_4, pTalbot);
- uiPhaseTimer = 2000;
- uiPhase = 13;
+ if (talbot)
+ talbot->AI()->Talk(SAY_TALBOT_4);
+ phaseTimer = 2000;
+ phase = 13;
break;
case 13:
- if (pArthas)
- pArthas->RemoveFromWorld();
- ++uiPhase;
+ if (arthas)
+ arthas->RemoveFromWorld();
+ ++phase;
break;
case 14:
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- if (pTalbot)
+ if (talbot)
{
- pTalbot->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- pTalbot->SetReactState(REACT_AGGRESSIVE);
- pTalbot->CastSpell(me, SPELL_SHADOW_BOLT, false);
+ talbot->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ talbot->SetReactState(REACT_AGGRESSIVE);
+ talbot->CastSpell(me, SPELL_SHADOW_BOLT, false);
}
- uiPhaseTimer = 1500;
- ++uiPhase;
+ phaseTimer = 1500;
+ ++phase;
break;
case 15:
me->SetReactState(REACT_AGGRESSIVE);
- AttackStart(pTalbot);
- uiPhase = 0;
+ AttackStart(talbot);
+ phase = 0;
break;
case 16:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
- uiPhaseTimer = 20000;
- ++uiPhase;
+ phaseTimer = 20000;
+ ++phase;
break;
case 17:
- if (Creature* pLeryssa = me->GetCreature(*me, uiLeryssa))
- pLeryssa->RemoveFromWorld();
- if (Creature* pArlos= me->GetCreature(*me, uiArlos))
- pArlos->RemoveFromWorld();
- if (pTalbot)
- pTalbot->RemoveFromWorld();
+ if (Creature* leryssa = me->GetCreature(*me, leryssaGUID))
+ leryssa->RemoveFromWorld();
+ if (Creature* arlos= me->GetCreature(*me, arlosGUID))
+ arlos->RemoveFromWorld();
+ if (talbot)
+ talbot->RemoveFromWorld();
me->RemoveStandFlags(UNIT_STAND_STATE_SIT);
SetEscortPaused(false);
- uiPhaseTimer = 0;
- uiPhase = 0;
+ phaseTimer = 0;
+ phase = 0;
}
- } else uiPhaseTimer -= uiDiff;
+ } else phaseTimer -= uiDiff;
if (!UpdateVictim())
return;
@@ -1195,17 +1197,17 @@ public:
void JustDied(Unit* /*killer*/)
{
- if (Creature* pTalbot = me->GetCreature(*me, uiTalbot))
- pTalbot->RemoveFromWorld();
+ if (Creature* talbot = me->GetCreature(*me, talbotGUID))
+ talbot->RemoveFromWorld();
- if (Creature* pLeryssa = me->GetCreature(*me, uiLeryssa))
- pLeryssa->RemoveFromWorld();
+ if (Creature* leryssa = me->GetCreature(*me, leryssaGUID))
+ leryssa->RemoveFromWorld();
- if (Creature* pArlos = me->GetCreature(*me, uiArlos))
- pArlos->RemoveFromWorld();
+ if (Creature* arlos = me->GetCreature(*me, arlosGUID))
+ arlos->RemoveFromWorld();
- if (Creature* pArthas = me->GetCreature(*me, uiArthas))
- pArthas->RemoveFromWorld();
+ if (Creature* arthas = me->GetCreature(*me, arthasGUID))
+ arthas->RemoveFromWorld();
}
};
@@ -1266,7 +1268,7 @@ public:
if (me->isSummon())
if (Unit* summoner = me->ToTempSummon()->GetSummoner())
- CAST_AI(npc_thassarian::npc_thassarianAI, CAST_CRE(summoner)->AI())->bArthasInPosition = true;
+ CAST_AI(npc_thassarian::npc_thassarianAI, CAST_CRE(summoner)->AI())->arthasInPosition = true;
}
};
@@ -1298,7 +1300,7 @@ public:
me->CastSpell(me, SPELL_STUN, true);
if (me->isSummon())
if (Unit* summoner = me->ToTempSummon()->GetSummoner())
- CAST_AI(npc_thassarian::npc_thassarianAI, CAST_CRE(summoner)->AI())->bArlosInPosition = true;
+ CAST_AI(npc_thassarian::npc_thassarianAI, CAST_CRE(summoner)->AI())->arlosInPosition = true;
}
};
@@ -1330,23 +1332,23 @@ public:
creature->RestoreFaction();
}
- uint64 LeryssaGUID;
- uint64 ArlosGUID;
+ uint64 leryssaGUID;
+ uint64 arlosGUID;
bool bCheck;
- uint32 uiShadowBoltTimer;
- uint32 uiDeflectionTimer;
- uint32 uiSoulBlastTimer;
+ uint32 shadowBoltTimer;
+ uint32 deflectionTimer;
+ uint32 soulBlastTimer;
void Reset()
{
- LeryssaGUID = 0;
- ArlosGUID = 0;
+ leryssaGUID = 0;
+ arlosGUID = 0;
bCheck = false;
- uiShadowBoltTimer = urand(5000, 12000);
- uiDeflectionTimer = urand(20000, 25000);
- uiSoulBlastTimer = urand (12000, 18000);
+ shadowBoltTimer = urand(5000, 12000);
+ deflectionTimer = urand(20000, 25000);
+ soulBlastTimer = urand (12000, 18000);
}
void MovementInform(uint32 uiType, uint32 /*uiId*/)
{
@@ -1355,17 +1357,17 @@ public:
if (me->isSummon())
if (Unit* summoner = me->ToTempSummon()->GetSummoner())
- CAST_AI(npc_thassarian::npc_thassarianAI, CAST_CRE(summoner)->AI())->bTalbotInPosition = true;
+ CAST_AI(npc_thassarian::npc_thassarianAI, CAST_CRE(summoner)->AI())->talbotInPosition = true;
}
void UpdateAI(const uint32 uiDiff)
{
if (bCheck)
{
- if (Creature* pLeryssa = me->FindNearestCreature(NPC_LERYSSA, 50.0f, true))
- LeryssaGUID = pLeryssa->GetGUID();
- if (Creature* pArlos = me->FindNearestCreature(NPC_GENERAL_ARLOS, 50.0f, true))
- ArlosGUID = pArlos->GetGUID();
+ if (Creature* leryssa = me->FindNearestCreature(NPC_LERYSSA, 50.0f, true))
+ leryssaGUID = leryssa->GetGUID();
+ if (Creature* arlos = me->FindNearestCreature(NPC_GENERAL_ARLOS, 50.0f, true))
+ arlosGUID = arlos->GetGUID();
bCheck = false;
}
@@ -1374,23 +1376,23 @@ public:
if (me->GetAreaId() == 4125)
{
- if (uiShadowBoltTimer <= uiDiff)
+ if (shadowBoltTimer <= uiDiff)
{
DoCast(me->getVictim(), SPELL_SHADOW_BOLT);
- uiShadowBoltTimer = urand(5000, 12000);
- } else uiShadowBoltTimer -= uiDiff;
+ shadowBoltTimer = urand(5000, 12000);
+ } else shadowBoltTimer -= uiDiff;
- if (uiDeflectionTimer <= uiDiff)
+ if (deflectionTimer <= uiDiff)
{
DoCast(me->getVictim(), SPELL_DEFLECTION);
- uiDeflectionTimer = urand(20000, 25000);
- } else uiDeflectionTimer -= uiDiff;
+ deflectionTimer = urand(20000, 25000);
+ } else deflectionTimer -= uiDiff;
- if (uiSoulBlastTimer <= uiDiff)
+ if (soulBlastTimer <= uiDiff)
{
DoCast(me->getVictim(), SPELL_SOUL_BLAST);
- uiSoulBlastTimer = urand (12000, 18000);
- } else uiSoulBlastTimer -= uiDiff;
+ soulBlastTimer = urand (12000, 18000);
+ } else soulBlastTimer -= uiDiff;
}
DoMeleeAttackIfReady();
@@ -1398,22 +1400,22 @@ public:
void JustDied(Unit* killer)
{
- if (!LeryssaGUID || !ArlosGUID)
+ if (!leryssaGUID || !arlosGUID)
return;
- Creature* pLeryssa = Unit::GetCreature(*me, LeryssaGUID);
- Creature* pArlos = Unit::GetCreature(*me, ArlosGUID);
- if (!pLeryssa || !pArlos)
+ Creature* leryssa = Unit::GetCreature(*me, leryssaGUID);
+ Creature* arlos = Unit::GetCreature(*me, arlosGUID);
+ if (!leryssa || !arlos)
return;
- DoScriptText(SAY_ARLOS_1, pArlos);
- DoScriptText(SAY_ARLOS_2, pArlos);
- DoScriptText(SAY_LERYSSA_1, pLeryssa);
- pArlos->Kill(pArlos, false);
- pLeryssa->RemoveAura(SPELL_STUN);
- pLeryssa->ClearUnitState(UNIT_STATE_STUNNED);
- pLeryssa->SetWalk(false);
- pLeryssa->GetMotionMaster()->MovePoint(0, 3722.114502f, 3564.201660f, 477.441437f);
+ arlos->AI()->Talk(SAY_ARLOS_1);
+ arlos->AI()->Talk(SAY_ARLOS_2);
+ leryssa->AI()->Talk(SAY_LERYSSA_1);
+ arlos->Kill(arlos, false);
+ leryssa->RemoveAura(SPELL_STUN);
+ leryssa->ClearUnitState(UNIT_STATE_STUNNED);
+ leryssa->SetWalk(false);
+ leryssa->GetMotionMaster()->MovePoint(0, 3722.114502f, 3564.201660f, 477.441437f);
if (Player* player = killer->ToPlayer())
player->RewardPlayerAndGroupAtEvent(NPC_PRINCE_VALANAR, 0);
@@ -1440,33 +1442,33 @@ public:
npc_leryssaAI(Creature* creature) : ScriptedAI(creature)
{
bDone = false;
- Phase = 0;
- uiPhaseTimer = 0;
+ phase = 0;
+ phaseTimer = 0;
creature->RemoveStandFlags(UNIT_STAND_STATE_SIT);
}
bool bDone;
- uint32 Phase;
- uint32 uiPhaseTimer;
+ uint32 phase;
+ uint32 phaseTimer;
- void MovementInform(uint32 uiType, uint32 /*uiId*/)
+ void MovementInform(uint32 type, uint32 /*uiId*/)
{
- if (uiType != POINT_MOTION_TYPE)
+ if (type != POINT_MOTION_TYPE)
return;
if (!bDone)
{
- if (Creature* pTalbot = me->FindNearestCreature(NPC_PRINCE_VALANAR, 50.0f, true))
- CAST_AI(npc_counselor_talbot::npc_counselor_talbotAI, pTalbot->GetAI())->bCheck = true;
+ if (Creature* talbot = me->FindNearestCreature(NPC_PRINCE_VALANAR, 50.0f, true))
+ CAST_AI(npc_counselor_talbot::npc_counselor_talbotAI, talbot->GetAI())->bCheck = true;
me->AddUnitState(UNIT_STATE_STUNNED);
me->CastSpell(me, SPELL_STUN, true);
if (me->isSummon())
if (Unit* summoner = me->ToTempSummon()->GetSummoner())
- CAST_AI(npc_thassarian::npc_thassarianAI, summoner->GetAI())->bLeryssaInPosition = true;
+ CAST_AI(npc_thassarian::npc_thassarianAI, summoner->GetAI())->leryssaInPosition = true;
bDone = true;
}
else
@@ -1475,8 +1477,8 @@ public:
if (me->isSummon())
if (Unit* summoner = me->ToTempSummon()->GetSummoner())
summoner->SetStandState(UNIT_STAND_STATE_SIT);
- uiPhaseTimer = 1500;
- Phase = 1;
+ phaseTimer = 1500;
+ phase = 1;
}
}
@@ -1484,59 +1486,63 @@ public:
{
ScriptedAI::UpdateAI(uiDiff);
- if (uiPhaseTimer <= uiDiff)
+ if (phaseTimer <= uiDiff)
{
- switch (Phase)
+ switch (phase)
{
case 1:
if (me->isSummon())
- if (Unit* pThassarian = me->ToTempSummon()->GetSummoner())
- DoScriptText(SAY_THASSARIAN_4, pThassarian);
- uiPhaseTimer = 5000;
- ++Phase;
+ if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Creature* thassarian = summoner->ToCreature())
+ thassarian->AI()->Talk(SAY_THASSARIAN_4);
+ phaseTimer = 5000;
+ ++phase;
break;
case 2:
- DoScriptText(SAY_LERYSSA_2, me);
- uiPhaseTimer = 5000;
- ++Phase;
+ Talk(SAY_LERYSSA_2);
+ phaseTimer = 5000;
+ ++phase;
break;
case 3:
if (me->isSummon())
- if (Unit* pThassarian = me->ToTempSummon()->GetSummoner())
- DoScriptText(SAY_THASSARIAN_5, pThassarian);
- uiPhaseTimer = 5000;
- ++Phase;
+ if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Creature* thassarian = summoner->ToCreature())
+ thassarian->AI()->Talk(SAY_THASSARIAN_5);
+ phaseTimer = 5000;
+ ++phase;
break;
case 4:
- DoScriptText(SAY_LERYSSA_3, me);
- uiPhaseTimer = 5000;
- ++Phase;
+ Talk(SAY_LERYSSA_3);
+ phaseTimer = 5000;
+ ++phase;
break;
case 5:
if (me->isSummon())
- if (Unit* pThassarian = me->ToTempSummon()->GetSummoner())
- DoScriptText(SAY_THASSARIAN_6, pThassarian);
- uiPhaseTimer = 5000;
- ++Phase;
+ if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Creature* thassarian = summoner->ToCreature())
+ thassarian->AI()->Talk(SAY_THASSARIAN_6);
+ phaseTimer = 5000;
+ ++phase;
break;
case 6:
- DoScriptText(SAY_LERYSSA_4, me);
- uiPhaseTimer = 5000;
- ++Phase;
+ Talk(SAY_LERYSSA_4);
+ phaseTimer = 5000;
+ ++phase;
break;
case 7:
if (me->isSummon())
- if (Unit* pThassarian = me->ToTempSummon()->GetSummoner())
- {
- DoScriptText(SAY_THASSARIAN_7, pThassarian);
- CAST_AI(npc_thassarian::npc_thassarianAI, pThassarian->GetAI())->uiPhase = 16;
- }
- uiPhaseTimer = 5000;
- Phase = 0;
+ if (Unit* summoner = me->ToTempSummon()->GetSummoner())
+ if (Creature* thassarian = summoner->ToCreature())
+ {
+ thassarian->AI()->Talk(SAY_THASSARIAN_7);
+ CAST_AI(npc_thassarian::npc_thassarianAI, thassarian->GetAI())->phase = 16;
+ }
+ phaseTimer = 5000;
+ phase = 0;
break;
}
- } else uiPhaseTimer -= uiDiff;
+ } else phaseTimer -= uiDiff;
if (!UpdateVictim())
return;
@@ -1640,13 +1646,13 @@ enum eImprisionedBerylSorcerer
NPC_IMPRISONED_BERYL_SORCERER = 25478,
- SAY_IMPRISIONED_BERYL_1 = -1571024,
- SAY_IMPRISIONED_BERYL_2 = -1571025,
- SAY_IMPRISIONED_BERYL_3 = -1571026,
- SAY_IMPRISIONED_BERYL_4 = -1571027,
- SAY_IMPRISIONED_BERYL_5 = -1571028,
- SAY_IMPRISIONED_BERYL_6 = -1571029,
- SAY_IMPRISIONED_BERYL_7 = -1571030,
+ SAY_IMPRISIONED_BERYL_1 = 0,
+ SAY_IMPRISIONED_BERYL_2 = 1,
+ SAY_IMPRISIONED_BERYL_3 = 2,
+ SAY_IMPRISIONED_BERYL_4 = 3,
+ SAY_IMPRISIONED_BERYL_5 = 4,
+ SAY_IMPRISIONED_BERYL_6 = 5,
+ SAY_IMPRISIONED_BERYL_7 = 6
};
class npc_imprisoned_beryl_sorcerer : public CreatureScript
@@ -1709,25 +1715,25 @@ public:
switch (step)
{
case 1:
- DoScriptText(SAY_IMPRISIONED_BERYL_1, me);
+ Talk(SAY_IMPRISIONED_BERYL_1);
break;
case 2:
- DoScriptText(SAY_IMPRISIONED_BERYL_2, me, caster);
+ Talk(SAY_IMPRISIONED_BERYL_2, caster->GetGUID());
break;
case 3:
- DoScriptText(SAY_IMPRISIONED_BERYL_3, me);
+ Talk(SAY_IMPRISIONED_BERYL_3);
break;
case 4:
- DoScriptText(SAY_IMPRISIONED_BERYL_4, me);
+ Talk(SAY_IMPRISIONED_BERYL_4);
break;
case 5:
- DoScriptText(SAY_IMPRISIONED_BERYL_5, me);
+ Talk(SAY_IMPRISIONED_BERYL_5);
break;
case 6:
- DoScriptText(SAY_IMPRISIONED_BERYL_6, me, caster);
+ Talk(SAY_IMPRISIONED_BERYL_6, caster->GetGUID());
break;
case 7:
- DoScriptText(SAY_IMPRISIONED_BERYL_7, me);
+ Talk(SAY_IMPRISIONED_BERYL_7);
caster->KilledMonsterCredit(NPC_IMPRISONED_BERYL_SORCERER, 0);
break;
}
@@ -1744,18 +1750,16 @@ public:
/*######
## npc_mootoo_the_younger
######*/
-enum Script_Texts_Mootoo_the_Younger
-{
- SAY_1 =-1750040,
- SAY_2 =-1750041,
- SAY_3 =-1750042,
- SAY_4 =-1750043,
- SAY_5 =-1750044
-};
-enum Mootoo_the_Younger_Entries
+enum MootooTheYounger
{
- NPC_MOOTOO_THE_YOUNGER =25504,
- QUEST_ESCAPING_THE_MIST =11664
+ SAY_1 = 0,
+ SAY_2 = 1,
+ SAY_3 = 2,
+ SAY_4 = 3,
+ SAY_5 = 4,
+
+ NPC_MOOTOO_THE_YOUNGER = 25504,
+ QUEST_ESCAPING_THE_MIST = 11664
};
class npc_mootoo_the_younger : public CreatureScript
@@ -1777,7 +1781,7 @@ public:
break;
}
creature->SetStandState(UNIT_STAND_STATE_STAND);
- DoScriptText(SAY_1, creature);
+ creature->AI()->Talk(SAY_1);
CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
}
return true;
@@ -1808,19 +1812,19 @@ public:
{
case 10:
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
- DoScriptText(SAY_2, me);
+ Talk(SAY_2);
break;
case 12:
- DoScriptText(SAY_3, me);
+ Talk(SAY_3);
me->HandleEmoteCommand(EMOTE_ONESHOT_LOOT);
break;
case 16:
- DoScriptText(SAY_4, me);
+ Talk(SAY_4);
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
break;
case 20:
me->SetPhaseMask(1, true);
- DoScriptText(SAY_5, me);
+ Talk(SAY_5);
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
player->GroupEventHappens(QUEST_ESCAPING_THE_MIST, me);
SetRun(true);
@@ -1839,15 +1843,13 @@ public:
## npc_bonker_togglevolt
######*/
-enum Bonker_Togglevolt_Entries
+enum BonkerTogglevolt
{
- NPC_BONKER_TOGGLEVOLT = 25589,
- QUEST_GET_ME_OUTA_HERE = 11673
-};
-enum Script_Texts_Bonker_Togglevolt
-{
- SAY_bonker_1 = -1700002,
- SAY_bonker_2 = -1700003
+ NPC_BONKER_TOGGLEVOLT = 25589,
+ QUEST_GET_ME_OUTA_HERE = 11673,
+
+ SAY_BONKER_1 = 0,
+ SAY_BONKER_2 = 1
};
class npc_bonker_togglevolt : public CreatureScript
@@ -1860,7 +1862,7 @@ public:
if (quest->GetQuestId() == QUEST_GET_ME_OUTA_HERE)
{
creature->SetStandState(UNIT_STAND_STATE_STAND);
- DoScriptText(SAY_bonker_2, creature, player);
+ creature->AI()->Talk(SAY_BONKER_2, player->GetGUID());
CAST_AI(npc_escortAI, (creature->AI()))->Start(true, true, player->GetGUID());
}
return true;
@@ -1889,7 +1891,7 @@ public:
{
if (Bonker_agro == 0)
{
- DoScriptText(SAY_bonker_1, me);
+ Talk(SAY_BONKER_1);
Bonker_agro++;
}
DoMeleeAttackIfReady();
@@ -2307,10 +2309,10 @@ enum eHiddenCultist
NPC_SALTY_JOHN_THORPE = 25248,
NPC_GUARD_MITCHELLS = 25828,
- SAY_HIDDEN_CULTIST_1 = -1571044,
- SAY_HIDDEN_CULTIST_2 = -1571045,
- SAY_HIDDEN_CULTIST_3 = -1571046,
- SAY_HIDDEN_CULTIST_4 = -1571047
+ SAY_HIDDEN_CULTIST_1 = 0,
+ SAY_HIDDEN_CULTIST_2 = 1,
+ SAY_HIDDEN_CULTIST_3 = 2,
+ SAY_HIDDEN_CULTIST_4 = 3
};
const char* GOSSIP_ITEM_TOM_HEGGER = "What do you know about the Cult of the Damned?";
@@ -2392,17 +2394,17 @@ public:
{
case NPC_SALTY_JOHN_THORPE:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
- DoScriptText(SAY_HIDDEN_CULTIST_1, me);
+ Talk(SAY_HIDDEN_CULTIST_1);
uiEventTimer = 5000;
uiEventPhase = 2;
break;
case NPC_GUARD_MITCHELLS:
- DoScriptText(SAY_HIDDEN_CULTIST_2, me);
+ Talk(SAY_HIDDEN_CULTIST_2);
uiEventTimer = 5000;
uiEventPhase = 2;
break;
case NPC_TOM_HEGGER:
- DoScriptText(SAY_HIDDEN_CULTIST_3, me);
+ Talk(SAY_HIDDEN_CULTIST_3);
uiEventTimer = 5000;
uiEventPhase = 2;
break;
@@ -2412,7 +2414,7 @@ public:
switch (me->GetEntry())
{
case NPC_SALTY_JOHN_THORPE:
- DoScriptText(SAY_HIDDEN_CULTIST_4, me);
+ Talk(SAY_HIDDEN_CULTIST_4);
if (Player* player = me->GetPlayer(*me, uiPlayerGUID))
{
me->SetInFront(player);
diff --git a/src/server/scripts/Northrend/grizzly_hills.cpp b/src/server/scripts/Northrend/grizzly_hills.cpp
index 0363e0c892d..8bcc255b343 100644
--- a/src/server/scripts/Northrend/grizzly_hills.cpp
+++ b/src/server/scripts/Northrend/grizzly_hills.cpp
@@ -21,6 +21,7 @@
#include "ScriptedEscortAI.h"
#include "Player.h"
#include "SpellInfo.h"
+#include "CreatureTextMgr.h"
/*######
## Quest 12027: Mr. Floppy's Perilous Adventure
@@ -37,19 +38,19 @@ enum eFloppy
SPELL_MRFLOPPY = 47184, //vehicle aura
- SAY_WORGHAGGRO1 = -1800001, //Um... I think one of those wolves is back...
- SAY_WORGHAGGRO2 = -1800002, //He's going for Mr. Floppy!
- SAY_WORGRAGGRO3 = -1800003, //Oh, no! Look, it's another wolf, and it's a biiiiiig one!
- SAY_WORGRAGGRO4 = -1800004, //He's gonna eat Mr. Floppy! You gotta help Mr. Floppy! You just gotta!
- SAY_RANDOMAGGRO = -1800005, //There's a big meanie attacking Mr. Floppy! Help!
- SAY_VICTORY1 = -1800006, //Let's get out of here before more wolves find us!
- SAY_VICTORY2 = -1800007, //Don't go toward the light, Mr. Floppy!
- SAY_VICTORY3 = -1800008, //Mr. Floppy, you're ok! Thank you so much for saving Mr. Floppy!
- SAY_VICTORY4 = -1800009, //I think I see the camp! We're almost home, Mr. Floppy! Let's go!
- TEXT_EMOTE_WP1 = -1800010, //Mr. Floppy revives
- TEXT_EMOTE_AGGRO = -1800011, //The Ravenous Worg chomps down on Mr. Floppy
- SAY_QUEST_ACCEPT = -1800012, //Are you ready, Mr. Floppy? Stay close to me and watch out for those wolves!
- SAY_QUEST_COMPLETE = -1800013 //Thank you for helping me get back to the camp. Go tell Walter that I'm safe now!
+ SAY_WORGHAGGRO1 = 0, //Um... I think one of those wolves is back...
+ SAY_WORGHAGGRO2 = 1, //He's going for Mr. Floppy!
+ SAY_WORGRAGGRO3 = 2, //Oh, no! Look, it's another wolf, and it's a biiiiiig one!
+ SAY_WORGRAGGRO4 = 3, //He's gonna eat Mr. Floppy! You gotta help Mr. Floppy! You just gotta!
+ SAY_RANDOMAGGRO = 4, //There's a big meanie attacking Mr. Floppy! Help!
+ SAY_VICTORY1 = 5, //Let's get out of here before more wolves find us!
+ SAY_VICTORY2 = 6, //Don't go toward the light, Mr. Floppy!
+ SAY_VICTORY3 = 7, //Mr. Floppy, you're ok! Thank you so much for saving Mr. Floppy!
+ SAY_VICTORY4 = 8, //I think I see the camp! We're almost home, Mr. Floppy! Let's go!
+ TEXT_EMOTE_WP1 = 9, //Mr. Floppy revives
+ TEXT_EMOTE_AGGRO = 10, //The Ravenous Worg chomps down on Mr. Floppy
+ SAY_QUEST_ACCEPT = 11, //Are you ready, Mr. Floppy? Stay close to me and watch out for those wolves!
+ SAY_QUEST_COMPLETE = 12 //Thank you for helping me get back to the camp. Go tell Walter that I'm safe now!
};
//emily
@@ -92,7 +93,7 @@ public:
case 10:
if (Unit::GetCreature(*me, MrfloppyGUID))
{
- DoScriptText(SAY_WORGHAGGRO1, me);
+ Talk(SAY_WORGHAGGRO1);
me->SummonCreature(NPC_HUNGRY_WORG, me->GetPositionX()+5, me->GetPositionY()+2, me->GetPositionZ()+1, 3.229f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);
}
break;
@@ -103,7 +104,7 @@ public:
case 17:
if (Creature* Mrfloppy = Unit::GetCreature(*me, MrfloppyGUID))
Mrfloppy->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
- DoScriptText(SAY_WORGRAGGRO3, me);
+ Talk(SAY_WORGRAGGRO3);
if (Creature* RWORG = me->SummonCreature(NPC_RAVENOUS_WORG, me->GetPositionX()+10, me->GetPositionY()+8, me->GetPositionZ()+2, 3.229f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000))
{
RWORG->setFaction(35);
@@ -141,7 +142,7 @@ public:
Mrfloppy->ExitVehicle();
RWORG->setFaction(14);
RWORG->GetMotionMaster()->MovePoint(0, RWORG->GetPositionX()+10, RWORG->GetPositionY()+80, RWORG->GetPositionZ());
- DoScriptText(SAY_VICTORY2, me);
+ Talk(SAY_VICTORY2);
}
}
break;
@@ -155,7 +156,7 @@ public:
me->GetMotionMaster()->MovePoint(0, Mrfloppy->GetPositionX(), Mrfloppy->GetPositionY(), Mrfloppy->GetPositionZ());
Mrfloppy->setDeathState(ALIVE);
Mrfloppy->GetMotionMaster()->MoveFollow(me, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
- DoScriptText(SAY_VICTORY3, me);
+ Talk(SAY_VICTORY3);
}
}
break;
@@ -164,12 +165,12 @@ public:
{
Completed = true;
player->GroupEventHappens(QUEST_PERILOUS_ADVENTURE, me);
- DoScriptText(SAY_QUEST_COMPLETE, me, player);
+ Talk(SAY_QUEST_COMPLETE, player->GetGUID());
}
me->SetWalk(false);
break;
case 25:
- DoScriptText(SAY_VICTORY4, me);
+ Talk(SAY_VICTORY4);
break;
case 27:
me->DisappearAndDie();
@@ -181,7 +182,7 @@ public:
void EnterCombat(Unit* /*Who*/)
{
- DoScriptText(SAY_RANDOMAGGRO, me);
+ Talk(SAY_RANDOMAGGRO);
}
void Reset()
@@ -209,7 +210,7 @@ public:
{
if (quest->GetQuestId() == QUEST_PERILOUS_ADVENTURE)
{
- DoScriptText(SAY_QUEST_ACCEPT, creature);
+ creature->AI()->Talk(SAY_QUEST_ACCEPT);
if (Creature* Mrfloppy = GetClosestCreatureWithEntry(creature, NPC_MRFLOPPY, 180.0f))
Mrfloppy->GetMotionMaster()->MoveFollow(creature, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
@@ -248,13 +249,13 @@ public:
switch (Who->GetEntry())
{
case NPC_HUNGRY_WORG:
- DoScriptText(SAY_WORGHAGGRO2, Emily);
+ Emily->AI()->Talk(SAY_WORGHAGGRO2);
break;
case NPC_RAVENOUS_WORG:
- DoScriptText(SAY_WORGRAGGRO4, Emily);
+ Emily->AI()->Talk(SAY_WORGRAGGRO4);
break;
default:
- DoScriptText(SAY_RANDOMAGGRO, Emily);
+ Emily->AI()->Talk(SAY_RANDOMAGGRO);
}
}
}
@@ -461,12 +462,10 @@ public:
enum eSkirmisher
{
- SPELL_RENEW_SKIRMISHER = 48812,
- CREDIT_NPC = 27466,
+ SPELL_RENEW_SKIRMISHER = 48812,
+ CREDIT_NPC = 27466,
- RANDOM_SAY_1 = -1800044, //Ahh..better..
- RANDOM_SAY_2 = -1800045, //Whoa.. i nearly died there. Thank you, $Race!
- RANDOM_SAY_3 = -1800046 //Thank you. $Class!
+ RANDOM_SAY = 0,
};
class npc_wounded_skirmisher : public CreatureScript
@@ -500,7 +499,7 @@ public:
&& caster->ToPlayer()->GetQuestStatus(12288) == QUEST_STATUS_INCOMPLETE)
{
caster->ToPlayer()->KilledMonsterCredit(CREDIT_NPC, 0);
- DoScriptText(RAND(RANDOM_SAY_1, RANDOM_SAY_2, RANDOM_SAY_3), caster);
+ sCreatureTextMgr->SendChat(me, RANDOM_SAY, 0, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, caster->ToPlayer());
if (me->IsStandState())
me->GetMotionMaster()->MovePoint(1, me->GetPositionX()+7, me->GetPositionY()+7, me->GetPositionZ());
else
@@ -593,16 +592,12 @@ public:
/*Venture co. Straggler - when you cast Smoke Bomb, he will yell and run away*/
enum eSmokeEmOut
{
- SAY_SEO1 = -1603535,
- SAY_SEO2 = -1603536,
- SAY_SEO3 = -1603537,
- SAY_SEO4 = -1603538,
- SAY_SEO5 = -1603539,
- QUEST_SMOKE_EM_OUT_A = 12323,
- QUEST_SMOKE_EM_OUT_H = 12324,
- SPELL_SMOKE_BOMB = 49075,
- SPELL_CHOP = 43410,
- SPELL_VENTURE_STRAGGLER_CREDIT = 49093,
+ SAY_SEO = 0,
+ QUEST_SMOKE_EM_OUT_A = 12323,
+ QUEST_SMOKE_EM_OUT_H = 12324,
+ SPELL_SMOKE_BOMB = 49075,
+ SPELL_CHOP = 43410,
+ SPELL_VENTURE_STRAGGLER_CREDIT = 49093,
};
class npc_venture_co_straggler : public CreatureScript
@@ -644,7 +639,7 @@ class npc_venture_co_straggler : public CreatureScript
++uiTimer;
break;
case 1:
- DoScriptText(RAND(SAY_SEO1, SAY_SEO2, SAY_SEO3, SAY_SEO4, SAY_SEO5), me);
+ Talk(SAY_SEO);
me->GetMotionMaster()->MovePoint(0, me->GetPositionX()-7, me->GetPositionY()-5, me->GetPositionZ());
uiRunAwayTimer = 2500;
++uiTimer;
diff --git a/src/server/scripts/Northrend/sholazar_basin.cpp b/src/server/scripts/Northrend/sholazar_basin.cpp
index 8404413ad9d..a6d6cda11b1 100644
--- a/src/server/scripts/Northrend/sholazar_basin.cpp
+++ b/src/server/scripts/Northrend/sholazar_basin.cpp
@@ -44,9 +44,9 @@ EndContentData */
enum eRainspeaker
{
- SAY_START_IRO = -1571000,
- SAY_QUEST_ACCEPT_IRO = -1571001,
- SAY_END_IRO = -1571002,
+ SAY_START_IRO = 0,
+ SAY_QUEST_ACCEPT_IRO = 1,
+ SAY_END_IRO = 2,
QUEST_FORTUNATE_MISUNDERSTANDINGS = 12570,
FACTION_ESCORTEE_A = 774,
@@ -106,7 +106,7 @@ public:
case 28:
player->GroupEventHappens(QUEST_FORTUNATE_MISUNDERSTANDINGS, me);
// me->RestoreFaction();
- DoScriptText(SAY_END_IRO, me);
+ Talk(SAY_END_IRO);
SetRun(false);
break;
}
@@ -146,7 +146,7 @@ public:
CAST_AI(npc_escortAI, (creature->AI()))->Start(true, false, player->GetGUID());
CAST_AI(npc_escortAI, (creature->AI()))->SetMaxPlayerDistance(35.0f);
creature->SetUnitMovementFlags(MOVEMENTFLAG_FALLING);
- DoScriptText(SAY_START_IRO, creature);
+ creature->AI()->Talk(SAY_START_IRO);
switch (player->GetTeam()){
case ALLIANCE:
@@ -162,7 +162,7 @@ public:
bool OnQuestAccept(Player* /*player*/, Creature* creature, Quest const* /*_Quest*/)
{
- DoScriptText(SAY_QUEST_ACCEPT_IRO, creature);
+ creature->AI()->Talk(SAY_QUEST_ACCEPT_IRO);
return false;
}
@@ -184,7 +184,7 @@ enum eVekjik
GOSSIP_TEXTID_VEKJIK1 = 13137,
GOSSIP_TEXTID_VEKJIK2 = 13138,
- SAY_TEXTID_VEKJIK1 = -1000208,
+ SAY_TEXTID_VEKJIK1 = 0,
SPELL_FREANZYHEARTS_FURY = 51469,
@@ -223,7 +223,7 @@ public:
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->CLOSE_GOSSIP_MENU();
- DoScriptText(SAY_TEXTID_VEKJIK1, creature, player);
+ creature->AI()->Talk(SAY_TEXTID_VEKJIK1, player->GetGUID());
player->AreaExploredOrEventHappens(QUEST_MAKING_PEACE);
creature->CastSpell(player, SPELL_FREANZYHEARTS_FURY, false);
break;
@@ -342,13 +342,13 @@ enum eEnums
SPELL_EXPLODE_CRYSTAL = 62487,
SPELL_FLAMES = 64561,
- SAY_WP_7 = -1800047,
- SAY_WP_6 = -1800048,
- SAY_WP_5 = -1800049,
- SAY_WP_4 = -1800050,
- SAY_WP_3 = -1800051,
- SAY_WP_2 = -1800052,
- SAY_WP_1 = -1800053,
+ SAY_WP_1 = 0,
+ SAY_WP_2 = 1,
+ SAY_WP_3 = 2,
+ SAY_WP_4 = 3,
+ SAY_WP_5 = 4,
+ SAY_WP_6 = 5,
+ SAY_WP_7 = 6,
QUEST_DISASTER = 12688
};
@@ -371,19 +371,19 @@ public:
switch (waypointId)
{
case 0:
- DoScriptText(SAY_WP_2, me);
+ Talk(SAY_WP_2);
break;
case 1:
- DoScriptText(SAY_WP_3, me);
+ Talk(SAY_WP_3);
me->CastSpell(5918.33f, 5372.91f, -98.770f, SPELL_EXPLODE_CRYSTAL, true);
me->SummonGameObject(184743, 5918.33f, 5372.91f, -98.770f, 0, 0, 0, 0, 0, TEMPSUMMON_MANUAL_DESPAWN); //approx 3 to 4 seconds
me->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH);
break;
case 2:
- DoScriptText(SAY_WP_4, me);
+ Talk(SAY_WP_4);
break;
case 7:
- DoScriptText(SAY_WP_5, me);
+ Talk(SAY_WP_5);
break;
case 8:
me->CastSpell(5887.37f, 5379.39f, -91.289f, SPELL_EXPLODE_CRYSTAL, true);
@@ -391,13 +391,13 @@ public:
me->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH);
break;
case 9:
- DoScriptText(SAY_WP_6, me);
+ Talk(SAY_WP_6);
break;
case 13:
if (player)
{
player->GroupEventHappens(QUEST_DISASTER, me);
- DoScriptText(SAY_WP_7, me);
+ Talk(SAY_WP_7);
}
break;
}
@@ -448,7 +448,7 @@ public:
creature->setFaction(113);
pEscortAI->Start(false, false, player->GetGUID());
- DoScriptText(SAY_WP_1, creature);
+ creature->AI()->Talk(SAY_WP_1);
}
}
return true;
@@ -713,8 +713,8 @@ enum eAdventurousDwarf
GOSSIP_MENU_DWARF = 13307,
- SAY_DWARF_OUCH = -1571042,
- SAY_DWARF_HELP = -1571043
+ SAY_DWARF_OUCH = 0,
+ SAY_DWARF_HELP = 1
};
class npc_adventurous_dwarf : public CreatureScript
@@ -724,7 +724,7 @@ public:
CreatureAI* GetAI(Creature* creature) const
{
- DoScriptText(SAY_DWARF_OUCH, creature);
+ creature->AI()->Talk(SAY_DWARF_OUCH);
return NULL;
}
@@ -758,7 +758,7 @@ public:
}
if (spellId)
player->CastSpell(player, spellId, true);
- DoScriptText(SAY_DWARF_HELP, creature);
+ creature->AI()->Talk(SAY_DWARF_HELP);
creature->DespawnOrUnsummon();
return true;
}
diff --git a/src/server/scripts/Northrend/storm_peaks.cpp b/src/server/scripts/Northrend/storm_peaks.cpp
index b3a379d903d..f87b24ce639 100644
--- a/src/server/scripts/Northrend/storm_peaks.cpp
+++ b/src/server/scripts/Northrend/storm_peaks.cpp
@@ -30,13 +30,13 @@
## npc_agnetta_tyrsdottar
######*/
-#define SAY_AGGRO -1571003
#define GOSSIP_AGNETTA "Skip the warmup, sister... or are you too scared to face soemeone your own size?"
enum eAgnetta
{
QUEST_ITS_THAT_YOUR_GOBLIN = 12969,
- FACTION_HOSTILE_AT1 = 45
+ FACTION_HOSTILE_AT1 = 45,
+ SAY_AGGRO = 0
};
class npc_agnetta_tyrsdottar : public CreatureScript
@@ -73,7 +73,7 @@ public:
player->PlayerTalkClass->ClearMenus();
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
- DoScriptText(SAY_AGGRO, creature);
+ creature->AI()->Talk(SAY_AGGRO);
player->CLOSE_GOSSIP_MENU();
creature->setFaction(FACTION_HOSTILE_AT1);
creature->AI()->AttackStart(player);
@@ -143,8 +143,8 @@ public:
enum eInjuredGoblin
{
QUEST_BITTER_DEPARTURE = 12832,
- SAY_QUEST_ACCEPT = -1800042,
- SAY_END_WP_REACHED = -1800043
+ SAY_QUEST_ACCEPT = 0,
+ SAY_END_WP_REACHED = 1
};
#define GOSSIP_ITEM_1 "I am ready, lets get you out of here"
@@ -167,7 +167,7 @@ public:
switch (waypointId)
{
case 26:
- DoScriptText(SAY_END_WP_REACHED, me, player);
+ Talk(SAY_END_WP_REACHED, player->GetGUID());
break;
case 27:
player->GroupEventHappens(QUEST_BITTER_DEPARTURE, me);
@@ -218,7 +218,7 @@ public:
bool OnQuestAccept(Player* /*player*/, Creature* creature, Quest const* quest)
{
if (quest->GetQuestId() == QUEST_BITTER_DEPARTURE)
- DoScriptText(SAY_QUEST_ACCEPT, creature);
+ creature->AI()->Talk(SAY_QUEST_ACCEPT);
return false;
}
diff --git a/src/server/scripts/Northrend/zuldrak.cpp b/src/server/scripts/Northrend/zuldrak.cpp
index e5763e5baf6..506c34d40fb 100644
--- a/src/server/scripts/Northrend/zuldrak.cpp
+++ b/src/server/scripts/Northrend/zuldrak.cpp
@@ -121,9 +121,9 @@ enum eRageclaw
SPELL_KNEEL = 39656
};
-const char * SAY_RAGECLAW_1 = "I poop on you, trollses!";
-const char * SAY_RAGECLAW_2 = "ARRRROOOOGGGGAAAA!";
-const char * SAY_RAGECLAW_3 = "No more mister nice wolvar!";
+const char* SAY_RAGECLAW_1 = "I poop on you, trollses!";
+const char* SAY_RAGECLAW_2 = "ARRRROOOOGGGGAAAA!";
+const char* SAY_RAGECLAW_3 = "No more mister nice wolvar!";
#define SAY_RAGECLAW RAND(SAY_RAGECLAW_1, SAY_RAGECLAW_2, SAY_RAGECLAW_3)
@@ -265,14 +265,16 @@ enum eGurgthock
NPC_FIEND_FIRE = 30042,
NPC_FIEND_EARTH = 30043,
- SAY_QUEST_ACCEPT_TUSKARRMAGEDON = -1571031,
- SAY_QUEST_ACCEPT_KORRAK_1 = -1571033,
- SAY_QUEST_ACCEPT_KORRAK_2 = -1571034,
- SAY_QUEST_ACCEPT_MAGNATAUR = -1571035,
+ SAY_QUEST_ACCEPT_TUSKARRMAGEDON = 0,
+ SAY_QUEST_ACCEPT_KORRAK_1 = 1,
+ SAY_QUEST_ACCEPT_KORRAK_2 = 2,
+ SAY_QUEST_ACCEPT_MAGNATAUR = 3,
+ EMOTE_YGGDRAS_SPAWN = 4,
+ SAY_STINKBEARD_SPAWN = 5,
+ SAY_GURGTHOCK_ELEMENTAL_SPAWN = 6,
- EMOTE_YGGDRAS_SPAWN = -1571039,
- SAY_STINKBEARD_SPAWN = -1571040,
- SAY_GURGTHOCK_ELEMENTAL_SPAWN = -1571041,
+ SAY_CALL_FOR_HELP = 0,
+ SAY_RECRUIT = 0,
SPELL_CRASHING_WAVE = 55909, // water
SPELL_SHOCKWAVE = 55918, // earth
@@ -380,12 +382,12 @@ public:
switch (uiValue)
{
case QUEST_AMPHITHEATER_ANGUISH_TUSKARRMAGEDDON:
- DoScriptText(SAY_QUEST_ACCEPT_TUSKARRMAGEDON, me);
+ Talk(SAY_QUEST_ACCEPT_TUSKARRMAGEDON);
uiPhase = 1;
uiTimer = 4000;
break;
case QUEST_AMPHITHEATER_ANGUISH_KORRAK_BLOODRAGER:
- DoScriptText(SAY_QUEST_ACCEPT_KORRAK_1, me);
+ Talk(SAY_QUEST_ACCEPT_KORRAK_1);
uiPhase = 3;
uiTimer = 3000;
break;
@@ -443,7 +445,7 @@ public:
SummonGUID = 0;
break;
case 3:
- DoScriptText(SAY_QUEST_ACCEPT_KORRAK_2, me);
+ Talk(SAY_QUEST_ACCEPT_KORRAK_2);
uiTimer = 3000;
uiPhase = 4;
break;
@@ -477,7 +479,7 @@ public:
}
break;
case 8:
- DoScriptText(SAY_QUEST_ACCEPT_MAGNATAUR, me);
+ Talk(SAY_QUEST_ACCEPT_MAGNATAUR);
uiTimer = 5000;
uiPhase = 11;
break;
@@ -494,12 +496,12 @@ public:
break;
case 10:
me->SummonCreature(NPC_YGGDRAS, SpawnPosition[1], TEMPSUMMON_CORPSE_DESPAWN, 1000);
- DoScriptText(EMOTE_YGGDRAS_SPAWN, me);
+ Talk(EMOTE_YGGDRAS_SPAWN);
uiPhase = 0;
break;
case 11:
if (Creature* creature = me->SummonCreature(NPC_STINKBEARD, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000))
- DoScriptText(SAY_STINKBEARD_SPAWN, creature);
+ creature->AI()->Talk(SAY_STINKBEARD_SPAWN);
uiPhase = 0;
break;
case 12:
@@ -514,7 +516,7 @@ public:
}
break;
case 13:
- DoScriptText(SAY_GURGTHOCK_ELEMENTAL_SPAWN, me);
+ Talk(SAY_GURGTHOCK_ELEMENTAL_SPAWN);
uiTimer = 3000;
uiPhase = 14;
break;
@@ -575,9 +577,7 @@ enum eOrinokoTuskbreaker
SPELL_SUMMON_WHISKER = 55946,
NPC_WHISKER = 30113,
- NPC_HUNGRY_PENGUIN = 30110,
-
- SAY_CALL_FOR_HELP = -1571032
+ NPC_HUNGRY_PENGUIN = 30110
};
class npc_orinoko_tuskbreaker : public CreatureScript
@@ -659,7 +659,7 @@ public:
if (!bSummoned && !HealthAbovePct(50))
{
- DoScriptText(SAY_CALL_FOR_HELP, me);
+ Talk(SAY_CALL_FOR_HELP);
//DoCast(me->getVictim(), SPELL_SUMMON_WHISKER); petai is not working correctly???
if (Creature* pWhisker = me->SummonCreature(NPC_WHISKER, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 0))
@@ -1282,11 +1282,7 @@ enum eCrusade_recruit
QUEST_TROLL_PATROL_INTESTINAL_FORTITUDE = 12509,
- GOSSIP_CRUSADE_TEXT = 13069,
-
- SAY_RECRUIT_1 = -1571036,
- SAY_RECRUIT_2 = -1571037,
- SAY_RECRUIT_3 = -1571038
+ GOSSIP_CRUSADE_TEXT = 13069
};
#define GOSSIP_ITEM_1 "Get out there and make those Scourge wish they were never reborn!"
@@ -1325,7 +1321,7 @@ public:
// say random text
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
- DoScriptText(RAND(SAY_RECRUIT_1, SAY_RECRUIT_2, SAY_RECRUIT_3), me);
+ Talk(SAY_RECRUIT);
m_uiTimer = 3000;
m_uiPhase = 2;
break;