diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2017-06-19 23:20:06 -0300 |
|---|---|---|
| committer | ariel- <ariel-@users.noreply.github.com> | 2017-06-19 23:20:06 -0300 |
| commit | 85a7d5ce9ac68b30da2277cc91d4b70358f1880d (patch) | |
| tree | df3d2084ee2e35008903c03178039b9c986e2d08 /src/server/scripts/Northrend | |
| parent | 052fc24315ace866ea1cf610e85df119b68100c9 (diff) | |
Core: ported headers cleanup from master branch
Diffstat (limited to 'src/server/scripts/Northrend')
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; |
