From 07b1101a6328884464ed98d438d66956045b74bd Mon Sep 17 00:00:00 2001 From: Subv2112 Date: Sat, 21 Jan 2012 18:54:05 -0500 Subject: Core/SAI: Run mode should be disabled by default in creatures with SAI Signed-off-by: Subv2112 --- src/server/game/AI/SmartScripts/SmartAI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 1a26e241c5e..01fb936b847 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -46,7 +46,7 @@ SmartAI::SmartAI(Creature* c) : CreatureAI(c) // spawn in run mode me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING); - mRun = true; + mRun = false; me->GetPosition(&mLastOOCPos); -- cgit v1.2.3 From c37afafbbf67c4984d7d966c7dbf44c080a1f9ac Mon Sep 17 00:00:00 2001 From: Vincent-Core Date: Sun, 22 Jan 2012 01:49:53 +0100 Subject: Core/SmartAI: Fix target type SMART_TARGET_INVOKER_PARTY --- src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/server') diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 15423c7aff2..ce357393515 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -282,6 +282,7 @@ bool SmartAIMgr::IsTargetValid(SmartScriptHolder const& e) case SMART_TARGET_HOSTILE_RANDOM: case SMART_TARGET_HOSTILE_RANDOM_NOT_TOP: case SMART_TARGET_ACTION_INVOKER: + case SMART_TARGET_INVOKER_PARTY: case SMART_TARGET_POSITION: case SMART_TARGET_NONE: case SMART_TARGET_ACTION_INVOKER_VEHICLE: -- cgit v1.2.3 From a3f595ee10d02dda89298fd4193133d77fbf250e Mon Sep 17 00:00:00 2001 From: Subv2112 Date: Sun, 22 Jan 2012 07:54:32 -0500 Subject: Core/SAI: Implemented SMART_ACTION_SEND_TARGET_TO_TARGET, it can be used to send targets previously stored with SMART_ACTION_STORE_TARGET, to another npc, the other npc can then access them as if it was its own stored list Signed-off-by: Subv2112 --- src/server/game/AI/SmartScripts/SmartScript.cpp | 32 ++++++++++++++++++++++++ src/server/game/AI/SmartScripts/SmartScriptMgr.h | 8 +++++- 2 files changed, 39 insertions(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 4328eafc962..1224be0e1ae 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1794,6 +1794,38 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u delete targets; break; } + case SMART_ACTION_SEND_TARGET_TO_TARGET: + { + ObjectList* targets = GetTargets(e, unit); + + if (!targets) + return; + + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr) + { + bool smart = false; + SmartAI* ai = NULL; + if (IsGameObject(*itr)) + { + smart = IsSmartGO((*itr)->ToGameObject()); + ai = CAST_AI(SmartAI, (*itr)->ToGameObject()->AI()); + } + + if (IsCreature(*itr)) + { + smart = IsSmart((*itr)->ToCreature()); + ai = CAST_AI(SmartAI, (*itr)->ToCreature()->AI()); + } + + if (smart && ai) + ai->GetScript()->StoreTargetList(GetTargetList(e.action.sendTargetToTarget.id), e.action.sendTargetToTarget.id); + + break; + } + + delete targets; + break; + } case SMART_ACTION_SEND_GOSSIP_MENU: { if (!GetBaseObject()) diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 6b99a7dc5be..e08fe331d3d 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -473,8 +473,9 @@ enum SMART_ACTION SMART_ACTION_JUMP_TO_POS = 97, // speedXY, speedZ, targetX, targetY, targetZ SMART_ACTION_SEND_GOSSIP_MENU = 98, // menuId, optionId SMART_ACTION_GO_SET_LOOT_STATE = 99, // state + SMART_ACTION_SEND_TARGET_TO_TARGET = 100, // id - SMART_ACTION_END = 100, + SMART_ACTION_END = 101, }; struct SmartAction @@ -883,6 +884,11 @@ struct SmartAction uint32 state; } setGoLootState; + struct + { + uint32 id; + } sendTargetToTarget; + struct { uint32 param1; -- cgit v1.2.3