diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bc0df6..26387d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,37 +1,3 @@ -# 2.2.0 - -**Genetic Diseases** - -This update introduces genetic diseases that are shared on sex. -Infection is handled when sex finishes, so a coitus-interruptus will not result in infections. - -Infections can be - -- Turned off entirely -- Spread only on penetrative sex -- Chances are adjustable per XML per Gene - -By turning their spread off, you effectively have a set of normal negative genes. - -*Why???* - -Most of the genes so far were positive or neutral, -so I got some fair requests to introduce negative genes to keep xenotypes balanced. -I know that this is some overlap with the STD mod, but well ... you are free to turn things off? - -**Additions** - -- Passive Gene: *Genetic Disease Immunity* - cannot get infected by any genetic diseases, and won't be affected by some other genes (see relevant genes) -- Disease Gene: Vulnerability. Pawn is likelier to be raped -- Disease Gene: Infectious Hypersexuality -- Disease Gene: Infectious Homosexuality & Bisexuality -- Disease Gene: Fluctual Sexual Need. (Configurable) Chance to reset sex-need to near-zero and gain a bit of rest-need. - -**Internal** - -- GenderFluid-Gene now uses a generalized `TickBasedChanceExtension` over its unique special `GenderFluidExtension` -- Introduced a `ModLog.Debug` Function that checks for the settings before printing - trying to spread it over the whole project. - # 2.1.0 **Additions**: diff --git a/Common/Defs/GeneDefs/GeneDefs_Diseases.xml b/Common/Defs/GeneDefs/GeneDefs_Diseases.xml index e5c8723..e4fead1 100644 --- a/Common/Defs/GeneDefs/GeneDefs_Diseases.xml +++ b/Common/Defs/GeneDefs/GeneDefs_Diseases.xml @@ -1,189 +1,49 @@ - - rjw_genes_diseases - false - -
  • - Genes/Icons/RJW_Genes_Endogene_Background - Genes/Icons/RJW_Genes_Xenogene_Background -
  • -
    -
    - - rjw_genes_diseases + + rjw_genes_diseases rjw_genes_genetic_disease_immunity + 1 - 0.95 + - This gene makes the pawn immune against genetic STDs and some other genes that - imply negative side-effects. - 1 + This gene makes the pawn immune against genetic STDs and other genes that imply negative side-effects. + 2 -1 - UI/Icons/Rituals/TrialDefend + UI/Icons/ColonistBar/Idle +
  • + Genes/Icons/RJW_Genes_Endogene_Background + Genes/Icons/RJW_Genes_Xenogene_Background +
  • +
    + + + rjw_genes_diseases + rjw_genes_minor_vulnerability + + RJW_Genes.DiseaseGene + + + This gene makes the pawn more vulnerable, and a more attractive target for rape. + 2 + -1 + UI/Icons/ColonistBar/Idle + 3 +
  • Genes/Icons/RJW_Genes_Endogene_Background Genes/Icons/RJW_Genes_Xenogene_Background
  • -
    -
    - - - - rjw_genes_minor_vulnerability - - This gene makes the pawn a bit more vulnerable, and a slightly more attractive - target for rape. - 1 - 1 - 0.85 - UI/Icons/ColonistBar/Idle - 5 - - - 0.15 - - - -
  • RJW_Genes_Vulnerability
  • -
    - - +
  • - 0.05 + 1.0
  • -
    - - - rjw_genes_major_vulnerability - - This gene makes the pawn more vulnerable, and a more attractive target for - rape. - 2 - 1 - UI/Icons/ColonistBar/Idle - 6 - - -
  • RJW_Genes_Vulnerability
  • -
    - - - 0.3 - - - -
  • - 0.03 -
  • -
    -
    - - - rjw_genes_infectious_hypersexuality - - This gene makes the pawn hypersexual, and has a chance to spread on - intercourse. - Genes/Icons/Hypersexual - 2 - 2 - 7 - -
  • rjw_genes_hypersexuality_trait_giver
  • -
    - - -
  • - Nymphomaniac -
  • -
    - - -
  • - 0.05 -
  • -
    -
    - - - rjw_genes_infectious_bisexuality - - This gene makes the pawn bisexual, and has a chance to spread on intercourse. - UI\Ideoligions\Universal\RoundC - 1 - 0 - 8 - - -
  • rjw_genes_bisexuality_trait_giver
  • -
  • rjw_genes_sexual_orientation
  • -
    - - -
  • - Bisexual -
  • -
    - - -
  • - 0.1 -
  • -
    -
    - - - rjw_genes_infectious_homosexuality - - This gene makes the pawn homosexual, and has a chance to spread on intercourse. - UI\Ideoligions\Universal\RoundC - 1 - 0 - 9 - - -
  • rjw_genes_homosexuality_trait_giver
  • -
  • rjw_genes_sexual_orientation
  • -
    - - -
  • - Gay -
  • -
    - - -
  • - 0.1 -
  • -
    -
    - - - rjw_genes_fluctual_sexual_needs - - Carriers of this genetic disease have a chance to suddenly require sex, gaining a bit of energy to find quick relief. - UI/Icons/ColonistBar/Idle - 1 - 2 - 11 - RJW_Genes.Gene_FluctualSexualNeed - -
  • - 0.1 -
  • -
  • - - 30000 - 0.15 -
  • -
    -
    +
    \ No newline at end of file diff --git a/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml b/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml index 7c305d4..8a9d018 100644 --- a/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml +++ b/Common/Defs/GeneDefs/GeneDefs_Reproduction.xml @@ -14,10 +14,6 @@ - -
  • rjw_genes_hypersexuality_trait_giver
  • -
    - false
  • - -
  • rjw_genes_homosexuality_trait_giver
  • rjw_genes_sexual_orientation
  • @@ -144,8 +138,7 @@ -
  • rjw_genes_sexual_orientation
  • -
  • rjw_genes_bisexuality_trait_giver
  • +
  • rjw_genes_sexual_orientation
  • false diff --git a/Common/Defs/GeneDefs/GeneDefs_SpecifiedGender.xml b/Common/Defs/GeneDefs/GeneDefs_SpecifiedGender.xml index 82a302c..12ba760 100644 --- a/Common/Defs/GeneDefs/GeneDefs_SpecifiedGender.xml +++ b/Common/Defs/GeneDefs/GeneDefs_SpecifiedGender.xml @@ -65,10 +65,10 @@ Genes/Icons/RJW_Genes_Endogene_Background Genes/Icons/RJW_Genes_Xenogene_Background -
  • +
  • - 120000 - 0.25 + 120000 + 0.25
  • diff --git a/README.md b/README.md index a09fef6..697bcdc 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@ This mod adds genes related and based on RJW to Rimworld. - Sexual Vampires that need Cum, Cocks or some other sources. - Mech Breeding Additions & Orgasmic Mytosis - Human-Animal Gene Inheritance merged from [Shabakur](https://github.com/Shabakur/RJW_Animal_Gene_Inheritance) -- Genetic Diseases that spread on Intercourse - Patches for some popular / common Xenotypes from other Mods. *You might not see all of them. Many genes just show up if other mods are loaded*. diff --git a/Source/Common/Defs/TickBasedChanceExtension.cs b/Source/Common/Defs/TickBasedChanceExtension.cs deleted file mode 100644 index 1a8feca..0000000 --- a/Source/Common/Defs/TickBasedChanceExtension.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace RJW_Genes -{ - public class TickBasedChanceExtension : TickIntervalExtension - { - /// - /// Set to 1 for "always", set to 0 for "never". - /// Everything else is a bit statistics, but e.g. when set to .5 the chances grow per day from [50%, 75%, 82.25%, ...] - /// - public float eventChance; - } -} diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index e4f4aff..af53f67 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -124,8 +124,6 @@ namespace RJW_Genes // Diseases public static readonly GeneDef rjw_genes_genetic_disease_immunity; public static readonly GeneDef rjw_genes_minor_vulnerability; - public static readonly GeneDef rjw_genes_major_vulnerability; - public static readonly GeneDef rjw_genes_fluctual_sexual_needs; //Other Defs public static readonly XenotypeDef rjw_genes_succubus; diff --git a/Source/Genes/Diseases/Genes/DiseaseGene.cs b/Source/Genes/Diseases/Genes/DiseaseGene.cs new file mode 100644 index 0000000..deba64f --- /dev/null +++ b/Source/Genes/Diseases/Genes/DiseaseGene.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace RJW_Genes +{ + public class DiseaseGene : Gene + { + + } +} diff --git a/Source/Genes/Diseases/Genes/Gene_FluctualSexualNeed.cs b/Source/Genes/Diseases/Genes/Gene_FluctualSexualNeed.cs deleted file mode 100644 index b25e812..0000000 --- a/Source/Genes/Diseases/Genes/Gene_FluctualSexualNeed.cs +++ /dev/null @@ -1,57 +0,0 @@ -using rjw; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using static HarmonyLib.Code; -using static RimWorld.ColonistBar; - -namespace RJW_Genes -{ - public class Gene_FluctualSexualNeed : Gene - { - - int event_interval; - float event_chance; - - const float REST_INCREASE = 0.1f; - const float SET_SEXNEED_TO = 0.1f; - - public Gene_FluctualSexualNeed() : base() - { - TickBasedChanceExtension tickbasedChanceExt = GeneDefOf.rjw_genes_fluctual_sexual_needs.GetModExtension(); - event_interval = tickbasedChanceExt?.tickInterval ?? 30000; // 30K = 1/2 day - event_chance = tickbasedChanceExt?.eventChance ?? 0.1f; - } - - - public override void Tick() - { - base.Tick(); - - if (pawn.IsHashIntervalTick(event_interval) && (new Random()).NextDouble() < event_chance) - { - ModLog.Debug($"Firing Gene_FluctualSexualNeed for {pawn}"); - ApplyFluctualSexNeedEffect(pawn); - } - } - - public static void ApplyFluctualSexNeedEffect(Pawn pawn) - { - if (pawn == null || pawn.needs == null) return; - - var sexneed = pawn.needs.TryGetNeed(); - if (sexneed != null) - { - sexneed.CurLevelPercentage = SET_SEXNEED_TO; - } - - // Pump up Wake-Ness - if (pawn.needs.rest != null) - pawn.needs.rest.CurLevel += REST_INCREASE; - } - - } -} diff --git a/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs b/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs index d7a2e07..bf6e26c 100644 --- a/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs +++ b/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs @@ -15,8 +15,6 @@ namespace RJW_Genes.Genes.Diseases.Patches public static void Postfix(SexProps props) { - if (!RJW_Genes_Settings.rjw_genes_genetic_disease_spread) return; - if (props == null || props.pawn == null || props.partner == null) return; Pawn pawn = props.pawn; @@ -28,9 +26,6 @@ namespace RJW_Genes.Genes.Diseases.Patches // No Infections on Condom Use if (props.usedCondom) return; - // Exit early if settings require penetrative sex, but this is not penetrative sex - if (!IsPenetrativeSex(props) && RJW_Genes_Settings.rjw_genes_genetic_disease_spread_only_on_penetrative_sex) return; - ModLog.Debug($"Firing Patch_TransferGeneticDiseases for {pawn} and {partner}"); TryTransferGeneticDiseases(pawn, partner, props); TryTransferGeneticDiseases(partner, pawn, props); @@ -52,7 +47,7 @@ namespace RJW_Genes.Genes.Diseases.Patches if ((new Random()).NextDouble() <= LookupDiseaseInfectionChance(disease)) { - infected.genes.AddGene(disease, !RJW_Genes_Settings.rjw_genes_genetic_disease_as_endogenes); + infected.genes.AddGene(disease, false); } } } @@ -72,24 +67,9 @@ namespace RJW_Genes.Genes.Diseases.Patches return new List() { }; } - private static bool IsPenetrativeSex(SexProps props) - { - if (props == null) return false; - - return props.sexType == - xxx.rjwSextype.Vaginal - || props.sexType == xxx.rjwSextype.Anal - || props.sexType == xxx.rjwSextype.Oral - || props.sexType == xxx.rjwSextype.DoublePenetration - || props.sexType == xxx.rjwSextype.Fellatio - || props.sexType == xxx.rjwSextype.Sixtynine; - } - private static bool IsGeneticDiseaseGene(GeneDef geneDef) { - if (geneDef == null) return false; - GeneticDiseaseExtension diseaseExt = geneDef.GetModExtension(); - return diseaseExt != null; + return geneDef.geneClass.FullName.Contains("DiseaseGene"); } private static float LookupDiseaseInfectionChance(GeneDef geneDef) diff --git a/Source/Genes/Gender/Defs/GenderFluidExtension.cs b/Source/Genes/Gender/Defs/GenderFluidExtension.cs new file mode 100644 index 0000000..332015f --- /dev/null +++ b/Source/Genes/Gender/Defs/GenderFluidExtension.cs @@ -0,0 +1,20 @@ +using Verse; + +namespace RJW_Genes +{ + public class GenderFluidExtension : DefModExtension + { + /// + /// Number of ticks until the change can be triggered. + /// Just being "triggered" does not mean changing, see the changeChance below. + /// + public int changeInterval; + + /// + /// How high is the chance to change gender? + /// Set to 1 for "always", set to 0 for "never". + /// Everything else is a bit statistics, but e.g. when set to .5 the chances grow per day from [50%, 75%, 82.25%, ...] + /// + public float changeChance; + } +} \ No newline at end of file diff --git a/Source/Genes/Gender/Genes/Gene_FemaleOnly.cs b/Source/Genes/Gender/Gene_FemaleOnly.cs similarity index 100% rename from Source/Genes/Gender/Genes/Gene_FemaleOnly.cs rename to Source/Genes/Gender/Gene_FemaleOnly.cs diff --git a/Source/Genes/Gender/Genes/Gene_GenderFluid.cs b/Source/Genes/Gender/Gene_GenderFluid.cs similarity index 96% rename from Source/Genes/Gender/Genes/Gene_GenderFluid.cs rename to Source/Genes/Gender/Gene_GenderFluid.cs index fe75f5d..bdd5c00 100644 --- a/Source/Genes/Gender/Genes/Gene_GenderFluid.cs +++ b/Source/Genes/Gender/Gene_GenderFluid.cs @@ -39,9 +39,9 @@ namespace RJW_Genes private bool sexChangeWasBlocked = false; public Gene_GenderFluid() : base() { - TickBasedChanceExtension tickbasedChanceExt = GeneDefOf.rjw_genes_gender_fluid.GetModExtension(); - change_interval = tickbasedChanceExt?.tickInterval ?? CHANGE_INTERVAL_FALLBACK; - switch_chance = tickbasedChanceExt?.eventChance ?? SWITCH_CHANCE_FALLBACK; + GenderFluidExtension genderFluidExt = GeneDefOf.rjw_genes_gender_fluid.GetModExtension(); + change_interval = genderFluidExt?.changeInterval ?? CHANGE_INTERVAL_FALLBACK; + switch_chance = genderFluidExt?.changeChance ?? SWITCH_CHANCE_FALLBACK; } public override void Tick() diff --git a/Source/Genes/Gender/Genes/Gene_MaleOnly.cs b/Source/Genes/Gender/Gene_MaleOnly.cs similarity index 100% rename from Source/Genes/Gender/Genes/Gene_MaleOnly.cs rename to Source/Genes/Gender/Gene_MaleOnly.cs diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index f684926..0abf68c 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -58,7 +58,6 @@ - @@ -76,7 +75,7 @@ - + @@ -90,7 +89,8 @@ - + + @@ -110,8 +110,8 @@ - - + + @@ -240,7 +240,9 @@ False - + + +