aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorccrs <ccrs@users.noreply.github.com>2019-01-10 22:51:47 +0100
committerShauren <shauren.trinity@gmail.com>2021-11-21 14:17:23 +0100
commit1c5287032affb1a402b0a6091b75997ef56e556c (patch)
treebdcd689d566f71623713afc34862ccc441797e16
parent90cce65d468590a184114cd7415c8de8a8478f74 (diff)
Core/Movement: correct logic wrongly ported in 2a84562dc8
I'm referencing line 97 from ChaseMovementGenerator. That commit introduced a modification in this use case: - Chasing target is not my current victim, I should stop moving till it is my victim again Changed To: - Chasing target is not my current vicitm, I should stop chasing My correction: - I dont care about the relation of my current victim and my chasing target, I'm commanded to chase, something will tell me to stop chasing --> Most likely: evade, new attackstart, etc. the rest are just minor changes (cherry picked from commit 9080e7863c28df7dc1c2af321964776e7b59e41a)
-rw-r--r--src/server/game/Movement/MotionMaster.cpp4
-rw-r--r--src/server/game/Movement/MotionMaster.h2
-rw-r--r--src/server/game/Movement/MovementDefines.cpp1
-rw-r--r--src/server/game/Movement/MovementGenerators/ChaseMovementGenerator.cpp6
-rw-r--r--src/server/game/Movement/MovementGenerators/FollowMovementGenerator.cpp2
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp4
6 files changed, 7 insertions, 12 deletions
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp
index a3c8b04f9a7..c0fe7c17b93 100644
--- a/src/server/game/Movement/MotionMaster.cpp
+++ b/src/server/game/Movement/MotionMaster.cpp
@@ -66,7 +66,7 @@ inline void MovementGeneratorPointerDeleter(MovementGenerator* a)
delete a;
}
-void MovementGeneratorDeleter::operator()(MovementGenerator * a)
+void MovementGeneratorDeleter::operator()(MovementGenerator* a)
{
MovementGeneratorPointerDeleter(a);
}
@@ -123,7 +123,7 @@ uint32 MotionMaster::Size() const
return _defaultGenerator ? 1 : 0 + uint32(_generators.size());
}
-std::vector<MovementGeneratorInformation> MotionMaster::GetMovementGeneratorsInformation() const
+std::vector<MovementGeneratorInformation> const MotionMaster::GetMovementGeneratorsInformation() const
{
std::vector<MovementGeneratorInformation> list;
diff --git a/src/server/game/Movement/MotionMaster.h b/src/server/game/Movement/MotionMaster.h
index 2fc2135b603..4c0afcfe492 100644
--- a/src/server/game/Movement/MotionMaster.h
+++ b/src/server/game/Movement/MotionMaster.h
@@ -105,7 +105,7 @@ class TC_GAME_API MotionMaster
bool Empty() const;
uint32 Size() const;
- std::vector<MovementGeneratorInformation> GetMovementGeneratorsInformation() const;
+ std::vector<MovementGeneratorInformation> const GetMovementGeneratorsInformation() const;
MovementSlot GetCurrentSlot() const;
MovementGenerator* GetCurrentMovementGenerator() const;
MovementGeneratorType GetCurrentMovementGeneratorType() const;
diff --git a/src/server/game/Movement/MovementDefines.cpp b/src/server/game/Movement/MovementDefines.cpp
index 3b0caa87c48..ec0d8d327b9 100644
--- a/src/server/game/Movement/MovementDefines.cpp
+++ b/src/server/game/Movement/MovementDefines.cpp
@@ -15,7 +15,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "Common.h"
#include "MovementDefines.h"
#include "ObjectDefines.h"
#include "Position.h"
diff --git a/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator.cpp
index e52393a97ad..d7b95c148f6 100644
--- a/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator.cpp
@@ -90,11 +90,7 @@ bool ChaseMovementGenerator::Update(Unit* owner, uint32 diff)
// our target might have gone away
Unit* const target = GetTarget();
- if (!target)
- return false;
-
- // the owner might've selected a different target (feels like we shouldn't check this here...)
- if (owner->GetVictim() != target)
+ if (!target || !target->IsInWorld())
return false;
// the owner might be unable to move (rooted or casting), pause movement
diff --git a/src/server/game/Movement/MovementGenerators/FollowMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FollowMovementGenerator.cpp
index 6d2544f8f89..472b9571ae6 100644
--- a/src/server/game/Movement/MovementGenerators/FollowMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/FollowMovementGenerator.cpp
@@ -78,7 +78,7 @@ bool FollowMovementGenerator::Update(Unit* owner, uint32 diff)
// our target might have gone away
Unit* const target = GetTarget();
- if (!target)
+ if (!target || !target->IsInWorld())
return false;
if (owner->HasUnitState(UNIT_STATE_NOT_MOVE) || owner->IsMovementPreventedByCasting())
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 3782d181b5d..7f1175a4503 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -2199,8 +2199,8 @@ public:
float x, y, z;
unit->GetMotionMaster()->GetDestination(x, y, z);
- std::vector<MovementGeneratorInformation> list = unit->GetMotionMaster()->GetMovementGeneratorsInformation();
- for (MovementGeneratorInformation info : list)
+ std::vector<MovementGeneratorInformation> const list = unit->GetMotionMaster()->GetMovementGeneratorsInformation();
+ for (MovementGeneratorInformation const& info : list)
{
switch (info.Type)
{