fix(Scripts/UtgardePinnacle): Fix Skadi gauntlet add movement and reset (#25359)

Co-authored-by: Gustavo <sirikfoll@hotmail.com>
Co-authored-by: maximius <19688589+maximius@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Andrew 2026-04-03 02:04:27 -03:00 committed by GitHub
parent 965a60e71a
commit 60f2b32876
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 68 additions and 17 deletions

View file

@ -0,0 +1,25 @@
DELETE FROM `waypoint_data` WHERE `id` = 2669000;
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
(2669000, 1, 478.743, -505.576, 104.724, 0, 0, 1, 0, 100, 0),
(2669000, 2, 318.177, -503.8898, 104.5326, 0, 0, 1, 0, 100, 0);
DELETE FROM `smart_scripts` WHERE `entryorguid` = 26690 AND `source_type` = 0 AND `id` IN (2);
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(26690, 0, 2, 0, 109, 0, 100, 0, 0, 2669000, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ymirjar Warrior - On Path 2669000 Finished - Set In Combat With Zone');
DELETE FROM `smart_scripts` WHERE `entryorguid` = 26691 AND `source_type` = 0 AND `id` IN (2);
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(26691, 0, 2, 0, 109, 0, 100, 0, 0, 2669000, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ymirjar Witch Doctor - On Path 2669000 Finished - Set In Combat With Zone');
DELETE FROM `smart_scripts` WHERE `entryorguid` = 26692 AND `source_type` = 0 AND `id` IN (3);
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(26692, 0, 3, 0, 109, 0, 100, 0, 0, 2669000, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ymirjar Harpooner - On Path 2669000 Finished - Set In Combat With Zone');
UPDATE `spell_area` SET `gender` = 2 WHERE `spell` = 47546;
DELETE FROM `waypoint_data` WHERE `id` IN (2689303, 2689304);
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
(2689303, 1, 520.483, -541.563, 119.842, 0, 0, 2, 0, 100, 0),
(2689303, 2, 496.434, -517.578, 120, 0, 0, 2, 0, 100, 0),
(2689304, 1, 520.483, -541.563, 119.842, 0, 0, 2, 0, 100, 0),
(2689304, 2, 500.243, -501.693, 120, 0, 0, 2, 0, 100, 0);

View file

@ -113,8 +113,6 @@ Position const FirstWaveLocations[FIRST_WAVE_SIZE] =
{ 481.388f, -507.109f, 104.724f, 3.26377f },
};
Position const SecondaryWavesInitialPoint = { 478.743f, -505.576f, 104.724f };
enum GraufPoints
{
POINT_BREACH = 0,
@ -122,11 +120,19 @@ enum GraufPoints
POINT_RIGHT = 2,
};
uint32 const PATH_INITIAL = 2689300;
uint32 const PATH_RIGHT = 2689301;
uint32 const PATH_LEFT = 2689302;
enum GraufPaths
{
PATH_INITIAL = 2689300,
PATH_RIGHT = 2689301,
PATH_LEFT = 2689302,
PATH_BREACH_RIGHT = 2689303,
PATH_BREACH_LEFT = 2689304,
PATH_GAUNTLET_ADDS = 2669000,
};
float const BreachFacing = 2.670354f;
float const BreathFacingRight = 3.124139f;
float const BreathFacingLeft = 3.228859f;
enum Events
{
@ -139,6 +145,7 @@ enum Events
// Grauf
EVENT_GRAUF_START = 10,
EVENT_GRAUF_LEAVE_BREACH = 11,
EVENT_GRAUF_BREATH_START = 12,
EVENT_GRAUF_REMOVE_AURA = 13,
};
@ -193,7 +200,10 @@ public:
case NPC_YMIRJAR_WITCH_DOCTOR:
case NPC_YMIRJAR_HARPOONER:
if (_firstWaveSummoned)
summon->GetMotionMaster()->MovePoint(1, SecondaryWavesInitialPoint);
{
summon->LoadPath(PATH_GAUNTLET_ADDS);
summon->GetMotionMaster()->MoveWaypoint(PATH_GAUNTLET_ADDS, false);
}
break;
default:
break;
@ -404,6 +414,7 @@ public:
_summons.DespawnAll();
me->SetReactState(REACT_PASSIVE);
me->SetSpeedRate(MOVE_RUN, 2.5f);
_flyingToSide = false;
}
void DoAction(int32 param) override
@ -430,9 +441,19 @@ public:
{
if (type == ESCORT_MOTION_TYPE && me->movespline->Finalized())
{
me->SetFacingTo(BreachFacing);
Talk(EMOTE_ON_RANGE);
_events.ScheduleEvent(EVENT_GRAUF_LEAVE_BREACH, 10s);
if (_flyingToSide)
{
_flyingToSide = false;
me->SetFacingTo(_lastSide == POINT_LEFT ? BreathFacingLeft : BreathFacingRight);
Talk(EMOTE_DEEP_BREATH);
_events.ScheduleEvent(EVENT_GRAUF_BREATH_START, 2s);
}
else
{
me->SetFacingTo(BreachFacing);
Talk(EMOTE_ON_RANGE);
_events.ScheduleEvent(EVENT_GRAUF_LEAVE_BREACH, 10s);
}
}
}
@ -443,16 +464,20 @@ public:
{
case EVENT_GRAUF_LEAVE_BREACH:
_lastSide = RAND(POINT_LEFT, POINT_RIGHT);
me->GetMotionMaster()->MovePath(_lastSide == POINT_LEFT ? PATH_LEFT : PATH_RIGHT, FORCED_MOVEMENT_RUN);
if (_lastSide == POINT_LEFT)
DoCast(me, SPELL_FREEZING_CLOUD_LEFT_PERIODIC);
else
DoCast(me, SPELL_FREEZING_CLOUD_RIGHT_PERIODIC);
_flyingToSide = true;
me->GetMotionMaster()->MovePath(
_lastSide == POINT_LEFT ? PATH_BREACH_LEFT : PATH_BREACH_RIGHT,
FORCED_MOVEMENT_RUN);
break;
case EVENT_GRAUF_BREATH_START:
me->GetMotionMaster()->MovePath(
_lastSide == POINT_LEFT ? PATH_LEFT : PATH_RIGHT,
FORCED_MOVEMENT_RUN);
DoCast(me, _lastSide == POINT_LEFT
? SPELL_FREEZING_CLOUD_LEFT_PERIODIC
: SPELL_FREEZING_CLOUD_RIGHT_PERIODIC);
if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS))
skadi->AI()->DoAction(ACTION_DRAKE_BREATH);
_events.ScheduleEvent(EVENT_GRAUF_REMOVE_AURA, 10s);
break;
case EVENT_GRAUF_REMOVE_AURA:
@ -480,6 +505,7 @@ public:
EventMap _events;
SummonList _summons;
uint8 _lastSide = POINT_LEFT;
bool _flyingToSide = false;
};
};