mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 23:50:44 +01:00
Scripts/MGT: Kael'thas intro can now be skipped when not killing the trash pack in his room
Scripts/MGT: Kael'thas will now despawn at evade Cherry picked fromf6e9ff5ca4ed8c1830f5(cherry picked from commitc10c8c6bba)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user