Compare commits

...

4 commits

32 changed files with 142 additions and 36 deletions

19
About/Manifest.xml Normal file
View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest>
<identifier>RJW-Genes</identifier>
<version>1.1.0</version>
<dependencies>
<li>RimJobWorld</li>
<li>HugsLib</li>
</dependencies>
<incompatibleWith />
<loadAfter>
<li>RimJobWorld</li>
<li>HugsLib</li>
</loadAfter>
<suggests>
<li>RJW-LicentiaLabs</li>
</suggests>
<manifestUri>https://github.com/vegapnk/RJW-Genes/tree/main/About/Manifest.xml</manifestUri>
<downloadUri>https://github.com/vegapnk/RJW-Genes</downloadUri>
</Manifest>

View file

@ -15,6 +15,7 @@
- Animal Gene Inheritance Gene-Chance Multiplier per Setting (#13, Shabakur)
- Lots of Debug-Only Logging for Animal Gene Inheritance
- Patches for some popular Xenotype Mods (Nyaron, Kijin3, Roos Minotaurs, VRE Phytokin)
- Generous Donor Cheatmode
- Mod-Settings
## Fertilin:
@ -53,6 +54,16 @@ Xenotypes:
Incubi and Succubi can spawn in a special event at night when pawns have low sex need. Cumazones can just appear randomly.
**_On Inheritance:_**
We realized that it's not nice if the Succubi Babies do not have all Succubi Genes, and have Fertilin with no use for it or look like wookies instead. Hence, we changed the Fertilin Xenotypes to be Xenogenes (non-inheritable) *BUT* we recommend using the [dominant-gene](https://steamcommunity.com/sharedfiles/filedetails/?id=2884110898) mod.
If the dominant-gene mod is loaded, our xenotypes will spawn with it, making Succubus Babies Succubi.
In case you do not want that behaviour, look for the Patch `Patch_Dominant_Gene.xml` and delete it.
**_On Making your own Succubi_:**
Currently Succubi and Incubi only spawn through a special event determined by their xenotype def name. So if you make your own, they will not spawn with this event. Make sure that you have a way to get your custom xenotypes appear. You might want to "just alter" the xenotype xml provided by us, then they will spawn with the event.
## Fixes:
- Issue with Breast-Size (#8) fixed by lowercasing breast-match (Shabakur)

Binary file not shown.

View file

@ -3,7 +3,7 @@
<AbilityDef>
<defName>rjw_genes_naked_prowess</defName>
<label>naked prowess</label>
<description>Enhance the strenght and resilience of your naked body with fertilin.</description>
<description>Enhance the strength and resilience of your naked body with fertilin.</description>
<iconPath>Things/Mote/Heart</iconPath>
<warmupMoteSocialSymbol>Things/Mote/Heart</warmupMoteSocialSymbol>
<jobDef>CastAbilityOnThing</jobDef>

View file

@ -154,7 +154,7 @@
<GeneDef>
<defName>rjw_genes_naked_prowess</defName>
<label>naked prowess</label>
<description>Carriers of this gene are able to temporarily increase their strenght and resilience, while they are naked.</description>
<description>Carriers of this gene are able to temporarily increase their strength and resilience, while they are naked.</description>
<iconPath>Things/Mote/Heart</iconPath>
<prerequisite>rjw_genes_lifeforce</prerequisite>
<displayOrderInCategory>13</displayOrderInCategory>

View file

@ -13,7 +13,7 @@
<combatPowerFactor>1</combatPowerFactor>
<displayPriority>-1000</displayPriority>
<factionlessGenerationWeight>0.005</factionlessGenerationWeight>
<inheritable>true</inheritable>
<inheritable>false</inheritable>
<doubleXenotypeChances>
<Pigskin>0.02</Pigskin>
<Impid>0.02</Impid>
@ -42,8 +42,6 @@
<li>rjw_genes_aphrodisiac_pheromones</li>
<li>Beauty_Pretty</li>
<li>MoveSpeed_Quick</li>
<li>Robust</li>
<li>UVSensitivity_Intense</li>
<li>AptitudeStrong_Social</li>
<li>Ears_Pointed</li>
<li>Headbone_MiniHorns</li>
@ -63,7 +61,7 @@
<combatPowerFactor>1</combatPowerFactor>
<displayPriority>-1000</displayPriority>
<factionlessGenerationWeight>0.005</factionlessGenerationWeight>
<inheritable>true</inheritable>
<inheritable>false</inheritable>
<doubleXenotypeChances>
<Pigskin>0.02</Pigskin>
<Impid>0.02</Impid>
@ -114,6 +112,7 @@
<li>Aggression_Aggressive</li>
<li>MeleeDamage_Strong</li>
<li>KillThirst</li>
<li>Robust</li>
<li>Pain_Reduced</li>
<li>rjw_genes_rapist</li>
<li>Beauty_Ugly</li>

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationFindMod">
<mods>
<li>LustLicentia.RJWLabs</li>
</mods>
<match Class="PatchOperationAdd">
<xpath>Defs/XenotypeDef[defName="rjw_genes_succubus"]/genes</xpath>
<value>
<li>rjw_genes_elasticity</li>
</value>
</match>
</Operation>
</Patch>

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationFindMod">
<mods>
<li>Dominant Gene</li>
</mods>
<match Class="PatchOperationAdd">
<xpath>Defs/XenotypeDef[defName="rjw_genes_succubus"]/genes</xpath>
<value>
<li>DominantGene</li>
</value>
</match>
</li>
<li Class="PatchOperationFindMod">
<mods>
<li>Dominant Gene</li>
</mods>
<match Class="PatchOperationAdd">
<xpath>Defs/XenotypeDef[defName="rjw_genes_incubus"]/genes</xpath>
<value>
<li>DominantGene</li>
</value>
</match>
</li>
<li Class="PatchOperationFindMod">
<mods>
<li>Dominant Gene</li>
</mods>
<match Class="PatchOperationAdd">
<xpath>Defs/XenotypeDef[defName="rjw_genes_cumazone"]/genes</xpath>
<value>
<li>DominantGene</li>
</value>
</match>
</li>
</operations>
</Operation>
</Patch>

View file

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationFindMod">
<mods>
<li>LustLicentia.RJWLabs</li>
</mods>
<match Class="PatchOperationAdd">
<xpath>Defs/XenotypeDef[defName="rjw_genes_succubus"]/genes</xpath>
<value>
<li>rjw_genes_elasticity</li>
</value>
</match>
</Operation>
</Patch>

View file

@ -2,6 +2,19 @@
Collection of Known Bugs and reasons for their origin.
## Fertilin does not go up after Sex!
Error: An Incubus or Succubus had sex with another pawn, but did not gain Fertilin.
Things to consider:
1. Please read descriptions of the respective genes - did you have "the right sex?"
2. Check Hediffs of the fucked pawn - was it already drained?
3. Did you fuck an animal? Check Settings for Fertilin-Multiplier
4. Did the pawns really *finish* ? In case they throw up or get drafted there is no gain.
There also is a known mod-conflict with `rjw Animations patch` (See #18), so make sure you use up-to-date versions of everything.
## Random Vaginas for Goblins
Error: Pawns have different genitalia than expected, e.g. if the "no vagina" gene is specified there are pawns with vaginas AND a penis.

View file

@ -73,10 +73,19 @@ namespace RJW_Genes
&& !props.pawn.health.hediffSet.HasHediff(HediffDefOf.rjw_genes_succubus_drained)
&& !GeneUtility.IsSexualDrainer(props.pawn))
{
if (RJW_Genes_Settings.rjw_genes_detailed_debug)
ModLog.Message($"{props.pawn.Name} has been (sexually) drained by {PawnWithLifeForce.Name}");
props.pawn.health.AddHediff(HediffDefOf.rjw_genes_succubus_drained);
GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(PawnWithLifeForce), LIFEFORCE_GAINED_FROM_DRAINER_GENE);
if (GeneUtility.IsGenerousDonor(props.pawn) && RJW_Genes_Settings.rjw_genes_generous_donor_cheatmode)
{
// Cheatmode is on, do not drain but give life
GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(PawnWithLifeForce), LIFEFORCE_GAINED_FROM_DRAINER_GENE);
if (RJW_Genes_Settings.rjw_genes_detailed_debug)
ModLog.Message($"{props.pawn.Name} was not (sexually) drained by {PawnWithLifeForce.Name}, because Cheatmode for Generous Donors is on");
} else
{
if (RJW_Genes_Settings.rjw_genes_detailed_debug)
ModLog.Message($"{props.pawn.Name} has been (sexually) drained by {PawnWithLifeForce.Name}");
props.pawn.health.AddHediff(HediffDefOf.rjw_genes_succubus_drained);
GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(PawnWithLifeForce), LIFEFORCE_GAINED_FROM_DRAINER_GENE);
}
}
}
}
@ -88,20 +97,26 @@ namespace RJW_Genes
Hediff fertilin_lost = props.pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_fertilin_lost);
//Around quarter get ejected everytime pawn cums
float multiplier = Rand.Range(0.10f, 0.40f);
float multiplier = Rand.Range(0.10f, 0.40f);
//Create a new ferilin_lost hediff or increase it
if (fertilin_lost == null)
if (GeneUtility.IsGenerousDonor(props.pawn) && RJW_Genes_Settings.rjw_genes_generous_donor_cheatmode)
{
Hediff new_fertilin_lost = HediffMaker.MakeHediff(HediffDefOf.rjw_genes_fertilin_lost, props.pawn);
props.pawn.health.AddHediff(new_fertilin_lost);
new_fertilin_lost.Severity = multiplier;
}
else
{
multiplier *= 1 - fertilin_lost.Severity;
fertilin_lost.Severity += multiplier;
// Do nothing, Cheatmode is on
multiplier = 1;
}
else
{
//Create a new ferilin_lost hediff or increase it
if (fertilin_lost == null)
{
Hediff new_fertilin_lost = HediffMaker.MakeHediff(HediffDefOf.rjw_genes_fertilin_lost, props.pawn);
props.pawn.health.AddHediff(new_fertilin_lost);
new_fertilin_lost.Severity = multiplier;
} else
{
multiplier *= 1 - fertilin_lost.Severity;
fertilin_lost.Severity += multiplier;
}
}
multiplier *= absorb_percentage;

