diff options
Diffstat (limited to 'src/server/scripts/Outland')
43 files changed, 441 insertions, 888 deletions
diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp index 783e7b9f09b..9b96255fde0 100644 --- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp +++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp @@ -250,7 +250,7 @@ public: if (!Avatar_summoned && HealthBelowPct(25)) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); Talk(SAY_SUMMON); @@ -266,7 +266,7 @@ public: { if (target->GetTypeId() == TYPEID_PLAYER) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); Talk(SAY_ROAR); diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp index 862fe76decd..db69ca6c892 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp @@ -170,7 +170,7 @@ public: if (FrostNova_Timer <= diff) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); DoCast(me, SPELL_FROSTNOVA); @@ -194,7 +194,7 @@ public: { if (Blink_Timer <= diff) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); //expire movement, will prevent from running right back to victim after cast @@ -210,7 +210,7 @@ public: if (Beacon_Timer <= diff) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); if (!urand(0, 3)) @@ -301,7 +301,7 @@ public: if (Apprentice_Timer <= diff) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); DoCast(me, SPELL_ETHEREAL_APPRENTICE, true); diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp index 9b959a7fdd8..e04ef216d92 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_pandemonius.cpp @@ -106,7 +106,7 @@ public: { if (DarkShell_Timer <= diff) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); Talk(EMOTE_DARK_SHELL); diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp index c077cec3c04..6adfdf7c885 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_darkweaver_syth.cpp @@ -115,7 +115,7 @@ public: { Talk(SAY_SUMMON); - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(false); DoCast(me, SPELL_SUMMON_SYTH_ARCANE, true); //front diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp index 022ac3e9e4d..217eb2ea004 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_tailonking_ikiss.cpp @@ -167,7 +167,7 @@ public: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(false); //Spell doesn't work, but we use for visual effect at least diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.cpp b/src/server/scripts/Outland/BlackTemple/black_temple.cpp index 57c494756e5..0f13a03f568 100644 --- a/src/server/scripts/Outland/BlackTemple/black_temple.cpp +++ b/src/server/scripts/Outland/BlackTemple/black_temple.cpp @@ -207,7 +207,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_wrathbone_flayerAI(creature); + return GetInstanceAI<npc_wrathbone_flayerAI>(creature); } }; diff --git a/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp b/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp index 3a33885144d..080960c27c3 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_bloodboil.cpp @@ -64,7 +64,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_gurtogg_bloodboilAI(creature); + return GetInstanceAI<boss_gurtogg_bloodboilAI>(creature); } struct boss_gurtogg_bloodboilAI : public ScriptedAI @@ -95,8 +95,7 @@ public: void Reset() OVERRIDE { - if (instance) - instance->SetBossState(DATA_GURTOGG_BLOODBOIL, NOT_STARTED); + instance->SetBossState(DATA_GURTOGG_BLOODBOIL, NOT_STARTED); TargetGUID = 0; @@ -123,8 +122,7 @@ public: { DoZoneInCombat(); Talk(SAY_AGGRO); - if (instance) - instance->SetBossState(DATA_GURTOGG_BLOODBOIL, IN_PROGRESS); + instance->SetBossState(DATA_GURTOGG_BLOODBOIL, IN_PROGRESS); } void KilledUnit(Unit* /*victim*/) OVERRIDE @@ -134,8 +132,7 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_GURTOGG_BLOODBOIL, DONE); + instance->SetBossState(DATA_GURTOGG_BLOODBOIL, DONE); Talk(SAY_DEATH); } diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index c9ccbb79ad0..88a549e124b 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -541,9 +541,6 @@ public: { me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - if (!instance) - return; - instance->SetBossState(DATA_ILLIDAN_STORMRAGE, DONE); for (uint8 i = DATA_GO_ILLIDAN_DOOR_R; i < DATA_GO_ILLIDAN_DOOR_L + 1; ++i) @@ -974,7 +971,7 @@ public: break; } - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) return; if (Phase == PHASE_NORMAL || Phase == PHASE_NORMAL_2 || (Phase == PHASE_NORMAL_MAIEV && !me->HasAura(SPELL_CAGED))) @@ -1126,7 +1123,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_illidan_stormrageAI(creature); + return GetInstanceAI<boss_illidan_stormrageAI>(creature); } }; @@ -1368,37 +1365,27 @@ public: void Reset() OVERRIDE { WalkCount = 0; - if (instance) - { - instance->SetBossState(DATA_ILLIDAN_STORMRAGE, NOT_STARTED); + instance->SetBossState(DATA_ILLIDAN_STORMRAGE, NOT_STARTED); - IllidanGUID = instance->GetData64(DATA_ILLIDAN_STORMRAGE); - GateGUID = instance->GetData64(DATA_GO_ILLIDAN_GATE); - DoorGUID[0] = instance->GetData64(DATA_GO_ILLIDAN_DOOR_R); - DoorGUID[1] = instance->GetData64(DATA_GO_ILLIDAN_DOOR_L); - - if (JustCreated) // close all doors at create - { - instance->HandleGameObject(GateGUID, false); + IllidanGUID = instance->GetData64(DATA_ILLIDAN_STORMRAGE); + GateGUID = instance->GetData64(DATA_GO_ILLIDAN_GATE); + DoorGUID[0] = instance->GetData64(DATA_GO_ILLIDAN_DOOR_R); + DoorGUID[1] = instance->GetData64(DATA_GO_ILLIDAN_DOOR_L); - for (uint8 i = 0; i < 2; ++i) - instance->HandleGameObject(DoorGUID[i], false); - } - else // open all doors, raid wiped - { - instance->HandleGameObject(GateGUID, true); - WalkCount = 1; // skip first wp + if (JustCreated) // close all doors at create + { + instance->HandleGameObject(GateGUID, false); - for (uint8 i = 0; i < 2; ++i) - instance->HandleGameObject(DoorGUID[i], true); - } + for (uint8 i = 0; i < 2; ++i) + instance->HandleGameObject(DoorGUID[i], false); } - else + else // open all doors, raid wiped { - IllidanGUID = 0; - GateGUID = 0; - DoorGUID[0] = 0; - DoorGUID[1] = 0; + instance->HandleGameObject(GateGUID, true); + WalkCount = 1; // skip first wp + + for (uint8 i = 0; i < 2; ++i) + instance->HandleGameObject(DoorGUID[i], true); } ChannelGUID = 0; @@ -1461,9 +1448,6 @@ public: void BeginTalk() { - if (!instance) - return; - instance->SetBossState(DATA_ILLIDAN_STORMRAGE, IN_PROGRESS); for (uint8 i = 0; i < 2; ++i) instance->HandleGameObject(DoorGUID[i], false); @@ -1515,8 +1499,6 @@ public: void EnterPhase(PhaseAkama NextPhase) { - if (!instance) - return; switch (NextPhase) { case PHASE_CHANNEL: @@ -1634,8 +1616,7 @@ public: me->InterruptNonMeleeSpells(true); Spirit[0]->InterruptNonMeleeSpells(true); Spirit[1]->InterruptNonMeleeSpells(true); - if (instance) - instance->HandleGameObject(GateGUID, true); + instance->HandleGameObject(GateGUID, true); Timer = 2000; break; case 4: @@ -1664,8 +1645,7 @@ public: { case 6: for (uint8 i = 0; i < 2; ++i) - if (instance) - instance->HandleGameObject(DoorGUID[i], true); + instance->HandleGameObject(DoorGUID[i], true); break; case 8: if (Phase == PHASE_WALK) @@ -1794,14 +1774,13 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_akama_illidanAI(creature); + return GetInstanceAI<npc_akama_illidanAI>(creature); } }; void boss_illidan_stormrage::boss_illidan_stormrageAI::Reset() { - if (instance) - instance->SetBossState(DATA_ILLIDAN_STORMRAGE, NOT_STARTED); + instance->SetBossState(DATA_ILLIDAN_STORMRAGE, NOT_STARTED); if (Creature* akama = ObjectAccessor::GetCreature(*me, AkamaGUID)) { @@ -2160,10 +2139,7 @@ public: void Reset() OVERRIDE { - if (instance) - IllidanGUID = instance->GetData64(DATA_ILLIDAN_STORMRAGE); - else - IllidanGUID = 0; + IllidanGUID = instance->GetData64(DATA_ILLIDAN_STORMRAGE); CheckTimer = 5000; DoCast(me, SPELL_SHADOWFIEND_PASSIVE, true); @@ -2228,7 +2204,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_parasitic_shadowfiendAI(creature); + return GetInstanceAI<npc_parasitic_shadowfiendAI>(creature); } }; diff --git a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp index aafe5f365b2..f33c316d278 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp @@ -84,7 +84,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_shahrazAI(creature); + return GetInstanceAI<boss_shahrazAI>(creature); } struct boss_shahrazAI : public ScriptedAI @@ -113,8 +113,7 @@ public: void Reset() OVERRIDE { - if (instance) - instance->SetBossState(DATA_MOTHER_SHAHRAZ, NOT_STARTED); + instance->SetBossState(DATA_MOTHER_SHAHRAZ, NOT_STARTED); for (uint8 i = 0; i<3; ++i) TargetGUID[i] = 0; @@ -136,8 +135,7 @@ public: void EnterCombat(Unit* /*who*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_MOTHER_SHAHRAZ, IN_PROGRESS); + instance->SetBossState(DATA_MOTHER_SHAHRAZ, IN_PROGRESS); DoZoneInCombat(); Talk(SAY_AGGRO); @@ -150,8 +148,7 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_MOTHER_SHAHRAZ, DONE); + instance->SetBossState(DATA_MOTHER_SHAHRAZ, DONE); Talk(SAY_DEATH); } diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp index ad913a45071..da238c3ec4e 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp @@ -134,7 +134,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_reliquary_of_soulsAI(creature); + return GetInstanceAI<boss_reliquary_of_soulsAI>(creature); } struct boss_reliquary_of_soulsAI : public ScriptedAI @@ -158,8 +158,7 @@ public: void Reset() OVERRIDE { - if (instance) - instance->SetBossState(DATA_RELIQUARY_OF_SOULS, NOT_STARTED); + instance->SetBossState(DATA_RELIQUARY_OF_SOULS, NOT_STARTED); if (EssenceGUID) { @@ -197,8 +196,7 @@ public: { me->AddThreat(who, 10000.0f); DoZoneInCombat(); - if (instance) - instance->SetBossState(DATA_RELIQUARY_OF_SOULS, IN_PROGRESS); + instance->SetBossState(DATA_RELIQUARY_OF_SOULS, IN_PROGRESS); Phase = 1; Counter = 0; @@ -243,8 +241,7 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_RELIQUARY_OF_SOULS, DONE); + instance->SetBossState(DATA_RELIQUARY_OF_SOULS, DONE); } void UpdateAI(uint32 diff) OVERRIDE diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 1a2a55e6d00..be3c5b35ea6 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -198,8 +198,7 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_SHADE_OF_AKAMA, DONE); + instance->SetBossState(DATA_SHADE_OF_AKAMA, DONE); } void EnterCombat(Unit* /*who*/) OVERRIDE { } @@ -405,7 +404,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_shade_of_akamaAI(creature); + return GetInstanceAI<boss_shade_of_akamaAI>(creature); } }; @@ -475,16 +474,13 @@ public: switch (eventId) { case EVENT_SHADE_START: - if (instance) - { - instance->SetBossState(DATA_SHADE_OF_AKAMA, IN_PROGRESS); - me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); - me->RemoveAura(SPELL_STEALTH); - me->SetWalk(true); - me->GetMotionMaster()->MovePoint(0, AkamaWP[0].x, AkamaWP[0].y, AkamaWP[0].z, false); - events.ScheduleEvent(EVENT_SHADE_CHANNEL, 10000); - break; - } + instance->SetBossState(DATA_SHADE_OF_AKAMA, IN_PROGRESS); + me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); + me->RemoveAura(SPELL_STEALTH); + me->SetWalk(true); + me->GetMotionMaster()->MovePoint(0, AkamaWP[0].x, AkamaWP[0].y, AkamaWP[0].z, false); + events.ScheduleEvent(EVENT_SHADE_CHANNEL, 10000); + break; case EVENT_SHADE_CHANNEL: me->AddUnitState(UNIT_STATE_ROOT); me->SetFacingTo(3.118662f); @@ -550,7 +546,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_akamaAI(creature); + return GetInstanceAI<npc_akamaAI>(creature); } }; @@ -622,7 +618,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ashtongue_channelerAI(creature); + return GetInstanceAI<npc_ashtongue_channelerAI>(creature); } }; @@ -730,7 +726,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_creature_generator_akamaAI(creature); + return GetInstanceAI<npc_creature_generator_akamaAI>(creature); } }; @@ -748,6 +744,7 @@ public: npc_ashtongue_sorcererAI(Creature* creature) : ScriptedAI(creature) { instance = creature->GetInstanceScript(); + startedBanishing = false; } void Reset() OVERRIDE @@ -851,7 +848,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ashtongue_sorcererAI(creature); + return GetInstanceAI<npc_ashtongue_sorcererAI>(creature); } }; @@ -941,7 +938,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ashtongue_defenderAI(creature); + return GetInstanceAI<npc_ashtongue_defenderAI>(creature); } }; @@ -1021,7 +1018,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ashtongue_rogueAI(creature); + return GetInstanceAI<npc_ashtongue_rogueAI>(creature); } }; @@ -1101,7 +1098,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ashtongue_elementalistAI(creature); + return GetInstanceAI<npc_ashtongue_elementalistAI>(creature); } }; @@ -1198,7 +1195,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ashtongue_spiritbinderAI(creature); + return GetInstanceAI<npc_ashtongue_spiritbinderAI>(creature); } }; diff --git a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp index b62e7b35a3c..7c9d88e8db2 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp @@ -90,7 +90,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_supremusAI(creature); + return GetInstanceAI<boss_supremusAI>(creature); } struct boss_supremusAI : public ScriptedAI @@ -107,11 +107,8 @@ public: void Reset() OVERRIDE { - if (instance) - { - if (me->IsAlive()) - instance->SetBossState(DATA_SUPREMUS, NOT_STARTED); - } + if (me->IsAlive()) + instance->SetBossState(DATA_SUPREMUS, NOT_STARTED); phase = 0; @@ -121,8 +118,7 @@ public: void EnterCombat(Unit* /*who*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_SUPREMUS, IN_PROGRESS); + instance->SetBossState(DATA_SUPREMUS, IN_PROGRESS); ChangePhase(); events.ScheduleEvent(EVENT_BERSERK, 900000, GCD_CAST); @@ -158,8 +154,7 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_SUPREMUS, DONE); + instance->SetBossState(DATA_SUPREMUS, DONE); summons.DespawnAll(); } diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp index 7d445e23053..acdc6819ef6 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp @@ -217,7 +217,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_teron_gorefiendAI(creature); + return GetInstanceAI<boss_teron_gorefiendAI>(creature); } struct boss_teron_gorefiendAI : public ScriptedAI @@ -246,8 +246,7 @@ public: void Reset() OVERRIDE { - if (instance) - instance->SetBossState(DATA_TERON_GOREFIEND, NOT_STARTED); + instance->SetBossState(DATA_TERON_GOREFIEND, NOT_STARTED); IncinerateTimer = urand(20000, 31000); SummonDoomBlossomTimer = 12000; @@ -275,8 +274,7 @@ public: { if (me->IsWithinDistInMap(who, VISIBLE_RANGE) && me->IsWithinLOSInMap(who)) { - if (instance) - instance->SetBossState(DATA_TERON_GOREFIEND, IN_PROGRESS); + instance->SetBossState(DATA_TERON_GOREFIEND, IN_PROGRESS); me->GetMotionMaster()->Clear(false); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); @@ -297,8 +295,7 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_TERON_GOREFIEND, DONE); + instance->SetBossState(DATA_TERON_GOREFIEND, DONE); Talk(SAY_DEATH); } diff --git a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp index 1f4a36afad6..882c334cb6e 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp @@ -78,7 +78,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_najentusAI(creature); + return GetInstanceAI<boss_najentusAI>(creature); } struct boss_najentusAI : public ScriptedAI @@ -99,8 +99,7 @@ public: SpineTargetGUID = 0; - if (instance) - instance->SetBossState(DATA_HIGH_WARLORD_NAJENTUS, NOT_STARTED); + instance->SetBossState(DATA_HIGH_WARLORD_NAJENTUS, NOT_STARTED); } void KilledUnit(Unit* /*victim*/) OVERRIDE @@ -111,8 +110,7 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_HIGH_WARLORD_NAJENTUS, DONE); + instance->SetBossState(DATA_HIGH_WARLORD_NAJENTUS, DONE); Talk(SAY_DEATH); } @@ -129,8 +127,7 @@ public: void EnterCombat(Unit* /*who*/) OVERRIDE { - if (instance) - instance->SetBossState(DATA_HIGH_WARLORD_NAJENTUS, IN_PROGRESS); + instance->SetBossState(DATA_HIGH_WARLORD_NAJENTUS, IN_PROGRESS); Talk(SAY_AGGRO); DoZoneInCombat(); diff --git a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp index 057bb725c32..bb77e10d727 100644 --- a/src/server/scripts/Outland/BlackTemple/illidari_council.cpp +++ b/src/server/scripts/Outland/BlackTemple/illidari_council.cpp @@ -218,7 +218,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_illidari_councilAI(creature); + return GetInstanceAI<npc_illidari_councilAI>(creature); } struct npc_illidari_councilAI : public ScriptedAI @@ -263,12 +263,9 @@ public: pMember->AI()->EnterEvadeMode(); } - if (instance) - { - instance->SetBossState(DATA_ILLIDARI_COUNCIL, NOT_STARTED); - if (Creature* VoiceTrigger = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE))) - VoiceTrigger->AI()->EnterEvadeMode(); - } + instance->SetBossState(DATA_ILLIDARI_COUNCIL, NOT_STARTED); + if (Creature* VoiceTrigger = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE))) + VoiceTrigger->AI()->EnterEvadeMode(); EventBegun = false; @@ -284,9 +281,6 @@ public: void StartEvent(Unit* target) { - if (!instance) - return; - if (target && target->IsAlive()) { Council[0] = instance->GetData64(DATA_GATHIOS_THE_SHATTERER); @@ -328,13 +322,10 @@ public: { if (DeathCount > 3) { - if (instance) - { - if (Creature* VoiceTrigger = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE))) - VoiceTrigger->DealDamage(VoiceTrigger, VoiceTrigger->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); - instance->SetBossState(DATA_ILLIDARI_COUNCIL, DONE); - //me->SummonCreature(AKAMAID, 746.466980f, 304.394989f, 311.90208f, 6.272870f, TEMPSUMMON_DEAD_DESPAWN, 0); - } + if (Creature* VoiceTrigger = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_ELF_COUNCIL_VOICE))) + VoiceTrigger->DealDamage(VoiceTrigger, VoiceTrigger->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + instance->SetBossState(DATA_ILLIDARI_COUNCIL, DONE); + //me->SummonCreature(AKAMAID, 746.466980f, 304.394989f, 311.90208f, 6.272870f, TEMPSUMMON_DEAD_DESPAWN, 0); me->DealDamage(me, me->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); return; } @@ -401,17 +392,8 @@ struct boss_illidari_councilAI : public ScriptedAI void EnterCombat(Unit* who) OVERRIDE { - if (instance) - { - if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ILLIDARI_COUNCIL))) - CAST_AI(npc_illidari_council::npc_illidari_councilAI, controller->AI())->StartEvent(who); - } - else - { - TC_LOG_ERROR("scripts", ERROR_INST_DATA); - EnterEvadeMode(); - return; - } + if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ILLIDARI_COUNCIL))) + CAST_AI(npc_illidari_council::npc_illidari_councilAI, controller->AI())->StartEvent(who); DoZoneInCombat(); // Load GUIDs on first aggro because the Creature guids are only set as the creatures are created in world- // this means that for each creature, it will attempt to LoadGUIDs even though some of the other creatures are @@ -454,12 +436,6 @@ struct boss_illidari_councilAI : public ScriptedAI void LoadGUIDs() { - if (!instance) - { - TC_LOG_ERROR("scripts", ERROR_INST_DATA); - return; - } - Council[0] = instance->GetData64(DATA_LADY_MALANDE); Council[1] = instance->GetData64(DATA_HIGH_NETHERMANCER_ZEREVOR); Council[2] = instance->GetData64(DATA_GATHIOS_THE_SHATTERER); @@ -476,7 +452,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_gathios_the_shattererAI(creature); + return GetInstanceAI<boss_gathios_the_shattererAI>(creature); } struct boss_gathios_the_shattererAI : public boss_illidari_councilAI @@ -608,7 +584,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_high_nethermancer_zerevorAI(creature); + return GetInstanceAI<boss_high_nethermancer_zerevorAI>(creature); } struct boss_high_nethermancer_zerevorAI : public boss_illidari_councilAI @@ -712,7 +688,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_lady_malandeAI(creature); + return GetInstanceAI<boss_lady_malandeAI>(creature); } struct boss_lady_malandeAI : public boss_illidari_councilAI @@ -790,7 +766,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_veras_darkshadowAI(creature); + return GetInstanceAI<boss_veras_darkshadowAI>(creature); } struct boss_veras_darkshadowAI : public boss_illidari_councilAI diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp index 6ccf69ae39b..1552c4ffe46 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp @@ -104,7 +104,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_fathomlord_karathressAI(creature); + return GetInstanceAI<boss_fathomlord_karathressAI>(creature); } struct boss_fathomlord_karathressAI : public ScriptedAI @@ -135,27 +135,24 @@ public: BlessingOfTides = false; - if (instance) - { - uint64 RAdvisors[MAX_ADVISORS]; - RAdvisors[0] = instance->GetData64(DATA_SHARKKIS); - RAdvisors[1] = instance->GetData64(DATA_TIDALVESS); - RAdvisors[2] = instance->GetData64(DATA_CARIBDIS); - //Respawn of the 3 Advisors - Creature* pAdvisor = NULL; - for (int i=0; i<MAX_ADVISORS; ++i) - if (RAdvisors[i]) + uint64 RAdvisors[MAX_ADVISORS]; + RAdvisors[0] = instance->GetData64(DATA_SHARKKIS); + RAdvisors[1] = instance->GetData64(DATA_TIDALVESS); + RAdvisors[2] = instance->GetData64(DATA_CARIBDIS); + //Respawn of the 3 Advisors + Creature* pAdvisor = NULL; + for (int i=0; i<MAX_ADVISORS; ++i) + if (RAdvisors[i]) + { + pAdvisor = (Unit::GetCreature((*me), RAdvisors[i])); + if (pAdvisor && !pAdvisor->IsAlive()) { - pAdvisor = (Unit::GetCreature((*me), RAdvisors[i])); - if (pAdvisor && !pAdvisor->IsAlive()) - { - pAdvisor->Respawn(); - pAdvisor->AI()->EnterEvadeMode(); - pAdvisor->GetMotionMaster()->MoveTargetedHome(); - } + pAdvisor->Respawn(); + pAdvisor->AI()->EnterEvadeMode(); + pAdvisor->GetMotionMaster()->MoveTargetedHome(); } - instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); - } + } + instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); } @@ -179,9 +176,6 @@ public: void GetAdvisors() { - if (!instance) - return; - Advisors[0] = instance->GetData64(DATA_SHARKKIS); Advisors[1] = instance->GetData64(DATA_TIDALVESS); Advisors[2] = instance->GetData64(DATA_CARIBDIS); @@ -189,9 +183,6 @@ public: void StartEvent(Unit* who) { - if (!instance) - return; - GetAdvisors(); Talk(SAY_AGGRO); @@ -210,8 +201,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_FATHOMLORDKARATHRESSEVENT, DONE); + instance->SetData(DATA_FATHOMLORDKARATHRESSEVENT, DONE); //support for quest 10944 me->SummonCreature(SEER_OLUM, OLUM_X, OLUM_Y, OLUM_Z, OLUM_O, TEMPSUMMON_TIMED_DESPAWN, 3600000); @@ -312,7 +302,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_fathomguard_sharkkisAI(creature); + return GetInstanceAI<boss_fathomguard_sharkkisAI>(creature); } struct boss_fathomguard_sharkkisAI : public ScriptedAI @@ -320,6 +310,7 @@ public: boss_fathomguard_sharkkisAI(Creature* creature) : ScriptedAI(creature) { instance = creature->GetInstanceScript(); + SummonedPet = 0; } InstanceScript* instance; @@ -350,26 +341,19 @@ public: SummonedPet = 0; - if (instance) - instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); + instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); } void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - { - if (Creature* Karathress = (Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS)))) - CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventSharkkisDeath(); - } + if (Creature* Karathress = (Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS)))) + CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventSharkkisDeath(); } void EnterCombat(Unit* who) OVERRIDE { - if (instance) - { - instance->SetData64(DATA_KARATHRESSEVENT_STARTER, who->GetGUID()); - instance->SetData(DATA_KARATHRESSEVENT, IN_PROGRESS); - } + instance->SetData64(DATA_KARATHRESSEVENT_STARTER, who->GetGUID()); + instance->SetData(DATA_KARATHRESSEVENT, IN_PROGRESS); } void UpdateAI(uint32 diff) OVERRIDE @@ -459,7 +443,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_fathomguard_tidalvessAI(creature); + return GetInstanceAI<boss_fathomguard_tidalvessAI>(creature); } struct boss_fathomguard_tidalvessAI : public ScriptedAI @@ -483,26 +467,19 @@ public: PoisonCleansing_Timer = 30000; Earthbind_Timer = 45000; - if (instance) - instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); + instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); } void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - { - if (Creature* Karathress = Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS))) - CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventTidalvessDeath(); - } + if (Creature* Karathress = Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS))) + CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventTidalvessDeath(); } void EnterCombat(Unit* who) OVERRIDE { - if (instance) - { - instance->SetData64(DATA_KARATHRESSEVENT_STARTER, who->GetGUID()); - instance->SetData(DATA_KARATHRESSEVENT, IN_PROGRESS); - } + instance->SetData64(DATA_KARATHRESSEVENT_STARTER, who->GetGUID()); + instance->SetData(DATA_KARATHRESSEVENT, IN_PROGRESS); DoCast(me, SPELL_WINDFURY_WEAPON); } @@ -582,7 +559,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_fathomguard_caribdisAI(creature); + return GetInstanceAI<boss_fathomguard_caribdisAI>(creature); } struct boss_fathomguard_caribdisAI : public ScriptedAI @@ -606,26 +583,19 @@ public: Heal_Timer = 55000; Cyclone_Timer = 30000+rand()%10000; - if (instance) - instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); + instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); } void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - { - if (Creature* Karathress = Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS))) - CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventCaribdisDeath(); - } + if (Creature* Karathress = Unit::GetCreature((*me), instance->GetData64(DATA_KARATHRESS))) + CAST_AI(boss_fathomlord_karathress::boss_fathomlord_karathressAI, Karathress->AI())->EventCaribdisDeath(); } void EnterCombat(Unit* who) OVERRIDE { - if (instance) - { - instance->SetData64(DATA_KARATHRESSEVENT_STARTER, who->GetGUID()); - instance->SetData(DATA_KARATHRESSEVENT, IN_PROGRESS); - } + instance->SetData64(DATA_KARATHRESSEVENT_STARTER, who->GetGUID()); + instance->SetData(DATA_KARATHRESSEVENT, IN_PROGRESS); } void UpdateAI(uint32 diff) OVERRIDE @@ -705,24 +675,21 @@ public: Unit* selectAdvisorUnit() { Unit* unit = NULL; - if (instance) - { - switch (rand()%4) - { - case 0: - unit = Unit::GetUnit(*me, instance->GetData64(DATA_KARATHRESS)); - break; - case 1: - unit = Unit::GetUnit(*me, instance->GetData64(DATA_SHARKKIS)); - break; - case 2: - unit = Unit::GetUnit(*me, instance->GetData64(DATA_TIDALVESS)); - break; - case 3: - unit = me; - break; - } - } else unit = me; + switch (rand()%4) + { + case 0: + unit = Unit::GetUnit(*me, instance->GetData64(DATA_KARATHRESS)); + break; + case 1: + unit = Unit::GetUnit(*me, instance->GetData64(DATA_SHARKKIS)); + break; + case 2: + unit = Unit::GetUnit(*me, instance->GetData64(DATA_TIDALVESS)); + break; + case 3: + unit = me; + break; + } return unit; } }; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp index d6205cb3ec7..e3b9006527c 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp @@ -86,7 +86,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_hydross_the_unstableAI(creature); + return GetInstanceAI<boss_hydross_the_unstableAI>(creature); } struct boss_hydross_the_unstableAI : public ScriptedAI @@ -134,8 +134,7 @@ public: me->SetDisplayId(MODEL_CLEAN); - if (instance) - instance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED); + instance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED); beam = false; Summons.DespawnAll(); } @@ -174,8 +173,7 @@ public: { Talk(SAY_AGGRO); - if (instance) - instance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, IN_PROGRESS); + instance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, IN_PROGRESS); } void KilledUnit(Unit* /*victim*/) OVERRIDE @@ -208,8 +206,7 @@ public: { Talk(CorruptedForm ? SAY_CORRUPT_DEATH : SAY_CLEAN_DEATH); - if (instance) - instance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, DONE); + instance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, DONE); Summons.DespawnAll(); } diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp index 1d233aa6da4..f13c64235c4 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp @@ -140,7 +140,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_lady_vashjAI(creature); + return GetInstanceAI<boss_lady_vashjAI>(creature); } struct boss_lady_vashjAI : public ScriptedAI @@ -215,8 +215,7 @@ public: } } - if (instance) - instance->SetData(DATA_LADYVASHJEVENT, NOT_STARTED); + instance->SetData(DATA_LADYVASHJEVENT, NOT_STARTED); me->SetCorpseDelay(1000*60*60); } @@ -237,8 +236,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_LADYVASHJEVENT, DONE); + instance->SetData(DATA_LADYVASHJEVENT, DONE); } void StartEvent() @@ -247,21 +245,17 @@ public: Phase = 1; - if (instance) - instance->SetData(DATA_LADYVASHJEVENT, IN_PROGRESS); + instance->SetData(DATA_LADYVASHJEVENT, IN_PROGRESS); } void EnterCombat(Unit* who) OVERRIDE { - if (instance) - { - // remove old tainted cores to prevent cheating in phase 2 - Map* map = me->GetMap(); - Map::PlayerList const &PlayerList = map->GetPlayers(); - for (Map::PlayerList::const_iterator itr = PlayerList.begin(); itr != PlayerList.end(); ++itr) - if (Player* player = itr->GetSource()) - player->DestroyItemCount(31088, 1, true); - } + // remove old tainted cores to prevent cheating in phase 2 + Map* map = me->GetMap(); + Map::PlayerList const &PlayerList = map->GetPlayers(); + for (Map::PlayerList::const_iterator itr = PlayerList.begin(); itr != PlayerList.end(); ++itr) + if (Player* player = itr->GetSource()) + player->DestroyItemCount(31088, 1, true); StartEvent(); // this is EnterCombat(), so were are 100% in combat, start the event if (Phase != 2) @@ -556,7 +550,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_enchanted_elementalAI(creature); + return GetInstanceAI<npc_enchanted_elementalAI>(creature); } struct npc_enchanted_elementalAI : public ScriptedAI @@ -580,8 +574,6 @@ public: Move = 0; Phase = 1; - VashjGUID = 0; - X = ElementWPPos[0][0]; Y = ElementWPPos[0][1]; Z = ElementWPPos[0][2]; @@ -597,8 +589,7 @@ public: } } - if (instance) - VashjGUID = instance->GetData64(DATA_LADYVASHJ); + VashjGUID = instance->GetData64(DATA_LADYVASHJ); } void EnterCombat(Unit* /*who*/) OVERRIDE { } @@ -608,9 +599,6 @@ public: void UpdateAI(uint32 diff) OVERRIDE { - if (!instance) - return; - if (!VashjGUID) return; @@ -651,7 +639,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_tainted_elementalAI(creature); + return GetInstanceAI<npc_tainted_elementalAI>(creature); } struct npc_tainted_elementalAI : public ScriptedAI @@ -674,9 +662,8 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - if (Creature* vashj = Unit::GetCreature((*me), instance->GetData64(DATA_LADYVASHJ))) - CAST_AI(boss_lady_vashj::boss_lady_vashjAI, vashj->AI())->EventTaintedElementalDeath(); + if (Creature* vashj = Unit::GetCreature((*me), instance->GetData64(DATA_LADYVASHJ))) + CAST_AI(boss_lady_vashj::boss_lady_vashjAI, vashj->AI())->EventTaintedElementalDeath(); } void EnterCombat(Unit* who) OVERRIDE @@ -720,7 +707,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_toxic_sporebatAI(creature); + return GetInstanceAI<npc_toxic_sporebatAI>(creature); } struct npc_toxic_sporebatAI : public ScriptedAI @@ -790,17 +777,14 @@ public: // CheckTimer if (CheckTimer <= diff) { - if (instance) + // check if vashj is death + Unit* Vashj = Unit::GetUnit(*me, instance->GetData64(DATA_LADYVASHJ)); + if (!Vashj || !Vashj->IsAlive() || CAST_AI(boss_lady_vashj::boss_lady_vashjAI, Vashj->ToCreature()->AI())->Phase != 3) { - // check if vashj is death - Unit* Vashj = Unit::GetUnit(*me, instance->GetData64(DATA_LADYVASHJ)); - if (!Vashj || !Vashj->IsAlive() || CAST_AI(boss_lady_vashj::boss_lady_vashjAI, Vashj->ToCreature()->AI())->Phase != 3) - { - // remove - me->setDeathState(DEAD); - me->RemoveCorpse(); - me->setFaction(35); - } + // remove + me->setDeathState(DEAD); + me->RemoveCorpse(); + me->setFaction(35); } CheckTimer = 1000; @@ -819,7 +803,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_shield_generator_channelAI(creature); + return GetInstanceAI<npc_shield_generator_channelAI>(creature); } struct npc_shield_generator_channelAI : public ScriptedAI @@ -831,12 +815,12 @@ public: InstanceScript* instance; uint32 CheckTimer; - bool Casted; + bool Cast; void Reset() OVERRIDE { CheckTimer = 0; - Casted = false; + Cast = false; me->SetDisplayId(11686); // invisible me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); @@ -847,9 +831,6 @@ public: void UpdateAI(uint32 diff) OVERRIDE { - if (!instance) - return; - if (CheckTimer <= diff) { Unit* vashj = Unit::GetUnit(*me, instance->GetData64(DATA_LADYVASHJ)); @@ -857,10 +838,10 @@ public: if (vashj && vashj->IsAlive()) { // start visual channel - if (!Casted || !vashj->HasAura(SPELL_MAGIC_BARRIER)) + if (!Cast || !vashj->HasAura(SPELL_MAGIC_BARRIER)) { DoCast(vashj, SPELL_MAGIC_BARRIER, true); - Casted = true; + Cast = true; } } CheckTimer = 1000; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp index 83ec5e053c0..069b4a45933 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp @@ -181,7 +181,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_leotheras_the_blindAI(creature); + return GetInstanceAI<boss_leotheras_the_blindAI>(creature); } struct boss_leotheras_the_blindAI : public ScriptedAI @@ -242,8 +242,7 @@ public: me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID+1, 0); DoCast(me, SPELL_DUAL_WIELD, true); me->SetCorpseDelay(1000*60*60); - if (instance) - instance->SetData(DATA_LEOTHERASTHEBLINDEVENT, NOT_STARTED); + instance->SetData(DATA_LEOTHERASTHEBLINDEVENT, NOT_STARTED); } void CheckChannelers(/*bool DoEvade = true*/) @@ -290,8 +289,7 @@ public: void StartEvent() { Talk(SAY_AGGRO); - if (instance) - instance->SetData(DATA_LEOTHERASTHEBLINDEVENT, IN_PROGRESS); + instance->SetData(DATA_LEOTHERASTHEBLINDEVENT, IN_PROGRESS); } void CheckBanish() @@ -402,8 +400,7 @@ public: if (Creature* pDemon = Unit::GetCreature(*me, Demon)) pDemon->DespawnOrUnsummon(); } - if (instance) - instance->SetData(DATA_LEOTHERASTHEBLINDEVENT, DONE); + instance->SetData(DATA_LEOTHERASTHEBLINDEVENT, DONE); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -677,7 +674,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_greyheart_spellbinderAI(creature); + return GetInstanceAI<npc_greyheart_spellbinderAI>(creature); } struct npc_greyheart_spellbinderAI : public ScriptedAI @@ -703,20 +700,16 @@ public: Mindblast_Timer = urand(3000, 8000); Earthshock_Timer = urand(5000, 10000); - if (instance) - { - instance->SetData64(DATA_LEOTHERAS_EVENT_STARTER, 0); - Creature* leotheras = Unit::GetCreature(*me, leotherasGUID); - if (leotheras && leotheras->IsAlive()) - CAST_AI(boss_leotheras_the_blind::boss_leotheras_the_blindAI, leotheras->AI())->CheckChannelers(/*false*/); - } + instance->SetData64(DATA_LEOTHERAS_EVENT_STARTER, 0); + Creature* leotheras = Unit::GetCreature(*me, leotherasGUID); + if (leotheras && leotheras->IsAlive()) + CAST_AI(boss_leotheras_the_blind::boss_leotheras_the_blindAI, leotheras->AI())->CheckChannelers(/*false*/); } void EnterCombat(Unit* who) OVERRIDE { me->InterruptNonMeleeSpells(false); - if (instance) - instance->SetData64(DATA_LEOTHERAS_EVENT_STARTER, who->GetGUID()); + instance->SetData64(DATA_LEOTHERAS_EVENT_STARTER, who->GetGUID()); } void JustRespawned() OVERRIDE @@ -740,18 +733,15 @@ public: void UpdateAI(uint32 diff) OVERRIDE { - if (instance) - { - if (!leotherasGUID) - leotherasGUID = instance->GetData64(DATA_LEOTHERAS); + if (!leotherasGUID) + leotherasGUID = instance->GetData64(DATA_LEOTHERAS); - if (!me->IsInCombat() && instance->GetData64(DATA_LEOTHERAS_EVENT_STARTER)) - { - Unit* victim = NULL; - victim = Unit::GetUnit(*me, instance->GetData64(DATA_LEOTHERAS_EVENT_STARTER)); - if (victim) - AttackStart(victim); - } + if (!me->IsInCombat() && instance->GetData64(DATA_LEOTHERAS_EVENT_STARTER)) + { + Unit* victim = NULL; + victim = Unit::GetUnit(*me, instance->GetData64(DATA_LEOTHERAS_EVENT_STARTER)); + if (victim) + AttackStart(victim); } if (!UpdateVictim()) diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp index c4a55065f27..8ea9337537a 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp @@ -81,7 +81,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_the_lurker_belowAI(creature); + return GetInstanceAI<boss_the_lurker_belowAI>(creature); } struct boss_the_lurker_belowAI : public ScriptedAI @@ -138,11 +138,8 @@ public: Summons.DespawnAll(); - if (instance) - { - instance->SetData(DATA_THELURKERBELOWEVENT, NOT_STARTED); - instance->SetData(DATA_STRANGE_POOL, NOT_STARTED); - } + instance->SetData(DATA_THELURKERBELOWEVENT, NOT_STARTED); + instance->SetData(DATA_STRANGE_POOL, NOT_STARTED); DoCast(me, SPELL_SUBMERGE); // submerge anim me->SetVisible(false); // we start invis under water, submerged me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); @@ -151,19 +148,15 @@ public: void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - { - instance->SetData(DATA_THELURKERBELOWEVENT, DONE); - instance->SetData(DATA_STRANGE_POOL, IN_PROGRESS); - } + instance->SetData(DATA_THELURKERBELOWEVENT, DONE); + instance->SetData(DATA_STRANGE_POOL, IN_PROGRESS); Summons.DespawnAll(); } void EnterCombat(Unit* /*who*/) OVERRIDE { - if (instance) - instance->SetData(DATA_THELURKERBELOWEVENT, IN_PROGRESS); + instance->SetData(DATA_THELURKERBELOWEVENT, IN_PROGRESS); } void MoveInLineOfSight(Unit* who) OVERRIDE diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp index 48a4a1e5ecd..1a0b06d25dc 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp @@ -91,7 +91,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_morogrim_tidewalkerAI(creature); + return GetInstanceAI<boss_morogrim_tidewalkerAI>(creature); } struct boss_morogrim_tidewalkerAI : public ScriptedAI @@ -130,16 +130,14 @@ public: Earthquake = false; Phase2 = false; - if (instance) - instance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED); + instance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED); } void StartEvent() { Talk(SAY_AGGRO); - if (instance) - instance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, IN_PROGRESS); + instance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, IN_PROGRESS); } void KilledUnit(Unit* /*victim*/) OVERRIDE @@ -151,8 +149,7 @@ public: { Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, DONE); + instance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, DONE); } void EnterCombat(Unit* /*who*/) OVERRIDE diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp index d6162fd1ea4..0dd83a1adf6 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp @@ -41,7 +41,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_thespiaAI(creature); + return GetInstanceAI<boss_thespiaAI>(creature); } struct boss_thespiaAI : public ScriptedAI @@ -63,16 +63,14 @@ public: LungBurst_Timer = 7000; EnvelopingWinds_Timer = 9000; - if (instance) - instance->SetBossState(DATA_HYDROMANCER_THESPIA, NOT_STARTED); + instance->SetBossState(DATA_HYDROMANCER_THESPIA, NOT_STARTED); } void JustDied(Unit* /*killer*/) OVERRIDE { Talk(SAY_DEAD); - if (instance) - instance->SetBossState(DATA_HYDROMANCER_THESPIA, DONE); + instance->SetBossState(DATA_HYDROMANCER_THESPIA, DONE); } void KilledUnit(Unit* /*victim*/) OVERRIDE @@ -84,8 +82,7 @@ public: { Talk(SAY_AGGRO); - if (instance) - instance->SetBossState(DATA_HYDROMANCER_THESPIA, IN_PROGRESS); + instance->SetBossState(DATA_HYDROMANCER_THESPIA, IN_PROGRESS); } void UpdateAI(uint32 diff) OVERRIDE diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp index 241d0f8fec2..2cc3d45ccff 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp @@ -57,7 +57,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_mekgineer_steamriggerAI(creature); + return GetInstanceAI<boss_mekgineer_steamriggerAI>(creature); } struct boss_mekgineer_steamriggerAI : public ScriptedAI @@ -86,16 +86,14 @@ public: Summon50 = false; Summon25 = false; - if (instance) - instance->SetBossState(DATA_MEKGINEER_STEAMRIGGER, NOT_STARTED); + instance->SetBossState(DATA_MEKGINEER_STEAMRIGGER, NOT_STARTED); } void JustDied(Unit* /*killer*/) OVERRIDE { Talk(SAY_DEATH); - if (instance) - instance->SetBossState(DATA_MEKGINEER_STEAMRIGGER, DONE); + instance->SetBossState(DATA_MEKGINEER_STEAMRIGGER, DONE); } void KilledUnit(Unit* /*victim*/) OVERRIDE @@ -107,8 +105,7 @@ public: { Talk(SAY_AGGRO); - if (instance) - instance->SetBossState(DATA_MEKGINEER_STEAMRIGGER, IN_PROGRESS); + instance->SetBossState(DATA_MEKGINEER_STEAMRIGGER, IN_PROGRESS); } //no known summon spells exist @@ -197,7 +194,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_steamrigger_mechanicAI(creature); + return GetInstanceAI<npc_steamrigger_mechanicAI>(creature); } struct npc_steamrigger_mechanicAI : public ScriptedAI diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp index 887d51a43bf..1b496c086bd 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp @@ -50,7 +50,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_naga_distillerAI(creature); + return GetInstanceAI<npc_naga_distillerAI>(creature); } struct npc_naga_distillerAI : public ScriptedAI @@ -68,13 +68,10 @@ public: me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); //hack, due to really weird spell behaviour :( - if (instance) + if (instance->GetData(DATA_DISTILLER) == IN_PROGRESS) { - if (instance->GetData(DATA_DISTILLER) == IN_PROGRESS) - { - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - } + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); } } @@ -87,15 +84,13 @@ public: DoCast(me, SPELL_WARLORDS_RAGE_NAGA, true); - if (instance) - instance->SetData(DATA_DISTILLER, IN_PROGRESS); + instance->SetData(DATA_DISTILLER, IN_PROGRESS); } void DamageTaken(Unit* /*done_by*/, uint32 &damage) OVERRIDE { if (me->GetHealth() <= damage) - if (instance) - instance->SetData(DATA_DISTILLER, DONE); + instance->SetData(DATA_DISTILLER, DONE); } }; @@ -108,7 +103,7 @@ public: CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_warlord_kalithreshAI(creature); + return GetInstanceAI<boss_warlord_kalithreshAI>(creature); } struct boss_warlord_kalithreshAI : public ScriptedAI @@ -132,16 +127,14 @@ public: Rage_Timer = 45000; CanRage = false; - if (instance) - instance->SetBossState(DATA_WARLORD_KALITHRESH, NOT_STARTED); + instance->SetBossState(DATA_WARLORD_KALITHRESH, NOT_STARTED); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetBossState(DATA_WARLORD_KALITHRESH, IN_PROGRESS); + instance->SetBossState(DATA_WARLORD_KALITHRESH, IN_PROGRESS); } void KilledUnit(Unit* /*victim*/) OVERRIDE @@ -153,17 +146,15 @@ public: { //hack :( if (spell->Id == SPELL_WARLORDS_RAGE_PROC) - if (instance) - if (instance->GetData(DATA_DISTILLER) == DONE) - me->RemoveAurasDueToSpell(SPELL_WARLORDS_RAGE_PROC); + if (instance->GetData(DATA_DISTILLER) == DONE) + me->RemoveAurasDueToSpell(SPELL_WARLORDS_RAGE_PROC); } void JustDied(Unit* /*killer*/) OVERRIDE { Talk(SAY_DEATH); - if (instance) - instance->SetBossState(DATA_WARLORD_KALITHRESH, DONE); + instance->SetBossState(DATA_WARLORD_KALITHRESH, DONE); } void UpdateAI(uint32 diff) OVERRIDE diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp index be4cac80adb..0788fdb3796 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp @@ -122,12 +122,9 @@ class boss_broggok : public CreatureScript void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - { - instance->HandleGameObject(instance->GetData64(DATA_DOOR4), true); - instance->HandleGameObject(instance->GetData64(DATA_DOOR5), true); - instance->SetData(TYPE_BROGGOK_EVENT, DONE); - } + instance->HandleGameObject(instance->GetData64(DATA_DOOR4), true); + instance->HandleGameObject(instance->GetData64(DATA_DOOR5), true); + instance->SetData(TYPE_BROGGOK_EVENT, DONE); } void DoAction(int32 action) OVERRIDE @@ -154,7 +151,7 @@ class boss_broggok : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_broggokAI(creature); + return GetInstanceAI<boss_broggokAI>(creature); } }; diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp index f6bceb78a14..f4bc5a99a01 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp @@ -108,18 +108,16 @@ class boss_kelidan_the_breaker : public CreatureScript SummonChannelers(); me->SetReactState(REACT_PASSIVE); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE); - if (instance) - instance->SetData(TYPE_KELIDAN_THE_BREAKER_EVENT, NOT_STARTED); + instance->SetData(TYPE_KELIDAN_THE_BREAKER_EVENT, NOT_STARTED); } void EnterCombat(Unit* who) OVERRIDE { Talk(SAY_WAKE); - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); DoStartMovement(who); - if (instance) - instance->SetData(TYPE_KELIDAN_THE_BREAKER_EVENT, IN_PROGRESS); + instance->SetData(TYPE_KELIDAN_THE_BREAKER_EVENT, IN_PROGRESS); } void KilledUnit(Unit* /*victim*/) OVERRIDE @@ -193,9 +191,6 @@ class boss_kelidan_the_breaker : public CreatureScript { Talk(SAY_DIE); - if (!instance) - return; - instance->SetData(TYPE_KELIDAN_THE_BREAKER_EVENT, DONE); instance->HandleGameObject(instance->GetData64(DATA_DOOR1), true); instance->HandleGameObject(instance->GetData64(DATA_DOOR6), true); @@ -207,7 +202,7 @@ class boss_kelidan_the_breaker : public CreatureScript { if (check_Timer <= diff) { - if (!me->IsNonMeleeSpellCasted(false)) + if (!me->IsNonMeleeSpellCast(false)) DoCast(me, SPELL_EVOCATION); check_Timer = 5000; } @@ -248,7 +243,7 @@ class boss_kelidan_the_breaker : public CreatureScript if (BurningNova_Timer <= diff) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); Talk(SAY_NOVA); @@ -275,7 +270,7 @@ class boss_kelidan_the_breaker : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_kelidan_the_breakerAI(creature); + return GetInstanceAI<boss_kelidan_the_breakerAI>(creature); } }; @@ -311,7 +306,7 @@ class npc_shadowmoon_channeler : public CreatureScript ShadowBolt_Timer = 1000+rand()%1000; MarkOfShadow_Timer = 5000+rand()%2000; check_Timer = 0; - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); } @@ -319,7 +314,7 @@ class npc_shadowmoon_channeler : public CreatureScript { if (Creature* Kelidan = me->FindNearestCreature(ENTRY_KELIDAN, 100)) CAST_AI(boss_kelidan_the_breaker::boss_kelidan_the_breakerAI, Kelidan->AI())->ChannelerEngaged(who); - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); DoStartMovement(who); } @@ -336,7 +331,7 @@ class npc_shadowmoon_channeler : public CreatureScript { if (check_Timer <= diff) { - if (!me->IsNonMeleeSpellCasted(false)) + if (!me->IsNonMeleeSpellCast(false)) if (Creature* Kelidan = me->FindNearestCreature(ENTRY_KELIDAN, 100)) { uint64 channeler = CAST_AI(boss_kelidan_the_breaker::boss_kelidan_the_breakerAI, Kelidan->AI())->GetChanneled(me); @@ -373,7 +368,7 @@ class npc_shadowmoon_channeler : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_shadowmoon_channelerAI(creature); + return GetInstanceAI<npc_shadowmoon_channelerAI>(creature); } }; diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp index 33e23c12d14..fb5cfa272aa 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_the_maker.cpp @@ -72,9 +72,6 @@ class boss_the_maker : public CreatureScript Domination_Timer = 120000; Knockdown_Timer = 10000; - if (!instance) - return; - instance->SetData(TYPE_THE_MAKER_EVENT, NOT_STARTED); instance->HandleGameObject(instance->GetData64(DATA_DOOR2), true); } @@ -83,9 +80,6 @@ class boss_the_maker : public CreatureScript { Talk(SAY_AGGRO); - if (!instance) - return; - instance->SetData(TYPE_THE_MAKER_EVENT, IN_PROGRESS); instance->HandleGameObject(instance->GetData64(DATA_DOOR2), false); } @@ -99,9 +93,6 @@ class boss_the_maker : public CreatureScript { Talk(SAY_DIE); - if (!instance) - return; - instance->SetData(TYPE_THE_MAKER_EVENT, DONE); instance->HandleGameObject(instance->GetData64(DATA_DOOR2), true); instance->HandleGameObject(instance->GetData64(DATA_DOOR3), true); @@ -156,7 +147,7 @@ class boss_the_maker : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_the_makerAI(creature); + return GetInstanceAI<boss_the_makerAI>(creature); } }; diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp index 7e80182f1e8..6f8eac88c66 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp @@ -224,7 +224,7 @@ class boss_omor_the_unscarred : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_omor_the_unscarredAI(creature); + return GetInstanceAI<boss_omor_the_unscarredAI>(creature); } }; diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp index f4ee716dc67..f52ae3a8948 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp @@ -71,7 +71,7 @@ enum Spells SPELL_SHADOW_CAGE = 30168, SPELL_SHADOW_GRASP = 30410, SPELL_SHADOW_GRASP_VISUAL = 30166, - SPELL_MIND_EXHAUSTION = 44032, //Casted by the cubes when channeling ends + SPELL_MIND_EXHAUSTION = 44032, //Cast by the cubes when channeling ends SPELL_SHADOW_CAGE_C = 30205, SPELL_SHADOW_GRASP_C = 30207, SPELL_SHADOW_BOLT_VOLLEY = 30510, @@ -249,11 +249,8 @@ class boss_magtheridon : public CreatureScript void JustReachedHome() OVERRIDE { - if (instance) - { - instance->SetData(DATA_MAGTHERIDON_EVENT, NOT_STARTED); - instance->SetData(DATA_COLLAPSE, false); - } + instance->SetData(DATA_MAGTHERIDON_EVENT, NOT_STARTED); + instance->SetData(DATA_COLLAPSE, false); } void SetClicker(uint64 cubeGUID, uint64 clickerGUID) @@ -314,8 +311,7 @@ class boss_magtheridon : public CreatureScript void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(DATA_MAGTHERIDON_EVENT, DONE); + instance->SetData(DATA_MAGTHERIDON_EVENT, DONE); Talk(SAY_DEATH); } @@ -331,8 +327,7 @@ class boss_magtheridon : public CreatureScript void EnterCombat(Unit* /*who*/) OVERRIDE { - if (instance) - instance->SetData(DATA_MAGTHERIDON_EVENT, IN_PROGRESS); + instance->SetData(DATA_MAGTHERIDON_EVENT, IN_PROGRESS); DoZoneInCombat(); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -392,7 +387,7 @@ class boss_magtheridon : public CreatureScript if (Quake_Timer <= diff) { // to avoid blastnova interruption - if (!me->IsNonMeleeSpellCasted(false)) + if (!me->IsNonMeleeSpellCast(false)) { DoCast(me, SPELL_QUAKE_TRIGGER, true); Quake_Timer = 50000; @@ -421,7 +416,7 @@ class boss_magtheridon : public CreatureScript Blaze_Timer -= diff; if (!Phase3 && HealthBelowPct(30) - && !me->IsNonMeleeSpellCasted(false) // blast nova + && !me->IsNonMeleeSpellCast(false) // blast nova && !me->HasUnitState(UNIT_STATE_STUNNED)) // shadow cage and earthquake { Phase3 = true; @@ -429,8 +424,7 @@ class boss_magtheridon : public CreatureScript DoCast(me, SPELL_CAMERA_SHAKE, true); DoCast(me, SPELL_DEBRIS_KNOCKDOWN, true); - if (instance) - instance->SetData(DATA_COLLAPSE, true); + instance->SetData(DATA_COLLAPSE, true); } if (Phase3) @@ -457,7 +451,7 @@ class boss_magtheridon : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_magtheridonAI(creature); + return GetInstanceAI<boss_magtheridonAI>(creature); } }; @@ -498,8 +492,7 @@ class npc_hellfire_channeler : public CreatureScript void EnterCombat(Unit* /*who*/) OVERRIDE { - if (instance) - instance->SetData(DATA_CHANNELER_EVENT, IN_PROGRESS); + instance->SetData(DATA_CHANNELER_EVENT, IN_PROGRESS); me->InterruptNonMeleeSpells(false); DoZoneInCombat(); @@ -507,8 +500,7 @@ class npc_hellfire_channeler : public CreatureScript void JustReachedHome() OVERRIDE { - if (instance) - instance->SetData(DATA_CHANNELER_EVENT, NOT_STARTED); + instance->SetData(DATA_CHANNELER_EVENT, NOT_STARTED); DoCast(me, SPELL_SHADOW_GRASP_C, false); } @@ -526,8 +518,7 @@ class npc_hellfire_channeler : public CreatureScript void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(DATA_CHANNELER_EVENT, DONE); + instance->SetData(DATA_CHANNELER_EVENT, DONE); } void UpdateAI(uint32 diff) OVERRIDE @@ -576,7 +567,7 @@ class npc_hellfire_channeler : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_hellfire_channelerAI(creature); + return GetInstanceAI<npc_hellfire_channelerAI>(creature); } }; diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp index 981774a677b..404680a9097 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp @@ -109,8 +109,7 @@ class boss_grand_warlock_nethekurse : public CreatureScript { Talk(SAY_DIE); - if (instance) - instance->SetBossState(DATA_NETHEKURSE, DONE); + instance->SetBossState(DATA_NETHEKURSE, DONE); } void SetData(uint32 data, uint32 value) OVERRIDE @@ -184,8 +183,7 @@ class boss_grand_warlock_nethekurse : public CreatureScript IntroOnce = true; IsIntroEvent = true; - if (instance) - instance->SetBossState(DATA_NETHEKURSE, IN_PROGRESS); + instance->SetBossState(DATA_NETHEKURSE, IN_PROGRESS); } if (IsIntroEvent || !IsMainEvent) @@ -219,9 +217,6 @@ class boss_grand_warlock_nethekurse : public CreatureScript { if (IsIntroEvent) { - if (!instance) - return; - if (instance->GetBossState(DATA_NETHEKURSE) == IN_PROGRESS) { if (IntroEvent_Timer <= diff) @@ -297,7 +292,7 @@ class boss_grand_warlock_nethekurse : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_grand_warlock_nethekurseAI(creature); + return GetInstanceAI<boss_grand_warlock_nethekurseAI>(creature); } }; @@ -328,22 +323,18 @@ class npc_fel_orc_convert : public CreatureScript { events.ScheduleEvent(EVENT_HEMORRHAGE, 3000); - if (instance) - if (Creature* Kurse = Unit::GetCreature(*me, instance->GetData64(NPC_GRAND_WARLOCK_NETHEKURSE))) - if (Kurse && me->IsWithinDist(Kurse, 45.0f)) - Kurse->AI()->SetData(SETDATA_DATA, SETDATA_PEON_AGGRO); + if (Creature* Kurse = Unit::GetCreature(*me, instance->GetData64(NPC_GRAND_WARLOCK_NETHEKURSE))) + if (me->IsWithinDist(Kurse, 45.0f)) + Kurse->AI()->SetData(SETDATA_DATA, SETDATA_PEON_AGGRO); } void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - { - if (instance->GetBossState(DATA_NETHEKURSE) != IN_PROGRESS) - return; + if (instance->GetBossState(DATA_NETHEKURSE) != IN_PROGRESS) + return; - if (Creature* Kurse = Unit::GetCreature(*me, instance->GetData64(NPC_GRAND_WARLOCK_NETHEKURSE))) - Kurse->AI()->SetData(SETDATA_DATA, SETDATA_PEON_DEATH); - } + if (Creature* Kurse = Unit::GetCreature(*me, instance->GetData64(NPC_GRAND_WARLOCK_NETHEKURSE))) + Kurse->AI()->SetData(SETDATA_DATA, SETDATA_PEON_DEATH); } void UpdateAI(uint32 diff) OVERRIDE @@ -369,7 +360,7 @@ class npc_fel_orc_convert : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_fel_orc_convertAI(creature); + return GetInstanceAI<npc_fel_orc_convertAI>(creature); } }; diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp index 9c4be7c0b1b..e647947c133 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp @@ -167,8 +167,7 @@ class boss_warbringer_omrogg : public CreatureScript ThunderClap_Timer = 15000; ResetThreat_Timer = 30000; - if (instance) - instance->SetData(DATA_OMROGG, NOT_STARTED); //End boss can use this later. O'mrogg must be defeated(DONE) or he will come to aid. + instance->SetData(DATA_OMROGG, NOT_STARTED); //End boss can use this later. O'mrogg must be defeated(DONE) or he will come to aid. } void DoYellForThreat() @@ -204,8 +203,7 @@ class boss_warbringer_omrogg : public CreatureScript AggroYell = true; } - if (instance) - instance->SetBossState(DATA_OMROGG, IN_PROGRESS); + instance->SetBossState(DATA_OMROGG, IN_PROGRESS); } void JustSummoned(Creature* summoned) OVERRIDE @@ -259,8 +257,7 @@ class boss_warbringer_omrogg : public CreatureScript RightHead->AI()->SetData(SETDATA_DATA, SETDATA_YELL); - if (instance) - instance->SetBossState(DATA_OMROGG, DONE); + instance->SetBossState(DATA_OMROGG, DONE); } void UpdateAI(uint32 diff) OVERRIDE @@ -388,7 +385,7 @@ class boss_warbringer_omrogg : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_warbringer_omroggAI(creature); + return GetInstanceAI<boss_warbringer_omroggAI>(creature); } }; @@ -438,7 +435,7 @@ class npc_omrogg_heads : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_omrogg_headsAI(creature); + return GetInstanceAI<npc_omrogg_headsAI>(creature); } }; diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp index f9ec3edb362..553c1cbdb33 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp @@ -90,8 +90,7 @@ class boss_warchief_kargath_bladefist : public CreatureScript Talk(SAY_DEATH); removeAdds(); - if (instance) - instance->SetBossState(DATA_KARGATH, DONE); + instance->SetBossState(DATA_KARGATH, DONE); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -311,7 +310,7 @@ class boss_warchief_kargath_bladefist : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_warchief_kargath_bladefistAI(creature); + return GetInstanceAI<boss_warchief_kargath_bladefistAI>(creature); } }; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp index 5d789359864..ef01fd3a2ea 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp @@ -109,8 +109,7 @@ class boss_alar : public CreatureScript void Reset() OVERRIDE { - if (instance) - instance->SetData(DATA_ALAREVENT, NOT_STARTED); + instance->SetData(DATA_ALAREVENT, NOT_STARTED); Berserk_Timer = 1200000; Platforms_Move_Timer = 0; @@ -136,8 +135,7 @@ class boss_alar : public CreatureScript void EnterCombat(Unit* /*who*/) OVERRIDE { - if (instance) - instance->SetData(DATA_ALAREVENT, IN_PROGRESS); + instance->SetData(DATA_ALAREVENT, IN_PROGRESS); me->SetDisableGravity(true); // after enterevademode will be set walk movement DoZoneInCombat(); @@ -146,8 +144,7 @@ class boss_alar : public CreatureScript void JustDied(Unit* /*killer*/) OVERRIDE { - if (instance) - instance->SetData(DATA_ALAREVENT, DONE); + instance->SetData(DATA_ALAREVENT, DONE); } void JustSummoned(Creature* summon) OVERRIDE @@ -426,7 +423,7 @@ class boss_alar : public CreatureScript void DoMeleeAttackIfReady() { - if (me->isAttackReady() && !me->IsNonMeleeSpellCasted(false)) + if (me->isAttackReady() && !me->IsNonMeleeSpellCast(false)) { if (me->IsWithinMeleeRange(me->GetVictim())) { @@ -451,7 +448,7 @@ class boss_alar : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_alarAI(creature); + return GetInstanceAI<boss_alarAI>(creature); } }; @@ -528,7 +525,7 @@ class npc_ember_of_alar : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ember_of_alarAI(creature); + return GetInstanceAI<npc_ember_of_alarAI>(creature); } }; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp index c5c3f6deb12..241438d611b 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp @@ -146,8 +146,7 @@ class boss_high_astromancer_solarian : public CreatureScript Wrath_Timer = 20000+rand()%5000;//twice in phase one Phase = 1; - if (instance) - instance->SetData(DATA_HIGHASTROMANCERSOLARIANEVENT, NOT_STARTED); + instance->SetData(DATA_HIGHASTROMANCERSOLARIANEVENT, NOT_STARTED); me->SetArmor(defaultarmor); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); @@ -168,8 +167,7 @@ class boss_high_astromancer_solarian : public CreatureScript me->SetObjectScale(defaultsize); me->SetDisplayId(MODEL_HUMAN); Talk(SAY_DEATH); - if (instance) - instance->SetData(DATA_HIGHASTROMANCERSOLARIANEVENT, DONE); + instance->SetData(DATA_HIGHASTROMANCERSOLARIANEVENT, DONE); } void EnterCombat(Unit* /*who*/) OVERRIDE @@ -177,8 +175,7 @@ class boss_high_astromancer_solarian : public CreatureScript Talk(SAY_AGGRO); DoZoneInCombat(); - if (instance) - instance->SetData(DATA_HIGHASTROMANCERSOLARIANEVENT, IN_PROGRESS); + instance->SetData(DATA_HIGHASTROMANCERSOLARIANEVENT, IN_PROGRESS); } void SummonMinion(uint32 entry, float x, float y, float z) @@ -419,7 +416,7 @@ class boss_high_astromancer_solarian : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_high_astromancer_solarianAI(creature); + return GetInstanceAI<boss_high_astromancer_solarianAI>(creature); } }; @@ -467,8 +464,7 @@ class npc_solarium_priest : public CreatureScript switch (urand(0, 1)) { case 0: - if (instance) - target = Unit::GetUnit(*me, instance->GetData64(DATA_ASTROMANCER)); + target = Unit::GetUnit(*me, instance->GetData64(DATA_ASTROMANCER)); break; case 1: target = me; @@ -506,7 +502,7 @@ class npc_solarium_priest : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_solarium_priestAI(creature); + return GetInstanceAI<npc_solarium_priestAI>(creature); } }; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp index e85c8781dd9..11b4ad1398d 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp @@ -308,7 +308,7 @@ class boss_kaelthas : public CreatureScript uint32 Phase; uint32 PhaseSubphase; //generic uint32 Phase_Timer; //generic timer - uint32 PyrosCasted; + uint32 PyrosCast; bool InGravityLapse; bool IsCastingFireball; @@ -330,7 +330,7 @@ class boss_kaelthas : public CreatureScript GravityLapse_Phase = 0; NetherBeam_Timer = 8000; NetherVapor_Timer = 10000; - PyrosCasted = 0; + PyrosCast = 0; Phase = 0; InGravityLapse = false; IsCastingFireball = false; @@ -344,8 +344,7 @@ class boss_kaelthas : public CreatureScript me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - if (instance) - instance->SetData(DATA_KAELTHASEVENT, 0); + instance->SetData(DATA_KAELTHASEVENT, 0); } void PrepareAdvisors() @@ -364,9 +363,6 @@ class boss_kaelthas : public CreatureScript void StartEvent() { - if (!instance) - return; - m_auiAdvisorGuid[0] = instance->GetData64(DATA_THALADREDTHEDARKENER); m_auiAdvisorGuid[1] = instance->GetData64(DATA_LORDSANGUINAR); m_auiAdvisorGuid[2] = instance->GetData64(DATA_GRANDASTROMANCERCAPERNIAN); @@ -468,8 +464,7 @@ class boss_kaelthas : public CreatureScript summons.DespawnAll(); - if (instance) - instance->SetData(DATA_KAELTHASEVENT, 0); + instance->SetData(DATA_KAELTHASEVENT, 0); for (uint8 i = 0; i < MAX_ADVISORS; ++i) { @@ -633,8 +628,7 @@ class boss_kaelthas : public CreatureScript if (Advisor && (Advisor->getStandState() == UNIT_STAND_STATE_DEAD)) { Phase = 2; - if (instance) - instance->SetData(DATA_KAELTHASEVENT, 2); + instance->SetData(DATA_KAELTHASEVENT, 2); Talk(SAY_PHASE2_WEAPON); @@ -678,8 +672,7 @@ class boss_kaelthas : public CreatureScript if (Phase_Timer <= diff) { Talk(SAY_PHASE3_ADVANCE); - if (instance) - instance->SetData(DATA_KAELTHASEVENT, 3); + instance->SetData(DATA_KAELTHASEVENT, 3); Phase = 3; PhaseSubphase = 0; } @@ -716,8 +709,7 @@ class boss_kaelthas : public CreatureScript Talk(SAY_PHASE4_INTRO2); Phase = 4; - if (instance) - instance->SetData(DATA_KAELTHASEVENT, 4); + instance->SetData(DATA_KAELTHASEVENT, 4); // Sometimes people can collect Aggro in Phase 1-3. Reset threat before releasing Kael. DoResetThreat(); @@ -750,7 +742,7 @@ class boss_kaelthas : public CreatureScript { if (!IsCastingFireball) { - if (!me->IsNonMeleeSpellCasted(false)) + if (!me->IsNonMeleeSpellCast(false)) { //interruptable me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_INTERRUPT_CAST, false); @@ -821,8 +813,7 @@ class boss_kaelthas : public CreatureScript { if (HealthBelowPct(50)) { - if (instance) - instance->SetData(DATA_KAELTHASEVENT, 4); + instance->SetData(DATA_KAELTHASEVENT, 4); Phase = 5; Phase_Timer = 10000; @@ -844,19 +835,19 @@ class boss_kaelthas : public CreatureScript { DoCast(me, SPELL_SHOCK_BARRIER); ChainPyros = true; - PyrosCasted = 0; + PyrosCast = 0; ShockBarrier_Timer = 60000; } else ShockBarrier_Timer -= diff; //Chain Pyros (3 of them max) - if (ChainPyros && !me->IsNonMeleeSpellCasted(false)) + if (ChainPyros && !me->IsNonMeleeSpellCast(false)) { - if (PyrosCasted < 3) + if (PyrosCast < 3) { DoCastVictim(SPELL_PYROBLAST); - ++PyrosCasted; + ++PyrosCast; } else { @@ -1011,7 +1002,7 @@ class boss_kaelthas : public CreatureScript }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_kaelthasAI(creature); + return GetInstanceAI<boss_kaelthasAI>(creature); } }; @@ -1109,7 +1100,7 @@ class boss_thaladred_the_darkener : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_thaladred_the_darkenerAI(creature); + return GetInstanceAI<boss_thaladred_the_darkenerAI>(creature); } }; @@ -1177,7 +1168,7 @@ class boss_lord_sanguinar : public CreatureScript }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_lord_sanguinarAI(creature); + return GetInstanceAI<boss_lord_sanguinarAI>(creature); } }; //Grand Astromancer Capernian AI @@ -1321,7 +1312,7 @@ class boss_grand_astromancer_capernian : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_grand_astromancer_capernianAI(creature); + return GetInstanceAI<boss_grand_astromancer_capernianAI>(creature); } }; @@ -1404,7 +1395,7 @@ class boss_master_engineer_telonicus : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_master_engineer_telonicusAI(creature); + return GetInstanceAI<boss_master_engineer_telonicusAI>(creature); } }; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp index f842ed19f3c..db6bd772a83 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp @@ -91,16 +91,14 @@ class boss_void_reaver : public CreatureScript Talk(SAY_DEATH); DoZoneInCombat(); - if (instance) - instance->SetData(DATA_VOIDREAVEREVENT, DONE); + instance->SetData(DATA_VOIDREAVEREVENT, DONE); } void EnterCombat(Unit* /*who*/) OVERRIDE { Talk(SAY_AGGRO); - if (instance) - instance->SetData(DATA_VOIDREAVEREVENT, IN_PROGRESS); + instance->SetData(DATA_VOIDREAVEREVENT, IN_PROGRESS); } void UpdateAI(uint32 diff) OVERRIDE @@ -172,7 +170,7 @@ class boss_void_reaver : public CreatureScript CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new boss_void_reaverAI(creature); + return GetInstanceAI<boss_void_reaverAI>(creature); } }; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp index b5172245b49..37a6886cda5 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -182,14 +182,11 @@ class npc_ragin_flames : public CreatureScript //Check_Timer if (Check_Timer <= diff) { - if (instance) + if (instance->GetData(DATA_NETHERMANCER_SEPRETHREA) != IN_PROGRESS) { - if (instance->GetData(DATA_NETHERMANCER_SEPRETHREA) != IN_PROGRESS) - { - //remove - me->setDeathState(JUST_DIED); - me->RemoveCorpse(); - } + //remove + me->setDeathState(JUST_DIED); + me->RemoveCorpse(); } Check_Timer = 1000; } else Check_Timer -= diff; @@ -223,7 +220,7 @@ class npc_ragin_flames : public CreatureScript }; CreatureAI* GetAI(Creature* creature) const OVERRIDE { - return new npc_ragin_flamesAI(creature); + return GetInstanceAI<npc_ragin_flamesAI>(creature); } }; diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp index ff3145c5c78..741b1378e4a 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp @@ -116,11 +116,10 @@ class npc_millhouse_manastorm : public CreatureScript } } - void EnterCombat(Unit* /*who*/) OVERRIDE { } - - void KilledUnit(Unit* /*victim*/) OVERRIDE + void KilledUnit(Unit* who) OVERRIDE { - Talk(SAY_KILL); + if (who->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_KILL); } void JustDied(Unit* /*killer*/) OVERRIDE @@ -191,7 +190,7 @@ class npc_millhouse_manastorm : public CreatureScript if (Pyroblast_Timer <= diff) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) return; Talk(SAY_PYRO); diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.h b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.h index 1ebfad4dfeb..c3b7d754a0d 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.h +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.h @@ -32,11 +32,11 @@ enum DataTypes // Additional Data DATA_CONVERSATION = 4, - DATA_WARDEN_1 = 5, // used by EventAI - DATA_WARDEN_2 = 6, // used by EventAI - DATA_WARDEN_3 = 7, // used by EventAI - DATA_WARDEN_4 = 8, // used by EventAI - DATA_WARDEN_5 = 9, // used by EventAI + DATA_WARDEN_1 = 5, // used by SmartAI + DATA_WARDEN_2 = 6, // used by SmartAI + DATA_WARDEN_3 = 7, // used by SmartAI + DATA_WARDEN_4 = 8, // used by SmartAI + DATA_WARDEN_5 = 9, // used by SmartAI DATA_MELLICHAR = 10, DATA_WARDENS_SHIELD = 11 }; diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp index 48d955acbc3..d590093de56 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp @@ -137,7 +137,7 @@ class boss_harbinger_skyriss : public CreatureScript void DoSplit(uint32 val) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(false); Talk(SAY_IMAGE); @@ -211,7 +211,7 @@ class boss_harbinger_skyriss : public CreatureScript if (Fear_Timer <= diff) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) return; Talk(SAY_FEAR); @@ -228,7 +228,7 @@ class boss_harbinger_skyriss : public CreatureScript if (Domination_Timer <= diff) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) return; Talk(SAY_MIND); @@ -247,7 +247,7 @@ class boss_harbinger_skyriss : public CreatureScript { if (ManaBurn_Timer <= diff) { - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) return; if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1)) diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp index 1b362fe8a5a..fe072b437eb 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp @@ -126,7 +126,7 @@ class boss_high_botanist_freywinn : public CreatureScript { Talk(SAY_TREE); - if (me->IsNonMeleeSpellCasted(false)) + if (me->IsNonMeleeSpellCast(false)) me->InterruptNonMeleeSpells(true); me->RemoveAllAuras(); diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp index dcb9f71615d..39a97bd4d8a 100644 --- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp @@ -19,7 +19,7 @@ /* ScriptData SDName: Blades_Edge_Mountains SD%Complete: 90 -SDComment: Quest support: 10503, 10504, 10556, 10594, 10609, 10682, 10821, 10980. Ogri'la->Skettis Flight. (npc_daranelle needs bit more work before consider complete) +SDComment: Quest support: 10503, 10504, 10556, 10594, 10609, 10821. Ogri'la->Skettis Flight. (npc_daranelle needs bit more work before consider complete) SDCategory: Blade's Edge Mountains EndScriptData */ @@ -28,8 +28,6 @@ npc_bloodmaul_brutebane npc_bloodmaul_brute npc_nether_drake npc_daranelle -npc_overseer_nuaar -npc_saikkal_the_elder go_legion_obelisk go_thunderspike EndContentData */ @@ -134,8 +132,9 @@ public: void JustDied(Unit* killer) OVERRIDE { - if (killer->ToPlayer()->GetQuestRewardStatus(QUEST_INTO_THE_SOULGRINDER)) - Talk(SAY_DEATH); + if (killer->GetTypeId() == TYPEID_PLAYER) + if (killer->ToPlayer()->GetQuestRewardStatus(QUEST_INTO_THE_SOULGRINDER)) + Talk(SAY_DEATH); } void MoveInLineOfSight(Unit* who) OVERRIDE @@ -401,8 +400,9 @@ public: enum Daranelle { - SAY_SPELL_INFLUENCE = 0, - SPELL_LASHHAN_CHANNEL = 36904 + SAY_SPELL_INFLUENCE = 0, + SPELL_LASHHAN_CHANNEL = 36904, + SPELL_DISPELLING_ANALYSIS = 37028 }; class npc_daranelle : public CreatureScript @@ -427,7 +427,7 @@ public: { Talk(SAY_SPELL_INFLUENCE, who); /// @todo Move the below to updateAI and run if this statement == true - DoCast(who, 37028, true); + DoCast(who, SPELL_DISPELLING_ANALYSIS, true); } } @@ -441,79 +441,6 @@ public: } }; -/*###### -## npc_overseer_nuaar -######*/ - -#define GOSSIP_HELLO_ON "Overseer, I am here to negotiate on behalf of the Cenarion Expedition." - -class npc_overseer_nuaar : public CreatureScript -{ -public: - npc_overseer_nuaar() : CreatureScript("npc_overseer_nuaar") { } - - bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) OVERRIDE - { - player->PlayerTalkClass->ClearMenus(); - if (action == GOSSIP_ACTION_INFO_DEF+1) - { - player->SEND_GOSSIP_MENU(10533, creature->GetGUID()); - player->AreaExploredOrEventHappens(10682); - } - return true; - } - - bool OnGossipHello(Player* player, Creature* creature) OVERRIDE - { - if (player->GetQuestStatus(10682) == QUEST_STATUS_INCOMPLETE) - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - - player->SEND_GOSSIP_MENU(10532, creature->GetGUID()); - - return true; - } -}; - -/*###### -## npc_saikkal_the_elder -######*/ - -#define GOSSIP_HELLO_STE "Yes... yes, it's me." -#define GOSSIP_SELECT_STE "Yes elder. Tell me more of the book." - -class npc_saikkal_the_elder : public CreatureScript -{ -public: - npc_saikkal_the_elder() : CreatureScript("npc_saikkal_the_elder") { } - - bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) OVERRIDE - { - player->PlayerTalkClass->ClearMenus(); - switch (action) - { - case GOSSIP_ACTION_INFO_DEF+1: - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SELECT_STE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2); - player->SEND_GOSSIP_MENU(10795, creature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF+2: - player->TalkedToCreature(creature->GetEntry(), creature->GetGUID()); - player->SEND_GOSSIP_MENU(10796, creature->GetGUID()); - break; - } - return true; - } - - bool OnGossipHello(Player* player, Creature* creature) OVERRIDE - { - if (player->GetQuestStatus(10980) == QUEST_STATUS_INCOMPLETE) - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_STE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - - player->SEND_GOSSIP_MENU(10794, creature->GetGUID()); - - return true; - } -}; - //Support for quest: You're Fired! (10821) bool obelisk_one, obelisk_two, obelisk_three, obelisk_four, obelisk_five; @@ -955,7 +882,7 @@ class npc_simon_bunny : public CreatureScript /* Called when AI is playing the sequence for player. We cast the visual spell and then remove the - casted color from the casting sequence. + cast color from the casting sequence. */ void PlayNextColor() { @@ -1198,7 +1125,10 @@ public: struct npc_oscillating_frequency_scanner_master_bunnyAI : public ScriptedAI { - npc_oscillating_frequency_scanner_master_bunnyAI(Creature* creature) : ScriptedAI(creature) { } + npc_oscillating_frequency_scanner_master_bunnyAI(Creature* creature) : ScriptedAI(creature) + { + playerGuid = 0; + } void Reset() OVERRIDE { @@ -1279,8 +1209,6 @@ void AddSC_blades_edge_mountains() new npc_bloodmaul_brute(); new npc_nether_drake(); new npc_daranelle(); - new npc_overseer_nuaar(); - new npc_saikkal_the_elder(); new go_legion_obelisk(); new go_thunderspike(); new npc_simon_bunny(); diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp index 672cf51bdb7..5e70b7f9fc4 100644 --- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp +++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp @@ -19,18 +19,15 @@ /* ScriptData SDName: Hellfire_Peninsula SD%Complete: 100 -SDComment: Quest support: 9375, 9410, 9418, 10129, 10146, 10162, 10163, 10340, 10346, 10347, 10382 (Special flight paths) +SDComment: Quest support: 9375, 9410, 9418, 10129, 10146, 10162, 10163, 10340, 10346, 10347, 10382 (Special flight paths) "Needs update" SDCategory: Hellfire Peninsula EndScriptData */ /* ContentData npc_aeranas npc_ancestral_wolf -go_haaleshi_altar -npc_naladu -npc_tracy_proudwell -npc_trollbane npc_wounded_blood_elf +npc_fel_guard_hound EndContentData */ #include "ScriptMgr.h" @@ -46,14 +43,12 @@ EndContentData */ enum Aeranas { - SAY_SUMMON = 0, - SAY_FREE = 1, - - FACTION_HOSTILE = 16, - FACTION_FRIENDLY = 35, - - SPELL_ENVELOPING_WINDS = 15535, - SPELL_SHOCK = 12553 + SAY_SUMMON = 0, + SAY_FREE = 1, + FACTION_HOSTILE = 16, + FACTION_FRIENDLY = 35, + SPELL_ENVELOPING_WINDS = 15535, + SPELL_SHOCK = 12553 }; class npc_aeranas : public CreatureScript @@ -61,24 +56,15 @@ class npc_aeranas : public CreatureScript public: npc_aeranas() : CreatureScript("npc_aeranas") { } - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new npc_aeranasAI(creature); - } - struct npc_aeranasAI : public ScriptedAI { npc_aeranasAI(Creature* creature) : ScriptedAI(creature) { } - uint32 Faction_Timer; - uint32 EnvelopingWinds_Timer; - uint32 Shock_Timer; - void Reset() OVERRIDE { - Faction_Timer = 8000; - EnvelopingWinds_Timer = 9000; - Shock_Timer = 5000; + faction_Timer = 8000; + envelopingWinds_Timer = 9000; + shock_Timer = 5000; me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); me->setFaction(FACTION_FRIENDLY); @@ -88,13 +74,13 @@ public: void UpdateAI(uint32 diff) OVERRIDE { - if (Faction_Timer) + if (faction_Timer) { - if (Faction_Timer <= diff) + if (faction_Timer <= diff) { me->setFaction(FACTION_HOSTILE); - Faction_Timer = 0; - } else Faction_Timer -= diff; + faction_Timer = 0; + } else faction_Timer -= diff; } if (!UpdateVictim()) @@ -111,21 +97,31 @@ public: return; } - if (Shock_Timer <= diff) + if (shock_Timer <= diff) { DoCastVictim(SPELL_SHOCK); - Shock_Timer = 10000; - } else Shock_Timer -= diff; + shock_Timer = 10000; + } else shock_Timer -= diff; - if (EnvelopingWinds_Timer <= diff) + if (envelopingWinds_Timer <= diff) { DoCastVictim(SPELL_ENVELOPING_WINDS); - EnvelopingWinds_Timer = 25000; - } else EnvelopingWinds_Timer -= diff; + envelopingWinds_Timer = 25000; + } else envelopingWinds_Timer -= diff; DoMeleeAttackIfReady(); } + + private: + uint32 faction_Timer; + uint32 envelopingWinds_Timer; + uint32 shock_Timer; }; + + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return new npc_aeranasAI(creature); + } }; /*###### @@ -134,13 +130,11 @@ public: enum AncestralWolf { - EMOTE_WOLF_LIFT_HEAD = 0, - EMOTE_WOLF_HOWL = 1, - SAY_WOLF_WELCOME = 2, - - SPELL_ANCESTRAL_WOLF_BUFF = 29981, - - NPC_RYGA = 17123 + EMOTE_WOLF_LIFT_HEAD = 0, + EMOTE_WOLF_HOWL = 1, + SAY_WOLF_WELCOME = 2, + SPELL_ANCESTRAL_WOLF_BUFF = 29981, + NPC_RYGA = 17123 }; class npc_ancestral_wolf : public CreatureScript @@ -148,11 +142,6 @@ class npc_ancestral_wolf : public CreatureScript public: npc_ancestral_wolf() : CreatureScript("npc_ancestral_wolf") { } - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new npc_ancestral_wolfAI(creature); - } - struct npc_ancestral_wolfAI : public npc_escortAI { npc_ancestral_wolfAI(Creature* creature) : npc_escortAI(creature) @@ -166,20 +155,18 @@ public: Reset(); } - Creature* pRyga; - void Reset() OVERRIDE { - pRyga = NULL; + ryga = NULL; DoCast(me, SPELL_ANCESTRAL_WOLF_BUFF, true); } void MoveInLineOfSight(Unit* who) OVERRIDE { - if (!pRyga && who->GetEntry() == NPC_RYGA && me->IsWithinDistInMap(who, 15.0f)) + if (!ryga && who->GetEntry() == NPC_RYGA && me->IsWithinDistInMap(who, 15.0f)) if (Creature* temp = who->ToCreature()) - pRyga = temp; + ryga = temp; npc_escortAI::MoveInLineOfSight(who); } @@ -195,154 +182,19 @@ public: Talk(EMOTE_WOLF_HOWL); break; case 50: - if (pRyga && pRyga->IsAlive() && !pRyga->IsInCombat()) - pRyga->AI()->Talk(SAY_WOLF_WELCOME); + if (ryga && ryga->IsAlive() && !ryga->IsInCombat()) + ryga->AI()->Talk(SAY_WOLF_WELCOME); break; } } - }; -}; - -/*###### -## npc_naladu -######*/ - -#define GOSSIP_NALADU_ITEM1 "Why don't you escape?" - -enum Naladu -{ - GOSSIP_TEXTID_NALADU1 = 9788 -}; - -class npc_naladu : public CreatureScript -{ -public: - npc_naladu() : CreatureScript("npc_naladu") { } - - bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) OVERRIDE - { - player->PlayerTalkClass->ClearMenus(); - if (action == GOSSIP_ACTION_INFO_DEF+1) - player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_NALADU1, creature->GetGUID()); - - return true; - } - - bool OnGossipHello(Player* player, Creature* creature) OVERRIDE - { - if (creature->IsQuestGiver()) - player->PrepareQuestMenu(creature->GetGUID()); - - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_NALADU_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1); - player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID()); - return true; - } -}; - -/*###### -## npc_tracy_proudwell -######*/ - -#define GOSSIP_TEXT_REDEEM_MARKS "I have marks to redeem!" -#define GOSSIP_TRACY_PROUDWELL_ITEM1 "I heard that your dog Fei Fei took Klatu's prayer beads..." -#define GOSSIP_TRACY_PROUDWELL_ITEM2 "<back>" - -enum Tracy -{ - GOSSIP_TEXTID_TRACY_PROUDWELL1 = 10689, - QUEST_DIGGING_FOR_PRAYER_BEADS = 10916 -}; - -class npc_tracy_proudwell : public CreatureScript -{ -public: - npc_tracy_proudwell() : CreatureScript("npc_tracy_proudwell") { } - - bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) OVERRIDE - { - player->PlayerTalkClass->ClearMenus(); - switch (action) - { - case GOSSIP_ACTION_INFO_DEF+1: - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TRACY_PROUDWELL_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TRACY_PROUDWELL1, creature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF+2: - player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID()); - break; - case GOSSIP_ACTION_TRADE: - player->GetSession()->SendListInventory(creature->GetGUID()); - break; - } - - return true; - } - - bool OnGossipHello(Player* player, Creature* creature) OVERRIDE - { - if (creature->IsQuestGiver()) - player->PrepareQuestMenu(creature->GetGUID()); - - if (creature->IsVendor()) - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_REDEEM_MARKS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); - - if (player->GetQuestStatus(QUEST_DIGGING_FOR_PRAYER_BEADS) == QUEST_STATUS_INCOMPLETE) - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TRACY_PROUDWELL_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - - player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID()); - return true; - } -}; - -/*###### -## npc_trollbane -######*/ - -#define GOSSIP_TROLLBANE_ITEM1 "Tell me of the Sons of Lothar." -#define GOSSIP_TROLLBANE_ITEM2 "<more>" -#define GOSSIP_TROLLBANE_ITEM3 "Tell me of your homeland." - -enum Trollbane -{ - GOSSIP_TEXTID_TROLLBANE1 = 9932, - GOSSIP_TEXTID_TROLLBANE2 = 9933, - GOSSIP_TEXTID_TROLLBANE3 = 8772 -}; -class npc_trollbane : public CreatureScript -{ -public: - npc_trollbane() : CreatureScript("npc_trollbane") { } - - bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) OVERRIDE - { - player->PlayerTalkClass->ClearMenus(); - switch (action) - { - case GOSSIP_ACTION_INFO_DEF+1: - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TROLLBANE_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TROLLBANE1, creature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF+2: - player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TROLLBANE2, creature->GetGUID()); - break; - case GOSSIP_ACTION_INFO_DEF+3: - player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TROLLBANE3, creature->GetGUID()); - break; - } - - return true; - } + private: + Creature* ryga; + }; - bool OnGossipHello(Player* player, Creature* creature) OVERRIDE + CreatureAI* GetAI(Creature* creature) const OVERRIDE { - if (creature->IsQuestGiver()) - player->PrepareQuestMenu(creature->GetGUID()); - - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TROLLBANE_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TROLLBANE_ITEM3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID()); - return true; + return new npc_ancestral_wolfAI(creature); } }; @@ -358,8 +210,10 @@ enum WoundedBloodElf SAY_ELF_SUMMON2 = 3, SAY_ELF_COMPLETE = 4, SAY_ELF_AGGRO = 5, - - QUEST_ROAD_TO_FALCON_WATCH = 9375 + QUEST_ROAD_TO_FALCON_WATCH = 9375, + NPC_HAALESHI_WINDWALKER = 16966, + NPC_HAALESHI_TALONGUARD = 16967, + FACTION_FALCON_WATCH_QUEST = 775 }; class npc_wounded_blood_elf : public CreatureScript @@ -367,28 +221,31 @@ class npc_wounded_blood_elf : public CreatureScript public: npc_wounded_blood_elf() : CreatureScript("npc_wounded_blood_elf") { } - bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest) OVERRIDE + struct npc_wounded_blood_elfAI : public npc_escortAI { - if (quest->GetQuestId() == QUEST_ROAD_TO_FALCON_WATCH) - { - if (npc_escortAI* pEscortAI = CAST_AI(npc_wounded_blood_elf::npc_wounded_blood_elfAI, creature->AI())) - pEscortAI->Start(true, false, player->GetGUID()); + npc_wounded_blood_elfAI(Creature* creature) : npc_escortAI(creature) { } - // Change faction so mobs attack - creature->setFaction(775); - } + void Reset() OVERRIDE { } - return true; - } + void EnterCombat(Unit* /*who*/) OVERRIDE + { + if (HasEscortState(STATE_ESCORT_ESCORTING)) + Talk(SAY_ELF_AGGRO); + } - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new npc_wounded_blood_elfAI(creature); - } + void JustSummoned(Creature* summoned) OVERRIDE + { + summoned->AI()->AttackStart(me); + } - struct npc_wounded_blood_elfAI : public npc_escortAI - { - npc_wounded_blood_elfAI(Creature* creature) : npc_escortAI(creature) { } + void sQuestAccept(Player* player, Quest const* quest) + { + if (quest->GetQuestId() == QUEST_ROAD_TO_FALCON_WATCH) + { + me->setFaction(FACTION_FALCON_WATCH_QUEST); + npc_escortAI::Start(true, false, player->GetGUID()); + } + } void WaypointReached(uint32 waypointId) OVERRIDE { @@ -404,8 +261,8 @@ public: case 9: Talk(SAY_ELF_SUMMON1, player); // Spawn two Haal'eshi Talonguard - DoSpawnCreature(16967, -15, -15, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); - DoSpawnCreature(16967, -17, -17, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); + DoSpawnCreature(NPC_HAALESHI_TALONGUARD, -15, -15, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); + DoSpawnCreature(NPC_HAALESHI_TALONGUARD, -17, -17, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); break; case 13: Talk(SAY_ELF_RESTING, player); @@ -413,8 +270,8 @@ public: case 14: Talk(SAY_ELF_SUMMON2, player); // Spawn two Haal'eshi Windwalker - DoSpawnCreature(16966, -15, -15, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); - DoSpawnCreature(16966, -17, -17, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); + DoSpawnCreature(NPC_HAALESHI_WINDWALKER, -15, -15, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); + DoSpawnCreature(NPC_HAALESHI_WINDWALKER, -17, -17, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); break; case 27: Talk(SAY_ELF_COMPLETE, player); @@ -423,20 +280,12 @@ public: break; } } - - void Reset() OVERRIDE { } - - void EnterCombat(Unit* /*who*/) OVERRIDE - { - if (HasEscortState(STATE_ESCORT_ESCORTING)) - Talk(SAY_ELF_AGGRO); - } - - void JustSummoned(Creature* summoned) OVERRIDE - { - summoned->AI()->AttackStart(me); - } }; + + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return new npc_wounded_blood_elfAI(creature); + } }; /*###### @@ -445,9 +294,8 @@ public: enum FelGuard { - SPELL_SUMMON_POO = 37688, - - NPC_DERANGED_HELBOAR = 16863 + SPELL_SUMMON_POO = 37688, + NPC_DERANGED_HELBOAR = 16863 }; class npc_fel_guard_hound : public CreatureScript @@ -455,32 +303,24 @@ class npc_fel_guard_hound : public CreatureScript public: npc_fel_guard_hound() : CreatureScript("npc_fel_guard_hound") { } - CreatureAI* GetAI(Creature* creature) const OVERRIDE - { - return new npc_fel_guard_houndAI(creature); - } - struct npc_fel_guard_houndAI : public ScriptedAI { npc_fel_guard_houndAI(Creature* creature) : ScriptedAI(creature) { } - uint32 uiCheckTimer; - uint64 uiHelboarGUID; - void Reset() OVERRIDE { - uiCheckTimer = 5000; //check for creature every 5 sec - uiHelboarGUID = 0; + checkTimer = 5000; //check for creature every 5 sec + helboarGUID = 0; } - void MovementInform(uint32 uiType, uint32 uiId) OVERRIDE + void MovementInform(uint32 type, uint32 id) OVERRIDE { - if (uiType != POINT_MOTION_TYPE || uiId != 1) + if (type != POINT_MOTION_TYPE || id != 1) return; - if (Creature* pHelboar = me->GetCreature(*me, uiHelboarGUID)) + if (Creature* helboar = me->GetCreature(*me, helboarGUID)) { - pHelboar->RemoveCorpse(); + helboar->RemoveCorpse(); DoCast(SPELL_SUMMON_POO); if (Player* owner = me->GetCharmerOrOwnerPlayerOrPlayerItself()) @@ -488,36 +328,43 @@ public: } } - void UpdateAI(uint32 uiDiff) OVERRIDE + void UpdateAI(uint32 diff) OVERRIDE { - if (uiCheckTimer <= uiDiff) + if (checkTimer <= diff) { - if (Creature* pHelboar = me->FindNearestCreature(NPC_DERANGED_HELBOAR, 10.0f, false)) + if (Creature* helboar = me->FindNearestCreature(NPC_DERANGED_HELBOAR, 10.0f, false)) { - if (pHelboar->GetGUID() != uiHelboarGUID && me->GetMotionMaster()->GetCurrentMovementGeneratorType() != POINT_MOTION_TYPE && !me->FindCurrentSpellBySpellId(SPELL_SUMMON_POO)) + if (helboar->GetGUID() != helboarGUID && me->GetMotionMaster()->GetCurrentMovementGeneratorType() != POINT_MOTION_TYPE && !me->FindCurrentSpellBySpellId(SPELL_SUMMON_POO)) { - uiHelboarGUID = pHelboar->GetGUID(); - me->GetMotionMaster()->MovePoint(1, pHelboar->GetPositionX(), pHelboar->GetPositionY(), pHelboar->GetPositionZ()); + helboarGUID = helboar->GetGUID(); + me->GetMotionMaster()->MovePoint(1, helboar->GetPositionX(), helboar->GetPositionY(), helboar->GetPositionZ()); } } - uiCheckTimer = 5000; - }else uiCheckTimer -= uiDiff; + checkTimer = 5000; + } + else checkTimer -= diff; if (!UpdateVictim()) return; DoMeleeAttackIfReady(); } + + private: + uint32 checkTimer; + uint64 helboarGUID; }; + + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return new npc_fel_guard_houndAI(creature); + } }; void AddSC_hellfire_peninsula() { new npc_aeranas(); new npc_ancestral_wolf(); - new npc_naladu(); - new npc_tracy_proudwell(); - new npc_trollbane(); new npc_wounded_blood_elf(); new npc_fel_guard_hound(); } |
