2024-05-21 19:10:17 +01:00
|
|
|
|
using SPT.Reflection.Patching;
|
2024-03-22 20:25:38 +00:00
|
|
|
|
using Comfort.Common;
|
2024-03-21 11:04:53 +00:00
|
|
|
|
using EFT;
|
|
|
|
|
using EFT.InventoryLogic;
|
|
|
|
|
using HarmonyLib;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
|
2024-05-21 19:10:17 +01:00
|
|
|
|
namespace SPT.SinglePlayer.Patches.MainMenu
|
2024-03-21 11:04:53 +00:00
|
|
|
|
{
|
2024-03-21 15:21:57 +00:00
|
|
|
|
public class ArmorDamageCounterPatch : ModulePatch
|
2024-03-21 11:04:53 +00:00
|
|
|
|
{
|
|
|
|
|
protected override MethodBase GetTargetMethod()
|
|
|
|
|
{
|
|
|
|
|
return AccessTools.Method(typeof(Player), nameof(Player.ApplyDamageInfo));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[PatchPostfix]
|
2024-11-02 13:40:25 +00:00
|
|
|
|
public static void PatchPostfix(DamageInfoStruct damageInfo)
|
2024-03-21 11:04:53 +00:00
|
|
|
|
{
|
2024-03-22 18:45:49 +00:00
|
|
|
|
if (damageInfo.Player == null || damageInfo.Player.iPlayer == null || !damageInfo.Player.iPlayer.IsYourPlayer)
|
2024-03-21 11:04:53 +00:00
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-22 20:25:38 +00:00
|
|
|
|
if (damageInfo.Weapon is Weapon)
|
2024-03-21 11:04:53 +00:00
|
|
|
|
{
|
2024-08-20 20:25:53 +01:00
|
|
|
|
if (!Singleton<ItemFactoryClass>.Instance.ItemTemplates.TryGetValue(damageInfo.SourceId, out var template))
|
2024-03-22 20:25:38 +00:00
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-23 12:48:51 +00:00
|
|
|
|
if (template is AmmoTemplate bulletTemplate)
|
2024-03-23 11:29:42 +00:00
|
|
|
|
{
|
|
|
|
|
float absorbedDamage = (float)Math.Round(bulletTemplate.Damage - damageInfo.Damage);
|
|
|
|
|
damageInfo.Player.iPlayer.Profile.EftStats.SessionCounters.AddFloat(absorbedDamage, SessionCounterTypesAbstractClass.CauseArmorDamage);
|
|
|
|
|
}
|
2024-03-21 11:04:53 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|