Added 2 new psypowers

This commit is contained in:
Shabakur 2022-11-27 19:44:41 +01:00
parent 954b11ac4c
commit ff86df5b52
58 changed files with 719 additions and 55 deletions

View File

@ -1,2 +1 @@
Vanilla Psycast Expanded
- Disables psycasts
I'm currently unaware of any uncompatibilities.

View File

@ -1,10 +1,12 @@
# RJW_More_
Adds some more features related to RJW to the game.
Adds some more features related to RJW to the game. Mod is WIP, will be adding more features in the future and current features may be changed or removed.
## Current features
- PussyHeal gene
- Sexfrenzy Psypower
- Mindbreak Lance
- Pussyheal gene
- Sexfrenzy psypower
- Orgasm psypower
- MultiOrgasm psypower
- Mindbreak lance
Any suggestions and ideas are welcome. See [my current ideas](TODOS.md) for what I have already written down.

View File

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<Defs>
<VFECore.Abilities.AbilityDef ParentName="VPE_PsycastBase">
<defName>RJWMG_Orgasm</defName>
<label>Orgasm</label>
<description>Force the target to have an orgasm, stunning them for a short period.</description>
<iconPath>Things/Mote/Heart</iconPath>
<castTime>60</castTime>
<range>24.9</range>
<fleckOnTarget>Heart</fleckOnTarget>
<targetMode>Pawn</targetMode>
<abilityClass>VFECore.Abilities.Ability_Blank</abilityClass>
<targetingParameters>
<canTargetSelf>true</canTargetSelf>
<canTargetAnimals>false</canTargetAnimals>
<canTargetMechs>false</canTargetMechs>
<canTargetHumans>true</canTargetHumans>
<canTargetBuildings>false</canTargetBuildings>
</targetingParameters>
<modExtensions>
<li Class="VanillaPsycastsExpanded.AbilityExtension_Psycast">
<path>RJW_M_Nymph</path>
<level>1</level>
<order>1</order>
<psyfocusCost>0.01</psyfocusCost>
<entropyGain>12</entropyGain>
<showCastBubble>true</showCastBubble>
<psychic>true</psychic>
</li>
<li Class="RJWMoreGenes_VPE.AbilityExtentsion_Orgasm">
<stunduration>3</stunduration>
</li>
</modExtensions>
</VFECore.Abilities.AbilityDef>
<VFECore.Abilities.AbilityDef ParentName="VPE_PsycastBase">
<defName>RJWMG_OrgasmCycle</defName>
<label>MultiOrgasm</label>
<description>Force the target to have multiple orgasms over time, each one stunning them shortly.</description>
<iconPath>Things/Mote/Heart</iconPath>
<castTime>60</castTime>
<range>24.9</range>
<durationTime>2700</durationTime>
<fleckOnTarget>Heart</fleckOnTarget>
<targetMode>Pawn</targetMode>
<abilityClass>VFECore.Abilities.Ability_Blank</abilityClass>
<targetingParameters>
<canTargetSelf>true</canTargetSelf>
<canTargetAnimals>false</canTargetAnimals>
<canTargetMechs>false</canTargetMechs>
<canTargetHumans>true</canTargetHumans>
<canTargetBuildings>false</canTargetBuildings>
</targetingParameters>
<modExtensions>
<li Class="VanillaPsycastsExpanded.AbilityExtension_Psycast">
<path>RJW_M_Nymph</path>
<level>2</level>
<order>1</order>
<psyfocusCost>0.01</psyfocusCost>
<entropyGain>12</entropyGain>
<showCastBubble>true</showCastBubble>
<psychic>true</psychic>
</li>
<li Class="VFECore.Abilities.AbilityExtension_Hediff">
<hediff>OrgasmCycle</hediff>
<durationMultiplier>PsychicSensitivity</durationMultiplier>
</li>
</modExtensions>
</VFECore.Abilities.AbilityDef>
<VFECore.Abilities.AbilityDef ParentName="VPE_PsycastBase">
<defName>RJWMG_Sexfrenzy</defName>
<label>Sexfrenzy</label>
<description>Causes nearby pawns to go into a sex frenzy, trying to rape anyone if they can.</description>
<iconPath>Things/Mote/Heart</iconPath>
<castTime>120</castTime>
<range>14.9</range>
<radius>4.9</radius>
<fleckOnTarget>Heart</fleckOnTarget>
<abilityClass>VFECore.Abilities.Ability_Blank</abilityClass>
<targetingParameters>
<canTargetSelf>true</canTargetSelf>
<canTargetMechs>false</canTargetMechs>
<canTargetHumans>true</canTargetHumans>
<canTargetAnimals>true</canTargetAnimals>
<canTargetLocations>true</canTargetLocations>
</targetingParameters>
<modExtensions>
<li Class="VanillaPsycastsExpanded.AbilityExtension_Psycast">
<path>RJW_M_Nymph</path>
<level>4</level>
<order>1</order>
<psyfocusCost>0.15</psyfocusCost>
<entropyGain>30</entropyGain>
<showCastBubble>true</showCastBubble>
<psychic>true</psychic>
</li>
<li Class="RJWMoreGenes_VPE.AbilityExtentsion_Sexfrenzy">
</li>
</modExtensions>
</VFECore.Abilities.AbilityDef>
</Defs>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<Defs>
<VanillaPsycastsExpanded.PsycasterPathDef>
<defName>RJW_M_Nymph</defName>
<label>Nymph</label>
<description>Nymph psycasts are focused on instigating sex, one way or another.</description>
<background>UI/Backgrounds/EmpathPath</background>
<altBackground>UI/AlternativeBackgrounds/PathBG_Empath</altBackground>
<tab>Psycasts</tab>
<tooltip>Nymps are psycasters known to bring sex to their comminuties. Known to arouse with but a few words, particularly powerful nymps can create great orgies.</tooltip>
</VanillaPsycastsExpanded.PsycasterPathDef>
</Defs>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<AbilityDef ParentName="PsycastBaseSkip">
<defName>Orgasm</defName>
<label>Orgasm</label>
<description>Force the target to have an orgasm, stunning them for a short period.</description>
<iconPath>Things/Mote/Heart</iconPath>
<displayGizmoWhileUndrafted>false</displayGizmoWhileUndrafted>
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
<warmupStartSound>Coagulate_Cast</warmupStartSound>
<displayOrder>403</displayOrder>
<statBases>
<Ability_EntropyGain>12</Ability_EntropyGain>
<Ability_PsyfocusCost>0.01</Ability_PsyfocusCost>
<Ability_Duration>3</Ability_Duration>
</statBases>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<warmupTime>1</warmupTime>
<range>24.9</range>
<targetParams>
<canTargetSelf>True</canTargetSelf>
<canTargetAnimals>false</canTargetAnimals>
<canTargetLocations>false</canTargetLocations>
<canTargetBuildings>false</canTargetBuildings>
<canTargetMechs>false</canTargetMechs>
</targetParams>
</verbProperties>
<comps>
<li Class="RJW_More_Genes.CompProperties_AbilityOrgasm"> <!-- namespace needs to be changed when copied to another mod-->
</li>
<li Class="CompProperties_AbilityFleckOnTarget">
<fleckDef>Heart</fleckDef>
</li>
</comps>
</AbilityDef>
</Defs>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<AbilityDef ParentName="PsycastBaseSkip">
<defName>OrgasmCycle</defName>
<label>MultiOrgasm</label>
<description>Force the target to have multiple orgasms over time, each one stunning them shortly.</description>
<iconPath>Things/Mote/Heart</iconPath>
<displayGizmoWhileUndrafted>false</displayGizmoWhileUndrafted>
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
<warmupStartSound>Coagulate_Cast</warmupStartSound>
<displayOrder>404</displayOrder>
<statBases>
<Ability_EntropyGain>18</Ability_EntropyGain>
<Ability_PsyfocusCost>0.05</Ability_PsyfocusCost>
<Ability_Duration>45</Ability_Duration>
</statBases>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<warmupTime>1</warmupTime>
<range>24.9</range>
<targetParams>
<canTargetSelf>True</canTargetSelf>
<canTargetAnimals>false</canTargetAnimals>
<canTargetLocations>false</canTargetLocations>
<canTargetBuildings>false</canTargetBuildings>
<canTargetMechs>false</canTargetMechs>
</targetParams>
</verbProperties>
<comps>
<li Class = "CompProperties_AbilityGiveHediff">
<compClass>CompAbilityEffect_GiveHediff</compClass>
<hediffDef>OrgasmCycle</hediffDef>
<durationMultiplier>PsychicSensitivity</durationMultiplier>
<psychic>True</psychic>
<goodwillImpact>-15</goodwillImpact>
<applyGoodwillImpactToLodgers>False</applyGoodwillImpactToLodgers>
</li>
<li Class="CompProperties_AbilityFleckOnTarget">
<fleckDef>Heart</fleckDef>
</li>
</comps>
</AbilityDef>
</Defs>

View File

@ -7,13 +7,16 @@
<iconPath>Things/Mote/Heart</iconPath>
<displayGizmoWhileUndrafted>false</displayGizmoWhileUndrafted>
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
<cooldownTicksRange>180000</cooldownTicksRange>
<statBases>
<Ability_EntropyGain>30</Ability_EntropyGain>
<Ability_PsyfocusCost>0.15</Ability_PsyfocusCost>
</statBases>
<warmupStartSound>Coagulate_Cast</warmupStartSound>
<displayOrder>402</displayOrder>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<warmupTime>1</warmupTime>
<range>7.9</range>
<range>14.9</range>
<targetParams>
<canTargetSelf>True</canTargetSelf>
<canTargetAnimals>True</canTargetAnimals>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<HediffDef>
<defName>OrgasmCycle</defName>
<label>MultiOrgasm</label>
<labelNoun>multi-orgasm</labelNoun>
<description>A pawn under the influence of multiorgasm.</description>
<hediffClass>HediffWithComps</hediffClass>
<defaultLabelColor>(0.5, 0.5, 0.9)</defaultLabelColor>
<makesSickThought>false</makesSickThought>
<isBad>false</isBad>
<tendable>false</tendable>
<initialSeverity>1.0</initialSeverity>
<minSeverity>1.0</minSeverity>
<maxSeverity>1.0</maxSeverity>
<scenarioCanAdd>false</scenarioCanAdd>
<comps>
<li Class="HediffCompProperties_Disappears">
<disappearsAfterTicks>
<!--0.8 hour-->
<min>2000</min>
<!--1.2 hours-->
<max>3000</max>
</disappearsAfterTicks>
</li>
<li Class="RJW_More_Genes.HediffCompProperties_OrgasmCycle">
<intervalticks>200~1000</intervalticks>
</li>
</comps>
<stages>
<li>
<becomeVisible>true</becomeVisible>
</li>
</stages>
</HediffDef>
</Defs>

View File

@ -17,16 +17,16 @@
<comps>
<li Class="HediffCompProperties_Disappears">
<disappearsAfterTicks>
<!--1 hour-->
<!--0.1 hour-->
<min>250</min>
<!--2 hours-->
<!--0.2 hours-->
<max>500</max>
</disappearsAfterTicks>
</li>
</comps>
<stages>
<li>
<becomeVisible>true</becomeVisible>
<becomeVisible>false</becomeVisible>
</li>
</stages>
</HediffDef>

View File

@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VFECore.Abilities;
using Verse;
using RimWorld;
using RimWorld.Planet;
//using RJW_More_Genes;
namespace RJWMoreGenes_VPE
{
public class AbilityExtentsion_Orgasm : AbilityExtension_AbilityMod
{
public override void Cast(GlobalTargetInfo[] targets, VFECore.Abilities.Ability ability)
{
base.Cast(targets, ability);
foreach (GlobalTargetInfo globalTargetInfo in targets)
{
Pawn pawn = globalTargetInfo.Thing as Pawn;
if(pawn != null && !pawn.Dead)
{
float num = stunduration * 60;
RJW_More_Genes.AbilityUtility.Orgasm(pawn, (int)num);
}
}
}
public int stunduration;
}
}

View File

@ -0,0 +1,103 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VFECore.Abilities;
using Verse;
using Verse.AI;
using RimWorld;
using RimWorld.Planet;
using rjw;
using RJW_More_Genes;
//using RJW_More_Genes;
namespace RJWMoreGenes_VPE
{
public class AbilityExtentsion_Sexfrenzy : AbilityExtension_AbilityMod
{
public override void Cast(GlobalTargetInfo[] targets, VFECore.Abilities.Ability ability)
{
Log.Message("trigger");
base.Cast(targets, ability);
foreach (GlobalTargetInfo globalTargetInfo in targets)
{
foreach (Pawn pawn in AffectedPawns(globalTargetInfo.Cell, globalTargetInfo.Map))
{
if (pawn != null)
{
pawn.health.AddHediff(RJW_More_Genes.HediffDefOf.SexFrenzy);
}
}
foreach (Pawn pawn in AffectedPawns(globalTargetInfo.Cell, globalTargetInfo.Map))
{
if (pawn == null || !xxx.can_rape(pawn, true) || pawn.jobs.curJob.def.defName == "GettinRaped" || pawn.jobs.curJob.def.defName == "RapeRandom")
{
continue;
}
Pawn pawn2 = FindVictim(pawn);
if (pawn2 == null)
{
continue;
}
pawn.pather.StopDead();
pawn.jobs.StopAll();
//pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.RandomRape, null, true, false, null, false, false, false);
Job newJob = JobMaker.MakeJob(xxx.RapeRandom, pawn2);
pawn.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
}
}
}
public override bool IsEnabledForPawn(VFECore.Abilities.Ability ability, out string reason)
{
reason = null;
if (!RJWSettings.rape_enabled)
{
reason = "Rape is disabled";
return false;
}
else if (!RJWMGSettings.sexfrenzy)
{
reason = "Disabled in modsettings";
return false;
}
return true;
}
private IEnumerable<Pawn> AffectedPawns(IntVec3 cell, Map map)
{
foreach (Pawn pawn in map.mapPawns.AllPawns)
{
if (cell.DistanceTo(pawn.Position) < this.abilityDef.radius)
{
yield return pawn;
}
}
//IEnumerator<Pawn> enumerator = null;
yield break;
}
public Pawn FindVictim(Pawn pawn)
{
Map m = pawn.Map;
IEnumerable<Pawn> source = from x in m.mapPawns.AllPawnsSpawned
where x != pawn && xxx.is_not_dying(x) && (xxx.can_get_raped(x) || (xxx.can_be_fucked(x) && x.health.hediffSet.HasHediff(RJW_More_Genes.HediffDefOf.SexFrenzy))) &&
!x.Suspended && !x.IsForbidden(pawn) && x.jobs.curJob.def.defName != "GettinRaped" && x.jobs.curJob.def.defName != "RandomRape" &&
IntVec3Utility.DistanceTo(pawn.Position, x.Position) < 15 && pawn.CanReserveAndReach(x, PathEndMode.Touch, Danger.Deadly, 1, 0, null, false)
select x;
if (source != null)
{
return source.RandomElement();
}
else
{
return null;
}
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("RJWM_VPE")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("HP Inc.")]
[assembly: AssemblyProduct("RJWM_VPE")]
[assembly: AssemblyCopyright("Copyright © HP Inc. 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("7b1f5db6-fc35-4f63-bb11-3225a9dd0fe7")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{7B1F5DB6-FC35-4F63-BB11-3225A9DD0FE7}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>RJWMoreGenes_VPE</RootNamespace>
<AssemblyName>RJWMoreGenes_VPE</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>false</DebugSymbols>
<DebugType>none</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\Mods\PsycastExpanded\Assemblies\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony">
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\workshop\content\294100\2009463077\Current\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>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="RJW">
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\RJW\1.4\Assemblies\RJW.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="RJW_More_Genes">
<HintPath>..\..\Assemblies\RJW_More_Genes.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine.CoreModule">
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="VFECore">
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\workshop\content\294100\2023507013\1.4\Assemblies\VFECore.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AbilityExtentsion_Sexfrenzy.cs" />
<Compile Include="AbilityExtentsion_Orgasm.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]

View File

@ -0,0 +1 @@
ff6d574fef2eec5cfe1de89cd494c556f1cec83b

View File

@ -0,0 +1,4 @@
C:\Users\tyrob\OneDrive\Documenten\GitHub\RJW_More_Genes\RJW_More_Genes\1.4\Source\RJWM_VPE\obj\Debug\RJWM_VPE.csproj.AssemblyReference.cache
C:\Users\tyrob\OneDrive\Documenten\GitHub\RJW_More_Genes\RJW_More_Genes\1.4\Source\RJWM_VPE\obj\Debug\RJWM_VPE.csproj.CoreCompileInputs.cache
C:\Users\tyrob\OneDrive\Documenten\GitHub\RJW_More_Genes\RJW_More_Genes\1.4\Mods\PsycastExpanded\Assemblies\RJWMoreGenes_VPE.dll
C:\Users\tyrob\OneDrive\Documenten\GitHub\RJW_More_Genes\RJW_More_Genes\1.4\Source\RJWM_VPE\obj\Debug\RJWMoreGenes_VPE.dll

View File

@ -7,6 +7,7 @@ using Verse;
using RimWorld;
using rjw;
using Verse.AI;
namespace RJW_More_Genes
{
public class CompTargetEffect_PsychicMindbreak : CompTargetEffect

View File

@ -18,17 +18,9 @@ namespace RJW_More_Genes
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 ()
@ -46,7 +38,7 @@ namespace RJW_More_Genes
SexUtility.reduce_rest(this.pawn, 1f);
if (this.ticks_left <= 0)
{
Log.Message("cycle " + this.cycle);
Log.Message("cycle " + this.cycles);
if ((this.pawn.story.traits.HasTrait(TraitDefOf.Masochist)))
{
base.ReadyForNextToil();
@ -55,7 +47,8 @@ namespace RJW_More_Genes
{
this.ticks_left = this.duration;
AfterSexUtility.processBrokenPawn(this.pawn);
}
AfterSexUtility.processBrokenPawn(this.pawn);
}
}
};
toil2.AddFinishAction(delegate
@ -75,7 +68,7 @@ namespace RJW_More_Genes
}
public int max_duration = 60000;
public int cycle = 0;
public int cycles = 1;
public int min_cycles = 5;
}
}

View File

@ -37,6 +37,7 @@
</Reference>
<Reference Include="0MultiplayerAPI">
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\RJW\1.4\Assemblies\0MultiplayerAPI.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
@ -58,18 +59,26 @@
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="VFECore">
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\workshop\content\294100\2023507013\1.4\Assemblies\VFECore.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AbilityUtility.cs" />
<Compile Include="CompAbilityEffect_SexFrenzy.cs" />
<Compile Include="CompAbilityEffect_PussyHeal.cs" />
<Compile Include="CompAbility_SexInteractionRequirements.cs" />
<Compile Include="CompProperties_SexFrenzy.cs" />
<Compile Include="CompProperties_AbilityPussyHeal.cs" />
<Compile Include="CompProperties_SexInteractionRequirements.cs" />
<Compile Include="Royalty\AbilityUtility.cs" />
<Compile Include="Royalty\CompAbilityEffect_Orgasm.cs" />
<Compile Include="Royalty\CompAbilityEffect_SexFrenzy.cs" />
<Compile Include="Royalty\CompAbilityEffect_PussyHeal.cs" />
<Compile Include="Royalty\CompAbility_SexInteractionRequirements.cs" />
<Compile Include="Royalty\CompProperties_AbilityOrgasm.cs" />
<Compile Include="Royalty\CompProperties_SexFrenzy.cs" />
<Compile Include="Royalty\CompProperties_AbilityPussyHeal.cs" />
<Compile Include="Royalty\CompProperties_SexInteractionRequirements.cs" />
<Compile Include="CompTargetEffect_PsychicMindbreak.cs" />
<Compile Include="GeneDefOf.cs" />
<Compile Include="HarmonyInit.cs" />
<Compile Include="Royalty\HediffCompProperties_OrgasmCycle.cs" />
<Compile Include="Royalty\HediffComp_OrgasmCycle.cs" />
<Compile Include="HediffDefOf.cs" />
<Compile Include="JobDefOf.cs" />
<Compile Include="JobDriver_CastAbilityAfterSex.cs" />
@ -80,11 +89,12 @@
<Compile Include="GeneUtility.cs" />
<Compile Include="RJWMGSettingController.cs" />
<Compile Include="RJWMGSettings.cs" />
<Compile Include="SexInteractionUtility.cs" />
<Compile Include="Royalty\SexInteractionUtility.cs" />
<Compile Include="ThoughtDefOf.cs" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Connected Services\" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
</Project>

View File

@ -5,6 +5,8 @@ VisualStudioVersion = 17.2.32519.379
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RJW_More_Genes", "RJW_More_Genes.csproj", "{3D62BDB2-ED7B-481B-B00B-0B634D99EC8D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RJWM_VPE", "..\RJWM_VPE\RJWM_VPE.csproj", "{7B1F5DB6-FC35-4F63-BB11-3225A9DD0FE7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -15,6 +17,10 @@ Global
{3D62BDB2-ED7B-481B-B00B-0B634D99EC8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3D62BDB2-ED7B-481B-B00B-0B634D99EC8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3D62BDB2-ED7B-481B-B00B-0B634D99EC8D}.Release|Any CPU.Build.0 = Release|Any CPU
{7B1F5DB6-FC35-4F63-BB11-3225A9DD0FE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7B1F5DB6-FC35-4F63-BB11-3225A9DD0FE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7B1F5DB6-FC35-4F63-BB11-3225A9DD0FE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7B1F5DB6-FC35-4F63-BB11-3225A9DD0FE7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -3,7 +3,9 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse.Sound;
using Verse;
using RimWorld;
using rjw;
using rjw.Modules.Interactions.Helpers;
using rjw.Modules.Interactions.Enums;
@ -46,5 +48,48 @@ namespace RJW_More_Genes
}
return any_wound_tended;
}
//Modified copies of jobdriver_sex functions
public static void Orgasm(Pawn pawn, int duration = 180, bool isrape = false)
{
pawn.stances.stunner.StunFor(duration, pawn, false, false);
//pawn.pather.StopDead();
PlayCumSound(pawn);
FleckMaker.ThrowMetaIcon(pawn.Position, pawn.Map, FleckDefOf.Heart, 0.42f);
SexUtility.CumFilthGenerator(pawn);
//Add some sex satisfaction?
}
public static void PlayCumSound(Pawn pawn)
{
if (RJWSettings.sounds_enabled)
{
SoundInfo info = new TargetInfo(pawn.Position, pawn.Map, false);
info.volumeFactor = RJWSettings.sounds_cum_volume;
SoundDef.Named("Cum").PlayOneShot(info);
ExtraCumSound(pawn, info);
}
}
public static void ExtraCumSound(Pawn pawn, SoundInfo info)
{
if (ModsConfig.IsActive("Tory187.RJWAnimAddons.VoicePatch"))
{
if (pawn.gender == Gender.Female)
{
SoundDef.Named("Voiceline_FGrunt").PlayOneShot(info);
}
if (pawn.gender == Gender.Male)
{
SoundDef.Named("Voiceline_MGrunt").PlayOneShot(info);
}
}
else
{
SoundDef.Named("Sex").PlayOneShot(info);
}
}
}
}

View File

@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using RimWorld;
using Verse.AI;
namespace RJW_More_Genes
{
public class CompAbilityEffect_Orgasm : CompAbilityEffect
{
private new CompProperties_AbilityOrgasm Props
{
get
{
return (CompProperties_AbilityOrgasm)this.props;
}
}
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
{
if (target.HasThing)
{
base.Apply(target, dest);
Pawn pawn = target.Thing as Pawn;
if (pawn.Dead)
{
return;
}
float num = this.parent.def.GetStatValueAbstract(StatDefOf.Ability_Duration, this.parent.pawn) * 60;
Log.Message(num.ToString());
AbilityUtility.Orgasm(pawn, (int)num);
}
}
}
}

View File

@ -4,11 +4,9 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using UnityEngine;
using RimWorld;
using rjw;
using Verse.AI;
using rjw.Modules.Interactions.Helpers;
namespace RJW_More_Genes
{
@ -28,15 +26,13 @@ namespace RJW_More_Genes
{
if (pawn != null)
{
Need_Sex needsex = pawn.needs.TryGetNeed<Need_Sex>();
needsex.CurLevel = 0f;
pawn.health.AddHediff(HediffDefOf.SexFrenzy);
}
}
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 == "RapeRandom")
if(pawn == null || !xxx.can_rape(pawn, true)|| pawn.jobs.curJob.def.defName == "GettinRaped" || pawn.jobs.curJob.def.defName == "RapeRandom")
{
continue;
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
namespace RJW_More_Genes
{
public class CompProperties_AbilityOrgasm : CompProperties_AbilityEffect
{
public CompProperties_AbilityOrgasm()
{
this.compClass = typeof(CompAbilityEffect_Orgasm);
}
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using RimWorld;
namespace RJW_More_Genes
{
public class HediffCompProperties_OrgasmCycle : HediffCompProperties
{
public HediffCompProperties_OrgasmCycle()
{
this.compClass = typeof(HediffComp_OrgasmCycle);
}
public FloatRange intervalticks;
}
}

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RimWorld;
using Verse;
namespace RJW_More_Genes
{
public class HediffComp_OrgasmCycle : HediffComp
{
public HediffCompProperties_OrgasmCycle Props
{
get
{
return (HediffCompProperties_OrgasmCycle)this.props;
}
}
public override void CompPostMake()
{
base.CompPostMake();
this.Orgasm();
}
public override void CompPostTick(ref float severityAdjustment)
{
if (Find.TickManager.TicksGame >= this.tickNext)
{
this.Orgasm();
}
base.CompPostTick(ref severityAdjustment);
}
public void Orgasm()
{
AbilityUtility.Orgasm(this.Pawn);
this.tickNext = Find.TickManager.TicksGame + (int)this.Props.intervalticks.RandomInRange;
}
public int tickNext;
}
}

View File

@ -1 +1 @@
a03ce3151cc9c700e1bbeaebf770821465310bea
12d5ecf6156bfd9b12520fa2c747ab2b3e89349c

View File

@ -11,4 +11,3 @@ 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

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

View File

@ -7,9 +7,6 @@ Mindbreak lance (improvements)
## Biotech
Healpussy (improvements)
- Mood effect depends on relationship between pawns.
Aphrodisiac gene
- Increases sexdrive of pawns around pawn
@ -19,27 +16,20 @@ Cumabsorber gene
Vigorous gene
- Gain rest after sex
Succubus like xenotype
- combination of genes to make succubus like xenotype.
Sexbot
- Buildable mechanoids which are great at sex.
## 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?)
Psypenis psypower
- Temporary give a pawn a penis (fertile?)
Gangbang psypower
- Down target and have pawns around them rape them.

View File

@ -12,4 +12,9 @@ V1.0.7
- 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
- Changed sexfrenzy from a gene to a psycast
V1.1.1
- Fixed error when sexfrenzy hit an animal
- Add orgasm psypower
- Add multiorgasm psypower
- Made all current psypowers compatible with vanilla psycast expanded