diff --git a/CHANGELOG.md b/CHANGELOG.md index b087e0e..5b63394 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -81,7 +81,6 @@ but they are meant mostly to have infectors immune against their own diseases. - Gene: Sexual Genetic Swap. Pawns have a chance to switch a random gene with their sexpartner. - (Archite) Gene: Sexual Genetic Thief. Pawns have a chance to steal a gene from their sexpartner. Genetic Disease Immunity shields against this. - Pawns will have negative thoughts about pawns with more genetic diseases than themselves. -- Faction Penalties for spreading diseases, stealing genes and aging pawns with age transfer **Fixes:** diff --git a/Common/Defs/GeneDefs/GeneDefs_Breeding.xml b/Common/Defs/GeneDefs/GeneDefs_Breeding.xml index 832621a..b3a9844 100644 --- a/Common/Defs/GeneDefs/GeneDefs_Breeding.xml +++ b/Common/Defs/GeneDefs/GeneDefs_Breeding.xml @@ -152,16 +152,4 @@ 1 0 - - - rjw_genes_pregnancy_overwrite - - Carriers of this gene can 'overwrite' an existing pregnancy, keeping the progress but effectively replacing the father. - Genes/Icons/RJW_Genes_PheromoneSpit - 75 - - 4 - -2 - - \ No newline at end of file diff --git a/Common/Defs/HistoryEventDefs/DiseaseHistoryEventDefs.xml b/Common/Defs/HistoryEventDefs/DiseaseHistoryEventDefs.xml deleted file mode 100644 index 488fa5f..0000000 --- a/Common/Defs/HistoryEventDefs/DiseaseHistoryEventDefs.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - rjw_genes_GoodwillChangedReason_StoleGene - - - - - rjw_genes_GoodwillChangedReason_infected_with_disease - - - - - rjw_genes_GoodwillChangedReason_spread_genetic_disease - - - - \ No newline at end of file diff --git a/Common/Defs/HistoryEventDefs/SpecialHistoryEventDefs.xml b/Common/Defs/HistoryEventDefs/SpecialHistoryEventDefs.xml deleted file mode 100644 index c5668ad..0000000 --- a/Common/Defs/HistoryEventDefs/SpecialHistoryEventDefs.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - rjw_genes_GoodwillChangedReason_aged_pawn_with_sex_gene - - - - - rjw_genes_GoodwillChangedReason_youthed_pawn_with_sex_gene - - - - \ No newline at end of file diff --git a/Source/Common/Helpers/FactionUtility.cs b/Source/Common/Helpers/FactionUtility.cs deleted file mode 100644 index 10a4e7c..0000000 --- a/Source/Common/Helpers/FactionUtility.cs +++ /dev/null @@ -1,42 +0,0 @@ -using RimWorld; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace RJW_Genes -{ - public class FactionUtility - { - - /// - /// Tries to change the goodwill between the factions of two pawns. - /// Exceptions when nothing happens: - /// - Pawns, or Pawns Factions, are null - /// - The `actors` Faction is not the players faction - /// - Both pawns have the same faction - /// - The Event is not found - /// - /// The pawn that initiated a faction-goodwill change by his actions - /// The pawn that was harmed/affected by the action - /// The event defname, for proper reporting - /// How much (positive or negative) the goodwill will change - public static void HandleFactionGoodWillPenalties(Pawn actor, Pawn target, string HistoryEventDefname, int goodWillChange, bool canSendHostileLetter=true) - { - if (actor == null) return; - if (target == null) return; - if ( - target.Faction != null && actor.Faction != null - && target.Faction != actor.Faction - && target.Faction != Faction.OfPlayer) - { - HistoryEventDef reason = DefDatabase.GetNamedSilentFail(HistoryEventDefname); - if (reason == null) return; - - target.Faction.TryAffectGoodwillWith(actor.Faction, goodWillChange, true, canSendHostileLetter, reason, target); - } - } - } -} diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index f4a2d08..873df6f 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -107,7 +107,6 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_sex_tamer; public static readonly GeneDef rjw_genes_sexual_genetic_swap; public static readonly GeneDef rjw_genes_sexual_genetic_thief; - public static readonly GeneDef rjw_genes_pregnancy_overwrite; // Cosmetic public static readonly GeneDef rjw_genes_succubus_tail; diff --git a/Source/Genes/Diseases/Patches/Patch_AfterSexUtility_ApplyGeneticInfectors.cs b/Source/Genes/Diseases/Patches/Patch_AfterSexUtility_ApplyGeneticInfectors.cs index 06b0998..1ee1e9f 100644 --- a/Source/Genes/Diseases/Patches/Patch_AfterSexUtility_ApplyGeneticInfectors.cs +++ b/Source/Genes/Diseases/Patches/Patch_AfterSexUtility_ApplyGeneticInfectors.cs @@ -1,5 +1,4 @@ using HarmonyLib; -using RimWorld; using rjw; using System; using System.Collections.Generic; @@ -15,9 +14,6 @@ namespace RJW_Genes [HarmonyPatch(typeof(SexUtility), "Aftersex")] public class Patch_AfterSexUtility_ApplyGeneticInfectors { - - const int FACTION_GOODWILL_CHANGE = -3; - public static void Postfix(SexProps props) { if (props == null || props.pawn == null || props.partner == null) return; @@ -52,10 +48,7 @@ namespace RJW_Genes continue; if ((new Random()).NextDouble() < application_chance) - { partner.genes.AddGene(diseaseGeneDef, !RJW_Genes_Settings.rjw_genes_genetic_disease_as_endogenes); - FactionUtility.HandleFactionGoodWillPenalties(infector, partner, "rjw_genes_GoodwillChangedReason_infected_with_disease",FACTION_GOODWILL_CHANGE); - } } } } diff --git a/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs b/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs index a00d40f..e33079f 100644 --- a/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs +++ b/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs @@ -1,5 +1,4 @@ using HarmonyLib; -using RimWorld; using rjw; using System; using System.Collections.Generic; @@ -14,8 +13,6 @@ namespace RJW_Genes public class Patch_AftersexUtility_TransferGeneticDiseases { - public const int FACTION_GOODWILL_CHANGE = -2; - public static void Postfix(SexProps props) { if (!RJW_Genes_Settings.rjw_genes_genetic_disease_spread) return; @@ -51,7 +48,6 @@ namespace RJW_Genes if ((new Random()).NextDouble() <= DiseaseHelper.LookupDiseaseInfectionChance(disease)) { infected.genes.AddGene(disease, !RJW_Genes_Settings.rjw_genes_genetic_disease_as_endogenes); - FactionUtility.HandleFactionGoodWillPenalties(infector, infected, "rjw_genes_GoodwillChangedReason_spread_genetic_disease", FACTION_GOODWILL_CHANGE); } } } diff --git a/Source/Genes/Special/Patches/Patch_AgeDrain.cs b/Source/Genes/Special/Patches/Patch_AgeDrain.cs index 059baef..ab159b1 100644 --- a/Source/Genes/Special/Patches/Patch_AgeDrain.cs +++ b/Source/Genes/Special/Patches/Patch_AgeDrain.cs @@ -1,5 +1,4 @@ using HarmonyLib; -using RimWorld; using rjw; using System; using System.Collections.Generic; @@ -25,8 +24,6 @@ namespace RJW_Genes.Genes.Special // 18 Years * 60 Days / Year * 60k Ticks/Day + 1 for safety const long MINIMUM_AGE_FALLBACK = 18 * 60 * 60000 + 1; - const int FACTION_GOODWILL_CHANGE = -1; - public static void Postfix(SexProps props) { if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal() ) @@ -83,9 +80,6 @@ namespace RJW_Genes.Genes.Special if (RJW_Genes_Settings.rjw_genes_detailed_debug) ModLog.Message($"[Sexual Age Drainer] {receiver} was too young ({receiver.ageTracker.AgeBiologicalYears}), and remains unchanged."); } - - FactionUtility.HandleFactionGoodWillPenalties(receiver, giver, "rjw_genes_GoodwillChangedReason_aged_pawn_with_sex_gene",FACTION_GOODWILL_CHANGE); } - } } diff --git a/Source/Genes/Special/Patches/Patch_GeneticSexThief.cs b/Source/Genes/Special/Patches/Patch_GeneticSexThief.cs index d61f0bd..ecc2201 100644 --- a/Source/Genes/Special/Patches/Patch_GeneticSexThief.cs +++ b/Source/Genes/Special/Patches/Patch_GeneticSexThief.cs @@ -1,6 +1,4 @@ using HarmonyLib; -using RimWorld; -using RimWorld.Planet; using rjw; using System; using System.Collections.Generic; @@ -15,9 +13,6 @@ namespace RJW_Genes [HarmonyPatch(typeof(SexUtility), "Aftersex")] public class Patch_GeneticSexThief { - - public const int FACTION_GOODWILL_CHANGE = -10; - public static void Postfix(SexProps props) { if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal()) @@ -67,8 +62,6 @@ namespace RJW_Genes stealer.genes.AddGene(stolenGene.def, AddAsXenogene); victim.genes.RemoveGene(stolenGene); - - FactionUtility.HandleFactionGoodWillPenalties(stealer, victim, "rjw_genes_GoodwillChangedReason_StoleGene", FACTION_GOODWILL_CHANGE); } } diff --git a/Source/Genes/Special/Patches/Patch_PregnancyOverwrite.cs b/Source/Genes/Special/Patches/Patch_PregnancyOverwrite.cs deleted file mode 100644 index b7b35a6..0000000 --- a/Source/Genes/Special/Patches/Patch_PregnancyOverwrite.cs +++ /dev/null @@ -1,80 +0,0 @@ -using HarmonyLib; -using RimWorld; -using rjw; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using static HarmonyLib.Code; - -namespace RJW_Genes -{ - [HarmonyPatch(typeof(SexUtility), "Aftersex")] - public class Patch_PregnancyOverwrite - { - public const int FACTION_GOODWILL_CHANGE = -5; - - public static void Postfix(SexProps props) - { - if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal()) - { - return; - } - - Pawn pawn = props.pawn; - Pawn partner = props.partner; - - if (pawn.genes == null || partner.genes == null) return; - - // If both have the swap gene, nothing happens - if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_pregnancy_overwrite) - && GeneUtility.HasGeneNullCheck(partner, GeneDefOf.rjw_genes_pregnancy_overwrite)) - return; - - // If both are pregnant, we have some weird interaction. Exit Early - if (pawn.IsPregnant() && partner.IsPregnant()) - return; - // If neither are pregnant, nothing can happen. - if (!pawn.IsPregnant() && !partner.IsPregnant()) - return; - - ModLog.Debug("Firing Pregnancy Overwrite Patch - Passed Simple NullChecks"); - - if (pawn.IsPregnant() - && GeneUtility.HasGeneNullCheck(partner, GeneDefOf.rjw_genes_pregnancy_overwrite)) - TryReplacePregnancy(partner, pawn); - - if (partner.IsPregnant() - && GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_pregnancy_overwrite)) - TryReplacePregnancy(pawn, partner); - } - - public static void TryReplacePregnancy(Pawn replacer, Pawn pregnant) - { - // TODO: This mostly works, but needs some more checks. - // - Check if there is a pregnancy occurring - // - Check for Disease Immunity - // - Add Faction Penalties - - ModLog.Debug($"Firing Pregnancy Overwrite for {replacer} and {pregnant}"); - - // The "CanImpregnate" does not work as I want, as the pawn is already pregnant, so it wont allow to be pregnated. - //PregnancyHelper.CanImpregnate(pawn, partner, props.sexType) - - Hediff pregnancyHediff = PregnancyUtility.GetPregnancyHediff(pregnant); - if (pregnancyHediff == null) - return; - - float gestationProgress = pregnancyHediff.Severity; - - PregnancyUtility.ForceEndPregnancy(pregnant); - - PregnancyHelper.StartVanillaPregnancy(pregnant, replacer); - Hediff replacementPregnancyHediff = PregnancyUtility.GetPregnancyHediff(pregnant); - replacementPregnancyHediff.Severity = gestationProgress; - } - - } -} diff --git a/Source/Genes/Special/Patches/Patch_Youth_Fountain.cs b/Source/Genes/Special/Patches/Patch_Youth_Fountain.cs index 96ba204..d810bc6 100644 --- a/Source/Genes/Special/Patches/Patch_Youth_Fountain.cs +++ b/Source/Genes/Special/Patches/Patch_Youth_Fountain.cs @@ -1,5 +1,4 @@ using HarmonyLib; -using RimWorld; using rjw; using System; using System.Collections.Generic; @@ -24,8 +23,6 @@ namespace RJW_Genes.Genes.Special // 18 Years * 60 Days / Year * 60k Ticks/Day + 1 for safety const long MINIMUM_AGE_FALLBACK = 18 * 60 * 60000 + 1; - const int FACTION_GOODWILL_CHANGE = 1; - public static void Postfix(SexProps props) { if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal()) @@ -42,12 +39,10 @@ namespace RJW_Genes.Genes.Special if (GeneUtility.IsYouthFountain(props.pawn)) { ChangeAgeForPawn(props.partner, props.pawn); - FactionUtility.HandleFactionGoodWillPenalties(props.pawn, props.partner, "rjw_genes_GoodwillChangedReason_youthed_pawn_with_sex_gene",+1); } if (GeneUtility.IsYouthFountain(props.partner)) { ChangeAgeForPawn(props.pawn,props.partner); - FactionUtility.HandleFactionGoodWillPenalties(props.pawn, props.partner, "rjw_genes_GoodwillChangedReason_youthed_pawn_with_sex_gene", +1); } } @@ -70,7 +65,6 @@ namespace RJW_Genes.Genes.Special ModLog.Message($"[Youth Fountain] {ToYouth} was too young ({ToYouth.ageTracker.AgeBiologicalYears}), and remains unchanged."); } - } } diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 8354632..306bcb7 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -61,7 +61,6 @@ - @@ -194,7 +193,6 @@ -