diff options
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 8 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 1 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 3 |
3 files changed, 11 insertions, 1 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index dce1015e154..7bd2e6357ad 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1440,6 +1440,14 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder e, Unit* invoker) l->push_back(target); break; } + case SMART_TARGET_OWNER_OR_SUMMONER: + { + if (!me) return NULL; + uint64 guid = me->GetCharmerOrOwnerGUID(); + if (Unit* owner = ObjectAccessor::GetUnit(*me, guid)) + l->push_back(owner); + break; + } case SMART_TARGET_POSITION: default: return NULL; diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 1f94b1f9976..cf2a4d8c340 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -278,6 +278,7 @@ bool SmartAIMgr::IsTargetValid(SmartScriptHolder e) case SMART_TARGET_CLOSEST_GAMEOBJECT: case SMART_TARGET_CLOSEST_PLAYER: case SMART_TARGET_ACTION_INVOKER_VEHICLE: + case SMART_TARGET_OWNER_OR_SUMMONER: break; default: sLog.outErrorDb("SmartAIMgr: Not handled target_type(%u), Entry %d SourceType %u Event %u Action %u, skipped.", e.GetTargetType(), e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType()); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 909eeb4ba11..eade255a1f5 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -830,7 +830,8 @@ enum SMARTAI_TARGETS SMART_TARGET_CLOSEST_GAMEOBJECT = 20, // entry(0any) SMART_TARGET_CLOSEST_PLAYER = 21, // none SMART_TARGET_ACTION_INVOKER_VEHICLE = 22, // Unit's vehicle who caused this Event to occur - SMART_TARGET_END = 23, + SMART_TARGET_OWNER_OR_SUMMONER = 23, // Unit's owner or summoner + SMART_TARGET_END = 24, }; struct SmartTarget |