fix(Scripts/Eye): Kael'thas advisors fail to engage and aggro before being called (#25513)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
37b60cd0bc
commit
ec9fd3f15b
2 changed files with 14 additions and 46 deletions
|
|
@ -229,9 +229,6 @@ struct boss_kaelthas : public BossAI
|
|||
{
|
||||
advisor->Respawn(true);
|
||||
advisor->StopMovingOnCurrentPos();
|
||||
advisor->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
advisor->SetReactState(REACT_PASSIVE);
|
||||
summons.Summon(advisor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -550,7 +547,7 @@ struct boss_kaelthas : public BossAI
|
|||
void IntroduceNewAdvisor(KTYells talkIntroduction, KTActions kaelAction)
|
||||
{
|
||||
std::chrono::milliseconds attackStartTimer = 0ms;
|
||||
EyeNPCs advisorNPCId = NPC_THALADRED;
|
||||
uint32 dataIdx = DATA_THALADRED;
|
||||
scheduler.Schedule(2s, [this, talkIntroduction](TaskContext)
|
||||
{
|
||||
Talk(talkIntroduction);
|
||||
|
|
@ -560,26 +557,26 @@ struct boss_kaelthas : public BossAI
|
|||
{
|
||||
case ACTION_START_THALADRED:
|
||||
attackStartTimer = 7s;
|
||||
advisorNPCId = NPC_THALADRED;
|
||||
dataIdx = DATA_THALADRED;
|
||||
break;
|
||||
case ACTION_START_SANGUINAR:
|
||||
attackStartTimer = 14500ms;
|
||||
advisorNPCId = NPC_LORD_SANGUINAR;
|
||||
dataIdx = DATA_LORD_SANGUINAR;
|
||||
break;
|
||||
case ACTION_START_CAPERNIAN:
|
||||
attackStartTimer = 9s;
|
||||
advisorNPCId = NPC_CAPERNIAN;
|
||||
dataIdx = DATA_CAPERNIAN;
|
||||
break;
|
||||
case ACTION_START_TELONICUS:
|
||||
attackStartTimer = 10400ms;
|
||||
advisorNPCId = NPC_TELONICUS;
|
||||
dataIdx = DATA_TELONICUS;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
scheduler.Schedule(attackStartTimer, [this, advisorNPCId](TaskContext)
|
||||
scheduler.Schedule(attackStartTimer, [this, dataIdx](TaskContext)
|
||||
{
|
||||
if (Creature* advisor = summons.GetCreatureWithEntry(advisorNPCId))
|
||||
if (Creature* advisor = instance->GetCreature(dataIdx))
|
||||
{
|
||||
advisor->SetReactState(REACT_AGGRESSIVE);
|
||||
advisor->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
|
@ -737,6 +734,13 @@ struct advisor_baseAI : public ScriptedAI
|
|||
scheduler.CancelAll();
|
||||
}
|
||||
|
||||
void JustRespawned() override
|
||||
{
|
||||
ScriptedAI::JustRespawned();
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override { ScheduleEvents(); }
|
||||
|
||||
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageEffectType*/, SpellSchoolMask /*spellSchoolMask*/) override
|
||||
|
|
|
|||
|
|
@ -67,42 +67,10 @@ public:
|
|||
LoadBossBoundaries(boundaries);
|
||||
}
|
||||
|
||||
ObjectGuid ThaladredTheDarkenerGUID;
|
||||
ObjectGuid LordSanguinarGUID;
|
||||
ObjectGuid GrandAstromancerCapernianGUID;
|
||||
ObjectGuid MasterEngineerTelonicusGUID;
|
||||
ObjectGuid AlarGUID;
|
||||
ObjectGuid KaelthasGUID;
|
||||
ObjectGuid BridgeWindowGUID;
|
||||
ObjectGuid KaelStateRightGUID;
|
||||
ObjectGuid KaelStateLeftGUID;
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
{
|
||||
switch (creature->GetEntry())
|
||||
{
|
||||
case NPC_ALAR:
|
||||
AlarGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_KAELTHAS:
|
||||
KaelthasGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_THALADRED:
|
||||
ThaladredTheDarkenerGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_TELONICUS:
|
||||
MasterEngineerTelonicusGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_CAPERNIAN:
|
||||
GrandAstromancerCapernianGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_LORD_SANGUINAR:
|
||||
LordSanguinarGUID = creature->GetGUID();
|
||||
break;
|
||||
}
|
||||
InstanceScript::OnCreatureCreate(creature);
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* gobject) override
|
||||
{
|
||||
switch (gobject->GetEntry())
|
||||
|
|
@ -130,10 +98,6 @@ public:
|
|||
return KaelStateRightGUID;
|
||||
case GO_KAEL_STATUE_LEFT:
|
||||
return KaelStateLeftGUID;
|
||||
case NPC_ALAR:
|
||||
return AlarGUID;
|
||||
case NPC_KAELTHAS:
|
||||
return KaelthasGUID;
|
||||
}
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue