diff --git a/Source/IdeologyAddon/DebugAction.cs b/Source/IdeologyAddon/DebugAction.cs index 91f5b20..f80e708 100644 --- a/Source/IdeologyAddon/DebugAction.cs +++ b/Source/IdeologyAddon/DebugAction.cs @@ -15,8 +15,8 @@ namespace RJWSexperience.Ideology Pawn hero = p.Map.PlayerPawnsForStoryteller.First(x => x.IsDesignatedHero()); if (hero == null) return; - RsiHistoryEventDefOf.RSI_NonIncestuosMarriage.RecordEventWithPartner(hero, p); - RsiHistoryEventDefOf.RSI_NonIncestuosMarriage.RecordEventWithPartner(p, hero); + RsiDefOf.HistoryEvent.RSI_NonIncestuosMarriage.RecordEventWithPartner(hero, p); + RsiDefOf.HistoryEvent.RSI_NonIncestuosMarriage.RecordEventWithPartner(p, hero); } [DebugAction("RJW Sexperience Ideology", "Manual romance check", false, true, actionType = DebugActionType.Action, allowedGameStates = AllowedGameStates.PlayingOnMap)] diff --git a/Source/IdeologyAddon/IdeoUtility.cs b/Source/IdeologyAddon/IdeoUtility.cs index 206b8eb..05ffd75 100644 --- a/Source/IdeologyAddon/IdeoUtility.cs +++ b/Source/IdeologyAddon/IdeoUtility.cs @@ -12,9 +12,9 @@ namespace RJWSexperience.Ideology if (ideo == null) return false; - if (ideo.HasPrecept(RsiPreceptDefOf.Submissive_Female) && pawn.gender == Gender.Female) + if (ideo.HasPrecept(RsiDefOf.Precept.Submissive_Female) && pawn.gender == Gender.Female) return true; - else if (ideo.HasPrecept(RsiPreceptDefOf.Submissive_Male) && pawn.gender == Gender.Male) + else if (ideo.HasPrecept(RsiDefOf.Precept.Submissive_Male) && pawn.gender == Gender.Male) return true; return false; @@ -89,7 +89,7 @@ namespace RJWSexperience.Ideology Hediff pregnancy = PregnancyHelper.GetPregnancy(pawn); // Currently RJW does not check Biotech pregnancy - if (pregnancy == null && VariousDefOf.PregnantHuman != null) + if (pregnancy == null && RsiDefOf.Hediff.PregnantHuman != null) { pregnancy = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.PregnantHuman); } diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index 63f6689..9f06941 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -63,8 +63,6 @@ - - @@ -95,7 +93,7 @@ - + diff --git a/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs b/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs index 2a22c2c..18d8550 100644 --- a/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs +++ b/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs @@ -15,7 +15,7 @@ namespace RJWSexperience.Ideology.Patches if (__result < 0f || pawn.Ideo == null) // ideo is null if don't have dlc return; - if (!RsiHistoryEventDefOf.RSI_SexWithAnimal.CreateEvent(pawn).DoerWillingToDo()) + if (!RsiDefOf.HistoryEvent.RSI_SexWithAnimal.CreateEvent(pawn).DoerWillingToDo()) { __result = -2f; return; @@ -32,7 +32,7 @@ namespace RJWSexperience.Ideology.Patches if (__result < 0f || pawn.Ideo == null) // ideo is null if don't have dlc return; - if (!RsiHistoryEventDefOf.RSI_Raped.CreateEvent(pawn).DoerWillingToDo()) + if (!RsiDefOf.HistoryEvent.RSI_Raped.CreateEvent(pawn).DoerWillingToDo()) { __result = -2f; return; @@ -48,7 +48,7 @@ namespace RJWSexperience.Ideology.Patches if (__result < 0f || pawn.Ideo == null) // ideo is null if don't have dlc return; - if (!RsiHistoryEventDefOf.RSI_SexWithCorpse.CreateEvent(pawn).DoerWillingToDo()) + if (!RsiDefOf.HistoryEvent.RSI_SexWithCorpse.CreateEvent(pawn).DoerWillingToDo()) { __result = -2f; return; @@ -65,7 +65,7 @@ namespace RJWSexperience.Ideology.Patches if (__result < 0f || p.Ideo == null) // ideo is null if don't have dlc return; - if (!RsiHistoryEventDefOf.RSI_Masturbated.CreateEvent(p).DoerWillingToDo()) + if (!RsiDefOf.HistoryEvent.RSI_Masturbated.CreateEvent(p).DoerWillingToDo()) { __result = -2f; return; diff --git a/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs index e52b361..239ce81 100644 --- a/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs +++ b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs @@ -19,7 +19,7 @@ namespace RJWSexperience.Ideology.Patches Ideo ideo = pawn.Ideo; if (ideo != null && !pawn.IsSubmissive()) { - __result = __result || ideo.HasMeme(VariousDefOf.Rapist); + __result = __result || ideo.HasMeme(RsiDefOf.Meme.Rapist); } } } @@ -32,7 +32,7 @@ namespace RJWSexperience.Ideology.Patches Ideo ideo = pawn.Ideo; if (ideo != null) { - __result = __result || ideo.HasMeme(VariousDefOf.Zoophile); + __result = __result || ideo.HasMeme(RsiDefOf.Meme.Zoophile); } } } @@ -45,7 +45,7 @@ namespace RJWSexperience.Ideology.Patches Ideo ideo = pawn.Ideo; if (ideo != null) { - __result = __result || ideo.HasMeme(VariousDefOf.Necrophile); + __result = __result || ideo.HasMeme(RsiDefOf.Meme.Necrophile); } } } @@ -85,10 +85,10 @@ namespace RJWSexperience.Ideology.Patches private static void AfterSexHuman(Pawn human, Pawn partner) { - RsiHistoryEventDefOf.RSI_NonIncestuosSex.RecordEventWithPartner(human, partner); + RsiDefOf.HistoryEvent.RSI_NonIncestuosSex.RecordEventWithPartner(human, partner); if (partner.IsAnimal()) - RsiHistoryEventDefOf.RSI_SexWithAnimal.RecordEventWithPartner(human, partner); + RsiDefOf.HistoryEvent.RSI_SexWithAnimal.RecordEventWithPartner(human, partner); } } @@ -148,7 +148,7 @@ namespace RJWSexperience.Ideology.Patches public static void Postfix(Pawn pawn, ref bool __result) { Ideo ideo = pawn.Ideo; - if (ideo?.HasMeme(VariousDefOf.Zoophile) == true) + if (ideo?.HasMeme(RsiDefOf.Meme.Zoophile) == true) { SaveStorage.DataStore.GetPawnData(pawn).CanDesignateBreeding = true; __result = true; @@ -213,14 +213,14 @@ namespace RJWSexperience.Ideology.Patches Ideo mainideo = playerfaction.ideos.PrimaryIdeo; if (mainideo != null) { - if (mainideo.HasPrecept(RsiPreceptDefOf.BabyFaction_AlwaysFather)) + if (mainideo.HasPrecept(RsiDefOf.Precept.BabyFaction_AlwaysFather)) { Pawn parent = baby.GetFather() ?? baby.GetMother(); ideo = parent.Ideo; return parent.Faction; } - else if (mainideo.HasPrecept(RsiPreceptDefOf.BabyFaction_AlwaysColony)) + else if (mainideo.HasPrecept(RsiDefOf.Precept.BabyFaction_AlwaysColony)) { ideo = mainideo; return playerfaction; @@ -241,7 +241,7 @@ namespace RJWSexperience.Ideology.Patches if (props.pawn?.Ideo == null || !props.hasPartner()) return; - if (props.partner.Ideo?.HasPrecept(RsiPreceptDefOf.ProselyzingByOrgasm) == true) + if (props.partner.Ideo?.HasPrecept(RsiDefOf.Precept.ProselyzingByOrgasm) == true) { // Pawn is the one having the orgasm // Partner is "giving" the orgasm, hence the pawn will be converted towards the partners ideology diff --git a/Source/IdeologyAddon/Patches/Rimworld_Patch.cs b/Source/IdeologyAddon/Patches/Rimworld_Patch.cs index 9a54dd4..5bd03b3 100644 --- a/Source/IdeologyAddon/Patches/Rimworld_Patch.cs +++ b/Source/IdeologyAddon/Patches/Rimworld_Patch.cs @@ -16,8 +16,8 @@ namespace RJWSexperience.Ideology.Patches { public static void Postfix(Pawn firstPawn, Pawn secondPawn) { - RsiHistoryEventDefOf.RSI_NonIncestuosMarriage.RecordEventWithPartner(firstPawn, secondPawn); - RsiHistoryEventDefOf.RSI_NonIncestuosMarriage.RecordEventWithPartner(secondPawn, firstPawn); + RsiDefOf.HistoryEvent.RSI_NonIncestuosMarriage.RecordEventWithPartner(firstPawn, secondPawn); + RsiDefOf.HistoryEvent.RSI_NonIncestuosMarriage.RecordEventWithPartner(secondPawn, firstPawn); } } @@ -81,7 +81,7 @@ namespace RJWSexperience.Ideology.Patches /// Forbid romance option public static bool RsiIncestuous(Pawn one, Pawn two) { - PreceptDef incestuousPrecept = one.Ideo?.PreceptsListForReading.Select(precept => precept.def).FirstOrFallback(def => def.issue == VariousDefOf.Incestuos); + PreceptDef incestuousPrecept = one.Ideo?.PreceptsListForReading.Select(precept => precept.def).FirstOrFallback(def => def.issue == RsiDefOf.Issue.Incestuos); var allowManualRomanceOnlyFor = incestuousPrecept?.GetModExtension()?.allowManualRomanceOnlyFor; BloodRelationDegree relationDegree = RelationHelpers.GetBloodRelationDegree(one, two); diff --git a/Source/IdeologyAddon/Patches/Sexperience_Patch.cs b/Source/IdeologyAddon/Patches/Sexperience_Patch.cs index 1be61cd..4f7471e 100644 --- a/Source/IdeologyAddon/Patches/Sexperience_Patch.cs +++ b/Source/IdeologyAddon/Patches/Sexperience_Patch.cs @@ -15,11 +15,11 @@ namespace RJWSexperience.Ideology.Patches const int femaleAfterSurgery = 1; if (props.isRape && exVirgin == props.partner) - RsiHistoryEventDefOf.RSI_VirginStolen.RecordEventWithPartner(exVirgin, partner); + RsiDefOf.HistoryEvent.RSI_VirginStolen.RecordEventWithPartner(exVirgin, partner); else if (degree != femaleAfterSurgery) - RsiHistoryEventDefOf.RSI_VirginTaken.RecordEventWithPartner(exVirgin, partner); + RsiDefOf.HistoryEvent.RSI_VirginTaken.RecordEventWithPartner(exVirgin, partner); - RsiHistoryEventDefOf.RSI_TookVirgin.RecordEventWithPartner(partner, exVirgin); + RsiDefOf.HistoryEvent.RSI_TookVirgin.RecordEventWithPartner(partner, exVirgin); } } } diff --git a/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs b/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs index a7eacb0..ce0251d 100644 --- a/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs +++ b/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs @@ -32,9 +32,9 @@ namespace RJWSexperience.Ideology Pawn target = FindPartner(pawn, duty); - if (target == null || !pawn.CanReserveAndReach(target, PathEndMode.ClosestTouch, Danger.None,1)) return JobMaker.MakeJob(VariousDefOf.DrugMasturbate); + if (target == null || !pawn.CanReserveAndReach(target, PathEndMode.ClosestTouch, Danger.None,1)) return JobMaker.MakeJob(RsiDefOf.Job.DrugMasturbate); - return JobMaker.MakeJob(VariousDefOf.DrugSex, target); + return JobMaker.MakeJob(RsiDefOf.Job.DrugSex, target); } protected Pawn FindPartner(Pawn pawn, PawnDuty duty) @@ -65,7 +65,7 @@ namespace RJWSexperience.Ideology protected override IEnumerable MakeNewToils() { setup_ticks(); - var PartnerJob = VariousDefOf.GettinDrugSex; + var PartnerJob = RsiDefOf.Job.GettinDrugSex; this.FailOnDespawnedNullOrForbidden(iTarget); this.FailOn(() => !Partner.health.capacities.CanBeAwake); diff --git a/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs b/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs index dc6dc15..48b4353 100644 --- a/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs +++ b/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs @@ -34,7 +34,7 @@ namespace RJWSexperience.Ideology if (!pawn.CanReach(target, PathEndMode.ClosestTouch, Danger.None)) return null; - return JobMaker.MakeJob(VariousDefOf.Gangbang, target); + return JobMaker.MakeJob(RsiDefOf.Job.Gangbang, target); } } @@ -65,7 +65,7 @@ namespace RJWSexperience.Ideology var dri = Partner.jobs.curDriver as JobDriver_SexBaseRecieverRaped; if (dri == null) { - Job gettin_loved = JobMaker.MakeJob(VariousDefOf.GettinGangbang, pawn, Bed); + Job gettin_loved = JobMaker.MakeJob(RsiDefOf.Job.GettinGangbang, pawn, Bed); Partner.jobs.StartJob(gettin_loved, JobCondition.InterruptForced); } }; @@ -75,7 +75,7 @@ namespace RJWSexperience.Ideology SexToil.defaultCompleteMode = ToilCompleteMode.Never; SexToil.defaultDuration = duration; SexToil.handlingFacing = true; - SexToil.FailOn(() => Partner.CurJob.def != VariousDefOf.GettinGangbang); + SexToil.FailOn(() => Partner.CurJob.def != RsiDefOf.Job.GettinGangbang); SexToil.initAction = delegate { Start(); diff --git a/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs b/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs index ce2ec72..bc4bfdf 100644 --- a/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs +++ b/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs @@ -35,7 +35,7 @@ namespace RJWSexperience.Ideology if (!pawn.CanReach(target, PathEndMode.ClosestTouch, Danger.None)) return null; - return JobMaker.MakeJob(VariousDefOf.RapeVictim, target); + return JobMaker.MakeJob(RsiDefOf.Job.RapeVictim, target); } } diff --git a/Source/IdeologyAddon/Rituals/RitualRoles.cs b/Source/IdeologyAddon/Rituals/RitualRoles.cs index 691bb28..699f2d1 100644 --- a/Source/IdeologyAddon/Rituals/RitualRoles.cs +++ b/Source/IdeologyAddon/Rituals/RitualRoles.cs @@ -92,7 +92,7 @@ namespace RJWSexperience.Ideology public static bool CanBeBreeder(Pawn animal, Precept_Ritual precept) { - if (precept != null && precept.ideo.HasPrecept(RsiPreceptDefOf.Bestiality_OnlyVenerated) && !precept.ideo.IsVeneratedAnimal(animal)) + if (precept != null && precept.ideo.HasPrecept(RsiDefOf.Precept.Bestiality_OnlyVenerated) && !precept.ideo.IsVeneratedAnimal(animal)) { return false; } diff --git a/Source/IdeologyAddon/RomanceChanceFactorHelpers.cs b/Source/IdeologyAddon/RomanceChanceFactorHelpers.cs index bae549e..6d970f3 100644 --- a/Source/IdeologyAddon/RomanceChanceFactorHelpers.cs +++ b/Source/IdeologyAddon/RomanceChanceFactorHelpers.cs @@ -22,7 +22,7 @@ namespace RJWSexperience.Ideology if (!pawn.relations.FamilyByBlood.Contains(partner)) { - if (pawn.Ideo?.HasPrecept(RsiPreceptDefOf.Incestuos_IncestOnly) == true) + if (pawn.Ideo?.HasPrecept(RsiDefOf.Precept.Incestuos_IncestOnly) == true) { return parentRomanceChanceFactor; } @@ -32,7 +32,7 @@ namespace RJWSexperience.Ideology } } - PreceptDef incestuousPrecept = pawn.Ideo?.PreceptsListForReading.Select(precept => precept.def).FirstOrFallback(def => def.issue == VariousDefOf.Incestuos); + PreceptDef incestuousPrecept = pawn.Ideo?.PreceptsListForReading.Select(precept => precept.def).FirstOrFallback(def => def.issue == RsiDefOf.Issue.Incestuos); IEnumerable relations = pawn.GetRelations(partner).Where(def => def.familyByBloodRelation); foreach (PawnRelationDef relationDef in relations) { @@ -74,7 +74,7 @@ namespace RJWSexperience.Ideology { IEnumerable incestuousPrecepts = DefDatabase .AllDefsListForReading - .Where(def => def.issue == VariousDefOf.Incestuos); + .Where(def => def.issue == RsiDefOf.Issue.Incestuos); IEnumerable> preceptGetters = incestuousPrecepts .Select(precept => new TableDataGetter(precept.defName,(PawnRelationDef rel) => GetRomanceChanceFactor(rel, precept))); diff --git a/Source/IdeologyAddon/RsiDefOf.cs b/Source/IdeologyAddon/RsiDefOf.cs new file mode 100644 index 0000000..d5b0cfa --- /dev/null +++ b/Source/IdeologyAddon/RsiDefOf.cs @@ -0,0 +1,65 @@ +using RimWorld; +using Verse; + +namespace RJWSexperience.Ideology +{ + public static class RsiDefOf + { + [DefOf] + public static class Job + { + public static readonly JobDef RapeVictim; + public static readonly JobDef Gangbang; + public static readonly JobDef GettinGangbang; + public static readonly JobDef DrugSex; + public static readonly JobDef GettinDrugSex; + public static readonly JobDef DrugMasturbate; + } + + [DefOf] + public static class Meme + { + public static readonly MemeDef Zoophile; + public static readonly MemeDef Rapist; + public static readonly MemeDef Necrophile; + } + + [DefOf] + public static class Issue + { + public static readonly IssueDef Incestuos; + } + + [DefOf] + public static class Precept + { + public static readonly PreceptDef Incestuos_IncestOnly; + public static readonly PreceptDef Bestiality_OnlyVenerated; + public static readonly PreceptDef BabyFaction_AlwaysFather; + public static readonly PreceptDef BabyFaction_AlwaysColony; + public static readonly PreceptDef Submissive_Male; + public static readonly PreceptDef Submissive_Female; + public static readonly PreceptDef ProselyzingByOrgasm; + } + + [DefOf] + public static class HistoryEvent + { + public static readonly HistoryEventDef RSI_SexWithAnimal; + public static readonly HistoryEventDef RSI_Raped; + public static readonly HistoryEventDef RSI_NonIncestuosMarriage; + public static readonly HistoryEventDef RSI_NonIncestuosSex; + public static readonly HistoryEventDef RSI_SexWithCorpse; + public static readonly HistoryEventDef RSI_VirginTaken; + public static readonly HistoryEventDef RSI_VirginStolen; + public static readonly HistoryEventDef RSI_TookVirgin; + public static readonly HistoryEventDef RSI_Masturbated; + } + + [DefOf] + public static class Hediff + { + [MayRequireBiotech] public static readonly HediffDef PregnantHuman; + } + } +} diff --git a/Source/IdeologyAddon/RsiHistoryEventDefOf.cs b/Source/IdeologyAddon/RsiHistoryEventDefOf.cs deleted file mode 100644 index 4cb9bc7..0000000 --- a/Source/IdeologyAddon/RsiHistoryEventDefOf.cs +++ /dev/null @@ -1,18 +0,0 @@ -using RimWorld; - -namespace RJWSexperience.Ideology -{ - [DefOf] - public static class RsiHistoryEventDefOf - { - public static readonly HistoryEventDef RSI_SexWithAnimal; - public static readonly HistoryEventDef RSI_Raped; - public static readonly HistoryEventDef RSI_NonIncestuosMarriage; - public static readonly HistoryEventDef RSI_NonIncestuosSex; - public static readonly HistoryEventDef RSI_SexWithCorpse; - public static readonly HistoryEventDef RSI_VirginTaken; - public static readonly HistoryEventDef RSI_VirginStolen; - public static readonly HistoryEventDef RSI_TookVirgin; - public static readonly HistoryEventDef RSI_Masturbated; - } -} diff --git a/Source/IdeologyAddon/RsiPreceptDefOf.cs b/Source/IdeologyAddon/RsiPreceptDefOf.cs deleted file mode 100644 index 1638e76..0000000 --- a/Source/IdeologyAddon/RsiPreceptDefOf.cs +++ /dev/null @@ -1,16 +0,0 @@ -using RimWorld; - -namespace RJWSexperience.Ideology -{ - [DefOf] - public static class RsiPreceptDefOf - { - public static readonly PreceptDef Incestuos_IncestOnly; - public static readonly PreceptDef Bestiality_OnlyVenerated; - public static readonly PreceptDef BabyFaction_AlwaysFather; - public static readonly PreceptDef BabyFaction_AlwaysColony; - public static readonly PreceptDef Submissive_Male; - public static readonly PreceptDef Submissive_Female; - public static readonly PreceptDef ProselyzingByOrgasm; - } -} \ No newline at end of file diff --git a/Source/IdeologyAddon/VariousDefOf.cs b/Source/IdeologyAddon/VariousDefOf.cs deleted file mode 100644 index 19a104d..0000000 --- a/Source/IdeologyAddon/VariousDefOf.cs +++ /dev/null @@ -1,22 +0,0 @@ -using RimWorld; -using Verse; - -namespace RJWSexperience.Ideology -{ - [DefOf] - public static class VariousDefOf - { - public static readonly JobDef RapeVictim; - public static readonly JobDef Gangbang; - public static readonly JobDef GettinGangbang; - public static readonly JobDef DrugSex; - public static readonly JobDef GettinDrugSex; - public static readonly JobDef DrugMasturbate; - - public static readonly MemeDef Zoophile; - public static readonly MemeDef Rapist; - public static readonly MemeDef Necrophile; - public static readonly IssueDef Incestuos; - [MayRequireBiotech] public static readonly HediffDef PregnantHuman; - } -}