This commit is contained in:
2025-08-26 18:33:49 +08:00
parent c3161287d3
commit a897c2e44c
12 changed files with 11864 additions and 80 deletions

View File

@@ -0,0 +1,73 @@
using Verse;
using System.Text;
using RimWorld;
using UnityEngine;
namespace WulaFallenEmpire
{
public class Hediff_DamageShield : HediffWithComps
{
// 伤害抵挡层数
// 直接将 severityInt 作为 ShieldCharges这样外部对 severity 的修改会直接影响 ShieldCharges
public int ShieldCharges
{
get => (int)severityInt;
set => severityInt = value;
}
public override string LabelInBrackets
{
get
{
if (ShieldCharges > 0)
{
return "层数: " + ShieldCharges;
}
return null;
}
}
public override string TipStringExtra
{
get
{
StringBuilder sb = new StringBuilder();
sb.Append(base.TipStringExtra);
if (ShieldCharges > 0)
{
sb.AppendLine(" - 每层抵挡一次伤害。当前层数: " + ShieldCharges);
}
else
{
sb.AppendLine(" - 没有可用的抵挡层数。");
}
return sb.ToString();
}
}
public override void ExposeData()
{
base.ExposeData();
// severityInt 会自动保存,所以不需要额外处理 ShieldCharges
}
public override void PostAdd(DamageInfo? dinfo)
{
base.PostAdd(dinfo);
// 初始层数由 XML 中的 initialSeverity 控制
// 如果需要一个固定的初始值,可以在这里设置
// 例如:如果 hediffDef.initialSeverity 设为 0这里可以强制给一个默认值
// 如果 initialSeverity 在 XML 中已经设置为 10这里就不需要额外处理
}
public override void Tick()
{
base.Tick();
// 如果层数归零,移除 Hediff
if (ShieldCharges <= 0)
{
pawn.health.RemoveHediff(this);
}
}
}
}