From 2a84562dc85516f432bb1e5de9add23c28b26ce4 Mon Sep 17 00:00:00 2001 From: Treeston Date: Fri, 6 Apr 2018 18:09:55 +0200 Subject: Core/Movement: Replace old TargetedMovementGenerator into ChaseMovementGenerator and FollowMovementGenerator, full rewrite for both. - Chase to angle is now functional. Pets use this to chase behind the target. Closes #19925. - Chase to arbitrary range interval works. Not used anywhere, but you can technically make hunter-like mobs. - Pets now follow the hunter cleanly and without stutter stepping. Also fix some other things. Closes #8924. --- src/server/scripts/Commands/cs_misc.cpp | 15 ++++----------- src/server/scripts/Commands/cs_mmaps.cpp | 1 - src/server/scripts/Commands/cs_npc.cpp | 4 ++-- 3 files changed, 6 insertions(+), 14 deletions(-) (limited to 'src/server/scripts/Commands') diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index fb98d0a3304..4b434b03583 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -20,9 +20,11 @@ #include "ArenaTeamMgr.h" #include "CellImpl.h" #include "CharacterCache.h" +#include "ChaseMovementGenerator.h" #include "Chat.h" #include "DatabaseEnv.h" #include "DisableMgr.h" +#include "FollowMovementGenerator.h" #include "GridNotifiers.h" #include "Group.h" #include "GroupMgr.h" @@ -43,7 +45,6 @@ #include "SpellAuras.h" #include "SpellHistory.h" #include "SpellMgr.h" -#include "TargetedMovementGenerator.h" #include "Transport.h" #include "Weather.h" #include "WeatherMgr.h" @@ -2164,11 +2165,7 @@ public: break; case CHASE_MOTION_TYPE: { - Unit* target = nullptr; - if (unit->GetTypeId() == TYPEID_PLAYER) - target = static_cast const*>(movementGenerator)->GetTarget(); - else - target = static_cast const*>(movementGenerator)->GetTarget(); + Unit* target = static_cast(movementGenerator)->GetTarget(); if (!target) handler->SendSysMessage(LANG_MOVEGENS_CHASE_NULL); @@ -2180,11 +2177,7 @@ public: } case FOLLOW_MOTION_TYPE: { - Unit* target = nullptr; - if (unit->GetTypeId() == TYPEID_PLAYER) - target = static_cast const*>(movementGenerator)->GetTarget(); - else - target = static_cast const*>(movementGenerator)->GetTarget(); + Unit* target = static_cast(movementGenerator)->GetTarget(); if (!target) handler->SendSysMessage(LANG_MOVEGENS_FOLLOW_NULL); diff --git a/src/server/scripts/Commands/cs_mmaps.cpp b/src/server/scripts/Commands/cs_mmaps.cpp index e33e17b9251..f5b35559460 100644 --- a/src/server/scripts/Commands/cs_mmaps.cpp +++ b/src/server/scripts/Commands/cs_mmaps.cpp @@ -34,7 +34,6 @@ #include "Player.h" #include "PointMovementGenerator.h" #include "RBAC.h" -#include "TargetedMovementGenerator.h" class mmaps_commandscript : public CommandScript { diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 02dc899c02a..1f1f64ad8ec 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -27,6 +27,7 @@ EndScriptData */ #include "CreatureAI.h" #include "CreatureGroups.h" #include "DatabaseEnv.h" +#include "FollowMovementGenerator.h" #include "GameTime.h" #include "Language.h" #include "Log.h" @@ -36,7 +37,6 @@ EndScriptData */ #include "Pet.h" #include "Player.h" #include "RBAC.h" -#include "TargetedMovementGenerator.h" // for HandleNpcUnFollowCommand #include "Transport.h" #include "World.h" #include "WorldSession.h" @@ -1309,7 +1309,7 @@ public: return false; } - FollowMovementGenerator const* mgen = static_cast const*>((creature->GetMotionMaster()->top())); + FollowMovementGenerator const* mgen = static_cast((creature->GetMotionMaster()->top())); if (mgen->GetTarget() != player) { -- cgit v1.2.3