feat(Core/Movement): port smooth waypoint movement from Cataclysm Preservation Project (#25106)

Co-authored-by: blinkysc <blinkysc@users.noreply.github.com>
Co-authored-by: Ovahlord <dreadkiller@gmx.de>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Kitzunu <Kitzunu@users.noreply.github.com>
This commit is contained in:
blinkysc
2026-03-23 08:08:14 -05:00
committed by GitHub
parent 3da6e30196
commit 4201acddd5
69 changed files with 844 additions and 386 deletions
@@ -213,6 +213,7 @@ struct npc_grimstone : public npc_escortAI
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -568,6 +569,7 @@ struct npc_rocknot : public npc_escortAI
go->SetGoState((GOState)state);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -176,6 +176,7 @@ public:
void JustEngagedWith(Unit* /*who*/) override { }
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -52,6 +52,7 @@ public:
{
npc_professor_phizzlethorpeAI(Creature* creature) : npc_escortAI(creature) { }
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -45,6 +45,7 @@ struct npc_ranger_lilatha : public npc_escortAI
{
npc_ranger_lilatha(Creature* creature) : npc_escortAI(creature) { }
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -137,6 +137,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -68,6 +68,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -55,6 +55,7 @@ public:
{
npc_deathstalker_erlandAI(Creature* creature) : npc_escortAI(creature) { }
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -88,6 +88,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -318,6 +319,7 @@ public:
uiPhase = 0;
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -1423,6 +1423,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -2820,6 +2821,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -81,6 +81,7 @@ public:
textCounter = SAY_DS_DOWN_1;
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -55,6 +55,7 @@ public:
IsFriendSummoned = false;
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -527,6 +527,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 uiPointId) override
{
switch (uiPointId)
@@ -303,6 +303,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -1014,6 +1015,7 @@ public:
Start(false);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
if (waypointId == 7)
@@ -227,6 +227,7 @@ struct npc_general_andorov : public npc_escortAI
events.ScheduleEvent(EVENT_STRIKE, 2s, 5s);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -126,6 +126,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
if (Player* player = GetPlayerForEscort())
@@ -246,6 +246,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
if (Player* player = GetPlayerForEscort())
@@ -330,6 +330,7 @@ public:
// pSummoned->AI()->AttackStart(me);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
if (Player* player = GetPlayerForEscort())
@@ -257,6 +257,7 @@ public:
me->SetFaction(faction);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
RelocateSummons();
@@ -553,6 +553,7 @@ public:
else if (EventOnWait) EventTimer -= diff;
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
CurrWP = waypointId;
@@ -102,6 +102,7 @@ public:
{
npc_kaya_flathoofAI(Creature* creature) : npc_escortAI(creature) {}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -168,6 +168,7 @@ public:
{
npc_custodian_of_timeAI(Creature* creature) : npc_escortAI(creature) { }
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
if (Player* player = GetPlayerForEscort())
@@ -74,6 +74,7 @@ public:
void Reset() override { }
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -494,6 +495,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -85,6 +85,7 @@ public:
void Reset() override { }
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -170,6 +171,7 @@ public:
void Reset() override { }
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -69,6 +69,7 @@ public:
uint32 DemoralizingShoutTimer;
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
if (Player* player = GetPlayerForEscort())
@@ -383,6 +383,7 @@ public:
StartNextDialogueText(SAY_PRIESTESS_ALTAR_3);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 pointId) override
{
switch (pointId)
@@ -233,6 +233,7 @@ public:
zarithrian->AI()->JustSummoned(me);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
if (waypointId == MAX_PATH_FLAMECALLER_WAYPOINTS)
@@ -519,6 +519,7 @@ public:
bCheck = false;
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 uiPoint) override
{
if (uiPoint == 1)
@@ -340,6 +340,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 i) override
{
if (i == 12)
@@ -592,6 +592,7 @@ public:
void EnterEvadeMode(EvadeReason /*why*/) override {}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 i) override
{
if (!pInstance)
@@ -791,6 +791,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -267,6 +267,7 @@ struct boss_bjarngrim : public npc_escortAI
m_uiStance = stance;
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 Point) override
{
if (Point == 1)
@@ -312,6 +312,7 @@ public:
TalkEvent = false;
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 id) override;
void InitializeEvent();
@@ -974,6 +974,7 @@ struct npc_mimirons_inferno : public npc_escortAI
void AttackStart(Unit*) override { }
void MoveInLineOfSight(Unit*) override { }
using CreatureAI::WaypointReached;
void WaypointReached(uint32 /*waypointId*/) override { }
void DoAction(int32 param) override
@@ -895,6 +895,7 @@ struct boss_thorim_lightning_orb : public npc_escortAI
me->CastSpell(me, SPELL_LIGHTNING_DESTRUCTION, true);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 /*point*/) override
{
}
@@ -960,6 +961,7 @@ struct boss_thorim_sif_blizzard : public npc_escortAI
me->CastSpell(me, SPELL_BLIZZARD, true);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 /*point*/) override
{
}
@@ -934,6 +934,7 @@ struct boss_yoggsaron_cloud : public npc_escortAI
void MoveInLineOfSight(Unit* /*who*/) override {}
void AttackStart(Unit* /*who*/) override {}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 /*point*/) override {}
void Reset() override
@@ -312,6 +312,7 @@ struct violet_hold_trashAI : public npc_escortAI
CreatureStartAttackDoor();
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 id) override
{
if (PLoc < 6)
@@ -1021,6 +1022,7 @@ public:
uint32 timer;
uint8 count;
using CreatureAI::WaypointReached;
void WaypointReached(uint32 uiWPointId) override
{
if (!pInstance)
@@ -377,6 +377,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -752,6 +753,7 @@ public:
player->FailQuest(QUEST_ESCAPING_THE_MIST);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -849,6 +851,7 @@ public:
else Bonker_agro = 0;
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -75,6 +75,7 @@ public:
summoned->AI()->AttackStart(me->GetVictim());
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -126,6 +126,7 @@ public:
DoMeleeAttackIfReady();
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -210,6 +211,7 @@ public:
Start(false, summonerGUID);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
if (waypointId != 26)
@@ -747,6 +747,7 @@ public:
summons.Despawn(summon);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 pointId) override
{
switch (pointId)
@@ -521,6 +521,7 @@ public:
uint32 m_uiChatTimer;
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -73,6 +73,7 @@ struct npc_frosthound : public npc_escortAI
return;
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -568,6 +569,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 /*waypointId*/) override { }
void JustDied(Unit* /*killer*/) override { }
void OnCharmed(bool /*apply*/) override { }
@@ -195,6 +195,7 @@ public:
npc_escortAI::MoveInLineOfSight(who);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -320,6 +321,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -114,6 +114,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -340,6 +341,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
@@ -164,6 +164,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 i) override
{
Player* player = GetPlayerForEscort();
@@ -626,6 +627,7 @@ public:
player->FailQuest(Q_ALMABTRIEB);
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -709,6 +711,7 @@ public:
uiTakeTimer = 3000;
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -161,6 +161,7 @@ public:
public:
npc_kservantAI(Creature* creature) : npc_escortAI(creature) { }
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -374,6 +374,7 @@ public:
{
npc_isla_starmaneAI(Creature* creature) : npc_escortAI(creature) { }
using CreatureAI::WaypointReached;
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
@@ -1356,6 +1356,7 @@ public:
}
}
using CreatureAI::WaypointReached;
void WaypointReached(uint32 /*waypointId*/) override
{
}