修复 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)
{
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)
@@ -27,14 +37,19 @@ namespace WulaFallenEmpire
}
// 如果病患正在充能,则不需要喂食
if (patient.health?.hediffSet == null)
{
return false;
}
if (patient.health.hediffSet.HasHediff(DefDatabase<HediffDef>.GetNamed("WULA_ChargingHediff")))
{
return false;
}
Need_WulaEnergy energyNeed = patient.needs.TryGetNeed<Need_WulaEnergy>();
Need_WulaEnergy energyNeed = patient.needs?.TryGetNeed<Need_WulaEnergy>();
var extension = def.GetModExtension<WorkGiverDefExtension_FeedWula>();
if (energyNeed == null || energyNeed.CurLevelPercentage >= extension.feedThreshold)
if (energyNeed == null || extension == null || energyNeed.CurLevelPercentage >= extension.feedThreshold)
{
return false;
}