53 lines
1.6 KiB
C#
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);
|
|
}
|
|
}
|
|
} |