From 8a7138106acab6b70b1172852a2e4104030d8357 Mon Sep 17 00:00:00 2001 From: Shabakur Date: Thu, 22 Dec 2022 19:04:56 +0100 Subject: [PATCH 1/5] Fixed and improved prioritization of racegenedefs Added an priority option to xml which decides the racegenedef to choose if an animal is present in multiple racegenedefs (under the same variable (racegroups, racenames or kinddefs --- Common/Assemblies/Rjw-Genes.dll | Bin 39936 -> 40448 bytes .../Animal_Inheritance/InheritanceUtility.cs | 2 +- Source/Animal_Inheritance/RaceGeneDef.cs | 2 +- .../Animal_Inheritance/RaceGeneDef_Helper.cs | 49 +++++++++--------- 4 files changed, 26 insertions(+), 27 deletions(-) diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 9eef3ca59805d63453acde5d9fcaf2ad1690abf5..f0d8df357949c44e3e09485b2014ad6bff707538 100644 GIT binary patch delta 14560 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 delta 14257 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 V*P8Ia8A;qx*y>(;TxjlX{XYWh2_66d diff --git a/Source/Animal_Inheritance/InheritanceUtility.cs b/Source/Animal_Inheritance/InheritanceUtility.cs index 2b260dd..1996589 100644 --- a/Source/Animal_Inheritance/InheritanceUtility.cs +++ b/Source/Animal_Inheritance/InheritanceUtility.cs @@ -42,7 +42,7 @@ namespace RJW_BGS public static List SelectGenes(Pawn pawn) { List genelist = new List(); - RaceGeneDef raceGeneDef = RJWcopy.GetRaceGeneDefInternal(pawn); + RaceGeneDef raceGeneDef = RaceGeneDef_Helper.GetRaceGeneDefInternal(pawn); if (raceGeneDef != null) { foreach (BestialityGeneInheritanceDef gene in raceGeneDef.genes) diff --git a/Source/Animal_Inheritance/RaceGeneDef.cs b/Source/Animal_Inheritance/RaceGeneDef.cs index c4cbcea..02ac62d 100644 --- a/Source/Animal_Inheritance/RaceGeneDef.cs +++ b/Source/Animal_Inheritance/RaceGeneDef.cs @@ -10,7 +10,7 @@ namespace RJW_BGS { public class RaceGeneDef : Def { - + public int priority; public String raceGroup; public List raceNames; public List pawnKindNames; diff --git a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs index ed6541a..680b155 100644 --- a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs +++ b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs @@ -9,31 +9,48 @@ using RimWorld; namespace RJW_BGS { - internal class RJWcopy + public class RaceGeneDef_Helper { //code based on racegroupdefinternal which has a similar function public static RaceGeneDef GetRaceGeneDefInternal(Pawn pawn) { + List Valids = ValidRaceGeneDefs(pawn); + if (Valids.Count > 0) + { + RaceGeneDef result = Valids.MaxBy(r => r.priority); + return result; + } + return null; + //First check if there is a matching pawnkinddef then race, then racegroup + + } + public static List ValidRaceGeneDefs(Pawn pawn) + { PawnKindDef kindDef = pawn.kindDef; if (kindDef == null) - { + { return null; - } + } string raceName = kindDef.race.defName; string pawnKindName = kindDef.defName; - IEnumerable allDefs = DefDatabase.AllDefs; PawnData pawnData = SaveStorage.DataStore.GetPawnData(pawn); RaceGroupDef raceGroupDef = pawnData.RaceSupportDef; + + IEnumerable allDefs = DefDatabase.AllDefs; List pawnKindDefs = allDefs.Where(delegate (RaceGeneDef group) { List pawnKindNames = group.pawnKindNames; return pawnKindNames != null && pawnKindNames.Contains(pawnKindName); }).ToList(); + if (pawnKindDefs.Count() > 0) + return pawnKindDefs; List raceKindDefs = allDefs.Where(delegate (RaceGeneDef group) { List raceNames = group.raceNames; return raceNames != null && raceNames.Contains(raceName); }).ToList(); + if (raceKindDefs.Count() > 0) + return raceKindDefs; List raceGroupDefs = new List(); if (raceGroupDef != null) { @@ -43,27 +60,9 @@ namespace RJW_BGS return raceGroupDefName != null && raceGroupDefName == raceGroupDef.defName; }).ToList(); } - RaceGeneDef result = null; - //First check if there is a matching pawnkinddef then race, then racegroup - if (pawnKindDefs.Any()) - { - result = pawnKindDefs.RandomElement(); - } - else if (raceKindDefs.Any() && result == null) - { - result = raceKindDefs.RandomElement(); - } - else if (raceGroupDefs.Any() && result == null) - { - result = raceGroupDefs.RandomElement(); - } - else - { - result = null; - } - return result; - - + if (raceGroupDefs.Count() > 0) + return raceGroupDefs; + return new List(); } } } From 7e7e7e5e17cff7e3fb19ca5bb28e2ef4d38b3fdd Mon Sep 17 00:00:00 2001 From: Shabakur Date: Thu, 22 Dec 2022 19:17:23 +0100 Subject: [PATCH 2/5] Update RaceGeneDefs_template.xml --- Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml b/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml index 20be765..29e92c6 100644 --- a/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml +++ b/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml @@ -18,6 +18,9 @@ For even more direct control you can use pawnKindNames. + 0 + You can use priority incase you have multiple racegenedefs with the same animal under the same list (racegroup, racenames or pawnKindNames). If not assigned the value is 0. Higher priority is chosen. + The RaceGeneDef for an animal will first be decided by if it is in the pawnkindNames, after that racenames and lastly racegroup, so if there is for a wolf a RaceGeneDef with the canine group and a second which has wolf under raceNames it will always use the second one to determine which genes can be inherited From 7bf8efb00d5d1d6b10ab600897d71a8dd4222a39 Mon Sep 17 00:00:00 2001 From: Shabakur Date: Sat, 24 Dec 2022 10:57:19 +0100 Subject: [PATCH 3/5] fixed issue 8, breast sized will now get properly applied. --- Common/Assemblies/Rjw-Genes.dll | Bin 40448 -> 40448 bytes Source/Genes/GenitaliaSize/SizeAdjuster.cs | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index f0d8df357949c44e3e09485b2014ad6bff707538..4c7463c35d1b24e6417aa3e444c54a64a7264e92 100644 GIT binary patch delta 344 zcmZqJ!_=^cX+j5c?U`j0yJZ=9(ij*6Cdc_p zG4f8X^p|#534lo10Hx9yHiCI=5~>o6K;9WJ?;+zG9yW#y297|G%7={Eit0dKPB4hq z$PmE{lIxg!+h1C{11$ECGeN-uC^iAYW1KC1gd>CDGL-j5+!rW!d$MAHG~@HhwgJ+z zAHXur44zCcIWid}LO|v=Gu#LAvKSmTmj>)M7uZ$JG&5{Zqw9>;Lt=*C-@9yf=qTai oeEyJZ>KCaw%;+%lPwv7V7W>8~dV@PB83+7Ff(3V)k zp2nb~0+MT!P?Z45aZaxFmv&bOfT*_ts!wNF3+91TFamiez`TcyZ+O@kG8k9_K`I|I zW-F=#c^SbVUL!*UGf1vw@_nFLEnu;SoCyjRK(QVOk8!s65snOo^HAO!abKX^bubU& zt_&1+WiULR>=+;|`v$C{nZc9kB}XQMNC?QbW`_GfUKWGR=E{KG<^qy#+Zz&HIXqW7 z^fmMH*Sc AllBreasts = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => x.def.defName.Contains("breasts")); + List AllBreasts = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => x.def.defName.ToLower().Contains("breasts")); ResizeAll(AllBreasts,lowerLimit,upperLimit); } From 2847dc2b4842275b04c394e602006b1f2a0960d5 Mon Sep 17 00:00:00 2001 From: vegapnk <104673111+vegapnk@users.noreply.github.com> Date: Tue, 27 Dec 2022 08:27:37 +0100 Subject: [PATCH 4/5] Update KNOWN_BUGS.md --- KNOWN_BUGS.md | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/KNOWN_BUGS.md b/KNOWN_BUGS.md index 3fe7439..904d9a0 100644 --- a/KNOWN_BUGS.md +++ b/KNOWN_BUGS.md @@ -48,7 +48,7 @@ RimWorld.GeneMaker:MakeGene (Verse.GeneDef,Verse.Pawn) Reason: -RJW covers some corner cases when the pawn is changed before creation. +RJW covers some corner cases when the pawn is changed before creation. This seems a bit legacy and related to Royalty-Content. Current Solution: @@ -56,10 +56,25 @@ Ignore this. The pawns seem to have the right sex and genitalia, I cannot "catch Aimed Solution: -Patch ChangeSex to skip for pawns with the two genes producing this. +Patch RJW ChangeSex upstream to skip for pawns with the two genes producing this. + +## Error on Game Load: Verse.GeneDef named rjw_genes_human_genitalia (wanter=genes) + +Error: Issue #4, Game throws a warning on load that some Genes were not found. + +Reason: (Likely) because I removed some genes from Pre-Release to 1.0.0. Now some players have unknown definitions in their safe-files and Xenotype Defs. +The removed Genes were the ones that performed default behaviour (e.g. normal breast size, normal penis size, ...) + +Solution: Should be safe to ignore, when you get this on safe-load make a quick new safe. new safe should not throw the error. For Self-Made Xenotypes remove the Genes. + +Sorry about this one, I know removal can break things but hey you were playing with the Prerelease! ## Insect Breeder does not fertilize +Update: + +We changed behaviour in [1.0.1](https://github.com/vegapnk/RJW-Genes/releases/tag/1.0.1) and it seems to work now. Please tell us if you still encounter this. + Error: A pawn with insect breeder fucks a pawn with unfertilized insect eggs, but the eggs stay unfertilized. @@ -71,4 +86,4 @@ So testing this is super hard. One thing - you need to have anal or vaginal sex for this to work. Any other sex type is currently not supported. -For anything else, please help me gather information on this what you did and how things look. I reworked it once but I think it should work now. \ No newline at end of file +For anything else, please help me gather information on this what you did and how things look. I reworked it once but I think it should work now. From 68be7aed6f8f3dbd7c7fa00de61da83b25a81113 Mon Sep 17 00:00:00 2001 From: klassekatze Date: Fri, 30 Dec 2022 00:05:53 -0500 Subject: [PATCH 5/5] patches in some of these genes to biotech nyaron, narai, papou, saurid if they are present; also a template for doing the same with any other mod xenotypes I guess --- Common/Patches/Xenotypes/PatchBiotechNyaron.xml | 14 ++++++++++++++ Common/Patches/Xenotypes/PatchNarai.xml | 15 +++++++++++++++ Common/Patches/Xenotypes/PatchPapou.xml | 17 +++++++++++++++++ Common/Patches/Xenotypes/PatchSaurid.xml | 14 ++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 Common/Patches/Xenotypes/PatchBiotechNyaron.xml create mode 100644 Common/Patches/Xenotypes/PatchNarai.xml create mode 100644 Common/Patches/Xenotypes/PatchPapou.xml create mode 100644 Common/Patches/Xenotypes/PatchSaurid.xml diff --git a/Common/Patches/Xenotypes/PatchBiotechNyaron.xml b/Common/Patches/Xenotypes/PatchBiotechNyaron.xml new file mode 100644 index 0000000..50ad15f --- /dev/null +++ b/Common/Patches/Xenotypes/PatchBiotechNyaron.xml @@ -0,0 +1,14 @@ + + + + +
  • Biotech Nyaron
  • +
    + + Defs/XenotypeDef[defName="Nyaron"]/genes + +
  • rjw_genes_feline_genitalia
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/Common/Patches/Xenotypes/PatchNarai.xml b/Common/Patches/Xenotypes/PatchNarai.xml new file mode 100644 index 0000000..51ee9d8 --- /dev/null +++ b/Common/Patches/Xenotypes/PatchNarai.xml @@ -0,0 +1,15 @@ + + + + +
  • NaraiXenotype
  • +
    + + Defs/XenotypeDef[defName="Narai"]/genes + +
  • rjw_genes_canine_genitalia
  • +
  • rjw_genes_zoophile
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/Common/Patches/Xenotypes/PatchPapou.xml b/Common/Patches/Xenotypes/PatchPapou.xml new file mode 100644 index 0000000..2fbd66b --- /dev/null +++ b/Common/Patches/Xenotypes/PatchPapou.xml @@ -0,0 +1,17 @@ + + + + +
  • Papou Race : emotional birds
  • +
    + + Defs/XenotypeDef[defName="papago"]/genes + +
  • rjw_genes_orgasm_rush
  • +
  • rjw_genes_damage
  • +
  • rjw_genes_tight_female_genitalia
  • +
  • rjw_genes_tight_anus
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/Common/Patches/Xenotypes/PatchSaurid.xml b/Common/Patches/Xenotypes/PatchSaurid.xml new file mode 100644 index 0000000..c1fd626 --- /dev/null +++ b/Common/Patches/Xenotypes/PatchSaurid.xml @@ -0,0 +1,14 @@ + + + + +
  • Vanilla Races Expanded - Saurid
  • +
    + + Defs/XenotypeDef[defName="VRESaurids_Saurid"]/genes + +
  • rjw_genes_dragon_genitalia
  • +
    +
    +
    +
    \ No newline at end of file