Added minbreak lance and made sexfrenzy a psypower

This commit is contained in:
Shabakur 2022-11-25 20:55:53 +01:00
parent edb25be882
commit ae6adc62d2
33 changed files with 367 additions and 17 deletions

2
Compatibility.txt Normal file
View File

@ -0,0 +1,2 @@
Vanilla Psycast Expanded
- Disables psycasts

Binary file not shown.

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<JobDef>
<defName>Mindbreak</defName>
<driverClass>RJW_More_Genes.JobDriver_Mindbreak</driverClass>
<reportString>forced masturbatin'.</reportString>
<casualInterruptible>false</casualInterruptible>
</JobDef>
</Defs>

View File

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThingDef ParentName="ApparelNoQualityBase">
<defName>Apparel_PsychicMindbreakLance</defName>
<label>psychic Mindbreak lance</label>
<description>A limited-use psychic effector. It creates false images and sensations with the goal of bringing continues orgasms until the pawn becomes a masochist. Some strongwilled or lucky pawns pass the ordeal without being fully broken.</description>
<graphicData>
<texPath>Things/Item/Artifact/PsychicShockLance</texPath>
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<techLevel>Archotech</techLevel>
<tradeTags>
<li>Artifact</li>
</tradeTags>
<thingSetMakerTags>
<li>RewardStandardHighFreq</li>
</thingSetMakerTags>
<statBases>
<Mass>0.5</Mass>
<EquipDelay>2</EquipDelay>
<MarketValue>550</MarketValue>
<MaxHitPoints>80</MaxHitPoints>
</statBases>
<tickerType>Normal</tickerType>
<thingCategories>
<li>ApparelUtility</li>
</thingCategories>
<apparel>
<countsAsClothingForNudity>false</countsAsClothingForNudity>
<scoreOffset>4</scoreOffset>
<careIfWornByCorpse>false</careIfWornByCorpse>
<careIfDamaged>false</careIfDamaged>
<ignoredByNonViolent>true</ignoredByNonViolent>
<wearPerDay>0</wearPerDay>
<bodyPartGroups>
<li>Waist</li>
</bodyPartGroups>
<layers>
<li>Belt</li>
</layers>
</apparel>
<resourceReadoutPriority>Middle</resourceReadoutPriority>
<tradeNeverStack>true</tradeNeverStack>
<smeltable>false</smeltable>
<burnableByRecipe>false</burnableByRecipe>
<drawGUIOverlay>false</drawGUIOverlay>
<relicChance>3</relicChance>
<verbs>
<li>
<verbClass>Verb_CastTargetEffectLances</verbClass>
<label>psychic mindbreak lance</label>
<hasStandardCommand>true</hasStandardCommand>
<targetable>true</targetable>
<onlyManualCast>True</onlyManualCast>
<range>34.9</range>
<warmupTime>0.5</warmupTime>
<invalidTargetPawn>Psychic mindbreak immune</invalidTargetPawn>
<targetParams>
<canTargetBuildings>false</canTargetBuildings>
<canTargetAnimals>false</canTargetAnimals>
<canTargetMechs>false</canTargetMechs>
<onlyTargetPsychicSensitive>true</onlyTargetPsychicSensitive>
<neverTargetIncapacitated>false</neverTargetIncapacitated>
</targetParams>
<soundCast>PsychicShockLanceCast</soundCast>
</li>
</verbs>
<comps>
<li Class="CompProperties_Reloadable">
<maxCharges>2</maxCharges>
<destroyOnEmpty>true</destroyOnEmpty>
<hotKey>Misc4</hotKey>
<chargeNoun>charge</chargeNoun>
<displayGizmoWhileUndrafted>false</displayGizmoWhileUndrafted>
</li>
<li>
<compClass>RJW_More_Genes.CompTargetEffect_PsychicMindbreak</compClass>
</li>
<li Class="CompProperties_TargetEffect_GoodwillImpact">
<goodwillImpact>-200</goodwillImpact>
</li>
<li Class="CompProperties_TargetEffect_FleckOnTarget">
<fleckDef>PsycastPsychicEffect</fleckDef>
</li>
<li Class="CompProperties_TargetEffect_FleckConnecting">
<fleckDef>PsycastPsychicLine</fleckDef>
</li>
<li Class="CompProperties_Styleable"></li>
</comps>
<allowedArchonexusCount>1</allowedArchonexusCount>
</ThingDef>
</Defs>

