diff --git a/src/game/WaypointMovementGenerator.cpp b/src/game/WaypointMovementGenerator.cpp index 54fac4412..b5743f77b 100644 --- a/src/game/WaypointMovementGenerator.cpp +++ b/src/game/WaypointMovementGenerator.cpp @@ -313,15 +313,20 @@ void FlightPathMovementGenerator::Reset(Player & player) bool FlightPathMovementGenerator::Update(Player &player, const uint32 &diff) { uint32 pointId = (uint32)player.movespline->currentPathIdx(); - // currentPathIdx returns lastIdx + 1 at arrive - while (i_currentNode < pointId) + if (pointId > i_currentNode) { - DoEventIfAny(player,(*i_path)[i_currentNode],true); - DoEventIfAny(player,(*i_path)[i_currentNode],false); - ++i_currentNode; + bool departureEvent = true; + do + { + DoEventIfAny(player,(*i_path)[i_currentNode],departureEvent); + if (pointId == i_currentNode) + break; + i_currentNode += (uint32)departureEvent; + departureEvent = !departureEvent; + } while(true); } - - return MovementInProgress(); + + return i_currentNode < (i_path->size()-1); } void FlightPathMovementGenerator::SetCurrentNodeAfterTeleport() diff --git a/src/game/WaypointMovementGenerator.h b/src/game/WaypointMovementGenerator.h index 3bd4b5125..821991fa3 100644 --- a/src/game/WaypointMovementGenerator.h +++ b/src/game/WaypointMovementGenerator.h @@ -43,8 +43,6 @@ class MANGOS_DLL_SPEC PathMovementBase PathMovementBase() : i_currentNode(0) {} virtual ~PathMovementBase() {}; - bool MovementInProgress(void) const { return (i_currentNode+1) < i_path->size(); } - // template pattern, not defined .. override required void LoadPath(T &); uint32 GetCurrentNode() const { return i_currentNode; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index e16383990..99f9a8889 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11781" + #define REVISION_NR "11782" #endif // __REVISION_NR_H__