using System.Reflection; using NitroxClient.GameLogic; using NitroxClient.GameLogic.PlayerLogic; using NitroxModel.DataStructures; using NitroxModel.Helper; namespace NitroxPatcher.Patches.Dynamic; public sealed partial class Vehicle_OnKill_Patch : NitroxPatch, IDynamicPatch { private static readonly MethodInfo TARGET_METHOD = Reflect.Method((Vehicle t) => t.OnKill()); public static void Prefix(Vehicle __instance) { if (__instance.TryGetIdOrWarn(out NitroxId id) && Resolve().HasExclusiveLock(id)) { Resolve().StopSimulatingEntity(id); Resolve().BroadcastDestroyedVehicle(id); } foreach (RemotePlayerIdentifier identifier in __instance.GetComponentsInChildren(true)) { identifier.RemotePlayer.ResetStates(); } } }