View File

@ -23,7 +23,7 @@
</suffixSymbols>
</symbolPack>
</GeneDef>
<!--
<GeneDef>
<defName>rjw_genes_sexfrenzy</defName>
<label>Sex Frenzy</label>
@ -47,4 +47,5 @@
</suffixSymbols>
</symbolPack>
</GeneDef>
-->
</Defs>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<AbilityDef>
<AbilityDef ParentName="PsycastBaseSkip">
<defName>SexFrenzy</defName>
<label>SexFrenzy</label>
<description>Causes nearby pawns to go into a sex frenzy, trying to rape anyone if they can.</description>

View File

@ -95,6 +95,11 @@ namespace RJW_More_Genes
reason = "Rape is disabled";
return true;
}
else if (!RJWMGSettings.gene_pussyheal)
{
reason = "Disabled in modsettings";
return true;
}
return false;
}

View File

@ -36,7 +36,7 @@ namespace RJW_More_Genes
foreach (Pawn pawn in AffectedPawns(target,this.parent.pawn.Map))
{
if(pawn == null || !xxx.can_rape(pawn, false)|| pawn.jobs.curJob.def.defName == "GettinRaped" || pawn.jobs.curJob.def.defName == "SexFrenzy")
if(pawn == null || !xxx.can_rape(pawn, false)|| pawn.jobs.curJob.def.defName == "GettinRaped" || pawn.jobs.curJob.def.defName == "RapeRandom")
{
continue;
}
@ -51,7 +51,6 @@ namespace RJW_More_Genes
Job newJob = JobMaker.MakeJob(xxx.RapeRandom, pawn2);
pawn.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
}
Log.Message("test");
}
public override bool GizmoDisabled(out string reason)
@ -62,6 +61,11 @@ namespace RJW_More_Genes
reason = "Rape is disabled";
return true;
}
else if (!RJWMGSettings.sexfrenzy)
{
reason = "Disabled in modsettings";
return true;
}
return false;
}

View File

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using RimWorld;
using rjw;
using Verse.AI;
namespace RJW_More_Genes
{
public class CompTargetEffect_PsychicMindbreak : CompTargetEffect
{
public override void DoEffectOn(Pawn user, Thing target)
{
Pawn pawn = (Pawn)target;
if (pawn.Dead)
{
return;
}
pawn.pather.StopDead();
pawn.jobs.StopAll();
//pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.RandomRape, null, true, false, null, false, false, false);
Job newJob = JobMaker.MakeJob(JobDefOf.Mindbreak, pawn, null, pawn.Position);
pawn.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
}
}
}

View File

@ -11,7 +11,7 @@ namespace RJW_More_Genes
[DefOf]
public static class HediffDefOf
{
[MayRequireBiotech]
[MayRequireRoyalty]
public static readonly HediffDef SexFrenzy;
}
}

View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using RimWorld;
namespace RJW_More_Genes
{
[DefOf]
public static class JobDefOf
{
public static readonly JobDef Mindbreak;
}
}

View File

