fix(Scripts/UP): fix "My Girl Loves to Skadi All the Time" achievement (#25770)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Andrew
2026-05-08 22:35:37 -03:00
committed by GitHub
parent 94a096d778
commit 1f24863e58

View File

@@ -71,7 +71,6 @@ enum Actions
ACTION_START_ENCOUNTER = 1, ACTION_START_ENCOUNTER = 1,
ACTION_DRAKE_BREATH = 2, ACTION_DRAKE_BREATH = 2,
ACTION_PHASE2 = 3, ACTION_PHASE2 = 3,
ACTION_HARPOON_HIT = 4,
}; };
enum CombatPhase enum CombatPhase
@@ -171,8 +170,6 @@ public:
_events.Reset(); _events.Reset();
_summons.DespawnAll(); _summons.DespawnAll();
_phase = PHASE_GROUND; _phase = PHASE_GROUND;
_harpoonHit = 0;
_loveSkadi = 0;
_firstWaveSummoned = false; _firstWaveSummoned = false;
_encounterStarted = false; _encounterStarted = false;
@@ -266,8 +263,6 @@ public:
_events.ScheduleEvent(EVENT_SKADI_RESET_CHECK, 6s); _events.ScheduleEvent(EVENT_SKADI_RESET_CHECK, 6s);
break; break;
case ACTION_DRAKE_BREATH: case ACTION_DRAKE_BREATH:
if (_loveSkadi == 1)
++_loveSkadi;
Talk(SAY_DRAKE_BREATH); Talk(SAY_DRAKE_BREATH);
break; break;
case ACTION_PHASE2: case ACTION_PHASE2:
@@ -283,21 +278,9 @@ public:
_events.ScheduleEvent(EVENT_SKADI_SPEAR, 11s); _events.ScheduleEvent(EVENT_SKADI_SPEAR, 11s);
_events.ScheduleEvent(EVENT_SKADI_WHIRLWIND, 23s); _events.ScheduleEvent(EVENT_SKADI_WHIRLWIND, 23s);
break; break;
case ACTION_HARPOON_HIT:
++_harpoonHit;
if (_harpoonHit == 1)
_loveSkadi = 1;
break;
} }
} }
uint32 GetData(uint32 id) const override
{
if (id == DATA_LOVE_TO_SKADI)
return _loveSkadi;
return 0;
}
void UpdateAI(uint32 diff) override void UpdateAI(uint32 diff) override
{ {
_events.Update(diff); _events.Update(diff);
@@ -384,8 +367,6 @@ public:
EventMap _events; EventMap _events;
SummonList _summons; SummonList _summons;
CombatPhase _phase; CombatPhase _phase;
uint8 _harpoonHit;
uint8 _loveSkadi;
bool _firstWaveSummoned; bool _firstWaveSummoned;
bool _encounterStarted; bool _encounterStarted;
}; };
@@ -415,6 +396,7 @@ public:
me->SetReactState(REACT_PASSIVE); me->SetReactState(REACT_PASSIVE);
me->SetSpeedRate(MOVE_RUN, 2.5f); me->SetSpeedRate(MOVE_RUN, 2.5f);
_flyingToSide = false; _flyingToSide = false;
_passFreshStart = false;
} }
void DoAction(int32 param) override void DoAction(int32 param) override
@@ -430,13 +412,6 @@ public:
} }
} }
void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
{
if (spellInfo->Id == SPELL_LAUNCH_HARPOON)
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
skadi->AI()->DoAction(ACTION_HARPOON_HIT);
}
void MovementInform(uint32 type, uint32 /*id*/) override void MovementInform(uint32 type, uint32 /*id*/) override
{ {
if (type == ESCORT_MOTION_TYPE && me->movespline->Finalized()) if (type == ESCORT_MOTION_TYPE && me->movespline->Finalized())
@@ -470,6 +445,7 @@ public:
FORCED_MOVEMENT_RUN); FORCED_MOVEMENT_RUN);
break; break;
case EVENT_GRAUF_BREATH_START: case EVENT_GRAUF_BREATH_START:
_passFreshStart = me->IsFullHealth();
me->GetMotionMaster()->MovePath( me->GetMotionMaster()->MovePath(
_lastSide == POINT_LEFT ? PATH_LEFT : PATH_RIGHT, _lastSide == POINT_LEFT ? PATH_LEFT : PATH_RIGHT,
FORCED_MOVEMENT_RUN); FORCED_MOVEMENT_RUN);
@@ -493,10 +469,11 @@ public:
{ {
skadi->ExitVehicle(); skadi->ExitVehicle();
skadi->AI()->DoAction(ACTION_PHASE2); skadi->AI()->DoAction(ACTION_PHASE2);
if (skadi->AI()->GetData(DATA_LOVE_TO_SKADI) == 1)
_instance->SetData(DATA_SKADI_ACHIEVEMENT, true);
} }
if (_passFreshStart)
_instance->SetData(DATA_SKADI_ACHIEVEMENT, true);
me->DespawnOrUnsummon(6s); me->DespawnOrUnsummon(6s);
} }
@@ -506,6 +483,7 @@ public:
SummonList _summons; SummonList _summons;
uint8 _lastSide = POINT_LEFT; uint8 _lastSide = POINT_LEFT;
bool _flyingToSide = false; bool _flyingToSide = false;
bool _passFreshStart = false;
}; };
}; };