Files
ArachnaeSwarm/Source/ArachnaeSwarm/Hediffs/HediffComp_Temperature.cs
2025-09-17 12:54:07 +08:00

53 lines
1.6 KiB
C#

using RimWorld;
using UnityEngine;
using Verse;
namespace ArachnaeSwarm
{
public class HediffComp_Temperature : HediffComp
{
public HediffCompProperties_Temperature Props => (HediffCompProperties_Temperature)props;
public override void CompPostTick(ref float severityAdjustment)
{
if (!parent.pawn.IsHashIntervalTick(360)) // 每 60 ticks 检查一次
{
return;
}
float ambientTemperature = parent.pawn.AmbientTemperature;
float minComfortable = Props.minComfortableTemperature;
float maxComfortable = Props.maxComfortableTemperature;
if (ambientTemperature >= minComfortable && ambientTemperature <= maxComfortable)
{
// 在舒适温度范围内
if (Props.severityChangeIn != 0f)
{
severityAdjustment += Props.severityChangeIn;
}
}
else
{
// 在舒适温度范围外
if (Props.severityChangeOut != 0f)
{
severityAdjustment += Props.severityChangeOut;
}
}
}
}
public class HediffCompProperties_Temperature : HediffCompProperties
{
public float minComfortableTemperature = 16f;
public float maxComfortableTemperature = 26f;
public float severityChangeIn = 0f;
public float severityChangeOut = 0f;
public HediffCompProperties_Temperature()
{
compClass = typeof(HediffComp_Temperature);
}
}
}