From 670584500b87e43fdcd6bcbf179bd9ecb547f315 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 23 Apr 2023 17:15:07 +0500 Subject: [PATCH] Fix IDE messages --- Source/IdeologyAddon/DebugAction.cs | 4 +- .../IdeologyAddon/Patches/RJW_Patch_Ideo.cs | 6 +- .../Rituals/JobGiver_DrugOrgy.cs | 156 ++++++++-------- .../Rituals/JobGiver_GangbangConsensual.cs | 113 ++++++------ .../Rituals/JobGiver_GangbangVictim.cs | 83 ++++----- .../IdeologyAddon/Rituals/LordJob_Rituals.cs | 17 +- Source/IdeologyAddon/Rituals/RitualRoles.cs | 171 +++++++++--------- 7 files changed, 262 insertions(+), 288 deletions(-) diff --git a/Source/IdeologyAddon/DebugAction.cs b/Source/IdeologyAddon/DebugAction.cs index f80e708..55838d7 100644 --- a/Source/IdeologyAddon/DebugAction.cs +++ b/Source/IdeologyAddon/DebugAction.cs @@ -7,10 +7,10 @@ using Verse; namespace RJWSexperience.Ideology { - internal class DebugAction + internal static class DebugAction { [DebugAction("RJW Sexperience Ideology", "Test marriage event", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)] - private static void GenerateMarriageEvent(Pawn p) + public static void GenerateMarriageEvent(Pawn p) { Pawn hero = p.Map.PlayerPawnsForStoryteller.First(x => x.IsDesignatedHero()); if (hero == null) diff --git a/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs index 239ce81..4a06922 100644 --- a/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs +++ b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs @@ -113,11 +113,13 @@ namespace RJWSexperience.Ideology.Patches public static float PreceptSextype(Pawn pawn, Pawn partner, float score, List historyEventDefs) { - foreach(HistoryEventDef eventDef in historyEventDefs) + for (int i = 0; i < historyEventDefs.Count; i++) { + HistoryEventDef eventDef = historyEventDefs[i]; + if (eventDef.CreateEventWithPartner(pawn, partner).DoerWillingToDo()) { - float mult = 8.0f * Math.Max(0.3f, 1 / Math.Max(0.01f, pawn.GetStatValue(xxx.sex_drive_stat))); + float mult = 8.0f * Math.Max(0.3f, 1 / Math.Max(0.01f, pawn.GetStatValue(xxx.sex_drive_stat, cacheStaleAfterTicks: 60))); return score * mult; } } diff --git a/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs b/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs index ce0251d..82a541e 100644 --- a/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs +++ b/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs @@ -1,56 +1,47 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using RimWorld; using rjw; +using System; +using System.Collections.Generic; using Verse; using Verse.AI; -using RimWorld; - namespace RJWSexperience.Ideology { - public class JobGiver_DrugOrgy : ThinkNode_JobGiver - { - protected override Job TryGiveJob(Pawn pawn) - { - if (pawn.Drafted) return null; - DutyDef dutyDef = null; - PawnDuty duty = null; - if (pawn.mindState != null) - { - duty = pawn.mindState.duty; - dutyDef = duty.def; - } - else return null; + public class JobGiver_DrugOrgy : ThinkNode_JobGiver + { + protected override Job TryGiveJob(Pawn pawn) + { + if (pawn.Drafted || pawn.mindState == null) + { + return null; + } - if (dutyDef == DutyDefOf.TravelOrLeave || !xxx.can_do_loving(pawn)) - { - return null; - } - - Pawn target = FindPartner(pawn, duty); + PawnDuty duty = pawn.mindState.duty; - if (target == null || !pawn.CanReserveAndReach(target, PathEndMode.ClosestTouch, Danger.None,1)) return JobMaker.MakeJob(RsiDefOf.Job.DrugMasturbate); + if (duty.def == DutyDefOf.TravelOrLeave || !xxx.can_do_loving(pawn)) + { + return null; + } - return JobMaker.MakeJob(RsiDefOf.Job.DrugSex, target); - } + Pawn target = FindPartner(pawn, duty); - protected Pawn FindPartner(Pawn pawn, PawnDuty duty) - { - if (duty != null) - { - List pawns = pawn.Map.mapPawns.AllPawnsSpawned.FindAll(x => x.mindState?.duty?.def == duty.def); - return pawns.RandomElementByWeightWithDefault(x => SexAppraiser.would_fuck(pawn,x), 0.1f); - } - - + if (target == null || !pawn.CanReserveAndReach(target, PathEndMode.ClosestTouch, Danger.None, 1)) + return JobMaker.MakeJob(RsiDefOf.Job.DrugMasturbate); - return null; - } + return JobMaker.MakeJob(RsiDefOf.Job.DrugSex, target); + } - } + protected Pawn FindPartner(Pawn pawn, PawnDuty duty) + { + if (duty != null) + { + List pawns = pawn.Map.mapPawns.AllPawnsSpawned.FindAll(x => x.mindState?.duty?.def == duty.def); + return pawns.RandomElementByWeightWithDefault(x => SexAppraiser.would_fuck(pawn, x), 0.1f); + } + + return null; + } + } /// /// copied from rjw @@ -73,47 +64,52 @@ namespace RJWSexperience.Ideology this.FailOn(() => Partner == null); yield return Toils_Goto.GotoThing(iTarget, PathEndMode.OnCell); - Toil WaitForPartner = new Toil(); - WaitForPartner.defaultCompleteMode = ToilCompleteMode.Delay; - WaitForPartner.initAction = delegate + Toil WaitForPartner = new Toil { - ticksLeftThisToil = 5000; - }; - WaitForPartner.tickAction = delegate - { - pawn.GainComfortFromCellIfPossible(); - if (pawn.Position.DistanceTo(Partner.Position) <= 1f) + defaultCompleteMode = ToilCompleteMode.Delay, + initAction = delegate { - ReadyForNextToil(); + ticksLeftThisToil = 5000; + }, + tickAction = delegate + { + pawn.GainComfortFromCellIfPossible(); + if (pawn.Position.DistanceTo(Partner.Position) <= 1f) + { + ReadyForNextToil(); + } } }; yield return WaitForPartner; - Toil StartPartnerJob = new Toil(); - StartPartnerJob.defaultCompleteMode = ToilCompleteMode.Instant; - StartPartnerJob.socialMode = RandomSocialMode.Off; - StartPartnerJob.initAction = delegate + Toil StartPartnerJob = new Toil { - var dri = Partner.jobs.curDriver as JobDriver_DrugSexReceiver; - if (dri == null) - { - Job gettingQuickie = JobMaker.MakeJob(PartnerJob, pawn, Partner); - Partner.jobs.StartJob(gettingQuickie, JobCondition.InterruptForced); + defaultCompleteMode = ToilCompleteMode.Instant, + socialMode = RandomSocialMode.Off, + initAction = delegate + { + if (!(Partner.jobs.curDriver is JobDriver_DrugSexReceiver)) + { + Job gettingQuickie = JobMaker.MakeJob(PartnerJob, pawn, Partner); + Partner.jobs.StartJob(gettingQuickie, JobCondition.InterruptForced); + } } }; yield return StartPartnerJob; - Toil SexToil = new Toil(); - SexToil.defaultCompleteMode = ToilCompleteMode.Never; - SexToil.socialMode = RandomSocialMode.Off; - SexToil.defaultDuration = duration; - SexToil.handlingFacing = true; + Toil SexToil = new Toil + { + defaultCompleteMode = ToilCompleteMode.Never, + socialMode = RandomSocialMode.Off, + defaultDuration = duration, + handlingFacing = true + }; SexToil.FailOn(() => Partner.CurJob.def != PartnerJob); SexToil.initAction = delegate { Partner.pather.StopDead(); Partner.jobs.curDriver.asleep = false; - + Start(); Sexprops.usedCondom = CondomUtility.TryUseCondom(pawn) || CondomUtility.TryUseCondom(Partner); }; @@ -147,8 +143,7 @@ namespace RJWSexperience.Ideology /// copied from rjw /// public class JobDriver_DrugSexReceiver : JobDriver_SexBaseRecieverLoved - { - + { protected override IEnumerable MakeNewToils() { setup_ticks(); @@ -168,23 +163,25 @@ namespace RJWSexperience.Ideology yield return Toils_Reserve.Reserve(iTarget, 1, 0); - var get_loved = MakeSexToil(); - get_loved.handlingFacing = false; - yield return get_loved; + var get_loved = MakeSexToil(); + get_loved.handlingFacing = false; + yield return get_loved; } protected Toil MakeSexToil() { - Toil get_loved = new Toil(); - get_loved.defaultCompleteMode = ToilCompleteMode.Never; - get_loved.socialMode = RandomSocialMode.Off; - get_loved.handlingFacing = true; - get_loved.tickAction = delegate + Toil get_loved = new Toil { + defaultCompleteMode = ToilCompleteMode.Never, + socialMode = RandomSocialMode.Off, + handlingFacing = true, + tickAction = delegate + { + } }; get_loved.AddEndCondition(new Func(() => { - if (parteners.Count <= 0) + if (parteners.Count == 0) { return JobCondition.Succeeded; } @@ -204,8 +201,7 @@ namespace RJWSexperience.Ideology /// copied from rjw /// public class JobDriver_DrugMasturabate : JobDriver_Masturbate - { - + { protected override IEnumerable MakeNewToils() { setup_ticks(); @@ -252,6 +248,4 @@ namespace RJWSexperience.Ideology }; } } - - } diff --git a/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs b/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs index 48b4353..eae27e5 100644 --- a/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs +++ b/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs @@ -1,43 +1,36 @@ -using System; +using RimWorld; +using rjw; +using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Verse; using Verse.AI; -using Verse.AI.Group; -using RimWorld; -using rjw; namespace RJWSexperience.Ideology { - public class JobGiver_GangbangConsensual : ThinkNode_JobGiver - { - protected override Job TryGiveJob(Pawn pawn) - { - if (pawn.Drafted) return null; - DutyDef dutyDef = null; - PawnDuty duty = null; - if (pawn.mindState != null) - { - duty = pawn.mindState.duty; - dutyDef = duty.def; - } - else return null; + public class JobGiver_GangbangConsensual : ThinkNode_JobGiver + { + protected override Job TryGiveJob(Pawn pawn) + { + if (pawn.Drafted || pawn.mindState == null) + { + return null; + } - if (dutyDef == DutyDefOf.TravelOrLeave || !xxx.can_do_loving(pawn)) - { - return null; - } + PawnDuty duty = pawn.mindState.duty; - Pawn target = duty.focusSecond.Pawn; + if (duty.def == DutyDefOf.TravelOrLeave || !xxx.can_do_loving(pawn)) + { + return null; + } - if (!pawn.CanReach(target, PathEndMode.ClosestTouch, Danger.None)) return null; + Pawn target = duty.focusSecond.Pawn; - return JobMaker.MakeJob(RsiDefOf.Job.Gangbang, target); - } - } + if (!pawn.CanReach(target, PathEndMode.ClosestTouch, Danger.None)) + return null; + return JobMaker.MakeJob(RsiDefOf.Job.Gangbang, target); + } + } public class JobDriver_Gangbang : JobDriver_SexBaseInitiator { @@ -56,25 +49,27 @@ namespace RJWSexperience.Ideology this.FailOn(() => Partner.Drafted); yield return Toils_Goto.GotoThing(iTarget, PathEndMode.OnCell); - Toil StartPartnerJob = new Toil(); - StartPartnerJob.defaultCompleteMode = ToilCompleteMode.Instant; - StartPartnerJob.socialMode = RandomSocialMode.Off; - StartPartnerJob.initAction = delegate + Toil StartPartnerJob = new Toil { - - var dri = Partner.jobs.curDriver as JobDriver_SexBaseRecieverRaped; - if (dri == null) - { - Job gettin_loved = JobMaker.MakeJob(RsiDefOf.Job.GettinGangbang, pawn, Bed); - Partner.jobs.StartJob(gettin_loved, JobCondition.InterruptForced); + defaultCompleteMode = ToilCompleteMode.Instant, + socialMode = RandomSocialMode.Off, + initAction = delegate + { + if (!(Partner.jobs.curDriver is JobDriver_SexBaseRecieverRaped)) + { + Job gettin_loved = JobMaker.MakeJob(RsiDefOf.Job.GettinGangbang, pawn, Bed); + Partner.jobs.StartJob(gettin_loved, JobCondition.InterruptForced); + } } }; yield return StartPartnerJob; - Toil SexToil = new Toil(); - SexToil.defaultCompleteMode = ToilCompleteMode.Never; - SexToil.defaultDuration = duration; - SexToil.handlingFacing = true; + Toil SexToil = new Toil + { + defaultCompleteMode = ToilCompleteMode.Never, + defaultDuration = duration, + handlingFacing = true + }; SexToil.FailOn(() => Partner.CurJob.def != RsiDefOf.Job.GettinGangbang); SexToil.initAction = delegate { @@ -108,28 +103,30 @@ namespace RJWSexperience.Ideology } public class JobDriver_GangbangReceiver : JobDriver_SexBaseRecieverLoved - { + { protected override IEnumerable MakeNewToils() { setup_ticks(); parteners.Add(Partner);// add job starter, so this wont fail, before Initiator starts his job - Toil get_banged = new Toil(); - get_banged.defaultCompleteMode = ToilCompleteMode.Never; - get_banged.handlingFacing = true; - get_banged.initAction = delegate + Toil get_banged = new Toil { - pawn.pather.StopDead(); - pawn.jobs.curDriver.asleep = false; - }; - get_banged.tickAction = delegate - { - if ((parteners.Count > 0) && pawn.IsHashIntervalTick(ticks_between_hearts / parteners.Count) && pawn.IsHashIntervalTick(ticks_between_hearts)) - ThrowMetaIconF(pawn.Position, pawn.Map, FleckDefOf.Heart); + defaultCompleteMode = ToilCompleteMode.Never, + handlingFacing = true, + initAction = delegate + { + pawn.pather.StopDead(); + pawn.jobs.curDriver.asleep = false; + }, + tickAction = delegate + { + if ((parteners.Count > 0) && pawn.IsHashIntervalTick(ticks_between_hearts / parteners.Count) && pawn.IsHashIntervalTick(ticks_between_hearts)) + ThrowMetaIconF(pawn.Position, pawn.Map, FleckDefOf.Heart); + } }; get_banged.AddEndCondition(new Func(() => { - if (parteners.Count <= 0) + if (parteners.Count == 0) { return JobCondition.Succeeded; } @@ -148,12 +145,12 @@ namespace RJWSexperience.Ideology Partner.jobs.jobQueue.EnqueueFirst(tobed); } else if (pawn.HostileTo(Partner)) + { pawn.health.AddHediff(xxx.submitting); + } }); get_banged.socialMode = RandomSocialMode.Off; yield return get_banged; - } } - } diff --git a/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs b/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs index bc4bfdf..092b00b 100644 --- a/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs +++ b/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs @@ -1,56 +1,46 @@ -using System; +using RimWorld; +using rjw; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Verse; using Verse.AI; -using Verse.AI.Group; -using RimWorld; -using rjw; - namespace RJWSexperience.Ideology { - public class JobGiver_GangbangVictim : ThinkNode_JobGiver - { - protected override Job TryGiveJob(Pawn pawn) - { - if (pawn.Drafted) return null; - DutyDef dutyDef = null; - PawnDuty duty = null; - if (pawn.mindState != null) - { - duty = pawn.mindState.duty; - dutyDef = duty.def; - } - else return null; + public class JobGiver_GangbangVictim : ThinkNode_JobGiver + { + protected override Job TryGiveJob(Pawn pawn) + { + if (pawn.Drafted || pawn.mindState == null) + { + return null; + } - if (dutyDef == DutyDefOf.TravelOrLeave || !xxx.can_do_loving(pawn)) - { - return null; + PawnDuty duty = pawn.mindState.duty; + + if (duty.def == DutyDefOf.TravelOrLeave || !xxx.can_do_loving(pawn)) + { + return null; } Pawn target = duty.focusSecond.Pawn; - if (!pawn.CanReach(target, PathEndMode.ClosestTouch, Danger.None)) return null; - - return JobMaker.MakeJob(RsiDefOf.Job.RapeVictim, target); - } - } + if (!pawn.CanReach(target, PathEndMode.ClosestTouch, Danger.None)) return null; + return JobMaker.MakeJob(RsiDefOf.Job.RapeVictim, target); + } + } /// /// copied from rjw /// public class JobDriver_RapeVictim : JobDriver_Rape { - public override bool TryMakePreToilReservations(bool errorOnFailed) - { + public override bool TryMakePreToilReservations(bool errorOnFailed) + { return true; - } + } - protected override IEnumerable MakeNewToils() + protected override IEnumerable MakeNewToils() { if (RJWSettings.DebugRape) ModLog.Message("" + this.GetType().ToString() + "::MakeNewToils() called"); setup_ticks(); @@ -64,25 +54,28 @@ namespace RJWSexperience.Ideology SexUtility.RapeTargetAlert(pawn, Partner); - Toil StartPartnerJob = new Toil(); - StartPartnerJob.defaultCompleteMode = ToilCompleteMode.Instant; - StartPartnerJob.socialMode = RandomSocialMode.Off; - StartPartnerJob.initAction = delegate + Toil StartPartnerJob = new Toil { - var dri = Partner.jobs.curDriver as JobDriver_SexBaseRecieverRaped; - if (dri == null) + defaultCompleteMode = ToilCompleteMode.Instant, + socialMode = RandomSocialMode.Off, + initAction = delegate { - Job gettin_raped = JobMaker.MakeJob(PartnerJob, pawn); + if (!(Partner.jobs.curDriver is JobDriver_SexBaseRecieverRaped)) + { + Job gettin_raped = JobMaker.MakeJob(PartnerJob, pawn); - Partner.jobs.StartJob(gettin_raped, JobCondition.InterruptForced, null, false, true, null); + Partner.jobs.StartJob(gettin_raped, JobCondition.InterruptForced, null, false, true, null); + } } }; yield return StartPartnerJob; - Toil SexToil = new Toil(); - SexToil.defaultCompleteMode = ToilCompleteMode.Never; - SexToil.defaultDuration = duration; - SexToil.handlingFacing = true; + Toil SexToil = new Toil + { + defaultCompleteMode = ToilCompleteMode.Never, + defaultDuration = duration, + handlingFacing = true + }; SexToil.FailOn(() => Partner.CurJob.def != PartnerJob); SexToil.initAction = delegate { diff --git a/Source/IdeologyAddon/Rituals/LordJob_Rituals.cs b/Source/IdeologyAddon/Rituals/LordJob_Rituals.cs index e976d61..b496689 100644 --- a/Source/IdeologyAddon/Rituals/LordJob_Rituals.cs +++ b/Source/IdeologyAddon/Rituals/LordJob_Rituals.cs @@ -1,21 +1,15 @@ -using System; +using RimWorld; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Verse; -using Verse.AI; -using RimWorld; - namespace RJWSexperience.Ideology { - public class LordJob_Ritual_Gangbang : LordJob_Ritual - { + public class LordJob_Ritual_Gangbang : LordJob_Ritual + { public LordJob_Ritual_Gangbang() { } - public LordJob_Ritual_Gangbang(string targetID ,TargetInfo selectedTarget, Precept_Ritual ritual, RitualObligation obligation, List allStages, RitualRoleAssignments assignments, Pawn organizer = null) : base(selectedTarget, ritual, obligation, allStages, assignments, organizer) - { + public LordJob_Ritual_Gangbang(string targetID, TargetInfo selectedTarget, Precept_Ritual ritual, RitualObligation obligation, List allStages, RitualRoleAssignments assignments, Pawn organizer = null) : base(selectedTarget, ritual, obligation, allStages, assignments, organizer) + { foreach (RitualRole ritualRole in assignments.AllRolesForReading) { if (ritualRole != null && ritualRole.id.Contains(targetID)) @@ -25,6 +19,5 @@ namespace RJWSexperience.Ideology } } } - } } diff --git a/Source/IdeologyAddon/Rituals/RitualRoles.cs b/Source/IdeologyAddon/Rituals/RitualRoles.cs index 699f2d1..e7fb7fc 100644 --- a/Source/IdeologyAddon/Rituals/RitualRoles.cs +++ b/Source/IdeologyAddon/Rituals/RitualRoles.cs @@ -1,106 +1,101 @@ using RimWorld; -using Verse; using rjw; +using Verse; namespace RJWSexperience.Ideology { - public class RitualRole_RapeVictim : RitualRole - { - public override bool AppliesToRole(Precept_Role role, out string reason, Precept_Ritual ritual = null, Pawn pawn = null, bool skipReason = false) - { - reason = null; - return false; - } - - public override bool AppliesToPawn(Pawn p, out string reason, TargetInfo selectedTarget, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false) - { - reason = null; - if (CanBeVictim(p)) return true; - if (!skipReason) - { - reason = Keyed.RSVictimCondition; - } - return false; - } + public class RitualRole_RapeVictim : RitualRole + { + public override bool AppliesToRole(Precept_Role role, out string reason, Precept_Ritual ritual = null, Pawn pawn = null, bool skipReason = false) + { + reason = null; + return false; + } - public static bool CanBeVictim(Pawn pawn) - { - if (pawn.IsPrisonerOfColony || pawn.IsSlaveOfColony) return true; - if (pawn.IsSubmissive()) return true; - if (pawn.IsDesignatedComfort() || (pawn.guilt != null && pawn.guilt.IsGuilty) || (pawn.apparel != null && pawn.apparel.PsychologicallyNude)) return true; - return false; - } - } + public override bool AppliesToPawn(Pawn p, out string reason, TargetInfo selectedTarget, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false) + { + reason = null; + if (CanBeVictim(p)) return true; + if (!skipReason) + { + reason = Keyed.RSVictimCondition; + } + return false; + } - public class RitualRole_HumanBreedee : RitualRole - { - public override bool AppliesToRole(Precept_Role role, out string reason, Precept_Ritual ritual = null, Pawn pawn = null, bool skipReason = false) - { - reason = null; - return false; - } + public static bool CanBeVictim(Pawn pawn) + { + if (pawn.IsPrisonerOfColony || pawn.IsSlaveOfColony) return true; + if (pawn.IsSubmissive()) return true; + if (pawn.IsDesignatedComfort() || (pawn.guilt != null && pawn.guilt.IsGuilty) || (pawn.apparel != null && pawn.apparel.PsychologicallyNude)) return true; + return false; + } + } - public override bool AppliesToPawn(Pawn p, out string reason, TargetInfo selectedTarget, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false) - { - - reason = null; - if (!xxx.is_human(p)) - { - reason = Keyed.RSNotHuman; - return false; - } - if (CanBeBreedee(p)) return true; - if (!skipReason) - { - reason = Keyed.RSShouldCanFuck; - } - return false; - } + public class RitualRole_HumanBreedee : RitualRole + { + public override bool AppliesToRole(Precept_Role role, out string reason, Precept_Ritual ritual = null, Pawn pawn = null, bool skipReason = false) + { + reason = null; + return false; + } - public static bool CanBeBreedee(Pawn pawn) - { - if (xxx.can_be_fucked(pawn)) return true; - return false; - } - } + public override bool AppliesToPawn(Pawn p, out string reason, TargetInfo selectedTarget, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false) + { + reason = null; + if (!xxx.is_human(p)) + { + reason = Keyed.RSNotHuman; + return false; + } + if (CanBeBreedee(p)) return true; + if (!skipReason) + { + reason = Keyed.RSShouldCanFuck; + } + return false; + } - public class RitualRole_AnimalBreeder : RitualRole - { - public override bool Animal => true; + public static bool CanBeBreedee(Pawn pawn) => xxx.can_be_fucked(pawn); + } - public override bool AppliesToRole(Precept_Role role, out string reason, Precept_Ritual ritual = null, Pawn pawn = null, bool skipReason = false) - { - reason = null; - return false; - } + public class RitualRole_AnimalBreeder : RitualRole + { + public override bool Animal => true; - public override bool AppliesToPawn(Pawn p, out string reason, TargetInfo selectedTarget, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false) - { - reason = null; - if (!p.IsAnimal()) - { - reason = Keyed.RSNotAnimal; - return false; - } - if (CanBeBreeder(p, assignments?.Ritual)) return true; - if (!skipReason) - { - reason = Keyed.RSBreederCondition; - } - return false; - } + public override bool AppliesToRole(Precept_Role role, out string reason, Precept_Ritual ritual = null, Pawn pawn = null, bool skipReason = false) + { + reason = null; + return false; + } - public static bool CanBeBreeder(Pawn animal, Precept_Ritual precept) - { + public override bool AppliesToPawn(Pawn p, out string reason, TargetInfo selectedTarget, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false) + { + reason = null; + if (!p.IsAnimal()) + { + reason = Keyed.RSNotAnimal; + return false; + } + if (CanBeBreeder(p, assignments?.Ritual)) return true; + if (!skipReason) + { + reason = Keyed.RSBreederCondition; + } + return false; + } + + public static bool CanBeBreeder(Pawn animal, Precept_Ritual precept) + { if (precept != null && precept.ideo.HasPrecept(RsiDefOf.Precept.Bestiality_OnlyVenerated) && !precept.ideo.IsVeneratedAnimal(animal)) { return false; } - if (!xxx.can_rape(animal)) return false; - return true; - } - - } - - + if (!xxx.can_rape(animal)) + { + return false; + } + return true; + } + } }