Compare commits

...

4 commits

Author SHA1 Message Date
Shabakur
ac84a7311d Merge branch 'main' of https://github.com/Shabakur/RJW_More_ 2023-01-28 17:45:48 +01:00
Shabakur
8a0cc71dfe Consensual pussyheal allowed if rape enabled 2023-01-28 17:45:38 +01:00
Shabakur
7343b4271e
Update changelog.md 2023-01-28 17:41:45 +01:00
Shabakur
1651afe4dd Added setting for consensual pussyheal 2023-01-28 17:37:57 +01:00
21 changed files with 108 additions and 6 deletions

Binary file not shown.

View file

@ -7,4 +7,11 @@
<reportString>forced masturbatin'.</reportString> <reportString>forced masturbatin'.</reportString>
<casualInterruptible>false</casualInterruptible> <casualInterruptible>false</casualInterruptible>
</JobDef> </JobDef>
<JobDef>
<defName>MiscSexReciever</defName>
<driverClass>RJW_More_Genes.JobDriver_MiscSexBaseReciever</driverClass>
<reportString>lovin'.</reportString>
<casualInterruptible>false</casualInterruptible>
</JobDef>
</Defs> </Defs>

View file

@ -12,5 +12,7 @@ namespace RJW_More_Genes
public static class JobDefOf public static class JobDefOf
{ {
public static readonly JobDef Mindbreak; public static readonly JobDef Mindbreak;
public static readonly JobDef MiscSexReciever;
public static readonly JobDef HealPussy;
} }
} }

View file

@ -19,7 +19,11 @@ namespace RJW_More_Genes
//this.FailOnCannotTouch(TargetIndex.B, PathEndMode.OnCell); //this.FailOnCannotTouch(TargetIndex.B, PathEndMode.OnCell);
this.FailOnDespawnedNullOrForbidden(this.iTarget); this.FailOnDespawnedNullOrForbidden(this.iTarget);
//this.FailOn(() => !target.health.capacities.CanBeAwake); //this.FailOn(() => !target.health.capacities.CanBeAwake);
JobDef PartnerJob = xxx.gettin_raped; JobDef PartnerJob = xxx.getting_quickie;
if(RJWMGSettings.consensual_pussyheal)
{
PartnerJob = JobDefOf.MiscSexReciever;
}
yield return Toils_Goto.Goto(TargetIndex.A, PathEndMode.OnCell); yield return Toils_Goto.Goto(TargetIndex.A, PathEndMode.OnCell);
yield return new Toil yield return new Toil
{ {
@ -46,6 +50,11 @@ namespace RJW_More_Genes
if (comp.props is CompProperties_SexInteractionRequirements) if (comp.props is CompProperties_SexInteractionRequirements)
{ {
CompProperties_SexInteractionRequirements sexpropsreq = comp.props as CompProperties_SexInteractionRequirements; CompProperties_SexInteractionRequirements sexpropsreq = comp.props as CompProperties_SexInteractionRequirements;
if (RJWMGSettings.gene_pussyheal)
{
sexpropsreq.tags.Clear();
sexpropsreq.tags.Add(rjw.Modules.Interactions.Enums.InteractionTag.Consensual);
}
this.Sexprops = SexInteractionUtility.GenerateSexProps(this.pawn, this.Partner, sexpropsreq); this.Sexprops = SexInteractionUtility.GenerateSexProps(this.pawn, this.Partner, sexpropsreq);
} }
} }

View file

