Compare commits

...

34 commits

Author SHA1 Message Date
Telanda
b70b975b67
Merge 2.6.2 Update (#228)
* - Seperation of Animal Gene code from base RJW_Genes

* - Clean-up of leftover XML Files
- Minor update to README.md

* Fixed missing translation text
Fixed Missing B&S Undead Patch
Fixed Anal Fertility Errors, might be broken again.

DLL Included for Merge.
2026-02-28 23:15:14 +11:00
Telanda-DDS
4946df511e - Recompiled Cumpliation plugin against newest version of Cumpilation.
- Fixed Indentation
2025-10-18 10:45:32 +11:00
Telanda-DDS
ef953fa1b7 - Fixes to address changed RJW Settings Variables. 2025-10-16 16:18:28 +11:00
Telanda-DDS
be27255832 - Updated All Version Information. 2025-09-05 16:42:35 +10:00
Telanda
83e9f9ef5b
Dev (#222)
- Seperation of Animal Gene code from base RJW_Genes
- Minor update to README.md
2025-09-05 16:37:32 +10:00
Telanda-DDS
45a451a127 - Added additional Debug Message Check. 2025-08-21 09:46:51 +10:00
Telanda-DDS
7692ce3425 - Fixed bug with beastiality gene inheritance null reference. 2025-08-18 14:40:02 +10:00
Telanda-DDS
b13f761ede - Versioning Updates 2025-08-18 12:26:00 +10:00
Telanda-DDS
ed761327d2 - Fixed bug with fertile Anus not correctly detecting if penetrating partner was fertile. 2025-08-18 12:20:00 +10:00
Telanda-DDS
e0a333f539 - Fixed incorrect reference to Sexperience mod. 2025-08-04 10:27:19 +10:00
Telanda-DDS
5025700727 - Fixed potential null varaible exception in ElToro Stretching patch.
- Fixed Orgasm Rush not triggering when partner was an Animal.
2025-08-03 12:06:16 +10:00
Telanda-DDS
a407f3f400 - 2.5.5 Version Update & CHANGELOG.md 2025-07-25 14:11:06 +10:00
Telanda-DDS
6e26d596cf - Updated Elastic gene to also increase speed at which stretched parts return to normal under ElToro's streching Mod.
- Removed Unnecessary packages.config
2025-07-25 14:06:02 +10:00
Telanda-DDS
670361a748 - Support for RJW RC-5
- Fixed Typo in Disease ThoughtDef
2025-07-25 11:25:52 +10:00
Telanda-DDS
c7ea7144dc - Fixed ElToro Stretching support causing an error if not present. 2025-07-25 09:51:45 +10:00
Telanda-DDS
97eabd540d - Fixed incorrect consciousness value. 2025-07-24 18:03:03 +10:00
Telanda-DDS
61fdb2c3b7 - Fixed Load bug with VRE-Genie Sexperience interaction. 2025-07-24 16:30:29 +10:00
Telanda-DDS
27511a29f3 - Fixed regressed CHANGELOG.md 2025-07-24 14:04:28 +10:00
Telanda-DDS
ef05a5bbc3 - Incremented version in mod settings. 2025-07-24 14:01:21 +10:00
Telanda-DDS
7f6dc2a668 - Added in Elasticity support for Cumpilation and Eltoro Stretching.
- Updated Breeding Pulse c# with more debugging information.
- Updated Vanilla Genes Expanded Genie with updated function call.
- Removed Licentia XML & method calls from Gene_Elasticity.cs
- Fixed MatingCall Ability & checked to make sure Pheromone Spit was still functional.
- Fixed incorrect mod requirement for sex curiosity Gene.
2025-07-24 13:41:47 +10:00
Telanda-DDS
ba53413687 - Migrated all textures to the Common Directory 2025-07-20 10:50:45 +10:00
Telanda-DDS
aa3d3985bc - Removed incorrectly located DLL. 2025-07-19 22:10:05 +10:00
Telanda-DDS
11226249b3 ###Fixes###
- Fixed "Big and Small - Heaven and Hell" XML patch being applied incorrectly, again.
- Fixed issue that was causing Extra genitals,Anus,breasts being added to pawns when a gene was applied.
- Removed some code duplication in the Gender specific Genes, I cannot see any situations where this code was required, but but there are some notes in other genes relating to character editor, I'm leaving other genes As they are for now, and will wait to see if it breaks some strange edge case I didn't test for.
2025-07-19 16:49:52 +10:00
Telanda-DDS
dde1c98b18 - Incremented version to 2.5.1
- Removed DDS Files
- Added Initial Support for Rimworld 1.6
- Added Additional mod requirement to PatchBSShared.xml to prevent premature loading.
- Refactored Cumpilation integration to make it optional rather then a Required Mod.
- Disabled succubus tail interactions pending rewrite for RJW's new interactions system.
- Disabled Quirks pending rewrite RJW separating them into their own mod.
2025-07-17 21:07:51 +10:00
DukeElToro
7540b96ecb
Added Cumpilation dependancy to the about.xml 2024-11-26 11:10:52 +03:00
vegapnk
b0da74ebd3
Merge pull request #202 from vegapnk/dev
2.4.2
2024-11-25 20:54:02 +08:00
vegapnk
e9fa05d218
Update CHANGELOG.md 2024-11-25 20:53:33 +08:00
DukeElToro
8577c3ee55 Updated manifest 2024-11-20 08:37:48 +03:00
DukeElToro
19148cc768 Removed HugsLib from about.xml 2024-11-20 07:59:17 +03:00
ElToro
72acfbb8bf Return of Pig and Orc genitalia 2024-11-18 01:55:35 +03:00
ElToro
f5975212b1 Not to forget permament fix for EvergrowingGenitalia gene 2024-11-17 01:50:35 +03:00
ElToro
f1ea695516 More fixes 2024-11-17 01:47:48 +03:00
ElToro
2d055a134f RJW 5.6 fix 2024-11-16 23:24:54 +03:00
vegapnk
e402a6b2a8
Merge pull request #191 from vegapnk/dev
2.4.1
2024-10-22 08:39:37 +02:00
686 changed files with 19811 additions and 79 deletions

2
.gitignore vendored
View file

@ -255,3 +255,5 @@ paket-files/
# Python Tools for Visual Studio (PTVS) # Python Tools for Visual Studio (PTVS)
__pycache__/ __pycache__/
*.pyc *.pyc
*.dds

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<GeneDef ParentName="GeneGenitalTypeBase">
<defName>rjw_genes_Pig_genitalia</defName>
<label>Pig genitalia</label>
<description>Carriers of this gene develop pig genitalia.</description>
<iconPath>Genes/Icons/Genitalia_screw_icon</iconPath>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>PigPenis</penis>
<vagina>PigVagina</vagina>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
<GeneDef ParentName="GeneGenitalTypeBase">
<defName>rjw_genes_Orc_genitalia</defName>
<label>Orc genitalia</label>
<description>Carriers of this gene develop orc genitalia.</description>
<iconPath>Genes/Icons/Genitalia_orc_icon</iconPath>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>OrcPenis</penis>
<vagina>OrcVagina</vagina>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
</Defs>

View file

@ -1,17 +1,14 @@
 
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using System.Reflection.Emit; using System.Reflection.Emit;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HarmonyLib; using HarmonyLib;
using rjw; using rjw;
using Verse;
namespace RJW_Genes namespace RJW_Genes
{ {
/// <summary> /// <summary>
/// This Class patches the RJW-Mechbirth to not deal damage when the pawn has the MechBreeder Gene. /// This Class patches the RJW-Mechbirth to not deal damage when the pawn has the MechBreeder Gene.
/// This harmony patch was kindly provided by 'shabalox' https://github.com/Shabalox/RJW_Genes_Addons/ /// This harmony patch was kindly provided by 'shabalox' https://github.com/Shabalox/RJW_Genes_Addons/
@ -22,43 +19,36 @@ namespace RJW_Genes
[HarmonyTranspiler] [HarmonyTranspiler]
public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator il) public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator il)
{ {
bool found_call = false; bool found_call = false;
bool found_skip = false; bool finished = false;
Label skip_label = il.DefineLabel(); Label skip_label = il.DefineLabel();
MethodInfo ismechbreeder = AccessTools.Method(typeof(GeneUtility), "IsMechbreeder"); MethodInfo removeHediff = AccessTools.Method(typeof(Pawn_HealthTracker), nameof(Pawn_HealthTracker.RemoveHediff));
foreach (CodeInstruction codeInstruction in instructions) MethodInfo ismechbreeder = AccessTools.Method(typeof(GeneUtility), "IsMechbreeder");
{ foreach (CodeInstruction codeInstruction in instructions)
//Check if the first opcode after endfinally ldloc_0 is and in that case add the label to skip the code {
if (found_skip && codeInstruction.opcode == OpCodes.Ldloc_0) yield return codeInstruction;
{
codeInstruction.labels.Add(skip_label); if (finished)
} {
found_skip = false; continue;
if (codeInstruction.opcode == OpCodes.Endfinally) }
{
found_skip = true; if (!found_call && codeInstruction.Calls(removeHediff))
} {
//Load pawn, call function to check if a mechbreeder, and skip past the part which does damage
yield return codeInstruction; yield return new CodeInstruction(OpCodes.Ldloc_0);
yield return new CodeInstruction(OpCodes.Call, ismechbreeder);
if (codeInstruction.opcode == OpCodes.Call) yield return new CodeInstruction(OpCodes.Brfalse_S, skip_label);
{ yield return new CodeInstruction(OpCodes.Ret);
if (codeInstruction.operand.ToString() == "Boolean TryMakeFilth(Verse.IntVec3, Verse.Map, Verse.ThingDef, System.String, Int32, RimWorld.FilthSourceFlags)") found_call = true;
{ }
found_call = true; else if (found_call)
} {
} // next instruction after the insert
//Triggers after the pop opcode (after generating filth in c#). codeInstruction.labels.Add(skip_label);
else if (found_call) finished = true;
{ }
//Load pawn, call function to check if a mechbreeder, and skip past the part which does damage }
yield return new CodeInstruction(OpCodes.Ldloc_0, null);
yield return new CodeInstruction(OpCodes.Call, ismechbreeder);
yield return new CodeInstruction(OpCodes.Brtrue_S, skip_label);
found_call = false;
}
}
yield break;
} }
} }
} }

