aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp8
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.cpp1
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h3
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