diff options
3 files changed, 9 insertions, 46 deletions
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp index 85592df25cd..fe69169dca7 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp @@ -155,8 +155,7 @@ struct boss_felblood_kaelthas : public BossAI { _Reset(); Initialize(); - if (instance->GetData(DATA_KAELTHAS_INTRO_STATE) != DONE) - me->SetImmuneToPC(true); + events.SetPhase(PHASE_INTRO); } void JustDied(Unit* /*killer*/) override @@ -165,15 +164,12 @@ struct boss_felblood_kaelthas : public BossAI instance->SetBossState(DATA_KAELTHAS_SUNSTRIDER, DONE); } - void EnterEvadeMode(EvadeReason why) override + void EnterEvadeMode(EvadeReason /*why*/) override { DoCastAOE(SPELL_CLEAR_FLIGHT, true); _EnterEvadeMode(); summons.DespawnAll(); - events.Reset(); - me->SetReactState(REACT_AGGRESSIVE); - me->ReleaseFocus(); - BossAI::EnterEvadeMode(why); + _DespawnAtEvade(); } void DamageTaken(Unit* attacker, uint32 &damage) override @@ -212,7 +208,11 @@ struct boss_felblood_kaelthas : public BossAI { if (type == DATA_KAELTHAS_INTRO) { - events.SetPhase(PHASE_INTRO); + // skip the intro if Kael'thas is engaged already + if (!events.IsInPhase(PHASE_INTRO)) + return; + + me->SetImmuneToPC(true); events.ScheduleEvent(EVENT_TALK_INTRO_1, 6s, 0, PHASE_INTRO); } } diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp index a5f42c2e12f..1c1b181693f 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp @@ -83,7 +83,6 @@ class instance_magisters_terrace : public InstanceMapScript void Initialize() override { _delrissaDeathCount = 0; - _kaelthasIntroState = 0; } uint32 GetData(uint32 type) const override @@ -92,8 +91,6 @@ class instance_magisters_terrace : public InstanceMapScript { case DATA_DELRISSA_DEATH_COUNT: return _delrissaDeathCount; - case DATA_KAELTHAS_INTRO_STATE: - return _kaelthasIntroState; default: break; } @@ -110,10 +107,6 @@ class instance_magisters_terrace : public InstanceMapScript else _delrissaDeathCount = 0; break; - case DATA_KAELTHAS_INTRO_STATE: - _kaelthasIntroState = data; - SaveToDB(); - break; default: break; } @@ -155,13 +148,8 @@ class instance_magisters_terrace : public InstanceMapScript { _kaelthasPreTrashGUIDs.erase(unit->GetGUID()); if (_kaelthasPreTrashGUIDs.size() == 0) - { if (Creature* kaelthas = GetCreature(DATA_KAELTHAS_SUNSTRIDER)) - { kaelthas->AI()->SetData(DATA_KAELTHAS_INTRO, IN_PROGRESS); - SetData(DATA_KAELTHAS_INTRO_STATE, DONE); - } - } } break; default: @@ -175,10 +163,6 @@ class instance_magisters_terrace : public InstanceMapScript switch (go->GetEntry()) { - case GO_KAEL_STATUE_1: - case GO_KAEL_STATUE_2: - _statueGUIDs.push_back(go->GetGUID()); - break; case GO_ESCAPE_ORB: if (GetBossState(DATA_KAELTHAS_SUNSTRIDER) == DONE) go->RemoveFlag(GO_FLAG_NOT_SELECTABLE); @@ -221,12 +205,7 @@ class instance_magisters_terrace : public InstanceMapScript _delrissaDeathCount = 0; break; case DATA_KAELTHAS_SUNSTRIDER: - if (state == NOT_STARTED) - { - for (ObjectGuid guid : _statueGUIDs) - HandleGameObject(guid, false); - } - else if (state == DONE) + if (state == DONE) if (GameObject* orb = GetGameObject(DATA_ESCAPE_ORB)) orb->RemoveFlag(GO_FLAG_NOT_SELECTABLE); break; @@ -236,22 +215,10 @@ class instance_magisters_terrace : public InstanceMapScript return true; } - void WriteSaveDataMore(std::ostringstream& data) override - { - data << _kaelthasIntroState; - } - - void ReadSaveDataMore(std::istringstream& data) override - { - data >> _kaelthasIntroState; - } - protected: EventMap _events; - GuidVector _statueGUIDs; GuidSet _kaelthasPreTrashGUIDs; uint8 _delrissaDeathCount; - uint8 _kaelthasIntroState; }; InstanceScript* GetInstanceScript(InstanceMap* map) const override diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h index 5db4c6302ed..63041a51618 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h @@ -38,8 +38,6 @@ enum MTDataTypes DATA_DELRISSA_DEATH_COUNT, // Additional data - DATA_KAELTHAS_INTRO_STATE, - DATA_KALECGOS, DATA_ESCAPE_ORB }; @@ -80,8 +78,6 @@ enum MTGameObjectIds GO_SUNWELL_RAID_GATE_4 = 187770, GO_SUNWELL_RAID_GATE_5 = 187896, GO_ASYLUM_DOOR = 188064, - GO_KAEL_STATUE_1 = 188165, - GO_KAEL_STATUE_2 = 188166, GO_ESCAPE_ORB = 188173 }; |