View file

@ -36,6 +36,9 @@ namespace RJW_Genes
}
listing_Standard.Gap(5f);
listing_Standard.CheckboxLabeled("generous-donor cheatmode", ref rjw_genes_generous_donor_cheatmode, "When enabled, pawns with the 'generous donor' are not drained and not fertilin exhausted. Hence they can fuel succubi and incubi non-stop. This makes them drastically easier to keep, and you should not do it.", 0f, 1f);
listing_Standard.Gap(5f);
listing_Standard.CheckboxLabeled("detailed-debug", ref rjw_genes_detailed_debug, "Adds detailed information to the log about interactions and genes.", 0f, 1f);
listing_Standard.End();
@ -46,11 +49,14 @@ namespace RJW_Genes
base.ExposeData();
Scribe_Values.Look<float>(ref RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor, "rjw_genes_fertilin_from_animals_factor", RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor, true);
Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_detailed_debug, "rjw_genes_detailed_debug", RJW_Genes_Settings.rjw_genes_detailed_debug, true);
Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit, "rjw_genes_sexdemon_visit", RJW_Genes_Settings.rjw_genes_sexdemon_visit, true);
Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_sexdemon_join_size_matters, "rjw_genes_sexdemon_join_size_matters", RJW_Genes_Settings.rjw_genes_sexdemon_join_size_matters, true);
Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit_groups, "rjw_genes_sexdemon_groups", RJW_Genes_Settings.rjw_genes_sexdemon_visit_groups, true);
Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit_succubi, "rjw_genes_sexdemon_succubi", RJW_Genes_Settings.rjw_genes_sexdemon_visit_succubi, true);
Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi, "rjw_genes_sexdemon_incubi", RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi, true);
Scribe_Values.Look<bool>(ref RJW_Genes_Settings.rjw_genes_generous_donor_cheatmode, "rjw_genes_generous_donor_cheatmode", RJW_Genes_Settings.rjw_genes_generous_donor_cheatmode, true);
}
public static bool rjw_genes_detailed_debug = false;
@ -62,5 +68,7 @@ namespace RJW_Genes
public static bool rjw_genes_sexdemon_visit_groups = true;
public static bool rjw_genes_sexdemon_visit_succubi = true;
public static bool rjw_genes_sexdemon_visit_incubi = true;
public static bool rjw_genes_generous_donor_cheatmode = false;
}
}