diff options
author | Subv2112 <s.v.h21@hotmail.com> | 2011-12-27 20:25:50 -0500 |
---|---|---|
committer | Subv2112 <s.v.h21@hotmail.com> | 2011-12-27 20:25:50 -0500 |
commit | 645a10d76f5ba837edf56cdb9258c328ca0b124c (patch) | |
tree | f9b595acfb4c2454d3f7ad529c5c08a4ff36c1cf | |
parent | c145c67331df81d8840eae65ed53780e797f1347 (diff) |
Core/SAI: Added support for SMART_TARGET_CREATURE_RANGE, SMART_TARGET_CREATURE_GUID, SMART_TARGET_CREATURE_DISTANCE, SMART_TARGET_GAMEOBJECT_RANGE, SMART_TARGET_GAMEOBJECT_GUID, SMART_TARGET_GAMEOBJECT_DISTANCE, SMART_TARGET_CLOSEST_CREATURE and SMART_TARGET_CLOSEST_GAMEOBJECT in SMART_ACTION_MOVE_TO_POS
Signed-off-by: Subv2112 <s.v.h21@hotmail.com>
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 34d465a5e7e..e3d5fd952a1 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1321,9 +1321,23 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!IsSmart()) return; + Object* target = NULL; + + if (e.GetTargetType() == SMART_TARGET_CREATURE_RANGE || e.GetTargetType() == SMART_TARGET_CREATURE_GUID || e.GetTargetType() == SMART_TARGET_CREATURE_DISTANCE || e.GetTargetType() == SMART_TARGET_GAMEOBJECT_RANGE || e.GetTargetType() == SMART_TARGET_GAMEOBJECT_GUID || e.GetTargetType() == SMART_TARGET_GAMEOBJECT_DISTANCE || e.GetTargetType() == SMART_TARGET_CLOSEST_CREATURE || e.GetTargetType() == SMART_TARGET_CLOSEST_GAMEOBJECT) + { + ObjectList* targets = GetTargets(e, unit); + if (!targets) + return; + + target = *objs->front(); + } + bool run = e.action.setRun.run ? true : false; CAST_AI(SmartAI, me->AI())->SetRun(run); - me->GetMotionMaster()->MovePoint(0, e.target.x, e.target.y, e.target.z); + if(!target) + me->GetMotionMaster()->MovePoint(0, e.target.x, e.target.y, e.target.z); + else + me->GetMotionMaster()->MovePoint(0, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()); break; } case SMART_ACTION_RESPAWN_TARGET: |