Files
WulaFallenEmpireRW/Source/WulaFallenEmpire/HarmonyPatches/Patch_Pawn_PreApplyDamage.cs
2026-01-19 17:35:33 +08:00

46 lines
1.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using HarmonyLib;
using RimWorld;
using Verse;
namespace WulaFallenEmpire
{
[HarmonyPatch(typeof(Pawn), "PreApplyDamage")]
public static class Patch_Pawn_PreApplyDamage
{
[HarmonyPrefix]
public static bool Prefix(Pawn __instance, ref DamageInfo dinfo)
{
var interceptorComp = __instance.TryGetComp<CompDamageInterceptor>();
if (interceptorComp != null)
{
WulaLog.Debug($"[DamageInterceptor] {__instance.LabelShort} 即将受到 {dinfo.Amount} 点伤害,拦截组件激活");
return interceptorComp.PreApplyDamage(ref dinfo);
}
return true;
}
}
[HarmonyPatch(typeof(Pawn), "PostApplyDamage")]
public static class Patch_Pawn_PostApplyDamage
{
[HarmonyPostfix]
public static void Postfix(Pawn __instance, DamageInfo dinfo, float totalDamageDealt)
{
try
{
var interceptorComp = __instance.TryGetComp<CompDamageInterceptor>();
if (interceptorComp != null && totalDamageDealt == 0f)
{
WulaLog.Debug($"[DamageInterceptor] {__instance.LabelShort} 成功拦截所有伤害实际承受0点伤害");
}
}
catch (Exception ex)
{
WulaLog.Debug($"[DamageInterceptor] Error in PostApplyDamage patch: {ex}");
}
}
}
}