Merge branch 'vegapnk:main' into main
33
CHANGELOG.md
|
@ -1,3 +1,36 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
|
# 1.1.4
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
|
||||||
|
- Youth Fountain and Age Drainer **really** "stop" at 18 (#26, #28) and never age pawns
|
||||||
|
- Drastically reduced vomiting time due to an missunderstanding (#29). `0.4` instead of `0.01`
|
||||||
|
|
||||||
|
Sometimes life is like that, and you have to fix the fixes.
|
||||||
|
It was never really broken, life is just very long.
|
||||||
|
|
||||||
|
# 1.1.3
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- Youth Fountain and Age Drainer "stop" at 18 (#26)
|
||||||
|
- Youth Fountain and Age Drainer activate only for pawns at 18 (#26)
|
||||||
|
- Drained Pawns vomit less (from mtb 0.05 to 0.01)(#29)
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
|
||||||
|
- InsectBreeder would mess with normal Pawn-Animal pregancy for egg laying animals (#23)
|
||||||
|
|
||||||
|
# 1.1.2
|
||||||
|
|
||||||
|
Changes:
|
||||||
|
|
||||||
|
- Added more cool images from WasMachenDennSachen (#22)
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
|
||||||
|
- Aphrodisiac Pheromones checks for children and other conditions (#25)
|
||||||
|
|
||||||
# 1.1.1
|
# 1.1.1
|
||||||
|
|
||||||
Changes:
|
Changes:
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
<label>Zoophile</label>
|
<label>Zoophile</label>
|
||||||
<displayCategory>rjw_genes_breeding</displayCategory>
|
<displayCategory>rjw_genes_breeding</displayCategory>
|
||||||
<description>Xenotypes with this Gene are Zoophile.</description>
|
<description>Xenotypes with this Gene are Zoophile.</description>
|
||||||
<iconPath>Genes/Icons/Zoophile_2</iconPath>
|
<iconPath>Genes/Icons/Zoophile</iconPath>
|
||||||
<displayOrderInCategory>54</displayOrderInCategory>
|
<displayOrderInCategory>54</displayOrderInCategory>
|
||||||
<forcedTraits>
|
<forcedTraits>
|
||||||
<li>
|
<li>
|
||||||
|
|
|
@ -74,7 +74,7 @@
|
||||||
<statOffsets>
|
<statOffsets>
|
||||||
<WorkSpeedGlobal>-0.2</WorkSpeedGlobal>
|
<WorkSpeedGlobal>-0.2</WorkSpeedGlobal>
|
||||||
</statOffsets>
|
</statOffsets>
|
||||||
<vomitMtbDays>0.05</vomitMtbDays>
|
<vomitMtbDays>0.4</vomitMtbDays>
|
||||||
<hungerRateFactorOffset>0.1</hungerRateFactorOffset>
|
<hungerRateFactorOffset>0.1</hungerRateFactorOffset>
|
||||||
<restFallFactorOffset>0.35</restFallFactorOffset>
|
<restFallFactorOffset>0.35</restFallFactorOffset>
|
||||||
</li>
|
</li>
|
||||||
|
@ -163,4 +163,4 @@
|
||||||
<isBad>false</isBad>
|
<isBad>false</isBad>
|
||||||
</HediffDef>
|
</HediffDef>
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
||||||
|
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 21 KiB |
|
@ -2,6 +2,17 @@
|
||||||
|
|
||||||
Collection of Known Bugs and reasons for their origin.
|
Collection of Known Bugs and reasons for their origin.
|
||||||
|
|
||||||
|
## I changed Parts of a pawn and my genes do not apply!
|
||||||
|
|
||||||
|
Issue: You had a pawn with "huge genitalia" and add a horse-cock with licentia or surgery. This new genitalia is not huge.
|
||||||
|
|
||||||
|
Reason: The genes are applied when they are added. This is usually character-spawn. The genes change the attributes of the genitalia-hediff, and thus genitalia added after the genes are not affected.
|
||||||
|
|
||||||
|
I think I will not gonna fix this.
|
||||||
|
First of all, I think transplants wouldn't reasonably affected by genes.
|
||||||
|
Second, for implementation I'd need to regularly check if every gene changed all relevant genitalia already, and do the same every x-ticks.
|
||||||
|
This seems like a performance sink, so I will not gonna do it.
|
||||||
|
|
||||||
## Pawn does not refresh empty Fertilin!
|
## Pawn does not refresh empty Fertilin!
|
||||||
|
|
||||||
Issue: A pawn has 0 (or low) Fertilin, and a mood debuff. But they do not do anything about it.
|
Issue: A pawn has 0 (or low) Fertilin, and a mood debuff. But they do not do anything about it.
|
||||||
|
|
15
README.md
|
@ -28,9 +28,14 @@ Please consider looking at [the known bugs](./KNOWN_BUGS.md)
|
||||||
I currently don't use Races after Biotech was introduced.
|
I currently don't use Races after Biotech was introduced.
|
||||||
One of the main motivations was to have genes being added to the xenotypes that other mods and the base game add, e.g. adding demonic penis for impids.
|
One of the main motivations was to have genes being added to the xenotypes that other mods and the base game add, e.g. adding demonic penis for impids.
|
||||||
|
|
||||||
## Load Order / Deps
|
Some HAR races change sex-ages and behave unfriendly with this mod.
|
||||||
|
You can make reports about that, but I might not fix it.
|
||||||
|
|
||||||
1. Please load this after any mod adding genes, and after the used RJW-Mods (Licentia, Sexperience).
|
## Load Order, Dependencies and Conflicts
|
||||||
2. Should not be used with the original RJW_Animal_Gene_Inheritance anymore.
|
|
||||||
3. There was an issue with other "Male-Only / Female-Only" Mods --- for which we provide our own Genes now.
|
Please load this after any mod adding genes, and after the used RJW-Mods (Licentia, Sexperience).
|
||||||
4. CAI5000 will not crash, but will make *Seduce*-Ability fail. I think same goes for Combat Extended.
|
|
||||||
|
**Conflicts:**
|
||||||
|
1. Should not be used with the original RJW_Animal_Gene_Inheritance anymore.
|
||||||
|
2. There was an issue with other "Male-Only / Female-Only" Mods --- for which we provide our own Genes now.
|
||||||
|
3. CAI5000 will not crash, but will make *Seduce*-Ability fail. I think same goes for Combat Extended.
|
|
@ -1,24 +0,0 @@
|
||||||
using HarmonyLib;
|
|
||||||
using rjw;
|
|
||||||
using Verse;
|
|
||||||
|
|
||||||
namespace RJW_Genes
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Kindly provided by 'shabalox' https://github.com/Shabalox/RJW_Genes_Addons/
|
|
||||||
///
|
|
||||||
/// Note on the logic: the result mentioned below is changing the result of fertilization (true or false) to true if the pawn has the insect-breeder gene.
|
|
||||||
/// </summary>
|
|
||||||
[HarmonyPatch(typeof(PawnExtensions), "RaceImplantEggs")]
|
|
||||||
public static class PatchPawnExtensions
|
|
||||||
{
|
|
||||||
[HarmonyPostfix]
|
|
||||||
public static void Postfix(Pawn pawn, ref bool __result)
|
|
||||||
{
|
|
||||||
if (!__result)
|
|
||||||
{
|
|
||||||
__result = GeneUtility.IsInsectBreeder(pawn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -39,9 +39,25 @@ namespace RJW_Genes
|
||||||
{
|
{
|
||||||
foreach (Pawn pawn in map.mapPawns.AllPawns)
|
foreach (Pawn pawn in map.mapPawns.AllPawns)
|
||||||
{
|
{
|
||||||
if (pawn != null && this.pawn != null && pawn != this.pawn
|
// Return for trivial errors
|
||||||
&& pos.DistanceTo(pawn.Position) < APHRODISIAC_DISTANCE && GenSight.LineOfSight(pos, pawn.Position, pawn.Map)
|
if (pawn == null || this.pawn == null || pawn == this.pawn)
|
||||||
&& !GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_aphrodisiac_pheromones))
|
continue;
|
||||||
|
// Check for position-existance
|
||||||
|
if (pawn.Position == null || pos == null || pawn.Map == null)
|
||||||
|
continue;
|
||||||
|
// Do nothing if pawn is carried
|
||||||
|
if (pawn.CarriedBy != null)
|
||||||
|
continue;
|
||||||
|
// Do nothing if Pawn is Baby or Child (#25)
|
||||||
|
if (!pawn.ageTracker.Adult)
|
||||||
|
continue;
|
||||||
|
// Do nothing for pawns that also have pheromones
|
||||||
|
if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_aphrodisiac_pheromones))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Actual Logic:
|
||||||
|
// Pawn qualifies in right distance and needs line of sight.
|
||||||
|
if (pos.DistanceTo(pawn.Position) < APHRODISIAC_DISTANCE && GenSight.LineOfSight(pos, pawn.Position, pawn.Map))
|
||||||
{
|
{
|
||||||
yield return pawn;
|
yield return pawn;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,28 +11,33 @@ namespace RJW_Genes.Genes.Special
|
||||||
[HarmonyPatch(typeof(SexUtility), "Aftersex")]
|
[HarmonyPatch(typeof(SexUtility), "Aftersex")]
|
||||||
public static class Patch_AgeDrain
|
public static class Patch_AgeDrain
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Update Issue #26:
|
||||||
|
* There are options that a 16 yo pawn and a 16 yo pawn have sex,
|
||||||
|
* or there are races that have a different age-limits.
|
||||||
|
* I am not sure how I feel about this, but as some people that I consider "normal" asked me about this I changed it as requested in #26 and #28
|
||||||
|
*/
|
||||||
|
|
||||||
const long AGE_TRANSFERED = 120000; // 120k == 2 days
|
const long AGE_TRANSFERED = 120000; // 120k == 2 days
|
||||||
// 20 Years * 60 Days / Year * 60k Ticks/Day + 1 for safety
|
// 18 Years * 60 Days / Year * 60k Ticks/Day + 1 for safety
|
||||||
const long MINIMUM_AGE = 20 * 60 * 60000 + 1;
|
const long MINIMUM_AGE = 18 * 60 * 60000 + 1;
|
||||||
|
|
||||||
// Comment Below in for debugging, changes years
|
|
||||||
// const long AGE_TRANSFERED = 12000000;
|
|
||||||
public static void Postfix(SexProps props)
|
public static void Postfix(SexProps props)
|
||||||
{
|
{
|
||||||
if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal() )
|
if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal() )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (GeneUtility.IsAgeDrainer(props.pawn))
|
if (GeneUtility.IsAgeDrainer(props.pawn) && props.pawn.ageTracker.AgeBiologicalTicks > MINIMUM_AGE)
|
||||||
{
|
{
|
||||||
var pawnAge = props.pawn.ageTracker.AgeBiologicalTicks;
|
var pawnAge = props.pawn.ageTracker.AgeBiologicalTicks;
|
||||||
//ModLog.Error($"Firing Age Drain \nMinimum Age is \t{MINIMUM_AGE} \nPawn Age is \t{pawnAge} \nTransferred \t{AGE_TRANSFERED}\nResulting in \t{pawnAge - AGE_TRANSFERED}");
|
//ModLog.Error($"Firing Age Drain \nMinimum Age is \t{MINIMUM_AGE} \nPawn Age is \t{pawnAge} \nTransferred \t{AGE_TRANSFERED}\nResulting in \t{pawnAge - AGE_TRANSFERED}");
|
||||||
|
|
||||||
// Make Partner older
|
// Make Partner older
|
||||||
props.partner.ageTracker.AgeBiologicalTicks += AGE_TRANSFERED;
|
props.partner.ageTracker.AgeBiologicalTicks += AGE_TRANSFERED;
|
||||||
// Make Pawn younger
|
// Make Pawn younger if he is older than minimum age
|
||||||
props.pawn.ageTracker.AgeBiologicalTicks = Math.Max(MINIMUM_AGE, (pawnAge - AGE_TRANSFERED));
|
if (pawnAge - AGE_TRANSFERED > MINIMUM_AGE)
|
||||||
|
props.pawn.ageTracker.AgeBiologicalTicks = Math.Max(MINIMUM_AGE, (pawnAge - AGE_TRANSFERED));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,34 +11,33 @@ namespace RJW_Genes.Genes.Special
|
||||||
[HarmonyPatch(typeof(SexUtility), "Aftersex")]
|
[HarmonyPatch(typeof(SexUtility), "Aftersex")]
|
||||||
public static class Patch_Youth_Fountain
|
public static class Patch_Youth_Fountain
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Update Issue #26:
|
||||||
|
* There are options that a 16 yo pawn and a 16 yo pawn have sex,
|
||||||
|
* or there are races that have a different age-limits.
|
||||||
|
* I am not sure how I feel about this, but as some people that I consider "normal" asked me about this I changed it as requested in #26 and #28
|
||||||
|
*/
|
||||||
|
|
||||||
const long AGE_REDUCTION = 60000; // 60k == 1 day
|
const long AGE_REDUCTION = 60000; // 60k == 1 day
|
||||||
// 20 Years * 60 Days / Year * 60k Ticks/Day + 1 for safety
|
// 18 Years * 60 Days / Year * 60k Ticks/Day + 1 for safety
|
||||||
const long MINIMUM_AGE = 20 * 60 * 60000 + 1;
|
const long MINIMUM_AGE = 18 * 60 * 60000 + 1;
|
||||||
|
|
||||||
// Comment Below in for debugging
|
|
||||||
// const long AGE_REDUCTION = 6000000; // 6000k == 100 days
|
|
||||||
public static void Postfix(SexProps props)
|
public static void Postfix(SexProps props)
|
||||||
{
|
{
|
||||||
if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal())
|
if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (GeneUtility.IsYouthFountain(props.pawn))
|
if (GeneUtility.IsYouthFountain(props.pawn) && props.pawn.ageTracker.AgeBiologicalTicks >= MINIMUM_AGE)
|
||||||
{
|
{
|
||||||
var partnerAge = props.partner.ageTracker.AgeBiologicalTicks;
|
var partnerAge = props.partner.ageTracker.AgeBiologicalTicks;
|
||||||
|
|
||||||
//ModLog.Error($"Firing Youth Fountain \nMinimum Age is \t{MINIMUM_AGE}\t{ticksToYears(MINIMUM_AGE)}y\nPawn Age is \t{partnerAge}\t{ticksToYears(partnerAge)}y \nTransferred \t {AGE_REDUCTION}\t{ticksToYears(AGE_REDUCTION)}y\nResulting in \t{partnerAge - AGE_REDUCTION}\t{ticksToYears(partnerAge - AGE_REDUCTION)}y");
|
if(partnerAge - AGE_REDUCTION > MINIMUM_AGE)
|
||||||
|
props.partner.ageTracker.AgeBiologicalTicks = Math.Max(MINIMUM_AGE, partnerAge - AGE_REDUCTION);
|
||||||
props.partner.ageTracker.AgeBiologicalTicks = Math.Max(MINIMUM_AGE, partnerAge - AGE_REDUCTION);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static float ticksToYears(long ticks)
|
|
||||||
{
|
|
||||||
return (ticks / 60000f) / 60f;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,6 @@
|
||||||
<Compile Include="GeneDefOf.cs" />
|
<Compile Include="GeneDefOf.cs" />
|
||||||
<Compile Include="Genes\Breeding\Gene_MechBreeder.cs" />
|
<Compile Include="Genes\Breeding\Gene_MechBreeder.cs" />
|
||||||
<Compile Include="Genes\Breeding\PatchMechBirth.cs" />
|
<Compile Include="Genes\Breeding\PatchMechBirth.cs" />
|
||||||
<Compile Include="Genes\Breeding\PatchPawnExtensions.cs" />
|
|
||||||
<Compile Include="Genes\Breeding\Patch_EggFertilization.cs" />
|
<Compile Include="Genes\Breeding\Patch_EggFertilization.cs" />
|
||||||
<Compile Include="Genes\Breeding\PatchPregnancyHelper.cs" />
|
<Compile Include="Genes\Breeding\PatchPregnancyHelper.cs" />
|
||||||
<Compile Include="Genes\Cum\CumUtility.cs" />
|
<Compile Include="Genes\Cum\CumUtility.cs" />
|
||||||
|
|
35
TODOS.md
|
@ -1,7 +1,6 @@
|
||||||
# ToDos and Planned Genes
|
# ToDos and Planned Genes
|
||||||
|
|
||||||
I have many ideas but not too much time / knowledge of Rimworld or Modding.
|
Any help is very appreciated, even if it is just pointing me to existing similar projects.
|
||||||
So any help is very appreciated, even if it is just pointing me to existing similar projects.
|
|
||||||
|
|
||||||
## Additions to existing things
|
## Additions to existing things
|
||||||
|
|
||||||
|
@ -23,10 +22,31 @@ So any help is very appreciated, even if it is just pointing me to existing simi
|
||||||
|
|
||||||
**Death-Rest** until the pawn is cumflated.
|
**Death-Rest** until the pawn is cumflated.
|
||||||
|
|
||||||
|
**Alpha / Beta Genes** that you can only have one alpha, and the alpha makes mostly beta children (1:10). This might fit with the xenotypes below. As this is an RJW mod, this should also somewhat affect sex (e.g. betas cannot impregnate betas).
|
||||||
|
|
||||||
## Planned Xenotypes
|
## Planned Xenotypes
|
||||||
|
|
||||||
- "Beastmaster": Zoophile with various genes to command animals to rape, mate etc. and increased animal "handling".
|
**Beastmaster:**
|
||||||
- "Hive-Mother": for breeding Insect Armies, maybe it is also possible to "store" small insects in her etc.
|
|
||||||
|
- [] Animal Mating Call (Get fucked by everything nearby, potentially ending animal rage)
|
||||||
|
- [] Pheromone Spit that marks a target for being raped by animals
|
||||||
|
- [] Power-Boost & Bonding to animals through zoophilia
|
||||||
|
- [] Maybe: Boost pregnancy times of Animals
|
||||||
|
- [] Maybe: Make it Animal-Fertilin-Dependend
|
||||||
|
- [] Either: Can only eat meat or cannot eat meat
|
||||||
|
|
||||||
|
Can't help but think about Rexxar Porn now I am a bad person.
|
||||||
|
|
||||||
|
**Hive Mother:**
|
||||||
|
|
||||||
|
- [] Spawn the small scarabs
|
||||||
|
- [] Fertilise Eggs inside her
|
||||||
|
- [] Produce cocoons
|
||||||
|
- [] Maybe: Insert "dropped" Insect eggs
|
||||||
|
- [] Very fragile, no use except breeding
|
||||||
|
- [] Maybe: can only eat insect jelly
|
||||||
|
- [] Should look like a nice green-yellow alien as we all know fuckable insects would look like.
|
||||||
|
- [] There can only be one Hive Mother, some penalties if there are others. This could be implement with an "Alpha Gene" that gives heavy penalties when other Alpha exists.
|
||||||
|
|
||||||
## Genes with Abilities and more Effects
|
## Genes with Abilities and more Effects
|
||||||
|
|
||||||
|
@ -35,4 +55,9 @@ There were some suggestions on the Discord I saved them somewhere else. I am far
|
||||||
- Genitalia deal damage as per size (on normal sex-use)
|
- Genitalia deal damage as per size (on normal sex-use)
|
||||||
- Genitalia can cause Terror (as ability)
|
- Genitalia can cause Terror (as ability)
|
||||||
- Cumshot Sniper Abilities
|
- Cumshot Sniper Abilities
|
||||||
- Healing Pussy
|
|
||||||
|
## Cleanups:
|
||||||
|
|
||||||
|
- Streamline Filenames / Names to either be LifeForce or Fertilin (e.g. `Hediffs_Fertilin.xml` but `Pawnkind_LifeForce.xml`). I think most things are called LifeForce.
|
||||||
|
- Similar cleanup for the patches, and make a note what to find where in the patches
|
||||||
|
- Change Project structure to the 1.3, 1.4 Structure of other mods
|