diff options
| author | Spp <spp@jorge.gr> | 2012-12-07 09:22:43 +0100 |
|---|---|---|
| committer | Spp <spp@jorge.gr> | 2012-12-07 09:22:43 +0100 |
| commit | fb2e5c3c5840a77452a2418805eabd01147a4346 (patch) | |
| tree | a4490008845509814826b09f17ada5b2d9c9b405 /src/server/scripts/Northrend | |
| parent | 4c78f667de319a9690493fddb690b57f940c862e (diff) | |
| parent | 6ed36342a20d11657eda8473b59ee10cbe92a507 (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')
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; |
