mirror of
https://github.com/sp-tarkov/modules.git
synced 2025-02-13 09:50:43 -05:00
42 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|