From f17da08394bca532a3bff043afba5c6f21fdba7b Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sat, 26 Nov 2022 20:09:57 +0100 Subject: [PATCH 1/4] Added Cumflation Immunity, Rapist Trait --- Common/Assemblies/.gitignore | 2 ++ Common/Assemblies/Rjw-Genes.dll | Bin 29184 -> 30208 bytes Common/Defs/Genes/GeneDefs_Cum.xml | 10 ++++------ Common/Defs/Genes/GeneDefs_Reproduction.xml | 13 +++++++++++++ 4 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 Common/Assemblies/.gitignore diff --git a/Common/Assemblies/.gitignore b/Common/Assemblies/.gitignore new file mode 100644 index 0000000..8550acb --- /dev/null +++ b/Common/Assemblies/.gitignore @@ -0,0 +1,2 @@ +*dll +!RJW-Genes.dll diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index b1fd66c2e7ef9ba02366906e0deb03b1693a06c3..7502255c50bb30b7737499bc30fb84a799cfe10e 100644 GIT binary patch literal 30208 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 - -
  • NotCumflatable
  • ---> + \ No newline at end of file diff --git a/Common/Defs/Genes/GeneDefs_Reproduction.xml b/Common/Defs/Genes/GeneDefs_Reproduction.xml index ad27692..3599418 100644 --- a/Common/Defs/Genes/GeneDefs_Reproduction.xml +++ b/Common/Defs/Genes/GeneDefs_Reproduction.xml @@ -15,4 +15,17 @@ + + rjw_genes_rapist + + Reproduction + Xenotypes with this Gene are Rapists. + Genes/Icons/Placeholder + 2 + +
  • + Rapist +
  • +
    +
    \ No newline at end of file From 84c0ab012ed2c5777136d815c4ca7d74e40f56d7 Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sat, 26 Nov 2022 21:32:32 +0100 Subject: [PATCH 2/4] Added Elasticity Gene and Zoophile Trait Gene --- Common/Assemblies/Rjw-Genes.dll | Bin 30208 -> 30720 bytes Common/Defs/Genes/GeneCategories.xml | 37 ++++++++++++++--- Common/Defs/Genes/GeneDefs_Breeding.xml | 16 +++++++- Common/Defs/Genes/GeneDefs_Damage.xml | 14 +++++++ ...ogenes.xml => GeneDefs_ExtraGenitalia.xml} | 2 +- Common/Defs/Genes/GeneDefs_GenitaliaSizes.xml | 2 +- ...ogenes.xml => GeneDefs_GenitaliaTypes.xml} | 2 +- KNOWN_BUGS.md | 33 ++++++++++++++- Source/GeneDefOf.cs | 15 +++++-- Source/Genes/Breeding/PatchPawnExtensions.cs | 2 +- Source/Genes/Cum/Patch_Cumflation.cs | 38 ++++++++++++++++++ Source/Genes/Damage/Gene_Elasticity.cs | 35 ++++++++++++++++ Source/Genes/GeneUtility.cs | 23 ++++++++++- Source/HarmonyInit.cs | 21 +++++++++- Source/Rjw-Genes.csproj | 6 +++ 15 files changed, 227 insertions(+), 19 deletions(-) create mode 100644 Common/Defs/Genes/GeneDefs_Damage.xml rename Common/Defs/Genes/{GeneDefs_ExtraGenitaliaEndogenes.xml => GeneDefs_ExtraGenitalia.xml} (98%) rename Common/Defs/Genes/{GeneDefs_GenitaliaTypeEndogenes.xml => GeneDefs_GenitaliaTypes.xml} (97%) create mode 100644 Source/Genes/Cum/Patch_Cumflation.cs create mode 100644 Source/Genes/Damage/Gene_Elasticity.cs diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 7502255c50bb30b7737499bc30fb84a799cfe10e..cb0815e7d6545b262da3dbc43381776b231ec24f 100644 GIT binary patch literal 30720 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 literal 30208 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 rjw_genes_gender - 20 + 21 - rjw_genes_genitalia - - 16 + rjw_genes_genitalia_type + + 19 + + + + rjw_genes_genitalia_extras + + 17 + + + + rjw_genes_genitalia_size + + 15 rjw_genes_breeding - 15 + 13 rjw_genes_cum - 14 + 12 + + + + rjw_damage + + 11 \ No newline at end of file diff --git a/Common/Defs/Genes/GeneDefs_Breeding.xml b/Common/Defs/Genes/GeneDefs_Breeding.xml index 14b1be7..793492f 100644 --- a/Common/Defs/Genes/GeneDefs_Breeding.xml +++ b/Common/Defs/Genes/GeneDefs_Breeding.xml @@ -26,7 +26,21 @@ Pawns with this gene are able to fertilize eggs with any fertile penis. World/WorldObjects/Expanding/Mechanoids 53 - rjw_genes_breeding + rjw_genes_breeding + + rjw_genes_zoophile + + rjw_genes_breeding + Xenotypes with this Gene are Zoophile. + Genes/Icons/Placeholder + 54 + +
  • + Zoophile +
  • +
    +
    + \ No newline at end of file diff --git a/Common/Defs/Genes/GeneDefs_Damage.xml b/Common/Defs/Genes/GeneDefs_Damage.xml new file mode 100644 index 0000000..c44e937 --- /dev/null +++ b/Common/Defs/Genes/GeneDefs_Damage.xml @@ -0,0 +1,14 @@ + + + + + rjw_genes_elasticity + + rjw_damage + This Xenotype cannot get stretched by huge penetrators. + Genes/Icons/Placeholder + RJW_Genes.Gene_Elasticity + 1 + + + \ No newline at end of file diff --git a/Common/Defs/Genes/GeneDefs_ExtraGenitaliaEndogenes.xml b/Common/Defs/Genes/GeneDefs_ExtraGenitalia.xml similarity index 98% rename from Common/Defs/Genes/GeneDefs_ExtraGenitaliaEndogenes.xml rename to Common/Defs/Genes/GeneDefs_ExtraGenitalia.xml index 703d8db..3459de5 100644 --- a/Common/Defs/Genes/GeneDefs_ExtraGenitaliaEndogenes.xml +++ b/Common/Defs/Genes/GeneDefs_ExtraGenitalia.xml @@ -1,7 +1,7 @@ - rjw_genes_genitalia + rjw_genes_genitalia_extras diff --git a/Common/Defs/Genes/GeneDefs_GenitaliaSizes.xml b/Common/Defs/Genes/GeneDefs_GenitaliaSizes.xml index 41dac59..72d2c53 100644 --- a/Common/Defs/Genes/GeneDefs_GenitaliaSizes.xml +++ b/Common/Defs/Genes/GeneDefs_GenitaliaSizes.xml @@ -1,7 +1,7 @@ - rjw_genes_genitalia + rjw_genes_genitalia_size diff --git a/Common/Defs/Genes/GeneDefs_GenitaliaTypeEndogenes.xml b/Common/Defs/Genes/GeneDefs_GenitaliaTypes.xml similarity index 97% rename from Common/Defs/Genes/GeneDefs_GenitaliaTypeEndogenes.xml rename to Common/Defs/Genes/GeneDefs_GenitaliaTypes.xml index 39f7f64..b646058 100644 --- a/Common/Defs/Genes/GeneDefs_GenitaliaTypeEndogenes.xml +++ b/Common/Defs/Genes/GeneDefs_GenitaliaTypes.xml @@ -2,7 +2,7 @@ - rjw_genes_genitalia + rjw_genes_genitalia_type
  • GenitalType
  • diff --git a/KNOWN_BUGS.md b/KNOWN_BUGS.md index c190e10..d1153c0 100644 --- a/KNOWN_BUGS.md +++ b/KNOWN_BUGS.md @@ -25,4 +25,35 @@ Error: I added all "no-XXX" genes but my pawn has genitalia on map! Reason: If you go with Full-No-Genitals (No Penis, No Anus, No Breasts, No Vagina) then the pawn spawns without any Genitalia on the map, however then the RJW base-logic runs the sexualizer. -**Workaround**: Have atleast 1 genitalia enabled with Genes, I recommend the anus. \ No newline at end of file +**Workaround**: Have atleast 1 genitalia enabled with Genes, I recommend the anus. + +## Log Pops up for Xenotypes with Female/Male Only Gene + +Error: + +When using a Xenotype with the Female only gene, upon refresh it can open the log with the following (red) statement: + +``` +[RJW] ChangeSex error (PAWNNAME) faction (FACTION). Probably tried to change sex at world gen for royalty implant, skipping +UnityEngine.StackTraceUtility:ExtractStackTrace () +Verse.Log:Error (string) +rjw.ModLog:Error (string) +rjw.GenderHelper:ChangeSex (Verse.Pawn,rjw.GenderHelper/Sex,rjw.GenderHelper/Sex) +rjw.GenderHelper:ChangeSex (Verse.Pawn,System.Action) +RJW_Genes.Gene_FemaleOnly:AdjustPawnToFemale () +RJW_Genes.Gene_FemaleOnly:PostMake () +RimWorld.GeneMaker:MakeGene (Verse.GeneDef,Verse.Pawn) +[... some more ...] +``` + +Reason: + +RJW covers some corner cases when the pawn is changed before creation. + +Current Solution: + +Ignore this. The pawns seem to have the right sex and genitalia, I cannot "catch" the exception as it is only a Log Error. I would need to do harmony patching and ... that seems to be too much. + +Aimed Solution: + +Patch ChangeSex to skip for pawns with the two genes producing this. \ No newline at end of file diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index 2c0b42e..959ff01 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -6,8 +6,10 @@ namespace RJW_Genes [DefOf] public static class GeneDefOf { - public static readonly GeneCategoryDef rjw_genes_genitalia; + public static readonly GeneCategoryDef rjw_genes_genitalia_type; + public static readonly GeneCategoryDef rjw_genes_genitalia_size; public static readonly GeneCategoryDef rjw_genes_gender; + public static readonly GeneCategoryDef rjw_genes_breeding; // Base Genitalia Types public static readonly GeneDef rjw_genes_human_genitalia; @@ -53,14 +55,19 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_insectincubator; public static readonly GeneDef rjw_genes_insectbreeder; - //Cum + // Cum public static readonly GeneDef rjw_genes_no_cum; public static readonly GeneDef rjw_genes_much_cum; public static readonly GeneDef rjw_genes_very_much_cum; [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_likes_cumflation; - //[MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_cumflation_immunity; //Does currently not work like this + [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_cumflation_immunity; //Does currently not work like this - //Reproduction + // Reproduction public static readonly GeneDef rjw_genes_hypersexual; + public static readonly GeneDef rjw_genes_rapist; + public static readonly GeneDef rjw_genes_zoophile; + + // Damage & Side Effects + [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_elasticity; } } diff --git a/Source/Genes/Breeding/PatchPawnExtensions.cs b/Source/Genes/Breeding/PatchPawnExtensions.cs index f3df7a8..be2e2dc 100644 --- a/Source/Genes/Breeding/PatchPawnExtensions.cs +++ b/Source/Genes/Breeding/PatchPawnExtensions.cs @@ -17,7 +17,7 @@ namespace RJW_Genes { if (!__result) { - __result = GeneUtility.isInsectBreeder(pawn); + __result = GeneUtility.IsInsectBreeder(pawn); } } } diff --git a/Source/Genes/Cum/Patch_Cumflation.cs b/Source/Genes/Cum/Patch_Cumflation.cs new file mode 100644 index 0000000..e8c3496 --- /dev/null +++ b/Source/Genes/Cum/Patch_Cumflation.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Reflection.Emit; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using HarmonyLib; +using rjw; +using RimWorld; +using Verse; +using LicentiaLabs; + +namespace RJW_Genes +{ + /// + /// Changes LicentiaLabs (if Present) to not cumflate pawns that are cumflation immune. + /// This code is exercised / loaded in the HarmonyInit. + /// + /// + class Patch_Cumflation + { + // This patch does not need the normal Harmony Targetting, + // as it needs to be added only on demand (See HarmonyInit.cs) + public static bool Prefix(SexProps props) + { + // Harmony Logic skips the original Method after Prefix when "false" is returned + // See https://harmony.pardeike.net/articles/execution.html + + // We skip the whole Cumflation Logic when the Partner is Cumflation Immune + if (props != null && props.partner != null && GeneUtility.IsCumflationImmune(props.partner)) + { + return false; + } + return true; + } + } +} \ No newline at end of file diff --git a/Source/Genes/Damage/Gene_Elasticity.cs b/Source/Genes/Damage/Gene_Elasticity.cs new file mode 100644 index 0000000..b9d3033 --- /dev/null +++ b/Source/Genes/Damage/Gene_Elasticity.cs @@ -0,0 +1,35 @@ +using LicentiaLabs; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace RJW_Genes +{ + /// + /// This Gene adds Licentia-Labs Elasticised Hediff to a Pawn. + /// Important: I had a HarmonyPatch first, similar to skipping cumflation, but the Stretching Logic is called quite a lot and for both pawns actually. + /// Hence, I think choosing the Elasticiced Hediff was good as then everything is covered by "Licentia-Logic". + /// + public class Gene_Elasticity : Gene + { + + public override void PostAdd() + { + base.PostAdd(); + this.pawn.health.AddHediff(Licentia.HediffDefs.Elasticised); + } + + public override void PostRemove() + { + Hediff candidate = pawn.health.hediffSet.GetFirstHediffOfDef(Licentia.HediffDefs.Elasticised); + if (candidate != null) + { + pawn.health.RemoveHediff(candidate); + } + base.PostRemove(); + } + } +} diff --git a/Source/Genes/GeneUtility.cs b/Source/Genes/GeneUtility.cs index 5144aad..44b6e64 100644 --- a/Source/Genes/GeneUtility.cs +++ b/Source/Genes/GeneUtility.cs @@ -1,4 +1,5 @@ -using Verse; +using System; +using Verse; namespace RJW_Genes { @@ -22,7 +23,7 @@ namespace RJW_Genes return pawn.genes.HasGene(GeneDefOf.rjw_genes_insectincubator); } - public static bool isInsectBreeder(Pawn pawn) + public static bool IsInsectBreeder(Pawn pawn) { if (pawn.genes == null) { @@ -40,5 +41,23 @@ namespace RJW_Genes } return MaxEggSize; } + + internal static bool IsElastic(Pawn pawn) + { + if (pawn.genes == null) + { + return false; + } + return pawn.genes.HasGene(GeneDefOf.rjw_genes_elasticity); + } + + public static bool IsCumflationImmune(Pawn pawn) + { + if (pawn.genes == null) + { + return false; + } + return pawn.genes.HasGene(GeneDefOf.rjw_genes_cumflation_immunity); + } } } \ No newline at end of file diff --git a/Source/HarmonyInit.cs b/Source/HarmonyInit.cs index c2f288e..1d44812 100644 --- a/Source/HarmonyInit.cs +++ b/Source/HarmonyInit.cs @@ -1,6 +1,6 @@ using Verse; using HarmonyLib; - +using System; namespace RJW_Genes { @@ -11,6 +11,25 @@ namespace RJW_Genes { Harmony harmony = new Harmony("rjw_genes"); harmony.PatchAll(); + + // Patch Licentia, if Licentia exists + // Logic & Explanation taken from https://rimworldwiki.com/wiki/Modding_Tutorials/Compatibility_with_DLLs + // Adjusted to use ModsConfig (which makes it work, the example above does not run out of the box) + try + { + ((Action)(() => + { + if (ModsConfig.IsActive("LustLicentia.RJWLabs")) + { + // Gene: Cumflation Immunity + harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.Cumflation)), + prefix: new HarmonyMethod(typeof(Patch_Cumflation), nameof(Patch_Cumflation.Prefix))); + } + }))(); + } + catch (TypeLoadException ex) { + // To be expected for people without Licentia Labs + } } } } \ No newline at end of file diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index befe2c2..0582a73 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -29,6 +29,10 @@ ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False + + ..\..\licentia-labs\Assemblies\LicentiaLabs.dll + False + ..\..\rjw\1.4\Assemblies\RJW.dll False @@ -60,6 +64,8 @@ + + From dd40ae40ee05a0c60fc320ef1640064d16c4bc55 Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sat, 26 Nov 2022 21:56:44 +0100 Subject: [PATCH 3/4] Elasticising Gene now stays elastic, does not decay --- Common/Assemblies/Rjw-Genes.dll | Bin 30720 -> 30720 bytes Source/Genes/Damage/Gene_Elasticity.cs | 35 ++++++++++++++++++++----- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index cb0815e7d6545b262da3dbc43381776b231ec24f..352f0358f9d6d445ed4dbc4f878447c23a3a0ad6 100644 GIT binary patch literal 30720 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 literal 30720 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 diff --git a/Source/Genes/Damage/Gene_Elasticity.cs b/Source/Genes/Damage/Gene_Elasticity.cs index b9d3033..603a18d 100644 --- a/Source/Genes/Damage/Gene_Elasticity.cs +++ b/Source/Genes/Damage/Gene_Elasticity.cs @@ -1,25 +1,36 @@ using LicentiaLabs; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Verse; namespace RJW_Genes { /// /// This Gene adds Licentia-Labs Elasticised Hediff to a Pawn. - /// Important: I had a HarmonyPatch first, similar to skipping cumflation, but the Stretching Logic is called quite a lot and for both pawns actually. + /// Note: I had a HarmonyPatch first, similar to skipping cumflation, but the Stretching Logic is called quite a lot and for both pawns actually. /// Hence, I think choosing the Elasticiced Hediff was good as then everything is covered by "Licentia-Logic". /// public class Gene_Elasticity : Gene { + + private int ticksToReset = RESET_INTERVAL; + private const int RESET_INTERVAL = 60000; // 60k should be 1 day public override void PostAdd() { base.PostAdd(); - this.pawn.health.AddHediff(Licentia.HediffDefs.Elasticised); + // Doing it like this will add the hediff with a severity of ~0.5, but it will decay. + // Hence we check with the Ticks to update. + this.pawn.health.AddHediff(Licentia.HediffDefs.Elasticised); + ResetSeverity(); + } + + public override void Tick() + { + base.Tick(); + --this.ticksToReset; + if (this.ticksToReset > 0) + return; + this.ticksToReset = RESET_INTERVAL; + ResetSeverity(); } public override void PostRemove() @@ -31,5 +42,15 @@ namespace RJW_Genes } base.PostRemove(); } + + + private void ResetSeverity(float severity = 0.7f) + { + Hediff candidate = pawn.health.hediffSet.GetFirstHediffOfDef(Licentia.HediffDefs.Elasticised); + if (candidate != null) + { + candidate.Severity = severity; + } + } } } From b5033deef6243808fca8a3191366e13249949a2c Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sun, 27 Nov 2022 08:36:44 +0100 Subject: [PATCH 4/4] Added Generous Donor Gene, updated some docs --- Common/Assemblies/Rjw-Genes.dll | Bin 30720 -> 31232 bytes Common/Defs/Genes/GeneDefs_Cum.xml | 12 ++++-- README.md | 6 +-- Source/GeneDefOf.cs | 5 ++- Source/Genes/Cum/Patch_Cumflation.cs | 1 + Source/Genes/Cum/Patch_TransferNutrition.cs | 41 ++++++++++++++++++++ Source/Genes/GeneUtility.cs | 8 ++++ Source/HarmonyInit.cs | 5 ++- Source/Rjw-Genes.csproj | 1 + TODOS.md | 4 -- 10 files changed, 70 insertions(+), 13 deletions(-) create mode 100644 Source/Genes/Cum/Patch_TransferNutrition.cs diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 352f0358f9d6d445ed4dbc4f878447c23a3a0ad6..e5045f94ffcde54e24d22112144fb92b3cb26184 100644 GIT binary patch literal 31232 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 w4Db1bKmkT>O8>rN4UezZZf31hG`|JOBUy literal 30720 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 diff --git a/Common/Defs/Genes/GeneDefs_Cum.xml b/Common/Defs/Genes/GeneDefs_Cum.xml index 114ef91..89334fe 100644 --- a/Common/Defs/Genes/GeneDefs_Cum.xml +++ b/Common/Defs/Genes/GeneDefs_Cum.xml @@ -65,13 +65,19 @@ This Xenotype cannot get cumflated. Genes/Icons/Placeholder 537 -
  • NotCumflatable
  • + + rjw_genes_generous_donor + + rjw_genes_cum + When this Xenotype transfers nutrition via cumshot, the giver will not get hungry. (Licentia Configuration for Transfer Nutrition must be enabled). + Genes/Icons/Placeholder + 538 + +
    \ No newline at end of file diff --git a/README.md b/README.md index cc00f1b..c5dc677 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ This is my first Mod I started from scratch so any feedback is very welcome. - Different Genitalia Types - Genitalia Size Scaling - Extra Genitalia (and a Futa Attempt) -- Some Traits -- Cum-Amount Changes +- Some Traits, Cumflation Immunity, Elasticity +- Cum-Amount Changes, Transfer Nutrition - Mech Breeding / Insect Breeding Support See [planned things](TODOS.md) and feel free to contribute. @@ -23,5 +23,5 @@ Please consider looking at [the known bugs](./KNOWN_BUGS.md) ## Genes vs. Races -I currently don't use Genes after Biotech was introduced. +I currently don't use Races after Biotech was introduced. One of the main motivations was to have genes being added to the xenotypes that other mods and the base game add, e.g. adding demonic penis for impids. \ No newline at end of file diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index 959ff01..88cf099 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -60,8 +60,9 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_much_cum; public static readonly GeneDef rjw_genes_very_much_cum; [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_likes_cumflation; - [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_cumflation_immunity; //Does currently not work like this - + [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_cumflation_immunity; + [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_generous_donor; + // Reproduction public static readonly GeneDef rjw_genes_hypersexual; public static readonly GeneDef rjw_genes_rapist; diff --git a/Source/Genes/Cum/Patch_Cumflation.cs b/Source/Genes/Cum/Patch_Cumflation.cs index e8c3496..9e26a26 100644 --- a/Source/Genes/Cum/Patch_Cumflation.cs +++ b/Source/Genes/Cum/Patch_Cumflation.cs @@ -16,6 +16,7 @@ namespace RJW_Genes /// /// Changes LicentiaLabs (if Present) to not cumflate pawns that are cumflation immune. /// This code is exercised / loaded in the HarmonyInit. + /// Patched File: https://gitgud.io/John-the-Anabaptist/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/Cumflation.cs /// /// class Patch_Cumflation diff --git a/Source/Genes/Cum/Patch_TransferNutrition.cs b/Source/Genes/Cum/Patch_TransferNutrition.cs new file mode 100644 index 0000000..cf8d92d --- /dev/null +++ b/Source/Genes/Cum/Patch_TransferNutrition.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Reflection.Emit; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using HarmonyLib; +using rjw; +using RimWorld; +using Verse; +using LicentiaLabs; + +namespace RJW_Genes +{ + /// + /// Changes LicentiaLabs (if Present) to alter the TransferNutrition for rjw_genes_generous_donor. + /// This code is exercised / loaded in the HarmonyInit. + /// Patched File: https://gitgud.io/John-the-Anabaptist/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/Cumflation.cs + /// + /// + class Patch_TransferNutrition + { + // This patch does not need the normal Harmony Targetting, + // as it needs to be added only on demand (See HarmonyInit.cs) + public static void Postfix(Pawn giver, Pawn receiver, float cumAmount) + { + // Design decision: + // I could have done some transpiler stuff, but that is scary and might need to be adjusted quite a lot + // Hence, I simply re-book the nutrition back to the giver in the Postfix. That should be robust and easy. + + if (GeneUtility.IsGenerousDonor(giver)) { + float donatedNutrition = CumflationHelper.CalculateNutritionAmount(giver, cumAmount); + // TODO: In theory, there could be something weird happening if the donor has food less than X and the "IgnoreThermodynamics" is set on. + // Then it can happen that the donor ends up with more food than he had before cumshot, but I think that is somewhat funny given that you have ignore Thermodynamics on. + Need_Food inflatorFood = giver.needs.TryGetNeed(); + inflatorFood.CurLevel += donatedNutrition; + } + } + } +} \ No newline at end of file diff --git a/Source/Genes/GeneUtility.cs b/Source/Genes/GeneUtility.cs index 44b6e64..ce022ba 100644 --- a/Source/Genes/GeneUtility.cs +++ b/Source/Genes/GeneUtility.cs @@ -59,5 +59,13 @@ namespace RJW_Genes } return pawn.genes.HasGene(GeneDefOf.rjw_genes_cumflation_immunity); } + public static bool IsGenerousDonor(Pawn pawn) + { + if (pawn.genes == null) + { + return false; + } + return pawn.genes.HasGene(GeneDefOf.rjw_genes_generous_donor); + } } } \ No newline at end of file diff --git a/Source/HarmonyInit.cs b/Source/HarmonyInit.cs index 1d44812..35ffb2e 100644 --- a/Source/HarmonyInit.cs +++ b/Source/HarmonyInit.cs @@ -21,9 +21,12 @@ namespace RJW_Genes { if (ModsConfig.IsActive("LustLicentia.RJWLabs")) { - // Gene: Cumflation Immunity + // Gene: Cumflation Immunity [Prefix Patch] harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.Cumflation)), prefix: new HarmonyMethod(typeof(Patch_Cumflation), nameof(Patch_Cumflation.Prefix))); + // Gene: Generous Donor [Postfix Patch] + harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.TransferNutrition)), + postfix: new HarmonyMethod(typeof(Patch_TransferNutrition), nameof(Patch_TransferNutrition.Postfix))); } }))(); } diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 0582a73..67da2c6 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -64,6 +64,7 @@ + diff --git a/TODOS.md b/TODOS.md index 5cd5bed..5bf70df 100644 --- a/TODOS.md +++ b/TODOS.md @@ -8,10 +8,6 @@ So any help is very appreciated, even if it is just pointing me to existing simi **Sanguophage like Cumwhores** adding Hemogen and refilling it by getting semen. Showstopper here is the amount of code required, and that I need to understand a bit better of harmony to run the AfterSexUtility and modulate SexChances. -**Immunity to Soreness / Ignoring Cumflation Mali** - -**LicentiaLabs TransferNutrition _Generous Donor_** pawns that get head do not loose nutrition or only part of what they fire. - **Adjustable Cock-Size** like e.g. artificial genitalia have ## Animal Gene Inheritance