@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
using Verse.AI;
using rjw;
namespace RJW_More_Genes
{
//Made this quickly may have some mistakes
public class JobDriver_MiscSexBaseReciever: JobDriver_SexBaseReciever
{
protected override IEnumerable<Toil> MakeNewToils()
{
base.setup_ticks();
this.parteners.Add(base.Partner);
this.FailOnDespawnedOrNull(this.iTarget);
this.FailOn(() => !base.Partner.health.capacities.CanBeAwake);
this.FailOn(() => this.pawn.Drafted);
this.FailOn(() => base.Partner.Drafted);
Toil toil = this.MakeSexToil();
toil.FailOn(() => base.Partner.CurJob.def != JobDefOf.HealPussy); //or other jobs in the future
yield return toil;
yield break;
}
private Toil MakeSexToil()
{
Toil toil = new Toil();
toil.defaultCompleteMode = ToilCompleteMode.Never;
toil.socialMode = RandomSocialMode.Off;
toil.handlingFacing = true;
toil.tickAction = delegate ()
{
if (this.pawn.IsHashIntervalTick(this.ticks_between_hearts))
{
base.ThrowMetaIconF(this.pawn.Position, this.pawn.Map, FleckDefOf.Heart);
}
};
toil.AddEndCondition(delegate
{
if (this.parteners.Count <= 0)
{
return JobCondition.Succeeded;
}
return JobCondition.Ongoing;
});
toil.AddFinishAction(delegate
{
if (xxx.is_human(this.pawn))
{
this.pawn.Drawer.renderer.graphics.ResolveApparelGraphics();
}
GlobalTextureAtlasManager.TryMarkPawnFrameSetDirty(this.pawn);
});
toil.socialMode = RandomSocialMode.Off;
return toil;
}
}
}

View file

@ -21,7 +21,10 @@ namespace RJW_More_Genes
listing_Standard.Begin(rect); listing_Standard.Begin(rect);
listing_Standard.Gap(24f); listing_Standard.Gap(24f);
listing_Standard.CheckboxLabeled("gene pussyheal", ref gene_pussyheal, "disable the effects of the gene", 0f, 1f); listing_Standard.CheckboxLabeled("gene pussyheal", ref gene_pussyheal, "disable the effects of the gene", 0f, 1f);
listing_Standard.CheckboxLabeled("sexfrenzy", ref sexfrenzy, "disable the effects", 0f, 1f); listing_Standard.Gap(3f);
listing_Standard.CheckboxLabeled("sexfrenzy", ref sexfrenzy, "disable the effects of the gene", 0f, 1f);
listing_Standard.Gap(3f);
listing_Standard.CheckboxLabeled("consensual_pussyheal", ref consensual_pussyheal, "pussyheal counts as consensual sex instead of rape", 0f, 1f);
listing_Standard.End(); listing_Standard.End();
} }
@ -30,8 +33,10 @@ namespace RJW_More_Genes
base.ExposeData(); base.ExposeData();
Scribe_Values.Look<bool>(ref RJWMGSettings.gene_pussyheal, "gene_pussyheal", RJWMGSettings.gene_pussyheal, true); Scribe_Values.Look<bool>(ref RJWMGSettings.gene_pussyheal, "gene_pussyheal", RJWMGSettings.gene_pussyheal, true);
Scribe_Values.Look<bool>(ref RJWMGSettings.sexfrenzy, "sexfrenzy", RJWMGSettings.sexfrenzy, true); Scribe_Values.Look<bool>(ref RJWMGSettings.sexfrenzy, "sexfrenzy", RJWMGSettings.sexfrenzy, true);
Scribe_Values.Look<bool>(ref RJWMGSettings.consensual_pussyheal, "consensual_pussyheal", RJWMGSettings.consensual_pussyheal, false);
} }
public static bool gene_pussyheal = true; public static bool gene_pussyheal = true;
public static bool sexfrenzy = true; public static bool sexfrenzy = true;
public static bool consensual_pussyheal = true;
} }
} }

View file

