修复 WorkGiver_FeedWulaPatient 中的空引用问题,增强代码健壮性

This commit is contained in:
2026-03-18 13:40:07 +08:00
parent 3094c31f33
commit f64899530f
3 changed files with 18 additions and 3 deletions

View File

@@ -16,7 +16,17 @@ namespace WulaFallenEmpire
public override IEnumerable<Thing> PotentialWorkThingsGlobal(Pawn pawn) public override IEnumerable<Thing> PotentialWorkThingsGlobal(Pawn pawn)
{ {
return pawn.Map.mapPawns.AllPawns.Where(p => p.needs.TryGetNeed<Need_WulaEnergy>() != null && p.InBed()); if (pawn?.Map?.mapPawns?.AllPawns == null)
{
return Enumerable.Empty<Thing>();
}
return pawn.Map.mapPawns.AllPawns.Where(p =>
p != null &&
p.needs != null &&
p.health != null &&
p.needs.TryGetNeed<Need_WulaEnergy>() != null &&
p.InBed());
} }
public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false)
@@ -27,14 +37,19 @@ namespace WulaFallenEmpire
} }
// 如果病患正在充能,则不需要喂食 // 如果病患正在充能,则不需要喂食
if (patient.health?.hediffSet == null)
{
return false;
}
if (patient.health.hediffSet.HasHediff(DefDatabase<HediffDef>.GetNamed("WULA_ChargingHediff"))) if (patient.health.hediffSet.HasHediff(DefDatabase<HediffDef>.GetNamed("WULA_ChargingHediff")))
{ {
return false; return false;
} }
Need_WulaEnergy energyNeed = patient.needs.TryGetNeed<Need_WulaEnergy>(); Need_WulaEnergy energyNeed = patient.needs?.TryGetNeed<Need_WulaEnergy>();
var extension = def.GetModExtension<WorkGiverDefExtension_FeedWula>(); var extension = def.GetModExtension<WorkGiverDefExtension_FeedWula>();
if (energyNeed == null || energyNeed.CurLevelPercentage >= extension.feedThreshold) if (energyNeed == null || extension == null || energyNeed.CurLevelPercentage >= extension.feedThreshold)
{ {
return false; return false;
} }