diff --git a/1.6/Assemblies/FactionLoadout.dll b/1.6/Assemblies/FactionLoadout.dll index 7380ba1..be5cb4a 100644 Binary files a/1.6/Assemblies/FactionLoadout.dll and b/1.6/Assemblies/FactionLoadout.dll differ diff --git a/1.6/Source/DefCache.cs b/1.6/Source/DefCache.cs index 6e30a6d..91decc9 100644 --- a/1.6/Source/DefCache.cs +++ b/1.6/Source/DefCache.cs @@ -27,6 +27,7 @@ public static class DefCache public static List AllAnimalKindDefs; public static List AllRulePackDefs; public static List AllGeneDefs; + public static Dictionary> DefaultFactionKinds; public static List AllBackstoryCategories; public static List AllChildhoodBackstories; @@ -55,12 +56,26 @@ public static void ScanDefs() HashSet allBodyTypeDefs = new(32); HashSet allGeneDefs = new(1024); + Dictionary> defaultFactionKinds = new(64); + foreach (PawnKindDef def in DefDatabase.AllDefsListForReading) { if (def.RaceProps is { Animal: true, packAnimal: true }) allAnimalKindDefs.Add(def); + + if (def.defaultFactionDef != null) + { + if (!defaultFactionKinds.TryGetValue(def.defaultFactionDef, out List factionKinds)) + { + factionKinds = new List(); + defaultFactionKinds[def.defaultFactionDef] = factionKinds; + } + factionKinds.Add(def); + } } + DefaultFactionKinds = defaultFactionKinds; + foreach (ThingDef def in DefDatabase.AllDefsListForReading) { if (def.race is { Animal: false }) diff --git a/1.6/Source/FactionEdit.cs b/1.6/Source/FactionEdit.cs index e40339a..29171e3 100644 --- a/1.6/Source/FactionEdit.cs +++ b/1.6/Source/FactionEdit.cs @@ -256,6 +256,11 @@ public static IReadOnlyList GetAllPawnKinds(FactionDef def) if (def.fixedLeaderKinds != null) kinds.AddRange(def.fixedLeaderKinds); + if (DefCache.DefaultFactionKinds != null && DefCache.DefaultFactionKinds.TryGetValue(def, out List defaultKinds)) + { + kinds.AddRange(defaultKinds); + } + return kinds.ToArray(); } diff --git a/1.6/Source/Util/Extensions.cs b/1.6/Source/Util/Extensions.cs index 7bb1a08..a9d8044 100644 --- a/1.6/Source/Util/Extensions.cs +++ b/1.6/Source/Util/Extensions.cs @@ -56,6 +56,12 @@ void RegisterSimple(List list) if (def.basicMemberKind != null) tempKinds.Add(def.basicMemberKind); + if (DefCache.DefaultFactionKinds != null && DefCache.DefaultFactionKinds.TryGetValue(def, out List defaultKinds)) + { + foreach (PawnKindDef kind in defaultKinds) + tempKinds.Add(kind); + } + return tempKinds; }