diff options
Diffstat (limited to 'src')
8 files changed, 63 insertions, 170 deletions
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp index 79fcb2634b1..924d00169c8 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp @@ -147,7 +147,7 @@ public: if (!Intro || IsIntro) return; - if (Creature* Madrigosa = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_MADRIGOSA))) + if (Creature* Madrigosa = instance->GetCreature(DATA_MADRIGOSA)) { Madrigosa->Respawn(); Madrigosa->setActive(true); @@ -182,7 +182,7 @@ public: void DoIntro() { - Creature* Madrigosa = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_MADRIGOSA)); + Creature* Madrigosa = instance->GetCreature(DATA_MADRIGOSA); if (!Madrigosa) return; @@ -285,7 +285,7 @@ public: { if (IntroFrostBoltTimer <= diff) { - if (Creature* Madrigosa = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_MADRIGOSA))) + if (Creature* Madrigosa = instance->GetCreature(DATA_MADRIGOSA)) { Madrigosa->CastSpell(me, SPELL_INTRO_FROSTBOLT, true); IntroFrostBoltTimer = 2000; diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp index 9691dcd2197..195fc2bf0a9 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp @@ -114,7 +114,7 @@ public: { Enraged = false; - if (Creature* temp = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ALYTHESS))) + if (Creature* temp = instance->GetCreature(DATA_ALYTHESS)) { if (temp->isDead()) temp->Respawn(); @@ -134,7 +134,7 @@ public: { DoZoneInCombat(); - Creature* temp = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ALYTHESS)); + Creature* temp = instance->GetCreature(DATA_ALYTHESS); if (temp && temp->IsAlive() && !temp->GetVictim()) temp->AI()->AttackStart(who); @@ -207,7 +207,7 @@ public: { if (!SisterDeath) { - Unit* Temp = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_ALYTHESS)); + Unit* Temp = instance->GetCreature(DATA_ALYTHESS); if (Temp && Temp->isDead()) { Talk(YELL_SISTER_ALYTHESS_DEAD); @@ -366,7 +366,7 @@ public: { Enraged = false; - if (Creature* temp = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SACROLASH))) + if (Creature* temp = instance->GetCreature(DATA_SACROLASH)) { if (temp->isDead()) temp->Respawn(); @@ -386,7 +386,7 @@ public: { DoZoneInCombat(); - Creature* temp = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SACROLASH)); + Creature* temp = instance->GetCreature(DATA_SACROLASH); if (temp && temp->IsAlive() && !temp->GetVictim()) temp->AI()->AttackStart(who); @@ -486,7 +486,7 @@ public: uint32 IntroStep(uint32 step) { - Creature* Sacrolash = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SACROLASH)); + Creature* Sacrolash = instance->GetCreature(DATA_SACROLASH); switch (step) { case 0: @@ -535,7 +535,7 @@ public: if (!SisterDeath) { - Unit* Temp = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_SACROLASH)); + Unit* Temp = instance->GetCreature(DATA_SACROLASH); if (Temp && Temp->isDead()) { Talk(YELL_SISTER_SACROLASH_DEAD); @@ -546,7 +546,7 @@ public: } if (!me->GetVictim()) { - Creature* sisiter = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SACROLASH)); + Creature* sisiter = instance->GetCreature(DATA_SACROLASH); if (sisiter && !sisiter->isDead() && sisiter->GetVictim()) { me->AddThreat(sisiter->GetVictim(), 0.0f); @@ -644,7 +644,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_shadow_imageAI(creature); + return GetSunwellPlateauAI<npc_shadow_imageAI>(creature); }; struct npc_shadow_imageAI : public ScriptedAI diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp index f2941a5b314..72ce2e1c0dd 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp @@ -520,7 +520,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_felmyst_vaporAI(creature); + return GetSunwellPlateauAI<npc_felmyst_vaporAI>(creature); } struct npc_felmyst_vaporAI : public ScriptedAI @@ -554,7 +554,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_felmyst_trailAI(creature); + return GetSunwellPlateauAI<npc_felmyst_trailAI>(creature); } struct npc_felmyst_trailAI : public ScriptedAI diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp index 438eaf377e2..c14eb6172a7 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp @@ -150,7 +150,9 @@ public: void Reset() override { - SathGUID = instance->GetGuidData(DATA_SATHROVARR); + if (Creature* sath = instance->GetCreature(DATA_SATHROVARR)) + SathGUID = sath->GetGUID(); + instance->SetBossState(DATA_KALECGOS, NOT_STARTED); if (Creature* Sath = ObjectAccessor::GetCreature(*me, SathGUID)) @@ -432,7 +434,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_kalecAI>(creature); + return GetSunwellPlateauAI<boss_kalecAI>(creature); } struct boss_kalecAI : public ScriptedAI @@ -466,7 +468,8 @@ public: void Reset() override { - SathGUID = instance->GetGuidData(DATA_SATHROVARR); + if (Creature* sath = instance->GetCreature(DATA_SATHROVARR)) + SathGUID = sath->GetGUID(); Initialize(); } @@ -576,7 +579,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_sathrovarrAI>(creature); + return GetSunwellPlateauAI<boss_sathrovarrAI>(creature); } struct boss_sathrovarrAI : public ScriptedAI @@ -616,7 +619,8 @@ public: { me->SetFullHealth();//dunno why it does not resets health at evade.. me->setActive(true); - KalecgosGUID = instance->GetGuidData(DATA_KALECGOS_DRAGON); + if (Creature* kalecgos = instance->GetCreature(DATA_KALECGOS_DRAGON)) + KalecgosGUID = kalecgos->GetGUID(); instance->SetBossState(DATA_KALECGOS, NOT_STARTED); if (KalecGUID) { @@ -633,7 +637,7 @@ public: void EnterCombat(Unit* /*who*/) override { - if (Creature* Kalec = me->SummonCreature(NPC_KALEC, me->GetPositionX() + 10, me->GetPositionY() + 5, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 0)) + if (Creature* Kalec = me->SummonCreature(NPC_KALECGOS_HUMAN, me->GetPositionX() + 10, me->GetPositionY() + 5, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 0)) { KalecGUID = Kalec->GetGUID(); me->CombatStart(Kalec); diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index e04753882ee..c58ee8fbef1 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -233,7 +233,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<boss_kalecgos_kjAI>(creature); + return GetSunwellPlateauAI<boss_kalecgos_kjAI>(creature); } struct boss_kalecgos_kjAI : public ScriptedAI @@ -377,7 +377,7 @@ class go_orb_of_the_blue_flight : public GameObjectScript player->CastSpell(player, SPELL_VENGEANCE_OF_THE_BLUE_FLIGHT, false); me->SetFaction(FACTION_NONE); - if (Creature* pKalec = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_KALECGOS_KJ))) + if (Creature* pKalec = instance->GetCreature(DATA_KALECGOS_KJ)) ENSURE_AI(boss_kalecgos_kj::boss_kalecgos_kjAI, pKalec->AI())->SetRingOfBlueFlames(); me->Refresh(); @@ -400,7 +400,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_kiljaeden_controllerAI>(creature); + return GetSunwellPlateauAI<npc_kiljaeden_controllerAI>(creature); } struct npc_kiljaeden_controllerAI : public ScriptedAI @@ -445,7 +445,7 @@ public: { Initialize(); - if (Creature* pKalecKJ = ObjectAccessor::GetCreature((*me), instance->GetGuidData(DATA_KALECGOS_KJ))) + if (Creature* pKalecKJ = instance->GetCreature(DATA_KALECGOS_KJ)) ENSURE_AI(boss_kalecgos_kj::boss_kalecgos_kjAI, pKalecKJ->AI())->ResetOrbs(); summons.DespawnAll(); } @@ -579,7 +579,7 @@ public: { Initialize(); - if (Creature* pKalec = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_KALECGOS_KJ))) + if (Creature* pKalec = instance->GetCreature(DATA_KALECGOS_KJ)) pKalec->RemoveDynObject(SPELL_RING_OF_BLUE_FLAMES); me->SetFloatValue(UNIT_FIELD_COMBATREACH, 12); @@ -639,7 +639,7 @@ public: summons.DespawnAll(); // Reset the controller - if (Creature* pControl = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_KILJAEDEN_CONTROLLER))) + if (Creature* pControl = instance->GetCreature(DATA_KILJAEDEN_CONTROLLER)) ENSURE_AI(npc_kiljaeden_controller::npc_kiljaeden_controllerAI, pControl->AI())->Reset(); } @@ -721,10 +721,10 @@ public: if (Speeches[speechCount].timer < SpeechTimer) { SpeechTimer = 0; - if (Creature* speechCreature = ObjectAccessor::GetCreature(*me, instance->GetGuidData(Speeches[speechCount].creature))) + if (Creature* speechCreature = instance->GetCreature(Speeches[speechCount].creature)) speechCreature->AI()->Talk(Speeches[speechCount].textid); if (speechCount == 12) - if (Creature* pAnveena = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ANVEENA))) + if (Creature* pAnveena = instance->GetCreature(DATA_ANVEENA)) pAnveena->CastSpell(me, SPELL_SACRIFICE_OF_ANVEENA, false); // ChangeTimers(true, 10000); // Kil should do an emote while screaming without attacking for 10 seconds if (speechCount == speechPhaseEnd) @@ -823,7 +823,7 @@ public: } break; case TIMER_ORBS_EMPOWER: //Phase 3 - if (Creature* pKalec = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_KALECGOS_KJ))) + if (Creature* pKalec = instance->GetCreature(DATA_KALECGOS_KJ)) { switch (Phase) { @@ -949,7 +949,7 @@ public: void EnterCombat(Unit* who) override { instance->SetBossState(DATA_KILJAEDEN, IN_PROGRESS); - if (Creature* pControl = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_KILJAEDEN_CONTROLLER))) + if (Creature* pControl = instance->GetCreature(DATA_KILJAEDEN_CONTROLLER)) pControl->AddThreat(who, 1.0f); me->InterruptNonMeleeSpells(true); @@ -957,7 +957,7 @@ public: void JustDied(Unit* /*killer*/) override { - if (Creature* pControl = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_KILJAEDEN_CONTROLLER))) + if (Creature* pControl = instance->GetCreature(DATA_KILJAEDEN_CONTROLLER)) ++(ENSURE_AI(npc_kiljaeden_controller::npc_kiljaeden_controllerAI, pControl->AI())->deceiverDeathCount); } @@ -1016,7 +1016,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_felfire_portalAI(creature); + return GetSunwellPlateauAI<npc_felfire_portalAI>(creature); } struct npc_felfire_portalAI : public ScriptedAI @@ -1069,7 +1069,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_volatile_felfire_fiendAI(creature); + return GetSunwellPlateauAI<npc_volatile_felfire_fiendAI>(creature); } struct npc_volatile_felfire_fiendAI : public ScriptedAI @@ -1134,7 +1134,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_armageddonAI(creature); + return GetSunwellPlateauAI<npc_armageddonAI>(creature); } struct npc_armageddonAI : public ScriptedAI @@ -1196,7 +1196,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return GetInstanceAI<npc_shield_orbAI>(creature); + return GetSunwellPlateauAI<npc_shield_orbAI>(creature); } struct npc_shield_orbAI : public ScriptedAI @@ -1291,7 +1291,7 @@ public: CreatureAI* GetAI(Creature* creature) const override { - return new npc_sinster_reflectionAI(creature); + return GetSunwellPlateauAI<npc_sinster_reflectionAI>(creature); } struct npc_sinster_reflectionAI : public ScriptedAI diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp index ebe7fb2d8ab..fed97fc8488 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp @@ -180,7 +180,7 @@ public: void EnterEvadeMode(EvadeReason /*why*/) override { - if (Creature* muru = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_MURU))) + if (Creature* muru = instance->GetCreature(DATA_MURU)) muru->AI()->EnterEvadeMode(); DoResetPortals(); @@ -192,7 +192,7 @@ public: { _JustDied(); - if (Creature* muru = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_MURU))) + if (Creature* muru = instance->GetCreature(DATA_MURU)) muru->DisappearAndDie(); } @@ -466,7 +466,7 @@ public: void IsSummonedBy(Unit* /*summoner*/) override { - if (Creature* muru = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_MURU))) + if (Creature* muru = _instance->GetCreature(DATA_MURU)) muru->AI()->JustSummoned(me); } diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp index 1976aab174d..17325e9e00f 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp @@ -40,6 +40,24 @@ DoorData const doorData[] = { 0, 0, DOOR_TYPE_ROOM } // END }; +ObjectData const creatureData[] = +{ + { NPC_KALECGOS, DATA_KALECGOS_DRAGON }, + { NPC_KALECGOS_HUMAN, DATA_KALECGOS_HUMAN }, + { NPC_SATHROVARR, DATA_SATHROVARR }, + { NPC_BRUTALLUS, DATA_BRUTALLUS }, + { NPC_MADRIGOSA, DATA_MADRIGOSA }, + { NPC_FELMYST, DATA_FELMYST }, + { NPC_GRAND_WARLOCK_ALYTHESS, DATA_ALYTHESS }, + { NPC_LADY_SACROLASH, DATA_SACROLASH }, + { NPC_MURU, DATA_MURU }, + { NPC_KILJAEDEN, DATA_KILJAEDEN }, + { NPC_KILJAEDEN_CONTROLLER, DATA_KILJAEDEN_CONTROLLER }, + { NPC_ANVEENA, DATA_ANVEENA }, + { NPC_KALECGOS_KJ, DATA_KALECGOS_KJ }, + { 0, 0 } // END +}; + class instance_sunwell_plateau : public InstanceMapScript { public: @@ -52,9 +70,7 @@ class instance_sunwell_plateau : public InstanceMapScript SetHeaders(DataHeader); SetBossNumber(EncounterCount); LoadDoorData(doorData); - - SpectralPlayers = 0; - SpectralRealmTimer = 5000; + LoadObjectData(creatureData, nullptr); } Player const* GetPlayerInMap() const @@ -76,118 +92,10 @@ class instance_sunwell_plateau : public InstanceMapScript return NULL; } - void OnCreatureCreate(Creature* creature) override - { - switch (creature->GetEntry()) - { - case NPC_KALECGOS: - KalecgosDragonGUID = creature->GetGUID(); - break; - case NPC_KALEC: - KalecgosHumanGUID = creature->GetGUID(); - break; - case NPC_SATHROVARR: - SathrovarrGUID = creature->GetGUID(); - break; - case NPC_BRUTALLUS: - BrutallusGUID = creature->GetGUID(); - break; - case NPC_MADRIGOSA: - MadrigosaGUID = creature->GetGUID(); - break; - case NPC_FELMYST: - FelmystGUID = creature->GetGUID(); - break; - case NPC_GRAND_WARLOCK_ALYTHESS: - AlythessGUID = creature->GetGUID(); - break; - case NPC_LADY_SACROLASH: - SacrolashGUID = creature->GetGUID(); - break; - case NPC_MURU: - MuruGUID = creature->GetGUID(); - break; - case NPC_KILJAEDEN: - KilJaedenGUID = creature->GetGUID(); - break; - case NPC_KILJAEDEN_CONTROLLER: - KilJaedenControllerGUID = creature->GetGUID(); - break; - case NPC_ANVEENA: - AnveenaGUID = creature->GetGUID(); - break; - case NPC_KALECGOS_KJ: - KalecgosKjGUID = creature->GetGUID(); - break; - default: - break; - } - } - - void OnGameObjectCreate(GameObject* go) override - { - switch (go->GetEntry()) - { - case GO_FORCE_FIELD: - case GO_BOSS_COLLISION_1: - case GO_BOSS_COLLISION_2: - case GO_FIRE_BARRIER: - case GO_MURUS_GATE_1: - case GO_MURUS_GATE_2: - AddDoor(go, true); - break; - default: - break; - } - } - - void OnGameObjectRemove(GameObject* go) override - { - switch (go->GetEntry()) - { - case GO_FIRE_BARRIER: - case GO_MURUS_GATE_1: - case GO_MURUS_GATE_2: - case GO_BOSS_COLLISION_1: - case GO_BOSS_COLLISION_2: - case GO_FORCE_FIELD: - AddDoor(go, false); - break; - default: - break; - } - } - ObjectGuid GetGuidData(uint32 id) const override { switch (id) { - case DATA_KALECGOS_DRAGON: - return KalecgosDragonGUID; - case DATA_KALECGOS_HUMAN: - return KalecgosHumanGUID; - case DATA_SATHROVARR: - return SathrovarrGUID; - case DATA_BRUTALLUS: - return BrutallusGUID; - case DATA_MADRIGOSA: - return MadrigosaGUID; - case DATA_FELMYST: - return FelmystGUID; - case DATA_ALYTHESS: - return AlythessGUID; - case DATA_SACROLASH: - return SacrolashGUID; - case DATA_MURU: - return MuruGUID; - case DATA_KILJAEDEN: - return KilJaedenGUID; - case DATA_KILJAEDEN_CONTROLLER: - return KilJaedenControllerGUID; - case DATA_ANVEENA: - return AnveenaGUID; - case DATA_KALECGOS_KJ: - return KalecgosKjGUID; case DATA_PLAYER_GUID: { Player const* target = GetPlayerInMap(); @@ -198,25 +106,6 @@ class instance_sunwell_plateau : public InstanceMapScript } return ObjectGuid::Empty; } - - protected: - ObjectGuid KalecgosDragonGUID; - ObjectGuid KalecgosHumanGUID; - ObjectGuid SathrovarrGUID; - ObjectGuid BrutallusGUID; - ObjectGuid MadrigosaGUID; - ObjectGuid FelmystGUID; - ObjectGuid AlythessGUID; - ObjectGuid SacrolashGUID; - ObjectGuid MuruGUID; - ObjectGuid KilJaedenGUID; - ObjectGuid KilJaedenControllerGUID; - ObjectGuid AnveenaGUID; - ObjectGuid KalecgosKjGUID; - uint32 SpectralPlayers; - - uint32 SpectralRealmTimer; - GuidVector SpectralRealmList; }; InstanceScript* GetInstanceScript(InstanceMap* map) const override diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h b/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h index f843f011ff2..a25ed5b0ca2 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h @@ -58,7 +58,7 @@ enum SWPCreatureIds NPC_MURU = 25741, NPC_ENTROPIUS = 25840, NPC_KALECGOS = 24850, - NPC_KALEC = 24891, + NPC_KALECGOS_HUMAN = 24891, NPC_SATHROVARR = 24892, NPC_BRUTALLUS = 24882, NPC_MADRIGOSA = 24895, |