diff options
| author | DDuarte <dnpd.dd@gmail.com> | 2014-01-10 18:32:05 +0000 |
|---|---|---|
| committer | DDuarte <dnpd.dd@gmail.com> | 2014-01-10 18:32:05 +0000 |
| commit | 33c2bd5ce1f4f8d20981e9f7aea90e37de0abbda (patch) | |
| tree | 823ad5570f27e923c77203660ee7cc12e26182ec /src/server/scripts/Northrend | |
| parent | 352a2682b1d531c83bd2b80704233677448e99de (diff) | |
| parent | a63780fd90701ed81a0a5f2030e82ab1f6927ab4 (diff) | |
Merge branch 'master' into 4.3.4
Conflicts:
src/server/game/Entities/Creature/Creature.cpp
src/server/game/Entities/Creature/Creature.h
src/server/game/Entities/Creature/GossipDef.cpp
src/server/game/Entities/Player/Player.cpp
src/server/game/Entities/Transport/Transport.cpp
src/server/game/Entities/Unit/Unit.cpp
src/server/game/Globals/ObjectMgr.cpp
src/server/game/Globals/ObjectMgr.h
src/server/game/Handlers/QuestHandler.cpp
src/server/game/Handlers/SpellHandler.cpp
src/server/game/Handlers/TradeHandler.cpp
src/server/game/Quests/QuestDef.h
src/server/game/Spells/Auras/SpellAuraEffects.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp
src/server/scripts/EasternKingdoms/zone_arathi_highlands.cpp
src/server/scripts/EasternKingdoms/zone_burning_steppes.cpp
src/server/scripts/EasternKingdoms/zone_ghostlands.cpp
src/server/scripts/EasternKingdoms/zone_hinterlands.cpp
src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp
src/server/scripts/EasternKingdoms/zone_swamp_of_sorrows.cpp
src/server/scripts/Kalimdor/zone_azshara.cpp
src/server/scripts/Kalimdor/zone_darkshore.cpp
src/server/scripts/Kalimdor/zone_desolace.cpp
src/server/scripts/Northrend/zone_dalaran.cpp
src/tools/CMakeLists.txt
Diffstat (limited to 'src/server/scripts/Northrend')
86 files changed, 1076 insertions, 1475 deletions
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 5bb68a4c886..51b234846ad 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp @@ -33,7 +33,7 @@ enum Spells SPELL_MIND_FLAY = 57941, SPELL_SHADOW_BOLT_VOLLEY = 57942, SPELL_SHIVER = 57949, - SPELL_CLONE_PLAYER = 57507, //casted on player during insanity + SPELL_CLONE_PLAYER = 57507, //cast on player during insanity SPELL_INSANITY_PHASING_1 = 57508, SPELL_INSANITY_PHASING_2 = 57509, SPELL_INSANITY_PHASING_3 = 57510, @@ -149,11 +149,8 @@ public: uiShadowBoltVolleyTimer = 5*IN_MILLISECONDS; uiShiverTimer = 15*IN_MILLISECONDS; - if (instance) - { - instance->SetBossState(DATA_HERALD_VOLAZJ, NOT_STARTED); - instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_QUICK_DEMISE_START_EVENT); - } + instance->SetBossState(DATA_HERALD_VOLAZJ, NOT_STARTED); + instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_QUICK_DEMISE_START_EVENT); // Visible for all players in insanity me->SetPhaseMask((1|16|32|64|128|256), true); @@ -172,11 +169,8 @@ public: { Talk(SAY_AGGRO); - if (instance) - { - instance->SetBossState(DATA_HERALD_VOLAZJ, IN_PROGRESS); - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_QUICK_DEMISE_START_EVENT); - } + instance->SetBossState(DATA_HERALD_VOLAZJ, IN_PROGRESS); + instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_QUICK_DEMISE_START_EVENT); } void JustSummoned(Creature* summon) OVERRIDE @@ -295,22 +289,22 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetBossState(DATA_HERALD_VOLAZJ, DONE); + instance->SetBossState(DATA_HERALD_VOLAZJ, DONE); Summons.DespawnAll(); ResetPlayersPhaseMask(); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_volazjAI(creature); + return GetInstanceAI<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 a68a122bc31..5cf57c18bcf 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp @@ -101,15 +101,12 @@ public: bCanDown = false; volunteerWork = true; - if (instance) - { - if (!bFirstTime) - instance->SetBossState(DATA_JEDOGA_SHADOWSEEKER, FAIL); + if (!bFirstTime) + instance->SetBossState(DATA_JEDOGA_SHADOWSEEKER, FAIL); - instance->SetData64(DATA_PL_JEDOGA_TARGET, 0); - instance->SetData64(DATA_ADD_JEDOGA_OPFER, 0); - instance->SetData(DATA_JEDOGA_RESET_INITIANDS, 0); - } + instance->SetData64(DATA_PL_JEDOGA_TARGET, 0); + instance->SetData64(DATA_ADD_JEDOGA_OPFER, 0); + instance->SetData(DATA_JEDOGA_RESET_INITIANDS, 0); MoveUp(); bFirstTime = false; @@ -144,8 +141,7 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { Talk(TEXT_DEATH); - if (instance) - instance->SetBossState(DATA_JEDOGA_SHADOWSEEKER, DONE); + instance->SetBossState(DATA_JEDOGA_SHADOWSEEKER, DONE); } void DoAction(int32 action) OVERRIDE @@ -197,9 +193,6 @@ public: void MoveDown() { - if (!instance) - return; - bOpFerokFail = false; instance->SetData(DATA_JEDOGA_TRIGGER_SWITCH, 0); @@ -233,9 +226,6 @@ public: void MoveUp() { - if (!instance) - return; - me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true); me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE); @@ -255,9 +245,6 @@ public: void OpferRufen() { - if (!instance) - return; - uint64 opfer = instance->GetData64(DATA_ADD_JEDOGA_INITIAND); if (opfer) @@ -281,9 +268,6 @@ public: void UpdateAI(uint32 diff) OVERRIDE { - if (!instance) - return; - if (instance->GetBossState(DATA_JEDOGA_SHADOWSEEKER) != IN_PROGRESS && instance->GetData(DATA_ALL_INITIAND_DEAD)) MoveDown(); @@ -337,7 +321,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_jedoga_shadowseekerAI(creature); + return GetInstanceAI<boss_jedoga_shadowseekerAI>(creature); } }; @@ -361,9 +345,6 @@ public: void Reset() OVERRIDE { - if (!instance) - return; - bWalking = false; bCheckTimer = 2*IN_MILLISECONDS; @@ -503,7 +484,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_jedoga_initiandAI(creature); + return GetInstanceAI<npc_jedoga_initiandAI>(creature); } }; @@ -528,8 +509,8 @@ public: instance = creature->GetInstanceScript(); bRemoved = false; bRemoved2 = false; - bCasted = false; - bCasted2 = false; + bCast = false; + bCast2 = false; SetCombatMovement(false); } @@ -538,8 +519,8 @@ public: bool bRemoved; bool bRemoved2; - bool bCasted; - bool bCasted2; + bool bCast; + bool bCast2; void Reset() OVERRIDE { } void EnterCombat(Unit* /*who*/) OVERRIDE { } @@ -549,9 +530,6 @@ public: void UpdateAI(uint32 /*diff*/) OVERRIDE { - if (!instance) - return; - if (!bRemoved && me->GetPositionX() > 440.0f) { if (instance->GetBossState(DATA_PRINCE_TALDARAM) == DONE) @@ -560,23 +538,23 @@ public: bRemoved = true; return; } - if (!bCasted) + if (!bCast) { DoCast(me, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_1, false); - bCasted = true; + bCast = true; } } if (!bRemoved2 && me->GetPositionX() < 440.0f) { - if (!bCasted2 && instance->GetData(DATA_JEDOGA_TRIGGER_SWITCH)) + if (!bCast2 && instance->GetData(DATA_JEDOGA_TRIGGER_SWITCH)) { DoCast(me, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_2, false); - bCasted2 = true; + bCast2 = true; } - if (bCasted2 && !instance->GetData(DATA_JEDOGA_TRIGGER_SWITCH)) + if (bCast2 && !instance->GetData(DATA_JEDOGA_TRIGGER_SWITCH)) { me->InterruptNonMeleeSpells(true); - bCasted2 = false; + bCast2 = false; } if (!bRemoved2 && instance->GetBossState(DATA_JEDOGA_SHADOWSEEKER) == DONE) { @@ -589,7 +567,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_jedogas_aufseher_triggerAI(creature); + return GetInstanceAI<npc_jedogas_aufseher_triggerAI>(creature); } }; diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index 81530265617..8315f099198 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -130,11 +130,8 @@ public: Summons.DespawnAll(); - if (instance) - { - instance->SetBossState(DATA_ANUBARAK, NOT_STARTED); - instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); - } + instance->SetBossState(DATA_ANUBARAK, NOT_STARTED); + instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); } Creature* DoSummonImpaleTarget(Unit* target) @@ -158,14 +155,12 @@ public: { Talk(SAY_AGGRO); DelayTimer = 0; - if (instance) - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); + instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); } void DelayEventStart() { - if (instance) - instance->SetBossState(DATA_ANUBARAK, IN_PROGRESS); + instance->SetBossState(DATA_ANUBARAK, IN_PROGRESS); } void UpdateAI(uint32 diff) OVERRIDE @@ -335,8 +330,7 @@ public: { Talk(SAY_DEATH); Summons.DespawnAll(); - if (instance) - instance->SetBossState(DATA_ANUBARAK, DONE); + instance->SetBossState(DATA_ANUBARAK, DONE); } void KilledUnit(Unit* victim) OVERRIDE @@ -355,7 +349,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_anub_arakAI(creature); + return GetInstanceAI<boss_anub_arakAI>(creature); } }; diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp index 1664a1375ae..a3227b02f10 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp @@ -102,14 +102,12 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_HADRONOX, DONE); + instance->SetBossState(DATA_HADRONOX, DONE); } void EnterCombat(Unit* /*who*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_HADRONOX, IN_PROGRESS); + instance->SetBossState(DATA_HADRONOX, IN_PROGRESS); me->SetInCombatWithZone(); } @@ -192,7 +190,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_hadronoxAI(creature); + return GetInstanceAI<boss_hadronoxAI>(creature); } }; 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 143ccc29e0d..527b5d76973 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 @@ -104,8 +104,7 @@ public: uiMindFlayTimer = 15*IN_MILLISECONDS; uiCurseFatigueTimer = 12*IN_MILLISECONDS; - if (instance) - instance->SetBossState(DATA_KRIKTHIR_THE_GATEWATCHER, NOT_STARTED); + instance->SetBossState(DATA_KRIKTHIR_THE_GATEWATCHER, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -114,8 +113,7 @@ public: Summon(); uiSummonTimer = 15*IN_MILLISECONDS; - if (instance) - instance->SetBossState(DATA_KRIKTHIR_THE_GATEWATCHER, IN_PROGRESS); + instance->SetBossState(DATA_KRIKTHIR_THE_GATEWATCHER, IN_PROGRESS); } void Summon() @@ -175,8 +173,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetBossState(DATA_KRIKTHIR_THE_GATEWATCHER, DONE); + instance->SetBossState(DATA_KRIKTHIR_THE_GATEWATCHER, DONE); } void KilledUnit(Unit* victim) OVERRIDE @@ -195,7 +192,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_krik_thirAI(creature); + return GetInstanceAI<boss_krik_thirAI>(creature); } }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp index 8c470f73e04..534d942b9ef 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp @@ -45,7 +45,7 @@ enum Enums SPELL_TAIL_LASH = 56910, // A sweeping tail strike hits all enemies behind the caster, inflicting 3063 to 3937 damage and stunning them for 2 sec. SPELL_TAIL_LASH_H = 58957, // A sweeping tail strike hits all enemies behind the caster, inflicting 4375 to 5625 damage and stunning them for 2 sec. SPELL_WILL_OF_SARTHARION = 61254, // Sartharion's presence bolsters the resolve of the Twilight Drakes, increasing their total health by 25%. This effect also increases Sartharion's health by 25%. - SPELL_LAVA_STRIKE = 57571, // (Real spell casted should be 57578) 57571 then trigger visual missile, then summon Lava Blaze on impact(spell 57572) + SPELL_LAVA_STRIKE = 57571, // (Real spell cast should be 57578) 57571 then trigger visual missile, then summon Lava Blaze on impact(spell 57572) SPELL_TWILIGHT_REVENGE = 60639, NPC_FIRE_CYCLONE = 30648, @@ -78,44 +78,34 @@ enum Misc DATA_CAN_LOOT = 0 }; -struct Location -{ - float x, y, z; -}; - -static Location FlameRight1Spawn = { 3200.00f, 573.211f, 57.1551f }; -static Location FlameRight1Direction = { 3289.28f, 573.211f, 57.1551f }; -static Location FlameRight2Spawn = { 3200.00f, 532.211f, 57.1551f }; -static Location FlameRight2Direction = { 3289.28f, 532.211f, 57.1551f }; -static Location FlameRight3Spawn = { 3200.00f, 491.211f, 57.1551f }; -static Location FlameRight3Direction = { 3289.28f, 491.211f, 57.1551f }; -static Location FlameLeft1Spawn = { 3289.28f, 511.711f, 57.1551f }; -static Location FlameLeft1Direction = { 3200.00f, 511.711f, 57.1551f }; -static Location FlameLeft2Spawn = { 3289.28f, 552.711f, 57.1551f }; -static Location FlameLeft2Direction = { 3200.00f, 552.711f, 57.1551f }; - -struct Waypoint -{ - float m_fX, m_fY, m_fZ; -}; +Position const FlameRight1Spawn = { 3200.00f, 573.211f, 57.1551f, 0.0f }; +Position const FlameRight1Direction = { 3289.28f, 573.211f, 57.1551f, 0.0f }; +Position const FlameRight2Spawn = { 3200.00f, 532.211f, 57.1551f, 0.0f }; +Position const FlameRight2Direction = { 3289.28f, 532.211f, 57.1551f, 0.0f }; +Position const FlameRight3Spawn = { 3200.00f, 491.211f, 57.1551f, 0.0f }; +Position const FlameRight3Direction = { 3289.28f, 491.211f, 57.1551f, 0.0f }; +Position const FlameLeft1Spawn = { 3289.28f, 511.711f, 57.1551f, 0.0f }; +Position const FlameLeft1Direction = { 3200.00f, 511.711f, 57.1551f, 0.0f }; +Position const FlameLeft2Spawn = { 3289.28f, 552.711f, 57.1551f, 0.0f }; +Position const FlameLeft2Direction = { 3200.00f, 552.711f, 57.1551f, 0.0f }; //each dragons special points. First where fly to before connect to connon, second where land point is. -Waypoint m_aTene[]= +Position const TenebronPositions[] = { - {3212.854f, 575.597f, 109.856f}, // init - {3246.425f, 565.367f, 61.249f} // end + { 3212.854f, 575.597f, 109.856f, 0.0f }, // init + { 3246.425f, 565.367f, 61.249f, 0.0f } // end }; -Waypoint m_aShad[]= +Position const ShadronPositions[] = { - {3293.238f, 472.223f, 106.968f}, - {3271.669f, 526.907f, 61.931f} + { 3293.238f, 472.223f, 106.968f, 0.0f }, + { 3271.669f, 526.907f, 61.931f, 0.0f } }; -Waypoint m_aVesp[]= +Position const VesperonPositions[] = { - {3193.310f, 472.861f, 102.697f}, - {3227.268f, 533.238f, 59.995f} + { 3193.310f, 472.861f, 102.697f, 0.0f }, + { 3227.268f, 533.238f, 59.995f, 0.0f } }; enum SartharionEvents @@ -156,11 +146,8 @@ public: me->SetHomePosition(3246.57f, 551.263f, 58.6164f, 4.66003f); - if (instance) - { - DrakeRespawn(); - instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); - } + DrakeRespawn(); + instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); } void JustReachedHome() OVERRIDE @@ -174,8 +161,7 @@ public: _EnterCombat(); DoZoneInCombat(); - if (instance) - FetchDragons(); + FetchDragons(); events.ScheduleEvent(EVENT_LAVA_STRIKE, 5000); events.ScheduleEvent(EVENT_CLEAVE_ATTACK, 7000); @@ -192,25 +178,23 @@ public: Talk(SAY_SARTHARION_DEATH); _JustDied(); - if (instance) - { - if (Creature* tenebron = Unit::GetCreature(*me, instance->GetData64(DATA_TENEBRON))) - if (tenebron->IsAlive()) - tenebron->DisappearAndDie(); + if (Creature* tenebron = Unit::GetCreature(*me, instance->GetData64(DATA_TENEBRON))) + if (tenebron->IsAlive()) + tenebron->DisappearAndDie(); - if (Creature* shadron = Unit::GetCreature(*me, instance->GetData64(DATA_SHADRON))) - if (shadron->IsAlive()) - shadron->DisappearAndDie(); + if (Creature* shadron = Unit::GetCreature(*me, instance->GetData64(DATA_SHADRON))) + if (shadron->IsAlive()) + shadron->DisappearAndDie(); - if (Creature* vesperon = Unit::GetCreature(*me, instance->GetData64(DATA_VESPERON))) - if (vesperon->IsAlive()) - vesperon->DisappearAndDie(); - } + if (Creature* vesperon = Unit::GetCreature(*me, instance->GetData64(DATA_VESPERON))) + if (vesperon->IsAlive()) + vesperon->DisappearAndDie(); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SARTHARION_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SARTHARION_SLAY); } // me->ResetLootMode() is called from Reset() @@ -307,7 +291,7 @@ public: AddDrakeLootMode(); ++drakeCount; } - fetchTene->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aTene[0].m_fX, m_aTene[0].m_fY, m_aTene[0].m_fZ); + fetchTene->GetMotionMaster()->MovePoint(POINT_ID_INIT, TenebronPositions[0]); if (!fetchTene->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) fetchTene->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -325,7 +309,7 @@ public: AddDrakeLootMode(); ++drakeCount; } - fetchShad->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aShad[0].m_fX, m_aShad[0].m_fY, m_aShad[0].m_fZ); + fetchShad->GetMotionMaster()->MovePoint(POINT_ID_INIT, ShadronPositions[0]); if (!fetchShad->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) fetchShad->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -343,7 +327,7 @@ public: AddDrakeLootMode(); ++drakeCount; } - fetchVesp->GetMotionMaster()->MovePoint(POINT_ID_INIT, m_aVesp[0].m_fX, m_aVesp[0].m_fY, m_aVesp[0].m_fZ); + fetchVesp->GetMotionMaster()->MovePoint(POINT_ID_INIT, VesperonPositions[0]); if (!fetchVesp->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) fetchVesp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -356,40 +340,37 @@ public: void CallDragon(uint32 dataId) { - if (instance) + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(dataId))) { - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(dataId))) + if (temp->IsAlive() && !temp->GetVictim()) { - if (temp->IsAlive() && !temp->GetVictim()) - { - temp->SetWalk(false); + temp->SetWalk(false); - if (temp->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) - temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + if (temp->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) + temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - int32 textId = 0; + uint8 textId = 0; - switch (temp->GetEntry()) - { - case NPC_TENEBRON: - textId = SAY_SARTHARION_CALL_TENEBRON; - temp->AddAura(SPELL_POWER_OF_TENEBRON, temp); - temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, m_aTene[1].m_fX, m_aTene[1].m_fY, m_aTene[1].m_fZ); - break; - case NPC_SHADRON: - textId = SAY_SARTHARION_CALL_SHADRON; - temp->AddAura(SPELL_POWER_OF_SHADRON, temp); - temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, m_aShad[1].m_fX, m_aShad[1].m_fY, m_aShad[1].m_fZ); - break; - case NPC_VESPERON: - textId = SAY_SARTHARION_CALL_VESPERON; - temp->AddAura(SPELL_POWER_OF_VESPERON, temp); - temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, m_aVesp[1].m_fX, m_aVesp[1].m_fY, m_aVesp[1].m_fZ); - break; - } - - Talk(textId); + switch (temp->GetEntry()) + { + case NPC_TENEBRON: + textId = SAY_SARTHARION_CALL_TENEBRON; + temp->AddAura(SPELL_POWER_OF_TENEBRON, temp); + temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, TenebronPositions[1]); + break; + case NPC_SHADRON: + textId = SAY_SARTHARION_CALL_SHADRON; + temp->AddAura(SPELL_POWER_OF_SHADRON, temp); + temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, ShadronPositions[1]); + break; + case NPC_VESPERON: + textId = SAY_SARTHARION_CALL_VESPERON; + temp->AddAura(SPELL_POWER_OF_VESPERON, temp); + temp->GetMotionMaster()->MovePoint(POINT_ID_LAND, VesperonPositions[1]); + break; } + + Talk(textId); } } } @@ -402,20 +383,6 @@ public: return 0; } - void SendFlameTsunami() - { - if (Map* map = me->GetMap()) - if (map->IsDungeon()) - { - Map::PlayerList const &PlayerList = map->GetPlayers(); - - if (!PlayerList.isEmpty()) - for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) - if (i->GetSource() && i->GetSource()->IsAlive()) - Talk(WHISPER_LAVA_CHURN, i->GetSource()); - } - } - // Selects a random Fire Cyclone and makes it cast Lava Strike. // FIXME: Frequency of the casts reduced to compensate 100% chance of spawning a Lava Blaze add void CastLavaStrikeOnTarget(Unit* target) @@ -428,13 +395,7 @@ public: if (fireCyclonesList.empty()) return; - std::list<Creature*>::iterator itr = fireCyclonesList.begin(); - uint32 rnd = rand()%fireCyclonesList.size(); - - for (uint32 i = 0; i < rnd; ++i) - ++itr; - - (*itr)->CastSpell(target, SPELL_LAVA_STRIKE, true); + Trinity::Containers::SelectRandomContainerElement(fireCyclonesList)->CastSpell(target, SPELL_LAVA_STRIKE, true); } void UpdateAI(uint32 diff) OVERRIDE @@ -456,25 +417,25 @@ public: } break; case EVENT_FLAME_TSUNAMI: - SendFlameTsunami(); + Talk(WHISPER_LAVA_CHURN); switch (urand(0, 1)) { case 0: { - if (Creature* right1 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight1Spawn.x, FlameRight1Spawn.y, FlameRight1Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN, 12000)) - right1->GetMotionMaster()->MovePoint(0, FlameRight1Direction.x, FlameRight1Direction.y, FlameRight1Direction.z); - if (Creature* right2 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight2Spawn.x, FlameRight2Spawn.y, FlameRight2Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN, 12000)) - right2->GetMotionMaster()->MovePoint(0, FlameRight2Direction.x, FlameRight2Direction.y, FlameRight2Direction.z); - if (Creature* right3 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight3Spawn.x, FlameRight3Spawn.y, FlameRight3Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN, 12000)) - right3->GetMotionMaster()->MovePoint(0, FlameRight3Direction.x, FlameRight3Direction.y, FlameRight3Direction.z); + if (Creature* right1 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight1Spawn, TEMPSUMMON_TIMED_DESPAWN, 12000)) + right1->GetMotionMaster()->MovePoint(0, FlameRight1Direction); + if (Creature* right2 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight2Spawn, TEMPSUMMON_TIMED_DESPAWN, 12000)) + right2->GetMotionMaster()->MovePoint(0, FlameRight2Direction); + if (Creature* right3 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight3Spawn, TEMPSUMMON_TIMED_DESPAWN, 12000)) + right3->GetMotionMaster()->MovePoint(0, FlameRight3Direction); break; } case 1: { - if (Creature* left1 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft1Spawn.x, FlameLeft1Spawn.y, FlameLeft1Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN, 12000)) - left1->GetMotionMaster()->MovePoint(0, FlameLeft1Direction.x, FlameLeft1Direction.y, FlameLeft1Direction.z); - if (Creature* left2 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft2Spawn.x, FlameLeft2Spawn.y, FlameLeft2Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN, 12000)) - left2->GetMotionMaster()->MovePoint(0, FlameLeft2Direction.x, FlameLeft2Direction.y, FlameLeft2Direction.z); + if (Creature* left1 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft1Spawn, TEMPSUMMON_TIMED_DESPAWN, 12000)) + left1->GetMotionMaster()->MovePoint(0, FlameLeft1Direction); + if (Creature* left2 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft2Spawn, TEMPSUMMON_TIMED_DESPAWN, 12000)) + left2->GetMotionMaster()->MovePoint(0, FlameLeft2Direction); break; } } @@ -547,7 +508,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_sartharionAI(creature); + return GetObsidianSanctumAI<boss_sartharionAI>(creature); } }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp index 6aa1eb74706..2891834c6e0 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp @@ -94,58 +94,44 @@ enum Misc DATA_CAN_LOOT = 0 }; -struct Location -{ - float x, y, z; -}; - -struct Locations -{ - float x, y, z; -}; - -struct Waypoint -{ - float m_fX, m_fY, m_fZ; -}; - #define MAX_WAYPOINT 6 //points around raid "isle", counter clockwise. should probably be adjusted to be more alike -Waypoint dragonCommon[MAX_WAYPOINT]= +Position const dragonCommon[MAX_WAYPOINT]= { - {3214.012f, 468.932f, 98.652f}, - {3244.950f, 468.427f, 98.652f}, - {3283.520f, 496.869f, 98.652f}, - {3287.316f, 555.875f, 98.652f}, - {3250.479f, 585.827f, 98.652f}, - {3209.969f, 566.523f, 98.652f} + { 3214.012f, 468.932f, 98.652f, 0.0f }, + { 3244.950f, 468.427f, 98.652f, 0.0f }, + { 3283.520f, 496.869f, 98.652f, 0.0f }, + { 3287.316f, 555.875f, 98.652f, 0.0f }, + { 3250.479f, 585.827f, 98.652f, 0.0f }, + { 3209.969f, 566.523f, 98.652f, 0.0f } }; -static Location AcolyteofShadron = { 3363.92f, 534.703f, 97.2683f }; -static Location AcolyteofShadron2 = { 3246.57f, 551.263f, 58.6164f }; -static Location AcolyteofVesperon = { 3145.68f, 520.71f, 89.7f }; -static Location AcolyteofVesperon2 = { 3246.57f, 551.263f, 58.6164f }; +Position const AcolyteofShadron = { 3363.92f, 534.703f, 97.2683f, 0.0f }; +Position const AcolyteofShadron2 = { 3246.57f, 551.263f, 58.6164f, 0.0f }; +Position const AcolyteofVesperon = { 3145.68f, 520.71f, 89.7f, 0.0f }; +Position const AcolyteofVesperon2 = { 3246.57f, 551.263f, 58.6164f, 0.0f }; -Locations TwilightEggs[] = +Position const TwilightEggs[] = { - {3219.28f, 669.121f, 88.5549f}, - {3221.55f, 682.852f, 90.5361f}, - {3239.77f, 685.94f, 90.3168f}, - {3250.33f, 669.749f, 88.7637f}, - {3246.6f, 642.365f, 84.8752f}, - {3233.68f, 653.117f, 85.7051f} + { 3219.28f, 669.121f, 88.5549f, 0.0f }, + { 3221.55f, 682.852f, 90.5361f, 0.0f }, + { 3239.77f, 685.94f, 90.3168f, 0.0f }, + { 3250.33f, 669.749f, 88.7637f, 0.0f }, + { 3246.6f, 642.365f, 84.8752f, 0.0f }, + { 3233.68f, 653.117f, 85.7051f, 0.0f } }; -Locations TwilightEggsSarth[] = + +Position const TwilightEggsSarth[] = { - {3252.73f, 515.762f, 58.5501f}, - {3256.56f, 521.119f, 58.6061f}, - {3255.63f, 527.513f, 58.7568f}, - {3264.90f, 525.865f, 58.6436f}, - {3264.26f, 516.364f, 58.8011f}, - {3257.54f, 502.285f, 58.2077f} + { 3252.73f, 515.762f, 58.5501f, 0.0f }, + { 3256.56f, 521.119f, 58.6061f, 0.0f }, + { 3255.63f, 527.513f, 58.7568f, 0.0f }, + { 3264.90f, 525.865f, 58.6436f, 0.0f }, + { 3264.26f, 516.364f, 58.8011f, 0.0f }, + { 3257.54f, 502.285f, 58.2077f, 0.0f } }; -enum SharedTextIDs +enum SharedTextIds { SAY_AGGRO = 0, SAY_SLAY = 1, @@ -157,12 +143,24 @@ enum SharedTextIDs WHISPER_OPENED_PORTAL = 7 }; -enum DummyDragonEvents +enum DragonEvents { - EVENT_FREE_MOVEMENT = 1 + // Shared Events + EVENT_FREE_MOVEMENT = 1, + EVENT_SHADOW_FISSURE = 2, + EVENT_SHADOW_BREATH = 3, + + // Tenebron + EVENT_HATCH_EGGS = 4, + + // Shadron + EVENT_ACOLYTE_SHADRON = 5, + + // Vesperon + EVENT_ACOLYTE_VESPERON = 6 }; -//to control each dragons common abilities +// to control each dragons common abilities struct dummy_dragonAI : public ScriptedAI { dummy_dragonAI(Creature* creature) : ScriptedAI(creature) @@ -175,12 +173,22 @@ struct dummy_dragonAI : public ScriptedAI if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); + events.Reset(); waypointId = 0; portalRespawnTime = 30000; _canMoveFree = false; _canLoot = true; } + void EnterCombat(Unit* /*who*/) OVERRIDE + { + Talk(SAY_AGGRO); + DoZoneInCombat(); + + events.ScheduleEvent(EVENT_SHADOW_FISSURE, 5000); + events.ScheduleEvent(EVENT_SHADOW_BREATH, 20000); + } + void SetData(uint32 type, uint32 value) OVERRIDE { if (type == DATA_CAN_LOOT) @@ -217,14 +225,11 @@ struct dummy_dragonAI : public ScriptedAI return; } - // get amount of common points - uint32 commonWPCount = sizeof(dragonCommon)/sizeof(Waypoint); - // increase - waypointId = pointId+1; + waypointId = pointId + 1; // if we have reached a point bigger or equal to count, it mean we must reset to point 0 - if (waypointId >= commonWPCount) + if (waypointId >= MAX_WAYPOINT) { if (!_canMoveFree) _canMoveFree = true; @@ -235,23 +240,6 @@ struct dummy_dragonAI : public ScriptedAI events.ScheduleEvent(EVENT_FREE_MOVEMENT, 500); } - // used when open portal and spawn mobs in phase - void DoRaidWhisper(int32 iTextId) - { - Map* map = me->GetMap(); - - if (map && map->IsDungeon()) - { - Map::PlayerList const &PlayerList = map->GetPlayers(); - - if (!PlayerList.isEmpty()) - { - for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) - Talk(iTextId, i->GetSource()); - } - } - } - // "opens" the portal and does the "opening" whisper void OpenPortal() { @@ -268,21 +256,21 @@ struct dummy_dragonAI : public ScriptedAI if (instance && !instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS) { for (uint32 i = 0; i < 6; ++i) - me->SummonCreature(NPC_TWILIGHT_EGG, TwilightEggs[i].x, TwilightEggs[i].y, TwilightEggs[i].z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); + me->SummonCreature(NPC_TWILIGHT_EGG, TwilightEggs[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); } else { for (uint32 i = 0; i < 6; ++i) - me->SummonCreature(NPC_SARTHARION_TWILIGHT_EGG, TwilightEggsSarth[i].x, TwilightEggsSarth[i].y, TwilightEggsSarth[i].z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); + me->SummonCreature(NPC_SARTHARION_TWILIGHT_EGG, TwilightEggsSarth[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000); } break; } case NPC_SHADRON: { if (instance && !instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS) - me->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron.x, AcolyteofShadron.y, AcolyteofShadron.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 28000); + me->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 28000); else - me->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron2.x, AcolyteofShadron2.y, AcolyteofShadron2.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 28000); + me->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron2, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 28000); break; } @@ -290,7 +278,7 @@ struct dummy_dragonAI : public ScriptedAI { if (instance && !instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS) { - if (Creature* acolyte = me->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon.x, AcolyteofVesperon.y, AcolyteofVesperon.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000)) + if (Creature* acolyte = me->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000)) { me->InterruptNonMeleeSpells(true); acolyte->InterruptNonMeleeSpells(true); @@ -299,7 +287,7 @@ struct dummy_dragonAI : public ScriptedAI } else { - if (Creature* acolyte = me->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon2.x, AcolyteofVesperon2.y, AcolyteofVesperon2.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000)) + if (Creature* acolyte = me->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon2, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000)) { me->InterruptNonMeleeSpells(true); acolyte->InterruptNonMeleeSpells(true); @@ -307,12 +295,12 @@ struct dummy_dragonAI : public ScriptedAI } } - break; + break; } } - DoRaidWhisper(WHISPER_OPEN_PORTAL); - DoRaidWhisper(WHISPER_OPENED_PORTAL); + Talk(WHISPER_OPEN_PORTAL); + Talk(WHISPER_OPENED_PORTAL); // By using SetRespawnTime() we will actually "spawn" the object with our defined time. // Once time is up, portal will disappear again. @@ -323,6 +311,12 @@ struct dummy_dragonAI : public ScriptedAI // Refresh respawnTime so time again are set to 30secs? } + void KilledUnit(Unit* who) OVERRIDE + { + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); + } + void JustDied(Unit* /*killer*/) OVERRIDE { if (!_canLoot) @@ -356,22 +350,19 @@ struct dummy_dragonAI : public ScriptedAI Talk(SAY_DEATH); me->RemoveAurasDueToSpell(spellId); - if (instance) - { - instance->DoRemoveAurasDueToSpellOnPlayers(spellId); + instance->DoRemoveAurasDueToSpellOnPlayers(spellId); - // not if solo mini-boss fight - if (instance->GetBossState(DATA_SARTHARION) != IN_PROGRESS) - return; + // not if solo mini-boss fight + if (instance->GetBossState(DATA_SARTHARION) != IN_PROGRESS) + return; - // Twilight Revenge to main boss - if (Unit* sartharion = Unit::GetUnit(*me, instance->GetData64(DATA_SARTHARION))) - if (sartharion->IsAlive()) - { - sartharion->RemoveAurasDueToSpell(spellId); - DoCast(sartharion, SPELL_TWILIGHT_REVENGE, true); - } - } + // Twilight Revenge to main boss + if (Unit* sartharion = ObjectAccessor::GetUnit(*me, instance->GetData64(DATA_SARTHARION))) + if (sartharion->IsAlive()) + { + sartharion->RemoveAurasDueToSpell(spellId); + DoCast(sartharion, SPELL_TWILIGHT_REVENGE, true); + } } void UpdateAI(uint32 diff) OVERRIDE @@ -381,11 +372,30 @@ struct dummy_dragonAI : public ScriptedAI if (events.ExecuteEvent() == EVENT_FREE_MOVEMENT) { if (_canMoveFree && waypointId < MAX_WAYPOINT) - me->GetMotionMaster()->MovePoint(waypointId, dragonCommon[waypointId].m_fX, dragonCommon[waypointId].m_fY, dragonCommon[waypointId].m_fZ); + me->GetMotionMaster()->MovePoint(waypointId, dragonCommon[waypointId]); } } - private: + void ExecuteEvent(uint32 eventId) + { + switch (eventId) + { + case EVENT_SHADOW_FISSURE: + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) + DoCast(target, RAID_MODE(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE)); + events.ScheduleEvent(eventId, urand(15000, 20000)); + break; + case EVENT_SHADOW_BREATH: + Talk(SAY_BREATH); + DoCastVictim(RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H)); + events.ScheduleEvent(eventId, urand(20000, 25000)); + break; + default: + break; + } + } + + protected: InstanceScript* instance; EventMap events; uint32 waypointId; @@ -398,13 +408,6 @@ struct dummy_dragonAI : public ScriptedAI ## Tenebron ######*/ -enum TenebronEvents -{ - EVENT_SHADOW_FISSURE_TENEBRON = 2, - EVENT_HATCH_EGGS = 3, - EVENT_SHADOW_BREATH_TENEBRON = 4 -}; - class npc_tenebron : public CreatureScript { public: @@ -419,23 +422,16 @@ public: dummy_dragonAI::Reset(); } - void EnterCombat(Unit* /*who*/) OVERRIDE + void EnterCombat(Unit* who) OVERRIDE { - Talk(SAY_AGGRO); - DoZoneInCombat(); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_TENEBRON, 5000); - events.ScheduleEvent(EVENT_HATCH_EGGS, 30000); - events.ScheduleEvent(EVENT_SHADOW_BREATH_TENEBRON, 20000); - } + dummy_dragonAI::EnterCombat(who); - void KilledUnit(Unit* /*victim*/) OVERRIDE - { - Talk(SAY_SLAY); + events.ScheduleEvent(EVENT_HATCH_EGGS, 30000); } void UpdateAI(uint32 diff) OVERRIDE { - //if no target, update dummy and return + // if no target, update dummy and return if (!UpdateVictim()) { dummy_dragonAI::UpdateAI(diff); @@ -448,32 +444,23 @@ public: { switch (eventId) { - case EVENT_SHADOW_FISSURE_TENEBRON: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - DoCast(target, RAID_MODE(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE)); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_TENEBRON, urand(15000, 20000)); - break; case EVENT_HATCH_EGGS: OpenPortal(); events.ScheduleEvent(EVENT_HATCH_EGGS, 30000); break; - case EVENT_SHADOW_BREATH_TENEBRON: - Talk(SAY_BREATH); - DoCastVictim(RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H)); - events.ScheduleEvent(EVENT_SHADOW_BREATH_TENEBRON, urand(20000, 25000)); + default: + dummy_dragonAI::ExecuteEvent(eventId); break; } } + DoMeleeAttackIfReady(); } - - private: - EventMap events; }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_tenebronAI(creature); + return GetObsidianSanctumAI<npc_tenebronAI>(creature); } }; @@ -481,13 +468,6 @@ public: ## Shadron ######*/ -enum ShadronEvents -{ - EVENT_SHADOW_FISSURE_SHADRON = 5, - EVENT_ACOLYTE_SHADRON = 6, - EVENT_SHADOW_BREATH_SHADRON = 7 -}; - class npc_shadron : public CreatureScript { public: @@ -495,10 +475,7 @@ public: struct npc_shadronAI : public dummy_dragonAI { - npc_shadronAI(Creature* creature) : dummy_dragonAI(creature) - { - instance = creature->GetInstanceScript(); - } + npc_shadronAI(Creature* creature) : dummy_dragonAI(creature) { } void Reset() OVERRIDE { @@ -510,27 +487,19 @@ public: if (me->HasAura(SPELL_GIFT_OF_TWILIGTH_SHA)) me->RemoveAurasDueToSpell(SPELL_GIFT_OF_TWILIGTH_SHA); - if (instance) - instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); + instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); } - void EnterCombat(Unit* /*who*/) OVERRIDE + void EnterCombat(Unit* who) OVERRIDE { - Talk(SAY_AGGRO); - DoZoneInCombat(); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_SHADRON, 5000); - events.ScheduleEvent(EVENT_ACOLYTE_SHADRON, 60000); - events.ScheduleEvent(EVENT_SHADOW_BREATH_SHADRON, 20000); - } + dummy_dragonAI::EnterCombat(who); - void KilledUnit(Unit* /*victim*/) OVERRIDE - { - Talk(SAY_SLAY); + events.ScheduleEvent(EVENT_ACOLYTE_SHADRON, 60000); } void UpdateAI(uint32 diff) OVERRIDE { - //if no target, update dummy and return + // if no target, update dummy and return if (!UpdateVictim()) { dummy_dragonAI::UpdateAI(diff); @@ -543,11 +512,6 @@ public: { switch (eventId) { - case EVENT_SHADOW_FISSURE_SHADRON: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - DoCast(target, RAID_MODE(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE_H)); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_SHADRON, urand(15000, 20000)); - break; case EVENT_ACOLYTE_SHADRON: if (instance->GetBossState(DATA_PORTAL_OPEN) == NOT_STARTED) events.ScheduleEvent(EVENT_ACOLYTE_SHADRON, 10000); @@ -558,30 +522,24 @@ public: OpenPortal(); - if (instance) - instance->SetBossState(DATA_PORTAL_OPEN, IN_PROGRESS); + instance->SetBossState(DATA_PORTAL_OPEN, IN_PROGRESS); events.ScheduleEvent(EVENT_ACOLYTE_SHADRON, urand(60000, 65000)); } break; - case EVENT_SHADOW_BREATH_SHADRON: - Talk(SAY_BREATH); - DoCastVictim(RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H)); - events.ScheduleEvent(EVENT_SHADOW_BREATH_SHADRON, urand(20000, 25000)); + default: + dummy_dragonAI::ExecuteEvent(eventId); break; } } + DoMeleeAttackIfReady(); } - - private: - InstanceScript* instance; - EventMap events; }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_shadronAI(creature); + return GetObsidianSanctumAI<npc_shadronAI>(creature); } }; @@ -589,13 +547,6 @@ public: ## Vesperon ######*/ -enum VesperonEvents -{ - EVENT_SHADOW_FISSURE_VESPERON = 8, - EVENT_ACOLYTE_VESPERON = 9, - EVENT_SHADOW_BREATH_VESPERON = 10 -}; - class npc_vesperon : public CreatureScript { public: @@ -603,33 +554,23 @@ public: struct npc_vesperonAI : public dummy_dragonAI { - npc_vesperonAI(Creature* creature) : dummy_dragonAI(creature) - { - instance = creature->GetInstanceScript(); - } + npc_vesperonAI(Creature* creature) : dummy_dragonAI(creature) { } void Reset() OVERRIDE { dummy_dragonAI::Reset(); } - void EnterCombat(Unit* /*who*/) OVERRIDE + void EnterCombat(Unit* who) OVERRIDE { - Talk(SAY_AGGRO); - DoZoneInCombat(); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_VESPERON, 5000); - events.ScheduleEvent(EVENT_ACOLYTE_VESPERON, 60000); - events.ScheduleEvent(EVENT_SHADOW_BREATH_VESPERON, 20000); - } + dummy_dragonAI::EnterCombat(who); - void KilledUnit(Unit* /*victim*/) OVERRIDE - { - Talk(SAY_SLAY); + events.ScheduleEvent(EVENT_ACOLYTE_VESPERON, 60000); } void UpdateAI(uint32 diff) OVERRIDE { - //if no target, update dummy and return + // if no target, update dummy and return if (!UpdateVictim()) { dummy_dragonAI::UpdateAI(diff); @@ -642,11 +583,6 @@ public: { switch (eventId) { - case EVENT_SHADOW_FISSURE_VESPERON: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - DoCast(target, RAID_MODE(SPELL_SHADOW_FISSURE, SPELL_SHADOW_FISSURE_H)); - events.ScheduleEvent(EVENT_SHADOW_FISSURE_VESPERON, urand(15000, 20000)); - break; case EVENT_ACOLYTE_VESPERON: if (instance->GetBossState(DATA_PORTAL_OPEN) == IN_PROGRESS) events.ScheduleEvent(EVENT_ACOLYTE_VESPERON, 10000); @@ -657,24 +593,19 @@ public: events.ScheduleEvent(EVENT_ACOLYTE_VESPERON, urand(60000, 70000)); } break; - case EVENT_SHADOW_BREATH_VESPERON: - Talk(SAY_BREATH); - DoCastVictim(RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H)); - events.ScheduleEvent(EVENT_SHADOW_BREATH_VESPERON, urand(20000, 25000)); + default: + dummy_dragonAI::ExecuteEvent(eventId); break; } } + DoMeleeAttackIfReady(); } - - private: - InstanceScript* instance; - EventMap events; }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_vesperonAI(creature); + return GetObsidianSanctumAI<npc_vesperonAI>(creature); } }; @@ -684,23 +615,21 @@ public: class npc_acolyte_of_shadron : public CreatureScript { -public: - npc_acolyte_of_shadron() : CreatureScript("npc_acolyte_of_shadron") { } + public: + npc_acolyte_of_shadron() : CreatureScript("npc_acolyte_of_shadron") { } - struct npc_acolyte_of_shadronAI : public ScriptedAI - { - npc_acolyte_of_shadronAI(Creature* creature) : ScriptedAI(creature) + struct npc_acolyte_of_shadronAI : public ScriptedAI { - instance = creature->GetInstanceScript(); - } - - void Reset() OVERRIDE - { - // Despawn the NPC automatically after 28 seconds - me->DespawnOrUnsummon(28000); + npc_acolyte_of_shadronAI(Creature* creature) : ScriptedAI(creature) + { + instance = creature->GetInstanceScript(); + } - if (instance) + void Reset() OVERRIDE { + // Despawn the NPC automatically after 28 seconds + me->DespawnOrUnsummon(28000); + //if not solo fight, buff main boss, else place debuff on mini-boss. both spells TARGET_SCRIPT if (instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS) { @@ -712,14 +641,11 @@ public: if (Creature* shadron = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SHADRON))) shadron->AddAura(SPELL_GIFT_OF_TWILIGTH_SHA, shadron); } - } - me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER, me); - } + me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER, me); + } - void JustDied(Unit* /*killer*/) OVERRIDE - { - if (instance) + void JustDied(Unit* /*killer*/) OVERRIDE { if (ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SHADRON))) instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); @@ -727,7 +653,7 @@ public: Map* map = me->GetMap(); if (map->IsDungeon()) { - Map::PlayerList const &PlayerList = map->GetPlayers(); + Map::PlayerList const& PlayerList = map->GetPlayers(); if (PlayerList.isEmpty()) return; @@ -741,7 +667,7 @@ public: i->GetSource()->RemoveAurasDueToSpell(SPELL_TWILIGHT_SHIFT); i->GetSource()->RemoveAurasDueToSpell(SPELL_TWILIGHT_SHIFT_ENTER); } - } + } } // not solo fight, so main boss has debuff @@ -754,24 +680,23 @@ public: if (debuffTarget->IsAlive() && debuffTarget->HasAura(SPELL_GIFT_OF_TWILIGTH_SHA)) debuffTarget->RemoveAurasDueToSpell(SPELL_GIFT_OF_TWILIGTH_SHA); } - } - void UpdateAI(uint32 /*diff*/) OVERRIDE - { - if (!UpdateVictim()) - return; + void UpdateAI(uint32 /*diff*/) OVERRIDE + { + if (!UpdateVictim()) + return; - DoMeleeAttackIfReady(); - } + DoMeleeAttackIfReady(); + } - private: - InstanceScript* instance; - }; + private: + InstanceScript* instance; + }; - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new npc_acolyte_of_shadronAI(creature); - } + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return GetObsidianSanctumAI<npc_acolyte_of_shadronAI>(creature); + } }; /*###### @@ -780,34 +705,31 @@ public: class npc_acolyte_of_vesperon : public CreatureScript { -public: - npc_acolyte_of_vesperon() : CreatureScript("npc_acolyte_of_vesperon") { } + public: + npc_acolyte_of_vesperon() : CreatureScript("npc_acolyte_of_vesperon") { } - struct npc_acolyte_of_vesperonAI : public ScriptedAI - { - npc_acolyte_of_vesperonAI(Creature* creature) : ScriptedAI(creature) + struct npc_acolyte_of_vesperonAI : public ScriptedAI { - instance = creature->GetInstanceScript(); - } + npc_acolyte_of_vesperonAI(Creature* creature) : ScriptedAI(creature) + { + instance = creature->GetInstanceScript(); + } - void Reset() OVERRIDE - { - // Despawn the NPC automatically after 28 seconds - me->DespawnOrUnsummon(28000); + void Reset() OVERRIDE + { + // Despawn the NPC automatically after 28 seconds + me->DespawnOrUnsummon(28000); - if (instance) me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER, me); - DoCast(me, SPELL_TWILIGHT_TORMENT_VESP_ACO); - } - - void JustDied(Unit* /*killer*/) OVERRIDE - { - me->RemoveAurasDueToSpell(SPELL_TWILIGHT_TORMENT_VESP_ACO); + DoCast(me, SPELL_TWILIGHT_TORMENT_VESP_ACO); + } - // remove twilight torment on Vesperon - if (instance) + void JustDied(Unit* /*killer*/) OVERRIDE { + me->RemoveAurasDueToSpell(SPELL_TWILIGHT_TORMENT_VESP_ACO); + + // remove twilight torment on Vesperon if (Creature* vesperon = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VESPERON))) { instance->SetBossState(DATA_PORTAL_OPEN, NOT_STARTED); @@ -842,24 +764,23 @@ public: instance->DoRemoveAurasDueToSpellOnPlayers(57935); instance->DoRemoveAurasDueToSpellOnPlayers(58835); // Components of spell Twilight Torment } - } - void UpdateAI(uint32 /*diff*/) OVERRIDE - { - if (!UpdateVictim()) - return; + void UpdateAI(uint32 /*diff*/) OVERRIDE + { + if (!UpdateVictim()) + return; - DoMeleeAttackIfReady(); - } + DoMeleeAttackIfReady(); + } - private: - InstanceScript* instance; - }; + private: + InstanceScript* instance; + }; - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new npc_acolyte_of_vesperonAI(creature); - } + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return GetObsidianSanctumAI<npc_acolyte_of_vesperonAI>(creature); + } }; /*###### @@ -886,8 +807,7 @@ public: void Reset() OVERRIDE { - if (instance) - me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER, me); + me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER, me); events.ScheduleEvent(EVENT_TWILIGHT_EGGS, 20000); } @@ -928,7 +848,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_twilight_eggsAI(creature); + return GetObsidianSanctumAI<npc_twilight_eggsAI>(creature); } }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h index 8cfb3931372..d8f49a06578 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h @@ -15,8 +15,8 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef DEF_OBSIDIAN_SANCTUM_H -#define DEF_OBSIDIAN_SANCTUM_H +#ifndef OBSIDIAN_SANCTUM_H_ +#define OBSIDIAN_SANCTUM_H_ #define OSScriptName "instance_obsidian_sanctum" @@ -45,4 +45,10 @@ enum GameObjectIds GO_TWILIGHT_PORTAL = 193988 }; -#endif +template<class AI> +AI* GetObsidianSanctumAI(Creature* creature) +{ + return GetInstanceAI<AI>(creature, OSScriptName); +} + +#endif // OBSIDIAN_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 f6fd1c14a9b..7839ad3dde8 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp @@ -196,8 +196,7 @@ public: if (MovementType != POINT_MOTION_TYPE) return; - if (instance) - instance->SetData(BOSS_ARGENT_CHALLENGE_E, DONE); + instance->SetData(BOSS_ARGENT_CHALLENGE_E, DONE); me->DisappearAndDie(); } @@ -248,7 +247,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_eadricAI(creature); + return GetInstanceAI<boss_eadricAI>(creature); } }; @@ -320,8 +319,7 @@ public: if (MovementType != POINT_MOTION_TYPE || Point != 0) return; - if (instance) - instance->SetData(BOSS_ARGENT_CHALLENGE_P, DONE); + instance->SetData(BOSS_ARGENT_CHALLENGE_P, DONE); me->DisappearAndDie(); } @@ -406,7 +404,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_paletressAI(creature); + return GetInstanceAI<boss_paletressAI>(creature); } }; @@ -582,14 +580,13 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(DATA_ARGENT_SOLDIER_DEFEATED, instance->GetData(DATA_ARGENT_SOLDIER_DEFEATED) + 1); + instance->SetData(DATA_ARGENT_SOLDIER_DEFEATED, instance->GetData(DATA_ARGENT_SOLDIER_DEFEATED) + 1); } }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_argent_soldierAI(creature); + return GetInstanceAI<npc_argent_soldierAI>(creature); } }; 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 1922ad26060..29aac1cd40e 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp @@ -293,14 +293,13 @@ public: { DoCast(me, SPELL_KILL_CREDIT); - if (instance) - instance->SetData(BOSS_BLACK_KNIGHT, DONE); + instance->SetData(BOSS_BLACK_KNIGHT, DONE); } }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_black_knightAI(creature); + return GetInstanceAI<boss_black_knightAI>(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 07ecaadef77..b3d756dd29f 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -207,9 +207,6 @@ public: void WaypointReached(uint32 waypointId) OVERRIDE { - if (!instance) - return; - switch (waypointId) { case 2: @@ -300,7 +297,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new generic_vehicleAI_toc5AI(creature); + return GetInstanceAI<generic_vehicleAI_toc5AI>(creature); } }; @@ -426,14 +423,13 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(BOSS_GRAND_CHAMPIONS, DONE); + instance->SetData(BOSS_GRAND_CHAMPIONS, DONE); } }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_warrior_toc5AI(creature); + return GetInstanceAI<boss_warrior_toc5AI>(creature); } }; @@ -507,8 +503,7 @@ public: else if (instance && me->GetGUID() == instance->GetData64(DATA_GRAND_CHAMPION_3)) me->SetHomePosition(754.34f, 660.70f, 412.39f, 4.79f); - if (instance) - instance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS); + instance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS); EnterEvadeMode(); bHome = true; @@ -565,14 +560,13 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(BOSS_GRAND_CHAMPIONS, DONE); + instance->SetData(BOSS_GRAND_CHAMPIONS, DONE); } }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_mage_toc5AI(creature); + return GetInstanceAI<boss_mage_toc5AI>(creature); } }; @@ -652,8 +646,7 @@ public: else if (instance && me->GetGUID() == instance->GetData64(DATA_GRAND_CHAMPION_3)) me->SetHomePosition(754.34f, 660.70f, 412.39f, 4.79f); - if (instance) - instance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS); + instance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS); EnterEvadeMode(); bHome = true; @@ -712,14 +705,13 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(BOSS_GRAND_CHAMPIONS, DONE); + instance->SetData(BOSS_GRAND_CHAMPIONS, DONE); } }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_shaman_toc5AI(creature); + return GetInstanceAI<boss_shaman_toc5AI>(creature); } }; @@ -798,8 +790,7 @@ public: else if (instance && me->GetGUID() == instance->GetData64(DATA_GRAND_CHAMPION_3)) me->SetHomePosition(754.34f, 660.70f, 412.39f, 4.79f); - if (instance) - instance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS); + instance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS); EnterEvadeMode(); bHome = true; @@ -868,14 +859,13 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(BOSS_GRAND_CHAMPIONS, DONE); + instance->SetData(BOSS_GRAND_CHAMPIONS, DONE); } }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_hunter_toc5AI(creature); + return GetInstanceAI<boss_hunter_toc5AI>(creature); } }; @@ -946,8 +936,7 @@ public: else if (instance && me->GetGUID() == instance->GetData64(DATA_GRAND_CHAMPION_3)) me->SetHomePosition(754.34f, 660.70f, 412.39f, 4.79f); - if (instance) - instance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS); + instance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS); EnterEvadeMode(); bHome = true; @@ -989,14 +978,13 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(BOSS_GRAND_CHAMPIONS, DONE); + instance->SetData(BOSS_GRAND_CHAMPIONS, DONE); } }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_rouge_toc5AI(creature); + return GetInstanceAI<boss_rouge_toc5AI>(creature); } }; 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 00b312aa407..3f01e055141 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 @@ -236,11 +236,8 @@ public: if (Vehicle* pVehicle = pBoss->GetVehicleKit()) if (Unit* unit = pVehicle->GetPassenger(0)) uiGrandChampionBoss1 = unit->GetGUID(); - if (instance) - { - instance->SetData64(DATA_GRAND_CHAMPION_VEHICLE_1, uiVehicle1GUID); - instance->SetData64(DATA_GRAND_CHAMPION_1, uiGrandChampionBoss1); - } + instance->SetData64(DATA_GRAND_CHAMPION_VEHICLE_1, uiVehicle1GUID); + instance->SetData64(DATA_GRAND_CHAMPION_1, uiGrandChampionBoss1); pBoss->AI()->SetData(1, 0); break; } @@ -251,11 +248,8 @@ public: if (Vehicle* pVehicle = pBoss->GetVehicleKit()) if (Unit* unit = pVehicle->GetPassenger(0)) uiGrandChampionBoss2 = unit->GetGUID(); - if (instance) - { - instance->SetData64(DATA_GRAND_CHAMPION_VEHICLE_2, uiVehicle2GUID); - instance->SetData64(DATA_GRAND_CHAMPION_2, uiGrandChampionBoss2); - } + instance->SetData64(DATA_GRAND_CHAMPION_VEHICLE_2, uiVehicle2GUID); + instance->SetData64(DATA_GRAND_CHAMPION_2, uiGrandChampionBoss2); pBoss->AI()->SetData(2, 0); break; } @@ -266,11 +260,8 @@ public: if (Vehicle* pVehicle = pBoss->GetVehicleKit()) if (Unit* unit = pVehicle->GetPassenger(0)) uiGrandChampionBoss3 = unit->GetGUID(); - if (instance) - { - instance->SetData64(DATA_GRAND_CHAMPION_VEHICLE_3, uiVehicle3GUID); - instance->SetData64(DATA_GRAND_CHAMPION_3, uiGrandChampionBoss3); - } + instance->SetData64(DATA_GRAND_CHAMPION_VEHICLE_3, uiVehicle3GUID); + instance->SetData64(DATA_GRAND_CHAMPION_3, uiGrandChampionBoss3); pBoss->AI()->SetData(3, 0); break; } @@ -359,9 +350,6 @@ public: void StartEncounter() { - if (!instance) - return; - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); if (instance->GetData(BOSS_BLACK_KNIGHT) == NOT_STARTED) @@ -472,7 +460,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_announcer_toc5AI(creature); + return GetInstanceAI<npc_announcer_toc5AI>(creature); } bool OnGossipHello(Player* player, Creature* creature) OVERRIDE 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 32a8a2fe379..1f1b7f3ff3b 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -201,8 +201,7 @@ class boss_anubarak_trial : public CreatureScript if (who->GetTypeId() == TYPEID_PLAYER) { Talk(SAY_KILL_PLAYER); - if (instance) - instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); + instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); } } @@ -218,8 +217,7 @@ class boss_anubarak_trial : public CreatureScript void JustReachedHome() OVERRIDE { - if (instance) - instance->SetBossState(BOSS_ANUBARAK, FAIL); + instance->SetBossState(BOSS_ANUBARAK, FAIL); //Summon Scarab Swarms neutral at random places for (int i = 0; i < 10; i++) if (Creature* temp = me->SummonCreature(NPC_SCARAB, AnubarakLoc[1].GetPositionX()+urand(0, 50)-25, AnubarakLoc[1].GetPositionY()+urand(0, 50)-25, AnubarakLoc[1].GetPositionZ())) @@ -245,7 +243,6 @@ class boss_anubarak_trial : public CreatureScript void JustSummoned(Creature* summoned) OVERRIDE { - Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true); switch (summoned->GetEntry()) { case NPC_BURROW: @@ -255,9 +252,12 @@ class boss_anubarak_trial : public CreatureScript summoned->SetDisplayId(summoned->GetCreatureTemplate()->Modelid2); break; case NPC_SPIKE: - summoned->CombatStart(target); summoned->SetDisplayId(summoned->GetCreatureTemplate()->Modelid1); - Talk(EMOTE_SPIKE, target); + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) + { + summoned->CombatStart(target); + Talk(EMOTE_SPIKE, target); + } break; default: break; @@ -423,7 +423,7 @@ class boss_anubarak_trial : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_anubarak_trialAI(creature); + return GetInstanceAI<boss_anubarak_trialAI>(creature); }; }; @@ -495,7 +495,7 @@ class npc_swarm_scarab : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_swarm_scarabAI(creature); + return GetInstanceAI<npc_swarm_scarabAI>(creature); }; }; @@ -583,7 +583,7 @@ class npc_nerubian_burrower : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_nerubian_burrowerAI(creature); + return GetInstanceAI<npc_nerubian_burrowerAI>(creature); }; }; 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 4c73d1a5f55..f510e2be99f 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp @@ -539,7 +539,7 @@ class boss_toc_champion_controller : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_toc_champion_controllerAI(creature); + return GetInstanceAI<boss_toc_champion_controllerAI>(creature); } }; @@ -559,9 +559,8 @@ struct boss_faction_championsAI : public BossAI void JustReachedHome() OVERRIDE { - if (instance) - if (Creature* pChampionController = Unit::GetCreature((*me), instance->GetData64(NPC_CHAMPIONS_CONTROLLER))) - pChampionController->AI()->SetData(2, FAIL); + if (Creature* pChampionController = Unit::GetCreature((*me), instance->GetData64(NPC_CHAMPIONS_CONTROLLER))) + pChampionController->AI()->SetData(2, FAIL); me->DespawnOrUnsummon(); } @@ -610,18 +609,16 @@ struct boss_faction_championsAI : public BossAI void JustDied(Unit* /*killer*/) OVERRIDE { if (_aiType != AI_PET) - if (instance) - if (Creature* pChampionController = Unit::GetCreature((*me), instance->GetData64(NPC_CHAMPIONS_CONTROLLER))) - pChampionController->AI()->SetData(2, DONE); + if (Creature* pChampionController = Unit::GetCreature((*me), instance->GetData64(NPC_CHAMPIONS_CONTROLLER))) + pChampionController->AI()->SetData(2, DONE); } void EnterCombat(Unit* /*who*/) OVERRIDE { DoCast(me, SPELL_ANTI_AOE, true); _EnterCombat(); - if (instance) - if (Creature* pChampionController = Unit::GetCreature((*me), instance->GetData64(NPC_CHAMPIONS_CONTROLLER))) - pChampionController->AI()->SetData(2, IN_PROGRESS); + if (Creature* pChampionController = Unit::GetCreature((*me), instance->GetData64(NPC_CHAMPIONS_CONTROLLER))) + pChampionController->AI()->SetData(2, IN_PROGRESS); } void KilledUnit(Unit* who) OVERRIDE @@ -635,20 +632,17 @@ struct boss_faction_championsAI : public BossAI if (Player* player = players.begin()->GetSource()) TeamInInstance = player->GetTeam(); - if (instance) + if (TeamInInstance == ALLIANCE) { - if (TeamInInstance == ALLIANCE) - { - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_VARIAN))) - temp->AI()->Talk(SAY_KILL_PLAYER); - } - else - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_GARROSH))) - temp->AI()->Talk(SAY_KILL_PLAYER); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_VARIAN))) + temp->AI()->Talk(SAY_KILL_PLAYER); + } + else + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_GARROSH))) + temp->AI()->Talk(SAY_KILL_PLAYER); - instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); - } + instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); } } @@ -839,7 +833,7 @@ class npc_toc_druid : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_druidAI(creature); + return GetInstanceAI<npc_toc_druidAI>(creature); } }; @@ -932,7 +926,7 @@ class npc_toc_shaman : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_shamanAI(creature); + return GetInstanceAI<npc_toc_shamanAI>(creature); } }; @@ -1036,7 +1030,7 @@ class npc_toc_paladin : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_paladinAI(creature); + return GetInstanceAI<npc_toc_paladinAI>(creature); } }; @@ -1121,7 +1115,7 @@ class npc_toc_priest : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_priestAI(creature); + return GetInstanceAI<npc_toc_priestAI>(creature); } }; @@ -1219,7 +1213,7 @@ class npc_toc_shadow_priest : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_shadow_priestAI(creature); + return GetInstanceAI<npc_toc_shadow_priestAI>(creature); } }; @@ -1310,7 +1304,7 @@ class npc_toc_warlock : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_warlockAI(creature); + return GetInstanceAI<npc_toc_warlockAI>(creature); } }; @@ -1404,7 +1398,7 @@ class npc_toc_mage : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_mageAI(creature); + return GetInstanceAI<npc_toc_mageAI>(creature); } }; @@ -1506,7 +1500,7 @@ class npc_toc_hunter : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_hunterAI(creature); + return GetInstanceAI<npc_toc_hunterAI>(creature); } }; @@ -1598,7 +1592,7 @@ class npc_toc_boomkin : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_boomkinAI(creature); + return GetInstanceAI<npc_toc_boomkinAI>(creature); } }; @@ -1702,7 +1696,7 @@ class npc_toc_warrior : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_warriorAI(creature); + return GetInstanceAI<npc_toc_warriorAI>(creature); } }; @@ -1798,7 +1792,7 @@ class npc_toc_dk : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_dkAI(creature); + return GetInstanceAI<npc_toc_dkAI>(creature); } }; @@ -1903,7 +1897,7 @@ class npc_toc_rogue : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_rogueAI(creature); + return GetInstanceAI<npc_toc_rogueAI>(creature); } }; @@ -2029,7 +2023,7 @@ class npc_toc_enh_shaman : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_enh_shamanAI(creature); + return GetInstanceAI<npc_toc_enh_shamanAI>(creature); } }; @@ -2135,7 +2129,7 @@ class npc_toc_retro_paladin : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_retro_paladinAI(creature); + return GetInstanceAI<npc_toc_retro_paladinAI>(creature); } }; @@ -2187,7 +2181,7 @@ class npc_toc_pet_warlock : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_pet_warlockAI(creature); + return GetInstanceAI<npc_toc_pet_warlockAI>(creature); } }; @@ -2227,7 +2221,7 @@ class npc_toc_pet_hunter : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toc_pet_hunterAI(creature); + return GetInstanceAI<npc_toc_pet_hunterAI>(creature); } }; 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 3fa9ac7387f..7fbdc30c0e5 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp @@ -116,8 +116,7 @@ class boss_jaraxxus : public CreatureScript void JustReachedHome() OVERRIDE { _JustReachedHome(); - if (instance) - instance->SetBossState(BOSS_JARAXXUS, FAIL); + instance->SetBossState(BOSS_JARAXXUS, FAIL); DoCast(me, SPELL_JARAXXUS_CHAINS); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); } @@ -127,8 +126,7 @@ class boss_jaraxxus : public CreatureScript if (who->GetTypeId() == TYPEID_PLAYER) { Talk(SAY_KILL_PLAYER); - if (instance) - instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); + instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); } } @@ -214,7 +212,7 @@ class boss_jaraxxus : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_jaraxxusAI(creature); + return GetInstanceAI<boss_jaraxxusAI>(creature); } }; @@ -250,7 +248,7 @@ class npc_legion_flame : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_legion_flameAI(creature); + return GetInstanceAI<npc_legion_flameAI>(creature); } }; @@ -355,7 +353,7 @@ class npc_fel_infernal : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_fel_infernalAI(creature); + return GetInstanceAI<npc_fel_infernalAI>(creature); } }; @@ -488,7 +486,7 @@ class npc_mistress_of_pain : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_mistress_of_painAI(creature); + return GetInstanceAI<npc_mistress_of_painAI>(creature); } }; 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 7843808a6a3..0209c1d9ac8 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp @@ -195,17 +195,14 @@ class boss_gormok : public CreatureScript void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(TYPE_NORTHREND_BEASTS, GORMOK_DONE); + instance->SetData(TYPE_NORTHREND_BEASTS, GORMOK_DONE); } void JustReachedHome() OVERRIDE { - if (instance) - { - instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR)); - instance->SetData(TYPE_NORTHREND_BEASTS, FAIL); - } + instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR)); + instance->SetData(TYPE_NORTHREND_BEASTS, FAIL); + me->DespawnOrUnsummon(); } @@ -284,7 +281,7 @@ class boss_gormok : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_gormokAI(creature); + return GetInstanceAI<boss_gormokAI>(creature); } }; @@ -454,7 +451,7 @@ class npc_snobold_vassal : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_snobold_vassalAI(creature); + return GetInstanceAI<npc_snobold_vassalAI>(creature); } }; @@ -490,7 +487,7 @@ class npc_firebomb : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_firebombAI(creature); + return GetInstanceAI<npc_firebombAI>(creature); } }; @@ -514,20 +511,17 @@ struct boss_jormungarAI : public BossAI void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) + if (Creature* otherWorm = Unit::GetCreature(*me, instance->GetData64(OtherWormEntry))) { - if (Creature* otherWorm = Unit::GetCreature(*me, instance->GetData64(OtherWormEntry))) + if (!otherWorm->IsAlive()) { - if (!otherWorm->IsAlive()) - { - instance->SetData(TYPE_NORTHREND_BEASTS, SNAKES_DONE); + instance->SetData(TYPE_NORTHREND_BEASTS, SNAKES_DONE); - me->DespawnOrUnsummon(); - otherWorm->DespawnOrUnsummon(); - } - else - instance->SetData(TYPE_NORTHREND_BEASTS, SNAKES_SPECIAL); + me->DespawnOrUnsummon(); + otherWorm->DespawnOrUnsummon(); } + else + instance->SetData(TYPE_NORTHREND_BEASTS, SNAKES_SPECIAL); } } @@ -543,16 +537,14 @@ struct boss_jormungarAI : public BossAI void KilledUnit(Unit* who) OVERRIDE { if (who->GetTypeId() == TYPEID_PLAYER) - if (instance) - instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); + instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); } void EnterCombat(Unit* /*who*/) OVERRIDE { _EnterCombat(); me->SetInCombatWithZone(); - if (instance) - instance->SetData(TYPE_NORTHREND_BEASTS, SNAKES_IN_PROGRESS); + instance->SetData(TYPE_NORTHREND_BEASTS, SNAKES_IN_PROGRESS); } void UpdateAI(uint32 diff) OVERRIDE @@ -712,7 +704,7 @@ class boss_acidmaw : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_acidmawAI(creature); + return GetInstanceAI<boss_acidmawAI>(creature); } }; @@ -770,8 +762,7 @@ class boss_dreadscale : public CreatureScript void JustReachedHome() OVERRIDE { - if (instance) - instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR)); + instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR)); boss_jormungarAI::JustReachedHome(); } @@ -779,7 +770,7 @@ class boss_dreadscale : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_dreadscaleAI(creature); + return GetInstanceAI<boss_dreadscaleAI>(creature); } }; @@ -820,7 +811,7 @@ class npc_slime_pool : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_slime_poolAI(creature); + return GetInstanceAI<npc_slime_poolAI>(creature); } }; @@ -873,7 +864,7 @@ class boss_icehowl : public CreatureScript events.ScheduleEvent(EVENT_MASSIVE_CRASH, 30*IN_MILLISECONDS); _movementStarted = false; _movementFinish = false; - _trampleCasted = false; + _trampleCast = false; _trampleTargetGUID = 0; _trampleTargetX = 0; _trampleTargetY = 0; @@ -884,8 +875,7 @@ class boss_icehowl : public CreatureScript void JustDied(Unit* /*killer*/) OVERRIDE { _JustDied(); - if (instance) - instance->SetData(TYPE_NORTHREND_BEASTS, ICEHOWL_DONE); + instance->SetData(TYPE_NORTHREND_BEASTS, ICEHOWL_DONE); } void MovementInform(uint32 type, uint32 pointId) OVERRIDE @@ -933,11 +923,8 @@ class boss_icehowl : public CreatureScript void JustReachedHome() OVERRIDE { - if (instance) - { - instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR)); - instance->SetData(TYPE_NORTHREND_BEASTS, FAIL); - } + instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR)); + instance->SetData(TYPE_NORTHREND_BEASTS, FAIL); me->DespawnOrUnsummon(); } @@ -945,26 +932,24 @@ class boss_icehowl : public CreatureScript { if (who->GetTypeId() == TYPEID_PLAYER) { - if (instance) - instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); + instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); } } void EnterCombat(Unit* /*who*/) OVERRIDE { _EnterCombat(); - if (instance) - instance->SetData(TYPE_NORTHREND_BEASTS, ICEHOWL_IN_PROGRESS); + instance->SetData(TYPE_NORTHREND_BEASTS, ICEHOWL_IN_PROGRESS); } void SpellHitTarget(Unit* target, SpellInfo const* spell) OVERRIDE { if (spell->Id == SPELL_TRAMPLE && target->GetTypeId() == TYPEID_PLAYER) { - if (!_trampleCasted) + if (!_trampleCast) { DoCast(me, SPELL_FROTHING_RAGE, true); - _trampleCasted = true; + _trampleCast = true; } } } @@ -1025,7 +1010,7 @@ class boss_icehowl : public CreatureScript me->AttackStop(); _trampleTargetGUID = target->GetGUID(); me->SetTarget(_trampleTargetGUID); - _trampleCasted = false; + _trampleCast = false; SetCombatMovement(false); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE); me->GetMotionMaster()->Clear(); @@ -1047,7 +1032,7 @@ class boss_icehowl : public CreatureScript { me->StopMoving(); me->AttackStop(); - _trampleCasted = false; + _trampleCast = false; _movementStarted = true; _trampleTargetX = target->GetPositionX(); _trampleTargetY = target->GetPositionY(); @@ -1100,7 +1085,7 @@ class boss_icehowl : public CreatureScript } break; case 6: - if (!_trampleCasted) + if (!_trampleCast) { DoCast(me, SPELL_STAGGERED_DAZE); Talk(EMOTE_TRAMPLE_CRASH); @@ -1131,13 +1116,13 @@ class boss_icehowl : public CreatureScript uint64 _trampleTargetGUID; bool _movementStarted; bool _movementFinish; - bool _trampleCasted; + bool _trampleCast; uint8 _stage; }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_icehowlAI(creature); + return GetInstanceAI<boss_icehowlAI>(creature); } }; 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 0674696a033..e81cfee1b98 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -165,8 +165,7 @@ struct boss_twin_baseAI : public BossAI void JustReachedHome() OVERRIDE { - if (instance) - instance->SetBossState(BOSS_VALKIRIES, FAIL); + instance->SetBossState(BOSS_VALKIRIES, FAIL); summons.DespawnAll(); me->DespawnOrUnsummon(); @@ -193,8 +192,7 @@ struct boss_twin_baseAI : public BossAI if (who->GetTypeId() == TYPEID_PLAYER) { Talk(SAY_KILL_PLAYER); - if (instance) - instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); + instance->SetData(DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE, 0); } } @@ -227,21 +225,18 @@ struct boss_twin_baseAI : public BossAI void JustDied(Unit* /*killer*/) OVERRIDE { Talk(SAY_DEATH); - if (instance) + if (Creature* pSister = GetSister()) { - if (Creature* pSister = GetSister()) + if (!pSister->IsAlive()) { - if (!pSister->IsAlive()) - { - me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); - pSister->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); - _JustDied(); - } - else - { - me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); - instance->SetBossState(BOSS_VALKIRIES, SPECIAL); - } + me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); + pSister->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); + _JustDied(); + } + else + { + me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); + instance->SetBossState(BOSS_VALKIRIES, SPECIAL); } } summons.DespawnAll(); @@ -256,15 +251,12 @@ struct boss_twin_baseAI : public BossAI void EnterCombat(Unit* /*who*/) OVERRIDE { me->SetInCombatWithZone(); - if (instance) + if (Creature* pSister = GetSister()) { - if (Creature* pSister = GetSister()) - { - me->AddAura(MyEmphatySpellId, pSister); - pSister->SetInCombatWithZone(); - } - instance->SetBossState(BOSS_VALKIRIES, IN_PROGRESS); + me->AddAura(MyEmphatySpellId, pSister); + pSister->SetInCombatWithZone(); } + instance->SetBossState(BOSS_VALKIRIES, IN_PROGRESS); Talk(SAY_AGGRO); DoCast(me, SurgeSpellId); @@ -420,15 +412,13 @@ class boss_fjola : public CreatureScript TouchSpellId = SPELL_LIGHT_TOUCH; SpikeSpellId = SPELL_LIGHT_TWIN_SPIKE; - if (instance) - instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, EVENT_START_TWINS_FIGHT); + instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, EVENT_START_TWINS_FIGHT); boss_twin_baseAI::Reset(); } void EnterCombat(Unit* who) OVERRIDE { - if (instance) - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, EVENT_START_TWINS_FIGHT); + instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, EVENT_START_TWINS_FIGHT); me->SummonCreature(NPC_BULLET_CONTROLLER, ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY(), ToCCommonLoc[1].GetPositionZ(), 0.0f, TEMPSUMMON_MANUAL_DESPAWN); boss_twin_baseAI::EnterCombat(who); @@ -442,8 +432,7 @@ class boss_fjola : public CreatureScript void JustReachedHome() OVERRIDE { - if (instance) - instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR)); + instance->DoUseDoorOrButton(instance->GetData64(GO_MAIN_GATE_DOOR)); boss_twin_baseAI::JustReachedHome(); } @@ -451,7 +440,7 @@ class boss_fjola : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_fjolaAI(creature); + return GetInstanceAI<boss_fjolaAI>(creature); } }; @@ -486,7 +475,7 @@ class boss_eydis : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_eydisAI(creature); + return GetInstanceAI<boss_eydisAI>(creature); } }; 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 36cf9432d96..cd3a4e26924 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 @@ -357,7 +357,7 @@ class boss_lich_king_toc : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_lich_king_tocAI(creature); + return GetInstanceAI<boss_lich_king_tocAI>(creature); } }; @@ -531,7 +531,7 @@ class npc_fizzlebang_toc : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_fizzlebang_tocAI(creature); + return GetInstanceAI<npc_fizzlebang_tocAI>(creature); } }; @@ -819,7 +819,7 @@ class npc_tirion_toc : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_tirion_tocAI(creature); + return GetInstanceAI<npc_tirion_tocAI>(creature); } }; @@ -903,7 +903,7 @@ class npc_garrosh_toc : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_garrosh_tocAI(creature); + return GetInstanceAI<npc_garrosh_tocAI>(creature); } }; @@ -987,7 +987,7 @@ class npc_varian_toc : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_varian_tocAI(creature); + return GetInstanceAI<npc_varian_tocAI>(creature); } }; diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp index f8f0752184e..42f408861e1 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp @@ -27,7 +27,7 @@ enum Spells { SPELL_BELLOWING_ROAR = 22686, // fears the group, can be resisted/dispelled SPELL_GRIEVOUS_BITE = 48920, - SPELL_MANGLING_SLASH = 48873, // casted on the current tank, adds debuf + SPELL_MANGLING_SLASH = 48873, // cast on the current tank, adds debuf SPELL_FEARSOME_ROAR = 48849, SPELL_PIERCING_SLASH = 48878, // debuff --> Armor reduced by 75% SPELL_RAPTOR_CALL = 59416, // dummy diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp index efca060b67c..78399749fe6 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp @@ -32,7 +32,7 @@ enum Spells SPELL_CURSE_OF_LIFE = 49527, SPELL_RAIN_OF_FIRE = 49518, SPELL_SHADOW_VOLLEY = 49528, - SPELL_DECAY_FLESH = 49356, // casted at end of phase 1, starts phase 2 + SPELL_DECAY_FLESH = 49356, // cast at end of phase 1, starts phase 2 // Flesh Spells (phase 2) SPELL_GIFT_OF_THARON_JA = 52509, SPELL_CLEAR_GIFT_OF_THARON_JA = 53242, 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 d9e34ee2af3..445e3fa5f68 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp @@ -170,7 +170,7 @@ class instance_drak_tharon_keep : public InstanceMapScript return saveStream.str(); } - void Load(char const* str) OVERRIDE OVERRIDE + void Load(char const* str) OVERRIDE { if (!str) { diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp index 2dedc986b0c..5ef97aa87cf 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp @@ -188,7 +188,7 @@ class boss_bronjahm : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_bronjahmAI(creature); + return GetInstanceAI<boss_bronjahmAI>(creature); } }; @@ -209,19 +209,16 @@ class npc_corrupted_soul_fragment : public CreatureScript if (type != CHASE_MOTION_TYPE) return; - if (instance) + if (TempSummon* summ = me->ToTempSummon()) { - if (TempSummon* summ = me->ToTempSummon()) - { - uint64 BronjahmGUID = instance->GetData64(DATA_BRONJAHM); - if (GUID_LOPART(BronjahmGUID) != id) - return; + uint64 BronjahmGUID = instance->GetData64(DATA_BRONJAHM); + if (GUID_LOPART(BronjahmGUID) != id) + return; - if (Creature* bronjahm = ObjectAccessor::GetCreature(*me, BronjahmGUID)) - me->CastSpell(bronjahm, SPELL_CONSUME_SOUL, true); + if (Creature* bronjahm = ObjectAccessor::GetCreature(*me, BronjahmGUID)) + me->CastSpell(bronjahm, SPELL_CONSUME_SOUL, true); - summ->UnSummon(); - } + summ->UnSummon(); } } @@ -231,7 +228,7 @@ class npc_corrupted_soul_fragment : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_corrupted_soul_fragmentAI(creature); + return GetInstanceAI<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 7d923e7686f..52ab910fb9e 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 @@ -345,7 +345,7 @@ class boss_devourer_of_souls : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_devourer_of_soulsAI(creature); + return GetInstanceAI<boss_devourer_of_soulsAI>(creature); } }; @@ -480,9 +480,7 @@ class spell_devourer_of_souls_mirrored_soul_target_selector : public SpellScript class achievement_three_faced : public AchievementCriteriaScript { public: - achievement_three_faced() : AchievementCriteriaScript("achievement_three_faced") - { - } + achievement_three_faced() : AchievementCriteriaScript("achievement_three_faced") { } bool OnCheck(Player* /*player*/, Unit* target) OVERRIDE { 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 cfa149c134f..4d2a87a3850 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp @@ -113,9 +113,6 @@ public: { if (phase == PHASE_INTRO) { - if (!instance) - return; - events.Update(diff); switch (events.ExecuteEvent()) { @@ -193,7 +190,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_sylvanas_fosAI(creature); + return GetInstanceAI<npc_sylvanas_fosAI>(creature); } }; @@ -239,9 +236,6 @@ public: { if (phase == PHASE_INTRO) { - if (!instance) - return; - events.Update(diff); switch (events.ExecuteEvent()) { @@ -330,7 +324,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_jaina_fosAI(creature); + return GetInstanceAI<npc_jaina_fosAI>(creature); } }; diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp index e2d285f7306..a7111a1d07f 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp @@ -52,7 +52,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_falricAI(creature); + return GetInstanceAI<boss_falricAI>(creature); } struct boss_falricAI : public boss_horAI @@ -67,15 +67,13 @@ public: uiHopelessnessCount = 0; - if (instance) - instance->SetBossState(DATA_FALRIC_EVENT, NOT_STARTED); + instance->SetBossState(DATA_FALRIC_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetBossState(DATA_FALRIC_EVENT, IN_PROGRESS); + instance->SetBossState(DATA_FALRIC_EVENT, IN_PROGRESS); events.ScheduleEvent(EVENT_QUIVERING_STRIKE, 23000); events.ScheduleEvent(EVENT_IMPENDING_DESPAIR, 9000); @@ -86,8 +84,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetBossState(DATA_FALRIC_EVENT, DONE); + instance->SetBossState(DATA_FALRIC_EVENT, DONE); } void KilledUnit(Unit* /*victim*/) OVERRIDE diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp index a87b7b6d93d..ae448bdc65c 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp @@ -51,7 +51,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_marwynAI(creature); + return GetInstanceAI<boss_marwynAI>(creature); } struct boss_marwynAI : public boss_horAI @@ -62,15 +62,13 @@ public: { boss_horAI::Reset(); - if (instance) - instance->SetBossState(DATA_MARWYN_EVENT, NOT_STARTED); + instance->SetBossState(DATA_MARWYN_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetBossState(DATA_MARWYN_EVENT, IN_PROGRESS); + instance->SetBossState(DATA_MARWYN_EVENT, IN_PROGRESS); events.ScheduleEvent(EVENT_OBLITERATE, 30000); /// @todo Check timer events.ScheduleEvent(EVENT_WELL_OF_CORRUPTION, 13000); @@ -82,8 +80,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetBossState(DATA_MARWYN_EVENT, DONE); + instance->SetBossState(DATA_MARWYN_EVENT, DONE); } void KilledUnit(Unit* /*victim*/) OVERRIDE 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 96b772df5a9..9e4fe02a361 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -1283,7 +1283,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ghostly_priestAI(creature); + return GetInstanceAI<npc_ghostly_priestAI>(creature); } }; @@ -1355,7 +1355,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_phantom_mageAI(creature); + return GetInstanceAI<npc_phantom_mageAI>(creature); } }; @@ -1377,7 +1377,7 @@ public: void EnterEvadeMode() OVERRIDE { - if (!me->GetOwner()->HasAura(AURA_HALLUCINATION)) + if (me->GetOwner() && !me->GetOwner()->HasAura(AURA_HALLUCINATION)) npc_phantom_mage::npc_phantom_mageAI::EnterEvadeMode(); } @@ -1447,7 +1447,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_shadowy_mercenaryAI(creature); + return GetInstanceAI<npc_shadowy_mercenaryAI>(creature); } }; @@ -1499,7 +1499,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_spectral_footmanAI(creature); + return GetInstanceAI<npc_spectral_footmanAI>(creature); } }; @@ -1558,7 +1558,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_tortured_riflemanAI(creature); + return GetInstanceAI<npc_tortured_riflemanAI>(creature); } }; @@ -1674,7 +1674,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_frostworn_generalAI(creature); + return GetInstanceAI<npc_frostworn_generalAI>(creature); } }; @@ -1901,7 +1901,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_raging_ghoulAI(creature); + return GetInstanceAI<npc_raging_ghoulAI>(creature); } }; @@ -2021,7 +2021,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_risen_witch_doctorAI(creature); + return GetInstanceAI<npc_risen_witch_doctorAI>(creature); } }; @@ -2111,7 +2111,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_lumbering_abominationAI(creature); + return GetInstanceAI<npc_lumbering_abominationAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp index 93030492caf..c8e58ca700c 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp @@ -248,7 +248,7 @@ class boss_drakkari_colossus : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_drakkari_colossusAI(creature); + return GetInstanceAI<boss_drakkari_colossusAI>(creature); } }; @@ -278,11 +278,8 @@ class boss_drakkari_elemental : public CreatureScript if (killer == me) return; - if (instance) - { - if (Creature* colossus = Unit::GetCreature(*me, instance->GetData64(DATA_DRAKKARI_COLOSSUS))) - killer->Kill(colossus); - } + if (Creature* colossus = Unit::GetCreature(*me, instance->GetData64(DATA_DRAKKARI_COLOSSUS))) + killer->Kill(colossus); } void UpdateAI(uint32 diff) OVERRIDE @@ -317,12 +314,9 @@ class boss_drakkari_elemental : public CreatureScript { case ACTION_RETURN_TO_COLOSSUS: DoCast(SPELL_SURGE_VISUAL); - if (instance) - { - if (Creature* colossus = Unit::GetCreature(*me, instance->GetData64(DATA_DRAKKARI_COLOSSUS))) - // what if the elemental is more than 80 yards from drakkari colossus ? - DoCast(colossus, SPELL_MERGE, true); - } + if (Creature* colossus = Unit::GetCreature(*me, instance->GetData64(DATA_DRAKKARI_COLOSSUS))) + // what if the elemental is more than 80 yards from drakkari colossus ? + DoCast(colossus, SPELL_MERGE, true); break; } } @@ -381,7 +375,7 @@ class boss_drakkari_elemental : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_drakkari_elementalAI(creature); + return GetInstanceAI<boss_drakkari_elementalAI>(creature); } }; @@ -392,7 +386,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_living_mojoAI(creature); + return GetInstanceAI<npc_living_mojoAI>(creature); } struct npc_living_mojoAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp index c11db7146d1..71d1748a3ea 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp @@ -37,7 +37,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_eckAI(creature); + return GetInstanceAI<boss_eckAI>(creature); } struct boss_eckAI : public ScriptedAI @@ -65,14 +65,12 @@ public: bBerserk = false; - if (instance) - instance->SetData(DATA_ECK_THE_FEROCIOUS_EVENT, NOT_STARTED); + instance->SetData(DATA_ECK_THE_FEROCIOUS_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { - if (instance) - instance->SetData(DATA_ECK_THE_FEROCIOUS_EVENT, IN_PROGRESS); + instance->SetData(DATA_ECK_THE_FEROCIOUS_EVENT, IN_PROGRESS); } void UpdateAI(uint32 diff) OVERRIDE @@ -127,8 +125,7 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(DATA_ECK_THE_FEROCIOUS_EVENT, DONE); + instance->SetData(DATA_ECK_THE_FEROCIOUS_EVENT, DONE); } }; @@ -141,7 +138,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ruins_dwellerAI(creature); + return GetInstanceAI<npc_ruins_dwellerAI>(creature); } struct npc_ruins_dwellerAI : public ScriptedAI @@ -155,12 +152,9 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - { - instance->SetData64(DATA_RUIN_DWELLER_DIED, me->GetGUID()); - if (instance->GetData(DATA_ALIVE_RUIN_DWELLERS) == 0) - me->SummonCreature(CREATURE_ECK, EckSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300*IN_MILLISECONDS); - } + instance->SetData64(DATA_RUIN_DWELLER_DIED, me->GetGUID()); + if (instance->GetData(DATA_ALIVE_RUIN_DWELLERS) == 0) + me->SummonCreature(CREATURE_ECK, EckSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300*IN_MILLISECONDS); } }; diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp index 7a5520ab145..5a3c4b8c694 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp @@ -70,7 +70,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_gal_darahAI(creature); + return GetInstanceAI<boss_gal_darahAI>(creature); } struct boss_gal_darahAI : public ScriptedAI @@ -118,16 +118,14 @@ public: me->SetDisplayId(DISPLAY_TROLL); - if (instance) - instance->SetData(DATA_GAL_DARAH_EVENT, NOT_STARTED); + instance->SetData(DATA_GAL_DARAH_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetData(DATA_GAL_DARAH_EVENT, IN_PROGRESS); + instance->SetData(DATA_GAL_DARAH_EVENT, IN_PROGRESS); } void UpdateAI(uint32 diff) OVERRIDE @@ -269,8 +267,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_GAL_DARAH_EVENT, DONE); + instance->SetData(DATA_GAL_DARAH_EVENT, DONE); } void KilledUnit(Unit* victim) OVERRIDE diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp index 0ccaea316ef..a69e236c6e9 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp @@ -54,7 +54,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_moorabiAI(creature); + return GetInstanceAI<boss_moorabiAI>(creature); } struct boss_moorabiAI : public ScriptedAI @@ -81,8 +81,7 @@ public: uiTransformationTImer = 12*IN_MILLISECONDS; bPhase = false; - if (instance) - instance->SetData(DATA_MOORABI_EVENT, NOT_STARTED); + instance->SetData(DATA_MOORABI_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -90,8 +89,7 @@ public: Talk(SAY_AGGRO); DoCast(me, SPELL_MOJO_FRENZY, true); - if (instance) - instance->SetData(DATA_MOORABI_EVENT, IN_PROGRESS); + instance->SetData(DATA_MOORABI_EVENT, IN_PROGRESS); } void UpdateAI(uint32 uiDiff) OVERRIDE @@ -157,8 +155,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_MOORABI_EVENT, DONE); + instance->SetData(DATA_MOORABI_EVENT, DONE); } void KilledUnit(Unit* victim) OVERRIDE diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp index 441149c6dd8..25989ca9652 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp @@ -76,7 +76,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_slad_ranAI(creature); + return GetInstanceAI<boss_slad_ranAI>(creature); } struct boss_slad_ranAI : public ScriptedAI @@ -109,16 +109,14 @@ public: lSummons.DespawnAll(); - if (instance) - instance->SetData(DATA_SLAD_RAN_EVENT, NOT_STARTED); + instance->SetData(DATA_SLAD_RAN_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetData(DATA_SLAD_RAN_EVENT, IN_PROGRESS); + instance->SetData(DATA_SLAD_RAN_EVENT, IN_PROGRESS); } void UpdateAI(uint32 diff) OVERRIDE @@ -180,13 +178,13 @@ public: Talk(SAY_DEATH); lSummons.DespawnAll(); - if (instance) - instance->SetData(DATA_SLAD_RAN_EVENT, DONE); + instance->SetData(DATA_SLAD_RAN_EVENT, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } void JustSummoned(Creature* summoned) OVERRIDE diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index cdcd8ed796a..92c97ce6abf 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -739,7 +739,7 @@ class npc_putricide_oozeAI : public ScriptedAI if (!UpdateVictim() && !_newTargetSelectTimer) return; - if (!_newTargetSelectTimer && !me->IsNonMeleeSpellCasted(false, false, true, false, true)) + if (!_newTargetSelectTimer && !me->IsNonMeleeSpellCast(false, false, true, false, true)) _newTargetSelectTimer = 1000; DoMeleeAttackIfReady(); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index bbd700b7edd..9684c7d9cdf 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -666,7 +666,7 @@ class npc_the_lich_king_controller : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_the_lich_king_controllerAI(creature); + return GetInstanceAI<npc_the_lich_king_controllerAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp index b873b3ee15c..da2dc8583a8 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp @@ -59,7 +59,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_anubrekhanAI(creature); + return GetInstanceAI<boss_anubrekhanAI>(creature); } struct boss_anubrekhanAI : public BossAI @@ -105,8 +105,7 @@ public: _JustDied(); // start achievement timer (kill Maexna within 20 min) - if (instance) - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); + instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); } void EnterCombat(Unit* /*who*/) OVERRIDE { diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp index b723c2f4139..2d216c78ea8 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp @@ -216,7 +216,7 @@ class npc_faerlina_add : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_faerlina_addAI(creature); + return GetInstanceAI<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 9b336a77e26..b57cb3af190 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp @@ -89,7 +89,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_four_horsemenAI(creature); + return GetInstanceAI<boss_four_horsemenAI>(creature); } struct boss_four_horsemenAI : public BossAI @@ -121,8 +121,7 @@ public: if (!encounterActionReset) DoEncounteraction(NULL, false, true, false); - if (instance) - instance->SetData(DATA_HORSEMEN0 + id, NOT_STARTED); + instance->SetData(DATA_HORSEMEN0 + id, NOT_STARTED); me->SetReactState(REACT_AGGRESSIVE); uiEventStarterGUID = 0; @@ -139,9 +138,6 @@ public: bool DoEncounteraction(Unit* who, bool attack, bool reset, bool checkAllDead) { - if (!instance) - return false; - Creature* Thane = Unit::GetCreature(*me, instance->GetData64(DATA_THANE)); Creature* Lady = Unit::GetCreature(*me, instance->GetData64(DATA_LADY)); Creature* Baron = Unit::GetCreature(*me, instance->GetData64(DATA_BARON)); @@ -301,10 +297,9 @@ public: events.Reset(); summons.DespawnAll(); - if (instance) - instance->SetData(DATA_HORSEMEN0 + id, DONE); + instance->SetData(DATA_HORSEMEN0 + id, DONE); - if (instance && DoEncounteraction(NULL, false, false, true)) + if (DoEncounteraction(NULL, false, false, true)) { instance->SetBossState(BOSS_HORSEMEN, DONE); instance->SaveToDB(); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp index f76c46d96ff..9e5dac9c50b 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp @@ -181,8 +181,7 @@ class boss_gothik : public CreatureScript DeadTriggerGUID.clear(); me->SetReactState(REACT_PASSIVE); - if (instance) - instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE); + instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE); _Reset(); mergedSides = false; phaseTwo = false; @@ -210,8 +209,7 @@ class boss_gothik : public CreatureScript events.ScheduleEvent(EVENT_SUMMON, 30000); DoTeleportTo(PosPlatform); Talk(SAY_SPEECH); - if (instance) - instance->SetData(DATA_GOTHIK_GATE, GO_STATE_READY); + instance->SetData(DATA_GOTHIK_GATE, GO_STATE_READY); } void JustSummoned(Creature* summon) OVERRIDE @@ -248,8 +246,7 @@ class boss_gothik : public CreatureScript DeadTriggerGUID.clear(); _JustDied(); Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE); + instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE); } void DoGothikSummon(uint32 entry) @@ -403,8 +400,7 @@ class boss_gothik : public CreatureScript if (!thirtyPercentReached && HealthBelowPct(30) && phaseTwo) { thirtyPercentReached = true; - if (instance) - instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE); + instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE); } if (me->HasUnitState(UNIT_STATE_CASTING)) @@ -429,8 +425,7 @@ class boss_gothik : public CreatureScript { if (!CheckGroupSplitted()) { - if (instance) - instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE); + instance->SetData(DATA_GOTHIK_GATE, GO_STATE_ACTIVE); DummyEntryCheckPredicate pred; summons.DoAction(0, pred); //! Magic numbers fail summons.DoZoneInCombat(); @@ -500,7 +495,7 @@ class boss_gothik : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_gothikAI(creature); + return GetInstanceAI<boss_gothikAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp index a8e2783602f..3dad2798d2f 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp @@ -61,7 +61,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_heiganAI(creature); + return GetInstanceAI<boss_heiganAI>(creature); } struct boss_heiganAI : public BossAI diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index f9efdfce28b..169c3241a73 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -310,8 +310,7 @@ public: FindGameObjects(); - if (instance) - instance->SetData(DATA_ABOMINATION_KILLED, 0); + instance->SetData(DATA_ABOMINATION_KILLED, 0); if (GameObject* pKTTrigger = me->GetMap()->GetGameObject(KTTriggerGUID)) { @@ -649,7 +648,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_kelthuzadAI(creature); + return GetInstanceAI<boss_kelthuzadAI>(creature); } }; @@ -769,7 +768,7 @@ class npc_kelthuzad_abomination : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_kelthuzad_abominationAI(creature); + return GetInstanceAI<npc_kelthuzad_abominationAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp index d90db5e077e..d653be216dc 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp @@ -37,23 +37,20 @@ enum Noth NPC_GUARDIAN = 16981 }; -#define SPELL_BLINK RAND(29208, 29209, 29210, 29211) +#define SPELL_BLINK RAND(29208, 29209, 29210, 29211) // Teleport position of Noth on his balcony -#define TELE_X 2631.370f -#define TELE_Y -3529.680f -#define TELE_Z 274.040f -#define TELE_O 6.277f +Position const Teleport = { 2631.370f, -3529.680f, 274.040f, 6.277f }; #define MAX_SUMMON_POS 5 -const float SummonPos[MAX_SUMMON_POS][4] = +Position const SummonPos[MAX_SUMMON_POS] = { - {2728.12f, -3544.43f, 261.91f, 6.04f}, - {2729.05f, -3544.47f, 261.91f, 5.58f}, - {2728.24f, -3465.08f, 264.20f, 3.56f}, - {2704.11f, -3456.81f, 265.53f, 4.51f}, - {2663.56f, -3464.43f, 262.66f, 5.20f}, + { 2728.12f, -3544.43f, 261.91f, 6.04f }, + { 2729.05f, -3544.47f, 261.91f, 5.58f }, + { 2728.24f, -3465.08f, 264.20f, 3.56f }, + { 2704.11f, -3456.81f, 265.53f, 4.51f }, + { 2663.56f, -3464.43f, 262.66f, 5.20f } }; enum Events @@ -65,7 +62,7 @@ enum Events EVENT_WARRIOR, EVENT_BALCONY, EVENT_WAVE, - EVENT_GROUND, + EVENT_GROUND }; class boss_noth : public CreatureScript @@ -73,17 +70,10 @@ class boss_noth : public CreatureScript public: boss_noth() : CreatureScript("boss_noth") { } - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new boss_nothAI(creature); - } - struct boss_nothAI : public BossAI { boss_nothAI(Creature* creature) : BossAI(creature, BOSS_NOTH) { } - uint32 waveCount, balconyCount; - void Reset() OVERRIDE { me->SetReactState(REACT_AGGRESSIVE); @@ -104,6 +94,7 @@ public: me->SetReactState(REACT_AGGRESSIVE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); DoZoneInCombat(); + if (me->getThreatManager().isThreatListEmpty()) EnterEvadeMode(); else @@ -138,11 +129,7 @@ public: void SummonUndead(uint32 entry, uint32 num) { for (uint32 i = 0; i < num; ++i) - { - uint32 pos = rand()%MAX_SUMMON_POS; - me->SummonCreature(entry, SummonPos[pos][0], SummonPos[pos][1], SummonPos[pos][2], - SummonPos[pos][3], TEMPSUMMON_CORPSE_DESPAWN, 60000); - } + me->SummonCreature(entry, SummonPos[rand()%MAX_SUMMON_POS], TEMPSUMMON_CORPSE_DESPAWN, 60000); } void UpdateAI(uint32 diff) OVERRIDE @@ -152,6 +139,9 @@ public: events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) @@ -176,7 +166,7 @@ public: me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->AttackStop(); me->RemoveAllAuras(); - me->NearTeleportTo(TELE_X, TELE_Y, TELE_Z, TELE_O); + me->NearTeleportTo(Teleport.GetPositionX(), Teleport.GetPositionY(), Teleport.GetPositionZ(), Teleport.GetOrientation()); events.Reset(); events.ScheduleEvent(EVENT_WAVE, urand(2000, 5000)); waveCount = 0; @@ -185,12 +175,20 @@ public: Talk(SAY_SUMMON); switch (balconyCount) { - case 0: SummonUndead(NPC_CHAMPION, RAID_MODE(2, 4)); break; - case 1: SummonUndead(NPC_CHAMPION, RAID_MODE(1, 2)); - SummonUndead(NPC_GUARDIAN, RAID_MODE(1, 2)); break; - case 2: SummonUndead(NPC_GUARDIAN, RAID_MODE(2, 4)); break; - default:SummonUndead(NPC_CHAMPION, RAID_MODE(5, 10)); - SummonUndead(NPC_GUARDIAN, RAID_MODE(5, 10));break; + case 0: + SummonUndead(NPC_CHAMPION, RAID_MODE(2, 4)); + break; + case 1: + SummonUndead(NPC_CHAMPION, RAID_MODE(1, 2)); + SummonUndead(NPC_GUARDIAN, RAID_MODE(1, 2)); + break; + case 2: + SummonUndead(NPC_GUARDIAN, RAID_MODE(2, 4)); + break; + default: + SummonUndead(NPC_CHAMPION, RAID_MODE(5, 10)); + SummonUndead(NPC_GUARDIAN, RAID_MODE(5, 10)); + break; } ++waveCount; events.ScheduleEvent(waveCount < 2 ? EVENT_WAVE : EVENT_GROUND, urand(30000, 45000)); @@ -211,8 +209,16 @@ public: if (me->HasReactState(REACT_AGGRESSIVE)) DoMeleeAttackIfReady(); } + + private: + uint32 waveCount; + uint32 balconyCount; }; + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return GetInstanceAI<boss_nothAI>(creature); + } }; void AddSC_boss_noth() diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp index 96f2d743cac..e414bdaaa33 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp @@ -57,7 +57,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_patchwerkAI(creature); + return GetInstanceAI<boss_patchwerkAI>(creature); } struct boss_patchwerkAI : public BossAI @@ -70,8 +70,7 @@ public: { _Reset(); - if (instance) - instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT); + instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT); } void KilledUnit(Unit* /*Victim*/) OVERRIDE @@ -94,8 +93,7 @@ public: events.ScheduleEvent(EVENT_HATEFUL, 1000); events.ScheduleEvent(EVENT_BERSERK, 360000); - if (instance) - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT); + instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT); } void UpdateAI(uint32 diff) OVERRIDE diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp index 60620804db8..761529ab0f2 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp @@ -96,6 +96,8 @@ class boss_sapphiron : public CreatureScript void InitializeAI() OVERRIDE { + _canTheHundredClub = true; + float x, y, z; me->GetPosition(x, y, z); me->SummonGameObject(GO_BIRTH, x, y, z, 0, 0, 0, 0, 0, 0); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp index 3d121887471..1ef81faa57e 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp @@ -110,7 +110,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_thaddiusAI(creature); + return GetInstanceAI<boss_thaddiusAI>(creature); } struct boss_thaddiusAI : public BossAI @@ -230,15 +230,13 @@ public: { if (!checkStalaggAlive) { - if (instance) - if (Creature* pStalagg = me->GetCreature(*me, instance->GetData64(DATA_STALAGG))) - pStalagg->Respawn(); + if (Creature* pStalagg = me->GetCreature(*me, instance->GetData64(DATA_STALAGG))) + pStalagg->Respawn(); } else { - if (instance) - if (Creature* pFeugen = me->GetCreature(*me, instance->GetData64(DATA_FEUGEN))) - pFeugen->Respawn(); + if (Creature* pFeugen = me->GetCreature(*me, instance->GetData64(DATA_FEUGEN))) + pFeugen->Respawn(); } } } @@ -285,7 +283,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_stalaggAI(creature); + return GetInstanceAI<npc_stalaggAI>(creature); } struct npc_stalaggAI : public ScriptedAI @@ -302,10 +300,9 @@ public: void Reset() OVERRIDE { - if (instance) - if (Creature* pThaddius = me->GetCreature(*me, instance->GetData64(DATA_THADDIUS))) - if (pThaddius->AI()) - pThaddius->AI()->DoAction(ACTION_STALAGG_RESET); + if (Creature* pThaddius = me->GetCreature(*me, instance->GetData64(DATA_THADDIUS))) + if (pThaddius->AI()) + pThaddius->AI()->DoAction(ACTION_STALAGG_RESET); powerSurgeTimer = urand(20000, 25000); magneticPullTimer = 20000; } @@ -325,10 +322,9 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { Talk(SAY_STAL_DEATH); - if (instance) - if (Creature* pThaddius = me->GetCreature(*me, instance->GetData64(DATA_THADDIUS))) - if (pThaddius->AI()) - pThaddius->AI()->DoAction(ACTION_STALAGG_DIED); + if (Creature* pThaddius = me->GetCreature(*me, instance->GetData64(DATA_THADDIUS))) + if (pThaddius->AI()) + pThaddius->AI()->DoAction(ACTION_STALAGG_DIED); } void UpdateAI(uint32 uiDiff) OVERRIDE @@ -379,7 +375,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_feugenAI(creature); + return GetInstanceAI<npc_feugenAI>(creature); } struct npc_feugenAI : public ScriptedAI @@ -395,10 +391,9 @@ public: void Reset() OVERRIDE { - if (instance) - if (Creature* pThaddius = me->GetCreature(*me, instance->GetData64(DATA_THADDIUS))) - if (pThaddius->AI()) - pThaddius->AI()->DoAction(ACTION_FEUGEN_RESET); + if (Creature* pThaddius = me->GetCreature(*me, instance->GetData64(DATA_THADDIUS))) + if (pThaddius->AI()) + pThaddius->AI()->DoAction(ACTION_FEUGEN_RESET); staticFieldTimer = 5000; } @@ -417,10 +412,9 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { Talk(SAY_FEUG_DEATH); - if (instance) - if (Creature* pThaddius = me->GetCreature(*me, instance->GetData64(DATA_THADDIUS))) - if (pThaddius->AI()) - pThaddius->AI()->DoAction(ACTION_FEUGEN_DIED); + if (Creature* pThaddius = me->GetCreature(*me, instance->GetData64(DATA_THADDIUS))) + if (pThaddius->AI()) + pThaddius->AI()->DoAction(ACTION_FEUGEN_DIED); } void UpdateAI(uint32 uiDiff) OVERRIDE diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index c813577dd53..589b9a30d9b 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -106,8 +106,8 @@ enum Spells SPELL_ARCANE_STORM_P_I = 61693, SPELL_VORTEX_1 = 56237, // seems that frezze object animation SPELL_VORTEX_2 = 55873, // visual effect - SPELL_VORTEX_3 = 56105, // this spell must handle all the script - casted by the boss and to himself - SPELL_VORTEX_6 = 73040, // teleport - (casted to all raid), caster vortex bunnies, targets players. + SPELL_VORTEX_3 = 56105, // this spell must handle all the script - cast by the boss and to himself + SPELL_VORTEX_6 = 73040, // teleport - (cast to all raid), caster vortex bunnies, targets players. // Phase II SPELL_TELEPORT_VISUAL_ONLY = 41232, // Light blue animation cast by arcane NPCs when spawned on Hover Disks @@ -117,7 +117,7 @@ enum Spells SPELL_SUMMON_ARCANE_BOMB = 56429, SPELL_ARCANE_BOMB_TRIGGER = 56430, SPELL_ARCANE_BOMB_KNOCKBACK_DAMAGE = 56431, - SPELL_ARCANE_OVERLOAD_1 = 56432, // casted by npc Arcane Overload ID: 30282 + SPELL_ARCANE_OVERLOAD_1 = 56432, // cast by npc Arcane Overload ID: 30282 // SPELL_ARCANE_OVERLOAD_2 = 56435, // Triggered by 56432 - resizing target // SPELL_ARCANE_OVERLOAD_3 = 56438, // Triggered by 56432 - damage reduction SPELL_SURGE_OF_POWER_P_II = 56505, @@ -376,8 +376,7 @@ public: SetPhase(PHASE_NOT_STARTED, true); me->SetReactState(REACT_PASSIVE); - if (instance) - instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); + instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); } uint32 GetData(uint32 data) const OVERRIDE @@ -568,27 +567,22 @@ public: // We can't call full function here since it includes DoZoneInCombat(), // if someone does it will be returned with a warning. me->setActive(true); - if (instance) + if (!instance->CheckRequiredBosses(DATA_MALYGOS_EVENT)) { - if (!instance->CheckRequiredBosses(DATA_MALYGOS_EVENT)) - { - EnterEvadeMode(); - return; - } - - instance->SetBossState(DATA_MALYGOS_EVENT, IN_PROGRESS); + EnterEvadeMode(); + return; } + instance->SetBossState(DATA_MALYGOS_EVENT, IN_PROGRESS); + Talk(SAY_START_P_ONE); DoCast(SPELL_BERSERK); // periodic aura, first tick in 10 minutes - if (instance) - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); + instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); } void EnterEvadeMode() OVERRIDE { - if (instance) - instance->SetBossState(DATA_MALYGOS_EVENT, FAIL); + instance->SetBossState(DATA_MALYGOS_EVENT, FAIL); SendLightOverride(LIGHT_GET_DEFAULT_FOR_MAP, 1*IN_MILLISECONDS); @@ -628,8 +622,7 @@ public: summons.DespawnAll(); } - if (instance) - instance->SetBossState(DATA_MALYGOS_EVENT, NOT_STARTED); + instance->SetBossState(DATA_MALYGOS_EVENT, NOT_STARTED); } void KilledUnit(Unit* victim) OVERRIDE @@ -1074,7 +1067,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_malygosAI(creature); + return GetInstanceAI<boss_malygosAI>(creature); } }; @@ -1127,7 +1120,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_portal_eoeAI(creature); + return GetInstanceAI<npc_portal_eoeAI>(creature); } }; @@ -1190,7 +1183,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_power_sparkAI(creature); + return GetInstanceAI<npc_power_sparkAI>(creature); } }; @@ -1292,7 +1285,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_melee_hover_diskAI(creature); + return GetInstanceAI<npc_melee_hover_diskAI>(creature); } }; @@ -1374,7 +1367,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_caster_hover_diskAI(creature); + return GetInstanceAI<npc_caster_hover_diskAI>(creature); } }; @@ -1450,7 +1443,7 @@ class npc_nexus_lord : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_nexus_lordAI(creature); + return GetInstanceAI<npc_nexus_lordAI>(creature); } }; @@ -1517,7 +1510,7 @@ class npc_scion_of_eternity : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_scion_of_eternityAI(creature); + return GetInstanceAI<npc_scion_of_eternityAI>(creature); } }; @@ -1575,7 +1568,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_arcane_overloadAI(creature); + return GetInstanceAI<npc_arcane_overloadAI>(creature); } }; @@ -1907,7 +1900,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 casted by each vehicle when it's passenger leaves it. + // 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->GetData64(DATA_TRIGGER))) trigger->CastSpell(targetPlayer, SPELL_VORTEX_6, true); } diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp index f05d065ab34..bffae212eec 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp @@ -95,24 +95,21 @@ class boss_anomalus : public CreatureScript uiChaoticRiftGUID = 0; chaosTheory = true; - if (instance) - instance->SetData(DATA_ANOMALUS_EVENT, NOT_STARTED); + instance->SetData(DATA_ANOMALUS_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetData(DATA_ANOMALUS_EVENT, IN_PROGRESS); + instance->SetData(DATA_ANOMALUS_EVENT, IN_PROGRESS); } void JustDied(Unit* /*killer*/) OVERRIDE { Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_ANOMALUS_EVENT, DONE); + instance->SetData(DATA_ANOMALUS_EVENT, DONE); } uint32 GetData(uint32 type) const OVERRIDE @@ -187,7 +184,7 @@ class boss_anomalus : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_anomalusAI(creature); + return GetInstanceAI<boss_anomalusAI>(creature); } }; @@ -255,7 +252,7 @@ class npc_chaotic_rift : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_chaotic_riftAI(creature); + return GetInstanceAI<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 455653a136e..b0d2334790b 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp @@ -61,7 +61,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_keristraszaAI(creature); + return GetInstanceAI<boss_keristraszaAI>(creature); } struct boss_keristraszaAI : public ScriptedAI @@ -95,8 +95,7 @@ public: RemovePrison(CheckContainmentSpheres()); - if (instance) - instance->SetData(DATA_KERISTRASZA_EVENT, NOT_STARTED); + instance->SetData(DATA_KERISTRASZA_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -104,28 +103,24 @@ public: Talk(SAY_AGGRO); DoCastAOE(SPELL_INTENSE_COLD); - if (instance) - instance->SetData(DATA_KERISTRASZA_EVENT, IN_PROGRESS); + instance->SetData(DATA_KERISTRASZA_EVENT, IN_PROGRESS); } void JustDied(Unit* /*killer*/) OVERRIDE { Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_KERISTRASZA_EVENT, DONE); + instance->SetData(DATA_KERISTRASZA_EVENT, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } bool CheckContainmentSpheres(bool remove_prison = false) { - if (!instance) - return false; - auiContainmentSphereGUIDs[0] = instance->GetData64(ANOMALUS_CONTAINMET_SPHERE); auiContainmentSphereGUIDs[1] = instance->GetData64(ORMOROKS_CONTAINMET_SPHERE); auiContainmentSphereGUIDs[2] = instance->GetData64(TELESTRAS_CONTAINMET_SPHERE); 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 8a01c40186e..e528b9e1634 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp @@ -65,7 +65,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_magus_telestraAI(creature); + return GetInstanceAI<boss_magus_telestraAI>(creature); } struct boss_magus_telestraAI : public ScriptedAI @@ -118,29 +118,27 @@ public: me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetVisible(true); - if (instance) - instance->SetData(DATA_MAGUS_TELESTRA_EVENT, NOT_STARTED); + instance->SetData(DATA_MAGUS_TELESTRA_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetData(DATA_MAGUS_TELESTRA_EVENT, IN_PROGRESS); + instance->SetData(DATA_MAGUS_TELESTRA_EVENT, IN_PROGRESS); } void JustDied(Unit* /*killer*/) OVERRIDE { Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_MAGUS_TELESTRA_EVENT, DONE); + instance->SetData(DATA_MAGUS_TELESTRA_EVENT, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_KILL); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_KILL); } void DoAction(int32 action) OVERRIDE diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp index e2789995ec7..ddaf9f7e94b 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp @@ -70,6 +70,12 @@ public: { boss_ormorokAI(Creature* creature) : BossAI(creature, DATA_ORMOROK_EVENT) { } + void Reset() + { + BossAI::Reset(); + frenzy = false; + } + void EnterCombat(Unit* /*who*/) OVERRIDE { _EnterCombat(); @@ -82,8 +88,7 @@ public: Talk(SAY_AGGRO); - if (instance) - instance->SetData(DATA_ORMOROK_EVENT, IN_PROGRESS); + instance->SetData(DATA_ORMOROK_EVENT, IN_PROGRESS); } void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/) OVERRIDE @@ -102,13 +107,13 @@ public: Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_ORMOROK_EVENT, DONE); + instance->SetData(DATA_ORMOROK_EVENT, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_KILL); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_KILL); } void UpdateAI(uint32 diff) OVERRIDE @@ -159,7 +164,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_ormorokAI(creature); + return GetInstanceAI<boss_ormorokAI>(creature); } }; @@ -190,7 +195,11 @@ public: struct npc_crystal_spike_triggerAI : public ScriptedAI { - npc_crystal_spike_triggerAI(Creature* creature) : ScriptedAI(creature) { } + npc_crystal_spike_triggerAI(Creature* creature) : ScriptedAI(creature) + { + _count = 0; + _despawntimer = 0; + } void IsSummonedBy(Unit* owner) OVERRIDE { diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp index ca6f580633c..1f7d47ccc31 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp @@ -99,9 +99,10 @@ class boss_eregos : public CreatureScript DoAction(ACTION_SET_NORMAL_EVENTS); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_KILL); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_KILL); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -165,7 +166,7 @@ class boss_eregos : public CreatureScript if (summon->GetEntry() != NPC_PLANAR_ANOMALY) return; - /// @todo: See why the spell is not casted + /// @todo: See why the spell is not cast summon->CastSpell(summon, SPELL_PLANAR_BLAST, true); } diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp index f7c558879d1..db1bb342286 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp @@ -248,7 +248,7 @@ class boss_urom : public CreatureScript arcaneExplosionTimer -= diff; } - if (!me->IsNonMeleeSpellCasted(false, true, true)) + if (!me->IsNonMeleeSpellCast(false, true, true)) { if (frostBombTimer <= diff) { diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp index 385f80ae37d..074f3b9a135 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp @@ -217,17 +217,14 @@ class npc_azure_ring_captain : public CreatureScript switch (action) { case ACTION_CALL_DRAGON_EVENT: - if (instance) + if (Creature* varos = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VAROS))) { - if (Creature* varos = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VAROS))) + if (Unit* victim = varos->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0)) { - if (Unit* victim = varos->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0)) - { - me->SetReactState(REACT_PASSIVE); - me->SetWalk(false); - me->GetMotionMaster()->MovePoint(ACTION_CALL_DRAGON_EVENT, victim->GetPositionX(), victim->GetPositionY(), victim->GetPositionZ() + 20.0f); - targetGUID = victim->GetGUID(); - } + me->SetReactState(REACT_PASSIVE); + me->SetWalk(false); + me->GetMotionMaster()->MovePoint(ACTION_CALL_DRAGON_EVENT, victim->GetPositionX(), victim->GetPositionY(), victim->GetPositionZ() + 20.0f); + targetGUID = victim->GetGUID(); } } break; @@ -241,7 +238,7 @@ class npc_azure_ring_captain : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_ring_captainAI(creature); + return GetInstanceAI<npc_azure_ring_captainAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp index 944eacda34e..b61d12df484 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp @@ -99,7 +99,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_bjarngrimAI(creature); + return GetInstanceAI<boss_bjarngrimAI>(creature); } struct boss_bjarngrimAI : public ScriptedAI @@ -180,8 +180,7 @@ public: SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SHIELD, EQUIP_NO_CHANGE); - if (instance) - instance->SetBossState(DATA_BJARNGRIM, NOT_STARTED); + instance->SetBossState(DATA_BJARNGRIM, NOT_STARTED); } void EnterEvadeMode() OVERRIDE @@ -201,8 +200,7 @@ public: //must get both lieutenants here and make sure they are with him me->CallForHelp(30.0f); - if (instance) - instance->SetBossState(DATA_BJARNGRIM, IN_PROGRESS); + instance->SetBossState(DATA_BJARNGRIM, IN_PROGRESS); } void KilledUnit(Unit* /*victim*/) OVERRIDE @@ -214,8 +212,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetBossState(DATA_BJARNGRIM, DONE); + instance->SetBossState(DATA_BJARNGRIM, DONE); } /// @todo remove when removal is done by the core @@ -245,7 +242,7 @@ public: if (m_uiChangeStance_Timer <= uiDiff) { //wait for current spell to finish before change stance - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) return; DoRemoveStanceAura(m_uiStance); @@ -391,7 +388,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_stormforged_lieutenantAI(creature); + return GetInstanceAI<npc_stormforged_lieutenantAI>(creature); } struct npc_stormforged_lieutenantAI : public ScriptedAI @@ -414,13 +411,10 @@ public: void EnterCombat(Unit* who) OVERRIDE { - if (instance) + if (Creature* pBjarngrim = instance->instance->GetCreature(instance->GetData64(DATA_BJARNGRIM))) { - if (Creature* pBjarngrim = instance->instance->GetCreature(instance->GetData64(DATA_BJARNGRIM))) - { - if (pBjarngrim->IsAlive() && !pBjarngrim->GetVictim()) - pBjarngrim->AI()->AttackStart(who); - } + if (pBjarngrim->IsAlive() && !pBjarngrim->GetVictim()) + pBjarngrim->AI()->AttackStart(who); } } @@ -440,13 +434,10 @@ public: if (m_uiRenewSteel_Timer <= uiDiff) { - if (instance) + if (Creature* pBjarngrim = instance->instance->GetCreature(instance->GetData64(DATA_BJARNGRIM))) { - if (Creature* pBjarngrim = instance->instance->GetCreature(instance->GetData64(DATA_BJARNGRIM))) - { - if (pBjarngrim->IsAlive()) - DoCast(pBjarngrim, SPELL_RENEW_STEEL_N); - } + if (pBjarngrim->IsAlive()) + DoCast(pBjarngrim, SPELL_RENEW_STEEL_N); } m_uiRenewSteel_Timer = urand(10000, 14000); } diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp index af6beca608d..3e35ae3fae7 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp @@ -72,7 +72,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_ionarAI(creature); + return GetInstanceAI<boss_ionarAI>(creature); } struct boss_ionarAI : public ScriptedAI @@ -115,16 +115,14 @@ public: if (!me->IsVisible()) me->SetVisible(true); - if (instance) - instance->SetBossState(DATA_IONAR, NOT_STARTED); + instance->SetBossState(DATA_IONAR, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetBossState(DATA_IONAR, IN_PROGRESS); + instance->SetBossState(DATA_IONAR, IN_PROGRESS); } void JustDied(Unit* /*killer*/) OVERRIDE @@ -133,13 +131,13 @@ public: lSparkList.DespawnAll(); - if (instance) - instance->SetBossState(DATA_IONAR, DONE); + instance->SetBossState(DATA_IONAR, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } void SpellHit(Unit* /*caster*/, const SpellInfo* spell) OVERRIDE @@ -278,7 +276,7 @@ public: Talk(SAY_SPLIT); - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(false); DoCast(me, SPELL_DISPERSE, false); @@ -301,7 +299,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_spark_of_ionarAI(creature); + return GetInstanceAI<npc_spark_of_ionarAI>(creature); } struct npc_spark_of_ionarAI : public ScriptedAI @@ -347,24 +345,21 @@ public: // Prevent them to follow players through the whole instance if (uiCheckTimer <= uiDiff) { - if (instance) + Creature* pIonar = instance->instance->GetCreature(instance->GetData64(DATA_IONAR)); + if (pIonar && pIonar->IsAlive()) { - Creature* pIonar = instance->instance->GetCreature(instance->GetData64(DATA_IONAR)); - if (pIonar && pIonar->IsAlive()) + if (me->GetDistance(pIonar) > DATA_MAX_SPARK_DISTANCE) { - if (me->GetDistance(pIonar) > DATA_MAX_SPARK_DISTANCE) - { - Position pos; - pIonar->GetPosition(&pos); - - me->SetSpeed(MOVE_RUN, 2.0f); - me->GetMotionMaster()->Clear(); - me->GetMotionMaster()->MovePoint(DATA_POINT_CALLBACK, pos); - } + Position pos; + pIonar->GetPosition(&pos); + + me->SetSpeed(MOVE_RUN, 2.0f); + me->GetMotionMaster()->Clear(); + me->GetMotionMaster()->MovePoint(DATA_POINT_CALLBACK, pos); } - else - me->DespawnOrUnsummon(); } + else + me->DespawnOrUnsummon(); uiCheckTimer = 2*IN_MILLISECONDS; } else diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp index 61687de1b58..cb997ebe0ec 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp @@ -69,7 +69,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_lokenAI(creature); + return GetInstanceAI<boss_lokenAI>(creature); } struct boss_lokenAI : public ScriptedAI @@ -95,38 +95,30 @@ public: m_uiHealthAmountModifier = 1; - if (instance) - { - instance->SetBossState(DATA_LOKEN, NOT_STARTED); - instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMELY_DEATH_START_EVENT); - } + instance->SetBossState(DATA_LOKEN, NOT_STARTED); + instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMELY_DEATH_START_EVENT); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - { - instance->SetBossState(DATA_LOKEN, IN_PROGRESS); - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMELY_DEATH_START_EVENT); - } + instance->SetBossState(DATA_LOKEN, IN_PROGRESS); + instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMELY_DEATH_START_EVENT); } void JustDied(Unit* /*killer*/) OVERRIDE { Talk(SAY_DEATH); - if (instance) - { - instance->SetBossState(DATA_LOKEN, DONE); - instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_PULSING_SHOCKWAVE_AURA); - } + instance->SetBossState(DATA_LOKEN, DONE); + instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_PULSING_SHOCKWAVE_AURA); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } void UpdateAI(uint32 uiDiff) OVERRIDE diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp index b6790a088ad..b756a9a3dc6 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp @@ -75,7 +75,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_volkhanAI(creature); + return GetInstanceAI<boss_volkhanAI>(creature); } struct boss_volkhanAI : public ScriptedAI @@ -120,16 +120,14 @@ public: DespawnGolem(); m_lGolemGUIDList.clear(); - if (instance) - instance->SetBossState(DATA_VOLKHAN, NOT_STARTED); + instance->SetBossState(DATA_VOLKHAN, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetBossState(DATA_VOLKHAN, IN_PROGRESS); + instance->SetBossState(DATA_VOLKHAN, IN_PROGRESS); } void AttackStart(Unit* who) OVERRIDE @@ -150,13 +148,13 @@ public: Talk(SAY_DEATH); DespawnGolem(); - if (instance) - instance->SetBossState(DATA_VOLKHAN, DONE); + instance->SetBossState(DATA_VOLKHAN, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } void DespawnGolem() @@ -286,7 +284,7 @@ public: { ++m_uiHealthAmountModifier; - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(false); Talk(SAY_FORGE); @@ -411,7 +409,7 @@ public: me->AttackStop(); // me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED); //Set in DB // me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); //Set in DB - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(false); if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) me->GetMotionMaster()->MovementExpired(); diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp index b6a4375d0eb..d445dc08ce1 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp @@ -83,15 +83,13 @@ public: uiStompTimer = urand(20000, 29000); uiShatterTimer = 0; - if (instance) - instance->SetBossState(DATA_KRYSTALLUS, NOT_STARTED); + instance->SetBossState(DATA_KRYSTALLUS, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetBossState(DATA_KRYSTALLUS, IN_PROGRESS); + instance->SetBossState(DATA_KRYSTALLUS, IN_PROGRESS); } void UpdateAI(uint32 diff) OVERRIDE @@ -143,8 +141,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetBossState(DATA_KRYSTALLUS, DONE); + instance->SetBossState(DATA_KRYSTALLUS, DONE); } void KilledUnit(Unit* victim) OVERRIDE 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 f4ea3ff556c..d2e85438bc1 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 @@ -77,22 +77,16 @@ public: ShockOfSorrowTimer = 20000+rand()%5000; PillarOfWoeTimer = urand(5000, 15000); - if (instance) - { - instance->SetBossState(DATA_MAIDEN_OF_GRIEF, NOT_STARTED); - instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_GOOD_GRIEF_START_EVENT); - } + instance->SetBossState(DATA_MAIDEN_OF_GRIEF, NOT_STARTED); + instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_GOOD_GRIEF_START_EVENT); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - { - instance->SetBossState(DATA_MAIDEN_OF_GRIEF, IN_PROGRESS); - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_GOOD_GRIEF_START_EVENT); - } + instance->SetBossState(DATA_MAIDEN_OF_GRIEF, IN_PROGRESS); + instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_GOOD_GRIEF_START_EVENT); } void UpdateAI(uint32 diff) OVERRIDE @@ -145,8 +139,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetBossState(DATA_MAIDEN_OF_GRIEF, DONE); + instance->SetBossState(DATA_MAIDEN_OF_GRIEF, DONE); } void KilledUnit(Unit* victim) OVERRIDE 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 ff4a5d1b43a..5fff9889fac 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp @@ -167,13 +167,10 @@ public: bMarnakActivated = false; bAbedneumActivated = false; - if (instance) - { - instance->HandleGameObject(instance->GetData64(DATA_GO_KADDRAK), false); - instance->HandleGameObject(instance->GetData64(DATA_GO_MARNAK), false); - instance->HandleGameObject(instance->GetData64(DATA_GO_ABEDNEUM), false); - instance->HandleGameObject(instance->GetData64(DATA_GO_SKY_FLOOR), false); - } + instance->HandleGameObject(instance->GetData64(DATA_GO_KADDRAK), false); + instance->HandleGameObject(instance->GetData64(DATA_GO_MARNAK), false); + instance->HandleGameObject(instance->GetData64(DATA_GO_ABEDNEUM), false); + instance->HandleGameObject(instance->GetData64(DATA_GO_SKY_FLOOR), false); KaddrakGUIDList.clear(); } @@ -324,8 +321,7 @@ public: DespawnDwarf(); - if (instance) - instance->SetBossState(DATA_BRANN_EVENT, NOT_STARTED); + instance->SetBossState(DATA_BRANN_EVENT, NOT_STARTED); } } @@ -362,8 +358,7 @@ public: break; case 17: Talk(SAY_EVENT_INTRO_2); - if (instance) - instance->HandleGameObject(instance->GetData64(DATA_GO_TRIBUNAL_CONSOLE), true); + instance->HandleGameObject(instance->GetData64(DATA_GO_TRIBUNAL_CONSOLE), true); me->SetStandState(UNIT_STAND_STATE_KNEEL); SetEscortPaused(true); JumpToNextStep(8500); @@ -438,12 +433,9 @@ public: switch (uiStep) { case 1: - if (instance) - { - if (instance->GetBossState(DATA_BRANN_EVENT) != NOT_STARTED) - return; - instance->SetBossState(DATA_BRANN_EVENT, IN_PROGRESS); - } + if (instance->GetBossState(DATA_BRANN_EVENT) != NOT_STARTED) + return; + instance->SetBossState(DATA_BRANN_EVENT, IN_PROGRESS); bIsBattle = false; Talk(SAY_ESCORT_START); SetRun(true); @@ -454,25 +446,22 @@ public: JumpToNextStep(0); break; case 5: - if (instance) - if (Creature* temp = (Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM)))) - temp->AI()->Talk(SAY_EVENT_INTRO_3_ABED); - JumpToNextStep(8500); + if (Creature* temp = (Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM)))) + temp->AI()->Talk(SAY_EVENT_INTRO_3_ABED); + JumpToNextStep(8500); break; case 6: Talk(SAY_EVENT_A_1); JumpToNextStep(6500); break; case 7: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK))) - temp->AI()->Talk(SAY_EVENT_A_2_KADD); - JumpToNextStep(12500); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK))) + temp->AI()->Talk(SAY_EVENT_A_2_KADD); + JumpToNextStep(12500); break; case 8: Talk(SAY_EVENT_A_3); - if (instance) - instance->HandleGameObject(instance->GetData64(DATA_GO_KADDRAK), true); + instance->HandleGameObject(instance->GetData64(DATA_GO_KADDRAK), true); if (Creature* temp = Unit::GetCreature(*me, uiControllerGUID)) CAST_AI(npc_tribuna_controller::npc_tribuna_controllerAI, temp->AI())->bKaddrakActivated = true; JumpToNextStep(5000); @@ -487,16 +476,14 @@ public: JumpToNextStep(6000); break; case 11: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK))) - temp->AI()->Talk(SAY_EVENT_B_2_MARN); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK))) + temp->AI()->Talk(SAY_EVENT_B_2_MARN); SpawnDwarf(1); JumpToNextStep(20000); break; case 12: Talk(SAY_EVENT_B_3); - if (instance) - instance->HandleGameObject(instance->GetData64(DATA_GO_MARNAK), true); + instance->HandleGameObject(instance->GetData64(DATA_GO_MARNAK), true); if (Creature* temp = Unit::GetCreature(*me, uiControllerGUID)) CAST_AI(npc_tribuna_controller::npc_tribuna_controllerAI, temp->AI())->bMarnakActivated = true; JumpToNextStep(10000); @@ -519,16 +506,14 @@ public: JumpToNextStep(20000); break; case 17: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) - temp->AI()->Talk(SAY_EVENT_C_2_ABED); - SpawnDwarf(1); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) + temp->AI()->Talk(SAY_EVENT_C_2_ABED); + SpawnDwarf(1); JumpToNextStep(20000); break; case 18: Talk(SAY_EVENT_C_3); - if (instance) - instance->HandleGameObject(instance->GetData64(DATA_GO_ABEDNEUM), true); + instance->HandleGameObject(instance->GetData64(DATA_GO_ABEDNEUM), true); if (Creature* temp = Unit::GetCreature(*me, uiControllerGUID)) CAST_AI(npc_tribuna_controller::npc_tribuna_controllerAI, temp->AI())->bAbedneumActivated = true; JumpToNextStep(5000); @@ -547,9 +532,8 @@ public: JumpToNextStep(20000); break; case 22: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) - temp->AI()->Talk(SAY_EVENT_D_2_ABED); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) + temp->AI()->Talk(SAY_EVENT_D_2_ABED); SpawnDwarf(1); JumpToNextStep(5000); break; @@ -571,9 +555,8 @@ public: JumpToNextStep(10000); break; case 27: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) - temp->AI()->Talk(SAY_EVENT_D_4_ABED); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) + temp->AI()->Talk(SAY_EVENT_D_4_ABED); SpawnDwarf(1); JumpToNextStep(10000); break; @@ -581,8 +564,7 @@ public: me->SetReactState(REACT_DEFENSIVE); Talk(SAY_EVENT_END_01); me->SetStandState(UNIT_STAND_STATE_STAND); - if (instance) - instance->HandleGameObject(instance->GetData64(DATA_GO_SKY_FLOOR), true); + instance->HandleGameObject(instance->GetData64(DATA_GO_SKY_FLOOR), true); if (Creature* temp = Unit::GetCreature(*me, uiControllerGUID)) temp->DealDamage(temp, temp->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); bIsBattle = true; @@ -591,15 +573,13 @@ public: break; case 29: Talk(SAY_EVENT_END_02); - if (instance) - instance->SetBossState(DATA_BRANN_EVENT, DONE); + instance->SetBossState(DATA_BRANN_EVENT, DONE); me->CastSpell(me, SPELL_REWARD_ACHIEVEMENT, true); JumpToNextStep(5500); break; case 30: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) - temp->AI()->Talk(SAY_EVENT_END_03_ABED); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) + temp->AI()->Talk(SAY_EVENT_END_03_ABED); JumpToNextStep(8500); break; case 31: @@ -607,29 +587,26 @@ public: JumpToNextStep(11500); break; case 32: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) - temp->AI()->Talk(SAY_EVENT_END_05_ABED); - JumpToNextStep(11500); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) + temp->AI()->Talk(SAY_EVENT_END_05_ABED); + JumpToNextStep(11500); break; case 33: Talk(SAY_EVENT_END_06); JumpToNextStep(4500); break; case 34: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) - temp->AI()->Talk(SAY_EVENT_END_07_ABED); - JumpToNextStep(22500); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) + temp->AI()->Talk(SAY_EVENT_END_07_ABED); + JumpToNextStep(22500); break; case 35: Talk(SAY_EVENT_END_08); JumpToNextStep(7500); break; case 36: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK))) - temp->AI()->Talk(SAY_EVENT_END_09_KADD); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK))) + temp->AI()->Talk(SAY_EVENT_END_09_KADD); JumpToNextStep(18500); break; case 37: @@ -637,19 +614,17 @@ public: JumpToNextStep(5500); break; case 38: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK))) - temp->AI()->Talk(SAY_EVENT_END_11_KADD); - JumpToNextStep(20500); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK))) + temp->AI()->Talk(SAY_EVENT_END_11_KADD); + JumpToNextStep(20500); break; case 39: Talk(SAY_EVENT_END_12); JumpToNextStep(2500); break; case 40: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK))) - temp->AI()->Talk(SAY_EVENT_END_13_KADD); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_KADDRAK))) + temp->AI()->Talk(SAY_EVENT_END_13_KADD); JumpToNextStep(19500); break; case 41: @@ -657,50 +632,43 @@ public: JumpToNextStep(10500); break; case 42: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK))) - temp->AI()->Talk(SAY_EVENT_END_15_MARN); - JumpToNextStep(6500); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK))) + temp->AI()->Talk(SAY_EVENT_END_15_MARN); + JumpToNextStep(6500); break; case 43: Talk(SAY_EVENT_END_16); JumpToNextStep(6500); break; case 44: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK))) - temp->AI()->Talk(SAY_EVENT_END_17_MARN); - JumpToNextStep(25500); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK))) + temp->AI()->Talk(SAY_EVENT_END_17_MARN); + JumpToNextStep(25500); break; case 45: Talk(SAY_EVENT_END_18); JumpToNextStep(23500); break; case 46: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK))) - temp->AI()->Talk(SAY_EVENT_END_19_MARN); - JumpToNextStep(3500); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_MARNAK))) + temp->AI()->Talk(SAY_EVENT_END_19_MARN); + JumpToNextStep(3500); break; case 47: Talk(SAY_EVENT_END_20); JumpToNextStep(8500); break; case 48: - if (instance) - if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) - temp->AI()->Talk(SAY_EVENT_END_21_ABED); - JumpToNextStep(5500); + if (Creature* temp = Unit::GetCreature(*me, instance->GetData64(DATA_ABEDNEUM))) + temp->AI()->Talk(SAY_EVENT_END_21_ABED); + JumpToNextStep(5500); break; case 49: { - if (instance) - { - instance->HandleGameObject(instance->GetData64(DATA_GO_KADDRAK), false); - instance->HandleGameObject(instance->GetData64(DATA_GO_MARNAK), false); - instance->HandleGameObject(instance->GetData64(DATA_GO_ABEDNEUM), false); - instance->HandleGameObject(instance->GetData64(DATA_GO_SKY_FLOOR), false); - } + instance->HandleGameObject(instance->GetData64(DATA_GO_KADDRAK), false); + instance->HandleGameObject(instance->GetData64(DATA_GO_MARNAK), false); + instance->HandleGameObject(instance->GetData64(DATA_GO_ABEDNEUM), false); + instance->HandleGameObject(instance->GetData64(DATA_GO_SKY_FLOOR), false); Player* player = GetPlayerForEscort(); if (player) player->GroupEventHappens(QUEST_HALLS_OF_STONE, me); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp index 2905a714062..4e1f701a0be 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp @@ -315,7 +315,7 @@ class npc_auriaya_seeping_trigger : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_auriaya_seeping_triggerAI(creature); + return GetInstanceAI<npc_auriaya_seeping_triggerAI>(creature); } }; @@ -390,7 +390,7 @@ class npc_sanctum_sentry : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_sanctum_sentryAI(creature); + return GetInstanceAI<npc_sanctum_sentryAI>(creature); } }; @@ -466,7 +466,7 @@ class npc_feral_defender : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_feral_defenderAI(creature); + return GetInstanceAI<npc_feral_defenderAI>(creature); } }; 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 4bcbe855c2f..eed34f0229d 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -619,7 +619,7 @@ class boss_flame_leviathan_seat : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_flame_leviathan_seatAI(creature); + return GetInstanceAI<boss_flame_leviathan_seatAI>(creature); } }; @@ -898,7 +898,7 @@ class npc_colossus : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_colossusAI(creature); + return GetInstanceAI<npc_colossusAI>(creature); } }; @@ -1179,7 +1179,7 @@ class npc_lorekeeper : public CreatureScript if (Creature* Branz = creature->FindNearestCreature(NPC_BRANZ_BRONZBEARD, 1000, true)) { Delorah->GetMotionMaster()->MovePoint(0, Branz->GetPositionX()-4, Branz->GetPositionY(), Branz->GetPositionZ()); - /// @todo Delorah->AI()->Talk(xxxx, Branz->GetGUID()); when reached at branz + /// @todo Delorah->AI()->Talk(xxxx, Branz); when reached at branz } } } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index 549d496f19d..19f22947b7c 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -433,7 +433,7 @@ class boss_freya : public CreatureScript case EVENT_STRENGTHENED_IRON_ROOTS: Talk(EMOTE_IRON_ROOTS); if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true, -SPELL_ROOTS_FREYA)) - target->CastSpell(target, SPELL_ROOTS_FREYA, true); // This must be casted by Target self + target->CastSpell(target, SPELL_ROOTS_FREYA, true); // This must be cast by Target self events.ScheduleEvent(EVENT_STRENGTHENED_IRON_ROOTS, urand(12000, 20000)); break; case EVENT_GROUND_TREMOR: @@ -1146,7 +1146,7 @@ class npc_ancient_water_spirit : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ancient_water_spiritAI(creature); + return GetInstanceAI<npc_ancient_water_spiritAI>(creature); } }; @@ -1213,7 +1213,7 @@ class npc_storm_lasher : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_storm_lasherAI(creature); + return GetInstanceAI<npc_storm_lasherAI>(creature); } }; @@ -1258,7 +1258,7 @@ class npc_snaplasher : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_snaplasherAI(creature); + return GetInstanceAI<npc_snaplasherAI>(creature); } }; @@ -1522,7 +1522,7 @@ class npc_unstable_sun_beam : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_unstable_sun_beamAI(creature); + return GetInstanceAI<npc_unstable_sun_beamAI>(creature); } }; 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 46776ae9b96..d4ef496dba0 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp @@ -369,7 +369,7 @@ class boss_saronite_animus : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_saronite_animusAI(creature); + return GetInstanceAI<boss_saronite_animusAI>(creature); } }; @@ -439,7 +439,7 @@ class npc_saronite_vapors : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_saronite_vaporsAI(creature); + return GetInstanceAI<npc_saronite_vaporsAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp index 2fb165b935e..344fd7d3e85 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp @@ -235,7 +235,7 @@ class npc_flash_freeze : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_flash_freezeAI(creature); + return GetInstanceAI<npc_flash_freezeAI>(creature); } }; @@ -296,7 +296,7 @@ class npc_ice_block : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ice_blockAI(creature); + return GetInstanceAI<npc_ice_blockAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index 31c635c7de5..30b0e41f52a 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -300,7 +300,7 @@ class boss_razorscale_controller : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_razorscale_controllerAI(creature); + return GetInstanceAI<boss_razorscale_controllerAI>(creature); } }; @@ -735,7 +735,7 @@ class npc_expedition_commander : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_expedition_commanderAI(creature); + return GetInstanceAI<npc_expedition_commanderAI>(creature); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index 12925f1c6e1..74fc83653d4 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -218,9 +218,6 @@ class boss_xt002 : public CreatureScript _phase = 1; _heartExposed = 0; - if (!instance) - return; - instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_MUST_DECONSTRUCT_FASTER); } @@ -232,12 +229,9 @@ class boss_xt002 : public CreatureScript events.ScheduleEvent(EVENT_ENRAGE, TIMER_ENRAGE); events.ScheduleEvent(EVENT_GRAVITY_BOMB, TIMER_GRAVITY_BOMB); events.ScheduleEvent(EVENT_SEARING_LIGHT, TIMER_SEARING_LIGHT); - //Tantrum is casted a bit slower the first time. + //Tantrum is cast a bit slower the first time. events.ScheduleEvent(EVENT_TYMPANIC_TANTRUM, urand(TIMER_TYMPANIC_TANTRUM_MIN, TIMER_TYMPANIC_TANTRUM_MAX) * 2); - if (!instance) - return; - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_MUST_DECONSTRUCT_FASTER); } @@ -477,7 +471,7 @@ class npc_xt002_heart : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_xt002_heartAI(creature); + return GetInstanceAI<npc_xt002_heartAI>(creature); } }; @@ -493,7 +487,7 @@ class npc_scrapbot : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_scrapbotAI(creature); + return GetInstanceAI<npc_scrapbotAI>(creature); } struct npc_scrapbotAI : public ScriptedAI @@ -550,7 +544,7 @@ class npc_pummeller : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_pummellerAI(creature); + return GetInstanceAI<npc_pummellerAI>(creature); } struct npc_pummellerAI : public ScriptedAI @@ -652,7 +646,7 @@ class npc_boombot : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_boombotAI(creature); + return GetInstanceAI<npc_boombotAI>(creature); } struct npc_boombotAI : public ScriptedAI 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 575ab574140..96a2a52714a 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -108,7 +108,7 @@ enum Spells SPELL_SANITY = 63050, SPELL_INSANE_PERIODIC = 64554, SPELL_INSANE = 63120, - //SPELL_CLEAR_INSANE = 63122, // when it should be casted? + //SPELL_CLEAR_INSANE = 63122, // when should it be cast? SPELL_CONSTRICTOR_TENTACLE = 64132, SPELL_CRUSHER_TENTACLE_SUMMON = 64139, SPELL_CORRUPTOR_TENTACLE_SUMMON = 64143, @@ -799,7 +799,7 @@ class boss_sara : public CreatureScript DoCast(yogg, SPELL_RIDE_YOGG_SARON_VEHICLE); DoCast(me, SPELL_SHADOWY_BARRIER_SARA); _events.SetPhase(PHASE_TWO); - _events.ScheduleEvent(EVENT_DEATH_RAY, 20000, 0, PHASE_TWO); // almost never casted at scheduled time, why? + _events.ScheduleEvent(EVENT_DEATH_RAY, 20000, 0, PHASE_TWO); // almost never cast at scheduled time, why? _events.ScheduleEvent(EVENT_MALADY_OF_THE_MIND, 18000, 0, PHASE_TWO); _events.ScheduleEvent(EVENT_PSYCHOSIS, 1, 0, PHASE_TWO); _events.ScheduleEvent(EVENT_BRAIN_LINK, 23000, 0, PHASE_TWO); diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp index 126185215e9..d21b597eb2b 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp @@ -212,7 +212,7 @@ class boss_keleseth : public CreatureScript void SummonSkeletons() { - // I could not found any spell casted for this + // I could not found any spell cast for this for (uint8 i = 0; i < 4; ++i) me->SummonCreature(NPC_SKELETON, SkeletonSpawnPoint[0][0], SkeletonSpawnPoint[0][1], SKELETONSPAWN_Z, 0); } 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 5247f9019da..42fa0242df2 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_skarvald_dalronn.cpp @@ -358,7 +358,7 @@ class boss_dalronn_the_controller : public CreatureScript if (ShadowBolt_Timer <= diff) { - if (!me->IsNonMeleeSpellCasted(false)) + if (!me->IsNonMeleeSpellCast(false)) { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) DoCast(target, SPELL_SHADOW_BOLT); @@ -370,7 +370,7 @@ class boss_dalronn_the_controller : public CreatureScript if (Debilitate_Timer <= diff) { - if (!me->IsNonMeleeSpellCasted(false)) + if (!me->IsNonMeleeSpellCast(false)) { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) DoCast(target, SPELL_DEBILITATE); @@ -384,7 +384,7 @@ class boss_dalronn_the_controller : public CreatureScript { if (Summon_Timer <= diff) { - if (!me->IsNonMeleeSpellCasted(false)) + if (!me->IsNonMeleeSpellCast(false)) { DoCast(me, H_SPELL_SUMMON_SKELETONS); Summon_Timer = (rand()%10000) + 20000; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp index 77c19422da0..e02ceb4866a 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp @@ -193,9 +193,10 @@ public: //Talk(SAY_DEATH); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_SLAY); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); } void DoAction(int32 actionId) OVERRIDE @@ -255,7 +256,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ravenous_furbolgAI(creature); + return GetInstanceAI<npc_ravenous_furbolgAI>(creature); } struct npc_ravenous_furbolgAI : public ScriptedAI @@ -363,7 +364,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_frenzied_worgenAI(creature); + return GetInstanceAI<npc_frenzied_worgenAI>(creature); } struct npc_frenzied_worgenAI : public ScriptedAI @@ -437,8 +438,7 @@ public: who->SetInCombatWith(me); DoStartMovement(who); } - if (instance) - instance->SetBossState(DATA_GORTOK_PALEHOOF, IN_PROGRESS); + instance->SetBossState(DATA_GORTOK_PALEHOOF, IN_PROGRESS); } void JustDied(Unit* /*killer*/) OVERRIDE @@ -474,7 +474,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ferocious_rhinoAI(creature); + return GetInstanceAI<npc_ferocious_rhinoAI>(creature); } struct npc_ferocious_rhinoAI : public ScriptedAI @@ -589,7 +589,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_massive_jormungarAI(creature); + return GetInstanceAI<npc_massive_jormungarAI>(creature); } struct npc_massive_jormungarAI : public ScriptedAI @@ -690,7 +690,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_palehoof_orbAI(creature); + return GetInstanceAI<npc_palehoof_orbAI>(creature); } struct npc_palehoof_orbAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index 01fcd9a665d..aa955f6957a 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -133,7 +133,7 @@ enum Spells { // Skadi Spells SPELL_CRUSH = 50234, - SPELL_POISONED_SPEAR = 50225, //isn't being casted =/ + SPELL_POISONED_SPEAR = 50225, //isn't being cast SPELL_WHIRLWIND = 50228, //random target, but not the tank approx. every 20s SPELL_RAPID_FIRE = 56570, SPELL_HARPOON_DAMAGE = 56578, @@ -162,7 +162,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_skadiAI(creature); + return GetInstanceAI<boss_skadiAI>(creature); } struct boss_skadiAI : public ScriptedAI @@ -208,11 +208,8 @@ public: me->SetSpeed(MOVE_FLIGHT, 3.0f); if ((Unit::GetCreature(*me, m_uiGraufGUID) == NULL) && !me->IsMounted()) me->SummonCreature(NPC_GRAUF, Location[0].GetPositionX(), Location[0].GetPositionY(), Location[0].GetPositionZ(), 3.0f); - if (instance) - { - instance->SetBossState(DATA_SKADI_THE_RUTHLESS, NOT_STARTED); - instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); - } + instance->SetBossState(DATA_SKADI_THE_RUTHLESS, NOT_STARTED); + instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); } void JustReachedHome() OVERRIDE @@ -235,15 +232,12 @@ public: m_uiMovementTimer = 1000; m_uiSummonTimer = 10000; me->SetInCombatWithZone(); - if (instance) - { - instance->SetBossState(DATA_SKADI_THE_RUTHLESS, IN_PROGRESS); - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); - me->GetMotionMaster()->MoveJump(Location[0].GetPositionX(), Location[0].GetPositionY(), Location[0].GetPositionZ(), 5.0f, 10.0f); - me->SetWalk(false); - m_uiMountTimer = 1000; - Summons.DespawnEntry(NPC_GRAUF); - } + instance->SetBossState(DATA_SKADI_THE_RUTHLESS, IN_PROGRESS); + instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); + me->GetMotionMaster()->MoveJump(Location[0].GetPositionX(), Location[0].GetPositionY(), Location[0].GetPositionZ(), 5.0f, 10.0f); + me->SetWalk(false); + m_uiMountTimer = 1000; + Summons.DespawnEntry(NPC_GRAUF); } void JustSummoned(Creature* summoned) OVERRIDE @@ -411,13 +405,13 @@ public: { Talk(SAY_DEATH); Summons.DespawnAll(); - if (instance) - instance->SetBossState(DATA_SKADI_THE_RUTHLESS, DONE); + instance->SetBossState(DATA_SKADI_THE_RUTHLESS, DONE); } - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_KILL); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_KILL); } void SpawnMobs() diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp index 1ceddd4bd66..6fc0ffa2d45 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp @@ -268,7 +268,7 @@ class npc_tempest_minion : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_tempest_minionAI(creature); + return GetInstanceAI<npc_tempest_minionAI>(creature); } }; diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp index e8e54184cb3..7a42983d4e8 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp @@ -277,7 +277,7 @@ class npc_frozen_orb_stalker : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_frozen_orb_stalkerAI(creature); + return GetInstanceAI<npc_frozen_orb_stalkerAI>(creature); } }; diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp index 80ebc01debc..524ca946e25 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp @@ -50,7 +50,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_cyanigosaAI(creature); + return GetInstanceAI<boss_cyanigosaAI>(creature); } struct boss_cyanigosaAI : public ScriptedAI @@ -75,16 +75,14 @@ public: uiManaDestructionTimer = 30000; uiTailSweepTimer = 20000; uiUncontrollableEnergyTimer = 25000; - if (instance) - instance->SetData(DATA_CYANIGOSA_EVENT, NOT_STARTED); + instance->SetData(DATA_CYANIGOSA_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetData(DATA_CYANIGOSA_EVENT, IN_PROGRESS); + instance->SetData(DATA_CYANIGOSA_EVENT, IN_PROGRESS); } void MoveInLineOfSight(Unit* /*who*/) OVERRIDE { } @@ -144,8 +142,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_CYANIGOSA_EVENT, DONE); + instance->SetData(DATA_CYANIGOSA_EVENT, DONE); } void KilledUnit(Unit* victim) OVERRIDE diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp index 883ea8fa0c0..fb6ca01a3d7 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp @@ -49,7 +49,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_erekemAI(creature); + return GetInstanceAI<boss_erekemAI>(creature); } struct boss_erekemAI : public ScriptedAI @@ -74,13 +74,10 @@ public: uiEarthShockTimer = urand(2000, 8000); uiLightningBoltTimer = urand(5000, 10000); uiEarthShieldTimer = 20000; - if (instance) - { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); - } + if (instance->GetData(DATA_WAVE_COUNT) == 6) + instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); if (Creature* pGuard1 = Unit::GetCreature(*me, instance ? instance->GetData64(DATA_EREKEM_GUARD_1) : 0)) { @@ -126,20 +123,17 @@ public: Talk(SAY_AGGRO); DoCast(me, SPELL_EARTH_SHIELD); - if (instance) - { - if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_EREKEM_CELL))) - if (pDoor->GetGoState() == GO_STATE_READY) - { - EnterEvadeMode(); - return; - } + if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_EREKEM_CELL))) + if (pDoor->GetGoState() == GO_STATE_READY) + { + EnterEvadeMode(); + return; + } - if (instance->GetData(DATA_WAVE_COUNT) == 6) - instance->SetData(DATA_1ST_BOSS_EVENT, IN_PROGRESS); - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - instance->SetData(DATA_2ND_BOSS_EVENT, IN_PROGRESS); - } + if (instance->GetData(DATA_WAVE_COUNT) == 6) + instance->SetData(DATA_1ST_BOSS_EVENT, IN_PROGRESS); + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + instance->SetData(DATA_2ND_BOSS_EVENT, IN_PROGRESS); } void MoveInLineOfSight(Unit* /*who*/) OVERRIDE { } @@ -210,18 +204,15 @@ public: { Talk(SAY_DEATH); - if (instance) + if (instance->GetData(DATA_WAVE_COUNT) == 6) { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - { - instance->SetData(DATA_1ST_BOSS_EVENT, DONE); - instance->SetData(DATA_WAVE_COUNT, 7); - } - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - { - instance->SetData(DATA_2ND_BOSS_EVENT, DONE); - instance->SetData(DATA_WAVE_COUNT, 13); - } + instance->SetData(DATA_1ST_BOSS_EVENT, DONE); + instance->SetData(DATA_WAVE_COUNT, 7); + } + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + { + instance->SetData(DATA_2ND_BOSS_EVENT, DONE); + instance->SetData(DATA_WAVE_COUNT, 13); } } @@ -266,7 +257,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_erekem_guardAI(creature); + return GetInstanceAI<npc_erekem_guardAI>(creature); } struct npc_erekem_guardAI : public ScriptedAI diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index 4852b6cea07..d6a434669ce 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -78,7 +78,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_ichoronAI(creature); + return GetInstanceAI<boss_ichoronAI>(creature); } struct boss_ichoronAI : public ScriptedAI @@ -110,13 +110,10 @@ public: me->SetVisible(true); DespawnWaterElements(); - if (instance) - { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); - } + if (instance->GetData(DATA_WAVE_COUNT) == 6) + instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -125,19 +122,16 @@ public: DoCast(me, SPELL_PROTECTIVE_BUBBLE); - if (instance) - { - if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_ICHORON_CELL))) - if (pDoor->GetGoState() == GO_STATE_READY) - { - EnterEvadeMode(); - return; - } - if (instance->GetData(DATA_WAVE_COUNT) == 6) - instance->SetData(DATA_1ST_BOSS_EVENT, IN_PROGRESS); - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - instance->SetData(DATA_2ND_BOSS_EVENT, IN_PROGRESS); - } + if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_ICHORON_CELL))) + if (pDoor->GetGoState() == GO_STATE_READY) + { + EnterEvadeMode(); + return; + } + if (instance->GetData(DATA_WAVE_COUNT) == 6) + instance->SetData(DATA_1ST_BOSS_EVENT, IN_PROGRESS); + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + instance->SetData(DATA_2ND_BOSS_EVENT, IN_PROGRESS); } void AttackStart(Unit* who) OVERRIDE @@ -289,18 +283,15 @@ public: DespawnWaterElements(); - if (instance) + if (instance->GetData(DATA_WAVE_COUNT) == 6) { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - { - instance->SetData(DATA_1ST_BOSS_EVENT, DONE); - instance->SetData(DATA_WAVE_COUNT, 7); - } - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - { - instance->SetData(DATA_2ND_BOSS_EVENT, DONE); - instance->SetData(DATA_WAVE_COUNT, 13); - } + instance->SetData(DATA_1ST_BOSS_EVENT, DONE); + instance->SetData(DATA_WAVE_COUNT, 7); + } + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + { + instance->SetData(DATA_2ND_BOSS_EVENT, DONE); + instance->SetData(DATA_WAVE_COUNT, 13); } } @@ -342,7 +333,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ichor_globuleAI(creature); + return GetInstanceAI<npc_ichor_globuleAI>(creature); } struct npc_ichor_globuleAI : public ScriptedAI @@ -371,16 +362,13 @@ public: { if (uiRangeCheck_Timer < uiDiff) { - if (instance) + if (Creature* pIchoron = Unit::GetCreature(*me, instance->GetData64(DATA_ICHORON))) { - if (Creature* pIchoron = Unit::GetCreature(*me, instance->GetData64(DATA_ICHORON))) + if (me->IsWithinDist(pIchoron, 2.0f, false)) { - if (me->IsWithinDist(pIchoron, 2.0f, false)) - { - if (pIchoron->AI()) - pIchoron->AI()->DoAction(ACTION_WATER_ELEMENT_HIT); - me->DespawnOrUnsummon(); - } + if (pIchoron->AI()) + pIchoron->AI()->DoAction(ACTION_WATER_ELEMENT_HIT); + me->DespawnOrUnsummon(); } } uiRangeCheck_Timer = 1000; diff --git a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp index 964f6b75e72..c4985962bd4 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp @@ -37,7 +37,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_lavanthorAI(creature); + return GetInstanceAI<boss_lavanthorAI>(creature); } struct boss_lavanthorAI : public ScriptedAI @@ -60,19 +60,14 @@ public: uiFlameBreathTimer = 5000; uiLavaBurnTimer = 10000; uiCauterizingFlamesTimer = 3000; - if (instance) - { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); - } + if (instance->GetData(DATA_WAVE_COUNT) == 6) + instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { - if (instance) - { if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_LAVANTHOR_CELL))) if (pDoor->GetGoState() == GO_STATE_READY) { @@ -83,7 +78,6 @@ public: instance->SetData(DATA_1ST_BOSS_EVENT, IN_PROGRESS); else if (instance->GetData(DATA_WAVE_COUNT) == 12) instance->SetData(DATA_2ND_BOSS_EVENT, IN_PROGRESS); - } } void AttackStart(Unit* who) OVERRIDE @@ -141,18 +135,15 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) + if (instance->GetData(DATA_WAVE_COUNT) == 6) { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - { - instance->SetData(DATA_1ST_BOSS_EVENT, DONE); - instance->SetData(DATA_WAVE_COUNT, 7); - } - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - { - instance->SetData(DATA_2ND_BOSS_EVENT, DONE); - instance->SetData(DATA_WAVE_COUNT, 13); - } + instance->SetData(DATA_1ST_BOSS_EVENT, DONE); + instance->SetData(DATA_WAVE_COUNT, 7); + } + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + { + instance->SetData(DATA_2ND_BOSS_EVENT, DONE); + instance->SetData(DATA_WAVE_COUNT, 13); } } }; diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp index d5dd41e7a90..0807fb826f2 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp @@ -33,7 +33,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_moraggAI(creature); + return GetInstanceAI<boss_moraggAI>(creature); } struct boss_moraggAI : public ScriptedAI @@ -53,30 +53,24 @@ public: uiOpticLinkTimer = 10000; uiCorrosiveSalivaTimer = 5000; - if (instance) - { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); - } + if (instance->GetData(DATA_WAVE_COUNT) == 6) + instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { - if (instance) - { - if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_MORAGG_CELL))) - if (pDoor->GetGoState() == GO_STATE_READY) - { - EnterEvadeMode(); - return; - } - if (instance->GetData(DATA_WAVE_COUNT) == 6) - instance->SetData(DATA_1ST_BOSS_EVENT, IN_PROGRESS); - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - instance->SetData(DATA_2ND_BOSS_EVENT, IN_PROGRESS); - } + if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_MORAGG_CELL))) + if (pDoor->GetGoState() == GO_STATE_READY) + { + EnterEvadeMode(); + return; + } + if (instance->GetData(DATA_WAVE_COUNT) == 6) + instance->SetData(DATA_1ST_BOSS_EVENT, IN_PROGRESS); + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + instance->SetData(DATA_2ND_BOSS_EVENT, IN_PROGRESS); } void AttackStart(Unit* who) OVERRIDE @@ -119,18 +113,15 @@ public: } void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) + if (instance->GetData(DATA_WAVE_COUNT) == 6) { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - { - instance->SetData(DATA_1ST_BOSS_EVENT, DONE); - instance->SetData(DATA_WAVE_COUNT, 7); - } - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - { - instance->SetData(DATA_2ND_BOSS_EVENT, DONE); - instance->SetData(DATA_WAVE_COUNT, 13); - } + instance->SetData(DATA_1ST_BOSS_EVENT, DONE); + instance->SetData(DATA_WAVE_COUNT, 7); + } + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + { + instance->SetData(DATA_2ND_BOSS_EVENT, DONE); + instance->SetData(DATA_WAVE_COUNT, 13); } } }; diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index 8b39c48fb92..40dcac41692 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -63,7 +63,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_xevozzAI(creature); + return GetInstanceAI<boss_xevozzAI>(creature); } struct boss_xevozzAI : public ScriptedAI @@ -81,13 +81,10 @@ public: void Reset() OVERRIDE { - if (instance) - { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); - } + if (instance->GetData(DATA_WAVE_COUNT) == 6) + instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); uiSummonEtherealSphere_Timer = urand(10000, 12000); uiArcaneBarrageVolley_Timer = urand(20000, 22000); @@ -137,19 +134,16 @@ public: void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - { - if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_XEVOZZ_CELL))) - if (pDoor->GetGoState() == GO_STATE_READY) - { - EnterEvadeMode(); - return; - } - if (instance->GetData(DATA_WAVE_COUNT) == 6) - instance->SetData(DATA_1ST_BOSS_EVENT, IN_PROGRESS); - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - instance->SetData(DATA_2ND_BOSS_EVENT, IN_PROGRESS); - } + if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_XEVOZZ_CELL))) + if (pDoor->GetGoState() == GO_STATE_READY) + { + EnterEvadeMode(); + return; + } + if (instance->GetData(DATA_WAVE_COUNT) == 6) + instance->SetData(DATA_1ST_BOSS_EVENT, IN_PROGRESS); + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + instance->SetData(DATA_2ND_BOSS_EVENT, IN_PROGRESS); } void MoveInLineOfSight(Unit* /*who*/) OVERRIDE { } @@ -199,18 +193,15 @@ public: DespawnSphere(); - if (instance) + if (instance->GetData(DATA_WAVE_COUNT) == 6) { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - { - instance->SetData(DATA_1ST_BOSS_EVENT, DONE); - instance->SetData(DATA_WAVE_COUNT, 7); - } - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - { - instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); - instance->SetData(DATA_WAVE_COUNT, 13); - } + instance->SetData(DATA_1ST_BOSS_EVENT, DONE); + instance->SetData(DATA_WAVE_COUNT, 7); + } + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + { + instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); + instance->SetData(DATA_WAVE_COUNT, 13); } } void KilledUnit(Unit* victim) OVERRIDE @@ -231,7 +222,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ethereal_sphereAI(creature); + return GetInstanceAI<npc_ethereal_sphereAI>(creature); } struct npc_ethereal_sphereAI : public ScriptedAI @@ -263,16 +254,13 @@ public: if (uiRangeCheck_Timer < uiDiff) { - if (instance) + if (Creature* pXevozz = Unit::GetCreature(*me, instance->GetData64(DATA_XEVOZZ))) { - if (Creature* pXevozz = Unit::GetCreature(*me, instance->GetData64(DATA_XEVOZZ))) - { - float fDistance = me->GetDistance2d(pXevozz); - if (fDistance <= 3) - DoCast(pXevozz, SPELL_ARCANE_POWER); - else - DoCast(me, 35845); //Is it blizzlike? - } + float fDistance = me->GetDistance2d(pXevozz); + if (fDistance <= 3) + DoCast(pXevozz, SPELL_ARCANE_POWER); + else + DoCast(me, 35845); //Is it blizzlike? } uiRangeCheck_Timer = 1000; } diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index 3db389ac703..420f3d2836b 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -58,7 +58,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_zuramatAI(creature); + return GetInstanceAI<boss_zuramatAI>(creature); } struct boss_zuramatAI : public ScriptedAI @@ -77,13 +77,10 @@ public: void Reset() OVERRIDE { - if (instance) - { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); - } + if (instance->GetData(DATA_WAVE_COUNT) == 6) + instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED); + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED); SpellShroudOfDarknessTimer = 22000; SpellVoidShiftTimer = 15000; @@ -108,19 +105,16 @@ public: void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - { - if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_ZURAMAT_CELL))) - if (pDoor->GetGoState() == GO_STATE_READY) - { - EnterEvadeMode(); - return; - } - if (instance->GetData(DATA_WAVE_COUNT) == 6) - instance->SetData(DATA_1ST_BOSS_EVENT, IN_PROGRESS); - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - instance->SetData(DATA_2ND_BOSS_EVENT, IN_PROGRESS); - } + if (GameObject* pDoor = instance->instance->GetGameObject(instance->GetData64(DATA_ZURAMAT_CELL))) + if (pDoor->GetGoState() == GO_STATE_READY) + { + EnterEvadeMode(); + return; + } + if (instance->GetData(DATA_WAVE_COUNT) == 6) + instance->SetData(DATA_1ST_BOSS_EVENT, IN_PROGRESS); + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + instance->SetData(DATA_2ND_BOSS_EVENT, IN_PROGRESS); } void MoveInLineOfSight(Unit* /*who*/) OVERRIDE { } @@ -172,18 +166,15 @@ public: { Talk(SAY_DEATH); - if (instance) + if (instance->GetData(DATA_WAVE_COUNT) == 6) { - if (instance->GetData(DATA_WAVE_COUNT) == 6) - { - instance->SetData(DATA_1ST_BOSS_EVENT, DONE); - instance->SetData(DATA_WAVE_COUNT, 7); - } - else if (instance->GetData(DATA_WAVE_COUNT) == 12) - { - instance->SetData(DATA_2ND_BOSS_EVENT, DONE); - instance->SetData(DATA_WAVE_COUNT, 13); - } + instance->SetData(DATA_1ST_BOSS_EVENT, DONE); + instance->SetData(DATA_WAVE_COUNT, 7); + } + else if (instance->GetData(DATA_WAVE_COUNT) == 12) + { + instance->SetData(DATA_2ND_BOSS_EVENT, DONE); + instance->SetData(DATA_WAVE_COUNT, 13); } } diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp index 4ff0f2d36e9..3e16f38001b 100644 --- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp @@ -160,7 +160,7 @@ public: bool bActive; bool bWiped; - bool bIsDoorSpellCasted; + bool bIsDoorSpellCast; bool bCrystalActivated; bool defenseless; @@ -210,7 +210,7 @@ public: uiCyanigosaEventTimer = 3*IN_MILLISECONDS; bActive = false; - bIsDoorSpellCasted = false; + bIsDoorSpellCast = false; bCrystalActivated = false; defenseless = true; uiMainEventPhase = NOT_STARTED; diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index c78a1ee1740..af833f3d4c5 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -307,7 +307,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_sinclariAI(creature); + return GetInstanceAI<npc_sinclariAI>(creature); } struct npc_sinclariAI : public ScriptedAI @@ -401,8 +401,7 @@ public: uiPhase = 5; break; case 5: - if (instance) - instance->SetData(DATA_MAIN_EVENT_PHASE, IN_PROGRESS); + instance->SetData(DATA_MAIN_EVENT_PHASE, IN_PROGRESS); me->SetReactState(REACT_PASSIVE); uiTimer = 0; uiPhase = 0; @@ -428,7 +427,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_saboteurAI(creature); + return GetInstanceAI<npc_azure_saboteurAI>(creature); } struct npc_azure_saboteurAI : public npc_escortAI @@ -552,7 +551,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_teleportation_portalAI(creature); + return GetInstanceAI<npc_teleportation_portalAI>(creature); } struct npc_teleportation_portalAI : public ScriptedAI @@ -585,9 +584,6 @@ public: void UpdateAI(uint32 diff) OVERRIDE { - if (!instance) //Massive usage of instance, global check - return; - if (instance->GetData(DATA_REMOVE_NPC) == 1) { me->DespawnOrUnsummon(); @@ -649,7 +645,7 @@ public: uiSpawnTimer = SPAWN_TIME; } else uiSpawnTimer -= diff; - if (bPortalGuardianOrKeeperOrEliteSpawn && !me->IsNonMeleeSpellCasted(false)) + if (bPortalGuardianOrKeeperOrEliteSpawn && !me->IsNonMeleeSpellCast(false)) { me->Kill(me, false); me->RemoveCorpse(); @@ -660,22 +656,19 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(DATA_WAVE_COUNT, instance->GetData(DATA_WAVE_COUNT)+1); + instance->SetData(DATA_WAVE_COUNT, instance->GetData(DATA_WAVE_COUNT)+1); } void JustSummoned(Creature* summoned) OVERRIDE { listOfMobs.Summon(summoned); - if (instance) - instance->SetData64(DATA_ADD_TRASH_MOB, summoned->GetGUID()); + instance->SetData64(DATA_ADD_TRASH_MOB, summoned->GetGUID()); } void SummonedCreatureDies(Creature* summoned, Unit* /*killer*/) OVERRIDE { listOfMobs.Despawn(summoned); - if (instance) - instance->SetData64(DATA_DEL_TRASH_MOB, summoned->GetGUID()); + instance->SetData64(DATA_DEL_TRASH_MOB, summoned->GetGUID()); } }; @@ -687,8 +680,7 @@ struct violet_hold_trashAI : public npc_escortAI { instance = creature->GetInstanceScript(); bHasGotMovingPoints = false; - if (instance) - portalLocationID = instance->GetData(DATA_PORTAL_LOCATION); + portalLocationID = instance->GetData(DATA_PORTAL_LOCATION); Reset(); } @@ -788,16 +780,14 @@ struct violet_hold_trashAI : public npc_escortAI void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(DATA_NPC_PRESENCE_AT_DOOR_REMOVE, 1); + instance->SetData(DATA_NPC_PRESENCE_AT_DOOR_REMOVE, 1); } void CreatureStartAttackDoor() { me->SetReactState(REACT_PASSIVE); DoCast(SPELL_DESTROY_DOOR_SEAL); - if (instance) - instance->SetData(DATA_NPC_PRESENCE_AT_DOOR_ADD, 1); + instance->SetData(DATA_NPC_PRESENCE_AT_DOOR_ADD, 1); } }; @@ -809,7 +799,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_invaderAI(creature); + return GetInstanceAI<npc_azure_invaderAI>(creature); } struct npc_azure_invaderAI : public violet_hold_trashAI @@ -887,7 +877,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_binderAI(creature); + return GetInstanceAI<npc_azure_binderAI>(creature); } struct npc_azure_binderAI : public violet_hold_trashAI @@ -965,7 +955,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_mage_slayerAI(creature); + return GetInstanceAI<npc_azure_mage_slayerAI>(creature); } struct npc_azure_mage_slayerAI : public violet_hold_trashAI @@ -1025,7 +1015,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_raiderAI(creature); + return GetInstanceAI<npc_azure_raiderAI>(creature); } struct npc_azure_raiderAI : public violet_hold_trashAI @@ -1131,7 +1121,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_stalkerAI(creature); + return GetInstanceAI<npc_azure_stalkerAI>(creature); } }; @@ -1210,7 +1200,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_spellbreakerAI(creature); + return GetInstanceAI<npc_azure_spellbreakerAI>(creature); } }; @@ -1221,7 +1211,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_captainAI(creature); + return GetInstanceAI<npc_azure_captainAI>(creature); } struct npc_azure_captainAI : public violet_hold_trashAI @@ -1273,7 +1263,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_azure_sorcerorAI(creature); + return GetInstanceAI<npc_azure_sorcerorAI>(creature); } struct npc_azure_sorcerorAI : public violet_hold_trashAI diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index ccb18df7f0d..420b01d3564 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -51,6 +51,9 @@ EndContentData */ enum Sinkhole { + GO_EXPLOSIVES_CART = 188160, + NPC_SCOURGED_BURROWER = 26250, + QUEST_PLUG_THE_SINKHOLES = 11897, SPELL_SET_CART = 46797, SPELL_EXPLODE_CART = 46799, SPELL_SUMMON_CART = 46798, @@ -83,7 +86,7 @@ public: return; Player* player = caster->ToPlayer(); - if (player && player->GetQuestStatus(11897) == QUEST_STATUS_INCOMPLETE) + if (player && player->GetQuestStatus(QUEST_PLUG_THE_SINKHOLES) == QUEST_STATUS_INCOMPLETE) { phase = 1; casterGuid = caster->GetGUID(); @@ -104,13 +107,13 @@ public: case 1: DoCast(me, SPELL_EXPLODE_CART, true); DoCast(me, SPELL_SUMMON_CART, true); - if (GameObject* cart = me->FindNearestGameObject(188160, 3)) + if (GameObject* cart = me->FindNearestGameObject(GO_EXPLOSIVES_CART, 3.0f)) cart->SetUInt32Value(GAMEOBJECT_FACTION, 14); phaseTimer = 3000; phase = 2; break; case 2: - if (GameObject* cart = me->FindNearestGameObject(188160, 3)) + if (GameObject* cart = me->FindNearestGameObject(GO_EXPLOSIVES_CART, 3.0f)) cart->UseDoorOrButton(); DoCast(me, SPELL_EXPLODE_CART, true); phaseTimer = 3000; @@ -123,7 +126,7 @@ public: break; case 5: DoCast(me, SPELL_SUMMON_WORM, true); - if (Unit* worm = me->FindNearestCreature(26250, 3)) + if (Unit* worm = me->FindNearestCreature(NPC_SCOURGED_BURROWER, 3.0f)) { worm->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); worm->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE); @@ -133,7 +136,7 @@ public: break; case 6: DoCast(me, SPELL_EXPLODE_CART, true); - if (Unit* worm = me->FindNearestCreature(26250, 3)) + if (Unit* worm = me->FindNearestCreature(NPC_SCOURGED_BURROWER, 3.0f)) { me->Kill(worm); worm->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); @@ -168,6 +171,12 @@ public: ## npc_khunok_the_behemoth ######*/ +enum Khunok +{ + NPC_ORPHANED_MAMMOTH_CALF = 25861, + SPELL_MAMMOTH_CALF_ESCORT_CREDIT = 46231 +}; + class npc_khunok_the_behemoth : public CreatureScript { public: @@ -185,13 +194,13 @@ public: if (who->GetTypeId() != TYPEID_UNIT) return; - if (who->GetEntry() == 25861 && me->IsWithinDistInMap(who, 10.0f)) + if (who->GetEntry() == NPC_ORPHANED_MAMMOTH_CALF && me->IsWithinDistInMap(who, 10.0f)) { if (Unit* owner = who->GetOwner()) { if (owner->GetTypeId() == TYPEID_PLAYER) { - owner->CastSpell(owner, 46231, true); + owner->CastSpell(owner, SPELL_MAMMOTH_CALF_ESCORT_CREDIT, true); who->ToCreature()->DespawnOrUnsummon(); } } @@ -341,11 +350,19 @@ public: ## npc_nerubar_victim ######*/ -#define WARSONG_PEON 25270 +enum Nerubar +{ + NPC_WARSONG_PEON = 25270, + QUEST_TAKEN_BY_THE_SCOURGE = 11611, + SPELL_FREED_WARSONG_MAGE = 45526, + SPELL_FREED_WARSONG_SHAMAN = 45527, + SPELL_FREED_WARSONG_WARRIOR = 45514, + SPELL_FREED_WARSONG_PEON = 45532 +}; const uint32 nerubarVictims[3] = { - 45526, 45527, 45514 + SPELL_FREED_WARSONG_MAGE, SPELL_FREED_WARSONG_SHAMAN, SPELL_FREED_WARSONG_WARRIOR }; class npc_nerubar_victim : public CreatureScript @@ -368,13 +385,13 @@ public: if (!player) return; - if (player->GetQuestStatus(11611) == QUEST_STATUS_INCOMPLETE) + if (player->GetQuestStatus(QUEST_TAKEN_BY_THE_SCOURGE) == QUEST_STATUS_INCOMPLETE) { uint8 uiRand = urand(0, 99); if (uiRand < 25) { - player->CastSpell(me, 45532, true); - player->KilledMonsterCredit(WARSONG_PEON, 0); + player->CastSpell(me, SPELL_FREED_WARSONG_PEON, true); + player->KilledMonsterCredit(NPC_WARSONG_PEON, 0); } else if (uiRand < 75) player->CastSpell(me, nerubarVictims[urand(0, 2)], true); @@ -411,7 +428,10 @@ public: struct npc_jennyAI : public ScriptedAI { - npc_jennyAI(Creature* creature) : ScriptedAI(creature) { } + npc_jennyAI(Creature* creature) : ScriptedAI(creature) + { + setCrateNumber = false; + } bool setCrateNumber; @@ -422,6 +442,9 @@ public: me->SetReactState(REACT_PASSIVE); + if (!me->GetOwner()) + return; + switch (me->GetOwner()->ToPlayer()->GetTeamId()) { case TEAM_ALLIANCE: @@ -1026,9 +1049,9 @@ public: } } - void UpdateAI(uint32 uiDiff) OVERRIDE + void UpdateAI(uint32 diff) OVERRIDE { - npc_escortAI::UpdateAI(uiDiff); + npc_escortAI::UpdateAI(diff); if (arthasInPosition && talbotInPosition) { @@ -1045,7 +1068,7 @@ public: SetEscortPaused(false); } - if (phaseTimer <= uiDiff) + if (phaseTimer <= diff) { Creature* talbot = me->GetCreature(*me, talbotGUID); Creature* arthas = me->GetCreature(*me, arthasGUID); @@ -1196,7 +1219,7 @@ public: phaseTimer = 0; phase = 0; } - } else phaseTimer -= uiDiff; + } else phaseTimer -= diff; if (!UpdateVictim()) return; @@ -1369,7 +1392,7 @@ public: CAST_AI(npc_thassarian::npc_thassarianAI, summoner->ToCreature()->AI())->talbotInPosition = true; } - void UpdateAI(uint32 uiDiff) OVERRIDE + void UpdateAI(uint32 diff) OVERRIDE { if (bCheck) { @@ -1385,23 +1408,23 @@ public: if (me->GetAreaId() == 4125) { - if (shadowBoltTimer <= uiDiff) + if (shadowBoltTimer <= diff) { DoCastVictim(SPELL_SHADOW_BOLT); shadowBoltTimer = urand(5000, 12000); - } else shadowBoltTimer -= uiDiff; + } else shadowBoltTimer -= diff; - if (deflectionTimer <= uiDiff) + if (deflectionTimer <= diff) { DoCastVictim(SPELL_DEFLECTION); deflectionTimer = urand(20000, 25000); - } else deflectionTimer -= uiDiff; + } else deflectionTimer -= diff; - if (soulBlastTimer <= uiDiff) + if (soulBlastTimer <= diff) { DoCastVictim(SPELL_SOUL_BLAST); soulBlastTimer = urand(12000, 18000); - } else soulBlastTimer -= uiDiff; + } else soulBlastTimer -= diff; } DoMeleeAttackIfReady(); @@ -1491,11 +1514,11 @@ public: } } - void UpdateAI(uint32 uiDiff) OVERRIDE + void UpdateAI(uint32 diff) OVERRIDE { - ScriptedAI::UpdateAI(uiDiff); + ScriptedAI::UpdateAI(diff); - if (phaseTimer <= uiDiff) + if (phaseTimer <= diff) { switch (phase) { @@ -1551,7 +1574,7 @@ public: phase = 0; break; } - } else phaseTimer -= uiDiff; + } else phaseTimer -= diff; if (!UpdateVictim()) return; @@ -1632,7 +1655,7 @@ public: } } - void UpdateAI(uint32 /*uiDiff*/) OVERRIDE + void UpdateAI(uint32 /*diff*/) OVERRIDE { if (!UpdateVictim()) return; diff --git a/src/server/scripts/Northrend/zone_crystalsong_forest.cpp b/src/server/scripts/Northrend/zone_crystalsong_forest.cpp index 34a217b6418..4c45bed1af8 100644 --- a/src/server/scripts/Northrend/zone_crystalsong_forest.cpp +++ b/src/server/scripts/Northrend/zone_crystalsong_forest.cpp @@ -56,21 +56,21 @@ public: SetCombatMovement(false); } - uint64 uiTargetGUID; + uint64 targetGUID; void Reset() OVERRIDE { - uiTargetGUID = 0; + targetGUID = 0; } - void UpdateAI(uint32 /*uiDiff*/) OVERRIDE + void UpdateAI(uint32 /*diff*/) OVERRIDE { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) return; if (me->GetEntry() == NPC_WARMAGE_SARINA) { - if (!uiTargetGUID) + if (!targetGUID) { std::list<Creature*> orbList; GetCreatureListWithEntryInGrid(orbList, me, NPC_TRANSITUS_SHIELD_DUMMY, 32.0f); @@ -82,7 +82,7 @@ public: { if (pOrb->GetPositionY() < 1000) { - uiTargetGUID = pOrb->GetGUID(); + targetGUID = pOrb->GetGUID(); break; } } @@ -91,13 +91,13 @@ public: } }else { - if (!uiTargetGUID) + if (!targetGUID) if (Creature* pOrb = GetClosestCreatureWithEntry(me, NPC_TRANSITUS_SHIELD_DUMMY, 32.0f)) - uiTargetGUID = pOrb->GetGUID(); + targetGUID = pOrb->GetGUID(); } - if (Creature* pOrb = me->GetCreature(*me, uiTargetGUID)) + if (Creature* pOrb = me->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 3a0984e4c44..146276e757b 100644 --- a/src/server/scripts/Northrend/zone_dalaran.cpp +++ b/src/server/scripts/Northrend/zone_dalaran.cpp @@ -35,8 +35,8 @@ Script Data End */ enum Spells { - SPELL_TRESPASSER_A = 54028, - SPELL_TRESPASSER_H = 54029, + SPELL_TRESPASSER_A = 54028, + SPELL_TRESPASSER_H = 54029, SPELL_SUNREAVER_DISGUISE_FEMALE = 70973, SPELL_SUNREAVER_DISGUISE_MALE = 70974, @@ -46,8 +46,10 @@ enum Spells enum NPCs // All outdoor guards are within 35.0f of these NPCs { - NPC_APPLEBOUGH_A = 29547, - NPC_SWEETBERRY_H = 29715, + NPC_APPLEBOUGH_A = 29547, + NPC_SWEETBERRY_H = 29715, + NPC_SILVER_COVENANT_GUARDIAN_MAGE = 29254, + NPC_SUNREAVER_GUARDIAN_MAGE = 29255, }; class npc_mageguard_dalaran : public CreatureScript @@ -89,7 +91,7 @@ public: switch (me->GetEntry()) { - case 29254: + case NPC_SILVER_COVENANT_GUARDIAN_MAGE: if (player->GetTeam() == HORDE) // Horde unit found in Alliance area { if (GetClosestCreatureWithEntry(me, NPC_APPLEBOUGH_A, 32.0f)) @@ -101,7 +103,7 @@ public: DoCast(who, SPELL_TRESPASSER_A); // Teleport the Horde unit out } break; - case 29255: + case NPC_SUNREAVER_GUARDIAN_MAGE: if (player->GetTeam() == ALLIANCE) // Alliance unit found in Horde area { if (GetClosestCreatureWithEntry(me, NPC_SWEETBERRY_H, 32.0f)) diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index 5f3442c1ba9..9673fef0a1e 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -517,7 +517,7 @@ enum WyrmDefenderEnum // Spells data SPELL_CHARACTER_SCRIPT = 49213, SPELL_DEFENDER_ON_LOW_HEALTH_EMOTE = 52421, // ID - 52421 Wyrmrest Defender: On Low Health Boss Emote to Controller - Random /self/ - SPELL_RENEW = 49263, // casted to heal drakes + SPELL_RENEW = 49263, // cast to heal drakes SPELL_WYRMREST_DEFENDER_MOUNT = 49256, // Texts data |
