From 0d8aa2e8b124ddbc3c7e3fc5c2f807b49e6f981d Mon Sep 17 00:00:00 2001 From: Nefertumm Date: Sat, 3 Apr 2021 15:25:36 -0300 Subject: [PATCH] feat(Core/SmartScripts) Implement SMART_TARGET_VEHICLE_PASSENGER (#3510) --- src/server/game/AI/SmartScripts/SmartScript.cpp | 11 +++++++++++ src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 2 +- src/server/game/AI/SmartScripts/SmartScriptMgr.h | 7 ++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 3a3d58b7b..12d965b82 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -3855,6 +3855,17 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /* delete units; break; } + case SMART_TARGET_VEHICLE_PASSENGER: + { + if (me && me->IsVehicle()) + { + if (Unit* target = me->GetVehicleKit()->GetPassenger(e.target.vehicle.seat)) + { + l->push_back(target); + } + } + break; + } 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 d60bc7c95..fe6eb1248 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -402,7 +402,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) e.entryOrGuid, e.event_id, e.GetTargetType()); return false; } - if (e.target.type == SMART_TARGET_LOOT_RECIPIENTS || e.target.type == SMART_TARGET_VEHICLE_PASSENGER) + if (e.target.type == SMART_TARGET_LOOT_RECIPIENTS) { sLog->outErrorDb("SmartAIMgr: EntryOrGuid %d using event(%u) has a target type that is not yet supported on AzerothCore (%u), skipped.", e.entryOrGuid, e.event_id, e.GetTargetType()); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 8528e6946..dc8cf24ac 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1307,7 +1307,7 @@ enum SMARTAI_TARGETS SMART_TARGET_CLOSEST_FRIENDLY = 26, // maxDist, playerOnly SMART_TARGET_LOOT_RECIPIENTS = 27, // TODO: NOT SUPPORTED YET SMART_TARGET_FARTHEST = 28, // maxDist, playerOnly, isInLos - SMART_TARGET_VEHICLE_PASSENGER = 29, // TODO: NOT SUPPORTED YET + SMART_TARGET_VEHICLE_PASSENGER = 29, // seat number (vehicle can target it's own accessory) SMART_TARGET_TC_END = 30, // placeholder @@ -1472,6 +1472,11 @@ struct SmartTarget uint32 param3; uint32 param4; } raw; + + struct + { + uint32 seat; + } vehicle; }; };