61 lines
2.1 KiB
C#
61 lines
2.1 KiB
C#
using RimWorld;
|
||
using Verse;
|
||
|
||
namespace WulaFallenEmpire
|
||
{
|
||
public class CompAbilityEffect_EmergencyEnergyRestore : CompAbilityEffect
|
||
{
|
||
public new CompProperties_AbilityEmergencyEnergyRestore Props => (CompProperties_AbilityEmergencyEnergyRestore)props;
|
||
|
||
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
|
||
{
|
||
Log.Message($"[EmergencyEnergyRestore] Apply method called for {parent.pawn?.LabelShort}");
|
||
base.Apply(target, dest);
|
||
|
||
Pawn caster = parent.pawn;
|
||
if (caster == null) return;
|
||
|
||
// 检查是否是乌拉族
|
||
if (!IsWulaRace(caster))
|
||
{
|
||
Messages.Message("只有乌拉族才能使用紧急能量恢复", MessageTypeDefOf.RejectInput, false);
|
||
return;
|
||
}
|
||
|
||
// 检查是否倒地(如果需要的话)
|
||
if (Props.requireDowned && !caster.Downed)
|
||
{
|
||
Messages.Message("只能在倒地时使用紧急能量恢复", MessageTypeDefOf.RejectInput, false);
|
||
return;
|
||
}
|
||
|
||
// 添加Hediff
|
||
if (Props.hediffDef != null)
|
||
{
|
||
var hediff = HediffMaker.MakeHediff(Props.hediffDef, caster);
|
||
caster.health.AddHediff(hediff);
|
||
|
||
Messages.Message($"{caster.LabelShort}激活了紧急能量恢复协议", MessageTypeDefOf.PositiveEvent, false);
|
||
|
||
if (Prefs.DevMode)
|
||
{
|
||
Log.Message($"[EmergencyEnergyRestore] Applied to {caster.LabelShort}");
|
||
}
|
||
}
|
||
}
|
||
|
||
public override bool CanApplyOn(LocalTargetInfo target, LocalTargetInfo dest)
|
||
{
|
||
Log.Message($"[EmergencyEnergyRestore] CanApplyOn called. Pawn: {parent.pawn?.LabelShort}");
|
||
// 暂时强制返回true,以排除CanApplyOn的限制
|
||
return true;
|
||
}
|
||
|
||
private bool IsWulaRace(Pawn pawn)
|
||
{
|
||
if (pawn?.def == null) return false;
|
||
return pawn.def.defName == "WulaSpecies";
|
||
}
|
||
}
|
||
}
|