CockEater gene
CockEater gene with ability and negative thoughtdef for target
This commit is contained in:
parent
3cf2d44c82
commit
a64cecbab3
Binary file not shown.
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<AbilityDef ParentName="AbilityTouchBase">
|
||||
<defName>rjw_genes_cockeater</defName>
|
||||
<label>Eat Cock</label>
|
||||
<description>Eat the cock of another pawn, restoring fertilin based on the size of the cock.</description>
|
||||
<iconPath>Things/Mote/Heart</iconPath>
|
||||
<stunTargetWhileCasting>true</stunTargetWhileCasting>
|
||||
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
|
||||
<disableGizmoWhileUndrafted>false</disableGizmoWhileUndrafted>
|
||||
<warmupMote>Mote_CoagulateStencil</warmupMote>
|
||||
<warmupEffecter>Coagulate</warmupEffecter>
|
||||
<warmupStartSound>Coagulate_Cast</warmupStartSound>
|
||||
<jobDef>CastAbilityOnThingMelee</jobDef>
|
||||
<displayOrder>402</displayOrder>
|
||||
<verbProperties>
|
||||
<verbClass>Verb_CastAbilityTouch</verbClass>
|
||||
<drawAimPie>false</drawAimPie>
|
||||
<range>-1</range>
|
||||
<warmupTime>10</warmupTime>
|
||||
<targetParams>
|
||||
<canTargetAnimals>true</canTargetAnimals>
|
||||
<canTargetSelf>false</canTargetSelf>
|
||||
<canTargetBuildings>false</canTargetBuildings>
|
||||
<canTargetMechs>false</canTargetMechs>
|
||||
<canTargetBloodfeeders>true</canTargetBloodfeeders>
|
||||
</targetParams>
|
||||
</verbProperties>
|
||||
<comps>
|
||||
<li Class="RJW_Genes.CompProperties_AbilityCockEater"> <!-- namespace needs to be changed when copied to another mod-->
|
||||
</li>
|
||||
</comps>
|
||||
</AbilityDef>
|
||||
</Defs>
|
|
@ -24,7 +24,7 @@
|
|||
</customEffectDescriptions>
|
||||
<symbolPack>
|
||||
<prefixSymbols>
|
||||
<li><symbol>hemo</symbol></li>
|
||||
<li><symbol>fert</symbol></li>
|
||||
</prefixSymbols>
|
||||
</symbolPack>
|
||||
<mentalBreakDef>rjw_genes_lifeforce_randomrape</mentalBreakDef>
|
||||
|
@ -55,8 +55,35 @@
|
|||
<symbolPack>
|
||||
<suffixSymbols>
|
||||
<li><symbol>life</symbol></li>
|
||||
<li><symbol>clotter</symbol></li>
|
||||
<li><symbol>tender</symbol></li>
|
||||
<li><symbol>pussy</symbol></li>
|
||||
<li><symbol>heal</symbol></li>
|
||||
</suffixSymbols>
|
||||
</symbolPack>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef>
|
||||
<defName>rjw_genes_cockeater</defName>
|
||||
<label>Cockeater</label>
|
||||
<labelShortAdj>cockeater</labelShortAdj>
|
||||
<description>Carriers of this gene are able eat cocks to restore their fertilin supply.</description>
|
||||
<iconPath>Things/Mote/Heart</iconPath>
|
||||
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
||||
<displayOrderInCategory>11</displayOrderInCategory>
|
||||
<displayCategory>rjw_genes_fertilin</displayCategory>
|
||||
<abilities>
|
||||
<li>rjw_genes_cockeater</li>
|
||||
</abilities>
|
||||
<descriptionHyperlinks>
|
||||
<AbilityDef>rjw_genes_cockeater</AbilityDef>
|
||||
</descriptionHyperlinks>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<minAgeActive>18</minAgeActive>
|
||||
<symbolPack>
|
||||
<suffixSymbols>
|
||||
<li><symbol>life</symbol></li>
|
||||
<li><symbol>cock</symbol></li>
|
||||
<li><symbol>eat</symbol></li>
|
||||
</suffixSymbols>
|
||||
</symbolPack>
|
||||
</GeneDef>
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
|
||||
<Defs>
|
||||
<ThoughtDef>
|
||||
<defName>rjw_genes_cock_eaten</defName>
|
||||
<thoughtClass>Thought_Memory</thoughtClass>
|
||||
<durationDays>30.0</durationDays>
|
||||
<stackLimit>100</stackLimit>
|
||||
<stackedEffectMultiplier>0.4</stackedEffectMultiplier>
|
||||
<stages>
|
||||
<li>
|
||||
<label>cock eaten</label>
|
||||
<description>My cock was eaten directly of my body, I am devestated.</description>
|
||||
<baseMoodEffect>-30</baseMoodEffect>
|
||||
</li>
|
||||
</stages>
|
||||
</ThoughtDef>
|
||||
</Defs>
|
|
@ -0,0 +1,87 @@
|
|||
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 rjw.Modules.Interactions.Helpers;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class CompAbilityEffect_CockEater : CompAbilityEffect
|
||||
{
|
||||
private new CompProperties_AbilityCockEater Props
|
||||
{
|
||||
get
|
||||
{
|
||||
return (CompProperties_AbilityCockEater)this.props;
|
||||
}
|
||||
}
|
||||
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
|
||||
{
|
||||
base.Apply(target, dest);
|
||||
Pawn pawn = target.Pawn;
|
||||
if (pawn == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var partBPR = Genital_Helper.get_genitalsBPR(pawn);
|
||||
var parts = Genital_Helper.get_PartsHediffList(pawn, partBPR);
|
||||
if (!parts.NullOrEmpty())
|
||||
{
|
||||
foreach (Hediff part in parts)
|
||||
{
|
||||
if (GenitaliaChanger.IsArtificial(part))
|
||||
continue;
|
||||
|
||||
if (rjw.Genital_Helper.is_penis(part))
|
||||
{
|
||||
GeneUtility.OffsetLifeForce(this.parent.pawn, part.Severity); ;
|
||||
pawn.health.RemoveHediff(part);
|
||||
pawn.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.rjw_genes_cock_eaten, pawn, null);
|
||||
break; //Only one penis at the time
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
|
||||
{
|
||||
Pawn pawn = target.Pawn;
|
||||
if (pawn != null)
|
||||
{
|
||||
bool flag = pawn.Faction == this.parent.pawn.Faction || pawn.IsPrisonerOfColony;
|
||||
bool flag2 = pawn.HostileTo(this.parent.pawn);
|
||||
bool flag3 = pawn.Downed;
|
||||
if (!flag && !(flag2 && flag3))
|
||||
{
|
||||
if (throwMessages)
|
||||
{
|
||||
if(flag2 && !flag3)
|
||||
{
|
||||
Messages.Message(pawn.Name + " is hostile, but not downed.", pawn, MessageTypeDefOf.RejectInput, false);
|
||||
}
|
||||
else if (!flag)
|
||||
{
|
||||
Messages.Message(pawn.Name + " is not a part of the colony or hostile.", pawn, MessageTypeDefOf.RejectInput, false);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (!Genital_Helper.has_penis_fertile(pawn))
|
||||
{
|
||||
if (throwMessages)
|
||||
{
|
||||
Messages.Message(pawn.Name + " has no penis", pawn, MessageTypeDefOf.RejectInput, false);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return base.Valid(target, throwMessages);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -38,6 +38,7 @@ namespace RJW_Genes
|
|||
//FleckMaker.AttachedOverlay(pawn, FleckDefOf.FlashHollow, Vector3.zero, 1.5f, -1f);
|
||||
}
|
||||
|
||||
//Not yet implemented, but the heal should also trigger after normal sex
|
||||
public void AfterSex(Pawn pawn, Pawn target)
|
||||
{
|
||||
List<Hediff> hediffs = target.health.hediffSet.hediffs;
|
||||
|
|
|
@ -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_Genes
|
||||
{
|
||||
public class CompProperties_AbilityCockEater : CompProperties_AbilityEffect
|
||||
{
|
||||
public CompProperties_AbilityCockEater()
|
||||
{
|
||||
this.compClass = typeof(CompAbilityEffect_CockEater);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -116,6 +116,8 @@
|
|||
<Compile Include="Genes\Genitalia\GenitaliaChanger.cs" />
|
||||
<Compile Include="Genes\Life_Force\AbilityUtility.cs" />
|
||||
<Compile Include="Genes\Life_Force\CompAbilityEffect_LifeForceCost.cs" />
|
||||
<Compile Include="Genes\Life_Force\CompAbilityEffect_CockEater.cs" />
|
||||
<Compile Include="Genes\Life_Force\CompProperties_AbilityCockEater.cs" />
|
||||
<Compile Include="Interactions\CompAbility_SexInteractionRequirements.cs" />
|
||||
<Compile Include="Genes\Life_Force\CompAbilityEffect_PussyHeal.cs" />
|
||||
<Compile Include="Genes\Life_Force\CompProperties_AbilityLifeForceCost.cs" />
|
||||
|
@ -144,6 +146,7 @@
|
|||
<Compile Include="JobDefOf.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="RJW_Genes.cs" />
|
||||
<Compile Include="ThoughtDefOf.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="GeneDefs_GenitaliaTypeEndogenes.xml" />
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
namespace RJW_Genes
|
||||
{
|
||||
[DefOf]
|
||||
public static class ThoughtDefOf
|
||||
{
|
||||
public static readonly ThoughtDef rjw_genes_cock_eaten;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue