Merge branch 'vegapnk:main' into main
This commit is contained in:
commit
ba1524e35d
16
CHANGELOG.md
16
CHANGELOG.md
|
@ -1,3 +1,19 @@
|
|||
# 1.1.1
|
||||
|
||||
Changes:
|
||||
|
||||
- Drastically increased mood-penalty for Fertilin-Loss (if the pawn is still too happy, there will never be a breakdown for missing fertilin)
|
||||
- No-Breast Genes add Nipples
|
||||
- Featureless Chest Gene (No Nipples at all, adds the RJW Featureless Chest as requested per some Kobold fetishists)
|
||||
|
||||
Fixes:
|
||||
|
||||
- Small and Big Male Genitalia had images wrong way round
|
||||
- Fertilin should activate at a MinAge of 18
|
||||
|
||||
**Important**: The Fertilin Changes could throw errors! I tested a bit, but not a lot.
|
||||
So please reach out if you get something and I will try to fix it ASAP.
|
||||
|
||||
# 1.1.0 (2023-03-04)
|
||||
|
||||
1.1.0-beta-1 was released on 05.02.2023.
|
||||
|
|
Binary file not shown.
|
@ -70,7 +70,7 @@
|
|||
<GeneDef ParentName="GeneExtraGenitaliaBase">
|
||||
<defName>rjw_genes_no_breasts</defName>
|
||||
<label>no breasts</label>
|
||||
<description>Females of this do not have a pair of breasts.</description>
|
||||
<description>Females of this do not have a pair of breasts, but only nipples.</description>
|
||||
<iconPath>Genes/Icons/No_Breasts</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_NoBreasts</geneClass>
|
||||
<displayOrderInCategory>706</displayOrderInCategory>
|
||||
|
@ -106,7 +106,7 @@
|
|||
<GeneDef ParentName="GeneExtraGenitaliaBase">
|
||||
<defName>rjw_genes_futa</defName>
|
||||
<label>futanari</label>
|
||||
<description>Males of this xenotype grow additional female genitalia, Females grow additional male genitalia.</description>
|
||||
<description>Males with this gene grow additional female genitalia, females grow additional male genitalia.</description>
|
||||
<iconPath>Genes/Icons/Futa</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_Futa</geneClass>
|
||||
<displayOrderInCategory>709</displayOrderInCategory>
|
||||
|
@ -116,4 +116,16 @@
|
|||
</exclusionTags>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="GeneExtraGenitaliaBase">
|
||||
<defName>rjw_genes_featureless_chest</defName>
|
||||
<label>Featureless Chest</label>
|
||||
<description>Carriers of this gene do not have breasts or nipples.</description>
|
||||
<iconPath>Genes/Icons/No_Breasts</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_FeaturelessChest</geneClass>
|
||||
<displayOrderInCategory>710</displayOrderInCategory>
|
||||
<exclusionTags>
|
||||
<li>BreastAmount</li>
|
||||
</exclusionTags>
|
||||
</GeneDef>
|
||||
|
||||
</Defs>
|
|
@ -10,7 +10,7 @@
|
|||
<defName>rjw_genes_big_male_genitalia</defName>
|
||||
<label>Big Male Genitaliasize</label>
|
||||
<description>Penises of this Xenotype are bigger.(Resizing takes place at 20th Birthday)</description>
|
||||
<iconPath>Genes/Icons/Small_Male_Genitalia</iconPath>
|
||||
<iconPath>Genes/Icons/Big_Male_Genitalia</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_BigMaleGenitalia</geneClass>
|
||||
<displayOrderInCategory>751</displayOrderInCategory>
|
||||
<exclusionTags>
|
||||
|
@ -22,7 +22,7 @@
|
|||
<defName>rjw_genes_small_male_genitalia</defName>
|
||||
<label>Small Male Genitaliasize</label>
|
||||
<description>Penises of this Xenotype are smaller. (Resizing takes place at 20th Birthday)</description>
|
||||
<iconPath>Genes/Icons/Big_Male_Genitalia</iconPath>
|
||||
<iconPath>Genes/Icons/Small_Male_Genitalia</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_SmallMaleGenitalia</geneClass>
|
||||
<displayOrderInCategory>753</displayOrderInCategory>
|
||||
<exclusionTags>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<selectionWeight>0</selectionWeight>
|
||||
<displayCategory>rjw_genes_fertilin</displayCategory>
|
||||
<displayOrderInCategory>-2</displayOrderInCategory>
|
||||
<minAgeActive>18</minAgeActive>
|
||||
<customEffectDescriptions>
|
||||
<li>Gives fertilin supply.</li>
|
||||
</customEffectDescriptions>
|
||||
|
@ -43,6 +44,7 @@
|
|||
<prerequisite>rjw_genes_lifeforce</prerequisite>
|
||||
<resourceLossPerDay>0.15</resourceLossPerDay>
|
||||
<displayCategory>rjw_genes_fertilin</displayCategory>
|
||||
<minAgeActive>18</minAgeActive>
|
||||
<displayOrderInCategory>-1</displayOrderInCategory>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<biostatMet>6</biostatMet>
|
||||
|
|
|
@ -39,17 +39,17 @@
|
|||
<li>
|
||||
<label>fertilin craving</label>
|
||||
<description>My bones ache. I really need fertilin.</description>
|
||||
<baseMoodEffect>-10</baseMoodEffect>
|
||||
<baseMoodEffect>-25</baseMoodEffect>
|
||||
</li>
|
||||
<li>
|
||||
<label>fertilin craving</label>
|
||||
<description>This hurts bad and I can't stop thinking about sex. I would do anything for some cum.</description>
|
||||
<baseMoodEffect>-15</baseMoodEffect>
|
||||
<baseMoodEffect>-40</baseMoodEffect>
|
||||
</li>
|
||||
<li>
|
||||
<label>fertilin craving</label>
|
||||
<description>Can't think. Sex. Sex. Must. Have. Cum.</description>
|
||||
<baseMoodEffect>-20</baseMoodEffect>
|
||||
<baseMoodEffect>-55</baseMoodEffect>
|
||||
</li>
|
||||
</stages>
|
||||
</ThoughtDef>
|
||||
|
|
|
@ -54,6 +54,8 @@ Maybe you can also fix it by changing `<DisplayOrderInXenotype>` in the Male/Fem
|
|||
|
||||
## Full-No-Genital-Genes get Genitals later
|
||||
|
||||
*Update: Should be addressed with 1.1.1 and not appear anymore*
|
||||
|
||||
Error: I added all "no-XXX" genes but my pawn has genitalia on map!
|
||||
|
||||
Reason: If you go with Full-No-Genitals (No Penis, No Anus, No Breasts, No Vagina) then the pawn spawns without any Genitalia on the map,
|
||||
|
@ -63,6 +65,8 @@ however then the RJW base-logic runs the sexualizer.
|
|||
|
||||
## Log Pops up for Xenotypes with Female/Male Only Gene
|
||||
|
||||
*Update: Should not appear anymore after 1.1 when used with current rjw versions*
|
||||
|
||||
Error:
|
||||
|
||||
When using a Xenotype with the Female only gene, upon refresh it can open the log with the following (red) statement:
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
using Verse;
|
||||
using rjw;
|
||||
using RimWorld;
|
||||
|
||||
namespace RJW_Genes
|
||||
{
|
||||
public class Gene_FeaturelessChest : RJW_Gene
|
||||
{
|
||||
internal Hediff removed_breasts;
|
||||
internal Hediff added_nipples;
|
||||
public override void PostMake()
|
||||
{
|
||||
base.PostMake();
|
||||
|
||||
if (removed_breasts == null)
|
||||
{
|
||||
RemoveButStoreBreasts();
|
||||
AddFeaturelessBreast();
|
||||
}
|
||||
}
|
||||
|
||||
public override void PostAdd()
|
||||
{
|
||||
base.PostAdd();
|
||||
|
||||
if (removed_breasts == null)
|
||||
{
|
||||
RemoveButStoreBreasts();
|
||||
AddFeaturelessBreast();
|
||||
}
|
||||
}
|
||||
|
||||
public override void PostRemove()
|
||||
{
|
||||
base.PostRemove();
|
||||
if (added_nipples != null)
|
||||
pawn.health.RemoveHediff(added_nipples);
|
||||
if (removed_breasts != null)
|
||||
pawn.health.AddHediff(removed_breasts);
|
||||
}
|
||||
|
||||
internal void RemoveButStoreBreasts()
|
||||
{
|
||||
var partBPR = Genital_Helper.get_breastsBPR(pawn);
|
||||
Hediff breastsToRemove = Genital_Helper.get_AllPartsHediffList(pawn).FindLast(x => GenitaliaUtility.IsBreasts(x));
|
||||
|
||||
if (breastsToRemove != null)
|
||||
{
|
||||
removed_breasts = breastsToRemove;
|
||||
pawn.health.RemoveHediff(breastsToRemove);
|
||||
}
|
||||
}
|
||||
|
||||
internal void AddFeaturelessBreast()
|
||||
{
|
||||
var partBPR = Genital_Helper.get_breastsBPR(pawn);
|
||||
this.added_nipples = pawn.health.AddHediff(Genital_Helper.featureless_chest, partBPR);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -6,18 +6,15 @@ namespace RJW_Genes
|
|||
{
|
||||
public class Gene_NoBreasts : RJW_Gene
|
||||
{
|
||||
Hediff breastsToShrink;
|
||||
internal float oldSize = -1f;
|
||||
|
||||
internal Hediff removed_breasts;
|
||||
|
||||
// TODO: This gene only works if another Gene was set specifying the genitalia.
|
||||
// If it is added later, it still works, but on creation it needs a different
|
||||
// TODO: If all Genitalia are removed by genes, RJW adds some to the pawns at spawn. IDEA: Add male-nipples ?
|
||||
public override void PostMake()
|
||||
{
|
||||
base.PostMake();
|
||||
|
||||
// Breasts are removed for female pawns!
|
||||
if (GenderUtility.IsFemale(pawn) && removed_breasts == null)
|
||||
if (GenderUtility.IsFemale(pawn) && oldSize < 0)
|
||||
{
|
||||
RemoveButStoreBreasts();
|
||||
}
|
||||
|
@ -28,7 +25,7 @@ namespace RJW_Genes
|
|||
base.PostAdd();
|
||||
|
||||
// Breasts are removed for female pawns!
|
||||
if (GenderUtility.IsFemale(pawn) && removed_breasts == null)
|
||||
if (GenderUtility.IsFemale(pawn) && oldSize < 0)
|
||||
{
|
||||
RemoveButStoreBreasts();
|
||||
}
|
||||
|
@ -37,21 +34,33 @@ namespace RJW_Genes
|
|||
public override void PostRemove()
|
||||
{
|
||||
base.PostRemove();
|
||||
if(removed_breasts != null)
|
||||
pawn.health.AddHediff(removed_breasts);
|
||||
// Re-Add the old breasts
|
||||
if (oldSize != null)
|
||||
breastsToShrink.Severity = oldSize;
|
||||
}
|
||||
|
||||
internal void RemoveButStoreBreasts()
|
||||
{
|
||||
var partBPR = Genital_Helper.get_breastsBPR(pawn);
|
||||
Hediff breastsToRemove = Genital_Helper.get_AllPartsHediffList(pawn).FindLast(x => GenitaliaUtility.IsBreasts(x));
|
||||
breastsToShrink = Genital_Helper.get_AllPartsHediffList(pawn).FindLast(x => GenitaliaUtility.IsBreasts(x));
|
||||
|
||||
if(breastsToRemove != null)
|
||||
if(breastsToShrink != null)
|
||||
{
|
||||
removed_breasts = breastsToRemove;
|
||||
pawn.health.RemoveHediff(breastsToRemove);
|
||||
oldSize = breastsToShrink.Severity;
|
||||
//pawn.health.RemoveHediff(breastsToRemove);
|
||||
breastsToShrink.Severity = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/// <summary>
|
||||
/// Adds a "rjw.featurelesschest", which means nipples but nothing else (like male human pawns do).
|
||||
/// </summary>
|
||||
internal void AddFeaturelessBreast()
|
||||
{
|
||||
var partBPR = Genital_Helper.get_breastsBPR(pawn);
|
||||
//this.added_nipples = pawn.health.AddHediff(Genital_Helper.featureless_chest, partBPR);
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,7 +43,9 @@ namespace RJW_Genes
|
|||
{
|
||||
if (HasLifeForce(pawn))
|
||||
{
|
||||
Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType<Gene_LifeForce>();
|
||||
Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType<Gene_LifeForce>();
|
||||
if (gene == null || !gene.Active)
|
||||
return false;
|
||||
if (gene.Resource.Value < gene.targetValue)
|
||||
{
|
||||
return true;
|
||||
|
@ -57,6 +59,8 @@ namespace RJW_Genes
|
|||
if (HasLifeForce(pawn))
|
||||
{
|
||||
Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType<Gene_LifeForce>();
|
||||
if (gene == null || !gene.Active)
|
||||
return false;
|
||||
if (gene.Resource.Value < gene.MinLevelForAlert)
|
||||
{
|
||||
return true;
|
||||
|
@ -122,4 +126,27 @@ namespace RJW_Genes
|
|||
public static bool IsCumEater(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_cum_eater); }
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Exception in Verse.AI.ThinkNode_Priority TryIssueJobPackage: System.NullReferenceException: Object reference not set to an instance of an object
|
||||
at RJW_Genes.GeneUtility.HasLowLifeForce (Verse.Pawn pawn) [0x00014] in < 881b7541af8144a78a14c9dad08e43c7 >:0
|
||||
at RJW_Genes.ThinkNode_ConditionalLowLifeForce.Satisfied(Verse.Pawn p) [0x00000] in < 881b7541af8144a78a14c9dad08e43c7 >:0
|
||||
at Verse.AI.ThinkNode_Conditional.TryIssueJobPackage(Verse.Pawn pawn, Verse.AI.JobIssueParams jobParams) [0x00000] in < 38562b1a2ab64eacb931fb5df05ca994 >:0
|
||||
at Verse.AI.ThinkNode_Priority.TryIssueJobPackage(Verse.Pawn pawn, Verse.AI.JobIssueParams jobParams) [0x00022] in < 38562b1a2ab64eacb931fb5df05ca994 >:0
|
||||
UnityEngine.StackTraceUtility:ExtractStackTrace()
|
||||
Verse.Log:Error(string)
|
||||
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Verse.Pawn, Verse.AI.JobIssueParams)
|
||||
Verse.AI.ThinkNode_SubtreesByTag:TryIssueJobPackage(Verse.Pawn, Verse.AI.JobIssueParams)
|
||||
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Verse.Pawn, Verse.AI.JobIssueParams)
|
||||
Verse.AI.Pawn_JobTracker:DetermineNextJob(Verse.ThinkTreeDef &)
|
||||
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
|
||||
Verse.AI.Pawn_JobTracker:EndCurrentJob(Verse.AI.JobCondition, bool, bool)
|
||||
Verse.AI.Pawn_JobTracker:JobTrackerTick()
|
||||
Verse.Pawn:Tick()
|
||||
Verse.TickList:Tick()
|
||||
(wrapper dynamic - method) Verse.TickManager:Verse.TickManager.DoSingleTick_Patch2(Verse.TickManager)
|
||||
Verse.TickManager:TickManagerUpdate()
|
||||
Verse.Game:UpdatePlay()
|
||||
Verse.Root_Play:Update()
|
||||
*/
|
|
@ -42,7 +42,7 @@ namespace RJW_Genes
|
|||
{
|
||||
Pawn_GeneTracker genes = pawn.genes;
|
||||
Gene_LifeForce gene_Lifeforce = (genes != null) ? genes.GetFirstGeneOfType<Gene_LifeForce>() : null;
|
||||
if (gene_Lifeforce != null && gene_Lifeforce.Value < gene_Lifeforce.MinLevelForAlert)
|
||||
if (gene_Lifeforce != null && gene_Lifeforce.Active && gene_Lifeforce.Value < gene_Lifeforce.MinLevelForAlert)
|
||||
{
|
||||
this.targets.Add(pawn);
|
||||
this.targetLabels.Add(pawn.NameShortColored.Resolve());
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
<Compile Include="Genes\ExtraGenitalia\Gene_ExtraAnus.cs" />
|
||||
<Compile Include="Genes\ExtraGenitalia\Gene_Futa.cs" />
|
||||
<Compile Include="Genes\ExtraGenitalia\Gene_ExtraVagina.cs" />
|
||||
<Compile Include="Genes\ExtraGenitalia\Gene_FeaturelessChest.cs" />
|
||||
<Compile Include="Genes\ExtraGenitalia\Gene_NoBreasts.cs" />
|
||||
<Compile Include="Genes\ExtraGenitalia\Gene_NoAnus.cs" />
|
||||
<Compile Include="Genes\ExtraGenitalia\Gene_NoVagina.cs" />
|
||||
|
|
Loading…
Reference in New Issue