Fixed error in animal inheritance

This commit is contained in:
Shabakur 2022-12-01 06:52:13 +01:00
parent 3cc62ba818
commit b8a5e64baf
13 changed files with 61 additions and 39 deletions

Binary file not shown.

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Defs> <Defs>
<RJW_BGS.RaceGeneDef> <RJW_BGS.RaceGeneDef Name = "Canine">
<defName>Canine</defName> <defName>Canine</defName>
<raceGroup>Canine_Group</raceGroup> <raceGroup>Canine_Group</raceGroup>
<genes> <genes>
@ -11,6 +11,19 @@
</genechances> </genechances>
</RJW_BGS.RaceGeneDef> </RJW_BGS.RaceGeneDef>
<RJW_BGS.RaceGeneDef ParentName = "Canine">
<defName>Warg</defName>
<raceNames>
<li>Warg</li>
</raceNames>
<genes>
<li>DarkVision</li>
</genes>
<genechances>
<li>0.9</li>
</genechances>
</RJW_BGS.RaceGeneDef>
<RJW_BGS.RaceGeneDef> <RJW_BGS.RaceGeneDef>
<defName>Insect</defName> <defName>Insect</defName>
<raceGroup>Insect_Group</raceGroup> <raceGroup>Insect_Group</raceGroup>

Binary file not shown.

View file

@ -9,9 +9,9 @@ using RimWorld;
namespace RJW_BGS namespace RJW_BGS
{ {
[StaticConstructorOnStartup] [StaticConstructorOnStartup]
internal static class Class1 internal static class First
{ {
static Class1() static First()
{ {
RJWcopy.Racegroupdictbuilder(); RJWcopy.Racegroupdictbuilder();
//foreach (RaceGroupDef raceGroupDef2 in DefDatabase<RaceGroupDef>.AllDefs) //foreach (RaceGroupDef raceGroupDef2 in DefDatabase<RaceGroupDef>.AllDefs)

View file

@ -57,7 +57,7 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Class1.cs" /> <Compile Include="First.cs" />
<Compile Include="Harmony_Init.cs" /> <Compile Include="Harmony_Init.cs" />
<Compile Include="InheritanceUtility.cs" /> <Compile Include="InheritanceUtility.cs" />
<Compile Include="PatchRJWBestialityPregnancyUtility.cs" /> <Compile Include="PatchRJWBestialityPregnancyUtility.cs" />

View file

@ -34,6 +34,7 @@ namespace RJW_BGS
return raceGroupDef != null; return raceGroupDef != null;
} }
//slightly modified code so it also works racegroupdefs
public static RaceGroupDef GetRaceGroupDefInternal(PawnKindDef kindDef) public static RaceGroupDef GetRaceGroupDefInternal(PawnKindDef kindDef)
{ {
string raceName = kindDef.race.defName; string raceName = kindDef.race.defName;
@ -71,9 +72,14 @@ namespace RJW_BGS
public static RaceGeneDef GetRaceGenDefInternal(PawnKindDef kindDef) public static RaceGeneDef GetRaceGenDefInternal(PawnKindDef kindDef)
{ {
if (kindDef == null)
{
return null;
}
string raceName = kindDef.race.defName; string raceName = kindDef.race.defName;
string pawnKindName = kindDef.defName; string pawnKindName = kindDef.defName;
string raceGroupName = GetRaceGroupDef(kindDef).defName; RaceGroupDef raceGroupDef = GetRaceGroupDef(kindDef);
//string raceGroupName = GetRaceGroupDef(kindDef).defName;
IEnumerable<RaceGeneDef> allDefs = DefDatabase<RaceGeneDef>.AllDefs; IEnumerable<RaceGeneDef> allDefs = DefDatabase<RaceGeneDef>.AllDefs;
List<RaceGeneDef> list = allDefs.Where(delegate (RaceGeneDef group) List<RaceGeneDef> list = allDefs.Where(delegate (RaceGeneDef group)
{ {
@ -85,12 +91,15 @@ namespace RJW_BGS
List<string> raceNames = group.raceNames; List<string> raceNames = group.raceNames;
return raceNames != null && raceNames.Contains(raceName); return raceNames != null && raceNames.Contains(raceName);
}).ToList<RaceGeneDef>(); }).ToList<RaceGeneDef>();
List<RaceGeneDef> list3 = allDefs.Where(delegate (RaceGeneDef group) List<RaceGeneDef> list3 = new List<RaceGeneDef>();
if (raceGroupDef != null)
{
list3 = allDefs.Where(delegate (RaceGeneDef group)
{ {
String raceGroupDefName = group.raceGroup; String raceGroupDefName = group.raceGroup;
return raceGroupDefName != null && raceGroupDefName == raceGroupName; return raceGroupDefName != null && raceGroupDefName == raceGroupDef.defName;
}).ToList<RaceGeneDef>(); }).ToList<RaceGeneDef>();
}
RaceGeneDef result = null; RaceGeneDef result = null;
//First check if there is a matching pawnkinddef then race, then racegroup //First check if there is a matching pawnkinddef then race, then racegroup
if (list.Any()) if (list.Any())

View file

@ -1 +1 @@
bbcef32adb57331bca8d9d64ae20e770e4ed1e71 0b0a8825bf7e783f74047adfd92c6a9898735e8c

Binary file not shown.