This commit is contained in:
Tourswen
2025-12-07 03:07:50 +08:00
parent 8a158d1ced
commit f1956d5961
43 changed files with 1079 additions and 426 deletions

View File

@@ -10,16 +10,61 @@ namespace WulaFallenEmpire
protected override bool Satisfied(Pawn pawn)
{
if (pawn == null || pawn.Dead || pawn.Downed)
return false;
try
{
if (pawn == null || pawn.Dead || pawn.Downed)
return false;
// 检查是否有自主机械组件
var comp = pawn.GetComp<CompAutonomousMech>();
if (comp == null)
return false;
// 检查是否有自主机械组件
var comp = pawn.GetComp<CompAutonomousMech>();
if (comp == null)
return false;
// 检查当前工作模式是否匹配要求
return comp.CurrentWorkMode == requiredMode;
// 检查当前工作模式是否匹配要求
if (comp.CurrentWorkMode != requiredMode)
return false;
// 额外的安全检查确保pawn有工作设置
if (pawn.workSettings == null)
{
Log.Warning($"[WULA] {pawn.LabelShort} has no workSettings in ThinkNode_ConditionalAutonomousWorkMode");
return false;
}
// 检查是否启用了工作
if (!pawn.workSettings.EverWork)
{
Log.Warning($"[WULA] {pawn.LabelShort} has EverWork=false in ThinkNode_ConditionalAutonomousWorkMode");
return false;
}
// 检查是否有工作给予器
var workGivers = pawn.workSettings.WorkGiversInOrderNormal;
if (workGivers == null || workGivers.Count == 0)
{
Log.Warning($"[WULA] {pawn.LabelShort} has no work givers in ThinkNode_ConditionalAutonomousWorkMode");
return false;
}
// 检查是否为机械体且具有机械体能力
if (pawn.RaceProps.IsMechanoid)
{
// 检查是否有操纵能力
var manipulation = pawn.health?.capacities?.GetLevel(PawnCapacityDefOf.Manipulation);
if (manipulation < 0.1f)
{
Log.Warning($"[WULA] {pawn.LabelShort} has insufficient manipulation capacity: {manipulation}");
return false;
}
}
return true;
}
catch (System.Exception ex)
{
Log.Error($"[WULA] Exception in ThinkNode_ConditionalAutonomousWorkMode.Satisfied for pawn {pawn?.LabelShort}: {ex}");
return false;
}
}
}
}