diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 458e496..00fff85 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/Source/ArachnaeSwarm/Patch_DispenserFoodSearch.cs b/Source/ArachnaeSwarm/Patch_DispenserFoodSearch.cs index 8e12461..0ef9da6 100644 --- a/Source/ArachnaeSwarm/Patch_DispenserFoodSearch.cs +++ b/Source/ArachnaeSwarm/Patch_DispenserFoodSearch.cs @@ -121,13 +121,28 @@ namespace ArachnaeSwarm var currentMealDef = dispenser.DispensableDef; if (currentMealDef == null) continue; - // Use the game's built-in social properness check. - // This correctly handles colonists, prisoners, visitors, and animals (wild vs tame). + // --- Start of refined access checks --- + + // 1. Block hostile pawns. + if (getter.HostileTo(Faction.OfPlayer)) + { + continue; + } + + // 2. Block wild animals. Tamed player-faction animals are allowed. + if (getter.RaceProps.Animal && getter.Faction != Faction.OfPlayer) + { + continue; + } + + // 3. Use the game's built-in social properness check for things like prisoner access. if (!dispenser.IsSociallyProper(getter)) { continue; } + // --- End of refined access checks --- + // Check if the dispenser is usable if (!dispenser.CanDispenseNow || dispenser.IsForbidden(getter) || !eater.WillEat(currentMealDef, getter)) {