0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 09:50:43 -05:00
modules/project/SPT.SinglePlayer/Patches/MainMenu/ArmorDamageCounterPatch.cs
2024-08-20 20:25:53 +01:00

42 lines
1.3 KiB
C#

using SPT.Reflection.Patching;
using Comfort.Common;
using EFT;
using EFT.InventoryLogic;
using HarmonyLib;
using System;
using System.Reflection;
namespace SPT.SinglePlayer.Patches.MainMenu
{
public class ArmorDamageCounterPatch : ModulePatch
{
protected override MethodBase GetTargetMethod()
{
return AccessTools.Method(typeof(Player), nameof(Player.ApplyDamageInfo));
}
[PatchPostfix]
public static void PatchPostfix(DamageInfo damageInfo)
{
if (damageInfo.Player == null || damageInfo.Player.iPlayer == null || !damageInfo.Player.iPlayer.IsYourPlayer)
{
return;
}
if (damageInfo.Weapon is Weapon)
{
if (!Singleton<ItemFactoryClass>.Instance.ItemTemplates.TryGetValue(damageInfo.SourceId, out var template))
{
return;
}
if (template is AmmoTemplate bulletTemplate)
{
float absorbedDamage = (float)Math.Round(bulletTemplate.Damage - damageInfo.Damage);
damageInfo.Player.iPlayer.Profile.EftStats.SessionCounters.AddFloat(absorbedDamage, SessionCounterTypesAbstractClass.CauseArmorDamage);
}
}
}
}
}