Core/SAI: Extended SMART_TARGET_VEHICLE_PASSENGER to allow specifying seat mask instead of single seat index (can now target all passengers)
Port From (https://github.com/TrinityCore/TrinityCore/commit/172df39350391e4fa2e40515d288e7e4e6b9cc91)
This commit is contained in:
@@ -426,7 +426,7 @@ namespace Framework.Constants
|
||||
ClosestFriendly = 26, // maxDist, playerOnly
|
||||
LootRecipients = 27, // all players that have tagged this creature (for kill credit)
|
||||
Farthest = 28, // maxDist, playerOnly, isInLos
|
||||
VehicleAccessory = 29, // seat number (vehicle can target it's own accessory)
|
||||
VehiclePassenger = 29, // seatMask (0 - all seats)
|
||||
SpellTarget = 30,
|
||||
|
||||
End = 31
|
||||
|
||||
@@ -447,7 +447,7 @@ namespace Game.AI
|
||||
case SmartTargets.Stored:
|
||||
case SmartTargets.LootRecipients:
|
||||
case SmartTargets.Farthest:
|
||||
case SmartTargets.VehicleAccessory:
|
||||
case SmartTargets.VehiclePassenger:
|
||||
case SmartTargets.SpellTarget:
|
||||
break;
|
||||
default:
|
||||
@@ -3130,7 +3130,7 @@ namespace Game.AI
|
||||
}
|
||||
public struct Vehicle
|
||||
{
|
||||
public uint seat;
|
||||
public uint seatMask;
|
||||
}
|
||||
public struct Raw
|
||||
{
|
||||
|
||||
@@ -2901,13 +2901,19 @@ namespace Game.AI
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SmartTargets.VehicleAccessory:
|
||||
case SmartTargets.VehiclePassenger:
|
||||
{
|
||||
if (_me && _me.IsVehicle())
|
||||
{
|
||||
Unit target = _me.GetVehicleKit().GetPassenger((sbyte)e.Target.vehicle.seat);
|
||||
if (target)
|
||||
targets.Add(target);
|
||||
foreach (var pair in _me.GetVehicleKit().Seats)
|
||||
{
|
||||
if (e.Target.vehicle.seatMask == 0 || (e.Target.vehicle.seatMask & (1 << pair.Key)) != 0)
|
||||
{
|
||||
Unit u = Global.ObjAccessor.GetUnit(_me, pair.Value.Passenger.Guid);
|
||||
if (u != null)
|
||||
targets.Add(u);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
UPDATE `smart_scripts` SET `target_param1`=(1 << `target_param1`) WHERE `target_type`=29;
|
||||
Reference in New Issue
Block a user