aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Northrend
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2017-06-19 23:20:06 -0300
committerariel- <ariel-@users.noreply.github.com>2017-06-19 23:20:06 -0300
commit85a7d5ce9ac68b30da2277cc91d4b70358f1880d (patch)
treedf3d2084ee2e35008903c03178039b9c986e2d08 /src/server/scripts/Northrend
parent052fc24315ace866ea1cf610e85df119b68100c9 (diff)
Core: ported headers cleanup from master branch
Diffstat (limited to 'src/server/scripts/Northrend')
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h6
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp16
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp15
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp16
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp14
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp22
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp7
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h9
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp27
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp40
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp34
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp40
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp10
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp3
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp20
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h8
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp7
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp6
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp54
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp9
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp13
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp11
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h25
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp22
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp8
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp22
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp21
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp13
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h9
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp27
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp95
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp21
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp51
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp40
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp28
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp89
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h133
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp4
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp16
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp4
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp23
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h8
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp6
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp12
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp26
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp8
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h8
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp8
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp4
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.cpp53
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.h32
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp7
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp26
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h51
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp14
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp10
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp15
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp36
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp24
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp36
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h22
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp4
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp8
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp4
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp10
-rw-r--r--src/server/scripts/Northrend/Gundrak/gundrak.h4
-rw-r--r--src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp13
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp28
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp41
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp35
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp20
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp84
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp24
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp19
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp57
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp24
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp48
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp110
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp18
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp73
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h47
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp6
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp22
-rw-r--r--src/server/scripts/Northrend/IsleOfConquest/isle_of_conquest.cpp20
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp8
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp9
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp25
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp14
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp30
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp17
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp20
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp30
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp11
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp16
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_noth.cpp5
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp11
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp9
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp19
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp59
-rw-r--r--src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp13
-rw-r--r--src/server/scripts/Northrend/Naxxramas/naxxramas.h17
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp89
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h9
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp12
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp9
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp15
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp9
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_nexus_commanders.cpp4
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp7
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp5
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/nexus.h8
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp6
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp6
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp3
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp13
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp26
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp31
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/oculus.h8
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp8
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp11
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp6
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp15
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h8
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp28
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp5
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp3
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp5
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp10
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h8
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp24
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp33
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp19
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp26
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp14
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp29
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp15
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp13
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp10
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp115
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp22
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp49
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp41
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp98
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp16
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h6
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp13
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp5
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp2
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp22
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp21
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h8
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp18
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp33
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp7
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp6
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp3
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h6
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp25
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp8
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp17
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp10
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp10
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h9
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp5
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_erekem.cpp3
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp25
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp1
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_moragg.cpp3
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp8
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp1
-rw-r--r--src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp30
-rw-r--r--src/server/scripts/Northrend/VioletHold/violet_hold.cpp117
-rw-r--r--src/server/scripts/Northrend/VioletHold/violet_hold.h4
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp42
-rw-r--r--src/server/scripts/Northrend/zone_crystalsong_forest.cpp3
-rw-r--r--src/server/scripts/Northrend/zone_dalaran.cpp13
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp16
-rw-r--r--src/server/scripts/Northrend/zone_grizzly_hills.cpp23
-rw-r--r--src/server/scripts/Northrend/zone_howling_fjord.cpp12
-rw-r--r--src/server/scripts/Northrend/zone_icecrown.cpp6
-rw-r--r--src/server/scripts/Northrend/zone_sholazar_basin.cpp18
-rw-r--r--src/server/scripts/Northrend/zone_storm_peaks.cpp62
-rw-r--r--src/server/scripts/Northrend/zone_wintergrasp.cpp55
-rw-r--r--src/server/scripts/Northrend/zone_zuldrak.cpp103
185 files changed, 2145 insertions, 2003 deletions
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h
index c1bf139c070..00bd46ce2d5 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h
@@ -18,6 +18,8 @@
#ifndef AHNKAHET_H_
#define AHNKAHET_H_
+#include "CreatureAIImpl.h"
+
#define AhnKahetScriptName "instance_ahnkahet"
#define DataHeader "AK"
@@ -80,8 +82,8 @@ enum AKGameObjectIds
GO_SPHERE_2 = 193094
};
-template<class AI, class T>
-AI* GetAhnKahetAI(T* obj)
+template <class AI, class T>
+inline AI* GetAhnKahetAI(T* obj)
{
return GetInstanceAI<AI>(obj, AhnKahetScriptName);
}
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp
index f98a0b53030..f4881aaa9ed 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp
@@ -16,8 +16,10 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
#include "ahnkahet.h"
+#include "InstanceScript.h"
+#include "ScriptedCreature.h"
+#include "TemporarySummon.h"
enum Spells
{
@@ -88,22 +90,18 @@ class boss_amanitar : public CreatureScript
for (uint8 i = 0; i < 30; ++i)
{
Position pos = me->GetRandomNearPosition(30.0f);
- pos.m_positionZ = me->GetMap()->GetHeight(pos.GetPositionX(), pos.GetPositionY(), MAX_HEIGHT) + 2.0f;
+ me->UpdateGroundPositionZ(pos.GetPositionX(), pos.GetPositionY(), pos.m_positionZ);
if (Creature* trigger = me->SummonCreature(NPC_TRIGGER, pos))
{
Creature* temp1 = trigger->FindNearestCreature(NPC_HEALTHY_MUSHROOM, 4.0f, true);
Creature* temp2 = trigger->FindNearestCreature(NPC_POISONOUS_MUSHROOM, 4.0f, true);
- if (temp1 || temp2)
- {
- trigger->DisappearAndDie();
- }
- else
+ if (!temp1 && !temp2)
{
u = 1 - u;
- trigger->DisappearAndDie();
me->SummonCreature(u > 0 ? NPC_POISONOUS_MUSHROOM : NPC_HEALTHY_MUSHROOM, pos, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60 * IN_MILLISECONDS);
}
+ trigger->DespawnOrUnsummon();
}
}
}
@@ -227,7 +225,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_amanitar_mushroomsAI(creature);
+ return GetAhnKahetAI<npc_amanitar_mushroomsAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
index 242dd354a00..6eb1462da41 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
@@ -224,7 +224,7 @@ class npc_ahnkahar_nerubian : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_ahnkahar_nerubianAI(creature);
+ return GetAhnKahetAI<npc_ahnkahar_nerubianAI>(creature);
}
};
@@ -238,18 +238,9 @@ class spell_ahn_kahet_swarm : public SpellScriptLoader
{
PrepareSpellScript(spell_ahn_kahet_swarm_SpellScript);
- public:
- spell_ahn_kahet_swarm_SpellScript()
- {
- _targetCount = 0;
- }
-
- private:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SWARM_BUFF))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SWARM_BUFF });
}
void CountTargets(std::list<WorldObject*>& targets)
@@ -279,7 +270,7 @@ class spell_ahn_kahet_swarm : public SpellScriptLoader
OnEffectHit += SpellEffectFn(spell_ahn_kahet_swarm_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
- uint32 _targetCount;
+ uint32 _targetCount = 0;
};
SpellScript* GetSpellScript() const override
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
index 0d0389c79d7..f552fdfa080 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp
@@ -20,10 +20,14 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
#include "ahnkahet.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "ScriptedCreature.h"
#include "SpellInfo.h"
+#include "TemporarySummon.h"
enum Spells
{
@@ -105,7 +109,7 @@ public:
}
}
- void SpellHitTarget(Unit* target, const SpellInfo* spell) override
+ void SpellHitTarget(Unit* target, SpellInfo const* spell) override
{
if (spell->Id == SPELL_INSANITY)
{
@@ -124,7 +128,7 @@ public:
// phase mask
target->CastSpell(target, SPELL_INSANITY_TARGET+insanityHandled, true);
// summon twisted party members for this target
- Map::PlayerList const &players = me->GetMap()->GetPlayers();
+ Map::PlayerList const& players = me->GetMap()->GetPlayers();
for (Map::PlayerList::const_iterator i = players.begin(); i != players.end(); ++i)
{
Player* player = i->GetSource();
@@ -145,7 +149,7 @@ public:
void ResetPlayersPhaseMask()
{
- Map::PlayerList const &players = me->GetMap()->GetPlayers();
+ Map::PlayerList const& players = me->GetMap()->GetPlayers();
for (Map::PlayerList::const_iterator i = players.begin(); i != players.end(); ++i)
{
Player* player = i->GetSource();
@@ -230,7 +234,7 @@ public:
// Roll Insanity
uint32 spell = GetSpellForPhaseMask(phase);
uint32 spell2 = GetSpellForPhaseMask(nextPhase);
- Map::PlayerList const &PlayerList = me->GetMap()->GetPlayers();
+ Map::PlayerList const& PlayerList = me->GetMap()->GetPlayers();
if (!PlayerList.isEmpty())
{
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
@@ -306,7 +310,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_volazjAI>(creature);
+ return GetAhnKahetAI<boss_volazjAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp
index 8ee342db3a4..30ba1180663 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp
@@ -21,9 +21,11 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
#include "ahnkahet.h"
-
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
enum Yells
{
@@ -326,7 +328,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_jedoga_shadowseekerAI>(creature);
+ return GetAhnKahetAI<boss_jedoga_shadowseekerAI>(creature);
}
};
@@ -429,7 +431,7 @@ public:
{
case 1:
{
- Creature* boss = me->GetMap()->GetCreature(instance->GetGuidData(DATA_JEDOGA_SHADOWSEEKER));
+ Creature* boss = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_JEDOGA_SHADOWSEEKER));
if (boss)
{
ENSURE_AI(boss_jedoga_shadowseeker::boss_jedoga_shadowseekerAI, boss->AI())->bOpFerok = true;
@@ -495,7 +497,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_jedoga_initiandAI>(creature);
+ return GetAhnKahetAI<npc_jedoga_initiandAI>(creature);
}
};
@@ -578,7 +580,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_jedogas_aufseher_triggerAI>(creature);
+ return GetAhnKahetAI<npc_jedogas_aufseher_triggerAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp
index 4124ff1a0a7..fcb37f56a87 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp
@@ -16,11 +16,17 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "ahnkahet.h"
+#include "GameObject.h"
#include "GameObjectAI.h"
-#include "SpellScript.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "Player.h"
-#include "ahnkahet.h"
+#include "ScriptedCreature.h"
+#include "Spell.h"
+#include "SpellScript.h"
enum Spells
{
@@ -254,7 +260,7 @@ class boss_prince_taldaram : public CreatureScript
if (_embraceTargetGUID)
return ObjectAccessor::GetUnit(*me, _embraceTargetGUID);
- return NULL;
+ return nullptr;
}
void RemovePrison()
@@ -371,7 +377,7 @@ class npc_prince_taldaram_flame_sphere : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_prince_taldaram_flame_sphereAI(creature);
+ return GetAhnKahetAI<npc_prince_taldaram_flame_sphereAI>(creature);
}
};
@@ -431,11 +437,7 @@ class spell_prince_taldaram_conjure_flame_sphere : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FLAME_SPHERE_SUMMON_1)
- || !sSpellMgr->GetSpellInfo(SPELL_FLAME_SPHERE_SUMMON_2)
- || !sSpellMgr->GetSpellInfo(SPELL_FLAME_SPHERE_SUMMON_3))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FLAME_SPHERE_SUMMON_1, SPELL_FLAME_SPHERE_SUMMON_2, SPELL_FLAME_SPHERE_SUMMON_3 });
}
void HandleScript(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
index be7b4cf4894..c629a5e66e7 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
@@ -16,9 +16,12 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "InstanceScript.h"
#include "ahnkahet.h"
+#include "Creature.h"
+#include "CreatureAI.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "Map.h"
DoorData const doorData[] =
{
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
index bbd55c7944d..7e42df81f21 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
@@ -18,6 +18,9 @@
#ifndef AZJOL_NERUB_H_
#define AZJOL_NERUB_H_
+#include "CreatureAIImpl.h"
+
+#define AzjolNerubScriptName "instance_azjol_nerub"
#define DataHeader "AN"
uint32 const EncounterCount = 3;
@@ -62,4 +65,10 @@ enum ANGameObjectIds
GO_ANUBARAK_DOOR_3 = 192398
};
+template <class AI, class T>
+inline AI* GetAzjolNerubAI(T* obj)
+{
+ return GetInstanceAI<AI>(obj, AzjolNerubScriptName);
+}
+
#endif // AZJOL_NERUB_H_
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
index 919f008c108..ebedf88f45a 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp
@@ -16,10 +16,17 @@
*/
#include "ScriptMgr.h"
+#include "AreaBoundary.h"
+#include "azjol_nerub.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "PassiveAI.h"
#include "ScriptedCreature.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
-#include "PassiveAI.h"
-#include "azjol_nerub.h"
+#include "TemporarySummon.h"
enum Spells
{
@@ -405,7 +412,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_anub_arakAI>(creature);
+ return GetAzjolNerubAI<boss_anub_arakAI>(creature);
}
};
@@ -463,7 +470,7 @@ class npc_anubarak_anub_ar_darter : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anubarak_anub_ar_darterAI>(creature);
+ return GetAzjolNerubAI<npc_anubarak_anub_ar_darterAI>(creature);
}
};
@@ -530,7 +537,7 @@ class npc_anubarak_anub_ar_assassin : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anubarak_anub_ar_assassinAI>(creature);
+ return GetAzjolNerubAI<npc_anubarak_anub_ar_assassinAI>(creature);
}
};
@@ -565,7 +572,7 @@ class npc_anubarak_anub_ar_guardian : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anubarak_anub_ar_guardianAI>(creature);
+ return GetAzjolNerubAI<npc_anubarak_anub_ar_guardianAI>(creature);
}
};
@@ -600,7 +607,7 @@ class npc_anubarak_anub_ar_venomancer : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anubarak_anub_ar_venomancerAI>(creature);
+ return GetAzjolNerubAI<npc_anubarak_anub_ar_venomancerAI>(creature);
}
};
@@ -628,7 +635,7 @@ class npc_anubarak_impale_target : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anubarak_impale_targetAI>(creature);
+ return GetAzjolNerubAI<npc_anubarak_impale_targetAI>(creature);
}
};
@@ -643,7 +650,7 @@ class spell_anubarak_pound : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- return sSpellMgr->GetSpellInfo(SPELL_POUND_DAMAGE) != nullptr;
+ return ValidateSpellInfo({ SPELL_POUND_DAMAGE });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
@@ -676,7 +683,7 @@ class spell_anubarak_carrion_beetles : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- return (sSpellMgr->GetSpellInfo(SPELL_CARRION_BEETLE) != nullptr);
+ return ValidateSpellInfo({ SPELL_CARRION_BEETLE });
}
void HandlePeriodic(AuraEffect const* /*eff*/)
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp
index fc50bb3f0aa..faaa22cf9ac 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp
@@ -16,11 +16,15 @@
*/
#include "ScriptMgr.h"
+#include "azjol_nerub.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
-#include "SpellAuras.h"
#include "SpellAuraEffects.h"
-#include "azjol_nerub.h"
+#include "SpellAuras.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
enum Events
{
@@ -391,7 +395,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_hadronoxAI>(creature);
+ return GetAzjolNerubAI<boss_hadronoxAI>(creature);
}
};
@@ -569,7 +573,7 @@ class npc_anub_ar_crusher : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anub_ar_crusherAI>(creature);
+ return GetAzjolNerubAI<npc_anub_ar_crusherAI>(creature);
}
};
@@ -612,7 +616,7 @@ class npc_anub_ar_crusher_champion : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anub_ar_crusher_championAI>(creature);
+ return GetAzjolNerubAI<npc_anub_ar_crusher_championAI>(creature);
}
};
@@ -655,7 +659,7 @@ class npc_anub_ar_crusher_crypt_fiend : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anub_ar_crusher_crypt_fiendAI>(creature);
+ return GetAzjolNerubAI<npc_anub_ar_crusher_crypt_fiendAI>(creature);
}
};
@@ -698,7 +702,7 @@ class npc_anub_ar_crusher_necromancer : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anub_ar_crusher_necromancerAI>(creature);
+ return GetAzjolNerubAI<npc_anub_ar_crusher_necromancerAI>(creature);
}
};
@@ -857,7 +861,7 @@ class npc_anub_ar_champion : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anub_ar_championAI>(creature);
+ return GetAzjolNerubAI<npc_anub_ar_championAI>(creature);
}
};
@@ -899,7 +903,7 @@ class npc_anub_ar_crypt_fiend : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anub_ar_crypt_fiendAI>(creature);
+ return GetAzjolNerubAI<npc_anub_ar_crypt_fiendAI>(creature);
}
};
@@ -941,7 +945,7 @@ class npc_anub_ar_necromancer : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anub_ar_necromancerAI>(creature);
+ return GetAzjolNerubAI<npc_anub_ar_necromancerAI>(creature);
}
};
@@ -951,11 +955,10 @@ class spell_hadronox_periodic_summon_template_AuraScript : public AuraScript
spell_hadronox_periodic_summon_template_AuraScript(uint32 topSpellId, uint32 bottomSpellId) : AuraScript(), _topSpellId(topSpellId), _bottomSpellId(bottomSpellId) { }
PrepareAuraScript(spell_hadronox_periodic_summon_template_AuraScript);
+ private:
bool Validate(SpellInfo const* /*spell*/) override
{
- return
- (sSpellMgr->GetSpellInfo(_topSpellId) != nullptr) &&
- (sSpellMgr->GetSpellInfo(_bottomSpellId) != nullptr);
+ return ValidateSpellInfo({ _topSpellId, _bottomSpellId });
}
void HandleApply(AuraEffect const* /*eff*/, AuraEffectHandleModes /*mode*/)
@@ -989,7 +992,6 @@ class spell_hadronox_periodic_summon_template_AuraScript : public AuraScript
OnEffectPeriodic += AuraEffectPeriodicFn(spell_hadronox_periodic_summon_template_AuraScript::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
- private:
uint32 _topSpellId;
uint32 _bottomSpellId;
};
@@ -1056,7 +1058,7 @@ class spell_hadronox_leeching_poison : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- return sSpellMgr->GetSpellInfo(SPELL_LEECH_POISON_HEAL) != nullptr;
+ return ValidateSpellInfo({ SPELL_LEECH_POISON_HEAL });
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1094,11 +1096,7 @@ class spell_hadronox_web_doors : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- return (
- sSpellMgr->GetSpellInfo(SPELL_SUMMON_CHAMPION_PERIODIC) &&
- sSpellMgr->GetSpellInfo(SPELL_SUMMON_CRYPT_FIEND_PERIODIC) &&
- sSpellMgr->GetSpellInfo(SPELL_SUMMON_NECROMANCER_PERIODIC)
- );
+ return ValidateSpellInfo({ SPELL_SUMMON_CHAMPION_PERIODIC, SPELL_SUMMON_CRYPT_FIEND_PERIODIC, SPELL_SUMMON_NECROMANCER_PERIODIC });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
index 27b4e7702b1..506ddd8cad2 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
@@ -19,13 +19,15 @@
* Comment: Find in the future best timers and the event is not implemented.
*/
-#include "Containers.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellScript.h"
+#include "azjol_nerub.h"
+#include "Containers.h"
+#include "InstanceScript.h"
#include "PassiveAI.h"
+#include "ScriptedCreature.h"
#include "SpellAuras.h"
-#include "azjol_nerub.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
enum Events
{
@@ -319,7 +321,7 @@ class boss_krik_thir : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_krik_thirAI>(creature);
+ return GetAzjolNerubAI<boss_krik_thirAI>(creature);
}
};
@@ -482,7 +484,7 @@ class npc_watcher_gashra : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_watcher_gashraAI>(creature);
+ return GetAzjolNerubAI<npc_watcher_gashraAI>(creature);
}
};
@@ -560,7 +562,7 @@ class npc_watcher_narjil : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_watcher_narjilAI>(creature);
+ return GetAzjolNerubAI<npc_watcher_narjilAI>(creature);
}
};
@@ -638,7 +640,7 @@ class npc_watcher_silthik : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_watcher_silthikAI>(creature);
+ return GetAzjolNerubAI<npc_watcher_silthikAI>(creature);
}
};
@@ -698,7 +700,7 @@ class npc_anub_ar_warrior : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anub_ar_warriorAI>(creature);
+ return GetAzjolNerubAI<npc_anub_ar_warriorAI>(creature);
}
};
@@ -766,7 +768,7 @@ class npc_anub_ar_skirmisher : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anub_ar_skirmisherAI>(creature);
+ return GetAzjolNerubAI<npc_anub_ar_skirmisherAI>(creature);
}
};
@@ -827,7 +829,7 @@ class npc_anub_ar_shadowcaster : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_anub_ar_shadowcasterAI>(creature);
+ return GetAzjolNerubAI<npc_anub_ar_shadowcasterAI>(creature);
}
};
@@ -854,7 +856,7 @@ class npc_skittering_swarmer : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_skittering_swarmerAI>(creature);
+ return GetAzjolNerubAI<npc_skittering_swarmerAI>(creature);
}
};
@@ -887,7 +889,7 @@ class npc_skittering_infector : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_skittering_infectorAI>(creature);
+ return GetAzjolNerubAI<npc_skittering_infectorAI>(creature);
}
};
@@ -910,7 +912,7 @@ class npc_gatewatcher_web_wrap : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_gatewatcher_web_wrapAI>(creature);
+ return GetAzjolNerubAI<npc_gatewatcher_web_wrapAI>(creature);
}
};
@@ -977,7 +979,7 @@ class spell_anub_ar_skirmisher_fixtate : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- return sSpellMgr->GetSpellInfo(SPELL_FIXTATE_TRIGGERED) != nullptr;
+ return ValidateSpellInfo({ SPELL_FIXTATE_TRIGGERED });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -1009,7 +1011,7 @@ class spell_gatewatcher_web_wrap : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- return sSpellMgr->GetSpellInfo(SPELL_WEB_WRAP_WRAPPED) != nullptr;
+ return ValidateSpellInfo({ SPELL_WEB_WRAP_WRAPPED });
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
index b45940e2e79..eb6692f0251 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
@@ -16,47 +16,51 @@
*/
#include "ScriptMgr.h"
-#include "InstanceScript.h"
+#include "AreaBoundary.h"
#include "azjol_nerub.h"
+#include "Creature.h"
+#include "CreatureAI.h"
+#include "InstanceScript.h"
+#include "Map.h"
DoorData const doorData[] =
{
- { GO_KRIKTHIR_DOOR, DATA_KRIKTHIR, DOOR_TYPE_PASSAGE },
- { GO_ANUBARAK_DOOR_1, DATA_ANUBARAK, DOOR_TYPE_ROOM },
- { GO_ANUBARAK_DOOR_2, DATA_ANUBARAK, DOOR_TYPE_ROOM },
- { GO_ANUBARAK_DOOR_3, DATA_ANUBARAK, DOOR_TYPE_ROOM },
- { 0, 0, DOOR_TYPE_ROOM } // END
+ { GO_KRIKTHIR_DOOR, DATA_KRIKTHIR, DOOR_TYPE_PASSAGE },
+ { GO_ANUBARAK_DOOR_1, DATA_ANUBARAK, DOOR_TYPE_ROOM },
+ { GO_ANUBARAK_DOOR_2, DATA_ANUBARAK, DOOR_TYPE_ROOM },
+ { GO_ANUBARAK_DOOR_3, DATA_ANUBARAK, DOOR_TYPE_ROOM },
+ { 0, 0, DOOR_TYPE_ROOM } // END
};
ObjectData const creatureData[] =
{
- { NPC_KRIKTHIR, DATA_KRIKTHIR },
- { NPC_HADRONOX, DATA_HADRONOX },
- { NPC_ANUBARAK, DATA_ANUBARAK },
- { NPC_WATCHER_NARJIL, DATA_WATCHER_GASHRA },
- { NPC_WATCHER_GASHRA, DATA_WATCHER_SILTHIK },
- { NPC_WATCHER_SILTHIK, DATA_WATCHER_NARJIL },
- { 0, 0 } // END
+ { NPC_KRIKTHIR, DATA_KRIKTHIR },
+ { NPC_HADRONOX, DATA_HADRONOX },
+ { NPC_ANUBARAK, DATA_ANUBARAK },
+ { NPC_WATCHER_NARJIL, DATA_WATCHER_GASHRA },
+ { NPC_WATCHER_GASHRA, DATA_WATCHER_SILTHIK },
+ { NPC_WATCHER_SILTHIK, DATA_WATCHER_NARJIL },
+ { 0, 0 } // END
};
ObjectData const gameobjectData[] =
{
- { GO_ANUBARAK_DOOR_1, DATA_ANUBARAK_WALL },
+ { GO_ANUBARAK_DOOR_1, DATA_ANUBARAK_WALL },
{ GO_ANUBARAK_DOOR_3, DATA_ANUBARAK_WALL_2 },
- { 0, 0 } // END
+ { 0, 0 } // END
};
BossBoundaryData const boundaries =
{
- { DATA_KRIKTHIR, new RectangleBoundary(400.0f, 580.0f, 623.5f, 810.0f) },
- { DATA_HADRONOX, new ZRangeBoundary(666.0f, 776.0f) },
+ { DATA_KRIKTHIR, new RectangleBoundary(400.0f, 580.0f, 623.5f, 810.0f) },
+ { DATA_HADRONOX, new ZRangeBoundary(666.0f, 776.0f) },
{ DATA_ANUBARAK, new CircleBoundary(Position(550.6178f, 253.5917f), 26.0f) }
};
class instance_azjol_nerub : public InstanceMapScript
{
public:
- instance_azjol_nerub() : InstanceMapScript("instance_azjol_nerub", 601) { }
+ instance_azjol_nerub() : InstanceMapScript(AzjolNerubScriptName, 601) { }
struct instance_azjol_nerub_InstanceScript : public InstanceScript
{
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
index 71487b5e048..11c48439da4 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
@@ -16,12 +16,14 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
-#include "Cell.h"
#include "CellImpl.h"
+#include "GridNotifiersImpl.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "obsidian_sanctum.h"
+#include "ScriptedCreature.h"
+#include "TemporarySummon.h"
enum Enums
{
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
index 4bdbee94db1..6cb362c6a7b 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
@@ -16,7 +16,10 @@
*/
#include "ScriptMgr.h"
+#include "AreaBoundary.h"
+#include "Creature.h"
#include "InstanceScript.h"
+#include "Map.h"
#include "obsidian_sanctum.h"
/* Obsidian Sanctum encounters:
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp
index 45ca29fe6d1..22eb9cdb04a 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp
@@ -16,12 +16,14 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
-#include "Cell.h"
#include "CellImpl.h"
+#include "GridNotifiersImpl.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "obsidian_sanctum.h"
+#include "ScriptedCreature.h"
+#include "TemporarySummon.h"
enum Enums
{
@@ -322,7 +324,7 @@ struct dummy_dragonAI : public ScriptedAI
void JustDied(Unit* /*killer*/) override
{
if (!_canLoot)
- me->SetLootRecipient(NULL);
+ me->SetLootRecipient(nullptr);
uint32 spellId = 0;
@@ -736,7 +738,7 @@ class npc_acolyte_of_vesperon : public CreatureScript
vesperon->RemoveAurasDueToSpell(SPELL_TWILIGHT_TORMENT_VESP);
}
- Map::PlayerList const &PlayerList = me->GetMap()->GetPlayers();
+ Map::PlayerList const& PlayerList = me->GetMap()->GetPlayers();
if (PlayerList.isEmpty())
return;
@@ -904,7 +906,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_flame_tsunamiAI(creature);
+ return GetObsidianSanctumAI<npc_flame_tsunamiAI>(creature);
}
};
@@ -958,7 +960,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_twilight_fissureAI(creature);
+ return GetObsidianSanctumAI<npc_twilight_fissureAI>(creature);
}
};
@@ -1013,7 +1015,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_twilight_whelpAI(creature);
+ return GetObsidianSanctumAI<npc_twilight_whelpAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h
index 92331e8c8bf..00547e204c6 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h
@@ -18,6 +18,8 @@
#ifndef OBSIDIAN_SANCTUM_H_
#define OBSIDIAN_SANCTUM_H_
+#include "CreatureAIImpl.h"
+
#define OSScriptName "instance_obsidian_sanctum"
#define DataHeader "OS"
@@ -46,10 +48,10 @@ enum OSGameObjectIds
GO_TWILIGHT_PORTAL = 193988
};
-template<class AI>
-AI* GetObsidianSanctumAI(Creature* creature)
+template <class AI, class T>
+inline AI* GetObsidianSanctumAI(T* obj)
{
- return GetInstanceAI<AI>(creature, OSScriptName);
+ return GetInstanceAI<AI>(obj, OSScriptName);
}
#endif // OBSIDIAN_SANCTUM_H_
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
index 9bc4de0ae92..16955384cb8 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
@@ -15,11 +15,12 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ScriptedCreature.h"
#include "ScriptMgr.h"
-#include "SpellScript.h"
-#include "SpellAuraEffects.h"
+#include "InstanceScript.h"
#include "ruby_sanctum.h"
+#include "ScriptedCreature.h"
+#include "SpellAuraEffects.h"
+#include "SpellScript.h"
enum Texts
{
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
index 6a3a185061b..d835549ad17 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp
@@ -16,9 +16,11 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "ScriptedEscortAI.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ruby_sanctum.h"
+#include "ScriptedCreature.h"
enum Texts
{
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index a85b07f95c3..1256e5745b3 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -16,15 +16,20 @@
*/
#include "ScriptMgr.h"
-#include "SpellScript.h"
-#include "SpellAuraEffects.h"
-#include "Spell.h"
-#include "Vehicle.h"
-#include "MapManager.h"
+#include "DBCStores.h"
+#include "GameObject.h"
#include "GameObjectAI.h"
-#include "ScriptedCreature.h"
-#include "ruby_sanctum.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "ruby_sanctum.h"
+#include "ScriptedCreature.h"
+#include "Spell.h"
+#include "SpellAuraEffects.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
+#include "Vehicle.h"
enum Texts
{
@@ -759,7 +764,7 @@ class npc_halion_controller : public CreatureScript
void DoCheckEvade()
{
- Map::PlayerList const &players = me->GetMap()->GetPlayers();
+ Map::PlayerList const& players = me->GetMap()->GetPlayers();
for (Map::PlayerList::const_iterator i = players.begin(); i != players.end(); ++i)
if (Player* player = i->GetSource())
if (player->IsAlive() && CheckBoundary(player) && !player->IsGameMaster())
@@ -1438,11 +1443,10 @@ class spell_halion_combustion_consumption : public SpellScriptLoader
public:
spell_halion_combustion_consumption_AuraScript(uint32 spellID) : AuraScript(), _markSpell(spellID) { }
- bool Validate(SpellInfo const* /*spell*/) override
+ private:
+ bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(_markSpell))
- return false;
- return true;
+ return ValidateSpellInfo({ _markSpell });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1494,9 +1498,7 @@ class spell_halion_combustion_consumption_periodic : public SpellScriptLoader
bool Validate(SpellInfo const* spellInfo) override
{
- if (!sSpellMgr->GetSpellInfo(spellInfo->Effects[EFFECT_0].TriggerSpell))
- return false;
- return true;
+ return ValidateSpellInfo({ spellInfo->Effects[EFFECT_0].TriggerSpell });
}
void HandleTick(AuraEffect const* aurEff)
@@ -1538,11 +1540,10 @@ class spell_halion_marks : public SpellScriptLoader
spell_halion_marks_AuraScript(uint32 summonSpell, uint32 removeSpell) : AuraScript(),
_summonSpellId(summonSpell), _removeSpellId(removeSpell) { }
+ private:
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(_summonSpellId))
- return false;
- return true;
+ return ValidateSpellInfo({ _summonSpellId, _removeSpellId });
}
/// We were purged. Force removed stacks to zero and trigger the appropriated remove handler.
@@ -1623,7 +1624,7 @@ class spell_halion_damage_aoe_summon : public SpellScriptLoader
class spell_halion_twilight_realm_handlers : public SpellScriptLoader
{
public:
- spell_halion_twilight_realm_handlers(const char* scriptName, uint32 beforeHitSpell, bool isApplyHandler) : SpellScriptLoader(scriptName),
+ spell_halion_twilight_realm_handlers(char const* scriptName, uint32 beforeHitSpell, bool isApplyHandler) : SpellScriptLoader(scriptName),
_beforeHitSpell(beforeHitSpell), _isApplyHandler(isApplyHandler)
{ }
@@ -1636,11 +1637,10 @@ class spell_halion_twilight_realm_handlers : public SpellScriptLoader
_isApply(isApplyHandler), _beforeHitSpellId(beforeHitSpell)
{ }
+ private:
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(_beforeHitSpellId))
- return false;
- return true;
+ return ValidateSpellInfo({ _beforeHitSpellId });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/)
@@ -1697,11 +1697,7 @@ class spell_halion_clear_debuffs : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_CLEAR_DEBUFFS))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_TWILIGHT_REALM))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_CLEAR_DEBUFFS, SPELL_TWILIGHT_REALM });
}
void HandleScript(SpellEffIndex effIndex)
@@ -1785,9 +1781,7 @@ class spell_halion_twilight_phasing : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_TWILIGHT_PORTAL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_TWILIGHT_PORTAL });
}
void Phase()
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
index 96d64012489..e1f01fdfea4 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
@@ -16,9 +16,11 @@
*/
#include "ScriptMgr.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ruby_sanctum.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
-#include "ruby_sanctum.h"
enum Texts
{
@@ -229,10 +231,7 @@ class spell_saviana_conflagration_init : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FLAME_BEACON)
- || !sSpellMgr->GetSpellInfo(SPELL_CONFLAGRATION_2))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FLAME_BEACON, SPELL_CONFLAGRATION_2 });
}
void FilterTargets(std::list<WorldObject*>& targets)
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
index c9d68808c12..db2fc0b407b 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
@@ -15,13 +15,17 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "InstanceScript.h"
-#include "Player.h"
-#include "ScriptedCreature.h"
#include "ScriptMgr.h"
+#include "AreaBoundary.h"
+#include "CreatureAI.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "ruby_sanctum.h"
#include "TemporarySummon.h"
#include "WorldPacket.h"
-#include "ruby_sanctum.h"
+
+Position const HalionControllerSpawnPos = { 3156.037f, 533.2656f, 72.97205f, 0.0f };
BossBoundaryData const boundaries =
{
@@ -68,7 +72,6 @@ ObjectData const gameObjectData[] =
{ 0, 0 } //END
};
-
class instance_ruby_sanctum : public InstanceMapScript
{
public:
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
index d298c35dd0a..e43b93e484d 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
@@ -16,11 +16,13 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "Player.h"
+#include "ruby_sanctum.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "SpellScript.h"
-#include "ruby_sanctum.h"
-#include "Player.h"
enum Texts
{
@@ -183,9 +185,7 @@ class spell_ruby_sanctum_rallying_shout : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_RALLY))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_RALLY });
}
void CountTargets(std::list<WorldObject*>& targets)
@@ -205,7 +205,6 @@ class spell_ruby_sanctum_rallying_shout : public SpellScriptLoader
OnEffectHit += SpellEffectFn(spell_ruby_sanctum_rallying_shout_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
- private:
uint32 _targetCount = 0;
};
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h
index 6411037ad70..c8286cefda4 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h
@@ -18,13 +18,13 @@
#ifndef RUBY_SANCTUM_H_
#define RUBY_SANCTUM_H_
+#include "CreatureAIImpl.h"
+
#define RSScriptName "instance_ruby_sanctum"
#define DataHeader "RS"
uint32 const EncounterCount = 4;
-Position const HalionControllerSpawnPos = {3156.037f, 533.2656f, 72.97205f, 0.0f};
-
enum RSDataTypes
{
// Encounter States/Boss GUIDs
@@ -129,25 +129,10 @@ enum RSInstanceSpell
SPELL_BERSERK = 26662
};
-template<class AI>
-CreatureAI* GetRubySanctumAI(Creature* creature)
-{
- if (InstanceMap* instance = creature->GetMap()->ToInstanceMap())
- if (instance->GetInstanceScript())
- if (instance->GetScriptId() == sObjectMgr->GetScriptId(RSScriptName))
- return new AI(creature);
- return nullptr;
-}
-
-template<class AI>
-GameObjectAI* GetRubySanctumAI(GameObject* go)
+template <class AI, class T>
+inline AI* GetRubySanctumAI(T* obj)
{
- if (InstanceMap* instance = go->GetMap()->ToInstanceMap())
- if (instance->GetInstanceScript())
- if (instance->GetScriptId() == sObjectMgr->GetScriptId(RSScriptName))
- return new AI(go);
-
- return nullptr;
+ return GetInstanceAI<AI>(obj, RSScriptName);
}
#endif // RUBY_SANCTUM_H_
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
index 0b6c7738cc9..1061dc37aff 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
@@ -23,10 +23,13 @@ SDCategory: Trial of the Champion
EndScriptData */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ScriptedEscortAI.h"
#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "trial_of_the_champion.h"
-#include "ScriptedEscortAI.h"
/*
enum Yells
{
@@ -253,7 +256,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_eadricAI>(creature);
+ return GetTrialOfTheChampionAI<boss_eadricAI>(creature);
}
};
@@ -415,7 +418,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_paletressAI>(creature);
+ return GetTrialOfTheChampionAI<boss_paletressAI>(creature);
}
};
@@ -492,7 +495,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_memoryAI(creature);
+ return GetTrialOfTheChampionAI<npc_memoryAI>(creature);
}
};
@@ -605,7 +608,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_argent_soldierAI>(creature);
+ return GetTrialOfTheChampionAI<npc_argent_soldierAI>(creature);
}
};
@@ -650,10 +653,7 @@ class spell_paletress_summon_memory : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- for (uint8 i = 0; i < 25; ++i)
- if (!sSpellMgr->GetSpellInfo(memorySpellId[i]))
- return false;
- return true;
+ return ValidateSpellInfo(memorySpellId);
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -668,7 +668,7 @@ class spell_paletress_summon_memory : public SpellScriptLoader
void HandleScript(SpellEffIndex /*effIndex*/)
{
- GetHitUnit()->CastSpell(GetHitUnit(), memorySpellId[urand(0, 24)], true, NULL, NULL, GetCaster()->GetGUID());
+ GetHitUnit()->CastSpell(GetHitUnit(), memorySpellId[urand(0, 24)], true, nullptr, nullptr, GetCaster()->GetGUID());
}
void Register() override
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
index e5b749c5da0..be1c5b69bd8 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
@@ -23,7 +23,7 @@ SDCategory: Trial of the Champion
EndScriptData */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "InstanceScript.h"
#include "ScriptedEscortAI.h"
#include "trial_of_the_champion.h"
@@ -296,7 +296,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_black_knightAI>(creature);
+ return GetTrialOfTheChampionAI<boss_black_knightAI>(creature);
}
};
@@ -345,7 +345,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_risen_ghoulAI(creature);
+ return GetTrialOfTheChampionAI<npc_risen_ghoulAI>(creature);
}
};
@@ -374,7 +374,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_black_knight_skeletal_gryphonAI(creature);
+ return GetTrialOfTheChampionAI<npc_black_knight_skeletal_gryphonAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
index 1bc8a45cbe2..5181b125fdf 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp
@@ -24,11 +24,13 @@ SDCategory: Trial Of the Champion
EndScriptData */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedEscortAI.h"
-#include "Vehicle.h"
#include "trial_of_the_champion.h"
-#include "Player.h"
+#include "Vehicle.h"
enum Spells
{
@@ -95,7 +97,7 @@ const Point MovementPoint[] =
*/
void AggroAllPlayers(Creature* temp)
{
- Map::PlayerList const &PlList = temp->GetMap()->GetPlayers();
+ Map::PlayerList const& PlList = temp->GetMap()->GetPlayers();
if (PlList.isEmpty())
return;
@@ -303,7 +305,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<generic_vehicleAI_toc5AI>(creature);
+ return GetTrialOfTheChampionAI<generic_vehicleAI_toc5AI>(creature);
}
};
@@ -440,7 +442,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_warrior_toc5AI>(creature);
+ return GetTrialOfTheChampionAI<boss_warrior_toc5AI>(creature);
}
};
@@ -583,7 +585,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_mage_toc5AI>(creature);
+ return GetTrialOfTheChampionAI<boss_mage_toc5AI>(creature);
}
};
@@ -734,7 +736,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_shaman_toc5AI>(creature);
+ return GetTrialOfTheChampionAI<boss_shaman_toc5AI>(creature);
}
};
@@ -894,7 +896,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_hunter_toc5AI>(creature);
+ return GetTrialOfTheChampionAI<boss_hunter_toc5AI>(creature);
}
};
@@ -1019,7 +1021,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_rouge_toc5AI>(creature);
+ return GetTrialOfTheChampionAI<boss_rouge_toc5AI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
index d05c2c303a4..5596c77bb71 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
@@ -22,17 +22,22 @@ SDCategory: Trial Of the Champion
EndScriptData */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "Creature.h"
+#include "CreatureAI.h"
+#include "GameObject.h"
#include "InstanceScript.h"
-#include "trial_of_the_champion.h"
+#include "Log.h"
+#include "Map.h"
+#include "MotionMaster.h"
#include "Player.h"
+#include "trial_of_the_champion.h"
#define MAX_ENCOUNTER 4
class instance_trial_of_the_champion : public InstanceMapScript
{
public:
- instance_trial_of_the_champion() : InstanceMapScript("instance_trial_of_the_champion", 650) { }
+ instance_trial_of_the_champion() : InstanceMapScript(ToCScriptName, 650) { }
InstanceScript* GetInstanceScript(InstanceMap* map) const override
{
@@ -89,7 +94,7 @@ public:
void OnCreatureCreate(Creature* creature) override
{
- Map::PlayerList const &players = instance->GetPlayers();
+ Map::PlayerList const& players = instance->GetPlayers();
uint32 TeamInInstance = 0;
if (!players.isEmpty())
@@ -180,7 +185,7 @@ public:
{
pAnnouncer->GetMotionMaster()->MovePoint(0, 748.309f, 619.487f, 411.171f);
pAnnouncer->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
- pAnnouncer->SummonGameObject(instance->IsHeroic()? GO_CHAMPIONS_LOOT_H : GO_CHAMPIONS_LOOT, 746.59f, 618.49f, 411.09f, 1.42f, G3D::Quat(), 90000);
+ pAnnouncer->SummonGameObject(instance->IsHeroic()? GO_CHAMPIONS_LOOT_H : GO_CHAMPIONS_LOOT, 746.59f, 618.49f, 411.09f, 1.42f, QuaternionData(), 90000);
}
}
}
@@ -203,7 +208,7 @@ public:
{
pAnnouncer->GetMotionMaster()->MovePoint(0, 748.309f, 619.487f, 411.171f);
pAnnouncer->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
- pAnnouncer->SummonGameObject(instance->IsHeroic()? GO_EADRIC_LOOT_H : GO_EADRIC_LOOT, 746.59f, 618.49f, 411.09f, 1.42f, G3D::Quat(), 90000);
+ pAnnouncer->SummonGameObject(instance->IsHeroic()? GO_EADRIC_LOOT_H : GO_EADRIC_LOOT, 746.59f, 618.49f, 411.09f, 1.42f, QuaternionData(), 90000);
}
break;
case BOSS_ARGENT_CHALLENGE_P:
@@ -212,7 +217,7 @@ public:
{
pAnnouncer->GetMotionMaster()->MovePoint(0, 748.309f, 619.487f, 411.171f);
pAnnouncer->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
- pAnnouncer->SummonGameObject(instance->IsHeroic()? GO_PALETRESS_LOOT_H : GO_PALETRESS_LOOT, 746.59f, 618.49f, 411.09f, 1.42f, G3D::Quat(), 90000);
+ pAnnouncer->SummonGameObject(instance->IsHeroic()? GO_PALETRESS_LOOT_H : GO_PALETRESS_LOOT, 746.59f, 618.49f, 411.09f, 1.42f, QuaternionData(), 90000);
}
break;
}
@@ -287,7 +292,7 @@ public:
return str_data;
}
- void Load(const char* in) override
+ void Load(char const* in) override
{
if (!in)
{
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp
index f31010c9676..4dc43888726 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp
@@ -27,11 +27,17 @@ npc_announcer_toc5
EndContentData */
#include "ScriptMgr.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
+#include "TemporarySummon.h"
#include "trial_of_the_champion.h"
#include "Vehicle.h"
-#include "Player.h"
enum Yells
{
@@ -362,8 +368,7 @@ public:
void AggroAllPlayers(Creature* temp)
{
- Map::PlayerList const &PlList = me->GetMap()->GetPlayers();
-
+ Map::PlayerList const& PlList = me->GetMap()->GetPlayers();
if (PlList.isEmpty())
return;
@@ -482,7 +487,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_announcer_toc5AI>(creature);
+ return GetTrialOfTheChampionAI<npc_announcer_toc5AI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h
index d4be2f90f6e..e4e67a6565d 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h
@@ -19,6 +19,9 @@
#ifndef DEF_TOC_H
#define DEF_TOC_H
+#include "CreatureAIImpl.h"
+
+#define ToCScriptName "instance_trial_of_the_champion"
#define DataHeader "TC"
enum TCData
@@ -127,4 +130,10 @@ enum TCVehicles
VEHICLE_BLACK_KNIGHT = 35491
};
+template <class AI, class T>
+inline AI* GetTrialOfTheChampionAI(T* obj)
+{
+ return GetInstanceAI<AI>(obj, ToCScriptName);
+}
+
#endif
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
index 96fe86446f2..60479c6be30 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
@@ -22,11 +22,15 @@
// Scarab - Kill credit isn't crediting?
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
-#include "trial_of_the_crusader.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
-#include <limits>
+#include "SpellMgr.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
+#include "trial_of_the_crusader.h"
enum Yells
{
@@ -428,7 +432,7 @@ class boss_anubarak_trial : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_anubarak_trialAI>(creature);
+ return GetTrialOfTheCrusaderAI<boss_anubarak_trialAI>(creature);
};
};
@@ -506,7 +510,7 @@ class npc_swarm_scarab : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_swarm_scarabAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_swarm_scarabAI>(creature);
};
};
@@ -600,7 +604,7 @@ class npc_nerubian_burrower : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_nerubian_burrowerAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_nerubian_burrowerAI>(creature);
};
};
@@ -626,7 +630,8 @@ class npc_frost_sphere : public CreatureScript
if (me->GetHealth() <= damage)
{
damage = 0;
- float floorZ = me->GetMap()->GetHeight(me->GetPhaseMask(), me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
+ float floorZ = me->GetPositionZ();
+ me->UpdateGroundPositionZ(me->GetPositionX(), me->GetPositionY(), floorZ);
if (fabs(me->GetPositionZ() - floorZ) < 0.1f)
{
// we are close to the ground
@@ -671,7 +676,7 @@ class npc_frost_sphere : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_frost_sphereAI(creature);
+ return GetTrialOfTheCrusaderAI<npc_frost_sphereAI>(creature);
};
};
@@ -824,7 +829,7 @@ class npc_anubarak_spike : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_anubarak_spikeAI(creature);
+ return GetTrialOfTheCrusaderAI<npc_anubarak_spikeAI>(creature);
};
};
@@ -870,9 +875,7 @@ class spell_anubarak_leeching_swarm : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_LEECHING_SWARM_DMG) || !sSpellMgr->GetSpellInfo(SPELL_LEECHING_SWARM_HEAL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_LEECHING_SWARM_DMG, SPELL_LEECHING_SWARM_HEAL });
}
void HandleEffectPeriodic(AuraEffect const* aurEff)
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
index 9ca1dee21f3..ef37afffc04 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
@@ -17,12 +17,17 @@
*/
#include "ScriptMgr.h"
+#include "GridNotifiers.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "trial_of_the_crusader.h"
-#include "Player.h"
-#include "GridNotifiers.h"
enum Yells
{
@@ -339,6 +344,32 @@ enum Events
EVENT_SPELL_LOCK = 2
};
+Position const FactionChampionLoc[] =
+{
+ { 514.231f, 105.569f, 418.234f, 0 }, // 0 - Horde Initial Pos 0
+ { 508.334f, 115.377f, 418.234f, 0 }, // 1 - Horde Initial Pos 1
+ { 506.454f, 126.291f, 418.234f, 0 }, // 2 - Horde Initial Pos 2
+ { 506.243f, 106.596f, 421.592f, 0 }, // 3 - Horde Initial Pos 3
+ { 499.885f, 117.717f, 421.557f, 0 }, // 4 - Horde Initial Pos 4
+
+ { 613.127f, 100.443f, 419.74f, 0 }, // 5 - Ally Initial Pos 0
+ { 621.126f, 128.042f, 418.231f, 0 }, // 6 - Ally Initial Pos 1
+ { 618.829f, 113.606f, 418.232f, 0 }, // 7 - Ally Initial Pos 2
+ { 625.845f, 112.914f, 421.575f, 0 }, // 8 - Ally Initial Pos 3
+ { 615.566f, 109.653f, 418.234f, 0 }, // 9 - Ally Initial Pos 4
+
+ { 535.469f, 113.012f, 394.66f, 0 }, // 10 - Horde Final Pos 0
+ { 526.417f, 137.465f, 394.749f, 0 }, // 11 - Horde Final Pos 1
+ { 528.108f, 111.057f, 395.289f, 0 }, // 12 - Horde Final Pos 2
+ { 519.92f, 134.285f, 395.289f, 0 }, // 13 - Horde Final Pos 3
+ { 533.648f, 119.148f, 394.646f, 0 }, // 14 - Horde Final Pos 4
+ { 531.399f, 125.63f, 394.708f, 0 }, // 15 - Horde Final Pos 5
+ { 528.958f, 131.47f, 394.73f, 0 }, // 16 - Horde Final Pos 6
+ { 526.309f, 116.667f, 394.833f, 0 }, // 17 - Horde Final Pos 7
+ { 524.238f, 122.411f, 394.819f, 0 }, // 18 - Horde Final Pos 8
+ { 521.901f, 128.488f, 394.832f, 0 } // 19 - Horde Final Pos 9
+};
+
class boss_toc_champion_controller : public CreatureScript
{
public:
@@ -545,7 +576,7 @@ class boss_toc_champion_controller : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_toc_champion_controllerAI>(creature);
+ return GetTrialOfTheCrusaderAI<boss_toc_champion_controllerAI>(creature);
}
};
@@ -631,7 +662,7 @@ struct boss_faction_championsAI : public BossAI
{
if (who->GetTypeId() == TYPEID_PLAYER)
{
- Map::PlayerList const &players = me->GetMap()->GetPlayers();
+ Map::PlayerList const& players = me->GetMap()->GetPlayers();
uint32 TeamInInstance = 0;
if (!players.isEmpty())
@@ -655,7 +686,7 @@ struct boss_faction_championsAI : public BossAI
std::list<Creature*> lst = DoFindFriendlyMissingBuff(40.0f, spell);
std::list<Creature*>::const_iterator itr = lst.begin();
if (lst.empty())
- return NULL;
+ return nullptr;
advance(itr, rand32() % lst.size());
return (*itr);
}
@@ -670,7 +701,7 @@ struct boss_faction_championsAI : public BossAI
if (target && target->getPowerType() == POWER_MANA)
return target;
}
- return NULL;
+ return nullptr;
}
uint32 EnemiesInRange(float distance)
@@ -835,7 +866,7 @@ class npc_toc_druid : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_druidAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_druidAI>(creature);
}
};
@@ -928,7 +959,7 @@ class npc_toc_shaman : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_shamanAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_shamanAI>(creature);
}
};
@@ -1032,7 +1063,7 @@ class npc_toc_paladin : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_paladinAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_paladinAI>(creature);
}
};
@@ -1117,7 +1148,7 @@ class npc_toc_priest : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_priestAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_priestAI>(creature);
}
};
@@ -1215,7 +1246,7 @@ class npc_toc_shadow_priest : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_shadow_priestAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_shadow_priestAI>(creature);
}
};
@@ -1306,7 +1337,7 @@ class npc_toc_warlock : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_warlockAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_warlockAI>(creature);
}
};
@@ -1400,7 +1431,7 @@ class npc_toc_mage : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_mageAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_mageAI>(creature);
}
};
@@ -1502,7 +1533,7 @@ class npc_toc_hunter : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_hunterAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_hunterAI>(creature);
}
};
@@ -1594,7 +1625,7 @@ class npc_toc_boomkin : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_boomkinAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_boomkinAI>(creature);
}
};
@@ -1698,7 +1729,7 @@ class npc_toc_warrior : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_warriorAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_warriorAI>(creature);
}
};
@@ -1794,7 +1825,7 @@ class npc_toc_dk : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_dkAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_dkAI>(creature);
}
};
@@ -1899,7 +1930,7 @@ class npc_toc_rogue : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_rogueAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_rogueAI>(creature);
}
};
@@ -2033,7 +2064,7 @@ class npc_toc_enh_shaman : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_enh_shamanAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_enh_shamanAI>(creature);
}
};
@@ -2139,7 +2170,7 @@ class npc_toc_retro_paladin : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_retro_paladinAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_retro_paladinAI>(creature);
}
};
@@ -2191,7 +2222,7 @@ class npc_toc_pet_warlock : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_pet_warlockAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_pet_warlockAI>(creature);
}
};
@@ -2239,7 +2270,7 @@ class npc_toc_pet_hunter : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_toc_pet_hunterAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_toc_pet_hunterAI>(creature);
}
};
@@ -2254,15 +2285,13 @@ class spell_faction_champion_warl_unstable_affliction : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_UNSTABLE_AFFLICTION_DISPEL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_UNSTABLE_AFFLICTION_DISPEL });
}
void HandleDispel(DispelInfo* dispelInfo)
{
if (Unit* caster = GetCaster())
- caster->CastSpell(dispelInfo->GetDispeller(), SPELL_UNSTABLE_AFFLICTION_DISPEL, true, NULL, GetEffect(EFFECT_0));
+ caster->CastSpell(dispelInfo->GetDispeller(), SPELL_UNSTABLE_AFFLICTION_DISPEL, true, nullptr, GetEffect(EFFECT_0));
}
void Register() override
@@ -2288,9 +2317,7 @@ class spell_faction_champion_death_grip : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_DEATH_GRIP_PULL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_DEATH_GRIP_PULL });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
@@ -2326,9 +2353,7 @@ class spell_toc_bloodlust : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(AURA_SATED))
- return false;
- return true;
+ return ValidateSpellInfo({ AURA_SATED });
}
void RemoveInvalidTargets(std::list<WorldObject*>& targets)
@@ -2367,9 +2392,7 @@ class spell_toc_heroism : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(AURA_EXHAUSTION))
- return false;
- return true;
+ return ValidateSpellInfo({ AURA_EXHAUSTION });
}
void RemoveInvalidTargets(std::list<WorldObject*>& targets)
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
index 30a0138a689..7b6a20c1dd7 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
@@ -17,9 +17,12 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "Player.h"
#include "ScriptedCreature.h"
+#include "SpellInfo.h"
+#include "SpellMgr.h"
#include "SpellScript.h"
-#include "Player.h"
#include "trial_of_the_crusader.h"
enum Yells
@@ -207,7 +210,7 @@ class boss_jaraxxus : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_jaraxxusAI>(creature);
+ return GetTrialOfTheCrusaderAI<boss_jaraxxusAI>(creature);
}
};
@@ -243,7 +246,7 @@ class npc_legion_flame : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_legion_flameAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_legion_flameAI>(creature);
}
};
@@ -297,7 +300,7 @@ class npc_infernal_volcano : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_infernal_volcanoAI(creature);
+ return GetTrialOfTheCrusaderAI<npc_infernal_volcanoAI>(creature);
}
};
@@ -350,7 +353,7 @@ class npc_fel_infernal : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_fel_infernalAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_fel_infernalAI>(creature);
}
};
@@ -401,7 +404,7 @@ class npc_nether_portal : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_nether_portalAI(creature);
+ return GetTrialOfTheCrusaderAI<npc_nether_portalAI>(creature);
}
};
@@ -479,7 +482,7 @@ class npc_mistress_of_pain : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_mistress_of_painAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_mistress_of_painAI>(creature);
}
};
@@ -591,9 +594,7 @@ public:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FEL_STREAK))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FEL_STREAK });
}
void HandleScript(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
index 258e392edde..81cd4ff8470 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
@@ -17,12 +17,17 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
+#include "SpellAuraEffects.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "trial_of_the_crusader.h"
#include "Vehicle.h"
-#include "Player.h"
-#include "SpellScript.h"
-#include "SpellAuraEffects.h"
enum Yells
{
@@ -290,7 +295,7 @@ class boss_gormok : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_gormokAI>(creature);
+ return GetTrialOfTheCrusaderAI<boss_gormokAI>(creature);
}
};
@@ -463,7 +468,7 @@ class npc_snobold_vassal : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_snobold_vassalAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_snobold_vassalAI>(creature);
}
};
@@ -499,7 +504,7 @@ class npc_firebomb : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_firebombAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_firebombAI>(creature);
}
};
@@ -727,7 +732,7 @@ class boss_acidmaw : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_acidmawAI>(creature);
+ return GetTrialOfTheCrusaderAI<boss_acidmawAI>(creature);
}
};
@@ -791,7 +796,7 @@ class boss_dreadscale : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_dreadscaleAI>(creature);
+ return GetTrialOfTheCrusaderAI<boss_dreadscaleAI>(creature);
}
};
@@ -838,7 +843,7 @@ class npc_slime_pool : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_slime_poolAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_slime_poolAI>(creature);
}
};
@@ -853,7 +858,7 @@ class spell_gormok_fire_bomb : public SpellScriptLoader
void TriggerFireBomb(SpellEffIndex /*effIndex*/)
{
- if (const WorldLocation* pos = GetExplTargetDest())
+ if (WorldLocation const* pos = GetExplTargetDest())
{
if (Unit* caster = GetCaster())
caster->SummonCreature(NPC_FIRE_BOMB, pos->GetPositionX(), pos->GetPositionY(), pos->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 30*IN_MILLISECONDS);
@@ -1102,7 +1107,7 @@ class boss_icehowl : public CreatureScript
}
if (events.ExecuteEvent() == EVENT_TRAMPLE)
{
- Map::PlayerList const &lPlayers = me->GetMap()->GetPlayers();
+ Map::PlayerList const& lPlayers = me->GetMap()->GetPlayers();
for (Map::PlayerList::const_iterator itr = lPlayers.begin(); itr != lPlayers.end(); ++itr)
{
if (Unit* player = itr->GetSource())
@@ -1155,7 +1160,7 @@ class boss_icehowl : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_icehowlAI>(creature);
+ return GetTrialOfTheCrusaderAI<boss_icehowlAI>(creature);
}
};
@@ -1170,9 +1175,7 @@ public:
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_RIDE_PLAYER))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_RIDE_PLAYER });
}
bool Load() override
@@ -1268,9 +1271,7 @@ public:
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_RIDE_PLAYER))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_RIDE_PLAYER });
}
void OnPeriodic(AuraEffect const* /*aurEff*/)
@@ -1302,9 +1303,7 @@ public:
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_PARALYSIS))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_PARALYSIS });
}
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1340,7 +1339,7 @@ public:
slowEff->ChangeAmount(newAmount);
if (newAmount <= -100 && !GetTarget()->HasAura(SPELL_PARALYSIS))
- GetTarget()->CastSpell(GetTarget(), SPELL_PARALYSIS, true, NULL, slowEff, GetCasterGUID());
+ GetTarget()->CastSpell(GetTarget(), SPELL_PARALYSIS, true, nullptr, slowEff, GetCasterGUID());
}
}
@@ -1362,7 +1361,7 @@ public:
class spell_jormungars_snakes_spray : public SpellScriptLoader
{
public:
- spell_jormungars_snakes_spray(const char* name, uint32 spellId) : SpellScriptLoader(name), _spellId(spellId) { }
+ spell_jormungars_snakes_spray(char const* name, uint32 spellId) : SpellScriptLoader(name), _spellId(spellId) { }
class spell_jormungars_snakes_spray_SpellScript : public SpellScript
{
@@ -1371,11 +1370,10 @@ public:
public:
spell_jormungars_snakes_spray_SpellScript(uint32 spellId) : SpellScript(), _spellId(spellId) { }
+ private:
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(_spellId))
- return false;
- return true;
+ return ValidateSpellInfo({ _spellId });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -1389,7 +1387,6 @@ public:
OnEffectHitTarget += SpellEffectFn(spell_jormungars_snakes_spray_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
- private:
uint32 _spellId;
};
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
index 598caddd72f..ba4c19b316d 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
@@ -21,14 +21,16 @@
// - Hardcoded bullets spawner
#include "ScriptMgr.h"
+#include "CellImpl.h"
+#include "GridNotifiersImpl.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
-#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
-#include "Cell.h"
-#include "CellImpl.h"
+#include "SpellMgr.h"
+#include "SpellScript.h"
#include "trial_of_the_crusader.h"
enum Texts
@@ -451,7 +453,7 @@ class boss_fjola : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_fjolaAI>(creature);
+ return GetTrialOfTheCrusaderAI<boss_fjolaAI>(creature);
}
};
@@ -484,7 +486,7 @@ class boss_eydis : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_eydisAI>(creature);
+ return GetTrialOfTheCrusaderAI<boss_eydisAI>(creature);
}
};
@@ -526,7 +528,7 @@ class npc_essence_of_twin : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_essence_of_twinAI(creature);
+ return GetTrialOfTheCrusaderAI<npc_essence_of_twinAI>(creature);
};
};
@@ -617,7 +619,7 @@ class npc_unleashed_dark : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_unleashed_darkAI(creature);
+ return GetTrialOfTheCrusaderAI<npc_unleashed_darkAI>(creature);
}
};
@@ -638,9 +640,9 @@ class npc_unleashed_light : public CreatureScript
{
DoCastAOE(SPELL_UNLEASHED_LIGHT_HELPER);
me->GetMotionMaster()->MoveIdle();
- me->DespawnOrUnsummon(1*IN_MILLISECONDS);
+ me->DespawnOrUnsummon(1 * IN_MILLISECONDS);
}
- RangeCheckTimer = 0.5*IN_MILLISECONDS;
+ RangeCheckTimer = IN_MILLISECONDS / 2;
}
else
RangeCheckTimer -= diff;
@@ -649,7 +651,7 @@ class npc_unleashed_light : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_unleashed_lightAI(creature);
+ return GetTrialOfTheCrusaderAI<npc_unleashed_lightAI>(creature);
}
};
@@ -678,7 +680,7 @@ class npc_bullet_controller : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_bullet_controllerAI(creature);
+ return GetTrialOfTheCrusaderAI<npc_bullet_controllerAI>(creature);
}
};
@@ -691,16 +693,8 @@ class spell_powering_up : public SpellScriptLoader
{
PrepareSpellScript(spell_powering_up_SpellScript);
- public:
- spell_powering_up_SpellScript()
- {
- spellId = 0;
- poweringUp = 0;
- }
-
- private:
- uint32 spellId;
- uint32 poweringUp;
+ uint32 spellId = 0;
+ uint32 poweringUp = 0;
bool Load() override
{
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 4bf162838d0..506f076be33 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
@@ -17,23 +17,29 @@
*/
#include "ScriptMgr.h"
+#include "AreaBoundary.h"
+#include "GameObject.h"
#include "InstanceScript.h"
-#include "trial_of_the_crusader.h"
+#include "Log.h"
+#include "Map.h"
+#include "ObjectAccessor.h"
#include "Player.h"
#include "TemporarySummon.h"
+#include "trial_of_the_crusader.h"
-BossBoundaryData const boundaries = {
- { BOSS_BEASTS, new CircleBoundary(Position(563.26f, 139.6f), 75.0) },
- { BOSS_JARAXXUS, new CircleBoundary(Position(563.26f, 139.6f), 75.0) },
- { BOSS_CRUSADERS, new CircleBoundary(Position(563.26f, 139.6f), 75.0) },
- { BOSS_VALKIRIES, new CircleBoundary(Position(563.26f, 139.6f), 75.0) },
- { BOSS_ANUBARAK, new EllipseBoundary(Position(746.0f, 135.0f), 100.0, 75.0) }
+BossBoundaryData const boundaries =
+{
+ { BOSS_BEASTS, new CircleBoundary(Position(563.26f, 139.6f), 75.0) },
+ { BOSS_JARAXXUS, new CircleBoundary(Position(563.26f, 139.6f), 75.0) },
+ { BOSS_CRUSADERS, new CircleBoundary(Position(563.26f, 139.6f), 75.0) },
+ { BOSS_VALKIRIES, new CircleBoundary(Position(563.26f, 139.6f), 75.0) },
+ { BOSS_ANUBARAK, new EllipseBoundary(Position(746.0f, 135.0f), 100.0, 75.0) }
};
class instance_trial_of_the_crusader : public InstanceMapScript
{
public:
- instance_trial_of_the_crusader() : InstanceMapScript("instance_trial_of_the_crusader", 649) { }
+ instance_trial_of_the_crusader() : InstanceMapScript(ToCrScriptName, 649) { }
struct instance_trial_of_the_crusader_InstanceMapScript : public InstanceScript
{
@@ -314,7 +320,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
if (tributeChest)
if (Creature* tirion = instance->GetCreature(TirionGUID))
- if (GameObject* chest = tirion->SummonGameObject(tributeChest, 805.62f, 134.87f, 142.16f, 3.27f, G3D::Quat(), WEEK))
+ if (GameObject* chest = tirion->SummonGameObject(tributeChest, 805.62f, 134.87f, 142.16f, 3.27f, QuaternionData(), WEEK))
chest->SetRespawnTime(chest->GetRespawnDelay());
break;
}
@@ -346,7 +352,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
{
--TrialCounter;
// decrease attempt counter at wipe
- Map::PlayerList const &PlayerList = instance->GetPlayers();
+ Map::PlayerList const& PlayerList = instance->GetPlayers();
for (Map::PlayerList::const_iterator itr = PlayerList.begin(); itr != PlayerList.end(); ++itr)
if (Player* player = itr->GetSource())
player->SendUpdateWorldState(UPDATE_STATE_UI_COUNT, TrialCounter);
@@ -640,7 +646,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
return SaveDataBuffer;
}
- void Load(const char* strIn) override
+ void Load(char const* strIn) override
{
if (!strIn)
{
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
index 084ce0b614d..c966f74cd89 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp
@@ -20,10 +20,16 @@
// - Need better implementation of Gossip and correct gossip text and option
#include "ScriptMgr.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
+#include "TemporarySummon.h"
#include "trial_of_the_crusader.h"
-#include "Player.h"
enum Yells
{
@@ -81,6 +87,73 @@ enum Yells
SAY_STAGE_4_07 = 1
};
+Position const ToCSpawnLoc[] =
+{
+ { 563.912f, 261.625f, 394.73f, 4.70437f }, // 0 Center
+ { 575.451f, 261.496f, 394.73f, 4.6541f }, // 1 Left
+ { 549.951f, 261.55f, 394.73f, 4.74835f } // 2 Right
+};
+
+Position const ToCCommonLoc[] =
+{
+ { 559.257996f, 90.266197f, 395.122986f, 0 }, // 0 Barrent
+
+ { 563.672974f, 139.571f, 393.837006f, 0 }, // 1 Center
+ { 563.833008f, 187.244995f, 394.5f, 0 }, // 2 Backdoor
+ { 577.347839f, 195.338888f, 395.14f, 0 }, // 3 - Right
+ { 550.955933f, 195.338888f, 395.14f, 0 }, // 4 - Left
+ { 563.833008f, 195.244995f, 394.585561f, 0 }, // 5 - Center
+ { 573.5f, 180.5f, 395.14f, 0 }, // 6 Move 0 Right
+ { 553.5f, 180.5f, 395.14f, 0 }, // 7 Move 0 Left
+ { 573.0f, 170.0f, 395.14f, 0 }, // 8 Move 1 Right
+ { 555.5f, 170.0f, 395.14f, 0 }, // 9 Move 1 Left
+ { 563.8f, 216.1f, 395.1f, 0 }, // 10 Behind the door
+
+ { 575.042358f, 195.260727f, 395.137146f, 0 }, // 5
+ { 552.248901f, 195.331955f, 395.132658f, 0 }, // 6
+ { 573.342285f, 195.515823f, 395.135956f, 0 }, // 7
+ { 554.239929f, 195.825577f, 395.137909f, 0 }, // 8
+ { 571.042358f, 195.260727f, 395.137146f, 0 }, // 9
+ { 556.720581f, 195.015472f, 395.132658f, 0 }, // 10
+ { 569.534119f, 195.214478f, 395.139526f, 0 }, // 11
+ { 569.231201f, 195.941071f, 395.139526f, 0 }, // 12
+ { 558.811610f, 195.985779f, 394.671661f, 0 }, // 13
+ { 567.641724f, 195.351501f, 394.659943f, 0 }, // 14
+ { 560.633972f, 195.391708f, 395.137543f, 0 }, // 15
+ { 565.816956f, 195.477921f, 395.136810f, 0 } // 16
+};
+
+Position const TwinValkyrsLoc[] =
+{
+ { 586.060242f, 117.514809f, 394.41f, 0 }, // 0 - Dark essence 1
+ { 541.602112f, 161.879837f, 394.41f, 0 }, // 1 - Dark essence 2
+ { 541.021118f, 117.262932f, 394.41f, 0 }, // 2 - Light essence 1
+ { 586.200562f, 162.145523f, 394.41f, 0 } // 3 - Light essence 2
+};
+
+Position const LichKingLoc[] =
+{
+ { 563.549f, 152.474f, 394.393f, 0 }, // 0 - Lich king start
+ { 563.547f, 141.613f, 393.908f, 0 } // 1 - Lich king end
+};
+
+Position const AnubarakLoc[] =
+{
+ { 783.9305f, 132.9722f, 142.6711f, 3.141593f }, // 0 - Anub'arak Spawn Location (sniffed)
+ { 695.240051f, 137.834824f, 142.200000f, 0 }, // 1 - Anub'arak move point location
+ { 694.886353f, 102.484665f, 142.119614f, 0 }, // 3 - Nerub Spawn
+ { 694.500671f, 185.363968f, 142.117905f, 0 }, // 5 - Nerub Spawn
+ { 731.987244f, 83.3824690f, 142.119614f, 0 }, // 2 - Nerub Spawn
+ { 740.184509f, 193.443390f, 142.117584f, 0 } // 4 - Nerub Spawn
+};
+
+Position const EndSpawnLoc[] =
+{
+ { 648.9167f, 131.0208f, 141.6161f, 0.f }, // 0 - Highlord Tirion Fordring
+ { 649.1614f, 142.0399f, 141.3057f, 0.f }, // 1 - Argent Mage
+ { 644.6250f, 149.2743f, 140.6015f, 5.f } // 2 - Portal to Dalaran
+};
+
struct _Messages
{
AnnouncerMessages msgnum;
@@ -206,7 +279,7 @@ class npc_announcer_toc10 : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_announcer_toc10AI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_announcer_toc10AI>(creature);
}
};
@@ -335,7 +408,7 @@ class boss_lich_king_toc : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_lich_king_tocAI>(creature);
+ return GetTrialOfTheCrusaderAI<boss_lich_king_tocAI>(creature);
}
};
@@ -505,7 +578,7 @@ class npc_fizzlebang_toc : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_fizzlebang_tocAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_fizzlebang_tocAI>(creature);
}
};
@@ -751,7 +824,7 @@ class npc_tirion_toc : public CreatureScript
case 6000:
me->SummonCreature(NPC_TIRION_FORDRING, EndSpawnLoc[0]);
me->SummonCreature(NPC_ARGENT_MAGE, EndSpawnLoc[1]);
- me->SummonGameObject(GO_PORTAL_TO_DALARAN, EndSpawnLoc[2], G3D::Quat(), 0);
+ me->SummonGameObject(GO_PORTAL_TO_DALARAN, EndSpawnLoc[2], QuaternionData(), 0);
_updateTimer = 20*IN_MILLISECONDS;
_instance->SetData(TYPE_EVENT, 6005);
break;
@@ -792,7 +865,7 @@ class npc_tirion_toc : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_tirion_tocAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_tirion_tocAI>(creature);
}
};
@@ -875,7 +948,7 @@ class npc_garrosh_toc : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_garrosh_tocAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_garrosh_tocAI>(creature);
}
};
@@ -958,7 +1031,7 @@ class npc_varian_toc : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_varian_tocAI>(creature);
+ return GetTrialOfTheCrusaderAI<npc_varian_tocAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
index 5178961d651..d744c7e1cd2 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
@@ -1,12 +1,31 @@
-/* Copyright (C) 2009 - 2010 by /dev/rsa for ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- * This program is free software licensed under GPL version 2
- * Please see the included DOCS/LICENSE.TXT for more information */
+/*
+ * Copyright (C) 2008-2017 TrinityCore <http://www.trinitycore.org/>
+ * Copyright (C) 2009-2010 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+ *
+ * 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 DEF_CRUSADER_H
#define DEF_CRUSADER_H
+#include "CreatureAIImpl.h"
+
+#define ToCrScriptName "instance_trial_of_the_crusader"
#define DataHeader "TCR"
+struct Position;
+
enum TCRDataTypes
{
BOSS_BEASTS = 0,
@@ -44,106 +63,8 @@ enum TCRMiscData
DESPAWN_TIME = 1200000
};
-const Position ToCSpawnLoc[]=
-{
- {563.912f, 261.625f, 394.73f, 4.70437f}, // 0 Center
- {575.451f, 261.496f, 394.73f, 4.6541f}, // 1 Left
- {549.951f, 261.55f, 394.73f, 4.74835f} // 2 Right
-};
-
-const Position ToCCommonLoc[]=
-{
- {559.257996f, 90.266197f, 395.122986f, 0}, // 0 Barrent
-
- {563.672974f, 139.571f, 393.837006f, 0}, // 1 Center
- {563.833008f, 187.244995f, 394.5f, 0}, // 2 Backdoor
- {577.347839f, 195.338888f, 395.14f, 0}, // 3 - Right
- {550.955933f, 195.338888f, 395.14f, 0}, // 4 - Left
- {563.833008f, 195.244995f, 394.585561f, 0}, // 5 - Center
- {573.5f, 180.5f, 395.14f, 0}, // 6 Move 0 Right
- {553.5f, 180.5f, 395.14f, 0}, // 7 Move 0 Left
- {573.0f, 170.0f, 395.14f, 0}, // 8 Move 1 Right
- {555.5f, 170.0f, 395.14f, 0}, // 9 Move 1 Left
- {563.8f, 216.1f, 395.1f, 0}, // 10 Behind the door
-
- {575.042358f, 195.260727f, 395.137146f, 0}, // 5
- {552.248901f, 195.331955f, 395.132658f, 0}, // 6
- {573.342285f, 195.515823f, 395.135956f, 0}, // 7
- {554.239929f, 195.825577f, 395.137909f, 0}, // 8
- {571.042358f, 195.260727f, 395.137146f, 0}, // 9
- {556.720581f, 195.015472f, 395.132658f, 0}, // 10
- {569.534119f, 195.214478f, 395.139526f, 0}, // 11
- {569.231201f, 195.941071f, 395.139526f, 0}, // 12
- {558.811610f, 195.985779f, 394.671661f, 0}, // 13
- {567.641724f, 195.351501f, 394.659943f, 0}, // 14
- {560.633972f, 195.391708f, 395.137543f, 0}, // 15
- {565.816956f, 195.477921f, 395.136810f, 0} // 16
-};
-
-const Position JaraxxusLoc[]=
-{
- {508.104767f, 138.247345f, 395.128052f, 0}, // 0 - Fizzlebang start location
- {548.610596f, 139.807800f, 394.321838f, 0}, // 1 - fizzlebang end
- {581.854187f, 138.0f, 394.319f, 0}, // 2 - Portal Right
- {550.558838f, 138.0f, 394.319f, 0} // 3 - Portal Left
-};
-
-const Position FactionChampionLoc[]=
-{
- {514.231f, 105.569f, 418.234f, 0}, // 0 - Horde Initial Pos 0
- {508.334f, 115.377f, 418.234f, 0}, // 1 - Horde Initial Pos 1
- {506.454f, 126.291f, 418.234f, 0}, // 2 - Horde Initial Pos 2
- {506.243f, 106.596f, 421.592f, 0}, // 3 - Horde Initial Pos 3
- {499.885f, 117.717f, 421.557f, 0}, // 4 - Horde Initial Pos 4
-
- {613.127f, 100.443f, 419.74f, 0}, // 5 - Ally Initial Pos 0
- {621.126f, 128.042f, 418.231f, 0}, // 6 - Ally Initial Pos 1
- {618.829f, 113.606f, 418.232f, 0}, // 7 - Ally Initial Pos 2
- {625.845f, 112.914f, 421.575f, 0}, // 8 - Ally Initial Pos 3
- {615.566f, 109.653f, 418.234f, 0}, // 9 - Ally Initial Pos 4
-
- {535.469f, 113.012f, 394.66f, 0}, // 10 - Horde Final Pos 0
- {526.417f, 137.465f, 394.749f, 0}, // 11 - Horde Final Pos 1
- {528.108f, 111.057f, 395.289f, 0}, // 12 - Horde Final Pos 2
- {519.92f, 134.285f, 395.289f, 0}, // 13 - Horde Final Pos 3
- {533.648f, 119.148f, 394.646f, 0}, // 14 - Horde Final Pos 4
- {531.399f, 125.63f, 394.708f, 0}, // 15 - Horde Final Pos 5
- {528.958f, 131.47f, 394.73f, 0}, // 16 - Horde Final Pos 6
- {526.309f, 116.667f, 394.833f, 0}, // 17 - Horde Final Pos 7
- {524.238f, 122.411f, 394.819f, 0}, // 18 - Horde Final Pos 8
- {521.901f, 128.488f, 394.832f, 0} // 19 - Horde Final Pos 9
-};
-
-const Position TwinValkyrsLoc[]=
-{
- {586.060242f, 117.514809f, 394.41f, 0}, // 0 - Dark essence 1
- {541.602112f, 161.879837f, 394.41f, 0}, // 1 - Dark essence 2
- {541.021118f, 117.262932f, 394.41f, 0}, // 2 - Light essence 1
- {586.200562f, 162.145523f, 394.41f, 0} // 3 - Light essence 2
-};
-
-const Position LichKingLoc[]=
-{
- {563.549f, 152.474f, 394.393f, 0}, // 0 - Lich king start
- {563.547f, 141.613f, 393.908f, 0} // 1 - Lich king end
-};
-
-const Position AnubarakLoc[]=
-{
- {783.9305f, 132.9722f, 142.6711f, 3.141593f}, // 0 - Anub'arak Spawn Location (sniffed)
- {695.240051f, 137.834824f, 142.200000f, 0}, // 1 - Anub'arak move point location
- {694.886353f, 102.484665f, 142.119614f, 0}, // 3 - Nerub Spawn
- {694.500671f, 185.363968f, 142.117905f, 0}, // 5 - Nerub Spawn
- {731.987244f, 83.3824690f, 142.119614f, 0}, // 2 - Nerub Spawn
- {740.184509f, 193.443390f, 142.117584f, 0} // 4 - Nerub Spawn
-};
-
-const Position EndSpawnLoc[]=
-{
- {648.9167f, 131.0208f, 141.6161f, 0.f}, // 0 - Highlord Tirion Fordring
- {649.1614f, 142.0399f, 141.3057f, 0.f}, // 1 - Argent Mage
- {644.6250f, 149.2743f, 140.6015f, 5.f} // 2 - Portal to Dalaran
-};
+extern Position const ToCCommonLoc[];
+extern Position const AnubarakLoc[];
enum TCRWorldStateIds
{
@@ -298,4 +219,10 @@ enum TCRAchievementData
EVENT_START_TWINS_FIGHT = 21853
};
+template <class AI, class T>
+inline AI* GetTrialOfTheCrusaderAI(T* obj)
+{
+ return GetInstanceAI<AI>(obj, ToCrScriptName);
+}
+
#endif
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp
index 84734e48381..2a4f52e4ee1 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp
@@ -20,8 +20,10 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
#include "drak_tharon_keep.h"
+#include "InstanceScript.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
enum Spells
{
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
index 66c44c01019..2bcfd7a70d6 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp
@@ -16,9 +16,13 @@
*/
#include "ScriptMgr.h"
-#include "SpellScript.h"
-#include "ScriptedCreature.h"
#include "drak_tharon_keep.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
+#include "SpellScript.h"
enum Yells
{
@@ -239,7 +243,7 @@ public:
if (Creature* crystalChannelTarget = crystal->FindNearestCreature(NPC_CRYSTAL_CHANNEL_TARGET, 5.0f))
{
if (active)
- crystalChannelTarget->CastSpell((Unit*)NULL, SPELL_BEAM_CHANNEL);
+ crystalChannelTarget->CastSpell((Unit*)nullptr, SPELL_BEAM_CHANNEL);
else if (crystalChannelTarget->HasUnitState(UNIT_STATE_CASTING))
crystalChannelTarget->CastStop();
}
@@ -374,15 +378,13 @@ class spell_novos_summon_minions : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_COPY_OF_MINIONS))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_COPY_OF_MINIONS });
}
void HandleScript(SpellEffIndex /*effIndex*/)
{
for (uint8 i = 0; i < 2; ++i)
- GetCaster()->CastSpell((Unit*)NULL, SPELL_SUMMON_COPY_OF_MINIONS, true);
+ GetCaster()->CastSpell((Unit*)nullptr, SPELL_SUMMON_COPY_OF_MINIONS, true);
}
void Register() override
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
index 00676a0a3c3..74746235628 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
@@ -219,9 +219,7 @@ class spell_tharon_ja_clear_gift_of_tharon_ja : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_GIFT_OF_THARON_JA))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_GIFT_OF_THARON_JA });
}
void HandleScript(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
index 50bf88593c2..fd8b209e0cb 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
@@ -16,10 +16,13 @@
*/
#include "ScriptMgr.h"
+#include "drak_tharon_keep.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
-#include "drak_tharon_keep.h"
+#include "SpellScript.h"
enum Spells
{
@@ -136,7 +139,7 @@ class boss_trollgore : public CreatureScript
case EVENT_SPAWN:
for (uint8 i = 0; i < 3; ++i)
if (Creature* trigger = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TROLLGORE_INVADER_SUMMONER_1 + i)))
- trigger->CastSpell(trigger, RAND(SPELL_SUMMON_INVADER_A, SPELL_SUMMON_INVADER_B, SPELL_SUMMON_INVADER_C), true, NULL, NULL, me->GetGUID());
+ trigger->CastSpell(trigger, RAND(SPELL_SUMMON_INVADER_A, SPELL_SUMMON_INVADER_B, SPELL_SUMMON_INVADER_C), true, nullptr, nullptr, me->GetGUID());
events.ScheduleEvent(EVENT_SPAWN, urand(30000, 40000));
break;
@@ -234,9 +237,7 @@ class spell_trollgore_consume : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_CONSUME_BUFF))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_CONSUME_BUFF });
}
void HandleConsume(SpellEffIndex /*effIndex*/)
@@ -269,16 +270,14 @@ class spell_trollgore_corpse_explode : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_CORPSE_EXPLODE_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_CORPSE_EXPLODE_DAMAGE });
}
void PeriodicTick(AuraEffect const* aurEff)
{
if (aurEff->GetTickNumber() == 2)
if (Unit* caster = GetCaster())
- caster->CastSpell(GetTarget(), SPELL_CORPSE_EXPLODE_DAMAGE, true, NULL, aurEff);
+ caster->CastSpell(GetTarget(), SPELL_CORPSE_EXPLODE_DAMAGE, true, nullptr, aurEff);
}
void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -312,9 +311,7 @@ class spell_trollgore_invader_taunt : public SpellScriptLoader
bool Validate(SpellInfo const* spellInfo) override
{
- if (!sSpellMgr->GetSpellInfo(spellInfo->Effects[EFFECT_0].CalcValue()))
- return false;
- return true;
+ return ValidateSpellInfo({ static_cast<uint32>(spellInfo->Effects[EFFECT_0].CalcValue()) });
}
void HandleTaunt(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h b/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h
index de016aed14e..02e29cc3763 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h
+++ b/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h
@@ -18,6 +18,8 @@
#ifndef DRAK_THARON_KEEP_H_
#define DRAK_THARON_KEEP_H_
+#include "CreatureAIImpl.h"
+
#define DrakTharonKeepScriptName "instance_drak_tharon_keep"
#define DataHeader "DTK"
@@ -84,10 +86,10 @@ enum DTKGameObjectIds
GO_NOVOS_CRYSTAL_4 = 189302
};
-template<class AI>
-AI* GetDrakTharonKeepAI(Creature* creature)
+template <class AI, class T>
+inline AI* GetDrakTharonKeepAI(T* obj)
{
- return GetInstanceAI<AI>(creature, DrakTharonKeepScriptName);
+ return GetInstanceAI<AI>(obj, DrakTharonKeepScriptName);
}
#endif // DRAK_THARON_KEEP_H_
diff --git a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp
index 68ba3cb2591..dfd3f44ac6d 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp
@@ -16,9 +16,11 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "InstanceScript.h"
#include "drak_tharon_keep.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "ScriptedCreature.h"
class instance_drak_tharon_keep : public InstanceMapScript
{
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
index a7e679433c5..abab9f7ead7 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
@@ -16,10 +16,14 @@
*/
#include "ScriptMgr.h"
+#include "forge_of_souls.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
-#include "forge_of_souls.h"
+#include "SpellScript.h"
enum Yells
{
@@ -212,7 +216,7 @@ class boss_bronjahm : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_bronjahmAI>(creature, FoSScriptName);
+ return GetForgeOfSoulsAI<boss_bronjahmAI>(creature);
}
};
@@ -252,7 +256,7 @@ class npc_corrupted_soul_fragment : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_corrupted_soul_fragmentAI>(creature, FoSScriptName);
+ return GetForgeOfSoulsAI<npc_corrupted_soul_fragmentAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
index 2b5224947ba..32b815f1f6d 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
@@ -16,12 +16,16 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "forge_of_souls.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
#include "Player.h"
-#include "SpellInfo.h"
+#include "ScriptedCreature.h"
#include "SpellAuraEffects.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
-#include "forge_of_souls.h"
+#include "TemporarySummon.h"
/*
* @todo
@@ -217,7 +221,7 @@ class boss_devourer_of_souls : public CreatureScript
}
}
- void SpellHitTarget(Unit* /*target*/, const SpellInfo* spell) override
+ void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
{
if (spell->Id == H_SPELL_PHANTOM_BLAST)
threeFaced = false;
@@ -342,7 +346,7 @@ class boss_devourer_of_souls : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_devourer_of_soulsAI>(creature, FoSScriptName);
+ return GetForgeOfSoulsAI<boss_devourer_of_soulsAI>(creature);
}
};
@@ -358,9 +362,7 @@ class spell_devourer_of_souls_mirrored_soul : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MIRRORED_SOUL_PROC_AURA))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_MIRRORED_SOUL_PROC_AURA });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -393,9 +395,7 @@ class spell_devourer_of_souls_mirrored_soul_proc : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MIRRORED_SOUL_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_MIRRORED_SOUL_DAMAGE });
}
bool CheckProc(ProcEventInfo& /*eventInfo*/)
@@ -439,9 +439,7 @@ class spell_devourer_of_souls_mirrored_soul_target_selector : public SpellScript
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MIRRORED_SOUL_BUFF))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_MIRRORED_SOUL_BUFF });
}
void FilterTargets(std::list<WorldObject*>& targets)
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
index 7a2c01ce17c..ae6be6f9ad2 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp
@@ -16,10 +16,10 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "ScriptedGossip.h"
#include "forge_of_souls.h"
#include "Player.h"
+#include "ScriptedCreature.h"
+#include "ScriptedGossip.h"
enum Events
{
@@ -163,7 +163,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_sylvanas_fosAI>(creature);
+ return GetForgeOfSoulsAI<npc_sylvanas_fosAI>(creature);
}
};
@@ -272,7 +272,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_jaina_fosAI>(creature);
+ return GetForgeOfSoulsAI<npc_jaina_fosAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h
index 897cd72ba50..08721c431cc 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h
@@ -18,6 +18,8 @@
#ifndef FORGE_OF_SOULS_H_
#define FORGE_OF_SOULS_H_
+#include "CreatureAIImpl.h"
+
#define FoSScriptName "instance_forge_of_souls"
#define DataHeader "FOS"
@@ -55,4 +57,10 @@ enum FOSCreatures
NPC_CRUCIBLE_OF_SOULS = 37094
};
+template <class AI, class T>
+inline AI* GetForgeOfSoulsAI(T* obj)
+{
+ return GetInstanceAI<AI>(obj, FoSScriptName);
+}
+
#endif // FORGE_OF_SOULS_H_
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
index 2b6548bccc3..eac44c2d3f3 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
@@ -16,14 +16,16 @@
*/
#include "ScriptMgr.h"
-#include "InstanceScript.h"
+#include "AreaBoundary.h"
+#include "Creature.h"
#include "forge_of_souls.h"
+#include "InstanceScript.h"
+#include "Map.h"
#include "Player.h"
-
BossBoundaryData const boundaries =
{
- { DATA_BRONJAHM, new CircleBoundary(Position(5297.3f, 2506.45f), 100.96) },
+ { DATA_BRONJAHM, new CircleBoundary(Position(5297.3f, 2506.45f), 100.96) },
{ DATA_DEVOURER_OF_SOULS, new ParallelogramBoundary(Position(5663.56f, 2570.53f), Position(5724.39f, 2520.45f), Position(5570.36f, 2461.42f)) }
};
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp
index 3128014ad51..356e6c230b7 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp
@@ -16,8 +16,10 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "boss_horAI.h"
#include "halls_of_reflection.h"
+#include "InstanceScript.h"
+#include "SpellMgr.h"
enum Texts
{
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.cpp
new file mode 100644
index 00000000000..4aec3a9ed78
--- /dev/null
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.cpp
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2008-2017 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/>.
+ */
+
+#include "boss_horAI.h"
+#include "halls_of_reflection.h"
+#include "InstanceScript.h"
+
+boss_horAI::boss_horAI(Creature* creature, uint32 bossId) : BossAI(creature, bossId)
+{
+}
+
+void boss_horAI::Reset()
+{
+ _Reset();
+ me->SetVisible(false);
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
+ me->SetReactState(REACT_PASSIVE);
+ if (instance->GetData(DATA_WAVE_COUNT) != NOT_STARTED)
+ instance->ProcessEvent(nullptr, EVENT_DO_WIPE);
+}
+
+void boss_horAI::DoAction(int32 actionId)
+{
+ switch (actionId)
+ {
+ case ACTION_ENTER_COMBAT: // called by InstanceScript when boss shall enter in combat.
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
+ me->SetReactState(REACT_AGGRESSIVE);
+ DoZoneInCombat(me, 150.0f);
+ break;
+ default:
+ break;
+ }
+}
+
+void boss_horAI::JustSummoned(Creature* summon)
+{
+ summons.Summon(summon);
+}
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.h b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.h
new file mode 100644
index 00000000000..1d48ff6da1f
--- /dev/null
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_horAI.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008-2017 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 boss_horAI_h__
+#define boss_horAI_h__
+
+#include "ScriptedCreature.h"
+
+// Base class for FALRIC and MARWYN
+struct boss_horAI : BossAI
+{
+ boss_horAI(Creature* creature, uint32 bossId);
+ void Reset() override;
+ void DoAction(int32 actionId) override;
+ void JustSummoned(Creature* summon) override;
+};
+
+#endif // boss_horAI_h__
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp
index b56301e8e65..00b9392eab8 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp
@@ -16,10 +16,11 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellScript.h"
-#include "SpellAuraEffects.h"
+#include "boss_horAI.h"
#include "halls_of_reflection.h"
+#include "InstanceScript.h"
+#include "SpellAuraEffects.h"
+#include "SpellScript.h"
enum Texts
{
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
index af4e20ccb06..ab35de44aeb 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
@@ -16,13 +16,19 @@
*/
#include "ScriptMgr.h"
+#include "halls_of_reflection.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "MoveSplineInit.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
+#include "Spell.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "Transport.h"
-#include "Player.h"
-#include "MoveSplineInit.h"
-#include "halls_of_reflection.h"
enum Text
{
@@ -338,6 +344,12 @@ Position const IceWallTargetPosition[] =
{ 5318.289f, 1749.184f, 771.9423f, 0.8726646f } // 4th Icewall
};
+void GameObjectDeleteDelayEvent::DeleteGameObject()
+{
+ if (GameObject* go = ObjectAccessor::GetGameObject(*_owner, _gameObjectGUID))
+ go->Delete();
+}
+
class npc_jaina_or_sylvanas_intro_hor : public CreatureScript
{
public:
@@ -1641,7 +1653,7 @@ class npc_phantom_hallucination : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_phantom_hallucinationAI(creature);
+ return GetHallsOfReflectionAI<npc_phantom_hallucinationAI>(creature);
}
};
@@ -1995,7 +2007,7 @@ class npc_spiritual_reflection : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_spiritual_reflectionAI(creature);
+ return GetHallsOfReflectionAI<npc_spiritual_reflectionAI>(creature);
}
};
@@ -2816,9 +2828,9 @@ class spell_hor_gunship_cannon_fire : public SpellScriptLoader
if (!urand(0, 2))
{
if (GetTarget()->GetEntry() == NPC_GUNSHIP_CANNON_HORDE)
- GetTarget()->CastSpell((Unit*)NULL, SPELL_GUNSHIP_CANNON_FIRE_MISSILE_HORDE, true);
+ GetTarget()->CastSpell((Unit*)nullptr, SPELL_GUNSHIP_CANNON_FIRE_MISSILE_HORDE, true);
else
- GetTarget()->CastSpell((Unit*)NULL, SPELL_GUNSHIP_CANNON_FIRE_MISSILE_ALLIANCE, true);
+ GetTarget()->CastSpell((Unit*)nullptr, SPELL_GUNSHIP_CANNON_FIRE_MISSILE_ALLIANCE, true);
}
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h
index 77f7d9d41a7..8d1fe6961c7 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h
@@ -18,6 +18,10 @@
#ifndef HALLS_OF_REFLECTION_H_
#define HALLS_OF_REFLECTION_H_
+#include "CreatureAIImpl.h"
+#include "EventProcessor.h"
+#include "ObjectGuid.h"
+
#define HoRScriptName "instance_halls_of_reflection"
#define DataHeader "HOR"
@@ -192,51 +196,12 @@ enum HORInstanceYells
SAY_CAPTAIN_FINAL = 1
};
-// Base class for FALRIC and MARWYN
-struct boss_horAI : BossAI
-{
- boss_horAI(Creature* creature, uint32 bossId) : BossAI(creature, bossId) { }
-
- void Reset() override
- {
- _Reset();
- me->SetVisible(false);
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
- me->SetReactState(REACT_PASSIVE);
- if (instance->GetData(DATA_WAVE_COUNT) != NOT_STARTED)
- instance->ProcessEvent(NULL, EVENT_DO_WIPE);
- }
-
- void DoAction(int32 actionId) override
- {
- switch (actionId)
- {
- case ACTION_ENTER_COMBAT: // called by InstanceScript when boss shall enter in combat.
- me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
- me->SetReactState(REACT_AGGRESSIVE);
- DoZoneInCombat(me, 150.0f);
- break;
- default:
- break;
- }
- }
-
- void JustSummoned(Creature* summon) override
- {
- summons.Summon(summon);
- }
-};
-
class GameObjectDeleteDelayEvent : public BasicEvent
{
public:
GameObjectDeleteDelayEvent(Unit* owner, ObjectGuid gameObjectGUID) : _owner(owner), _gameObjectGUID(gameObjectGUID) { }
- void DeleteGameObject()
- {
- if (GameObject* go = ObjectAccessor::GetGameObject(*_owner, _gameObjectGUID))
- go->Delete();
- }
+ void DeleteGameObject();
bool Execute(uint64 /*execTime*/, uint32 /*diff*/) override
{
@@ -254,10 +219,10 @@ class GameObjectDeleteDelayEvent : public BasicEvent
ObjectGuid _gameObjectGUID;
};
-template<class AI>
-AI* GetHallsOfReflectionAI(Creature* creature)
+template <class AI, class T>
+inline AI* GetHallsOfReflectionAI(T* obj)
{
- return GetInstanceAI<AI>(creature, HoRScriptName);
+ return GetInstanceAI<AI>(obj, HoRScriptName);
}
#endif // HALLS_OF_REFLECTION_H_
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
index 694ef000ed1..936a1117b88 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
@@ -16,12 +16,14 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "halls_of_reflection.h"
#include "InstanceScript.h"
+#include "Map.h"
#include "Player.h"
+#include "ScriptedCreature.h"
+#include "TemporarySummon.h"
#include "Transport.h"
#include "WorldPacket.h"
-#include "halls_of_reflection.h"
Position const JainaSpawnPos = { 5236.659f, 1929.894f, 707.7781f, 0.8726646f }; // Jaina Spawn Position
Position const SylvanasSpawnPos = { 5236.667f, 1929.906f, 707.7781f, 0.8377581f }; // Sylvanas Spawn Position (sniffed)
@@ -344,7 +346,7 @@ class instance_halls_of_reflection : public InstanceMapScript
if (Creature* lichking = instance->GetCreature(TheLichKingEscapeGUID))
{
- lichking->CastSpell((Unit*)NULL, SPELL_ACHIEV_CHECK, true);
+ lichking->CastSpell((Unit*)nullptr, SPELL_ACHIEV_CHECK, true);
lichking->DespawnOrUnsummon(1);
}
break;
@@ -438,7 +440,7 @@ class instance_halls_of_reflection : public InstanceMapScript
break;
case DATA_WAVE_COUNT:
if (_waveCount && data == NOT_STARTED)
- ProcessEvent(NULL, EVENT_DO_WIPE);
+ ProcessEvent(nullptr, EVENT_DO_WIPE);
break;
case DATA_FROSTSWORN_GENERAL:
if (data == DONE)
@@ -451,7 +453,7 @@ class instance_halls_of_reflection : public InstanceMapScript
if (_quelDelarState == NOT_STARTED)
{
if (Creature* bunny = instance->GetCreature(FrostmourneAltarBunnyGUID))
- bunny->CastSpell((Unit*)NULL, SPELL_ESSENCE_OF_CAPTURED);
+ bunny->CastSpell((Unit*)nullptr, SPELL_ESSENCE_OF_CAPTURED);
events.ScheduleEvent(EVENT_QUEL_DELAR_SUMMON_UTHER, 2000);
}
}
@@ -516,7 +518,7 @@ class instance_halls_of_reflection : public InstanceMapScript
switch (events.ExecuteEvent())
{
case EVENT_NEXT_WAVE:
- ProcessEvent(NULL, EVENT_ADD_WAVE);
+ ProcessEvent(nullptr, EVENT_ADD_WAVE);
break;
case EVENT_SPAWN_ESCAPE_EVENT:
SpawnEscapeEvent();
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
index fc1395437c1..5b806daf2b2 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp
@@ -16,10 +16,14 @@
*/
#include "ScriptMgr.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "pit_of_saron.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
#include "SpellAuras.h"
-#include "pit_of_saron.h"
+#include "SpellScript.h"
enum Yells
{
@@ -167,7 +171,7 @@ class boss_garfrost : public CreatureScript
events.ScheduleEvent(EVENT_RESUME_ATTACK, 5000);
}
- void SpellHitTarget(Unit* target, const SpellInfo* spell) override
+ void SpellHitTarget(Unit* target, SpellInfo const* spell) override
{
if (spell->Id == SPELL_PERMAFROST_HELPER)
{
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
index 270f4d0c700..05bf39cb5fb 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
@@ -16,12 +16,17 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "pit_of_saron.h"
+#include "Player.h"
#include "ScriptedCreature.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
-#include "pit_of_saron.h"
+#include "TemporarySummon.h"
#include "Vehicle.h"
-#include "Player.h"
enum Spells
{
@@ -374,7 +379,7 @@ class boss_krick : public CreatureScript
if (Creature* temp = ObjectAccessor::GetCreature(*me, _instanceScript->GetGuidData(DATA_JAINA_SYLVANAS_1)))
temp->DespawnOrUnsummon();
- Creature* jainaOrSylvanas = NULL;
+ Creature* jainaOrSylvanas = nullptr;
if (_instanceScript->GetData(DATA_TEAM_IN_INSTANCE) == ALLIANCE)
jainaOrSylvanas = me->SummonCreature(NPC_JAINA_PART1, outroPos[2], TEMPSUMMON_MANUAL_DESPAWN);
else
@@ -521,7 +526,7 @@ class spell_krick_explosive_barrage : public SpellScriptLoader
if (Unit* caster = GetCaster())
if (caster->GetTypeId() == TYPEID_UNIT)
{
- Map::PlayerList const &players = caster->GetMap()->GetPlayers();
+ Map::PlayerList const& players = caster->GetMap()->GetPlayers();
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
if (Player* player = itr->GetSource())
if (player->IsWithinDist(caster, 60.0f)) // don't know correct range
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
index 8ceceeff8e7..4e62380b983 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
@@ -16,13 +16,17 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellScript.h"
-#include "SpellAuraEffects.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "pit_of_saron.h"
-#include "Vehicle.h"
#include "Player.h"
#include "PlayerAI.h"
+#include "ScriptedCreature.h"
+#include "SpellAuraEffects.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
+#include "Vehicle.h"
enum Yells
{
@@ -387,7 +391,7 @@ class boss_rimefang : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_rimefangAI(creature);
+ return GetPitOfSaronAI<boss_rimefangAI>(creature);
}
};
@@ -400,13 +404,13 @@ class player_overlord_brandAI : public PlayerAI
{
if (Creature* tyrannus = ObjectAccessor::GetCreature(*me, _tyrannusGUID))
if (Unit* victim = tyrannus->GetVictim())
- me->CastCustomSpell(SPELL_OVERLORD_BRAND_DAMAGE, SPELLVALUE_BASE_POINT0, damage, victim, true, NULL, NULL, tyrannus->GetGUID());
+ me->CastCustomSpell(SPELL_OVERLORD_BRAND_DAMAGE, SPELLVALUE_BASE_POINT0, damage, victim, true, nullptr, nullptr, tyrannus->GetGUID());
}
void HealDone(Unit* /*target*/, uint32& addHealth) override
{
if (Creature* tyrannus = ObjectAccessor::GetCreature(*me, _tyrannusGUID))
- me->CastCustomSpell(SPELL_OVERLORD_BRAND_HEAL, SPELLVALUE_BASE_POINT0, int32(addHealth * 5.5f), tyrannus, true, NULL, NULL, tyrannus->GetGUID());
+ me->CastCustomSpell(SPELL_OVERLORD_BRAND_HEAL, SPELLVALUE_BASE_POINT0, int32(addHealth * 5.5f), tyrannus, true, nullptr, nullptr, tyrannus->GetGUID());
}
void UpdateAI(uint32 /*diff*/) override { }
@@ -424,14 +428,6 @@ class spell_tyrannus_overlord_brand : public SpellScriptLoader
{
PrepareAuraScript(spell_tyrannus_overlord_brand_AuraScript);
- public:
- spell_tyrannus_overlord_brand_AuraScript()
- {
- oldAI = nullptr;
- oldAIState = false;
- }
-
- private:
bool Load() override
{
return GetCaster() && GetCaster()->GetEntry() == NPC_TYRANNUS;
@@ -466,8 +462,8 @@ class spell_tyrannus_overlord_brand : public SpellScriptLoader
AfterEffectRemove += AuraEffectRemoveFn(spell_tyrannus_overlord_brand_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
- PlayerAI* oldAI;
- bool oldAIState;
+ PlayerAI* oldAI = nullptr;
+ bool oldAIState = false;
};
AuraScript* GetAuraScript() const override
@@ -520,9 +516,7 @@ class spell_tyrannus_rimefang_icy_blast : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ICY_BLAST_AURA))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_ICY_BLAST_AURA });
}
void HandleTriggerMissile(SpellEffIndex effIndex)
@@ -550,7 +544,7 @@ class at_tyrannus_event_starter : public AreaTriggerScript
public:
at_tyrannus_event_starter() : AreaTriggerScript("at_tyrannus_event_starter") { }
- bool OnTrigger(Player* player, const AreaTriggerEntry* /*at*/) override
+ bool OnTrigger(Player* player, AreaTriggerEntry const* /*at*/) override
{
InstanceScript* instance = player->GetInstanceScript();
if (player->IsGameMaster() || !instance)
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
index 652aed172fc..a5df7ecf2b5 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
@@ -16,7 +16,9 @@
*/
#include "ScriptMgr.h"
+#include "Creature.h"
#include "InstanceScript.h"
+#include "Map.h"
#include "pit_of_saron.h"
#include "Player.h"
@@ -164,28 +166,6 @@ class instance_pit_of_saron : public InstanceMapScript
}
}
- void OnGameObjectCreate(GameObject* go) override
- {
- switch (go->GetEntry())
- {
- case GO_ICE_WALL:
- case GO_HALLS_OF_REFLECTION_PORTCULLIS:
- AddDoor(go, true);
- break;
- }
- }
-
- void OnGameObjectRemove(GameObject* go) override
- {
- switch (go->GetEntry())
- {
- case GO_ICE_WALL:
- case GO_HALLS_OF_REFLECTION_PORTCULLIS:
- AddDoor(go, false);
- break;
- }
- }
-
bool SetBossState(uint32 type, EncounterState state) override
{
if (!InstanceScript::SetBossState(type, state))
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp
index 0e11e7f9089..bd73ab93c6d 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp
@@ -16,13 +16,15 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "ObjectAccessor.h"
+#include "PassiveAI.h"
+#include "pit_of_saron.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
-#include "pit_of_saron.h"
-#include "PassiveAI.h"
#include "Vehicle.h"
-#include "Player.h"
enum Spells
{
@@ -40,6 +42,19 @@ enum Events
EVENT_TACTICAL_BLINK = 2,
};
+bool ScheduledIcicleSummons::Execute(uint64 /*time*/, uint32 /*diff*/)
+{
+ if (roll_chance_i(12))
+ {
+ _trigger->CastSpell(_trigger, SPELL_ICICLE_SUMMON, true);
+ _trigger->m_Events.AddEvent(new ScheduledIcicleSummons(_trigger), _trigger->m_Events.CalculateTime(urand(20000, 35000)));
+ }
+ else
+ _trigger->m_Events.AddEvent(new ScheduledIcicleSummons(_trigger), _trigger->m_Events.CalculateTime(urand(1000, 20000)));
+
+ return true;
+}
+
class npc_ymirjar_flamebearer : public CreatureScript
{
public:
@@ -101,7 +116,7 @@ class npc_ymirjar_flamebearer : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_ymirjar_flamebearerAI(creature);
+ return GetPitOfSaronAI<npc_ymirjar_flamebearerAI>(creature);
}
};
@@ -155,7 +170,7 @@ class npc_iceborn_protodrake : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_iceborn_protodrakeAI(creature);
+ return GetPitOfSaronAI<npc_iceborn_protodrakeAI>(creature);
}
};
@@ -214,7 +229,7 @@ class npc_geist_ambusher : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_geist_ambusherAI(creature);
+ return GetPitOfSaronAI<npc_geist_ambusherAI>(creature);
}
};
@@ -303,12 +318,7 @@ class spell_pos_ice_shards : public SpellScriptLoader
bool Load() override
{
// This script should execute only in Pit of Saron
- if (InstanceMap* instance = GetCaster()->GetMap()->ToInstanceMap())
- if (instance->GetInstanceScript())
- if (instance->GetScriptId() == sObjectMgr->GetScriptId(PoSScriptName))
- return true;
-
- return false;
+ return InstanceHasScript(GetCaster(), PoSScriptName);
}
void HandleScriptEffect(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h
index 9f2a1abd3a6..b82f897bf98 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h
@@ -18,6 +18,9 @@
#ifndef PIT_OF_SARON_H_
#define PIT_OF_SARON_H_
+#include "CreatureAIImpl.h"
+#include "EventProcessor.h"
+
#define PoSScriptName "instance_pit_of_saron"
#define DataHeader "POS"
@@ -112,27 +115,16 @@ class ScheduledIcicleSummons : public BasicEvent
public:
ScheduledIcicleSummons(Creature* trigger) : _trigger(trigger) { }
- bool Execute(uint64 /*time*/, uint32 /*diff*/) override
- {
- if (roll_chance_i(12))
- {
- _trigger->CastSpell(_trigger, SPELL_ICICLE_SUMMON, true);
- _trigger->m_Events.AddEvent(new ScheduledIcicleSummons(_trigger), _trigger->m_Events.CalculateTime(urand(20000, 35000)));
- }
- else
- _trigger->m_Events. AddEvent(new ScheduledIcicleSummons(_trigger), _trigger->m_Events.CalculateTime(urand(1000,20000)));
-
- return true;
- }
+ bool Execute(uint64 /*time*/, uint32 /*diff*/) override;
private:
Creature* _trigger;
};
-template<class AI>
-AI* GetPitOfSaronAI(Creature* creature)
+template <class AI, class T>
+inline AI* GetPitOfSaronAI(T* obj)
{
- return GetInstanceAI<AI>(creature, PoSScriptName);
+ return GetInstanceAI<AI>(obj, PoSScriptName);
}
#endif // PIT_OF_SARON_H_
diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
index 7af34da74bb..465bb9bcf24 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp
@@ -20,8 +20,10 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
#include "gundrak.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ScriptedCreature.h"
#include "SpellInfo.h"
enum Texts
diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
index 9d3dbd4e2dd..90f1d4af510 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
@@ -16,9 +16,11 @@
*/
#include "ScriptMgr.h"
+#include "gundrak.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
-#include "gundrak.h"
enum Spells
{
@@ -250,9 +252,7 @@ class spell_gal_darah_impaling_charge : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_IMPALING_CHARGE_CONTROL_VEHICLE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_IMPALING_CHARGE_CONTROL_VEHICLE });
}
bool Load() override
diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
index 22c023983b9..9eac3162096 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
@@ -225,9 +225,7 @@ class spell_moorabi_mojo_frenzy : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MOJO_FRENZY_CAST_SPEED))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_MOJO_FRENZY_CAST_SPEED });
}
void HandlePeriodic(AuraEffect const* /*aurEff*/)
diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
index 62d215f9161..fb00acb39dc 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp
@@ -16,10 +16,12 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellAuras.h"
#include "gundrak.h"
+#include "MotionMaster.h"
#include "Player.h"
+#include "ScriptedCreature.h"
+#include "SpellAuras.h"
+#include "TemporarySummon.h"
enum Spells
{
@@ -209,7 +211,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_slad_ran_constrictorAI(creature);
+ return GetGundrakAI<npc_slad_ran_constrictorAI>(creature);
}
struct npc_slad_ran_constrictorAI : public ScriptedAI
@@ -264,7 +266,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_slad_ran_viperAI(creature);
+ return GetGundrakAI<npc_slad_ran_viperAI>(creature);
}
struct npc_slad_ran_viperAI : public ScriptedAI
diff --git a/src/server/scripts/Northrend/Gundrak/gundrak.h b/src/server/scripts/Northrend/Gundrak/gundrak.h
index 44f160e36b7..e25b6e7461b 100644
--- a/src/server/scripts/Northrend/Gundrak/gundrak.h
+++ b/src/server/scripts/Northrend/Gundrak/gundrak.h
@@ -18,6 +18,8 @@
#ifndef GUNDRAK_H_
#define GUNDRAK_H_
+#include "CreatureAIImpl.h"
+
#define GundrakScriptName "instance_gundrak"
#define DataHeader "GD"
@@ -91,7 +93,7 @@ enum GDInstanceMisc
TIMER_STATUE_ACTIVATION = 3500
};
-template<class AI, class T>
+template <class AI, class T>
inline AI* GetGundrakAI(T* obj)
{
return GetInstanceAI<AI>(obj, GundrakScriptName);
diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
index 3dd8503ce9d..c9e5848d2f5 100644
--- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
+++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
@@ -16,20 +16,23 @@
*/
#include "InstanceScript.h"
-#include "Player.h"
-#include "ScriptMgr.h"
+#include "Creature.h"
+#include "EventMap.h"
+#include "GameObject.h"
#include "GameObjectAI.h"
#include "gundrak.h"
-#include "EventMap.h"
+#include "Map.h"
+#include "Player.h"
+#include "ScriptMgr.h"
DoorData const doorData[] =
{
{ GO_GAL_DARAH_DOOR_1, DATA_GAL_DARAH, DOOR_TYPE_PASSAGE },
{ GO_GAL_DARAH_DOOR_2, DATA_GAL_DARAH, DOOR_TYPE_PASSAGE },
- { GO_GAL_DARAH_DOOR_3, DATA_GAL_DARAH, DOOR_TYPE_ROOM },
+ { GO_GAL_DARAH_DOOR_3, DATA_GAL_DARAH, DOOR_TYPE_ROOM },
{ GO_ECK_THE_FEROCIOUS_DOOR, DATA_MOORABI, DOOR_TYPE_PASSAGE },
{ GO_ECK_THE_FEROCIOUS_DOOR_BEHIND, DATA_ECK_THE_FEROCIOUS, DOOR_TYPE_PASSAGE },
- { 0, 0, DOOR_TYPE_ROOM } // END
+ { 0, 0, DOOR_TYPE_ROOM } // END
};
ObjectData const creatureData[] =
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
index 5d74d128f6f..5b2248d5341 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -15,13 +15,20 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellAuraEffects.h"
#include "icecrown_citadel.h"
-#include "Player.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "PassiveAI.h"
+#include "Player.h"
+#include "ScriptedCreature.h"
+#include "Spell.h"
+#include "SpellAuraEffects.h"
+#include "SpellInfo.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
enum Texts
{
@@ -1243,9 +1250,7 @@ class spell_taldaram_flame_ball_visual : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_BALL_OF_FLAMES))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_BALL_OF_FLAMES });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1355,10 +1360,7 @@ class spell_valanar_kinetic_bomb : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_KINETIC_BOMB_EXPLOSION)
- || !sSpellMgr->GetSpellInfo(SPELL_KINETIC_BOMB_VISUAL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_KINETIC_BOMB_EXPLOSION, SPELL_KINETIC_BOMB_VISUAL });
}
void HandleDummyTick(AuraEffect const* /*aurEff*/)
@@ -1462,9 +1464,7 @@ class spell_blood_council_shadow_prison : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SHADOW_PRISON_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SHADOW_PRISON_DAMAGE });
}
void HandleDummyTick(AuraEffect const* aurEff)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index e070829ea16..b908e1a9c35 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -15,13 +15,18 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
+#include "GridNotifiers.h"
+#include "icecrown_citadel.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
#include "Spell.h"
+#include "SpellMgr.h"
+#include "SpellScript.h"
#include "SpellAuraEffects.h"
-#include "GridNotifiers.h"
-#include "icecrown_citadel.h"
enum Texts
{
@@ -372,7 +377,7 @@ class boss_blood_queen_lana_thel : public CreatureScript
}
case EVENT_BLOOD_MIRROR:
{
- // victim can be NULL when this is processed in the same update tick as EVENT_AIR_PHASE
+ // victim can be nullptr when this is processed in the same update tick as EVENT_AIR_PHASE
if (me->GetVictim())
{
Player* newOfftank = SelectRandomTarget(true);
@@ -477,13 +482,13 @@ class boss_blood_queen_lana_thel : public CreatureScript
private:
// offtank for this encounter is the player standing closest to main tank
- Player* SelectRandomTarget(bool includeOfftank, std::list<Player*>* targetList = NULL)
+ Player* SelectRandomTarget(bool includeOfftank, std::list<Player*>* targetList = nullptr)
{
std::list<HostileReference*> const& threatlist = me->getThreatManager().getThreatList();
std::list<Player*> tempTargets;
if (threatlist.empty())
- return NULL;
+ return nullptr;
for (std::list<HostileReference*>::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
if (Unit* refTarget = (*itr)->getTarget())
@@ -491,12 +496,12 @@ class boss_blood_queen_lana_thel : public CreatureScript
tempTargets.push_back(refTarget->ToPlayer());
if (tempTargets.empty())
- return NULL;
+ return nullptr;
if (targetList)
{
*targetList = tempTargets;
- return NULL;
+ return nullptr;
}
if (includeOfftank)
@@ -535,13 +540,7 @@ class spell_blood_queen_vampiric_bite : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_PLR))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_FRENZIED_BLOODTHIRST))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_PRESENCE_OF_THE_DARKFALLEN))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_PLR, SPELL_FRENZIED_BLOODTHIRST, SPELL_PRESENCE_OF_THE_DARKFALLEN });
}
SpellCastResult CheckTarget()
@@ -671,9 +670,7 @@ class spell_blood_queen_bloodbolt : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_TWILIGHT_BLOODBOLT))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_TWILIGHT_BLOODBOLT });
}
bool Load() override
@@ -722,9 +719,7 @@ class spell_blood_queen_essence_of_the_blood_queen : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_HEAL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_HEAL });
}
void OnProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
@@ -809,9 +804,7 @@ class spell_blood_queen_pact_of_the_darkfallen_dmg : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_PACT_OF_THE_DARKFALLEN_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_PACT_OF_THE_DARKFALLEN_DAMAGE });
}
// this is an additional effect to be executed
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index 064e903ba62..172c54fd7e0 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -15,13 +15,16 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
+#include "icecrown_citadel.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "SpellAuras.h"
-#include "icecrown_citadel.h"
-#include "Player.h"
+#include "SpellScript.h"
enum ScriptTexts
{
@@ -639,7 +642,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
{
if (menuId == GOSSIP_MENU_HIGH_OVERLORD_SAURFANG)
{
- player->PlayerTalkClass->SendCloseGossip();
+ CloseGossipMenuFor(player);
DoAction(ACTION_START_EVENT);
}
return false;
@@ -836,7 +839,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
{
if (menuId == GOSSIP_MENU_MURADIN_BRONZEBEARD)
{
- player->PlayerTalkClass->SendCloseGossip();
+ CloseGossipMenuFor(player);
DoAction(ACTION_START_EVENT);
}
return false;
@@ -1007,11 +1010,7 @@ class spell_deathbringer_blood_link : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_BLOOD_LINK_POWER))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_BLOOD_POWER))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_BLOOD_LINK_POWER, SPELL_BLOOD_POWER });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
@@ -1043,9 +1042,7 @@ class spell_deathbringer_blood_link_aura : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MARK_OF_THE_FALLEN_CHAMPION))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_MARK_OF_THE_FALLEN_CHAMPION });
}
void HandlePeriodicTick(AuraEffect const* /*aurEff*/)
@@ -1128,9 +1125,7 @@ class spell_deathbringer_rune_of_blood : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_BLOOD_LINK_DUMMY))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_BLOOD_LINK_DUMMY });
}
void HandleScript(SpellEffIndex effIndex)
@@ -1163,9 +1158,7 @@ class spell_deathbringer_blood_beast_blood_link : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_BLOOD_LINK_DUMMY))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_BLOOD_LINK_DUMMY });
}
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
@@ -1197,9 +1190,7 @@ class spell_deathbringer_blood_nova : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_BLOOD_LINK_DUMMY))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_BLOOD_LINK_DUMMY });
}
void HandleScript(SpellEffIndex effIndex)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
index e92b66f358f..5b0ea090802 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
@@ -15,12 +15,16 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellAuras.h"
#include "icecrown_citadel.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "ScriptedCreature.h"
+#include "SpellAuras.h"
+#include "SpellMgr.h"
+#include "SpellScript.h"
enum ScriptTexts
{
@@ -197,7 +201,7 @@ class boss_festergut : public CreatureScript
// just cast and dont bother with target, conditions will handle it
++_inhaleCounter;
if (_inhaleCounter < 3)
- me->CastSpell(me, gaseousBlight[_inhaleCounter], true, NULL, NULL, me->GetGUID());
+ me->CastSpell(me, gaseousBlight[_inhaleCounter], true, nullptr, nullptr, me->GetGUID());
}
events.ScheduleEvent(EVENT_INHALE_BLIGHT, urand(33500, 35000));
@@ -410,9 +414,7 @@ class spell_festergut_gastric_bloat : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_GASTRIC_EXPLOSION))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_GASTRIC_EXPLOSION });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -448,9 +450,7 @@ class spell_festergut_blighted_spores : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_INOCULATED))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_INOCULATED });
}
void ExtraEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
index a30ea8e9cc5..aa0ce037619 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
@@ -15,22 +15,28 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "ScriptMgr.h"
#include "CellImpl.h"
#include "CreatureTextMgr.h"
-#include "GridNotifiersImpl.h"
#include "GossipDef.h"
+#include "GridNotifiersImpl.h"
+#include "icecrown_citadel.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
#include "MoveSpline.h"
#include "MoveSplineInit.h"
+#include "ObjectAccessor.h"
#include "PassiveAI.h"
-#include "ScriptMgr.h"
#include "ScriptedCreature.h"
-#include "SpellHistory.h"
#include "SpellAuraEffects.h"
+#include "SpellHistory.h"
+#include "SpellMgr.h"
#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "Transport.h"
#include "TransportMgr.h"
#include "Vehicle.h"
-#include "icecrown_citadel.h"
+#include <G3D/Vector3.h>
enum Texts
{
@@ -383,7 +389,7 @@ public:
void ResetSlots(uint32 team)
{
- _transport = NULL;
+ _transport = nullptr;
for (uint32 i = 0; i < MAX_SLOTS; ++i)
_controlledSlots[i].Clear();
@@ -398,7 +404,7 @@ public:
return false;
bool summoned = false;
- time_t now = time(NULL);
+ time_t now = time(nullptr);
for (int32 i = first; i <= last; ++i)
{
if (_respawnCooldowns[i] > now)
@@ -411,7 +417,7 @@ public:
continue;
}
- if (Creature* passenger = _transport->SummonPassenger(_slotInfo[i].Entry, SelectSpawnPoint(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, NULL, 15000))
+ if (Creature* passenger = _transport->SummonPassenger(_slotInfo[i].Entry, SelectSpawnPoint(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, nullptr, 15000))
{
_controlledSlots[i] = passenger->GetGUID();
_respawnCooldowns[i] = time_t(0);
@@ -426,7 +432,7 @@ public:
void ClearSlot(PassengerSlots slot)
{
_controlledSlots[slot].Clear();
- _respawnCooldowns[slot] = time(NULL) + _slotInfo[slot].Cooldown;
+ _respawnCooldowns[slot] = time(nullptr) + _slotInfo[slot].Cooldown;
}
bool SlotsNeedRefill(PassengerSlots first, PassengerSlots last) const
@@ -541,7 +547,7 @@ uint32 const BattleExperienceEvent::ExperiencedTimes[5] = { 100000, 70000, 60000
struct gunship_npc_AI : public ScriptedAI
{
gunship_npc_AI(Creature* creature) : ScriptedAI(creature),
- Instance(creature->GetInstanceScript()), Slot(NULL), Index(uint32(-1))
+ Instance(creature->GetInstanceScript()), Slot(nullptr), Index(uint32(-1))
{
BurningPitchId = Instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE ? SPELL_BURNING_PITCH_A : SPELL_BURNING_PITCH_H;
me->setRegeneratingHealth(false);
@@ -677,7 +683,7 @@ class npc_gunship : public CreatureScript
{
if (damage >= me->GetHealth())
{
- JustDied(NULL);
+ JustDied(nullptr);
damage = me->GetHealth() - 1;
return;
}
@@ -833,7 +839,7 @@ class npc_gunship : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
if (!creature->GetTransport())
- return NULL;
+ return nullptr;
return GetIcecrownCitadelAI<npc_gunshipAI>(creature);
}
@@ -853,7 +859,7 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
_controller.SetTransport(creature->GetTransport());
me->setRegeneratingHealth(false);
me->m_CombatDistance = 70.0f;
- _firstMageCooldown = time(NULL) + 60;
+ _firstMageCooldown = time(nullptr) + 60;
_axethrowersYellCooldown = time_t(0);
_rocketeersYellCooldown = time_t(0);
}
@@ -863,7 +869,7 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
ScriptedAI::InitializeAI();
_events.Reset();
- _firstMageCooldown = time(NULL) + 60;
+ _firstMageCooldown = time(nullptr) + 60;
_axethrowersYellCooldown = time_t(0);
_rocketeersYellCooldown = time_t(0);
}
@@ -915,7 +921,7 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
}
else if (action == ACTION_SPAWN_MAGE)
{
- time_t now = time(NULL);
+ time_t now = time(nullptr);
if (_firstMageCooldown > now)
_events.ScheduleEvent(EVENT_SUMMON_MAGE, (_firstMageCooldown - now) * IN_MILLISECONDS);
else
@@ -1034,10 +1040,10 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
_controller.SummonCreatures(SLOT_MARINE_1, Is25ManRaid() ? SLOT_MARINE_4 : SLOT_MARINE_2);
_controller.SummonCreatures(SLOT_SERGEANT_1, Is25ManRaid() ? SLOT_SERGEANT_2 : SLOT_SERGEANT_1);
if (Transport* orgrimsHammer = me->GetTransport())
- orgrimsHammer->SummonPassenger(NPC_TELEPORT_PORTAL, OrgrimsHammerTeleportPortal, TEMPSUMMON_TIMED_DESPAWN, NULL, 21000);
+ orgrimsHammer->SummonPassenger(NPC_TELEPORT_PORTAL, OrgrimsHammerTeleportPortal, TEMPSUMMON_TIMED_DESPAWN, nullptr, 21000);
if (Transport* skybreaker = HashMapHolder<Transport>::Find(_instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
- skybreaker->SummonPassenger(NPC_TELEPORT_EXIT, SkybreakerTeleportExit, TEMPSUMMON_TIMED_DESPAWN, NULL, 23000);
+ skybreaker->SummonPassenger(NPC_TELEPORT_EXIT, SkybreakerTeleportExit, TEMPSUMMON_TIMED_DESPAWN, nullptr, 23000);
_events.ScheduleEvent(EVENT_ADDS_BOARD_YELL, 6000);
_events.ScheduleEvent(EVENT_ADDS, 60000);
@@ -1049,10 +1055,10 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
case EVENT_CHECK_RIFLEMAN:
if (_controller.SummonCreatures(SLOT_RIFLEMAN_1, Is25ManRaid() ? SLOT_RIFLEMAN_8 : SLOT_RIFLEMAN_4))
{
- if (_axethrowersYellCooldown < time(NULL))
+ if (_axethrowersYellCooldown < time(nullptr))
{
Talk(SAY_SAURFANG_AXETHROWERS);
- _axethrowersYellCooldown = time(NULL) + 5;
+ _axethrowersYellCooldown = time(nullptr) + 5;
}
}
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 1000);
@@ -1060,10 +1066,10 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
case EVENT_CHECK_MORTAR:
if (_controller.SummonCreatures(SLOT_MORTAR_1, Is25ManRaid() ? SLOT_MORTAR_4 : SLOT_MORTAR_2))
{
- if (_rocketeersYellCooldown < time(NULL))
+ if (_rocketeersYellCooldown < time(nullptr))
{
Talk(SAY_SAURFANG_ROCKETEERS);
- _rocketeersYellCooldown = time(NULL) + 5;
+ _rocketeersYellCooldown = time(nullptr) + 5;
}
}
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 1000);
@@ -1122,7 +1128,7 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
_controller.SetTransport(creature->GetTransport());
me->setRegeneratingHealth(false);
me->m_CombatDistance = 70.0f;
- _firstMageCooldown = time(NULL) + 60;
+ _firstMageCooldown = time(nullptr) + 60;
_riflemanYellCooldown = time_t(0);
_mortarYellCooldown = time_t(0);
}
@@ -1132,7 +1138,7 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
ScriptedAI::InitializeAI();
_events.Reset();
- _firstMageCooldown = time(NULL) + 60;
+ _firstMageCooldown = time(nullptr) + 60;
_riflemanYellCooldown = time_t(0);
_mortarYellCooldown = time_t(0);
}
@@ -1184,7 +1190,7 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
}
else if (action == ACTION_SPAWN_MAGE)
{
- time_t now = time(NULL);
+ time_t now = time(nullptr);
if (_firstMageCooldown > now)
_events.ScheduleEvent(EVENT_SUMMON_MAGE, (_firstMageCooldown - now) * IN_MILLISECONDS);
else
@@ -1307,10 +1313,10 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
_controller.SummonCreatures(SLOT_MARINE_1, Is25ManRaid() ? SLOT_MARINE_4 : SLOT_MARINE_2);
_controller.SummonCreatures(SLOT_SERGEANT_1, Is25ManRaid() ? SLOT_SERGEANT_2 : SLOT_SERGEANT_1);
if (Transport* skybreaker = me->GetTransport())
- skybreaker->SummonPassenger(NPC_TELEPORT_PORTAL, SkybreakerTeleportPortal, TEMPSUMMON_TIMED_DESPAWN, NULL, 21000);
+ skybreaker->SummonPassenger(NPC_TELEPORT_PORTAL, SkybreakerTeleportPortal, TEMPSUMMON_TIMED_DESPAWN, nullptr, 21000);
if (Transport* orgrimsHammer = HashMapHolder<Transport>::Find(_instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
- orgrimsHammer->SummonPassenger(NPC_TELEPORT_EXIT, OrgrimsHammerTeleportExit, TEMPSUMMON_TIMED_DESPAWN, NULL, 23000);
+ orgrimsHammer->SummonPassenger(NPC_TELEPORT_EXIT, OrgrimsHammerTeleportExit, TEMPSUMMON_TIMED_DESPAWN, nullptr, 23000);
_events.ScheduleEvent(EVENT_ADDS_BOARD_YELL, 6000);
_events.ScheduleEvent(EVENT_ADDS, 60000);
@@ -1322,10 +1328,10 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
case EVENT_CHECK_RIFLEMAN:
if (_controller.SummonCreatures(SLOT_RIFLEMAN_1, Is25ManRaid() ? SLOT_RIFLEMAN_8 : SLOT_RIFLEMAN_4))
{
- if (_riflemanYellCooldown < time(NULL))
+ if (_riflemanYellCooldown < time(nullptr))
{
Talk(SAY_MURADIN_RIFLEMAN);
- _riflemanYellCooldown = time(NULL) + 5;
+ _riflemanYellCooldown = time(nullptr) + 5;
}
}
_events.ScheduleEvent(EVENT_CHECK_RIFLEMAN, 1000);
@@ -1333,10 +1339,10 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
case EVENT_CHECK_MORTAR:
if (_controller.SummonCreatures(SLOT_MORTAR_1, Is25ManRaid() ? SLOT_MORTAR_4 : SLOT_MORTAR_2))
{
- if (_mortarYellCooldown < time(NULL))
+ if (_mortarYellCooldown < time(nullptr))
{
Talk(SAY_MURADIN_MORTAR);
- _mortarYellCooldown = time(NULL) + 5;
+ _mortarYellCooldown = time(nullptr) + 5;
}
}
_events.ScheduleEvent(EVENT_CHECK_MORTAR, 1000);
@@ -1814,7 +1820,7 @@ class npc_gunship_cannon : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_gunship_cannonAI(creature);
+ return GetIcecrownCitadelAI<npc_gunship_cannonAI>(creature);
}
};
@@ -1829,11 +1835,7 @@ class spell_igb_rocket_pack : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ROCKET_PACK_DAMAGE) ||
- !sSpellMgr->GetSpellInfo(SPELL_ROCKET_BURST))
- return false;
-
- return true;
+ return ValidateSpellInfo({ SPELL_ROCKET_PACK_DAMAGE, SPELL_ROCKET_BURST });
}
void HandlePeriodic(AuraEffect const* /*aurEff*/)
@@ -1845,8 +1847,8 @@ class spell_igb_rocket_pack : public SpellScriptLoader
void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
SpellInfo const* damageInfo = sSpellMgr->AssertSpellInfo(SPELL_ROCKET_PACK_DAMAGE);
- GetTarget()->CastCustomSpell(SPELL_ROCKET_PACK_DAMAGE, SPELLVALUE_BASE_POINT0, 2 * (damageInfo->Effects[EFFECT_0].CalcValue() + aurEff->GetTickNumber() * aurEff->GetAmplitude()), NULL, TRIGGERED_FULL_MASK);
- GetTarget()->CastSpell(NULL, SPELL_ROCKET_BURST, TRIGGERED_FULL_MASK);
+ GetTarget()->CastCustomSpell(SPELL_ROCKET_PACK_DAMAGE, SPELLVALUE_BASE_POINT0, 2 * (damageInfo->Effects[EFFECT_0].CalcValue() + aurEff->GetTickNumber() * aurEff->GetAmplitude()), nullptr, TRIGGERED_FULL_MASK);
+ GetTarget()->CastSpell(nullptr, SPELL_ROCKET_BURST, TRIGGERED_FULL_MASK);
}
void Register() override
@@ -2101,7 +2103,7 @@ class spell_igb_overheat : public SpellScriptLoader
WorldPacket data(SMSG_CLIENT_CONTROL_UPDATE, GetUnitOwner()->GetPackGUID().size() + 1);
data << GetUnitOwner()->GetPackGUID();
data << uint8(value);
- player->GetSession()->SendPacket(&data);
+ player->SendDirectMessage(&data);
}
}
}
@@ -2251,7 +2253,7 @@ class spell_igb_burning_pitch : public SpellScriptLoader
void HandleDummy(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex);
- GetCaster()->CastCustomSpell(uint32(GetEffectValue()), SPELLVALUE_BASE_POINT0, 8000, NULL, TRIGGERED_FULL_MASK);
+ GetCaster()->CastCustomSpell(uint32(GetEffectValue()), SPELLVALUE_BASE_POINT0, 8000, nullptr, TRIGGERED_FULL_MASK);
GetHitUnit()->CastSpell(GetHitUnit(), SPELL_BURNING_PITCH, TRIGGERED_FULL_MASK);
}
@@ -2317,7 +2319,7 @@ class spell_igb_rocket_artillery_explosion : public SpellScriptLoader
void DamageGunship(SpellEffIndex /*effIndex*/)
{
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
- GetCaster()->CastCustomSpell(instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE ? SPELL_BURNING_PITCH_DAMAGE_A : SPELL_BURNING_PITCH_DAMAGE_H, SPELLVALUE_BASE_POINT0, 5000, NULL, TRIGGERED_FULL_MASK);
+ GetCaster()->CastCustomSpell(instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE ? SPELL_BURNING_PITCH_DAMAGE_A : SPELL_BURNING_PITCH_DAMAGE_H, SPELLVALUE_BASE_POINT0, 5000, nullptr, TRIGGERED_FULL_MASK);
}
void Register() override
@@ -2402,7 +2404,7 @@ class spell_igb_check_for_players : public SpellScriptLoader
void TriggerWipe()
{
if (!_playerCount)
- GetCaster()->ToCreature()->AI()->JustDied(NULL);
+ GetCaster()->ToCreature()->AI()->JustDied(nullptr);
}
void TeleportPlayer(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
index 88f4f9e3399..602c191cfab 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -15,14 +15,18 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "PoolMgr.h"
#include "Group.h"
#include "icecrown_citadel.h"
-#include "SpellInfo.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "PoolMgr.h"
+#include "ScriptedCreature.h"
+#include "SpellInfo.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
enum ScriptTexts
{
@@ -453,7 +457,7 @@ class boss_lady_deathwhisper : public CreatureScript
}
}
- void SpellHitTarget(Unit* target, const SpellInfo* spell) override
+ void SpellHitTarget(Unit* target, SpellInfo const* spell) override
{
if (spell->Id == SPELL_SUMMON_SPIRITS)
_nextVengefulShadeTargetGUID.push_back(target->GetGUID());
@@ -540,7 +544,7 @@ class boss_lady_deathwhisper : public CreatureScript
}
// helper for summoning wave mobs
- void Summon(uint32 entry, const Position& pos)
+ void Summon(uint32 entry, Position const& pos)
{
if (TempSummon* summon = me->SummonCreature(entry, pos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000))
summon->CastSpell(summon, SPELL_TELEPORT_VISUAL);
@@ -1044,9 +1048,7 @@ class spell_deathwhisper_dominated_mind : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_DOMINATE_MIND_SCALE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_DOMINATE_MIND_SCALE });
}
void HandleApply(AuraEffect const* /*eff*/, AuraEffectHandleModes /*mode*/)
@@ -1078,9 +1080,7 @@ class spell_deathwhisper_summon_spirits : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_SHADE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_SHADE });
}
void HandleScriptEffect(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
index 361516582c6..c13ce2ed638 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
@@ -15,13 +15,18 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellAuras.h"
+#include "icecrown_citadel.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
#include "MoveSplineInit.h"
+#include "ObjectAccessor.h"
#include "Player.h"
-#include "icecrown_citadel.h"
+#include "ScriptedCreature.h"
+#include "SpellAuras.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
enum ScriptTexts
{
@@ -618,11 +623,7 @@ class spell_marrowgar_bone_spike_graveyard : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- for (uint32 i = 0; i < 3; ++i)
- if (!sSpellMgr->GetSpellInfo(BoneSpikeSummonId[i]))
- return false;
-
- return true;
+ return ValidateSpellInfo(BoneSpikeSummonId);
}
bool Load() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index 95996143209..ca10713b47a 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -15,15 +15,22 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellAuraEffects.h"
+#include "DBCStores.h"
+#include "GridNotifiers.h"
#include "Group.h"
-#include "Spell.h"
#include "icecrown_citadel.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
+#include "Spell.h"
+#include "SpellAuraEffects.h"
+#include "SpellMgr.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "Vehicle.h"
-#include "GridNotifiers.h"
enum Say
{
@@ -373,7 +380,7 @@ class boss_professor_putricide : public CreatureScript
me->SetSpeedRate(MOVE_RUN, _baseSpeed);
DoAction(ACTION_FESTERGUT_GAS);
if (Creature* festergut = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FESTERGUT)))
- festergut->CastSpell(festergut, SPELL_GASEOUS_BLIGHT_LARGE, false, NULL, NULL, festergut->GetGUID());
+ festergut->CastSpell(festergut, SPELL_GASEOUS_BLIGHT_LARGE, false, nullptr, nullptr, festergut->GetGUID());
break;
case POINT_ROTFACE:
instance->SetBossState(DATA_ROTFACE, IN_PROGRESS); // needed here for delayed gate close
@@ -470,7 +477,7 @@ class boss_professor_putricide : public CreatureScript
case ACTION_ROTFACE_OOZE:
Talk(SAY_ROTFACE_OOZE_FLOOD);
if (Creature* dummy = ObjectAccessor::GetCreature(*me, _oozeFloodDummyGUIDs[_oozeFloodStage]))
- dummy->CastSpell(dummy, oozeFloodSpells[_oozeFloodStage], true, NULL, NULL, me->GetGUID()); // cast from self for LoS (with prof's GUID for logs)
+ dummy->CastSpell(dummy, oozeFloodSpells[_oozeFloodStage], true, nullptr, nullptr, me->GetGUID()); // cast from self for LoS (with prof's GUID for logs)
if (++_oozeFloodStage == 4)
_oozeFloodStage = 0;
break;
@@ -580,7 +587,7 @@ class boss_professor_putricide : public CreatureScript
EnterEvadeMode();
break;
case EVENT_FESTERGUT_GOO:
- me->CastCustomSpell(SPELL_MALLEABLE_GOO_SUMMON, SPELLVALUE_MAX_TARGETS, 1, NULL, true);
+ me->CastCustomSpell(SPELL_MALLEABLE_GOO_SUMMON, SPELLVALUE_MAX_TARGETS, 1, nullptr, true);
events.ScheduleEvent(EVENT_FESTERGUT_GOO, (Is25ManRaid() ? 10000 : 30000) + urand(0, 5000), 0, PHASE_FESTERGUT);
break;
case EVENT_ROTFACE_DIES:
@@ -881,20 +888,9 @@ class spell_putricide_ooze_channel : public SpellScriptLoader
{
PrepareSpellScript(spell_putricide_ooze_channel_SpellScript);
- public:
- spell_putricide_ooze_channel_SpellScript()
- {
- _target = nullptr;
- }
-
- private:
bool Validate(SpellInfo const* spell) override
{
- if (!spell->ExcludeTargetAuraSpell)
- return false;
- if (!sSpellMgr->GetSpellInfo(spell->ExcludeTargetAuraSpell))
- return false;
- return true;
+ return ValidateSpellInfo({ spell->ExcludeTargetAuraSpell });
}
// set up initial variables and check if caster is creature
@@ -942,7 +938,7 @@ class spell_putricide_ooze_channel : public SpellScriptLoader
AfterHit += SpellHitFn(spell_putricide_ooze_channel_SpellScript::StartAttack);
}
- WorldObject* _target;
+ WorldObject* _target = nullptr;
};
SpellScript* GetSpellScript() const override
@@ -1041,7 +1037,7 @@ class spell_putricide_unstable_experiment : public SpellScriptLoader
uint32 stage = creature->AI()->GetData(DATA_EXPERIMENT_STAGE);
creature->AI()->SetData(DATA_EXPERIMENT_STAGE, stage ^ true);
- Creature* target = NULL;
+ Creature* target = nullptr;
std::list<Creature*> creList;
GetCreatureListWithEntryInGrid(creList, GetCaster(), NPC_ABOMINATION_WING_MAD_SCIENTIST_STALKER, 200.0f);
// 2 of them are spawned at green place - weird trick blizz
@@ -1112,10 +1108,7 @@ class spell_putricide_ooze_tank_protection : public SpellScriptLoader
bool Validate(SpellInfo const* spellInfo) override
{
- if (!sSpellMgr->GetSpellInfo(spellInfo->Effects[EFFECT_0].TriggerSpell) ||
- !sSpellMgr->GetSpellInfo(spellInfo->Effects[EFFECT_1].TriggerSpell))
- return false;
- return true;
+ return ValidateSpellInfo({ spellInfo->Effects[EFFECT_0].TriggerSpell, spellInfo->Effects[EFFECT_1].TriggerSpell });
}
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
@@ -1157,7 +1150,7 @@ class spell_putricide_choking_gas_bomb : public SpellScriptLoader
continue;
uint32 spellId = uint32(GetSpellInfo()->Effects[i].CalcValue());
- GetCaster()->CastSpell(GetCaster(), spellId, true, NULL, NULL, GetCaster()->GetGUID());
+ GetCaster()->CastSpell(GetCaster(), spellId, true, nullptr, nullptr, GetCaster()->GetGUID());
}
}
@@ -1184,11 +1177,7 @@ class spell_putricide_unbound_plague : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_UNBOUND_PLAGUE))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_UNBOUND_PLAGUE_SEARCHER))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_UNBOUND_PLAGUE, SPELL_UNBOUND_PLAGUE_SEARCHER });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -1332,7 +1321,7 @@ class spell_putricide_mutated_plague : public SpellScriptLoader
damage *= int32(pow(multiplier, GetStackAmount()));
damage = int32(damage * 1.5f);
- GetTarget()->CastCustomSpell(triggerSpell, SPELLVALUE_BASE_POINT0, damage, GetTarget(), true, NULL, aurEff, GetCasterGUID());
+ GetTarget()->CastCustomSpell(triggerSpell, SPELLVALUE_BASE_POINT0, damage, GetTarget(), true, nullptr, aurEff, GetCasterGUID());
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1344,7 +1333,7 @@ class spell_putricide_mutated_plague : public SpellScriptLoader
return;
int32 heal = healSpellInfo->Effects[0].CalcValue() * GetStackAmount();
- GetTarget()->CastCustomSpell(healSpell, SPELLVALUE_BASE_POINT0, heal, GetTarget(), true, NULL, NULL, GetCasterGUID());
+ GetTarget()->CastCustomSpell(healSpell, SPELLVALUE_BASE_POINT0, heal, GetTarget(), true, nullptr, nullptr, GetCasterGUID());
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index 21cb420cc5a..337bdc560b4 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -15,12 +15,16 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellAuraEffects.h"
#include "GridNotifiers.h"
#include "icecrown_citadel.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
+#include "SpellAuras.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
// KNOWN BUGS:
// ~ No Slime Spray animation directly at target spot
@@ -469,7 +473,7 @@ class spell_rotface_ooze_flood : public SpellScriptLoader
return;
triggers.sort(Trinity::ObjectDistanceOrderPred(GetHitUnit()));
- GetHitUnit()->CastSpell(triggers.back(), uint32(GetEffectValue()), false, NULL, NULL, GetOriginalCaster() ? GetOriginalCaster()->GetGUID() : ObjectGuid::Empty);
+ GetHitUnit()->CastSpell(triggers.back(), uint32(GetEffectValue()), false, nullptr, nullptr, GetOriginalCaster() ? GetOriginalCaster()->GetGUID() : ObjectGuid::Empty);
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -540,9 +544,7 @@ class spell_rotface_mutated_infection : public SpellScriptLoader
bool Validate(SpellInfo const* spellInfo) override
{
- if (!sSpellMgr->GetSpellInfo(uint32(spellInfo->Effects[EFFECT_2].CalcValue())))
- return false;
- return true;
+ return ValidateSpellInfo({ static_cast<uint32>(spellInfo->Effects[EFFECT_2].CalcValue()) });
}
void HandleEffectRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
@@ -676,7 +678,7 @@ class spell_rotface_large_ooze_buff_combine : public SpellScriptLoader
if (Creature* cre = GetCaster()->ToCreature())
cre->AI()->DoAction(EVENT_STICKY_OOZE);
- GetCaster()->CastSpell(GetCaster(), SPELL_UNSTABLE_OOZE_EXPLOSION, false, NULL, NULL, GetCaster()->GetGUID());
+ GetCaster()->CastSpell(GetCaster(), SPELL_UNSTABLE_OOZE_EXPLOSION, false, nullptr, nullptr, GetCaster()->GetGUID());
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
instance->SetData(DATA_OOZE_DANCE_ACHIEVEMENT, uint32(false));
}
@@ -708,9 +710,7 @@ class spell_rotface_unstable_ooze_explosion_init : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_UNSTABLE_OOZE_EXPLOSION_TRIGGER))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_UNSTABLE_OOZE_EXPLOSION_TRIGGER });
}
void HandleCast(SpellEffIndex effIndex)
@@ -759,7 +759,7 @@ class spell_rotface_unstable_ooze_explosion : public SpellScriptLoader
// let Rotface handle the cast - caster dies before this executes
if (InstanceScript* script = GetCaster()->GetInstanceScript())
if (Creature* rotface = script->instance->GetCreature(script->GetGuidData(DATA_ROTFACE)))
- rotface->CastSpell(x, y, z, triggered_spell_id, true, NULL, NULL, GetCaster()->GetGUID());
+ rotface->CastSpell(x, y, z, triggered_spell_id, true, nullptr, nullptr, GetCaster()->GetGUID());
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index bed297de5c8..36574c9e812 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -15,12 +15,19 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellAuraEffects.h"
#include "GridNotifiers.h"
#include "icecrown_citadel.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ObjectMgr.h"
+#include "ScriptedCreature.h"
+#include "SpellAuraEffects.h"
+#include "SpellMgr.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
enum Texts
{
@@ -187,7 +194,7 @@ class FrostBombExplosion : public BasicEvent
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override
{
- _owner->CastSpell((Unit*)NULL, SPELL_FROST_BOMB, false, NULL, NULL, _sindragosaGUID);
+ _owner->CastSpell((Unit*)nullptr, SPELL_FROST_BOMB, false, nullptr, nullptr, _sindragosaGUID);
_owner->RemoveAurasDueToSpell(SPELL_FROST_BOMB_VISUAL);
return true;
}
@@ -363,7 +370,7 @@ class boss_sindragosa : public CreatureScript
events.ScheduleEvent(EVENT_AIR_MOVEMENT, 1);
break;
case POINT_AIR_PHASE:
- me->CastCustomSpell(SPELL_ICE_TOMB_TARGET, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 5, 2, 6), NULL, TRIGGERED_FULL_MASK);
+ me->CastCustomSpell(SPELL_ICE_TOMB_TARGET, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 5, 2, 6), nullptr, TRIGGERED_FULL_MASK);
me->SetFacingTo(float(M_PI), true);
events.ScheduleEvent(EVENT_AIR_MOVEMENT_FAR, 1);
events.ScheduleEvent(EVENT_FROST_BOMB, 9000);
@@ -1063,12 +1070,7 @@ class spell_sindragosa_s_fury : public SpellScriptLoader
bool Load() override
{
// This script should execute only in Icecrown Citadel
- if (InstanceMap* instance = GetCaster()->GetMap()->ToInstanceMap())
- if (instance->GetInstanceScript())
- if (instance->GetScriptId() == sObjectMgr->GetScriptId(ICCScriptName))
- return true;
-
- return false;
+ return InstanceHasScript(GetCaster(), ICCScriptName);
}
void SelectDest()
@@ -1237,15 +1239,13 @@ class spell_sindragosa_instability : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_BACKLASH))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_BACKLASH });
}
void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE)
- GetTarget()->CastCustomSpell(SPELL_BACKLASH, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, NULL, aurEff, GetCasterGUID());
+ GetTarget()->CastCustomSpell(SPELL_BACKLASH, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, nullptr, aurEff, GetCasterGUID());
}
void Register() override
@@ -1271,9 +1271,7 @@ class spell_sindragosa_frost_beacon : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ICE_TOMB_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_ICE_TOMB_DAMAGE });
}
void PeriodicTick(AuraEffect const* /*aurEff*/)
@@ -1327,7 +1325,7 @@ class spell_sindragosa_ice_tomb : public SpellScriptLoader
{
summon->AI()->SetGUID(GetTarget()->GetGUID(), DATA_TRAPPED_PLAYER);
GetTarget()->CastSpell(GetTarget(), SPELL_ICE_TOMB_UNTARGETABLE);
- if (GameObject* go = summon->SummonGameObject(GO_ICE_BLOCK, pos, G3D::Quat(), 0))
+ if (GameObject* go = summon->SummonGameObject(GO_ICE_BLOCK, pos, QuaternionData(), 0))
{
go->SetSpellId(SPELL_ICE_TOMB_DAMAGE);
summon->AddGameObject(go);
@@ -1366,9 +1364,7 @@ class spell_sindragosa_icy_grip : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ICY_GRIP_JUMP))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_ICY_GRIP_JUMP });
}
void HandleScript(SpellEffIndex effIndex)
@@ -1440,9 +1436,7 @@ class spell_rimefang_icy_blast : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ICY_BLAST_AREA))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_ICY_BLAST_AREA });
}
void HandleTriggerMissile(SpellEffIndex effIndex)
@@ -1492,9 +1486,7 @@ class spell_frostwarden_handler_order_whelp : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FOCUS_FIRE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FOCUS_FIRE });
}
void FilterTargets(std::list<WorldObject*>& targets)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
index e5736894b4c..b219ded2afd 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
@@ -15,19 +15,22 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellScript.h"
-#include "SpellAuraEffects.h"
-#include "Spell.h"
-#include "Vehicle.h"
-#include "Cell.h"
#include "CellImpl.h"
-#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
#include "CreatureTextMgr.h"
+#include "DBCStores.h"
+#include "GridNotifiersImpl.h"
#include "icecrown_citadel.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
+#include "Spell.h"
+#include "SpellAuraEffects.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
+#include "Vehicle.h"
+#include "Weather.h"
enum Texts
{
@@ -469,7 +472,7 @@ class VileSpiritActivateEvent : public BasicEvent
{
_owner->SetReactState(REACT_AGGRESSIVE);
_owner->CastSpell(_owner, SPELL_VILE_SPIRIT_MOVE_SEARCH, true);
- _owner->CastSpell((Unit*)NULL, SPELL_VILE_SPIRIT_DAMAGE_SEARCH, true);
+ _owner->CastSpell((Unit*)nullptr, SPELL_VILE_SPIRIT_DAMAGE_SEARCH, true);
return true;
}
@@ -487,7 +490,7 @@ class TriggerWickedSpirit : public BasicEvent
bool Execute(uint64 /*time*/, uint32 /*diff*/) override
{
- _owner->CastCustomSpell(SPELL_TRIGGER_VILE_SPIRIT_HEROIC, SPELLVALUE_MAX_TARGETS, 1, NULL, true);
+ _owner->CastCustomSpell(SPELL_TRIGGER_VILE_SPIRIT_HEROIC, SPELLVALUE_MAX_TARGETS, 1, nullptr, true);
if (--_counter)
{
@@ -623,8 +626,8 @@ class boss_the_lich_king : public CreatureScript
me->GetMap()->SetZoneOverrideLight(AREA_ICECROWN_CITADEL, 0, 5000);
break;
case ACTION_BREAK_FROSTMOURNE:
- me->CastSpell((Unit*)NULL, SPELL_SUMMON_BROKEN_FROSTMOURNE, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
- me->CastSpell((Unit*)NULL, SPELL_SUMMON_BROKEN_FROSTMOURNE_2, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
+ me->CastSpell((Unit*)nullptr, SPELL_SUMMON_BROKEN_FROSTMOURNE, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
+ me->CastSpell((Unit*)nullptr, SPELL_SUMMON_BROKEN_FROSTMOURNE_2, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
SetEquipmentSlots(false, EQUIP_BROKEN_FROSTMOURNE);
events.ScheduleEvent(EVENT_OUTRO_TALK_6, 2500, 0, PHASE_OUTRO);
break;
@@ -706,7 +709,7 @@ class boss_the_lich_king : public CreatureScript
summons.DespawnAll();
me->GetMap()->SetZoneMusic(AREA_ICECROWN_CITADEL, MUSIC_FURY_OF_FROSTMOURNE);
me->InterruptNonMeleeSpells(true);
- me->CastSpell((Unit*)NULL, SPELL_FURY_OF_FROSTMOURNE, TRIGGERED_NONE);
+ me->CastSpell((Unit*)nullptr, SPELL_FURY_OF_FROSTMOURNE, TRIGGERED_NONE);
me->SetWalk(true);
events.ScheduleEvent(EVENT_OUTRO_TALK_1, 2600, 0, PHASE_OUTRO);
events.ScheduleEvent(EVENT_OUTRO_EMOTE_TALK, 6600, 0, PHASE_OUTRO);
@@ -753,7 +756,7 @@ class boss_the_lich_king : public CreatureScript
break;
case NPC_FROSTMOURNE_TRIGGER:
{
- summon->CastSpell((Unit*)NULL, SPELL_BROKEN_FROSTMOURNE, true);
+ summon->CastSpell((Unit*)nullptr, SPELL_BROKEN_FROSTMOURNE, true);
me->GetMap()->SetZoneOverrideLight(AREA_ICECROWN_CITADEL, LIGHT_SOULSTORM, 10000);
me->GetMap()->SetZoneWeather(AREA_ICECROWN_CITADEL, WEATHER_STATE_BLACKSNOW, 0.5f);
@@ -1064,7 +1067,7 @@ class boss_the_lich_king : public CreatureScript
}
break;
case EVENT_FROSTMOURNE_HEROIC:
- if (TempSummon* terenas = me->GetMap()->SummonCreature(NPC_TERENAS_MENETHIL_FROSTMOURNE_H, TerenasSpawnHeroic, NULL, 50000))
+ if (TempSummon* terenas = me->GetMap()->SummonCreature(NPC_TERENAS_MENETHIL_FROSTMOURNE_H, TerenasSpawnHeroic, nullptr, 50000))
{
terenas->AI()->DoAction(ACTION_FROSTMOURNE_INTRO);
std::list<Creature*> triggers;
@@ -1116,11 +1119,11 @@ class boss_the_lich_king : public CreatureScript
Talk(SAY_LK_OUTRO_6);
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_HIGHLORD_TIRION_FORDRING)))
tirion->SetFacingToObject(me);
- me->CastSpell((Unit*)NULL, SPELL_SUMMON_BROKEN_FROSTMOURNE_3, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
+ me->CastSpell((Unit*)nullptr, SPELL_SUMMON_BROKEN_FROSTMOURNE_3, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
SetEquipmentSlots(false, EQUIP_UNEQUIP);
break;
case EVENT_OUTRO_SOUL_BARRAGE:
- me->CastSpell((Unit*)NULL, SPELL_SOUL_BARRAGE, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
+ me->CastSpell((Unit*)nullptr, SPELL_SOUL_BARRAGE, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
sCreatureTextMgr->SendSound(me, SOUND_PAIN, CHAT_MSG_MONSTER_YELL, 0, TEXT_RANGE_NORMAL, TEAM_OTHER, false);
// set flight
me->SetDisableGravity(true);
@@ -1690,7 +1693,7 @@ class npc_strangulate_vehicle : public CreatureScript
{
if (Unit* summoner = summ->GetSummoner())
{
- summoner->CastSpell((Unit*)NULL, SPELL_HARVEST_SOUL_VISUAL, true);
+ summoner->CastSpell((Unit*)nullptr, SPELL_HARVEST_SOUL_VISUAL, true);
summoner->ExitVehicle(summoner);
if (!IsHeroic())
summoner->CastSpell(summoner, SPELL_HARVEST_SOUL_TELEPORT, true);
@@ -1772,7 +1775,7 @@ class npc_terenas_menethil : public CreatureScript
}
break;
case ACTION_TELEPORT_BACK:
- me->CastSpell((Unit*)NULL, SPELL_RESTORE_SOUL, TRIGGERED_NONE);
+ me->CastSpell((Unit*)nullptr, SPELL_RESTORE_SOUL, TRIGGERED_NONE);
me->DespawnOrUnsummon(3000);
break;
default:
@@ -1802,7 +1805,7 @@ class npc_terenas_menethil : public CreatureScript
_events.ScheduleEvent(EVENT_TELEPORT_BACK, 1000);
if (Creature* warden = me->FindNearestCreature(NPC_SPIRIT_WARDEN, 20.0f))
{
- warden->CastSpell((Unit*)NULL, SPELL_DESTROY_SOUL, TRIGGERED_NONE);
+ warden->CastSpell((Unit*)nullptr, SPELL_DESTROY_SOUL, TRIGGERED_NONE);
warden->DespawnOrUnsummon(2000);
}
@@ -1860,7 +1863,7 @@ class npc_terenas_menethil : public CreatureScript
case EVENT_DESTROY_SOUL:
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
if (Creature* warden = me->FindNearestCreature(NPC_SPIRIT_WARDEN, 20.0f))
- warden->CastSpell((Unit*)NULL, SPELL_DESTROY_SOUL, TRIGGERED_NONE);
+ warden->CastSpell((Unit*)nullptr, SPELL_DESTROY_SOUL, TRIGGERED_NONE);
DoCast(SPELL_TERENAS_LOSES_INSIDE);
_events.ScheduleEvent(EVENT_TELEPORT_BACK, 1000);
break;
@@ -2112,9 +2115,7 @@ class spell_the_lich_king_necrotic_plague : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_NECROTIC_PLAGUE_JUMP))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_NECROTIC_PLAGUE_JUMP });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -2132,7 +2133,7 @@ class spell_the_lich_king_necrotic_plague : public SpellScriptLoader
CustomSpellValues values;
//values.AddSpellMod(SPELLVALUE_AURA_STACK, 2);
values.AddSpellMod(SPELLVALUE_MAX_TARGETS, 1);
- GetTarget()->CastCustomSpell(SPELL_NECROTIC_PLAGUE_JUMP, values, NULL, TRIGGERED_FULL_MASK, NULL, NULL, GetCasterGUID());
+ GetTarget()->CastCustomSpell(SPELL_NECROTIC_PLAGUE_JUMP, values, nullptr, TRIGGERED_FULL_MASK, nullptr, nullptr, GetCasterGUID());
if (Unit* caster = GetCaster())
caster->CastSpell(caster, SPELL_PLAGUE_SIPHON, true);
}
@@ -2228,7 +2229,7 @@ class spell_the_lich_king_necrotic_plague_jump : public SpellScriptLoader
CustomSpellValues values;
values.AddSpellMod(SPELLVALUE_AURA_STACK, GetStackAmount());
- GetTarget()->CastCustomSpell(SPELL_NECROTIC_PLAGUE_JUMP, values, NULL, TRIGGERED_FULL_MASK, NULL, NULL, GetCasterGUID());
+ GetTarget()->CastCustomSpell(SPELL_NECROTIC_PLAGUE_JUMP, values, nullptr, TRIGGERED_FULL_MASK, nullptr, nullptr, GetCasterGUID());
if (Unit* caster = GetCaster())
caster->CastSpell(caster, SPELL_PLAGUE_SIPHON, true);
}
@@ -2247,7 +2248,7 @@ class spell_the_lich_king_necrotic_plague_jump : public SpellScriptLoader
CustomSpellValues values;
values.AddSpellMod(SPELLVALUE_AURA_STACK, GetStackAmount());
values.AddSpellMod(SPELLVALUE_BASE_POINT1, AURA_REMOVE_BY_ENEMY_SPELL); // add as marker (spell has no effect 1)
- GetTarget()->CastCustomSpell(SPELL_NECROTIC_PLAGUE_JUMP, values, NULL, TRIGGERED_FULL_MASK, NULL, NULL, GetCasterGUID());
+ GetTarget()->CastCustomSpell(SPELL_NECROTIC_PLAGUE_JUMP, values, nullptr, TRIGGERED_FULL_MASK, nullptr, nullptr, GetCasterGUID());
if (Unit* caster = GetCaster())
caster->CastSpell(caster, SPELL_PLAGUE_SIPHON, true);
@@ -2317,7 +2318,7 @@ class spell_the_lich_king_shadow_trap_periodic : public SpellScriptLoader
if (targets.empty())
return;
- GetCaster()->CastSpell((Unit*)NULL, SPELL_SHADOW_TRAP_KNOCKBACK, true);
+ GetCaster()->CastSpell((Unit*)nullptr, SPELL_SHADOW_TRAP_KNOCKBACK, true);
}
void Register() override
@@ -2343,7 +2344,7 @@ class spell_the_lich_king_quake : public SpellScriptLoader
bool Load() override
{
- return GetCaster()->GetInstanceScript() != NULL;
+ return GetCaster()->GetInstanceScript() != nullptr;
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -2382,9 +2383,7 @@ class spell_the_lich_king_ice_burst_target_search : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ICE_BURST))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_ICE_BURST });
}
void CheckTargetCount(std::list<WorldObject*>& unitList)
@@ -2540,9 +2539,7 @@ class spell_the_lich_king_soul_reaper : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SOUL_REAPER_BUFF))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SOUL_REAPER_BUFF });
}
void OnPeriodic(AuraEffect const* /*aurEff*/)
@@ -2572,18 +2569,9 @@ class spell_the_lich_king_valkyr_target_search : public SpellScriptLoader
{
PrepareSpellScript(spell_the_lich_king_valkyr_target_search_SpellScript);
- public:
- spell_the_lich_king_valkyr_target_search_SpellScript()
- {
- _target = nullptr;
- }
-
- private:
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_CHARGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_CHARGE });
}
void SelectTarget(std::list<WorldObject*>& targets)
@@ -2621,7 +2609,7 @@ class spell_the_lich_king_valkyr_target_search : public SpellScriptLoader
OnEffectHitTarget += SpellEffectFn(spell_the_lich_king_valkyr_target_search_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
- WorldObject* _target;
+ WorldObject* _target = nullptr;
};
SpellScript* GetSpellScript() const override
@@ -2667,9 +2655,7 @@ class spell_the_lich_king_life_siphon : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_LIFE_SIPHON_HEAL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_LIFE_SIPHON_HEAL });
}
void TriggerHeal()
@@ -2714,7 +2700,7 @@ class spell_the_lich_king_vile_spirits : public SpellScriptLoader
void OnPeriodic(AuraEffect const* aurEff)
{
if (_is25Man || ((aurEff->GetTickNumber() - 1) % 5))
- GetTarget()->CastSpell((Unit*)NULL, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true, NULL, aurEff, GetCasterGUID());
+ GetTarget()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true, nullptr, aurEff, GetCasterGUID());
}
void Register() override
@@ -2837,7 +2823,7 @@ class spell_the_lich_king_vile_spirit_damage_target_search : public SpellScriptL
if (TempSummon* summon = GetCaster()->ToTempSummon())
if (Unit* summoner = summon->GetSummoner())
summoner->GetAI()->SetData(DATA_VILE, 1);
- GetCaster()->CastSpell((Unit*)NULL, SPELL_SPIRIT_BURST, true);
+ GetCaster()->CastSpell((Unit*)nullptr, SPELL_SPIRIT_BURST, true);
GetCaster()->ToCreature()->DespawnOrUnsummon(3000);
GetCaster()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
}
@@ -2865,14 +2851,14 @@ class spell_the_lich_king_harvest_soul : public SpellScriptLoader
bool Load() override
{
- return GetOwner()->GetInstanceScript() != NULL;
+ return GetOwner()->GetInstanceScript() != nullptr;
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
// m_originalCaster to allow stacking from different casters, meh
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_DEATH)
- GetTarget()->CastSpell((Unit*)NULL, SPELL_HARVESTED_SOUL, true, NULL, NULL, GetTarget()->GetInstanceScript()->GetGuidData(DATA_THE_LICH_KING));
+ GetTarget()->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL, true, nullptr, nullptr, GetTarget()->GetInstanceScript()->GetGuidData(DATA_THE_LICH_KING));
}
void Register() override
@@ -2938,7 +2924,7 @@ class spell_the_lich_king_soul_rip : public SpellScriptLoader
PreventDefaultAction();
// shouldn't be needed, this is channeled
if (Unit* caster = GetCaster())
- caster->CastCustomSpell(SPELL_SOUL_RIP_DAMAGE, SPELLVALUE_BASE_POINT0, 5000 * aurEff->GetTickNumber(), GetTarget(), true, NULL, aurEff, GetCasterGUID());
+ caster->CastCustomSpell(SPELL_SOUL_RIP_DAMAGE, SPELLVALUE_BASE_POINT0, 5000 * aurEff->GetTickNumber(), GetTarget(), true, nullptr, aurEff, GetCasterGUID());
}
void Register() override
@@ -2972,7 +2958,7 @@ class spell_the_lich_king_restore_soul : public SpellScriptLoader
bool Load() override
{
_instance = GetCaster()->GetInstanceScript();
- return _instance != NULL;
+ return _instance != nullptr;
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -3024,9 +3010,7 @@ class spell_the_lich_king_dark_hunger : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_DARK_HUNGER_HEAL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_DARK_HUNGER_HEAL });
}
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
@@ -3063,14 +3047,14 @@ class spell_the_lich_king_in_frostmourne_room : public SpellScriptLoader
bool Load() override
{
- return GetOwner()->GetInstanceScript() != NULL;
+ return GetOwner()->GetInstanceScript() != nullptr;
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
// m_originalCaster to allow stacking from different casters, meh
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_DEATH)
- GetTarget()->CastSpell((Unit*)NULL, SPELL_HARVESTED_SOUL, true, NULL, NULL, GetTarget()->GetInstanceScript()->GetGuidData(DATA_THE_LICH_KING));
+ GetTarget()->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL, true, nullptr, nullptr, GetTarget()->GetInstanceScript()->GetGuidData(DATA_THE_LICH_KING));
}
void Register() override
@@ -3097,7 +3081,7 @@ class spell_the_lich_king_summon_spirit_bomb : public SpellScriptLoader
void HandleScript(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex);
- GetHitUnit()->CastSpell((Unit*)NULL, uint32(GetEffectValue()), true);
+ GetHitUnit()->CastSpell((Unit*)nullptr, uint32(GetEffectValue()), true);
}
void Register() override
@@ -3155,7 +3139,7 @@ class spell_the_lich_king_jump : public SpellScriptLoader
{
PreventHitDefaultEffect(effIndex);
GetHitUnit()->RemoveAurasDueToSpell(SPELL_RAISE_DEAD);
- GetHitUnit()->CastSpell((Unit*)NULL, SPELL_JUMP_2, true);
+ GetHitUnit()->CastSpell((Unit*)nullptr, SPELL_JUMP_2, true);
if (Creature* creature = GetHitCreature())
creature->AI()->DoAction(ACTION_BREAK_FROSTMOURNE);
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
index 867fc1ae688..c558aa47d52 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
@@ -15,15 +15,17 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellAuraEffects.h"
-#include "Cell.h"
#include "CellImpl.h"
-#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
#include "icecrown_citadel.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ObjectMgr.h"
+#include "ScriptedCreature.h"
+#include "SpellAuraEffects.h"
+#include "SpellScript.h"
enum Texts
{
@@ -684,7 +686,7 @@ class npc_the_lich_king_controller : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_the_lich_king_controllerAI>(creature);
+ return GetIcecrownCitadelAI<npc_the_lich_king_controllerAI>(creature);
}
};
@@ -1265,9 +1267,7 @@ class spell_dreamwalker_summon_suppresser : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_SUPPRESSER))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_SUPPRESSER });
}
void PeriodicTick(AuraEffect const* /*aurEff*/)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index 6a56da6e902..789370d8762 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -15,18 +15,20 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "ScriptedEscortAI.h"
-#include "PassiveAI.h"
-#include "Cell.h"
#include "CellImpl.h"
-#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
-#include "SpellAuraEffects.h"
-#include "SmartAI.h"
#include "icecrown_citadel.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "PassiveAI.h"
+#include "ScriptedEscortAI.h"
+#include "SmartAI.h"
+#include "SpellMgr.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
+#include "VehicleDefines.h"
// Weekly quest support
// * Deprogramming (DONE)
@@ -731,7 +733,7 @@ class npc_alchemist_adrianna : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_alchemist_adriannaAI(creature);
+ return GetIcecrownCitadelAI<npc_alchemist_adriannaAI>(creature);
}
};
@@ -1119,7 +1121,7 @@ class npc_crok_scourgebane : public CreatureScript
if (!_wipeCheckTimer)
{
_wipeCheckTimer = 1000;
- Player* player = NULL;
+ Player* player = nullptr;
Trinity::AnyPlayerInObjectRangeCheck check(me, 60.0f);
Trinity::PlayerSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(me, player, check);
Cell::VisitWorldObjects(me, searcher, 60.0f);
@@ -1433,7 +1435,7 @@ class npc_captain_arnath : public CreatureScript
private:
Creature* FindFriendlyCreature() const
{
- Creature* target = NULL;
+ Creature* target = nullptr;
Trinity::MostHPMissingInRange u_check(me, 60.0f, 0);
Trinity::CreatureLastSearcher<Trinity::MostHPMissingInRange> searcher(me, target, u_check);
Cell::VisitGridObjects(me, searcher, 60.0f);
@@ -1674,7 +1676,7 @@ class npc_frostwing_vrykul : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_frostwing_vrykulAI(creature);
+ return GetIcecrownCitadelAI<npc_frostwing_vrykulAI>(creature);
}
};
@@ -1718,7 +1720,7 @@ class npc_impaling_spear : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_impaling_spearAI(creature);
+ return GetIcecrownCitadelAI<npc_impaling_spearAI>(creature);
}
};
@@ -1768,7 +1770,7 @@ class npc_arthas_teleport_visual : public CreatureScript
return GetIcecrownCitadelAI<npc_arthas_teleport_visualAI>(creature);
// Default to no script
- return NULL;
+ return nullptr;
}
};
@@ -2107,6 +2109,49 @@ class spell_icc_soul_missile : public SpellScriptLoader
}
};
+class spell_trigger_spell_from_caster_SpellScript : public SpellScript
+{
+ PrepareSpellScript(spell_trigger_spell_from_caster_SpellScript);
+
+ public:
+ spell_trigger_spell_from_caster_SpellScript(uint32 triggerId, TriggerCastFlags triggerFlags)
+ : SpellScript(), _triggerId(triggerId), _triggerFlags(triggerFlags) { }
+
+ private:
+ bool Validate(SpellInfo const* /*spell*/) override
+ {
+ return ValidateSpellInfo({ _triggerId });
+ }
+
+ void HandleTrigger()
+ {
+ GetCaster()->CastSpell(GetHitUnit(), _triggerId, _triggerFlags);
+ }
+
+ void Register() override
+ {
+ AfterHit += SpellHitFn(spell_trigger_spell_from_caster_SpellScript::HandleTrigger);
+ }
+
+ uint32 _triggerId;
+ TriggerCastFlags _triggerFlags;
+};
+
+spell_trigger_spell_from_caster::spell_trigger_spell_from_caster(char const* scriptName, uint32 triggerId)
+ : SpellScriptLoader(scriptName), _triggerId(triggerId), _triggerFlags(TRIGGERED_FULL_MASK)
+{
+}
+
+spell_trigger_spell_from_caster::spell_trigger_spell_from_caster(char const* scriptName, uint32 triggerId, TriggerCastFlags triggerFlags)
+ : SpellScriptLoader(scriptName), _triggerId(triggerId), _triggerFlags(triggerFlags)
+{
+}
+
+SpellScript* spell_trigger_spell_from_caster::GetSpellScript() const
+{
+ return new spell_trigger_spell_from_caster_SpellScript(_triggerId, _triggerFlags);
+}
+
class at_icc_saurfang_portal : public AreaTriggerScript
{
public:
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
index 8607714ff9c..e40ba687312 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
@@ -18,7 +18,11 @@
#ifndef ICECROWN_CITADEL_H_
#define ICECROWN_CITADEL_H_
-#include "SpellScript.h"
+#include "CreatureAIImpl.h"
+#include "ScriptMgr.h"
+
+struct Position;
+enum TriggerCastFlags : uint32;
#define ICCScriptName "instance_icecrown_citadel"
#define DataHeader "IC"
@@ -527,49 +531,16 @@ enum ICAreaIds
class spell_trigger_spell_from_caster : public SpellScriptLoader
{
public:
- spell_trigger_spell_from_caster(char const* scriptName, uint32 triggerId, TriggerCastFlags triggerFlags = TRIGGERED_FULL_MASK)
- : SpellScriptLoader(scriptName), _triggerId(triggerId), _triggerFlags(triggerFlags) { }
-
- class spell_trigger_spell_from_caster_SpellScript : public SpellScript
- {
- PrepareSpellScript(spell_trigger_spell_from_caster_SpellScript);
-
- public:
- spell_trigger_spell_from_caster_SpellScript(uint32 triggerId, TriggerCastFlags triggerFlags)
- : SpellScript(), _triggerId(triggerId), _triggerFlags(triggerFlags) { }
-
- bool Validate(SpellInfo const* /*spell*/) override
- {
- if (!sSpellMgr->GetSpellInfo(_triggerId))
- return false;
- return true;
- }
-
- void HandleTrigger()
- {
- GetCaster()->CastSpell(GetHitUnit(), _triggerId, _triggerFlags);
- }
-
- void Register() override
- {
- AfterHit += SpellHitFn(spell_trigger_spell_from_caster_SpellScript::HandleTrigger);
- }
-
- uint32 _triggerId;
- TriggerCastFlags _triggerFlags;
- };
-
- SpellScript* GetSpellScript() const override
- {
- return new spell_trigger_spell_from_caster_SpellScript(_triggerId, _triggerFlags);
- }
+ spell_trigger_spell_from_caster(char const* scriptName, uint32 triggerId, TriggerCastFlags triggerFlags);
+ spell_trigger_spell_from_caster(char const* scriptName, uint32 triggerId);
+ SpellScript* GetSpellScript() const override;
private:
uint32 _triggerId;
TriggerCastFlags _triggerFlags;
};
-template<class AI, class T>
+template <class AI, class T>
inline AI* GetIcecrownCitadelAI(T* obj)
{
return GetInstanceAI<AI>(obj, ICCScriptName);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
index 571de70bc0a..d9158249649 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
@@ -15,13 +15,15 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "ScriptMgr.h"
+#include "GameObject.h"
#include "GameObjectAI.h"
+#include "icecrown_citadel.h"
#include "InstanceScript.h"
#include "Player.h"
#include "ScriptedGossip.h"
-#include "ScriptMgr.h"
#include "Spell.h"
-#include "icecrown_citadel.h"
+#include "SpellMgr.h"
static std::vector<uint32> const TeleportSpells =
{
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index 4f14a49cf49..37baf7afe8d 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -15,17 +15,19 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "AccountMgr.h"
+#include "ScriptMgr.h"
+#include "AreaBoundary.h"
+#include "CreatureAI.h"
+#include "icecrown_citadel.h"
#include "InstanceScript.h"
+#include "Map.h"
#include "ObjectMgr.h"
#include "Player.h"
#include "PoolMgr.h"
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "TemporarySummon.h"
#include "Transport.h"
#include "TransportMgr.h"
#include "WorldPacket.h"
-#include "icecrown_citadel.h"
enum EventIds
{
@@ -184,7 +186,7 @@ class instance_icecrown_citadel : public InstanceMapScript
{
if (!TeamInInstance)
{
- Map::PlayerList const &players = instance->GetPlayers();
+ Map::PlayerList const& players = instance->GetPlayers();
if (!players.isEmpty())
if (Player* player = players.begin()->GetSource())
TeamInInstance = player->GetTeam();
@@ -1301,12 +1303,12 @@ class instance_icecrown_citadel : public InstanceMapScript
teleporter->SetGoState(GO_STATE_ACTIVE);
std::list<Creature*> stalkers;
- GetCreatureListWithEntryInGrid(stalkers, teleporter, NPC_INVISIBLE_STALKER, 100.0f);
+ teleporter->GetCreatureListWithEntryInGrid(stalkers, NPC_INVISIBLE_STALKER, 100.0f);
if (stalkers.empty())
return;
stalkers.sort(Trinity::ObjectDistanceOrderPred(teleporter));
- stalkers.front()->CastSpell((Unit*)NULL, SPELL_ARTHAS_TELEPORTER_CEREMONY, false);
+ stalkers.front()->CastSpell((Unit*)nullptr, SPELL_ARTHAS_TELEPORTER_CEREMONY, false);
stalkers.pop_front();
for (std::list<Creature*>::iterator itr = stalkers.begin(); itr != stalkers.end(); ++itr)
(*itr)->AI()->Reset();
@@ -1443,11 +1445,11 @@ class instance_icecrown_citadel : public InstanceMapScript
}
break;
case EVENT_TELEPORT_TO_FROSTMOURNE: // Harvest Soul (normal mode)
- if (Creature* terenas = instance->SummonCreature(NPC_TERENAS_MENETHIL_FROSTMOURNE, TerenasSpawn, NULL, 63000))
+ if (Creature* terenas = instance->SummonCreature(NPC_TERENAS_MENETHIL_FROSTMOURNE, TerenasSpawn, nullptr, 63000))
{
terenas->AI()->DoAction(ACTION_FROSTMOURNE_INTRO);
std::list<Creature*> triggers;
- GetCreatureListWithEntryInGrid(triggers, terenas, NPC_WORLD_TRIGGER_INFINITE_AOI, 100.0f);
+ terenas->GetCreatureListWithEntryInGrid(triggers, NPC_WORLD_TRIGGER_INFINITE_AOI, 100.0f);
if (!triggers.empty())
{
triggers.sort(Trinity::ObjectDistanceOrderPred(terenas, false));
@@ -1455,7 +1457,7 @@ class instance_icecrown_citadel : public InstanceMapScript
visual->CastSpell(visual, SPELL_FROSTMOURNE_TELEPORT_VISUAL, true);
}
- if (Creature* warden = instance->SummonCreature(NPC_SPIRIT_WARDEN, SpiritWardenSpawn, NULL, 63000))
+ if (Creature* warden = instance->SummonCreature(NPC_SPIRIT_WARDEN, SpiritWardenSpawn, nullptr, 63000))
{
terenas->AI()->AttackStart(warden);
warden->AddThreat(terenas, 300000.0f);
diff --git a/src/server/scripts/Northrend/IsleOfConquest/isle_of_conquest.cpp b/src/server/scripts/Northrend/IsleOfConquest/isle_of_conquest.cpp
index 005abab81a4..7918fae1f77 100644
--- a/src/server/scripts/Northrend/IsleOfConquest/isle_of_conquest.cpp
+++ b/src/server/scripts/Northrend/IsleOfConquest/isle_of_conquest.cpp
@@ -16,13 +16,17 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "PassiveAI.h"
#include "BattlegroundIC.h"
+#include "GameObject.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "PassiveAI.h"
#include "Player.h"
-#include "Vehicle.h"
-#include "SpellScript.h"
+#include "ScriptedCreature.h"
#include "SpellInfo.h"
+#include "SpellScript.h"
+#include "Vehicle.h"
// TO-DO: This should be done with SmartAI, but yet it does not correctly support vehicles's AIs.
// Even adding ReactState Passive we still have issues using SmartAI.
@@ -115,8 +119,8 @@ class npc_ioc_gunship_captain : public CreatureScript
DoCast(me, SPELL_TELEPORT_VISUAL_ONLY);
break;
case EVENT_DESPAWN:
- if (me->GetMap()->ToBattlegroundMap())
- if (Battleground* bgIoC = me->GetMap()->ToBattlegroundMap()->GetBG())
+ if (BattlegroundMap* iocMap = me->GetMap()->ToBattlegroundMap())
+ if (Battleground* bgIoC = iocMap->GetBG())
bgIoC->DelCreature(BG_IC_NPC_GUNSHIP_CAPTAIN_1);
break;
default:
@@ -278,9 +282,7 @@ class spell_ioc_seaforium_blast_credit : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_A_BOMB_INABLE_CREDIT) || !sSpellMgr->GetSpellInfo(SPELL_A_BOMB_INATION_CREDIT))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_A_BOMB_INABLE_CREDIT, SPELL_A_BOMB_INATION_CREDIT });
}
void HandleAchievementCredit(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
index 371b250358b..5454ff7c848 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
@@ -16,9 +16,11 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "Player.h"
+#include "InstanceScript.h"
+#include "ObjectAccessor.h"
#include "naxxramas.h"
+#include "Player.h"
+#include "ScriptedCreature.h"
enum AnubSays
{
@@ -79,7 +81,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_anubrekhanAI>(creature);
+ return GetNaxxramasAI<boss_anubrekhanAI>(creature);
}
struct boss_anubrekhanAI : public BossAI
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
index 2814a504b17..da3d95a5173 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
@@ -16,11 +16,12 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "InstanceScript.h"
#include "naxxramas.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "ScriptedCreature.h"
#include "SpellAuras.h"
-#include "SpellInfo.h"
enum Yells
{
@@ -190,7 +191,7 @@ class boss_faerlina : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_faerlinaAI(creature);
+ return GetNaxxramasAI<boss_faerlinaAI>(creature);
}
};
@@ -244,7 +245,7 @@ class npc_faerlina_add : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_faerlina_addAI>(creature);
+ return GetNaxxramasAI<npc_faerlina_addAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
index c38f388d01b..597471597dd 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
@@ -15,13 +15,18 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "Player.h"
-#include "GameTime.h"
#include "ScriptMgr.h"
+#include "GameTime.h"
+#include "InstanceScript.h"
+#include "Log.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "naxxramas.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
-#include "naxxramas.h"
+#include "SpellScript.h"
enum Horseman
{
@@ -210,7 +215,7 @@ struct boss_four_horsemen_baseAI : public BossAI
return;
}
instance->SetBossState(BOSS_HORSEMEN, IN_PROGRESS);
- Map::PlayerList const &players = me->GetMap()->GetPlayers();
+ Map::PlayerList const& players = me->GetMap()->GetPlayers();
if (players.isEmpty()) // sanity check
ResetEncounter();
@@ -378,7 +383,7 @@ struct boss_four_horsemen_baseAI : public BossAI
private:
const Horseman _which;
- const Position* _initialPath;
+ Position const* _initialPath;
bool _myMovementFinished;
uint8 _nextMovement;
uint32 _timeDied;
@@ -455,7 +460,7 @@ class boss_four_horsemen_baron : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_four_horsemen_baronAI>(creature);
+ return GetNaxxramasAI<boss_four_horsemen_baronAI>(creature);
}
};
@@ -537,7 +542,7 @@ class boss_four_horsemen_thane : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_four_horsemen_thaneAI>(creature);
+ return GetNaxxramasAI<boss_four_horsemen_thaneAI>(creature);
}
};
@@ -607,7 +612,7 @@ class boss_four_horsemen_lady : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_four_horsemen_ladyAI>(creature);
+ return GetNaxxramasAI<boss_four_horsemen_ladyAI>(creature);
}
};
@@ -689,7 +694,7 @@ class boss_four_horsemen_sir : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_four_horsemen_sirAI>(creature);
+ return GetNaxxramasAI<boss_four_horsemen_sirAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
index 1d2dd84f119..42fbac5ff86 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
@@ -16,10 +16,12 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
#include "naxxramas.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
#include "SpellScript.h"
-#include <math.h>
enum Texts
{
@@ -94,7 +96,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_gluthAI>(creature);
+ return GetNaxxramasAI<boss_gluthAI>(creature);
}
struct boss_gluthAI : public BossAI
@@ -192,7 +194,7 @@ public:
Creature* zombie = nullptr;
for (SummonList::const_iterator itr = summons.begin(); !zombie && itr != summons.end(); ++itr)
{
- zombie=ObjectAccessor::GetCreature(*me, *itr);
+ zombie = ObjectAccessor::GetCreature(*me, *itr);
if (!zombie || !zombie->IsAlive() || !zombie->IsWithinDistInMap(me, 10.0))
zombie = nullptr;
}
@@ -326,7 +328,7 @@ public:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- return (sSpellMgr->GetSpellInfo(SPELL_DECIMATE_DMG) != nullptr);
+ return ValidateSpellInfo({ SPELL_DECIMATE_DMG });
}
void Register() override
@@ -473,7 +475,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_zombie_chowAI>(creature);
+ return GetNaxxramasAI<npc_zombie_chowAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
index 9fcb35b269b..c09de96f7b6 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
@@ -16,12 +16,16 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellScript.h"
-#include "GridNotifiers.h"
-#include "CombatAI.h"
#include "AreaBoundary.h"
+#include "CombatAI.h"
+#include "GridNotifiers.h"
+#include "InstanceScript.h"
+#include "Log.h"
+#include "Map.h"
#include "naxxramas.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
+#include "SpellScript.h"
/* Constants */
enum Yells
@@ -558,7 +562,7 @@ class boss_gothik : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_gothikAI>(creature);
+ return GetNaxxramasAI<boss_gothikAI>(creature);
}
};
@@ -665,7 +669,7 @@ class npc_gothik_minion_livingtrainee : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_gothik_minion_livingtraineeAI>(creature);
+ return GetNaxxramasAI<npc_gothik_minion_livingtraineeAI>(creature);
}
};
@@ -694,7 +698,7 @@ class npc_gothik_minion_livingknight : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_gothik_minion_livingknightAI>(creature);
+ return GetNaxxramasAI<npc_gothik_minion_livingknightAI>(creature);
}
};
@@ -724,7 +728,7 @@ class npc_gothik_minion_livingrider : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_gothik_minion_livingriderAI>(creature);
+ return GetNaxxramasAI<npc_gothik_minion_livingriderAI>(creature);
}
};
@@ -753,7 +757,7 @@ class npc_gothik_minion_spectraltrainee : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_gothik_minion_spectraltraineeAI>(creature);
+ return GetNaxxramasAI<npc_gothik_minion_spectraltraineeAI>(creature);
}
};
@@ -782,7 +786,7 @@ class npc_gothik_minion_spectralknight : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_gothik_minion_spectralknightAI>(creature);
+ return GetNaxxramasAI<npc_gothik_minion_spectralknightAI>(creature);
}
};
@@ -847,7 +851,7 @@ class npc_gothik_minion_spectralrider : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_gothik_minion_spectralriderAI>(creature);
+ return GetNaxxramasAI<npc_gothik_minion_spectralriderAI>(creature);
}
};
@@ -876,7 +880,7 @@ class npc_gothik_minion_spectralhorse : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_gothik_minion_spectralhorseAI>(creature);
+ return GetNaxxramasAI<npc_gothik_minion_spectralhorseAI>(creature);
}
};
@@ -887,7 +891,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_gothik_triggerAI>(creature);
+ return GetNaxxramasAI<npc_gothik_triggerAI>(creature);
}
struct npc_gothik_triggerAI : public ScriptedAI
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
index 914db8461d4..626a7c023af 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
@@ -107,7 +107,7 @@ class boss_grobbulus : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_grobbulusAI(creature);
+ return GetNaxxramasAI<boss_grobbulusAI>(creature);
}
};
@@ -135,7 +135,7 @@ class npc_grobbulus_poison_cloud : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_grobbulus_poison_cloudAI(creature);
+ return GetNaxxramasAI<npc_grobbulus_poison_cloudAI>(creature);
}
};
@@ -151,10 +151,7 @@ class spell_grobbulus_mutating_injection : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MUTATING_EXPLOSION)
- || !sSpellMgr->GetSpellInfo(SPELL_POISON_CLOUD))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_MUTATING_EXPLOSION, SPELL_POISON_CLOUD });
}
void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
@@ -166,7 +163,7 @@ class spell_grobbulus_mutating_injection : public SpellScriptLoader
if (Unit* caster = GetCaster())
{
caster->CastSpell(GetTarget(), SPELL_MUTATING_EXPLOSION, true);
- GetTarget()->CastSpell(GetTarget(), SPELL_POISON_CLOUD, true, NULL, aurEff, GetCasterGUID());
+ GetTarget()->CastSpell(GetTarget(), SPELL_POISON_CLOUD, true, nullptr, aurEff, GetCasterGUID());
}
}
@@ -194,9 +191,7 @@ class spell_grobbulus_poison_cloud : public SpellScriptLoader
bool Validate(SpellInfo const* spellInfo) override
{
- if (!sSpellMgr->GetSpellInfo(spellInfo->Effects[EFFECT_0].TriggerSpell))
- return false;
- return true;
+ return ValidateSpellInfo({ spellInfo->Effects[EFFECT_0].TriggerSpell });
}
void PeriodicTick(AuraEffect const* aurEff)
@@ -205,7 +200,7 @@ class spell_grobbulus_poison_cloud : public SpellScriptLoader
uint32 triggerSpell = GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell;
int32 mod = int32(((float(aurEff->GetTickNumber()) / aurEff->GetTotalTicks()) * 0.9f + 0.1f) * 10000 * 2 / 3);
- GetTarget()->CastCustomSpell(triggerSpell, SPELLVALUE_RADIUS_MOD, mod, (Unit*)NULL, TRIGGERED_FULL_MASK, NULL, aurEff);
+ GetTarget()->CastCustomSpell(triggerSpell, SPELLVALUE_RADIUS_MOD, mod, (Unit*)nullptr, TRIGGERED_FULL_MASK, nullptr, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp
index de24bff691a..add15715165 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp
@@ -16,10 +16,14 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellScript.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "Map.h"
#include "naxxramas.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "ScriptedCreature.h"
+#include "SpellScript.h"
enum Spells
{
@@ -77,7 +81,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_heiganAI>(creature);
+ return GetNaxxramasAI<boss_heiganAI>(creature);
}
struct boss_heiganAI : public BossAI
@@ -131,8 +135,8 @@ public:
_eruptTiles[section].clear();
for (uint8 i = 0; i < numEruptions[section]; ++i)
{
- std::pair<std::unordered_multimap<uint32, GameObject*>::const_iterator, std::unordered_multimap<uint32, GameObject*>::const_iterator> tileIt = mapGOs.equal_range(spawnId++);
- for (std::unordered_multimap<uint32, GameObject*>::const_iterator it = tileIt.first; it != tileIt.second; ++it)
+ auto tileIt = mapGOs.equal_range(spawnId++);
+ for (auto it = tileIt.first; it != tileIt.second; ++it)
_eruptTiles[section].push_back(it->second->GetGUID());
}
}
@@ -230,13 +234,13 @@ class spell_heigan_eruption : public SpellScriptLoader
void HandleScript(SpellEffIndex /*eff*/)
{
Unit* caster = GetCaster();
- if (!caster || !GetHitPlayer())
+ if (!caster || !GetHitUnit())
return;
- if (GetHitDamage() >= int32(GetHitPlayer()->GetHealth()))
+ if (GetHitDamage() >= int32(GetHitUnit()->GetHealth()))
if (InstanceScript* instance = caster->GetInstanceScript())
if (Creature* Heigan = ObjectAccessor::GetCreature(*caster, instance->GetGuidData(DATA_HEIGAN)))
- Heigan->AI()->KilledUnit(GetHitPlayer());
+ Heigan->AI()->KilledUnit(GetHitUnit());
}
void Register() override
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
index 42c7af5735c..93b91bec9f3 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
@@ -16,11 +16,17 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellScript.h"
-#include "SpellAuraEffects.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
#include "naxxramas.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "PlayerAI.h"
+#include "ScriptedCreature.h"
+#include "SpellAuraEffects.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
enum Texts
{
@@ -568,7 +574,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_kelthuzadAI>(creature);
+ return GetNaxxramasAI<boss_kelthuzadAI>(creature);
}
};
@@ -699,7 +705,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_kelthuzad_skeletonAI>(creature);
+ return GetNaxxramasAI<npc_kelthuzad_skeletonAI>(creature);
}
};
@@ -725,7 +731,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_kelthuzad_bansheeAI>(creature);
+ return GetNaxxramasAI<npc_kelthuzad_bansheeAI>(creature);
}
};
@@ -768,7 +774,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_kelthuzad_abominationAI>(creature);
+ return GetNaxxramasAI<npc_kelthuzad_abominationAI>(creature);
}
};
@@ -862,7 +868,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_kelthuzad_guardianAI>(creature);
+ return GetNaxxramasAI<npc_kelthuzad_guardianAI>(creature);
}
};
@@ -909,9 +915,7 @@ public:
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MANA_DETONATION_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_MANA_DETONATION_DAMAGE });
}
void HandleScript(AuraEffect const* aurEff)
@@ -922,7 +926,7 @@ public:
if (int32 mana = int32(target->GetMaxPower(POWER_MANA) / 10))
{
mana = target->ModifyPower(POWER_MANA, -mana);
- target->CastCustomSpell(SPELL_MANA_DETONATION_DAMAGE, SPELLVALUE_BASE_POINT0, -mana * 10, target, true, NULL, aurEff);
+ target->CastCustomSpell(SPELL_MANA_DETONATION_DAMAGE, SPELLVALUE_BASE_POINT0, -mana * 10, target, true, nullptr, aurEff);
}
}
@@ -943,7 +947,7 @@ class at_kelthuzad_center : public AreaTriggerScript
public:
at_kelthuzad_center() : AreaTriggerScript("at_kelthuzad_center") { }
- bool OnTrigger(Player* player, const AreaTriggerEntry* /*at*/) override
+ bool OnTrigger(Player* player, AreaTriggerEntry const* /*at*/) override
{
InstanceScript* instance = player->GetInstanceScript();
if (!instance || instance->GetBossState(BOSS_KELTHUZAD) != NOT_STARTED)
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp
index 0506d85faa3..57f3e06a90a 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp
@@ -16,10 +16,11 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "naxxramas.h"
#include "ScriptedCreature.h"
+#include "SpellAuras.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
-#include "naxxramas.h"
enum Spells
{
@@ -146,7 +147,7 @@ class boss_loatheb : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_loathebAI(creature);
+ return GetNaxxramasAI<boss_loathebAI>(creature);
}
};
@@ -172,9 +173,7 @@ class spell_loatheb_deathbloom : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_DEATHBLOOM_FINAL_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_DEATHBLOOM_FINAL_DAMAGE });
}
void AfterRemove(AuraEffect const* eff, AuraEffectHandleModes /*mode*/)
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
index d513a4e1583..1627cba08b9 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
@@ -16,10 +16,14 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "naxxramas.h"
+#include "ObjectAccessor.h"
#include "PassiveAI.h"
+#include "ScriptedCreature.h"
+#include "SpellMgr.h"
#include "SpellScript.h"
-#include "naxxramas.h"
enum Spells
{
@@ -83,7 +87,7 @@ struct WebTargetSelector : public std::unary_function<Unit*, bool>
}
private:
- const Unit* _maexxna;
+ Unit const* _maexxna;
};
class boss_maexxna : public CreatureScript
@@ -93,7 +97,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_maexxnaAI(creature);
+ return GetNaxxramasAI<boss_maexxnaAI>(creature);
}
struct boss_maexxnaAI : public BossAI
@@ -194,7 +198,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_webwrapAI(creature);
+ return GetNaxxramasAI<npc_webwrapAI>(creature);
}
struct npc_webwrapAI : public NullCreatureAI
@@ -217,7 +221,7 @@ public:
if (Unit* victim = ObjectAccessor::GetUnit(*me, victimGUID))
{
visibleTimer = (me->GetDistance2d(victim)/WEB_WRAP_MOVE_SPEED + 0.5f) * IN_MILLISECONDS;
- victim->CastSpell(victim, SPELL_WEB_WRAP, true, NULL, NULL, me->GetGUID());
+ victim->CastSpell(victim, SPELL_WEB_WRAP, true, nullptr, nullptr, me->GetGUID());
}
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
index daf9aba31bc..9394ececc08 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
@@ -16,8 +16,9 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "MotionMaster.h"
#include "naxxramas.h"
+#include "ScriptedCreature.h"
enum Phases
{
@@ -334,7 +335,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_nothAI>(creature);
+ return GetNaxxramasAI<boss_nothAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
index 6c5ba318354..92dcdf95da4 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp
@@ -16,8 +16,9 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "InstanceScript.h"
#include "naxxramas.h"
+#include "ScriptedCreature.h"
enum Spells
{
@@ -61,7 +62,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_patchwerkAI>(creature);
+ return GetNaxxramasAI<boss_patchwerkAI>(creature);
}
struct boss_patchwerkAI : public BossAI
@@ -119,8 +120,8 @@ public:
// Hateful Strike targets the highest non-MT threat in melee range on 10man
// and the higher HP target out of the two highest non-MT threats in melee range on 25man
float MostThreat = 0.0f;
- Unit* secondThreatTarget = NULL;
- Unit* thirdThreatTarget = NULL;
+ Unit* secondThreatTarget = nullptr;
+ Unit* thirdThreatTarget = nullptr;
std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();
for (; i != me->getThreatManager().getThreatList().end(); ++i)
@@ -148,7 +149,7 @@ public:
}
}
- Unit* pHatefulTarget = NULL;
+ Unit* pHatefulTarget = nullptr;
if (!thirdThreatTarget)
pHatefulTarget = secondThreatTarget;
else if (secondThreatTarget)
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp
index 51eb68b6eed..4679fb17358 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp
@@ -16,9 +16,12 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "naxxramas.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
#include "SpellInfo.h"
-#include "naxxramas.h"
enum Yells
{
@@ -60,7 +63,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_razuviousAI(creature);
+ return GetNaxxramasAI<boss_razuviousAI>(creature);
}
struct boss_razuviousAI : public BossAI
@@ -240,7 +243,7 @@ class npc_dk_understudy : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_dk_understudyAI>(creature);
+ return GetNaxxramasAI<npc_dk_understudyAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
index 29e0d9f1555..205a098d077 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
@@ -16,12 +16,17 @@
*/
#include "ScriptMgr.h"
+#include "GameObject.h"
#include "GameObjectAI.h"
-#include "ScriptedCreature.h"
-#include "SpellScript.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "naxxramas.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "ScriptedCreature.h"
#include "SpellInfo.h"
-#include "naxxramas.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
enum Yells
{
@@ -376,7 +381,7 @@ class boss_sapphiron : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_sapphironAI(creature);
+ return GetNaxxramasAI<boss_sapphironAI>(creature);
}
};
@@ -412,7 +417,7 @@ class go_sapphiron_birth : public GameObjectScript
GameObjectAI* GetAI(GameObject* go) const override
{
- return GetInstanceAI<go_sapphiron_birthAI>(go);
+ return GetNaxxramasAI<go_sapphiron_birthAI>(go);
}
};
@@ -486,7 +491,7 @@ class spell_sapphiron_icebolt : public SpellScriptLoader
return;
float x, y, z;
GetTarget()->GetPosition(x, y, z);
- if (GameObject* block = GetTarget()->SummonGameObject(GO_ICEBLOCK, x, y, z, 0.f, G3D::Quat(), 25))
+ if (GameObject* block = GetTarget()->SummonGameObject(GO_ICEBLOCK, x, y, z, 0.f, QuaternionData(), 25))
_block = block->GetGUID();
}
@@ -517,7 +522,7 @@ class spell_sapphiron_summon_blizzard : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- return !!sSpellMgr->GetSpellInfo(SPELL_SUMMON_BLIZZARD);
+ return ValidateSpellInfo({ SPELL_SUMMON_BLIZZARD });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
index 48459ffd3a6..a74dd052695 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
@@ -16,12 +16,15 @@
*/
#include "ScriptMgr.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "naxxramas.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
-#include "Player.h"
-#include "ObjectGuid.h"
-#include "naxxramas.h"
-
enum Phases
{
@@ -164,7 +167,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_thaddiusAI>(creature);
+ return GetNaxxramasAI<boss_thaddiusAI>(creature);
}
struct boss_thaddiusAI : public BossAI
@@ -480,7 +483,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_stalaggAI>(creature);
+ return GetNaxxramasAI<npc_stalaggAI>(creature);
}
struct npc_stalaggAI : public ScriptedAI
@@ -748,7 +751,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_feugenAI>(creature);
+ return GetNaxxramasAI<npc_feugenAI>(creature);
}
struct npc_feugenAI : public ScriptedAI
@@ -1019,7 +1022,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_teslaAI>(creature);
+ return GetNaxxramasAI<npc_teslaAI>(creature);
}
struct npc_teslaAI : public ScriptedAI
@@ -1044,15 +1047,16 @@ class spell_thaddius_polarity_charge : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- return (
- sSpellMgr->GetSpellInfo(SPELL_POLARITY_SHIFT) &&
- sSpellMgr->GetSpellInfo(SPELL_POSITIVE_CHARGE_APPLY) &&
- sSpellMgr->GetSpellInfo(SPELL_POSITIVE_CHARGE_TICK) &&
- sSpellMgr->GetSpellInfo(SPELL_POSITIVE_CHARGE_AMP) &&
- sSpellMgr->GetSpellInfo(SPELL_NEGATIVE_CHARGE_APPLY) &&
- sSpellMgr->GetSpellInfo(SPELL_NEGATIVE_CHARGE_TICK) &&
- sSpellMgr->GetSpellInfo(SPELL_NEGATIVE_CHARGE_AMP)
- );
+ return ValidateSpellInfo(
+ {
+ SPELL_POLARITY_SHIFT,
+ SPELL_POSITIVE_CHARGE_APPLY,
+ SPELL_POSITIVE_CHARGE_TICK,
+ SPELL_POSITIVE_CHARGE_AMP,
+ SPELL_NEGATIVE_CHARGE_APPLY,
+ SPELL_NEGATIVE_CHARGE_TICK,
+ SPELL_NEGATIVE_CHARGE_AMP
+ });
}
void HandleTargets(std::list<WorldObject*>& targetList)
@@ -1143,15 +1147,16 @@ class spell_thaddius_polarity_shift : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- return (
- sSpellMgr->GetSpellInfo(SPELL_POLARITY_SHIFT) &&
- sSpellMgr->GetSpellInfo(SPELL_POSITIVE_CHARGE_APPLY) &&
- sSpellMgr->GetSpellInfo(SPELL_POSITIVE_CHARGE_TICK) &&
- sSpellMgr->GetSpellInfo(SPELL_POSITIVE_CHARGE_AMP) &&
- sSpellMgr->GetSpellInfo(SPELL_NEGATIVE_CHARGE_APPLY) &&
- sSpellMgr->GetSpellInfo(SPELL_NEGATIVE_CHARGE_TICK) &&
- sSpellMgr->GetSpellInfo(SPELL_NEGATIVE_CHARGE_AMP)
- );
+ return ValidateSpellInfo(
+ {
+ SPELL_POLARITY_SHIFT,
+ SPELL_POSITIVE_CHARGE_APPLY,
+ SPELL_POSITIVE_CHARGE_TICK,
+ SPELL_POSITIVE_CHARGE_AMP,
+ SPELL_NEGATIVE_CHARGE_APPLY,
+ SPELL_NEGATIVE_CHARGE_TICK,
+ SPELL_NEGATIVE_CHARGE_AMP
+ });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
@@ -1195,7 +1200,7 @@ class spell_thaddius_magnetic_pull : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- return sSpellMgr->GetSpellInfo(SPELL_MAGNETIC_PULL) ? true : false;
+ return ValidateSpellInfo({ SPELL_MAGNETIC_PULL });
}
void HandleCast() // only feugen ever casts this according to wowhead data
diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
index a76284d803b..f8638a33fa0 100644
--- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
@@ -16,9 +16,14 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "AreaBoundary.h"
+#include "CreatureAI.h"
+#include "GameObject.h"
#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
#include "naxxramas.h"
+#include "TemporarySummon.h"
BossBoundaryData const boundaries =
{
@@ -104,7 +109,7 @@ ObjectData const objectData[] =
class instance_naxxramas : public InstanceMapScript
{
public:
- instance_naxxramas() : InstanceMapScript("instance_naxxramas", 533) { }
+ instance_naxxramas() : InstanceMapScript(NaxxramasScriptName, 533) { }
struct instance_naxxramas_InstanceMapScript : public InstanceScript
{
@@ -490,7 +495,7 @@ class instance_naxxramas : public InstanceMapScript
std::list<TempSummon*> spawns;
instance->SummonCreatureGroup(nextFroggerWave, &spawns);
if (!spawns.empty())
- (*spawns.begin())->GetMotionMaster()->MovePath(10 * NPC_FROGGER + nextFroggerWave, false);
+ spawns.front()->GetMotionMaster()->MovePath(10 * NPC_FROGGER + nextFroggerWave, false);
events.Repeat(Seconds(1) + Milliseconds(666));
nextFroggerWave = (nextFroggerWave+1) % 3;
break;
@@ -546,7 +551,7 @@ class instance_naxxramas : public InstanceMapScript
return true;
}
- bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target = NULL*/, uint32 /*miscvalue1 = 0*/) override
+ bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target = nullptr*/, uint32 /*miscvalue1 = 0*/) override
{
switch (criteria_id)
{
diff --git a/src/server/scripts/Northrend/Naxxramas/naxxramas.h b/src/server/scripts/Northrend/Naxxramas/naxxramas.h
index e847179ddeb..2813e338245 100644
--- a/src/server/scripts/Northrend/Naxxramas/naxxramas.h
+++ b/src/server/scripts/Northrend/Naxxramas/naxxramas.h
@@ -18,6 +18,9 @@
#ifndef DEF_NAXXRAMAS_H
#define DEF_NAXXRAMAS_H
+#include "CreatureAIImpl.h"
+
+#define NaxxramasScriptName "instance_naxxramas"
#define DataHeader "NAX"
uint32 const EncounterCount = 15;
@@ -215,17 +218,11 @@ enum NAXInstanceTexts
SAY_DIALOGUE_SAPPHIRON_LICH_KING2 = 2
};
-/*
-template<class AI>
-CreatureAI* GetNaxxramasAI(Creature* creature)
-{
- if (InstanceMap* instance = creature->GetMap()->ToInstanceMap())
- if (instance->GetInstanceScript())
- if (instance->GetScriptId() == sObjectMgr->GetScriptId(NaxxramasScriptName))
- return new AI(creature);
- return NULL;
+template <class AI, class T>
+inline AI* GetNaxxramasAI(T* obj)
+{
+ return GetInstanceAI<AI>(obj, NaxxramasScriptName);
}
-*/
#endif
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index 7994c5b640d..dcf26afa14b 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -20,16 +20,22 @@ SDName: Boss Malygos
Script Data End */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellScript.h"
-#include "SpellAuraEffects.h"
+#include "CombatAI.h"
+#include "CreatureTextMgr.h"
#include "eye_of_eternity.h"
+#include "GameObject.h"
+#include "GameObjectAI.h"
+#include "GridNotifiers.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "ScriptedCreature.h"
+#include "SpellInfo.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "Vehicle.h"
-#include "CombatAI.h"
-#include "GameObjectAI.h"
-#include "CreatureTextMgr.h"
-#include "MoveSplineInit.h"
enum Events
{
@@ -998,7 +1004,7 @@ public:
_JustDied();
Talk(SAY_DEATH);
if (Creature* alexstraszaGiftBoxBunny = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_GIFT_BOX_BUNNY_GUID)))
- alexstraszaGiftBoxBunny->SummonGameObject(RAID_MODE(GO_HEART_OF_MAGIC_10, GO_HEART_OF_MAGIC_25), HeartOfMagicSpawnPos, G3D::Quat(), 0);
+ alexstraszaGiftBoxBunny->SummonGameObject(RAID_MODE(GO_HEART_OF_MAGIC_10, GO_HEART_OF_MAGIC_25), HeartOfMagicSpawnPos, QuaternionData(), 0);
me->SummonCreature(NPC_ALEXSTRASZA, AlexstraszaSpawnPos, TEMPSUMMON_MANUAL_DESPAWN);
me->DespawnOrUnsummon(5*IN_MILLISECONDS);
@@ -1027,7 +1033,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_malygosAI>(creature);
+ return GetEyeOfEternityAI<boss_malygosAI>(creature);
}
};
@@ -1077,7 +1083,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_portal_eoeAI>(creature);
+ return GetEyeOfEternityAI<npc_portal_eoeAI>(creature);
}
};
@@ -1138,7 +1144,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_power_sparkAI>(creature);
+ return GetEyeOfEternityAI<npc_power_sparkAI>(creature);
}
};
@@ -1249,7 +1255,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_melee_hover_diskAI>(creature);
+ return GetEyeOfEternityAI<npc_melee_hover_diskAI>(creature);
}
};
@@ -1312,7 +1318,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_caster_hover_diskAI>(creature);
+ return GetEyeOfEternityAI<npc_caster_hover_diskAI>(creature);
}
};
@@ -1388,7 +1394,7 @@ class npc_nexus_lord : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_nexus_lordAI>(creature);
+ return GetEyeOfEternityAI<npc_nexus_lordAI>(creature);
}
};
@@ -1455,7 +1461,7 @@ class npc_scion_of_eternity : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_scion_of_eternityAI>(creature);
+ return GetEyeOfEternityAI<npc_scion_of_eternityAI>(creature);
}
};
@@ -1509,7 +1515,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_arcane_overloadAI>(creature);
+ return GetEyeOfEternityAI<npc_arcane_overloadAI>(creature);
}
};
@@ -1574,7 +1580,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_wyrmrest_skytalonAI(creature);
+ return GetEyeOfEternityAI<npc_wyrmrest_skytalonAI>(creature);
}
};
@@ -1600,7 +1606,7 @@ class npc_static_field : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_static_fieldAI(creature);
+ return GetEyeOfEternityAI<npc_static_fieldAI>(creature);
}
};
@@ -1620,10 +1626,7 @@ class spell_malygos_portal_beam : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_PORTAL_OPENED))
- return false;
-
- return true;
+ return ValidateSpellInfo({ SPELL_PORTAL_OPENED });
}
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1723,10 +1726,7 @@ class spell_malygos_arcane_storm : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ARCANE_STORM_EXTRA_VISUAL))
- return false;
-
- return true;
+ return ValidateSpellInfo({ SPELL_ARCANE_STORM_EXTRA_VISUAL });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -1820,10 +1820,7 @@ class spell_malygos_vortex_visual : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_VORTEX_1) || !sSpellMgr->GetSpellInfo(SPELL_VORTEX_6))
- return false;
-
- return true;
+ return ValidateSpellInfo({ SPELL_VORTEX_1, SPELL_VORTEX_6 });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1842,7 +1839,7 @@ class spell_malygos_vortex_visual : public SpellScriptLoader
if (InstanceScript* instance = caster->GetInstanceScript())
{
// Teleport spell - I'm not sure but might be it must be cast by each vehicle when it's passenger leaves it.
- if (Creature* trigger = caster->GetMap()->GetCreature(instance->GetGuidData(DATA_TRIGGER)))
+ if (Creature* trigger = ObjectAccessor::GetCreature(*caster, instance->GetGuidData(DATA_TRIGGER)))
trigger->CastSpell(targetPlayer, SPELL_VORTEX_6, true);
}
}
@@ -1978,7 +1975,7 @@ class spell_scion_of_eternity_arcane_barrage : public SpellScriptLoader
bool Load() override
{
- return GetCaster()->GetTypeId() == TYPEID_UNIT && GetCaster()->GetInstanceScript() != NULL;
+ return GetCaster()->GetTypeId() == TYPEID_UNIT && GetCaster()->GetInstanceScript() != nullptr;
}
void FilterMeleeHoverDiskPassangers(std::list<WorldObject*>& targets)
@@ -2063,10 +2060,7 @@ class spell_malygos_destroy_platform_channel : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_DESTROY_PLATFORM_BOOM_VISUAL))
- return false;
-
- return true;
+ return ValidateSpellInfo({ SPELL_DESTROY_PLATFORM_BOOM_VISUAL });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -2105,10 +2099,7 @@ class spell_alexstrasza_bunny_destroy_platform_boom_visual : public SpellScriptL
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_DESTROY_PLATFORM_EVENT))
- return false;
-
- return true;
+ return ValidateSpellInfo({ SPELL_DESTROY_PLATFORM_EVENT });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
@@ -2153,7 +2144,7 @@ class spell_alexstrasza_bunny_destroy_platform_event : public SpellScriptLoader
void HandleScript(SpellEffIndex /*effIndex*/)
{
- GetCaster()->CastSpell((Unit*)NULL, SPELL_SUMMON_RED_DRAGON_BUDDY_F_CAST);
+ GetCaster()->CastSpell((Unit*)nullptr, SPELL_SUMMON_RED_DRAGON_BUDDY_F_CAST);
}
void Register() override
@@ -2251,10 +2242,7 @@ class spell_malygos_surge_of_power_warning_selector_25 : public SpellScriptLoade
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SURGE_OF_POWER_PHASE_3_25))
- return false;
-
- return true;
+ return ValidateSpellInfo({ SPELL_SURGE_OF_POWER_PHASE_3_25 });
}
void SendThreeTargets(std::list<WorldObject*>& targets)
@@ -2285,7 +2273,7 @@ class spell_malygos_surge_of_power_warning_selector_25 : public SpellScriptLoade
void ExecuteMainSpell()
{
- GetCaster()->ToCreature()->CastSpell((Unit*)NULL, SPELL_SURGE_OF_POWER_PHASE_3_25);
+ GetCaster()->ToCreature()->CastSpell((Unit*)nullptr, SPELL_SURGE_OF_POWER_PHASE_3_25);
}
void Register() override
@@ -2368,10 +2356,7 @@ class spell_alexstrasza_gift_beam : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ALEXSTRASZAS_GIFT_BEAM_VISUAL))
- return false;
-
- return true;
+ return ValidateSpellInfo({ SPELL_ALEXSTRASZAS_GIFT_BEAM_VISUAL });
}
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -2425,9 +2410,9 @@ class spell_alexstrasza_gift_beam_visual : public SpellScriptLoader
if (Creature* target = GetTarget()->ToCreature())
{
if (target->GetMap()->GetDifficulty() == RAID_DIFFICULTY_10MAN_NORMAL)
- _alexstraszaGift = target->SummonGameObject(GO_ALEXSTRASZA_S_GIFT_10, *target, G3D::Quat(), 0);
+ _alexstraszaGift = target->SummonGameObject(GO_ALEXSTRASZA_S_GIFT_10, *target, QuaternionData(), 0);
else if (target->GetMap()->GetDifficulty() == RAID_DIFFICULTY_25MAN_NORMAL)
- _alexstraszaGift = target->SummonGameObject(GO_ALEXSTRASZA_S_GIFT_25, *target, G3D::Quat(), 0);
+ _alexstraszaGift = target->SummonGameObject(GO_ALEXSTRASZA_S_GIFT_25, *target, QuaternionData(), 0);
}
}
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h b/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
index 52a32da8c60..0de2d1a9e2a 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
@@ -18,6 +18,9 @@
#ifndef DEF_EYE_OF_ETERNITY_H
#define DEF_EYE_OF_ETERNITY_H
+#include "CreatureAIImpl.h"
+
+#define EoEScriptName "instance_eye_of_eternity"
#define DataHeader "EOE"
enum EOEInstanceData
@@ -84,4 +87,10 @@ enum EOEInstanceSpells
SPELL_SUMMOM_RED_DRAGON_BUDDY = 56070
};
+template <class AI, class T>
+inline AI* GetEyeOfEternityAI(T* obj)
+{
+ return GetInstanceAI<AI>(obj, EoEScriptName);
+}
+
#endif
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
index d5ef16f7ad5..ef10057f180 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
@@ -16,9 +16,13 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "InstanceScript.h"
+#include "AreaBoundary.h"
+#include "Creature.h"
+#include "CreatureAI.h"
#include "eye_of_eternity.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "Map.h"
#include "Player.h"
BossBoundaryData const boundaries =
@@ -29,7 +33,7 @@ BossBoundaryData const boundaries =
class instance_eye_of_eternity : public InstanceMapScript
{
public:
- instance_eye_of_eternity() : InstanceMapScript("instance_eye_of_eternity", 616) { }
+ instance_eye_of_eternity() : InstanceMapScript(EoEScriptName, 616) { }
InstanceScript* GetInstanceScript(InstanceMap* map) const override
{
@@ -86,7 +90,7 @@ public:
void SpawnGameObject(uint32 entry, Position const& pos)
{
GameObject* go = new GameObject();
- if (!go->Create(instance->GenerateLowGuid<HighGuid::GameObject>(), entry, instance, PHASEMASK_NORMAL, pos, G3D::Quat(), 255, GO_STATE_READY))
+ if (!go->Create(instance->GenerateLowGuid<HighGuid::GameObject>(), entry, instance, PHASEMASK_NORMAL, pos, QuaternionData(), 255, GO_STATE_READY))
{
delete go;
return;
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
index e8c5da8d76e..11322c30d1d 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
@@ -17,8 +17,11 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "InstanceScript.h"
#include "nexus.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
+#include "TemporarySummon.h"
enum Spells
{
@@ -189,7 +192,7 @@ class boss_anomalus : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_anomalusAI>(creature);
+ return GetNexusAI<boss_anomalusAI>(creature);
}
};
@@ -263,7 +266,7 @@ class npc_chaotic_rift : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_chaotic_riftAI>(creature);
+ return GetNexusAI<npc_chaotic_riftAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
index 3d19f54d84a..cb17a64563a 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
@@ -16,12 +16,15 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "GameObject.h"
#include "GameObjectAI.h"
-#include "SpellScript.h"
-#include "SpellAuraEffects.h"
-#include "Player.h"
+#include "InstanceScript.h"
#include "nexus.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
+#include "ScriptedCreature.h"
+#include "SpellAuraEffects.h"
+#include "SpellScript.h"
enum Spells
{
@@ -216,7 +219,7 @@ class boss_keristrasza : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_keristraszaAI>(creature);
+ return GetNexusAI<boss_keristraszaAI>(creature);
}
};
@@ -248,7 +251,7 @@ public:
GameObjectAI* GetAI(GameObject* go) const override
{
- return GetInstanceAI<containment_sphereAI>(go);
+ return GetNexusAI<containment_sphereAI>(go);
}
};
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 a3d6f1a107a..09944d921bc 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp
@@ -16,11 +16,14 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "ScriptMgr.h"
#include "GameEventMgr.h"
#include "GameTime.h"
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
#include "nexus.h"
+#include "ScriptedCreature.h"
+#include "TemporarySummon.h"
enum Spells
{
@@ -71,7 +74,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_magus_telestraAI>(creature);
+ return GetNexusAI<boss_magus_telestraAI>(creature);
}
struct boss_magus_telestraAI : public ScriptedAI
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_nexus_commanders.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_nexus_commanders.cpp
index 935d309eb02..630806bdcec 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_nexus_commanders.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_nexus_commanders.cpp
@@ -16,8 +16,8 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
#include "nexus.h"
+#include "ScriptedCreature.h"
enum Spells
{
@@ -100,7 +100,7 @@ class boss_nexus_commanders : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_nexus_commandersAI>(creature);
+ return GetNexusAI<boss_nexus_commandersAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
index 950ba5d91f7..95651b032b6 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
@@ -17,8 +17,9 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "GameObject.h"
#include "nexus.h"
+#include "ScriptedCreature.h"
#include "SpellScript.h"
enum Spells
@@ -170,7 +171,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_ormorokAI>(creature);
+ return GetNexusAI<boss_ormorokAI>(creature);
}
};
@@ -258,7 +259,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_crystal_spike_triggerAI(creature);
+ return GetNexusAI<npc_crystal_spike_triggerAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
index dcb1886e818..cb07de16ab7 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
@@ -17,9 +17,12 @@
*/
#include "ScriptMgr.h"
+#include "Creature.h"
+#include "GameObject.h"
#include "InstanceScript.h"
-#include "Player.h"
+#include "Map.h"
#include "nexus.h"
+#include "Player.h"
class instance_nexus : public InstanceMapScript
{
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/nexus.h b/src/server/scripts/Northrend/Nexus/Nexus/nexus.h
index c4b07c78c3b..3045c922f4b 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/nexus.h
+++ b/src/server/scripts/Northrend/Nexus/Nexus/nexus.h
@@ -18,6 +18,8 @@
#ifndef DEF_NEXUS_H
#define DEF_NEXUS_H
+#include "CreatureAIImpl.h"
+
#define NexusScriptName "instance_nexus"
#define DataHeader "NEX"
@@ -63,4 +65,10 @@ enum NEXGameObjectIds
GO_TELESTRAS_CONTAINMET_SPHERE = 188526
};
+template <class AI, class T>
+inline AI* GetNexusAI(T* obj)
+{
+ return GetInstanceAI<AI>(obj, NexusScriptName);
+}
+
#endif
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
index 90eeafb407b..c81f378b8b4 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp
@@ -16,8 +16,10 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
#include "oculus.h"
+#include "ScriptedCreature.h"
enum Spells
{
@@ -201,7 +203,7 @@ class npc_unstable_sphere : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_unstable_sphereAI(creature);
+ return GetOculusAI<npc_unstable_sphereAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
index c5a1a95b2f8..06a99cd6c3e 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
@@ -16,10 +16,10 @@
*/
#include "ScriptMgr.h"
+#include "MotionMaster.h"
+#include "oculus.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
-#include "oculus.h"
// Types of drake mounts: Ruby (Tank), Amber (DPS), Emerald (Healer)
// Two Repeating phases
@@ -258,7 +258,7 @@ class boss_eregos : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_eregosAI(creature);
+ return GetOculusAI<boss_eregosAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
index b07c0f22169..459b9cb188d 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp
@@ -23,8 +23,9 @@ SDCategory: Instance Script
EndScriptData */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "MotionMaster.h"
#include "oculus.h"
+#include "ScriptedCreature.h"
#include "SpellInfo.h"
enum Spells
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
index 7865ffaec8d..460288d99f0 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
@@ -16,10 +16,13 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "oculus.h"
#include "ScriptedCreature.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
-#include "oculus.h"
enum Says
{
@@ -233,7 +236,7 @@ class npc_azure_ring_captain : public CreatureScript
{
switch (action)
{
- case ACTION_CALL_DRAGON_EVENT:
+ case ACTION_CALL_DRAGON_EVENT:
if (Creature* varos = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_VAROS)))
{
if (Unit* victim = varos->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0))
@@ -255,7 +258,7 @@ class npc_azure_ring_captain : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_azure_ring_captainAI>(creature);
+ return GetOculusAI<npc_azure_ring_captainAI>(creature);
}
};
@@ -271,7 +274,7 @@ class spell_varos_centrifuge_shield : public SpellScriptLoader
bool Load() override
{
Unit* caster = GetCaster();
- return (caster && caster->ToCreature());
+ return caster && caster->GetTypeId() == TYPEID_UNIT;
}
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
index 4d152ba5fa4..41189cf818b 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
@@ -16,10 +16,15 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "Creature.h"
+#include "CreatureAI.h"
+#include "GameObject.h"
#include "InstanceScript.h"
-#include "WorldPacket.h"
+#include "Map.h"
+#include "MotionMaster.h"
#include "oculus.h"
+#include "TemporarySummon.h"
+#include "WorldPacket.h"
DoorData const doorData[] =
{
@@ -111,11 +116,10 @@ class instance_oculus : public InstanceMapScript
void OnGameObjectCreate(GameObject* go) override
{
+ InstanceScript::OnGameObjectCreate(go);
+
switch (go->GetEntry())
{
- case GO_DRAGON_CAGE_DOOR:
- AddDoor(go, true);
- break;
case GO_EREGOS_CACHE_N:
case GO_EREGOS_CACHE_H:
EregosCacheGUID = go->GetGUID();
@@ -125,18 +129,6 @@ class instance_oculus : public InstanceMapScript
}
}
- void OnGameObjectRemove(GameObject* go) override
- {
- switch (go->GetEntry())
- {
- case GO_DRAGON_CAGE_DOOR:
- AddDoor(go, false);
- break;
- default:
- break;
- }
- }
-
void OnUnitDeath(Unit* unit) override
{
Creature* creature = unit->ToCreature();
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
index 4aa0cf0d76e..96b354e9ba2 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp
@@ -16,15 +16,18 @@
*/
#include "ScriptMgr.h"
+#include "CombatAI.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "oculus.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
-#include "SpellScript.h"
+#include "Spell.h"
#include "SpellAuraEffects.h"
-#include "SpellInfo.h"
-#include "CombatAI.h"
-#include "Player.h"
+#include "SpellScript.h"
#include "Vehicle.h"
-#include "oculus.h"
enum GossipNPCs
{
@@ -263,7 +266,7 @@ class npc_ruby_emerald_amber_drake : public CreatureScript
Initialize();
}
- void SpellHit(Unit* /*caster*/, const SpellInfo* spell) override
+ void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
if (Unit* creator = ObjectAccessor::GetUnit(*me, me->GetCreatorGUID()))
if (spell->Id == SPELL_GPS)
@@ -478,9 +481,7 @@ class spell_oculus_evasive_maneuvers : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_RUBY_EVASIVE_CHARGES))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_RUBY_EVASIVE_CHARGES });
}
void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
@@ -515,9 +516,7 @@ class spell_oculus_shock_lance : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_AMBER_SHOCK_CHARGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_AMBER_SHOCK_CHARGE });
}
void CalcDamage()
@@ -557,9 +556,7 @@ class spell_oculus_stop_time : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_AMBER_SHOCK_CHARGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_AMBER_SHOCK_CHARGE });
}
void Apply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -597,9 +594,7 @@ class spell_oculus_temporal_rift : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_AMBER_SHOCK_CHARGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_AMBER_SHOCK_CHARGE });
}
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h
index 712c7f3963d..4967d3e56e4 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h
+++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h
@@ -18,6 +18,8 @@
#ifndef OCULUS_H_
#define OCULUS_H_
+#include "CreatureAIImpl.h"
+
#define OculusScriptName "instance_oculus"
#define DataHeader "OC"
@@ -105,10 +107,10 @@ enum OCMisc
POINT_MOVE_OUT = 1
};
-template<class AI>
-AI* GetOculusAI(Creature* creature)
+template <class AI, class T>
+inline AI* GetOculusAI(T* obj)
{
- return GetInstanceAI<AI>(creature, OculusScriptName);
+ return GetInstanceAI<AI>(obj, OculusScriptName);
}
#endif // OCULUS_H_
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
index 65991267f63..05c6038f714 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp
@@ -24,8 +24,10 @@ SDCategory: Halls of Lightning
EndScriptData */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
#include "halls_of_lightning.h"
+#include "InstanceScript.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
enum Yells
{
@@ -99,7 +101,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_bjarngrimAI>(creature);
+ return GetHallsOfLightningAI<boss_bjarngrimAI>(creature);
}
struct boss_bjarngrimAI : public ScriptedAI
@@ -392,7 +394,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_stormforged_lieutenantAI>(creature);
+ return GetHallsOfLightningAI<npc_stormforged_lieutenantAI>(creature);
}
struct npc_stormforged_lieutenantAI : public ScriptedAI
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
index aadab9f1d29..a61b5f91489 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp
@@ -21,8 +21,11 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
#include "halls_of_lightning.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
#include "SpellInfo.h"
enum Spells
@@ -69,7 +72,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_ionarAI>(creature);
+ return GetHallsOfLightningAI<boss_ionarAI>(creature);
}
struct boss_ionarAI : public ScriptedAI
@@ -144,7 +147,7 @@ public:
Talk(SAY_SLAY);
}
- void SpellHit(Unit* /*caster*/, const SpellInfo* spell) override
+ void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_DISPERSE)
{
@@ -376,7 +379,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_spark_of_ionarAI>(creature);
+ return GetHallsOfLightningAI<npc_spark_of_ionarAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
index 3cd470d1a37..a749b783fc2 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp
@@ -24,9 +24,11 @@ SDCategory: Halls of Lightning
EndScriptData */
#include "ScriptMgr.h"
+#include "halls_of_lightning.h"
+#include "InstanceScript.h"
#include "ScriptedCreature.h"
+#include "SpellMgr.h"
#include "SpellScript.h"
-#include "halls_of_lightning.h"
enum Texts
{
@@ -205,7 +207,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_lokenAI>(creature);
+ return GetHallsOfLightningAI<boss_lokenAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
index c0c2998f874..604fdeb6123 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
@@ -24,10 +24,12 @@ SDCategory: Halls of Lightning
EndScriptData */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
#include "halls_of_lightning.h"
-#include "Player.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
#include "SpellInfo.h"
+#include "SpellMgr.h"
enum Texts
{
@@ -200,7 +202,7 @@ public:
summoned->GetMotionMaster()->MoveFollow(target, 0.0f, 0.0f);
// Why healing when just summoned?
- summoned->CastSpell(summoned, SPELL_HEAT, false, NULL, NULL, me->GetGUID());
+ summoned->CastSpell(summoned, SPELL_HEAT, false, nullptr, nullptr, me->GetGUID());
}
}
@@ -365,9 +367,8 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_volkhanAI>(creature);
+ return GetHallsOfLightningAI<boss_volkhanAI>(creature);
}
-
};
/*######
@@ -381,7 +382,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_molten_golemAI(creature);
+ return GetHallsOfLightningAI<npc_molten_golemAI>(creature);
}
struct npc_molten_golemAI : public ScriptedAI
@@ -437,7 +438,7 @@ public:
}
}
- void SpellHit(Unit* /*pCaster*/, const SpellInfo* pSpell) override
+ void SpellHit(Unit* /*pCaster*/, SpellInfo const* pSpell) override
{
// This is the dummy effect of the spells
if (pSpell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_SHATTER, me))
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h
index 2cbbd8556b6..742b36c539f 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h
@@ -18,6 +18,8 @@
#ifndef HALLS_OF_LIGHTNING_H_
#define HALLS_OF_LIGHTNING_H_
+#include "CreatureAIImpl.h"
+
#define HoLScriptName "instance_halls_of_lightning"
#define DataHeader "HOL"
@@ -49,10 +51,10 @@ enum HOLGameObjectIds
GO_LOKEN_THRONE = 192654
};
-template<class AI>
-AI* GetHallsOfLightningAI(Creature* creature)
+template <class AI, class T>
+inline AI* GetHallsOfLightningAI(T* obj)
{
- return GetInstanceAI<AI>(creature, HoLScriptName);
+ return GetInstanceAI<AI>(obj, HoLScriptName);
}
#endif // HALLS_OF_LIGHTNING_H_
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp
index 0782a552bc4..0508db5fddb 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp
@@ -16,15 +16,18 @@
*/
#include "ScriptMgr.h"
-#include "InstanceScript.h"
+#include "Creature.h"
+#include "GameObject.h"
#include "halls_of_lightning.h"
+#include "InstanceScript.h"
+#include "Map.h"
DoorData const doorData[] =
{
{ GO_VOLKHAN_DOOR, DATA_VOLKHAN, DOOR_TYPE_PASSAGE },
{ GO_IONAR_DOOR, DATA_IONAR, DOOR_TYPE_PASSAGE },
{ GO_LOKEN_DOOR, DATA_LOKEN, DOOR_TYPE_PASSAGE },
- { 0, 0, DOOR_TYPE_ROOM } // END
+ { 0, 0, DOOR_TYPE_ROOM } // END
};
class instance_halls_of_lightning : public InstanceMapScript
@@ -64,13 +67,10 @@ class instance_halls_of_lightning : public InstanceMapScript
void OnGameObjectCreate(GameObject* go) override
{
+ InstanceScript::OnGameObjectCreate(go);
+
switch (go->GetEntry())
{
- case GO_VOLKHAN_DOOR:
- case GO_IONAR_DOOR:
- case GO_LOKEN_DOOR:
- AddDoor(go, true);
- break;
case GO_LOKEN_THRONE:
LokenGlobeGUID = go->GetGUID();
break;
@@ -79,20 +79,6 @@ class instance_halls_of_lightning : public InstanceMapScript
}
}
- void OnGameObjectRemove(GameObject* go) override
- {
- switch (go->GetEntry())
- {
- case GO_VOLKHAN_DOOR:
- case GO_IONAR_DOOR:
- case GO_LOKEN_DOOR:
- AddDoor(go, false);
- break;
- default:
- break;
- }
- }
-
bool SetBossState(uint32 type, EncounterState state) override
{
if (!InstanceScript::SetBossState(type, state))
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
index 4674984d8c3..338b273808f 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp
@@ -16,9 +16,10 @@
*/
#include "ScriptMgr.h"
+#include "halls_of_stone.h"
#include "ScriptedCreature.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
-#include "halls_of_stone.h"
enum Spells
{
@@ -155,7 +156,7 @@ class spell_krystallus_shatter : public SpellScriptLoader
if (Unit* target = GetHitUnit())
{
target->RemoveAurasDueToSpell(SPELL_STONED);
- target->CastSpell((Unit*)NULL, SPELL_SHATTER_EFFECT, true);
+ target->CastSpell((Unit*)nullptr, SPELL_SHATTER_EFFECT, true);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
index 692875c496c..6463c0c1aef 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp
@@ -16,8 +16,9 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
#include "halls_of_stone.h"
+#include "InstanceScript.h"
+#include "ScriptedCreature.h"
enum Yells
{
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
index 47fc35d6207..9f6ccce5a87 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
@@ -16,8 +16,11 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
#include "halls_of_stone.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
enum Spells
{
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 9937f4d6fc7..2e926b17710 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
@@ -16,11 +16,13 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "ScriptedGossip.h"
-#include "ScriptedEscortAI.h"
#include "halls_of_stone.h"
+#include "InstanceScript.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "ScriptedEscortAI.h"
+#include "ScriptedGossip.h"
+#include "TemporarySummon.h"
enum Texts
{
@@ -553,7 +555,7 @@ public:
me->SetStandState(UNIT_STAND_STATE_STAND);
instance->HandleGameObject(instance->GetGuidData(DATA_GO_SKY_FLOOR), true);
if (Creature* temp = ObjectAccessor::GetCreature(*me, uiControllerGUID))
- temp->DealDamage(temp, temp->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
+ temp->DealDamage(temp, temp->GetHealth(), nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false);
bIsBattle = true;
SetEscortPaused(false);
JumpToNextStep(6500);
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h
index 69042bf18f4..358ab05f024 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h
@@ -18,6 +18,8 @@
#ifndef HALLS_OF_STONE_H_
#define HALLS_OF_STONE_H_
+#include "CreatureAIImpl.h"
+
#define HoSScriptName "instance_halls_of_stone"
#define DataHeader "HOS"
@@ -67,10 +69,10 @@ enum HOSGameObjectIds
GO_TRIBUNAL_SKY_FLOOR = 191527
};
-template<class AI>
-AI* GetHallsOfStoneAI(Creature* creature)
+template <class AI, class T>
+inline AI* GetHallsOfStoneAI(T* obj)
{
- return GetInstanceAI<AI>(creature, HoSScriptName);
+ return GetInstanceAI<AI>(obj, HoSScriptName);
}
#endif // HALLS_OF_STONE_H_
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
index 7609a8518c8..8f8897cee95 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
@@ -15,10 +15,13 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "InstanceScript.h"
-#include "Player.h"
#include "ScriptMgr.h"
+#include "Creature.h"
+#include "GameObject.h"
#include "halls_of_stone.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "Player.h"
DoorData const doorData[] =
{
@@ -72,6 +75,8 @@ class instance_halls_of_stone : public InstanceMapScript
void OnGameObjectCreate(GameObject* go) override
{
+ InstanceScript::OnGameObjectCreate(go);
+
switch (go->GetEntry())
{
case GO_ABEDNEUM:
@@ -95,21 +100,6 @@ class instance_halls_of_stone : public InstanceMapScript
case GO_TRIBUNAL_SKY_FLOOR:
TribunalSkyFloorGUID = go->GetGUID();
break;
- case GO_SJONNIR_DOOR:
- AddDoor(go, true);
- break;
- default:
- break;
- }
- }
-
- void OnGameObjectRemove(GameObject* go) override
- {
- switch (go->GetEntry())
- {
- case GO_SJONNIR_DOOR:
- AddDoor(go, false);
- break;
default:
break;
}
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 891263bbfcd..aacf9332a75 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
@@ -15,16 +15,23 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellScript.h"
-#include "PassiveAI.h"
+#include "DBCStores.h"
+#include "GameObject.h"
#include "GameObjectAI.h"
-#include "MapManager.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
#include "MoveSplineInit.h"
-#include "ulduar.h"
+#include "ObjectAccessor.h"
+#include "PassiveAI.h"
#include "Player.h"
+#include "ScriptedCreature.h"
+#include "Spell.h"
+#include "SpellInfo.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
+#include "ulduar.h"
enum Texts
{
@@ -247,7 +254,7 @@ class ActivateLivingConstellation : public BasicEvent
if (!_instance || _instance->GetBossState(BOSS_ALGALON) != IN_PROGRESS)
return true; // delete event
- _owner->CastSpell((Unit*)NULL, SPELL_TRIGGER_3_ADDS, TRIGGERED_FULL_MASK);
+ _owner->CastSpell((Unit*)nullptr, SPELL_TRIGGER_3_ADDS, TRIGGERED_FULL_MASK);
_owner->m_Events.AddEvent(this, execTime + urand(45000, 50000));
return false;
}
@@ -266,7 +273,7 @@ class CosmicSmashDamageEvent : public BasicEvent
bool Execute(uint64 /*execTime*/, uint32 /*diff*/) override
{
- _caster->CastSpell((Unit*)NULL, SPELL_COSMIC_SMASH_TRIGGERED, TRIGGERED_FULL_MASK);
+ _caster->CastSpell((Unit*)nullptr, SPELL_COSMIC_SMASH_TRIGGERED, TRIGGERED_FULL_MASK);
return true;
}
@@ -283,7 +290,7 @@ class SummonUnleashedDarkMatter : public BasicEvent
bool Execute(uint64 execTime, uint32 /*diff*/) override
{
- _caster->CastSpell((Unit*)NULL, SPELL_SUMMON_UNLEASHED_DARK_MATTER, TRIGGERED_FULL_MASK);
+ _caster->CastSpell((Unit*)nullptr, SPELL_SUMMON_UNLEASHED_DARK_MATTER, TRIGGERED_FULL_MASK);
_caster->m_Events.AddEvent(this, execTime + 30000);
return false;
}
@@ -465,9 +472,9 @@ class boss_algalon_the_observer : public CreatureScript
break;
case NPC_BLACK_HOLE:
summon->SetReactState(REACT_PASSIVE);
- summon->CastSpell((Unit*)NULL, SPELL_BLACK_HOLE_TRIGGER, TRIGGERED_FULL_MASK);
+ summon->CastSpell((Unit*)nullptr, SPELL_BLACK_HOLE_TRIGGER, TRIGGERED_FULL_MASK);
summon->CastSpell(summon, SPELL_CONSTELLATION_PHASE_TRIGGER, TRIGGERED_FULL_MASK);
- summon->CastSpell((Unit*)NULL, SPELL_BLACK_HOLE_EXPLOSION);
+ summon->CastSpell((Unit*)nullptr, SPELL_BLACK_HOLE_EXPLOSION);
summon->CastSpell(summon, SPELL_SUMMON_VOID_ZONE_VISUAL, TRIGGERED_FULL_MASK);
break;
case NPC_ALGALON_VOID_ZONE_VISUAL_STALKER:
@@ -777,7 +784,7 @@ class npc_living_constellation : public CreatureScript
me->DespawnOrUnsummon(1);
if (InstanceScript* instance = me->GetInstanceScript())
instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, EVENT_ID_SUPERMASSIVE_START);
- caster->CastSpell((Unit*)NULL, SPELL_BLACK_HOLE_CREDIT, TRIGGERED_FULL_MASK);
+ caster->CastSpell((Unit*)nullptr, SPELL_BLACK_HOLE_CREDIT, TRIGGERED_FULL_MASK);
caster->ToCreature()->DespawnOrUnsummon(1);
}
@@ -1186,7 +1193,7 @@ class spell_algalon_collapse : public SpellScriptLoader
void HandlePeriodic(AuraEffect const* /*aurEff*/)
{
PreventDefaultAction();
- GetTarget()->DealDamage(GetTarget(), GetTarget()->CountPctFromMaxHealth(1), NULL, NODAMAGE);
+ GetTarget()->DealDamage(GetTarget(), GetTarget()->CountPctFromMaxHealth(1), nullptr, NODAMAGE);
}
void Register() 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 fe6565664fa..0a22fafb95e 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
@@ -23,9 +23,14 @@ SDCategory: Ulduar - Ulduar
EndScriptData */
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
+#include "SpellAuras.h"
+#include "SpellMgr.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
+#include "TemporarySummon.h"
#include "ulduar.h"
enum AssemblySpells
@@ -206,7 +211,7 @@ class boss_steelbreaker : public CreatureScript
}
else
{
- me->SetLootRecipient(NULL);
+ me->SetLootRecipient(nullptr);
Talk(SAY_STEELBREAKER_DEATH);
//DoCastAOE(SPELL_SUPERCHARGE, true);
@@ -354,7 +359,7 @@ class boss_runemaster_molgeim : public CreatureScript
}
else
{
- me->SetLootRecipient(NULL);
+ me->SetLootRecipient(nullptr);
Talk(SAY_MOLGEIM_DEATH);
//DoCastAOE(SPELL_SUPERCHARGE, true);
@@ -530,7 +535,7 @@ class boss_stormcaller_brundir : public CreatureScript
}
else
{
- me->SetLootRecipient(NULL);
+ me->SetLootRecipient(nullptr);
Talk(SAY_BRUNDIR_DEATH);
//DoCastAOE(SPELL_SUPERCHARGE, true);
@@ -725,15 +730,13 @@ class spell_assembly_rune_of_summoning : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_RUNE_OF_SUMMONING_SUMMON))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_RUNE_OF_SUMMONING_SUMMON });
}
void HandlePeriodic(AuraEffect const* aurEff)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_RUNE_OF_SUMMONING_SUMMON, true, NULL, aurEff, GetTarget()->IsSummon() ? GetTarget()->ToTempSummon()->GetSummonerGUID() : ObjectGuid::Empty);
+ GetTarget()->CastSpell(GetTarget(), SPELL_RUNE_OF_SUMMONING_SUMMON, true, nullptr, aurEff, GetTarget()->IsSummon() ? GetTarget()->ToTempSummon()->GetSummonerGUID() : ObjectGuid::Empty);
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
index 8fd85e1c130..b9983785a18 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp
@@ -16,6 +16,8 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
#include "ulduar.h"
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 d89a9d08fe5..dac2a8707d9 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -23,23 +23,21 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "ScriptedGossip.h"
-#include "ScriptedEscortAI.h"
-#include "GameObjectAI.h"
-#include "Cell.h"
#include "CellImpl.h"
-#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
#include "CombatAI.h"
+#include "GameObjectAI.h"
+#include "GridNotifiersImpl.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "PassiveAI.h"
-#include "ObjectMgr.h"
+#include "ScriptedEscortAI.h"
+#include "ScriptedGossip.h"
+#include "Spell.h"
#include "SpellInfo.h"
#include "SpellScript.h"
-#include "Vehicle.h"
-#include "VehicleDefines.h"
#include "ulduar.h"
-#include "Spell.h"
+#include "Vehicle.h"
enum Spells
{
@@ -1007,7 +1005,7 @@ public:
npc_escortAI::UpdateAI(diff);
if (!HasEscortState(STATE_ESCORT_ESCORTING))
- Start(false, true, ObjectGuid::Empty, NULL, false, true);
+ Start(false, true, ObjectGuid::Empty, nullptr, false, true);
else
{
if (infernoTimer <= diff)
@@ -1755,11 +1753,11 @@ class spell_vehicle_throw_passenger : public SpellScriptLoader
{
// use 99 because it is 3d search
std::list<WorldObject*> targetList;
- Trinity::WorldObjectSpellAreaTargetCheck check(99, GetExplTargetDest(), GetCaster(), GetCaster(), GetSpellInfo(), TARGET_CHECK_DEFAULT, NULL);
+ Trinity::WorldObjectSpellAreaTargetCheck check(99, GetExplTargetDest(), GetCaster(), GetCaster(), GetSpellInfo(), TARGET_CHECK_DEFAULT, nullptr);
Trinity::WorldObjectListSearcher<Trinity::WorldObjectSpellAreaTargetCheck> searcher(GetCaster(), targetList, check);
Cell::VisitAllObjects(GetCaster(), searcher, 99.0f);
float minDist = 99 * 99;
- Unit* target = NULL;
+ Unit* target = nullptr;
for (std::list<WorldObject*>::iterator itr = targetList.begin(); itr != targetList.end(); ++itr)
{
if (Unit* unit = (*itr)->ToUnit())
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index 61482ac9f83..b8846cace28 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -16,12 +16,14 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
+#include "SpellAuras.h"
#include "SpellScript.h"
-#include "Cell.h"
-#include "CellImpl.h"
-#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
+#include "TemporarySummon.h"
#include "ulduar.h"
enum FreyaYells
@@ -609,7 +611,7 @@ class boss_freya : public CreatureScript
/* 25N */ {62955, 62956, 62957, 62958}
};
- me->CastSpell((Unit*)NULL, summonSpell[me->GetMap()->GetDifficulty()][elderCount], true);
+ me->CastSpell((Unit*)nullptr, summonSpell[me->GetMap()->GetDifficulty()][elderCount], true);
Talk(SAY_DEATH);
@@ -839,7 +841,7 @@ class boss_elder_stonebark : public CreatureScript
if (me->HasAura(SPELL_PETRIFIED_BARK))
{
int32 reflect = damage;
- who->CastCustomSpell(who, SPELL_PETRIFIED_BARK_DMG, &reflect, NULL, NULL, true);
+ who->CastCustomSpell(who, SPELL_PETRIFIED_BARK_DMG, &reflect, nullptr, nullptr, true);
damage = 0;
}
}
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 00370d87516..cba47d66951 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
@@ -16,11 +16,14 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "Player.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
+#include "SpellScript.h"
#include "ulduar.h"
-#include "Player.h"
enum VezaxYells
{
@@ -275,7 +278,7 @@ class boss_general_vezax : public CreatureScript
/* Player Range Check
Purpose: If there are playersMin people within rangeMin, rangeMax: return a random players in that range.
- If not, return NULL and allow other target selection
+ If not, return nullptr and allow other target selection
*/
Unit* CheckPlayersInRange(uint8 playersMin, float rangeMin, float rangeMax)
{
@@ -294,11 +297,11 @@ class boss_general_vezax : public CreatureScript
}
if (PlayerList.empty())
- return NULL;
+ return nullptr;
size_t size = PlayerList.size();
if (size < playersMin)
- return NULL;
+ return nullptr;
return Trinity::Containers::SelectRandomContainerElement(PlayerList);
}
@@ -371,7 +374,7 @@ class boss_saronite_animus : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_saronite_animusAI>(creature);
+ return GetUlduarAI<boss_saronite_animusAI>(creature);
}
};
@@ -441,7 +444,7 @@ class npc_saronite_vapors : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_saronite_vaporsAI>(creature);
+ return GetUlduarAI<npc_saronite_vaporsAI>(creature);
}
};
@@ -456,9 +459,7 @@ class spell_general_vezax_mark_of_the_faceless : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MARK_OF_THE_FACELESS_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_MARK_OF_THE_FACELESS_DAMAGE });
}
void HandleEffectPeriodic(AuraEffect const* aurEff)
@@ -519,9 +520,7 @@ class spell_general_vezax_saronite_vapors : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SARONITE_VAPORS_ENERGIZE) || !sSpellMgr->GetSpellInfo(SPELL_SARONITE_VAPORS_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SARONITE_VAPORS_ENERGIZE, SPELL_SARONITE_VAPORS_DAMAGE });
}
void HandleEffectApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
@@ -530,8 +529,8 @@ class spell_general_vezax_saronite_vapors : public SpellScriptLoader
{
int32 mana = int32(aurEff->GetAmount() * std::pow(2.0f, GetStackAmount())); // mana restore - bp * 2^stackamount
int32 damage = mana * 2;
- caster->CastCustomSpell(GetTarget(), SPELL_SARONITE_VAPORS_ENERGIZE, &mana, NULL, NULL, true);
- caster->CastCustomSpell(GetTarget(), SPELL_SARONITE_VAPORS_DAMAGE, &damage, NULL, NULL, true);
+ caster->CastCustomSpell(GetTarget(), SPELL_SARONITE_VAPORS_ENERGIZE, &mana, nullptr, nullptr, true);
+ caster->CastCustomSpell(GetTarget(), SPELL_SARONITE_VAPORS_DAMAGE, &damage, nullptr, nullptr, true);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
index 59b9cc5bcb1..a7a90595ffe 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
@@ -16,13 +16,14 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "SpellScript.h"
-#include "SpellAuraEffects.h"
-#include "Cell.h"
#include "CellImpl.h"
-#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "ulduar.h"
/* @todo Achievements
@@ -959,7 +960,7 @@ class npc_toasty_fire : public CreatureScript
DoCast(me, SPELL_SINGED, true);
}
- void SpellHit(Unit* /*who*/, const SpellInfo* spell) override
+ void SpellHit(Unit* /*who*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_BLOCK_OF_ICE || spell->Id == SPELL_ICE_SHARD || spell->Id == SPELL_ICE_SHARD_HIT)
{
@@ -1048,7 +1049,7 @@ public:
return;
int32 damage = int32(200 * std::pow(2.0f, GetStackAmount()));
- caster->CastCustomSpell(caster, SPELL_BITING_COLD_DAMAGE, &damage, NULL, NULL, true);
+ caster->CastCustomSpell(caster, SPELL_BITING_COLD_DAMAGE, &damage, nullptr, nullptr, true);
if (caster->isMoving())
caster->RemoveAuraFromStack(SPELL_BITING_COLD_TRIGGERED);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
index 7aa60e8af68..1fb7dda696a 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp
@@ -15,11 +15,13 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "GameTime.h"
#include "ScriptMgr.h"
+#include "GameTime.h"
+#include "InstanceScript.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
+#include "SpellAuras.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
#include "ulduar.h"
#include "Vehicle.h"
@@ -252,7 +254,7 @@ class boss_ignis : public CreatureScript
if (Unit* slagPotTarget = ObjectAccessor::GetUnit(*me, _slagPotGUID))
{
slagPotTarget->ExitVehicle();
- slagPotTarget = NULL;
+ slagPotTarget = nullptr;
_slagPotGUID.Clear();
events.CancelEvent(EVENT_END_POT);
}
@@ -454,10 +456,7 @@ class spell_ignis_slag_pot : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SLAG_POT_DAMAGE)
- || !sSpellMgr->GetSpellInfo(SPELL_SLAG_IMBUED))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SLAG_POT_DAMAGE, SPELL_SLAG_IMBUED });
}
void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
index 33e97e8baf6..57ace8ec195 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
@@ -16,12 +16,16 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
+#include "SpellScript.h"
#include "ulduar.h"
#include "Vehicle.h"
-#include "Player.h"
/* ScriptData
SDName: boss_kologarn
@@ -340,7 +344,7 @@ class spell_ulduar_rubble_summon : public SpellScriptLoader
ObjectGuid originalCaster = caster->GetInstanceScript() ? caster->GetInstanceScript()->GetGuidData(BOSS_KOLOGARN) : ObjectGuid::Empty;
uint32 spellId = GetEffectValue();
for (uint8 i = 0; i < 5; ++i)
- caster->CastSpell(caster, spellId, true, NULL, NULL, originalCaster);
+ caster->CastSpell(caster, spellId, true, nullptr, nullptr, originalCaster);
}
void Register() override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index 7929ab54eb6..9ed4f098ed6 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -15,15 +15,17 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "Cell.h"
-#include "CellImpl.h"
-#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
#include "ScriptMgr.h"
+#include "GameObject.h"
+#include "GameObjectAI.h"
+#include "GridNotifiers.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
-#include "GameObjectAI.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "ulduar.h"
#include "Vehicle.h"
@@ -493,7 +495,7 @@ class boss_mimiron : public CreatureScript
{
case EVENT_SUMMON_FLAMES:
if (Creature* worldtrigger = instance->GetCreature(DATA_MIMIRON_WORLD_TRIGGER))
- worldtrigger->CastCustomSpell(SPELL_SCRIPT_EFFECT_SUMMON_FLAMES_INITIAL, SPELLVALUE_MAX_TARGETS, 3, NULL, true, NULL, NULL, me->GetGUID());
+ worldtrigger->CastCustomSpell(SPELL_SCRIPT_EFFECT_SUMMON_FLAMES_INITIAL, SPELLVALUE_MAX_TARGETS, 3, nullptr, true, nullptr, nullptr, me->GetGUID());
events.RescheduleEvent(EVENT_SUMMON_FLAMES, 28000);
break;
case EVENT_INTRO_1:
@@ -645,10 +647,10 @@ class boss_mimiron : public CreatureScript
{
if (Creature* computer = instance->GetCreature(DATA_COMPUTER))
computer->AI()->DoAction(DO_DEACTIVATE_COMPUTER);
- me->SummonGameObject(RAID_MODE(GO_CACHE_OF_INNOVATION_FIREFIGHTER, GO_CACHE_OF_INNOVATION_FIREFIGHTER_HERO), 2744.040f, 2569.352f, 364.3135f, 3.124123f, G3D::Quat(0.f, 0.f, 0.9999619f, 0.008734641f), 604800);
+ me->SummonGameObject(RAID_MODE(GO_CACHE_OF_INNOVATION_FIREFIGHTER, GO_CACHE_OF_INNOVATION_FIREFIGHTER_HERO), 2744.040f, 2569.352f, 364.3135f, 3.124123f, QuaternionData(0.f, 0.f, 0.9999619f, 0.008734641f), 604800);
}
else
- me->SummonGameObject(RAID_MODE(GO_CACHE_OF_INNOVATION, GO_CACHE_OF_INNOVATION_HERO), 2744.040f, 2569.352f, 364.3135f, 3.124123f, G3D::Quat(0.f, 0.f, 0.9999619f, 0.008734641f), 604800);
+ me->SummonGameObject(RAID_MODE(GO_CACHE_OF_INNOVATION, GO_CACHE_OF_INNOVATION_HERO), 2744.040f, 2569.352f, 364.3135f, 3.124123f, QuaternionData(0.f, 0.f, 0.9999619f, 0.008734641f), 604800);
events.ScheduleEvent(EVENT_OUTTRO_3, 11000);
break;
case EVENT_OUTTRO_3:
@@ -1229,15 +1231,15 @@ class boss_aerial_command_unit : public CreatureScript
switch (eventId)
{
case EVENT_SUMMON_FIRE_BOTS:
- me->CastCustomSpell(SPELL_SUMMON_FIRE_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 3, NULL, true);
+ me->CastCustomSpell(SPELL_SUMMON_FIRE_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 3, nullptr, true);
events.RescheduleEvent(EVENT_SUMMON_FIRE_BOTS, 45000, 0, PHASE_AERIAL_COMMAND_UNIT);
break;
case EVENT_SUMMON_JUNK_BOT:
- me->CastCustomSpell(SPELL_SUMMON_JUNK_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, NULL, true);
+ me->CastCustomSpell(SPELL_SUMMON_JUNK_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, nullptr, true);
events.RescheduleEvent(EVENT_SUMMON_JUNK_BOT, urand(11000, 12000), 0, PHASE_AERIAL_COMMAND_UNIT);
break;
case EVENT_SUMMON_ASSAULT_BOT:
- me->CastCustomSpell(SPELL_SUMMON_ASSAULT_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, NULL, true);
+ me->CastCustomSpell(SPELL_SUMMON_ASSAULT_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, nullptr, true);
events.RescheduleEvent(EVENT_SUMMON_ASSAULT_BOT, 30000, 0, PHASE_AERIAL_COMMAND_UNIT);
break;
case EVENT_SUMMON_BOMB_BOT:
@@ -1787,9 +1789,7 @@ class spell_mimiron_fire_search : public SpellScriptLoader
private:
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_WATER_SPRAY))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_WATER_SPRAY });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -1878,9 +1878,7 @@ class spell_mimiron_magnetic_core : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MAGNETIC_CORE_VISUAL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_MAGNETIC_CORE_VISUAL });
}
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1933,9 +1931,7 @@ class spell_mimiron_napalm_shell : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_NAPALM_SHELL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_NAPALM_SHELL });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -2011,9 +2007,7 @@ class spell_mimiron_plasma_blast : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_PLASMA_BLAST))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_PLASMA_BLAST });
}
bool Load() override
@@ -2087,9 +2081,7 @@ class spell_mimiron_proximity_mines : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_PROXIMITY_MINE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_PROXIMITY_MINE });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -2122,9 +2114,7 @@ class spell_mimiron_proximity_trigger : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_PROXIMITY_MINE_EXPLOSION))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_PROXIMITY_MINE_EXPLOSION });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -2137,7 +2127,7 @@ class spell_mimiron_proximity_trigger : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- GetCaster()->CastSpell((Unit*)NULL, SPELL_PROXIMITY_MINE_EXPLOSION, true);
+ GetCaster()->CastSpell((Unit*)nullptr, SPELL_PROXIMITY_MINE_EXPLOSION, true);
}
void Register() override
@@ -2165,9 +2155,7 @@ class spell_mimiron_rapid_burst : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_RAPID_BURST_LEFT) || !sSpellMgr->GetSpellInfo(SPELL_RAPID_BURST_RIGHT))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_RAPID_BURST_LEFT, SPELL_RAPID_BURST_RIGHT });
}
void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -2179,7 +2167,7 @@ class spell_mimiron_rapid_burst : public SpellScriptLoader
void HandleDummyTick(AuraEffect const* aurEff)
{
if (GetCaster())
- GetCaster()->CastSpell(GetTarget(), aurEff->GetTickNumber() % 2 == 0 ? SPELL_RAPID_BURST_RIGHT : SPELL_RAPID_BURST_LEFT, true, NULL, aurEff);
+ GetCaster()->CastSpell(GetTarget(), aurEff->GetTickNumber() % 2 == 0 ? SPELL_RAPID_BURST_RIGHT : SPELL_RAPID_BURST_LEFT, true, nullptr, aurEff);
}
void Register() override
@@ -2207,9 +2195,7 @@ class spell_mimiron_rocket_strike : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SCRIPT_EFFECT_ROCKET_STRIKE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SCRIPT_EFFECT_ROCKET_STRIKE });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -2227,7 +2213,7 @@ class spell_mimiron_rocket_strike : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- GetHitUnit()->CastSpell((Unit*)NULL, SPELL_SCRIPT_EFFECT_ROCKET_STRIKE, true, NULL, NULL, GetCaster()->GetGUID());
+ GetHitUnit()->CastSpell((Unit*)nullptr, SPELL_SCRIPT_EFFECT_ROCKET_STRIKE, true, nullptr, nullptr, GetCaster()->GetGUID());
}
void Register() override
@@ -2255,9 +2241,7 @@ class spell_mimiron_rocket_strike_damage : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_NOT_SO_FRIENDLY_FIRE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_NOT_SO_FRIENDLY_FIRE });
}
void HandleAfterCast()
@@ -2276,7 +2260,7 @@ class spell_mimiron_rocket_strike_damage : public SpellScriptLoader
void HandleFriendlyFire(SpellEffIndex /*effIndex*/)
{
- GetHitUnit()->CastSpell((Unit*)NULL, SPELL_NOT_SO_FRIENDLY_FIRE, true);
+ GetHitUnit()->CastSpell((Unit*)nullptr, SPELL_NOT_SO_FRIENDLY_FIRE, true);
}
void Register() override
@@ -2305,9 +2289,7 @@ class spell_mimiron_rocket_strike_target_select : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_ROCKET_STRIKE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_ROCKET_STRIKE });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -2329,7 +2311,7 @@ class spell_mimiron_rocket_strike_target_select : public SpellScriptLoader
void HandleScript(SpellEffIndex /*effIndex*/)
{
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
- GetCaster()->CastSpell(GetHitUnit(), SPELL_SUMMON_ROCKET_STRIKE, true, NULL, NULL, instance->GetGuidData(DATA_VX_001));
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_SUMMON_ROCKET_STRIKE, true, nullptr, nullptr, instance->GetGuidData(DATA_VX_001));
GetCaster()->SetDisplayId(11686);
}
@@ -2415,9 +2397,7 @@ class spell_mimiron_summon_assault_bot : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_ASSAULT_BOT))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_ASSAULT_BOT });
}
void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
@@ -2425,7 +2405,7 @@ class spell_mimiron_summon_assault_bot : public SpellScriptLoader
if (Unit* caster = GetCaster())
if (InstanceScript* instance = caster->GetInstanceScript())
if (instance->GetBossState(BOSS_MIMIRON) == IN_PROGRESS)
- caster->CastSpell(caster, SPELL_SUMMON_ASSAULT_BOT, false, NULL, aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT));
+ caster->CastSpell(caster, SPELL_SUMMON_ASSAULT_BOT, false, nullptr, aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT));
}
void Register() override
@@ -2452,9 +2432,7 @@ class spell_mimiron_summon_assault_bot_target : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_ASSAULT_BOT_DUMMY))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_ASSAULT_BOT_DUMMY });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
@@ -2486,10 +2464,7 @@ class spell_mimiron_summon_fire_bot : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_FIRE_BOT))
- return false;
-
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_FIRE_BOT });
}
void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
@@ -2497,7 +2472,7 @@ class spell_mimiron_summon_fire_bot : public SpellScriptLoader
if (Unit* caster = GetCaster())
if (InstanceScript* instance = caster->GetInstanceScript())
if (instance->GetBossState(BOSS_MIMIRON) == IN_PROGRESS)
- caster->CastSpell(caster, SPELL_SUMMON_FIRE_BOT, false, NULL, aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT));
+ caster->CastSpell(caster, SPELL_SUMMON_FIRE_BOT, false, nullptr, aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT));
}
void Register() override
@@ -2524,9 +2499,7 @@ class spell_mimiron_summon_fire_bot_target : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_FIRE_BOT_DUMMY))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_FIRE_BOT_DUMMY });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
@@ -2595,9 +2568,7 @@ class spell_mimiron_summon_flames_spread : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_FLAMES_SPREAD))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_FLAMES_SPREAD });
}
void HandleTick(AuraEffect const* /*aurEff*/)
@@ -2632,9 +2603,7 @@ class spell_mimiron_summon_frost_bomb_target : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_FROST_BOMB))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_FROST_BOMB });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -2683,9 +2652,7 @@ class spell_mimiron_summon_junk_bot : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_JUNK_BOT))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_JUNK_BOT });
}
void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
@@ -2693,7 +2660,7 @@ class spell_mimiron_summon_junk_bot : public SpellScriptLoader
if (Unit* caster = GetCaster())
if (InstanceScript* instance = caster->GetInstanceScript())
if (instance->GetBossState(BOSS_MIMIRON) == IN_PROGRESS)
- caster->CastSpell(caster, SPELL_SUMMON_JUNK_BOT, false, NULL, aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT));
+ caster->CastSpell(caster, SPELL_SUMMON_JUNK_BOT, false, nullptr, aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT));
}
void Register() override
@@ -2720,9 +2687,7 @@ class spell_mimiron_summon_junk_bot_target : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_JUNK_BOT_DUMMY))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_JUNK_BOT_DUMMY });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
index 1ab33be99ba..d571bd541df 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
@@ -18,13 +18,19 @@
/// @todo Harpoon chain from 62505 should not get removed when other chain is applied
#include "ScriptMgr.h"
+#include "GameObject.h"
+#include "GameObjectAI.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
-#include "GameObjectAI.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "ulduar.h"
-#include "SpellInfo.h"
-#include "Player.h"
enum Says
{
@@ -250,7 +256,7 @@ class boss_razorscale_controller : public CreatureScript
break;
case ACTION_PLACE_BROKEN_HARPOON:
for (uint8 n = 0; n < RAID_MODE(2, 4); n++)
- me->SummonGameObject(GO_RAZOR_BROKEN_HARPOON, PosHarpoon[n].GetPositionX(), PosHarpoon[n].GetPositionY(), PosHarpoon[n].GetPositionZ(), 2.286f, G3D::Quat(), 180);
+ me->SummonGameObject(GO_RAZOR_BROKEN_HARPOON, PosHarpoon[n].GetPositionX(), PosHarpoon[n].GetPositionY(), PosHarpoon[n].GetPositionZ(), 2.286f, QuaternionData(), 180);
break;
}
}
@@ -265,7 +271,7 @@ class boss_razorscale_controller : public CreatureScript
{
case EVENT_BUILD_HARPOON_1:
Talk(EMOTE_HARPOON);
- if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_1, PosHarpoon[0].GetPositionX(), PosHarpoon[0].GetPositionY(), PosHarpoon[0].GetPositionZ(), 4.790f, G3D::Quat(), uint32(me->GetRespawnTime())))
+ if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_1, PosHarpoon[0].GetPositionX(), PosHarpoon[0].GetPositionY(), PosHarpoon[0].GetPositionZ(), 4.790f, QuaternionData(), uint32(me->GetRespawnTime())))
{
if (GameObject* brokenHarpoon = harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f)) //only nearest broken harpoon
brokenHarpoon->RemoveFromWorld();
@@ -275,7 +281,7 @@ class boss_razorscale_controller : public CreatureScript
return;
case EVENT_BUILD_HARPOON_2:
Talk(EMOTE_HARPOON);
- if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_2, PosHarpoon[1].GetPositionX(), PosHarpoon[1].GetPositionY(), PosHarpoon[1].GetPositionZ(), 4.659f, G3D::Quat(), uint32(me->GetRespawnTime())))
+ if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_2, PosHarpoon[1].GetPositionX(), PosHarpoon[1].GetPositionY(), PosHarpoon[1].GetPositionZ(), 4.659f, QuaternionData(), uint32(me->GetRespawnTime())))
{
if (GameObject* brokenHarpoon = harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
brokenHarpoon->RemoveFromWorld();
@@ -284,7 +290,7 @@ class boss_razorscale_controller : public CreatureScript
return;
case EVENT_BUILD_HARPOON_3:
Talk(EMOTE_HARPOON);
- if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_3, PosHarpoon[2].GetPositionX(), PosHarpoon[2].GetPositionY(), PosHarpoon[2].GetPositionZ(), 5.382f, G3D::Quat(), uint32(me->GetRespawnTime())))
+ if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_3, PosHarpoon[2].GetPositionX(), PosHarpoon[2].GetPositionY(), PosHarpoon[2].GetPositionZ(), 5.382f, QuaternionData(), uint32(me->GetRespawnTime())))
{
if (GameObject* brokenHarpoon = harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
brokenHarpoon->RemoveFromWorld();
@@ -294,7 +300,7 @@ class boss_razorscale_controller : public CreatureScript
return;
case EVENT_BUILD_HARPOON_4:
Talk(EMOTE_HARPOON);
- if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_4, PosHarpoon[3].GetPositionX(), PosHarpoon[3].GetPositionY(), PosHarpoon[3].GetPositionZ(), 4.266f, G3D::Quat(), uint32(me->GetRespawnTime())))
+ if (GameObject* harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_4, PosHarpoon[3].GetPositionX(), PosHarpoon[3].GetPositionY(), PosHarpoon[3].GetPositionZ(), 4.266f, QuaternionData(), uint32(me->GetRespawnTime())))
{
if (GameObject* brokenHarpoon = harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
brokenHarpoon->RemoveFromWorld();
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
index 0dc4e553ad7..cfa977166ad 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
@@ -15,16 +15,22 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "ScriptMgr.h"
+#include "AreaBoundary.h"
+#include "CellImpl.h"
+#include "GridNotifiersImpl.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
#include "MoveSplineInit.h"
+#include "ObjectAccessor.h"
#include "Player.h"
-#include "ScriptMgr.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
+#include "SpellMgr.h"
+#include "SpellScript.h"
#include "TypeContainerVisitor.h"
-#include "CellImpl.h"
-#include "GridNotifiersImpl.h"
#include "ulduar.h"
+#include <G3D/Vector3.h>
enum Spells
{
@@ -317,8 +323,7 @@ enum DisplayIds
THORIM_WEAPON_DISPLAY_ID = 45900
};
-uint32 const LightningOrbPathSize = 8;
-G3D::Vector3 const LightningOrbPath[LightningOrbPathSize] =
+Position const LightningOrbPath[] =
{
{ 2134.889893f, -298.632996f, 438.247467f },
{ 2134.570068f, -440.317993f, 438.247467f },
@@ -329,6 +334,7 @@ G3D::Vector3 const LightningOrbPath[LightningOrbPathSize] =
{ 2202.208008f, -262.939270f, 412.168976f },
{ 2182.310059f, -263.233093f, 414.739410f }
};
+std::size_t const LightningOrbPathSize = std::extent<decltype(LightningOrbPath)>::value;
// used for trash jump calculation
Position const ArenaCenter = { 2134.77f, -262.307f };
@@ -352,7 +358,7 @@ class HeightPositionCheck
bool operator()(Position const* pos) const
{
- return pos->GetPositionZ() > THORIM_BALCONY_Z_CHECK == _ret;
+ return (pos->GetPositionZ() > THORIM_BALCONY_Z_CHECK) == _ret;
}
private:
@@ -647,7 +653,12 @@ class boss_thorim : public CreatureScript
summon->GetMotionMaster()->MovePoint(EVENT_CHARGE_PREPATH, LightningOrbPath[LightningOrbPathSize - 1], false);
- Movement::PointsArray path(LightningOrbPath, LightningOrbPath + LightningOrbPathSize);
+ Movement::PointsArray path;
+ path.reserve(LightningOrbPathSize);
+ std::transform(std::begin(LightningOrbPath), std::end(LightningOrbPath), std::back_inserter(path), [](Position const& pos)
+ {
+ return G3D::Vector3(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ());
+ });
Movement::MoveSplineInit init(summon);
init.MovebyPath(path);
@@ -1749,9 +1760,7 @@ class spell_thorim_charge_orb : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_LIGHTNING_PILLAR_1))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_LIGHTNING_PILLAR_1 });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -1797,9 +1806,7 @@ class spell_thorim_lightning_charge : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_LIGHTNING_CHARGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_LIGHTNING_CHARGE });
}
void HandleFocus()
@@ -1880,10 +1887,7 @@ class spell_thorim_stormhammer : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_STORMHAMMER_BOOMERANG)
- || !sSpellMgr->GetSpellInfo(SPELL_DEAFENING_THUNDER))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_STORMHAMMER_BOOMERANG, SPELL_DEAFENING_THUNDER });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -1941,10 +1945,7 @@ class spell_thorim_stormhammer_sif : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_STORMHAMMER_BOOMERANG)
- || !sSpellMgr->GetSpellInfo(SPELL_SIF_TRANSFORM))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_STORMHAMMER_BOOMERANG, SPELL_SIF_TRANSFORM });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -2014,9 +2015,7 @@ class spell_thorim_runic_smash : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_RUNIC_SMASH))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_RUNIC_SMASH });
}
void HandleScript(SpellEffIndex effIndex)
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
index 863740fa70f..2fce8d7a5be 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
@@ -22,15 +22,18 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "Opcodes.h"
+#include "PassiveAI.h"
+#include "Player.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
+#include "SpellScript.h"
#include "ulduar.h"
#include "Vehicle.h"
-#include "Player.h"
#include "WorldPacket.h"
-#include "Opcodes.h"
-#include "PassiveAI.h"
enum Spells
{
@@ -736,7 +739,7 @@ class npc_life_spark : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_life_sparkAI(creature);
+ return GetUlduarAI<npc_life_sparkAI>(creature);
}
struct npc_life_sparkAI : public ScriptedAI
@@ -807,7 +810,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_xt_void_zoneAI(creature);
+ return GetUlduarAI<npc_xt_void_zoneAI>(creature);
}
};
@@ -823,9 +826,7 @@ class spell_xt002_searing_light_spawn_life_spark : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_LIFE_SPARK))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_LIFE_SPARK });
}
void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
@@ -859,9 +860,7 @@ class spell_xt002_gravity_bomb_aura : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_VOID_ZONE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_VOID_ZONE });
}
void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
@@ -943,19 +942,7 @@ class spell_xt002_heart_overload_periodic : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ENERGY_ORB))
- return false;
-
- if (!sSpellMgr->GetSpellInfo(SPELL_RECHARGE_BOOMBOT))
- return false;
-
- if (!sSpellMgr->GetSpellInfo(SPELL_RECHARGE_PUMMELER))
- return false;
-
- if (!sSpellMgr->GetSpellInfo(SPELL_RECHARGE_SCRAPBOT))
- return false;
-
- return true;
+ return ValidateSpellInfo({ SPELL_ENERGY_ORB, SPELL_RECHARGE_BOOMBOT, SPELL_RECHARGE_PUMMELER, SPELL_RECHARGE_SCRAPBOT });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -1074,9 +1061,7 @@ class spell_xt002_321_boombot_aura : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ACHIEVEMENT_CREDIT_NERF_SCRAPBOTS))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_ACHIEVEMENT_CREDIT_NERF_SCRAPBOTS });
}
bool CheckProc(ProcEventInfo& eventInfo)
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 a47362b1082..66970ee996f 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -16,12 +16,20 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "CreatureTextMgr.h"
+#include "GridNotifiers.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "MoveSplineInit.h"
+#include "ObjectAccessor.h"
#include "PassiveAI.h"
-#include "SpellScript.h"
+#include "Player.h"
+#include "ScriptedCreature.h"
+#include "Spell.h"
#include "SpellAuraEffects.h"
-#include "MoveSplineInit.h"
-#include "CreatureTextMgr.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "ulduar.h"
enum Yells
@@ -550,7 +558,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
if (Creature* yogg = instance->GetCreature(BOSS_YOGG_SARON))
{
yogg->AI()->Talk(EMOTE_YOGG_SARON_EXTINGUISH_ALL_LIFE, me);
- yogg->CastSpell((Unit*)NULL, SPELL_EXTINGUISH_ALL_LIFE, true);
+ yogg->CastSpell((Unit*)nullptr, SPELL_EXTINGUISH_ALL_LIFE, true);
}
events.ScheduleEvent(EVENT_EXTINGUISH_ALL_LIFE, 10000); // cast it again after a short while, players can survive
break;
@@ -1093,7 +1101,7 @@ class boss_brain_of_yogg_saron : public CreatureScript
uint8 illusion = _instance->GetData(DATA_ILLUSION);
if (++_tentaclesKilled >= (illusion == ICECROWN_ILLUSION ? 9 : 8))
{
- sCreatureTextMgr->SendChat(me, EMOTE_BRAIN_ILLUSION_SHATTERED, NULL, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_AREA);
+ sCreatureTextMgr->SendChat(me, EMOTE_BRAIN_ILLUSION_SHATTERED, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_AREA);
_summons.DespawnAll();
DoCastAOE(SPELL_SHATTERED_ILLUSION, true);
_instance->HandleGameObject(_instance->GetGuidData(GO_BRAIN_ROOM_DOOR_1 + illusion), true);
@@ -2061,9 +2069,7 @@ class spell_yogg_saron_malady_of_the_mind : public SpellScriptLoader // 63830
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MALADY_OF_THE_MIND_JUMP))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_MALADY_OF_THE_MIND_JUMP });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -2133,11 +2139,7 @@ class spell_yogg_saron_brain_link : public SpellScriptLoader // 63802
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_BRAIN_LINK_DAMAGE))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_BRAIN_LINK_NO_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_BRAIN_LINK_DAMAGE, SPELL_BRAIN_LINK_NO_DAMAGE });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -2231,9 +2233,7 @@ class spell_yogg_saron_boil_ominously : public SpellScriptLoader // 63030
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_GUARDIAN_1))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_GUARDIAN_1 });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
@@ -2332,15 +2332,13 @@ class spell_yogg_saron_empowering_shadows_missile : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_EMPOWERING_SHADOWS))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_EMPOWERING_SHADOWS });
}
void HandleScript(SpellEffIndex /*effIndex*/)
{
if (Unit* target = GetHitUnit())
- target->CastSpell((Unit*)NULL, SPELL_EMPOWERING_SHADOWS, true);
+ target->CastSpell((Unit*)nullptr, SPELL_EMPOWERING_SHADOWS, true);
}
void Register() override
@@ -2367,9 +2365,7 @@ class spell_yogg_saron_constrictor_tentacle : public SpellScriptLoader // 64
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_CONSTRICTOR_TENTACLE_SUMMON))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_CONSTRICTOR_TENTACLE_SUMMON });
}
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -2400,9 +2396,7 @@ class spell_yogg_saron_lunge : public SpellScriptLoader // 64131
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SQUEEZE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SQUEEZE });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -2495,11 +2489,7 @@ class spell_yogg_saron_empowered : public SpellScriptLoader // 64161
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_EMPOWERED_BUFF))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_WEAKENED))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_EMPOWERED_BUFF, SPELL_WEAKENED });
}
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -2600,11 +2590,7 @@ class spell_yogg_saron_death_ray_warning_visual : public SpellScriptLoader /
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_DEATH_RAY_PERIODIC))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_DEATH_RAY_DAMAGE_VISUAL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_DEATH_RAY_PERIODIC, SPELL_DEATH_RAY_DAMAGE_VISUAL });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -2612,7 +2598,7 @@ class spell_yogg_saron_death_ray_warning_visual : public SpellScriptLoader /
if (Unit* caster = GetCaster())
{
caster->CastSpell(caster, SPELL_DEATH_RAY_PERIODIC, true);
- caster->CastSpell((Unit*)NULL, SPELL_DEATH_RAY_DAMAGE_VISUAL, true);
+ caster->CastSpell((Unit*)nullptr, SPELL_DEATH_RAY_DAMAGE_VISUAL, true);
// TODO: set better movement
caster->GetMotionMaster()->MoveConfused();
}
@@ -2641,9 +2627,7 @@ class spell_yogg_saron_cancel_illusion_room_aura : public SpellScriptLoader /
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_TELEPORT_BACK_TO_MAIN_ROOM))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_TELEPORT_BACK_TO_MAIN_ROOM });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -2704,11 +2688,7 @@ class spell_yogg_saron_revealed_tentacle : public SpellScriptLoader // 64012
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_TENTACLE_VOID_ZONE))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_GRIM_REPRISAL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_TENTACLE_VOID_ZONE, SPELL_GRIM_REPRISAL });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -2744,9 +2724,7 @@ class spell_yogg_saron_grim_reprisal : public SpellScriptLoader // 63305
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_GRIM_REPRISAL_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_GRIM_REPRISAL_DAMAGE });
}
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
@@ -2783,11 +2761,7 @@ class spell_yogg_saron_induce_madness : public SpellScriptLoader // 64059
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_TELEPORT_BACK_TO_MAIN_ROOM))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_SHATTERED_ILLUSION_REMOVE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_TELEPORT_BACK_TO_MAIN_ROOM, SPELL_SHATTERED_ILLUSION_REMOVE });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -2802,7 +2776,7 @@ class spell_yogg_saron_induce_madness : public SpellScriptLoader // 64059
void ClearShatteredIllusion()
{
- GetCaster()->CastSpell((Unit*)NULL, SPELL_SHATTERED_ILLUSION_REMOVE);
+ GetCaster()->CastSpell((Unit*)nullptr, SPELL_SHATTERED_ILLUSION_REMOVE);
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
if (Creature* voice = instance->GetCreature(DATA_VOICE_OF_YOGG_SARON))
@@ -2850,11 +2824,7 @@ class spell_yogg_saron_sanity : public SpellScriptLoader // 63050
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_LOW_SANITY_SCREEN_EFFECT))
- return false;
- if (!sSpellMgr->GetSpellInfo(SPELL_INSANE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_LOW_SANITY_SCREEN_EFFECT, SPELL_INSANE });
}
void DummyTick(AuraEffect const* /*aurEff*/)
@@ -2909,9 +2879,7 @@ class spell_yogg_saron_insane : public SpellScriptLoader // 63120
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_INSANE_VISUAL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_INSANE_VISUAL });
}
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -3151,9 +3119,7 @@ class spell_yogg_saron_hodirs_protective_gaze : public SpellScriptLoader //
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FLASH_FREEZE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FLASH_FREEZE });
}
bool CanApply(Unit* target)
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
index d662578b9d5..e023be23cd4 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
@@ -15,14 +15,20 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "ScriptMgr.h"
+#include "AreaBoundary.h"
+#include "CreatureAI.h"
+#include "GameObject.h"
#include "InstanceScript.h"
-#include "Vehicle.h"
+#include "Item.h"
+#include "Map.h"
#include "Player.h"
-#include "ScriptedCreature.h"
-#include "ScriptMgr.h"
+#include "Spell.h"
#include "SpellScript.h"
-#include "WorldPacket.h"
+#include "TemporarySummon.h"
#include "ulduar.h"
+#include "Vehicle.h"
+#include "WorldPacket.h"
static BossBoundaryData const boundaries =
{
@@ -885,7 +891,7 @@ class instance_ulduar : public InstanceMapScript
return 0;
}
- bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const*, Unit const* /* = NULL */, uint32 /* = 0 */) override
+ bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const*, Unit const* /* = nullptr */, uint32 /* = 0 */) override
{
switch (criteriaId)
{
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
index 15964534640..4548eac4b97 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
@@ -18,6 +18,8 @@
#ifndef DEF_ULDUAR_H
#define DEF_ULDUAR_H
+#include "CreatureAIImpl.h"
+
#define UlduarScriptName "instance_ulduar"
#define DataHeader "UU"
@@ -490,8 +492,8 @@ enum YoggSaronIllusions
STORMWIND_ILLUSION = 2,
};
-template<class AI, class T>
-AI* GetUlduarAI(T* obj)
+template <class AI, class T>
+inline AI* GetUlduarAI(T* obj)
{
return GetInstanceAI<AI, T>(obj, UlduarScriptName);
}
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 7eb24fb5dd4..6300fa0e9c1 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
@@ -23,9 +23,12 @@ SDCategory: Utgarde Keep
EndScriptData */
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
+#include "Spell.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
#include "utgarde_keep.h"
enum Yells
@@ -406,7 +409,7 @@ class npc_ingvar_throw_dummy : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_ingvar_throw_dummyAI(creature);
+ return GetUtgardeKeepAI<npc_ingvar_throw_dummyAI>(creature);
}
};
@@ -449,9 +452,7 @@ class spell_ingvar_woe_strike : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_WOE_STRIKE_EFFECT))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_WOE_STRIKE_EFFECT });
}
bool CheckProc(ProcEventInfo& eventInfo)
@@ -466,7 +467,7 @@ class spell_ingvar_woe_strike : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- GetTarget()->CastSpell(eventInfo.GetActor(), SPELL_WOE_STRIKE_EFFECT, true, NULL, aurEff);
+ GetTarget()->CastSpell(eventInfo.GetActor(), SPELL_WOE_STRIKE_EFFECT, true, nullptr, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
index 6c798de3db6..b10a6a97e04 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp
@@ -23,9 +23,12 @@ SDCategory: Utgarde Keep
EndScriptData */
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
+#include "SpellAuras.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
#include "utgarde_keep.h"
enum KelsethEncounter
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
index 27da9c2e8bf..3834f5d7f15 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp
@@ -23,6 +23,8 @@ SDCategory: Utgarde Keep
EndScriptData */
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
#include "utgarde_keep.h"
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp
index ed8f349edd6..90269688eca 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp
@@ -16,7 +16,10 @@
*/
#include "ScriptMgr.h"
+#include "Creature.h"
+#include "GameObject.h"
#include "InstanceScript.h"
+#include "Map.h"
#include "utgarde_keep.h"
DoorData const doorData[] =
@@ -85,6 +88,8 @@ class instance_utgarde_keep : public InstanceMapScript
void OnGameObjectCreate(GameObject* go) override
{
+ InstanceScript::OnGameObjectCreate(go);
+
switch (go->GetEntry())
{
case GO_BELLOW_1:
@@ -123,23 +128,6 @@ class instance_utgarde_keep : public InstanceMapScript
Forges[2].AnvilGUID = go->GetGUID();
HandleGameObject(ObjectGuid::Empty, Forges[2].Event != NOT_STARTED, go);
break;
- case GO_GIANT_PORTCULLIS_1:
- case GO_GIANT_PORTCULLIS_2:
- AddDoor(go, true);
- break;
- default:
- break;
- }
- }
-
- void OnGameObjectRemove(GameObject* go) override
- {
- switch (go->GetEntry())
- {
- case GO_GIANT_PORTCULLIS_1:
- case GO_GIANT_PORTCULLIS_2:
- AddDoor(go, false);
- break;
default:
break;
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp
index be70f79f2dc..2fa0fc38932 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp
@@ -16,10 +16,13 @@
*/
#include "ScriptMgr.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
#include "ScriptedCreature.h"
-#include "utgarde_keep.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
+#include "utgarde_keep.h"
uint32 ForgeSearch[3] =
{
@@ -130,9 +133,7 @@ class spell_ticking_time_bomb : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_TICKING_TIME_BOMB_EXPLODE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_TICKING_TIME_BOMB_EXPLODE });
}
void HandleOnEffectRemove(AuraEffect const* /* aurEff */, AuraEffectHandleModes /* mode */)
@@ -169,9 +170,7 @@ class spell_fixate : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FIXATE_TRIGGER))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FIXATE_TRIGGER });
}
void HandleScriptEffect(SpellEffIndex /*effIndex*/)
@@ -208,9 +207,7 @@ class spell_uk_second_wind : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SECOND_WIND_TRIGGER))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SECOND_WIND_TRIGGER });
}
bool CheckProc(ProcEventInfo& eventInfo)
@@ -342,7 +339,7 @@ class npc_enslaved_proto_drake : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_enslaved_proto_drakeAI(creature);
+ return GetUtgardeKeepAI<npc_enslaved_proto_drakeAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h
index 81a357e4cff..ac8304f9fd5 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h
@@ -18,6 +18,8 @@
#ifndef UTGARDE_KEEP_H_
#define UTGARDE_KEEP_H_
+#include "CreatureAIImpl.h"
+
#define UKScriptName "instance_utgarde_keep"
#define DataHeader "UK"
@@ -85,10 +87,10 @@ struct ForgeInfo
uint32 Event;
};
-template<class AI>
-AI* GetUtgardeKeepAI(Creature* creature)
+template <class AI, class T>
+inline AI* GetUtgardeKeepAI(T* obj)
{
- return GetInstanceAI<AI>(creature, UKScriptName);
+ return GetInstanceAI<AI>(obj, UKScriptName);
}
#endif // UTGARDE_KEEP_H_
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
index f4eec389275..60426fe448f 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
@@ -16,11 +16,15 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "InstanceScript.h"
+#include "GameObject.h"
#include "GameObjectAI.h"
-#include "utgarde_pinnacle.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ScriptedCreature.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
+#include "TemporarySummon.h"
+#include "utgarde_pinnacle.h"
enum Spells
{
@@ -620,9 +624,7 @@ class spell_palehoof_crazed_effect : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_CRAZED_TAUNT))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_CRAZED_TAUNT });
}
void HandleScriptEffect(SpellEffIndex /* effIndex */)
@@ -654,9 +656,7 @@ class spell_palehoof_awaken_subboss : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ORB_CHANNEL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_ORB_CHANNEL });
}
void HandleScript(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index 1e2da34120e..4ba41149c45 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -16,13 +16,16 @@
*/
#include "ScriptMgr.h"
+#include "GridNotifiers.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "MoveSplineInit.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "SpellAuras.h"
#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "utgarde_pinnacle.h"
-#include "GridNotifiers.h"
-#include "Player.h"
-#include "MoveSplineInit.h"
enum Spells
{
@@ -322,7 +325,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<boss_skadiAI>(creature);
+ return GetUtgardePinnacleAI<boss_skadiAI>(creature);
}
};
@@ -436,7 +439,7 @@ public:
}
}
- void SpellHit(Unit* /*caster*/, const SpellInfo* spell) override
+ void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_LAUNCH_HARPOON)
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
@@ -455,7 +458,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_graufAI>(creature);
+ return GetUtgardePinnacleAI<npc_graufAI>(creature);
}
};
@@ -551,7 +554,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_ymirjar_warriorAI>(creature);
+ return GetUtgardePinnacleAI<npc_ymirjar_warriorAI>(creature);
}
};
@@ -582,7 +585,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_ymirjar_witch_doctorAI>(creature);
+ return GetUtgardePinnacleAI<npc_ymirjar_witch_doctorAI>(creature);
}
};
@@ -619,7 +622,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_ymirjar_harpoonerAI>(creature);
+ return GetUtgardePinnacleAI<npc_ymirjar_harpoonerAI>(creature);
}
};
@@ -634,9 +637,7 @@ class spell_freezing_cloud_area_right : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FREEZING_CLOUD))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FREEZING_CLOUD });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -673,9 +674,7 @@ class spell_freezing_cloud_area_left : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FREEZING_CLOUD))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FREEZING_CLOUD });
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -821,9 +820,7 @@ class spell_skadi_poisoned_spear : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_POISONED_SPEAR_PERIODIC))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_POISONED_SPEAR_PERIODIC });
}
void HandleScript(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
index 7eff09338fc..a9337ffcb15 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
@@ -16,9 +16,14 @@
*/
#include "ScriptMgr.h"
+#include "GameObject.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
+#include "TemporarySummon.h"
#include "utgarde_pinnacle.h"
enum Spells
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
index a55ddfa6bdd..83b25986222 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp
@@ -16,10 +16,12 @@
*/
#include "ScriptMgr.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
-#include "utgarde_pinnacle.h"
#include "SpellInfo.h"
-#include "SpellScript.h"
+#include "TemporarySummon.h"
+#include "utgarde_pinnacle.h"
enum Spells
{
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp
index 2afe31455ce..c5e6ea0f80b 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp
@@ -16,7 +16,10 @@
*/
#include "ScriptMgr.h"
+#include "AreaBoundary.h"
+#include "GameObject.h"
#include "InstanceScript.h"
+#include "Map.h"
#include "utgarde_pinnacle.h"
BossBoundaryData const boundaries =
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
index f4d217c74f3..30fbc460190 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
@@ -18,6 +18,8 @@
#ifndef UTGARDE_PINNACLE_H_
#define UTGARDE_PINNACLE_H_
+#include "CreatureAIImpl.h"
+
#define UPScriptName "instance_utgarde_pinnacle"
#define DataHeader "UP"
@@ -95,8 +97,8 @@ enum UPGameObjectIds
GO_KING_YMIRON_DOOR = 192174
};
-template<class AI, class T>
-AI* GetUtgardePinnacleAI(T* obj)
+template <class AI, class T>
+inline AI* GetUtgardePinnacleAI(T* obj)
{
return GetInstanceAI<AI>(obj, UPScriptName);
}
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp
index 71ee6285074..03ee2289818 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp
@@ -138,7 +138,7 @@ class boss_archavon : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_archavonAI(creature);
+ return GetVaultOfArchavonAI<boss_archavonAI>(creature);
}
};
@@ -212,7 +212,7 @@ class npc_archavon_warder : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_archavon_warderAI(creature);
+ return GetVaultOfArchavonAI<npc_archavon_warderAI>(creature);
}
};
@@ -228,12 +228,13 @@ class spell_archavon_rock_shards : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_ROCK_SHARDS_VISUAL_L)
- || !sSpellMgr->GetSpellInfo(SPELL_ROCK_SHARDS_VISUAL_R)
- || !sSpellMgr->GetSpellInfo(SPELL_ROCK_SHARDS_DAMAGE_L)
- || !sSpellMgr->GetSpellInfo(SPELL_ROCK_SHARDS_DAMAGE_R))
- return false;
- return true;
+ return ValidateSpellInfo(
+ {
+ SPELL_ROCK_SHARDS_VISUAL_L,
+ SPELL_ROCK_SHARDS_VISUAL_R,
+ SPELL_ROCK_SHARDS_DAMAGE_L,
+ SPELL_ROCK_SHARDS_DAMAGE_R
+ });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -242,12 +243,12 @@ class spell_archavon_rock_shards : public SpellScriptLoader
for (uint8 i = 0; i < 3; ++i)
{
- caster->CastSpell((Unit*)NULL, SPELL_ROCK_SHARDS_VISUAL_L, true);
- caster->CastSpell((Unit*)NULL, SPELL_ROCK_SHARDS_VISUAL_R, true);
+ caster->CastSpell((Unit*)nullptr, SPELL_ROCK_SHARDS_VISUAL_L, true);
+ caster->CastSpell((Unit*)nullptr, SPELL_ROCK_SHARDS_VISUAL_R, true);
}
- caster->CastSpell((Unit*)NULL, SPELL_ROCK_SHARDS_DAMAGE_L, true);
- caster->CastSpell((Unit*)NULL, SPELL_ROCK_SHARDS_DAMAGE_R, true);
+ caster->CastSpell((Unit*)nullptr, SPELL_ROCK_SHARDS_DAMAGE_L, true);
+ caster->CastSpell((Unit*)nullptr, SPELL_ROCK_SHARDS_DAMAGE_R, true);
}
void Register() override
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
index 20a86e2c8f7..aa7bd9db9ab 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp
@@ -16,6 +16,8 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
#include "SpellAuras.h"
#include "vault_of_archavon.h"
@@ -92,7 +94,7 @@ class boss_emalon : public CreatureScript
{
BossAI::JustSummoned(summoned);
- // AttackStart has NULL-check for victim
+ // AttackStart has nullptr-check for victim
if (summoned->AI())
summoned->AI()->AttackStart(me->GetVictim());
}
@@ -171,7 +173,7 @@ class boss_emalon : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_emalonAI(creature);
+ return GetVaultOfArchavonAI<boss_emalonAI>(creature);
}
};
@@ -277,7 +279,7 @@ class npc_tempest_minion : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_tempest_minionAI>(creature);
+ return GetVaultOfArchavonAI<npc_tempest_minionAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp
index 6141c2167d4..93faab4b854 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp
@@ -17,7 +17,6 @@
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
-#include "SpellAuraEffects.h"
#include "SpellScript.h"
#include "vault_of_archavon.h"
@@ -117,7 +116,7 @@ class boss_koralon : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_koralonAI(creature);
+ return GetVaultOfArchavonAI<boss_koralonAI>(creature);
}
};
@@ -181,7 +180,7 @@ class npc_flame_warder : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_flame_warderAI(creature);
+ return GetVaultOfArchavonAI<npc_flame_warderAI>(creature);
}
};
@@ -196,15 +195,13 @@ class spell_koralon_meteor_fists : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_METEOR_FISTS_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_METEOR_FISTS_DAMAGE });
}
void TriggerFists(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_METEOR_FISTS_DAMAGE, true, NULL, aurEff);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_METEOR_FISTS_DAMAGE, true, nullptr, aurEff);
}
void Register() override
@@ -273,15 +270,13 @@ class spell_flame_warder_meteor_fists : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FW_METEOR_FISTS_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FW_METEOR_FISTS_DAMAGE });
}
void TriggerFists(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_FW_METEOR_FISTS_DAMAGE, true, NULL, aurEff);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_FW_METEOR_FISTS_DAMAGE, true, nullptr, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
index 5747d20160d..0f785817e9b 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
@@ -16,6 +16,8 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
#include "vault_of_archavon.h"
@@ -117,7 +119,7 @@ class boss_toravon : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new boss_toravonAI(creature);
+ return GetVaultOfArchavonAI<boss_toravonAI>(creature);
}
};
@@ -172,7 +174,7 @@ class npc_frost_warder : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_frost_warderAI(creature);
+ return GetVaultOfArchavonAI<npc_frost_warderAI>(creature);
}
};
@@ -233,7 +235,7 @@ public:
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_frozen_orbAI(creature);
+ return GetVaultOfArchavonAI<npc_frozen_orbAI>(creature);
}
};
@@ -287,7 +289,7 @@ class npc_frozen_orb_stalker : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return GetInstanceAI<npc_frozen_orb_stalkerAI>(creature);
+ return GetVaultOfArchavonAI<npc_frozen_orb_stalkerAI>(creature);
}
};
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp
index a3bac4f39dd..f399449932f 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp
@@ -16,7 +16,9 @@
*/
#include "ScriptMgr.h"
+#include "Creature.h"
#include "InstanceScript.h"
+#include "Map.h"
#include "vault_of_archavon.h"
/* Vault of Archavon encounters:
@@ -29,7 +31,7 @@
class instance_vault_of_archavon : public InstanceMapScript
{
public:
- instance_vault_of_archavon() : InstanceMapScript("instance_vault_of_archavon", 624) { }
+ instance_vault_of_archavon() : InstanceMapScript(VoAScriptName, 624) { }
struct instance_vault_of_archavon_InstanceMapScript : public InstanceScript
{
@@ -84,13 +86,13 @@ class instance_vault_of_archavon : public InstanceMapScript
switch (type)
{
case DATA_ARCHAVON:
- ArchavonDeath = time(NULL);
+ ArchavonDeath = time(nullptr);
break;
case DATA_EMALON:
- EmalonDeath = time(NULL);
+ EmalonDeath = time(nullptr);
break;
case DATA_KORALON:
- KoralonDeath = time(NULL);
+ KoralonDeath = time(nullptr);
break;
default:
return true;
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h b/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h
index 3af77979c68..d4f252d3715 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h
+++ b/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h
@@ -18,6 +18,9 @@
#ifndef DEF_ARCHAVON_H
#define DEF_ARCHAVON_H
+#include "CreatureAIImpl.h"
+
+#define VoAScriptName "instance_vault_of_archavon"
#define DataHeader "VA"
uint32 const EncounterCount = 4;
@@ -49,4 +52,10 @@ enum VAAchievementSpells
SPELL_EARTH_WIND_FIRE_ACHIEVEMENT_CHECK = 68308,
};
+template <class AI, class T>
+inline AI* GetVaultOfArchavonAI(T* obj)
+{
+ return GetInstanceAI<AI>(obj, VoAScriptName);
+}
+
#endif
diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
index ebcc48f5ed8..bb7239d2cc5 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp
@@ -16,6 +16,7 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
#include "SpellScript.h"
#include "ScriptedCreature.h"
#include "violet_hold.h"
@@ -154,9 +155,7 @@ class spell_cyanigosa_arcane_vacuum : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_PLAYER))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_PLAYER });
}
void HandleScript(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp
index 1bc7223f08e..1346363a920 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp
@@ -16,6 +16,9 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
#include "violet_hold.h"
diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
index 3ce72ebd74f..12efea5646a 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp
@@ -16,8 +16,10 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
#include "ScriptedCreature.h"
-#include "SpellAuraEffects.h"
+#include "SpellAuras.h"
#include "SpellScript.h"
#include "violet_hold.h"
@@ -351,9 +353,7 @@ class spell_ichoron_merge : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SHRINK))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SHRINK });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -426,14 +426,15 @@ class spell_ichoron_splatter : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_WATER_GLOBULE_SUMMON_1)
- || !sSpellMgr->GetSpellInfo(SPELL_WATER_GLOBULE_SUMMON_2)
- || !sSpellMgr->GetSpellInfo(SPELL_WATER_GLOBULE_SUMMON_3)
- || !sSpellMgr->GetSpellInfo(SPELL_WATER_GLOBULE_SUMMON_4)
- || !sSpellMgr->GetSpellInfo(SPELL_WATER_GLOBULE_SUMMON_5)
- || !sSpellMgr->GetSpellInfo(SPELL_SHRINK))
- return false;
- return true;
+ return ValidateSpellInfo(
+ {
+ SPELL_WATER_GLOBULE_SUMMON_1,
+ SPELL_WATER_GLOBULE_SUMMON_2,
+ SPELL_WATER_GLOBULE_SUMMON_3,
+ SPELL_WATER_GLOBULE_SUMMON_4,
+ SPELL_WATER_GLOBULE_SUMMON_5,
+ SPELL_SHRINK
+ });
}
void PeriodicTick(AuraEffect const* /*aurEff*/)
diff --git a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp
index 1a25a0b69fe..4434b49a20c 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp
@@ -16,6 +16,7 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
#include "ScriptedCreature.h"
#include "violet_hold.h"
diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp
index cc1e96f78b2..8f8f875b530 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp
@@ -16,9 +16,10 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
#include "ScriptedCreature.h"
-#include "SpellScript.h"
#include "SpellAuraEffects.h"
+#include "SpellScript.h"
#include "violet_hold.h"
enum Spells
diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
index 367ab44b466..b55f9bfb91d 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
@@ -16,10 +16,12 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
+#include "MotionMaster.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "SpellInfo.h"
#include "SpellScript.h"
-#include "Player.h"
#include "violet_hold.h"
/*
@@ -261,9 +263,7 @@ class spell_xevozz_summon_players : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_MAGIC_PULL))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_MAGIC_PULL });
}
void HandleScript(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
index f26ca430538..7fe9068d684 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
@@ -16,6 +16,7 @@
*/
#include "ScriptMgr.h"
+#include "InstanceScript.h"
#include "ScriptedCreature.h"
#include "violet_hold.h"
diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
index a956c11c11b..cf5d256f3a6 100644
--- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
+++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
@@ -16,11 +16,15 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "GameObject.h"
#include "InstanceScript.h"
-#include "WorldPacket.h"
-#include "violet_hold.h"
+#include "Map.h"
+#include "MotionMaster.h"
#include "Player.h"
+#include "ScriptedCreature.h"
+#include "TemporarySummon.h"
+#include "violet_hold.h"
+#include "WorldPacket.h"
/*
* TODO:
@@ -65,7 +69,7 @@ Position const PortalIntroPositions[PortalIntroPositionsSize] = // sniff
uint32 const EncouterPortalsCount = PortalPositionsSize + PortalElitePositionsSize;
uint32 const MoraggPathSize = 3;
-G3D::Vector3 const MoraggPath[MoraggPathSize] = // sniff
+Position const MoraggPath[MoraggPathSize] = // sniff
{
{ 1893.895f, 728.1261f, 47.75016f },
{ 1892.997f, 738.4987f, 47.66684f },
@@ -73,7 +77,7 @@ G3D::Vector3 const MoraggPath[MoraggPathSize] = // sniff
};
uint32 const ErekemPathSize = 3;
-G3D::Vector3 const ErekemPath[ErekemPathSize] = // sniff
+Position const ErekemPath[ErekemPathSize] = // sniff
{
{ 1871.456f, 871.0361f, 43.41524f },
{ 1874.948f, 859.5452f, 43.33349f },
@@ -81,7 +85,7 @@ G3D::Vector3 const ErekemPath[ErekemPathSize] = // sniff
};
uint32 const ErekemGuardLeftPathSize = 3;
-G3D::Vector3 const ErekemGuardLeftPath[ErekemGuardLeftPathSize] = // sniff
+Position const ErekemGuardLeftPath[ErekemGuardLeftPathSize] = // sniff
{
{ 1853.752f, 862.4528f, 43.41614f },
{ 1866.931f, 854.577f, 43.3335f },
@@ -89,7 +93,7 @@ G3D::Vector3 const ErekemGuardLeftPath[ErekemGuardLeftPathSize] = // sniff
};
uint32 const ErekemGuardRightPathSize = 3;
-G3D::Vector3 const ErekemGuardRightPath[ErekemGuardRightPathSize] = // sniff
+Position const ErekemGuardRightPath[ErekemGuardRightPathSize] = // sniff
{
{ 1892.418f, 872.2831f, 43.41563f },
{ 1885.639f, 859.0245f, 43.3335f },
@@ -97,7 +101,7 @@ G3D::Vector3 const ErekemGuardRightPath[ErekemGuardRightPathSize] = // sniff
};
uint32 const IchoronPathSize = 5;
-G3D::Vector3 const IchoronPath[IchoronPathSize] = // sniff
+Position const IchoronPath[IchoronPathSize] = // sniff
{
{ 1942.041f, 749.5228f, 30.95229f },
{ 1930.571f, 762.9065f, 31.98814f },
@@ -107,7 +111,7 @@ G3D::Vector3 const IchoronPath[IchoronPathSize] = // sniff
};
uint32 const LavanthorPathSize = 3;
-G3D::Vector3 const LavanthorPath[LavanthorPathSize] = // sniff
+Position const LavanthorPath[LavanthorPathSize] = // sniff
{
{ 1844.557f, 748.7083f, 38.74205f },
{ 1854.618f, 761.5295f, 38.65631f },
@@ -115,7 +119,7 @@ G3D::Vector3 const LavanthorPath[LavanthorPathSize] = // sniff
};
uint32 const XevozzPathSize = 3;
-G3D::Vector3 const XevozzPath[XevozzPathSize] = // sniff
+Position const XevozzPath[XevozzPathSize] = // sniff
{
{ 1908.417f, 845.8502f, 38.71947f },
{ 1905.557f, 841.3157f, 38.65529f },
@@ -123,7 +127,7 @@ G3D::Vector3 const XevozzPath[XevozzPathSize] = // sniff
};
uint32 const ZuramatPathSize = 3;
-G3D::Vector3 const ZuramatPath[ZuramatPathSize] = // sniff
+Position const ZuramatPath[ZuramatPathSize] = // sniff
{
{ 1934.151f, 860.9463f, 47.29499f },
{ 1927.085f, 852.1342f, 47.19214f },
@@ -330,11 +334,11 @@ class instance_violet_hold : public InstanceMapScript
{
case DATA_1ST_BOSS:
if (state == DONE)
- UpdateEncounterState(ENCOUNTER_CREDIT_KILL_CREATURE, NPC_EREKEM, nullptr);
+ UpdateEncounterStateForKilledCreature(NPC_EREKEM, nullptr);
break;
case DATA_2ND_BOSS:
if (state == DONE)
- UpdateEncounterState(ENCOUNTER_CREDIT_KILL_CREATURE, NPC_MORAGG, nullptr);
+ UpdateEncounterStateForKilledCreature(NPC_MORAGG, nullptr);
break;
case DATA_CYANIGOSA:
if (state == DONE)
diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp
index 4aa2a1aabb5..7f8d987ef31 100644
--- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp
+++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp
@@ -15,14 +15,18 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "Player.h"
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "GameObject.h"
#include "GameObjectAI.h"
-#include "ScriptedGossip.h"
+#include "InstanceScript.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "Player.h"
#include "ScriptedEscortAI.h"
+#include "ScriptedGossip.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "violet_hold.h"
/*
@@ -156,7 +160,7 @@ enum Sinclari
SAY_SINCLARI_PORTAL_KEEPER = 2
};
-G3D::Vector3 const FirstPortalWPs[6] =
+Position const FirstPortalWPs[] =
{
{1877.670288f, 842.280273f, 43.333591f},
{1877.338867f, 834.615356f, 38.762287f},
@@ -167,7 +171,7 @@ G3D::Vector3 const FirstPortalWPs[6] =
//{1825.736084f, 807.305847f, 44.363785f}
};
-G3D::Vector3 const SecondPortalFirstWPs[9] =
+Position const SecondPortalFirstWPs[] =
{
{1902.561401f, 853.334656f, 47.106117f},
{1895.486084f, 855.376404f, 44.334591f},
@@ -181,7 +185,7 @@ G3D::Vector3 const SecondPortalFirstWPs[9] =
//{1825.736084f, 807.305847f, 44.363785f}
};
-G3D::Vector3 const SecondPortalSecondWPs[8] =
+Position const SecondPortalSecondWPs[] =
{
{1929.392212f, 837.614990f, 47.136166f},
{1928.290649f, 824.750427f, 45.474411f},
@@ -194,7 +198,7 @@ G3D::Vector3 const SecondPortalSecondWPs[8] =
//{1825.736084f, 807.305847f, 44.363785f}
};
-G3D::Vector3 const ThirdPortalWPs[8] =
+Position const ThirdPortalWPs[] =
{
{1934.049438f, 815.778503f, 52.408699f},
{1928.290649f, 824.750427f, 45.474411f},
@@ -207,7 +211,7 @@ G3D::Vector3 const ThirdPortalWPs[8] =
//{1825.736084f, 807.305847f, 44.363785f}
};
-G3D::Vector3 const FourthPortalWPs[9] =
+Position const FourthPortalWPs[] =
{
{1921.658447f, 761.657043f, 50.866741f},
{1910.559814f, 755.780457f, 47.701447f},
@@ -221,7 +225,7 @@ G3D::Vector3 const FourthPortalWPs[9] =
//{1827.100342f, 801.605957f, 44.363358f}
};
-G3D::Vector3 const FifthPortalWPs[6] =
+Position const FifthPortalWPs[] =
{
{1887.398804f, 763.633240f, 47.666851f},
{1879.020386f, 775.396973f, 38.705990f},
@@ -232,7 +236,7 @@ G3D::Vector3 const FifthPortalWPs[6] =
//{1827.100342f, 801.605957f, 44.363358f}
};
-G3D::Vector3 const SixthPoralWPs[4] =
+Position const SixthPortalWPs[] =
{
{1888.861084f, 805.074768f, 38.375790f},
{1869.793823f, 804.135804f, 38.647018f},
@@ -241,13 +245,12 @@ G3D::Vector3 const SixthPoralWPs[4] =
//{1826.889648f, 803.929993f, 44.363239f}
};
-G3D::Vector3 const DefaultPortalWPs[1] =
+Position const DefaultPortalWPs[] =
{
{ 1843.567017f, 804.288208f, 44.139091f }
};
-uint32 const SaboteurMoraggPathSize = 5;
-G3D::Vector3 const SaboteurMoraggPath[SaboteurMoraggPathSize] = // sniff
+Position const SaboteurMoraggPath[] = // sniff
{
{ 1886.251f, 803.0743f, 38.42326f },
{ 1885.71f, 799.8929f, 38.37241f },
@@ -256,8 +259,7 @@ G3D::Vector3 const SaboteurMoraggPath[SaboteurMoraggPathSize] = // sniff
{ 1894.603f, 739.9231f, 47.66684f },
};
-uint32 const SaboteurErekemPathSize = 5;
-G3D::Vector3 const SaboteurErekemPath[SaboteurErekemPathSize] = // sniff
+Position const SaboteurErekemPath[] = // sniff
{
{ 1886.251f, 803.0743f, 38.42326f },
{ 1881.047f, 829.6866f, 38.64856f },
@@ -266,24 +268,21 @@ G3D::Vector3 const SaboteurErekemPath[SaboteurErekemPathSize] = // sniff
{ 1873.747f, 864.1373f, 43.33349f }
};
-uint32 const SaboteurIchoronPathSize = 3;
-G3D::Vector3 const SaboteurIchoronPath[SaboteurIchoronPathSize] = // sniff
+Position const SaboteurIchoronPath[] = // sniff
{
{ 1886.251f, 803.0743f, 38.42326f },
{ 1888.672f, 801.2348f, 38.42305f },
{ 1901.987f, 793.3254f, 38.65126f }
};
-uint32 const SaboteurLavanthorPathSize = 3;
-G3D::Vector3 const SaboteurLavanthorPath[SaboteurLavanthorPathSize] = // sniff
+Position const SaboteurLavanthorPath[] = // sniff
{
{ 1886.251f, 803.0743f, 38.42326f },
{ 1867.925f, 778.8035f, 38.64702f },
{ 1853.304f, 759.0161f, 38.65761f }
};
-uint32 const SaboteurXevozzPathSize = 4;
-G3D::Vector3 const SaboteurXevozzPath[SaboteurXevozzPathSize] = // sniff
+Position const SaboteurXevozzPath[] = // sniff
{
{ 1886.251f, 803.0743f, 38.42326f },
{ 1889.096f, 810.0487f, 38.43871f },
@@ -291,8 +290,7 @@ G3D::Vector3 const SaboteurXevozzPath[SaboteurXevozzPathSize] = // sniff
{ 1906.666f, 842.3111f, 38.63351f }
};
-uint32 const SaboteurZuramatPathSize = 7;
-G3D::Vector3 const SaboteurZuramatPath[SaboteurZuramatPathSize] = // sniff
+Position const SaboteurZuramatPath[] = // sniff
{
{ 1886.251f, 803.0743f, 38.42326f },
{ 1889.69f, 807.0032f, 38.39914f },
@@ -543,41 +541,35 @@ class npc_azure_saboteur : public CreatureScript
_bossId = _instance->GetData(DATA_2ND_BOSS);
}
- void StartMovement()
+ template <size_t N>
+ void StartSmoothPath(Position const (&path)[N])
{
- uint32 pathSize = 0;
- G3D::Vector3 const* path = nullptr;
+ me->GetMotionMaster()->MoveSmoothPath(POINT_INTRO, &path[0], N, false);
+ }
+ void StartMovement()
+ {
switch (_bossId)
{
case DATA_MORAGG:
- pathSize = SaboteurMoraggPathSize;
- path = SaboteurMoraggPath;
+ StartSmoothPath(SaboteurMoraggPath);
break;
case DATA_EREKEM:
- pathSize = SaboteurErekemPathSize;
- path = SaboteurErekemPath;
+ StartSmoothPath(SaboteurErekemPath);
break;
case DATA_ICHORON:
- pathSize = SaboteurIchoronPathSize;
- path = SaboteurIchoronPath;
+ StartSmoothPath(SaboteurIchoronPath);
break;
case DATA_LAVANTHOR:
- pathSize = SaboteurLavanthorPathSize;
- path = SaboteurLavanthorPath;
+ StartSmoothPath(SaboteurLavanthorPath);
break;
case DATA_XEVOZZ:
- pathSize = SaboteurXevozzPathSize;
- path = SaboteurXevozzPath;
+ StartSmoothPath(SaboteurXevozzPath);
break;
case DATA_ZURAMAT:
- pathSize = SaboteurZuramatPathSize;
- path = SaboteurZuramatPath;
+ StartSmoothPath(SaboteurZuramatPath);
break;
}
-
- if (path)
- me->GetMotionMaster()->MoveSmoothPath(POINT_INTRO, path, pathSize, false);
}
void Reset() override
@@ -849,58 +841,57 @@ struct violet_hold_trashAI : public npc_escortAI
_scheduler.CancelAll();
}
+ template <size_t N>
+ Position const* GetPathAndInitLastWaypointFrom(Position const (&path)[N])
+ {
+ _lastWaypointId = N - 1;
+ return &path[0];
+ }
+
void SetData(uint32 type, uint32 data) override
{
if (type == DATA_PORTAL_LOCATION)
{
- G3D::Vector3 const* path = nullptr;
+ Position const* path = nullptr;
switch (data)
{
case 0:
- _lastWaypointId = 5;
- path = FirstPortalWPs;
+ path = GetPathAndInitLastWaypointFrom(FirstPortalWPs);
break;
case 7:
switch (urand(0, 1))
{
case 0:
- _lastWaypointId = 8;
- path = SecondPortalFirstWPs;
+ path = GetPathAndInitLastWaypointFrom(SecondPortalFirstWPs);
break;
case 1:
- _lastWaypointId = 7;
- path = SecondPortalSecondWPs;
+ path = GetPathAndInitLastWaypointFrom(SecondPortalSecondWPs);
break;
}
break;
case 2:
- _lastWaypointId = 7;
- path = ThirdPortalWPs;
+ path = GetPathAndInitLastWaypointFrom(ThirdPortalWPs);
break;
case 6:
- _lastWaypointId = 8;
- path = FourthPortalWPs;
+ path = GetPathAndInitLastWaypointFrom(FourthPortalWPs);
break;
case 1:
- _lastWaypointId = 5;
- path = FifthPortalWPs;
+ path = GetPathAndInitLastWaypointFrom(FifthPortalWPs);
break;
case 5:
- _lastWaypointId = 3;
- path = SixthPoralWPs;
+ path = GetPathAndInitLastWaypointFrom(SixthPortalWPs);
break;
default:
- _lastWaypointId = 0;
- path = DefaultPortalWPs;
+ path = GetPathAndInitLastWaypointFrom(DefaultPortalWPs);
break;
}
if (path)
{
for (uint32 i = 0; i <= _lastWaypointId; i++)
- AddWaypoint(i, path[i].x + irand(-1, 1), path[i].y + irand(-1, 1), path[i].z, 0);
- me->SetHomePosition(path[_lastWaypointId].x, path[_lastWaypointId].y, path[_lastWaypointId].z, float(M_PI));
+ AddWaypoint(i, path[i].GetPositionX() + irand(-1, 1), path[i].GetPositionY() + irand(-1, 1), path[i].GetPositionZ(), 0);
+ me->SetHomePosition(path[_lastWaypointId].GetPositionX(), path[_lastWaypointId].GetPositionY(), path[_lastWaypointId].GetPositionZ(), float(M_PI));
}
Start(true, true);
@@ -1299,7 +1290,7 @@ class npc_violet_hold_defense_system : public CreatureScript
CreatureAI* GetAI(Creature* creature) const override
{
- return new npc_violet_hold_defense_systemAI(creature);
+ return GetVioletHoldAI<npc_violet_hold_defense_systemAI>(creature);
}
};
@@ -1404,9 +1395,7 @@ class spell_violet_hold_teleport_player : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_TELEPORT_PLAYER_EFFECT))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_TELEPORT_PLAYER_EFFECT });
}
void HandleScript(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.h b/src/server/scripts/Northrend/VioletHold/violet_hold.h
index 4238634d8c1..e6095bd5c01 100644
--- a/src/server/scripts/Northrend/VioletHold/violet_hold.h
+++ b/src/server/scripts/Northrend/VioletHold/violet_hold.h
@@ -18,6 +18,8 @@
#ifndef VIOLET_HOLD_H_
#define VIOLET_HOLD_H_
+#include "CreatureAIImpl.h"
+
#define VioletHoldScriptName "instance_violet_hold"
#define DataHeader "VH"
@@ -151,7 +153,7 @@ enum VHInstanceMisc
POINT_INTRO = 1
};
-template<class AI, class T>
+template <class AI, class T>
inline AI* GetVioletHoldAI(T* obj)
{
return GetInstanceAI<AI>(obj, VioletHoldScriptName);
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index d67df0875aa..2e62c09bc17 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -34,15 +34,19 @@ npc_lurgglbr
EndContentData */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "ScriptedGossip.h"
+#include "GameObject.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ObjectMgr.h"
+#include "Player.h"
#include "ScriptedEscortAI.h"
#include "ScriptedFollowerAI.h"
-#include "Player.h"
+#include "ScriptedGossip.h"
+#include "SpellAuraEffects.h"
#include "SpellInfo.h"
-#include "WorldSession.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
+#include "TemporarySummon.h"
+#include "WorldSession.h"
/*######
## npc_sinkhole_kill_credit
@@ -87,7 +91,7 @@ public:
Initialize();
}
- void SpellHit(Unit* caster, const SpellInfo* spell) override
+ void SpellHit(Unit* caster, SpellInfo const* spell) override
{
if (phase || spell->Id != SPELL_SET_CART)
return;
@@ -463,7 +467,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
- if (GameObject* go_caribou = me->GetMap()->GetGameObject(go_caribouGUID))
+ if (GameObject* go_caribou = ObjectAccessor::GetGameObject(*me, go_caribouGUID))
go_caribou->SetLootState(GO_JUST_DEACTIVATED);
if (TempSummon* summon = me->ToTempSummon())
@@ -472,7 +476,7 @@ public:
if (Player* player = temp->ToPlayer())
player->KilledMonsterCredit(me->GetEntry());
- if (GameObject* go_caribou = me->GetMap()->GetGameObject(go_caribouGUID))
+ if (GameObject* go_caribou = ObjectAccessor::GetGameObject(*me, go_caribouGUID))
go_caribou->SetGoState(GO_STATE_READY);
}
@@ -516,7 +520,7 @@ public:
break;
case 7:
{
- GameObject* go_caribou = NULL;
+ GameObject* go_caribou = nullptr;
for (uint8 i = 0; i < CaribouTrapsNum; ++i)
{
go_caribou = me->FindNearestGameObject(CaribouTraps[i], 5.0f);
@@ -1457,7 +1461,7 @@ public:
AttackStart(who);
}
- void SpellHit(Unit* pCaster, const SpellInfo* pSpell) override
+ void SpellHit(Unit* pCaster, SpellInfo const* pSpell) override
{
if (pSpell->Id == SPELL_ARCANE_CHAINS && pCaster->GetTypeId() == TYPEID_PLAYER && !HealthAbovePct(50) && !bEnslaved)
{
@@ -1567,7 +1571,7 @@ public:
{
}
- void SpellHit(Unit* unit, const SpellInfo* spell) override
+ void SpellHit(Unit* unit, SpellInfo const* spell) override
{
if (spell->Id == SPELL_NEURAL_NEEDLE && unit->GetTypeId() == TYPEID_PLAYER)
if (Player* player = unit->ToPlayer())
@@ -1645,7 +1649,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
- if (Player* player=GetPlayerForEscort())
+ if (Player* player = GetPlayerForEscort())
player->FailQuest(QUEST_ESCAPING_THE_MIST);
}
@@ -1860,7 +1864,7 @@ public:
{
Initialize();
- GameObject* pTrap = NULL;
+ GameObject* pTrap = nullptr;
for (uint8 i = 0; i < MammothTrapsNum; ++i)
{
pTrap = me->FindNearestGameObject(MammothTraps[i], 11.0f);
@@ -1899,7 +1903,7 @@ public:
me->DisappearAndDie();
- GameObject* pTrap = NULL;
+ GameObject* pTrap = nullptr;
for (uint8 i = 0; i < MammothTrapsNum; ++i)
{
pTrap = me->FindNearestGameObject(MammothTraps[i], 11.0f);
@@ -2160,9 +2164,9 @@ enum HiddenCultist
SAY_HIDDEN_CULTIST_4 = 3
};
-const char* GOSSIP_ITEM_TOM_HEGGER = "What do you know about the Cult of the Damned?";
-const char* GOSSIP_ITEM_GUARD_MITCHELLS = "How long have you worked for the Cult of the Damned?";
-const char* GOSSIP_ITEM_SALTY_JOHN_THORPE = "I have a reason to believe you're involved in the cultist activity";
+char const* GOSSIP_ITEM_TOM_HEGGER = "What do you know about the Cult of the Damned?";
+char const* GOSSIP_ITEM_GUARD_MITCHELLS = "How long have you worked for the Cult of the Damned?";
+char const* GOSSIP_ITEM_SALTY_JOHN_THORPE = "I have a reason to believe you're involved in the cultist activity";
class npc_hidden_cultist : public CreatureScript
{
@@ -2290,7 +2294,7 @@ public:
bool GossipHello(Player* player) override
{
uint32 uiGossipText = 0;
- const char* charGossipItem;
+ char const* charGossipItem;
switch (me->GetEntry())
{
@@ -2365,7 +2369,7 @@ public:
{
if (GetTarget()->isDead())
if (Unit* caster = GetCaster())
- caster->CastSpell(NULL, SPELL_WINDSOUL_CREDT);
+ caster->CastSpell(nullptr, SPELL_WINDSOUL_CREDT);
}
void Register() override
diff --git a/src/server/scripts/Northrend/zone_crystalsong_forest.cpp b/src/server/scripts/Northrend/zone_crystalsong_forest.cpp
index 4dadebb1cda..b58ac0ac144 100644
--- a/src/server/scripts/Northrend/zone_crystalsong_forest.cpp
+++ b/src/server/scripts/Northrend/zone_crystalsong_forest.cpp
@@ -24,8 +24,8 @@ SDCategory: CrystalsongForest
Script Data End */
#include "ScriptMgr.h"
+#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
-#include "Player.h"
/*******************************************************
* npc_warmage_violetstand
@@ -97,7 +97,6 @@ public:
if (Creature* pOrb = ObjectAccessor::GetCreature(*me, targetGUID))
DoCast(pOrb, SPELL_TRANSITUS_SHIELD_BEAM);
-
}
};
diff --git a/src/server/scripts/Northrend/zone_dalaran.cpp b/src/server/scripts/Northrend/zone_dalaran.cpp
index 0e51de2382a..a8920ff3a07 100644
--- a/src/server/scripts/Northrend/zone_dalaran.cpp
+++ b/src/server/scripts/Northrend/zone_dalaran.cpp
@@ -24,9 +24,13 @@ SDCategory: Dalaran
Script Data End */
#include "ScriptMgr.h"
+#include "DatabaseEnv.h"
+#include "Mail.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
-#include "Player.h"
#include "WorldSession.h"
/*******************************************************
@@ -165,17 +169,16 @@ class npc_minigob_manabonk : public CreatureScript
Player* SelectTargetInDalaran()
{
- std::list<Player*> PlayerInDalaranList;
- PlayerInDalaranList.clear();
+ std::vector<Player*> PlayerInDalaranList;
- Map::PlayerList const &players = me->GetMap()->GetPlayers();
+ Map::PlayerList const& players = me->GetMap()->GetPlayers();
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
if (Player* player = itr->GetSource()->ToPlayer())
if (player->GetZoneId() == ZONE_DALARAN && !player->IsFlying() && !player->IsMounted() && !player->IsGameMaster())
PlayerInDalaranList.push_back(player);
if (PlayerInDalaranList.empty())
- return NULL;
+ return nullptr;
return Trinity::Containers::SelectRandomContainerElement(PlayerInDalaranList);
}
diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp
index 0d718c6b365..e8b70b98010 100644
--- a/src/server/scripts/Northrend/zone_dragonblight.cpp
+++ b/src/server/scripts/Northrend/zone_dragonblight.cpp
@@ -28,14 +28,16 @@ npc_alexstrasza_wr_gate
EndContentData */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
+#include "CombatAI.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ObjectMgr.h"
+#include "Player.h"
+#include "ScriptedEscortAI.h"
#include "ScriptedGossip.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
-#include "ScriptedEscortAI.h"
#include "Vehicle.h"
-#include "CombatAI.h"
-#include "Player.h"
/*#####
# npc_commander_eligor_dawnbringer
@@ -640,7 +642,7 @@ class npc_torturer_lecraft : public CreatureScript
Talk (SAY_AGGRO, player);
}
- void SpellHit(Unit* caster, const SpellInfo* spell) override
+ void SpellHit(Unit* caster, SpellInfo const* spell) override
{
if (spell->Id != SPELL_HIGH_EXECUTORS_BRANDING_IRON)
return;
@@ -715,7 +717,7 @@ class at_nearby_messenger_torvus : public AreaTriggerScript
public:
at_nearby_messenger_torvus() : AreaTriggerScript("at_nearby_messenger_torvus") { }
- bool OnTrigger(Player* player, const AreaTriggerEntry* /*at*/) override
+ bool OnTrigger(Player* player, AreaTriggerEntry const* /*at*/) override
{
if (player->IsAlive())
if (Quest const* quest = sObjectMgr->GetQuestTemplate(QUEST_MESSAGE_FROM_THE_WEST))
diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
index fb724e0dc93..78be007420d 100644
--- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp
+++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
@@ -17,12 +17,15 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "ScriptedEscortAI.h"
+#include "CombatAI.h"
+#include "CreatureTextMgr.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "ScriptedEscortAI.h"
+#include "SpellInfo.h"
#include "SpellScript.h"
-#include "CreatureTextMgr.h"
-#include "CombatAI.h"
+#include "TemporarySummon.h"
/*######
## Quest 12027: Mr. Floppy's Perilous Adventure
@@ -300,7 +303,7 @@ public:
_gender = Data;
}
- void SpellHit(Unit* Caster, const SpellInfo* Spell) override
+ void SpellHit(Unit* Caster, SpellInfo const* Spell) override
{
if (Spell->Id == SPELL_OUTHOUSE_GROANS)
{
@@ -495,7 +498,7 @@ public:
me->DespawnOrUnsummon(_despawnTimer);
}
- void SpellHit(Unit* caster, const SpellInfo* spell) override
+ void SpellHit(Unit* caster, SpellInfo const* spell) override
{
if (spell->Id == SPELL_RENEW_SKIRMISHER && caster->GetTypeId() == TYPEID_PLAYER
&& caster->ToPlayer()->GetQuestStatus(QUEST_OVERWHELMED) == QUEST_STATUS_INCOMPLETE)
@@ -953,9 +956,7 @@ public:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_WARHEAD_Z_CHECK) || !sSpellMgr->GetSpellInfo(SPELL_WARHEAD_SEEKING_LUMBERSHIP) || !sSpellMgr->GetSpellInfo(SPELL_WARHEAD_FUSE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_WARHEAD_Z_CHECK, SPELL_WARHEAD_SEEKING_LUMBERSHIP, SPELL_WARHEAD_FUSE });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
@@ -997,9 +998,7 @@ public:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_PARACHUTE) || !sSpellMgr->GetSpellInfo(SPELL_TORPEDO_EXPLOSION))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_PARACHUTE, SPELL_TORPEDO_EXPLOSION });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp
index 595008c38a7..aeb2fa3e59a 100644
--- a/src/server/scripts/Northrend/zone_howling_fjord.cpp
+++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp
@@ -28,12 +28,14 @@ npc_apothecary_hanes
EndContentData */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "ScriptedGossip.h"
-#include "ScriptedEscortAI.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "ScriptedEscortAI.h"
+#include "ScriptedGossip.h"
#include "SpellInfo.h"
#include "SpellScript.h"
+#include "TemporarySummon.h"
/*######
## npc_apothecary_hanes
@@ -560,9 +562,7 @@ class spell_mindless_abomination_explosion_fx_master : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_RANDOM_CIRCUMFERENCE_POINT_POISON) || !sSpellMgr->GetSpellInfo(SPELL_COSMETIC_BLOOD_EXPLOSION_GREEN_LARGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_RANDOM_CIRCUMFERENCE_POINT_POISON, SPELL_COSMETIC_BLOOD_EXPLOSION_GREEN_LARGE });
}
void HandleScript(SpellEffIndex /*eff*/)
diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp
index 849a3d5568b..b7f60c8e9d2 100644
--- a/src/server/scripts/Northrend/zone_icecrown.cpp
+++ b/src/server/scripts/Northrend/zone_icecrown.cpp
@@ -17,12 +17,14 @@
*/
#include "ScriptMgr.h"
+#include "CombatAI.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "SpellAuras.h"
-#include "Player.h"
#include "TemporarySummon.h"
-#include "CombatAI.h"
/*######
## npc_argent_valiant
diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
index 4022c293aae..118aae0da83 100644
--- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp
+++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
@@ -29,14 +29,18 @@ npc_haiphoon (Quest: "Song of Wind and Water")
EndContentData */
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "ScriptedGossip.h"
+#include "CombatAI.h"
+#include "Map.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "ObjectMgr.h"
+#include "Player.h"
#include "ScriptedEscortAI.h"
-#include "SpellScript.h"
+#include "ScriptedGossip.h"
#include "SpellAuras.h"
+#include "SpellScript.h"
+#include "TemporarySummon.h"
#include "Vehicle.h"
-#include "CombatAI.h"
-#include "Player.h"
/*######
## npc_vekjik
@@ -275,7 +279,7 @@ public:
case 1:
Talk(SAY_WP_3);
me->CastSpell(5918.33f, 5372.91f, -98.770f, SPELL_EXPLODE_CRYSTAL, true);
- me->SummonGameObject(184743, 5918.33f, 5372.91f, -98.770f, 0, G3D::Quat(), TEMPSUMMON_MANUAL_DESPAWN); //approx 3 to 4 seconds
+ me->SummonGameObject(184743, 5918.33f, 5372.91f, -98.770f, 0, QuaternionData(), TEMPSUMMON_MANUAL_DESPAWN); //approx 3 to 4 seconds
me->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH);
break;
case 2:
@@ -286,7 +290,7 @@ public:
break;
case 8:
me->CastSpell(5887.37f, 5379.39f, -91.289f, SPELL_EXPLODE_CRYSTAL, true);
- me->SummonGameObject(184743, 5887.37f, 5379.39f, -91.289f, 0, G3D::Quat(), TEMPSUMMON_MANUAL_DESPAWN); //approx 3 to 4 seconds
+ me->SummonGameObject(184743, 5887.37f, 5379.39f, -91.289f, 0, QuaternionData(), TEMPSUMMON_MANUAL_DESPAWN); //approx 3 to 4 seconds
me->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH);
break;
case 9:
diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp
index 806aff4f3b3..5bc39c7e47d 100644
--- a/src/server/scripts/Northrend/zone_storm_peaks.cpp
+++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp
@@ -16,15 +16,18 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "ScriptedGossip.h"
+#include "CombatAI.h"
+#include "GameObject.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
+#include "Player.h"
#include "ScriptedEscortAI.h"
+#include "ScriptedGossip.h"
+#include "SpellAuraEffects.h"
#include "SpellHistory.h"
#include "SpellScript.h"
-#include "SpellAuraEffects.h"
+#include "TemporarySummon.h"
#include "Vehicle.h"
-#include "CombatAI.h"
-#include "Player.h"
#include "WorldSession.h"
/////////////////////
@@ -222,7 +225,7 @@ public:
me->DespawnOrUnsummon();
}
- void SpellHit(Unit* caster, const SpellInfo* spell) override
+ void SpellHit(Unit* caster, SpellInfo const* spell) override
{
if (spell->Id != SPELL_ICE_LANCE)
return;
@@ -528,7 +531,7 @@ public:
if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))
voice->AI()->Talk(SAY_VOICE_1, player);
}
- if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_1, 7860.273f, -1383.622f, 1538.302f, -1.658062f, G3D::Quat(0.f, 0.f, -0.737277f, 0.6755905f), 0))
+ if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_1, 7860.273f, -1383.622f, 1538.302f, -1.658062f, QuaternionData(0.f, 0.f, -0.737277f, 0.6755905f), 0))
objectGUID[objectCounter++] = go->GetGUID();
events.ScheduleEvent(EVENT_SCRIPT_5, 6000);
break;
@@ -536,7 +539,7 @@ public:
if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))
if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID))
voice->AI()->Talk(SAY_VOICE_2, player);
- if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_2, 7875.67f, -1387.266f, 1538.323f, -2.373644f, G3D::Quat(0.f, 0.f, -0.9271832f, 0.3746083f), 0))
+ if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_2, 7875.67f, -1387.266f, 1538.323f, -2.373644f, QuaternionData(0.f, 0.f, -0.9271832f, 0.3746083f), 0))
objectGUID[objectCounter++] = go->GetGUID();
events.ScheduleEvent(EVENT_SCRIPT_6, 6000);
break;
@@ -544,7 +547,7 @@ public:
if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))
if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID))
voice->AI()->Talk(SAY_VOICE_3, player);
- if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_3, 7879.212f, -1401.175f, 1538.279f, 2.967041f, G3D::Quat(0.f, 0.f, 0.9961939f, 0.08716504f), 0))
+ if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_3, 7879.212f, -1401.175f, 1538.279f, 2.967041f, QuaternionData(0.f, 0.f, 0.9961939f, 0.08716504f), 0))
objectGUID[objectCounter++] = go->GetGUID();
events.ScheduleEvent(EVENT_SCRIPT_7, 6000);
break;
@@ -552,7 +555,7 @@ public:
if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))
if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID))
voice->AI()->Talk(SAY_VOICE_4, player);
- if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_4, 7868.944f, -1411.18f, 1538.213f, 2.111848f, G3D::Quat(0.f, 0.f, 0.8703556f, 0.4924237f), 0))
+ if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_4, 7868.944f, -1411.18f, 1538.213f, 2.111848f, QuaternionData(0.f, 0.f, 0.8703556f, 0.4924237f), 0))
objectGUID[objectCounter++] = go->GetGUID();
events.ScheduleEvent(EVENT_SCRIPT_8, 6000);
break;
@@ -560,7 +563,7 @@ public:
if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))
if (Creature* voice = ObjectAccessor::GetCreature(*me, voiceGUID))
voice->AI()->Talk(SAY_VOICE_5, player);
- if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_5, 7855.11f, -1406.839f, 1538.42f, 1.151916f, G3D::Quat(0.f, 0.f, 0.5446386f, 0.8386708f), 0))
+ if (GameObject* go = me->SummonGameObject(OBJECT_TOL_SIGNAL_5, 7855.11f, -1406.839f, 1538.42f, 1.151916f, QuaternionData(0.f, 0.f, 0.5446386f, 0.8386708f), 0))
objectGUID[objectCounter] = go->GetGUID();
events.ScheduleEvent(EVENT_SCRIPT_9, 6000);
break;
@@ -968,9 +971,7 @@ class spell_jokkum_scriptcast : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_JOKKUM_SUMMON))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_JOKKUM_SUMMON });
}
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1001,9 +1002,7 @@ class spell_veranus_summon : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_VERANUS_AND_THORIM))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_SUMMON_VERANUS_AND_THORIM });
}
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1038,22 +1037,15 @@ class spell_close_rift : public SpellScriptLoader
{
PrepareAuraScript(spell_close_rift_AuraScript);
- public:
- spell_close_rift_AuraScript()
- {
- _counter = 0;
- }
-
- private:
bool Validate(SpellInfo const* /*spell*/) override
{
- return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT) != nullptr;
+ return ValidateSpellInfo({ SPELL_DESPAWN_RIFT });
}
void HandlePeriodic(AuraEffect const* /* aurEff */)
{
if (++_counter == 5)
- GetTarget()->CastSpell((Unit*)NULL, SPELL_DESPAWN_RIFT, true);
+ GetTarget()->CastSpell((Unit*)nullptr, SPELL_DESPAWN_RIFT, true);
}
void Register() override
@@ -1062,7 +1054,7 @@ class spell_close_rift : public SpellScriptLoader
}
private:
- uint8 _counter;
+ uint8 _counter = 0;
};
@@ -1084,9 +1076,7 @@ class spell_eject_passenger_wild_wyrm : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FIGHT_WYRM))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FIGHT_WYRM });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -1246,9 +1236,7 @@ class spell_low_health_trigger : public SpellScriptLoader
bool Validate(SpellInfo const* spellInfo) override
{
- if (!sSpellMgr->GetSpellInfo(spellInfo->Effects[EFFECT_0].CalcValue()))
- return false;
- return true;
+ return ValidateSpellInfo({ static_cast<uint32>(spellInfo->Effects[EFFECT_0].CalcValue()) });
}
void HandleScript(SpellEffIndex /*effIndex*/)
@@ -1352,9 +1340,7 @@ class spell_fatal_strike : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FATAL_STRIKE_DAMAGE))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FATAL_STRIKE_DAMAGE });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
@@ -1431,9 +1417,7 @@ class spell_player_mount_wyrm : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FIGHT_WYRM))
- return false;
- return true;
+ return ValidateSpellInfo({ SPELL_FIGHT_WYRM });
}
void HandleDummy(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp
index 5f8148dcfa9..64ac0441f93 100644
--- a/src/server/scripts/Northrend/zone_wintergrasp.cpp
+++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp
@@ -1,31 +1,35 @@
-/* Copyright (C) 2008 - 2009 Trinity <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.
+/*
+ * Copyright (C) 2008-2017 TrinityCore <http://www.trinitycore.org/>
*
- * 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.
+ * 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.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * 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/>.
*/
+#include "ScriptMgr.h"
+#include "Battlefield.h"
#include "BattlefieldMgr.h"
#include "BattlefieldWG.h"
-#include "Battlefield.h"
-#include "ScriptSystem.h"
-#include "WorldSession.h"
-#include "ObjectMgr.h"
-#include "Vehicle.h"
+#include "DBCStores.h"
+#include "GameObject.h"
#include "GameObjectAI.h"
+#include "ObjectMgr.h"
+#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
+#include "ScriptSystem.h"
#include "SpellScript.h"
-#include "Player.h"
+#include "Vehicle.h"
+#include "WorldSession.h"
#define GOSSIP_HELLO_DEMO1 "Build catapult."
#define GOSSIP_HELLO_DEMO2 "Build demolisher."
@@ -304,7 +308,7 @@ class npc_wg_queue : public CreatureScript
else
{
uint32 timer = wintergrasp->GetTimer() / 1000;
- player->SendUpdateWorldState(4354, time(NULL) + timer);
+ player->SendUpdateWorldState(4354, time(nullptr) + timer);
if (timer < 15 * MINUTE)
{
AddGossipItemFor(player, GOSSIP_ICON_CHAT, player->GetSession()->GetTrinityString(WG_NPCQUEUE_TEXTOPTION_JOIN), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
@@ -431,12 +435,13 @@ class spell_wintergrasp_force_building : public SpellScriptLoader
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_BUILD_CATAPULT_FORCE)
- || !sSpellMgr->GetSpellInfo(SPELL_BUILD_DEMOLISHER_FORCE)
- || !sSpellMgr->GetSpellInfo(SPELL_BUILD_SIEGE_VEHICLE_FORCE_HORDE)
- || !sSpellMgr->GetSpellInfo(SPELL_BUILD_SIEGE_VEHICLE_FORCE_ALLIANCE))
- return false;
- return true;
+ return ValidateSpellInfo(
+ {
+ SPELL_BUILD_CATAPULT_FORCE,
+ SPELL_BUILD_DEMOLISHER_FORCE,
+ SPELL_BUILD_SIEGE_VEHICLE_FORCE_HORDE,
+ SPELL_BUILD_SIEGE_VEHICLE_FORCE_ALLIANCE
+ });
}
void HandleScript(SpellEffIndex effIndex)
diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp
index a4eac22f16c..607e6845157 100644
--- a/src/server/scripts/Northrend/zone_zuldrak.cpp
+++ b/src/server/scripts/Northrend/zone_zuldrak.cpp
@@ -16,15 +16,18 @@
*/
#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "ScriptedGossip.h"
-#include "ScriptedEscortAI.h"
+#include "GameObject.h"
#include "GameObjectAI.h"
+#include "MotionMaster.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "ScriptedCreature.h"
+#include "ScriptedGossip.h"
+#include "SpellAuraEffects.h"
+#include "SpellAuras.h"
#include "SpellInfo.h"
#include "SpellScript.h"
-#include "SpellAuras.h"
-#include "SpellAuraEffects.h"
+#include "TemporarySummon.h"
#include "Vehicle.h"
/*####
@@ -86,7 +89,7 @@ public:
me->setDeathState(DEAD);
}
- void SpellHit(Unit* caster, const SpellInfo* spell) override
+ void SpellHit(Unit* caster, SpellInfo const* spell) override
{
if (spell->Id == SPELL_UNLOCK_SHACKLE)
{
@@ -142,7 +145,7 @@ public:
void MoveInLineOfSight(Unit* /*who*/) override { }
- void SpellHit(Unit* /*caster*/, const SpellInfo* spell) override
+ void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_FREE_RAGECLAW)
{
@@ -646,9 +649,12 @@ class spell_random_ingredient_aura : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_RANDOM_INGREDIENT_EASY) || !sSpellMgr->GetSpellInfo(SPELL_RANDOM_INGREDIENT_MEDIUM) || !sSpellMgr->GetSpellInfo(SPELL_RANDOM_INGREDIENT_HARD))
- return false;
- return true;
+ return ValidateSpellInfo(
+ {
+ SPELL_RANDOM_INGREDIENT_EASY,
+ SPELL_RANDOM_INGREDIENT_MEDIUM,
+ SPELL_RANDOM_INGREDIENT_HARD
+ });
}
void PeriodicTick(AuraEffect const* /*aurEff*/)
@@ -693,15 +699,30 @@ class spell_random_ingredient : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FETCH_KNOTROOT) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PICKLED_EAGLE_EGG) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SPECKLED_GUANO) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_WITHERED_BATWING) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SEASONED_SLIDER_CIDER) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PULVERIZED_GARGOYLE_TEETH) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_MUDDY_MIRE_MAGGOT) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SPIKY_SPIDER_EGG) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_HAIRY_HERRING_HEAD) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_PUTRID_PIRATE_PERSPIRATION) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_ICECROWN_BOTTLED_WATER) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_WASPS_WINGS) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_PRISMATIC_MOJO) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_RAPTOR_CLAW) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_AMBERSEED) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_SHRUNKEN_DRAGONS_CLAW) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_CHILLED_SERPENT_MUCUS) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_CRYSTALLIZED_HOGSNOT) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_CRUSHED_BASILISK_CRYSTALS) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_TROLLBANE) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_FROZEN_SPIDER_ICHOR))
- return false;
- return true;
+ return ValidateSpellInfo(
+ {
+ SPELL_FETCH_KNOTROOT, SPELL_HAVE_KNOTROOT,
+ SPELL_FETCH_PICKLED_EAGLE_EGG, SPELL_HAVE_PICKLED_EAGLE_EGG,
+ SPELL_FETCH_SPECKLED_GUANO, SPELL_HAVE_SPECKLED_GUANO,
+ SPELL_FETCH_WITHERED_BATWING, SPELL_HAVE_WITHERED_BATWING,
+ SPELL_FETCH_SEASONED_SLIDER_CIDER, SPELL_HAVE_SEASONED_SLIDER_CIDER,
+ SPELL_FETCH_PULVERIZED_GARGOYLE_TEETH, SPELL_HAVE_PULVERIZED_GARGOYLE_TEETH,
+ SPELL_FETCH_MUDDY_MIRE_MAGGOT, SPELL_HAVE_MUDDY_MIRE_MAGGOT,
+ SPELL_FETCH_SPIKY_SPIDER_EGG, SPELL_HAVE_SPIKY_SPIDER_EGG,
+ SPELL_FETCH_HAIRY_HERRING_HEAD, SPELL_HAVE_HAIRY_HERRING_HEAD,
+ SPELL_FETCH_PUTRID_PIRATE_PERSPIRATION, SPELL_HAVE_PUTRID_PIRATE_PERSPIRATION,
+ SPELL_FETCH_ICECROWN_BOTTLED_WATER, SPELL_HAVE_ICECROWN_BOTTLED_WATER,
+ SPELL_FETCH_WASPS_WINGS, SPELL_HAVE_WASPS_WINGS,
+ SPELL_FETCH_PRISMATIC_MOJO, SPELL_HAVE_PRISMATIC_MOJO,
+ SPELL_FETCH_RAPTOR_CLAW, SPELL_HAVE_RAPTOR_CLAW,
+ SPELL_FETCH_AMBERSEED, SPELL_HAVE_AMBERSEED,
+ SPELL_FETCH_SHRUNKEN_DRAGONS_CLAW, SPELL_HAVE_SHRUNKEN_DRAGONS_CLAW,
+ SPELL_FETCH_CHILLED_SERPENT_MUCUS, SPELL_HAVE_CHILLED_SERPENT_MUCUS,
+ SPELL_FETCH_CRYSTALLIZED_HOGSNOT, SPELL_HAVE_CRYSTALLIZED_HOGSNOT,
+ SPELL_FETCH_CRUSHED_BASILISK_CRYSTALS, SPELL_HAVE_CRUSHED_BASILISK_CRYSTALS,
+ SPELL_FETCH_TROLLBANE, SPELL_HAVE_TROLLBANE,
+ SPELL_FETCH_FROZEN_SPIDER_ICHOR, SPELL_HAVE_FROZEN_SPIDER_ICHOR,
+ });
}
void HandleScriptEffect(SpellEffIndex /* effIndex */)
@@ -725,7 +746,7 @@ class spell_random_ingredient : public SpellScriptLoader
if (Creature* finklestein = GetClosestCreatureWithEntry(player, NPC_FINKLESTEIN, 25.0f))
{
- finklestein->CastSpell(player, FetchIngredients[ingredient][0], true, NULL);
+ finklestein->CastSpell(player, FetchIngredients[ingredient][0], true, nullptr);
finklestein->AI()->Talk(FetchIngredients[ingredient][3], player);
}
}
@@ -757,22 +778,30 @@ class spell_pot_check : public SpellScriptLoader
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_FETCH_KNOTROOT) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PICKLED_EAGLE_EGG) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SPECKLED_GUANO) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_WITHERED_BATWING) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SEASONED_SLIDER_CIDER) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PULVERIZED_GARGOYLE_TEETH) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_MUDDY_MIRE_MAGGOT) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SPIKY_SPIDER_EGG) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_HAIRY_HERRING_HEAD) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_PUTRID_PIRATE_PERSPIRATION) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_ICECROWN_BOTTLED_WATER) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_WASPS_WINGS) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_PRISMATIC_MOJO) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_RAPTOR_CLAW) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_AMBERSEED) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_SHRUNKEN_DRAGONS_CLAW) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_CHILLED_SERPENT_MUCUS) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_CRYSTALLIZED_HOGSNOT) ||
- !sSpellMgr->GetSpellInfo(SPELL_FETCH_CRUSHED_BASILISK_CRYSTALS) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_TROLLBANE) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_FROZEN_SPIDER_ICHOR) ||
- !sSpellMgr->GetSpellInfo(SPELL_HAVE_KNOTROOT) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_PICKLED_EAGLE_EGG) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_SPECKLED_GUANO) ||
- !sSpellMgr->GetSpellInfo(SPELL_HAVE_WITHERED_BATWING) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_SEASONED_SLIDER_CIDER) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_PULVERIZED_GARGOYLE_TEETH) ||
- !sSpellMgr->GetSpellInfo(SPELL_HAVE_MUDDY_MIRE_MAGGOT) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_SPIKY_SPIDER_EGG) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_HAIRY_HERRING_HEAD) ||
- !sSpellMgr->GetSpellInfo(SPELL_HAVE_PUTRID_PIRATE_PERSPIRATION) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_ICECROWN_BOTTLED_WATER) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_WASPS_WINGS) ||
- !sSpellMgr->GetSpellInfo(SPELL_HAVE_PRISMATIC_MOJO) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_RAPTOR_CLAW) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_AMBERSEED) ||
- !sSpellMgr->GetSpellInfo(SPELL_HAVE_SHRUNKEN_DRAGONS_CLAW) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_CHILLED_SERPENT_MUCUS) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_CRYSTALLIZED_HOGSNOT) ||
- !sSpellMgr->GetSpellInfo(SPELL_HAVE_CRUSHED_BASILISK_CRYSTALS) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_TROLLBANE) || !sSpellMgr->GetSpellInfo(SPELL_HAVE_FROZEN_SPIDER_ICHOR))
- return false;
- return true;
+ return ValidateSpellInfo(
+ {
+ SPELL_FETCH_KNOTROOT, SPELL_HAVE_KNOTROOT,
+ SPELL_FETCH_PICKLED_EAGLE_EGG, SPELL_HAVE_PICKLED_EAGLE_EGG,
+ SPELL_FETCH_SPECKLED_GUANO, SPELL_HAVE_SPECKLED_GUANO,
+ SPELL_FETCH_WITHERED_BATWING, SPELL_HAVE_WITHERED_BATWING,
+ SPELL_FETCH_SEASONED_SLIDER_CIDER, SPELL_HAVE_SEASONED_SLIDER_CIDER,
+ SPELL_FETCH_PULVERIZED_GARGOYLE_TEETH, SPELL_HAVE_PULVERIZED_GARGOYLE_TEETH,
+ SPELL_FETCH_MUDDY_MIRE_MAGGOT, SPELL_HAVE_MUDDY_MIRE_MAGGOT,
+ SPELL_FETCH_SPIKY_SPIDER_EGG, SPELL_HAVE_SPIKY_SPIDER_EGG,
+ SPELL_FETCH_HAIRY_HERRING_HEAD, SPELL_HAVE_HAIRY_HERRING_HEAD,
+ SPELL_FETCH_PUTRID_PIRATE_PERSPIRATION, SPELL_HAVE_PUTRID_PIRATE_PERSPIRATION,
+ SPELL_FETCH_ICECROWN_BOTTLED_WATER, SPELL_HAVE_ICECROWN_BOTTLED_WATER,
+ SPELL_FETCH_WASPS_WINGS, SPELL_HAVE_WASPS_WINGS,
+ SPELL_FETCH_PRISMATIC_MOJO, SPELL_HAVE_PRISMATIC_MOJO,
+ SPELL_FETCH_RAPTOR_CLAW, SPELL_HAVE_RAPTOR_CLAW,
+ SPELL_FETCH_AMBERSEED, SPELL_HAVE_AMBERSEED,
+ SPELL_FETCH_SHRUNKEN_DRAGONS_CLAW, SPELL_HAVE_SHRUNKEN_DRAGONS_CLAW,
+ SPELL_FETCH_CHILLED_SERPENT_MUCUS, SPELL_HAVE_CHILLED_SERPENT_MUCUS,
+ SPELL_FETCH_CRYSTALLIZED_HOGSNOT, SPELL_HAVE_CRYSTALLIZED_HOGSNOT,
+ SPELL_FETCH_CRUSHED_BASILISK_CRYSTALS, SPELL_HAVE_CRUSHED_BASILISK_CRYSTALS,
+ SPELL_FETCH_TROLLBANE, SPELL_HAVE_TROLLBANE,
+ SPELL_FETCH_FROZEN_SPIDER_ICHOR, SPELL_HAVE_FROZEN_SPIDER_ICHOR,
+ });
}
void HandleScriptEffect(SpellEffIndex /* effIndex */)
@@ -900,7 +929,7 @@ public:
Reset();
}
- void SpellHit(Unit* caster, const SpellInfo* spell) override
+ void SpellHit(Unit* caster, SpellInfo const* spell) override
{
if (spell->Id != GYMERS_GRAB)
return;