Files
WulaFallenEmpireRW/Source/WulaFallenEmpire/ThingComp/WULA_DamageTransaction/Patch_Pawn_PreApplyDamage.cs
Tourswen c91c222801 1
2025-11-26 21:37:25 +08:00

42 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 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)
{
// 检查Pawn是否有伤害拦截组件
var interceptorComp = __instance.TryGetComp<CompDamageInterceptor>();
if (interceptorComp != null)
{
Log.Message($"[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)
{
// 记录实际承受的伤害
var interceptorComp = __instance.TryGetComp<CompDamageInterceptor>();
if (interceptorComp != null && totalDamageDealt == 0f)
{
Log.Message($"[DamageInterceptor] {__instance.LabelShort} 成功拦截所有伤害实际承受0点伤害");
}
}
}
}