@ -0,0 +1,81 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using Verse.AI;
using rjw;
using RimWorld;
using Multiplayer.API;
namespace RJW_More_Genes
{
public class JobDriver_Mindbreak : JobDriver_SexBaseInitiator
{
//Slightly modifiied version of JobDriver_Masturbate from rjw
public override bool TryMakePreToilReservations(bool errorOnFailed)
{
return true;
}
[SyncMethod(SyncContext.None)]
public void rapid_orgasms()
{
this.ticks_left = this.duration;
this.cycle++;
}
protected override IEnumerable<Toil> MakeNewToils()
{
this.setup_ticks();
//this.duration = (int)(100 * Rand.Range(1.5f, 2.5f));
//this.rapid_orgasms();
Toil toil2 = Toils_General.Wait(this.max_duration, TargetIndex.None);
toil2.handlingFacing = true;
toil2.initAction = delegate ()
{
base.Start();
//this.Sexprops.isRape = true;
};
toil2.tickAction = delegate ()
{
if (this.pawn.IsHashIntervalTick(this.ticks_between_hearts))
{
base.ThrowMetaIconF(this.pawn.Position, this.pawn.Map, FleckDefOf.Heart);
}
base.SexTick(this.pawn, null, true, true);
SexUtility.reduce_rest(this.pawn, 1f);
if (this.ticks_left <= 0)
{
Log.Message("cycle " + this.cycle);
if ((this.pawn.story.traits.HasTrait(TraitDefOf.Masochist)))
{
base.ReadyForNextToil();
}
else
{
this.ticks_left = this.duration;
AfterSexUtility.processBrokenPawn(this.pawn);
}
}
};
toil2.AddFinishAction(delegate
{
base.End();
});
yield return toil2;
yield return new Toil
{
initAction = delegate ()
{
SexUtility.Aftersex(this.Sexprops);
},
defaultCompleteMode = ToilCompleteMode.Instant
};
yield break;
}
public int max_duration = 60000;
public int cycle = 0;
public int min_cycles = 5;
}
}

View File

@ -5,7 +5,6 @@ using System.Text;
using System.Threading.Tasks;
using HarmonyLib;
using rjw;
using RimWorld;
using Verse;
namespace RJW_More_Genes
{
@ -16,8 +15,11 @@ namespace RJW_More_Genes
//[HarmonyPostfix]
public static void Postfix(SexProps props)
{
Log.Message("triggered");
AbilityUtility.PussyHeal(props);
if(RJWMGSettings.gene_pussyheal)
{
AbilityUtility.PussyHeal(props);
Log.Message("triggered");
}
}
}
}

View File

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using UnityEngine;
namespace RJW_More_Genes
{
public class RJWMGSettingController : Mod
{
public RJWMGSettingController(ModContentPack content) : base(content)
{
base.GetSettings<RJWMGSettings>();
}
public override string SettingsCategory()
{
return "RJW More Genes";
}
public override void DoSettingsWindowContents(Rect inRect)
{
RJWMGSettings.DoWindowContents(inRect);
}
}
}

View File

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using UnityEngine;
namespace RJW_More_Genes
{
public class RJWMGSettings : ModSettings
{
public static void DoWindowContents(Rect inRect)
{
//Copied from RJW settings mostly
Rect outRect = new Rect(0f, 30f, inRect.width, inRect.height - 30f);
Rect rect = new Rect(0f, 0f, inRect.width - 16f, inRect.height + 300f);
//Widgets.BeginScrollView(outRect, ref RJWSettings.scrollPosition, rect, true);
Listing_Standard listing_Standard = new Listing_Standard();
listing_Standard.maxOneColumn = true;
listing_Standard.ColumnWidth = rect.width / 2.05f;
listing_Standard.Begin(rect);
listing_Standard.Gap(24f);
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.End();
}
public override void ExposeData()
{
base.ExposeData();
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);
}
public static bool gene_pussyheal = true;
public static bool sexfrenzy = true;
}
}

View File

@ -35,6 +35,9 @@
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\Shaba_Addons\Assemblies\0Harmony.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="0MultiplayerAPI">
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\RJW\1.4\Assemblies\0MultiplayerAPI.dll</HintPath>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
@ -64,14 +67,19 @@
<Compile Include="CompProperties_SexFrenzy.cs" />
<Compile Include="CompProperties_AbilityPussyHeal.cs" />
<Compile Include="CompProperties_SexInteractionRequirements.cs" />
<Compile Include="CompTargetEffect_PsychicMindbreak.cs" />
<Compile Include="GeneDefOf.cs" />
<Compile Include="HarmonyInit.cs" />
<Compile Include="HediffDefOf.cs" />
<Compile Include="JobDefOf.cs" />
<Compile Include="JobDriver_CastAbilityAfterSex.cs" />
<Compile Include="JobDriver_Mindbreak.cs" />
<Compile Include="MentalStateDefOf.cs" />
<Compile Include="PatchProcessSex.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="GeneUtility.cs" />
<Compile Include="RJWMGSettingController.cs" />
<Compile Include="RJWMGSettings.cs" />
<Compile Include="SexInteractionUtility.cs" />
<Compile Include="ThoughtDefOf.cs" />
</ItemGroup>

