diff --git a/1.6/Assemblies/FactionLoadout.dll b/1.6/Assemblies/FactionLoadout.dll index 7380ba1..1b4600e 100644 Binary files a/1.6/Assemblies/FactionLoadout.dll and b/1.6/Assemblies/FactionLoadout.dll differ diff --git a/1.6/Source/Patches/PawnGenPatch.cs b/1.6/Source/Patches/PawnGenPatch.cs index 05f7ce5..990ac8f 100644 --- a/1.6/Source/Patches/PawnGenPatch.cs +++ b/1.6/Source/Patches/PawnGenPatch.cs @@ -48,10 +48,26 @@ public static void Postfix(Pawn __result, PawnGenerationRequest request) { if (__result.health.hediffSet.GetHediffCount(forcedHediff.HediffDef) >= maxToApply) break; + + BodyPartRecord part = validParts?.Pop(); + + if (part == null && typeof(Hediff_Implant).IsAssignableFrom(forcedHediff.HediffDef.hediffClass)) + { + ModCore.Warn( + $"Skipping hediff '{forcedHediff.HediffDef.defName}' on pawn " + $"'{__result.kindDef?.defName}': implant requires a body part but none was found." + ); + continue; + } + + try { - Hediff hediff = HediffMaker.MakeHediff(forcedHediff.HediffDef, __result, validParts?.Pop()); + Hediff hediff = HediffMaker.MakeHediff(forcedHediff.HediffDef, __result, part); __result.health.AddHediff(hediff); } + catch (Exception e) + { + ModCore.Warn($"Failed to apply hediff '{forcedHediff.HediffDef.defName}' " + $"to pawn '{__result.kindDef?.defName}': {e.Message}"); + } } }