@ -69,6 +69,7 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="JobDriver_CastAbilityAfterSex.cs" />
<Compile Include="Royalty\AbilityUtility.cs" /> <Compile Include="Royalty\AbilityUtility.cs" />
<Compile Include="Royalty\CompAbilityEffect_Orgasm.cs" /> <Compile Include="Royalty\CompAbilityEffect_Orgasm.cs" />
<Compile Include="Royalty\CompAbilityEffect_SexFrenzy.cs" /> <Compile Include="Royalty\CompAbilityEffect_SexFrenzy.cs" />
@ -85,7 +86,7 @@
<Compile Include="Royalty\HediffComp_OrgasmCycle.cs" /> <Compile Include="Royalty\HediffComp_OrgasmCycle.cs" />
<Compile Include="HediffDefOf.cs" /> <Compile Include="HediffDefOf.cs" />
<Compile Include="JobDefOf.cs" /> <Compile Include="JobDefOf.cs" />
<Compile Include="JobDriver_CastAbilityAfterSex.cs" /> <Compile Include="JobDriver_MiscSexBaseReciever.cs" />
<Compile Include="JobDriver_Mindbreak.cs" /> <Compile Include="JobDriver_Mindbreak.cs" />
<Compile Include="MentalStateDefOf.cs" /> <Compile Include="MentalStateDefOf.cs" />
<Compile Include="PatchProcessSex.cs" /> <Compile Include="PatchProcessSex.cs" />

View file

@ -90,7 +90,7 @@ namespace RJW_More_Genes
reason = this.parent.pawn.Name + " has no vagina to use."; reason = this.parent.pawn.Name + " has no vagina to use.";
return true; return true;
} }
else if (!RJWSettings.rape_enabled) else if (!RJWSettings.rape_enabled && !RJWMGSettings.consensual_pussyheal)
{ {
reason = "Rape is disabled"; reason = "Rape is disabled";
return true; return true;

View file

@ -1 +1 @@
a5ab93a622659cbd8dd55dafbd7ec218b2635267 a9c54690bdfa5f3538ab47c50ae6d6f8f88e1b94

View file

@ -1,24 +1,37 @@
V1.0 Made Changelog, currently have insectincubator and mechbreeder genes V1.0 Made Changelog, currently have insectincubator and mechbreeder genes
V1.0.1 Fixed some null errors in geneutility V1.0.1 Fixed some null errors in geneutility
V1.0.2 Added insectbreeder gene V1.0.2 Added insectbreeder gene
V1.0.3 Added Healpussy Gene V1.0.3 Added Healpussy Gene
V1.0.4 Changed Name and Removed Genes which were copied to rjw_genes V1.0.4 Changed Name and Removed Genes which were copied to rjw_genes
V1.0.5 V1.0.5
- Allowed Healpussy to work on animals - Allowed Healpussy to work on animals
V1.0.6 V1.0.6
- Allowed Healpussy to work passively - Allowed Healpussy to work passively
- Added checks for RJWsettings and if the pawn has a vagina. - Added checks for RJWsettings and if the pawn has a vagina.
V1.0.7 V1.0.7
- Removed Dependency on biotech, Mod will "function" without biotech enabled, but has no non-biotech required content currently. - Removed Dependency on biotech, Mod will "function" without biotech enabled, but has no non-biotech required content currently.
V1.1.0 V1.1.0
- Added mindbreak lance - Added mindbreak lance
- Changed sexfrenzy from a gene to a psycast - Changed sexfrenzy from a gene to a psycast
V1.1.1 V1.1.1
- Fixed error when sexfrenzy hit an animal - Fixed error when sexfrenzy hit an animal
- Add orgasm psypower - Add orgasm psypower
- Add multiorgasm psypower - Add multiorgasm psypower
- Made all current psypowers compatible with vanilla psycast expanded - Made all current psypowers compatible with vanilla psycast expanded
V1.1.2 V1.1.2
- Pawns affected by sexfrenzy only rape pawns who they are attracted to. - Pawns affected by sexfrenzy only rape pawns who they are attracted to.
- Removed healpussy cooldown - Removed healpussy cooldown
- Fixed Mindbreak Lance - Fixed Mindbreak Lance
V1.1.3
- Added setting for consensual pussyheal