diff options
author | Rushor <Rushor@users.noreply.github.com> | 2017-01-21 22:10:07 +0100 |
---|---|---|
committer | Keader <keader.android@gmail.com> | 2017-01-21 19:10:07 -0200 |
commit | 60d1c0e20d3f8f32de81bff047531b927e586a97 (patch) | |
tree | 8bca03c3e8a3dc6fb77f38311dca959ebf195f95 /src | |
parent | 65b6202bd81856ab836af7bc6acf96f12f9e81aa (diff) |
Game/AI: Implement ContactDistance for ACTION_MOVE_TO_POS (#18720)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 8 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 3 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 8ac7306e2b5..4d23ba14a5b 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1522,7 +1522,13 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u me->GetMotionMaster()->MovePoint(e.action.MoveToPos.pointId, dest.x, dest.y, dest.z, e.action.MoveToPos.disablePathfinding == 0); } else - me->GetMotionMaster()->MovePoint(e.action.MoveToPos.pointId, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), e.action.MoveToPos.disablePathfinding == 0); + { + float x, y, z; + target->GetPosition(x, y, z); + if (e.action.MoveToPos.ContactDistance > 0) + target->GetContactPoint(me, x, y, z, e.action.MoveToPos.ContactDistance); + me->GetMotionMaster()->MovePoint(e.action.MoveToPos.pointId, x, y, z, e.action.MoveToPos.disablePathfinding == 0); + } break; } case SMART_ACTION_RESPAWN_TARGET: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index aa80d261e0f..44201191f50 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -508,7 +508,7 @@ enum SMART_ACTION SMART_ACTION_SET_ORIENTATION = 66, // SMART_ACTION_CREATE_TIMED_EVENT = 67, // id, InitialMin, InitialMax, RepeatMin(only if it repeats), RepeatMax(only if it repeats), chance SMART_ACTION_PLAYMOVIE = 68, // entry - SMART_ACTION_MOVE_TO_POS = 69, // PointId, transport, disablePathfinding + SMART_ACTION_MOVE_TO_POS = 69, // PointId, transport, disablePathfinding, ContactDistance SMART_ACTION_RESPAWN_TARGET = 70, // SMART_ACTION_EQUIP = 71, // entry, slotmask slot1, slot2, slot3 , only slots with mask set will be sent to client, bits are 1, 2, 4, leaving mask 0 is defaulted to mask 7 (send all), slots1-3 are only used if no entry is set SMART_ACTION_CLOSE_GOSSIP = 72, // none @@ -980,6 +980,7 @@ struct SmartAction uint32 pointId; uint32 transport; uint32 disablePathfinding; + uint32 ContactDistance; } MoveToPos; struct |