diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index a082b1ee7f5..599223cb25f 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -321,11 +321,6 @@ class TC_GAME_API UnitAI // Called when a game event starts or ends virtual void OnGameEvent(bool /*start*/, uint16 /*eventId*/) { } - virtual void WaypointPathStarted(uint32 /*nodeId*/, uint32 /*pathId*/) { } - virtual void WaypointStarted(uint32 /*nodeId*/, uint32 /*pathId*/) { } - virtual void WaypointReached(uint32 /*nodeId*/, uint32 /*pathId*/) { } - virtual void WaypointPathEnded(uint32 /*nodeId*/, uint32 /*pathId*/) { } - private: UnitAI(UnitAI const& right) = delete; UnitAI& operator=(UnitAI const& right) = delete; diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h index 448f5b914a9..706abff452e 100644 --- a/src/server/game/AI/CreatureAI.h +++ b/src/server/game/AI/CreatureAI.h @@ -208,6 +208,13 @@ class TC_GAME_API CreatureAI : public UnitAI // Called when a player completes a quest and is rewarded, opt is the selected item's index or 0 virtual void QuestReward(Player* /*player*/, Quest const* /*quest*/, uint32 /*opt*/) { } + /// == Waypoints system ============================= + + virtual void WaypointPathStarted(uint32 /*pathId*/) { } + virtual void WaypointStarted(uint32 /*nodeId*/, uint32 /*pathId*/) { } + virtual void WaypointReached(uint32 /*nodeId*/, uint32 /*pathId*/) { } + virtual void WaypointPathEnded(uint32 /*nodeId*/, uint32 /*pathId*/) { } + /// == Fields ======================================= virtual void PassengerBoarded(Unit* /*passenger*/, int8 /*seatId*/, bool /*apply*/) { } diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index c4b353fefa0..3933c02e6a6 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -417,11 +417,12 @@ bool SmartAI::IsEscortInvokerInRange() } ///@todo move escort related logic -void SmartAI::WaypointPathStarted(uint32 nodeId, uint32 pathId) +void SmartAI::WaypointPathStarted(uint32 pathId) { if (!HasEscortState(SMART_ESCORT_ESCORTING)) { - GetScript()->ProcessEventsFor(SMART_EVENT_WAYPOINT_START, nullptr, nodeId, pathId); + // @todo remove the constant 1 at some point, it's never anything different + GetScript()->ProcessEventsFor(SMART_EVENT_WAYPOINT_START, nullptr, 1, pathId); return; } } diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h index d5e3bd8f267..b92bac954c3 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.h +++ b/src/server/game/AI/SmartScripts/SmartAI.h @@ -68,7 +68,7 @@ class TC_GAME_API SmartAI : public CreatureAI void StopFollow(bool complete); bool IsEscortInvokerInRange(); - void WaypointPathStarted(uint32 nodeId, uint32 pathId) override; + void WaypointPathStarted(uint32 pathId) override; void WaypointStarted(uint32 nodeId, uint32 pathId) override; void WaypointReached(uint32 nodeId, uint32 pathId) override; void WaypointPathEnded(uint32 nodeId, uint32 pathId) override; diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp index 37edc74df39..5c5ff9449bd 100755 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp @@ -59,8 +59,8 @@ void WaypointMovementGenerator::DoInitialize(Creature* creature) _nextMoveTime.Reset(1000); // inform AI - if (creature->AI()) - creature->AI()->WaypointPathStarted(1, _path->id); + if (creature->IsAIEnabled) + creature->AI()->WaypointPathStarted(_path->id); } void WaypointMovementGenerator::DoFinalize(Creature* creature) @@ -102,7 +102,7 @@ void WaypointMovementGenerator::OnArrived(Creature* creature) } // inform AI - if (creature->AI()) + if (creature->IsAIEnabled) { creature->AI()->MovementInform(WAYPOINT_MOTION_TYPE, _currentNode); creature->AI()->WaypointReached(waypoint.id, _path->id); @@ -159,7 +159,7 @@ void WaypointMovementGenerator::StartMove(Creature* creature, bool rel creature->UpdateCurrentWaypointInfo(0, 0); // inform AI - if (creature->AI()) + if (creature->IsAIEnabled) creature->AI()->WaypointPathEnded(waypoint.id, _path->id); return; } @@ -167,7 +167,7 @@ void WaypointMovementGenerator::StartMove(Creature* creature, bool rel _currentNode = (_currentNode + 1) % _path->nodes.size(); // inform AI - if (creature->AI()) + if (creature->IsAIEnabled) creature->AI()->WaypointStarted(waypoint.id, _path->id); }