View file

@ -16,7 +16,7 @@ namespace RJW_Genes
{ {
// Right now: Ignore Breasts, only do // Right now: Ignore Breasts, only do
if (part is ISexPartHediff sexPart && (Genital_Helper.is_penis(part) || Genital_Helper.is_vagina(part))) if (part is ISexPartHediff sexPart && (Genital_Helper.is_penis(part) || Genital_Helper.is_vagina(part)))
sexPart.GetPartComp().partFluidFactor *= multiplier; sexPart.GetPartComp().partFluidMultiplier *= multiplier;
} }
} }

View file

@ -2,13 +2,11 @@
using RimWorld; using RimWorld;
using rjw; using rjw;
using System.Collections.Generic; using System.Collections.Generic;
using System;
namespace RJW_Genes namespace RJW_Genes
{ {
public class Gene_EvergrowingGenitalia : RJW_Gene public class Gene_EvergrowingGenitalia : RJW_Gene
{ {
const int BASE_TICKS = 60000; const int BASE_TICKS = 60000;
public override void Tick() public override void Tick()
@ -27,20 +25,21 @@ namespace RJW_Genes
private void GrowPenisses() private void GrowPenisses()
{ {
List<Hediff> AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x)); List<Hediff> AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x));
foreach(Hediff penis in AllPenisses) float bodySizeOverride = -1f; //this is just hackjob to temporary fix an issue. It need to be remade
foreach (Hediff penis in AllPenisses)
{ {
HediffComp_SexPart CompHediff = penis.TryGetComp<rjw.HediffComp_SexPart>(); HediffComp_SexPart CompHediff = penis.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff.baseSize <= 1.00f) if (CompHediff.baseSize <= 1.00f)
CompHediff.baseSize += 0.10f; CompHediff.baseSize += 0.10f;
else else
{ {
if (CompHediff.bodySizeOverride <= 1.0) CompHediff.bodySizeOverride = 1.0f; if (bodySizeOverride <= 1.0) bodySizeOverride = 1.0f;
CompHediff.bodySizeOverride += 0.05f; bodySizeOverride += 0.05f;
} }
CompHediff.UpdateSeverity(); CompHediff.UpdateSeverity();
if (CompHediff.bodySizeOverride > 3.0f) if (bodySizeOverride > 3.0f)
{ {
// Add Mental Hediff // Add Mental Hediff
HandleGenitaliaSizeThoughts(pawn); HandleGenitaliaSizeThoughts(pawn);
@ -48,13 +47,14 @@ namespace RJW_Genes
// Increase Fluid // Increase Fluid
if (CompHediff != null) if (CompHediff != null)
CompHediff.partFluidFactor *= 1.05f; CompHediff.partFluidMultiplier *= 1.05f;
} }
} }
private void GrowVaginas() private void GrowVaginas()
{ {
List<Hediff> AllVaginas = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_vagina(x)); List<Hediff> AllVaginas = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_vagina(x));
float bodySizeOverride = -1f; //this is just hackjob to temporary fix an issue. It need to be remade
foreach (Hediff vagina in AllVaginas) foreach (Hediff vagina in AllVaginas)
{ {
HediffComp_SexPart CompHediff = vagina.TryGetComp<rjw.HediffComp_SexPart>(); HediffComp_SexPart CompHediff = vagina.TryGetComp<rjw.HediffComp_SexPart>();
@ -62,21 +62,21 @@ namespace RJW_Genes
CompHediff.baseSize += 0.10f; CompHediff.baseSize += 0.10f;
else else
{ {
if (CompHediff.bodySizeOverride <= 1.0) CompHediff.bodySizeOverride = 1.0f; if (bodySizeOverride <= 1.0) bodySizeOverride = 1.0f;
CompHediff.bodySizeOverride += 0.05f; bodySizeOverride += 0.05f;
} }
//CompHediff.ForceSize(CompHediff.Size + 0.05f); //CompHediff.ForceSize(CompHediff.Size + 0.05f);
//CompHediff.originalOwnerSize += 0.05f; //CompHediff.originalOwnerSize += 0.05f;
CompHediff.UpdateSeverity(); CompHediff.UpdateSeverity();
if (CompHediff.bodySizeOverride > 3.0f) if (bodySizeOverride > 3.0f)
{ {
// Add Mental Hediff // Add Mental Hediff
HandleGenitaliaSizeThoughts(pawn); HandleGenitaliaSizeThoughts(pawn);
} }
// Increase Fluid // Increase Fluid
if (CompHediff != null) if (CompHediff != null)
CompHediff.partFluidFactor *= 1.025f; CompHediff.partFluidMultiplier *= 1.025f;
} }
} }

