diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll index 92ae8107..a5828526 100644 Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/1.6/Assemblies/WulaFallenEmpire.dll differ diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.pdb b/1.6/1.6/Assemblies/WulaFallenEmpire.pdb index 87f5850e..6b00e5e9 100644 Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.pdb and b/1.6/1.6/Assemblies/WulaFallenEmpire.pdb differ diff --git a/Source/WulaFallenEmpire/Pawn/WULA_Energy/WorkGiver_FeedWulaPatient.cs b/Source/WulaFallenEmpire/Pawn/WULA_Energy/WorkGiver_FeedWulaPatient.cs index d764eafe..964df22c 100644 --- a/Source/WulaFallenEmpire/Pawn/WULA_Energy/WorkGiver_FeedWulaPatient.cs +++ b/Source/WulaFallenEmpire/Pawn/WULA_Energy/WorkGiver_FeedWulaPatient.cs @@ -16,7 +16,17 @@ namespace WulaFallenEmpire public override IEnumerable PotentialWorkThingsGlobal(Pawn pawn) { - return pawn.Map.mapPawns.AllPawns.Where(p => p.needs.TryGetNeed() != null && p.InBed()); + if (pawn?.Map?.mapPawns?.AllPawns == null) + { + return Enumerable.Empty(); + } + + return pawn.Map.mapPawns.AllPawns.Where(p => + p != null && + p.needs != null && + p.health != null && + p.needs.TryGetNeed() != 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.GetNamed("WULA_ChargingHediff"))) { return false; } - Need_WulaEnergy energyNeed = patient.needs.TryGetNeed(); + Need_WulaEnergy energyNeed = patient.needs?.TryGetNeed(); var extension = def.GetModExtension(); - if (energyNeed == null || energyNeed.CurLevelPercentage >= extension.feedThreshold) + if (energyNeed == null || extension == null || energyNeed.CurLevelPercentage >= extension.feedThreshold) { return false; }