aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/base/dev/world_database.sql22
-rw-r--r--sql/updates/characters/2014_09_16_00_characters_groups.sql (renamed from sql/updates/characters/2014_09_13_00_characters_groups.sql)0
-rw-r--r--sql/updates/world/2014_09_12_04_world_sai.sql98
-rw-r--r--sql/updates/world/2014_09_12_04_world_texts.sql185
-rw-r--r--sql/updates/world/2014_09_13_00_world_misc.sql19
-rw-r--r--sql/updates/world/2014_09_13_01_world_spell_script_names.sql3
-rw-r--r--sql/updates/world/2014_09_13_02_world_trinity_string.sql1
-rw-r--r--sql/updates/world/2014_09_13_03_world_spelldifficulty_dbc.sql3
-rw-r--r--sql/updates/world/2014_09_13_04_world_misc.sql26
-rw-r--r--sql/updates/world/2014_09_13_05_world_misc_335.sql8
-rw-r--r--sql/updates/world/2014_09_14_00_world_waypoint_scripts.sql1
-rw-r--r--sql/updates/world/2014_09_14_01_world_misc.sql50
-rw-r--r--sql/updates/world/2014_09_14_02_world_spellscriptnames.sql1
-rw-r--r--sql/updates/world/2014_09_14_03_world_toc5.sql304
-rw-r--r--sql/updates/world/2014_09_14_04_world_toc5.sql32
-rw-r--r--sql/updates/world/2014_09_15_00_world_misc.sql85
-rw-r--r--sql/updates/world/2014_09_15_01_world_gameobject_template.sql2
-rw-r--r--sql/updates/world/2014_09_15_02_world_misc.sql11
-rw-r--r--sql/updates/world/2014_09_15_03_world_misc.sql11
-rw-r--r--sql/updates/world/2014_09_15_04_world_misc.sql36
-rw-r--r--sql/updates/world/2014_09_16_00_world_achievement_criteria_data.sql3
-rw-r--r--sql/updates/world/2014_09_16_01_world_misc.sql33
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp28
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp35
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp7
-rw-r--r--src/server/game/Battlegrounds/Battleground.h3
-rw-r--r--src/server/game/Entities/Object/Object.cpp153
-rw-r--r--src/server/game/Entities/Object/Object.h12
-rw-r--r--src/server/game/Entities/Player/Player.cpp32
-rw-r--r--src/server/game/Entities/Player/Player.h8
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp102
-rw-r--r--src/server/game/Entities/Unit/Unit.h12
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp52
-rw-r--r--src/server/game/Globals/ObjectMgr.h4
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp6
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp4
-rw-r--r--src/server/game/Miscellaneous/Language.h1
-rw-r--r--src/server/game/Scripting/MapScripts.cpp92
-rw-r--r--src/server/game/Server/Protocol/PacketLog.cpp3
-rw-r--r--src/server/game/Spells/SpellEffects.cpp16
-rw-r--r--src/server/game/Texts/ChatTextBuilder.h73
-rw-r--r--src/server/game/World/World.cpp3
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp4
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp33
-rw-r--r--src/server/scripts/Commands/cs_reload.cpp10
-rw-r--r--src/server/scripts/Commands/cs_wp.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp22
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp18
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp12
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp24
-rw-r--r--src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp12
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp1
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp173
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp1
-rw-r--r--src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp7
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp1
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp2
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp12
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_noth.cpp6
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp5
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp21
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp21
-rw-r--r--src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp5
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp31
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp25
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp18
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp42
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp12
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp24
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp14
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp18
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp22
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp8
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp52
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp32
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp16
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp50
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp24
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp38
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp21
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp36
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp10
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp60
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp127
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp14
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp42
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp32
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp125
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp86
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp19
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp3
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp12
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp89
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp26
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp35
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp380
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h14
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp8
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp8
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp16
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_erekem.cpp28
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp24
-rw-r--r--src/server/scripts/Northrend/zone_sholazar_basin.cpp6
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidan.cpp5
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp2
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp2
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp2
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp2
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp32
-rw-r--r--src/server/scripts/Spells/spell_quest.cpp6
-rw-r--r--src/server/shared/Networking/Socket.h4
-rw-r--r--src/server/shared/Networking/SocketMgr.h2
118 files changed, 2460 insertions, 1237 deletions
diff --git a/sql/base/dev/world_database.sql b/sql/base/dev/world_database.sql
index 3224b5b73a7..72faba49b8b 100644
--- a/sql/base/dev/world_database.sql
+++ b/sql/base/dev/world_database.sql
@@ -627,28 +627,6 @@ CREATE TABLE `creature_text` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
--- Table structure for table `db_script_string`
---
-
-DROP TABLE IF EXISTS `db_script_string`;
-/*!40101 SET @saved_cs_client = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `db_script_string` (
- `entry` int(10) unsigned NOT NULL DEFAULT '0',
- `content_default` text NOT NULL,
- `content_loc1` text,
- `content_loc2` text,
- `content_loc3` text,
- `content_loc4` text,
- `content_loc5` text,
- `content_loc6` text,
- `content_loc7` text,
- `content_loc8` text,
- PRIMARY KEY (`entry`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
-- Table structure for table `disables`
--
diff --git a/sql/updates/characters/2014_09_13_00_characters_groups.sql b/sql/updates/characters/2014_09_16_00_characters_groups.sql
index b1dc9855249..b1dc9855249 100644
--- a/sql/updates/characters/2014_09_13_00_characters_groups.sql
+++ b/sql/updates/characters/2014_09_16_00_characters_groups.sql
diff --git a/sql/updates/world/2014_09_12_04_world_sai.sql b/sql/updates/world/2014_09_12_04_world_sai.sql
new file mode 100644
index 00000000000..4021ea41d01
--- /dev/null
+++ b/sql/updates/world/2014_09_12_04_world_sai.sql
@@ -0,0 +1,98 @@
+DELETE FROM `gossip_menu_option` WHERE menu_id IN(8510,8524);
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES
+(8510, 0, 0, 'Yes Scryer, You may possess me', 20008, 1, 1, 0, 0, 0, 0, NULL, 0);
+
+UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` IN (22258,22259,22273,22267,22366);
+
+UPDATE `spell_dbc` SET `Effect1`=28,`EffectMiscValueB1`=64 WHERE `Id`IN(38674,38675,38676,38677,38678,38679,38709,38681);
+
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (22258,22259,22273,22267,22366,2225800);
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(22258, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 80, 2225800, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - On Spawn - Run Script'),
+(22258, 0, 1, 2 ,62,0, 100, 0, 8510,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Demoniac Scryer - On Gossip Select - Close Gossip'),
+(22258, 0, 2, 0, 61,0, 100, 0,0,0,0,0,85,38708,1,0,0,0,0,7,0,0,0,0,0,0,0,'Demoniac Scryer - On Gossip Select - Cast Demoniac Visitation'),
+(22258, 0, 3, 7, 11,0, 100, 0,0,0,0,0,81,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Demoniac Scryer - On Spawn - Set NPC Flags'),
+(22258, 0, 4, 5, 7,0, 100, 0,0,0,0,0,11,38672,0,0,0,0,0,1,0,0,0,0,0,0,0,'Demoniac Scryer - On Evade - Cast Magic Sucker Device timer'),
+(22258, 0, 5, 0, 61,0, 100, 0,0,0,0,0,11,38690,0,0,0,0,0,1,0,0,0,0,0,0,0,'Demoniac Scryer - On Evade - Cast Magic Sucker Device Bunny Appearance'),
+(22258, 0, 6 ,0, 6, 0, 100, 0, 0, 0, 0, 0, 11, 38691, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - On Death - Cast Magic Sucker Device Despawner, Mob AE'),
+(22258, 0, 7 ,8, 61, 0, 100, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - On Spawn - Disable Auto Attack'),
+(22258, 0, 8 ,9, 61, 0, 100, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - On Death - Disable Combatmovement'),
+(22258, 0, 9 ,0, 61, 0, 100, 0, 0, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - On Death - Disable Combatmovement'),
+(22258, 0, 10 ,0, 64, 0, 100, 0, 0, 0, 0, 0, 98, 8510, 10643, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - On Death - Disable Combatmovement'),
+(22366, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Visitation - On Just Summoned - Say'),
+(22259, 0, 0, 1, 54, 0, 100, 0, 0, 0, 0, 0, 11, 38683, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Wardling - On Just Summoned - Cast Magic Sucker Device Despawner, Mob'),
+(22259, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Wardling - On Just Summoned - Say'),
+(22259, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 7741, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Wardling - On Just Summoned - Cast Summoned Demon'),
+(22259, 0, 3, 4, 6, 0, 100, 0, 0, 0, 0, 0, 11, 38891, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Wardling - On Death - Cast Magic Sucker Device (Despawn Visual)'),
+(22259, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 500, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Wardling - On Death - Despawn'),
+(22259, 0, 5, 0, 8, 0, 100, 0, 38691, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Wardling - On Spellhit (Magic Sucker Device Despawner, Mob AE) - Despawn'),
+(22273, 0, 0, 1, 54, 0, 100, 0, 0, 0, 0, 0, 11, 38683, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Fel Warden - On Just Summoned - Cast Magic Sucker Device Despawner, Mob'),
+(22273, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Fel Warden - On Just Summoned - Say'),
+(22273, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 7741, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Fel Warden - On Just Summoned - Cast Summoned Demon'),
+(22273, 0, 3, 0, 8, 0, 100, 0, 38691, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Fel Warden - On Spellhit (Magic Sucker Device Despawner, Mob AE) - Despawn'),
+(22267, 0, 0, 1, 54, 0, 100, 0, 0, 0, 0, 0, 11, 38719, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Magic Sucker Device Buttress - On Just Summoned - Cast Magic Sucker Device Buttress Appearance'),
+(22267, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 22258, 0, 0, 0, 0, 0, 0, 'Magic Sucker Device Buttress - On Just Summoned - Set Orientation'),
+(22267, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 11, 30259, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Magic Sucker Device Buttress - On Just Summoned - Cast Statue (dnd)'),
+(22267, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 38721, 0, 0, 0, 0, 0, 19, 22258, 0, 0, 0, 0, 0, 0, 'Magic Sucker Device Buttress - On Just Summoned - Cast Magic Sucker Device Channel(dnd)'),
+(22267, 0, 4, 0, 8, 0, 100, 0, 38691, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Magic Sucker Device Buttress - On Spellhit (Magic Sucker Device Despawner, Mob AE) - Despawn'),
+(22267, 0, 5, 3, 1, 0, 100, 0, 0, 0, 3000, 3000, 11, 38719, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Magic Sucker Device Buttress - IC - Cast Magic Sucker Device Buttress Appearance'),
+(22267, 0, 6, 3, 0, 0, 100, 0, 0, 0, 3000, 3000, 11, 38919, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Magic Sucker Device Buttress - OOC - Cast Magic Sucker Device Buttress Appearance'),
+
+(2225800, 9, 0 ,0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 38672, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Magic Sucker Device timer'), -- 15:36:21
+(2225800, 9, 1 ,0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 38690, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Magic Sucker Device Bunny Appearance'), -- 15:36:21
+(2225800, 9, 2 ,0, 0, 0, 100, 0, 8000, 8000, 0, 0, 11, 38681, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Spawner, Device'), -- 15:36:29
+(2225800, 9, 3 ,0, 0, 0, 100, 0, 7000, 7000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:36:36 *
+(2225800, 9, 4 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:36:51 *
+(2225800, 9, 5 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:37:06 *
+(2225800, 9, 6 ,0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 38675, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Create Magic Sucker Device Buttress (N)'), -- 15:37:06 *
+(2225800, 9, 7 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:37:21 *
+(2225800, 9, 8 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:37:36 *
+(2225800, 9, 9 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:37:51 *
+(2225800, 9, 10 ,0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 38676, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Create Magic Sucker Device Buttress (S)'), -- 15:37:51 *
+(2225800, 9, 11 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:38:06 *
+(2225800, 9, 12 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:38:21 *
+(2225800, 9, 13 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:38:36 *
+(2225800, 9, 14 ,0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 38709, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Boss'), -- 15:38:36 *
+(2225800, 9, 15 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:38:51 *
+(2225800, 9, 16 ,0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 38677, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Create Magic Sucker Device Buttress (E)'), -- 15:38:51 *
+(2225800, 9, 17 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:39:06 *
+(2225800, 9, 18 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:39:21 *
+(2225800, 9, 19 ,0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 38678, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Create Magic Sucker Device Buttress (W)'), -- 15:39:21 *
+(2225800, 9, 20 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:39:36 *
+(2225800, 9, 21 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38679, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Spawn Magic Sucker Device Mob'), -- 15:39:51 *
+(2225800, 9, 22 ,0, 0, 0, 100, 0, 15000, 15000, 0, 0, 11, 38691, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Magic Sucker Device Despawner, Mob AE'), -- 15:40:06 *
+(2225800, 9, 23 ,0, 0, 0, 100, 0, 1000, 1000, 0, 0, 11, 38727, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Magic Sucker Device (Success Visual timer)'), -- 15:40:07 *
+(2225800, 9, 24 ,0, 0, 0, 100, 0, 0, 0, 0, 0, 18, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Set Unit Flags'),
+(2225800, 9, 25 ,0, 0, 0, 100, 0, 0, 0, 0, 0, 28, 38672, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Remove Aura Magic Sucker Device timer'),
+(2225800, 9, 26 ,0, 0, 0, 100, 0, 3000, 3000, 0, 0, 11, 38727, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Magic Sucker Device (Success Visual timer)'), -- 15:40:07 *
+(2225800, 9, 27 ,0, 0, 0, 100, 0, 0, 0, 0, 0, 28, 38672, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Remove Aura Magic Sucker Device timer'),
+(2225800, 9, 28 ,0, 0, 0, 100, 0, 3000, 3000, 0, 0, 11, 38727, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Cast Magic Sucker Device (Success Visual timer)'), -- 15:40:07 *
+(2225800, 9, 29 ,0, 0, 0, 100, 0, 0, 0, 0, 0, 28, 38672, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Remove Aura Magic Sucker Device timer'),
+(2225800, 9, 30 ,0, 0, 0, 100, 0, 84000, 84000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Demoniac Scryer - Script - Remove Aura Magic Sucker Device timer');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=22258;
+
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22, 11, 22258, 0, 0, 9, 0, 10838, 0, 0, 0, 0, 0, '', 'Demoniac Scryer - Only run SAI if player has the Demoniac Scryer Taken'),
+(22, 11, 22258, 0, 0, 2, 0, 31607, 1, 0, 1, 0, 0, '', 'Demoniac Scryer - Only run SAI if player does not have Demoniac Scryer Reading'),
+(22, 11, 22258, 0, 0, 1, 0, 38708, 0, 0, 1, 0, 0, '', 'Demoniac Scryer - Only run SAI if player does not have Aura Demonaic Visitation'),
+(22, 11, 22258, 0, 0, 1, 1, 38672, 0, 0, 1, 0, 0, '', 'Demoniac Scryer - Only run SAI if Demoniac Scryer does not have Aura Magic Sucker Device timer');
+
+DELETE FROM `creature_text` WHERE `entry` IN (22259,22273,22366);
+
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES
+(22273, 0, 0, 'Die, interloper! Your puny device cannot pierce the dark magics of Hellfire Citadel!', 12, 0, 100, 397, 0, 0, 'Fel Warden',20020),
+(22259, 0, 0, 'Your end has come!', 12, 0, 100, 0, 0, 0, 'Hellfire Wardling',53515),
+(22259, 0, 1, 'An intruder! Begone!', 12, 0, 100, 0, 0, 0, 'Hellfire Wardling',20027),
+(22259, 0, 2, 'An intruder! Begone!', 12, 0, 100, 0, 0, 8152, 'Hellfire Wardling',20027),
+(22259, 0, 3, 'You will burn!', 12, 0, 100, 0, 0, 0, 'Hellfire Wardling',53513),
+(22259, 0, 4, 'Die!', 12, 0, 100, 0, 0, 0, 'Hellfire Wardling',53514),
+(22259, 0, 5, 'Your end has come!', 12, 0, 100, 0, 0, 8152, 'Hellfire Wardling',53515),
+(22259, 0, 6, 'Die!', 12, 0, 100, 0, 0, 8152, 'Hellfire Wardling',53514),
+(22366, 0, 0, 'Thank you for allowing me to visit, $n. You have a very colorful soul, but it''s a little brighter than I prefer... or I might have stayed longer!', 15, 0, 100, 0, 0, 0, 'Demoniac Visitation',20154);
+
+DELETE FROM `spell_linked_spell` WHERE `spell_trigger`IN(-38708);
+INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
+(-38708, 38991, 0,'Upon Demoniac Visitation expiring cast Summon Demonaic Visitation');
diff --git a/sql/updates/world/2014_09_12_04_world_texts.sql b/sql/updates/world/2014_09_12_04_world_texts.sql
new file mode 100644
index 00000000000..5f7177eb765
--- /dev/null
+++ b/sql/updates/world/2014_09_12_04_world_texts.sql
@@ -0,0 +1,185 @@
+DROP TABLE IF EXISTS `db_script_string`; -- RIP
+
+UPDATE `waypoint_scripts` SET `dataint` = 5960 WHERE `dataint` = 2000005018;
+UPDATE `waypoint_scripts` SET `dataint` = 22392 WHERE `dataint` = 2000005019;
+UPDATE `waypoint_scripts` SET `dataint` = 22050 WHERE `dataint` = 2000005020;
+UPDATE `waypoint_scripts` SET `dataint` = 22051 WHERE `dataint` = 2000005021;
+UPDATE `waypoint_scripts` SET `dataint` = 22052 WHERE `dataint` = 2000005022;
+UPDATE `waypoint_scripts` SET `dataint` = 10141 WHERE `dataint` = 2000005023;
+UPDATE `waypoint_scripts` SET `dataint` = 10146 WHERE `dataint` = 2000005024;
+UPDATE `waypoint_scripts` SET `dataint` = 10152 WHERE `dataint` = 2000005025;
+UPDATE `waypoint_scripts` SET `dataint` = 10126 WHERE `dataint` = 2000005026;
+UPDATE `waypoint_scripts` SET `dataint` = 7194 WHERE `dataint` = 2000005027;
+UPDATE `waypoint_scripts` SET `dataint` = 7193 WHERE `dataint` = 2000005028;
+UPDATE `waypoint_scripts` SET `dataint` = 7191 WHERE `dataint` = 2000005029;
+UPDATE `waypoint_scripts` SET `dataint` = 10139 WHERE `dataint` = 2000005030; -- 4.x text
+UPDATE `waypoint_scripts` SET `dataint` = 6406 WHERE `dataint` = 2000005031;
+UPDATE `waypoint_scripts` SET `dataint` = 6405 WHERE `dataint` = 2000005032;
+UPDATE `waypoint_scripts` SET `dataint` = 10158 WHERE `dataint` = 2000005033;
+UPDATE `waypoint_scripts` SET `dataint` = 22544 WHERE `dataint` = 2000005034;
+UPDATE `waypoint_scripts` SET `dataint` = 10146 WHERE `dataint` = 2000005035;
+UPDATE `waypoint_scripts` SET `dataint` = 12835 WHERE `dataint` = 2000005036;
+UPDATE `waypoint_scripts` SET `dataint` = 12832 WHERE `dataint` = 2000005037;
+UPDATE `waypoint_scripts` SET `dataint` = 12833 WHERE `dataint` = 2000005038;
+UPDATE `waypoint_scripts` SET `dataint` = 14565 WHERE `dataint` = 2000005039;
+UPDATE `waypoint_scripts` SET `dataint` = 14567 WHERE `dataint` = 2000005040;
+UPDATE `waypoint_scripts` SET `dataint` = 15144 WHERE `dataint` = 2000005041;
+UPDATE `waypoint_scripts` SET `dataint` = 15373 WHERE `dataint` = 2000005042;
+UPDATE `waypoint_scripts` SET `dataint` = 17569 WHERE `dataint` = 2000005043; -- doesn't exist anywhere, picked a random text from the same npc
+UPDATE `waypoint_scripts` SET `dataint` = 17563 WHERE `dataint` = 2000005044; -- doesn't exist anywhere, picked a random text from the same npc
+UPDATE `waypoint_scripts` SET `dataint` = 16059 WHERE `dataint` = 2000005045;
+UPDATE `waypoint_scripts` SET `dataint` = 10119 WHERE `dataint` = 2000005048;
+UPDATE `waypoint_scripts` SET `dataint` = 17035 WHERE `dataint` = 2000005049;
+UPDATE `waypoint_scripts` SET `dataint` = 17045 WHERE `dataint` = 2000005050;
+UPDATE `waypoint_scripts` SET `dataint` = 17056 WHERE `dataint` = 2000005051;
+UPDATE `waypoint_scripts` SET `dataint` = 17486 WHERE `dataint` = 2000005052;
+UPDATE `waypoint_scripts` SET `dataint` = 17485 WHERE `dataint` = 2000005053;
+UPDATE `waypoint_scripts` SET `dataint` = 17485 WHERE `dataint` = 2000005054;
+UPDATE `waypoint_scripts` SET `dataint` = 17485 WHERE `dataint` = 2000005055;
+UPDATE `waypoint_scripts` SET `dataint` = 18816 WHERE `dataint` = 2000005056;
+UPDATE `waypoint_scripts` SET `dataint` = 709 WHERE `dataint` = 2000005057;
+UPDATE `waypoint_scripts` SET `dataint` = 710 WHERE `dataint` = 2000005058;
+UPDATE `waypoint_scripts` SET `dataint` = 705 WHERE `dataint` = 2000005059;
+UPDATE `waypoint_scripts` SET `dataint` = 693 WHERE `dataint` = 2000005060;
+UPDATE `waypoint_scripts` SET `dataint` = 710 WHERE `dataint` = 2000005061;
+UPDATE `waypoint_scripts` SET `dataint` = 706 WHERE `dataint` = 2000005062;
+UPDATE `waypoint_scripts` SET `dataint` = 709 WHERE `dataint` = 2000005063;
+UPDATE `waypoint_scripts` SET `dataint` = 710 WHERE `dataint` = 2000005064;
+UPDATE `waypoint_scripts` SET `dataint` = 705 WHERE `dataint` = 2000005065;
+UPDATE `waypoint_scripts` SET `dataint` = 693 WHERE `dataint` = 2000005066;
+UPDATE `waypoint_scripts` SET `dataint` = 710 WHERE `dataint` = 2000005067;
+UPDATE `waypoint_scripts` SET `dataint` = 706 WHERE `dataint` = 2000005068;
+UPDATE `waypoint_scripts` SET `dataint` = 709 WHERE `dataint` = 2000005069;
+UPDATE `waypoint_scripts` SET `dataint` = 710 WHERE `dataint` = 2000005070;
+UPDATE `waypoint_scripts` SET `dataint` = 705 WHERE `dataint` = 2000005071;
+UPDATE `waypoint_scripts` SET `dataint` = 693 WHERE `dataint` = 2000005072;
+UPDATE `waypoint_scripts` SET `dataint` = 710 WHERE `dataint` = 2000005073;
+UPDATE `waypoint_scripts` SET `dataint` = 706 WHERE `dataint` = 2000005074;
+UPDATE `waypoint_scripts` SET `dataint` = 709 WHERE `dataint` = 2000005075;
+UPDATE `waypoint_scripts` SET `dataint` = 710 WHERE `dataint` = 2000005076;
+UPDATE `waypoint_scripts` SET `dataint` = 705 WHERE `dataint` = 2000005077;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005078;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005079;
+UPDATE `waypoint_scripts` SET `dataint` = 696 WHERE `dataint` = 2000005080;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005081;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005082;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005083;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005084;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005085;
+UPDATE `waypoint_scripts` SET `dataint` = 696 WHERE `dataint` = 2000005086;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005087;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005088;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005089;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005090;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005091;
+UPDATE `waypoint_scripts` SET `dataint` = 696 WHERE `dataint` = 2000005092;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005093;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005094;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005095;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005096;
+UPDATE `waypoint_scripts` SET `dataint` = 694 WHERE `dataint` = 2000005097;
+UPDATE `waypoint_scripts` SET `dataint` = 696 WHERE `dataint` = 2000005098;
+UPDATE `waypoint_scripts` SET `dataint` = 1101 WHERE `dataint` = 2000005099;
+UPDATE `waypoint_scripts` SET `dataint` = 1103 WHERE `dataint` = 2000005100;
+UPDATE `waypoint_scripts` SET `dataint` = 4013 WHERE `dataint` = 2000005101;
+UPDATE `waypoint_scripts` SET `dataint` = 1104 WHERE `dataint` = 2000005102;
+UPDATE `waypoint_scripts` SET `dataint` = 1110 WHERE `dataint` = 2000005103;
+UPDATE `waypoint_scripts` SET `dataint` = 1105 WHERE `dataint` = 2000005104;
+UPDATE `waypoint_scripts` SET `dataint` = 1108 WHERE `dataint` = 2000005105;
+UPDATE `waypoint_scripts` SET `dataint` = 1106 WHERE `dataint` = 2000005106;
+UPDATE `waypoint_scripts` SET `dataint` = 1107 WHERE `dataint` = 2000005107;
+UPDATE `waypoint_scripts` SET `dataint` = 1112 WHERE `dataint` = 2000005108;
+UPDATE `waypoint_scripts` SET `dataint` = 151 WHERE `dataint` = 2000005109;
+UPDATE `waypoint_scripts` SET `dataint` = 151 WHERE `dataint` = 2000005110;
+UPDATE `waypoint_scripts` SET `dataint` = 155 WHERE `dataint` = 2000005111;
+UPDATE `waypoint_scripts` SET `dataint` = 154 WHERE `dataint` = 2000005112;
+UPDATE `waypoint_scripts` SET `dataint` = 152 WHERE `dataint` = 2000005113;
+UPDATE `waypoint_scripts` SET `dataint` = 177 WHERE `dataint` = 2000005114;
+UPDATE `waypoint_scripts` SET `dataint` = 149 WHERE `dataint` = 2000005115;
+UPDATE `waypoint_scripts` SET `dataint` = 173 WHERE `dataint` = 2000005116;
+UPDATE `waypoint_scripts` SET `dataint` = 174 WHERE `dataint` = 2000005117;
+UPDATE `waypoint_scripts` SET `dataint` = 172 WHERE `dataint` = 2000005118;
+UPDATE `waypoint_scripts` SET `dataint` = 173 WHERE `dataint` = 2000005119;
+UPDATE `waypoint_scripts` SET `dataint` = 172 WHERE `dataint` = 2000005120;
+UPDATE `waypoint_scripts` SET `dataint` = 176 WHERE `dataint` = 2000005121;
+UPDATE `waypoint_scripts` SET `dataint` = 178 WHERE `dataint` = 2000005122;
+UPDATE `waypoint_scripts` SET `dataint` = 169 WHERE `dataint` = 2000005123;
+UPDATE `waypoint_scripts` SET `dataint` = 147 WHERE `dataint` = 2000005124;
+UPDATE `waypoint_scripts` SET `dataint` = 157 WHERE `dataint` = 2000005125;
+UPDATE `waypoint_scripts` SET `dataint` = 168 WHERE `dataint` = 2000005126;
+UPDATE `waypoint_scripts` SET `dataint` = 147 WHERE `dataint` = 2000005127;
+UPDATE `waypoint_scripts` SET `dataint` = 157 WHERE `dataint` = 2000005128;
+UPDATE `waypoint_scripts` SET `dataint` = 167 WHERE `dataint` = 2000005129;
+UPDATE `waypoint_scripts` SET `dataint` = 157 WHERE `dataint` = 2000005130;
+UPDATE `waypoint_scripts` SET `dataint` = 147 WHERE `dataint` = 2000005131;
+UPDATE `waypoint_scripts` SET `dataint` = 2874 WHERE `dataint` = 2000005132;
+UPDATE `waypoint_scripts` SET `dataint` = 10119 WHERE `dataint` = 2000005133;
+UPDATE `waypoint_scripts` SET `dataint` = 1129 WHERE `dataint` = 2000005134;
+UPDATE `waypoint_scripts` SET `dataint` = 1154 WHERE `dataint` = 2000005135;
+UPDATE `waypoint_scripts` SET `dataint` = 1155 WHERE `dataint` = 2000005136;
+UPDATE `waypoint_scripts` SET `dataint` = 1140 WHERE `dataint` = 2000005137;
+UPDATE `waypoint_scripts` SET `dataint` = 1161 WHERE `dataint` = 2000005138;
+UPDATE `waypoint_scripts` SET `dataint` = 1162 WHERE `dataint` = 2000005139;
+UPDATE `waypoint_scripts` SET `dataint` = 1163 WHERE `dataint` = 2000005140;
+UPDATE `waypoint_scripts` SET `dataint` = 1165 WHERE `dataint` = 2000005141;
+UPDATE `waypoint_scripts` SET `dataint` = 1166 WHERE `dataint` = 2000005142;
+UPDATE `waypoint_scripts` SET `dataint` = 13580 WHERE `dataint` = 2000005144;
+UPDATE `waypoint_scripts` SET `dataint` = 13576 WHERE `dataint` = 2000005145;
+UPDATE `waypoint_scripts` SET `dataint` = 15119 WHERE `dataint` = 2000005147;
+UPDATE `waypoint_scripts` SET `dataint` = 209 WHERE `dataint` = 2000005148;
+UPDATE `waypoint_scripts` SET `dataint` = 224 WHERE `dataint` = 2000005149;
+UPDATE `waypoint_scripts` SET `dataint` = 225 WHERE `dataint` = 2000005150;
+UPDATE `waypoint_scripts` SET `dataint` = 213 WHERE `dataint` = 2000005151;
+UPDATE `waypoint_scripts` SET `dataint` = 225 WHERE `dataint` = 2000005152;
+UPDATE `waypoint_scripts` SET `dataint` = 225 WHERE `dataint` = 2000005153;
+UPDATE `waypoint_scripts` SET `dataint` = 224 WHERE `dataint` = 2000005154;
+UPDATE `waypoint_scripts` SET `dataint` = 214 WHERE `dataint` = 2000005155;
+UPDATE `waypoint_scripts` SET `dataint` = 217 WHERE `dataint` = 2000005156;
+UPDATE `waypoint_scripts` SET `dataint` = 210 WHERE `dataint` = 2000005157;
+UPDATE `waypoint_scripts` SET `dataint` = 205 WHERE `dataint` = 2000005158;
+UPDATE `waypoint_scripts` SET `dataint` = 216 WHERE `dataint` = 2000005159;
+UPDATE `waypoint_scripts` SET `dataint` = 212 WHERE `dataint` = 2000005160;
+UPDATE `waypoint_scripts` SET `dataint` = 208 WHERE `dataint` = 2000005161;
+UPDATE `waypoint_scripts` SET `dataint` = 214 WHERE `dataint` = 2000005162;
+UPDATE `waypoint_scripts` SET `dataint` = 215 WHERE `dataint` = 2000005163;
+UPDATE `waypoint_scripts` SET `dataint` = 206 WHERE `dataint` = 2000005164;
+UPDATE `waypoint_scripts` SET `dataint` = 212 WHERE `dataint` = 2000005165;
+UPDATE `waypoint_scripts` SET `dataint` = 214 WHERE `dataint` = 2000005166;
+UPDATE `waypoint_scripts` SET `dataint` = 1153 WHERE `dataint` = 2000005167;
+UPDATE `waypoint_scripts` SET `dataint` = 1130 WHERE `dataint` = 2000005168;
+UPDATE `waypoint_scripts` SET `dataint` = 201 WHERE `dataint` = 2000005169;
+UPDATE `waypoint_scripts` SET `dataint` = 218 WHERE `dataint` = 2000005170;
+UPDATE `waypoint_scripts` SET `dataint` = 222 WHERE `dataint` = 2000005171;
+UPDATE `waypoint_scripts` SET `dataint` = 221 WHERE `dataint` = 2000005172;
+UPDATE `waypoint_scripts` SET `dataint` = 204 WHERE `dataint` = 2000005173;
+UPDATE `waypoint_scripts` SET `dataint` = 222 WHERE `dataint` = 2000005174;
+UPDATE `waypoint_scripts` SET `dataint` = 219 WHERE `dataint` = 2000005175;
+UPDATE `waypoint_scripts` SET `dataint` = 218 WHERE `dataint` = 2000005176;
+UPDATE `waypoint_scripts` SET `dataint` = 221 WHERE `dataint` = 2000005177;
+UPDATE `waypoint_scripts` SET `dataint` = 219 WHERE `dataint` = 2000005178;
+UPDATE `waypoint_scripts` SET `dataint` = 222 WHERE `dataint` = 2000005179;
+UPDATE `waypoint_scripts` SET `dataint` = 587 WHERE `dataint` = 2000005180;
+UPDATE `waypoint_scripts` SET `dataint` = 589 WHERE `dataint` = 2000005181;
+UPDATE `waypoint_scripts` SET `dataint` = 590 WHERE `dataint` = 2000005182;
+UPDATE `waypoint_scripts` SET `dataint` = 588 WHERE `dataint` = 2000005183;
+UPDATE `waypoint_scripts` SET `dataint` = 1091 WHERE `dataint` = 2000005184;
+UPDATE `waypoint_scripts` SET `dataint` = 24425 WHERE `dataint` = 2000005200;
+UPDATE `waypoint_scripts` SET `dataint` = 24425 WHERE `dataint` = 2000005201;
+UPDATE `waypoint_scripts` SET `dataint` = 22216 WHERE `dataint` = 2000005202;
+UPDATE `waypoint_scripts` SET `dataint` = 22211 WHERE `dataint` = 2000005203;
+UPDATE `waypoint_scripts` SET `dataint` = 22206 WHERE `dataint` = 2000005204;
+UPDATE `waypoint_scripts` SET `dataint` = 25086 WHERE `dataint` = 2000005205;
+UPDATE `waypoint_scripts` SET `dataint` = 25073 WHERE `dataint` = 2000005206;
+UPDATE `waypoint_scripts` SET `dataint` = 25074 WHERE `dataint` = 2000005207;
+UPDATE `waypoint_scripts` SET `dataint` = 25075 WHERE `dataint` = 2000005208;
+UPDATE `waypoint_scripts` SET `dataint` = 25076 WHERE `dataint` = 2000005209;
+UPDATE `waypoint_scripts` SET `dataint` = 23842 WHERE `dataint` = 2000005210;
+UPDATE `waypoint_scripts` SET `dataint` = 328 WHERE `dataint` = 2000005400;
+UPDATE `waypoint_scripts` SET `dataint` = 327 WHERE `dataint` = 2000005401;
+UPDATE `waypoint_scripts` SET `dataint` = 5956 WHERE `dataint` = 2000005402;
+UPDATE `waypoint_scripts` SET `dataint` = 5957 WHERE `dataint` = 2000005403;
+UPDATE `waypoint_scripts` SET `dataint` = 5960 WHERE `dataint` = 2000005404;
+UPDATE `waypoint_scripts` SET `dataint` = 5959 WHERE `dataint` = 2000005405;
+UPDATE `waypoint_scripts` SET `dataint` = 24439 WHERE `dataint` = 2000005406;
+UPDATE `waypoint_scripts` SET `dataint` = 24443 WHERE `dataint` = 2000005407;
+UPDATE `waypoint_scripts` SET `dataint` = 36 WHERE `dataint` = 2000005408;
diff --git a/sql/updates/world/2014_09_13_00_world_misc.sql b/sql/updates/world/2014_09_13_00_world_misc.sql
new file mode 100644
index 00000000000..e2c04ef287d
--- /dev/null
+++ b/sql/updates/world/2014_09_13_00_world_misc.sql
@@ -0,0 +1,19 @@
+DELETE FROM `spell_linked_spell` WHERE `spell_trigger`IN(31606,47190);
+INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
+(31606, 31746, 0, 'Stormcrow Amulet triggers Stormcrow Shape'),
+(47190, 47189, 1, 'Toaluus Spiritual Incense triggers Spiritual Insight');
+
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry` IN(26595,17841);
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`IN(26595,17841) AND `source_type`=0;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(26595, 0, 0, 0, 10, 0, 100, 0, 1, 30, 10, 10, 28, 47189, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Toaluu the Mystic - Out of Combat - Remove Aura Spiritual Insight'),
+(17841, 0, 0, 0, 10, 0, 100, 0, 1, 30, 10, 10, 28, 31746, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ysiel Windsinger - Out of Combat - Remove Aura Stormcrow Shape');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry` IN(26595,17841);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22, 1, 26595, 0, 0, 28, 0, 12028, 0, 0, 0, 0, 0, '', 'Only run SAI if Player Has Spiritual Insight Complete in Log'),
+(22, 1, 26595, 0, 0, 1, 0, 47189, 0, 0, 0, 0, 0, '', 'Only run SAI if Player Has Aura Spiritual Insight'),
+(22, 1, 17841, 0, 0, 28, 0, 9718, 0, 0, 0, 0, 0, '', 'Only run SAI if Player Has As The Crow Flies Complete in Log'),
+(22, 1, 17841, 0, 0, 1, 0, 31746, 0, 0, 0, 0, 0, '', 'Only run SAI if Player Has Aura Stormcrow Shape');
diff --git a/sql/updates/world/2014_09_13_01_world_spell_script_names.sql b/sql/updates/world/2014_09_13_01_world_spell_script_names.sql
new file mode 100644
index 00000000000..aaa12cd0938
--- /dev/null
+++ b/sql/updates/world/2014_09_13_01_world_spell_script_names.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` = 48292;
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(48292, 'spell_gen_50pct_count_pct_from_max_hp');
diff --git a/sql/updates/world/2014_09_13_02_world_trinity_string.sql b/sql/updates/world/2014_09_13_02_world_trinity_string.sql
new file mode 100644
index 00000000000..ab9ed7cf03b
--- /dev/null
+++ b/sql/updates/world/2014_09_13_02_world_trinity_string.sql
@@ -0,0 +1 @@
+DELETE FROM `trinity_string` WHERE `entry` IN (28634,28635);
diff --git a/sql/updates/world/2014_09_13_03_world_spelldifficulty_dbc.sql b/sql/updates/world/2014_09_13_03_world_spelldifficulty_dbc.sql
new file mode 100644
index 00000000000..4225bd420e2
--- /dev/null
+++ b/sql/updates/world/2014_09_13_03_world_spelldifficulty_dbc.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spelldifficulty_dbc` WHERE `id`=52480;
+INSERT INTO `spelldifficulty_dbc` (`id`, `spellid0`, `spellid1`) VALUES
+(52480, 52480, 58825);
diff --git a/sql/updates/world/2014_09_13_04_world_misc.sql b/sql/updates/world/2014_09_13_04_world_misc.sql
new file mode 100644
index 00000000000..1d3290071c8
--- /dev/null
+++ b/sql/updates/world/2014_09_13_04_world_misc.sql
@@ -0,0 +1,26 @@
+SET @CGUID := 52390;
+
+UPDATE `smart_scripts` SET `event_type`=7 WHERE `entryorguid`=28083 AND `source_type`=0 AND `id`=17 AND `link`=18;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=28083 AND `source_type`=0 AND `id`=16 AND `link`=17;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=28083 AND `source_type`=0 AND `id`=8 AND `link`=0;
+UPDATE `smart_scripts` SET `event_type`=1, `event_param3`=60000, `event_param4`=90000 WHERE `entryorguid`=28083 AND `source_type`=0 AND `id`=1 AND `link`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=28083 AND `source_type`=0 AND `id`=0 AND `link`=1;
+UPDATE `smart_scripts` SET `event_type`=4 WHERE `entryorguid`=28083 AND `source_type`=0 AND `id`=3 AND `link`=4;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=28083 AND `source_type`=0 AND `id`=2;
+UPDATE `smart_scripts` SET `event_flags`=0 WHERE `entryorguid`=11832 AND `source_type`=0 AND `id`=4 AND `link`=0;
+UPDATE `smart_scripts` SET `event_flags`=0 WHERE `entryorguid`=1183201 AND `source_type`=9 AND `id`=0 AND `link`=0;
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN(19698,23383,19671);
+INSERT INTO `creature_template_addon` (`entry`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES
+(19698, 0, 0x10008, 0x1, ''), -- 19698
+(23383, 0, 0x0, 0x1, ''), -- 23383
+(19671, 0, 0x0, 0x101, ''); -- 19671
+
+DELETE FROM `creature` WHERE `id` IN(19698,23383);
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+0, 19698, 530, 1, 1, -3345.276, 5189.063, -100.9659, 5.77704, 120, 0, 0), -- 19698 (Area: 3519)
+(@CGUID+1, 23383, 530, 1, 1, -3664.54, 3389.79, 312.952, 2.356194, 120, 0, 0); -- 23383 (Area: 3519)
+
+DELETE FROM `event_scripts` WHERE `id`=17209 AND `command`=8;
+INSERT INTO `event_scripts` (`id`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`) VALUES
+(17209, 1, 8, 27995, 1, 0, 0, 0, 0, 0);
diff --git a/sql/updates/world/2014_09_13_05_world_misc_335.sql b/sql/updates/world/2014_09_13_05_world_misc_335.sql
new file mode 100644
index 00000000000..eb701a48cc4
--- /dev/null
+++ b/sql/updates/world/2014_09_13_05_world_misc_335.sql
@@ -0,0 +1,8 @@
+UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI',`ScriptName`='' WHERE `entry`IN(183877);
+DELETE FROM `smart_scripts` WHERE `entryorguid`IN(183877) AND `source_type`=1;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(183877, 1, 0, 0, 62, 0, 100, 1, 8023, 0, 0, 0, 12, 19671, 8, 60000, 0, 0, 0, 8, 0, 0, 0, -351.345, -69.7118, -0.8754317, 4.34587, 'Ethereal Transporter Control Panel - On Gossip Option 0 Selected - Summon Cryo-Engineer Sha heen'),
+(183877, 1, 1, 0, 62, 0, 100, 0, 8023, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ethereal Transporter Control Panel - On Gossip Option 0 Selected - Close Gossip');
+
+UPDATE `gossip_menu_option` SET `action_menu_id`=0 WHERE `menu_id`=8023 AND `id`=0;
diff --git a/sql/updates/world/2014_09_14_00_world_waypoint_scripts.sql b/sql/updates/world/2014_09_14_00_world_waypoint_scripts.sql
new file mode 100644
index 00000000000..ebb309aa9d6
--- /dev/null
+++ b/sql/updates/world/2014_09_14_00_world_waypoint_scripts.sql
@@ -0,0 +1 @@
+UPDATE `waypoint_scripts` SET `dataint`=13572 WHERE `guid`=346;
diff --git a/sql/updates/world/2014_09_14_01_world_misc.sql b/sql/updates/world/2014_09_14_01_world_misc.sql
new file mode 100644
index 00000000000..49fa75e37de
--- /dev/null
+++ b/sql/updates/world/2014_09_14_01_world_misc.sql
@@ -0,0 +1,50 @@
+SET @CGUID := 74512;
+
+UPDATE `creature_template` SET `gossip_menu_id`=10200 WHERE `entry`=32239;
+UPDATE`creature_template` SET `gossip_menu_id`=9928, `minlevel`=82, `maxlevel`=82, `npcflag`=1, `speed_walk`=4.8, `speed_run`=3.142857, `unit_flags2`=2099200 WHERE `entry`=30399;
+UPDATE `creature_template` SET `faction`=14, `speed_walk`=1.6, `speed_run`=1.857143, `unit_flags`=320, `unit_flags2`=2099200 WHERE `entry`=30396;
+UPDATE `creature_template` SET `speed_walk`=3.2, `speed_run`=1.428571, `unit_flags`=33088, `unit_flags2`=2099200, `HoverHeight`=2.1 WHERE `entry`=30420;
+UPDATE `creature_template` SET `faction`=2102, `unit_flags`=320 WHERE `entry`=30429;
+
+
+DELETE FROM `gossip_menu` WHERE `entry` IN(9928,10200);
+INSERT INTO `gossip_menu` (`entry`, `text_id`) VALUES
+(10200, 14160), -- 32239
+(9928, 13800); -- 30399
+
+DELETE FROM `gossip_menu_option` WHERE `menu_id` IN(9928,10200);
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES
+(10200, 0, 0, 'I\'m ready, Highlord.', 32933, 1, 1, 0, 0, 0, 0, '', 0),
+(9928, 0, 0, 'I\'m with you, Thorim.', 31225, 1, 1, 0, 0, 0, 0, '', 0);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup` IN(9928,10200);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(15, 10200, 0, 0, 0, 9, 0, 13364, 0, 0, 0, 0, 0, '', 'Highlord Tirion Fordring - Show Gossip if Tirions Gambit Taken'),
+(15, 10200, 0, 0, 1, 9, 0, 13403, 0, 0, 0, 0, 0, '', 'Highlord Tirion Fordring - Show Gossip if Tirions Gambit Taken'),
+(15, 10200, 0, 0, 0, 1, 0, 61131, 0, 0, 0, 0, 0, '', 'Highlord Tirion Fordring - Show Gossip if player has aura Cultist Hood'),
+(15, 10200, 0, 0, 1, 1, 0, 61131, 0, 0, 0, 0, 0, '', 'Highlord Tirion Fordring - Show Gossip if player has aura Cultist Hood'),
+(15, 9928, 0, 0, 0, 9, 0, 13047, 0, 0, 0, 0, 0, '', 'Thorim - SHow Gossip if the reckoning taken');
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN(32239,32241,30399,30396,30420);
+INSERT INTO `creature_template_addon` (`entry`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES
+(32239, 0, 0x10000, 0x101, '49414'), -- 32239 - 49414
+(32241, 0, 0x10000, 0x1, '49414'), -- 32241 - 49414
+(30399, 0, 0x10000, 0x1, '54503'), -- 30399 - 54503
+(30396, 0, 0x1, 0x1, ''), -- 30396
+(30420, 0, 0x3010000, 0x1, '54503'); -- 30420 - 54503
+
+DELETE FROM `creature` WHERE `id` IN(32239,32241,30399,30420);
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+0, 32239, 571, 1, 1, 6240.595, 2658.845, 570.3328, 5.864306, 120, 0, 0), -- 32239 (Area: 210)
+(@CGUID+1, 32241, 571, 1, 1, 6243.453, 2667.72, 570.3328, 5.410521, 120, 0, 0), -- 32241 (Area: 210)
+(@CGUID+2, 32241, 571, 1, 1, 6250.451, 2656.436, 570.3328, 2.199115, 120, 0, 0), -- 32241 (Area: 210)
+(@CGUID+3, 32241, 571, 1, 1, 6252.46, 2665.359, 570.3328, 3.979351, 120, 0, 0), -- 32241 (Area: 210)
+(@CGUID+4, 30399, 571, 1, 1, 8703.806, -714.0443, 934.9764, 2.321288, 120, 0, 0), -- 30399 (Area: 67)
+(@CGUID+5, 30420, 571, 1, 1, 8711.395, -754.7941, 955.1224, 2.338741, 120, 0, 0); -- 30420 (Area: 67)
+
+DELETE FROM `spell_area` WHERE `spell` IN(49416,54504) AND `area` IN(4543,4445,4521);
+INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `autocast`, `quest_start_status`, `quest_end_status`) VALUES
+(54504, 4543, 13047, 13047, 0, 0, 2, 1, 74, 11),
+(54504, 4445, 13047, 13047, 0, 0, 2, 1, 74, 11),
+(49416, 4521, 13364, 13364, 0, 0, 2, 1, 74, 11),
+(49416, 4521, 13403, 13403, 0, 0, 2, 1, 74, 11);
diff --git a/sql/updates/world/2014_09_14_02_world_spellscriptnames.sql b/sql/updates/world/2014_09_14_02_world_spellscriptnames.sql
new file mode 100644
index 00000000000..96ebc93961f
--- /dev/null
+++ b/sql/updates/world/2014_09_14_02_world_spellscriptnames.sql
@@ -0,0 +1 @@
+UPDATE `spell_script_names` SET `ScriptName`= 'spell_gen_stand' WHERE `spell_id`=37752;
diff --git a/sql/updates/world/2014_09_14_03_world_toc5.sql b/sql/updates/world/2014_09_14_03_world_toc5.sql
new file mode 100644
index 00000000000..3b2464e7f5f
--- /dev/null
+++ b/sql/updates/world/2014_09_14_03_world_toc5.sql
@@ -0,0 +1,304 @@
+SET @CGUID := 143275;
+SET @OGUID := 77245;
+
+DELETE FROM `creature` WHERE `map`=650;
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+ 0, 35644, 650, 3, 1, 702.967, 587.6493, 412.4754, 0.6108652, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 1, 35644, 650, 3, 1, 774.8976, 573.7361, 412.4752, 2.146755, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 2, 35644, 650, 3, 1, 787.4393, 584.9688, 412.4759, 2.478368, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 3, 35644, 650, 3, 1, 712.5938, 576.2604, 412.4758, 0.8901179, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 4, 35644, 650, 3, 1, 720.5695, 571.2847, 412.4749, 1.064651, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 5, 36558, 650, 3, 1, 790.1771, 589.059, 412.4753, 2.565634, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 6, 36558, 650, 3, 1, 716.6649, 573.4948, 412.4753, 0.9773844, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 7, 36558, 650, 3, 1, 770.4861, 571.5521, 412.4746, 2.059489, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 8, 36558, 650, 3, 1, 700.5313, 591.9271, 412.4749, 0.5235988, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 9, 36558, 650, 3, 1, 778.7413, 576.0486, 412.4756, 2.234021, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 10, 36558, 650, 3, 1, 705.4965, 583.9445, 412.4759, 0.6981317, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 11, 35644, 650, 3, 1, 699.9427, 643.3698, 412.4744, 5.77704, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 12, 35644, 650, 3, 1, 790.4896, 646.533, 412.4745, 3.717551, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 13, 35644, 650, 3, 1, 777.5643, 660.3004, 412.4669, 4.34587, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 14, 35644, 650, 3, 1, 704.9427, 651.3299, 412.4751, 5.602507, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 15, 35644, 650, 3, 1, 793.0087, 592.6667, 412.4749, 2.6529, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 16, 35644, 650, 3, 1, 768.2552, 661.6059, 412.4703, 4.555309, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 17, 35644, 650, 3, 1, 722.3629, 660.7448, 412.4681, 4.834562, 7200, 0, 0), -- Argent Warhorse (Area: Trial of the Champion) (Auras: 67870 - Trample)
+(@CGUID+ 18, 35016, 650, 3, 1, 748.8837, 616.4618, 411.1738, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 19, 35016, 650, 3, 1, 782.1198, 583.2101, 412.4743, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 20, 35016, 650, 3, 1, 746.5243, 615.868, 411.1725, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 21, 35016, 650, 3, 1, 747.375, 619.1094, 411.9709, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 22, 35016, 650, 3, 1, 746.9774, 618.7934, 411.9709, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 23, 35016, 650, 3, 1, 697.2847, 618.2535, 412.4758, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 24, 35016, 650, 3, 1, 792.2587, 598.2239, 412.4696, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 25, 35016, 650, 3, 1, 703.8837, 596.6007, 412.4742, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 26, 35016, 650, 3, 1, 714.4861, 581.7222, 412.476, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 27, 22515, 650, 3, 1, 746.9045, 618.2813, 411.1724, 0, 7200, 0, 0), -- World Trigger (Area: Trial of the Champion)
+(@CGUID+ 28, 35004, 650, 3, 1, 748.309, 619.4879, 411.1724, 4.712389, 7200, 0, 0), -- Jaeren Sunsworn (Area: Trial of the Champion)
+(@CGUID+ 29, 36558, 650, 3, 1, 717.4427, 660.6458, 412.4669, 4.921828, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 30, 36558, 650, 3, 1, 702.1649, 647.2674, 412.4749, 5.689773, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 31, 36558, 650, 3, 1, 726.8264, 661.2014, 412.4716, 4.660029, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 32, 34977, 650, 3, 1, 726.3802, 557.1511, 436.9785, 1.256637, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 33, 35016, 650, 3, 1, 712.4132, 653.9305, 412.4742, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 34, 34970, 650, 3, 1, 757.9983, 559.7309, 435.5007, 1.466077, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 35, 34979, 650, 3, 1, 712.8733, 563.1719, 436.9667, 1.029744, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 36, 34979, 650, 3, 1, 709.5764, 570.1059, 435.5041, 0.9424778, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 37, 35016, 650, 3, 1, 702.2743, 638.7604, 412.4703, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 38, 35016, 650, 3, 1, 795.5486, 618.25, 412.4769, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 39, 35016, 650, 3, 1, 780.4358, 654.4063, 412.4742, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 40, 34975, 650, 3, 1, 767.5816, 560.5399, 435.5033, 1.832596, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 41, 34996, 650, 3, 1, 746.5833, 559.0191, 435.4921, 1.570796, 7200, 0, 0), -- Highlord Tirion Fordring (Area: Trial of the Champion)
+(@CGUID+ 42, 35016, 650, 3, 1, 791.9722, 638.0104, 412.4699, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - Generic Bunny (Area: Trial of the Champion)
+(@CGUID+ 43, 34859, 650, 3, 1, 688.7309, 604.6893, 435.5013, 0.2094395, 7200, 0, 0), -- Orcish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 44, 34887, 650, 3, 1, 797.1476, 617.7083, 435.4885, 3.106686, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Alliance (Area: Trial of the Champion)
+(@CGUID+ 45, 34903, 650, 3, 1, 697.1163, 583.0521, 435.5041, 0.6283185, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Tauren (Area: Trial of the Champion)
+(@CGUID+ 46, 34857, 650, 3, 1, 692.8542, 590.632, 435.5041, 0.4712389, 7200, 0, 0), -- Troll Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 47, 34858, 650, 3, 1, 697.2413, 583.8577, 435.5041, 0.6283185, 7200, 0, 0), -- Tauren Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 48, 34857, 650, 3, 1, 689.6233, 598.0452, 435.5031, 0.3316126, 7200, 0, 0), -- Troll Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66371 - Sen'jin Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 49, 34966, 650, 3, 1, 718.9167, 564.0781, 435.5041, 1.117011, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 50, 34975, 650, 3, 1, 775.7483, 564.5851, 435.5041, 2.164208, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 51, 34966, 650, 3, 1, 725.6614, 560.8351, 435.5034, 1.239184, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 52, 34977, 650, 3, 1, 734.4114, 560.158, 435.501, 1.37881, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 53, 36558, 650, 3, 1, 788.0156, 650.7882, 412.4749, 3.804818, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 54, 36558, 650, 3, 1, 773.0972, 660.7327, 412.4673, 4.45059, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 55, 36558, 650, 3, 1, 793.0521, 642.8507, 412.4742, 3.630285, 7200, 0, 0), -- Argent Battleworg (Area: Trial of the Champion) (Auras: 67865 - Trample)
+(@CGUID+ 56, 34994, 650, 3, 1, 686.6632, 614.5608, 435.4849, 6.230825, 7200, 0, 0), -- Thrall (Area: Trial of the Champion)
+(@CGUID+ 57, 34977, 650, 3, 1, 730.9983, 552.7188, 438.8121, 1.343904, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 58, 34974, 650, 3, 1, 787.5018, 568.9618, 436.9922, 2.286381, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 59, 34974, 650, 3, 1, 781.3715, 567.4167, 435.5041, 2.408554, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 60, 34995, 650, 3, 1, 686.9358, 622.0295, 435.4867, 6.230825, 7200, 0, 0), -- Garrosh Hellscream (Area: Trial of the Champion)
+(@CGUID+ 61, 34856, 650, 3, 1, 801.5677, 591.3837, 435.5041, 2.670354, 7200, 0, 0), -- Dwarven Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66363 - Ironforge Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 62, 34883, 650, 3, 1, 687.8299, 617.6493, 435.4933, 1.58825, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Horde (Area: Trial of the Champion)
+(@CGUID+ 63, 34856, 650, 3, 1, 804.0261, 598.4358, 435.503, 2.86234, 7200, 0, 0), -- Dwarven Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 64, 34902, 650, 3, 1, 689.1962, 597, 435.5034, 0.3490658, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Troll (Area: Trial of the Champion)
+(@CGUID+ 65, 34901, 650, 3, 1, 687.1597, 618.132, 435.4888, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Orc (Area: Trial of the Champion)
+(@CGUID+ 66, 34859, 650, 3, 1, 687.9653, 629.6111, 435.4982, 6.195919, 7200, 0, 0), -- Orcish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66369 - Orgrimmar Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 67, 34906, 650, 3, 1, 803.6215, 594.6302, 435.5041, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Dwarf (Area: Trial of the Champion)
+(@CGUID+ 68, 34859, 650, 3, 1, 685.1129, 600.4305, 436.9705, 0.2792527, 7200, 0, 0), -- Orcish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 69, 34868, 650, 3, 1, 798.6945, 587.3577, 435.5041, 2.687807, 7200, 0, 0), -- Draenei Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 70, 34870, 650, 3, 1, 804.4705, 604.8055, 435.5013, 2.844887, 7200, 0, 0), -- Human Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 71, 34858, 650, 3, 1, 696.2604, 577.507, 436.9658, 0.6981317, 7200, 0, 0), -- Tauren Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66370 - Thunder Bluff Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 72, 34868, 650, 3, 1, 793.882, 580.6788, 435.5041, 2.391101, 7200, 0, 0), -- Draenei Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66362 - Exodar Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 73, 34858, 650, 3, 1, 689.6354, 582.8229, 438.8188, 0.5585054, 7200, 0, 0), -- Tauren Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 74, 34970, 650, 3, 1, 764.0799, 553.434, 438.8278, 1.867502, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 75, 34966, 650, 3, 1, 718.4045, 555.9202, 438.8031, 1.151917, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 76, 34979, 650, 3, 1, 714.3403, 553.7083, 440.2231, 1.117011, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 77, 34970, 650, 3, 1, 761.217, 549.1424, 440.2457, 1.58825, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 78, 34977, 650, 3, 1, 733.809, 545.2153, 442.0747, 1.413717, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 79, 34990, 650, 3, 1, 806.3246, 617.9948, 435.4912, 3.124139, 7200, 0, 0), -- King Varian Wrynn (Area: Trial of the Champion)
+(@CGUID+ 80, 34992, 650, 3, 1, 806.2239, 614.9393, 435.4874, 3.001966, 7200, 0, 0), -- Lady Jaina Proudmoore (Area: Trial of the Champion)
+(@CGUID+ 81, 34975, 650, 3, 1, 773.5018, 555.5156, 438.8247, 1.954769, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 82, 34860, 650, 3, 1, 699.0052, 654.8941, 435.5041, 5.532694, 7200, 0, 0), -- Forsaken Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 83, 34870, 650, 3, 1, 805.0313, 629.7674, 435.5009, 3.385939, 7200, 0, 0), -- Human Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 84, 34905, 650, 3, 1, 696.3594, 653.5868, 435.5041, 5.602507, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Undead (Area: Trial of the Champion)
+(@CGUID+ 85, 34904, 650, 3, 1, 690.5955, 642, 435.5041, 5.88176, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Blood Elf (Area: Trial of the Champion)
+(@CGUID+ 86, 34869, 650, 3, 1, 806.5208, 644.8802, 436.9614, 3.543018, 7200, 0, 0), -- Gnomish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 87, 34909, 650, 3, 1, 800.1441, 651.7257, 437.002, 3.630285, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Night Elf (Area: Trial of the Champion)
+(@CGUID+ 88, 34908, 650, 3, 1, 799.4948, 582.9219, 436.9941, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Draenei (Area: Trial of the Champion)
+(@CGUID+ 89, 34900, 650, 3, 1, 813.5729, 618.1268, 438.8528, 3.159046, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Human (Area: Trial of the Champion)
+(@CGUID+ 90, 34910, 650, 3, 1, 805.7778, 640.0972, 435.6143, 0, 7200, 0, 0), -- [ph] Argent Raid Spectator - FX - Gnome (Area: Trial of the Champion)
+(@CGUID+ 91, 34868, 650, 3, 1, 799.1945, 575.25, 438.801, 2.373648, 7200, 0, 0), -- Draenei Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66362 - Exodar Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 92, 34861, 650, 3, 1, 686.3924, 643.3507, 436.9734, 5.88176, 7200, 0, 0), -- Blood Elf Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 93, 34859, 650, 3, 1, 680.5989, 603.9861, 438.7939, 0.1919862, 7200, 0, 0), -- Orcish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 94, 34860, 650, 3, 1, 693.6354, 654.8924, 436.9629, 5.602507, 7200, 0, 0), -- Forsaken Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 95, 34856, 650, 3, 1, 808.9236, 586.0347, 440.2946, 2.635447, 7200, 0, 0), -- Dwarven Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 96, 34856, 650, 3, 1, 814.3316, 597.7813, 440.2612, 2.897247, 7200, 0, 0), -- Dwarven Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66363 - Ironforge Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 97, 34857, 650, 3, 1, 684.9636, 591.0174, 438.8482, 0.418879, 7200, 0, 0), -- Troll Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66371 - Sen'jin Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 98, 34870, 650, 3, 1, 809.1111, 633.1337, 436.9589, 3.420845, 7200, 0, 0), -- Human Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+ 99, 34856, 650, 3, 1, 807.6233, 595.1649, 436.9687, 2.80998, 7200, 0, 0), -- Dwarven Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66363 - Ironforge Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+100, 34868, 650, 3, 1, 800.2813, 582.7483, 436.9739, 2.583087, 7200, 0, 0), -- Draenei Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66362 - Exodar Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+101, 34856, 650, 3, 1, 813.6354, 587.592, 442.0691, 2.70526, 7200, 0, 0), -- Dwarven Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66363 - Ironforge Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+102, 34860, 650, 3, 1, 686.8663, 650.8368, 438.7787, 5.759586, 7200, 0, 0), -- Forsaken Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66365 - Undercity Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+103, 34871, 650, 3, 1, 799.3472, 648.0243, 435.5041, 3.560472, 7200, 0, 0), -- Night Elf Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+104, 34857, 650, 3, 1, 675.2813, 589.9879, 442.0812, 0.3839724, 7200, 0, 0), -- Troll Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+105, 34870, 650, 3, 1, 808.1927, 601.9358, 436.9788, 2.80998, 7200, 0, 0), -- Human Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+106, 34871, 650, 3, 1, 805.4722, 648.7205, 436.9274, 3.508112, 7200, 0, 0), -- Night Elf Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+107, 34868, 650, 3, 1, 806.4879, 574.6146, 442.076, 2.495821, 7200, 0, 0), -- Draenei Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66362 - Exodar Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+108, 34857, 650, 3, 1, 675.1146, 597.7188, 442.0728, 0.2792527, 7200, 0, 0), -- Troll Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+109, 34859, 650, 3, 1, 685.118, 634.4045, 436.9757, 6.091199, 7200, 0, 0), -- Orcish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66369 - Orgrimmar Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+110, 34858, 650, 3, 1, 688.0121, 573.8524, 442.0741, 0.6632251, 7200, 0, 0), -- Tauren Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66370 - Thunder Bluff Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+111, 34861, 650, 3, 1, 692.4063, 644.8698, 435.5041, 5.8294, 7200, 0, 0), -- Blood Elf Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66360 - Silvermoon Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+112, 34859, 650, 3, 1, 677.9861, 634.1024, 440.2452, 6.126106, 7200, 0, 0), -- Orcish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+113, 34869, 650, 3, 1, 803.8958, 639.0643, 435.5034, 3.455752, 7200, 0, 0), -- Gnomish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+114, 34861, 650, 3, 1, 689.4358, 639.2587, 435.5034, 5.951573, 7200, 0, 0), -- Blood Elf Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66360 - Silvermoon Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+115, 34858, 650, 3, 1, 682.8559, 586.1996, 440.2427, 0.4712389, 7200, 0, 0), -- Tauren Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66370 - Thunder Bluff Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+116, 34869, 650, 3, 1, 807.9583, 636.7726, 436.9755, 3.368485, 7200, 0, 0), -- Gnomish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+117, 34871, 650, 3, 1, 795.6719, 653.7396, 435.5041, 3.752458, 7200, 0, 0), -- Night Elf Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66368 - Darnassus Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+118, 34975, 650, 3, 1, 779.9965, 550.6945, 442.0774, 2.059489, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+119, 34974, 650, 3, 1, 783.0695, 561.1771, 438.7979, 2.303835, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+120, 34966, 650, 3, 1, 721.9705, 548.191, 442.0721, 1.239184, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+121, 34970, 650, 3, 1, 769.9514, 547.875, 442.0723, 1.797689, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+122, 34974, 650, 3, 1, 790.6077, 559.2691, 442.0727, 2.408554, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+123, 34979, 650, 3, 1, 700.2726, 559.2239, 442.0803, 0.9250245, 7200, 0, 0), -- Argent Crusade Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+124, 34869, 650, 3, 1, 818.5121, 640.5989, 442.0783, 3.385939, 7200, 0, 0), -- Gnomish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+125, 34870, 650, 3, 1, 818.1632, 607.1302, 440.209, 2.949606, 7200, 0, 0), -- Human Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+126, 34869, 650, 3, 1, 813.5018, 644.8768, 440.2538, 3.490659, 7200, 0, 0), -- Gnomish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+127, 34860, 650, 3, 1, 690.4861, 661.6614, 440.2092, 5.550147, 7200, 0, 0), -- Forsaken Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66365 - Undercity Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+128, 34861, 650, 3, 1, 677.1702, 640.7396, 442.0688, 6.003932, 7200, 0, 0), -- Blood Elf Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura)
+(@CGUID+129, 34871, 650, 3, 1, 800.1945, 660.7292, 438.7687, 3.822271, 7200, 0, 0), -- Night Elf Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66368 - Darnassus Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+130, 34870, 650, 3, 1, 818.1337, 626.9636, 440.2178, 3.281219, 7200, 0, 0), -- Human Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+131, 34869, 650, 3, 1, 813.3004, 650.717, 442.0732, 3.490659, 7200, 0, 0), -- Gnomish Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66366 - Gnomeregan Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+132, 34861, 650, 3, 1, 679.9809, 648.8785, 440.1984, 5.864306, 7200, 0, 0), -- Blood Elf Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66360 - Silvermoon Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+133, 34860, 650, 3, 1, 684.0695, 656.6805, 442.074, 5.689773, 7200, 0, 0), -- Forsaken Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow, 66365 - Undercity Pennant, 55944 - Spectator - Cheer Aura)
+(@CGUID+134, 34871, 650, 3, 1, 810.6077, 659.8299, 442.0864, 3.682645, 7200, 0, 0); -- Night Elf Coliseum Spectator (Area: Trial of the Champion) (Auras: 66321 - [DND] Spawn Grow; 55944 - Spectator - Cheer Aura)
+
+DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+134;
+INSERT INTO `creature_addon` (`guid`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES
+(@CGUID+18, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+19, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+20, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+21, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+22, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+23, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+24, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+25, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+26, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+32, 0, 0x0, 0x1, '66321 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+33, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+34, 0, 0x0, 0x1, '66321 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+35, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+36, 0, 0x0, 0x1, '66321 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+37, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+38, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+39, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+40, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+42, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - Generic Bunny
+(@CGUID+43, 0, 0x0, 0x1, '66321 55944'), -- Orcish Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+44, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - FX - Alliance
+(@CGUID+45, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - FX - Tauren
+(@CGUID+46, 0, 0x0, 0x1, '66321 55944'), -- Troll Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+47, 0, 0x0, 0x1, '66321 55944'), -- Tauren Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+48, 0, 0x0, 0x1, '66321 66371 55944'), -- Troll Coliseum Spectator - 66321 - [DND] Spawn Grow, 66371 - Sen'jin Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+49, 0, 0x0, 0x1, '66321 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+50, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+51, 0, 0x0, 0x1, '66321 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+52, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+57, 0, 0x0, 0x1, '66321 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+58, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+59, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+61, 0, 0x0, 0x1, '66321 66363 55944'), -- Dwarven Coliseum Spectator - 66321 - [DND] Spawn Grow, 66363 - Ironforge Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+62, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - FX - Horde
+(@CGUID+63, 0, 0x0, 0x1, '66321 55944'), -- Dwarven Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+64, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - FX - Troll
+(@CGUID+65, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - FX - Orc
+(@CGUID+66, 0, 0x0, 0x1, '66321 66369 55944'), -- Orcish Coliseum Spectator - 66321 - [DND] Spawn Grow, 66369 - Orgrimmar Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+67, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - FX - Dwarf
+(@CGUID+68, 0, 0x0, 0x1, '66321 55944'), -- Orcish Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+69, 0, 0x0, 0x1, '66321 55944'), -- Draenei Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+70, 0, 0x0, 0x1, '66321 66367 55944'), -- Human Coliseum Spectator - 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+71, 0, 0x0, 0x1, '66321 66370 55944'), -- Tauren Coliseum Spectator - 66321 - [DND] Spawn Grow, 66370 - Thunder Bluff Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+72, 0, 0x0, 0x1, '66321 66362 55944'), -- Draenei Coliseum Spectator - 66321 - [DND] Spawn Grow, 66362 - Exodar Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+73, 0, 0x0, 0x1, '66321 55944'), -- Tauren Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+74, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+75, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+76, 0, 0x0, 0x1, '66321 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+77, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+78, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+81, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+82, 0, 0x0, 0x1, '66321 55944'), -- Forsaken Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+83, 0, 0x0, 0x1, '66321 66367 55944'), -- Human Coliseum Spectator - 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+84, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - FX - Undead
+(@CGUID+85, 0, 0x0, 0x1, ''), -- [ph] Argent Raid Spectator - FX - Blood Elf
+(@CGUID+86, 0, 0x0, 0x1, '66321 55944'), -- Gnomish Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+91, 0, 0x0, 0x1, '66321 66362 55944'), -- Draenei Coliseum Spectator - 66321 - [DND] Spawn Grow, 66362 - Exodar Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+92, 0, 0x0, 0x1, '66321 55944'), -- Blood Elf Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+93, 0, 0x0, 0x1, '66321 55944'), -- Orcish Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+94, 0, 0x0, 0x1, '66321 55944'), -- Forsaken Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+95, 0, 0x0, 0x1, '66321 55944'), -- Dwarven Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+96, 0, 0x0, 0x1, '66321 66363 55944'), -- Dwarven Coliseum Spectator - 66321 - [DND] Spawn Grow, 66363 - Ironforge Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+97, 0, 0x0, 0x1, '66321 66371 55944'), -- Troll Coliseum Spectator - 66321 - [DND] Spawn Grow, 66371 - Sen'jin Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+98, 0, 0x0, 0x1, '66321 66367 55944'), -- Human Coliseum Spectator - 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+99, 0, 0x0, 0x1, '66321 66363 55944'), -- Dwarven Coliseum Spectator - 66321 - [DND] Spawn Grow, 66363 - Ironforge Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+100, 0, 0x0, 0x1, '66321 66362 55944'), -- Draenei Coliseum Spectator - 66321 - [DND] Spawn Grow, 66362 - Exodar Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+101, 0, 0x0, 0x1, '66321 66363 55944'), -- Dwarven Coliseum Spectator - 66321 - [DND] Spawn Grow, 66363 - Ironforge Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+102, 0, 0x0, 0x1, '66321 66365 55944'), -- Forsaken Coliseum Spectator - 66321 - [DND] Spawn Grow, 66365 - Undercity Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+103, 0, 0x0, 0x1, '66321 55944'), -- Night Elf Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+104, 0, 0x0, 0x1, '66321 55944'), -- Troll Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+105, 0, 0x0, 0x1, '66321 66367 55944'), -- Human Coliseum Spectator - 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+106, 0, 0x0, 0x1, '66321 55944'), -- Night Elf Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+107, 0, 0x0, 0x1, '66321 66362 55944'), -- Draenei Coliseum Spectator - 66321 - [DND] Spawn Grow, 66362 - Exodar Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+108, 0, 0x0, 0x1, '66321 55944'), -- Troll Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+109, 0, 0x0, 0x1, '66321 66369 55944'), -- Orcish Coliseum Spectator - 66321 - [DND] Spawn Grow, 66369 - Orgrimmar Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+110, 0, 0x0, 0x1, '66321 66370 55944'), -- Tauren Coliseum Spectator - 66321 - [DND] Spawn Grow, 66370 - Thunder Bluff Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+111, 0, 0x0, 0x1, '66321 66360 55944'), -- Blood Elf Coliseum Spectator - 66321 - [DND] Spawn Grow, 66360 - Silvermoon Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+112, 0, 0x0, 0x1, '66321 55944'), -- Orcish Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+113, 0, 0x0, 0x1, '66321 55944'), -- Gnomish Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+114, 0, 0x0, 0x1, '66321 66360 55944'), -- Blood Elf Coliseum Spectator - 66321 - [DND] Spawn Grow, 66360 - Silvermoon Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+115, 0, 0x0, 0x1, '66321 66370 55944'), -- Tauren Coliseum Spectator - 66321 - [DND] Spawn Grow, 66370 - Thunder Bluff Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+116, 0, 0x0, 0x1, '66321 55944'), -- Gnomish Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+117, 0, 0x0, 0x1, '66321 66368 55944'), -- Night Elf Coliseum Spectator - 66321 - [DND] Spawn Grow, 66368 - Darnassus Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+118, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+119, 0, 0x0, 0x1, '66321 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+120, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+121, 0, 0x0, 0x1, '66321 66361 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 66361 - Argent Crusade Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+122, 0, 0x0, 0x1, '66321 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+123, 0, 0x0, 0x1, '66321 55944'), -- Argent Crusade Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+124, 0, 0x0, 0x1, '66321 55944'), -- Gnomish Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+125, 0, 0x0, 0x1, '66321 66367 55944'), -- Human Coliseum Spectator - 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+126, 0, 0x0, 0x1, '66321 55944'), -- Gnomish Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+127, 0, 0x0, 0x1, '66321 66365 55944'), -- Forsaken Coliseum Spectator - 66321 - [DND] Spawn Grow, 66365 - Undercity Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+128, 0, 0x0, 0x1, '66321 55944'), -- Blood Elf Coliseum Spectator - 66321 - [DND] Spawn Grow, 55944 - Spectator - Cheer Aura
+(@CGUID+129, 0, 0x0, 0x1, '66321 66368 55944'), -- Night Elf Coliseum Spectator - 66321 - [DND] Spawn Grow, 66368 - Darnassus Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+130, 0, 0x0, 0x1, '66321 66367 55944'), -- Human Coliseum Spectator - 66321 - [DND] Spawn Grow, 66367 - Stormwind Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+131, 0, 0x0, 0x1, '66321 66366 55944'), -- Gnomish Coliseum Spectator - 66321 - [DND] Spawn Grow, 66366 - Gnomeregan Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+132, 0, 0x0, 0x1, '66321 66360 55944'), -- Blood Elf Coliseum Spectator - 66321 - [DND] Spawn Grow, 66360 - Silvermoon Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+133, 0, 0x0, 0x1, '66321 66365 55944'), -- Forsaken Coliseum Spectator - 66321 - [DND] Spawn Grow, 66365 - Undercity Pennant, 55944 - Spectator - Cheer Aura
+(@CGUID+134, 0, 0x0, 0x1, '66321 55944'); -- Night Elf Coliseum Spectator - 66321 - [DND] Spawn Grow; 55944 - Spectator - Cheer Aura
+
+DELETE FROM `gameobject` WHERE `map`=650;
+INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES
+(@OGUID+ 0, 195479, 650, 3, 1, 746.1556, 549.4642, 412.8809, 4.71239, 0, 0, 0.7071069, 0.7071066, 86400, 255, 1), -- Doodad_InstancePortal_Green_10Man01 (Area: 0)
+(@OGUID+ 1, 195480, 650, 3, 1, 746.1556, 549.4642, 412.8809, 1.570796, 0, 0, 0.7071069, 0.7071066, 86400, 255, 1), -- Doodad_InstancePortal_Green_25Man01 (Area: 0)
+(@OGUID+ 2, 195478, 650, 3, 1, 746.1556, 549.4642, 412.8809, 1.570796, 0, 0, 0.7071069, 0.7071066, 86400, 255, 1), -- Doodad_InstancePortal_Green_10Man_Heroic01 (Area: 0)
+(@OGUID+ 3, 195481, 650, 3, 1, 746.1556, 549.4642, 412.8809, 1.570796, 0, 0, 0.7071069, 0.7071066, 86400, 255, 1), -- Doodad_InstancePortal_Green_25Man_Heroic01 (Area: 0)
+(@OGUID+ 4, 195486, 650, 3, 1, 813.1198, 617.5898, 413.0305, 0, 0, 0, 0.7071069, 0.7071066, 86400, 255, 1), -- Doodad_InstanceNewPortal_Purple_Skull01 (Area: 0)
+(@OGUID+ 5, 195477, 650, 3, 1, 813.1296, 617.6323, 413.0386, 0, 0, 0, 0.7071069, 0.7071066, 86400, 255, 1), -- Doodad_InstanceNewPortal_Purple07 (Area: 0)
+(@OGUID+ 6, 195650, 650, 3, 1, 804.6328, 618.0554, 412.6763, 3.141593, 0, 0, 0.7071069, 0.7071066, 86400, 255, 0), -- North Portcullis (Area: Trial of the Champion)
+(@OGUID+ 7, 195649, 650, 3, 1, 688.7698, 618.0554, 412.704, 3.141593, 0, 0, 0.7071069, 0.7071066, 86400, 255, 1), -- South Portcullis (Area: Trial of the Champion)
+(@OGUID+ 8, 195648, 650, 3, 1, 746.6458, 560.1208, 412.704, 1.570796, 0, 0, 0.7071069, 0.7071066, 86400, 255, 1), -- East Portcullis (Area: Trial of the Champion)
+(@OGUID+ 9, 195647, 650, 3, 1, 746.6976, 677.4688, 412.3391, 1.570796, 0, 0, 0.7071069, 0.7071066, 86400, 255, 1), -- Main Gate (Area: Trial of the Champion)
+(@OGUID+10, 196398, 650, 3, 1, 784.533, 660.2379, 412.3891, 5.567601, 0, 0, 0, 1, 86400, 255, 1), -- Lance Rack (Area: Trial of the Champion)
+(@OGUID+11, 196398, 650, 3, 1, 801.6632, 624.8055, 412.3444, 4.939284, 0, 0, 0, 1, 86400, 255, 1), -- Lance Rack (Area: Trial of the Champion)
+(@OGUID+12, 195485, 650, 3, 1, 844.6845, 623.4078, 159.1088, 0, 0, 0, 0.7071069, 0.7071066, 86400, 255, 0), -- Web Door (Area: Trial of the Champion)
+(@OGUID+13, 196398, 650, 3, 1, 692.1268, 610.5746, 412.3466, 1.850049, 0, 0, 0, 1, 86400, 255, 1), -- Lance Rack (Area: Trial of the Champion)
+(@OGUID+14, 196398, 650, 3, 1, 710.3246, 660.7083, 412.3868, 0.6981314, 0, 0, 0, 1, 86400, 255, 1), -- Lance Rack (Area: Trial of the Champion)
+(@OGUID+15, 195709, 650, 1, 1, 744.7205, 618.3073, 411.0891, 1.53589, 0, 0, 0, 1, -86400, 255, 1), -- Champion's Cache (Area: Trial of the Champion)
+(@OGUID+16, 195374, 650, 1, 1, 748.7604, 618.309, 411.0891, 1.588249, 0, 0, 0, 1, -86400, 255, 1), -- Eadric's Cache (Area: Trial of the Champion)
+(@OGUID+17, 195323, 650, 1, 1, 748.7778, 618.3524, 411.0891, 1.570796, 0, 0, 0, 1, -86400, 255, 1), -- Confessor's Cache (Area: 0)
+(@OGUID+18, 195710, 650, 2, 1, 744.7205, 618.3073, 411.0891, 1.53589, 0, 0, 0, 1, -86400, 255, 1), -- Champion's Cache (Area: Trial of the Champion)
+(@OGUID+19, 195375, 650, 2, 1, 748.7604, 618.309, 411.0891, 1.588249, 0, 0, 0, 1, -86400, 255, 1), -- Eadric's Cache (Area: Trial of the Champion)
+(@OGUID+20, 195324, 650, 2, 1, 748.7778, 618.3524, 411.0891, 1.570796, 0, 0, 0, 1, -86400, 255, 1); -- Confessor's Cache (Area: 0)
+
+UPDATE `creature_model_info` SET `bounding_radius`=1, `combat_reach`=1.5 WHERE `modelid`=29639; -- 29639
+UPDATE `creature_model_info` SET `bounding_radius`=1, `combat_reach`=1.5 WHERE `modelid`=29640; -- 29640
+UPDATE `creature_model_info` SET `bounding_radius`=0.3519, `combat_reach`=1.725 WHERE `modelid`=29643; -- 29643
+UPDATE `creature_model_info` SET `bounding_radius`=0.306, `combat_reach`=1.5 WHERE `modelid`=29644; -- 29644
+UPDATE `creature_model_info` SET `bounding_radius`=0.9747, `combat_reach`=4.05 WHERE `modelid`=29645; -- 29645
+UPDATE `creature_model_info` SET `bounding_radius`=0.9747, `combat_reach`=4.05 WHERE `modelid`=29646; -- 29646
+UPDATE `creature_model_info` SET `bounding_radius`=0.306, `combat_reach`=1.5 WHERE `modelid`=29648; -- 29648
+UPDATE `creature_model_info` SET `bounding_radius`=0.306, `combat_reach`=1.5 WHERE `modelid`=29650; -- 29650
+UPDATE `creature_model_info` SET `bounding_radius`=0.383, `combat_reach`=1.5 WHERE `modelid`=29651; -- 29651
+UPDATE `creature_model_info` SET `bounding_radius`=0.383, `combat_reach`=1.5 WHERE `modelid`=29652; -- 29652
+UPDATE `creature_model_info` SET `bounding_radius`=0.383, `combat_reach`=1.5 WHERE `modelid`=29654; -- 29654
+UPDATE `creature_model_info` SET `bounding_radius`=0.383, `combat_reach`=1.5 WHERE `modelid`=29655; -- 29655
+UPDATE `creature_model_info` SET `bounding_radius`=0.372, `combat_reach`=1.5 WHERE `modelid`=29659; -- 29659
+UPDATE `creature_model_info` SET `bounding_radius`=0.372, `combat_reach`=1.5 WHERE `modelid`=29660; -- 29660
+UPDATE `creature_model_info` SET `bounding_radius`=0.306, `combat_reach`=1.5 WHERE `modelid`=29570; -- 29570
+UPDATE `creature_model_info` SET `bounding_radius`=0.306, `combat_reach`=1.5 WHERE `modelid`=29571; -- 29571
+UPDATE `creature_model_info` SET `bounding_radius`=0.208, `combat_reach`=1.5 WHERE `modelid`=29572; -- 29572
+UPDATE `creature_model_info` SET `bounding_radius`=0.347, `combat_reach`=1.5 WHERE `modelid`=29574; -- 29574
+UPDATE `creature_model_info` SET `bounding_radius`=0.347, `combat_reach`=1.5 WHERE `modelid`=29575; -- 29575
+UPDATE `creature_model_info` SET `bounding_radius`=1, `combat_reach`=1.5 WHERE `modelid`=29576; -- 29576
+UPDATE `creature_model_info` SET `bounding_radius`=1, `combat_reach`=1.5 WHERE `modelid`=29577; -- 29577
+UPDATE `creature_model_info` SET `bounding_radius`=0.372, `combat_reach`=1.5 WHERE `modelid`=29578; -- 29578
+UPDATE `creature_model_info` SET `bounding_radius`=0.372, `combat_reach`=1.5 WHERE `modelid`=29579; -- 29579
+UPDATE `creature_model_info` SET `bounding_radius`=0.383, `combat_reach`=1.5 WHERE `modelid`=29580; -- 29580
+UPDATE `creature_model_info` SET `bounding_radius`=0.383, `combat_reach`=1.5 WHERE `modelid`=29581; -- 29581
+UPDATE `creature_model_info` SET `bounding_radius`=0.9747, `combat_reach`=4.05 WHERE `modelid`=29582; -- 29582
+UPDATE `creature_model_info` SET `bounding_radius`=0.9747, `combat_reach`=4.05 WHERE `modelid`=29583; -- 29583
+UPDATE `creature_model_info` SET `bounding_radius`=0.4596, `combat_reach`=1.8 WHERE `modelid`=29894; -- 29894
+UPDATE `creature_model_info` SET `bounding_radius`=0.347, `combat_reach`=1.5 WHERE `modelid`=29634; -- 29634
+UPDATE `creature_model_info` SET `bounding_radius`=0.347, `combat_reach`=1.5 WHERE `modelid`=29635; -- 29635
+UPDATE `creature_model_info` SET `bounding_radius`=0.306, `combat_reach`=1.5 WHERE `modelid`=29636; -- 29636
+UPDATE `creature_model_info` SET `bounding_radius`=0.208, `combat_reach`=1.5 WHERE `modelid`=29638; -- 29638
+
+UPDATE `creature_template` SET `scale`=1 WHERE `entry` IN (34871, 34869, 34856, 34975, 34970, 34868, 34870, 34977, 34974, 34966, 34979, 34860, 34859, 34861, 34857, 34858);
+
+UPDATE `creature_template` SET `spell1`=68505, `spell2`=62575,`spell3`=68282,`spell4`=62552 WHERE `entry` IN (36558,33322);
diff --git a/sql/updates/world/2014_09_14_04_world_toc5.sql b/sql/updates/world/2014_09_14_04_world_toc5.sql
new file mode 100644
index 00000000000..81975bd08ee
--- /dev/null
+++ b/sql/updates/world/2014_09_14_04_world_toc5.sql
@@ -0,0 +1,32 @@
+DELETE FROM `vehicle_template_accessory` WHERE `entry` IN (35637, 35633, 35768, 34658, 35636, 35638, 35635, 35640, 35641, 35634, 35491);
+INSERT INTO `vehicle_template_accessory` (`entry`, `accessory_entry`, `seat_id`, `minion`, `description`, `summontype`, `summontimer`) VALUES
+(35637, 34705, 0, 0, 'Marshal Jacob Alerius'' Mount - Marshal Jacob Alerius <Grand Champion of Stormwind>', 8, 0),
+(35633, 34702, 0, 0, 'Ambrose Boltspark''s Mount - Ambrose Boltspark', 8, 0),
+(35768, 34701, 0, 0, 'Colosos'' Mount - Colosos', 8, 0),
+(34658, 34657, 0, 0, 'Jaelyne Evensong''s Mount - Jaelyne Evensong', 8, 0),
+(35636, 34703, 0, 0, 'Lana Stouthammer''s Mount - Lana Stouthammer <Grand Champion of Ironforge>', 8, 0),
+
+(35638, 35572, 0, 0, 'Mokra the Skullcrusher''s Mount - Mokra the Skullcrusher <Grand Champion of Orgrimmar>', 8, 0),
+(35635, 35569, 0, 0, 'Eressea Dawnsinger''s Mount - Eressea Dawnsinger', 8, 0),
+(35640, 35571, 0, 0, 'Runok Wildmane''s Mount - Runok Wildmane', 8, 0),
+(35641, 35570, 0, 0, 'Zul''tore''s Mount - Zul''tore', 8, 0),
+(35634, 35617, 0, 0, 'Deathstalker Visceri''s Mount - Deathstalker Visceri', 8, 0),
+
+(35491, 35451, 0, 0, 'Black Knight''s Skeletal Gryphon - The Black Knight', 8, 0);
+
+
+DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (35637, 35633, 35768, 34658, 35636, 35638, 35635, 35640, 35641, 35634, 35491);
+INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES
+(35637, 46598, 0, 0),
+(35633, 46598, 0, 0),
+(35768, 46598, 0, 0),
+(34658, 46598, 0, 0),
+(35636, 46598, 0, 0),
+
+(35638, 46598, 0, 0),
+(35635, 46598, 0, 0),
+(35640, 46598, 0, 0),
+(35641, 46598, 0, 0),
+(35634, 46598, 0, 0),
+
+(35491, 46598, 0, 0);
diff --git a/sql/updates/world/2014_09_15_00_world_misc.sql b/sql/updates/world/2014_09_15_00_world_misc.sql
new file mode 100644
index 00000000000..857441399a1
--- /dev/null
+++ b/sql/updates/world/2014_09_15_00_world_misc.sql
@@ -0,0 +1,85 @@
+SET @CGuid := 129851;
+
+UPDATE `creature_template` SET `AIName`= 'SmartAI',`faction`=21, `unit_flags`=32832 WHERE `entry`=31283;
+UPDATE `creature_template` SET `AIName`= 'SmartAI',`flags_extra`=128 WHERE `entry`=32406;
+UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry`=31290;
+UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry`=31316;
+
+DELETE FROM `creature` WHERE `id` IN(31283,31316,37967,38505);
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+0, 31283, 571, 1, 1, 5826.424, 2029.934, 503.993, 5.951573, 120, 0, 0), -- 31283 (Area: 210)
+(@CGUID+1, 31316, 571, 1, 1, 5894.918, 2027.746, 513.1389, 3.212954, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+2, 31316, 571, 1, 1, 5873.27, 2020.346, 506.469, 2.86509, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+4, 37967, 571, 1, 1, 5699.498, 2143.675, 798.1427, 1.710423, 120, 0, 0), -- 37967 (Area: 210)
+(@CGUID+5, 37967, 571, 1, 1, 5683.006, 2145.111, 798.1452, 1.186824, 120, 0, 0), -- 37967 (Area: 210)
+(@CGUID+6, 37967, 571, 1, 1, 5679.912, 2107.91, 798.1375, 6.230825, 120, 0, 0), -- 37967 (Area: 210)
+(@CGUID+7, 37967, 571, 1, 1, 5691.881, 2090.5, 798.1375, 2.181662, 120, 0, 0), -- 37967 (Area: 210)
+(@CGUID+8, 31316, 571, 1, 1, 5851.897, 2064.396, 504.0805, 4.502924, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+9, 31316, 571, 1, 1, 5869.164, 2064.59, 504.6295, 3.909517, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+10, 38505, 571, 1, 1, 5897.904, 2104.522, 636.1191, 3.206179, 120, 0, 0), -- 38505 (Area: 210)
+(@CGUID+11, 31316, 571, 1, 1, 5890.246, 2049.392, 512.1957, 3.944444, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+12, 31316, 571, 1, 1, 5868.647, 2049.936, 504.2659, 3.490694, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+13, 37967, 571, 1, 1, 5652.406, 2089.361, 798.1375, 1.710423, 120, 0, 0), -- 37967 (Area: 210)
+(@CGUID+14, 31316, 571, 1, 1, 5829.46, 2031.393, 503.99, 1.32645, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+15, 31316, 571, 1, 1, 5831.737, 2024.352, 503.9846, 2.722714, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+16, 31316, 571, 1, 1, 5830.665, 1991.727, 503.9239, 1.727821, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+17, 31316, 571, 1, 1, 5859.231, 1992.497, 505.6942, 2.356147, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+18, 31316, 571, 1, 1, 5879.035, 1999.875, 509.5721, 2.598193, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+19, 31316, 571, 1, 1, 5866.767, 1990.259, 507.4477, 2.698404, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+20, 31316, 571, 1, 1, 5834.902, 2001.664, 503.9163, 1.867513, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+21, 31316, 571, 1, 1, 5922.788, 2040.055, 517.6266, 3.787891, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+22, 31316, 571, 1, 1, 5809.299, 1981.393, 503.9012, 3.176498, 120, 0, 0), -- 31316 (Area: 210)
+(@CGUID+23, 31316, 571, 1, 1, 5881.739, 1963.927, 517.0669, 1.012561, 120, 0, 0); -- 31316 (Area: 210)
+
+DELETE FROM `creature_template_addon` WHERE `entry` IN(31283,32406);
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=32406;
+
+INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES
+(31283, 0, 0, 0, 0, 0, '55667'),
+(32406, 0, 0, 0, 0, 0, '60977 60984');
+
+DELETE FROM `creature_text` WHERE `entry` IN(31283,31290);
+
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(31283, 0, 0, 'Ah, the hand of the Ebon Blade has finally come to claim me. I tremble in fear.', 14, 0, 100, 0, 0, 0, 'Orbaz Bloodbane'),
+(31283, 1, 0, 'Hah! That''s all you''ve got? I''m surprised you even made it to the citadel.', 14, 0, 100, 0, 0, 0, 'Orbaz Bloodbane'),
+(31283, 2, 0, 'The Lich King has given me power beyond your wildest nightmares. Behold!', 14, 0, 100, 0, 0, 0, 'Orbaz Bloodbane'),
+(31283, 3, 0, 'It all ends here.', 14, 0, 100, 0, 0, 0, 'Orbaz Bloodbane'),
+(31283, 4, 0, '%s chuckles knowingly.', 16, 0, 100, 0, 0, 0, 'Orbaz Bloodbane'),
+(31283, 5, 0, 'The Lich King shall extinquish... every... last... one... of you.', 14, 0, 100, 0, 0, 0, 'Orbaz Bloodbane'),
+(31283, 6, 0, 'There you are Darion! I was wondering when you''d crawl forth!', 14, 0, 100, 0, 0, 0, 'Orbaz Bloodbane'),
+(31290, 0, 0, 'Orbaz Bloodbane, self proclaimed hand of the Lich King.', 14, 0, 100, 0, 0, 0, 'Highlord Darion Mograine'),
+(31290, 1, 0, 'Couldn''t wait for me to be out of the way so that you could sieze control?', 14, 0, 100, 0, 0, 0, 'Highlord Darion Mograine'),
+(31290, 2, 0, 'You''ll never have what it takes to lead anything, Orbaz, not even a legion of mindless skeletons.', 14, 0, 100, 0, 0, 0, 'Highlord Darion Mograine'),
+(31290, 3, 0, 'Good riddance.', 14, 0, 100, 0, 0, 0, 'Highlord Darion Mograine');
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(31283,31290,3128300,3129000,3129001,31316);
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(31316,0,0,0,1,0,100,0,0,15000,15000,30000,11,58962,0,0,0,0,0,1,0,0,0,0,0,0,0,'Ebon Blade Reaper - OOC - Cast Summon Death Knight Adept'),
+(31316,0,1,0,11,0,100,0,0,0,0,0,8,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Ebon Blade Reaper - On Spawn - Set Defensive'),
+
+(31283,0,0,0,4,0,100,0,0,0,0,0,80,3128300,2,0,0,0,0,1,0,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - On Agro - Run Script'),
+(31283,0,1,0,0,0,100,0,1500,5000,15000,20000,11,61015,0,0,0,0,0,1,0,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - IC - Cast Empower Runeblade'),
+(31283,0,2,0,9,0,100,0,0,5,9000,15000,11,60186,0,0,0,0,0,7,0,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - On Range - Cast Plague Strike'),
+(31283,0,3,0,0,0,100,0,15000,20000,7000,9000,11,60987,0,0,0,0,0,2,0,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - IC - Cast Summon Ominous Cloud'),
+(31283,0,4,0,2,0,100,1,0,50,0,0,11,58939,0,0,0,0,0,1,0,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - On Less than 50% HP - Cast Summon Darion Morgraine'),
+(31283,0,5,6,6,0,100,1,0,0,0,0,1,5,5000,0,0,0,0,1,0,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - On Death - Say Line 6'),
+(31283,0,6,0,61,0,100,0,0,0,0,0,45,1,1,0,0,0,0,19,31290,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - On Death Set Data (Darion Morgraine)'),
+(31290,0,0,1,54,0,100,0,0,0,0,0,80,3129000,2,0,0,0,0,1,0,0,0,0,0,0,0,'Darion Morgraine - On Just Summoned - Run Script'),
+(31290,0,1,0,61,0,100,0,0,0,0,0,8,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Darion Morgraine - On Just Summoned - Set Agressive'),
+(31290,0,2,0,38,0,100,0,1,1,0,0,80,3129001,2,0,0,0,0,1,0,0,0,0,0,0,0,'Darion Morgraine - On Data Set - Run Script 2'),
+(3129000,9,0,0,0,0,100,0,0,0,0,0,66,0,0,0,0,0,0,19,31283,0,0,0,0,0,0,'Darion Morgraine - Script - Face Orbaz Bloodbane'),
+(3129000,9,1,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Darion Morgraine - Script - Say Line 1'),
+(3129000,9,2,0,0,0,100,0,7000,7000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Darion Morgraine - Script - Say Line 2'),
+(3129000,9,3,0,0,0,100,0,0,0,0,0,49,0,0,0,0,0,0,19,31283,0,0,0,0,0,0,'Darion Morgraine - Script - Attack Orbaz Bloodbane'),
+(3129000,9,4,0,0,0,100,0,7000,7000,0,0,1,6,0,0,0,0,0,19,31283,0,0,0,0,0,0,'Darion Morgraine - Script - Say Line 7 (Orbaz Bloodbane)'),
+(3129000,9,5,0,0,0,100,0,0,0,0,0,101,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Darion Morgraine - Script - Set Home Position'),
+(3129000,9,6,0,0,0,100,0,7000,7000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Darion Morgraine - Script - Say Line 3'),
+(3129001,9,0,0,0,0,100,0,5000,5000,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,'Darion Morgraine - Script 2 - Say Line 4'),
+(3129001,9,1,0,0,0,100,0,10000,10000,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Darion Morgraine - Script 2 - Despawn'),
+(3128300,9,0,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - Script - Say Line 1'),
+(3128300,9,1,0,0,0,100,0,8000,8000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - Script - Say Line 2'),
+(3128300,9,2,0,0,0,100,0,8000,8000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - Script - Say Line 3'),
+(3128300,9,3,0,0,0,100,0,8000,8000,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - Script - Say Line 4'),
+(3128300,9,4,0,0,0,100,0,5000,5000,0,0,1,4,0,0,0,0,0,1,0,0,0,0,0,0,0,'Orbaz Bloodbane <The Hand of Suffering> - Script - Say Line 5');
diff --git a/sql/updates/world/2014_09_15_01_world_gameobject_template.sql b/sql/updates/world/2014_09_15_01_world_gameobject_template.sql
new file mode 100644
index 00000000000..033308dd642
--- /dev/null
+++ b/sql/updates/world/2014_09_15_01_world_gameobject_template.sql
@@ -0,0 +1,2 @@
+--
+UPDATE `gameobject_template` SET `flags`=32 WHERE `entry`=194569; -- Ulduar Teleporter
diff --git a/sql/updates/world/2014_09_15_02_world_misc.sql b/sql/updates/world/2014_09_15_02_world_misc.sql
new file mode 100644
index 00000000000..adcd7b8a9f2
--- /dev/null
+++ b/sql/updates/world/2014_09_15_02_world_misc.sql
@@ -0,0 +1,11 @@
+UPDATE `creature_text` SET `BroadcastTextID`=31261 WHERE `entry`=31283 AND `groupid`=1;
+UPDATE `creature_text` SET `BroadcastTextID`=31962 WHERE `entry`=31283 AND `groupid`=2;
+UPDATE `creature_text` SET `BroadcastTextID`=31963 WHERE `entry`=31283 AND `groupid`=3;
+UPDATE `creature_text` SET `BroadcastTextID`=31966 WHERE `entry`=31283 AND `groupid`=4;
+UPDATE `creature_text` SET `BroadcastTextID`=31967 WHERE `entry`=31283 AND `groupid`=5;
+UPDATE `creature_text` SET `BroadcastTextID`=31964 WHERE `entry`=31283 AND `groupid`=6;
+UPDATE `creature_text` SET `BroadcastTextID`=31259 WHERE `entry`=31283 AND `groupid`=0;
+UPDATE `creature_text` SET `BroadcastTextID`=31975 WHERE `entry`=31290 AND `groupid`=0;
+UPDATE `creature_text` SET `BroadcastTextID`=31977 WHERE `entry`=31290 AND `groupid`=1;
+UPDATE `creature_text` SET `BroadcastTextID`=31978 WHERE `entry`=31290 AND `groupid`=3;
+UPDATE `creature_text` SET `BroadcastTextID`=31983 WHERE `entry`=31290 AND `groupid`=2;
diff --git a/sql/updates/world/2014_09_15_03_world_misc.sql b/sql/updates/world/2014_09_15_03_world_misc.sql
new file mode 100644
index 00000000000..050904b458c
--- /dev/null
+++ b/sql/updates/world/2014_09_15_03_world_misc.sql
@@ -0,0 +1,11 @@
+DELETE FROM `creature` WHERE `id` IN(27685,27534);
+
+UPDATE `creature_text` SET `BroadcastTextID`=31259 WHERE `entry`=31283;
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(27564,27749) AND `source_type`=0 AND `id`=15;
+DELETE FROM `smart_scripts` WHERE `entryorguid` =27725 AND `source_type`=0 AND `id`=1;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(27564, 0, 15, 0, 1, 0, 100, 0, 0, 5000, 0, 10000, 11, 49329, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Alliance Conscript - OOC - Cast Summon Frigid Ghoul Attacker'),
+(27749, 0, 15, 0, 1, 0, 100, 0, 0, 5000, 0, 10000, 11, 49329, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Horde Conscript - OOC - Cast Summon Frigid Ghoul Attacker'),
+(27725, 0, 1, 0, 1, 0, 100, 0, 0, 5000, 5000, 15000, 11, 49068, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Ruby Guardian - OOC - Cast Summon Frigid Ghoul');
diff --git a/sql/updates/world/2014_09_15_04_world_misc.sql b/sql/updates/world/2014_09_15_04_world_misc.sql
new file mode 100644
index 00000000000..78640c6bbcc
--- /dev/null
+++ b/sql/updates/world/2014_09_15_04_world_misc.sql
@@ -0,0 +1,36 @@
+UPDATE `creature_text` SET `BroadcastTextID`=31959 WHERE `entry`=31283 AND `groupid`=0;
+
+DELETE FROM `creature` WHERE `id`=37967 AND `guid` IN(301114,301113,201624,201533,201463,201187,201040,200950,200929,200916,200915,88778,88777,88769,88768,88767,88766,88765,88764,88763,88762,88761,88760,88759,88758,88757,88756,88755,88754,88753,88752);
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`) VALUES
+(301114, 37967, 571, 1, 256, 0, 0, 5685.95, 2306.58, 798.126, 1.83668, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(301113, 37967, 571, 1, 256, 0, 0, 5683.06, 2305.81, 798.126, 1.83689, 120, 0, 0, 1, 0, 2, 0, 0, 0),
+(201624, 37967, 631, 15, 1, 0, 0, -36.6615, 2192.81, 27.9859, 2.56563, 86400, 0, 0, 13033, 0, 0, 0, 0, 0),
+(201533, 37967, 631, 15, 1, 0, 0, -110.885, 2168.82, 30.7375, 1.29154, 86400, 0, 0, 13033, 0, 0, 0, 0, 0),
+(201463, 37967, 631, 15, 1, 0, 0, -80.7847, 2152.99, 30.7375, 1.53589, 86400, 0, 0, 13033, 0, 0, 0, 0, 0),
+(201187, 37967, 631, 15, 1, 0, 0, -21.0608, 2204.75, 30.199, 3.10669, 86400, 0, 0, 13033, 0, 0, 0, 0, 0),
+(201040, 37967, 631, 15, 1, 0, 0, -65.3351, 2154.12, 30.7375, 1.76278, 86400, 0, 0, 13033, 0, 0, 0, 0, 0),
+(200929, 37967, 631, 15, 1, 0, 0, -51.9722, 2168.76, 30.7375, 1.64061, 86400, 0, 0, 13033, 0, 0, 0, 0, 0),
+(200916, 37967, 631, 15, 1, 0, 0, -59.7222, 2188.21, 27.9859, 1.53589, 86400, 0, 0, 13033, 0, 0, 0, 0, 0),
+(200915, 37967, 631, 15, 1, 0, 0, -102.934, 2167.01, 30.7375, 1.43117, 86400, 0, 0, 13033, 0, 0, 0, 0, 0),
+(88752, 37967, 571, 1, 1, 0, 0, 5606.21, 2012.55, 798.125, 0.994838, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88753, 37967, 571, 1, 1, 0, 0, 5636.09, 2104.31, 798.138, 5.61996, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88754, 37967, 571, 1, 1, 0, 0, 5638.31, 1998.9, 798.13, 1.58825, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88755, 37967, 571, 1, 1, 0, 0, 5652.41, 2089.36, 798.138, 1.71042, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88756, 37967, 571, 1, 1, 0, 0, 5669, 2017.95, 798.125, 2.46091, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88757, 37967, 571, 1, 1, 0, 0, 5679.91, 2107.91, 798.138, 6.23082, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88758, 37967, 571, 1, 1, 0, 0, 5683.01, 2145.11, 798.145, 1.18682, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88759, 37967, 571, 1, 1, 0, 0, 5691.88, 2090.5, 798.138, 2.18166, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88760, 37967, 571, 1, 1, 0, 0, 5699.5, 2143.68, 798.143, 1.71042, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88761, 37967, 571, 1, 256, 0, 0, 5606.21, 2012.55, 798.125, 0.994838, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88762, 37967, 571, 1, 256, 0, 0, 5636.09, 2104.31, 798.138, 5.61996, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88763, 37967, 571, 1, 256, 0, 0, 5638.31, 1998.9, 798.13, 1.58825, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88764, 37967, 571, 1, 256, 0, 0, 5652.41, 2089.36, 798.138, 1.71042, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88765, 37967, 571, 1, 256, 0, 0, 5669, 2017.95, 798.125, 2.46091, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88766, 37967, 571, 1, 256, 0, 0, 5679.91, 2107.91, 798.138, 6.23082, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88767, 37967, 571, 1, 256, 0, 0, 5683.01, 2145.11, 798.145, 1.18682, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88768, 37967, 571, 1, 256, 0, 0, 5691.88, 2090.5, 798.138, 2.18166, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88769, 37967, 571, 1, 256, 0, 0, 5699.5, 2143.68, 798.143, 1.71042, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(88777, 37967, 571, 1, 256, 0, 0, 5683.06, 2305.81, 798.126, 1.83689, 120, 0, 0, 1, 0, 2, 0, 0, 0),
+(88778, 37967, 571, 1, 256, 0, 0, 5685.95, 2306.58, 798.126, 1.83668, 120, 0, 0, 1, 0, 0, 0, 0, 0),
+(200950, 37967, 631, 15, 1, 0, 0, -33.0694, 2197.31, 27.9859, 2.1293, 86400, 0, 0, 13033, 0, 0, 0, 0, 0);
+
diff --git a/sql/updates/world/2014_09_16_00_world_achievement_criteria_data.sql b/sql/updates/world/2014_09_16_00_world_achievement_criteria_data.sql
new file mode 100644
index 00000000000..8667fc7e560
--- /dev/null
+++ b/sql/updates/world/2014_09_16_00_world_achievement_criteria_data.sql
@@ -0,0 +1,3 @@
+DELETE FROM `achievement_criteria_data` WHERE `criteria_id` = 7361 AND `type` = 12;
+INSERT INTO `achievement_criteria_data`(`criteria_id`, `type`, `value1`, `value2`, `ScriptName`) VALUES
+(7361, 12, 1, 0, '');
diff --git a/sql/updates/world/2014_09_16_01_world_misc.sql b/sql/updates/world/2014_09_16_01_world_misc.sql
new file mode 100644
index 00000000000..0460f99191e
--- /dev/null
+++ b/sql/updates/world/2014_09_16_01_world_misc.sql
@@ -0,0 +1,33 @@
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN(13,17) AND `SourceEntry`=39246;
+
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(13, 4, 39246, 0, 0, 31, 0, 3, 22105, 0, 0, 0, 0, '', 'Target needs to be Decrepit Clefthoof'),
+(13, 4, 39246, 0, 0, 36, 0, 0, 0, 0, 1, 0, 0, '', 'Target needs to be Decrepit Clefthoof');
+
+UPDATE `spell_dbc` SET `Effect1`=28,`EffectMiscValueB1`=64 WHERE `Id`IN(39240,39241,39245,39247);
+
+UPDATE `creature_template` SET `ainame`='SmartAI', `scriptname`='' WHERE `entry` IN(22482,22038);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(22482,22038) AND `source_type`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN(2248200,2203800) AND `source_type`=9;
+
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(22482, 0, 0, 1, 54, 0, 100, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Mature Bone Sifter - On Just Summoned - Set Passive'),
+(22482, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 80, 2248200, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Mature Bone Sifter - On Just Summoned - Run Script'),
+(22482, 0, 2, 3, 4, 0, 100, 0, 0, 0, 0, 0, 28, 37751, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Mature Bone Sifter - On Agro - Remove Aura - Submerged'),
+(22482, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 37752, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Mature Bone Sifter - On Agro - Cast Stand'),
+(22482, 0, 4, 0, 0, 0, 100, 0, 0, 5000, 3000, 7000, 11, 31747, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Mature Boneshifter <The Bone Emperor> - IC - Cast Poison'),
+(22038, 0, 0, 1, 54, 0, 100, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hai shulud <The Bone Emperor> - On Just Summoned - Set Passive'),
+(22038, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 80, 2203800, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hai shulud <The Bone Emperor> - On Just Summoned - Run Script'),
+(22038, 0, 2, 3, 4, 0, 100, 0, 0, 0, 0, 0, 28, 37751, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hai shulud <The Bone Emperor> - On Agro - Remove Aura - Submerged'),
+(22038, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 37752, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hai shulud <The Bone Emperor> - On Agro - Cast Stand'),
+(22038, 0, 4, 0, 0, 0, 100, 0, 0, 3000, 3000, 5000, 11, 31747, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Hai shulud <The Bone Emperor> - On Agro - Cast Poison'),
+(2248200, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 37751, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Mature Bone Sifter - Script - Cast Cast Submerged'),
+(2248200, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 37989, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Mature Bone Sifter - Script - Cast Tunnel Bore Bone Passive'),
+(2248200, 9, 2, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Mature Bone Sifter - Script - Set Agressive'),
+(2203800, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 37751, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hai shulud <The Bone Emperor> - Script - Cast Cast Submerged'),
+(2203800, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 38885, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hai shulud <The Bone Emperor> - Script - Cast Damaging Tunnel Bore Bone Passive'),
+(2203800, 9, 2, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hai shulud <The Bone Emperor> - Script - Set Agressive');
+
+DELETE FROM `smart_scripts` WHERE `entryorguid`=22105 AND `id`>2;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(22105, 0, 3, 0, 8, 0, 100, 1, 39246, 0, 0, 0, 41, 3000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Decrepit Clefthoof - On Spellhit (Fumping) - Despawn');
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index 3a0d18a0d9e..75fedb5bb57 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -17,7 +17,7 @@
#include "Cell.h"
#include "CellImpl.h"
-#include "Chat.h"
+#include "ChatTextBuilder.h"
#include "CreatureTextMgr.h"
#include "DatabaseEnv.h"
#include "GossipDef.h"
@@ -38,26 +38,6 @@
#include "MoveSplineInit.h"
#include "GameEventMgr.h"
-class BroadcastTextBuilder
-{
- public:
- BroadcastTextBuilder(WorldObject const* obj, ChatMsg msgtype, uint32 id, WorldObject const* target, uint32 gender = GENDER_MALE)
- : _source(obj), _msgType(msgtype), _textId(id), _target(target), _gender(gender) { }
-
- size_t operator()(WorldPacket* data, LocaleConstant locale) const
- {
- BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId);
-
- return ChatHandler::BuildChatPacket(*data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? bct->GetText(locale, _gender) : "", 0, "", locale);
- }
-
- WorldObject const* _source;
- ChatMsg _msgType;
- uint32 _textId;
- WorldObject const* _target;
- uint32 _gender;
-};
-
SmartScript::SmartScript()
{
go = NULL;
@@ -229,7 +209,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
{
if (IsUnit(*itr))
{
- (*itr)->SendPlaySound(e.action.sound.sound, e.action.sound.onlySelf > 0);
+ (*itr)->PlayDirectSound(e.action.sound.sound, e.action.sound.onlySelf ? (*itr)->ToPlayer() : nullptr);
TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_SOUND: target: %s (GuidLow: %u), sound: %u, onlyself: %u",
(*itr)->GetName().c_str(), (*itr)->GetGUIDLow(), e.action.sound.sound, e.action.sound.onlySelf);
}
@@ -759,7 +739,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
me->DoFleeToGetAssistance();
if (e.action.flee.withEmote)
{
- BroadcastTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, BROADCAST_TEXT_FLEE_FOR_ASSIST, NULL, me->getGender());
+ Trinity::BroadcastTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, BROADCAST_TEXT_FLEE_FOR_ASSIST);
sCreatureTextMgr->SendChatPacket(me, builder, CHAT_MSG_MONSTER_EMOTE);
}
TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_FLEE_FOR_ASSIST: Creature %u DoFleeToGetAssistance", me->GetGUIDLow());
@@ -1002,7 +982,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
me->CallForHelp((float)e.action.callHelp.range);
if (e.action.callHelp.withEmote)
{
- BroadcastTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, BROADCAST_TEXT_CALL_FOR_HELP, NULL, me->getGender());
+ Trinity::BroadcastTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, BROADCAST_TEXT_CALL_FOR_HELP);
sCreatureTextMgr->SendChatPacket(me, builder, CHAT_MSG_MONSTER_EMOTE);
}
TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction: SMART_ACTION_CALL_FOR_HELP: Creature %u", me->GetGUIDLow());
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 2574933eb28..90e8d8de672 100644
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -21,7 +21,7 @@
#include "ArenaTeamMgr.h"
#include "Battleground.h"
#include "CellImpl.h"
-#include "Chat.h"
+#include "ChatTextBuilder.h"
#include "Common.h"
#include "DatabaseEnv.h"
#include "DBCEnums.h"
@@ -42,29 +42,6 @@
#include "World.h"
#include "WorldPacket.h"
-namespace Trinity
-{
- class AchievementChatBuilder
- {
- public:
- AchievementChatBuilder(Player const* player, ChatMsg msgType, uint32 textId, uint32 achievementId)
- : _player(player), _msgType(msgType), _textId(textId), _achievementId(achievementId) { }
-
- void operator()(WorldPacket& data, LocaleConstant locale)
- {
- BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId);
-
- ChatHandler::BuildChatPacket(data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _player, _player, bct ? bct->GetText(locale, _player->getGender()) : "", _achievementId);
- }
-
- private:
- Player const* _player;
- ChatMsg _msgType;
- uint32 _textId;
- uint32 _achievementId;
- };
-} // namespace Trinity
-
bool AchievementCriteriaData::IsValid(AchievementCriteriaEntry const* criteria)
{
if (dataType >= MAX_ACHIEVEMENT_CRITERIA_DATA_TYPE)
@@ -661,8 +638,8 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievement)
if (Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildId()))
{
- Trinity::AchievementChatBuilder _builder(GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, achievement->ID);
- Trinity::LocalizedPacketDo<Trinity::AchievementChatBuilder> _localizer(_builder);
+ Trinity::BroadcastTextBuilder _builder(GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, GetPlayer(), achievement->ID);
+ Trinity::LocalizedPacketDo<Trinity::BroadcastTextBuilder> _localizer(_builder);
guild->BroadcastWorker(_localizer, GetPlayer());
}
@@ -679,9 +656,9 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievement)
// if player is in world he can tell his friends about new achievement
else if (GetPlayer()->IsInWorld())
{
- Trinity::AchievementChatBuilder _builder(GetPlayer(), CHAT_MSG_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, achievement->ID);
- Trinity::LocalizedPacketDo<Trinity::AchievementChatBuilder> _localizer(_builder);
- Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::AchievementChatBuilder> > _worker(GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), _localizer);
+ Trinity::BroadcastTextBuilder _builder(GetPlayer(), CHAT_MSG_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, GetPlayer(), achievement->ID);
+ Trinity::LocalizedPacketDo<Trinity::BroadcastTextBuilder> _localizer(_builder);
+ Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::BroadcastTextBuilder> > _worker(GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), _localizer);
GetPlayer()->VisitNearbyWorldObject(sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), _worker);
}
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index 020ff3d397c..88c0035d21d 100644
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -738,7 +738,7 @@ void Battleground::EndBattleground(uint32 winner)
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PVPSTATS_BATTLEGROUND);
stmt->setUInt64(0, battlegroundId);
stmt->setUInt8(1, GetWinner());
- stmt->setUInt8(2, m_BracketId + 1);
+ stmt->setUInt8(2, GetUniqueBracketId());
stmt->setUInt8(3, GetTypeID(true));
CharacterDatabase.Execute(stmt);
}
@@ -1831,3 +1831,8 @@ bool Battleground::CheckAchievementCriteriaMeet(uint32 criteriaId, Player const*
TC_LOG_ERROR("bg.battleground", "Battleground::CheckAchievementCriteriaMeet: No implementation for criteria %u", criteriaId);
return false;
}
+
+uint8 Battleground::GetUniqueBracketId() const
+{
+ return GetMinLevel() / 10;
+}
diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h
index 71bc0be6adb..ab411e3cfc6 100644
--- a/src/server/game/Battlegrounds/Battleground.h
+++ b/src/server/game/Battlegrounds/Battleground.h
@@ -467,6 +467,9 @@ class Battleground
virtual uint32 GetPrematureWinner();
+ // because BattleGrounds with different types and same level range has different m_BracketId
+ uint8 GetUniqueBracketId() const;
+
protected:
// this method is called, when BG cannot spawn its own spirit guide, or something is wrong, It correctly ends Battleground
void EndNow();
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 93ab422d34b..71ab2abeba8 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1898,16 +1898,6 @@ bool WorldObject::CanDetectStealthOf(WorldObject const* obj) const
return true;
}
-void WorldObject::SendPlaySound(uint32 Sound, bool OnlySelf)
-{
- WorldPacket data(SMSG_PLAY_SOUND, 4);
- data << Sound;
- if (OnlySelf && GetTypeId() == TYPEID_PLAYER)
- this->ToPlayer()->GetSession()->SendPacket(&data);
- else
- SendMessageToSet(&data, true); // ToSelf ignored in this case
-}
-
void Object::ForceValuesUpdateAtIndex(uint32 i)
{
_changesMask.SetBit(i);
@@ -1918,149 +1908,6 @@ void Object::ForceValuesUpdateAtIndex(uint32 i)
}
}
-namespace Trinity
-{
- class MonsterChatBuilder
- {
- public:
- MonsterChatBuilder(WorldObject const* obj, ChatMsg msgtype, int32 textId, uint32 language, WorldObject const* target)
- : i_object(obj), i_msgtype(msgtype), i_textId(textId), i_language(Language(language)), i_target(target) { }
- void operator()(WorldPacket& data, LocaleConstant loc_idx)
- {
- char const* text = sObjectMgr->GetTrinityString(i_textId, loc_idx);
- ChatHandler::BuildChatPacket(data, i_msgtype, i_language, i_object, i_target, text, 0, "", loc_idx);
- }
-
- private:
- WorldObject const* i_object;
- ChatMsg i_msgtype;
- int32 i_textId;
- Language i_language;
- WorldObject const* i_target;
- };
-
- class MonsterCustomChatBuilder
- {
- public:
- MonsterCustomChatBuilder(WorldObject const* obj, ChatMsg msgtype, const char* text, uint32 language, WorldObject const* target)
- : i_object(obj), i_msgtype(msgtype), i_text(text), i_language(Language(language)), i_target(target)
- {}
- void operator()(WorldPacket& data, LocaleConstant loc_idx)
- {
- ChatHandler::BuildChatPacket(data, i_msgtype, i_language, i_object, i_target, i_text, 0, "", loc_idx);
- }
-
- private:
- WorldObject const* i_object;
- ChatMsg i_msgtype;
- const char* i_text;
- Language i_language;
- WorldObject const* i_target;
- };
-} // namespace Trinity
-
-void WorldObject::MonsterSay(const char* text, uint32 language, WorldObject const* target)
-{
- CellCoord p = Trinity::ComputeCellCoord(GetPositionX(), GetPositionY());
-
- Cell cell(p);
- cell.SetNoCreate();
-
- Trinity::MonsterCustomChatBuilder say_build(this, CHAT_MSG_MONSTER_SAY, text, language, target);
- Trinity::LocalizedPacketDo<Trinity::MonsterCustomChatBuilder> say_do(say_build);
- Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::MonsterCustomChatBuilder> > say_worker(this, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), say_do);
- TypeContainerVisitor<Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::MonsterCustomChatBuilder> >, WorldTypeMapContainer > message(say_worker);
- cell.Visit(p, message, *GetMap(), *this, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY));
-}
-
-void WorldObject::MonsterSay(int32 textId, uint32 language, WorldObject const* target)
-{
- CellCoord p = Trinity::ComputeCellCoord(GetPositionX(), GetPositionY());
-
- Cell cell(p);
- cell.SetNoCreate();
-
- Trinity::MonsterChatBuilder say_build(this, CHAT_MSG_MONSTER_SAY, textId, language, target);
- Trinity::LocalizedPacketDo<Trinity::MonsterChatBuilder> say_do(say_build);
- Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::MonsterChatBuilder> > say_worker(this, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), say_do);
- TypeContainerVisitor<Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::MonsterChatBuilder> >, WorldTypeMapContainer > message(say_worker);
- cell.Visit(p, message, *GetMap(), *this, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY));
-}
-
-void WorldObject::MonsterYell(const char* text, uint32 language, WorldObject const* target)
-{
- CellCoord p = Trinity::ComputeCellCoord(GetPositionX(), GetPositionY());
-
- Cell cell(p);
- cell.SetNoCreate();
-
- Trinity::MonsterCustomChatBuilder say_build(this, CHAT_MSG_MONSTER_YELL, text, language, target);
- Trinity::LocalizedPacketDo<Trinity::MonsterCustomChatBuilder> say_do(say_build);
- Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::MonsterCustomChatBuilder> > say_worker(this, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_YELL), say_do);
- TypeContainerVisitor<Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::MonsterCustomChatBuilder> >, WorldTypeMapContainer > message(say_worker);
- cell.Visit(p, message, *GetMap(), *this, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_YELL));
-}
-
-void WorldObject::MonsterYell(int32 textId, uint32 language, WorldObject const* target)
-{
- CellCoord p = Trinity::ComputeCellCoord(GetPositionX(), GetPositionY());
-
- Cell cell(p);
- cell.SetNoCreate();
-
- Trinity::MonsterChatBuilder say_build(this, CHAT_MSG_MONSTER_YELL, textId, language, target);
- Trinity::LocalizedPacketDo<Trinity::MonsterChatBuilder> say_do(say_build);
- Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::MonsterChatBuilder> > say_worker(this, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_YELL), say_do);
- TypeContainerVisitor<Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::MonsterChatBuilder> >, WorldTypeMapContainer > message(say_worker);
- cell.Visit(p, message, *GetMap(), *this, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_YELL));
-}
-
-void WorldObject::MonsterTextEmote(const char* text, WorldObject const* target, bool IsBossEmote)
-{
- WorldPacket data;
- ChatHandler::BuildChatPacket(data, IsBossEmote ? CHAT_MSG_RAID_BOSS_EMOTE : CHAT_MSG_MONSTER_EMOTE, LANG_UNIVERSAL,
- this, target, text);
- SendMessageToSetInRange(&data, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), true);
-}
-
-void WorldObject::MonsterTextEmote(int32 textId, WorldObject const* target, bool IsBossEmote)
-{
- CellCoord p = Trinity::ComputeCellCoord(GetPositionX(), GetPositionY());
-
- Cell cell(p);
- cell.SetNoCreate();
-
- Trinity::MonsterChatBuilder say_build(this, IsBossEmote ? CHAT_MSG_RAID_BOSS_EMOTE : CHAT_MSG_MONSTER_EMOTE, textId, LANG_UNIVERSAL, target);
- Trinity::LocalizedPacketDo<Trinity::MonsterChatBuilder> say_do(say_build);
- Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::MonsterChatBuilder> > say_worker(this, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), say_do);
- TypeContainerVisitor<Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::MonsterChatBuilder> >, WorldTypeMapContainer > message(say_worker);
- cell.Visit(p, message, *GetMap(), *this, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE));
-}
-
-void WorldObject::MonsterWhisper(const char* text, Player const* target, bool IsBossWhisper)
-{
- if (!target)
- return;
-
- LocaleConstant loc_idx = target->GetSession()->GetSessionDbLocaleIndex();
- WorldPacket data;
- ChatHandler::BuildChatPacket(data, IsBossWhisper ? CHAT_MSG_RAID_BOSS_WHISPER : CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, this, target, text, 0, "", loc_idx);
- target->GetSession()->SendPacket(&data);
-}
-
-void WorldObject::MonsterWhisper(int32 textId, Player const* target, bool IsBossWhisper)
-{
- if (!target)
- return;
-
- LocaleConstant loc_idx = target->GetSession()->GetSessionDbLocaleIndex();
- char const* text = sObjectMgr->GetTrinityString(textId, loc_idx);
- WorldPacket data;
- ChatHandler::BuildChatPacket(data, IsBossWhisper ? CHAT_MSG_RAID_BOSS_WHISPER : CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, this, target, text, 0, "", loc_idx);
-
- target->GetSession()->SendPacket(&data);
-}
-
void Unit::BuildHeartBeatMsg(WorldPacket* data) const
{
data->Initialize(MSG_MOVE_HEARTBEAT, 32);
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index b23ea4d8dfa..fcbb89408d0 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -627,15 +627,6 @@ class WorldObject : public Object, public WorldLocation
virtual uint8 getLevelForTarget(WorldObject const* /*target*/) const { return 1; }
- void MonsterSay(const char* text, uint32 language, WorldObject const* target);
- void MonsterYell(const char* text, uint32 language, WorldObject const* target);
- void MonsterTextEmote(const char* text, WorldObject const* target, bool IsBossEmote = false);
- void MonsterWhisper(const char* text, Player const* target, bool IsBossWhisper = false);
- void MonsterSay(int32 textId, uint32 language, WorldObject const* target);
- void MonsterYell(int32 textId, uint32 language, WorldObject const* target);
- void MonsterTextEmote(int32 textId, WorldObject const* target, bool IsBossEmote = false);
- void MonsterWhisper(int32 textId, Player const* target, bool IsBossWhisper = false);
-
void PlayDistanceSound(uint32 sound_id, Player* target = NULL);
void PlayDirectSound(uint32 sound_id, Player* target = NULL);
@@ -658,9 +649,6 @@ class WorldObject : public Object, public WorldLocation
FlaggedValuesArray32<int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES> m_serverSideVisibility;
FlaggedValuesArray32<int32, uint32, ServerSideVisibilityType, TOTAL_SERVERSIDE_VISIBILITY_TYPES> m_serverSideVisibilityDetect;
- // Low Level Packets
- void SendPlaySound(uint32 Sound, bool OnlySelf);
-
virtual void SetMap(Map* map);
virtual void ResetMap();
Map* GetMap() const { ASSERT(m_currMap); return m_currMap; }
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 5488f454113..1df449d50c9 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -20530,27 +20530,27 @@ void Player::StopCastingCharm()
}
}
-void Player::Say(const std::string& text, const uint32 language)
+void Player::Say(std::string const& text, Language language, WorldObject const* /*= nullptr*/)
{
std::string _text(text);
sScriptMgr->OnPlayerChat(this, CHAT_MSG_SAY, language, _text);
WorldPacket data;
- ChatHandler::BuildChatPacket(data, CHAT_MSG_SAY, Language(language), this, this, _text);
+ ChatHandler::BuildChatPacket(data, CHAT_MSG_SAY, language, this, this, _text);
SendMessageToSetInRange(&data, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), true);
}
-void Player::Yell(const std::string& text, const uint32 language)
+void Player::Yell(std::string const& text, Language language, WorldObject const* /*= nullptr*/)
{
std::string _text(text);
sScriptMgr->OnPlayerChat(this, CHAT_MSG_YELL, language, _text);
WorldPacket data;
- ChatHandler::BuildChatPacket(data, CHAT_MSG_YELL, Language(language), this, this, _text);
+ ChatHandler::BuildChatPacket(data, CHAT_MSG_YELL, language, this, this, _text);
SendMessageToSetInRange(&data, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_YELL), true);
}
-void Player::TextEmote(const std::string& text)
+void Player::TextEmote(std::string const& text, WorldObject const* /*= nullptr*/, bool /*= false*/)
{
std::string _text(text);
sScriptMgr->OnPlayerChat(this, CHAT_MSG_EMOTE, LANG_UNIVERSAL, _text);
@@ -20560,40 +20560,40 @@ void Player::TextEmote(const std::string& text)
SendMessageToSetInRange(&data, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), true, !GetSession()->HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHAT));
}
-void Player::Whisper(const std::string& text, uint32 language, ObjectGuid receiver)
+void Player::Whisper(std::string const& text, Language language, Player* target, bool /*= false*/)
{
+ ASSERT(target);
+
bool isAddonMessage = language == LANG_ADDON;
if (!isAddonMessage) // if not addon data
language = LANG_UNIVERSAL; // whispers should always be readable
- Player* rPlayer = ObjectAccessor::FindPlayer(receiver);
-
std::string _text(text);
- sScriptMgr->OnPlayerChat(this, CHAT_MSG_WHISPER, language, _text, rPlayer);
+ sScriptMgr->OnPlayerChat(this, CHAT_MSG_WHISPER, language, _text, target);
WorldPacket data;
ChatHandler::BuildChatPacket(data, CHAT_MSG_WHISPER, Language(language), this, this, _text);
- rPlayer->GetSession()->SendPacket(&data);
+ target->GetSession()->SendPacket(&data);
// rest stuff shouldn't happen in case of addon message
if (isAddonMessage)
return;
- ChatHandler::BuildChatPacket(data, CHAT_MSG_WHISPER_INFORM, Language(language), rPlayer, rPlayer, _text);
+ ChatHandler::BuildChatPacket(data, CHAT_MSG_WHISPER_INFORM, Language(language), target, target, _text);
GetSession()->SendPacket(&data);
- if (!isAcceptWhispers() && !IsGameMaster() && !rPlayer->IsGameMaster())
+ if (!isAcceptWhispers() && !IsGameMaster() && !target->IsGameMaster())
{
SetAcceptWhispers(true);
ChatHandler(GetSession()).SendSysMessage(LANG_COMMAND_WHISPERON);
}
// announce afk or dnd message
- if (rPlayer->isAFK())
- ChatHandler(GetSession()).PSendSysMessage(LANG_PLAYER_AFK, rPlayer->GetName().c_str(), rPlayer->autoReplyMsg.c_str());
- else if (rPlayer->isDND())
- ChatHandler(GetSession()).PSendSysMessage(LANG_PLAYER_DND, rPlayer->GetName().c_str(), rPlayer->autoReplyMsg.c_str());
+ if (target->isAFK())
+ ChatHandler(GetSession()).PSendSysMessage(LANG_PLAYER_AFK, target->GetName().c_str(), target->autoReplyMsg.c_str());
+ else if (target->isDND())
+ ChatHandler(GetSession()).PSendSysMessage(LANG_PLAYER_DND, target->GetName().c_str(), target->autoReplyMsg.c_str());
}
Item* Player::GetMItem(uint32 id)
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 92639c0589d..bb3fccaf35e 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1213,13 +1213,13 @@ class Player : public Unit, public GridObject<Player>
uint32 GetPhaseMaskForSpawn() const; // used for proper set phase for DB at GM-mode creature/GO spawn
/// Handles said message in regular chat based on declared language and in config pre-defined Range.
- void Say(std::string const& text, const uint32 language);
+ void Say(std::string const& text, Language language, WorldObject const* = nullptr) override;
/// Handles yelled message in regular chat based on declared language and in config pre-defined Range.
- void Yell(std::string const& text, const uint32 language);
+ void Yell(std::string const& text, Language language, WorldObject const* = nullptr) override;
/// Outputs an universal text which is supposed to be an action.
- void TextEmote(std::string const& text);
+ void TextEmote(std::string const& text, WorldObject const* = nullptr, bool = false) override;
/// Handles whispers from Addons and players based on sender, receiver's guid and language.
- void Whisper(std::string const& text, const uint32 language, ObjectGuid receiver);
+ void Whisper(std::string const& text, Language language, Player* receiver, bool = false) override;
/*********************************************************/
/*** STORAGE SYSTEM ***/
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index e6dc745d4a7..0431a2b2c42 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -23,6 +23,7 @@
#include "Battleground.h"
#include "BattlegroundScore.h"
#include "CellImpl.h"
+#include "ChatTextBuilder.h"
#include "ConditionMgr.h"
#include "CreatureAI.h"
#include "CreatureAIImpl.h"
@@ -458,7 +459,7 @@ bool Unit::IsWithinMeleeRange(const Unit* obj, float dist) const
float dx = GetPositionX() - obj->GetPositionX();
float dy = GetPositionY() - obj->GetPositionY();
- float dz = GetPositionZ() - obj->GetPositionZ();
+ float dz = GetPositionZMinusOffset() - obj->GetPositionZMinusOffset();
float distsq = dx*dx + dy*dy + dz*dz;
float sizefactor = GetMeleeReach() + obj->GetMeleeReach();
@@ -8132,7 +8133,7 @@ bool Unit::HandleProcTriggerSpell(Unit* victim, uint32 damage, AuraEffect* trigg
if (triggerEntry == NULL)
{
// Don't cast unknown spell
- // TC_LOG_ERROR("entities.unit", "Unit::HandleProcTriggerSpell: Spell %u has 0 in EffectTriggered[%d]. Unhandled custom case?", auraSpellInfo->Id, triggeredByAura->GetEffIndex());
+ TC_LOG_ERROR("entities.unit", "Unit::HandleProcTriggerSpell: Spell %u (effIndex: %u) has unknown TriggerSpell %u. Unhandled custom case?", auraSpellInfo->Id, triggeredByAura->GetEffIndex(), trigger_spell_id);
return false;
}
@@ -15494,11 +15495,18 @@ void Unit::SetControlled(bool apply, UnitState state)
{
case UNIT_STATE_STUNNED:
SetStunned(true);
+ // i need to stop fear on stun and root or i will get teleport to destination issue as MVMGEN for fear keeps going on
+ if (HasUnitState(UNIT_STATE_FLEEING))
+ SetFeared(false);
CastStop();
break;
case UNIT_STATE_ROOT:
if (!HasUnitState(UNIT_STATE_STUNNED))
+ {
SetRooted(true);
+ if (HasUnitState(UNIT_STATE_FLEEING))
+ SetFeared(false);
+ }
break;
case UNIT_STATE_CONFUSED:
if (!HasUnitState(UNIT_STATE_STUNNED))
@@ -15558,16 +15566,17 @@ void Unit::SetControlled(bool apply, UnitState state)
ClearUnitState(state);
- if (HasUnitState(UNIT_STATE_STUNNED))
+ // Unit States might have been already cleared but auras still present. I need to check with HasAuraType
+ if (HasAuraType(SPELL_AURA_MOD_STUN))
SetStunned(true);
else
{
- if (HasUnitState(UNIT_STATE_ROOT))
+ if (HasAuraType(SPELL_AURA_MOD_ROOT))
SetRooted(true);
- if (HasUnitState(UNIT_STATE_CONFUSED))
+ if (HasAuraType(SPELL_AURA_MOD_CONFUSE))
SetConfused(true);
- else if (HasUnitState(UNIT_STATE_FLEEING))
+ else if (HasAuraType(SPELL_AURA_MOD_FEAR))
SetFeared(true);
}
}
@@ -17831,3 +17840,84 @@ bool Unit::IsHighestExclusiveAura(Aura const* aura, bool removeOtherAuraApplicat
return true;
}
+
+void Unit::Talk(std::string const& text, ChatMsg msgType, Language language, float textRange, WorldObject const* target)
+{
+ Trinity::CustomChatTextBuilder builder(this, msgType, text, language, target);
+ Trinity::LocalizedPacketDo<Trinity::CustomChatTextBuilder> localizer(builder);
+ Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::CustomChatTextBuilder> > worker(this, textRange, localizer);
+ VisitNearbyWorldObject(textRange, worker);
+}
+
+void Unit::Say(std::string const& text, Language language, WorldObject const* target /*= nullptr*/)
+{
+ Talk(text, CHAT_MSG_MONSTER_SAY, language, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), target);
+}
+
+void Unit::Yell(std::string const& text, Language language, WorldObject const* target /*= nullptr*/)
+{
+ Talk(text, CHAT_MSG_MONSTER_YELL, language, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_YELL), target);
+}
+
+void Unit::TextEmote(std::string const& text, WorldObject const* target /*= nullptr*/, bool isBossEmote /*= false*/)
+{
+ Talk(text, isBossEmote ? CHAT_MSG_RAID_BOSS_EMOTE : CHAT_MSG_MONSTER_EMOTE, LANG_UNIVERSAL, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), target);
+}
+
+void Unit::Whisper(std::string const& text, Language language, Player* target, bool isBossWhisper /*= false*/)
+{
+ if (!target)
+ return;
+
+ LocaleConstant locale = target->GetSession()->GetSessionDbLocaleIndex();
+ WorldPacket data;
+ ChatHandler::BuildChatPacket(data, isBossWhisper ? CHAT_MSG_RAID_BOSS_WHISPER : CHAT_MSG_MONSTER_WHISPER, language, this, target, text, 0, "", locale);
+ target->SendDirectMessage(&data);
+}
+
+void Unit::Talk(uint32 textId, ChatMsg msgType, float textRange, WorldObject const* target)
+{
+ if (!sObjectMgr->GetBroadcastText(textId))
+ {
+ TC_LOG_ERROR("entities.unit", "WorldObject::MonsterText: `broadcast_text` was not %u found", textId);
+ return;
+ }
+
+ Trinity::BroadcastTextBuilder builder(this, msgType, textId, target);
+ Trinity::LocalizedPacketDo<Trinity::BroadcastTextBuilder> localizer(builder);
+ Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::BroadcastTextBuilder> > worker(this, textRange, localizer);
+ VisitNearbyWorldObject(textRange, worker);
+}
+
+void Unit::Say(uint32 textId, WorldObject const* target /*= nullptr*/)
+{
+ Talk(textId, CHAT_MSG_MONSTER_SAY, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), target);
+}
+
+void Unit::Yell(uint32 textId, WorldObject const* target /*= nullptr*/)
+{
+ Talk(textId, CHAT_MSG_MONSTER_YELL, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_YELL), target);
+}
+
+void Unit::TextEmote(uint32 textId, WorldObject const* target /*= nullptr*/, bool isBossEmote /*= false*/)
+{
+ Talk(textId, isBossEmote ? CHAT_MSG_RAID_BOSS_EMOTE : CHAT_MSG_MONSTER_EMOTE, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), target);
+}
+
+void Unit::Whisper(uint32 textId, Player* target, bool isBossWhisper /*= false*/)
+{
+ if (!target)
+ return;
+
+ BroadcastText const* bct = sObjectMgr->GetBroadcastText(textId);
+ if (!bct)
+ {
+ TC_LOG_ERROR("entities.unit", "WorldObject::MonsterWhisper: `broadcast_text` was not %u found", textId);
+ return;
+ }
+
+ LocaleConstant locale = target->GetSession()->GetSessionDbLocaleIndex();
+ WorldPacket data;
+ ChatHandler::BuildChatPacket(data, isBossWhisper ? CHAT_MSG_RAID_BOSS_WHISPER : CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, this, target, bct->GetText(locale, getGender()), 0, "", locale);
+ target->SendDirectMessage(&data);
+}
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 3ffab32492f..d5ecc219be6 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1618,6 +1618,7 @@ class Unit : public WorldObject
bool IsLevitating() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY); }
bool IsWalking() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_WALKING); }
+ bool IsHovering() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_HOVER); }
virtual bool SetWalk(bool enable);
virtual bool SetDisableGravity(bool disable, bool packetOnly = false);
virtual bool SetSwim(bool enable);
@@ -2159,6 +2160,17 @@ class Unit : public WorldObject
int32 GetHighestExclusiveSameEffectSpellGroupValue(AuraEffect const* aurEff, AuraType auraType, bool checkMiscValue = false, int32 miscValue = 0) const;
bool IsHighestExclusiveAura(Aura const* aura, bool removeOtherAuraApplications = false);
+ virtual void Talk(std::string const& text, ChatMsg msgType, Language language, float textRange, WorldObject const* target);
+ virtual void Say(std::string const& text, Language language, WorldObject const* target = nullptr);
+ virtual void Yell(std::string const& text, Language language, WorldObject const* target = nullptr);
+ virtual void TextEmote(std::string const& text, WorldObject const* target = nullptr, bool isBossEmote = false);
+ virtual void Whisper(std::string const& text, Language language, Player* target, bool isBossWhisper = false);
+ void Talk(uint32 textId, ChatMsg msgType, float textRange, WorldObject const* target);
+ void Say(uint32 textId, WorldObject const* target = nullptr);
+ void Yell(uint32 textId, WorldObject const* target = nullptr);
+ void TextEmote(uint32 textId, WorldObject const* target = nullptr, bool isBossEmote = false);
+ void Whisper(uint32 textId, Player* target, bool isBossWhisper = false);
+
protected:
explicit Unit (bool isWorldObject);
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 80b12c6e92c..4625a05ffdf 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -4600,18 +4600,12 @@ void ObjectMgr::LoadScripts(ScriptsType type)
tableName.c_str(), tmp.Talk.ChatType, tmp.id);
continue;
}
- if (!tmp.Talk.TextID)
+ if (!sObjectMgr->GetBroadcastText(uint32(tmp.Talk.TextID)))
{
TC_LOG_ERROR("sql.sql", "Table `%s` has invalid talk text id (dataint = %i) in SCRIPT_COMMAND_TALK for script id %u",
tableName.c_str(), tmp.Talk.TextID, tmp.id);
continue;
}
- if (tmp.Talk.TextID < MIN_DB_SCRIPT_STRING_ID || tmp.Talk.TextID >= MAX_DB_SCRIPT_STRING_ID)
- {
- TC_LOG_ERROR("sql.sql", "Table `%s` has out of range text id (dataint = %i expected %u-%u) in SCRIPT_COMMAND_TALK for script id %u",
- tableName.c_str(), tmp.Talk.TextID, MIN_DB_SCRIPT_STRING_ID, MAX_DB_SCRIPT_STRING_ID, tmp.id);
- continue;
- }
break;
}
@@ -8633,33 +8627,6 @@ uint32 ObjectMgr::GetScriptId(const char *name)
return uint32(itr - _scriptNamesStore.begin());
}
-void ObjectMgr::CheckScripts(ScriptsType type, std::set<int32>& ids)
-{
- ScriptMapMap* scripts = GetScriptsMapByType(type);
- if (!scripts)
- return;
-
- for (ScriptMapMap::const_iterator itrMM = scripts->begin(); itrMM != scripts->end(); ++itrMM)
- {
- for (ScriptMap::const_iterator itrM = itrMM->second.begin(); itrM != itrMM->second.end(); ++itrM)
- {
- switch (itrM->second.command)
- {
- case SCRIPT_COMMAND_TALK:
- {
- if (!GetTrinityStringLocale (itrM->second.Talk.TextID))
- TC_LOG_ERROR("sql.sql", "Table `%s` references invalid text id %u from `db_script_string`, script id: %u.", GetScriptsTableNameByType(type).c_str(), itrM->second.Talk.TextID, itrMM->first);
-
- if (ids.find(itrM->second.Talk.TextID) != ids.end())
- ids.erase(itrM->second.Talk.TextID);
- }
- default:
- break;
- }
- }
- }
-}
-
void ObjectMgr::LoadBroadcastTexts()
{
uint32 oldMSTime = getMSTime();
@@ -8795,23 +8762,6 @@ void ObjectMgr::LoadBroadcastTextLocales()
TC_LOG_INFO("server.loading", ">> Loaded %u broadcast text locales in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
}
-void ObjectMgr::LoadDbScriptStrings()
-{
- LoadTrinityStrings("db_script_string", MIN_DB_SCRIPT_STRING_ID, MAX_DB_SCRIPT_STRING_ID);
-
- std::set<int32> ids;
-
- for (int32 i = MIN_DB_SCRIPT_STRING_ID; i < MAX_DB_SCRIPT_STRING_ID; ++i)
- if (GetTrinityStringLocale(i))
- ids.insert(i);
-
- for (int type = SCRIPTS_FIRST; type < SCRIPTS_LAST; ++type)
- CheckScripts(ScriptsType(type), ids);
-
- for (std::set<int32>::const_iterator itr = ids.begin(); itr != ids.end(); ++itr)
- TC_LOG_ERROR("sql.sql", "Table `db_script_string` has unused string id %u", *itr);
-}
-
CreatureBaseStats const* ObjectMgr::GetCreatureBaseStats(uint8 level, uint8 unitClass)
{
CreatureBaseStatsContainer::const_iterator it = _creatureBaseStatsStore.find(MAKE_PAIR16(level, unitClass));
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index 3960a7b4aed..a26e2959769 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -466,8 +466,6 @@ typedef std::unordered_map<uint32/*(mapid, spawnMode) pair*/, CellObjectGuidsMap
// Trinity string ranges
#define MIN_TRINITY_STRING_ID 1 // 'trinity_string'
#define MAX_TRINITY_STRING_ID 2000000000
-#define MIN_DB_SCRIPT_STRING_ID MAX_TRINITY_STRING_ID // 'db_script_string'
-#define MAX_DB_SCRIPT_STRING_ID 2000010000
// Trinity Trainer Reference start range
#define TRINITY_TRAINER_START_REF 200000
@@ -968,7 +966,6 @@ class ObjectMgr
void LoadBroadcastTextLocales();
bool LoadTrinityStrings(char const* table, int32 min_value, int32 max_value);
bool LoadTrinityStrings() { return LoadTrinityStrings("trinity_string", MIN_TRINITY_STRING_ID, MAX_TRINITY_STRING_ID); }
- void LoadDbScriptStrings();
void LoadCreatureClassLevelStats();
void LoadCreatureLocales();
void LoadCreatureTemplates();
@@ -1386,7 +1383,6 @@ class ObjectMgr
private:
void LoadScripts(ScriptsType type);
- void CheckScripts(ScriptsType type, std::set<int32>& ids);
void LoadQuestRelationsHelper(QuestRelations& map, QuestRelationsReverse* reverseMap, std::string const& table, bool starter, bool go);
void PlayerCreateInfoAddItemHelper(uint32 race_, uint32 class_, uint32 itemId, int32 count);
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index df43db28b73..b33f2364683 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -254,11 +254,11 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
}
if (type == CHAT_MSG_SAY)
- sender->Say(msg, lang);
+ sender->Say(msg, Language(lang));
else if (type == CHAT_MSG_EMOTE)
sender->TextEmote(msg);
else if (type == CHAT_MSG_YELL)
- sender->Yell(msg, lang);
+ sender->Yell(msg, Language(lang));
} break;
case CHAT_MSG_WHISPER:
{
@@ -298,7 +298,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
(HasPermission(rbac::RBAC_PERM_CAN_FILTER_WHISPERS) && !sender->isAcceptWhispers() && !sender->IsInWhisperWhiteList(receiver->GetGUID())))
sender->AddWhisperWhiteList(receiver->GetGUID());
- GetPlayer()->Whisper(msg, lang, receiver->GetGUID());
+ GetPlayer()->Whisper(msg, Language(lang), receiver);
} break;
case CHAT_MSG_PARTY:
case CHAT_MSG_PARTY_LEADER:
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index cb6ca112718..e4e1c9988f1 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -299,7 +299,7 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket& recvData)
if (Quest const* nextQuest = _player->GetNextQuest(guid, quest))
{
// Only send the quest to the player if the conditions are met
- if (_player->CanTakeQuest(nextQuest, true))
+ if (_player->CanTakeQuest(nextQuest, false))
{
if (nextQuest->IsAutoAccept() && _player->CanAddQuest(nextQuest, true))
_player->AddQuestAndCheckCompletion(nextQuest, object);
@@ -321,7 +321,7 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket& recvData)
if (Quest const* nextQuest = _player->GetNextQuest(guid, quest))
{
// Only send the quest to the player if the conditions are met
- if (_player->CanTakeQuest(nextQuest, true))
+ if (_player->CanTakeQuest(nextQuest, false))
{
if (nextQuest->IsAutoAccept() && _player->CanAddQuest(nextQuest, true))
_player->AddQuestAndCheckCompletion(nextQuest, object);
diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
index c1de3aae7cb..814deba78db 100644
--- a/src/server/game/Miscellaneous/Language.h
+++ b/src/server/game/Miscellaneous/Language.h
@@ -1194,7 +1194,6 @@ enum TrinityStrings
LANG_NPCINFO_FLAGS_EXTRA = 11009
// NOT RESERVED IDS 12000-1999999999
- // `db_script_string` table index 2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)
// For other tables maybe 2000010000-2147483647 (max index)
};
#endif
diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp
index e7a5fb77c6a..db7c26fe5cb 100644
--- a/src/server/game/Scripting/MapScripts.cpp
+++ b/src/server/game/Scripting/MapScripts.cpp
@@ -373,83 +373,49 @@ void Map::ScriptsProcess()
switch (step.script->command)
{
case SCRIPT_COMMAND_TALK:
+ {
if (step.script->Talk.ChatType > CHAT_TYPE_WHISPER && step.script->Talk.ChatType != CHAT_MSG_RAID_BOSS_WHISPER)
{
TC_LOG_ERROR("scripts", "%s invalid chat type (%u) specified, skipping.", step.script->GetDebugInfo().c_str(), step.script->Talk.ChatType);
break;
}
- if (step.script->Talk.Flags & SF_TALK_USE_PLAYER)
- {
- if (Player* player = _GetScriptPlayerSourceOrTarget(source, target, step.script))
- {
- LocaleConstant loc_idx = player->GetSession()->GetSessionDbLocaleIndex();
- std::string text(sObjectMgr->GetTrinityString(step.script->Talk.TextID, loc_idx));
+ Unit* source = nullptr;
- switch (step.script->Talk.ChatType)
- {
- case CHAT_TYPE_SAY:
- player->Say(text, LANG_UNIVERSAL);
- break;
- case CHAT_TYPE_YELL:
- player->Yell(text, LANG_UNIVERSAL);
- break;
- case CHAT_TYPE_TEXT_EMOTE:
- case CHAT_TYPE_BOSS_EMOTE:
- player->TextEmote(text);
- break;
- case CHAT_TYPE_WHISPER:
- case CHAT_MSG_RAID_BOSS_WHISPER:
- {
- ObjectGuid targetGUID = target ? target->GetGUID() : ObjectGuid::Empty;
- if (!targetGUID || !targetGUID.IsPlayer())
- TC_LOG_ERROR("scripts", "%s attempt to whisper to non-player unit, skipping.", step.script->GetDebugInfo().c_str());
- else
- player->Whisper(text, LANG_UNIVERSAL, targetGUID);
- break;
- }
- default:
- break; // must be already checked at load
- }
- }
- }
+ if (step.script->Talk.Flags & SF_TALK_USE_PLAYER)
+ source = _GetScriptPlayerSourceOrTarget(source, target, step.script);
else
+ source = _GetScriptCreatureSourceOrTarget(source, target, step.script);
+
+ if (source)
{
- // Source or target must be Creature.
- if (Creature* cSource = _GetScriptCreatureSourceOrTarget(source, target, step.script))
+ switch (step.script->Talk.ChatType)
{
- ObjectGuid targetGUID = target ? target->GetGUID() : ObjectGuid::Empty;
- switch (step.script->Talk.ChatType)
+ case CHAT_TYPE_SAY:
+ source->Say(step.script->Talk.TextID, target);
+ break;
+ case CHAT_TYPE_YELL:
+ source->Yell(step.script->Talk.TextID, target);
+ break;
+ case CHAT_TYPE_TEXT_EMOTE:
+ case CHAT_TYPE_BOSS_EMOTE:
+ source->TextEmote(step.script->Talk.TextID, target, step.script->Talk.ChatType == CHAT_TYPE_BOSS_EMOTE);
+ break;
+ case CHAT_TYPE_WHISPER:
+ case CHAT_MSG_RAID_BOSS_WHISPER:
{
- case CHAT_TYPE_SAY:
- cSource->MonsterSay(step.script->Talk.TextID, LANG_UNIVERSAL, target);
- break;
- case CHAT_TYPE_YELL:
- cSource->MonsterYell(step.script->Talk.TextID, LANG_UNIVERSAL, target);
- break;
- case CHAT_TYPE_TEXT_EMOTE:
- cSource->MonsterTextEmote(step.script->Talk.TextID, target);
- break;
- case CHAT_TYPE_BOSS_EMOTE:
- cSource->MonsterTextEmote(step.script->Talk.TextID, target, true);
- break;
- case CHAT_TYPE_WHISPER:
- if (!targetGUID || !targetGUID.IsPlayer())
- TC_LOG_ERROR("scripts", "%s attempt to whisper to non-player unit, skipping.", step.script->GetDebugInfo().c_str());
- else
- cSource->MonsterWhisper(step.script->Talk.TextID, target->ToPlayer());
- break;
- case CHAT_MSG_RAID_BOSS_WHISPER:
- if (!targetGUID || !targetGUID.IsPlayer())
- TC_LOG_ERROR("scripts", "%s attempt to raidbosswhisper to non-player unit, skipping.", step.script->GetDebugInfo().c_str());
- else
- cSource->MonsterWhisper(step.script->Talk.TextID, target->ToPlayer(), true);
- break;
- default:
- break; // must be already checked at load
+ Player* receiver = target ? target->ToPlayer() : nullptr;
+ if (!receiver)
+ TC_LOG_ERROR("scripts", "%s attempt to whisper to non-player unit, skipping.", step.script->GetDebugInfo().c_str());
+ else
+ source->Whisper(step.script->Talk.TextID, receiver, step.script->Talk.ChatType == CHAT_MSG_RAID_BOSS_WHISPER);
+ break;
}
+ default:
+ break; // must be already checked at load
}
}
break;
+ }
case SCRIPT_COMMAND_EMOTE:
// Source or target must be Creature.
diff --git a/src/server/game/Server/Protocol/PacketLog.cpp b/src/server/game/Server/Protocol/PacketLog.cpp
index 0d5168cc5a9..0a085ccc565 100644
--- a/src/server/game/Server/Protocol/PacketLog.cpp
+++ b/src/server/game/Server/Protocol/PacketLog.cpp
@@ -93,7 +93,8 @@ void PacketLog::Initialize()
header.SniffStartTicks = getMSTime();
header.OptionalDataSize = 0;
- fwrite(&header, sizeof(header), 1, _file);
+ if (CanLogPacket())
+ fwrite(&header, sizeof(header), 1, _file);
}
}
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index c9e108af8a2..8cd1cb38fcd 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -3797,7 +3797,7 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)
if (m_caster->getGender() > 0)
gender = "her";
sprintf(buf, "%s rubs %s [Decahedral Dwarven Dice] between %s hands and rolls. One %u and one %u.", m_caster->GetName().c_str(), gender, gender, urand(1, 10), urand(1, 10));
- m_caster->MonsterTextEmote(buf, NULL);
+ m_caster->TextEmote(buf);
break;
}
// Roll 'dem Bones - Worn Troll Dice
@@ -3808,7 +3808,7 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex)
if (m_caster->getGender() > 0)
gender = "her";
sprintf(buf, "%s causually tosses %s [Worn Troll Dice]. One %u and one %u.", m_caster->GetName().c_str(), gender, urand(1, 6), urand(1, 6));
- m_caster->MonsterTextEmote(buf, NULL);
+ m_caster->TextEmote(buf);
break;
}
// Death Knight Initiate Visual
@@ -5781,14 +5781,18 @@ void Spell::EffectPlaySound(SpellEffIndex effIndex)
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
return;
- if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
+ if (!unitTarget)
+ return;
+
+ Player* player = unitTarget->ToPlayer();
+ if (!player)
return;
switch (m_spellInfo->Id)
{
case 58730: // Restricted Flight Area
case 58600: // Restricted Flight Area
- unitTarget->ToPlayer()->GetSession()->SendNotification(LANG_ZONE_NOFLYZONE);
+ player->GetSession()->SendNotification(LANG_ZONE_NOFLYZONE);
break;
default:
break;
@@ -5802,9 +5806,7 @@ void Spell::EffectPlaySound(SpellEffIndex effIndex)
return;
}
- WorldPacket data(SMSG_PLAY_SOUND, 4);
- data << uint32(soundId);
- unitTarget->ToPlayer()->GetSession()->SendPacket(&data);
+ player->PlayDirectSound(soundId, player);
}
void Spell::EffectRemoveAura(SpellEffIndex effIndex)
diff --git a/src/server/game/Texts/ChatTextBuilder.h b/src/server/game/Texts/ChatTextBuilder.h
new file mode 100644
index 00000000000..72f80bb07a3
--- /dev/null
+++ b/src/server/game/Texts/ChatTextBuilder.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __CHATTEXT_BUILDER_H
+#define __CHATTEXT_BUILDER_H
+
+#include "Chat.h"
+#include "ObjectMgr.h"
+
+namespace Trinity
+{
+ class BroadcastTextBuilder
+ {
+ public:
+ BroadcastTextBuilder(Unit const* obj, ChatMsg msgType, uint32 textId, WorldObject const* target = nullptr, uint32 achievementId = 0)
+ : _source(obj), _msgType(msgType), _textId(textId), _target(target), _achievementId(achievementId) { }
+
+ void operator()(WorldPacket& data, LocaleConstant locale)
+ {
+ BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId);
+ ChatHandler::BuildChatPacket(data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? bct->GetText(locale, _source->getGender()) : "", _achievementId, "", locale);
+ }
+
+ size_t operator()(WorldPacket* data, LocaleConstant locale) const
+ {
+ BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId);
+ return ChatHandler::BuildChatPacket(*data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? bct->GetText(locale, _source->getGender()) : "", _achievementId, "", locale);
+ }
+
+ private:
+ Unit const* _source;
+ ChatMsg _msgType;
+ uint32 _textId;
+ WorldObject const* _target;
+ uint32 _achievementId;
+ };
+
+ class CustomChatTextBuilder
+ {
+ public:
+ CustomChatTextBuilder(WorldObject const* obj, ChatMsg msgType, std::string const& text, Language language = LANG_UNIVERSAL, WorldObject const* target = nullptr)
+ : _source(obj), _msgType(msgType), _text(text), _language(language), _target(target) { }
+
+ void operator()(WorldPacket& data, LocaleConstant locale)
+ {
+ ChatHandler::BuildChatPacket(data, _msgType, _language, _source, _target, _text, 0, "", locale);
+ }
+
+ private:
+ WorldObject const* _source;
+ ChatMsg _msgType;
+ std::string _text;
+ Language _language;
+ WorldObject const* _target;
+ };
+}
+// namespace Trinity
+
+#endif // __CHATTEXT_BUILDER_H
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 4a7742aed5b..a34362ddacc 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -1702,9 +1702,6 @@ void World::SetInitialWorldSettings()
sObjectMgr->LoadEventScripts(); // must be after load Creature/Gameobject(Template/Data)
sObjectMgr->LoadWaypointScripts();
- TC_LOG_INFO("server.loading", "Loading Scripts text locales..."); // must be after Load*Scripts calls
- sObjectMgr->LoadDbScriptStrings();
-
TC_LOG_INFO("server.loading", "Loading spell script names...");
sObjectMgr->LoadSpellScriptNames();
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 31ceeaf460d..8e720e9faba 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -2266,7 +2266,7 @@ public:
// Get the args that we might have (up to 2)
char const* arg1 = strtok((char*)args, " ");
char const* arg2 = strtok(NULL, " ");
-
+
// Analyze them to see if we got either a playerName or duration or both
if (arg1)
{
@@ -2452,7 +2452,7 @@ public:
}
WorldPacket data(SMSG_PLAY_SOUND, 4);
- data << uint32(soundId) << handler->GetSession()->GetPlayer()->GetGUID();
+ data << uint32(soundId);
sWorld->SendGlobalMessage(&data);
handler->PSendSysMessage(LANG_COMMAND_PLAYED_TO_ALL, soundId);
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp
index 5f3f82cf1db..5f4c8d0dfd4 100644
--- a/src/server/scripts/Commands/cs_npc.cpp
+++ b/src/server/scripts/Commands/cs_npc.cpp
@@ -761,8 +761,8 @@ public:
handler->PSendSysMessage(npcFlagTexts[i].Name, npcFlagTexts[i].Value);
handler->PSendSysMessage(LANG_NPCINFO_MECHANIC_IMMUNE, mechanicImmuneMask);
- for (uint8 i = 0; i < MAX_MECHANIC; ++i)
- if ((mechanicImmuneMask << 1) & mechanicImmunes[i].Value)
+ for (uint8 i = 1; i < MAX_MECHANIC; ++i)
+ if (mechanicImmuneMask & (1 << (mechanicImmunes[i].Value - 1)))
handler->PSendSysMessage("%s (0x%X)", mechanicImmunes[i].Name, mechanicImmunes[i].Value);
return true;
@@ -1222,7 +1222,7 @@ public:
return false;
}
- creature->MonsterSay(args, LANG_UNIVERSAL, NULL);
+ creature->Say(args, LANG_UNIVERSAL);
// make some emotes
char lastchar = args[strlen(args) - 1];
@@ -1251,7 +1251,7 @@ public:
return false;
}
- creature->MonsterTextEmote(args, 0);
+ creature->TextEmote(args);
return true;
}
@@ -1297,14 +1297,29 @@ public:
static bool HandleNpcWhisperCommand(ChatHandler* handler, char const* args)
{
if (!*args)
+ {
+ handler->SendSysMessage(LANG_CMD_SYNTAX);
+ handler->SetSentErrorMessage(true);
return false;
+ }
char* receiver_str = strtok((char*)args, " ");
char* text = strtok(NULL, "");
+ if (!receiver_str || !text)
+ {
+ handler->SendSysMessage(LANG_CMD_SYNTAX);
+ handler->SetSentErrorMessage(true);
+ return false;
+ }
+
Creature* creature = handler->getSelectedCreature();
- if (!creature || !receiver_str || !text)
+ if (!creature)
+ {
+ handler->SendSysMessage(LANG_SELECT_CREATURE);
+ handler->SetSentErrorMessage(true);
return false;
+ }
ObjectGuid receiver_guid(HIGHGUID_PLAYER, uint32(atol(receiver_str)));
@@ -1313,14 +1328,18 @@ public:
if (handler->HasLowerSecurity(receiver, ObjectGuid::Empty))
return false;
- creature->MonsterWhisper(text, receiver);
+ creature->Whisper(text, LANG_UNIVERSAL, receiver);
return true;
}
static bool HandleNpcYellCommand(ChatHandler* handler, char const* args)
{
if (!*args)
+ {
+ handler->SendSysMessage(LANG_CMD_SYNTAX);
+ handler->SetSentErrorMessage(true);
return false;
+ }
Creature* creature = handler->getSelectedCreature();
if (!creature)
@@ -1330,7 +1349,7 @@ public:
return false;
}
- creature->MonsterYell(args, LANG_UNIVERSAL, NULL);
+ creature->Yell(args, LANG_UNIVERSAL);
// make an emote
creature->HandleEmoteCommand(EMOTE_ONESHOT_SHOUT);
diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp
index 70aacbfc227..5f061fab595 100644
--- a/src/server/scripts/Commands/cs_reload.cpp
+++ b/src/server/scripts/Commands/cs_reload.cpp
@@ -88,7 +88,6 @@ public:
{ "creature_queststarter", rbac::RBAC_PERM_COMMAND_RELOAD_CREATURE_QUESTSTARTER, true, &HandleReloadCreatureQuestStarterCommand, "", NULL },
{ "creature_summon_groups", rbac::RBAC_PERM_COMMAND_RELOAD_CREATURE_SUMMON_GROUPS, true, &HandleReloadCreatureSummonGroupsCommand, "", NULL },
{ "creature_template", rbac::RBAC_PERM_COMMAND_RELOAD_CREATURE_TEMPLATE, true, &HandleReloadCreatureTemplateCommand, "", NULL },
- //{ "db_script_string", rbac::RBAC_PERM_COMMAND_RELOAD_, true, &HandleReloadDbScriptStringCommand, "", NULL },
{ "disables", rbac::RBAC_PERM_COMMAND_RELOAD_DISABLES, true, &HandleReloadDisablesCommand, "", NULL },
{ "disenchant_loot_template", rbac::RBAC_PERM_COMMAND_RELOAD_DISENCHANT_LOOT_TEMPLATE, true, &HandleReloadLootTemplatesDisenchantCommand, "", NULL },
{ "event_scripts", rbac::RBAC_PERM_COMMAND_RELOAD_EVENT_SCRIPTS, true, &HandleReloadEventScriptsCommand, "", NULL },
@@ -266,7 +265,6 @@ public:
HandleReloadEventScriptsCommand(handler, "a");
HandleReloadSpellScriptsCommand(handler, "a");
handler->SendGlobalGMSysMessage("DB tables `*_scripts` reloaded.");
- HandleReloadDbScriptStringCommand(handler, "a");
HandleReloadWpScriptsCommand(handler, "a");
HandleReloadWpCommand(handler, "a");
return true;
@@ -960,14 +958,6 @@ public:
return true;
}
- static bool HandleReloadDbScriptStringCommand(ChatHandler* handler, const char* /*args*/)
- {
- TC_LOG_INFO("misc", "Re-Loading Script strings from `db_script_string`...");
- sObjectMgr->LoadDbScriptStrings();
- handler->SendGlobalGMSysMessage("DB table `db_script_string` reloaded.");
- return true;
- }
-
static bool HandleReloadGameGraveyardZoneCommand(ChatHandler* handler, const char* /*args*/)
{
TC_LOG_INFO("misc", "Re-Loading Graveyard-zone links...");
diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp
index bb5b6554ebc..9b2667148a6 100644
--- a/src/server/scripts/Commands/cs_wp.cpp
+++ b/src/server/scripts/Commands/cs_wp.cpp
@@ -214,7 +214,7 @@ public:
target->LoadPath(pathid);
target->SetDefaultMovementType(WAYPOINT_MOTION_TYPE);
target->GetMotionMaster()->Initialize();
- target->MonsterSay("Path loaded.", LANG_UNIVERSAL, NULL);
+ target->Say("Path loaded.", LANG_UNIVERSAL);
return true;
}
@@ -267,7 +267,7 @@ public:
target->SetDefaultMovementType(IDLE_MOTION_TYPE);
target->GetMotionMaster()->MoveTargetedHome();
target->GetMotionMaster()->Initialize();
- target->MonsterSay("Path unloaded.", LANG_UNIVERSAL, NULL);
+ target->Say("Path unloaded.", LANG_UNIVERSAL);
return true;
}
diff --git a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
index 4b899235dd1..d7667b37e87 100644
--- a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
+++ b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
@@ -28,7 +28,6 @@ EndScriptData */
#include "deadmines.h"
#include "TemporarySummon.h"
#include "WorldPacket.h"
-#include "Opcodes.h"
enum Sounds
{
@@ -93,9 +92,9 @@ class instance_deadmines : public InstanceMapScript
case CANNON_GUNPOWDER_USED:
CannonBlast_Timer = DATA_CANNON_BLAST_TIMER;
// it's a hack - Mr. Smite should do that but his too far away
- pIronCladDoor->SetName("Mr. Smite");
- pIronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM1, LANG_UNIVERSAL, NULL);
- DoPlaySound(pIronCladDoor, SOUND_MR_SMITE_ALARM1);
+ //pIronCladDoor->SetName("Mr. Smite");
+ //pIronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM1, LANG_UNIVERSAL, NULL);
+ pIronCladDoor->PlayDirectSound(SOUND_MR_SMITE_ALARM1);
State = CANNON_BLAST_INITIATED;
break;
case CANNON_BLAST_INITIATED:
@@ -106,8 +105,8 @@ class instance_deadmines : public InstanceMapScript
ShootCannon();
BlastOutDoor();
LeverStucked();
- pIronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM2, LANG_UNIVERSAL, NULL);
- DoPlaySound(pIronCladDoor, SOUND_MR_SMITE_ALARM2);
+ //pIronCladDoor->MonsterYell(SAY_MR_SMITE_ALARM2, LANG_UNIVERSAL, NULL);
+ pIronCladDoor->PlayDirectSound(SOUND_MR_SMITE_ALARM2);
State = PIRATES_ATTACK;
} else CannonBlast_Timer -= diff;
break;
@@ -162,7 +161,7 @@ class instance_deadmines : public InstanceMapScript
if (GameObject* pDefiasCannon = instance->GetGameObject(DefiasCannonGUID))
{
pDefiasCannon->SetGoState(GO_STATE_ACTIVE);
- DoPlaySound(pDefiasCannon, SOUND_CANNONFIRE);
+ pDefiasCannon->PlayDirectSound(SOUND_CANNONFIRE);
}
}
@@ -171,7 +170,7 @@ class instance_deadmines : public InstanceMapScript
if (GameObject* pIronCladDoor = instance->GetGameObject(IronCladDoorGUID))
{
pIronCladDoor->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
- DoPlaySound(pIronCladDoor, SOUND_DESTROYDOOR);
+ pIronCladDoor->PlayDirectSound(SOUND_DESTROYDOOR);
}
}
@@ -230,13 +229,6 @@ class instance_deadmines : public InstanceMapScript
return ObjectGuid::Empty;
}
-
- void DoPlaySound(GameObject* unit, uint32 sound)
- {
- WorldPacket data(SMSG_PLAY_SOUND, 4);
- data << uint32(sound);
- unit->SendMessageToSet(&data, false);
- }
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
index dc160c4167d..159035c6eb3 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
@@ -560,25 +560,25 @@ public:
{
case 0: return 9999999;
case 1:
- me->MonsterYell(SAY_DIALOG_MEDIVH_1, LANG_UNIVERSAL, NULL);
+ me->Yell(SAY_DIALOG_MEDIVH_1, LANG_UNIVERSAL);
return 10000;
case 2:
if (arca)
- arca->MonsterYell(SAY_DIALOG_ARCANAGOS_2, LANG_UNIVERSAL, NULL);
+ arca->Yell(SAY_DIALOG_ARCANAGOS_2, LANG_UNIVERSAL);
return 20000;
case 3:
- me->MonsterYell(SAY_DIALOG_MEDIVH_3, LANG_UNIVERSAL, NULL);
+ me->Yell(SAY_DIALOG_MEDIVH_3, LANG_UNIVERSAL);
return 10000;
case 4:
if (arca)
- arca->MonsterYell(SAY_DIALOG_ARCANAGOS_4, LANG_UNIVERSAL, NULL);
+ arca->Yell(SAY_DIALOG_ARCANAGOS_4, LANG_UNIVERSAL);
return 20000;
case 5:
- me->MonsterYell(SAY_DIALOG_MEDIVH_5, LANG_UNIVERSAL, NULL);
+ me->Yell(SAY_DIALOG_MEDIVH_5, LANG_UNIVERSAL);
return 20000;
case 6:
if (arca)
- arca->MonsterYell(SAY_DIALOG_ARCANAGOS_6, LANG_UNIVERSAL, NULL);
+ arca->Yell(SAY_DIALOG_ARCANAGOS_6, LANG_UNIVERSAL);
return 10000;
case 7:
FireArcanagosTimer = 500;
@@ -588,7 +588,7 @@ public:
DoCast(me, SPELL_MANA_SHIELD);
return 10000;
case 9:
- me->MonsterTextEmote(EMOTE_DIALOG_MEDIVH_7, NULL, false);
+ me->TextEmote(EMOTE_DIALOG_MEDIVH_7);
return 10000;
case 10:
if (arca)
@@ -596,7 +596,7 @@ public:
return 1000;
case 11:
if (arca)
- arca->MonsterYell(SAY_DIALOG_ARCANAGOS_8, LANG_UNIVERSAL, NULL);
+ arca->Yell(SAY_DIALOG_ARCANAGOS_8, LANG_UNIVERSAL);
return 5000;
case 12:
if (arca)
@@ -608,7 +608,7 @@ public:
}
return 10000;
case 13:
- me->MonsterYell(SAY_DIALOG_MEDIVH_9, LANG_UNIVERSAL, NULL);
+ me->Yell(SAY_DIALOG_MEDIVH_9, LANG_UNIVERSAL);
return 10000;
case 14:
me->SetVisible(false);
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
index 347cd2cfab2..58165df48ef 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
@@ -352,7 +352,7 @@ public:
Creature* speaker = DoSpawnCreature(HELPER, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 1000);
if (speaker)
speaker->CastSpell(speaker, SPELL_HEAD_SPEAKS, false);
- me->MonsterTextEmote(EMOTE_LAUGHS, NULL);
+ me->TextEmote(EMOTE_LAUGHS);
}
else laugh -= diff;
}
@@ -668,14 +668,14 @@ public:
if (count < 3)
{
if (player)
- player->Say(Text[count], 0);
+ player->Say(Text[count], LANG_UNIVERSAL);
}
else
{
DoCast(me, SPELL_RHYME_BIG);
if (player)
{
- player->Say(Text[count], 0);
+ player->Say(Text[count], LANG_UNIVERSAL);
player->HandleEmoteCommand(ANIM_EMOTE_SHOUT);
}
wp_reached = true;
@@ -733,7 +733,7 @@ public:
if (laugh <= diff)
{
laugh = urand(11000, 22000);
- me->MonsterTextEmote(EMOTE_LAUGHS, NULL);
+ me->TextEmote(EMOTE_LAUGHS);
DoPlaySoundToSet(me, RandomLaugh[rand32() % 3]);
}
else laugh -= diff;
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp
index dcb212eead8..f5b1dc34062 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp
@@ -89,6 +89,7 @@ public:
case EVENT_BLAST_WAVE:
DoCast(me, SPELL_BLAST_WAVE);
events.ScheduleEvent(EVENT_BLAST_WAVE, 12000);
+ break;
case EVENT_FRENZY:
DoCast(me, SPELL_FRENZY);
Talk(EMOTE_FRENZY);
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
index c8354bde428..f88c9c6159e 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp
@@ -766,7 +766,7 @@ public:
}
else
{
- me->MonsterTextEmote(EMOTE_UNABLE_TO_FIND, NULL);
+ me->TextEmote(EMOTE_UNABLE_TO_FIND);
EnterEvadeMode();
return;
}
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
index c33ad16f265..55f7af71253 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
@@ -306,7 +306,7 @@ class boss_hexlord_malacrass : public CreatureScript
instance->SetData(DATA_HEXLORDEVENT, IN_PROGRESS);
DoZoneInCombat();
- me->MonsterYell(YELL_AGGRO, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_AGGRO, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_AGGRO);
for (uint8 i = 0; i < 4; ++i)
@@ -327,11 +327,11 @@ class boss_hexlord_malacrass : public CreatureScript
switch (urand(0, 1))
{
case 0:
- me->MonsterYell(YELL_KILL_ONE, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_KILL_ONE, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_KILL_ONE);
break;
case 1:
- me->MonsterYell(YELL_KILL_TWO, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_KILL_TWO, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_KILL_TWO);
break;
}
@@ -341,7 +341,7 @@ class boss_hexlord_malacrass : public CreatureScript
{
instance->SetData(DATA_HEXLORDEVENT, DONE);
- me->MonsterYell(YELL_DEATH, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_DEATH, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_DEATH);
for (uint8 i = 0; i < 4; ++i)
@@ -415,7 +415,7 @@ class boss_hexlord_malacrass : public CreatureScript
if (DrainPower_Timer <= diff)
{
DoCast(me, SPELL_DRAIN_POWER, true);
- me->MonsterYell(YELL_DRAIN_POWER, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_DRAIN_POWER, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_DRAIN_POWER);
DrainPower_Timer = urand(40000, 55000); // must cast in 60 sec, or buff/debuff will disappear
} else DrainPower_Timer -= diff;
@@ -427,7 +427,7 @@ class boss_hexlord_malacrass : public CreatureScript
else
{
DoCast(me, SPELL_SPIRIT_BOLTS, false);
- me->MonsterYell(YELL_SPIRIT_BOLTS, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_SPIRIT_BOLTS, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_SPIRIT_BOLTS);
SpiritBolts_Timer = 40000;
SiphonSoul_Timer = 10000; // ready to drain
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
index c9c028021f1..279ca60a484 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
@@ -227,7 +227,7 @@ class boss_nalorakk : public CreatureScript
case 0:
if (me->IsWithinDistInMap(who, 50))
{
- me->MonsterYell(YELL_NALORAKK_WAVE1, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_NALORAKK_WAVE1, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_NALORAKK_WAVE1);
(*me).GetMotionMaster()->MovePoint(1, NalorakkWay[1][0], NalorakkWay[1][1], NalorakkWay[1][2]);
@@ -240,7 +240,7 @@ class boss_nalorakk : public CreatureScript
case 2:
if (me->IsWithinDistInMap(who, 40))
{
- me->MonsterYell(YELL_NALORAKK_WAVE2, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_NALORAKK_WAVE2, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_NALORAKK_WAVE2);
(*me).GetMotionMaster()->MovePoint(3, NalorakkWay[3][0], NalorakkWay[3][1], NalorakkWay[3][2]);
@@ -253,7 +253,7 @@ class boss_nalorakk : public CreatureScript
case 5:
if (me->IsWithinDistInMap(who, 40))
{
- me->MonsterYell(YELL_NALORAKK_WAVE3, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_NALORAKK_WAVE3, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_NALORAKK_WAVE3);
(*me).GetMotionMaster()->MovePoint(6, NalorakkWay[6][0], NalorakkWay[6][1], NalorakkWay[6][2]);
@@ -268,7 +268,7 @@ class boss_nalorakk : public CreatureScript
{
SendAttacker(who);
- me->MonsterYell(YELL_NALORAKK_WAVE4, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_NALORAKK_WAVE4, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_NALORAKK_WAVE4);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -287,7 +287,7 @@ class boss_nalorakk : public CreatureScript
{
instance->SetData(DATA_NALORAKKEVENT, IN_PROGRESS);
- me->MonsterYell(YELL_AGGRO, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_AGGRO, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_AGGRO);
DoZoneInCombat();
}
@@ -296,7 +296,7 @@ class boss_nalorakk : public CreatureScript
{
instance->SetData(DATA_NALORAKKEVENT, DONE);
- me->MonsterYell(YELL_DEATH, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_DEATH, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_DEATH);
}
@@ -305,11 +305,11 @@ class boss_nalorakk : public CreatureScript
switch (urand(0, 1))
{
case 0:
- me->MonsterYell(YELL_KILL_ONE, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_KILL_ONE, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_KILL_ONE);
break;
case 1:
- me->MonsterYell(YELL_KILL_TWO, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_KILL_TWO, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_KILL_TWO);
break;
}
@@ -373,7 +373,7 @@ class boss_nalorakk : public CreatureScript
if (Berserk_Timer <= diff)
{
DoCast(me, SPELL_BERSERK, true);
- me->MonsterYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_BERSERK, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_BERSERK);
Berserk_Timer = 600000;
} else Berserk_Timer -= diff;
@@ -383,7 +383,7 @@ class boss_nalorakk : public CreatureScript
if (inBearForm)
{
// me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, 5122);
- me->MonsterYell(YELL_SHIFTEDTOTROLL, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_SHIFTEDTOTROLL, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_TOTROLL);
me->RemoveAurasDueToSpell(SPELL_BEARFORM);
Surge_Timer = urand(15000, 20000);
@@ -395,7 +395,7 @@ class boss_nalorakk : public CreatureScript
else
{
// me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, 0);
- me->MonsterYell(YELL_SHIFTEDTOBEAR, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_SHIFTEDTOBEAR, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_TOBEAR);
DoCast(me, SPELL_BEARFORM, true);
LaceratingSlash_Timer = 2000; // dur 18s
@@ -426,7 +426,7 @@ class boss_nalorakk : public CreatureScript
if (Surge_Timer <= diff)
{
- me->MonsterYell(YELL_SURGE, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_SURGE, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_YELL_SURGE);
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 45, true);
if (target)
diff --git a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
index cea11ab043e..b725712d473 100644
--- a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
@@ -280,7 +280,7 @@ public:
{
case 0:
if (WaitTimer == WAIT_SECS)
- me->MonsterSay(NPCSAY_INIT, LANG_UNIVERSAL, NULL); //no blizzlike
+ me->Say(NPCSAY_INIT, LANG_UNIVERSAL); //no blizzlike
if (WaitTimer <= diff)
{
@@ -310,7 +310,7 @@ public:
{
if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID))
{
- me->MonsterSay(NPCSAY_END, LANG_UNIVERSAL, NULL); //not blizzlike
+ me->Say(NPCSAY_END, LANG_UNIVERSAL); //not blizzlike
player->GroupEventHappens(QUEST_PYREWOOD_AMBUSH, me);
}
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp
index 9c9d3cb6a5f..a4745eade7d 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp
@@ -944,7 +944,7 @@ void hyjalAI::WaypointReached(uint32 waypointId)
{
if (waypointId == 1 || (waypointId == 0 && me->GetEntry() == THRALL))
{
- me->MonsterYell(YELL_HURRY, LANG_UNIVERSAL, NULL);
+ me->Yell(YELL_HURRY, LANG_UNIVERSAL);
WaitForTeleport = true;
TeleportTimer = 20000;
if (me->GetEntry() == JAINA)
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
index 9cb75ec9807..55860d98cc5 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
@@ -29,7 +29,6 @@ EndScriptData */
#include "hyjal_trash.h"
#include "Player.h"
#include "WorldPacket.h"
-#include "Opcodes.h"
#include "Chat.h"
/* Battle of Mount Hyjal encounters:
@@ -173,15 +172,12 @@ public:
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
{
- if (i->GetSource())
+ if (Player* player = i->GetSource())
{
WorldPacket packet;
- ChatHandler::BuildChatPacket(packet, CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, unit, i->GetSource(), YELL_EFFORTS);
- i->GetSource()->GetSession()->SendPacket(&packet);
-
- WorldPacket data2(SMSG_PLAY_SOUND, 4);
- data2 << 10986;
- i->GetSource()->GetSession()->SendPacket(&data2);
+ ChatHandler::BuildChatPacket(packet, CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, unit, player, YELL_EFFORTS);
+ player->SendDirectMessage(&packet);
+ player->PlayDirectSound(10986, player);
}
}
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
index c78ae136b70..3f74ed2eb88 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
@@ -229,7 +229,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
instance->SetBossState(DATA_MAL_GANIS, DONE);
- DoCastAOE(SPELL_MAL_GANIS_KILL_CREDIT);
+ DoCastAOE(SPELL_MAL_GANIS_KILL_CREDIT, true);
// give achievement credit and LFG rewards to players. criteria use spell 58630 which doesn't exist, but it was created in spell_dbc
DoCastAOE(SPELL_KILL_CREDIT);
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp
index 143f901ec0b..10ee66c86d0 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_meathook.cpp
@@ -70,6 +70,7 @@ class boss_meathook : public CreatureScript
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true))
DoCast(target, SPELL_CONSTRICTING_CHAINS);
events.ScheduleEvent(EVENT_CHAIN, urand(2000, 4000));
+ break;
case EVENT_DISEASE:
DoCastAOE(SPELL_DISEASE_EXPULSION);
events.ScheduleEvent(EVENT_DISEASE, urand(1500, 4000));
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp
index 6925badf272..1d2ed933243 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_salramm_the_fleshcrafter.cpp
@@ -15,14 +15,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* Script Data Start
-SDName: Boss salramm
-SDAuthor: Tartalo
-SD%Complete: 80
-SDComment: @todo Intro
-SDCategory:
-Script Data End */
-
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "culling_of_stratholme.h"
@@ -31,9 +23,7 @@ enum Spells
{
SPELL_CURSE_OF_TWISTED_FLESH = 58845,
SPELL_EXPLODE_GHOUL = 52480,
- H_SPELL_EXPLODE_GHOUL = 58825,
SPELL_SHADOW_BOLT = 57725,
- H_SPELL_SHADOW_BOLT = 58828,
SPELL_STEAL_FLESH = 52708,
SPELL_SUMMON_GHOULS = 52451
};
@@ -49,114 +39,89 @@ enum Yells
SAY_SUMMON_GHOULS = 6
};
-class boss_salramm : public CreatureScript
+enum Events
{
-public:
- boss_salramm() : CreatureScript("boss_salramm") { }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return GetInstanceAI<boss_salrammAI>(creature);
- }
-
- struct boss_salrammAI : public ScriptedAI
- {
- boss_salrammAI(Creature* creature) : ScriptedAI(creature)
- {
- Initialize();
- instance = creature->GetInstanceScript();
- Talk(SAY_SPAWN);
- }
-
- void Initialize()
- {
- uiCurseFleshTimer = 30000; //30s DBM
- uiExplodeGhoulTimer = urand(25000, 28000); //approx 6 sec after summon ghouls
- uiShadowBoltTimer = urand(8000, 12000); // approx 10s
- uiStealFleshTimer = 12345;
- uiSummonGhoulsTimer = urand(19000, 24000); //on a video approx 24s after aggro
- }
-
- uint32 uiCurseFleshTimer;
- uint32 uiExplodeGhoulTimer;
- uint32 uiShadowBoltTimer;
- uint32 uiStealFleshTimer;
- uint32 uiSummonGhoulsTimer;
-
- InstanceScript* instance;
-
- void Reset() override
- {
- Initialize();
-
- instance->SetBossState(DATA_SALRAMM, NOT_STARTED);
- }
-
- void EnterCombat(Unit* /*who*/) override
- {
- Talk(SAY_AGGRO);
+ EVENT_CURSE_FLESH = 1,
+ EVENT_EXPLODE_GHOUL,
+ EVENT_SHADOW_BOLT,
+ EVENT_STEAL_FLESH,
+ EVENT_SUMMON_GHOULS
+};
- instance->SetBossState(DATA_SALRAMM, IN_PROGRESS);
- }
+class boss_salramm : public CreatureScript
+{
+ public:
+ boss_salramm() : CreatureScript("boss_salramm") { }
- void UpdateAI(uint32 diff) override
+ struct boss_salrammAI : public BossAI
{
- //Return since we have no target
- if (!UpdateVictim())
- return;
-
- //Curse of twisted flesh timer
- if (uiCurseFleshTimer <= diff)
+ boss_salrammAI(Creature* creature) : BossAI(creature, DATA_SALRAMM)
{
- DoCastVictim(SPELL_CURSE_OF_TWISTED_FLESH);
- uiCurseFleshTimer = 37000;
- } else uiCurseFleshTimer -= diff;
+ Talk(SAY_SPAWN);
+ }
- //Shadow bolt timer
- if (uiShadowBoltTimer <= diff)
+ void EnterCombat(Unit* /*who*/) override
{
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(target, SPELL_SHADOW_BOLT);
- uiShadowBoltTimer = urand(8000, 12000);
- } else uiShadowBoltTimer -= diff;
+ Talk(SAY_AGGRO);
+ _EnterCombat();
- //Steal Flesh timer
- if (uiStealFleshTimer <= diff)
- {
- Talk(SAY_STEAL_FLESH);
- if (Unit* random_pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(random_pTarget, SPELL_STEAL_FLESH);
- uiStealFleshTimer = 10000;
- } else uiStealFleshTimer -= diff;
+ events.ScheduleEvent(EVENT_CURSE_FLESH, 30000);
+ events.ScheduleEvent(EVENT_SUMMON_GHOULS, urand(19000, 24000));
+ events.ScheduleEvent(EVENT_SHADOW_BOLT, urand(8000, 12000));
+ events.ScheduleEvent(EVENT_STEAL_FLESH, 12345); /// @todo: adjust timer
+ }
- //Summon ghouls timer
- if (uiSummonGhoulsTimer <= diff)
+ void ExecuteEvent(uint32 eventId) override
{
- Talk(SAY_SUMMON_GHOULS);
- if (Unit* random_pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0))
- DoCast(random_pTarget, SPELL_SUMMON_GHOULS);
- uiSummonGhoulsTimer = 10000;
- } else uiSummonGhoulsTimer -= diff;
-
- DoMeleeAttackIfReady();
- }
-
- void JustDied(Unit* /*killer*/) override
- {
- Talk(SAY_DEATH);
+ switch (eventId)
+ {
+ case EVENT_CURSE_FLESH:
+ DoCastVictim(SPELL_CURSE_OF_TWISTED_FLESH);
+ events.ScheduleEvent(EVENT_CURSE_FLESH, 37000);
+ break;
+ case EVENT_SUMMON_GHOULS:
+ Talk(SAY_SUMMON_GHOULS);
+ DoCast(me, SPELL_SUMMON_GHOULS);
+ events.ScheduleEvent(EVENT_SUMMON_GHOULS, 10000);
+ events.ScheduleEvent(EVENT_EXPLODE_GHOUL, 6000);
+ break;
+ case EVENT_SHADOW_BOLT:
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 40.0f, true))
+ DoCast(target, SPELL_SHADOW_BOLT);
+ events.ScheduleEvent(EVENT_SHADOW_BOLT, urand(8000, 12000));
+ break;
+ case EVENT_STEAL_FLESH:
+ Talk(SAY_STEAL_FLESH);
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 50.0f, true))
+ DoCast(target, SPELL_STEAL_FLESH);
+ events.ScheduleEvent(EVENT_STEAL_FLESH, 12345);
+ break;
+ case EVENT_EXPLODE_GHOUL:
+ Talk(SAY_EXPLODE_GHOUL);
+ DoCast(me, SPELL_EXPLODE_GHOUL, true);
+ break;
+ default:
+ break;
+ }
+ }
+
+ void JustDied(Unit* /*killer*/) override
+ {
+ Talk(SAY_DEATH);
+ _JustDied();
+ }
- instance->SetBossState(DATA_SALRAMM, DONE);
- }
+ void KilledUnit(Unit* victim) override
+ {
+ if (victim->GetTypeId() == TYPEID_PLAYER)
+ Talk(SAY_SLAY);
+ }
+ };
- void KilledUnit(Unit* victim) override
+ CreatureAI* GetAI(Creature* creature) const override
{
- if (victim->GetTypeId() != TYPEID_PLAYER)
- return;
-
- Talk(SAY_SLAY);
+ return GetInstanceAI<boss_salrammAI>(creature);
}
- };
-
};
void AddSC_boss_salramm()
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
index e20e976b4b9..ae0fa2aa564 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
@@ -63,6 +63,7 @@ class instance_culling_of_stratholme : public InstanceMapScript
_crateCount = 0;
_eventTimer = 0;
+ _infiniteCouterState = NOT_STARTED;
}
void FillInitialWorldStates(WorldPacket& data) override
diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
index eec2a590bd4..5c083e43d3d 100644
--- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
+++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
@@ -153,7 +153,7 @@ public:
SetCombatMovement(true);
_Reset();
-
+ me->SetReactState(REACT_AGGRESSIVE);
instance->SetData(DATA_ONYXIA_PHASE, Phase);
instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
}
@@ -162,12 +162,10 @@ public:
{
_EnterCombat();
Talk(SAY_AGGRO);
-
events.ScheduleEvent(EVENT_FLAME_BREATH, urand(10000, 20000));
events.ScheduleEvent(EVENT_TAIL_SWEEP, urand(15000, 20000));
events.ScheduleEvent(EVENT_CLEAVE, urand(2000, 5000));
events.ScheduleEvent(EVENT_WING_BUFFET, urand(10000, 20000));
-
instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
}
@@ -331,9 +329,10 @@ public:
{
if (HealthBelowPct(65))
{
+ if (Unit* target = me->GetVictim())
+ tankGUID = target->GetGUID();
SetCombatMovement(false);
Phase = PHASE_BREATH;
- tankGUID = me->GetVictim()->GetGUID();
me->SetReactState(REACT_PASSIVE);
me->AttackStop();
me->GetMotionMaster()->MovePoint(10, Phase2Location);
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
index 9839eb3d952..30d831da30c 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
@@ -150,6 +150,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
break;
case NPC_ANUBARAK:
AnubarakGUID = creature->GetGUID();
+ creature->SetRespawnDelay(7 * DAY);
break;
default:
break;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
index cea4b540f7b..e98e74634e2 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
@@ -75,7 +75,7 @@ public:
{
SetGazeOn(who);
/// @todo use a script text
- me->MonsterTextEmote(EMOTE_NEARBY, NULL, true);
+ me->TextEmote(EMOTE_NEARBY, nullptr, true);
}
else
BossAI::MoveInLineOfSight(who);
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
index 10b74ca938d..aa284f1aaee 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
@@ -66,14 +66,22 @@ public:
struct boss_maexxnaAI : public BossAI
{
- boss_maexxnaAI(Creature* creature) : BossAI(creature, BOSS_MAEXXNA) { }
+ boss_maexxnaAI(Creature* creature) : BossAI(creature, BOSS_MAEXXNA)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ enraged = false;
+ }
bool enraged;
void EnterCombat(Unit* /*who*/) override
{
_EnterCombat();
- enraged = false;
+ Initialize();
events.ScheduleEvent(EVENT_WRAP, 20000);
events.ScheduleEvent(EVENT_SPRAY, 40000);
events.ScheduleEvent(EVENT_SHOCK, urand(5000, 10000));
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
index 94117e9dbbf..0e07ff027f6 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
@@ -72,7 +72,11 @@ public:
struct boss_nothAI : public BossAI
{
- boss_nothAI(Creature* creature) : BossAI(creature, BOSS_NOTH) { }
+ boss_nothAI(Creature* creature) : BossAI(creature, BOSS_NOTH)
+ {
+ balconyCount = 0;
+ waveCount = 0;
+ }
void Reset() override
{
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
index 3e8a54f7cec..116cee5f275 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
@@ -61,7 +61,10 @@ public:
struct boss_patchwerkAI : public BossAI
{
- boss_patchwerkAI(Creature* creature) : BossAI(creature, BOSS_PATCHWERK) { }
+ boss_patchwerkAI(Creature* creature) : BossAI(creature, BOSS_PATCHWERK)
+ {
+ Enraged = false;
+ }
bool Enraged;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
index ec38332613d..97c7d7c4052 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
@@ -90,9 +90,19 @@ class boss_sapphiron : public CreatureScript
struct boss_sapphironAI : public BossAI
{
boss_sapphironAI(Creature* creature) :
- BossAI(creature, BOSS_SAPPHIRON), _phase(PHASE_NULL),
- _map(me->GetMap())
- { }
+ BossAI(creature, BOSS_SAPPHIRON), _map(me->GetMap())
+ {
+ Initialize();
+ _iceboltCount = 0;
+ }
+
+ void Initialize()
+ {
+ _phase = PHASE_NULL;
+
+ _canTheHundredClub = true;
+ _checkFrostResistTimer = 5 * IN_MILLISECONDS;
+ }
void InitializeAI() override
{
@@ -115,10 +125,7 @@ class boss_sapphiron : public CreatureScript
if (_phase == PHASE_FLIGHT)
ClearIceBlock();
- _phase = PHASE_NULL;
-
- _canTheHundredClub = true;
- _checkFrostResistTimer = 5 * IN_MILLISECONDS;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
index 32c7fa048dc..650777a8815 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
@@ -137,6 +137,9 @@ public:
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED);
me->SetReactState(REACT_PASSIVE);
}
+
+ polaritySwitch = false;
+ uiAddsTimer = 0;
}
bool checkStalaggAlive;
@@ -287,9 +290,16 @@ public:
{
npc_stalaggAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ powerSurgeTimer = urand(20000, 25000);
+ magneticPullTimer = 20000;
+ }
+
InstanceScript* instance;
uint32 powerSurgeTimer;
@@ -300,8 +310,7 @@ public:
if (Creature* pThaddius = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_THADDIUS)))
if (pThaddius->AI())
pThaddius->AI()->DoAction(ACTION_STALAGG_RESET);
- powerSurgeTimer = urand(20000, 25000);
- magneticPullTimer = 20000;
+ Initialize();
}
void KilledUnit(Unit* /*victim*/) override
@@ -379,9 +388,15 @@ public:
{
npc_feugenAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ staticFieldTimer = 5000;
+ }
+
InstanceScript* instance;
uint32 staticFieldTimer;
@@ -391,7 +406,7 @@ public:
if (Creature* pThaddius = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_THADDIUS)))
if (pThaddius->AI())
pThaddius->AI()->DoAction(ACTION_FEUGEN_RESET);
- staticFieldTimer = 5000;
+ Initialize();
}
void KilledUnit(Unit* /*victim*/) override
diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
index 6dcdd05048a..4151c4a85a7 100644
--- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
@@ -112,6 +112,10 @@ class instance_naxxramas : public InstanceMapScript
LoadDoorData(doorData);
LoadMinionData(minionData);
+ minHorsemenDiedTime = 0;
+ maxHorsemenDiedTime = 0;
+ AbominationCount = 0;
+
playerDied = 0;
}
@@ -430,7 +434,6 @@ class instance_naxxramas : public InstanceMapScript
ObjectGuid BaronGUID;
ObjectGuid SirGUID;
ObjectGuid HorsemenChestGUID;
- ObjectGuid HorsemenTeleporterGUID;
time_t minHorsemenDiedTime;
time_t maxHorsemenDiedTime;
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index 856a16fd4dd..5862453731e 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -342,16 +342,13 @@ public:
{
boss_malygosAI(Creature* creature) : BossAI(creature, DATA_MALYGOS_EVENT)
{
+ Initialize();
_despawned = false; // We determine if Malygos will be realocated to spawning position on reset triggered by boss despawn on evade
_flySpeed = me->GetSpeed(MOVE_FLIGHT); // Get initial fly speed, otherwise on each wipe fly speed would add up if we get it
}
- void Reset() override
+ void Initialize()
{
- // EnterEvadeMode and Reset() links are cut for the sake of properly functioning despawner.
- if (!_despawned)
- _Reset();
-
_summonDeaths = 0;
_preparingPulsesChecker = 0;
_arcaneOverloadGUID.Clear();
@@ -367,6 +364,15 @@ public:
_firstCyclicMovementStarted = false;
_performingSurgeOfPower = false;
_performingDestroyPlatform = false;
+ }
+
+ void Reset() override
+ {
+ // EnterEvadeMode and Reset() links are cut for the sake of properly functioning despawner.
+ if (!_despawned)
+ _Reset();
+
+ Initialize();
me->SetDisableGravity(true);
me->SetByteFlag(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER);
@@ -1175,17 +1181,23 @@ public:
{
npc_melee_hover_diskAI(Creature* creature) : VehicleAI(creature)
{
+ Initialize();
_instance = creature->GetInstanceScript();
me->SetReactState(REACT_PASSIVE);
// TO DO: These were a bit faster than what they should be. Not sure what is the reason.
me->SetSpeed(MOVE_FLIGHT, 1.25f);
}
+ void Initialize()
+ {
+ _wpCount = 0;
+ }
+
void Reset() override
{
VehicleAI::Reset();
- _wpCount = 0;
+ Initialize();
}
void PassengerBoarded(Unit* unit, int8 /*seat*/, bool apply) override
@@ -1509,10 +1521,7 @@ public:
void IsSummonedBy(Unit* summoner) override
{
if (Creature* creature = summoner->ToCreature())
- {
- _malygos = creature;
- _malygos->AI()->SetGUID(me->GetGUID(), DATA_LAST_OVERLOAD_GUID);
- }
+ creature->AI()->SetGUID(me->GetGUID(), DATA_LAST_OVERLOAD_GUID);
}
void UpdateAI(uint32 /*diff*/)
@@ -1541,7 +1550,6 @@ public:
}
private:
- Creature* _malygos;
InstanceScript* _instance;
};
@@ -1561,6 +1569,7 @@ public:
{
npc_wyrmrest_skytalonAI(Creature* creature) : VehicleAI(creature)
{
+ _summoner = NULL;
}
void IsSummonedBy(Unit* summoner) override
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
index fde19c124bf..ed08296acd8 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
@@ -77,23 +77,28 @@ class boss_anomalus : public CreatureScript
{
boss_anomalusAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = me->GetInstanceScript();
}
+ void Initialize()
+ {
+ Phase = 0;
+ uiSparkTimer = 5000;
+ uiChaoticRiftGUID.Clear();
+ chaosTheory = true;
+ }
+
InstanceScript* instance;
uint8 Phase;
uint32 uiSparkTimer;
- uint32 uiCreateRiftTimer;
ObjectGuid uiChaoticRiftGUID;
bool chaosTheory;
void Reset() override
{
- Phase = 0;
- uiSparkTimer = 5000;
- uiChaoticRiftGUID.Clear();
- chaosTheory = true;
+ Initialize();
instance->SetData(DATA_ANOMALUS_EVENT, NOT_STARTED);
}
@@ -197,10 +202,17 @@ class npc_chaotic_rift : public CreatureScript
{
npc_chaotic_riftAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = me->GetInstanceScript();
SetCombatMovement(false);
}
+ void Initialize()
+ {
+ uiChaoticEnergyBurstTimer = 1000;
+ uiSummonCrazedManaWraithTimer = 5000;
+ }
+
InstanceScript* instance;
uint32 uiChaoticEnergyBurstTimer;
@@ -208,8 +220,7 @@ class npc_chaotic_rift : public CreatureScript
void Reset() override
{
- uiChaoticEnergyBurstTimer = 1000;
- uiSummonCrazedManaWraithTimer = 5000;
+ Initialize();
me->SetDisplayId(me->GetCreatureTemplate()->Modelid2);
DoCast(me, SPELL_ARCANEFORM, false);
}
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
index d6afab7c3fd..6b3df5ef665 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
@@ -68,9 +68,20 @@ public:
{
boss_keristraszaAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ uiCrystalfireBreathTimer = 14 * IN_MILLISECONDS;
+ uiCrystalChainsCrystalizeTimer = DUNGEON_MODE(30 * IN_MILLISECONDS, 11 * IN_MILLISECONDS);
+ uiTailSweepTimer = 5 * IN_MILLISECONDS;
+ bEnrage = false;
+
+ intenseCold = true;
+ }
+
InstanceScript* instance;
GuidList intenseColdList;
@@ -83,12 +94,7 @@ public:
void Reset() override
{
- uiCrystalfireBreathTimer = 14*IN_MILLISECONDS;
- uiCrystalChainsCrystalizeTimer = DUNGEON_MODE(30*IN_MILLISECONDS, 11*IN_MILLISECONDS);
- uiTailSweepTimer = 5*IN_MILLISECONDS;
- bEnrage = false;
-
- intenseCold = true;
+ Initialize();
intenseColdList.clear();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
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 6f42237e34a..8c58a65cdbe 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
@@ -72,7 +72,32 @@ public:
{
boss_magus_telestraAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
+ bFireMagusDead = false;
+ bFrostMagusDead = false;
+ bArcaneMagusDead = false;
+ uiIsWaitingToAppearTimer = 0;
+ }
+
+ void Initialize()
+ {
+ Phase = 0;
+ //These times are probably wrong
+ uiIceNovaTimer = 7 * IN_MILLISECONDS;
+ uiFireBombTimer = 0;
+ uiGravityWellTimer = 15 * IN_MILLISECONDS;
+ uiCooldown = 0;
+
+ uiFireMagusGUID.Clear();
+ uiFrostMagusGUID.Clear();
+ uiArcaneMagusGUID.Clear();
+
+ for (uint8 n = 0; n < 3; ++n)
+ time[n] = 0;
+
+ splitPersonality = 0;
+ bIsWaitingToAppear = false;
}
InstanceScript* instance;
@@ -98,22 +123,7 @@ public:
void Reset() override
{
- Phase = 0;
- //These times are probably wrong
- uiIceNovaTimer = 7*IN_MILLISECONDS;
- uiFireBombTimer = 0;
- uiGravityWellTimer = 15*IN_MILLISECONDS;
- uiCooldown = 0;
-
- uiFireMagusGUID.Clear();
- uiFrostMagusGUID.Clear();
- uiArcaneMagusGUID.Clear();
-
- for (uint8 n = 0; n < 3; ++n)
- time[n] = 0;
-
- splitPersonality = 0;
- bIsWaitingToAppear = false;
+ Initialize();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetVisible(true);
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
index 222f0474c01..84523c1864d 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
@@ -68,12 +68,20 @@ public:
struct boss_ormorokAI : public BossAI
{
- boss_ormorokAI(Creature* creature) : BossAI(creature, DATA_ORMOROK_EVENT) { }
+ boss_ormorokAI(Creature* creature) : BossAI(creature, DATA_ORMOROK_EVENT)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ frenzy = false;
+ }
void Reset()
{
BossAI::Reset();
- frenzy = false;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
index 3539661ea19..ea23041da6f 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
@@ -57,7 +57,15 @@ class boss_drakos : public CreatureScript
struct boss_drakosAI : public BossAI
{
- boss_drakosAI(Creature* creature) : BossAI(creature, DATA_DRAKOS) { }
+ boss_drakosAI(Creature* creature) : BossAI(creature, DATA_DRAKOS)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ postPull = false;
+ }
void Reset() override
{
@@ -67,7 +75,7 @@ class boss_drakos : public CreatureScript
events.ScheduleEvent(EVENT_STOMP, 17000);
events.ScheduleEvent(EVENT_BOMB_SUMMON, 2000);
- postPull = false;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
@@ -150,7 +158,15 @@ class npc_unstable_sphere : public CreatureScript
struct npc_unstable_sphereAI : public ScriptedAI
{
- npc_unstable_sphereAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_unstable_sphereAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ pulseTimer = 3000;
+ }
void Reset() override
{
@@ -160,7 +176,7 @@ class npc_unstable_sphere : public CreatureScript
me->AddAura(SPELL_UNSTABLE_SPHERE_PASSIVE, me);
me->AddAura(SPELL_UNSTABLE_SPHERE_TIMER, me);
- pulseTimer = 3000;
+ Initialize();
me->DespawnOrUnsummon(19000);
}
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
index 3ae61bdd116..0dc05cb450d 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
@@ -85,16 +85,24 @@ class boss_eregos : public CreatureScript
struct boss_eregosAI : public BossAI
{
- boss_eregosAI(Creature* creature) : BossAI(creature, DATA_EREGOS) { }
+ boss_eregosAI(Creature* creature) : BossAI(creature, DATA_EREGOS)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
- _Reset();
_phase = PHASE_NORMAL;
_rubyVoid = true;
_emeraldVoid = true;
_amberVoid = true;
+ }
+
+ void Reset() override
+ {
+ _Reset();
+ Initialize();
DoAction(ACTION_SET_NORMAL_EVENTS);
}
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
index c4e0986edd4..9dddf721d53 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
@@ -95,6 +95,7 @@ class boss_urom : public CreatureScript
{
boss_uromAI(Creature* creature) : BossAI(creature, DATA_UROM)
{
+ Initialize();
platform = 0;
for (uint8 i = 0; i < 3; ++i)
@@ -103,19 +104,13 @@ class boss_urom : public CreatureScript
std::random_shuffle(group, group + 3);
}
- void Reset() override
+ void Initialize()
{
- me->CastSpell(me, SPELL_EVOCATE);
-
- _Reset();
-
x = 0.0f;
y = 0.0f;
canCast = false;
canGoBack = false;
- me->GetMotionMaster()->MoveIdle();
-
teleportTimer = urand(30000, 35000);
arcaneExplosionTimer = 9000;
castArcaneExplosionTimer = 2000;
@@ -123,6 +118,15 @@ class boss_urom : public CreatureScript
timeBombTimer = urand(20000, 25000);
}
+ void Reset() override
+ {
+ me->CastSpell(me, SPELL_EVOCATE);
+
+ _Reset();
+
+ me->GetMotionMaster()->MoveIdle();
+ }
+
void EnterCombat(Unit* /*who*/) override
{
_EnterCombat();
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
index 70371e17074..0119b81796e 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
@@ -59,7 +59,16 @@ class boss_varos : public CreatureScript
struct boss_varosAI : public BossAI
{
- boss_varosAI(Creature* creature) : BossAI(creature, DATA_VAROS) { }
+ boss_varosAI(Creature* creature) : BossAI(creature, DATA_VAROS)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ firstCoreEnergize = false;
+ coreEnergizeOrientation = 0.0f;
+ }
void InitializeAI() override
{
@@ -77,8 +86,7 @@ class boss_varos : public CreatureScript
// not sure if this is handled by a timer or hp percentage
events.ScheduleEvent(EVENT_CALL_AZURE, urand(15, 30) * IN_MILLISECONDS);
- firstCoreEnergize = false;
- coreEnergizeOrientation = 0.0f;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
@@ -170,12 +178,18 @@ class npc_azure_ring_captain : public CreatureScript
{
npc_azure_ring_captainAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
- void Reset() override
+ void Initialize()
{
targetGUID.Clear();
+ }
+
+ void Reset() override
+ {
+ Initialize();
me->SetWalk(true);
//! HACK: Creature's can't have MOVEMENTFLAG_FLYING
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
index 259d7faa6fe..8a0921b604b 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
@@ -232,13 +232,19 @@ class npc_ruby_emerald_amber_drake : public CreatureScript
{
npc_ruby_emerald_amber_drakeAI(Creature* creature) : VehicleAI(creature)
{
+ Initialize();
_instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ _healthWarning = true;
+ }
+
void Reset() override
{
_events.Reset();
- _healthWarning = true;
+ Initialize();
}
void IsSummonedBy(Unit* summoner) override
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
index b4a95239df2..b5079d8cf4f 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
@@ -106,11 +106,34 @@ public:
{
boss_bjarngrimAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
m_uiStance = STANCE_DEFENSIVE;
canBuff = true;
}
+ void Initialize()
+ {
+ m_bIsChangingStance = false;
+
+ m_uiChargingStatus = 0;
+ m_uiCharge_Timer = 1000;
+
+ m_uiChangeStance_Timer = urand(20000, 25000);
+
+ m_uiReflection_Timer = 8000;
+ m_uiKnockAway_Timer = 20000;
+ m_uiPummel_Timer = 10000;
+ m_uiIronform_Timer = 25000;
+
+ m_uiIntercept_Timer = 5000;
+ m_uiWhirlwind_Timer = 10000;
+ m_uiCleave_Timer = 8000;
+
+ m_uiMortalStrike_Timer = 8000;
+ m_uiSlam_Timer = 10000;
+ }
+
InstanceScript* instance;
bool m_bIsChangingStance;
@@ -142,24 +165,7 @@ public:
if (!me->HasAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE))
me->AddAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE, me);
- m_bIsChangingStance = false;
-
- m_uiChargingStatus = 0;
- m_uiCharge_Timer = 1000;
-
- m_uiChangeStance_Timer = urand(20000, 25000);
-
- m_uiReflection_Timer = 8000;
- m_uiKnockAway_Timer = 20000;
- m_uiPummel_Timer = 10000;
- m_uiIronform_Timer = 25000;
-
- m_uiIntercept_Timer = 5000;
- m_uiWhirlwind_Timer = 10000;
- m_uiCleave_Timer = 8000;
-
- m_uiMortalStrike_Timer = 8000;
- m_uiSlam_Timer = 10000;
+ Initialize();
for (uint8 i = 0; i < 2; ++i)
{
@@ -393,9 +399,16 @@ public:
{
npc_stormforged_lieutenantAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ m_uiArcWeld_Timer = urand(20000, 21000);
+ m_uiRenewSteel_Timer = urand(10000, 11000);
+ }
+
InstanceScript* instance;
uint32 m_uiArcWeld_Timer;
@@ -403,8 +416,7 @@ public:
void Reset() override
{
- m_uiArcWeld_Timer = urand(20000, 21000);
- m_uiRenewSteel_Timer = urand(10000, 11000);
+ Initialize();
}
void EnterCombat(Unit* who) override
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
index 932a8e7b691..274fbed0fc9 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
@@ -76,9 +76,23 @@ public:
{
boss_ionarAI(Creature* creature) : ScriptedAI(creature), lSparkList(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ bIsSplitPhase = true;
+ bHasDispersed = false;
+
+ uiSplitTimer = 25 * IN_MILLISECONDS;
+
+ uiStaticOverloadTimer = urand(5 * IN_MILLISECONDS, 6 * IN_MILLISECONDS);
+ uiBallLightningTimer = urand(10 * IN_MILLISECONDS, 11 * IN_MILLISECONDS);
+
+ uiDisperseHealth = 45 + urand(0, 10);
+ }
+
InstanceScript* instance;
SummonList lSparkList;
@@ -97,15 +111,7 @@ public:
{
lSparkList.DespawnAll();
- bIsSplitPhase = true;
- bHasDispersed = false;
-
- uiSplitTimer = 25*IN_MILLISECONDS;
-
- uiStaticOverloadTimer = urand(5*IN_MILLISECONDS, 6*IN_MILLISECONDS);
- uiBallLightningTimer = urand(10*IN_MILLISECONDS, 11*IN_MILLISECONDS);
-
- uiDisperseHealth = 45 + urand(0, 10);
+ Initialize();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_DISABLE_MOVE);
@@ -297,16 +303,22 @@ public:
{
npc_spark_of_ionarAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ uiCheckTimer = 2 * IN_MILLISECONDS;
+ }
+
InstanceScript* instance;
uint32 uiCheckTimer;
void Reset() override
{
- uiCheckTimer = 2*IN_MILLISECONDS;
+ Initialize();
me->SetReactState(REACT_PASSIVE);
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
index 98d7d629756..fc29369c28f 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
@@ -74,9 +74,19 @@ public:
{
boss_lokenAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ m_uiArcLightning_Timer = 15000;
+ m_uiLightningNova_Timer = 20000;
+ m_uiResumePulsingShockwave_Timer = 1000;
+
+ m_uiHealthAmountModifier = 1;
+ }
+
InstanceScript* instance;
uint32 m_uiArcLightning_Timer;
@@ -87,11 +97,7 @@ public:
void Reset() override
{
- m_uiArcLightning_Timer = 15000;
- m_uiLightningNova_Timer = 20000;
- m_uiResumePulsingShockwave_Timer = 1000;
-
- m_uiHealthAmountModifier = 1;
+ Initialize();
instance->SetBossState(DATA_LOKEN, NOT_STARTED);
instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMELY_DEATH_START_EVENT);
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
index c377de38372..d63d5e87923 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
@@ -78,9 +78,26 @@ public:
{
boss_volkhanAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ m_bIsStriking = false;
+ m_bHasTemper = false;
+ m_bCanShatterGolem = false;
+
+ m_uiPause_Timer = 3500;
+ m_uiShatteringStomp_Timer = 0;
+ m_uiShatter_Timer = 5000;
+ m_uiDelay_Timer = 1000;
+ m_uiSummonPhase = 0;
+ GolemsShattered = 0;
+
+ m_uiHealthAmountModifier = 1;
+ }
+
InstanceScript* instance;
GuidList m_lGolemGUIDList;
@@ -100,18 +117,7 @@ public:
void Reset() override
{
- m_bIsStriking = false;
- m_bHasTemper = false;
- m_bCanShatterGolem = false;
-
- m_uiPause_Timer = 3500;
- m_uiShatteringStomp_Timer = 0;
- m_uiShatter_Timer = 5000;
- m_uiDelay_Timer = 1000;
- m_uiSummonPhase = 0;
- GolemsShattered = 0;
-
- m_uiHealthAmountModifier = 1;
+ Initialize();
DespawnGolem();
m_lGolemGUIDList.clear();
@@ -362,7 +368,19 @@ public:
struct npc_molten_golemAI : public ScriptedAI
{
- npc_molten_golemAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_molten_golemAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ m_bIsFrozen = false;
+
+ m_uiBlast_Timer = 20000;
+ m_uiDeathDelay_Timer = 0;
+ m_uiImmolation_Timer = 5000;
+ }
bool m_bIsFrozen;
@@ -372,11 +390,7 @@ public:
void Reset() override
{
- m_bIsFrozen = false;
-
- m_uiBlast_Timer = 20000;
- m_uiDeathDelay_Timer = 0;
- m_uiImmolation_Timer = 5000;
+ Initialize();
}
void AttackStart(Unit* who) override
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
index 4e01cefaaaa..ac3df1e49aa 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
@@ -76,12 +76,20 @@ class boss_sjonnir : public CreatureScript
struct boss_sjonnirAI : public BossAI
{
- boss_sjonnirAI(Creature* creature) : BossAI(creature, DATA_SJONNIR) { }
+ boss_sjonnirAI(Creature* creature) : BossAI(creature, DATA_SJONNIR)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ abuseTheOoze = 0;
+ }
void Reset() override
{
_Reset();
- abuseTheOoze = 0;
+ Initialize();
}
void EnterCombat(Unit* who) override
@@ -211,13 +219,21 @@ class npc_malformed_ooze : public CreatureScript
struct npc_malformed_oozeAI : public ScriptedAI
{
- npc_malformed_oozeAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_malformed_oozeAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
- void Reset() override
+ void Initialize()
{
_mergeTimer = 10000;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void UpdateAI(uint32 diff) override
{
if (_mergeTimer <= diff)
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 2c7bdf3465b..f98a6e40a07 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
@@ -138,10 +138,22 @@ public:
{
npc_tribuna_controllerAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
SetCombatMovement(false);
}
+ void Initialize()
+ {
+ uiKaddrakEncounterTimer = 1500;
+ uiMarnakEncounterTimer = 10000;
+ uiAbedneumEncounterTimer = 10000;
+
+ bKaddrakActivated = false;
+ bMarnakActivated = false;
+ bAbedneumActivated = false;
+ }
+
InstanceScript* instance;
uint32 uiKaddrakEncounterTimer;
@@ -156,13 +168,7 @@ public:
void Reset() override
{
- uiKaddrakEncounterTimer = 1500;
- uiMarnakEncounterTimer = 10000;
- uiAbedneumEncounterTimer = 10000;
-
- bKaddrakActivated = false;
- bMarnakActivated = false;
- bAbedneumActivated = false;
+ Initialize();
instance->HandleGameObject(instance->GetGuidData(DATA_GO_KADDRAK), false);
instance->HandleGameObject(instance->GetGuidData(DATA_GO_MARNAK), false);
@@ -290,9 +296,20 @@ public:
{
npc_brann_hosAI(Creature* creature) : npc_escortAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ bIsLowHP = false;
+ bIsBattle = false;
+ uiStep = 0;
+ uiPhaseTimer = 0;
+ uiControllerGUID.Clear();
+ brannSparklinNews = true;
+ }
+
uint32 uiStep;
uint32 uiPhaseTimer;
@@ -309,12 +326,7 @@ public:
{
if (!HasEscortState(STATE_ESCORT_ESCORTING))
{
- bIsLowHP = false;
- bIsBattle = false;
- uiStep = 0;
- uiPhaseTimer = 0;
- uiControllerGUID.Clear();
- brannSparklinNews = true;
+ Initialize();
DespawnDwarf();
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
index 18b3723307e..bd5b61e227f 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
@@ -301,19 +301,25 @@ class boss_algalon_the_observer : public CreatureScript
{
boss_algalon_the_observerAI(Creature* creature) : BossAI(creature, BOSS_ALGALON)
{
+ Initialize();
_firstPull = true;
_fedOnTears = false;
}
- void Reset() override
+ void Initialize()
{
- _Reset();
- me->SetReactState(REACT_PASSIVE);
_phaseTwo = false;
_fightWon = false;
_hasYelled = false;
}
+ void Reset() override
+ {
+ _Reset();
+ me->SetReactState(REACT_PASSIVE);
+ Initialize();
+ }
+
void KilledUnit(Unit* victim) override
{
if (victim->GetTypeId() == TYPEID_UNIT)
@@ -715,13 +721,19 @@ class npc_living_constellation : public CreatureScript
{
npc_living_constellationAI(Creature* creature) : CreatureAI(creature)
{
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ _isActive = false;
}
void Reset() override
{
_events.Reset();
_events.ScheduleEvent(EVENT_ARCANE_BARRAGE, 2500);
- _isActive = false;
+ Initialize();
}
uint32 GetData(uint32 /*type*/) const override
@@ -858,6 +870,7 @@ class npc_brann_bronzebeard_algalon : public CreatureScript
{
npc_brann_bronzebeard_algalonAI(Creature* creature) : CreatureAI(creature)
{
+ _currentPoint = 0;
}
void DoAction(int32 action) override
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 fd424ad971b..bb7a8592e04 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
@@ -138,14 +138,22 @@ class boss_steelbreaker : public CreatureScript
struct boss_steelbreakerAI : public BossAI
{
- boss_steelbreakerAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) { }
+ boss_steelbreakerAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ phase = 0;
+ }
uint32 phase;
void Reset() override
{
_Reset();
- phase = 0;
+ Initialize();
me->RemoveAllAuras();
}
@@ -275,14 +283,22 @@ class boss_runemaster_molgeim : public CreatureScript
struct boss_runemaster_molgeimAI : public BossAI
{
- boss_runemaster_molgeimAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) { }
+ boss_runemaster_molgeimAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ phase = 0;
+ }
uint32 phase;
void Reset() override
{
_Reset();
- phase = 0;
+ Initialize();
me->RemoveAllAuras();
}
@@ -432,14 +448,22 @@ class boss_stormcaller_brundir : public CreatureScript
struct boss_stormcaller_brundirAI : public BossAI
{
- boss_stormcaller_brundirAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) { }
+ boss_stormcaller_brundirAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ phase = 0;
+ }
uint32 phase;
void Reset() override
{
_Reset();
- phase = 0;
+ Initialize();
me->RemoveAllAuras();
me->SetDisableGravity(false);
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_INTERRUPT, false); // Should be interruptable unless overridden by spell (Overload)
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
index 1245a232ae6..b84ba45951e 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
@@ -107,17 +107,23 @@ class boss_auriaya : public CreatureScript
{
boss_auriayaAI(Creature* creature) : BossAI(creature, BOSS_AURIAYA)
{
+ Initialize();
}
- void Reset() override
+ void Initialize()
{
- _Reset();
DefenderGUID.Clear();
defenderLives = 8;
crazyCatLady = true;
nineLives = false;
}
+ void Reset() override
+ {
+ _Reset();
+ Initialize();
+ }
+
void EnterCombat(Unit* /*who*/) override
{
_EnterCombat();
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 52cf017eb8e..959cb73a996 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -226,14 +226,11 @@ class boss_flame_leviathan : public CreatureScript
{
boss_flame_leviathanAI(Creature* creature) : BossAI(creature, BOSS_LEVIATHAN), vehicle(creature->GetVehicleKit())
{
+ Initialize();
}
- void InitializeAI() override
+ void Initialize()
{
- ASSERT(vehicle);
- if (!me->isDead())
- Reset();
-
ActiveTowersCount = 4;
Shutdown = 0;
ActiveTowers = false;
@@ -243,6 +240,15 @@ class boss_flame_leviathan : public CreatureScript
towerOfFrost = false;
Shutout = true;
Unbroken = true;
+ }
+
+ void InitializeAI() override
+ {
+ ASSERT(vehicle);
+ if (!me->isDead())
+ Reset();
+
+ Initialize();
DoCast(SPELL_INVIS_AND_STEALTH_DETECT);
@@ -634,13 +640,19 @@ class boss_flame_leviathan_defense_cannon : public CreatureScript
{
boss_flame_leviathan_defense_cannonAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ NapalmTimer = 5 * IN_MILLISECONDS;
}
uint32 NapalmTimer;
void Reset() override
{
- NapalmTimer = 5*IN_MILLISECONDS;
+ Initialize();
DoCast(me, AURA_STEALTH_DETECTION);
}
@@ -781,14 +793,20 @@ class npc_mechanolift : public CreatureScript
{
npc_mechanoliftAI(Creature* creature) : PassiveAI(creature)
{
+ Initialize();
ASSERT(me->GetVehicleKit());
}
+ void Initialize()
+ {
+ MoveTimer = 0;
+ }
+
uint32 MoveTimer;
void Reset() override
{
- MoveTimer = 0;
+ Initialize();
me->GetMotionMaster()->MoveRandom(50);
}
@@ -956,11 +974,17 @@ public:
{
npc_mimirons_infernoAI(Creature* creature) : npc_escortAI(creature)
{
+ Initialize();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->CastSpell(me, AURA_DUMMY_YELLOW, true);
me->SetReactState(REACT_PASSIVE);
}
+ void Initialize()
+ {
+ infernoTimer = 2000;
+ }
+
void WaypointReached(uint32 /*waypointId*/) override
{
@@ -968,7 +992,7 @@ public:
void Reset() override
{
- infernoTimer = 2000;
+ Initialize();
}
uint32 infernoTimer;
@@ -1047,14 +1071,20 @@ class npc_freyas_ward : public CreatureScript
{
npc_freyas_wardAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
me->CastSpell(me, AURA_DUMMY_GREEN, true);
}
+ void Initialize()
+ {
+ summonTimer = 5000;
+ }
+
uint32 summonTimer;
void Reset() override
{
- summonTimer = 5000;
+ Initialize();
}
void UpdateAI(uint32 diff) override
@@ -1090,14 +1120,20 @@ class npc_freya_ward_summon : public CreatureScript
{
npc_freya_ward_summonAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
creature->GetMotionMaster()->MoveRandom(100);
}
+ void Initialize()
+ {
+ lashTimer = 5000;
+ }
+
uint32 lashTimer;
void Reset() override
{
- lashTimer = 5000;
+ Initialize();
}
void UpdateAI(uint32 diff) override
@@ -1527,11 +1563,11 @@ class spell_auto_repair : public SpellScriptLoader
if (!vehicle)
return;
- Player* driver = vehicle->GetPassenger(0) ? vehicle->GetPassenger(0)->ToPlayer() : NULL;
+ Unit* driver = vehicle->GetPassenger(0);
if (!driver)
return;
- driver->MonsterTextEmote(EMOTE_REPAIR, driver, true);
+ driver->TextEmote(EMOTE_REPAIR, driver, true);
InstanceScript* instance = driver->GetInstanceScript();
if (!instance)
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index b3755672790..93fee8d1964 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -266,26 +266,16 @@ class boss_freya : public CreatureScript
struct boss_freyaAI : public BossAI
{
- boss_freyaAI(Creature* creature) : BossAI(creature, BOSS_FREYA) { }
-
- ObjectGuid ElementalGUID[3][2];
-
- uint32 deforestation[6][2];
- uint32 elementalTimer[2];
- uint32 diffTimer;
- uint8 trioWaveCount;
- uint8 trioWaveController;
- uint8 waveCount;
- uint8 elderCount;
- uint8 attunedToNature;
-
- bool checkElementalAlive[2];
- bool trioDefeated[2];
- bool random[3];
+ boss_freyaAI(Creature* creature) : BossAI(creature, BOSS_FREYA)
+ {
+ Initialize();
+ memset(elementalTimer, 0, sizeof(elementalTimer));
+ diffTimer = 0;
+ attunedToNature = 0;
+ }
- void Reset() override
+ void Initialize()
{
- _Reset();
trioWaveCount = 0;
trioWaveController = 0;
waveCount = 0;
@@ -306,6 +296,27 @@ class boss_freya : public CreatureScript
random[n] = false;
}
+ ObjectGuid ElementalGUID[3][2];
+
+ uint32 deforestation[6][2];
+ uint32 elementalTimer[2];
+ uint32 diffTimer;
+ uint8 trioWaveCount;
+ uint8 trioWaveController;
+ uint8 waveCount;
+ uint8 elderCount;
+ uint8 attunedToNature;
+
+ bool checkElementalAlive[2];
+ bool trioDefeated[2];
+ bool random[3];
+
+ void Reset() override
+ {
+ _Reset();
+ Initialize();
+ }
+
void KilledUnit(Unit* who) override
{
if (who->GetTypeId() == TYPEID_PLAYER)
@@ -688,8 +699,6 @@ class boss_elder_brightleaf : public CreatureScript
events.ScheduleEvent(EVENT_SOLAR_FLARE, urand(5000, 7000));
events.ScheduleEvent(EVENT_UNSTABLE_SUN_BEAM, urand(7000, 12000));
events.ScheduleEvent(EVENT_FLUX, 5000);
- elderCount = 0;
- lumberjack = false;
}
void KilledUnit(Unit* who) override
@@ -757,9 +766,6 @@ class boss_elder_brightleaf : public CreatureScript
}
}
- if (lumberjack)
- lumberjackTimer += diff;
-
DoMeleeAttackIfReady();
}
@@ -767,21 +773,12 @@ class boss_elder_brightleaf : public CreatureScript
{
switch (action)
{
- case ACTION_ELDER_DEATH:
- ++elderCount;
- lumberjack = true;
- break;
case ACTION_ELDER_FREYA_KILLED:
me->DespawnOrUnsummon(10000);
_JustDied();
break;
}
}
-
- private:
- uint32 lumberjackTimer;
- uint8 elderCount;
- bool lumberjack;
};
CreatureAI* GetAI(Creature* creature) const override
@@ -809,8 +806,6 @@ class boss_elder_stonebark : public CreatureScript
events.ScheduleEvent(EVENT_TREMOR, urand(10000, 12000));
events.ScheduleEvent(EVENT_FISTS, urand(25000, 35000));
events.ScheduleEvent(EVENT_BARK, urand(37500, 40000));
- elderCount = 0;
- lumberjack = false;
}
void KilledUnit(Unit* who) override
@@ -884,9 +879,6 @@ class boss_elder_stonebark : public CreatureScript
}
}
- if (lumberjack)
- lumberjackTimer += diff;
-
DoMeleeAttackIfReady();
}
@@ -894,21 +886,12 @@ class boss_elder_stonebark : public CreatureScript
{
switch (action)
{
- case ACTION_ELDER_DEATH:
- ++elderCount;
- lumberjack = true;
- break;
case ACTION_ELDER_FREYA_KILLED:
me->DespawnOrUnsummon(10000);
_JustDied();
break;
}
}
-
- private:
- uint32 lumberjackTimer;
- uint8 elderCount;
- bool lumberjack;
};
CreatureAI* GetAI(Creature* creature) const override
@@ -936,8 +919,6 @@ class boss_elder_ironbranch : public CreatureScript
events.ScheduleEvent(EVENT_IMPALE, urand(18000, 22000));
events.ScheduleEvent(EVENT_IRON_ROOTS, urand(12000, 17000));
events.ScheduleEvent(EVENT_THORN_SWARM, urand(7500, 12500));
- elderCount = 0;
- lumberjack = false;
}
void KilledUnit(Unit* who) override
@@ -998,9 +979,6 @@ class boss_elder_ironbranch : public CreatureScript
}
}
- if (lumberjack)
- lumberjackTimer += diff;
-
DoMeleeAttackIfReady();
}
@@ -1008,21 +986,12 @@ class boss_elder_ironbranch : public CreatureScript
{
switch (action)
{
- case ACTION_ELDER_DEATH:
- ++elderCount;
- lumberjack = true;
- break;
case ACTION_ELDER_FREYA_KILLED:
me->DespawnOrUnsummon(10000);
_JustDied();
break;
}
}
-
- private:
- uint32 lumberjackTimer;
- uint8 elderCount;
- bool lumberjack;
};
CreatureAI* GetAI(Creature* creature) const override
@@ -1040,15 +1009,21 @@ class npc_detonating_lasher : public CreatureScript
{
npc_detonating_lasherAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
}
- void Reset() override
+ void Initialize()
{
lashTimer = 5000;
changeTargetTimer = 7500;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
@@ -1098,16 +1073,24 @@ class npc_ancient_water_spirit : public CreatureScript
{
npc_ancient_water_spiritAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = me->GetInstanceScript();
if (Creature* Freya = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_FREYA)))
waveCount = ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->trioWaveCount;
+ else
+ waveCount = 0;
}
- void Reset() override
+ void Initialize()
{
tidalWaveTimer = 10000;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
@@ -1158,17 +1141,25 @@ class npc_storm_lasher : public CreatureScript
{
npc_storm_lasherAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = me->GetInstanceScript();
if (Creature* Freya = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_FREYA)))
waveCount = ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->trioWaveCount;
+ else
+ waveCount = 0;
}
- void Reset() override
+ void Initialize()
{
lightningLashTimer = 10000;
stormboltTimer = 5000;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
@@ -1228,6 +1219,8 @@ class npc_snaplasher : public CreatureScript
instance = me->GetInstanceScript();
if (Creature* Freya = ObjectAccessor::GetCreature(*me, instance->GetGuidData(BOSS_FREYA)))
waveCount = ENSURE_AI(boss_freya::boss_freyaAI, Freya->AI())->trioWaveCount;
+ else
+ waveCount = 0;
}
void UpdateAI(uint32 /*diff*/) override
@@ -1270,12 +1263,18 @@ class npc_ancient_conservator : public CreatureScript
{
npc_ancient_conservatorAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
}
- void Reset() override
+ void Initialize()
{
natureFuryTimer = 7500;
healthySporeTimer = 3500;
+ }
+
+ void Reset() override
+ {
+ Initialize();
SummonHealthySpores(2);
}
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 1b456815ec7..9cb5e71b471 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
@@ -105,6 +105,15 @@ class boss_general_vezax : public CreatureScript
{
boss_general_vezaxAI(Creature* creature) : BossAI(creature, BOSS_VEZAX)
{
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ shadowDodger = true;
+ smellSaronite = true;
+ animusDead = false;
+ vaporCount = 0;
}
bool shadowDodger;
@@ -116,10 +125,7 @@ class boss_general_vezax : public CreatureScript
{
_Reset();
- shadowDodger = true;
- smellSaronite = true;
- animusDead = false;
- vaporCount = 0;
+ Initialize();
}
void EnterCombat(Unit* /*who*/) override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
index 7eb6c72feab..f1cfea0e58f 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
@@ -181,11 +181,18 @@ class npc_flash_freeze : public CreatureScript
{
npc_flash_freezeAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = me->GetInstanceScript();
me->SetDisplayId(me->GetCreatureTemplate()->Modelid2);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED);
}
+ void Initialize()
+ {
+ targetGUID.Clear();
+ checkDespawnTimer = 1000;
+ }
+
InstanceScript* instance;
ObjectGuid targetGUID;
@@ -193,8 +200,7 @@ class npc_flash_freeze : public CreatureScript
void Reset() override
{
- targetGUID.Clear();
- checkDespawnTimer = 1000;
+ Initialize();
}
void UpdateAI(uint32 diff) override
@@ -311,9 +317,19 @@ class boss_hodir : public CreatureScript
{
boss_hodirAI(Creature* creature) : BossAI(creature, BOSS_HODIR)
{
+ Initialize();
me->SetReactState(REACT_PASSIVE);
}
+ void Initialize()
+ {
+ gettingColdInHereTimer = 0;
+ gettingColdInHere = false;
+ cheeseTheFreeze = false;
+ iHaveTheCoolestFriends = false;
+ iCouldSayThatThisCacheWasRare = false;
+ }
+
uint32 gettingColdInHereTimer;
bool gettingColdInHere;
@@ -323,11 +339,7 @@ class boss_hodir : public CreatureScript
void Reset() override
{
- gettingColdInHereTimer = 0;
- gettingColdInHere = false;
- cheeseTheFreeze = false;
- iHaveTheCoolestFriends = false;
- iCouldSayThatThisCacheWasRare = false;
+ Initialize();
_Reset();
me->SetReactState(REACT_PASSIVE);
@@ -525,16 +537,22 @@ class npc_icicle : public CreatureScript
{
npc_icicleAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
me->SetDisplayId(me->GetCreatureTemplate()->Modelid1);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED | UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_PASSIVE);
}
+ void Initialize()
+ {
+ icicleTimer = 2500;
+ }
+
uint32 icicleTimer;
void Reset() override
{
- icicleTimer = 2500;
+ Initialize();
}
void UpdateAI(uint32 diff) override
@@ -573,16 +591,22 @@ class npc_snowpacked_icicle : public CreatureScript
{
npc_snowpacked_icicleAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
me->SetDisplayId(me->GetCreatureTemplate()->Modelid2);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_PACIFIED);
me->SetReactState(REACT_PASSIVE);
}
+ void Initialize()
+ {
+ despawnTimer = 12000;
+ }
+
uint32 despawnTimer;
void Reset() override
{
- despawnTimer = 12000;
+ Initialize();
}
void UpdateAI(uint32 diff) override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
index e91e6ab4c5f..d4fbf959c53 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
@@ -118,9 +118,17 @@ class boss_ignis : public CreatureScript
{
boss_ignis_AI(Creature* creature) : BossAI(creature, BOSS_IGNIS), _vehicle(me->GetVehicleKit())
{
+ Initialize();
ASSERT(_vehicle);
}
+ void Initialize()
+ {
+ _slagPotGUID.Clear();
+ _shattered = false;
+ _firstConstructKill = 0;
+ }
+
void Reset() override
{
_Reset();
@@ -140,9 +148,7 @@ class boss_ignis : public CreatureScript
events.ScheduleEvent(EVENT_CONSTRUCT, 15000);
events.ScheduleEvent(EVENT_END_POT, 40000);
events.ScheduleEvent(EVENT_BERSERK, 480000);
- _slagPotGUID.Clear();
- _shattered = false;
- _firstConstructKill = 0;
+ Initialize();
instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEVEMENT_IGNIS_START_EVENT);
}
@@ -298,14 +304,20 @@ class npc_iron_construct : public CreatureScript
{
npc_iron_constructAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript())
{
+ Initialize();
creature->SetReactState(REACT_PASSIVE);
}
- void Reset() override
+ void Initialize()
{
_brittled = false;
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
if (me->HasAura(SPELL_BRITTLE) && damage >= 5000)
@@ -365,10 +377,18 @@ class npc_scorch_ground : public CreatureScript
{
npc_scorch_groundAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE |UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_PACIFIED);
creature->SetDisplayId(16925); //model 2 in db cannot overwrite wdb fields
}
+ void Initialize()
+ {
+ _heat = false;
+ _constructGUID.Clear();
+ _heatTimer = 0;
+ }
+
void MoveInLineOfSight(Unit* who) override
{
if (!_heat)
@@ -386,10 +406,8 @@ class npc_scorch_ground : public CreatureScript
void Reset() override
{
- _heat = false;
+ Initialize();
DoCast(me, SPELL_GROUND);
- _constructGUID.Clear();
- _heatTimer = 0;
}
void UpdateAI(uint32 uiDiff) override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
index 9dff8025f7a..cad6b045120 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
@@ -327,8 +327,19 @@ class boss_razorscale : public CreatureScript
{
boss_razorscaleAI(Creature* creature) : BossAI(creature, BOSS_RAZORSCALE)
{
+ Initialize();
// Do not let Razorscale be affected by Battle Shout buff
me->ApplySpellImmune(0, IMMUNITY_ID, (SPELL_BATTLE_SHOUT), true);
+ FlyCount = 0;
+ EnrageTimer = 0;
+ Enraged = false;
+ phase = PHASE_GROUND;
+ }
+
+ void Initialize()
+ {
+ PermaGround = false;
+ HarpoonCounter = 0;
}
Phases phase;
@@ -345,8 +356,7 @@ class boss_razorscale : public CreatureScript
me->SetCanFly(true);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_PASSIVE);
- PermaGround = false;
- HarpoonCounter = 0;
+ Initialize();
if (Creature* commander = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_EXPEDITION_COMMANDER)))
commander->AI()->DoAction(ACTION_COMMANDER_RESET);
}
@@ -594,7 +604,14 @@ class npc_expedition_commander : public CreatureScript
{
npc_expedition_commanderAI(Creature* creature) : ScriptedAI(creature), summons(creature)
{
+ Initialize();
instance = me->GetInstanceScript();
+ }
+
+ void Initialize()
+ {
+ AttackStartTimer = 0;
+ Phase = 0;
Greet = false;
}
@@ -604,14 +621,12 @@ class npc_expedition_commander : public CreatureScript
bool Greet;
uint32 AttackStartTimer;
uint8 Phase;
- Creature* Engineer[4];
- Creature* Defender[4];
+ ObjectGuid Engineer[4];
+ ObjectGuid Defender[4];
void Reset() override
{
- AttackStartTimer = 0;
- Phase = 0;
- Greet = false;
+ Initialize();
summons.DespawnAll();
}
@@ -659,31 +674,40 @@ class npc_expedition_commander : public CreatureScript
case 2:
for (uint8 n = 0; n < RAID_MODE(2, 4); n++)
{
- Engineer[n] = me->SummonCreature(NPC_ENGINEER, PosEngSpawn, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
- Engineer[n]->SetWalk(false);
- Engineer[n]->SetSpeed(MOVE_RUN, 0.5f);
- Engineer[n]->SetHomePosition(PosEngRepair[n]);
- Engineer[n]->GetMotionMaster()->MoveTargetedHome();
+ if (Creature* summonedEngineer = me->SummonCreature(NPC_ENGINEER, PosEngSpawn, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000))
+ {
+ summonedEngineer->SetWalk(false);
+ summonedEngineer->SetSpeed(MOVE_RUN, 0.5f);
+ summonedEngineer->SetHomePosition(PosEngRepair[n]);
+ summonedEngineer->GetMotionMaster()->MoveTargetedHome();
+ Engineer[n] = summonedEngineer->GetGUID();
+ }
}
- Engineer[0]->AI()->Talk(SAY_AGGRO_3);
+ if (Creature* firstSummon = ObjectAccessor::GetCreature(*me, Engineer[0]))
+ firstSummon->AI()->Talk(SAY_AGGRO_3);
Phase = 3;
AttackStartTimer = 14000;
break;
case 3:
for (uint8 n = 0; n < 4; n++)
{
- Defender[n] = me->SummonCreature(NPC_DEFENDER, PosDefSpawn[n], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000);
- Defender[n]->SetWalk(false);
- Defender[n]->SetHomePosition(PosDefCombat[n]);
- Defender[n]->GetMotionMaster()->MoveTargetedHome();
+ if (Creature* summonedDefender = me->SummonCreature(NPC_DEFENDER, PosDefSpawn[n], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3000))
+ {
+ summonedDefender->SetWalk(false);
+ summonedDefender->SetHomePosition(PosDefCombat[n]);
+ summonedDefender->GetMotionMaster()->MoveTargetedHome();
+ Defender[n] = summonedDefender->GetGUID();
+ }
}
Phase = 4;
break;
case 4:
for (uint8 n = 0; n < RAID_MODE(2, 4); n++)
- Engineer[n]->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
+ if (Creature* summonedEngineer = ObjectAccessor::GetCreature(*me, Engineer[n]))
+ summonedEngineer->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
for (uint8 n = 0; n < 4; ++n)
- Defender[n]->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
+ if (Creature* summonedDefender = ObjectAccessor::GetCreature(*me, Defender[n]))
+ summonedDefender->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
Talk(SAY_AGGRO_2);
AttackStartTimer = 16000;
Phase = 5;
@@ -694,7 +718,8 @@ class npc_expedition_commander : public CreatureScript
Razorscale->AI()->DoAction(ACTION_EVENT_START);
me->SetInCombatWith(Razorscale);
}
- Engineer[0]->AI()->Talk(SAY_AGGRO_1);
+ if (Creature* firstEngineer = ObjectAccessor::GetCreature(*me, Engineer[0]))
+ firstEngineer->AI()->Talk(SAY_AGGRO_1);
Phase = 6;
break;
}
@@ -748,10 +773,20 @@ class npc_mole_machine_trigger : public CreatureScript
{
npc_mole_machine_triggerAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
SetCombatMovement(false);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED);
}
+ void Initialize()
+ {
+ SummonGobTimer = 2000;
+ SummonNpcTimer = 6000;
+ DissapearTimer = 10000;
+ GobSummoned = false;
+ NpcSummoned = false;
+ }
+
uint32 SummonGobTimer;
uint32 SummonNpcTimer;
uint32 DissapearTimer;
@@ -760,11 +795,7 @@ class npc_mole_machine_trigger : public CreatureScript
void Reset() override
{
- SummonGobTimer = 2000;
- SummonNpcTimer = 6000;
- DissapearTimer = 10000;
- GobSummoned = false;
- NpcSummoned = false;
+ Initialize();
}
void UpdateAI(uint32 Diff) override
@@ -851,15 +882,23 @@ class npc_darkrune_watcher : public CreatureScript
struct npc_darkrune_watcherAI : public ScriptedAI
{
- npc_darkrune_watcherAI(Creature* creature) : ScriptedAI(creature){ }
+ npc_darkrune_watcherAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ ChainTimer = urand(10000, 15000);
+ LightTimer = urand(1000, 3000);
+ }
uint32 ChainTimer;
uint32 LightTimer;
void Reset() override
{
- ChainTimer = urand(10000, 15000);
- LightTimer = urand(1000, 3000);
+ Initialize();
}
void UpdateAI(uint32 Diff) override
@@ -900,14 +939,22 @@ class npc_darkrune_guardian : public CreatureScript
struct npc_darkrune_guardianAI : public ScriptedAI
{
- npc_darkrune_guardianAI(Creature* creature) : ScriptedAI(creature){ }
+ npc_darkrune_guardianAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ StormTimer = urand(3000, 6000);
+ killedByBreath = false;
+ }
uint32 StormTimer;
void Reset() override
{
- StormTimer = urand(3000, 6000);
- killedByBreath = false;
+ Initialize();
}
uint32 GetData(uint32 type) const override
@@ -955,7 +1002,17 @@ class npc_darkrune_sentinel : public CreatureScript
struct npc_darkrune_sentinelAI : public ScriptedAI
{
- npc_darkrune_sentinelAI(Creature* creature) : ScriptedAI(creature){ }
+ npc_darkrune_sentinelAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ HeroicTimer = urand(4000, 8000);
+ WhirlTimer = urand(20000, 25000);
+ ShoutTimer = urand(15000, 30000);
+ }
uint32 HeroicTimer;
uint32 WhirlTimer;
@@ -963,9 +1020,7 @@ class npc_darkrune_sentinel : public CreatureScript
void Reset() override
{
- HeroicTimer = urand(4000, 8000);
- WhirlTimer = urand(20000, 25000);
- ShoutTimer = urand(15000, 30000);
+ Initialize();
}
void UpdateAI(uint32 Diff) override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
index cfc9b0f5cdc..2032c7b861d 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
@@ -196,6 +196,18 @@ class boss_xt002 : public CreatureScript
{
boss_xt002_AI(Creature* creature) : BossAI(creature, BOSS_XT002)
{
+ Initialize();
+ _transferHealth = 0;
+ }
+
+ void Initialize()
+ {
+ _healthRecovered = false;
+ _gravityBombCasualty = false;
+ _hardMode = false;
+
+ _phase = 1;
+ _heartExposed = 0;
}
void Reset() override
@@ -206,12 +218,7 @@ class boss_xt002 : public CreatureScript
me->SetReactState(REACT_AGGRESSIVE);
DoCast(me, SPELL_STAND);
- _healthRecovered = false;
- _gravityBombCasualty = false;
- _hardMode = false;
-
- _phase = 1;
- _heartExposed = 0;
+ Initialize();
instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_MUST_DECONSTRUCT_FASTER);
}
@@ -390,8 +397,9 @@ class boss_xt002 : public CreatureScript
Talk(SAY_HEART_CLOSED);
Talk(EMOTE_HEART_CLOSED);
- DoCast(me, SPELL_STAND);
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetReactState(REACT_AGGRESSIVE);
+ DoCast(me, SPELL_STAND);
_phase = 1;
@@ -489,14 +497,20 @@ class npc_scrapbot : public CreatureScript
{
npc_scrapbotAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
_instance = me->GetInstanceScript();
}
+ void Initialize()
+ {
+ _rangeCheckTimer = 500;
+ }
+
void Reset() override
{
me->SetReactState(REACT_PASSIVE);
- _rangeCheckTimer = 500;
+ Initialize();
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_XT002)))
me->GetMotionMaster()->MoveFollow(pXT002, 0.0f, 0.0f);
@@ -546,14 +560,20 @@ class npc_pummeller : public CreatureScript
{
npc_pummellerAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
_instance = creature->GetInstanceScript();
}
- void Reset() override
+ void Initialize()
{
_arcingSmashTimer = TIMER_ARCING_SMASH;
_trampleTimer = TIMER_TRAMPLE;
_uppercutTimer = TIMER_UPPERCUT;
+ }
+
+ void Reset() override
+ {
+ Initialize();
if (Creature* xt002 = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(BOSS_XT002)))
{
@@ -647,12 +667,18 @@ class npc_boombot : public CreatureScript
{
npc_boombotAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
_instance = creature->GetInstanceScript();
}
- void Reset() override
+ void Initialize()
{
_boomed = false;
+ }
+
+ void Reset() override
+ {
+ Initialize();
DoCast(SPELL_AURA_BOOMBOT); // For achievement
@@ -726,12 +752,18 @@ class npc_life_spark : public CreatureScript
{
npc_life_sparkAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ _shockTimer = 0; // first one is immediate.
}
void Reset() override
{
DoCast(me, SPELL_STATIC_CHARGED);
- _shockTimer = 0; // first one is immediate.
+ Initialize();
}
void UpdateAI(uint32 diff) override
@@ -1006,37 +1038,6 @@ class spell_xt002_submerged : public SpellScriptLoader
}
};
-class spell_xt002_stand : public SpellScriptLoader
-{
- public:
- spell_xt002_stand() : SpellScriptLoader("spell_xt002_stand") { }
-
- class spell_xt002_stand_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_xt002_stand_SpellScript);
-
- void HandleScript(SpellEffIndex /*eff*/)
- {
- Creature* target = GetHitCreature();
- if (!target)
- return;
-
- target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
- target->SetByteValue(UNIT_FIELD_BYTES_1, 0, UNIT_STAND_STATE_STAND);
- }
-
- void Register() override
- {
- OnEffectHitTarget += SpellEffectFn(spell_xt002_stand_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
- }
- };
-
- SpellScript* GetSpellScript() const override
- {
- return new spell_xt002_stand_SpellScript();
- }
-};
-
class achievement_nerf_engineering : public AchievementCriteriaScript
{
public:
@@ -1095,7 +1096,6 @@ void AddSC_boss_xt002()
new spell_xt002_heart_overload_periodic();
new spell_xt002_tympanic_tantrum();
new spell_xt002_submerged();
- new spell_xt002_stand();
new achievement_nerf_engineering();
new achievement_heartbreaker();
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
index 9cbd7be8059..391aebf9229 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -427,9 +427,17 @@ class boss_voice_of_yogg_saron : public CreatureScript
{
boss_voice_of_yogg_saronAI(Creature* creature) : BossAI(creature, BOSS_YOGG_SARON)
{
+ Initialize();
SetCombatMovement(false);
}
+ void Initialize()
+ {
+ _guardiansCount = 0;
+ _guardianTimer = 20000;
+ _illusionShattered = false;
+ }
+
void MoveInLineOfSight(Unit* who) override
{
@@ -467,9 +475,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
instance->SetData(DATA_DRIVE_ME_CRAZY, uint32(true));
instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
- _guardiansCount = 0;
- _guardianTimer = 20000;
- _illusionShattered = false;
+ Initialize();
bool clockwise = false;
std::list<TempSummon*> clouds;
@@ -1014,7 +1020,10 @@ class boss_brain_of_yogg_saron : public CreatureScript
struct boss_brain_of_yogg_saronAI : public PassiveAI
{
- boss_brain_of_yogg_saronAI(Creature* creature) : PassiveAI(creature), _instance(creature->GetInstanceScript()), _summons(creature) { }
+ boss_brain_of_yogg_saronAI(Creature* creature) : PassiveAI(creature), _instance(creature->GetInstanceScript()), _summons(creature)
+ {
+ _tentaclesKilled = 0;
+ }
void Reset() override
{
@@ -1953,7 +1962,7 @@ class spell_yogg_saron_target_selectors : public SpellScriptLoader // 63744,
class SanityReduction : public SpellScript
{
public:
- SanityReduction() : SpellScript() { }
+ SanityReduction() : SpellScript(), _stacks(0) { }
SanityReduction(uint8 stacks) : SpellScript(), _stacks(stacks) { }
void RemoveSanity(SpellEffIndex /*effIndex*/)
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 8861b0a1332..c08e1934552 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
@@ -264,6 +264,9 @@ class npc_annhylde_the_caller : public CreatureScript
{
npc_annhylde_the_callerAI(Creature* creature) : ScriptedAI(creature)
{
+ x = 0.f;
+ y = 0.f;
+ z = 0.f;
_instance = creature->GetInstanceScript();
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
index 01532daf0cd..02cf5ade52a 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
@@ -115,7 +115,15 @@ class boss_keleseth : public CreatureScript
struct boss_kelesethAI : public BossAI
{
- boss_kelesethAI(Creature* creature) : BossAI(creature, DATA_PRINCE_KELESETH) { }
+ boss_kelesethAI(Creature* creature) : BossAI(creature, DATA_PRINCE_KELESETH)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ onTheRocks = true;
+ }
void Reset() override
{
@@ -124,7 +132,7 @@ class boss_keleseth : public CreatureScript
events.ScheduleEvent(EVENT_FROST_TOMB, urand(14, 19)*IN_MILLISECONDS);
events.ScheduleEvent(EVENT_SUMMON_SKELETONS, 6*IN_MILLISECONDS);
- onTheRocks = true;
+ Initialize();
}
void EnterCombat(Unit* who) override
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
index b8ad5d07bcb..061499f2025 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
@@ -92,20 +92,11 @@ public:
{
boss_palehoofAI(Creature* creature) : BossAI(creature, DATA_GORTOK_PALEHOOF)
{
+ Initialize();
}
- uint32 uiArcingSmashTimer;
- uint32 uiImpaleTimer;
- uint32 uiWhiteringRoarTimer;
- uint32 uiWaitingTimer;
- Phase currentPhase;
- uint8 AddCount;
- Phase Sequence[4];
-
- void Reset() override
+ void Initialize()
{
- _Reset();
-
/// There is a good reason to store them like this, we are going to shuffle the order.
for (uint32 i = PHASE_FRENZIED_WORGEN; i < PHASE_GORTOK_PALEHOOF; ++i)
Sequence[i] = Phase(i);
@@ -117,11 +108,25 @@ public:
uiImpaleTimer = 12000;
uiWhiteringRoarTimer = 10000;
- me->GetMotionMaster()->MoveTargetedHome();
-
AddCount = 0;
currentPhase = PHASE_NONE;
+ }
+
+ uint32 uiArcingSmashTimer;
+ uint32 uiImpaleTimer;
+ uint32 uiWhiteringRoarTimer;
+ Phase currentPhase;
+ uint8 AddCount;
+ Phase Sequence[4];
+
+ void Reset() override
+ {
+ _Reset();
+
+ Initialize();
+
+ me->GetMotionMaster()->MoveTargetedHome();
for (uint8 i = DATA_FRENZIED_WORGEN; i <= DATA_FEROCIOUS_RHINO; ++i)
if (Creature* temp = ObjectAccessor::GetCreature(*me, instance->GetGuidData(i)))
@@ -263,9 +268,17 @@ public:
{
npc_ravenous_furbolgAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ uiChainLightingTimer = 5000;
+ uiCrazedTimer = 10000;
+ uiTerrifyingRoarTimer = 15000;
+ }
+
uint32 uiChainLightingTimer;
uint32 uiCrazedTimer;
uint32 uiTerrifyingRoarTimer;
@@ -274,9 +287,7 @@ public:
void Reset() override
{
- uiChainLightingTimer = 5000;
- uiCrazedTimer = 10000;
- uiTerrifyingRoarTimer = 15000;
+ Initialize();
me->GetMotionMaster()->MoveTargetedHome();
@@ -371,9 +382,17 @@ public:
{
npc_frenzied_worgenAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ uiMortalWoundTimer = 5000;
+ uiEnrage1Timer = 15000;
+ uiEnrage2Timer = 10000;
+ }
+
uint32 uiMortalWoundTimer;
uint32 uiEnrage1Timer;
uint32 uiEnrage2Timer;
@@ -382,9 +401,7 @@ public:
void Reset() override
{
- uiMortalWoundTimer = 5000;
- uiEnrage1Timer = 15000;
- uiEnrage2Timer = 10000;
+ Initialize();
me->GetMotionMaster()->MoveTargetedHome();
@@ -481,9 +498,17 @@ public:
{
npc_ferocious_rhinoAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ uiStompTimer = 10000;
+ uiGoreTimer = 15000;
+ uiGrievousWoundTimer = 20000;
+ }
+
uint32 uiStompTimer;
uint32 uiGoreTimer;
uint32 uiGrievousWoundTimer;
@@ -492,9 +517,7 @@ public:
void Reset() override
{
- uiStompTimer = 10000;
- uiGoreTimer = 15000;
- uiGrievousWoundTimer = 20000;
+ Initialize();
me->GetMotionMaster()->MoveTargetedHome();
@@ -596,9 +619,17 @@ public:
{
npc_massive_jormungarAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ uiAcidSpitTimer = 3000;
+ uiAcidSplatterTimer = 12000;
+ uiPoisonBreathTimer = 10000;
+ }
+
uint32 uiAcidSpitTimer;
uint32 uiAcidSplatterTimer;
uint32 uiPoisonBreathTimer;
@@ -607,9 +638,7 @@ public:
void Reset() override
{
- uiAcidSpitTimer = 3000;
- uiAcidSplatterTimer = 12000;
- uiPoisonBreathTimer = 10000;
+ Initialize();
me->GetMotionMaster()->MoveTargetedHome();
@@ -697,17 +726,23 @@ public:
{
npc_palehoof_orbAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ currentPhase = PHASE_NONE;
+ SummonTimer = 5000;
+ }
+
InstanceScript* instance;
uint32 SummonTimer;
Phase currentPhase;
void Reset() override
{
- currentPhase = PHASE_NONE;
- SummonTimer = 5000;
+ Initialize();
//! HACK: Creature's can't have MOVEMENTFLAG_FLYING
me->AddUnitMovementFlag(MOVEMENTFLAG_FLYING);
me->RemoveAurasDueToSpell(SPELL_ORB_VISUAL);
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index fb40f794fd5..5d6a2416d73 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -169,7 +169,23 @@ public:
{
boss_skadiAI(Creature* creature) : ScriptedAI(creature), Summons(me)
{
+ Initialize();
instance = creature->GetInstanceScript();
+ m_uiMovementTimer = 0;
+ m_uiSummonTimer = 0;
+ }
+
+ void Initialize()
+ {
+ m_uiCrushTimer = 8000;
+ m_uiPoisonedSpearTimer = 10000;
+ m_uiWhirlwindTimer = 20000;
+ m_uiMountTimer = 3000;
+ m_uiWaypointId = 0;
+ m_bSaidEmote = false;
+ m_uiSpellHitCount = 0;
+
+ Phase = SKADI;
}
InstanceScript* instance;
@@ -190,15 +206,7 @@ public:
void Reset() override
{
- m_uiCrushTimer = 8000;
- m_uiPoisonedSpearTimer = 10000;
- m_uiWhirlwindTimer = 20000;
- m_uiMountTimer = 3000;
- m_uiWaypointId = 0;
- m_bSaidEmote = false;
- m_uiSpellHitCount = 0;
-
- Phase = SKADI;
+ Initialize();
Summons.DespawnAll();
me->SetSpeed(MOVE_FLIGHT, 3.0f);
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
index d69f0885f58..bf9d9eaa43b 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
@@ -137,13 +137,20 @@ class boss_svala : public CreatureScript
{
boss_svalaAI(Creature* creature) : BossAI(creature, DATA_SVALA_SORROWGRAVE)
{
+ Initialize();
_introCompleted = false;
}
+ void Initialize()
+ {
+ _arthasGUID.Clear();
+ _sacrificed = false;
+ }
+
void Reset() override
{
_Reset();
- _sacrificed = false;
+
SetCombatMovement(true);
if (_introCompleted)
@@ -153,7 +160,7 @@ class boss_svala : public CreatureScript
me->SetDisableGravity(events.IsInPhase(NORMAL));
- _arthasGUID.Clear();
+ Initialize();
instance->SetGuidData(DATA_SACRIFICED_PLAYER, ObjectGuid::Empty);
}
@@ -398,17 +405,23 @@ class npc_ritual_channeler : public CreatureScript
{
npc_ritual_channelerAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
SetCombatMovement(false);
}
+ void Initialize()
+ {
+ paralyzeTimer = 1600;
+ }
+
InstanceScript* instance;
uint32 paralyzeTimer;
void Reset() override
{
- paralyzeTimer = 1600;
+ Initialize();
if (IsHeroic())
DoCast(me, SPELL_SHADOWS_IN_THE_DARK);
@@ -514,16 +527,24 @@ class npc_scourge_hulk : public CreatureScript
struct npc_scourge_hulkAI : public ScriptedAI
{
- npc_scourge_hulkAI(Creature* creature) : ScriptedAI(creature) { }
+ npc_scourge_hulkAI(Creature* creature) : ScriptedAI(creature)
+ {
+ Initialize();
+ }
+
+ void Initialize()
+ {
+ mightyBlow = urand(4000, 9000);
+ volatileInfection = urand(10000, 14000);
+ killedByRitualStrike = false;
+ }
uint32 mightyBlow;
uint32 volatileInfection;
void Reset() override
{
- mightyBlow = urand(4000, 9000);
- volatileInfection = urand(10000, 14000);
- killedByRitualStrike = false;
+ Initialize();
}
uint32 GetData(uint32 type) const override
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
index 9521d0cf4cf..c4312e08704 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
@@ -15,22 +15,16 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* Script Data Start
-SDName: Boss ymiron
-SDAuthor: LordVanMartin
-SD%Complete:
-SDComment:
-SDCategory:
-Script Data End */
-
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "utgarde_pinnacle.h"
#include "SpellInfo.h"
+#include "SpellScript.h"
enum Spells
{
SPELL_BANE = 48294,
+ SPELL_BANE_HIT = 59203, // Checked for King's Bane achievement.
SPELL_DARK_SLASH = 48292,
SPELL_FETID_ROT = 48291,
SPELL_SCREAMS_OF_THE_DEAD = 51750,
@@ -47,8 +41,7 @@ enum Spells
SPELL_SPIRIT_FOUNT = 48380
};
-//not in db
-enum Yells
+enum Texts
{
SAY_AGGRO = 0,
SAY_SLAY = 1,
@@ -59,18 +52,27 @@ enum Yells
SAY_SUMMON_TORGYN = 6
};
-enum Creatures
+enum Events
{
- NPC_BJORN = 27303,
- NPC_BJORN_VISUAL = 27304,
- NPC_HALDOR = 27307,
- NPC_HALDOR_VISUAL = 27310,
- NPC_RANULF = 27308,
- NPC_RANULF_VISUAL = 27311,
- NPC_TORGYN = 27309,
- NPC_TORGYN_VISUAL = 27312,
- NPC_SPIRIT_FOUNT = 27339,
- NPC_AVENGING_SPIRIT = 27386
+ EVENT_BANE = 1,
+ EVENT_FETID_ROT,
+ EVENT_DARK_SLASH,
+ EVENT_ANCESTORS_VENGEANCE,
+ EVENT_RESUME_COMBAT, // Handles react state and schedules the next event after roleplay ends.
+ EVENT_BJORN_SPIRIT_FOUNT,
+ EVENT_HALDOR_SPIRIT_STRIKE,
+ EVENT_RANULF_SPIRIT_BURST,
+ EVENT_TORGYN_SUMMON_AVENGING_SPIRITS
+};
+
+enum EventGroups
+{
+ EVENT_GROUP_BASE_SPELLS = 1
+};
+
+enum MovePoints
+{
+ POINT_BOAT
};
struct ActiveBoatStruct
@@ -78,14 +80,15 @@ struct ActiveBoatStruct
uint32 npc;
int32 say;
float MoveX, MoveY, MoveZ, SpawnX, SpawnY, SpawnZ, SpawnO;
+ uint32 event;
};
static ActiveBoatStruct ActiveBoat[4] =
{
- {NPC_BJORN_VISUAL, SAY_SUMMON_BJORN, 404.379f, -335.335f, 104.756f, 413.594f, -335.408f, 107.995f, 3.157f},
- {NPC_HALDOR_VISUAL, SAY_SUMMON_HALDOR, 380.813f, -335.069f, 104.756f, 369.994f, -334.771f, 107.995f, 6.232f},
- {NPC_RANULF_VISUAL, SAY_SUMMON_RANULF, 381.546f, -314.362f, 104.756f, 370.841f, -314.426f, 107.995f, 6.232f},
- {NPC_TORGYN_VISUAL, SAY_SUMMON_TORGYN, 404.310f, -314.761f, 104.756f, 413.992f, -314.703f, 107.995f, 3.157f}
+ {NPC_BJORN_VISUAL, SAY_SUMMON_BJORN, 404.379f, -335.335f, 104.756f, 413.594f, -335.408f, 107.995f, 3.157f, EVENT_BJORN_SPIRIT_FOUNT},
+ {NPC_HALDOR_VISUAL, SAY_SUMMON_HALDOR, 380.813f, -335.069f, 104.756f, 369.994f, -334.771f, 107.995f, 6.232f, EVENT_HALDOR_SPIRIT_STRIKE},
+ {NPC_RANULF_VISUAL, SAY_SUMMON_RANULF, 381.546f, -314.362f, 104.756f, 370.841f, -314.426f, 107.995f, 6.232f, EVENT_RANULF_SPIRIT_BURST},
+ {NPC_TORGYN_VISUAL, SAY_SUMMON_TORGYN, 404.310f, -314.761f, 104.756f, 413.992f, -314.703f, 107.995f, 3.157f, EVENT_TORGYN_SUMMON_AVENGING_SPIRITS}
};
enum Misc
@@ -102,84 +105,49 @@ public:
{
boss_ymironAI(Creature* creature) : BossAI(creature, DATA_KING_YMIRON)
{
+ Initialize();
+ // This ensures a random sequence of ancestors. Not sure if the order should change on reset or not, reason why this is left out of Initialize().
for (int i = 0; i < 4; ++i)
- m_uiActiveOrder[i] = i;
+ ActiveOrder[i] = i;
for (int i = 0; i < 3; ++i)
{
int r = i + (rand32() % (4 - i));
- int temp = m_uiActiveOrder[i];
- m_uiActiveOrder[i] = m_uiActiveOrder[r];
- m_uiActiveOrder[r] = temp;
+ int temp = ActiveOrder[i];
+ ActiveOrder[i] = ActiveOrder[r];
+ ActiveOrder[r] = temp;
}
}
- bool m_bIsWalking;
- bool m_bIsPause;
- bool m_bIsActiveWithBJORN;
- bool m_bIsActiveWithHALDOR;
- bool m_bIsActiveWithRANULF;
- bool m_bIsActiveWithTORGYN;
- bool kingsBane; // Achievement King's Bane
-
- uint8 m_uiActiveOrder[4];
- uint8 m_uiActivedNumber;
-
- uint32 m_uiFetidRot_Timer;
- uint32 m_uiBane_Timer;
- uint32 m_uiDarkSlash_Timer;
- uint32 m_uiAncestors_Vengeance_Timer;
-
- uint32 m_uiAbility_BJORN_Timer;
- uint32 m_uiAbility_HALDOR_Timer;
- uint32 m_uiAbility_RANULF_Timer;
- uint32 m_uiAbility_TORGYN_Timer;
-
- uint32 m_uiPause_Timer;
- uint32 m_uiHealthAmountModifier;
- uint32 m_uiHealthAmountMultipler;
-
- ObjectGuid m_uiActivedCreatureGUID;
- ObjectGuid m_uiOrbGUID;
+ void Initialize()
+ {
+ kingsBane = true;
+ ActivedNumber = 0;
+ HealthAmountModifier = 1;
+ HealthAmountMultipler = DUNGEON_MODE(20, 25);
+ ActiveAncestorGUID.Clear();
+ SpiritFountGUID.Clear();
+ }
void Reset() override
{
_Reset();
- m_bIsWalking = false;
- m_bIsPause = false;
- m_bIsActiveWithBJORN = false;
- m_bIsActiveWithHALDOR = false;
- m_bIsActiveWithRANULF = false;
- m_bIsActiveWithTORGYN = false;
- kingsBane = true;
-
- m_uiFetidRot_Timer = urand(8000, 13000);
- m_uiBane_Timer = urand(18000, 23000);
- m_uiDarkSlash_Timer = urand(28000, 33000);
- m_uiAncestors_Vengeance_Timer = DUNGEON_MODE(60000, 45000);
- m_uiPause_Timer = 0;
-
- m_uiAbility_BJORN_Timer = 0;
- m_uiAbility_HALDOR_Timer = 0;
- m_uiAbility_RANULF_Timer = 0;
- m_uiAbility_TORGYN_Timer = 0;
-
- m_uiActivedNumber = 0;
- m_uiHealthAmountModifier = 1;
- m_uiHealthAmountMultipler = DUNGEON_MODE(20, 25);
-
- m_uiActivedCreatureGUID.Clear();
- m_uiOrbGUID.Clear();
+ Initialize();
+ me->SetReactState(REACT_AGGRESSIVE);
}
void EnterCombat(Unit* /*who*/) override
{
_EnterCombat();
Talk(SAY_AGGRO);
+ events.ScheduleEvent(EVENT_BANE, urand(18000, 23000), EVENT_GROUP_BASE_SPELLS);
+ events.ScheduleEvent(EVENT_FETID_ROT, urand(8000, 13000), EVENT_GROUP_BASE_SPELLS);
+ events.ScheduleEvent(EVENT_DARK_SLASH, urand(28000, 33000), EVENT_GROUP_BASE_SPELLS);
+ events.ScheduleEvent(EVENT_ANCESTORS_VENGEANCE, DUNGEON_MODE(60000, 45000), EVENT_GROUP_BASE_SPELLS);
}
void SpellHitTarget(Unit* who, SpellInfo const* spell) override
{
- if (who && who->GetTypeId() == TYPEID_PLAYER && spell->Id == 59302)
+ if (who && who->GetTypeId() == TYPEID_PLAYER && spell->Id == SPELL_BANE_HIT)
kingsBane = false;
}
@@ -191,161 +159,115 @@ public:
return 0;
}
- void UpdateAI(uint32 diff) override
+ void MovementInform(uint32 type, uint32 pointId) override
{
- if (m_bIsWalking)
+ if (type != POINT_MOTION_TYPE)
+ return;
+
+ if (pointId == POINT_BOAT) // Check might not be needed.
{
- if (m_uiPause_Timer <= diff)
+ Talk(ActiveBoat[ActiveOrder[ActivedNumber]].say);
+ if (Creature* ancestor = me->SummonCreature(ActiveBoat[ActiveOrder[ActivedNumber]].npc, ActiveBoat[ActiveOrder[ActivedNumber]].SpawnX, ActiveBoat[ActiveOrder[ActivedNumber]].SpawnY, ActiveBoat[ActiveOrder[ActivedNumber]].SpawnZ, ActiveBoat[ActiveOrder[ActivedNumber]].SpawnO, TEMPSUMMON_CORPSE_DESPAWN, 0))
{
- 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))
- {
- m_uiActivedCreatureGUID = temp->GetGUID();
- temp->CastSpell(me, SPELL_CHANNEL_SPIRIT_TO_YMIRON, true);
- temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
- temp->SetDisableGravity(true);
- switch (m_uiActiveOrder[m_uiActivedNumber])
- {
- case 0: m_bIsActiveWithBJORN = true; break;
- case 1: m_bIsActiveWithHALDOR = true; break;
- case 2: m_bIsActiveWithRANULF = true; break;
- case 3: m_bIsActiveWithTORGYN = true; break;
- }
- }
-
- m_bIsPause = true;
- m_bIsWalking = false;
- m_uiPause_Timer = 3000;
- } else m_uiPause_Timer -= diff;
- return;
+ DoCast(ancestor, SPELL_CHANNEL_YMIRON_TO_SPIRIT);
+ ancestor->CastSpell(me, SPELL_CHANNEL_SPIRIT_TO_YMIRON, true);
+ ancestor->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
+ ancestor->SetDisableGravity(true);
+ ActiveAncestorGUID = ancestor->GetGUID();
+ }
+ events.ScheduleEvent(EVENT_RESUME_COMBAT, 5000);
}
- else if (m_bIsPause)
+ }
+
+ void JustSummoned(Creature* summon) override
+ {
+ switch (summon->GetEntry())
{
- if (m_uiPause_Timer <= diff)
- {
- m_uiAbility_BJORN_Timer = 5000;
- m_uiAbility_HALDOR_Timer = 5000;
- m_uiAbility_RANULF_Timer = 5000;
- m_uiAbility_TORGYN_Timer = 5000;
-
- m_bIsPause = false;
- m_uiPause_Timer = 0;
- } else m_uiPause_Timer -= diff;
- return;
+ case NPC_SPIRIT_FOUNT:
+ summon->CastSpell(summon, SPELL_SPIRIT_FOUNT, true);
+ summon->SetDisplayId(11686);
+ SpiritFountGUID = summon->GetGUID();
+ break;
+ case NPC_AVENGING_SPIRIT:
+ if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
+ {
+ summon->AddThreat(target, 0.0f);
+ summon->AI()->AttackStart(target);
+ }
+ break;
+ default:
+ break;
}
- //Return since we have no target
- if (!UpdateVictim())
- return;
+ summons.Summon(summon);
+ }
- if (!m_bIsPause)
+ void DamageTaken(Unit* /*attacker*/, uint32& damage) override
+ {
+ if (me->HealthBelowPctDamaged(100 - HealthAmountMultipler * HealthAmountModifier, damage))
{
- // Normal spells ------------------------------------------------------------------------
- if (m_uiBane_Timer <= diff)
- {
- DoCast(me, SPELL_BANE);
- m_uiBane_Timer = urand(20000, 25000);
- } else m_uiBane_Timer -= diff;
+ uint8 Order = HealthAmountModifier - 1;
+ ++HealthAmountModifier;
- if (m_uiFetidRot_Timer <= diff)
- {
- DoCastVictim(SPELL_FETID_ROT);
- m_uiFetidRot_Timer = urand(10000, 15000);
- } else m_uiFetidRot_Timer -= diff;
+ me->InterruptNonMeleeSpells(true);
+ DoCast(me, SPELL_SCREAMS_OF_THE_DEAD);
- if (m_uiDarkSlash_Timer <= diff)
- {
- DoCastVictim(SPELL_DARK_SLASH);
- m_uiDarkSlash_Timer = urand(30000, 35000);
- } else m_uiDarkSlash_Timer -= diff;
+ me->AttackStop();
+ me->SetReactState(REACT_PASSIVE);
+ me->GetMotionMaster()->MovePoint(POINT_BOAT, ActiveBoat[ActiveOrder[Order]].MoveX, ActiveBoat[ActiveOrder[Order]].MoveY, ActiveBoat[ActiveOrder[Order]].MoveZ);
- if (m_uiAncestors_Vengeance_Timer <= diff)
- {
- DoCast(me, SPELL_ANCESTORS_VENGEANCE);
- m_uiAncestors_Vengeance_Timer = DUNGEON_MODE(urand(60000, 65000), urand(45000, 50000));
- } else m_uiAncestors_Vengeance_Timer -= diff;
+ DespawnBoatGhosts(ActiveAncestorGUID);
+ DespawnBoatGhosts(SpiritFountGUID);
- // Abilities ------------------------------------------------------------------------------
- if (m_bIsActiveWithBJORN && m_uiAbility_BJORN_Timer <= diff)
- {
- //DoCast(me, SPELL_SUMMON_SPIRIT_FOUNT); // works fine, but using summon has better control
- if (Creature* temp = me->SummonCreature(NPC_SPIRIT_FOUNT, 385.0f + rand32() % 10, -330.0f + rand32() % 10, 104.756f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 180000))
- {
- temp->SetSpeed(MOVE_RUN, 0.4f);
- temp->CastSpell(temp, SPELL_SPIRIT_FOUNT, true);
- temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
- temp->SetDisplayId(11686);
- m_uiOrbGUID = temp->GetGUID();
- }
- m_bIsActiveWithBJORN = false; // only one orb
- } else m_uiAbility_BJORN_Timer -= diff;
+ events.CancelEvent(ActiveBoat[ActiveOrder[ActivedNumber]].event); // Cancels the event started on the previous transition.
+ events.DelayEvents(10000, EVENT_GROUP_BASE_SPELLS);
- if (m_bIsActiveWithHALDOR && m_uiAbility_HALDOR_Timer <= diff)
- {
- DoCastVictim(SPELL_SPIRIT_STRIKE);
- m_uiAbility_HALDOR_Timer = 5000; // overtime
- } else m_uiAbility_HALDOR_Timer -= diff;
+ ActivedNumber = Order;
+ }
+ }
- if (m_bIsActiveWithRANULF && m_uiAbility_RANULF_Timer <= diff)
- {
+ void ExecuteEvent(uint32 eventId) override
+ {
+ switch (eventId)
+ {
+ case EVENT_BANE:
+ DoCast(SPELL_BANE);
+ events.ScheduleEvent(EVENT_BANE, urand(20000, 25000));
+ break;
+ case EVENT_FETID_ROT:
+ DoCastVictim(SPELL_FETID_ROT);
+ events.ScheduleEvent(EVENT_FETID_ROT, urand(10000, 15000));
+ break;
+ case EVENT_DARK_SLASH:
+ DoCastVictim(SPELL_DARK_SLASH);
+ events.ScheduleEvent(EVENT_DARK_SLASH, urand(30000, 35000));
+ break;
+ case EVENT_ANCESTORS_VENGEANCE:
+ DoCast(me, SPELL_ANCESTORS_VENGEANCE);
+ events.ScheduleEvent(EVENT_ANCESTORS_VENGEANCE, DUNGEON_MODE(urand(60000, 65000), urand(45000, 50000)));
+ break;
+ case EVENT_RESUME_COMBAT:
+ me->SetReactState(REACT_AGGRESSIVE);
+ events.ScheduleEvent(ActiveBoat[ActiveOrder[ActivedNumber]].event, 5000);
+ break;
+ case EVENT_BJORN_SPIRIT_FOUNT:
+ DoCast(SPELL_SUMMON_SPIRIT_FOUNT);
+ break;
+ case EVENT_HALDOR_SPIRIT_STRIKE:
+ DoCastVictim(SPELL_SPIRIT_STRIKE);
+ events.ScheduleEvent(EVENT_HALDOR_SPIRIT_STRIKE, 5000);
+ break;
+ case EVENT_RANULF_SPIRIT_BURST:
DoCast(me, SPELL_SPIRIT_BURST);
- m_uiAbility_RANULF_Timer = 10000; // overtime
- } else m_uiAbility_RANULF_Timer -= diff;
-
- if (m_bIsActiveWithTORGYN && m_uiAbility_TORGYN_Timer <= diff)
- {
- float x, y, z;
- x = me->GetPositionX()-5;
- y = me->GetPositionY()-5;
- z = me->GetPositionZ();
+ events.ScheduleEvent(EVENT_RANULF_SPIRIT_BURST, 10000);
+ break;
+ case EVENT_TORGYN_SUMMON_AVENGING_SPIRITS:
for (uint8 i = 0; i < 4; ++i)
- {
- //DoCast(me, SPELL_SUMMON_AVENGING_SPIRIT); // works fine, but using summon has better control
- if (Creature* temp = me->SummonCreature(NPC_AVENGING_SPIRIT, x + rand32() % 10, y + rand32() % 10, z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
- {
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- {
- temp->AddThreat(target, 0.0f);
- temp->AI()->AttackStart(target);
- }
- }
- }
- m_uiAbility_TORGYN_Timer = 15000; // overtime
- } else m_uiAbility_TORGYN_Timer -= diff;
-
- // Health check -----------------------------------------------------------------------------
- if (me->HealthBelowPct(100 - m_uiHealthAmountMultipler * m_uiHealthAmountModifier))
- {
- uint8 m_uiOrder = m_uiHealthAmountModifier - 1;
- ++m_uiHealthAmountModifier;
-
- me->InterruptNonMeleeSpells(true);
- DoCast(me, SPELL_SCREAMS_OF_THE_DEAD);
- me->GetMotionMaster()->Clear();
- me->StopMoving();
- me->AttackStop();
- me->GetMotionMaster()->MovePoint(0, ActiveBoat[m_uiActiveOrder[m_uiOrder]].MoveX, ActiveBoat[m_uiActiveOrder[m_uiOrder]].MoveY, ActiveBoat[m_uiActiveOrder[m_uiOrder]].MoveZ);
-
- DespawnBoatGhosts(m_uiActivedCreatureGUID);
- DespawnBoatGhosts(m_uiOrbGUID);
-
- m_bIsActiveWithBJORN = false;
- m_bIsActiveWithHALDOR = false;
- m_bIsActiveWithRANULF = false;
- m_bIsActiveWithTORGYN = false;
-
- m_uiBane_Timer += 8000;
- m_uiFetidRot_Timer += 8000;
- m_uiDarkSlash_Timer += 8000;
- m_uiAncestors_Vengeance_Timer += 8000;
-
- m_uiActivedNumber = m_uiOrder;
- m_bIsWalking = true;
- m_uiPause_Timer = 2000;
- return;
- }
- DoMeleeAttackIfReady();
+ DoCast(SPELL_SUMMON_AVENGING_SPIRIT);
+ events.ScheduleEvent(EVENT_TORGYN_SUMMON_AVENGING_SPIRITS, 15000);
+ break;
+ default:
+ break;
}
}
@@ -361,14 +283,24 @@ public:
Talk(SAY_SLAY);
}
- void DespawnBoatGhosts(ObjectGuid& m_uiCreatureGUID)
+ void DespawnBoatGhosts(ObjectGuid& CreatureGUID)
{
- if (m_uiCreatureGUID)
- if (Creature* temp = ObjectAccessor::GetCreature(*me, m_uiCreatureGUID))
+ // @todo: fire visual after ancestor despawns.
+ if (CreatureGUID)
+ if (Creature* temp = ObjectAccessor::GetCreature(*me, CreatureGUID))
temp->DisappearAndDie();
- m_uiCreatureGUID.Clear();
+ CreatureGUID.Clear();
}
+
+ private:
+ bool kingsBane; // Achievement King's Bane
+ uint8 ActiveOrder[4];
+ uint8 ActivedNumber;
+ uint32 HealthAmountModifier;
+ uint32 HealthAmountMultipler;
+ ObjectGuid ActiveAncestorGUID;
+ ObjectGuid SpiritFountGUID;
};
CreatureAI* GetAI(Creature* creature) const override
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
index cccfcede80b..5373446ba02 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
@@ -59,7 +59,19 @@ enum CreatureIds
NPC_RAVENOUS_FURBOLG = 26684,
NPC_MASSIVE_JORMUNGAR = 26685,
NPC_FEROCIOUS_RHINO = 26686,
- NPC_PALEHOOF_ORB = 26688
+ NPC_PALEHOOF_ORB = 26688,
+
+ // Ymiron
+ NPC_BJORN = 27303,
+ NPC_BJORN_VISUAL = 27304,
+ NPC_HALDOR = 27307,
+ NPC_HALDOR_VISUAL = 27310,
+ NPC_RANULF = 27308,
+ NPC_RANULF_VISUAL = 27311,
+ NPC_TORGYN = 27309,
+ NPC_TORGYN_VISUAL = 27312,
+ NPC_SPIRIT_FOUNT = 27339,
+ NPC_AVENGING_SPIRIT = 27386
};
enum GameObjectIds
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
index 1118af13777..bacb63b73bc 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
@@ -184,13 +184,19 @@ class npc_tempest_minion : public CreatureScript
{
npc_tempest_minionAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ OverchargedTimer = 0;
+ }
+
void Reset() override
{
events.Reset();
- OverchargedTimer = 0;
+ Initialize();
}
void JustDied(Unit* /*killer*/) override
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
index 9f9d5104d7d..a7895b8d506 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
@@ -185,14 +185,20 @@ public:
{
npc_frozen_orbAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
}
- void Reset() override
+ void Initialize()
{
done = false;
killTimer = 60000; // if after this time there is no victim -> destroy!
}
+ void Reset() override
+ {
+ Initialize();
+ }
+
void EnterCombat(Unit* /*who*/) override
{
DoZoneInCombat();
diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
index cca2b347af7..5857f695023 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
@@ -57,9 +57,19 @@ public:
{
boss_cyanigosaAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ uiArcaneVacuumTimer = 10000;
+ uiBlizzardTimer = 15000;
+ uiManaDestructionTimer = 30000;
+ uiTailSweepTimer = 20000;
+ uiUncontrollableEnergyTimer = 25000;
+ }
+
uint32 uiArcaneVacuumTimer;
uint32 uiBlizzardTimer;
uint32 uiManaDestructionTimer;
@@ -70,11 +80,7 @@ public:
void Reset() override
{
- uiArcaneVacuumTimer = 10000;
- uiBlizzardTimer = 15000;
- uiManaDestructionTimer = 30000;
- uiTailSweepTimer = 20000;
- uiUncontrollableEnergyTimer = 25000;
+ Initialize();
instance->SetData(DATA_CYANIGOSA_EVENT, NOT_STARTED);
}
diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp
index 87d34efe74f..bbb8c758bb1 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp
@@ -56,9 +56,19 @@ public:
{
boss_erekemAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ uiBloodlustTimer = 15000;
+ uiChainHealTimer = 0;
+ uiEarthShockTimer = urand(2000, 8000);
+ uiLightningBoltTimer = urand(5000, 10000);
+ uiEarthShieldTimer = 20000;
+ }
+
uint32 uiBloodlustTimer;
uint32 uiChainHealTimer;
uint32 uiEarthShockTimer;
@@ -69,11 +79,7 @@ public:
void Reset() override
{
- uiBloodlustTimer = 15000;
- uiChainHealTimer = 0;
- uiEarthShockTimer = urand(2000, 8000);
- uiLightningBoltTimer = urand(5000, 10000);
- uiEarthShieldTimer = 20000;
+ Initialize();
if (instance->GetData(DATA_WAVE_COUNT) == 6)
instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED);
else if (instance->GetData(DATA_WAVE_COUNT) == 12)
@@ -264,9 +270,17 @@ public:
{
npc_erekem_guardAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ uiStrikeTimer = urand(4000, 8000);
+ uiHowlingScreechTimer = urand(8000, 13000);
+ uiGushingWoundTimer = urand(1000, 3000);
+ }
+
uint32 uiGushingWoundTimer;
uint32 uiHowlingScreechTimer;
uint32 uiStrikeTimer;
@@ -275,9 +289,7 @@ public:
void Reset() override
{
- uiStrikeTimer = urand(4000, 8000);
- uiHowlingScreechTimer = urand(8000, 13000);
- uiGushingWoundTimer = urand(1000, 3000);
+ Initialize();
}
void AttackStart(Unit* who) override
diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
index d556d19f670..50a65920876 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
@@ -85,9 +85,19 @@ public:
{
boss_ichoronAI(Creature* creature) : ScriptedAI(creature), m_waterElements(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ bIsExploded = false;
+ bIsFrenzy = false;
+ dehydration = true;
+ uiBubbleCheckerTimer = 1000;
+ uiWaterBoltVolleyTimer = urand(10000, 15000);
+ }
+
bool bIsExploded;
bool bIsFrenzy;
bool dehydration;
@@ -101,11 +111,7 @@ public:
void Reset() override
{
- bIsExploded = false;
- bIsFrenzy = false;
- dehydration = true;
- uiBubbleCheckerTimer = 1000;
- uiWaterBoltVolleyTimer = urand(10000, 15000);
+ Initialize();
me->SetVisible(true);
DespawnWaterElements();
@@ -340,16 +346,22 @@ public:
{
npc_ichor_globuleAI(Creature* creature) : ScriptedAI(creature)
{
+ Initialize();
instance = creature->GetInstanceScript();
}
+ void Initialize()
+ {
+ uiRangeCheck_Timer = 1000;
+ }
+
InstanceScript* instance;
uint32 uiRangeCheck_Timer;
void Reset() override
{
- uiRangeCheck_Timer = 1000;
+ Initialize();
DoCast(me, SPELL_WATER_GLOBULE);
}
diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
index 203bf6f1be6..53fe1500624 100644
--- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp
+++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
@@ -977,15 +977,15 @@ public:
void HandleScript(SpellEffIndex /*effIndex*/)
{
- if (Player* player = GetHitUnit()->ToPlayer())
+ if (Unit* target = GetHitUnit())
{
switch (GetSpellInfo()->Id)
{
case SPELL_CORRECT_TRACKS:
- player->MonsterSay(sObjectMgr->GetTrinityStringForDBCLocale(SAY_CORRECT_TRACKS), LANG_UNIVERSAL, player);
+ target->Say(SAY_CORRECT_TRACKS, target);
break;
case SPELL_INCORRECT_TRACKS:
- player->MonsterSay(sObjectMgr->GetTrinityStringForDBCLocale(SAY_INCORRECT_TRACKS), LANG_UNIVERSAL, player);
+ target->Say(SAY_INCORRECT_TRACKS, target);
break;
default:
break;
diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
index 3f08ecad7b7..4ec6aed9655 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
@@ -31,8 +31,6 @@ EndScriptData */
#include "Player.h"
#include "SpellInfo.h"
-#define EMOTE_UNABLE_TO_SUMMON "%s is unable to summon Maiev Shadowsong and enter Phase 4. Resetting Encounter."
-
// Other defines
#define CENTER_X 676.740f
#define CENTER_Y 305.297f
@@ -604,7 +602,7 @@ public:
if (Conversation[count].emote)
creature->HandleEmoteCommand(Conversation[count].emote); // Make the Creature do some animation!
if (Conversation[count].text.size())
- creature->MonsterYell(Conversation[count].text.c_str(), LANG_UNIVERSAL, NULL); // Have the Creature yell out some text
+ creature->Yell(Conversation[count].text.c_str(), LANG_UNIVERSAL); // Have the Creature yell out some text
if (Conversation[count].sound)
DoPlaySoundToSet(creature, Conversation[count].sound); // Play some sound on the creature
}
@@ -760,7 +758,6 @@ public:
if (!MaievGUID) // If Maiev cannot be summoned, reset the encounter and post some errors to the console.
{
EnterEvadeMode();
- me->MonsterTextEmote(EMOTE_UNABLE_TO_SUMMON, NULL);
TC_LOG_ERROR("scripts", "SD2 ERROR: Unable to summon Maiev Shadowsong (entry: 23197). Check your database to see if you have the proper SQL for Maiev Shadowsong (entry: 23197)");
}
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp
index 83b8b1847b5..05db2c12b90 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp
@@ -278,7 +278,7 @@ public:
if (continueTriggering)
{
DoCast(me, SPELL_BLESSING_OF_THE_TIDES);
- me->MonsterYell(SAY_GAIN_BLESSING_OF_TIDES, LANG_UNIVERSAL, NULL);
+ me->Yell(SAY_GAIN_BLESSING_OF_TIDES, LANG_UNIVERSAL);
DoPlaySoundToSet(me, SOUND_GAIN_BLESSING_OF_TIDES);
}
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
index a0ff469733c..83b8722ce47 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
@@ -234,7 +234,7 @@ public:
if (SpoutTimer <= diff)
{
- me->MonsterTextEmote(EMOTE_SPOUT, NULL, true);
+ me->TextEmote(EMOTE_SPOUT, nullptr, true);
me->SetReactState(REACT_PASSIVE);
me->GetMotionMaster()->MoveRotate(20000, urand(0, 1) ? ROTATE_DIRECTION_LEFT : ROTATE_DIRECTION_RIGHT);
SpoutTimer = 45000;
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp
index 82f101980fe..5baaebc0d7b 100644
--- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp
@@ -40,7 +40,6 @@ enum Says
enum Spells
{
SPELL_MORTAL_WOUND = 30641,
- H_SPELL_MORTAL_WOUND = 36814,
SPELL_SURGE = 34645,
SPELL_RETALIATION = 22857
};
@@ -78,7 +77,6 @@ class boss_watchkeeper_gargolmar : public CreatureScript
}
void MoveInLineOfSight(Unit* who) override
-
{
if (!me->GetVictim() && me->CanCreatureAttack(who))
{
diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp
index 7951e25d675..db0159d1a2d 100644
--- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp
@@ -176,7 +176,7 @@ class instance_magtheridons_lair : public InstanceMapScript
Creature* Magtheridon = instance->GetCreature(MagtheridonGUID);
if (Magtheridon && Magtheridon->IsAlive())
{
- Magtheridon->MonsterTextEmote(EMOTE_BONDS_WEAKEN, NULL);
+ Magtheridon->TextEmote(EMOTE_BONDS_WEAKEN);
CageTimer = 120000;
}
HandleGameObject(DoorGUID, false);
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index e96e325b933..e5ef3d5b7b7 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -3682,6 +3682,37 @@ class spell_gen_gm_freeze : public SpellScriptLoader
}
};
+class spell_gen_stand : public SpellScriptLoader
+{
+public:
+ spell_gen_stand() : SpellScriptLoader("spell_gen_stand") { }
+
+ class spell_gen_stand_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_gen_stand_SpellScript);
+
+ void HandleScript(SpellEffIndex /*eff*/)
+ {
+ Creature* target = GetHitCreature();
+ if (!target)
+ return;
+
+ target->SetByteValue(UNIT_FIELD_BYTES_1, 0, UNIT_STAND_STATE_STAND);
+ target->HandleEmoteCommand(EMOTE_STATE_NONE);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_gen_stand_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_gen_stand_SpellScript();
+ }
+};
+
void AddSC_generic_spell_scripts()
{
new spell_gen_absorb0_hitlimit1();
@@ -3763,4 +3794,5 @@ void AddSC_generic_spell_scripts()
new spell_gen_whisper_gulch_yogg_saron_whisper();
new spell_gen_eject_all_passengers();
new spell_gen_gm_freeze();
+ new spell_gen_stand();
}
diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp
index 28a16e2f1d3..00ce2cb280e 100644
--- a/src/server/scripts/Spells/spell_quest.cpp
+++ b/src/server/scripts/Spells/spell_quest.cpp
@@ -280,8 +280,8 @@ class spell_q11396_11399_force_shield_arcane_purple_x3 : public SpellScriptLoade
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
Unit* target = GetTarget();
- target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
- target->AddUnitState(UNIT_STATE_ROOT);
+ target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
+ target->AddUnitState(UNIT_STATE_ROOT);
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1777,7 +1777,7 @@ class spell_q12847_summon_soul_moveto_bunny : public SpellScriptLoader
}
};
- SpellScript *GetSpellScript() const override
+ SpellScript* GetSpellScript() const override
{
return new spell_q12847_summon_soul_moveto_bunny_SpellScript();
}
diff --git a/src/server/shared/Networking/Socket.h b/src/server/shared/Networking/Socket.h
index 6aa7974b1c1..dfff60a380b 100644
--- a/src/server/shared/Networking/Socket.h
+++ b/src/server/shared/Networking/Socket.h
@@ -116,7 +116,7 @@ public:
#ifdef BOOST_ASIO_HAS_IOCP
AsyncProcessQueue(guard);
#else
- (void)guard;
+ (void)guard;
#endif
}
@@ -148,7 +148,7 @@ protected:
return true;
_isWritingAsync = true;
-
+
#ifdef BOOST_ASIO_HAS_IOCP
MessageBuffer& buffer = _writeQueue.front();
_socket.async_write_some(boost::asio::buffer(buffer.GetReadPointer(), buffer.GetActiveSize()), std::bind(&Socket<T>::WriteHandler,
diff --git a/src/server/shared/Networking/SocketMgr.h b/src/server/shared/Networking/SocketMgr.h
index 47bd7794a4c..dbe2b8ec902 100644
--- a/src/server/shared/Networking/SocketMgr.h
+++ b/src/server/shared/Networking/SocketMgr.h
@@ -97,7 +97,7 @@ public:
int32 GetNetworkThreadCount() const { return _threadCount; }
protected:
- SocketMgr() : _threads(nullptr), _threadCount(1)
+ SocketMgr() : _acceptor(nullptr), _threads(nullptr), _threadCount(1)
{
}