View File

@ -1 +1 @@
f59e2df566da23df4599eff4fecc10000904942f
a03ce3151cc9c700e1bbeaebf770821465310bea

View File

@ -11,3 +11,4 @@ C:\Users\tyrob\OneDrive\Documenten\GitHub\RJW_More_Genes\RJW_More_Genes\1.4\1.4\
C:\Users\tyrob\OneDrive\Documenten\GitHub\RJW_More_Genes\RJW_More_Genes\1.4\Source\RJW_More_Genes\obj\Debug\RJW_More_Genes.csproj.AssemblyReference.cache
C:\Users\tyrob\OneDrive\Documenten\GitHub\RJW_More_Genes\RJW_More_Genes\1.4\Source\RJW_More_Genes\obj\Debug\RJW_More_Genes.csproj.CoreCompileInputs.cache
C:\Users\tyrob\OneDrive\Documenten\GitHub\RJW_More_Genes\RJW_More_Genes\1.4\Source\RJW_More_Genes\obj\Debug\RJW_More_Genes.dll
C:\Users\tyrob\OneDrive\Documenten\GitHub\RJW_More_Genes\RJW_More_Genes\1.4\Source\RJW_More_Genes\obj\Debug\RJW_More_Genes.csproj.CopyComplete

View File

@ -3,6 +3,7 @@
<li>/</li>
<li>1.4</li>
<li IfModActive="Ludeon.RimWorld.Biotech">1.4/Mods/Biotech</li>
<li IfModActive="Ludeon.RimWorld.Royalty">1.4/Mods/Royalty</li>
</v1.4>
</loadFolders>

View File

@ -1,18 +1,46 @@
Healpussy
Points with (improvements) behind them are things already implemented, but things where I want to add improvements.
Vanilla
Mindbreak lance (improvements)
- Allow pawn to be moved while mindbreaking
- Dont let combat interrupt mindbreak
Biotech
Healpussy (improvements)
- Mood effect depends on relationship between pawns.
- Add sex interaction to have a female, female animal vaginal interaction, animal scissoring?
-
Sex frenzy gene
- Add Special Mind break, Run around colony and cause other pawns to go into random rape.
Aphrodisiac gene
- Increases sexdrive of pawns around pawn
Cumabsorber gene
- Gain benefits after cum enters any orfice, rest? combat?
- Gain benefits after cum enters any orfice, rest? combat? work?
Vigorous gene
- Gain rest after sex
Succubus like xenotype
- combination of genes to make succubus like xenotype.
Royalty
Add compatibility with vanilla expanded psypowers
Sex frenzy psycast (improvements)
- Add Special Mind break, Run around colony and cause other pawns to go into random rape.
- Allow it to effect drafted pawns and allow drafted pawns to be raped.
Orgasm psypower
- Force a pawn to orgasm, count as a short stun
Orgasm Cycle psypower
- Force a pawn to several orgasm over x time, each orgasm works as a short stun
Fertility psypower
- Increase a pawns fertility for some time
Sexdrive psypower
- Increase the sexdrive of a pawn for some time.
Psypenis psypower
- Temporary give a pawn a penis (fertile?)

View File

@ -9,4 +9,7 @@ V1.0.6
- Allowed Healpussy to work passively
- Added checks for RJWsettings and if the pawn has a vagina.
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
- Added mindbreak lance
- Changed sexfrenzy from a gene to a psycast