View file

@ -29,13 +29,13 @@ namespace RJW_Genes.Interactions
{ {
weight *= 2.5f; weight *= 2.5f;
} }
if (pawn.genes.HasGene(GeneDefOf.rjw_genes_cum_eater)) if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_cum_eater))
{ {
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Mouth); yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Mouth);
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Beak); yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Beak);
} }
if (pawn.genes.HasGene(GeneDefOf.rjw_genes_fertilin_absorber)) if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_fertilin_absorber))
{ {
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Vagina); yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Vagina);
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Anus); yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Anus);
@ -62,7 +62,7 @@ namespace RJW_Genes.Interactions
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Mouth); yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Mouth);
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Beak); yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Beak);
if (pawn.genes.HasGene(GeneDefOf.rjw_genes_fertilin_absorber)) if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_fertilin_absorber))
{ {
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Vagina); yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Vagina);
yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Anus); yield return new Weighted<LewdablePartKind>(weight, LewdablePartKind.Anus);

View file

@ -61,7 +61,7 @@ namespace RJW_Genes
// Increase Fluid // Increase Fluid
if (CompHediff != null) if (CompHediff != null)
CompHediff.partFluidFactor *= cum_multiplier; CompHediff.partFluidMultiplier *= cum_multiplier;
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Some files were not shown because too many files have changed in this diff Show more