Core/SAI: Extended SMART_TARGET_VEHICLE_PASSENGER to allow specifying seat mask instead of single seat index (can now target all passengers) (#21245)

(cherry picked from commit 891bca934e)
This commit is contained in:
Moein
2018-01-16 23:58:41 +03:30
committed by Shauren
parent 6ba82b56dc
commit 172df39350
4 changed files with 9 additions and 8 deletions

View File

@@ -0,0 +1 @@
UPDATE `smart_scripts` SET `target_param1`=(1 << `target_param1`) WHERE `target_type`=29;

View File

@@ -2851,13 +2851,13 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e,
}
break;
}
case SMART_TARGET_VEHICLE_ACCESSORY:
case SMART_TARGET_VEHICLE_PASSENGER:
{
if (me && me->IsVehicle())
{
if (Unit* target = me->GetVehicleKit()->GetPassenger(e.target.vehicle.seat))
targets.push_back(target);
}
for (auto seatItr = me->GetVehicleKit()->Seats.begin(); seatItr != me->GetVehicleKit()->Seats.end(); ++seatItr)
if (!e.target.vehicle.seatMask || (e.target.vehicle.seatMask & (1 << seatItr->first)))
if (Unit* u = ObjectAccessor::GetUnit(*me, seatItr->second.Passenger.Guid))
targets.push_back(u);
break;
}
case SMART_TARGET_POSITION:

View File

@@ -526,7 +526,7 @@ bool SmartAIMgr::IsTargetValid(SmartScriptHolder const& e)
case SMART_TARGET_STORED:
case SMART_TARGET_LOOT_RECIPIENTS:
case SMART_TARGET_FARTHEST:
case SMART_TARGET_VEHICLE_ACCESSORY:
case SMART_TARGET_VEHICLE_PASSENGER:
break;
default:
TC_LOG_ERROR("sql.sql", "SmartAIMgr: Not handled target_type(%u), Entry " SI64FMTD " SourceType %u Event %u Action %u, skipped.", e.GetTargetType(), e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());

View File

@@ -1259,7 +1259,7 @@ enum SMARTAI_TARGETS
SMART_TARGET_CLOSEST_FRIENDLY = 26, // maxDist, playerOnly
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_ACCESSORY = 29, // seat number (vehicle can target it's own accessory)
SMART_TARGET_VEHICLE_PASSENGER = 29, // seatMask (0 - all seats)
SMART_TARGET_END = 30
};
@@ -1387,7 +1387,7 @@ struct SmartTarget
struct
{
uint32 seat;
uint32 seatMask;
} vehicle;
};
};