fix(Scripts/UtgardePinnacle): Fix Skadi start and reset checks (#23034)

This commit is contained in:
Andrew
2025-09-28 07:02:35 -03:00
committed by GitHub
parent 5d443d3cda
commit 09c2b7e5fb
3 changed files with 42 additions and 34 deletions

View File

@@ -143,10 +143,7 @@ public:
SecondPhase = false;
EventStarted = false;
me->RemoveAllAuras();
me->SetControlled(false, UNIT_STATE_ROOT);
me->UpdatePosition(343.02f, -507.325f, 104.567f, M_PI, true);
me->StopMovingOnCurrentPos();
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
if (m_pInstance)
{
@@ -160,29 +157,28 @@ public:
Creature* GetGrauf() { return ObjectAccessor::GetCreature(*me, GraufGUID); }
void JustEngagedWith(Unit* /*pWho*/) override
{
if (!EventStarted)
{
EventStarted = true;
Talk(SAY_AGGRO);
if (m_pInstance)
{
if (IsHeroic())
m_pInstance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_LODI_DODI);
m_pInstance->SetData(DATA_SKADI_THE_RUTHLESS, IN_PROGRESS);
}
me->SetControlled(true, UNIT_STATE_ROOT);
me->SetInCombatWithZone();
events.RescheduleEvent(EVENT_SKADI_START, 2s);
}
}
void DoAction(int32 param) override
{
if (param == ACTION_PHASE2)
if (param == ACTION_START_EVENT)
{
if (!EventStarted)
{
EventStarted = true;
Talk(SAY_AGGRO);
if (m_pInstance)
{
if (IsHeroic())
m_pInstance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_LODI_DODI);
m_pInstance->SetData(DATA_SKADI_THE_RUTHLESS, IN_PROGRESS);
}
me->SetControlled(true, UNIT_STATE_ROOT);
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
events.RescheduleEvent(EVENT_SKADI_START, 2s);
}
}
else if (param == ACTION_PHASE2)
{
SecondPhase = true;
events.ScheduleEvent(EVENT_SKADI_CRUSH, 8s);
@@ -190,7 +186,7 @@ public:
events.ScheduleEvent(EVENT_SKADI_WHIRLWIND, 15s);
if (me->GetVictim())
me->GetMotionMaster()->MoveChase(me->GetVictim());
me->ResumeChasingVictim();
else
me->SetInCombatWithZone();
}
@@ -415,7 +411,7 @@ public:
Map::PlayerList const& pList = me->GetMap()->GetPlayers();
for(Map::PlayerList::const_iterator itr = pList.begin(); itr != pList.end(); ++itr)
{
if (itr->GetSource()->GetPositionX() < 320.0f || itr->GetSource()->IsGameMaster() || !itr->GetSource()->IsAlive())
if (itr->GetSource()->GetPositionY() > -490.0f || itr->GetSource()->IsGameMaster() || !itr->GetSource()->IsAlive())
continue;
return;
@@ -456,7 +452,7 @@ public:
SpawnHelpers(0);
SpawnHelpers(0);
events.ScheduleEvent(EVENT_GRAUF_MOVE, 15s);
events.ScheduleEvent(EVENT_GRAUF_MOVE, 5s);
events.ScheduleEvent(EVENT_GRAUF_SUMMON_HELPERS, 20s);
break;
}

View File

@@ -20,6 +20,12 @@
#include "ScriptedCreature.h"
#include "utgarde_pinnacle.h"
ObjectData const creatureData[] =
{
{ NPC_SKADI_THE_RUTHLESS, DATA_SKADI_THE_RUTHLESS },
{ 0, 0 }
};
class instance_utgarde_pinnacle : public InstanceMapScript
{
public:
@@ -36,7 +42,6 @@ public:
ObjectGuid SvalaSorrowgrave;
ObjectGuid GortokPalehoof;
ObjectGuid SkadiRuthless;
ObjectGuid KingYmiron;
ObjectGuid FrenziedWorgen;
ObjectGuid RavenousFurbolg;
@@ -59,6 +64,7 @@ public:
void Initialize() override
{
SetHeaders(DataHeader);
LoadObjectData(creatureData, nullptr);
SkadiHits = 0;
SkadiInRange = 0;
@@ -88,9 +94,6 @@ public:
case NPC_GORTOK_PALEHOOF:
GortokPalehoof = pCreature->GetGUID();
break;
case NPC_SKADI_THE_RUTHLESS:
SkadiRuthless = pCreature->GetGUID();
break;
case NPC_KING_YMIRON:
KingYmiron = pCreature->GetGUID();
break;
@@ -110,6 +113,8 @@ public:
Grauf = pCreature->GetGUID();
break;
}
InstanceScript::OnCreatureCreate(pCreature);
}
void OnGameObjectCreate(GameObject* pGo) override
@@ -238,8 +243,6 @@ public:
return SvalaSorrowgrave;
case DATA_GORTOK_PALEHOOF:
return GortokPalehoof;
case DATA_SKADI_THE_RUTHLESS:
return SkadiRuthless;
case DATA_KING_YMIRON:
return KingYmiron;
case DATA_NPC_FRENZIED_WORGEN: