Made some changes to healpussy and made a sexfrenzy gene
This commit is contained in:
parent
8a988f48a5
commit
1483959f92
12
README.md
12
README.md
|
@ -1,2 +1,10 @@
|
||||||
# RJW_Genes_Addons
|
# RJW_More_Genes
|
||||||
Some code which can be copied into RJW genes if they want to, however a few names may need to be changed for it to work. Names, labels, descriptions and icons are just placeholders.
|
Adds some more genes related to RJW to the game.
|
||||||
|
Current Genes
|
||||||
|
- PussyHeal
|
||||||
|
- Sexfrenzy
|
||||||
|
|
||||||
|
Any suggestions and ideas are welcome.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<ModMetaData>
|
<ModMetaData>
|
||||||
<name>RJW Genes Addons</name>
|
<name>RJW More Genes</name>
|
||||||
<author>Shaba</author>
|
<author>Shaba</author>
|
||||||
<packageId>Shaba.rjw.genes.addons</packageId>
|
<packageId>Shaba.rjw.more.genes</packageId>
|
||||||
<supportedVersions>
|
<supportedVersions>
|
||||||
<li>1.4</li>
|
<li>1.4</li>
|
||||||
</supportedVersions>
|
</supportedVersions>
|
||||||
<description>Adds additional contentfor RJW Genes</description>
|
<description>Adds additional more genes connected to RJW to the game</description>
|
||||||
<modDependencies>
|
<modDependencies>
|
||||||
<li>
|
<li>
|
||||||
<packageId>ludeon.rimworld.biotech</packageId>
|
<packageId>ludeon.rimworld.biotech</packageId>
|
||||||
|
@ -22,14 +22,6 @@
|
||||||
<steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
|
<steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
|
||||||
<downloadUrl>https://github.com/pardeike/HarmonyRimWorld/releases/latest</downloadUrl>
|
<downloadUrl>https://github.com/pardeike/HarmonyRimWorld/releases/latest</downloadUrl>
|
||||||
</li>
|
</li>
|
||||||
<!--
|
|
||||||
<li>
|
|
||||||
<packageId>UnlimitedHugs.HugsLib</packageId>
|
|
||||||
<displayName>HugsLib</displayName>
|
|
||||||
<downloadUrl>https://github.com/UnlimitedHugs/RimworldHugsLib/releases/latest</downloadUrl>
|
|
||||||
<steamWorkshopUrl>steam://url/CommunityFilePage/818773962</steamWorkshopUrl>
|
|
||||||
</li>
|
|
||||||
-->
|
|
||||||
</modDependencies>
|
</modDependencies>
|
||||||
<loadAfter>
|
<loadAfter>
|
||||||
<li>rim.job.world</li>
|
<li>rim.job.world</li>
|
||||||
|
|
Binary file not shown.
|
@ -3,8 +3,8 @@
|
||||||
<AbilityDef ParentName="AbilityTouchBase">
|
<AbilityDef ParentName="AbilityTouchBase">
|
||||||
<defName>PussyHeal</defName>
|
<defName>PussyHeal</defName>
|
||||||
<label>SexHeal</label>
|
<label>SexHeal</label>
|
||||||
<description>Use special vagina to quickly tend someone's wounds.</description>
|
<description>Rape another pawn, so you can heal them with your vagina's special healing power.</description>
|
||||||
<iconPath>UI/Icons/Genes/Gene_Coagulate</iconPath>
|
<iconPath>Things/Mote/Heart</iconPath>
|
||||||
<stunTargetWhileCasting>false</stunTargetWhileCasting>
|
<stunTargetWhileCasting>false</stunTargetWhileCasting>
|
||||||
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
||||||
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
<range>-1</range>
|
<range>-1</range>
|
||||||
<warmupTime>0</warmupTime>
|
<warmupTime>0</warmupTime>
|
||||||
<targetParams>
|
<targetParams>
|
||||||
<canTargetAnimals>false</canTargetAnimals>
|
<canTargetAnimals>true</canTargetAnimals>
|
||||||
<canTargetSelf>false</canTargetSelf>
|
<canTargetSelf>false</canTargetSelf>
|
||||||
<canTargetBuildings>false</canTargetBuildings>
|
<canTargetBuildings>false</canTargetBuildings>
|
||||||
<canTargetMechs>false</canTargetMechs>
|
<canTargetMechs>false</canTargetMechs>
|
||||||
|
@ -30,9 +30,6 @@
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="RJW_More_Genes.CompProperties_AbilityPussyHeal"> <!-- namespace needs to be changed when copied to another mod-->
|
<li Class="RJW_More_Genes.CompProperties_AbilityPussyHeal"> <!-- namespace needs to be changed when copied to another mod-->
|
||||||
<tendQualityRange>0.4~0.8</tendQualityRange>
|
<tendQualityRange>0.4~0.8</tendQualityRange>
|
||||||
</li>
|
|
||||||
<li Class="CompProperties_AbilityRequiresCapacity">
|
|
||||||
<capacity>Manipulation</capacity>
|
|
||||||
</li>
|
</li>
|
||||||
<li Class="RJW_More_Genes.CompProperties_SexInteractionRequirements">
|
<li Class="RJW_More_Genes.CompProperties_SexInteractionRequirements">
|
||||||
<tags>
|
<tags>
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Defs>
|
||||||
|
<AbilityDef>
|
||||||
|
<defName>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>
|
||||||
|
<displayGizmoWhileUndrafted>false</displayGizmoWhileUndrafted>
|
||||||
|
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||||
|
<cooldownTicksRange>180000</cooldownTicksRange>
|
||||||
|
<warmupStartSound>Coagulate_Cast</warmupStartSound>
|
||||||
|
<displayOrder>402</displayOrder>
|
||||||
|
<verbProperties>
|
||||||
|
<verbClass>Verb_CastAbility</verbClass>
|
||||||
|
<warmupTime>1</warmupTime>
|
||||||
|
<range>7.9</range>
|
||||||
|
<targetParams>
|
||||||
|
<canTargetSelf>True</canTargetSelf>
|
||||||
|
<canTargetAnimals>True</canTargetAnimals>
|
||||||
|
<canTargetLocations>True</canTargetLocations>
|
||||||
|
</targetParams>
|
||||||
|
</verbProperties>
|
||||||
|
<comps>
|
||||||
|
<li Class="RJW_More_Genes.CompProperties_AbilitySexFrenzy"> <!-- namespace needs to be changed when copied to another mod-->
|
||||||
|
<radius>4.9</radius>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</AbilityDef>
|
||||||
|
</Defs>
|
|
@ -4,8 +4,8 @@
|
||||||
<defName>rjw_genes_pussyhealer</defName>
|
<defName>rjw_genes_pussyhealer</defName>
|
||||||
<label>Pussy Healer</label>
|
<label>Pussy Healer</label>
|
||||||
<labelShortAdj>pussyhealer</labelShortAdj>
|
<labelShortAdj>pussyhealer</labelShortAdj>
|
||||||
<description>Carriers of this gene are able use vaginal sex to tend to others wounds.</description>
|
<description>Carriers of this gene are able use vaginal sex to tend to other's wounds.</description>
|
||||||
<iconPath>UI/Icons/Genes/Gene_Coagulate</iconPath>
|
<iconPath>Things/Mote/Heart</iconPath>
|
||||||
<displayCategory>Ability</displayCategory>
|
<displayCategory>Ability</displayCategory>
|
||||||
<abilities>
|
<abilities>
|
||||||
<li>PussyHeal</li>
|
<li>PussyHeal</li>
|
||||||
|
@ -14,7 +14,31 @@
|
||||||
<AbilityDef>PussyHeal</AbilityDef>
|
<AbilityDef>PussyHeal</AbilityDef>
|
||||||
</descriptionHyperlinks>
|
</descriptionHyperlinks>
|
||||||
<biostatMet>-1</biostatMet>
|
<biostatMet>-1</biostatMet>
|
||||||
<minAgeActive>3</minAgeActive>
|
<minAgeActive>13</minAgeActive>
|
||||||
|
<symbolPack>
|
||||||
|
<suffixSymbols>
|
||||||
|
<li><symbol>life</symbol></li>
|
||||||
|
<li><symbol>clotter</symbol></li>
|
||||||
|
<li><symbol>tender</symbol></li>
|
||||||
|
</suffixSymbols>
|
||||||
|
</symbolPack>
|
||||||
|
</GeneDef>
|
||||||
|
|
||||||
|
<GeneDef>
|
||||||
|
<defName>rjw_genes_sexfrenzy</defName>
|
||||||
|
<label>Sex Frenzy</label>
|
||||||
|
<labelShortAdj>sexfrenzy</labelShortAdj>
|
||||||
|
<description>Carriers of this gene are able to induce a sexfrenzy nearby.</description>
|
||||||
|
<iconPath>Things/Mote/Heart</iconPath>
|
||||||
|
<displayCategory>Ability</displayCategory>
|
||||||
|
<abilities>
|
||||||
|
<li>SexFrenzy</li>
|
||||||
|
</abilities>
|
||||||
|
<descriptionHyperlinks>
|
||||||
|
<AbilityDef>SexFrenzy</AbilityDef>
|
||||||
|
</descriptionHyperlinks>
|
||||||
|
<biostatMet>-2</biostatMet>
|
||||||
|
<minAgeActive>13</minAgeActive>
|
||||||
<symbolPack>
|
<symbolPack>
|
||||||
<suffixSymbols>
|
<suffixSymbols>
|
||||||
<li><symbol>life</symbol></li>
|
<li><symbol>life</symbol></li>
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Defs>
|
||||||
|
<HediffDef>
|
||||||
|
<defName>SexFrenzy</defName>
|
||||||
|
<label>SexFrenzied</label>
|
||||||
|
<labelNoun>sexfrenzied</labelNoun>
|
||||||
|
<description>A pawn under the influence of sex frenzy.</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>
|
||||||
|
<!--1 hour-->
|
||||||
|
<min>250</min>
|
||||||
|
<!--2 hours-->
|
||||||
|
<max>500</max>
|
||||||
|
</disappearsAfterTicks>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
<stages>
|
||||||
|
<li>
|
||||||
|
<becomeVisible>true</becomeVisible>
|
||||||
|
</li>
|
||||||
|
</stages>
|
||||||
|
</HediffDef>
|
||||||
|
</Defs>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,50 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Verse;
|
||||||
|
using rjw;
|
||||||
|
using rjw.Modules.Interactions.Helpers;
|
||||||
|
using rjw.Modules.Interactions.Enums;
|
||||||
|
|
||||||
|
namespace RJW_More_Genes
|
||||||
|
{
|
||||||
|
public class AbilityUtility
|
||||||
|
{
|
||||||
|
public static void PussyHeal(SexProps props)
|
||||||
|
{
|
||||||
|
if (InteractionHelper.GetWithExtension(props.dictionaryKey).DominantHasFamily(GenitalFamily.Vagina) || InteractionHelper.GetWithExtension(props.dictionaryKey).SubmissiveHasFamily(GenitalFamily.Vagina))
|
||||||
|
{
|
||||||
|
Pawn pawn = props.pawn;
|
||||||
|
Pawn partner = props.partner;
|
||||||
|
FloatRange tendQualityRange;
|
||||||
|
tendQualityRange.min = 0.4f;
|
||||||
|
tendQualityRange.max = 0.8f;
|
||||||
|
if (GeneUtility.isPussyHealer(pawn))
|
||||||
|
{
|
||||||
|
Heal(partner, tendQualityRange);
|
||||||
|
}
|
||||||
|
if (GeneUtility.isPussyHealer(partner))
|
||||||
|
{
|
||||||
|
Heal(pawn, tendQualityRange);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Heal(Pawn pawn, FloatRange tendQualityRange)
|
||||||
|
{
|
||||||
|
bool any_wound_tended = false;
|
||||||
|
List<Hediff> hediffs = pawn.health.hediffSet.hediffs;
|
||||||
|
for (int i = hediffs.Count - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if ((hediffs[i] is Hediff_Injury || hediffs[i] is Hediff_MissingPart) && hediffs[i].TendableNow(false))
|
||||||
|
{
|
||||||
|
hediffs[i].Tended(tendQualityRange.RandomInRange, tendQualityRange.TrueMax, 1);
|
||||||
|
any_wound_tended = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return any_wound_tended;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -28,21 +28,13 @@ namespace RJW_More_Genes
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int num = 0;
|
bool any_wound_tended = AbilityUtility.Heal(pawn, this.Props.tendQualityRange);
|
||||||
List<Hediff> hediffs = pawn.health.hediffSet.hediffs;
|
if (any_wound_tended)
|
||||||
for (int i = hediffs.Count - 1; i >= 0; i--)
|
|
||||||
{
|
{
|
||||||
if ((hediffs[i] is Hediff_Injury || hediffs[i] is Hediff_MissingPart) && hediffs[i].TendableNow(false))
|
MoteMaker.ThrowText(pawn.DrawPos, pawn.Map, "Sex Healed Wounds", 3.65f);
|
||||||
{
|
pawn.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.Pussy_Healed, pawn, null);
|
||||||
hediffs[i].Tended(this.Props.tendQualityRange.RandomInRange, this.Props.tendQualityRange.TrueMax, 1);
|
|
||||||
num++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (num > 0)
|
//this.AfterSex(any_wound_tended);
|
||||||
{
|
|
||||||
MoteMaker.ThrowText(pawn.DrawPos, pawn.Map, "NumWoundsTended".Translate(num), 3.65f);
|
|
||||||
}
|
|
||||||
this.AfterSex(this.parent.pawn, pawn);
|
|
||||||
//FleckMaker.AttachedOverlay(pawn, FleckDefOf.FlashHollow, Vector3.zero, 1.5f, -1f);
|
//FleckMaker.AttachedOverlay(pawn, FleckDefOf.FlashHollow, Vector3.zero, 1.5f, -1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,8 +59,6 @@ namespace RJW_More_Genes
|
||||||
Pawn pawn = target.Pawn;
|
Pawn pawn = target.Pawn;
|
||||||
if (pawn != null)
|
if (pawn != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
//to be replaced with severel checks to make it clear why target is unable to have sex
|
//to be replaced with severel checks to make it clear why target is unable to have sex
|
||||||
if (!CasualSex_Helper.CanHaveSex(pawn))
|
if (!CasualSex_Helper.CanHaveSex(pawn))
|
||||||
{
|
{
|
||||||
|
@ -78,19 +68,36 @@ namespace RJW_More_Genes
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Pawn parent = this.parent.pawn;
|
else if (pawn.IsAnimal() && !RJWSettings.bestiality_enabled)
|
||||||
if (parent == null || !Genital_Helper.has_vagina(parent))
|
{
|
||||||
{
|
if (throwMessages)
|
||||||
if (throwMessages && parent != null)
|
|
||||||
{
|
{
|
||||||
Messages.Message(parent.Name + " has no vagina to use", pawn, MessageTypeDefOf.RejectInput, false);
|
Messages.Message("bestiality is disabled", pawn, MessageTypeDefOf.RejectInput, false);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
AbilityUtility.ValidateHasTendableWound(pawn, throwMessages, this.parent);
|
//AbilityUtility.ValidateHasTendableWound(pawn, throwMessages, this.parent);
|
||||||
|
|
||||||
}
|
}
|
||||||
return base.Valid(target, throwMessages);
|
return base.Valid(target, throwMessages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool GizmoDisabled(out string reason)
|
||||||
|
{
|
||||||
|
reason = null;
|
||||||
|
if (!Genital_Helper.has_vagina(this.parent.pawn))
|
||||||
|
{
|
||||||
|
reason = this.parent.pawn.Name + " has no vagina to use.";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (!RJWSettings.rape_enabled)
|
||||||
|
{
|
||||||
|
reason = "Rape is disabled";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,105 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
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
|
||||||
|
{
|
||||||
|
public class CompAbilityEffect_SexFrenzy : CompAbilityEffect
|
||||||
|
{
|
||||||
|
private new CompProperties_AbilitySexFrenzy Props
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (CompProperties_AbilitySexFrenzy)this.props;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
|
||||||
|
{
|
||||||
|
base.Apply(target, dest);
|
||||||
|
foreach (Pawn pawn in AffectedPawns(target, this.parent.pawn.Map))
|
||||||
|
{
|
||||||
|
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 == "SexFrenzy")
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
Log.Message("test");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool GizmoDisabled(out string reason)
|
||||||
|
{
|
||||||
|
reason = null;
|
||||||
|
if (!RJWSettings.rape_enabled)
|
||||||
|
{
|
||||||
|
reason = "Rape is disabled";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerable<Pawn> AffectedPawns(LocalTargetInfo target, Map map)
|
||||||
|
{
|
||||||
|
foreach (Pawn pawn in map.mapPawns.AllPawns)
|
||||||
|
{
|
||||||
|
if (target.Cell.DistanceTo(pawn.Position) < this.Props.radius)
|
||||||
|
{
|
||||||
|
yield return pawn;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
IEnumerator<Pawn> enumerator = null;
|
||||||
|
yield break;
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
public override void DrawEffectPreview(LocalTargetInfo target)
|
||||||
|
{
|
||||||
|
GenDraw.DrawRadiusRing(target.Cell, this.Props.radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
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(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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
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 CompProperties_AbilitySexFrenzy : CompProperties_AbilityEffect
|
||||||
|
{
|
||||||
|
public CompProperties_AbilitySexFrenzy()
|
||||||
|
{
|
||||||
|
this.compClass = typeof(CompAbilityEffect_SexFrenzy);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float radius;
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,6 +5,7 @@ using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Verse;
|
using Verse;
|
||||||
|
|
||||||
|
|
||||||
namespace RJW_More_Genes
|
namespace RJW_More_Genes
|
||||||
{
|
{
|
||||||
public class GeneUtility
|
public class GeneUtility
|
||||||
|
@ -17,5 +18,7 @@ namespace RJW_More_Genes
|
||||||
}
|
}
|
||||||
return pawn.genes.HasGene(GeneDefOf.rjw_genes_pussyhealer);
|
return pawn.genes.HasGene(GeneDefOf.rjw_genes_pussyhealer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using RimWorld;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace RJW_More_Genes
|
||||||
|
{
|
||||||
|
[DefOf]
|
||||||
|
public static class HediffDefOf
|
||||||
|
{
|
||||||
|
public static readonly HediffDef SexFrenzy;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace RJW_More_Genes
|
||||||
|
{
|
||||||
|
public static class MentalStateDefOf
|
||||||
|
{
|
||||||
|
public static readonly MentalStateDef RandomRape;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using HarmonyLib;
|
||||||
|
using rjw;
|
||||||
|
namespace RJW_More_Genes
|
||||||
|
{
|
||||||
|
[HarmonyPatch(typeof(SexUtility), "ProcessSex")]
|
||||||
|
class PatchProcessSex
|
||||||
|
{
|
||||||
|
[HarmonyPostfix]
|
||||||
|
public static void ProcessSexGenes(SexProps props)
|
||||||
|
{
|
||||||
|
AbilityUtility.PussyHeal(props);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -57,13 +57,19 @@
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="AbilityUtility.cs" />
|
||||||
|
<Compile Include="CompAbilityEffect_SexFrenzy.cs" />
|
||||||
<Compile Include="CompAbilityEffect_PussyHeal.cs" />
|
<Compile Include="CompAbilityEffect_PussyHeal.cs" />
|
||||||
<Compile Include="CompAbility_SexInteractionRequirements.cs" />
|
<Compile Include="CompAbility_SexInteractionRequirements.cs" />
|
||||||
|
<Compile Include="CompProperties_SexFrenzy.cs" />
|
||||||
<Compile Include="CompProperties_AbilityPussyHeal.cs" />
|
<Compile Include="CompProperties_AbilityPussyHeal.cs" />
|
||||||
<Compile Include="CompProperties_SexInteractionRequirements.cs" />
|
<Compile Include="CompProperties_SexInteractionRequirements.cs" />
|
||||||
<Compile Include="GeneDefOf.cs" />
|
<Compile Include="GeneDefOf.cs" />
|
||||||
<Compile Include="HarmonyInit.cs" />
|
<Compile Include="HarmonyInit.cs" />
|
||||||
|
<Compile Include="HediffDefOf.cs" />
|
||||||
<Compile Include="JobDriver_CastAbilityAfterSex.cs" />
|
<Compile Include="JobDriver_CastAbilityAfterSex.cs" />
|
||||||
|
<Compile Include="MentalStateDefOf.cs" />
|
||||||
|
<Compile Include="PatchProcessSex.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="GeneUtility.cs" />
|
<Compile Include="GeneUtility.cs" />
|
||||||
<Compile Include="SexInteractionUtility.cs" />
|
<Compile Include="SexInteractionUtility.cs" />
|
||||||
|
|
|
@ -17,25 +17,19 @@ namespace RJW_More_Genes
|
||||||
{
|
{
|
||||||
class SexInteractionUtility
|
class SexInteractionUtility
|
||||||
{
|
{
|
||||||
public static List<InteractionDef> GenerateDomVaginaInteractionDefList(Pawn pawn, Pawn pawn2)
|
|
||||||
{
|
|
||||||
List<InteractionDef> list2 = new List<InteractionDef>();
|
|
||||||
foreach (InteractionDef interactionDef in SexUtility.SexInterractions)
|
|
||||||
{
|
|
||||||
InteractionWithExtension withExtension = InteractionHelper.GetWithExtension(interactionDef);
|
|
||||||
if((withExtension.DominantHasTag(GenitalTag.CanBePenetrated) || withExtension.DominantHasFamily(GenitalFamily.Vagina))
|
|
||||||
&& LewdInteractionValidatorService.Instance.IsValid(interactionDef, pawn, pawn2))
|
|
||||||
{
|
|
||||||
//Log.Message(interactionDef.ToString());
|
|
||||||
list2.Add(interactionDef);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<InteractionDef> GenerateInteractionDefList(Pawn pawn, Pawn pawn2, CompProperties_SexInteractionRequirements sexpropsreq)
|
public static List<InteractionDef> GenerateInteractionDefList(Pawn pawn, Pawn pawn2, CompProperties_SexInteractionRequirements sexpropsreq)
|
||||||
{
|
{
|
||||||
List<InteractionTag> tags = sexpropsreq.tags;
|
List<InteractionTag> tags = new List<InteractionTag>();
|
||||||
|
if (pawn2.IsAnimal())
|
||||||
|
{
|
||||||
|
tags.Add(InteractionTag.Animal);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tags = sexpropsreq.tags;
|
||||||
|
}
|
||||||
|
|
||||||
InteractionRequirement dominantRequirement = sexpropsreq.dominantRequirement;
|
InteractionRequirement dominantRequirement = sexpropsreq.dominantRequirement;
|
||||||
InteractionRequirement submissiveRequirement = sexpropsreq.submissiveRequirement;
|
InteractionRequirement submissiveRequirement = sexpropsreq.submissiveRequirement;
|
||||||
List<InteractionDef> sexinteractions = SexUtility.SexInterractions;
|
List<InteractionDef> sexinteractions = SexUtility.SexInterractions;
|
||||||
|
@ -121,35 +115,10 @@ namespace RJW_More_Genes
|
||||||
public static SexProps GenerateSexProps(Pawn pawn, Pawn pawn2, CompProperties_SexInteractionRequirements sexpropsreq)
|
public static SexProps GenerateSexProps(Pawn pawn, Pawn pawn2, CompProperties_SexInteractionRequirements sexpropsreq)
|
||||||
{
|
{
|
||||||
List<InteractionDef> interactionlist = GenerateInteractionDefList(pawn, pawn2, sexpropsreq);
|
List<InteractionDef> interactionlist = GenerateInteractionDefList(pawn, pawn2, sexpropsreq);
|
||||||
if (interactionlist == null)
|
if (!interactionlist.Any())
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
//foreach(InteractionDef interaction in interactionlist)
|
|
||||||
//{
|
|
||||||
// Log.Message(interaction.ToString());
|
|
||||||
//}
|
|
||||||
InteractionDef dictionaryKey = interactionlist.RandomElement();
|
|
||||||
bool rape = InteractionHelper.GetWithExtension(dictionaryKey).HasInteractionTag(InteractionTag.Rape);
|
|
||||||
SexProps sexProps = new SexProps();
|
|
||||||
sexProps.pawn = pawn;
|
|
||||||
sexProps.partner = pawn2;
|
|
||||||
sexProps.sexType = SexUtility.rjwSextypeGet(dictionaryKey);
|
|
||||||
sexProps.isRape = rape;
|
|
||||||
sexProps.isRapist = rape;
|
|
||||||
sexProps.canBeGuilty = false;
|
|
||||||
sexProps.dictionaryKey = dictionaryKey;
|
|
||||||
sexProps.rulePack = SexUtility.SexRulePackGet(dictionaryKey);
|
|
||||||
return sexProps;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static SexProps GenerateSexpropsDomVagina(Pawn pawn, Pawn pawn2)
|
|
||||||
{
|
|
||||||
List<InteractionDef> interactionlist = GenerateDomVaginaInteractionDefList(pawn, pawn2);
|
|
||||||
if (interactionlist == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
InteractionDef dictionaryKey = interactionlist.RandomElement();
|
InteractionDef dictionaryKey = interactionlist.RandomElement();
|
||||||
bool rape = InteractionHelper.GetWithExtension(dictionaryKey).HasInteractionTag(InteractionTag.Rape);
|
bool rape = InteractionHelper.GetWithExtension(dictionaryKey).HasInteractionTag(InteractionTag.Rape);
|
||||||
SexProps sexProps = new SexProps();
|
SexProps sexProps = new SexProps();
|
||||||
|
|
Binary file not shown.
|
@ -1 +1 @@
|
||||||
4d7ff98164d1cf091715f5b60c92ca5ce544b757
|
1d1d2f5a3658f55aaa88d8cc24b3d4d7c5755ab0
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,18 @@
|
||||||
|
Healpussy
|
||||||
|
- 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?
|
||||||
|
|
||||||
|
Vigorous gene
|
||||||
|
- Gain rest after sex
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
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.5
|
||||||
|
- Allowed Healpussy to work on animals
|
||||||
|
V1.0.6
|
||||||
|
- Allowed Healpussy to work passively
|
||||||
|
- Added checks for RJWsettings and if the pawn has a vagina.
|
Loading…
Reference in New Issue