From 8a5b96349bb8189ba2a8705e469ad64585f080ef Mon Sep 17 00:00:00 2001 From: IntelligentQuantum Date: Mon, 3 Jan 2022 04:24:27 +0330 Subject: [PATCH] feat(Core/SmartScripts): SMART_TARGET_LOOT_RECIPIENTS (#9967) --- .../game/AI/SmartScripts/SmartScript.cpp | 23 +++++++++++++++++++ .../game/AI/SmartScripts/SmartScriptMgr.cpp | 1 + .../game/AI/SmartScripts/SmartScriptMgr.h | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 093e0d89e..d974a465c 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -3835,6 +3835,29 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /* } break; } + case SMART_TARGET_LOOT_RECIPIENTS: + { + if (me) + { + if (Group* lootGroup = me->GetLootRecipientGroup()) + { + for (GroupReference* it = lootGroup->GetFirstMember(); it != nullptr; it = it->next()) + { + if (Player* recipient = it->GetSource()) + { + l->push_back(recipient); + } + } + } + else + { + if (Player* recipient = me->GetLootRecipient()) + { + l->push_back(recipient); + } + } + } + } case SMART_TARGET_NONE: case SMART_TARGET_POSITION: default: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index f2505b61a..d0f3e9686 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -361,6 +361,7 @@ bool SmartAIMgr::IsTargetValid(SmartScriptHolder const& e) case SMART_TARGET_PLAYER_WITH_AURA: case SMART_TARGET_RANDOM_POINT: case SMART_TARGET_ROLE_SELECTION: + case SMART_TARGET_LOOT_RECIPIENTS: break; default: LOG_ERROR("sql.sql", "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 c672ceb39..3bf320fed 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1334,7 +1334,7 @@ enum SMARTAI_TARGETS SMART_TARGET_THREAT_LIST = 24, // All units on creature's threat list, maxdist, playerOnly SMART_TARGET_CLOSEST_ENEMY = 25, // maxDist, playerOnly SMART_TARGET_CLOSEST_FRIENDLY = 26, // maxDist, playerOnly - SMART_TARGET_LOOT_RECIPIENTS = 27, // TODO: NOT SUPPORTED YET + SMART_TARGET_LOOT_RECIPIENTS = 27, // all players that have tagged this creature (for kill credit) SMART_TARGET_FARTHEST = 28, // maxDist, playerOnly, isInLos SMART_TARGET_VEHICLE_PASSENGER = 29, // seat number (vehicle can target it's own accessory)