mirror of
https://gitgud.io/amevarashi/rjw-sexperience-ideology.git
synced 2024-08-15 00:43:19 +00:00
Compare commits
2 commits
f7206347da
...
670584500b
Author | SHA1 | Date | |
---|---|---|---|
|
670584500b | ||
|
032b031123 |
17 changed files with 358 additions and 377 deletions
|
@ -7,16 +7,16 @@ 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)
|
||||
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)]
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -63,8 +63,6 @@
|
|||
<Compile Include="Filters\RelationFilter.cs" />
|
||||
<Compile Include="RelationHelpers.cs" />
|
||||
<Compile Include="RomanceChanceFactorHelpers.cs" />
|
||||
<Compile Include="RsiHistoryEventDefOf.cs" />
|
||||
<Compile Include="RsiPreceptDefOf.cs" />
|
||||
<Compile Include="Filters\TwoPawnFilter.cs" />
|
||||
<Compile Include="Filters\SinglePawnFilter.cs" />
|
||||
<Compile Include="Precepts\Comp_SelfTookMemoryThought_Gendered.cs" />
|
||||
|
@ -95,7 +93,7 @@
|
|||
<Compile Include="Thoughts\ThoughtDefExtension_StageFromValue.cs" />
|
||||
<Compile Include="Thoughts\Thought_IncreaseRecord.cs" />
|
||||
<Compile Include="Thoughts\Thought_Opinionbased.cs" />
|
||||
<Compile Include="VariousDefOf.cs" />
|
||||
<Compile Include="RsiDefOf.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Krafs.Rimworld.Ref">
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,11 +113,13 @@ namespace RJWSexperience.Ideology.Patches
|
|||
|
||||
public static float PreceptSextype(Pawn pawn, Pawn partner, float score, List<HistoryEventDef> 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;
|
||||
}
|
||||
}
|
||||
|
@ -148,7 +150,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 +215,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 +243,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
|
||||
|
|
|
@ -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
|
|||
/// <returns>Forbid romance option</returns>
|
||||
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<DefExtension_Incest>()?.allowManualRomanceOnlyFor;
|
||||
BloodRelationDegree relationDegree = RelationHelpers.GetBloodRelationDegree(one, two);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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(VariousDefOf.DrugMasturbate);
|
||||
if (duty.def == DutyDefOf.TravelOrLeave || !xxx.can_do_loving(pawn))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return JobMaker.MakeJob(VariousDefOf.DrugSex, target);
|
||||
}
|
||||
Pawn target = FindPartner(pawn, duty);
|
||||
|
||||
protected Pawn FindPartner(Pawn pawn, PawnDuty duty)
|
||||
{
|
||||
if (duty != null)
|
||||
{
|
||||
List<Pawn> 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<Pawn> 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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// copied from rjw
|
||||
|
@ -65,7 +56,7 @@ namespace RJWSexperience.Ideology
|
|||
protected override IEnumerable<Toil> MakeNewToils()
|
||||
{
|
||||
setup_ticks();
|
||||
var PartnerJob = VariousDefOf.GettinDrugSex;
|
||||
var PartnerJob = RsiDefOf.Job.GettinDrugSex;
|
||||
|
||||
this.FailOnDespawnedNullOrForbidden(iTarget);
|
||||
this.FailOn(() => !Partner.health.capacities.CanBeAwake);
|
||||
|
@ -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
|
||||
/// </summary>
|
||||
public class JobDriver_DrugSexReceiver : JobDriver_SexBaseRecieverLoved
|
||||
{
|
||||
|
||||
{
|
||||
protected override IEnumerable<Toil> 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<JobCondition>(() =>
|
||||
{
|
||||
if (parteners.Count <= 0)
|
||||
if (parteners.Count == 0)
|
||||
{
|
||||
return JobCondition.Succeeded;
|
||||
}
|
||||
|
@ -204,8 +201,7 @@ namespace RJWSexperience.Ideology
|
|||
/// copied from rjw
|
||||
/// </summary>
|
||||
public class JobDriver_DrugMasturabate : JobDriver_Masturbate
|
||||
{
|
||||
|
||||
{
|
||||
protected override IEnumerable<Toil> MakeNewToils()
|
||||
{
|
||||
setup_ticks();
|
||||
|
@ -252,6 +248,4 @@ namespace RJWSexperience.Ideology
|
|||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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(VariousDefOf.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,26 +49,28 @@ 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(VariousDefOf.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;
|
||||
SexToil.FailOn(() => Partner.CurJob.def != VariousDefOf.GettinGangbang);
|
||||
Toil SexToil = new Toil
|
||||
{
|
||||
defaultCompleteMode = ToilCompleteMode.Never,
|
||||
defaultDuration = duration,
|
||||
handlingFacing = true
|
||||
};
|
||||
SexToil.FailOn(() => Partner.CurJob.def != RsiDefOf.Job.GettinGangbang);
|
||||
SexToil.initAction = delegate
|
||||
{
|
||||
Start();
|
||||
|
@ -108,28 +103,30 @@ namespace RJWSexperience.Ideology
|
|||
}
|
||||
|
||||
public class JobDriver_GangbangReceiver : JobDriver_SexBaseRecieverLoved
|
||||
{
|
||||
{
|
||||
protected override IEnumerable<Toil> 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<JobCondition>(() =>
|
||||
{
|
||||
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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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(VariousDefOf.RapeVictim, target);
|
||||
}
|
||||
}
|
||||
if (!pawn.CanReach(target, PathEndMode.ClosestTouch, Danger.None)) return null;
|
||||
|
||||
return JobMaker.MakeJob(RsiDefOf.Job.RapeVictim, target);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// copied from rjw
|
||||
/// </summary>
|
||||
public class JobDriver_RapeVictim : JobDriver_Rape
|
||||
{
|
||||
public override bool TryMakePreToilReservations(bool errorOnFailed)
|
||||
{
|
||||
public override bool TryMakePreToilReservations(bool errorOnFailed)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
protected override IEnumerable<Toil> MakeNewToils()
|
||||
protected override IEnumerable<Toil> 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
|
||||
{
|
||||
|
|
|
@ -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<RitualStage> 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<RitualStage> 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
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
if (precept != null && precept.ideo.HasPrecept(RsiPreceptDefOf.Bestiality_OnlyVenerated) && !precept.ideo.IsVeneratedAnimal(animal))
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<PawnRelationDef> relations = pawn.GetRelations(partner).Where(def => def.familyByBloodRelation);
|
||||
foreach (PawnRelationDef relationDef in relations)
|
||||
{
|
||||
|
@ -74,7 +74,7 @@ namespace RJWSexperience.Ideology
|
|||
{
|
||||
IEnumerable<PreceptDef> incestuousPrecepts = DefDatabase<PreceptDef>
|
||||
.AllDefsListForReading
|
||||
.Where(def => def.issue == VariousDefOf.Incestuos);
|
||||
.Where(def => def.issue == RsiDefOf.Issue.Incestuos);
|
||||
|
||||
IEnumerable<TableDataGetter<PawnRelationDef>> preceptGetters = incestuousPrecepts
|
||||
.Select(precept => new TableDataGetter<PawnRelationDef>(precept.defName,(PawnRelationDef rel) => GetRomanceChanceFactor(rel, precept)));
|
||||
|
|
65
Source/IdeologyAddon/RsiDefOf.cs
Normal file
65
Source/IdeologyAddon/RsiDefOf.cs
Normal file
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue