diff --git a/CHANGELOG.md b/CHANGELOG.md index 08005c3..0db6c9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,6 @@ Features: - RJW Race-Support Compatibility (#12,#13, Shabakur) - Animal Gene Inheritance Gene-Chance Multiplier per Setting (#13, Shabakur) - Lots of Debug-Only Logging for Animal Gene Inheritance -- Mod-Settings Succubus: @@ -23,7 +22,6 @@ Fixes: - Futa Gene only triggers if Pawn is not a futa already (#2) - Genitalia Resizing triggers on 20th Birthday (#11) - RJW-Gene-Inheritance Settings now do things (#13, Shabakur) -- Check for Animals in Orgasm Rush, no Orgasm Rush for and from Animals (#15) # 1.0.1 (2022-12-20) diff --git a/Common/Defs/Genes/GeneDefs_LifeForce.xml b/Common/Defs/Genes/GeneDefs_LifeForce.xml index 41cba40..efa275e 100644 --- a/Common/Defs/Genes/GeneDefs_LifeForce.xml +++ b/Common/Defs/Genes/GeneDefs_LifeForce.xml @@ -78,7 +78,7 @@ rjw_genes_cockeater cockeater - Carriers of this gene are able eat cocks to restore their fertilin supply. Cocks are consumed during that process. + Carriers of this gene are able eat cocks to restore their fertilin supply. Things/Mote/Heart rjw_genes_lifeforce 11 @@ -154,7 +154,7 @@ rjw_genes_cum_eater - Carriers of this gene are able to absorb fertilin through eating cum. This includes oral sex, eating cum for food or sucking out cumflated pawns. + Carriers of this gene are able to absorb fertilin through eating cum. Things/Mote/Heart rjw_genes_lifeforce 1 @@ -187,7 +187,7 @@ rjw_genes_drainer - Carriers of this gene are able to absorb a great amount of fertilin by draining the vitality of the partner. This is done passively through having sex with a non-drained pawn that does not have this gene. + Carriers of this gene are able to absorb a great amount of fertilin by draining the vitality of the partner. Things/Mote/Heart rjw_genes_lifeforce 4 diff --git a/Common/Defs/HediffDefs/Hediffs_Fertilin.xml b/Common/Defs/HediffDefs/Hediffs_Fertilin.xml index 8c29092..cb01a23 100644 --- a/Common/Defs/HediffDefs/Hediffs_Fertilin.xml +++ b/Common/Defs/HediffDefs/Hediffs_Fertilin.xml @@ -45,13 +45,13 @@ rjw_genes_succubus_drained HediffWithComps - The vitality of this pawn has been drained. Cannot be drained again until fully recovered. + The vitality of this pawn has been drained. (1,0,0.5) 1.0 1.0
  • - -0.25 + -1.0
  • @@ -63,10 +63,6 @@ -0.1 - 0.1 - - -0.1 -
  • 0.5 @@ -77,11 +73,6 @@ -0.2
  • - 0.05 - 0.20 - - -0.1 -
  • 0.8 @@ -89,15 +80,9 @@
  • Consciousness - -0.3 + -0.4
  • - - -0.2 - - 0.05 - 0.1 - 0.35
    diff --git a/Common/Defs/JobDefs/Jobs_LifeForce.xml b/Common/Defs/JobDefs/Jobs_LifeForce.xml index 13dd1e3..3e35062 100644 --- a/Common/Defs/JobDefs/Jobs_LifeForce.xml +++ b/Common/Defs/JobDefs/Jobs_LifeForce.xml @@ -11,7 +11,7 @@ rjw_genes_lifeforce_healpussy RJW_Genes.JobDriver_CastAbilityAfterSex - Tending someones wounds with sex. + Healing someone with sex. false diff --git a/Common/Defs/ThoughtDefs/Thoughts_LifeForce.xml b/Common/Defs/ThoughtDefs/Thoughts_LifeForce.xml index f7a3d6b..a43d67f 100644 --- a/Common/Defs/ThoughtDefs/Thoughts_LifeForce.xml +++ b/Common/Defs/ThoughtDefs/Thoughts_LifeForce.xml @@ -10,7 +10,7 @@
  • - My cock was eaten directly of my body, I am devestated. This is not what good head feels like. + My cock was eaten directly of my body, I am devestated. -30
  • diff --git a/Source/Animal_Inheritance/Defs/BestialityGeneInheritanceDef.cs b/Source/Animal_Inheritance/BestialityGeneInheritanceDef.cs similarity index 100% rename from Source/Animal_Inheritance/Defs/BestialityGeneInheritanceDef.cs rename to Source/Animal_Inheritance/BestialityGeneInheritanceDef.cs diff --git a/Source/Animal_Inheritance/Patches/Patch_RJW_BestialityPregnancyUtility.cs b/Source/Animal_Inheritance/PatchRJWBestialityPregnancyUtility.cs similarity index 96% rename from Source/Animal_Inheritance/Patches/Patch_RJW_BestialityPregnancyUtility.cs rename to Source/Animal_Inheritance/PatchRJWBestialityPregnancyUtility.cs index c5f6366..da5ac8d 100644 --- a/Source/Animal_Inheritance/Patches/Patch_RJW_BestialityPregnancyUtility.cs +++ b/Source/Animal_Inheritance/PatchRJWBestialityPregnancyUtility.cs @@ -11,7 +11,7 @@ using rjw; namespace RJW_BGS { [HarmonyPatch(typeof(Hediff_BasePregnancy), "Initialize")] - public static class Patch_RJW_BestialityPregnancyUtility + public static class PatchRJWBestialityPregnancyUtility { [HarmonyPostfix] public static void AddGenes(Pawn mother, Pawn dad, ref Hediff_BasePregnancy __instance) diff --git a/Source/Animal_Inheritance/Patches/Patch_RJW_HediffInsect_Egg.cs b/Source/Animal_Inheritance/PatchRJWHediffInsect_Egg.cs similarity index 96% rename from Source/Animal_Inheritance/Patches/Patch_RJW_HediffInsect_Egg.cs rename to Source/Animal_Inheritance/PatchRJWHediffInsect_Egg.cs index 9861537..587571f 100644 --- a/Source/Animal_Inheritance/Patches/Patch_RJW_HediffInsect_Egg.cs +++ b/Source/Animal_Inheritance/PatchRJWHediffInsect_Egg.cs @@ -7,7 +7,7 @@ using rjw; namespace RJW_BGS { [HarmonyPatch(typeof(Hediff_InsectEgg), "GiveBirth")] - public static class Patch_RJW_HediffInsect_Egg + public static class PatchRJWHediffInsect_Egg { [HarmonyTranspiler] public static IEnumerable Transpiler(IEnumerable instructions) diff --git a/Source/Animal_Inheritance/Patches/Patch_Vanilla_PregnancyUtility.cs b/Source/Animal_Inheritance/PatchVanillaPregnancyUtility.cs similarity index 95% rename from Source/Animal_Inheritance/Patches/Patch_Vanilla_PregnancyUtility.cs rename to Source/Animal_Inheritance/PatchVanillaPregnancyUtility.cs index 28f872f..afbfa09 100644 --- a/Source/Animal_Inheritance/Patches/Patch_Vanilla_PregnancyUtility.cs +++ b/Source/Animal_Inheritance/PatchVanillaPregnancyUtility.cs @@ -19,7 +19,7 @@ namespace RJW_BGS //typeof(bool) } )] - public static class Patch_Vanilla_PregnancyUtility + public static class PatchVanillaPregnancyUtility { [HarmonyPostfix] public static void AnimalInheritedGenes(Pawn father, Pawn mother, ref GeneSet __result) diff --git a/Source/Animal_Inheritance/Settings/RJW_BGSSettings.cs b/Source/Animal_Inheritance/RJW_BGSSettings.cs similarity index 100% rename from Source/Animal_Inheritance/Settings/RJW_BGSSettings.cs rename to Source/Animal_Inheritance/RJW_BGSSettings.cs diff --git a/Source/Animal_Inheritance/Settings/RJW_BGSSettingsController.cs b/Source/Animal_Inheritance/RJW_BGSSettingsController.cs similarity index 100% rename from Source/Animal_Inheritance/Settings/RJW_BGSSettingsController.cs rename to Source/Animal_Inheritance/RJW_BGSSettingsController.cs diff --git a/Source/Animal_Inheritance/Defs/RaceGeneDef.cs b/Source/Animal_Inheritance/RaceGeneDef.cs similarity index 100% rename from Source/Animal_Inheritance/Defs/RaceGeneDef.cs rename to Source/Animal_Inheritance/RaceGeneDef.cs diff --git a/Source/Animal_Inheritance/Defs/RaceGeneDef_Helper.cs b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs similarity index 100% rename from Source/Animal_Inheritance/Defs/RaceGeneDef_Helper.cs rename to Source/Animal_Inheritance/RaceGeneDef_Helper.cs diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index f8a84f1..7637d57 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -87,7 +87,6 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_drainer; public static readonly GeneDef rjw_genes_seduce; public static readonly GeneDef rjw_genes_paralysingkiss; - public static readonly GeneDef rjw_genes_cockeater; // Cosmetic public static readonly GeneDef rjw_genes_succubus_tail; diff --git a/Source/Genes/GeneUtility.cs b/Source/Genes/GeneUtility.cs index 66cfd74..9ec55c4 100644 --- a/Source/Genes/GeneUtility.cs +++ b/Source/Genes/GeneUtility.cs @@ -38,7 +38,6 @@ namespace RJW_Genes } } - public static bool HasLowLifeForce(Pawn pawn) { if (HasLifeForce(pawn)) @@ -119,7 +118,5 @@ namespace RJW_Genes public static bool HasParalysingKiss(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_paralysingkiss); } public static bool HasSeduce(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_seduce); } public static bool IsSexualDrainer(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_drainer); } - public static bool IsCumEater(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_cum_eater); } - } } \ No newline at end of file diff --git a/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CockEater.cs b/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CockEater.cs index dc0f0fa..d4d12ea 100644 --- a/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CockEater.cs +++ b/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CockEater.cs @@ -1,17 +1,16 @@ -using Verse; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using UnityEngine; using RimWorld; using rjw; +using rjw.Modules.Interactions.Helpers; namespace RJW_Genes { - /// - /// The CockEater Ability bites off the first found non-artifical cock of an target pawn. - /// It will restore {MINIMUM_LIFEFORCE_GAIN} multiplied by up to 2-times the Cock-Size. - /// Consuming a "towering" cock will give 2*{MINIMUM_LIFEFORCE_GAIN}, resulting in default 0.5f LifeForce. - /// This number is reduced for consuming animals by Settings. - /// - /// Balancing note: With the Cock-Eaters a drain of 0.08 is normal per day. This means 1 average cock should hold for 3-4 days of fertilin-fuel and half a day for an animal. - /// public class CompAbilityEffect_CockEater : CompAbilityEffect { private new CompProperties_AbilityCockEater Props @@ -21,20 +20,16 @@ namespace RJW_Genes return (CompProperties_AbilityCockEater)this.props; } } - - public const float MINIMUM_LIFEFORCE_GAIN = 0.25f; - public override void Apply(LocalTargetInfo target, LocalTargetInfo dest) { base.Apply(target, dest); - Pawn CockBiter = this.parent.pawn; - Pawn CockBittenPawn = target.Pawn; - if (CockBittenPawn == null) + Pawn pawn = target.Pawn; + if (pawn == null) { return; } - var partBPR = Genital_Helper.get_genitalsBPR(CockBittenPawn); - var parts = Genital_Helper.get_PartsHediffList(CockBittenPawn, partBPR); + var partBPR = Genital_Helper.get_genitalsBPR(pawn); + var parts = Genital_Helper.get_PartsHediffList(pawn, partBPR); if (!parts.NullOrEmpty()) { foreach (Hediff part in parts) @@ -44,67 +39,50 @@ namespace RJW_Genes if (Genital_Helper.is_penis(part)) { - float gained_lifeforce = MINIMUM_LIFEFORCE_GAIN * (1 + part.Severity); - if (CockBittenPawn.IsAnimal()) - { - gained_lifeforce *= RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor; - } - // Increase LifeForce for Biter - GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(CockBiter), gained_lifeforce); - - // Handle Damage for Bitten - CockBittenPawn.health.RemoveHediff(part); - CockBittenPawn.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.rjw_genes_cock_eaten, CockBittenPawn, null); - - //Only one penis at the time - break; + GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(this.parent.pawn), part.Severity); ; + pawn.health.RemoveHediff(part); + pawn.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.rjw_genes_cock_eaten, pawn, null); + break; //Only one penis at the time } } + } } - /// - /// For validity, there are a few checks: - /// 1. Target has Penis - /// 2. Target is either Colonist / Prisoner - /// 3. If the Target is an enemy, it must be downed. - /// public override bool Valid(LocalTargetInfo target, bool throwMessages = false) { - Pawn CockBiteTarget = target.Pawn; - if (CockBiteTarget != null) + Pawn pawn = target.Pawn; + if (pawn != null) { - bool CockBiteTargetIsColonistOrPrisoner = CockBiteTarget.Faction == this.parent.pawn.Faction || CockBiteTarget.IsPrisonerOfColony; - bool CockBiteTargetIsHostile = CockBiteTarget.HostileTo(this.parent.pawn); - bool CockBiteTargetIsDowned = CockBiteTarget.Downed; - - if (!CockBiteTargetIsColonistOrPrisoner && !(CockBiteTargetIsHostile && CockBiteTargetIsDowned)) + bool flag = pawn.Faction == this.parent.pawn.Faction || pawn.IsPrisonerOfColony; + bool flag2 = pawn.HostileTo(this.parent.pawn); + bool flag3 = pawn.Downed; + if (!flag && !(flag2 && flag3)) { if (throwMessages) { - if(CockBiteTargetIsHostile && !CockBiteTargetIsDowned) + if(flag2 && !flag3) { - Messages.Message(CockBiteTarget.Name + " is hostile, but not downed.", CockBiteTarget, MessageTypeDefOf.RejectInput, false); + Messages.Message(pawn.Name + " is hostile, but not downed.", pawn, MessageTypeDefOf.RejectInput, false); } - else if (!CockBiteTargetIsColonistOrPrisoner) + else if (!flag) { - Messages.Message(CockBiteTarget.Name + " is not a part of the colony or hostile.", CockBiteTarget, MessageTypeDefOf.RejectInput, false); + Messages.Message(pawn.Name + " is not a part of the colony or hostile.", pawn, MessageTypeDefOf.RejectInput, false); } } return false; } - if (!Genital_Helper.has_penis_fertile(CockBiteTarget)) + if (!Genital_Helper.has_penis_fertile(pawn)) { if (throwMessages) { - Messages.Message(CockBiteTarget.Name + " has no penis", CockBiteTarget, MessageTypeDefOf.RejectInput, false); + Messages.Message(pawn.Name + " has no penis", pawn, MessageTypeDefOf.RejectInput, false); } return false; } } return base.Valid(target, throwMessages); } - public override bool GizmoDisabled(out string reason) { Pawn_GeneTracker genes = this.parent.pawn.genes; diff --git a/Source/Genes/Life_Force/Abilities/CompAbilityEffect_PussyHeal.cs b/Source/Genes/Life_Force/Abilities/CompAbilityEffect_PussyHeal.cs index fdb0c7c..009588d 100644 --- a/Source/Genes/Life_Force/Abilities/CompAbilityEffect_PussyHeal.cs +++ b/Source/Genes/Life_Force/Abilities/CompAbilityEffect_PussyHeal.cs @@ -1,7 +1,13 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; using Verse; +using UnityEngine; using RimWorld; using rjw; +using rjw.Modules.Interactions.Helpers; namespace RJW_Genes { @@ -25,8 +31,11 @@ namespace RJW_Genes bool any_wound_tended = AbilityUtility.Heal(pawn, this.Props.tendQualityRange); if (any_wound_tended) { - MoteMaker.ThrowText(pawn.DrawPos, pawn.Map, "Sex tended wounds", 3.65f); + MoteMaker.ThrowText(pawn.DrawPos, pawn.Map, "Sex healed wounds", 3.65f); + //pawn.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.Pussy_Healed, pawn, null); } + //this.AfterSex(any_wound_tended); + //FleckMaker.AttachedOverlay(pawn, FleckDefOf.FlashHollow, Vector3.zero, 1.5f, -1f); } //Not yet implemented, but the heal should also trigger after normal sex @@ -68,7 +77,7 @@ namespace RJW_Genes } return false; } - //TODO: Only make pawns targetable that have tendable wounds + //AbilityUtility.ValidateHasTendableWound(pawn, throwMessages, this.parent); } return base.Valid(target, throwMessages); diff --git a/Source/Genes/Life_Force/UI/Alert_LowFertilin.cs b/Source/Genes/Life_Force/Alert_LowFertilin.cs similarity index 100% rename from Source/Genes/Life_Force/UI/Alert_LowFertilin.cs rename to Source/Genes/Life_Force/Alert_LowFertilin.cs diff --git a/Source/Genes/Life_Force/UI/GeneGizmo_ResourceLifeForce.cs b/Source/Genes/Life_Force/GeneGizmo_ResourceLifeForce.cs similarity index 100% rename from Source/Genes/Life_Force/UI/GeneGizmo_ResourceLifeForce.cs rename to Source/Genes/Life_Force/GeneGizmo_ResourceLifeForce.cs diff --git a/Source/Genes/Life_Force/Genes/Gene_LifeForce.cs b/Source/Genes/Life_Force/Gene_LifeForce.cs similarity index 100% rename from Source/Genes/Life_Force/Genes/Gene_LifeForce.cs rename to Source/Genes/Life_Force/Gene_LifeForce.cs diff --git a/Source/Genes/Life_Force/Genes/Gene_LifeForceDrain.cs b/Source/Genes/Life_Force/Gene_LifeForceDrain.cs similarity index 100% rename from Source/Genes/Life_Force/Genes/Gene_LifeForceDrain.cs rename to Source/Genes/Life_Force/Gene_LifeForceDrain.cs diff --git a/Source/Genes/Life_Force/Events/SuccubusVisit/IncidentWorker_SuccubusDreamVisit.cs b/Source/Genes/Life_Force/IncidentWorker_SuccubusDreamVisit.cs similarity index 100% rename from Source/Genes/Life_Force/Events/SuccubusVisit/IncidentWorker_SuccubusDreamVisit.cs rename to Source/Genes/Life_Force/IncidentWorker_SuccubusDreamVisit.cs diff --git a/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs b/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs index fdfdefd..f3e50f1 100644 --- a/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs +++ b/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs @@ -1,22 +1,23 @@ -using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using RimWorld; using Verse; namespace RJW_Genes { - /// - /// This class checks for pawns with LifeForce and Cumeater Gene to add Fertilin when eating cum (the Item from RJW-Sexperience). - /// public class IngestionOutcomeDoer_LifeForceOffset : IngestionOutcomeDoer - { - public const float FERTILIN_PER_UNIT = 1f; - + { protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested) { - if (GeneUtility.HasLifeForce(pawn) && GeneUtility.IsCumEater(pawn)) + if (GeneUtility.HasLifeForce(pawn) && GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_cum_eater)) { - float num = ingested.stackCount * FERTILIN_PER_UNIT / 100; + float num = ingested.stackCount * this.FertilinPerUnit / 100; GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(pawn), num); } } + public float FertilinPerUnit = 1f; } } diff --git a/Source/Genes/Life_Force/JobGivers/JobGiver_Flirt.cs b/Source/Genes/Life_Force/JobGiver_Flirt.cs similarity index 100% rename from Source/Genes/Life_Force/JobGivers/JobGiver_Flirt.cs rename to Source/Genes/Life_Force/JobGiver_Flirt.cs diff --git a/Source/Genes/Life_Force/JobGivers/JobGiver_GetLifeForce.cs b/Source/Genes/Life_Force/JobGiver_GetLifeForce.cs similarity index 96% rename from Source/Genes/Life_Force/JobGivers/JobGiver_GetLifeForce.cs rename to Source/Genes/Life_Force/JobGiver_GetLifeForce.cs index 3c0eff6..3cb781b 100644 --- a/Source/Genes/Life_Force/JobGivers/JobGiver_GetLifeForce.cs +++ b/Source/Genes/Life_Force/JobGiver_GetLifeForce.cs @@ -39,7 +39,7 @@ namespace RJW_Genes { return null; } - int num = Mathf.RoundToInt(((gene_lifeforce.targetValue - gene_lifeforce.Value) * 100 + 10) / IngestionOutcomeDoer_LifeForceOffset.FERTILIN_PER_UNIT); + int num = Mathf.RoundToInt(((gene_lifeforce.targetValue - gene_lifeforce.Value) * 100 + 10) / ingestionOutcomeDoer.FertilinPerUnit); if (gatheredCum != null && num > 0) { Job job = JobMaker.MakeJob(RimWorld.JobDefOf.Ingest, gatheredCum); diff --git a/Source/Genes/Life_Force/JobGivers/JobGiver_LifeForce_RandomRape.cs b/Source/Genes/Life_Force/JobGiver_LifeForce_RandomRape.cs similarity index 100% rename from Source/Genes/Life_Force/JobGivers/JobGiver_LifeForce_RandomRape.cs rename to Source/Genes/Life_Force/JobGiver_LifeForce_RandomRape.cs diff --git a/Source/Genes/Life_Force/JobGivers/JobGiver_TryQuickieWith.cs b/Source/Genes/Life_Force/JobGiver_TryQuickieWith.cs similarity index 100% rename from Source/Genes/Life_Force/JobGivers/JobGiver_TryQuickieWith.cs rename to Source/Genes/Life_Force/JobGiver_TryQuickieWith.cs diff --git a/Source/Genes/Life_Force/MentalStates/LifeForceMentalBreakWorker.cs b/Source/Genes/Life_Force/LifeForceMentalBreakWorker.cs similarity index 100% rename from Source/Genes/Life_Force/MentalStates/LifeForceMentalBreakWorker.cs rename to Source/Genes/Life_Force/LifeForceMentalBreakWorker.cs diff --git a/Source/Genes/Life_Force/MentalStates/LifeForceMentalState.cs b/Source/Genes/Life_Force/LifeForceMentalState.cs similarity index 100% rename from Source/Genes/Life_Force/MentalStates/LifeForceMentalState.cs rename to Source/Genes/Life_Force/LifeForceMentalState.cs diff --git a/Source/Genes/Life_Force/MentalStates/LifeForceMentalStateWorker.cs b/Source/Genes/Life_Force/LifeForceMentalStateWorker.cs similarity index 100% rename from Source/Genes/Life_Force/MentalStates/LifeForceMentalStateWorker.cs rename to Source/Genes/Life_Force/LifeForceMentalStateWorker.cs diff --git a/Source/Genes/Life_Force/Events/SuccubusVisit/LordJob_SuccubusVisit.cs b/Source/Genes/Life_Force/LordJob_SuccubusVisit.cs similarity index 100% rename from Source/Genes/Life_Force/Events/SuccubusVisit/LordJob_SuccubusVisit.cs rename to Source/Genes/Life_Force/LordJob_SuccubusVisit.cs diff --git a/Source/Genes/Life_Force/Patches/Patch_SatisfyPersonal_LifeForceGain.cs b/Source/Genes/Life_Force/Patch_LifeForce.cs similarity index 55% rename from Source/Genes/Life_Force/Patches/Patch_SatisfyPersonal_LifeForceGain.cs rename to Source/Genes/Life_Force/Patch_LifeForce.cs index b368c1b..cc4da8e 100644 --- a/Source/Genes/Life_Force/Patches/Patch_SatisfyPersonal_LifeForceGain.cs +++ b/Source/Genes/Life_Force/Patch_LifeForce.cs @@ -1,19 +1,18 @@ using HarmonyLib; using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; using RimWorld; using Verse; - namespace RJW_Genes { - /// - /// This Patch hooks after "SatisfyPersonal"(i.E. when the pawn finished fucking) and covers LifeForceGain. - /// If the pawn has LifeForce, all relevant Genes are checked and applied. - /// - [HarmonyPatch(typeof(SexUtility), nameof(SexUtility.SatisfyPersonal))] - public static class Patch_SatisfyPersonal_LifeForceGain - { - public const float LIFEFORCE_GAINED_FROM_DRAINER_GENE = 0.25f; + [HarmonyPatch(typeof(SexUtility), nameof(SexUtility.SatisfyPersonal))] + public static class Patch_LifeForce + { public static void Postfix(SexProps props) { // ShortCuts: Exit Early if Pawn or Partner are null (can happen with Animals or Masturbation) @@ -29,22 +28,23 @@ namespace RJW_Genes //Summary// //We use the positions of the pawn (dom or sub) and based on that which interactions will transfer fertilin //By checking isreceiver we know if the succubus is the dom or the sub and if the situation is reverse we also swap the function we use + // float absorb_factor = 0f; if (GeneUtility.HasLifeForce(props.partner)) { - Pawn PawnWithLifeForce = props.partner; + Pawn succubus = props.partner; if (!props.isRevese) { if (props.isReceiver) { // Scenario Dom Succubus, normal - absorb_factor = BaseDom(props, PawnWithLifeForce); + absorb_factor = BaseDom(props, succubus); } else { // Scenario Sub Succubus, normal - absorb_factor = BaseSub(props, PawnWithLifeForce); + absorb_factor = BaseSub(props, succubus); } } else @@ -52,40 +52,32 @@ namespace RJW_Genes if (props.isReceiver) { // Scenario Dom Succubus, Reverse - absorb_factor = BaseSub(props, PawnWithLifeForce); + absorb_factor = BaseSub(props, succubus); } else { // Scenario Sub Succubus, Reverse - absorb_factor = BaseDom(props, PawnWithLifeForce); + absorb_factor = BaseDom(props, succubus); } } - // If we remove this check fertilin is always lost, but the succubus doesn't always gain any + //If we remove this check fertelin is always lost, but the succubus doesn't always gain any if (absorb_factor != 0f) { TransferFertilin(props, absorb_factor); } - // Handle Gene: Sexual_Drainer - // to be drained, a pawn must not-be-drained-already and drainers cannot be drained either. - if (GeneUtility.IsSexualDrainer(PawnWithLifeForce) - && !props.pawn.health.hediffSet.HasHediff(HediffDefOf.rjw_genes_succubus_drained) - && !GeneUtility.IsSexualDrainer(props.pawn)) + if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_drainer) && !props.pawn.health.hediffSet.HasHediff(HediffDefOf.rjw_genes_succubus_drained)) { - if (RJW_Genes_Settings.rjw_genes_detailed_debug) - ModLog.Message($"{props.pawn.Name} has been (sexually) drained by {PawnWithLifeForce.Name}"); props.pawn.health.AddHediff(HediffDefOf.rjw_genes_succubus_drained); - GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(PawnWithLifeForce), LIFEFORCE_GAINED_FROM_DRAINER_GENE); + GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(succubus), 0.25f); } } } - public static void TransferFertilin(SexProps props, float absorb_percentage = 1f) { Pawn_GeneTracker genes = props.partner.genes; Gene_LifeForce gene = genes.GetFirstGeneOfType(); - Hediff fertilin_lost = props.pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_fertilin_lost); //Around quarter get ejected everytime pawn cums float multiplier = Rand.Range(0.10f, 0.40f); @@ -107,15 +99,8 @@ namespace RJW_Genes multiplier *= absorb_percentage; //Currently taking the sum of all penises, maybe I should just consider one at random float valuechange = TotalFertilinAmount(props, multiplier); - - if (props.partner.IsAnimal()) - { - if (RJW_Genes_Settings.rjw_genes_detailed_debug) - ModLog.Message($"Fertilin-Source of {props.pawn.Name} was an Animal, Fertilin-Gain is being adjusted by {RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor}%"); - valuechange *= RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor; - } - GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(props.partner), valuechange); + //gene.Resource.Value += CumUtility.GetTotalFluidAmount(props.pawn) / 100 * absorb_factor * multiplier; } public static float TotalFertilinAmount(SexProps props, float multiplier) @@ -135,51 +120,39 @@ namespace RJW_Genes return total_fluid; } - /// - /// Handles the Case that the Life-Force wielder initiated the Sex (They are "Dom"). - /// - /// The summary of the sex act, used for checking conditions. - /// The pawn that might gain LifeForce through this method. - /// A factor between 0 and 1 how much of output-fertilin will be used for input-lifeforce - public static float BaseDom(SexProps props, Pawn PawnWithLifeForce) + public static float BaseDom(SexProps props, Pawn succubus) { float absorb_factor = 0f; - if (props.sexType == xxx.rjwSextype.Sixtynine && GeneUtility.IsCumEater(PawnWithLifeForce)) + if (props.sexType == xxx.rjwSextype.Sixtynine && GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_cum_eater)) { absorb_factor += 1f; } return absorb_factor; } - /// - /// Handles the Case that the Life-Force wielder got initiated into sex (They are "Sub"). - /// - /// The summary of the sex act, used for checking conditions. - /// The pawn that might gain LifeForce through this method. - /// A factor between 0 and 1 how much of output-fertilin will be used for input-lifeforce - public static float BaseSub(SexProps props, Pawn PawnWithLifeForce) + public static float BaseSub(SexProps props, Pawn succubus) { float absorb_factor = 0f; if ((props.sexType == xxx.rjwSextype.Oral || props.sexType == xxx.rjwSextype.Fellatio || props.sexType == xxx.rjwSextype.Sixtynine) - && GeneUtility.IsCumEater(PawnWithLifeForce)) + && GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_cum_eater)) { absorb_factor += 1f; } - else if (props.sexType == xxx.rjwSextype.Vaginal && GeneUtility.HasGeneNullCheck(PawnWithLifeForce, GeneDefOf.rjw_genes_vaginal_absorber)) + else if (props.sexType == xxx.rjwSextype.Vaginal && GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_vaginal_absorber)) { absorb_factor += 1f; } - else if (props.sexType == xxx.rjwSextype.Anal && GeneUtility.HasGeneNullCheck(PawnWithLifeForce, GeneDefOf.rjw_genes_anal_absorber)) + else if (props.sexType == xxx.rjwSextype.Anal && GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_anal_absorber)) { absorb_factor += 1f; } else if (props.sexType == xxx.rjwSextype.DoublePenetration) { - if (GeneUtility.HasGeneNullCheck(PawnWithLifeForce, GeneDefOf.rjw_genes_vaginal_absorber)) + if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_vaginal_absorber)) { absorb_factor += 0.5f; } - if (GeneUtility.HasGeneNullCheck(PawnWithLifeForce, GeneDefOf.rjw_genes_anal_absorber)) + if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_anal_absorber)) { absorb_factor += 0.5f; } diff --git a/Source/Genes/Life_Force/Patch_SexTicks_ChangePsyfocus.cs b/Source/Genes/Life_Force/Patch_SexTicks_ChangePsyfocus.cs new file mode 100644 index 0000000..ea0d9d6 --- /dev/null +++ b/Source/Genes/Life_Force/Patch_SexTicks_ChangePsyfocus.cs @@ -0,0 +1,57 @@ +using HarmonyLib; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using RimWorld; +using Verse; + +namespace RJW_Genes +{ + + //[HarmonyPatch(typeof(JobDriver_Sex), nameof(JobDriver_Sex.ChangePsyfocus))] + public static class Patch_SexTicks_ChangePsyfocus + { + //Using ChangePsyfocus as it is something that fires every 60 ticks + public static void Postfix(ref JobDriver_Sex __instance, ref Pawn pawn, ref Thing target) + { + if (__instance.Sexprops.sexType == xxx.rjwSextype.Cunnilingus) + { + if (target != null) + { + Pawn pawn2 = target as Pawn; + if (pawn2 != null) + { + //We need to know who the pawn on top is and if reverse we need to make the sub the pawn on top + if (__instance.Sexprops.isRevese) + { + + DrinkCumflation(pawn2, pawn); + } + else + { + // + DrinkCumflation(pawn, pawn2); + return; + } + } + } + + } + } + + public static void DrinkCumflation(Pawn dom, Pawn sub) + { + if (GeneUtility.HasLifeForce(sub) && GeneUtility.HasGeneNullCheck(sub,GeneDefOf.rjw_genes_cum_eater)&& dom.health.hediffSet.HasHediff(HediffDef.Named("Cumflation"))) + { + Hediff cumflation = dom.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("Cumflation")); + Gene_LifeForce gene_LifeForce = sub.genes.GetFirstGeneOfType(); + cumflation.Severity -= 0.1f; + gene_LifeForce.Resource.Value += 0.05f; + } + } + //Maybe I can store gene and hediff so I dont need to look them up every time + } +} diff --git a/Source/Genes/Life_Force/Patch_Vanilla_Inheritance_Fertilin.cs b/Source/Genes/Life_Force/Patch_Vanilla_Inheritance_Fertilin.cs new file mode 100644 index 0000000..94c427f --- /dev/null +++ b/Source/Genes/Life_Force/Patch_Vanilla_Inheritance_Fertilin.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using HarmonyLib; +using RimWorld; +using Verse; + +namespace RJW_Genes +{ + /// + /// This Patch is applied to add a absorption gene for fertilin if it has none, but it does have the fertilin gene + /// First tries to get one from the parents else chooses one of them at random + /// the genes are determined and "simply added". + /// + [HarmonyPatch(typeof(PregnancyUtility), "GetInheritedGeneSet", new Type[] + { + typeof(Pawn), + typeof(Pawn), + //typeof(bool) + } + )] + public static class PatchVanillaPregnancyFertilin + { + [HarmonyPostfix] + public static void InheritedGenes(Pawn father, Pawn mother, ref GeneSet __result) + { + //Also make a setting for this + if (__result.GenesListForReading.Contains(GeneDefOf.rjw_genes_lifeforce)) + { + List gene_list = __result.GenesListForReading; + + //If no absorption gene get one from the parents, else a random one + if(!(gene_list.Contains(GeneDefOf.rjw_genes_drainer) || gene_list.Contains(GeneDefOf.rjw_genes_cum_eater) + || gene_list.Contains(GeneDefOf.rjw_genes_vaginal_absorber) || gene_list.Contains(GeneDefOf.rjw_genes_anal_absorber))) + { + List absorption_genes_list = new List { GeneDefOf.rjw_genes_drainer, GeneDefOf.rjw_genes_cum_eater + , GeneDefOf.rjw_genes_vaginal_absorber, GeneDefOf.rjw_genes_anal_absorber }; + List absorption_genes_parents = new List(); + foreach (GeneDef geneDef in absorption_genes_list) + { + if(mother.genes != null && mother.genes.HasGene(geneDef)) + { + absorption_genes_parents.Add(geneDef); + } + if (father.genes != null && father.genes.HasGene(geneDef)) + { + absorption_genes_parents.Add(geneDef); + } + } + if (!absorption_genes_parents.NullOrEmpty()) + { + __result.AddGene(absorption_genes_parents.RandomElement()); + } + else + { + __result.AddGene(absorption_genes_list.RandomElement()); + } + } + } + } + } +} diff --git a/Source/Genes/Life_Force/Patches/Patch_SexTicks_ChangePsyfocus.cs b/Source/Genes/Life_Force/Patches/Patch_SexTicks_ChangePsyfocus.cs deleted file mode 100644 index dfc359b..0000000 --- a/Source/Genes/Life_Force/Patches/Patch_SexTicks_ChangePsyfocus.cs +++ /dev/null @@ -1,62 +0,0 @@ -using HarmonyLib; -using rjw; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using Verse; - -namespace RJW_Genes -{ - - /// - /// This patch enables cum-eater pawns to drain cumflations for more fertilin drain by passively having sex. - /// It is hooked after RJWs Change-Psyfocus so that pawns that are having prolonged sex (e.g. by overdrive) can fully drain the cumflation over time. - /// - /// It is conditionally loaded only when LicentiaLabs is enabled, as this is the necessary source for cumflation-hediffs. - /// The patched function is: [HarmonyPatch(typeof(JobDriver_Sex), nameof(JobDriver_Sex.ChangePsyfocus))] - /// - public static class Patch_SexTicks_ChangePsyfocus - { - public const float LIFEFORCE_GAIN_PER_TICK = 0.05f; - public const float CUMFLATION_SEVERITY_LOSS_PER_TICK = 0.1f; - - //Using ChangePsyfocus as it is something that fires every 60 ticks - public static void Postfix(ref JobDriver_Sex __instance, ref Pawn pawn, ref Thing target) - { - SexProps props = __instance.Sexprops; - if (props != null && props.sexType == xxx.rjwSextype.Cunnilingus && props.partner != null && target != null) - { - Pawn pawn2 = target as Pawn; - // Case 1: Pawn is "drinking" and has CumEater Gene - if (props.isRevese && GeneUtility.IsCumEater(pawn)) - { - if (RJW_Genes_Settings.rjw_genes_detailed_debug) - ModLog.Message($"{pawn.Name} is draining {pawn2.Name}'s cumflation for additional fertilin (CumEater-Gene ChangePsyFocus-Trigger)."); - DrinkCumflation(pawn2, pawn); - } - // Case 2: Pawn2 is "drinking" and has CumEater Gene - else if (GeneUtility.IsCumEater(pawn2)) - { - if (RJW_Genes_Settings.rjw_genes_detailed_debug) - ModLog.Message($"{pawn.Name} is draining {pawn2.Name}'s cumflation for additional fertilin (CumEater-Gene ChangePsyFocus-Trigger)."); - DrinkCumflation(pawn, pawn2); - } - } - } - - public static void DrinkCumflation(Pawn source, Pawn consumer) - { - if (GeneUtility.HasLifeForce(consumer) && GeneUtility.IsCumEater(consumer) - && source.health.hediffSet.HasHediff(HediffDef.Named("Cumflation"))) - { - Hediff cumflation = source.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("Cumflation")); - Gene_LifeForce gene_LifeForce = consumer.genes.GetFirstGeneOfType(); - cumflation.Severity = Math.Max(0f,cumflation.Severity - CUMFLATION_SEVERITY_LOSS_PER_TICK); - gene_LifeForce.Resource.Value += LIFEFORCE_GAIN_PER_TICK; - } - } - } -} diff --git a/Source/Genes/Life_Force/Patches/Patch_Vanilla_Inheritance_Fertilin.cs b/Source/Genes/Life_Force/Patches/Patch_Vanilla_Inheritance_Fertilin.cs deleted file mode 100644 index 6bb3c92..0000000 --- a/Source/Genes/Life_Force/Patches/Patch_Vanilla_Inheritance_Fertilin.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using HarmonyLib; -using RimWorld; -using Verse; - -namespace RJW_Genes -{ - /// - /// This Patch is applied to add a absorption gene for fertilin if it has none, but it does have the fertilin gene - /// First tries to get one from the parents else chooses one of them at random - /// the genes are determined and "simply added". - /// - /// This fixes the potential problem that Pawns could inherit Fertilin, but no gene to gain Fertilin. - /// - [HarmonyPatch(typeof(PregnancyUtility), "GetInheritedGeneSet", new Type[] - { - typeof(Pawn), - typeof(Pawn) - } - )] - public static class Patch_Vanilla_Inheritance_Fertilin - { - [HarmonyPostfix] - public static void InheritedGenes(Pawn father, Pawn mother, ref GeneSet __result) - { - //Also make a setting for this - if (__result.GenesListForReading.Contains(GeneDefOf.rjw_genes_lifeforce)) - { - List babies_genes = __result.GenesListForReading; - - //If there is no absorption gene get one from the parents, else a random one - if(!Has_Fertilin_Source_Gene(babies_genes)) - { - if (RJW_Genes_Settings.rjw_genes_detailed_debug) - ModLog.Message($"Child of ({father.Name};{mother.Name}) has Genes with LifeForce-Resource but no Source-Gene, adding one of parents random if possible or any random otherwise."); - // Gather Parents Source-Genes - List absorption_genes_parents = new List(); - foreach (GeneDef geneDef in FertilinSourceGenes) - { - if(mother.genes != null && mother.genes.HasGene(geneDef)) - absorption_genes_parents.Add(geneDef); - - if (father.genes != null && father.genes.HasGene(geneDef)) - absorption_genes_parents.Add(geneDef); - } - // Parents had Genes - Pick a random one of them - if (!absorption_genes_parents.NullOrEmpty()) - __result.AddGene(absorption_genes_parents.RandomElement()); - // Create a fully random one for your little Cumfueled missbreed - else - __result.AddGene(FertilinSourceGenes.RandomElement()); - } - } - } - - private static List FertilinSourceGenes = new List() { - GeneDefOf.rjw_genes_drainer, - GeneDefOf.rjw_genes_cum_eater, - GeneDefOf.rjw_genes_vaginal_absorber, - GeneDefOf.rjw_genes_anal_absorber, - GeneDefOf.rjw_genes_cockeater - }; - - private static bool Has_Fertilin_Source_Gene(List genes) - { - foreach (GeneDef gene in genes) - { - if (FertilinSourceGenes.Contains(gene)) - { - return true; - } - } - return false; - } - - - } -} diff --git a/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalCannotInteract.cs b/Source/Genes/Life_Force/ThinkNode_ConditionalCannotInteract.cs similarity index 100% rename from Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalCannotInteract.cs rename to Source/Genes/Life_Force/ThinkNode_ConditionalCannotInteract.cs diff --git a/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalCritcalLifeForce.cs b/Source/Genes/Life_Force/ThinkNode_ConditionalCritcalLifeForce.cs similarity index 100% rename from Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalCritcalLifeForce.cs rename to Source/Genes/Life_Force/ThinkNode_ConditionalCritcalLifeForce.cs diff --git a/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalLowLifeForce.cs b/Source/Genes/Life_Force/ThinkNode_ConditionalLowLifeForce.cs similarity index 100% rename from Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalLowLifeForce.cs rename to Source/Genes/Life_Force/ThinkNode_ConditionalLowLifeForce.cs diff --git a/Source/Genes/Life_Force/ThinkNodes/ThinkNode_NewFlirtTarget.cs b/Source/Genes/Life_Force/ThinkNode_NewFlirtTarget.cs similarity index 100% rename from Source/Genes/Life_Force/ThinkNodes/ThinkNode_NewFlirtTarget.cs rename to Source/Genes/Life_Force/ThinkNode_NewFlirtTarget.cs diff --git a/Source/Genes/Special/Patch_OrgasmRush.cs b/Source/Genes/Special/Patch_OrgasmRush.cs index eaf6216..3caaa68 100644 --- a/Source/Genes/Special/Patch_OrgasmRush.cs +++ b/Source/Genes/Special/Patch_OrgasmRush.cs @@ -19,12 +19,8 @@ namespace RJW_Genes public static void Postfix(SexProps props) { - // ShortCuts: Exit Early if Pawn or Partner are null (can happen with Masturbation or other nieche-cases) - if (props == null || props.pawn == null || !props.hasPartner()) - return; - - // Exit for Animals - Animals can't get or trigger Orgasm Rushes. Fixes #15 - if (props.pawn.IsAnimal() || props.partner.IsAnimal()) + // ShortCuts: Exit Early if Pawn or Partner are null (can happen with Animals or Masturbation) + if (props.pawn == null || !props.hasPartner()) return; if (props.pawn.genes != null && props.pawn.genes.HasGene(GeneDefOf.rjw_genes_orgasm_rush)) diff --git a/Source/HarmonyInit.cs b/Source/HarmonyInit.cs index b0f8295..8c5f3d6 100644 --- a/Source/HarmonyInit.cs +++ b/Source/HarmonyInit.cs @@ -27,7 +27,6 @@ namespace RJW_Genes // 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))); - // Gene: CumEater [Postfix Patch] harmony.Patch(AccessTools.Method(typeof(rjw.JobDriver_Sex), nameof(rjw.JobDriver_Sex.ChangePsyfocus)), postfix: new HarmonyMethod(typeof(Patch_SexTicks_ChangePsyfocus), nameof(Patch_SexTicks_ChangePsyfocus.Postfix))); } diff --git a/Source/Interactions/SuccubusTailjob/CompAbility_SexInteractionRequirements.cs b/Source/Interactions/CompAbility_SexInteractionRequirements.cs similarity index 100% rename from Source/Interactions/SuccubusTailjob/CompAbility_SexInteractionRequirements.cs rename to Source/Interactions/CompAbility_SexInteractionRequirements.cs diff --git a/Source/Interactions/SuccubusTailjob/CompProperties_SexInteractionRequirements.cs b/Source/Interactions/CompProperties_SexInteractionRequirements.cs similarity index 100% rename from Source/Interactions/SuccubusTailjob/CompProperties_SexInteractionRequirements.cs rename to Source/Interactions/CompProperties_SexInteractionRequirements.cs diff --git a/Source/Interactions/SuccubusTailjob/CustomSexInteraction_Helper.cs b/Source/Interactions/CustomSexInteraction_Helper.cs similarity index 100% rename from Source/Interactions/SuccubusTailjob/CustomSexInteraction_Helper.cs rename to Source/Interactions/CustomSexInteraction_Helper.cs diff --git a/Source/Interactions/SuccubusTailjob/DomSuccubusTailCustomRequirementHandler.cs b/Source/Interactions/DomSuccubusTailCustomRequirementHandler.cs similarity index 100% rename from Source/Interactions/SuccubusTailjob/DomSuccubusTailCustomRequirementHandler.cs rename to Source/Interactions/DomSuccubusTailCustomRequirementHandler.cs diff --git a/Source/Interactions/SuccubusTailjob/GenesPartKindUsageRule.cs b/Source/Interactions/GenesPartKindUsageRule.cs similarity index 100% rename from Source/Interactions/SuccubusTailjob/GenesPartKindUsageRule.cs rename to Source/Interactions/GenesPartKindUsageRule.cs diff --git a/Source/Interactions/SuccubusTailjob/SubSuccubusTailCustomRequirementHandler.cs b/Source/Interactions/SubSuccubusTailCustomRequirementHandler.cs similarity index 100% rename from Source/Interactions/SuccubusTailjob/SubSuccubusTailCustomRequirementHandler.cs rename to Source/Interactions/SubSuccubusTailCustomRequirementHandler.cs diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 026661f..f4ab208 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -65,14 +65,14 @@ - - - - - - - - + + + + + + + + @@ -121,62 +121,60 @@ - + - + - + - + - - + + - - - - - - - + + + + + + + - + - + - + - - - - - + + + + + - + - - - - + + + + - - diff --git a/Source/Settings/RJW_Genes_Settings.cs b/Source/Settings/RJW_Genes_Settings.cs deleted file mode 100644 index ba1d69a..0000000 --- a/Source/Settings/RJW_Genes_Settings.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using Verse; -using UnityEngine; - -namespace RJW_Genes -{ - public class RJW_Genes_Settings : ModSettings - { - public static void DoWindowContents(Rect inRect) - { - //Copied from RJW settings mostly - Rect outRect = new Rect(0f, 30f, inRect.width, inRect.height - 30f); - Rect rect = new Rect(0f, 0f, inRect.width - 16f, inRect.height + 300f); - //Widgets.BeginScrollView(outRect, ref RJWSettings.scrollPosition, rect, true); - Listing_Standard listing_Standard = new Listing_Standard(); - listing_Standard.maxOneColumn = true; - listing_Standard.ColumnWidth = rect.width / 2.05f; - listing_Standard.Begin(rect); - listing_Standard.Gap(24f); - listing_Standard.Label("Fertlin-Gain from Animals" + ": " + - Math.Round((double)(RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor * 100f), 0).ToString() + "%", -1f, "of fertilin gained (compared to human-baseline)."); - RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor = listing_Standard.Slider(RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor, 0f, 3f); - listing_Standard.Gap(5f); - listing_Standard.CheckboxLabeled("detailed-debug", ref rjw_genes_detailed_debug, "Adds detailed information to the log about interactions and genes.", 0f, 1f); - listing_Standard.End(); - } - - public override void ExposeData() - { - base.ExposeData(); - Scribe_Values.Look(ref RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor, "rjw_genes_fertilin_from_animals_factor", RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor, true); - Scribe_Values.Look(ref RJW_Genes_Settings.rjw_genes_detailed_debug, "rjw_genes_detailed_debug", RJW_Genes_Settings.rjw_genes_detailed_debug, true); - } - - public static bool rjw_genes_detailed_debug = false; - public static float rjw_genes_fertilin_from_animals_factor = 0.1f; - } -} diff --git a/Source/Settings/RJW_Genes_SettingsController.cs b/Source/Settings/RJW_Genes_SettingsController.cs deleted file mode 100644 index 7236b14..0000000 --- a/Source/Settings/RJW_Genes_SettingsController.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Verse; -using UnityEngine; - -namespace RJW_Genes -{ - public class RJW_Genes_SettingsController : Mod - { - public RJW_Genes_SettingsController(ModContentPack content) : base(content) - { - base.GetSettings(); - } - - public override string SettingsCategory() - { - return "RJW Genes - General"; - } - public override void DoSettingsWindowContents(Rect inRect) - { - RJW_Genes_Settings.DoWindowContents(inRect); - } - } -}