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:
parent
965a60e71a
commit
60f2b32876
2 changed files with 68 additions and 17 deletions
|
|
@ -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);
|
||||
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue