diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2018-04-06 18:09:55 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-04-06 18:09:55 +0200 |
| commit | 2a84562dc85516f432bb1e5de9add23c28b26ce4 (patch) | |
| tree | 2b7414c164370c5144586beb76946db41061fad7 /src/server/scripts/Commands | |
| parent | 9f03743d2d803cba553b2f95a87b106bf5e3f672 (diff) | |
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.
Diffstat (limited to 'src/server/scripts/Commands')
| -rw-r--r-- | src/server/scripts/Commands/cs_misc.cpp | 15 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_mmaps.cpp | 1 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_npc.cpp | 4 |
3 files changed, 6 insertions, 14 deletions
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<ChaseMovementGenerator<Player> const*>(movementGenerator)->GetTarget(); - else - target = static_cast<ChaseMovementGenerator<Creature> const*>(movementGenerator)->GetTarget(); + Unit* target = static_cast<ChaseMovementGenerator const*>(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<FollowMovementGenerator<Player> const*>(movementGenerator)->GetTarget(); - else - target = static_cast<FollowMovementGenerator<Creature> const*>(movementGenerator)->GetTarget(); + Unit* target = static_cast<FollowMovementGenerator const*>(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<Creature> const* mgen = static_cast<FollowMovementGenerator<Creature> const*>((creature->GetMotionMaster()->top())); + FollowMovementGenerator const* mgen = static_cast<FollowMovementGenerator const*>((creature->GetMotionMaster()->top())); if (mgen->GetTarget() != player) { |
