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:
hondacrx
2021-06-22 20:55:38 -04:00
parent 1c9eeb403a
commit be2f4087b7
4 changed files with 14 additions and 7 deletions
+1 -1
View File
@@ -426,7 +426,7 @@ namespace Framework.Constants
ClosestFriendly = 26, // maxDist, playerOnly ClosestFriendly = 26, // maxDist, playerOnly
LootRecipients = 27, // all players that have tagged this creature (for kill credit) LootRecipients = 27, // all players that have tagged this creature (for kill credit)
Farthest = 28, // maxDist, playerOnly, isInLos Farthest = 28, // maxDist, playerOnly, isInLos
VehicleAccessory = 29, // seat number (vehicle can target it's own accessory) VehiclePassenger = 29, // seatMask (0 - all seats)
SpellTarget = 30, SpellTarget = 30,
End = 31 End = 31
@@ -447,7 +447,7 @@ namespace Game.AI
case SmartTargets.Stored: case SmartTargets.Stored:
case SmartTargets.LootRecipients: case SmartTargets.LootRecipients:
case SmartTargets.Farthest: case SmartTargets.Farthest:
case SmartTargets.VehicleAccessory: case SmartTargets.VehiclePassenger:
case SmartTargets.SpellTarget: case SmartTargets.SpellTarget:
break; break;
default: default:
@@ -3130,7 +3130,7 @@ namespace Game.AI
} }
public struct Vehicle public struct Vehicle
{ {
public uint seat; public uint seatMask;
} }
public struct Raw public struct Raw
{ {
+10 -4
View File
@@ -2901,13 +2901,19 @@ namespace Game.AI
} }
break; break;
} }
case SmartTargets.VehicleAccessory: case SmartTargets.VehiclePassenger:
{ {
if (_me && _me.IsVehicle()) if (_me && _me.IsVehicle())
{ {
Unit target = _me.GetVehicleKit().GetPassenger((sbyte)e.Target.vehicle.seat); foreach (var pair in _me.GetVehicleKit().Seats)
if (target) {
targets.Add(target); 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; break;
} }
@@ -0,0 +1 @@
UPDATE `smart_scripts` SET `target_param1`=(1 << `target_param1`) WHERE `target_type`=29;