0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 08:30:45 -05:00
modules/project/SPT.Custom/Patches/PmcTakesAgesToHealLimbsPatch.cs
Dev 24de63b705 Rename various patches for clarity
Disable `SetLocationIdOnRaidStartPatch` as it's not unnecessary
2024-07-11 11:18:00 +01:00

62 lines
2.0 KiB
C#

using SPT.Reflection.Patching;
using SPT.Reflection.Utils;
using EFT;
using System;
using System.Linq;
using System.Reflection;
namespace SPT.Custom.Patches
{
/// <summary>
/// On pmc heal action, remove all negative effects from limbs e.g. light/heavy bleeds
/// Solves PMCs spending multiple minutes healing every limb
/// </summary>
public class PmcTakesAgesToHealLimbsPatch : ModulePatch
{
private static Type _targetType;
private static readonly string methodName = "FirstAidApplied";
public PmcTakesAgesToHealLimbsPatch()
{
_targetType = PatchConstants.EftTypes.FirstOrDefault(IsTargetType);
}
protected override MethodBase GetTargetMethod()
{
return _targetType.GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public);
}
/// <summary>
/// BotFirstAidClass
/// </summary>
private bool IsTargetType(Type type)
{
if (type.GetMethod("GetHpPercent") != null && type.GetMethod("TryApplyToCurrentPart") != null)
{
return true;
}
return false;
}
[PatchPrefix]
private static bool PatchPrefix(BotOwner ___botOwner_0)
{
if (___botOwner_0.IsRole(WildSpawnType.pmcUSEC) || ___botOwner_0.IsRole(WildSpawnType.pmcBEAR))
{
var healthController = ___botOwner_0.GetPlayer.ActiveHealthController;
healthController.RemoveNegativeEffects(EBodyPart.Head);
healthController.RemoveNegativeEffects(EBodyPart.Chest);
healthController.RemoveNegativeEffects(EBodyPart.Stomach);
healthController.RemoveNegativeEffects(EBodyPart.LeftLeg);
healthController.RemoveNegativeEffects(EBodyPart.RightLeg);
healthController.RemoveNegativeEffects(EBodyPart.LeftArm);
healthController.RemoveNegativeEffects(EBodyPart.RightArm);
}
return true; // Do original
}
}
}