diff --git a/.gitignore b/.gitignore
index 580f022..971fc41 100644
--- a/.gitignore
+++ b/.gitignore
@@ -255,5 +255,3 @@ paket-files/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
-
-*.dds
diff --git a/Common/Textures/Genes/Icons/Big_Breasts.png b/1.4/Textures/Genes/Icons/Big_Breasts.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Big_Breasts.png
rename to 1.4/Textures/Genes/Icons/Big_Breasts.png
diff --git a/Common/Textures/Genes/Icons/Big_Male_Genitalia.png b/1.4/Textures/Genes/Icons/Big_Male_Genitalia.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Big_Male_Genitalia.png
rename to 1.4/Textures/Genes/Icons/Big_Male_Genitalia.png
diff --git a/Common/Textures/Genes/Icons/Cocoon.png b/1.4/Textures/Genes/Icons/Cocoon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Cocoon.png
rename to 1.4/Textures/Genes/Icons/Cocoon.png
diff --git a/Common/Textures/Genes/Icons/Cum-Base.png b/1.4/Textures/Genes/Icons/Cum-Base.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Cum-Base.png
rename to 1.4/Textures/Genes/Icons/Cum-Base.png
diff --git a/Common/Textures/Genes/Icons/Cumflation.png b/1.4/Textures/Genes/Icons/Cumflation.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Cumflation.png
rename to 1.4/Textures/Genes/Icons/Cumflation.png
diff --git a/1.4/Textures/Genes/Icons/Cumflation_Immunity.png b/1.4/Textures/Genes/Icons/Cumflation_Immunity.png
new file mode 100644
index 0000000..643e0bf
Binary files /dev/null and b/1.4/Textures/Genes/Icons/Cumflation_Immunity.png differ
diff --git a/Common/Textures/Genes/Icons/Drone.png b/1.4/Textures/Genes/Icons/Drone.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Drone.png
rename to 1.4/Textures/Genes/Icons/Drone.png
diff --git a/Common/Textures/Genes/Icons/Egg.png b/1.4/Textures/Genes/Icons/Egg.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Egg.png
rename to 1.4/Textures/Genes/Icons/Egg.png
diff --git a/Common/Textures/Genes/Icons/Elasticity.png b/1.4/Textures/Genes/Icons/Elasticity.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Elasticity.png
rename to 1.4/Textures/Genes/Icons/Elasticity.png
diff --git a/Common/Textures/Genes/Icons/Empty.png b/1.4/Textures/Genes/Icons/Empty.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Empty.png
rename to 1.4/Textures/Genes/Icons/Empty.png
diff --git a/Common/Textures/Genes/Icons/Extra_Anus.png b/1.4/Textures/Genes/Icons/Extra_Anus.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Extra_Anus.png
rename to 1.4/Textures/Genes/Icons/Extra_Anus.png
diff --git a/Common/Textures/Genes/Icons/Extra_Breasts.png b/1.4/Textures/Genes/Icons/Extra_Breasts.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Extra_Breasts.png
rename to 1.4/Textures/Genes/Icons/Extra_Breasts.png
diff --git a/Common/Textures/Genes/Icons/Extra_Vagina.png b/1.4/Textures/Genes/Icons/Extra_Vagina.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Extra_Vagina.png
rename to 1.4/Textures/Genes/Icons/Extra_Vagina.png
diff --git a/Common/Textures/Genes/Icons/Female_Only.png b/1.4/Textures/Genes/Icons/Female_Only.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Female_Only.png
rename to 1.4/Textures/Genes/Icons/Female_Only.png
diff --git a/Common/Textures/Genes/Icons/FertilinAlt.png b/1.4/Textures/Genes/Icons/FertilinAlt.png
similarity index 100%
rename from Common/Textures/Genes/Icons/FertilinAlt.png
rename to 1.4/Textures/Genes/Icons/FertilinAlt.png
diff --git a/Common/Textures/Genes/Icons/FertilinDrainAlt.png b/1.4/Textures/Genes/Icons/FertilinDrainAlt.png
similarity index 100%
rename from Common/Textures/Genes/Icons/FertilinDrainAlt.png
rename to 1.4/Textures/Genes/Icons/FertilinDrainAlt.png
diff --git a/Common/Textures/Genes/Icons/Fervent_Ovipositor.png b/1.4/Textures/Genes/Icons/Fervent_Ovipositor.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Fervent_Ovipositor.png
rename to 1.4/Textures/Genes/Icons/Fervent_Ovipositor.png
diff --git a/Common/Textures/Genes/Icons/Futa.png b/1.4/Textures/Genes/Icons/Futa.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Futa.png
rename to 1.4/Textures/Genes/Icons/Futa.png
diff --git a/Common/Textures/Genes/Icons/Generous_Donor.png b/1.4/Textures/Genes/Icons/Generous_Donor.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Generous_Donor.png
rename to 1.4/Textures/Genes/Icons/Generous_Donor.png
diff --git a/Common/Textures/Genes/Icons/Genitalia_Canine.png b/1.4/Textures/Genes/Icons/Genitalia_Canine.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_Canine.png
rename to 1.4/Textures/Genes/Icons/Genitalia_Canine.png
diff --git a/Common/Textures/Genes/Icons/Genitalia_Demon.png b/1.4/Textures/Genes/Icons/Genitalia_Demon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_Demon.png
rename to 1.4/Textures/Genes/Icons/Genitalia_Demon.png
diff --git a/1.4/Textures/Genes/Icons/Genitalia_Draconic.png b/1.4/Textures/Genes/Icons/Genitalia_Draconic.png
new file mode 100644
index 0000000..cb763d6
Binary files /dev/null and b/1.4/Textures/Genes/Icons/Genitalia_Draconic.png differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_Equine.png b/1.4/Textures/Genes/Icons/Genitalia_Equine.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_Equine.png
rename to 1.4/Textures/Genes/Icons/Genitalia_Equine.png
diff --git a/1.4/Textures/Genes/Icons/Genitalia_Feline.png b/1.4/Textures/Genes/Icons/Genitalia_Feline.png
new file mode 100644
index 0000000..c03cc27
Binary files /dev/null and b/1.4/Textures/Genes/Icons/Genitalia_Feline.png differ
diff --git a/Common/Textures/Genes/Icons/Healpussy.png b/1.4/Textures/Genes/Icons/Healpussy.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Healpussy.png
rename to 1.4/Textures/Genes/Icons/Healpussy.png
diff --git a/Common/Textures/Genes/Icons/Hypersexual.png b/1.4/Textures/Genes/Icons/Hypersexual.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Hypersexual.png
rename to 1.4/Textures/Genes/Icons/Hypersexual.png
diff --git a/Common/Textures/Genes/Icons/Insect_Breeder.png b/1.4/Textures/Genes/Icons/Insect_Breeder.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Insect_Breeder.png
rename to 1.4/Textures/Genes/Icons/Insect_Breeder.png
diff --git a/Common/Textures/Genes/Icons/Loose_Anus.png b/1.4/Textures/Genes/Icons/Loose_Anus.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Loose_Anus.png
rename to 1.4/Textures/Genes/Icons/Loose_Anus.png
diff --git a/Common/Textures/Genes/Icons/Loose_Vagina.png b/1.4/Textures/Genes/Icons/Loose_Vagina.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Loose_Vagina.png
rename to 1.4/Textures/Genes/Icons/Loose_Vagina.png
diff --git a/Common/Textures/Genes/Icons/Loyalty.png b/1.4/Textures/Genes/Icons/Loyalty.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Loyalty.png
rename to 1.4/Textures/Genes/Icons/Loyalty.png
diff --git a/Common/Textures/Genes/Icons/Male_Only.png b/1.4/Textures/Genes/Icons/Male_Only.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Male_Only.png
rename to 1.4/Textures/Genes/Icons/Male_Only.png
diff --git a/Common/Textures/Genes/Icons/Much_Cum.png b/1.4/Textures/Genes/Icons/Much_Cum.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Much_Cum.png
rename to 1.4/Textures/Genes/Icons/Much_Cum.png
diff --git a/Common/Textures/Genes/Icons/Necrophile.png b/1.4/Textures/Genes/Icons/Necrophile.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Necrophile.png
rename to 1.4/Textures/Genes/Icons/Necrophile.png
diff --git a/Common/Textures/Genes/Icons/No_Anus.png b/1.4/Textures/Genes/Icons/No_Anus.png
similarity index 100%
rename from Common/Textures/Genes/Icons/No_Anus.png
rename to 1.4/Textures/Genes/Icons/No_Anus.png
diff --git a/Common/Textures/Genes/Icons/No_Breasts.png b/1.4/Textures/Genes/Icons/No_Breasts.png
similarity index 100%
rename from Common/Textures/Genes/Icons/No_Breasts.png
rename to 1.4/Textures/Genes/Icons/No_Breasts.png
diff --git a/Common/Textures/Genes/Icons/No_Cum.png b/1.4/Textures/Genes/Icons/No_Cum.png
similarity index 100%
rename from Common/Textures/Genes/Icons/No_Cum.png
rename to 1.4/Textures/Genes/Icons/No_Cum.png
diff --git a/Common/Textures/Genes/Icons/No_Male_Genitalia.png b/1.4/Textures/Genes/Icons/No_Male_Genitalia.png
similarity index 100%
rename from Common/Textures/Genes/Icons/No_Male_Genitalia.png
rename to 1.4/Textures/Genes/Icons/No_Male_Genitalia.png
diff --git a/Common/Textures/Genes/Icons/No_Vagina.png b/1.4/Textures/Genes/Icons/No_Vagina.png
similarity index 100%
rename from Common/Textures/Genes/Icons/No_Vagina.png
rename to 1.4/Textures/Genes/Icons/No_Vagina.png
diff --git a/Common/Textures/Genes/Icons/Ovipositor_Genitalia.png b/1.4/Textures/Genes/Icons/Ovipositor_Genitalia.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Ovipositor_Genitalia.png
rename to 1.4/Textures/Genes/Icons/Ovipositor_Genitalia.png
diff --git a/Common/Textures/Genes/Icons/Paralysing_Kiss.png b/1.4/Textures/Genes/Icons/Paralysing_Kiss.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Paralysing_Kiss.png
rename to 1.4/Textures/Genes/Icons/Paralysing_Kiss.png
diff --git a/Common/Textures/Genes/Icons/Pheromone.png b/1.4/Textures/Genes/Icons/Pheromone.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Pheromone.png
rename to 1.4/Textures/Genes/Icons/Pheromone.png
diff --git a/Common/Textures/Genes/Icons/Pheromones.png b/1.4/Textures/Genes/Icons/Pheromones.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Pheromones.png
rename to 1.4/Textures/Genes/Icons/Pheromones.png
diff --git a/Common/Textures/Genes/Icons/Placeholder.png b/1.4/Textures/Genes/Icons/Placeholder.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Placeholder.png
rename to 1.4/Textures/Genes/Icons/Placeholder.png
diff --git a/Common/Textures/Genes/Icons/Queen.png b/1.4/Textures/Genes/Icons/Queen.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Queen.png
rename to 1.4/Textures/Genes/Icons/Queen.png
diff --git a/Common/Textures/Genes/Icons/RJW-Genes_Rodent_Genitalia (Not in use now).png b/1.4/Textures/Genes/Icons/RJW-Genes_Rodent_Genitalia (Not in use now).png
similarity index 100%
rename from Common/Textures/Genes/Icons/RJW-Genes_Rodent_Genitalia (Not in use now).png
rename to 1.4/Textures/Genes/Icons/RJW-Genes_Rodent_Genitalia (Not in use now).png
diff --git a/Common/Textures/Genes/Icons/RJW_Genes_Endogene_Background.png b/1.4/Textures/Genes/Icons/RJW_Genes_Endogene_Background.png
similarity index 100%
rename from Common/Textures/Genes/Icons/RJW_Genes_Endogene_Background.png
rename to 1.4/Textures/Genes/Icons/RJW_Genes_Endogene_Background.png
diff --git a/Common/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.png b/1.4/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.png
similarity index 100%
rename from Common/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.png
rename to 1.4/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.png
diff --git a/Common/Textures/Genes/Icons/Rape.png b/1.4/Textures/Genes/Icons/Rape.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Rape.png
rename to 1.4/Textures/Genes/Icons/Rape.png
diff --git a/Common/Textures/Genes/Icons/Slime_Genitalia.png b/1.4/Textures/Genes/Icons/Slime_Genitalia.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Slime_Genitalia.png
rename to 1.4/Textures/Genes/Icons/Slime_Genitalia.png
diff --git a/Common/Textures/Genes/Icons/Small_Breasts.png b/1.4/Textures/Genes/Icons/Small_Breasts.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Small_Breasts.png
rename to 1.4/Textures/Genes/Icons/Small_Breasts.png
diff --git a/Common/Textures/Genes/Icons/Small_Male_Genitalia.png b/1.4/Textures/Genes/Icons/Small_Male_Genitalia.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Small_Male_Genitalia.png
rename to 1.4/Textures/Genes/Icons/Small_Male_Genitalia.png
diff --git a/Common/Textures/Genes/Icons/Spelopede_Dispenser.png b/1.4/Textures/Genes/Icons/Spelopede_Dispenser.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Spelopede_Dispenser.png
rename to 1.4/Textures/Genes/Icons/Spelopede_Dispenser.png
diff --git a/Common/Textures/Genes/Icons/Succubus_Tail.png b/1.4/Textures/Genes/Icons/Succubus_Tail.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Succubus_Tail.png
rename to 1.4/Textures/Genes/Icons/Succubus_Tail.png
diff --git a/Common/Textures/Genes/Icons/Succubus_Wings.png b/1.4/Textures/Genes/Icons/Succubus_Wings.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Succubus_Wings.png
rename to 1.4/Textures/Genes/Icons/Succubus_Wings.png
diff --git a/Common/Textures/Genes/Icons/Tight_Anus.png b/1.4/Textures/Genes/Icons/Tight_Anus.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Tight_Anus.png
rename to 1.4/Textures/Genes/Icons/Tight_Anus.png
diff --git a/Common/Textures/Genes/Icons/Tight_Vagina.png b/1.4/Textures/Genes/Icons/Tight_Vagina.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Tight_Vagina.png
rename to 1.4/Textures/Genes/Icons/Tight_Vagina.png
diff --git a/Common/Textures/Genes/Icons/Vaginal_cum_absorption.png b/1.4/Textures/Genes/Icons/Vaginal_cum_absorption.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Vaginal_cum_absorption.png
rename to 1.4/Textures/Genes/Icons/Vaginal_cum_absorption.png
diff --git a/Common/Textures/Genes/Icons/Very_Much_Cum.png b/1.4/Textures/Genes/Icons/Very_Much_Cum.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Very_Much_Cum.png
rename to 1.4/Textures/Genes/Icons/Very_Much_Cum.png
diff --git a/Common/Textures/Genes/Icons/Vitality_Drainer.png b/1.4/Textures/Genes/Icons/Vitality_Drainer.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Vitality_Drainer.png
rename to 1.4/Textures/Genes/Icons/Vitality_Drainer.png
diff --git a/Common/Textures/Genes/Icons/Worker.png b/1.4/Textures/Genes/Icons/Worker.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Worker.png
rename to 1.4/Textures/Genes/Icons/Worker.png
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.png b/1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.png
rename to 1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.png
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.png b/1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.png
rename to 1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.png
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.png b/1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.png
rename to 1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.png
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.png b/1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.png
rename to 1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.png
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.png b/1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.png
rename to 1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.png
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.png b/1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.png
rename to 1.4/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.png
diff --git a/Common/Textures/Genes/Icons/Zoophile.png b/1.4/Textures/Genes/Icons/Zoophile.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Zoophile.png
rename to 1.4/Textures/Genes/Icons/Zoophile.png
diff --git a/Common/Textures/Genes/Icons/cockeater.png b/1.4/Textures/Genes/Icons/cockeater.png
similarity index 100%
rename from Common/Textures/Genes/Icons/cockeater.png
rename to 1.4/Textures/Genes/Icons/cockeater.png
diff --git a/Common/Textures/Genes/Icons/cumeater.png b/1.4/Textures/Genes/Icons/cumeater.png
similarity index 100%
rename from Common/Textures/Genes/Icons/cumeater.png
rename to 1.4/Textures/Genes/Icons/cumeater.png
diff --git a/Common/Textures/Genes/Icons/extra_male.png b/1.4/Textures/Genes/Icons/extra_male.png
similarity index 100%
rename from Common/Textures/Genes/Icons/extra_male.png
rename to 1.4/Textures/Genes/Icons/extra_male.png
diff --git a/Common/Textures/Genes/Icons/rjw_genes_lips.png b/1.4/Textures/Genes/Icons/rjw_genes_lips.png
similarity index 100%
rename from Common/Textures/Genes/Icons/rjw_genes_lips.png
rename to 1.4/Textures/Genes/Icons/rjw_genes_lips.png
diff --git a/Common/Textures/Genes/Icons/rjw_naked_prowess.png b/1.4/Textures/Genes/Icons/rjw_naked_prowess.png
similarity index 100%
rename from Common/Textures/Genes/Icons/rjw_naked_prowess.png
rename to 1.4/Textures/Genes/Icons/rjw_naked_prowess.png
diff --git a/Common/Textures/Genes/Icons/seduce.png b/1.4/Textures/Genes/Icons/seduce.png
similarity index 100%
rename from Common/Textures/Genes/Icons/seduce.png
rename to 1.4/Textures/Genes/Icons/seduce.png
diff --git a/Common/Textures/Genes/Icons/vagina_base.png b/1.4/Textures/Genes/Icons/vagina_base.png
similarity index 100%
rename from Common/Textures/Genes/Icons/vagina_base.png
rename to 1.4/Textures/Genes/Icons/vagina_base.png
diff --git a/Common/Textures/Things/Mote/Cocoon/WeaveA.psd b/1.4/Textures/Things/Mote/Cocoon/WeaveA.psd
similarity index 100%
rename from Common/Textures/Things/Mote/Cocoon/WeaveA.psd
rename to 1.4/Textures/Things/Mote/Cocoon/WeaveA.psd
diff --git a/Common/Textures/Things/Mote/Cocoon/WeaveB.psd b/1.4/Textures/Things/Mote/Cocoon/WeaveB.psd
similarity index 100%
rename from Common/Textures/Things/Mote/Cocoon/WeaveB.psd
rename to 1.4/Textures/Things/Mote/Cocoon/WeaveB.psd
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_east.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_east.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_east.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_east.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_north.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_north.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_north.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_north.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_south.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_south.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_south.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail/RJW_Genes_Succubus_Tail_south.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_east.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_east.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_east.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_east.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_north.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_north.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_north.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_north.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_south.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_south.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_south.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings/RJW_Genes_Succubus_Wings_south.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_east.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_east.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_east.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_east.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_north.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_north.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_north.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_north.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_south.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_south.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_south.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L1_south.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_east.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_east.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_east.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_east.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_north.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_north.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_north.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_north.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_south.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_south.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_south.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_L2_south.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_east.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_east.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_east.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_east.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_north.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_north.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_north.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_north.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_south.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_south.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_south.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R1_south.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_east.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_east.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_east.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_east.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_north.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_north.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_north.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_north.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_south.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_south.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_south.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Tail_R2_south.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_east.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_east.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_east.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_east.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_north.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_north.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_north.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_north.png
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_south.png b/1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_south.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_south.png
rename to 1.4/Textures/Things/Pawn/Humanlike/BodyAttachments/deprecated_rjw_genes_succubus/Succubus_Wings_south.png
diff --git a/1.5/Assemblies/Rjw-Genes.dll b/1.5/Assemblies/Rjw-Genes.dll
index 93235ae..12224e1 100644
Binary files a/1.5/Assemblies/Rjw-Genes.dll and b/1.5/Assemblies/Rjw-Genes.dll differ
diff --git a/1.5/Mods/RaceSupport/Defs/GeneDefs/GeneDefs_GenitaliaTypesRace.xml b/1.5/Mods/RaceSupport/Defs/GeneDefs/GeneDefs_GenitaliaTypesRace.xml
deleted file mode 100644
index 17e5d3d..0000000
--- a/1.5/Mods/RaceSupport/Defs/GeneDefs/GeneDefs_GenitaliaTypesRace.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- rjw_genes_Pig_genitalia
- Pig genitalia
- Carriers of this gene develop pig genitalia.
- Genes/Icons/Genitalia_screw_icon
-
-
- PigPenis
- PigVagina
-
-
- 807
-
-
-
- rjw_genes_Orc_genitalia
- Orc genitalia
- Carriers of this gene develop orc genitalia.
- Genes/Icons/Genitalia_orc_icon
-
-
- OrcPenis
- OrcVagina
-
-
- 807
-
-
-
diff --git a/1.5/Source/Genes/Breeding/Patches/PatchMechBirth.cs b/1.5/Source/Genes/Breeding/Patches/PatchMechBirth.cs
index 4067245..c92e0a9 100644
--- a/1.5/Source/Genes/Breeding/Patches/PatchMechBirth.cs
+++ b/1.5/Source/Genes/Breeding/Patches/PatchMechBirth.cs
@@ -1,14 +1,17 @@
+using System;
using System.Collections.Generic;
using System.Reflection;
using System.Reflection.Emit;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
using HarmonyLib;
using rjw;
-using Verse;
namespace RJW_Genes
-{
+{
///
/// 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/
@@ -19,36 +22,43 @@ namespace RJW_Genes
[HarmonyTranspiler]
public static IEnumerable Transpiler(IEnumerable instructions, ILGenerator il)
{
- bool found_call = false;
- bool finished = false;
- Label skip_label = il.DefineLabel();
- MethodInfo removeHediff = AccessTools.Method(typeof(Pawn_HealthTracker), nameof(Pawn_HealthTracker.RemoveHediff));
- MethodInfo ismechbreeder = AccessTools.Method(typeof(GeneUtility), "IsMechbreeder");
- foreach (CodeInstruction codeInstruction in instructions)
- {
- yield return codeInstruction;
-
- if (finished)
- {
- continue;
- }
-
- 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 new CodeInstruction(OpCodes.Ldloc_0);
- yield return new CodeInstruction(OpCodes.Call, ismechbreeder);
- yield return new CodeInstruction(OpCodes.Brfalse_S, skip_label);
- yield return new CodeInstruction(OpCodes.Ret);
- found_call = true;
- }
- else if (found_call)
- {
- // next instruction after the insert
- codeInstruction.labels.Add(skip_label);
- finished = true;
- }
- }
+ bool found_call = false;
+ bool found_skip = false;
+ Label skip_label = il.DefineLabel();
+ 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)
+ {
+ codeInstruction.labels.Add(skip_label);
+ }
+ found_skip = false;
+ if (codeInstruction.opcode == OpCodes.Endfinally)
+ {
+ found_skip = true;
+ }
+
+ yield return codeInstruction;
+
+ if (codeInstruction.opcode == OpCodes.Call)
+ {
+ if (codeInstruction.operand.ToString() == "Boolean TryMakeFilth(Verse.IntVec3, Verse.Map, Verse.ThingDef, System.String, Int32, RimWorld.FilthSourceFlags)")
+ {
+ found_call = true;
+ }
+ }
+ //Triggers after the pop opcode (after generating filth in c#).
+ else if (found_call)
+ {
+ //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;
}
- }
+ }
}
\ No newline at end of file
diff --git a/1.5/Source/Genes/Fluid/FluidUtility.cs b/1.5/Source/Genes/Fluid/FluidUtility.cs
index 226845f..cec0d80 100644
--- a/1.5/Source/Genes/Fluid/FluidUtility.cs
+++ b/1.5/Source/Genes/Fluid/FluidUtility.cs
@@ -16,7 +16,7 @@ namespace RJW_Genes
{
// Right now: Ignore Breasts, only do
if (part is ISexPartHediff sexPart && (Genital_Helper.is_penis(part) || Genital_Helper.is_vagina(part)))
- sexPart.GetPartComp().partFluidMultiplier *= multiplier;
+ sexPart.GetPartComp().partFluidFactor *= multiplier;
}
}
diff --git a/1.5/Source/Genes/GenitaliaSize/Genes/Gene_EvergrowingGenitalia.cs b/1.5/Source/Genes/GenitaliaSize/Genes/Gene_EvergrowingGenitalia.cs
index 02d5ffb..2fb7ed1 100644
--- a/1.5/Source/Genes/GenitaliaSize/Genes/Gene_EvergrowingGenitalia.cs
+++ b/1.5/Source/Genes/GenitaliaSize/Genes/Gene_EvergrowingGenitalia.cs
@@ -2,11 +2,13 @@
using RimWorld;
using rjw;
using System.Collections.Generic;
+using System;
namespace RJW_Genes
{
public class Gene_EvergrowingGenitalia : RJW_Gene
{
+
const int BASE_TICKS = 60000;
public override void Tick()
@@ -25,21 +27,20 @@ namespace RJW_Genes
private void GrowPenisses()
{
- List AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x));
- float bodySizeOverride = -1f; //this is just hackjob to temporary fix an issue. It need to be remade
- foreach (Hediff penis in AllPenisses)
+ List AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x));
+ foreach(Hediff penis in AllPenisses)
{
HediffComp_SexPart CompHediff = penis.TryGetComp();
if (CompHediff.baseSize <= 1.00f)
CompHediff.baseSize += 0.10f;
else
{
- if (bodySizeOverride <= 1.0) bodySizeOverride = 1.0f;
- bodySizeOverride += 0.05f;
+ if (CompHediff.bodySizeOverride <= 1.0) CompHediff.bodySizeOverride = 1.0f;
+ CompHediff.bodySizeOverride += 0.05f;
}
CompHediff.UpdateSeverity();
- if (bodySizeOverride > 3.0f)
+ if (CompHediff.bodySizeOverride > 3.0f)
{
// Add Mental Hediff
HandleGenitaliaSizeThoughts(pawn);
@@ -47,14 +48,13 @@ namespace RJW_Genes
// Increase Fluid
if (CompHediff != null)
- CompHediff.partFluidMultiplier *= 1.05f;
+ CompHediff.partFluidFactor *= 1.05f;
}
}
private void GrowVaginas()
{
- List 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
+ List AllVaginas = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_vagina(x));
foreach (Hediff vagina in AllVaginas)
{
HediffComp_SexPart CompHediff = vagina.TryGetComp();
@@ -62,21 +62,21 @@ namespace RJW_Genes
CompHediff.baseSize += 0.10f;
else
{
- if (bodySizeOverride <= 1.0) bodySizeOverride = 1.0f;
- bodySizeOverride += 0.05f;
+ if (CompHediff.bodySizeOverride <= 1.0) CompHediff.bodySizeOverride = 1.0f;
+ CompHediff.bodySizeOverride += 0.05f;
}
//CompHediff.ForceSize(CompHediff.Size + 0.05f);
//CompHediff.originalOwnerSize += 0.05f;
CompHediff.UpdateSeverity();
- if (bodySizeOverride > 3.0f)
+ if (CompHediff.bodySizeOverride > 3.0f)
{
// Add Mental Hediff
HandleGenitaliaSizeThoughts(pawn);
}
// Increase Fluid
if (CompHediff != null)
- CompHediff.partFluidMultiplier *= 1.025f;
+ CompHediff.partFluidFactor *= 1.025f;
}
}
diff --git a/1.5/Source/Genes/Life_Force/Interactions/SuccubusTailjob/GenesPartKindUsageRule.cs b/1.5/Source/Genes/Life_Force/Interactions/SuccubusTailjob/GenesPartKindUsageRule.cs
index 0469800..371f06d 100644
--- a/1.5/Source/Genes/Life_Force/Interactions/SuccubusTailjob/GenesPartKindUsageRule.cs
+++ b/1.5/Source/Genes/Life_Force/Interactions/SuccubusTailjob/GenesPartKindUsageRule.cs
@@ -29,13 +29,13 @@ namespace RJW_Genes.Interactions
{
weight *= 2.5f;
}
- if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_cum_eater))
+ if (pawn.genes.HasGene(GeneDefOf.rjw_genes_cum_eater))
{
yield return new Weighted(weight, LewdablePartKind.Mouth);
yield return new Weighted(weight, LewdablePartKind.Beak);
}
- if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_fertilin_absorber))
+ if (pawn.genes.HasGene(GeneDefOf.rjw_genes_fertilin_absorber))
{
yield return new Weighted(weight, LewdablePartKind.Vagina);
yield return new Weighted(weight, LewdablePartKind.Anus);
@@ -62,7 +62,7 @@ namespace RJW_Genes.Interactions
yield return new Weighted(weight, LewdablePartKind.Mouth);
yield return new Weighted(weight, LewdablePartKind.Beak);
- if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_fertilin_absorber))
+ if (pawn.genes.HasGene(GeneDefOf.rjw_genes_fertilin_absorber))
{
yield return new Weighted(weight, LewdablePartKind.Vagina);
yield return new Weighted(weight, LewdablePartKind.Anus);
diff --git a/1.5/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs b/1.5/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs
index 48a035f..4b59a30 100644
--- a/1.5/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs
+++ b/1.5/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs
@@ -61,7 +61,7 @@ namespace RJW_Genes
// Increase Fluid
if (CompHediff != null)
- CompHediff.partFluidMultiplier *= cum_multiplier;
+ CompHediff.partFluidFactor *= cum_multiplier;
}
}
diff --git a/Common/Textures/Genes/Icons/Animal_Mating_Call.png b/1.5/Textures/Genes/Icons/Animal_Mating_Call.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Animal_Mating_Call.png
rename to 1.5/Textures/Genes/Icons/Animal_Mating_Call.png
diff --git a/1.5/Textures/Genes/Icons/Big_Breasts.dds b/1.5/Textures/Genes/Icons/Big_Breasts.dds
new file mode 100644
index 0000000..8f1c0f1
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Big_Breasts.dds differ
diff --git a/1.5/Textures/Genes/Icons/Big_Breasts.png b/1.5/Textures/Genes/Icons/Big_Breasts.png
new file mode 100644
index 0000000..a9d1786
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Big_Breasts.png differ
diff --git a/1.5/Textures/Genes/Icons/Big_Male_Genitalia.dds b/1.5/Textures/Genes/Icons/Big_Male_Genitalia.dds
new file mode 100644
index 0000000..30b1cbc
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Big_Male_Genitalia.dds differ
diff --git a/1.5/Textures/Genes/Icons/Big_Male_Genitalia.png b/1.5/Textures/Genes/Icons/Big_Male_Genitalia.png
new file mode 100644
index 0000000..68396ba
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Big_Male_Genitalia.png differ
diff --git a/1.5/Textures/Genes/Icons/Cocoon.dds b/1.5/Textures/Genes/Icons/Cocoon.dds
new file mode 100644
index 0000000..23d11dc
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Cocoon.dds differ
diff --git a/1.5/Textures/Genes/Icons/Cocoon.png b/1.5/Textures/Genes/Icons/Cocoon.png
new file mode 100644
index 0000000..4e62420
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Cocoon.png differ
diff --git a/1.5/Textures/Genes/Icons/Cum-Base.dds b/1.5/Textures/Genes/Icons/Cum-Base.dds
new file mode 100644
index 0000000..bf47dab
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Cum-Base.dds differ
diff --git a/1.5/Textures/Genes/Icons/Cum-Base.png b/1.5/Textures/Genes/Icons/Cum-Base.png
new file mode 100644
index 0000000..05ec22a
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Cum-Base.png differ
diff --git a/1.5/Textures/Genes/Icons/Cumflation.dds b/1.5/Textures/Genes/Icons/Cumflation.dds
new file mode 100644
index 0000000..01c2ff3
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Cumflation.dds differ
diff --git a/1.5/Textures/Genes/Icons/Cumflation.png b/1.5/Textures/Genes/Icons/Cumflation.png
new file mode 100644
index 0000000..4d8d470
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Cumflation.png differ
diff --git a/1.5/Textures/Genes/Icons/Cumflation_Immunity.dds b/1.5/Textures/Genes/Icons/Cumflation_Immunity.dds
new file mode 100644
index 0000000..c587855
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Cumflation_Immunity.dds differ
diff --git a/Common/Textures/Genes/Icons/Cumflation_Immunity.png b/1.5/Textures/Genes/Icons/Cumflation_Immunity.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Cumflation_Immunity.png
rename to 1.5/Textures/Genes/Icons/Cumflation_Immunity.png
diff --git a/1.5/Textures/Genes/Icons/Drone.dds b/1.5/Textures/Genes/Icons/Drone.dds
new file mode 100644
index 0000000..ee130a6
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Drone.dds differ
diff --git a/1.5/Textures/Genes/Icons/Drone.png b/1.5/Textures/Genes/Icons/Drone.png
new file mode 100644
index 0000000..a631565
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Drone.png differ
diff --git a/1.5/Textures/Genes/Icons/Egg.dds b/1.5/Textures/Genes/Icons/Egg.dds
new file mode 100644
index 0000000..0b2b723
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Egg.dds differ
diff --git a/1.5/Textures/Genes/Icons/Egg.png b/1.5/Textures/Genes/Icons/Egg.png
new file mode 100644
index 0000000..81b16bd
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Egg.png differ
diff --git a/1.5/Textures/Genes/Icons/Elasticity.dds b/1.5/Textures/Genes/Icons/Elasticity.dds
new file mode 100644
index 0000000..e0f35a1
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Elasticity.dds differ
diff --git a/1.5/Textures/Genes/Icons/Elasticity.png b/1.5/Textures/Genes/Icons/Elasticity.png
new file mode 100644
index 0000000..91a8fd7
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Elasticity.png differ
diff --git a/1.5/Textures/Genes/Icons/Empty.dds b/1.5/Textures/Genes/Icons/Empty.dds
new file mode 100644
index 0000000..7f12134
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Empty.dds differ
diff --git a/1.5/Textures/Genes/Icons/Empty.png b/1.5/Textures/Genes/Icons/Empty.png
new file mode 100644
index 0000000..1f295f8
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Empty.png differ
diff --git a/1.5/Textures/Genes/Icons/Extra_Anus.dds b/1.5/Textures/Genes/Icons/Extra_Anus.dds
new file mode 100644
index 0000000..c5cb1ac
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Extra_Anus.dds differ
diff --git a/1.5/Textures/Genes/Icons/Extra_Anus.png b/1.5/Textures/Genes/Icons/Extra_Anus.png
new file mode 100644
index 0000000..6097374
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Extra_Anus.png differ
diff --git a/1.5/Textures/Genes/Icons/Extra_Breasts.dds b/1.5/Textures/Genes/Icons/Extra_Breasts.dds
new file mode 100644
index 0000000..dc51d0f
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Extra_Breasts.dds differ
diff --git a/1.5/Textures/Genes/Icons/Extra_Breasts.png b/1.5/Textures/Genes/Icons/Extra_Breasts.png
new file mode 100644
index 0000000..3247920
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Extra_Breasts.png differ
diff --git a/1.5/Textures/Genes/Icons/Extra_Vagina.dds b/1.5/Textures/Genes/Icons/Extra_Vagina.dds
new file mode 100644
index 0000000..846c8f5
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Extra_Vagina.dds differ
diff --git a/1.5/Textures/Genes/Icons/Extra_Vagina.png b/1.5/Textures/Genes/Icons/Extra_Vagina.png
new file mode 100644
index 0000000..12bb91a
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Extra_Vagina.png differ
diff --git a/1.5/Textures/Genes/Icons/Female_Only.dds b/1.5/Textures/Genes/Icons/Female_Only.dds
new file mode 100644
index 0000000..c1d1fd1
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Female_Only.dds differ
diff --git a/1.5/Textures/Genes/Icons/Female_Only.png b/1.5/Textures/Genes/Icons/Female_Only.png
new file mode 100644
index 0000000..7b97f02
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Female_Only.png differ
diff --git a/1.5/Textures/Genes/Icons/Fertile_anus.dds b/1.5/Textures/Genes/Icons/Fertile_anus.dds
new file mode 100644
index 0000000..bd3dccc
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Fertile_anus.dds differ
diff --git a/Common/Textures/Genes/Icons/Fertile_anus.png b/1.5/Textures/Genes/Icons/Fertile_anus.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Fertile_anus.png
rename to 1.5/Textures/Genes/Icons/Fertile_anus.png
diff --git a/1.5/Textures/Genes/Icons/FertilinAlt.dds b/1.5/Textures/Genes/Icons/FertilinAlt.dds
new file mode 100644
index 0000000..acb64e0
Binary files /dev/null and b/1.5/Textures/Genes/Icons/FertilinAlt.dds differ
diff --git a/1.5/Textures/Genes/Icons/FertilinAlt.png b/1.5/Textures/Genes/Icons/FertilinAlt.png
new file mode 100644
index 0000000..f89bc2d
Binary files /dev/null and b/1.5/Textures/Genes/Icons/FertilinAlt.png differ
diff --git a/1.5/Textures/Genes/Icons/FertilinDrainAlt.dds b/1.5/Textures/Genes/Icons/FertilinDrainAlt.dds
new file mode 100644
index 0000000..b078bb5
Binary files /dev/null and b/1.5/Textures/Genes/Icons/FertilinDrainAlt.dds differ
diff --git a/1.5/Textures/Genes/Icons/FertilinDrainAlt.png b/1.5/Textures/Genes/Icons/FertilinDrainAlt.png
new file mode 100644
index 0000000..adb198b
Binary files /dev/null and b/1.5/Textures/Genes/Icons/FertilinDrainAlt.png differ
diff --git a/1.5/Textures/Genes/Icons/Fervent_Ovipositor.dds b/1.5/Textures/Genes/Icons/Fervent_Ovipositor.dds
new file mode 100644
index 0000000..784801e
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Fervent_Ovipositor.dds differ
diff --git a/1.5/Textures/Genes/Icons/Fervent_Ovipositor.png b/1.5/Textures/Genes/Icons/Fervent_Ovipositor.png
new file mode 100644
index 0000000..b9cc33e
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Fervent_Ovipositor.png differ
diff --git a/Common/Textures/Genes/Icons/FireLeaves.png b/1.5/Textures/Genes/Icons/FireLeaves.png
similarity index 100%
rename from Common/Textures/Genes/Icons/FireLeaves.png
rename to 1.5/Textures/Genes/Icons/FireLeaves.png
diff --git a/Common/Textures/Genes/Icons/FleshPurity.png b/1.5/Textures/Genes/Icons/FleshPurity.png
similarity index 100%
rename from Common/Textures/Genes/Icons/FleshPurity.png
rename to 1.5/Textures/Genes/Icons/FleshPurity.png
diff --git a/1.5/Textures/Genes/Icons/Futa.dds b/1.5/Textures/Genes/Icons/Futa.dds
new file mode 100644
index 0000000..dfd7fcb
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Futa.dds differ
diff --git a/1.5/Textures/Genes/Icons/Futa.png b/1.5/Textures/Genes/Icons/Futa.png
new file mode 100644
index 0000000..dfadd1c
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Futa.png differ
diff --git a/1.5/Textures/Genes/Icons/Gene_LitteredBirths.dds b/1.5/Textures/Genes/Icons/Gene_LitteredBirths.dds
new file mode 100644
index 0000000..ebf7069
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Gene_LitteredBirths.dds differ
diff --git a/Common/Textures/Genes/Icons/Gene_LitteredBirths.png b/1.5/Textures/Genes/Icons/Gene_LitteredBirths.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Gene_LitteredBirths.png
rename to 1.5/Textures/Genes/Icons/Gene_LitteredBirths.png
diff --git a/1.5/Textures/Genes/Icons/Generous_Donor.dds b/1.5/Textures/Genes/Icons/Generous_Donor.dds
new file mode 100644
index 0000000..b6a8cde
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Generous_Donor.dds differ
diff --git a/1.5/Textures/Genes/Icons/Generous_Donor.png b/1.5/Textures/Genes/Icons/Generous_Donor.png
new file mode 100644
index 0000000..e49daf1
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Generous_Donor.png differ
diff --git a/1.5/Textures/Genes/Icons/Genitalia_Canine.dds b/1.5/Textures/Genes/Icons/Genitalia_Canine.dds
new file mode 100644
index 0000000..deef5dd
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_Canine.dds differ
diff --git a/1.5/Textures/Genes/Icons/Genitalia_Canine.png b/1.5/Textures/Genes/Icons/Genitalia_Canine.png
new file mode 100644
index 0000000..24283b6
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_Canine.png differ
diff --git a/1.5/Textures/Genes/Icons/Genitalia_Demon.dds b/1.5/Textures/Genes/Icons/Genitalia_Demon.dds
new file mode 100644
index 0000000..1745c32
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_Demon.dds differ
diff --git a/1.5/Textures/Genes/Icons/Genitalia_Demon.png b/1.5/Textures/Genes/Icons/Genitalia_Demon.png
new file mode 100644
index 0000000..e3400e8
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_Demon.png differ
diff --git a/1.5/Textures/Genes/Icons/Genitalia_Draconic.dds b/1.5/Textures/Genes/Icons/Genitalia_Draconic.dds
new file mode 100644
index 0000000..abefb5e
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_Draconic.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_Draconic.png b/1.5/Textures/Genes/Icons/Genitalia_Draconic.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_Draconic.png
rename to 1.5/Textures/Genes/Icons/Genitalia_Draconic.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_Equine.dds b/1.5/Textures/Genes/Icons/Genitalia_Equine.dds
new file mode 100644
index 0000000..a41f863
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_Equine.dds differ
diff --git a/1.5/Textures/Genes/Icons/Genitalia_Equine.png b/1.5/Textures/Genes/Icons/Genitalia_Equine.png
new file mode 100644
index 0000000..9577293
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_Equine.png differ
diff --git a/1.5/Textures/Genes/Icons/Genitalia_Feline.dds b/1.5/Textures/Genes/Icons/Genitalia_Feline.dds
new file mode 100644
index 0000000..b2bf6e8
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_Feline.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_Feline.png b/1.5/Textures/Genes/Icons/Genitalia_Feline.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_Feline.png
rename to 1.5/Textures/Genes/Icons/Genitalia_Feline.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_alien_icon.dds b/1.5/Textures/Genes/Icons/Genitalia_alien_icon.dds
new file mode 100644
index 0000000..c04c5a0
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_alien_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_alien_icon.png b/1.5/Textures/Genes/Icons/Genitalia_alien_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_alien_icon.png
rename to 1.5/Textures/Genes/Icons/Genitalia_alien_icon.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_croc_icon.dds b/1.5/Textures/Genes/Icons/Genitalia_croc_icon.dds
new file mode 100644
index 0000000..feb17c9
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_croc_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_croc_icon.png b/1.5/Textures/Genes/Icons/Genitalia_croc_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_croc_icon.png
rename to 1.5/Textures/Genes/Icons/Genitalia_croc_icon.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_ghost_icon.dds b/1.5/Textures/Genes/Icons/Genitalia_ghost_icon.dds
new file mode 100644
index 0000000..2f95e85
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_ghost_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_ghost_icon.png b/1.5/Textures/Genes/Icons/Genitalia_ghost_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_ghost_icon.png
rename to 1.5/Textures/Genes/Icons/Genitalia_ghost_icon.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_hemi_icon.dds b/1.5/Textures/Genes/Icons/Genitalia_hemi_icon.dds
new file mode 100644
index 0000000..3ac1a44
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_hemi_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_hemi_icon.png b/1.5/Textures/Genes/Icons/Genitalia_hemi_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_hemi_icon.png
rename to 1.5/Textures/Genes/Icons/Genitalia_hemi_icon.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_human.dds b/1.5/Textures/Genes/Icons/Genitalia_human.dds
new file mode 100644
index 0000000..f0a502c
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_human.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_human.png b/1.5/Textures/Genes/Icons/Genitalia_human.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_human.png
rename to 1.5/Textures/Genes/Icons/Genitalia_human.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_marine_icon.dds b/1.5/Textures/Genes/Icons/Genitalia_marine_icon.dds
new file mode 100644
index 0000000..a0ecbba
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_marine_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_marine_icon.png b/1.5/Textures/Genes/Icons/Genitalia_marine_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_marine_icon.png
rename to 1.5/Textures/Genes/Icons/Genitalia_marine_icon.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_necro_icon.dds b/1.5/Textures/Genes/Icons/Genitalia_necro_icon.dds
new file mode 100644
index 0000000..f9709d8
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_necro_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_necro_icon.png b/1.5/Textures/Genes/Icons/Genitalia_necro_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_necro_icon.png
rename to 1.5/Textures/Genes/Icons/Genitalia_necro_icon.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_orc_icon.dds b/1.5/Textures/Genes/Icons/Genitalia_orc_icon.dds
new file mode 100644
index 0000000..4c6f3ab
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_orc_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_orc_icon.png b/1.5/Textures/Genes/Icons/Genitalia_orc_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_orc_icon.png
rename to 1.5/Textures/Genes/Icons/Genitalia_orc_icon.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_racoon_icon.dds b/1.5/Textures/Genes/Icons/Genitalia_racoon_icon.dds
new file mode 100644
index 0000000..2ea8f28
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_racoon_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_racoon_icon.png b/1.5/Textures/Genes/Icons/Genitalia_racoon_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_racoon_icon.png
rename to 1.5/Textures/Genes/Icons/Genitalia_racoon_icon.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_screw_icon.dds b/1.5/Textures/Genes/Icons/Genitalia_screw_icon.dds
new file mode 100644
index 0000000..d9c0e92
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_screw_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_screw_icon.png b/1.5/Textures/Genes/Icons/Genitalia_screw_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_screw_icon.png
rename to 1.5/Textures/Genes/Icons/Genitalia_screw_icon.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_tentacle_icon.dds b/1.5/Textures/Genes/Icons/Genitalia_tentacle_icon.dds
new file mode 100644
index 0000000..1840c61
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_tentacle_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_tentacle_icon.png b/1.5/Textures/Genes/Icons/Genitalia_tentacle_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_tentacle_icon.png
rename to 1.5/Textures/Genes/Icons/Genitalia_tentacle_icon.png
diff --git a/1.5/Textures/Genes/Icons/Genitalia_thin_icon.dds b/1.5/Textures/Genes/Icons/Genitalia_thin_icon.dds
new file mode 100644
index 0000000..a45f899
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Genitalia_thin_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_thin_icon.png b/1.5/Textures/Genes/Icons/Genitalia_thin_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Genitalia_thin_icon.png
rename to 1.5/Textures/Genes/Icons/Genitalia_thin_icon.png
diff --git a/1.5/Textures/Genes/Icons/Healpussy.dds b/1.5/Textures/Genes/Icons/Healpussy.dds
new file mode 100644
index 0000000..aa1ec00
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Healpussy.dds differ
diff --git a/1.5/Textures/Genes/Icons/Healpussy.png b/1.5/Textures/Genes/Icons/Healpussy.png
new file mode 100644
index 0000000..46a11a3
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Healpussy.png differ
diff --git a/1.5/Textures/Genes/Icons/Hypersexual.dds b/1.5/Textures/Genes/Icons/Hypersexual.dds
new file mode 100644
index 0000000..b36397a
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Hypersexual.dds differ
diff --git a/1.5/Textures/Genes/Icons/Hypersexual.png b/1.5/Textures/Genes/Icons/Hypersexual.png
new file mode 100644
index 0000000..417196d
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Hypersexual.png differ
diff --git a/1.5/Textures/Genes/Icons/Insect_Breeder.dds b/1.5/Textures/Genes/Icons/Insect_Breeder.dds
new file mode 100644
index 0000000..85c94eb
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Insect_Breeder.dds differ
diff --git a/1.5/Textures/Genes/Icons/Insect_Breeder.png b/1.5/Textures/Genes/Icons/Insect_Breeder.png
new file mode 100644
index 0000000..5315179
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Insect_Breeder.png differ
diff --git a/1.5/Textures/Genes/Icons/Loose_Anus.dds b/1.5/Textures/Genes/Icons/Loose_Anus.dds
new file mode 100644
index 0000000..d078f04
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Loose_Anus.dds differ
diff --git a/1.5/Textures/Genes/Icons/Loose_Anus.png b/1.5/Textures/Genes/Icons/Loose_Anus.png
new file mode 100644
index 0000000..ada02ee
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Loose_Anus.png differ
diff --git a/1.5/Textures/Genes/Icons/Loose_Vagina.dds b/1.5/Textures/Genes/Icons/Loose_Vagina.dds
new file mode 100644
index 0000000..714af26
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Loose_Vagina.dds differ
diff --git a/1.5/Textures/Genes/Icons/Loose_Vagina.png b/1.5/Textures/Genes/Icons/Loose_Vagina.png
new file mode 100644
index 0000000..57a4706
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Loose_Vagina.png differ
diff --git a/1.5/Textures/Genes/Icons/Loyalty.dds b/1.5/Textures/Genes/Icons/Loyalty.dds
new file mode 100644
index 0000000..1ef4268
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Loyalty.dds differ
diff --git a/1.5/Textures/Genes/Icons/Loyalty.png b/1.5/Textures/Genes/Icons/Loyalty.png
new file mode 100644
index 0000000..8ac3c4c
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Loyalty.png differ
diff --git a/1.5/Textures/Genes/Icons/Male_Only.dds b/1.5/Textures/Genes/Icons/Male_Only.dds
new file mode 100644
index 0000000..8387f22
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Male_Only.dds differ
diff --git a/1.5/Textures/Genes/Icons/Male_Only.png b/1.5/Textures/Genes/Icons/Male_Only.png
new file mode 100644
index 0000000..7e15cbc
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Male_Only.png differ
diff --git a/Common/Textures/Genes/Icons/Mating_Call_2.png b/1.5/Textures/Genes/Icons/Mating_Call_2.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Mating_Call_2.png
rename to 1.5/Textures/Genes/Icons/Mating_Call_2.png
diff --git a/1.5/Textures/Genes/Icons/Much_Cum.dds b/1.5/Textures/Genes/Icons/Much_Cum.dds
new file mode 100644
index 0000000..c7974f4
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Much_Cum.dds differ
diff --git a/1.5/Textures/Genes/Icons/Much_Cum.png b/1.5/Textures/Genes/Icons/Much_Cum.png
new file mode 100644
index 0000000..21a9a17
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Much_Cum.png differ
diff --git a/1.5/Textures/Genes/Icons/Necrophile.dds b/1.5/Textures/Genes/Icons/Necrophile.dds
new file mode 100644
index 0000000..0239a1e
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Necrophile.dds differ
diff --git a/1.5/Textures/Genes/Icons/Necrophile.png b/1.5/Textures/Genes/Icons/Necrophile.png
new file mode 100644
index 0000000..5b2bf61
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Necrophile.png differ
diff --git a/1.5/Textures/Genes/Icons/No_Anus.dds b/1.5/Textures/Genes/Icons/No_Anus.dds
new file mode 100644
index 0000000..c829f90
Binary files /dev/null and b/1.5/Textures/Genes/Icons/No_Anus.dds differ
diff --git a/1.5/Textures/Genes/Icons/No_Anus.png b/1.5/Textures/Genes/Icons/No_Anus.png
new file mode 100644
index 0000000..7cfb774
Binary files /dev/null and b/1.5/Textures/Genes/Icons/No_Anus.png differ
diff --git a/1.5/Textures/Genes/Icons/No_Breasts.dds b/1.5/Textures/Genes/Icons/No_Breasts.dds
new file mode 100644
index 0000000..c4b6ad7
Binary files /dev/null and b/1.5/Textures/Genes/Icons/No_Breasts.dds differ
diff --git a/1.5/Textures/Genes/Icons/No_Breasts.png b/1.5/Textures/Genes/Icons/No_Breasts.png
new file mode 100644
index 0000000..fd17996
Binary files /dev/null and b/1.5/Textures/Genes/Icons/No_Breasts.png differ
diff --git a/1.5/Textures/Genes/Icons/No_Cum.dds b/1.5/Textures/Genes/Icons/No_Cum.dds
new file mode 100644
index 0000000..f21f6bb
Binary files /dev/null and b/1.5/Textures/Genes/Icons/No_Cum.dds differ
diff --git a/1.5/Textures/Genes/Icons/No_Cum.png b/1.5/Textures/Genes/Icons/No_Cum.png
new file mode 100644
index 0000000..a7964f0
Binary files /dev/null and b/1.5/Textures/Genes/Icons/No_Cum.png differ
diff --git a/1.5/Textures/Genes/Icons/No_Male_Genitalia.dds b/1.5/Textures/Genes/Icons/No_Male_Genitalia.dds
new file mode 100644
index 0000000..8beee67
Binary files /dev/null and b/1.5/Textures/Genes/Icons/No_Male_Genitalia.dds differ
diff --git a/1.5/Textures/Genes/Icons/No_Male_Genitalia.png b/1.5/Textures/Genes/Icons/No_Male_Genitalia.png
new file mode 100644
index 0000000..bad56cf
Binary files /dev/null and b/1.5/Textures/Genes/Icons/No_Male_Genitalia.png differ
diff --git a/1.5/Textures/Genes/Icons/No_Vagina.dds b/1.5/Textures/Genes/Icons/No_Vagina.dds
new file mode 100644
index 0000000..4ff0383
Binary files /dev/null and b/1.5/Textures/Genes/Icons/No_Vagina.dds differ
diff --git a/1.5/Textures/Genes/Icons/No_Vagina.png b/1.5/Textures/Genes/Icons/No_Vagina.png
new file mode 100644
index 0000000..a4f47ee
Binary files /dev/null and b/1.5/Textures/Genes/Icons/No_Vagina.png differ
diff --git a/1.5/Textures/Genes/Icons/Ovipositor_Genitalia.dds b/1.5/Textures/Genes/Icons/Ovipositor_Genitalia.dds
new file mode 100644
index 0000000..7e3a1af
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Ovipositor_Genitalia.dds differ
diff --git a/1.5/Textures/Genes/Icons/Ovipositor_Genitalia.png b/1.5/Textures/Genes/Icons/Ovipositor_Genitalia.png
new file mode 100644
index 0000000..97421e1
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Ovipositor_Genitalia.png differ
diff --git a/1.5/Textures/Genes/Icons/Paralysing_Kiss.dds b/1.5/Textures/Genes/Icons/Paralysing_Kiss.dds
new file mode 100644
index 0000000..7ec2664
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Paralysing_Kiss.dds differ
diff --git a/1.5/Textures/Genes/Icons/Paralysing_Kiss.png b/1.5/Textures/Genes/Icons/Paralysing_Kiss.png
new file mode 100644
index 0000000..20c4fd5
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Paralysing_Kiss.png differ
diff --git a/1.5/Textures/Genes/Icons/Pheromone.dds b/1.5/Textures/Genes/Icons/Pheromone.dds
new file mode 100644
index 0000000..06738ed
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Pheromone.dds differ
diff --git a/1.5/Textures/Genes/Icons/Pheromone.png b/1.5/Textures/Genes/Icons/Pheromone.png
new file mode 100644
index 0000000..342f695
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Pheromone.png differ
diff --git a/Common/Textures/Genes/Icons/Pheromone_Spit.png b/1.5/Textures/Genes/Icons/Pheromone_Spit.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Pheromone_Spit.png
rename to 1.5/Textures/Genes/Icons/Pheromone_Spit.png
diff --git a/1.5/Textures/Genes/Icons/Pheromones.dds b/1.5/Textures/Genes/Icons/Pheromones.dds
new file mode 100644
index 0000000..a2f0394
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Pheromones.dds differ
diff --git a/1.5/Textures/Genes/Icons/Pheromones.png b/1.5/Textures/Genes/Icons/Pheromones.png
new file mode 100644
index 0000000..88a6c53
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Pheromones.png differ
diff --git a/1.5/Textures/Genes/Icons/Placeholder.dds b/1.5/Textures/Genes/Icons/Placeholder.dds
new file mode 100644
index 0000000..ce2c267
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Placeholder.dds differ
diff --git a/1.5/Textures/Genes/Icons/Placeholder.png b/1.5/Textures/Genes/Icons/Placeholder.png
new file mode 100644
index 0000000..9b73621
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Placeholder.png differ
diff --git a/1.5/Textures/Genes/Icons/Queen.dds b/1.5/Textures/Genes/Icons/Queen.dds
new file mode 100644
index 0000000..ee24210
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Queen.dds differ
diff --git a/1.5/Textures/Genes/Icons/Queen.png b/1.5/Textures/Genes/Icons/Queen.png
new file mode 100644
index 0000000..b087f03
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Queen.png differ
diff --git a/1.5/Textures/Genes/Icons/RJW-Genes_Rodent_Genitalia (Not in use now).dds b/1.5/Textures/Genes/Icons/RJW-Genes_Rodent_Genitalia (Not in use now).dds
new file mode 100644
index 0000000..d554df2
Binary files /dev/null and b/1.5/Textures/Genes/Icons/RJW-Genes_Rodent_Genitalia (Not in use now).dds differ
diff --git a/1.5/Textures/Genes/Icons/RJW-Genes_Rodent_Genitalia (Not in use now).png b/1.5/Textures/Genes/Icons/RJW-Genes_Rodent_Genitalia (Not in use now).png
new file mode 100644
index 0000000..a15e618
Binary files /dev/null and b/1.5/Textures/Genes/Icons/RJW-Genes_Rodent_Genitalia (Not in use now).png differ
diff --git a/1.5/Textures/Genes/Icons/RJW_Genes_Endogene_Background.dds b/1.5/Textures/Genes/Icons/RJW_Genes_Endogene_Background.dds
new file mode 100644
index 0000000..833af52
Binary files /dev/null and b/1.5/Textures/Genes/Icons/RJW_Genes_Endogene_Background.dds differ
diff --git a/1.5/Textures/Genes/Icons/RJW_Genes_Endogene_Background.png b/1.5/Textures/Genes/Icons/RJW_Genes_Endogene_Background.png
new file mode 100644
index 0000000..5d8b0e0
Binary files /dev/null and b/1.5/Textures/Genes/Icons/RJW_Genes_Endogene_Background.png differ
diff --git a/Common/Textures/Genes/Icons/RJW_Genes_Endogene_Disease_Background.png b/1.5/Textures/Genes/Icons/RJW_Genes_Endogene_Disease_Background.png
similarity index 100%
rename from Common/Textures/Genes/Icons/RJW_Genes_Endogene_Disease_Background.png
rename to 1.5/Textures/Genes/Icons/RJW_Genes_Endogene_Disease_Background.png
diff --git a/Common/Textures/Genes/Icons/RJW_Genes_Feline_Genitalia.png b/1.5/Textures/Genes/Icons/RJW_Genes_Feline_Genitalia.png
similarity index 100%
rename from Common/Textures/Genes/Icons/RJW_Genes_Feline_Genitalia.png
rename to 1.5/Textures/Genes/Icons/RJW_Genes_Feline_Genitalia.png
diff --git a/Common/Textures/Genes/Icons/RJW_Genes_Mating_Call.png b/1.5/Textures/Genes/Icons/RJW_Genes_Mating_Call.png
similarity index 100%
rename from Common/Textures/Genes/Icons/RJW_Genes_Mating_Call.png
rename to 1.5/Textures/Genes/Icons/RJW_Genes_Mating_Call.png
diff --git a/Common/Textures/Genes/Icons/RJW_Genes_PheromoneSpit.png b/1.5/Textures/Genes/Icons/RJW_Genes_PheromoneSpit.png
similarity index 100%
rename from Common/Textures/Genes/Icons/RJW_Genes_PheromoneSpit.png
rename to 1.5/Textures/Genes/Icons/RJW_Genes_PheromoneSpit.png
diff --git a/Common/Textures/Genes/Icons/RJW_Genes_SexualTamer.png b/1.5/Textures/Genes/Icons/RJW_Genes_SexualTamer.png
similarity index 100%
rename from Common/Textures/Genes/Icons/RJW_Genes_SexualTamer.png
rename to 1.5/Textures/Genes/Icons/RJW_Genes_SexualTamer.png
diff --git a/Common/Textures/Genes/Icons/RJW_Genes_Udder.png b/1.5/Textures/Genes/Icons/RJW_Genes_Udder.png
similarity index 100%
rename from Common/Textures/Genes/Icons/RJW_Genes_Udder.png
rename to 1.5/Textures/Genes/Icons/RJW_Genes_Udder.png
diff --git a/1.5/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.dds b/1.5/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.dds
new file mode 100644
index 0000000..091b63a
Binary files /dev/null and b/1.5/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.dds differ
diff --git a/1.5/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.png b/1.5/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.png
new file mode 100644
index 0000000..b3b359e
Binary files /dev/null and b/1.5/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.png differ
diff --git a/1.5/Textures/Genes/Icons/Rape.dds b/1.5/Textures/Genes/Icons/Rape.dds
new file mode 100644
index 0000000..fca75d7
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Rape.dds differ
diff --git a/1.5/Textures/Genes/Icons/Rape.png b/1.5/Textures/Genes/Icons/Rape.png
new file mode 100644
index 0000000..8ad84ea
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Rape.png differ
diff --git a/Common/Textures/Genes/Icons/RoundC.png b/1.5/Textures/Genes/Icons/RoundC.png
similarity index 100%
rename from Common/Textures/Genes/Icons/RoundC.png
rename to 1.5/Textures/Genes/Icons/RoundC.png
diff --git a/Common/Textures/Genes/Icons/Samples/AnimalMatingcall.psd b/1.5/Textures/Genes/Icons/Samples/AnimalMatingcall.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/AnimalMatingcall.psd
rename to 1.5/Textures/Genes/Icons/Samples/AnimalMatingcall.psd
diff --git a/Common/Textures/Genes/Icons/Samples/Cumflation_Immunity.psd b/1.5/Textures/Genes/Icons/Samples/Cumflation_Immunity.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Cumflation_Immunity.psd
rename to 1.5/Textures/Genes/Icons/Samples/Cumflation_Immunity.psd
diff --git a/Common/Textures/Genes/Icons/Samples/Gene_Fertile.png b/1.5/Textures/Genes/Icons/Samples/Gene_Fertile.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Gene_Fertile.png
rename to 1.5/Textures/Genes/Icons/Samples/Gene_Fertile.png
diff --git a/Common/Textures/Genes/Icons/Samples/Gene_Inbred.png b/1.5/Textures/Genes/Icons/Samples/Gene_Inbred.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Gene_Inbred.png
rename to 1.5/Textures/Genes/Icons/Samples/Gene_Inbred.png
diff --git a/Common/Textures/Genes/Icons/Samples/Gene_MaxTemperatureLargeIncrease.png b/1.5/Textures/Genes/Icons/Samples/Gene_MaxTemperatureLargeIncrease.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Gene_MaxTemperatureLargeIncrease.png
rename to 1.5/Textures/Genes/Icons/Samples/Gene_MaxTemperatureLargeIncrease.png
diff --git a/Common/Textures/Genes/Icons/Samples/Gene_MaxTemperatureSmallIncrease копия.png b/1.5/Textures/Genes/Icons/Samples/Gene_MaxTemperatureSmallIncrease копия.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Gene_MaxTemperatureSmallIncrease копия.png
rename to 1.5/Textures/Genes/Icons/Samples/Gene_MaxTemperatureSmallIncrease копия.png
diff --git a/Common/Textures/Genes/Icons/Samples/Gene_PsychicBonding.png b/1.5/Textures/Genes/Icons/Samples/Gene_PsychicBonding.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Gene_PsychicBonding.png
rename to 1.5/Textures/Genes/Icons/Samples/Gene_PsychicBonding.png
diff --git a/Common/Textures/Genes/Icons/Samples/Gene_PsychicallyDeaf.png b/1.5/Textures/Genes/Icons/Samples/Gene_PsychicallyDeaf.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Gene_PsychicallyDeaf.png
rename to 1.5/Textures/Genes/Icons/Samples/Gene_PsychicallyDeaf.png
diff --git a/Common/Textures/Genes/Icons/Samples/Gene_TotalHealing.psd b/1.5/Textures/Genes/Icons/Samples/Gene_TotalHealing.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Gene_TotalHealing.psd
rename to 1.5/Textures/Genes/Icons/Samples/Gene_TotalHealing.psd
diff --git a/Common/Textures/Genes/Icons/Samples/Pheromone_Spit.psd b/1.5/Textures/Genes/Icons/Samples/Pheromone_Spit.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Pheromone_Spit.psd
rename to 1.5/Textures/Genes/Icons/Samples/Pheromone_Spit.psd
diff --git a/Common/Textures/Genes/Icons/Samples/RJW_Genes_MatingCall.psd b/1.5/Textures/Genes/Icons/Samples/RJW_Genes_MatingCall.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/RJW_Genes_MatingCall.psd
rename to 1.5/Textures/Genes/Icons/Samples/RJW_Genes_MatingCall.psd
diff --git a/Common/Textures/Genes/Icons/Samples/Sexual_Tamer.psd b/1.5/Textures/Genes/Icons/Samples/Sexual_Tamer.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Sexual_Tamer.psd
rename to 1.5/Textures/Genes/Icons/Samples/Sexual_Tamer.psd
diff --git a/Common/Textures/Genes/Icons/Samples/Skill_Pheromone_Spit.psd b/1.5/Textures/Genes/Icons/Samples/Skill_Pheromone_Spit.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Skill_Pheromone_Spit.psd
rename to 1.5/Textures/Genes/Icons/Samples/Skill_Pheromone_Spit.psd
diff --git a/Common/Textures/Genes/Icons/Samples/Time.png b/1.5/Textures/Genes/Icons/Samples/Time.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/Time.png
rename to 1.5/Textures/Genes/Icons/Samples/Time.png
diff --git a/Common/Textures/Genes/Icons/Samples/blocked_masturbation.psd b/1.5/Textures/Genes/Icons/Samples/blocked_masturbation.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/blocked_masturbation.psd
rename to 1.5/Textures/Genes/Icons/Samples/blocked_masturbation.psd
diff --git a/Common/Textures/Genes/Icons/Samples/disease_immunity.psd b/1.5/Textures/Genes/Icons/Samples/disease_immunity.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/disease_immunity.psd
rename to 1.5/Textures/Genes/Icons/Samples/disease_immunity.psd
diff --git a/Common/Textures/Genes/Icons/Samples/feminizer&twinkifier.psd b/1.5/Textures/Genes/Icons/Samples/feminizer&twinkifier.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/feminizer&twinkifier.psd
rename to 1.5/Textures/Genes/Icons/Samples/feminizer&twinkifier.psd
diff --git a/Common/Textures/Genes/Icons/Samples/hardwired_progenity.psd b/1.5/Textures/Genes/Icons/Samples/hardwired_progenity.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/hardwired_progenity.psd
rename to 1.5/Textures/Genes/Icons/Samples/hardwired_progenity.psd
diff --git a/Common/Textures/Genes/Icons/Samples/la-copa-menstrual-04.png b/1.5/Textures/Genes/Icons/Samples/la-copa-menstrual-04.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/la-copa-menstrual-04.png
rename to 1.5/Textures/Genes/Icons/Samples/la-copa-menstrual-04.png
diff --git a/Common/Textures/Genes/Icons/Samples/living_cumbucket.psd b/1.5/Textures/Genes/Icons/Samples/living_cumbucket.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/living_cumbucket.psd
rename to 1.5/Textures/Genes/Icons/Samples/living_cumbucket.psd
diff --git a/Common/Textures/Genes/Icons/Samples/low_fertility.psd b/1.5/Textures/Genes/Icons/Samples/low_fertility.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/low_fertility.psd
rename to 1.5/Textures/Genes/Icons/Samples/low_fertility.psd
diff --git a/Common/Textures/Genes/Icons/Samples/pregnancy_overwrite.psd b/1.5/Textures/Genes/Icons/Samples/pregnancy_overwrite.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/pregnancy_overwrite.psd
rename to 1.5/Textures/Genes/Icons/Samples/pregnancy_overwrite.psd
diff --git a/Common/Textures/Genes/Icons/Samples/rut.psd b/1.5/Textures/Genes/Icons/Samples/rut.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/rut.psd
rename to 1.5/Textures/Genes/Icons/Samples/rut.psd
diff --git a/Common/Textures/Genes/Icons/Samples/sexual_genetic_swap.psd b/1.5/Textures/Genes/Icons/Samples/sexual_genetic_swap.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/sexual_genetic_swap.psd
rename to 1.5/Textures/Genes/Icons/Samples/sexual_genetic_swap.psd
diff --git a/Common/Textures/Genes/Icons/Samples/sexual_genetic_thief.psd b/1.5/Textures/Genes/Icons/Samples/sexual_genetic_thief.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/sexual_genetic_thief.psd
rename to 1.5/Textures/Genes/Icons/Samples/sexual_genetic_thief.psd
diff --git a/Common/Textures/Genes/Icons/Samples/size_blinded&stretcher.psd b/1.5/Textures/Genes/Icons/Samples/size_blinded&stretcher.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/size_blinded&stretcher.psd
rename to 1.5/Textures/Genes/Icons/Samples/size_blinded&stretcher.psd
diff --git a/Common/Textures/Genes/Icons/Samples/vulnerability.psd b/1.5/Textures/Genes/Icons/Samples/vulnerability.psd
similarity index 100%
rename from Common/Textures/Genes/Icons/Samples/vulnerability.psd
rename to 1.5/Textures/Genes/Icons/Samples/vulnerability.psd
diff --git a/Common/Textures/Genes/Icons/Sexual_Tamer.png b/1.5/Textures/Genes/Icons/Sexual_Tamer.png
similarity index 100%
rename from Common/Textures/Genes/Icons/Sexual_Tamer.png
rename to 1.5/Textures/Genes/Icons/Sexual_Tamer.png
diff --git a/1.5/Textures/Genes/Icons/Slime_Genitalia.dds b/1.5/Textures/Genes/Icons/Slime_Genitalia.dds
new file mode 100644
index 0000000..e473210
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Slime_Genitalia.dds differ
diff --git a/1.5/Textures/Genes/Icons/Slime_Genitalia.png b/1.5/Textures/Genes/Icons/Slime_Genitalia.png
new file mode 100644
index 0000000..91e6cd0
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Slime_Genitalia.png differ
diff --git a/1.5/Textures/Genes/Icons/Small_Breasts.dds b/1.5/Textures/Genes/Icons/Small_Breasts.dds
new file mode 100644
index 0000000..fdbf4ed
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Small_Breasts.dds differ
diff --git a/1.5/Textures/Genes/Icons/Small_Breasts.png b/1.5/Textures/Genes/Icons/Small_Breasts.png
new file mode 100644
index 0000000..e2005b7
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Small_Breasts.png differ
diff --git a/1.5/Textures/Genes/Icons/Small_Male_Genitalia.dds b/1.5/Textures/Genes/Icons/Small_Male_Genitalia.dds
new file mode 100644
index 0000000..a9f85fe
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Small_Male_Genitalia.dds differ
diff --git a/1.5/Textures/Genes/Icons/Small_Male_Genitalia.png b/1.5/Textures/Genes/Icons/Small_Male_Genitalia.png
new file mode 100644
index 0000000..19924d2
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Small_Male_Genitalia.png differ
diff --git a/1.5/Textures/Genes/Icons/Spelopede_Dispenser.dds b/1.5/Textures/Genes/Icons/Spelopede_Dispenser.dds
new file mode 100644
index 0000000..68d12db
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Spelopede_Dispenser.dds differ
diff --git a/1.5/Textures/Genes/Icons/Spelopede_Dispenser.png b/1.5/Textures/Genes/Icons/Spelopede_Dispenser.png
new file mode 100644
index 0000000..4308892
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Spelopede_Dispenser.png differ
diff --git a/1.5/Textures/Genes/Icons/Succubus_Tail.dds b/1.5/Textures/Genes/Icons/Succubus_Tail.dds
new file mode 100644
index 0000000..068be01
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Succubus_Tail.dds differ
diff --git a/1.5/Textures/Genes/Icons/Succubus_Tail.png b/1.5/Textures/Genes/Icons/Succubus_Tail.png
new file mode 100644
index 0000000..afe26f7
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Succubus_Tail.png differ
diff --git a/1.5/Textures/Genes/Icons/Succubus_Wings.dds b/1.5/Textures/Genes/Icons/Succubus_Wings.dds
new file mode 100644
index 0000000..94bbe7e
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Succubus_Wings.dds differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_south.png b/1.5/Textures/Genes/Icons/Succubus_Wings.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_south.png
rename to 1.5/Textures/Genes/Icons/Succubus_Wings.png
diff --git a/1.5/Textures/Genes/Icons/Tight_Anus.dds b/1.5/Textures/Genes/Icons/Tight_Anus.dds
new file mode 100644
index 0000000..ae0f265
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Tight_Anus.dds differ
diff --git a/1.5/Textures/Genes/Icons/Tight_Anus.png b/1.5/Textures/Genes/Icons/Tight_Anus.png
new file mode 100644
index 0000000..dd57b1d
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Tight_Anus.png differ
diff --git a/1.5/Textures/Genes/Icons/Tight_Vagina.dds b/1.5/Textures/Genes/Icons/Tight_Vagina.dds
new file mode 100644
index 0000000..b94f43b
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Tight_Vagina.dds differ
diff --git a/1.5/Textures/Genes/Icons/Tight_Vagina.png b/1.5/Textures/Genes/Icons/Tight_Vagina.png
new file mode 100644
index 0000000..eab0606
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Tight_Vagina.png differ
diff --git a/Common/Textures/Genes/Icons/TrialDefend.png b/1.5/Textures/Genes/Icons/TrialDefend.png
similarity index 100%
rename from Common/Textures/Genes/Icons/TrialDefend.png
rename to 1.5/Textures/Genes/Icons/TrialDefend.png
diff --git a/1.5/Textures/Genes/Icons/Vaginal_cum_absorption.dds b/1.5/Textures/Genes/Icons/Vaginal_cum_absorption.dds
new file mode 100644
index 0000000..2cff048
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Vaginal_cum_absorption.dds differ
diff --git a/1.5/Textures/Genes/Icons/Vaginal_cum_absorption.png b/1.5/Textures/Genes/Icons/Vaginal_cum_absorption.png
new file mode 100644
index 0000000..4148bde
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Vaginal_cum_absorption.png differ
diff --git a/1.5/Textures/Genes/Icons/Very_Much_Cum.dds b/1.5/Textures/Genes/Icons/Very_Much_Cum.dds
new file mode 100644
index 0000000..76694ce
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Very_Much_Cum.dds differ
diff --git a/1.5/Textures/Genes/Icons/Very_Much_Cum.png b/1.5/Textures/Genes/Icons/Very_Much_Cum.png
new file mode 100644
index 0000000..f2fedc1
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Very_Much_Cum.png differ
diff --git a/1.5/Textures/Genes/Icons/Vitality_Drainer.dds b/1.5/Textures/Genes/Icons/Vitality_Drainer.dds
new file mode 100644
index 0000000..9f4c08f
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Vitality_Drainer.dds differ
diff --git a/1.5/Textures/Genes/Icons/Vitality_Drainer.png b/1.5/Textures/Genes/Icons/Vitality_Drainer.png
new file mode 100644
index 0000000..1de65a9
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Vitality_Drainer.png differ
diff --git a/1.5/Textures/Genes/Icons/Worker.dds b/1.5/Textures/Genes/Icons/Worker.dds
new file mode 100644
index 0000000..3bcf5b0
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Worker.dds differ
diff --git a/1.5/Textures/Genes/Icons/Worker.png b/1.5/Textures/Genes/Icons/Worker.png
new file mode 100644
index 0000000..1f4e0c8
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Worker.png differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.dds b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.dds
new file mode 100644
index 0000000..f993b7e
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.dds differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.png b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.png
new file mode 100644
index 0000000..9ffab2c
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.png differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.dds b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.dds
new file mode 100644
index 0000000..49bb674
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.dds differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.png b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.png
new file mode 100644
index 0000000..8d285e5
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.png differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.dds b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.dds
new file mode 100644
index 0000000..f0136b2
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.dds differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.png b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.png
new file mode 100644
index 0000000..e831799
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.png differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.dds b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.dds
new file mode 100644
index 0000000..29f22ed
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.dds differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.png b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.png
new file mode 100644
index 0000000..14d6685
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.png differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.dds b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.dds
new file mode 100644
index 0000000..d02af1d
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.dds differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.png b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.png
new file mode 100644
index 0000000..9b0f425
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.png differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.dds b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.dds
new file mode 100644
index 0000000..abb08a2
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.dds differ
diff --git a/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.png b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.png
new file mode 100644
index 0000000..dddb34d
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.png differ
diff --git a/1.5/Textures/Genes/Icons/Zoophile.dds b/1.5/Textures/Genes/Icons/Zoophile.dds
new file mode 100644
index 0000000..e7baa19
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Zoophile.dds differ
diff --git a/1.5/Textures/Genes/Icons/Zoophile.png b/1.5/Textures/Genes/Icons/Zoophile.png
new file mode 100644
index 0000000..a31c470
Binary files /dev/null and b/1.5/Textures/Genes/Icons/Zoophile.png differ
diff --git a/Common/Textures/Genes/Icons/bisexuality.png b/1.5/Textures/Genes/Icons/bisexuality.png
similarity index 100%
rename from Common/Textures/Genes/Icons/bisexuality.png
rename to 1.5/Textures/Genes/Icons/bisexuality.png
diff --git a/Common/Textures/Genes/Icons/blocked_masturbation.png b/1.5/Textures/Genes/Icons/blocked_masturbation.png
similarity index 100%
rename from Common/Textures/Genes/Icons/blocked_masturbation.png
rename to 1.5/Textures/Genes/Icons/blocked_masturbation.png
diff --git a/1.5/Textures/Genes/Icons/cockeater.dds b/1.5/Textures/Genes/Icons/cockeater.dds
new file mode 100644
index 0000000..31ca306
Binary files /dev/null and b/1.5/Textures/Genes/Icons/cockeater.dds differ
diff --git a/1.5/Textures/Genes/Icons/cockeater.png b/1.5/Textures/Genes/Icons/cockeater.png
new file mode 100644
index 0000000..0b60a46
Binary files /dev/null and b/1.5/Textures/Genes/Icons/cockeater.png differ
diff --git a/1.5/Textures/Genes/Icons/cumeater.dds b/1.5/Textures/Genes/Icons/cumeater.dds
new file mode 100644
index 0000000..d7f870e
Binary files /dev/null and b/1.5/Textures/Genes/Icons/cumeater.dds differ
diff --git a/1.5/Textures/Genes/Icons/cumeater.png b/1.5/Textures/Genes/Icons/cumeater.png
new file mode 100644
index 0000000..3150a18
Binary files /dev/null and b/1.5/Textures/Genes/Icons/cumeater.png differ
diff --git a/Common/Textures/Genes/Icons/disease_immunity.png b/1.5/Textures/Genes/Icons/disease_immunity.png
similarity index 100%
rename from Common/Textures/Genes/Icons/disease_immunity.png
rename to 1.5/Textures/Genes/Icons/disease_immunity.png
diff --git a/1.5/Textures/Genes/Icons/extra_male.dds b/1.5/Textures/Genes/Icons/extra_male.dds
new file mode 100644
index 0000000..ada5226
Binary files /dev/null and b/1.5/Textures/Genes/Icons/extra_male.dds differ
diff --git a/1.5/Textures/Genes/Icons/extra_male.png b/1.5/Textures/Genes/Icons/extra_male.png
new file mode 100644
index 0000000..743ae44
Binary files /dev/null and b/1.5/Textures/Genes/Icons/extra_male.png differ
diff --git a/Common/Textures/Genes/Icons/feminizer.png b/1.5/Textures/Genes/Icons/feminizer.png
similarity index 100%
rename from Common/Textures/Genes/Icons/feminizer.png
rename to 1.5/Textures/Genes/Icons/feminizer.png
diff --git a/Common/Textures/Genes/Icons/hardwired_progenity.png b/1.5/Textures/Genes/Icons/hardwired_progenity.png
similarity index 100%
rename from Common/Textures/Genes/Icons/hardwired_progenity.png
rename to 1.5/Textures/Genes/Icons/hardwired_progenity.png
diff --git a/Common/Textures/Genes/Icons/homosexuality.png b/1.5/Textures/Genes/Icons/homosexuality.png
similarity index 100%
rename from Common/Textures/Genes/Icons/homosexuality.png
rename to 1.5/Textures/Genes/Icons/homosexuality.png
diff --git a/Common/Textures/Genes/Icons/living_cumbucket.png b/1.5/Textures/Genes/Icons/living_cumbucket.png
similarity index 100%
rename from Common/Textures/Genes/Icons/living_cumbucket.png
rename to 1.5/Textures/Genes/Icons/living_cumbucket.png
diff --git a/Common/Textures/Genes/Icons/low_fertility.png b/1.5/Textures/Genes/Icons/low_fertility.png
similarity index 100%
rename from Common/Textures/Genes/Icons/low_fertility.png
rename to 1.5/Textures/Genes/Icons/low_fertility.png
diff --git a/Common/Textures/Genes/Icons/major_vulnerability.png b/1.5/Textures/Genes/Icons/major_vulnerability.png
similarity index 100%
rename from Common/Textures/Genes/Icons/major_vulnerability.png
rename to 1.5/Textures/Genes/Icons/major_vulnerability.png
diff --git a/Common/Textures/Genes/Icons/minor_vulnerability.png b/1.5/Textures/Genes/Icons/minor_vulnerability.png
similarity index 100%
rename from Common/Textures/Genes/Icons/minor_vulnerability.png
rename to 1.5/Textures/Genes/Icons/minor_vulnerability.png
diff --git a/1.5/Textures/Genes/Icons/penis_rock_icon.dds b/1.5/Textures/Genes/Icons/penis_rock_icon.dds
new file mode 100644
index 0000000..22f3f5b
Binary files /dev/null and b/1.5/Textures/Genes/Icons/penis_rock_icon.dds differ
diff --git a/Common/Textures/Genes/Icons/penis_rock_icon.png b/1.5/Textures/Genes/Icons/penis_rock_icon.png
similarity index 100%
rename from Common/Textures/Genes/Icons/penis_rock_icon.png
rename to 1.5/Textures/Genes/Icons/penis_rock_icon.png
diff --git a/Common/Textures/Genes/Icons/pregnancy_overwrite.png b/1.5/Textures/Genes/Icons/pregnancy_overwrite.png
similarity index 100%
rename from Common/Textures/Genes/Icons/pregnancy_overwrite.png
rename to 1.5/Textures/Genes/Icons/pregnancy_overwrite.png
diff --git a/1.5/Textures/Genes/Icons/rjw_genes_lips.dds b/1.5/Textures/Genes/Icons/rjw_genes_lips.dds
new file mode 100644
index 0000000..120d09a
Binary files /dev/null and b/1.5/Textures/Genes/Icons/rjw_genes_lips.dds differ
diff --git a/1.5/Textures/Genes/Icons/rjw_genes_lips.png b/1.5/Textures/Genes/Icons/rjw_genes_lips.png
new file mode 100644
index 0000000..13062a1
Binary files /dev/null and b/1.5/Textures/Genes/Icons/rjw_genes_lips.png differ
diff --git a/1.5/Textures/Genes/Icons/rjw_naked_prowess.dds b/1.5/Textures/Genes/Icons/rjw_naked_prowess.dds
new file mode 100644
index 0000000..5e11870
Binary files /dev/null and b/1.5/Textures/Genes/Icons/rjw_naked_prowess.dds differ
diff --git a/1.5/Textures/Genes/Icons/rjw_naked_prowess.png b/1.5/Textures/Genes/Icons/rjw_naked_prowess.png
new file mode 100644
index 0000000..d54231c
Binary files /dev/null and b/1.5/Textures/Genes/Icons/rjw_naked_prowess.png differ
diff --git a/Common/Textures/Genes/Icons/rut.png b/1.5/Textures/Genes/Icons/rut.png
similarity index 100%
rename from Common/Textures/Genes/Icons/rut.png
rename to 1.5/Textures/Genes/Icons/rut.png
diff --git a/1.5/Textures/Genes/Icons/seduce.dds b/1.5/Textures/Genes/Icons/seduce.dds
new file mode 100644
index 0000000..9875559
Binary files /dev/null and b/1.5/Textures/Genes/Icons/seduce.dds differ
diff --git a/1.5/Textures/Genes/Icons/seduce.png b/1.5/Textures/Genes/Icons/seduce.png
new file mode 100644
index 0000000..635132c
Binary files /dev/null and b/1.5/Textures/Genes/Icons/seduce.png differ
diff --git a/Common/Textures/Genes/Icons/sex_curiosity.png b/1.5/Textures/Genes/Icons/sex_curiosity.png
similarity index 100%
rename from Common/Textures/Genes/Icons/sex_curiosity.png
rename to 1.5/Textures/Genes/Icons/sex_curiosity.png
diff --git a/Common/Textures/Genes/Icons/sex_disabled.png b/1.5/Textures/Genes/Icons/sex_disabled.png
similarity index 100%
rename from Common/Textures/Genes/Icons/sex_disabled.png
rename to 1.5/Textures/Genes/Icons/sex_disabled.png
diff --git a/Common/Textures/Genes/Icons/sex_enabled.png b/1.5/Textures/Genes/Icons/sex_enabled.png
similarity index 100%
rename from Common/Textures/Genes/Icons/sex_enabled.png
rename to 1.5/Textures/Genes/Icons/sex_enabled.png
diff --git a/Common/Textures/Genes/Icons/sexual_genetic_swap.png b/1.5/Textures/Genes/Icons/sexual_genetic_swap.png
similarity index 100%
rename from Common/Textures/Genes/Icons/sexual_genetic_swap.png
rename to 1.5/Textures/Genes/Icons/sexual_genetic_swap.png
diff --git a/Common/Textures/Genes/Icons/sexual_genetic_thief.png b/1.5/Textures/Genes/Icons/sexual_genetic_thief.png
similarity index 100%
rename from Common/Textures/Genes/Icons/sexual_genetic_thief.png
rename to 1.5/Textures/Genes/Icons/sexual_genetic_thief.png
diff --git a/Common/Textures/Genes/Icons/size_blinded.png b/1.5/Textures/Genes/Icons/size_blinded.png
similarity index 100%
rename from Common/Textures/Genes/Icons/size_blinded.png
rename to 1.5/Textures/Genes/Icons/size_blinded.png
diff --git a/Common/Textures/Genes/Icons/stretcher.png b/1.5/Textures/Genes/Icons/stretcher.png
similarity index 100%
rename from Common/Textures/Genes/Icons/stretcher.png
rename to 1.5/Textures/Genes/Icons/stretcher.png
diff --git a/Common/Textures/Genes/Icons/twinkifier.png b/1.5/Textures/Genes/Icons/twinkifier.png
similarity index 100%
rename from Common/Textures/Genes/Icons/twinkifier.png
rename to 1.5/Textures/Genes/Icons/twinkifier.png
diff --git a/1.5/Textures/Genes/Icons/vagina_base.dds b/1.5/Textures/Genes/Icons/vagina_base.dds
new file mode 100644
index 0000000..f9a2ee2
Binary files /dev/null and b/1.5/Textures/Genes/Icons/vagina_base.dds differ
diff --git a/1.5/Textures/Genes/Icons/vagina_base.png b/1.5/Textures/Genes/Icons/vagina_base.png
new file mode 100644
index 0000000..3f300a0
Binary files /dev/null and b/1.5/Textures/Genes/Icons/vagina_base.png differ
diff --git a/Common/Textures/Other/rjw-genes-previews/Preview.jpg b/1.5/Textures/Other/rjw-genes-previews/Preview.jpg
similarity index 100%
rename from Common/Textures/Other/rjw-genes-previews/Preview.jpg
rename to 1.5/Textures/Other/rjw-genes-previews/Preview.jpg
diff --git a/Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-10.jpg b/1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-10.jpg
similarity index 100%
rename from Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-10.jpg
rename to 1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-10.jpg
diff --git a/Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-5.jpg b/1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-5.jpg
similarity index 100%
rename from Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-5.jpg
rename to 1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-5.jpg
diff --git a/Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-6.jpg b/1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-6.jpg
similarity index 100%
rename from Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-6.jpg
rename to 1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-6.jpg
diff --git a/Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-7.jpg b/1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-7.jpg
similarity index 100%
rename from Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-7.jpg
rename to 1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-7.jpg
diff --git a/Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-8.jpg b/1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-8.jpg
similarity index 100%
rename from Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-8.jpg
rename to 1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-8.jpg
diff --git a/Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-9.jpg b/1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-9.jpg
similarity index 100%
rename from Common/Textures/Other/rjw-genes-previews/rjw-genes-preview-9.jpg
rename to 1.5/Textures/Other/rjw-genes-previews/rjw-genes-preview-9.jpg
diff --git a/1.5/Textures/Things/Mote/Cocoon/WeaveA.psd b/1.5/Textures/Things/Mote/Cocoon/WeaveA.psd
new file mode 100644
index 0000000..2328868
Binary files /dev/null and b/1.5/Textures/Things/Mote/Cocoon/WeaveA.psd differ
diff --git a/1.5/Textures/Things/Mote/Cocoon/WeaveB.psd b/1.5/Textures/Things/Mote/Cocoon/WeaveB.psd
new file mode 100644
index 0000000..c1a852e
Binary files /dev/null and b/1.5/Textures/Things/Mote/Cocoon/WeaveB.psd differ
diff --git a/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_east.dds b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_east.dds
new file mode 100644
index 0000000..bf8cc19
Binary files /dev/null and b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_east.dds differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_east.png b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_east.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_east.png
rename to 1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_east.png
diff --git a/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_north.dds b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_north.dds
new file mode 100644
index 0000000..0f1967e
Binary files /dev/null and b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_north.dds differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_north.png b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_north.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_north.png
rename to 1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_north.png
diff --git a/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_south.dds b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_south.dds
new file mode 100644
index 0000000..021f6ad
Binary files /dev/null and b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_south.dds differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_south.png b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_south.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_south.png
rename to 1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail_south.png
diff --git a/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_east.dds b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_east.dds
new file mode 100644
index 0000000..7b0c750
Binary files /dev/null and b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_east.dds differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_east.png b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_east.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_east.png
rename to 1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_east.png
diff --git a/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_north.dds b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_north.dds
new file mode 100644
index 0000000..9bd784f
Binary files /dev/null and b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_north.dds differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_north.png b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_north.png
similarity index 100%
rename from Common/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_north.png
rename to 1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_north.png
diff --git a/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_south.dds b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_south.dds
new file mode 100644
index 0000000..1128e9e
Binary files /dev/null and b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_south.dds differ
diff --git a/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_south.png b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_south.png
new file mode 100644
index 0000000..62453b0
Binary files /dev/null and b/1.5/Textures/Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings_south.png differ
diff --git a/1.6/Assemblies/Rjw-Genes.dll b/1.6/Assemblies/Rjw-Genes.dll
deleted file mode 100644
index 4778bf2..0000000
Binary files a/1.6/Assemblies/Rjw-Genes.dll and /dev/null differ
diff --git a/1.6/Defs/AbilityDefs/Ability_CockEater.xml b/1.6/Defs/AbilityDefs/Ability_CockEater.xml
deleted file mode 100644
index f5cc8ad..0000000
--- a/1.6/Defs/AbilityDefs/Ability_CockEater.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
- rjw_genes_ability_cockeater
- eat cock
- Eat the cock of another pawn, restoring fertilin based on the size of the cock.
- Genes/Icons/cockeater
- true
- true
- false
- Mote_CoagulateStencil
- Coagulate
- Coagulate_Cast
- CastAbilityOnThingMelee
- 402
-
- Verb_CastAbilityTouch
- false
- -1
- 10
-
- true
- false
- false
- false
- true
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/AbilityDefs/Ability_CocoonWeaver.xml b/1.6/Defs/AbilityDefs/Ability_CocoonWeaver.xml
deleted file mode 100644
index 434df04..0000000
--- a/1.6/Defs/AbilityDefs/Ability_CocoonWeaver.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
- rjw_genes_ability_cocoonweaver
- cocoon
- Weaves the victim into a (self-sustaining) cocoon. The victim cannot move, but can be bred.
- Genes/Icons/Cocoon
- true
- true
- false
- Mote_CocoonStencil
- CocoonWeave
- CastAbilityOnThingMelee
- 404
-
- 30000
-
- Verb_CastAbilityTouch
- false
- -1
- 15
-
- true
- false
- false
- false
- true
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/AbilityDefs/Ability_Flight.xml b/1.6/Defs/AbilityDefs/Ability_Flight.xml
deleted file mode 100644
index d643940..0000000
--- a/1.6/Defs/AbilityDefs/Ability_Flight.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- rjw_genes_ability_flight
- fly
- Fly to a short location using your wings.
- Genes/Icons/Succubus_Wings
- 1250
- false
-
- Verb_CastAbilityJump
- fly
- false
- false
- 0.5
- 19.9
- true
- Longjump_Jump
- Longjump_Land
-
- true
- false
- false
-
-
- CastJump
-
-
\ No newline at end of file
diff --git a/1.6/Defs/AbilityDefs/Ability_MatingCall.xml b/1.6/Defs/AbilityDefs/Ability_MatingCall.xml
deleted file mode 100644
index 5600d56..0000000
--- a/1.6/Defs/AbilityDefs/Ability_MatingCall.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
- rjw_genes_ability_mating_call
- Mating Call
- Calls nearby animals to breed me.
- Genes/Icons/Mating_Call_2
-
- true
- false
-
- false
-
- 50
- 30
-
-
- 410
-
- 30000
-
- 5
- Verb_CastAbility
-
- False
- False
- True
- True
-
-
-
-
-
- PsycastPsychicEffect
-
-
- 30
-
-
- CompAbilityEffect_GiveHediff
- Hediff_Submitting
- True
-
-
- Being Bred is not an easy business.\nThis might lead to a broken pawn, torn genitalia and hybrid-pregnancies.\nMaybe this is what you want.\nThe pawn will `submit` and e.g. Insects might cocoon him.\n\nAre you sure to proceed?
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/AbilityDefs/Ability_NakedProwess.xml b/1.6/Defs/AbilityDefs/Ability_NakedProwess.xml
deleted file mode 100644
index 292af25..0000000
--- a/1.6/Defs/AbilityDefs/Ability_NakedProwess.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
- rjw_genes_ability_naked_prowess
- naked prowess
- Enhance the strength and resilience of your naked body with fertilin.
- Genes/Icons/rjw_naked_prowess
- Things/Mote/Heart
- CastAbilityOnThing
- False
- False
- True
-
- 126
- 0
-
-
- Verb_CastAbility
- 2
- 0
- False
- False
-
- true
- false
- false
- false
- false
- false
-
-
-
-
- CompAbilityEffect_GiveHediff
- rjw_genes_naked_prowess
- True
- true
-
-
-
- 0.15
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/AbilityDefs/Ability_ParalysingKiss.xml b/1.6/Defs/AbilityDefs/Ability_ParalysingKiss.xml
deleted file mode 100644
index 29e1588..0000000
--- a/1.6/Defs/AbilityDefs/Ability_ParalysingKiss.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
- rjw_genes_ability_paralysingkiss
- paralysing kiss
- Paralyse someone briefly with a kiss.
- Genes/Icons/rjw_genes_lips
- true
- true
- false
-
- 5
-
- Mote_CoagulateStencil
- Coagulate
- Coagulate_Cast
- 402
-
- Verb_CastAbilityTouch
- false
- -1
- 1
-
- true
- false
- false
- false
- true
-
-
-
-
- CompAbilityEffect_Stun
- -15
-
-
- rjw_genes_lips
-
-
- 0.1
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/AbilityDefs/Ability_PheromoneSpit.xml b/1.6/Defs/AbilityDefs/Ability_PheromoneSpit.xml
deleted file mode 100644
index 853a192..0000000
--- a/1.6/Defs/AbilityDefs/Ability_PheromoneSpit.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- rjw_genes_ability_pheromone_spit
- pheromone spit
- Spit a condensed ball of animal pheromones to mark a target. Nearby Animals will try to breed the target. This means all animals - hostile, friendly and wild.
- Genes/Icons/RJW_Genes_PheromoneSpit
-
- 3000
- 201
- true
-
- Verb_CastAbility
- 11
- 1.2
- PiercingSpine_Launch
-
- True
- False
- False
- False
-
-
-
-
- 25
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/AbilityDefs/Ability_PussyHeal.xml b/1.6/Defs/AbilityDefs/Ability_PussyHeal.xml
deleted file mode 100644
index f774ccd..0000000
--- a/1.6/Defs/AbilityDefs/Ability_PussyHeal.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
- rjw_genes_ability_pussyheal
- sexheal
- Rape another pawn, so you can heal them with your vagina's special healing power.
- Things/Mote/Heart
- false
- true
- false
- Mote_CoagulateStencil
- Coagulate
- Coagulate_Cast
- rjw_genes_lifeforce_healpussy
- 401
-
- Verb_CastAbilityTouch
- false
- -1
- 0
-
- true
- false
- false
- false
- true
-
-
-
-
- 0.3
-
-
- 0.4~0.8
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/AbilityDefs/Ability_Seduce.xml b/1.6/Defs/AbilityDefs/Ability_Seduce.xml
deleted file mode 100644
index 60d5d10..0000000
--- a/1.6/Defs/AbilityDefs/Ability_Seduce.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
- rjw_genes_ability_seduce
- seduce
- Seduce the target to approach the caster.
- Genes/Icons/seduce
- True
- true
- true
- false
-
- 10
-
- Mote_CoagulateStencil
- Coagulate
- Coagulate_Cast
-
- Verb_CastAbility
- 10
- 1
-
- false
- false
- false
- false
- true
-
-
-
-
- RJW_Genes.CompAbilityEffect_Seduce
- Caster
-
-
- Heart
-
-
- 0.20
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/DutyDefs/Duties_Succubus.xml b/1.6/Defs/DutyDefs/Duties_Succubus.xml
deleted file mode 100644
index bd67a24..0000000
--- a/1.6/Defs/DutyDefs/Duties_Succubus.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
- rjw_genes_flirt
-
-
-
-
- SatisfyingNeeds
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0.05
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0.1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/1.6/Defs/Effects/Fleck_Lifeforce.xml b/1.6/Defs/Effects/Fleck_Lifeforce.xml
deleted file mode 100644
index 53ac7b5..0000000
--- a/1.6/Defs/Effects/Fleck_Lifeforce.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- rjw_genes_lips
-
- Genes/Icons/rjw_genes_lips
-
- MetaOverlays
- 0.08
- 1.4
- 1.5
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/Effects/cocoonweave.xml b/1.6/Defs/Effects/cocoonweave.xml
deleted file mode 100644
index 573ccd2..0000000
--- a/1.6/Defs/Effects/cocoonweave.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
- CocoonWeave
-
-
- SubEffecter_SprayerChance
- BloodSplash
- 0.15
- 2~3
- 0.75~1.5
- (244, 244, 244)
- RandomDrawPosOnTarget
- true
-
-
-
-
-
- Mote_CocoonStencil
- MoteAttached
- Terrain
-
- 0.1
- 0.4
- 999999
- True
-
-
- Graphic_PawnBodySilhouette
- PawnSilhouetteStencil
- Things/Mote/Transparent
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneCategories.xml b/1.6/Defs/GeneDefs/GeneCategories.xml
deleted file mode 100644
index 4aabd12..0000000
--- a/1.6/Defs/GeneDefs/GeneCategories.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
- rjw_genes_gender
- gender
- 21
-
-
-
- rjw_genes_genitalia_type
- cosmetic - genitalia type
- 19
-
-
-
- rjw_genes_genitalia_extras
- genitalia count
- 17
-
-
-
- rjw_genes_genitalia_size
- genitalia size / attributes
- 15
-
-
-
- rjw_genes_fertilin
- fertilin
- 14
-
-
-
- rjw_genes_breeding
- breeding
- 13
-
-
-
- rjw_genes_fluids
- fluids
- 12
-
-
-
- rjw_genes_damage
- genital-related damage
- 11
-
-
-
- rjw_genes_special
- genital-based special abilities
- 8
-
-
-
- rjw_genes_diseases
- genetic STDs
- 22
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneDefs_Breeding.xml b/1.6/Defs/GeneDefs/GeneDefs_Breeding.xml
deleted file mode 100644
index 73750a5..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_Breeding.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-
-
- rjw_genes_breeding
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_mechbreeder
- mechbreeder
- Carriers of this gene are able to birth mechanoids unharmed.
- World/WorldObjects/Expanding/Mechanoids
- 51
- 1
- -1
-
-
-
- rjw_genes_zoophile
- zoophile
- Carriers of this Gene are drawn to animals sexually.
- Genes/Icons/Zoophile
- 54
-
-
- Zoophile
-
-
-
-
-
- rjw_genes_fertile_anus
- fertile anus
- Carriers of this gene have a functional uterus if they do not possess one by means of their vagina. For males, it is connected to the anal cavity and leads to a normal pregnancy.
- Genes/Icons/Fertile_anus
- 54
-
-
-
- rjw_genes_insectincubator
- insect incubator
- RJW_Genes.Gene_InsectIncubator
- Carriers of this gene fertilize insect eggs that are placed inside them.
- Genes/Icons/Egg
- 52
- 1
- -1
-
-
-
- rjw_genes_insectbreeder
- insect breeder
- Carriers of this gene are able to fertilize eggs with any fertile penis.
- Genes/Icons/Insect_Breeder
- 53
- 1
- -1
-
-
-
- rjw_genes_fervent_ovipositor
- fervent ovipositor
- RJW_Genes.Gene_FerventOvipositor
- Carriers of this gene that have a female (egg producing) ovipositor produce eggs at drastically increased speed.
- Genes/Icons/Fervent_Ovipositor
- 55
- 1
- -1
-
-
-
- rjw_genes_mating_call
- mating call
- Carriers of this gene are able to call nearby animals and invite them for mating.
- Genes/Icons/RJW_Genes_Mating_Call
- 65
-
- rjw_genes_ability_mating_call
-
-
- rjw_genes_ability_mating_call
-
- 2
- -1
-
-
-
- rjw_genes_pheromone_spit
- pheromone spit
- Carriers of this gene are able to release a burst of pheremones on another, making them desirable and breedable to nearby animals.
- Genes/Icons/RJW_Genes_PheromoneSpit
- 66
-
- rjw_genes_ability_pheromone_spit
-
-
- rjw_genes_ability_pheromone_spit
-
- 2
- -1
-
-
-
- rjw_genes_hardwired_progenity
- hardwired progenity
- Carriers of this gene need to procreate. They suffer negative effects if they are childless, and have increased capabilities if they reach a high amount of offsprings.
- Genes/Icons/hardwired_progenity
- 70
-
-
-
-
- -0.1
- 1.2
- 1.2
- +0.15
- -0.1
-
-
-
-
- 0.05
- 0.1
- 0.1
- 0.4
-
-
-
-
- 0.15
- 0.25
- -0.25
-
-
-
-
- 1
- 0
-
-
-
- rjw_genes_basic_rut
- rut
- Carriers of this gene can enter a state of heat, resulting in drastically higher sexual activity.
- Genes/Icons/rut
- 1
- 1
- 11
- RJW_Genes.Gene_Rut
-
-
-
- 60000
- 0.05
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneDefs_Cosmetic.xml b/1.6/Defs/GeneDefs/GeneDefs_Cosmetic.xml
deleted file mode 100644
index bd8e949..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_Cosmetic.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
- Miscellaneous
- true
-
- Wing
-
-
-
-
- rjw_genes_succubus_wings
- succubus wings
- Carriers of this gene grow succubus wings.
- Genes/Icons/Succubus_Wings
- (0.75, 0.75, 0.75)
- 1000
-
- rjw_genes_ability_flight
-
-
- rjw_genes_ability_flight
-
- 1
- -1
- 0
-
-
- PawnRenderNodeWorker_AttachmentBody
- Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Wings
- 1.5
- Body
- Skin
-
-
- -2
-
- true
-
- 90
-
-
-
-
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
- DemonLoverQuirk
-
-
-
-
-
- rjw_genes_succubus_tail
- succubus tail
- Carriers of this gene grow a slender tail ending with a heart that can act as a dexterous fifth limb.
- Genes/Icons/Succubus_Tail
- (1, 0, 0)
- 1000
-
-
- Manipulation
- 0.05
-
-
- 1
- -1
- 0
-
-
- PawnRenderNodeWorker_AttachmentBody
- Things/Pawn/Humanlike/BodyAttachments/RJW_Genes_Succubus_Tail
- (1.5, 1.5)
- Body
- Skin
- Fresh, Rotting
-
- true
-
- -2
-
-
- (0, 0, -0.15)
- 90
-
-
- (-0, 0, -0.15)
-
-
- (-0.2, 0, -0.15)
-
-
- (0.2, 0, -0.15)
-
-
-
-
- true
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
- DemonLoverQuirk
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneDefs_Damage.xml b/1.6/Defs/GeneDefs/GeneDefs_Damage.xml
deleted file mode 100644
index 9b159e6..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_Damage.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
- rjw_genes_unbreakable
- unbreakable
- rjw_genes_damage
- Carriers of this gene are unable to get mood or social penalties from being raped and they cannot be broken for a long period of time.
- Genes/Icons/TrialDefend
- 2
- -1
- 1
-
- RJW_Genes.Gene_Unbreakable
-
- FeelingBroken
-
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_elasticity
- elasticity
- rjw_genes_damage
- This Xenotype does not suffer any injury from being stretched by large penetrations or large volumes of fluid.
- Genes/Icons/Elasticity
-
- -1
- 1
- 1
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneDefs_Diseases.xml b/1.6/Defs/GeneDefs/GeneDefs_Diseases.xml
deleted file mode 100644
index 6671b32..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_Diseases.xml
+++ /dev/null
@@ -1,342 +0,0 @@
-
-
-
-
- rjw_genes_diseases
- false
-
-
- Genes/Icons/RJW_Genes_Endogene_Disease_Background
- Genes/Icons/RJW_Genes_Endogene_Disease_Background
-
-
-
-
-
- rjw_genes_diseases
- rjw_genes_genetic_disease_immunity
- 1
- 1.15
- genetic disease immunity
- Carriers of this gene are immune against genetic STDs and some other genes that imply negative side-effects.
- 1
- -1
- Genes/Icons/disease_immunity
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_diseases
- rjw_genes_disease_carrier
- 1
- 1.1
- disease carrier
- Carriers of this gene are asymptomatic to genetic STDs, yet they are capable of spreading them on intercourse.
- 2
- -2
- Genes/Icons/disease_immunity
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
-
- rjw_genes_minor_vulnerability
- minor vulnerability
- Carriers of this gene are a bit more vulnerable, and a slightly more attractive target for rape.
- 1
- 1
- 0.85
- Genes/Icons/minor_vulnerability
- 5
-
-
- 0.15
-
-
-
- RJW_Genes_Vulnerability
-
-
-
-
- 0.05
-
-
-
-
-
- rjw_genes_major_vulnerability
- major vulnerability
- Carriers of this gene are more vulnerable, and a more attractive target for rape.
- 2
- 1
- Genes/Icons/major_vulnerability
- 6
-
-
- RJW_Genes_Vulnerability
-
-
-
- 0.3
-
-
-
-
- 0.03
-
-
-
-
-
-
- rjw_genes_infectious_blocked_masturbation
- infectious masturbation block
- Carriers of this gene are unable to masturbate - they need a partner or equipment.
- Genes/Icons/blocked_masturbation
- 55
- 1
- 2
-
-
- 0.05
-
-
-
-
-
- rjw_genes_infectious_low_fertility
- infectious low fertility vulnerability
- Carriers of this genetic disease have lower fertility.
- 1
- 1
- 0.9
- UI/Icons/ColonistBar/Idle
- 5
-
-
- -0.15
-
-
-
-
- 0.05
-
-
-
-
-
- rjw_genes_infectious_increased_sex_need
- infectious increased sexneed
- Carriers of this genetic disease need more sex.
- 0
- 1
- 0.9
- UI/Icons/ColonistBar/Idle
- 5
-
-
- 0.15
-
-
-
-
- 0.08
-
-
-
-
-
- rjw_genes_infectious_major_increased_sex_need
- major infectious increased sexneed
- Carriers of this genetic disease need a lot more sex.
- 1
- 2
- 0.85
- UI/Icons/ColonistBar/Idle
- 5
-
-
- 1.0
-
-
-
-
- 0.03
-
-
-
-
-
- rjw_genes_infectious_hypersexuality
- infectious hypersexuality
- Carriers of this genetic disease are hypersexual, and have a chance to spread this gene during intercourse.
- Genes/Icons/Hypersexual
- 2
- 2
- 7
-
- rjw_genes_hypersexuality_trait_giver
-
-
-
-
- Nymphomaniac
-
-
-
-
-
- 0.05
-
-
-
-
-
- rjw_genes_infectious_bisexuality
- infectious bisexuality
- Carriers of this genetic disease are bisexual, and have a chance to spread this gene during intercourse.
- Genes/Icons/bisexuality
- 1
- 0
- 8
-
-
- rjw_genes_bisexuality_trait_giver
- rjw_genes_sexual_orientation
-
-
-
-
- Bisexual
-
-
-
-
-
- 0.1
-
-
-
-
-
- rjw_genes_infectious_homosexuality
- infectious homosexuality
- Carriers of this genetic diseases are homosexual, and have a chance to spread this gene during intercourse.
- Genes/Icons/homosexuality
- 1
- 0
- 9
-
-
- rjw_genes_homosexuality_trait_giver
- rjw_genes_sexual_orientation
-
-
-
-
- Gay
-
-
-
-
-
- 0.1
-
-
-
-
-
- rjw_genes_fluctual_sexual_needs
- fluctual sexual needs
- Carriers of this genetic disease have a chance to suddenly require sex, gaining a bit of energy to find quick relief.
- UI/Icons/ColonistBar/Idle
- 1
- 2
- 11
- RJW_Genes.Gene_FluctualSexualNeed
-
-
- 0.1
-
-
-
- 30000
- 0.15
-
-
-
-
-
-
- rjw_genes_size_blinded
- size blinded
- Carriers of this genetic disease are dramatically more drawn to pawns with huge cocks.
- Genes/Icons/size_blinded
- 1
- 1
- 11
-
-
- 0.1
-
-
-
-
-
- rjw_genes_stretcher
- genetic stretcher
- Carriers of this gene have a chance to alter the genes of their sexual partners to prefer large cocks.
- Genes/Icons/stretcher
- 1
- 0
- 12
-
-
-
- rjw_genes_size_blinded
-
-
-
- 0.05
-
- rjw_genes_size_blinded
-
-
-
-
-
-
-
- rjw_genes_infectious_rut
- Rut
- Carriers of this gene can enter a state of heat, resulting in drastically higher sexual activity.
- Genes/Icons/rut
- 1
- 2
- 11
- RJW_Genes.Gene_Rut
-
-
-
- 60000
- 0.05
-
-
- 0.1
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml b/1.6/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml
deleted file mode 100644
index eec2a22..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml
+++ /dev/null
@@ -1,175 +0,0 @@
-
-
-
-
- false
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_extra_penis
- extra penis
- rjw_genes_genitalia_extras
-
- Male Carriers with this gene grow an additional penis .
- Genes/Icons/extra_male
- RJW_Genes.Gene_ExtraPenis
- 701
-
- PenisAmount
-
-
-
-
- rjw_genes_no_penis
- no penis
- rjw_genes_genitalia_extras
- Male Carriers of this gene do not have a penis.
- Genes/Icons/No_Male_Genitalia
- RJW_Genes.Gene_NoPenis
- 702
-
- PenisAmount
-
-
-
-
-
- rjw_genes_extra_vagina
- extra vagina
- rjw_genes_genitalia_extras
- Female Carriers with this gene grow an additional vagina .
- Genes/Icons/Extra_Vagina
- RJW_Genes.Gene_ExtraVagina
- 703
-
- VaginaAmount
-
-
-
-
- rjw_genes_no_vagina
- no vagina
- rjw_genes_genitalia_extras
- Female Carriers of this gene do not have a vagina.
- Genes/Icons/No_Vagina
- RJW_Genes.Gene_NoVagina
- 704
-
- VaginaAmount
-
-
-
-
-
- rjw_genes_extra_breasts
- extra breasts
- rjw_genes_genitalia_extras
- Female Carriers of this gene grow an additional pair of breasts .
- Genes/Icons/Extra_Breasts
- RJW_Genes.Gene_ExtraBreasts
- 705
-
- BreastAmount
-
-
-
-
- rjw_genes_no_breasts
- no breasts
- rjw_genes_genitalia_extras
- Female Carriers of this gene do not have a pair of breasts, but only nipples.
- Genes/Icons/No_Breasts
- RJW_Genes.Gene_NoBreasts
- 706
-
- BreastAmount
-
-
-
-
- rjw_genes_extra_anus
- extra anus
- rjw_genes_genitalia_extras
- Carriers of this gene have an extra anus.
- Genes/Icons/Extra_Anus
- RJW_Genes.Gene_ExtraAnus
- 707
-
- AnusAmount
-
-
-
-
- rjw_genes_no_anus
- no anus
- rjw_genes_genitalia_extras
- Carriers of this gene have no anus.
- Genes/Icons/No_Anus
- RJW_Genes.Gene_NoAnus
- 708
-
- AnusAmount
-
-
-
-
- rjw_genes_futa
- futanari
- rjw_genes_gender
- Male Carriers of this gene grow additional female genitalia, Female Carriers grow additional male genitalia.
- Genes/Icons/Futa
- RJW_Genes.Gene_Futa
- 709
-
- PenisAmount
- VaginaAmount
-
-
-
-
- rjw_genes_femboy
- femboy
- rjw_genes_gender
- Male Carriers of this gene are considered female despite having a penis
- Genes/Icons/Futa
- RJW_Genes.Gene_Femboy
- 709
-
- PenisAmount
- VaginaAmount
-
-
-
-
- rjw_genes_featureless_chest
- rjw_genes_genitalia_extras
- featureless chest
- Carriers of this gene do not have breasts or nipples.
- Genes/Icons/No_Breasts
- RJW_Genes.Gene_FeaturelessChest
- 710
-
- BreastAmount
-
-
-
-
- rjw_genes_udder
- udder
- rjw_genes_genitalia_extras
- Carriers of this gene have udders and breasts.
- Genes/Icons/RJW_Genes_Udder
- RJW_Genes.Gene_UdderBreasts
- 711
-
- BreastAmount
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneDefs_Fluids.xml b/1.6/Defs/GeneDefs/GeneDefs_Fluids.xml
deleted file mode 100644
index eb68666..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_Fluids.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-
- rjw_genes_fluids
-
- FluidAmount
-
- false
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_no_fluid
- no fluid
- Carriers of this gene produce no sexual fluids.
- Genes/Icons/No_Cum
- RJW_Genes.Gene_ChangeFluidAmount
- 533
- 0
- 1
-
-
- 0.0
-
-
-
-
-
- rjw_genes_much_fluid
- much fluid
- Carriers of this gene produce a lot of sexual fluids.
- Genes/Icons/Much_Cum
- RJW_Genes.Gene_ChangeFluidAmount
- 534
- 1
- 0
-
-
- 3.0
-
-
-
-
-
- rjw_genes_very_much_fluid
- very much fluid
- Carriers of this gene produce an excessive amount of sexual fluids.
- Genes/Icons/Very_Much_Cum
- RJW_Genes.Gene_ChangeFluidAmount
- 535
- 1
- -1
-
-
- 15.0
-
-
-
-
-
-
- rjw_genes_fluids
- false
- RJW_Genes.Gene_ChangeFluidType
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_fluid_insect_spunk
- insect spunk
- Carriers of this gene produce insect spunk instead of cum.
- Genes/Icons/RoundC
- 311
-
-
- InsectSpunk
- InsectSpunk
-
-
-
-
-
-
-
- rjw_genes_fluid_cum_breasts
- cum milk
- Carriers of this gene produce cum from their breasts instead of milk.
- Genes/Icons/RoundC
- 312
-
-
- Cum
-
-
-
-
-
- rjw_genes_fluid_milk_penis
- milk cum
- Carriers of this gene produce milk from their penis instead of cum.
- Genes/Icons/RoundC
- 313
-
-
- Milk
-
-
-
-
-
- rjw_genes_generous_donor
- generous donor
- rjw_genes_fluids
- When this Xenotype transfers fluids during sex, the giver will not get hungry.
- Genes/Icons/Generous_Donor
- 538
-
- 2
- -1
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneDefs_GenitaliaSizes.xml b/1.6/Defs/GeneDefs/GeneDefs_GenitaliaSizes.xml
deleted file mode 100644
index 208b193..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_GenitaliaSizes.xml
+++ /dev/null
@@ -1,180 +0,0 @@
-
-
-
- rjw_genes_genitalia_size
-
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
-
- rjw_genes_big_male_genitalia
- big male genitalia
- Carriers of this gene have larger penises.(Resizing takes place at 20th Birthday)
- Genes/Icons/Big_Male_Genitalia
- RJW_Genes.Gene_BigMaleGenitalia
- 751
-
- PenisSize
-
-
-
- 0.6
- 1.01
-
-
-
-
-
- rjw_genes_small_male_genitalia
- small male genitalia
- Carriers of this gene have smaller penises. (Resizing takes place at 20th Birthday)
- Genes/Icons/Small_Male_Genitalia
- RJW_Genes.Gene_SmallMaleGenitalia
- 753
-
- PenisSize
-
-
-
- 0.0
- 0.4
-
-
-
-
-
-
- rjw_genes_loose_female_genitalia
- loose female genitalia
- Carriers of this gene have spacious vaginas. (Resizing takes place at 20th Birthday)
- Genes/Icons/Loose_Vagina
- RJW_Genes.Gene_LooseFemaleGenitalia
- 754
-
- VaginaSize
-
-
-
- 0.6
- 1.01
-
-
-
-
-
- rjw_genes_tight_female_genitalia
- tight female genitalia
- Carriers of this gene have tight vaginas.(Resizing takes place at 20th Birthday)
- Genes/Icons/Tight_Vagina
- RJW_Genes.Gene_TightFemaleGenitalia
- 756
-
- VaginaSize
-
-
-
- 0.0
- 0.4
-
-
-
-
-
-
- rjw_genes_big_breasts
- big breasts
- Carriers of this gene have larger breasts.(Resizing takes place at 20th Birthday)
- Genes/Icons/Big_Breasts
- RJW_Genes.Gene_BigBreasts
- 757
-
- BreastSize
-
-
-
- 0.6
- 1.0
-
-
-
-
-
- rjw_genes_small_breasts
- small breasts
- Carriers of this gene have smaller breasts.(Resizing takes place at 20th Birthday)
- Genes/Icons/Small_Breasts
- RJW_Genes.Gene_SmallBreasts
- 759
-
- BreastSize
-
-
-
- 0.0
- 0.4
-
-
-
-
-
-
- rjw_genes_loose_anus
- loose anus
- Carriers of this gene have a spacious anus.(Resizing takes place at 20th Birthday)
- Genes/Icons/Loose_Anus
- RJW_Genes.Gene_LooseAnus
- 760
-
- AnusSize
-
-
-
- 0.6
- 1.0
-
-
-
-
-
- rjw_genes_tight_anus
- tight anus
- Carriers of this gene have a tight anus.(Resizing takes place at 20th Birthday)
- Genes/Icons/Tight_Anus
- RJW_Genes.Gene_TightAnus
- 762
-
- AnusSize
-
-
-
- 0.0
- 0.4
-
-
-
-
-
-
-
- rjw_genes_evergrowth
- evergrowth
- One of the most regretted gene-modifications in the Glitterworlds: The (primary) genitalia will continue growing forever. This affects size and fluid output. Excessive growth can also effect mental stability! (Resizing takes place at 20th Birthday)
- Genes/Icons/Big_Male_Genitalia
- RJW_Genes.Gene_EvergrowingGenitalia
- 767
-
-
-
- 60000
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml b/1.6/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml
deleted file mode 100644
index 543c542..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml
+++ /dev/null
@@ -1,265 +0,0 @@
-
-
-
-
- rjw_genes_genitalia_type
- RJW_Genes.Gene_GenitaliaType
-
- GenitalType
-
- true
- 0
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
-
- rjw_genes_equine_genitalia
- equine genitalia
- Carriers of this gene develop equine genitalia.
- Genes/Icons/Genitalia_Equine
-
-
- HorsePenis
- HorseVagina
- Anus
-
-
- 802
-
-
-
- rjw_genes_human_genitalia
- human genitalia
- Carriers of this gene develop human genitalia.
- Genes/Icons/Genitalia_human
-
-
- Penis
- Vagina
- Anus
- Breasts
-
-
- 802
-
-
-
- rjw_genes_canine_genitalia
- canine genitalia
- Carriers of this gene develop canine genitalia.
- Genes/Icons/Genitalia_Canine
-
-
- DogPenis
- DogVagina
- Anus
-
-
- 803
-
-
-
- rjw_genes_feline_genitalia
- feline genitalia
- Carriers of this gene develop feline genitalia.
- Genes/Icons/RJW_Genes_Feline_Genitalia
-
-
- CatPenis
- CatVagina
- Anus
-
-
- 804
-
-
-
- rjw_genes_demonic_genitalia
- demonic genitalia
- Carriers of this gene have demonic genitalia.
- Genes/Icons/Genitalia_Demon
-
-
- DemonPenis
- DemonVagina
- DemonAnus
-
-
- DemonLoverQuirk
-
-
- 805
-
-
-
- rjw_genes_dragon_genitalia
- dragon genitalia
- Carriers of this gene develop dragon genitalia.
- Genes/Icons/Genitalia_Draconic
-
-
- DragonPenis
- DragonVagina
- Anus
-
-
- ScaleLoverQuirk
-
-
- 806
-
-
-
- rjw_genes_slime_genitalia
- slime genitalia
- Carriers of this gene have slime genitalia.
- Genes/Icons/Slime_Genitalia
-
-
- SlimeTentacles
- SlimeVagina
- SlimeAnus
- SlimeBreasts
-
-
- SlimeLoverQuirk
-
-
- 807
-
-
-
- rjw_genes_demonicT_genitalia
- demonic tentacle genitalia
- Carriers of this gene have demonic tentacle genitalia.
- Genes/Icons/Genitalia_tentacle_icon
-
-
- DemonTentaclePenis
- DemonVagina
- DemonAnus
-
-
- DemonLoverQuirk
-
-
- 807
-
-
-
- rjw_genes_crocodilian_genitalia
- crocodilian genitalia
- Carriers of this gene have crocodilian genitalia.
- Genes/Icons/Genitalia_croc_icon
-
-
- CrocodilianPenis
-
-
- ScaleLoverQuirk
-
-
- 807
-
-
-
- rjw_genes_racoon_genitalia
- racoon genitalia
- Carriers of this gene have racoon genitalia.
- Genes/Icons/Genitalia_racoon_icon
-
-
- RaccoonPenis
-
-
- 807
-
-
-
- rjw_genes_reptilian_genitalia
- reptilian genitalia
- Carriers of this gene have reptilian genitalia.
- Genes/Icons/Genitalia_hemi_icon
-
-
- HemiPenis
- CloacalVagina
- CloacalAnus
-
-
- ScaleLoverQuirk
-
-
- 807
-
-
-
- rjw_genes_Needle_genitalia
- narrow genitalia
- Carriers of this gene have very thin genitalia.
- Genes/Icons/Genitalia_thin_icon
-
-
- NeedlePenis
- NarrowVagina
-
-
- 807
-
-
-
- rjw_genes_ovipositor_genitalia
- insect genitalia
- Carriers of this gene have ovipositors similar to insects.
- Genes/Icons/Ovipositor_Genitalia
-
-
- OvipositorM
- OvipositorF
- InsectAnus
-
-
- ChitinLoverQuirk
-
-
- 808
-
- Egglaying
- AG_Egglaying
-
-
-
-
- rjw_genes_rodent_genitalia
- rodent genitalia
- Carriers of this gene develop rodent genitalia.
- Genes/Icons/Genitalia_croc_icon
-
-
- RodentPenis
- RodentVagina
-
-
-
-
-
- rjw_genes_cloacal_genitalia
- cloacal genitalia
- Carriers of this gene develop cloacal genitalia.
- Genes/Icons/Genitalia_croc_icon
-
-
- CloacalPenis
- CloacalVagina
- CloacalAnus
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneDefs_LifeForce.xml b/1.6/Defs/GeneDefs/GeneDefs_LifeForce.xml
deleted file mode 100644
index 66917b1..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_LifeForce.xml
+++ /dev/null
@@ -1,259 +0,0 @@
-
-
-
-
- rjw_genes_fertilin
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_lifeforce
- fertilin
- Carriers of this gene have a reserve of biological strength powered by a resource called fertilin. The resource can be gained and spent in various ways, some of which are unlocked by other genes.\n\nCarriers lose 5 fertilin per day from biological entropy. \n\nGene is inactive until carrier is able to have sex.
- RJW_Genes.Gene_LifeForce
- RJW_Genes.GeneGizmo_ResourceLifeForce
- fertilin
-
- 0.25
- 0.5
- 0.75
-
- true
- true
- A reserve of biological strength which can be gained and spent in a variety of ways. \n\nFertilin can be increased by absorbing cum, typically through oral sex or stored cum. \n\nIf fertilin reaches zero, {PAWN_nameDef} will become very unhappy and may try to obtain some forcefully.
- Genes/Icons/FertilinAlt
- 0
- -2
- 18
-
- Gives fertilin supply.
-
-
-
-
- fert
-
-
-
- 0.025
- 1
- 1
-
-
-
- rjw_genes_lifeforce_drain
- fertilin drain
- draining
- Carriers lose an additional 7.5 fertilin per day from biological entropy.
- fertilin
- RJW_Genes.Gene_LifeForceDrain
- Genes/Icons/FertilinDrainAlt
- rjw_genes_lifeforce
- 0.075
- 18
- -1
- 1
- 6
-
-
-
- rjw_genes_pussyhealing
- pussy healer
- pussyhealer
- Carriers of this gene are able use vaginal sex to tend to other's wounds.
- Genes/Icons/Healpussy
- rjw_genes_lifeforce
- 9
-
- rjw_genes_ability_pussyheal
-
-
- rjw_genes_ability_pussyheal
-
- 1
- -1
-
-
-
- life
-
-
- pussy
-
-
- heal
-
-
-
-
-
-
- rjw_genes_cockeater
- cockeater
- cockeater
- Carriers of this gene are able eat cocks to restore their fertilin supply. Cocks are consumed during this process.
- Genes/Icons/cockeater
- rjw_genes_lifeforce
- 11
-
- rjw_genes_ability_cockeater
-
-
- rjw_genes_ability_cockeater
-
- 1
- -1
-
-
-
- life
-
-
- cock
-
-
- eat
-
-
-
-
-
-
- rjw_genes_paralysingkiss
- paralysing kiss
- paralysing kiss
- Carriers of this gene are able to briefly stun an enemy with a kiss.
- Genes/Icons/Paralysing_Kiss
- rjw_genes_lifeforce
- 12
-
- rjw_genes_ability_paralysingkiss
-
-
- rjw_genes_ability_paralysingkiss
-
- 1
- -1
-
-
-
- stun
-
-
- kiss
-
-
-
-
-
-
- rjw_genes_seduce
- seduction
- seduction
- Carriers of this gene are able to seduce a pawn into having sex with them.
- Genes/Icons/seduce
- rjw_genes_lifeforce
- 13
-
- rjw_genes_ability_seduce
-
-
- rjw_genes_ability_seduce
-
- 1
- -1
-
-
-
-
- stun
-
-
- kiss
-
-
-
-
-
-
- rjw_genes_naked_prowess
- naked prowess
- Carriers of this gene are able to temporarily increase their strength and resilience, while they are naked.
- Genes/Icons/rjw_naked_prowess
- rjw_genes_lifeforce
- 14
-
- rjw_genes_ability_naked_prowess
-
-
- rjw_genes_ability_naked_prowess
-
- 1
- -1
-
-
-
- rjw_genes_cum_eater
- cum eater
- Carriers of this gene are able to absorb fertilin through eating cum. This includes oral sex, eating cum for food or sucking out cumflated pawns.
- Genes/Icons/cumeater
- rjw_genes_lifeforce
- 1
- 1
-
-
-
- rjw_genes_fertilin_absorber
- fertilin absorber
- Carriers of this gene are able to absorb the fertilin inside sperm through their vagina and anus.
- Genes/Icons/Vaginal_cum_absorption
- rjw_genes_lifeforce
- 2
- 1
-
-
-
- rjw_genes_lifeforce_empath
- empathic fertilin
- RJW_Genes.Gene_LifeForce_Empath
- Carriers of this gene generate fertilin if nearby pawns are sexually satisfied. Be careful: Sexually frustrated pawns will make your empath loose fertilin!
- Genes/Icons/Hypersexual
- rjw_genes_lifeforce
- 3
- 3
- -2
-
-
-
- 0.02
- 0.01
- -0.01
-
-
-
- 2500
-
-
-
- 25
-
-
-
-
-
- rjw_genes_drainer
- vitality drainer
- Carriers of this gene are able to absorb a great amount of fertilin by draining the vitality of the partner. This is done passively through having sex with a non-drained pawn that does not have this gene.
- Genes/Icons/Vitality_Drainer
- rjw_genes_lifeforce
- 4
- 1
- -1
-
-
diff --git a/1.6/Defs/GeneDefs/GeneDefs_Reproduction.xml b/1.6/Defs/GeneDefs/GeneDefs_Reproduction.xml
deleted file mode 100644
index 3cb9b2d..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_Reproduction.xml
+++ /dev/null
@@ -1,219 +0,0 @@
-
-
-
-
- rjw_genes_hypersexual
- hypersexuality
- Reproduction
- Carriers of this Gene are Hypersexual (Nymphs).
- Genes/Icons/Hypersexual
- 1
-
-
- Nymphomaniac
-
-
-
-
- rjw_genes_hypersexuality_trait_giver
-
-
- false
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_rapist
- rapist
- Reproduction
- Carriers of this gene are more inclined to force themselves on others sexually.
- Genes/Icons/Rape
- 1
- 2
-
-
- Rapist
-
-
-
- false
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_masochist
- masochist
- Reproduction
- Carriers of this gene enjoy being the target of pain.
- Genes/Icons/Rape
- 1
- 2
-
-
- Masochist
-
-
-
- false
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_homosexual
- homosexual
- Reproduction
- Carriers of this gene are Homosexuals.
- Genes/Icons/RoundC
- 0
- 3
-
-
- Gay
-
-
-
- rjw_genes_homosexuality_trait_giver
- rjw_genes_sexual_orientation
-
-
- false
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_bisexual
- bisexual
- Reproduction
- Carriers of this Gene are Bisexual.
- Genes/Icons/RoundC
- 0
- 4
-
-
- Bisexual
-
-
-
- rjw_genes_sexual_orientation
- rjw_genes_bisexuality_trait_giver
-
-
- false
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
-
- rjw_genes_no_sex_need
- asexual
- Carriers of this gene are not sexually interested in other pawns. They still can participate in sex, but their sex-need does not decline over time.
- Genes/Icons/Empty
- 5
- -1
- 2
- RJW_Genes.Gene_NoSexNeed
-
-
- Asexual
-
-
-
- false
-
- rjw_genes_sexual_orientation
-
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_littered_births
- littered births
- Reproduction
- Female carriers of this gene birth litters instead of just one baby, with a chance of having two to four babies per pregnancy.
- Genes/Icons/Gene_LitteredBirths
- 110
- 1.10
- -2
- 1
-
-
- ImpregnationFetishQuirk
-
-
-
- rjw_genes_littered_birth_vs_chestburst
-
-
-
-
- rjw_genes_pregnancy_overwrite
- sperm displacement
- Reproduction
- Carriers of this gene can 'overwrite' an existing pregnancy, keeping the
- progress but effectively replacing the father.
- Genes/Icons/pregnancy_overwrite
- 120
-
- 4
- -2
-
-
-
- 0.5
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_blocked_masturbation
- no masturbation
- Reproduction
- Carriers of this gene are unable to masturbate - they need a partner or equipment.
- Genes/Icons/blocked_masturbation
- 60
- 0
- 1
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneDefs_SexSpecial.xml b/1.6/Defs/GeneDefs/GeneDefs_SexSpecial.xml
deleted file mode 100644
index efc64cc..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_SexSpecial.xml
+++ /dev/null
@@ -1,280 +0,0 @@
-
-
-
-
- rjw_genes_special
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_orgasm_rush
- orgasm rush
- On orgasm, carriers of this gene get a boost in activity. (rest-need is partially filled)
- 1
- -2
- Genes/Icons/FleshPurity
- 1
-
-
-
- rjw_genes_youth_fountain
- youth fountain
- Carriers of this gene reverse the age of their sexual partners. (Partner stays adult)
- 2
- -2
- Genes/Icons/FireLeaves
- 2
-
-
-
- 60000
- 18
-
-
-
-
-
- rjw_genes_sex_age_drain
- sexual age drain
- Carriers of this gene drain the age from their sexual partners. (Pawn stays adult)
- 2
- -1
- UI/Icons/ColonistBar/Idle
- 3
-
-
-
- 120000
- 18
-
-
-
-
-
- rjw_genes_aphrodisiac_pheromones
- aphrodisiac pheromones
- RJW_Genes.Gene_Aphrodisiac_Pheromones
- Carriers of this gene produce and aphrodisiac pheremone making others nearby more sexually needy.
- Genes/Icons/Pheromones
- 4
- 1
- 1
-
-
-
- 1250
-
-
-
- 25
-
-
-
-
-
- rjw_genes_sexual_mytosis
- orgasmic mytosis
-
- Carriers of this gene have malfunctioning regenerative archites that grow more unstable with ongoing multiple orgasms - climaxing in a process of mytosis. This will result in an (biologically) identical pawn and both twins are set in a regenerative state. Also, the pawn can have multiple orgasms: In a state of higher unstableness, they come quicker.
- UI/Icons/Genes/Gene_PsychicBonding
- 5
- 5
- -5
- 1
-
-
-
- rjw_genes_hormonal_saliva
- hormonal saliva
- Carriers of this gene have saliva that stimulates growth in penises. Regular contact will lead to noticable growth.
- 2
- -1
- Genes/Icons/Big_Male_Genitalia
- 6
-
-
-
- 0.02
- 2.5
-
- 1.05
-
-
-
-
-
- rjw_genes_cocoonweaver
- cocoon weaver
- cocooner
- Carriers of this gene can produce a cocoon to prepare helpless (or willing) victims for breeding.
- Genes/Icons/Cocoon
- 11
-
- rjw_genes_ability_cocoonweaver
-
-
- rjw_genes_ability_cocoonweaver
-
- 1
- -1
-
-
- BreederQuirk
-
-
-
-
-
- rjw_genes_sex_tamer
- sexual tamer
- sextamer
- Carriers of this gene can bestow intelligence and docility to animals during sexual encounters, effectively increasing their training.
- Genes/Icons/RJW_Genes_SexualTamer
- 14
- 2
- -1
-
-
-
- rjw_genes_sexual_genetic_swap
- sexual genetic swap
- Carriers of this gene may switch a gene with their sex-partner. Switched Genes are always endogenes.
- Genes/Icons/sexual_genetic_swap
- 20
- 3
- 0
-
-
- 0.1
-
-
-
-
-
- rjw_genes_sexual_genetic_thief
- sexual gene thief
- Carriers of this gene may steal a gene from their sex-partner. Stolen genes are always xenogenes.
- Genes/Icons/sexual_genetic_thief
- 21
- 5
- -2
- 1
-
-
- 0.2
-
-
-
-
-
- rjw_genes_feminizer
- feminizer
- Carriers of this gene slowly turn male sexual partners into females.
- Genes/Icons/feminizer
- 31
- 4
- -1
-
-
-
- rjw_genes_feminizer
-
-
-
- rjw_genes_feminization_progress
- true
- 0.01
- 1.00
- false
- true
- false
-
-
-
- rjw_genes_female_only
- rjw_genes_no_penis
- rjw_genes_minor_vulnerability
-
-
- rjw_genes_small_male_genitalia
- rjw_genes_big_breasts
- Beard_NoBeardOnly
- Hair_LongOnly
-
- 0.25
- 0.1
-
-
-
-
-
- rjw_genes_twinkifier
- twinkifier
- Carriers of this gene slowly turn male sexual partners into breedable cute twinks.
- Genes/Icons/twinkifier
- 50
- 4
- -1
-
-
-
- rjw_genes_twinkifier
-
-
-
- rjw_genes_twinkification_progress
- true
- 0.01
- 1.00
- false
- true
- false
-
-
-
- rjw_genes_fertile_anus
- Beauty_Pretty
- Delicate
- rjw_genes_minor_vulnerability
- rjw_genes_infectious_homosexuality
-
-
- rjw_genes_small_male_genitalia
- Beard_NoBeardOnly
- Body_Thin
- rjw_genes_homosexual
-
- 0.25
- 0.1
-
-
-
-
-
-
- rjw_genes_electric_satisfaction
- electric satisfaction
-
- Carriers of this gene produce an electrical charge in nearby electronics during orgasm. This charge is substantial enough to charge batteries.
- Genes/Icons/RoundC
- 20
- 2
- 2
-
-
-
- 4
-
-
- 75
- 150
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/GeneDefs_SpecifiedGender.xml b/1.6/Defs/GeneDefs/GeneDefs_SpecifiedGender.xml
deleted file mode 100644
index c75f2a9..0000000
--- a/1.6/Defs/GeneDefs/GeneDefs_SpecifiedGender.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
- rjw_genes_female_only
- female
- rjw_genes_gender
- Carriers of this gene are only female.
- 0
- Genes/Icons/Female_Only
- RJW_Genes.Gene_FemaleOnly
- 1
-
- AG_Gender
- Gender
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_male_only
- rjw_genes_gender
- male
- Carriers of this gene are only male.
- 0
- Genes/Icons/Male_Only
- RJW_Genes.Gene_MaleOnly
- 2
-
- AG_Gender
- Gender
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_gender_fluid
- rjw_genes_gender
- genderfluid
- Carriers of this gene might change their biological sex daily.
- 0
- Genes/Icons/Futa
- RJW_Genes.Gene_GenderFluid
- 2
-
- 0.9
-
- AG_Gender
- Gender
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
- 120000
- 0.25
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/GeneDefs/Xenotype_Lifeforce.xml b/1.6/Defs/GeneDefs/Xenotype_Lifeforce.xml
deleted file mode 100644
index a4f5af1..0000000
--- a/1.6/Defs/GeneDefs/Xenotype_Lifeforce.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-
-
- rjw_genes_succubus
- succubus
- Succubi are strongly enhanced xenohumans. These overnaturally beautiful creatures strive parasitically on the Fertilin found in semen.
- Succubi are beautiful and extremely hungry Xenohumans. They strive on having sex and extracting their victims life-force through this.
- Genes/Icons/Xenotypes/Xenotype-Succubus
- PawnBecameSanguophage
- 0.5
- 0.1~140
- 1
- -1000
- 0.005
- false
-
- 0.02
- 0.02
- 0.02
- 0.02
- 0.02
- 0.02
-
-
- rjw_genes_bisexual
- rjw_genes_hypersexual
- rjw_genes_female_only
- rjw_genes_lifeforce
- rjw_genes_lifeforce_drain
- rjw_genes_demonic_genitalia
- rjw_genes_cum_eater
- rjw_genes_fertilin_absorber
- rjw_genes_paralysingkiss
- rjw_genes_seduce
- AptitudeRemarkable_Sex
- DominantGene
- rjw_genes_elasticity
- rjw_genes_succubus_wings
- rjw_genes_succubus_tail
- rjw_genes_aphrodisiac_pheromones
- Beauty_Pretty
- MoveSpeed_Quick
- AptitudeStrong_Social
- Ears_Pointed
- Headbone_MiniHorns
- Skin_Purple
-
-
-
-
- rjw_genes_incubus
- incubus
- Incubi are strongly enhanced xenohumans. These overnaturally beautiful creatures strive parasitically on the Fertilin found in semen.
- Incubi are beautiful and extremely hungry Xenohumans. They strive on having sex and extracting their victims life-force through this.
- Genes/Icons/Xenotypes/Xenotype-Incubus
- PawnBecameSanguophage
- 0.5
- 0.1~140
- 1
- -1000
- 0.005
- false
-
- 0.02
- 0.02
- 0.02
- 0.02
- 0.02
- 0.02
-
-
- rjw_genes_hypersexual
- rjw_genes_bisexual
- rjw_genes_male_only
- rjw_genes_lifeforce
- rjw_genes_lifeforce_drain
- rjw_genes_drainer
- rjw_genes_demonic_genitalia
- AptitudeRemarkable_Sex
- DominantGene
- rjw_genes_seduce
- rjw_genes_succubus_wings
- rjw_genes_succubus_tail
- rjw_genes_aphrodisiac_pheromones
- Beauty_Pretty
- MoveSpeed_Quick
- Robust
- UVSensitivity_Intense
- AptitudeStrong_Intellectual
- Ears_Pointed
- Headbone_CenterHorn
- Skin_InkBlack
-
-
-
-
- rjw_genes_cumazone
- Cumazone
- Cumazone are a female only xenotype that excel at melee combat. Originally created as bodyguards for glitterworld amazon communities, they spred to other systems by mere strength and providing for some fetishes. They can use Fertilin to enhance their skin to overpower any combatant in melee. Their only source for Fertilin is biting off male genitalia - so be sure to have a steady supply of victim males or prepare to raid unsuspecting men of the rim.
- Female only, strong meele fighters, that use Fertilin from bitten-off cocks for powerful buffs.
- Genes/Icons/Xenotypes/Xenotype-Cumazon
- 0.5
- 0.1~140
- 2.5
- -1000
- 0.01
- false
-
- WoundHealing_Fast
- NakedSpeed
- Aggression_Aggressive
- MeleeDamage_Strong
- KillThirst
- Robust
- Pain_Reduced
- Beauty_Ugly
- Hair_BaldOnly
- Hair_ShortOnly
- Brow_Heavy
- Body_Hulk
- AptitudeStrong_Shooting
- AptitudeRemarkable_Melee
- AptitudePoor_Crafting
- AptitudePoor_Artistic
- Unstoppable
- rjw_genes_rapist
- rjw_genes_female_only
- rjw_genes_lifeforce
- rjw_genes_lifeforce_drain
- rjw_genes_pussyhealing
- rjw_genes_cockeater
- rjw_genes_naked_prowess
- rjw_genes_orgasm_rush
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HediffDefs/Bioscaffold.xml b/1.6/Defs/HediffDefs/Bioscaffold.xml
deleted file mode 100644
index 8ddb8b4..0000000
--- a/1.6/Defs/HediffDefs/Bioscaffold.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
- Bioscaffold
- HediffWithComps
- bioscaffold
- This woman has an bioscaffold mesh within her womb, providing an enriching environment for an unborn baby to grow more quickly.
-
- Bioscaffold
-
- 0.001
- false
-
-
-
-
- Bioscaffold
- bioscaffold
- A single-use nanite-constructed lattice of organic mesh material meant to be installed inside a woman's womb prior to pregnancy. It provides an enriching environment for an unborn baby to grow more quickly.
-
- InstallBioscaffold
-
- Spacer
- Rare
- true
- 25
- false
-
- 30
- 350
- 0.15
- 1.3
- 6
- 800
-
-
-
- 5
- true
-
-
-
- 5
- 10
- 1
- 1
-
-
- DrugSynthesisSpeed
- Intellectual
-
- DrugLab
-
-
- 6
- 4
-
- FertilityProcedures
- 4
-
-
- ExoticMisc
-
-
-
-
- RemoveBioscaffold
- remove Bioscaffold
- Remove the bioscaffold.
-
- Bioscaffold
- Bioscaffold
-
- Removing bioscaffold.
- Bioscaffold
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HediffDefs/Hediffs_Aphrodisiac.xml b/1.6/Defs/HediffDefs/Hediffs_Aphrodisiac.xml
deleted file mode 100644
index 3d1048c..0000000
--- a/1.6/Defs/HediffDefs/Hediffs_Aphrodisiac.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
- rjw_genes_aphrodisiac_pheromone
- HediffWithComps
- induced libido
- sex drive increasing due to smelling aphrodisiac pheromones.
- (1,0,0.5)
- 1.0
-
-
- -4.0
-
-
-
-
- wearing off
-
- 1.25
-
-
-
- 0.35
- moderate
-
-
- 1.8
-
-
-
- 0.9
- strong
-
-
- 2.5
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HediffDefs/Hediffs_DiseaseCarrier.xml b/1.6/Defs/HediffDefs/Hediffs_DiseaseCarrier.xml
deleted file mode 100644
index 869d3aa..0000000
--- a/1.6/Defs/HediffDefs/Hediffs_DiseaseCarrier.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- rjw_genes_disease_carrier_storage
- HediffWithComps
- stored genetic diseases
- This pawn is capable of carrying genetic diseases without being infected.
- (240,200,110)
- false
- false
- false
-
-
-
-
- 300000
-
-
-
-
- active
- false
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HediffDefs/Hediffs_Evergrowth.xml b/1.6/Defs/HediffDefs/Hediffs_Evergrowth.xml
deleted file mode 100644
index c2fc098..0000000
--- a/1.6/Defs/HediffDefs/Hediffs_Evergrowth.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
- rjw_genes_evergrowth_sideeffect
- HediffWithComps
- genital hybris
- science has gone too far - a tool like this needs constant attention.
- (1,0,0.5)
- 1.0
-
-
- -0.025
-
-
-
-
- minor
-
- 3
-
-
-
- 0.5
- moderate
-
- 5
-
-
-
- Consciousness
- -0.05
-
-
-
-
- 0.9
- strong
-
- 7
-
-
-
- Consciousness
- -0.1
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HediffDefs/Hediffs_Fertilin.xml b/1.6/Defs/HediffDefs/Hediffs_Fertilin.xml
deleted file mode 100644
index 5b56717..0000000
--- a/1.6/Defs/HediffDefs/Hediffs_Fertilin.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-
- rjw_genes_fertilin_lost
- Hediff_HemogenCraving
- lost fertilin
- Percentage of fertilin lost.
- (1,1,1)
- 1
-
-
- -0.5
-
-
-
-
- true
-
-
-
-
-
- rjw_genes_succubus_drained
- HediffWithComps
- Drained
- The vitality of this pawn has been drained. Cannot be drained again until fully
- recovered.
- (1,0,0.5)
- 1.0
- 1.0
-
-
- -0.25
-
-
-
-
- minor
-
-
- Consciousness
- -0.1
-
-
- 0.1
-
- -0.1
-
-
-
- 0.5
- moderate
-
-
- Consciousness
- -0.2
-
-
- 0.05
- 0.20
-
- -0.1
-
-
-
- 0.8
- severe
-
-
- Consciousness
- -0.3
-
-
-
- -0.2
-
- 0.4
- 0.1
- 0.35
-
-
-
-
-
- rjw_genes_fertilin_craving
- fertilin craving
- Hediff_HemogenCraving
- weakened due to running out of fertilin.
- (1,0,0.5)
- 1.0
- 0.01
-
-
- minor
- 0.05
-
-
- Consciousness
- 0.9
-
-
-
-
- moderate
- 0.35
- 0.1
-
-
- Consciousness
- 0.8
-
-
-
-
- major
- 0.7
- 0.15
-
-
- Consciousness
- 0.5
-
-
-
-
-
-
- 0.05
- -0.1
-
-
-
-
-
- rjw_genes_naked_prowess
- (0.52, 1, 0.95)
- naked prowss
- Driven by fertilin, this person has greatly increased strength and resilience.
- HediffWithComps
-
-
-
-
- 0.5
- 0.5
- 0.5
-
-
- 0.5
- 1.5
-
-
-
-
-
- True
- 5000
-
-
-
-
- false
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HediffDefs/Hediffs_InfectiveGenderChanges.xml b/1.6/Defs/HediffDefs/Hediffs_InfectiveGenderChanges.xml
deleted file mode 100644
index 4e97276..0000000
--- a/1.6/Defs/HediffDefs/Hediffs_InfectiveGenderChanges.xml
+++ /dev/null
@@ -1,147 +0,0 @@
-
-
-
-
- rjw_genes_feminization_progress
- HediffWithComps
- feminization
- Something is changing this pawn - there is a chance to develop female features
- upon sex.
- false
- 1.0
- false
- false
-
-
- -0.01
-
-
-
-
-
- neglectable
- false
-
-
-
- minor
- 0.6
- true
-
-
- Consciousness
- -0.05
-
-
-
- 0.25
-
-
-
-
- severe
- 0.8
-
-
- Consciousness
- -0.05
-
-
- true
-
- 0.5
- 0.25
-
-
-
-
- critical
- 0.9
-
-
- Consciousness
- -0.1
-
-
- true
-
- 1.0
- 0.5
-
-
-
-
-
-
-
- rjw_genes_twinkification_progress
- HediffWithComps
- twinkification
- Something is changing this pawn - there is a chance to turn into a cute,
- breedable twink upon sex.
- false
- 1.0
- false
- false
-
-
- -0.01
-
-
-
-
-
- neglectable
- false
-
-
-
- minor
- 0.6
- true
-
-
- Consciousness
- -0.05
-
-
-
- 0.25
-
-
-
-
- severe
- 0.8
-
-
- Consciousness
- -0.05
-
-
- true
-
- 0.5
- 0.25
-
-
-
-
- critical
- 0.9
-
-
- Consciousness
- -0.1
-
-
- true
-
- 1.5
- 0.5
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HediffDefs/Hediffs_OrgasmRush.xml b/1.6/Defs/HediffDefs/Hediffs_OrgasmRush.xml
deleted file mode 100644
index 255b3e9..0000000
--- a/1.6/Defs/HediffDefs/Hediffs_OrgasmRush.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
- rjw_genes_orgasm_rush_hediff
- HediffWithComps
- orgasm rush
- Xenotypes with this Gene are pushed beyond normal limits when they have an orgasm.
- (240,200,110)
- false
- 1.0
- false
- false
-
-
- -0.75
-
-
-
-
- pumped
-
- 4
- 4
-
-
-
- Consciousness
- 0.05
-
-
-
-
- charged
- 0.4
-
- 8
- 8
-
-
-
- Moving
- 0.08
-
-
- Consciousness
- 0.08
-
-
-
-
- super-charged
- 0.7
-
- 10
- 10
-
-
-
- Moving
- 0.1
-
-
- Consciousness
- 0.1
-
-
- BloodPumping
- 0.1
-
-
-
-
-
-
-
-
diff --git a/1.6/Defs/HediffDefs/Hediffs_OrgasmicMytosis.xml b/1.6/Defs/HediffDefs/Hediffs_OrgasmicMytosis.xml
deleted file mode 100644
index f26d1a9..0000000
--- a/1.6/Defs/HediffDefs/Hediffs_OrgasmicMytosis.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-
-
-
-
- rjw_genes_orgasmic_mytosis_hediff
- HediffWithComps
- Orgasmic Instability
- Xenotypes with this Gene grow more unstable on orgasm - upon reaching critical level they will initate a process of mytosis.
- (240,200,110)
- false
- 1.0
- false
- false
-
-
- -0.9
-
-
-
-
- stable
-
-
- Moving
- 0.05
-
-
- Consciousness
- 0.08
-
-
-
-
- agitated
- 0.4
-
-
- Moving
- 0.15
-
-
- Consciousness
- 0.15
-
-
-
-
- unstable
- 0.7
-
-
- Moving
- -0.1
-
-
- Consciousness
- -0.1
-
-
- BloodPumping
- +0.2
-
-
-
-
-
- critical
- 0.9
-
-
- Moving
- -0.25
-
-
- Consciousness
- -0.25
-
-
- BloodPumping
- +0.5
-
-
-
-
-
-
-
- rjw_genes_mytosis_shock_hediff
- HediffWithComps
- Mytosis Shock
- Recently underwent (successful) mytosis. As this is a taxing process, some time for regeneration is required. While regenerating, no new mytosis can be started.
- (240,200,110)
- false
- 1.0
- true
- false
-
-
- -0.20
-
-
-
-
- wearing off
-
-
- Moving
- -0.25
-
-
- Consciousness
- -0.25
-
-
-
-
- fresh
- 0.6
-
-
- Moving
- -0.50
-
-
- Consciousness
- -0.7
-
-
-
-
-
-
-
-
-
-
diff --git a/1.6/Defs/HediffDefs/Hediffs_Rut.xml b/1.6/Defs/HediffDefs/Hediffs_Rut.xml
deleted file mode 100644
index 6c6ac10..0000000
--- a/1.6/Defs/HediffDefs/Hediffs_Rut.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
- rjw_genes_genetic_rut
- HediffWithComps
- Rut
- Based on genetics, this pawn is in heat.
- (240,200,110)
- false
- 1.0
- false
- false
-
-
- -1.00
-
-
-
-
- calming down
-
- 0.50
-
-
-
- BloodPumping
- 0.1
-
-
-
-
- in heat
- 0.4
-
- 2.00
-
-
-
- Moving
- 0.1
-
-
- BloodPumping
- 0.15
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HediffDefs/LimbicStimulator.xml b/1.6/Defs/HediffDefs/LimbicStimulator.xml
deleted file mode 100644
index 4df35ba..0000000
--- a/1.6/Defs/HediffDefs/LimbicStimulator.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
- LimbicStimulator
- HediffWithComps
- limbic stimulator
- limbic stimulator
- An installed limbic stimulator.
-
- (1.0, 0.6, 0.7)
-
-
- 0
-
- -1.0
- 6.0
-
-
-
-
-
-
- LimbicStimulator
- limbic stimulator
- A perpetual slow-release chemical stimulation implant that is embedded deep within the reward center of the brain, greatly increasing the need for lovin'. The need is said to become so strong that it can drive people to force themselves onto others, even if they wouldn't otherwise. Post-lovin' clarity will leave the implanted in a state of bliss, but they may also feel a sense of regret if they steal lovin' if they normally wouldn't - at least until they become used to doing it.
-
- InstallLimbicStimulator
-
-
- 30
- 4
- 1
-
-
- FertilityProcedures
-
-
-
-
- RemoveLimbicStimulator
- remove limbic stimulator
- Remove the limbic stimulator.
-
- LimbicStimulator
- LimbicStimulator
-
- Removing limbic stimulator.
- LimbicStimulator
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HediffDefs/OvaryAgitator.xml b/1.6/Defs/HediffDefs/OvaryAgitator.xml
deleted file mode 100644
index 47d4409..0000000
--- a/1.6/Defs/HediffDefs/OvaryAgitator.xml
+++ /dev/null
@@ -1,149 +0,0 @@
-
-
-
-
- OvaryAgitator
- ovary agitator
- An installed ovary agitator.
-
- OvaryAgitator
-
- HediffWithComps
- 0.0001
-
-
-
-
- RJW_Fertility
- 0.50
-
-
-
-
- 0.1
-
-
- RJW_Fertility
- 0.22
-
-
-
-
- 0.2
-
-
- RJW_Fertility
- 0
-
-
-
-
- 0.3
-
-
- RJW_Fertility
- -0.17
-
-
-
-
- 0.4
-
-
- RJW_Fertility
- -0.32
-
-
-
-
- 0.5
-
-
- RJW_Fertility
- -0.48
-
-
-
-
- 0.6
-
-
- RJW_Fertility
- -0.54
-
-
-
-
- 0.7
-
-
- RJW_Fertility
- -0.63
-
-
-
-
- 0.8
-
-
- RJW_Fertility
- -0.69
-
-
-
-
- 0.9
-
-
- RJW_Fertility
- -0.75
-
-
-
-
- 1
-
-
- RJW_Fertility
- -100
-
-
-
-
-
-
- 0.0045
-
-
-
-
-
- OvaryAgitator
- ovary agitator
- A crude slaver implant used to increase the number of eggs released during ovulation, increasing the likelihood of having multiple children per pregnancy. Their use is largely limited to rimworlds lacking in cloning infrastructure as most civilized and unified worlds have outlawed them.\n\nWhile it provides an initial boost in fertility, the implant will slowly deplete the victims's ovaries over several years until they're infertile. Allies of implanted victims will be angered.
-
- InstallOvaryAgitator
-
-
- 10
- 1
- 6
-
-
- FertilityProcedures
-
-
-
-
- RemoveOvaryAgitator
- remove ovary agitator
- Remove the ovary agitator.
-
- OvaryAgitator
- OvaryAgitator
-
- Removing ovary agitator.
- OvaryAgitator
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HediffDefs/Scrambler.xml b/1.6/Defs/HediffDefs/Scrambler.xml
deleted file mode 100644
index 4ab6071..0000000
--- a/1.6/Defs/HediffDefs/Scrambler.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
- Scrambler
- scrambler
- scrambler
- An installed scrambler.
-
- Scrambler
-
- (0.9, 0.5, 1.0)
-
-
- 0
-
- 0.40
- 3.0
-
-
-
- Consciousness
- 0.6
-
-
- Talking
- 0.2
-
-
-
-
-
-
-
- Scrambler
- scrambler
- A slaver implant, similar to the mindscrew, that can inject disorienting mind imagery directly into the visual cortex of the brain through a complex network of nanoelectrodes. Victims of scrambler implantation tend to socially withdraw to minimize additional stimulation. As a consequence of their confusion, they also become physically meek, making them easy to impose upon. Allies of implanted victims will be angered.
-
-
- 50
-
-
- 8
- 1
-
-
- FertilityProcedures
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HistoryEventDefs/DiseaseHistoryEventDefs.xml b/1.6/Defs/HistoryEventDefs/DiseaseHistoryEventDefs.xml
deleted file mode 100644
index 488fa5f..0000000
--- a/1.6/Defs/HistoryEventDefs/DiseaseHistoryEventDefs.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- rjw_genes_GoodwillChangedReason_StoleGene
- Stole a gene
-
-
-
- rjw_genes_GoodwillChangedReason_infected_with_disease
- Infected a pawn with a genetic disease
-
-
-
- rjw_genes_GoodwillChangedReason_spread_genetic_disease
- Spread a genetic disease
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/HistoryEventDefs/SpecialHistoryEventDefs.xml b/1.6/Defs/HistoryEventDefs/SpecialHistoryEventDefs.xml
deleted file mode 100644
index ded422c..0000000
--- a/1.6/Defs/HistoryEventDefs/SpecialHistoryEventDefs.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- rjw_genes_GoodwillChangedReason_aged_pawn_with_sex_gene
- Aged a pawn with sexual age transfer
-
-
-
- rjw_genes_GoodwillChangedReason_youthed_pawn_with_sex_gene
- Youthed a pawn with youth fountain
-
-
-
- rjw_genes_GoodwillChangedReason_OverwritePregnancy
- Replaced a pregnancy
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/IncidentsDefs/Incidents_LifeForce.xml b/1.6/Defs/IncidentsDefs/Incidents_LifeForce.xml
deleted file mode 100644
index 297aca5..0000000
--- a/1.6/Defs/IncidentsDefs/Incidents_LifeForce.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- SuccubusDreamVisit
- dirty dreams
- Misc
-
- Map_PlayerHome
-
- RJW_Genes.IncidentWorker_SuccubusDreamVisit
- 1.0
- 10
- false
-
-
\ No newline at end of file
diff --git a/1.6/Defs/InteractionDef/Interactions_Flirt.xml b/1.6/Defs/InteractionDef/Interactions_Flirt.xml
deleted file mode 100644
index 27c5408..0000000
--- a/1.6/Defs/InteractionDef/Interactions_Flirt.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
- rjw_genes_flirt
- flirt
- Things/Mote/SpeechSymbols/Chitchat
-
-
- r_logentry->[INITIATOR_nameDef] and [RECIPIENT_nameDef] [talkedabout] [TalkTopicLight].
- r_logentry->[INITIATOR_nameDef] [talkedabout] [TalkTopicLight] with [RECIPIENT_nameDef].
- r_logentry(p=0.8)->[INITIATOR_nameDef] [commentedabout] [TalkTopicLight] to [RECIPIENT_nameDef].
-
- talkedabout(p=4)->chatted about
- talkedabout->shared a word about
- talkedabout->spoke about
- talkedabout->gabbed about
- talkedabout->talked about
- talkedabout->joked about
- talkedabout->quipped about
-
- commentedabout->said something about
- commentedabout->said a word about
- commentedabout->made a comment about
- commentedabout->commented about
- commentedabout->told a joke about
-
-
-
-
-
diff --git a/1.6/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml.1.6 b/1.6/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml.1.6
deleted file mode 100644
index 1fa8d91..0000000
--- a/1.6/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml.1.6
+++ /dev/null
@@ -1,153 +0,0 @@
-
-
-
-
- Rape_SuccubusTail_Tailjob
- succubustail tailjob
-
-
- r_logentry->Was given tailjob by [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Gave tailjob to [INITIATOR_nameDef].
-
-
-
-
- Tailjob
- Handjob
-
- DomSuccubusTail_Tailjob_RP
-
-
-
- SubSuccubusTailCustomRequirementHandler
-
- Rape
-
-
-
- CanPenetrate
-
-
-
-
-
-
-
-
-
-
- Rape_SuccubusTail_Vaginal
- succubustail vaginal
-
-
- r_logentry->Gave vaginal tailsex to [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Was given vaginal tailsex by [INITIATOR_nameDef].
-
-
-
-
- Vaginal Tailsex
- Vaginal
-
- DomSuccubusTail_Vaginal_RP
-
-
-
- DomSuccubusTailCustomRequirementHandler
-
- Rape
-
-
-
-
-
- Vagina
-
-
-
-
-
-
-
- Rape_SuccubusTail_Anal
- succubustail anal
-
-
- r_logentry->Gave anal tailsex to [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Was given anal tailsex by [INITIATOR_nameDef].
-
-
-
-
- Anal Tailsex
- Anal
-
- DomSuccubusTail_Anal_RP
-
-
-
- DomSuccubusTailCustomRequirementHandler
-
- Rape
-
-
-
-
-
- Anus
-
-
-
-
-
-
-
-
- Rape_SuccubusTail_Envelop
- succubustail envelop
-
-
- r_logentry->Was given special tailjob by [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Gave special tailjob to [INITIATOR_nameDef].
-
-
-
-
- Envelop
- Vaginal
-
- DomSuccubusTail_Envelop_RP
-
-
-
- SubSuccubusTailCustomRequirementHandler
-
- Rape
-
-
-
- CanPenetrate
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml.1.6 b/1.6/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml.1.6
deleted file mode 100644
index a600908..0000000
--- a/1.6/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml.1.6
+++ /dev/null
@@ -1,159 +0,0 @@
-
-
-
-
- Rape_SuccubusTail_Reverse_Tailjob
- succubustail tailjob
-
-
- r_logentry->Gave tailjob to [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Was given tailjob by [INITIATOR_nameDef].
-
-
-
-
- Tailjob
- Handjob
-
- SubSuccubusTail_Tailjob_RP
-
-
-
- DomSuccubusTailCustomRequirementHandler
-
- Reverse
- Rape
-
-
-
-
-
-
- CanPenetrate
-
-
-
-
-
-
-
- Rape_SuccubusTail_Reverse_Vaginal
- succubustail vaginal
-
-
- r_logentry->Was given vaginal tailsex by [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Gave vaginal tailsex to [INITIATOR_nameDef].
-
-
-
-
- Vaginal Tailsex
- Vaginal
-
- DomSuccubusTail_Vaginal_RP
-
-
-
- SubSuccubusTailCustomRequirementHandler
-
- Reverse
- Rape
-
-
-
- Vagina
-
-
-
-
-
-
-
-
-
-
- Rape_SuccubusTail_Reverse_Anal
- succubustail anal
-
-
- r_logentry->Was given anal tailsex by [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Gave anal tailsex to [INITIATOR_nameDef].
-
-
-
-
- Anal Tailsex
- Anal
-
- DomSuccubusTail_Anal_RP
-
-
-
- SubSuccubusTailCustomRequirementHandler
-
- Reverse
- Rape
-
-
-
- Anus
-
-
-
-
-
-
-
-
-
-
-
- Rape_SuccubusTail_Reverse_Envelop
- succubustail envelop
-
-
- r_logentry->Gave special tailjob to [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Was given special tailjob by [INITIATOR_nameDef].
-
-
-
-
- Envelop
- Vaginal
-
- DomSuccubusTail_Envelop_RP
-
-
-
- DomSuccubusTailCustomRequirementHandler
-
- Reverse
- Rape
-
-
-
-
-
- CanPenetrate
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/InteractionDef/Sex/Reverse/Sex_Reverse_SuccubusTail.xml.1.6 b/1.6/Defs/InteractionDef/Sex/Reverse/Sex_Reverse_SuccubusTail.xml.1.6
deleted file mode 100644
index a6e98c5..0000000
--- a/1.6/Defs/InteractionDef/Sex/Reverse/Sex_Reverse_SuccubusTail.xml.1.6
+++ /dev/null
@@ -1,159 +0,0 @@
-
-
-
-
- Sex_SuccubusTail_Reverse_Tailjob
- succubustail tailjob
-
-
- r_logentry->Gave tailjob to [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Was given tailjob by [INITIATOR_nameDef].
-
-
-
-
- Tailjob
- Handjob
-
- SubSuccubusTail_Tailjob_RP
-
-
-
- DomSuccubusTailCustomRequirementHandler
-
- Reverse
- Consensual
-
-
-
-
-
-
- CanPenetrate
-
-
-
-
-
-
-
- Sex_SuccubusTail_Reverse_Vaginal
- succubustail vaginal
-
-
- r_logentry->Was given vaginal tailsex by [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Gave vaginal tailsex to [INITIATOR_nameDef].
-
-
-
-
- Vaginal Tailsex
- Vaginal
-
- DomSuccubusTail_Vaginal_RP
-
-
-
- SubSuccubusTailCustomRequirementHandler
-
- Reverse
- Consensual
-
-
-
- Vagina
-
-
-
-
-
-
-
-
-
-
- Sex_SuccubusTail_Reverse_Anal
- succubustail anal
-
-
- r_logentry->Was given anal tailsex by [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Gave anal tailsex to [INITIATOR_nameDef].
-
-
-
-
- Anal Tailsex
- Anal
-
- DomSuccubusTail_Anal_RP
-
-
-
- SubSuccubusTailCustomRequirementHandler
-
- Reverse
- Consensual
-
-
-
- Anus
-
-
-
-
-
-
-
-
-
-
-
- Sex_SuccubusTail_Reverse_Envelop
- succubustail envelop
-
-
- r_logentry->Gave special tailjob to [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Was given special tailjob by [INITIATOR_nameDef].
-
-
-
-
- Envelop
- Vaginal
-
- DomSuccubusTail_Envelop_RP
-
-
-
- DomSuccubusTailCustomRequirementHandler
-
- Reverse
- Consensual
-
-
-
-
-
- CanPenetrate
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/InteractionDef/Sex/Sex_SuccubusTail.xml.1.6 b/1.6/Defs/InteractionDef/Sex/Sex_SuccubusTail.xml.1.6
deleted file mode 100644
index dda1ffe..0000000
--- a/1.6/Defs/InteractionDef/Sex/Sex_SuccubusTail.xml.1.6
+++ /dev/null
@@ -1,154 +0,0 @@
-
-
-
-
- Sex_SuccubusTail_Tailjob
- succubustail tailjob
-
-
- r_logentry->Was given tailjob by [RECIPIENT_nameDef].
-
-
-
-
-
- r_logentry->Gave tailjob to [INITIATOR_nameDef].
-
-
-
-
- Tailjob
- Handjob
-
- DomSuccubusTail_Tailjob_RP
-
-
-
- SubSuccubusTailCustomRequirementHandler
-
- Consensual
-
-
-
- CanPenetrate
-
-
-
-
-
-
-
-
-
-
- Sex_SuccubusTail_Vaginal
- succubustail vaginal
-
-
- r_logentry->Gave vaginal tailsex to [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Was given vaginal tailsex by [INITIATOR_nameDef].
-
-
-
-
- Vaginal Tailsex
- Vaginal
-
- DomSuccubusTail_Vaginal_RP
-
-
-
- DomSuccubusTailCustomRequirementHandler
-
- Consensual
-
-
-
-
-
- Vagina
-
-
-
-
-
-
-
- Sex_SuccubusTail_Anal
- succubustail anal
-
-
- r_logentry->Gave anal tailsex to [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Was given anal tailsex by [INITIATOR_nameDef].
-
-
-
-
- Anal Tailsex
- Anal
-
- DomSuccubusTail_Anal_RP
-
-
-
- DomSuccubusTailCustomRequirementHandler
-
- Consensual
-
-
-
-
-
- Anus
-
-
-
-
-
-
-
-
- Sex_SuccubusTail_Envelop
- succubustail envelop
-
-
- r_logentry->Was given special tailjob by [RECIPIENT_nameDef].
-
-
-
-
- r_logentry->Gave special tailjob to [INITIATOR_nameDef].
-
-
-
-
- Envelop
- Vaginal
-
- DomSuccubusTail_Envelop_RP
-
-
-
- SubSuccubusTailCustomRequirementHandler
-
- Consensual
-
-
-
- CanPenetrate
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/JobDefs/Jobs_LifeForce.xml b/1.6/Defs/JobDefs/Jobs_LifeForce.xml
deleted file mode 100644
index c05bf61..0000000
--- a/1.6/Defs/JobDefs/Jobs_LifeForce.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- rjw_genes_lifeforce_randomrape
- rjw.JobDriver_RandomRape
- raping
- false
-
-
-
- rjw_genes_lifeforce_healpussy
- RJW_Genes.JobDriver_CastAbilityAfterSex
- tending wounds with sex.
- false
-
-
-
- rjw_genes_lifeforce_seduced
- RJW_Genes.JobDriver_Seduced
- seduced.
- false
- false
-
-
-
- rjw_genes_flirt
- RJW_Genes.JobDriver_Flirt
- seduced.
- false
-
-
\ No newline at end of file
diff --git a/1.6/Defs/JobDefs/Jobs_SexOnSpot.xml b/1.6/Defs/JobDefs/Jobs_SexOnSpot.xml
deleted file mode 100644
index 842f676..0000000
--- a/1.6/Defs/JobDefs/Jobs_SexOnSpot.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- sex_on_spot
- RJW_Genes.JobDriver_SexOnSpot
- making love on the spot.
- false
-
-
-
- sex_on_spot_reciever
- RJW_Genes.JobDriver_SexOnSpotReciever
- lovin'.
- false
-
-
\ No newline at end of file
diff --git a/1.6/Defs/LetterDefs/AnotherBaby.xml b/1.6/Defs/LetterDefs/AnotherBaby.xml
deleted file mode 100644
index d8f7c17..0000000
--- a/1.6/Defs/LetterDefs/AnotherBaby.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- AnotherBaby
- (120, 176, 216)
- (106, 179, 231)
- 40
- LetterArrive_Good
- MajorThreat
-
-
\ No newline at end of file
diff --git a/1.6/Defs/MentalStateDefs/MentalState_Lifeforce.xml b/1.6/Defs/MentalStateDefs/MentalState_Lifeforce.xml
deleted file mode 100644
index 392407b..0000000
--- a/1.6/Defs/MentalStateDefs/MentalState_Lifeforce.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
- rjw_genes_lifeforce_randomrape
- rjw_genes_lifeforce_randomrape
- 1.5
- Extreme
- RJW_Genes.LifeForceMentalBreakWorker
-
-
-
- rjw_genes_lifeforce_randomrape
- RJW_Genes.LifeForceMentalState
- RJW_Genes.LifeForceMentalStateWorker
- random rape
- Malicious
- true
- false
- 30000
- 0.8
- 80000
- (0.5, 0.9, 0.5)
- random rape
- {0} has run out of lifeforce and is looking to obtain some.
- ThreatSmall
- {0} is no longer raping randomly.
- Mental state: Random Rape
- true
-
-
\ No newline at end of file
diff --git a/1.6/Defs/PawnKindDefs/PawnKind_LifeForce.xml b/1.6/Defs/PawnKindDefs/PawnKind_LifeForce.xml
deleted file mode 100644
index ed6001a..0000000
--- a/1.6/Defs/PawnKindDefs/PawnKind_LifeForce.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
- rjw_genes_succubus
- succubus
- 50
- Human
-
-
- 999
-
-
- 0.5
- false
- 18
- 27
- Poor
- 0.0
- false
-
- 0.3
- 0.9
-
- true
-
- Tribal
-
-
- 0
- 0
-
- 0
-
- 0
- 0
-
-
- Poor
-
- 0.0
- 2~4
- 28~44
-
-
-
- rjw_genes_incubus
- incubus
- 50
- Human
-
-
- 999
-
-
- 0.5
- false
- 18
- 27
- Poor
- 0.0
- false
-
- 0.3
- 0.9
-
- true
-
- Tribal
-
-
- 0
- 0
-
- 0
-
- 0
- 0
-
-
- Poor
-
- 0.0
- 2~4
- 28~44
-
-
\ No newline at end of file
diff --git a/1.6/Defs/RecipeDefs/Bioscaffold.xml b/1.6/Defs/RecipeDefs/Bioscaffold.xml
deleted file mode 100644
index 624f0cb..0000000
--- a/1.6/Defs/RecipeDefs/Bioscaffold.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- InstallBioscaffold
- install bioscaffold
- Install a bioscaffold.
-
- Bioscaffold
- Bioscaffold
-
- Installing bioscaffold.
-
-
-
-
- Bioscaffold
-
-
- 1
-
-
-
-
- Bioscaffold
-
-
-
- Torso
-
- Bioscaffold
-
-
\ No newline at end of file
diff --git a/1.6/Defs/RecipeDefs/LimbicStimulator.xml b/1.6/Defs/RecipeDefs/LimbicStimulator.xml
deleted file mode 100644
index b824041..0000000
--- a/1.6/Defs/RecipeDefs/LimbicStimulator.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- InstallLimbicStimulator
- install limbic stimulator
- Install a limbic stimulator.
-
- LimbicStimulator
- LimbicStimulator
-
- Installing limbic stimulator.
-
-
-
-
- LimbicStimulator
-
-
- 1
-
-
-
-
- LimbicStimulator
-
-
-
- Brain
-
- LimbicStimulator
-
-
\ No newline at end of file
diff --git a/1.6/Defs/RecipeDefs/OvaryAgitator.xml b/1.6/Defs/RecipeDefs/OvaryAgitator.xml
deleted file mode 100644
index 2d2523f..0000000
--- a/1.6/Defs/RecipeDefs/OvaryAgitator.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
- InstallOvaryAgitator
- install ovary agitator
- Install an ovary agitator.
-
- OvaryAgitator
- OvaryAgitator
-
- Recipe_InstallImplant
- Installing ovary agitator.
- true
-
-
-
-
- OvaryAgitator
-
-
- 1
-
-
-
-
- OvaryAgitator
-
-
-
- Torso
-
- OvaryAgitator
-
-
\ No newline at end of file
diff --git a/1.6/Defs/RecipeDefs/Scrambler.xml b/1.6/Defs/RecipeDefs/Scrambler.xml
deleted file mode 100644
index 5479d91..0000000
--- a/1.6/Defs/RecipeDefs/Scrambler.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
- InstallScrambler
- install scrambler
- Install a scrambler.
-
- Scrambler
- Scrambler
-
- Recipe_InstallImplant
- Installing scrambler.
- true
-
-
-
-
- Scrambler
-
-
- 1
-
-
-
-
- Scrambler
-
-
-
- Brain
-
- Scrambler
-
-
\ No newline at end of file
diff --git a/1.6/Defs/RulePackDefs/Sex/RulePacks_SuccubTail.xml b/1.6/Defs/RulePackDefs/Sex/RulePacks_SuccubTail.xml
deleted file mode 100644
index 21e75a1..0000000
--- a/1.6/Defs/RulePackDefs/Sex/RulePacks_SuccubTail.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
- DomSuccubusTail_Tailjob_RP
-
-
- sent-> [INITIATOR_nameDef] gave [RECIPIENT_nameDef] a tailjob.
-
-
-
-
-
- DomSuccubusTail_Vaginal_RP
-
-
- sent-> [INITIATOR_nameDef] [INITIATOR_possessive] tail was vaginally inserted into [RECIPIENT_nameDef].
-
-
-
-
-
- DomSuccubusTail_Anal_RP
-
-
- sent-> [INITIATOR_nameDef] [INITIATOR_possessive] tail was anally inserted into [RECIPIENT_nameDef].
-
-
-
-
-
-
- DomSuccubusTail_Envelop_RP
-
-
- sent-> [RECIPIENT_nameDef] dick was enveloped by [INITIATOR_nameDef] [INITIATOR_possessive] tail.
-
-
-
-
-
- SubSuccubusTail_Tailjob_RP
-
-
- sent-> [RECIPIENT_nameDef] gave [INITIATOR_nameDef] a tailjob.
-
-
-
-
-
- SubSuccubusTail_Vaginal_RP
-
-
- sent-> [RECIPIENT_nameDef] [RECIPIENT_possessive] tail was vaginally inserted into [INITIATOR_nameDef].
-
-
-
-
-
- SubSuccubusTail_Anal_RP
-
-
- sent-> [RECIPIENT_nameDef] [RECIPIENT_possessive] tail was anally inserted into [INITIATOR_nameDef].
-
-
-
-
-
-
- SubSuccubusTail_Envelop_RP
-
-
- sent-> [INITIATOR_nameDef] dick was enveloped by [RECIPIENT_nameDef] [RECIPIENT_possessive] tail.
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/ThinkTreeDefs/ThinkTrees_LifeForce.xml b/1.6/Defs/ThinkTreeDefs/ThinkTrees_LifeForce.xml
deleted file mode 100644
index 574fe0f..0000000
--- a/1.6/Defs/ThinkTreeDefs/ThinkTrees_LifeForce.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
-
- SuccubusGetLifeForce
- Humanlike_PostMain
- 14
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/ThoughtDefs/Thoughts_Disease.xml b/1.6/Defs/ThoughtDefs/Thoughts_Disease.xml
deleted file mode 100644
index beb0944..0000000
--- a/1.6/Defs/ThoughtDefs/Thoughts_Disease.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
- rjw_genes_appealing_cock
- Thought_SituationalSocial
- RJW_Genes.ThoughtWorker_SizeBlinded_Social
- true
-
-
-
- small cock
- -10
-
-
- big cock
- 10
-
-
- monster cock
- 20
-
-
-
-
-
- rjw_genes_has_more_diseases
- Thought_SituationalSocial
- RJW_Genes.ThoughtWorker_HasMoreDiseasesThanMe_Social
- true
-
-
-
- carries more genetic diseases than me
- -3
-
-
- carries way more genetic diseases than me
- -8
-
-
- the genetic diseases on this fellow are off charts
- -18
-
-
-
-
-
diff --git a/1.6/Defs/ThoughtDefs/Thoughts_LifeForce.xml b/1.6/Defs/ThoughtDefs/Thoughts_LifeForce.xml
deleted file mode 100644
index c513491..0000000
--- a/1.6/Defs/ThoughtDefs/Thoughts_LifeForce.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
- rjw_genes_cock_eaten
- Thought_Memory
- 30.0
- 100
- 0.4
-
-
- cock eaten
- My cock was eaten directly off my body, I am devestated. This is not what good head feels like.
- -30
-
-
-
-
-
- rjw_genes_seduced
- Thought_Memory
- 10.0
- 100
- 0.4
-
-
- seduced
- I was seduced into having sex. I regret what happened.
- -10
-
-
-
-
-
- rjw_genes_critical_fertilin
- ThoughtWorker_Hediff
- rjw_genes_fertilin_craving
-
-
- fertilin craving
- My bones ache. I really need fertilin.
- -25
-
-
- fertilin craving
- This hurts bad and I can't stop thinking about sex. I would do anything for some cum.
- -40
-
-
- fertilin craving
- Can't think. Sex. Sex. Must. Have. Cum.
- -55
-
-
-
-
diff --git a/1.6/Defs/ThoughtDefs/Thoughts_Memories.xml b/1.6/Defs/ThoughtDefs/Thoughts_Memories.xml
deleted file mode 100644
index 5b9bc5c..0000000
--- a/1.6/Defs/ThoughtDefs/Thoughts_Memories.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- RegretsStealingLovin
- Thought_Memory
- 1.5
- 3
- 0.4
-
-
- regrets stealing some lovin'
- I don't remember how or why, but I violated someone. It felt good in the moment, but it felt so wrong afterward. My cravings from my implant are just too strong!
- -5
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Defs/ThoughtDefs/Thoughts_Special.xml b/1.6/Defs/ThoughtDefs/Thoughts_Special.xml
deleted file mode 100644
index 5620ca9..0000000
--- a/1.6/Defs/ThoughtDefs/Thoughts_Special.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
- rjw_genes_pheromone_carrier_nearby
- Thought_SituationalSocial
- RJW_Genes.ThoughtWorker_Aphrodisiac_Pheromones_Social
-
-
- pheromones
- {0} has a special vibe, we should hang out more often.
- +3
-
-
-
-
-
diff --git a/1.6/Defs/TipSetDefs/Tips.xml b/1.6/Defs/TipSetDefs/Tips.xml
deleted file mode 100644
index bc7aca3..0000000
--- a/1.6/Defs/TipSetDefs/Tips.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
- RJWGenesTips
-
-
- Succubi and Incubi can spawn at a rare event when a horny pawn is sleeping alone in the night.
-
- Cumazones need to regularly bite of cocks. This hunger can be stilled by animals - but they will need much more this way!
-
- Succubi drain Fertilin through sex. The drained pawn will give less Fertilin in consequent acts until they are recovered.
-
- Incubi 'tap' pawns they have sex with to gain fertilin. Incubi cannot gain further Fertilin this way until the pawn is fully recovered.
-
- The Xenotypes added by RJW_Genes require a lot of human resources - have yourself a big colony or lots of prisoners before you keep their company!
-
- Succubi receive their fertilin from cum. Make sure to have enough juice around to keep them happy.
-
- The gene 'cumeater' allows you to drain cumflation by cunnilingus. ... Cool, huh?
-
- Some animals carry rare genes - you can try to breed them and create your own super-hybrids! (No warranty provided for cat girls or genetic waste)
-
- The Settings for Animal-Gene Inheritance are distributed between RJW-Pregnancy-Settings and their own Mod-Options.
-
- Children born by pawns with the `Fertile Anus` gene might be bullied at school, but they can still live a fulfilling and happy life.
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Languages/English/Keyed/Letters.xml b/1.6/Languages/English/Keyed/Letters.xml
deleted file mode 100644
index 4436829..0000000
--- a/1.6/Languages/English/Keyed/Letters.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
- Twins!
- is still in labor and is having twins! Be sure to gather your doctor and additional friends and family to ensure the other baby is also born healthy!
-
- Another baby!
- is still in labor and is having twins! Be sure to gather your doctor and additional friends and family to ensure the other baby is also born healthy!
-
diff --git a/1.6/Languages/English/Keyed/Lifeforce.xml b/1.6/Languages/English/Keyed/Lifeforce.xml
deleted file mode 100644
index 16ce67a..0000000
--- a/1.6/Languages/English/Keyed/Lifeforce.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
- Pawn doesn't have required fertilin gene.
- Not enough fertilin to cast.
- This happened because of low fertilin.
-
- Low fertilin
- A colonist has low fertilin. At this point they are becoming desperate enough to consider rape and bestiality to obtain fertilin (if they didn't already). At zero fertilin they will lose all sense and start raping randomly
-
-
-
- {0} has fed enough on your colonists and will now leave.
-
- Dirty dreams
- The dirty dreams of your colonists have attracted succubi.\n\nThey will hang around for a couple of days trying to seduce your colonists. They may decide to join your colony, if they are impressed by your colonists's sexual prowess.
-
- Guest Joins
- {0} enjoys it here and has decided to stay.
-
diff --git a/1.6/Languages/English/Keyed/Mod_Settings.xml b/1.6/Languages/English/Keyed/Mod_Settings.xml
deleted file mode 100644
index cf320c9..0000000
--- a/1.6/Languages/English/Keyed/Mod_Settings.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
- Genitalia resizing age:
- years
- At this age (in biological years) any resizing gene will be applied. This is done to prevent changes and issues related to genitalia changing in the pawns growth, but also for 'ethics'.
-
- Fertilin-Gain from Animals:
- % of fertilin gained (compared to human-baseline).
-
- Sexdemon Visits
- If enabled, incubi and succubi can spawn in through an event.
- Size matters
- Incubi and succubi will consider size/tightness of partners genital for deciding if they want to join
- Sexdemon groups
- Multiple sexdemons can spawn during a event
- Succubi
- Allow Succubi to spawn through this event
- Incubi
- Allow Incubi to spawn through this event
-
- Regret Stealing Love
- If off, pawns will not get bad thoughts for seduction.
-
- Animal-Mating GenitalCheck
- If on, only animals that 'can rape' will be engaging in bestiality after being hit by a animal mating pulse. This usually means that only male animals will start breeding.
-
- Genetic STDS
- Genetic STD Spread
- If checked, certain Genes will spread on sex.
- Genetic STDs as Endogenes
- If checked, genetic diseases will be added as Endogenes. Otherwise they are added as Xenogenes.
- Genetic STDs on penetrative-sex only
- If checked, genetic STDs are only spread on penetrative sex. Otherwise, any sextype is considered for spread.
-
- 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.
-
- detailed-debug
- Adds detailed information to the log about interactions and genes.
-
diff --git a/1.6/Languages/English/Keyed/StatsReports.xml b/1.6/Languages/English/Keyed/StatsReports.xml
deleted file mode 100644
index 63085f9..0000000
--- a/1.6/Languages/English/Keyed/StatsReports.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- Pawn doesn't have any children.
- Pawn has a decent amount of children.
- Pawn has a lot of children.
- Unable to geneticaly adapt or alter {PAWN_nameDef}'s genitals.
-
-
diff --git a/1.6/Mods/Android/Defs/AndroidConvertableGenesDefs/AndroidConvertableGenesDefs.xml b/1.6/Mods/Android/Defs/AndroidConvertableGenesDefs/AndroidConvertableGenesDefs.xml
deleted file mode 100644
index 2977367..0000000
--- a/1.6/Mods/Android/Defs/AndroidConvertableGenesDefs/AndroidConvertableGenesDefs.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- rjw_genes_AndroidConvertableGenesDefs
-
- rjw_genes_gender
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Mods/Android/Defs/GeneDefs/GeneDefs_Androids.xml b/1.6/Mods/Android/Defs/GeneDefs/GeneDefs_Androids.xml
deleted file mode 100644
index 4b7b34e..0000000
--- a/1.6/Mods/Android/Defs/GeneDefs/GeneDefs_Androids.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
- rjw_genes_bionic_genitalia
- bionic genitalia
- RJW_Genes.Gene_GenitaliaType
- This piece of hardware is a set of bionic genitals of high quality
- Genes/Icons/Genitalia_human
-
-
- BionicPenis
- BionicVagina
- BionicAnus
- BionicBreasts
-
-
- 802
- -2
-
-
-
- rjw_genes_hydrolic_genitalia
- hydrolic genitalia
- RJW_Genes.Gene_GenitaliaType
- This piece of hardware is a set of crude hydrolic genitals, at least it come with a suspension system
- Genes/Icons/Genitalia_human
-
-
- HydraulicPenis
- HydraulicVagina
- HydraulicAnus
- HydraulicBreasts
-
-
- 802
-
- 1.12
-
-
-
-
- rjw_genes_SexDisabled
- sex disabled
- Androids do not feel satisfaction from sex, and have no need to feel it.
- Genes/Icons/sex_disabled
- 3
- 1
- RJW_Genes.Gene_NoSexNeed
-
-
- Asexual
-
-
- true
-
-
-
\ No newline at end of file
diff --git a/1.6/Mods/Android/Patches/Android_Quirk_Patch.xml b/1.6/Mods/Android/Patches/Android_Quirk_Patch.xml
deleted file mode 100644
index 52f9333..0000000
--- a/1.6/Mods/Android/Patches/Android_Quirk_Patch.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
- /Defs/VREAndroids.AndroidGeneDef[defName="VREA_SyntheticBody"]
-
-
- RobotLoverQuirk
-
-
-
-
- /Defs/VREAndroids.AndroidGeneDef[defName="VREA_SyntheticSkin"]
-
-
- RobotLoverQuirk
-
-
-
-
- /Defs/GeneCategoryDef[defName="VREA_Subroutine"]/displayPriorityInXenotype
-
- 10
-
-
-
-
diff --git a/1.6/Mods/Archon/Patches/Archon_Quirk_Patch.xml b/1.6/Mods/Archon/Patches/Archon_Quirk_Patch.xml
deleted file mode 100644
index 0f7e119..0000000
--- a/1.6/Mods/Archon/Patches/Archon_Quirk_Patch.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
- /Defs/GeneDef[defName="VRE_Leatherskin"]
-
-
- SkinLoverQuirk
-
-
-
-
-
diff --git a/1.6/Mods/Cumpilation/Assemblies/CumpilationPatcher.dll b/1.6/Mods/Cumpilation/Assemblies/CumpilationPatcher.dll
deleted file mode 100644
index 586660a..0000000
Binary files a/1.6/Mods/Cumpilation/Assemblies/CumpilationPatcher.dll and /dev/null differ
diff --git a/1.6/Mods/Cumpilation/Defs/GeneDefs/Cumpilation_Genes.xml b/1.6/Mods/Cumpilation/Defs/GeneDefs/Cumpilation_Genes.xml
deleted file mode 100644
index 7203c91..0000000
--- a/1.6/Mods/Cumpilation/Defs/GeneDefs/Cumpilation_Genes.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
- rjw_genes_inflatable
- inflatable
- rjw_genes_fluids
- This Xenotype loves being stuffed with fluids and does not suffer physical impediments from being inflated.
- Genes/Icons/Cumflation
- 536
- -1
- 2
-
-
- Cumpilation_LikesCumflation
-
-
-
- Cumpilation_NotCumflatable
-
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
- rjw_genes_un_inflatable
- inflation resistance
- rjw_genes_fluids
- This Xenotype cannot get inflated by fluids, neither vaginal, oral or anal.
- Genes/Icons/Cumflation_Immunity
- 537
-
- Cumpilation_NotCumflatable
-
-
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
-
- rjw_genes_living_cumbucket
- living cumbucket
- rjw_genes_fluids
- When this Xenotype partakes in sexual activity, they store cum and produce it as an item.
- Genes/Icons/living_cumbucket
- 559
- 3
- -2
-
-
- Genes/Icons/RJW_Genes_Endogene_Background
- Genes/Icons/RJW_Genes_Xenogene_Background
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Mods/Cumpilation/Defs/HediffDefs/Cumflation_Counter_Hediffs.xml b/1.6/Mods/Cumpilation/Defs/HediffDefs/Cumflation_Counter_Hediffs.xml
deleted file mode 100644
index 904c415..0000000
--- a/1.6/Mods/Cumpilation/Defs/HediffDefs/Cumflation_Counter_Hediffs.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
- RJW_Genes_Cumpilation_Cumflation_Counter
- HediffWithComps
- cumflation counter
- cumflation counter
- Apparently you can deal with it quite well.
- false
- 3.0
- false
- false
-
-
- -0.85
-
-
- Cumpilation_Cumflation
-
-
-
-
- counter a little
- false
-
-
- counter slight
- 0.2
- false
-
-
- Moving
- 0.1
-
-
-
-
- counter moderate
- 0.4
- false
-
-
- Moving
- 0.25
-
-
- -0.1
-
-
- counter intense
- 0.65
- false
-
-
- Moving
- 0.55
-
-
- -0.15
-
-
- counter extreme
- 0.9
- false
-
-
- Moving
- 0.85
-
-
- -0.25
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Mods/Cumpilation/Defs/HediffDefs/Living_Cumbucket_Hediff.xml b/1.6/Mods/Cumpilation/Defs/HediffDefs/Living_Cumbucket_Hediff.xml
deleted file mode 100644
index 6a72301..0000000
--- a/1.6/Mods/Cumpilation/Defs/HediffDefs/Living_Cumbucket_Hediff.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
- rjw_genes_filled_living_cumbucket
- HediffWithComps
- filled living cumbucket
- This pawn is a (filled) living cum bucket. Thanks to a generous donation, this pawn will slowly generate cum for pickup.
- 75.0
- (240,200,110)
- false
-
- false
- false
-
-
- -0.5
-
-
-
-
- 0
- 0.5
- 0.25
- 0.1
- 0.5
-
-
-
-
-
- slight
-
- -0.1
-
-
-
- moderate
- 0.4
- 0.8
-
- -0.25
-
-
-
- Moving
- -0.05
-
-
-
-
- full
- 0.65
- 0.75
-
- -0.25
-
-
-
- Moving
- -0.1
-
-
-
-
- over-full
- 1.1
- 0.6
-
- -0.5
-
-
-
- Moving
- -0.15
-
-
-
-
- living reservior
- 10.1
- 0.1
-
- -1.5
-
-
-
- Moving
- -0.55
-
-
-
-
-
-
-
-
diff --git a/1.6/Mods/Cumpilation/Defs/HediffDefs/Stuffing_Counter_Hediffs.xml b/1.6/Mods/Cumpilation/Defs/HediffDefs/Stuffing_Counter_Hediffs.xml
deleted file mode 100644
index c983074..0000000
--- a/1.6/Mods/Cumpilation/Defs/HediffDefs/Stuffing_Counter_Hediffs.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-
-
-
-
- HediffWithComps
- (240,200,110)
- false
- 1.0
- false
- false
-
-
-
- RJW_Genes_Cumpilation_Cumstuffed_Counter
- cumstuffed counter
- cumstuffed countered
- Apparently you can deal with it quite well.
-
-
- Cumpilation_Cumstuffed
-
-
-
-
- counter slightly bloated
- false
-
-
- counter bloated
- false
- 0.2
-
-
- Moving
- 0.03
-
-
-
-
- counter full
- false
- 0.4
-
-
- Moving
- 0.1
-
-
-
-
- counter stuffed
- false
- 0.6
-
-
- Moving
- 0.2
-
-
- -0.1
-
-
- counter overstuffed
- 0.8
- false
-
-
- Moving
- 0.3
-
-
- -0.2
-
-
-
-
-
- RJW_Genes_Cumpilation_InsectSpunkStuffed_Counter
- insect-spunk stuffed counter
- insect-spunk stuffed counter
-
-
- Cumpilation_InsectSpunkStuffed
-
-
- Apparently you can deal with it quite well.
-
-
- counter slightly bloated
- false
-
-
- counter bloated
- false
- 0.2
-
- 0.05
- -0.1
-
-
-
- counter full
- false
- 0.4
-
- 0.25
- 5
- 5
- -0.1
- -0.1
- +0.15
-
-
-
- Talking
- -0.05
-
-
-
-
- counter over-stuffed
- false
- 0.7
-
- 10
- 10
- -0.2
- -0.2
- +0.25
-
-
-
- Manipulation
- +0.05
-
-
- Talking
- +0.15
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Mods/Cumpilation/Defs/JobDefs/Job_ProcessCumbucket.xml b/1.6/Mods/Cumpilation/Defs/JobDefs/Job_ProcessCumbucket.xml
deleted file mode 100644
index 1bc0be5..0000000
--- a/1.6/Mods/Cumpilation/Defs/JobDefs/Job_ProcessCumbucket.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
- RJW_Genes_ProcessCumbucket
- RJW_Genes.JobDriver_ProcessingCumbucket
- false
- false
- processing internal cumbucket.
- false
-
-
-
diff --git a/1.6/Mods/Cumpilation/Patches/Patch_Cum_Ingestion_Fertilin.xml b/1.6/Mods/Cumpilation/Patches/Patch_Cum_Ingestion_Fertilin.xml
deleted file mode 100644
index 4ab7391..0000000
--- a/1.6/Mods/Cumpilation/Patches/Patch_Cum_Ingestion_Fertilin.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- Defs/ThingDef[defName="Cumpilation_Cum"]/ingestible/outcomeDoers
-
- /Defs/ThingDef[defName="Cumpilation_Cum"]/ingestible
-
-
-
- 2
-
-
-
-
-
- Defs/ThingDef[defName="Cumpilation_Cum"]/ingestible/outcomeDoers
-
-
- 2
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Mods/Fungoid/Patches/Fungoid_Quirk_Patch.xml b/1.6/Mods/Fungoid/Patches/Fungoid_Quirk_Patch.xml
deleted file mode 100644
index bcb1e72..0000000
--- a/1.6/Mods/Fungoid/Patches/Fungoid_Quirk_Patch.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- /Defs/GeneDef[defName="VRE_FungalCrest"]
-
-
- PlantLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRE_HairMushroom"]
-
-
- PlantLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRE_FungalFlesh"]
-
-
- PlantLoverQuirk
-
-
-
-
-
diff --git a/1.6/Mods/Genie/Defs/GeneDefs/GeneDefs_Curiosity_sex.xml b/1.6/Mods/Genie/Defs/GeneDefs/GeneDefs_Curiosity_sex.xml
deleted file mode 100644
index a25d8da..0000000
--- a/1.6/Mods/Genie/Defs/GeneDefs/GeneDefs_Curiosity_sex.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- VRE_Curiosity
-
- VRE_Curiosity
- Curiosity
-
- -2
- 2
-
-
-
- VRE_Curiosity_Sex
- sex curiosity
- 0
- The carrier has a natural curiosity for sex which makes them gain recreation whenever they learn it. Furthermore, curiosity prevents skill loss in sex completely.
-
- Genes/Icons/sex_curiosity
-
-
- Sex
- Sex
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Mods/Highmate/Patches/Highmate_Quirk_Patch.xml b/1.6/Mods/Highmate/Patches/Highmate_Quirk_Patch.xml
deleted file mode 100644
index 0f69977..0000000
--- a/1.6/Mods/Highmate/Patches/Highmate_Quirk_Patch.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- /Defs/GeneDef[defName="VRE_FelineEars"]
-
-
- FurLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRE_FelineTail"]
-
-
- FurLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRE_PerfectBody"]
-
-
- SkinLoverQuirk
-
-
-
-
-
diff --git a/1.6/Mods/Lycanthrope/Patches/Lycanthrope_Quirk_Patch.xml b/1.6/Mods/Lycanthrope/Patches/Lycanthrope_Quirk_Patch.xml
deleted file mode 100644
index 475950c..0000000
--- a/1.6/Mods/Lycanthrope/Patches/Lycanthrope_Quirk_Patch.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
- /Defs/GeneDef[defName="VRE_ChestFur"]
-
-
- FurLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRE_CanineTail"]
-
-
- FurLoverQuirk
-
-
-
-
-
diff --git a/1.6/Mods/Phytokin/Patches/Phytokin_Quirk_Patch.xml b/1.6/Mods/Phytokin/Patches/Phytokin_Quirk_Patch.xml
deleted file mode 100644
index 78089d4..0000000
--- a/1.6/Mods/Phytokin/Patches/Phytokin_Quirk_Patch.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- /Defs/GeneDef[defName="VRE_BarkSkin"]
-
-
- PlantLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRE_FoliageHair"]
-
-
- PlantLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRE_SapBlood"]
-
-
- PlantLoverQuirk
-
-
-
-
-
diff --git a/1.6/Mods/RaceSupport/Defs/GeneDefs/GeneDefs_GenitaliaTypesRace.xml b/1.6/Mods/RaceSupport/Defs/GeneDefs/GeneDefs_GenitaliaTypesRace.xml
deleted file mode 100644
index 17e5d3d..0000000
--- a/1.6/Mods/RaceSupport/Defs/GeneDefs/GeneDefs_GenitaliaTypesRace.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- rjw_genes_Pig_genitalia
- Pig genitalia
- Carriers of this gene develop pig genitalia.
- Genes/Icons/Genitalia_screw_icon
-
-
- PigPenis
- PigVagina
-
-
- 807
-
-
-
- rjw_genes_Orc_genitalia
- Orc genitalia
- Carriers of this gene develop orc genitalia.
- Genes/Icons/Genitalia_orc_icon
-
-
- OrcPenis
- OrcVagina
-
-
- 807
-
-
-
diff --git a/1.6/Mods/Sanguophage/Patches/Sanguophage_Quirk_Patch.xml b/1.6/Mods/Sanguophage/Patches/Sanguophage_Quirk_Patch.xml
deleted file mode 100644
index cf01f46..0000000
--- a/1.6/Mods/Sanguophage/Patches/Sanguophage_Quirk_Patch.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
- /Defs/GeneDef[defName="VRE_SanguineHair"]
-
-
- DemonLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRE_BatEars"]
-
-
- TeratophileQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRE_UpperBatEars"]
-
-
- TeratophileQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRE_Talons"]
-
-
- DemonLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRE_BatNose"]
-
-
- TeratophileQuirk
-
-
-
-
-
diff --git a/1.6/Mods/Saurid/Patches/Saurid_Quirk_Patch.xml b/1.6/Mods/Saurid/Patches/Saurid_Quirk_Patch.xml
deleted file mode 100644
index 37188ff..0000000
--- a/1.6/Mods/Saurid/Patches/Saurid_Quirk_Patch.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
- /Defs/GeneDef[defName="VRESaurids_FrilledEars"]
-
-
- ScaleLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRESaurids_CenterFrill"]
-
-
- ScaleLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRESaurids_GeckoTail"]
-
-
- ScaleLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRESaurids_SauridClaws"]
-
-
- ScaleLoverQuirk
-
-
-
-
- /Defs/GeneDef[defName="VRESaurids_ScaleSkin"]
-
-
- ScaleLoverQuirk
-
-
-
-
-
diff --git a/1.6/Patches/Genes/Patch_Highmates.xml b/1.6/Patches/Genes/Patch_Highmates.xml
deleted file mode 100644
index 47cd747..0000000
--- a/1.6/Patches/Genes/Patch_Highmates.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- Vanilla Races Expanded - Highmate
-
-
- /Defs/AbilityDef[defName="VRE_InitiateLovin"]/comps
-
-
-
- RJW_Genes.CompAbilityEffect_Seduce
- Caster
-
-
-
-
-
-
-
diff --git a/1.6/Patches/Genes/Patch_Insector_ChestEggs.xml b/1.6/Patches/Genes/Patch_Insector_ChestEggs.xml
deleted file mode 100644
index 8d01d52..0000000
--- a/1.6/Patches/Genes/Patch_Insector_ChestEggs.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- Vanilla Races Expanded - Insector
-
-
- Defs/GeneDef[defName = "VRE_ChestburstPregnancy"]/exclusionTags
-
- rjw_genes_littered_birth_vs_chestburst
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Genes/Patch_Unbreakable.xml b/1.6/Patches/Genes/Patch_Unbreakable.xml
deleted file mode 100644
index a2d674a..0000000
--- a/1.6/Patches/Genes/Patch_Unbreakable.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
- Defs/ThoughtDef[defName="FeelingBroken"]
-
-
- rjw_genes_unbreakable
-
-
-
-
-
-
- Defs/ThoughtDef[defName="GotRaped"]
-
-
- rjw_genes_unbreakable
-
-
-
-
-
- Defs/ThoughtDef[defName="GotAnalRaped"]
-
-
- rjw_genes_unbreakable
-
-
-
-
-
- Defs/ThoughtDef[defName="GotAnalRapedByFemale"]
-
-
- rjw_genes_unbreakable
-
-
-
-
-
- Defs/ThoughtDef[defName="GotRapedUnconscious"]
-
-
- rjw_genes_unbreakable
-
-
-
-
-
- Defs/ThoughtDef[defName="HateMyRapist"]
-
-
- rjw_genes_unbreakable
-
-
-
-
-
- Defs/ThoughtDef[defName="AllowedMeToGetRaped"]
-
-
- rjw_genes_unbreakable
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Genes/Vanilla_Quirk_Patch.xml b/1.6/Patches/Genes/Vanilla_Quirk_Patch.xml
deleted file mode 100644
index 40458da..0000000
--- a/1.6/Patches/Genes/Vanilla_Quirk_Patch.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
- /Defs/GeneDef[defName="Furskin"]
-
-
-
- FurLoverQuirk
-
-
-
-
-
- /Defs/GeneDef[defName="Head_Gaunt"]
-
-
-
- TeratophileQuirk
-
-
-
-
-
-
diff --git a/1.6/Patches/ThingDefs/RJW_Used_Condoms.xml b/1.6/Patches/ThingDefs/RJW_Used_Condoms.xml
deleted file mode 100644
index 56ae1d2..0000000
--- a/1.6/Patches/ThingDefs/RJW_Used_Condoms.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
- Defs/ThingDef[defName="UsedCondom"]/ingestible/outcomeDoers
-
- /Defs/ThingDef[defName="UsedCondom"]/ingestible
-
-
-
- 1
-
-
-
-
-
- Defs/ThingDef[defName="UsedCondom"]/ingestible/outcomeDoers
-
-
- 1
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/ThinkTree/MentalStateCritical_LifeForceRandomRape.xml b/1.6/Patches/ThinkTree/MentalStateCritical_LifeForceRandomRape.xml
deleted file mode 100644
index 9532df8..0000000
--- a/1.6/Patches/ThinkTree/MentalStateCritical_LifeForceRandomRape.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
- Defs/ThinkTreeDef[defName="MentalStateCritical"]/thinkRoot[@Class="ThinkNode_Tagger"]/subNodes
-
-
- rjw_genes_lifeforce_randomrape
-
-
- Rest
- 0.05
- true
-
-
-
-
-
- 0.5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/GenitaliaUpdate.xml b/1.6/Patches/Xenotypes/GenitaliaUpdate.xml
deleted file mode 100644
index e967f24..0000000
--- a/1.6/Patches/Xenotypes/GenitaliaUpdate.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
- Defs/XenotypeDef[defName="Neanderthal"]/genes
-
- rjw_genes_big_male_genitalia
- rjw_genes_loose_female_genitalia
-
-
-
-
- Defs/XenotypeDef[defName="Pigskin"]/genes
-
- rjw_genes_much_fluid
- rjw_genes_zoophile
-
- rjw_genes_human_genitalia
-
-
-
-
- Defs/XenotypeDef[defName="Yttakin"]/genes
-
- rjw_genes_big_male_genitalia
- rjw_genes_loose_female_genitalia
-
-
-
-
-
-
- LustLicentia.RJWLabs
-
-
- Defs/XenotypeDef[defName="Highmate"]/genes
-
- rjw_genes_likes_cumflation
-
-
-
-
-
- Defs/XenotypeDef[defName="Genie"]/genes
-
- rjw_genes_mechbreeder
-
-
-
-
- Defs/XenotypeDef[defName="Sanguophage"]/genes
-
- rjw_genes_demonic_genitalia
-
-
-
-
- Defs/XenotypeDef[defName="Impid"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_small_breasts
- rjw_genes_small_male_genitalia
- rjw_genes_tight_female_genitalia
- rjw_genes_tight_anus
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchAlphaGenes.xml b/1.6/Patches/Xenotypes/PatchAlphaGenes.xml
deleted file mode 100644
index 040be9b..0000000
--- a/1.6/Patches/Xenotypes/PatchAlphaGenes.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
-
- Alpha Genes
-
-
-
-
- Defs/XenotypeDef[defName="AG_Fleetkind"]/genes
-
- rjw_genes_slime_genitalia
- rjw_genes_elasticity
-
-
-
-
- Defs/XenotypeDef[defName="AG_Helixien"]/genes
-
- rjw_genes_slime_genitalia
- rjw_genes_elasticity
-
-
-
-
- Defs/XenotypeDef[defName="AG_Taukai"]/genes
-
- rjw_genes_sexual_mytosis
-
-
-
-
- Defs/XenotypeDef[defName="AG_MindDevourer"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_sex_age_drain
-
-
-
-
- Defs/XenotypeDef[defName="AG_Lapis"]/genes
-
- rjw_genes_big_breasts
- rjw_genes_no_fluid
- rjw_genes_big_male_genitalia
-
-
-
-
- Defs/XenotypeDef[defName="AG_Efreet"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_small_breasts
- rjw_genes_tight_female_genitalia
- rjw_genes_tight_anus
-
-
-
-
- Defs/XenotypeDef[defName="AG_Drakonori"]/genes
-
- rjw_genes_dragon_genitalia
- rjw_genes_big_male_genitalia
- rjw_genes_aphrodisiac_pheromones
- rjw_genes_big_breasts
-
-
-
-
- Defs/XenotypeDef[defName="AG_Animusen"]/genes
-
- rjw_genes_canine_genitalia
-
-
-
-
-
- Vanilla Races Expanded - Sanguophage
-
-
- Defs/XenotypeDef[defName="AG_Malachai"]/genes
-
- rjw_genes_demonic_genitalia
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchBSHeavHell.xml b/1.6/Patches/Xenotypes/PatchBSHeavHell.xml
deleted file mode 100644
index 2ca25a3..0000000
--- a/1.6/Patches/Xenotypes/PatchBSHeavHell.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
- Big and Small - Heaven and Hell
-
-
-
-
- Defs/XenotypeDef[defName="BS_Authority"]/genes
-
- rjw_genes_big_male_genitalia
- rjw_genes_big_breasts
- rjw_genes_no_sex_need
- rjw_genes_generous_donor
- AptitudePoor_Sex
-
-
-
- Defs/XenotypeDef[defName="BS_Malakim"]/genes
-
- rjw_genes_small_breasts
- rjw_genes_generous_donor
- AptitudeTerrible_Sex
-
-
-
- Defs/XenotypeDef[defName="BS_Satan"]/genes
-
- rjw_genes_big_male_genitalia
- rjw_genes_big_breasts
- AptitudeStrong_Sex
-
-
-
- Defs/XenotypeDef[defName="BS_Grigori"]/genes
-
- rjw_genes_generous_donor
- AptitudeStrong_Sex
-
-
-
- Defs/XenotypeDef[defName="BS_Nephilim"]/genes
-
- rjw_genes_big_male_genitalia
- rjw_genes_big_breasts
-
-
-
- Defs/XenotypeDef[defName="BS_Lilim"]/genes
-
- rjw_genes_hypersexual
- AptitudeStrong_Sex
-
-
-
- Defs/XenotypeDef[defName="BS_Glutton"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_big_male_genitalia
- rjw_genes_loose_female_genitalia
- rjw_genes_loose_anus
- rjw_genes_extra_vagina
- rjw_genes_extra_anus
- rjw_genes_un_inflatable
- AptitudeStrong_Sex
-
-
-
- Defs/XenotypeDef[defName="BS_LilGlutton"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_small_male_genitalia
- rjw_genes_tight_female_genitalia
- rjw_genes_tight_anus
- rjw_genes_extra_vagina
- rjw_genes_extra_anus
- rjw_genes_inflatable
- rjw_genes_elasticity
- AptitudeStrong_Sex
-
-
-
-
-
-
-
-
diff --git a/1.6/Patches/Xenotypes/PatchBSMore.xml b/1.6/Patches/Xenotypes/PatchBSMore.xml
deleted file mode 100644
index 23dc010..0000000
--- a/1.6/Patches/Xenotypes/PatchBSMore.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- Big and Small - More Xenotypes
-
-
-
-
- Defs/XenotypeDef[defName="BS_Weaver" or defName="BS_Devilspider"]/genes
-
- rjw_genes_ovipositor_genitalia
-
-
-
- Defs/XenotypeDef[defName="BS_Abomination"]/genes
-
- rjw_genes_human_genitalia
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchBSRaces.xml b/1.6/Patches/Xenotypes/PatchBSRaces.xml
deleted file mode 100644
index bdd6981..0000000
--- a/1.6/Patches/Xenotypes/PatchBSRaces.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
-
- Big and Small - Races
-
-
-
-
- Defs/XenotypeDef[defName="BS_Ogre"]/genes
-
- rjw_genes_much_fluid
-
-
-
- Defs/XenotypeDef[defName="BS_GreatOgre"]/genes
-
- rjw_genes_very_much_fluid
- rjw_genes_big_male_genitalia
- rjw_genes_big_breasts
- rjw_genes_loose_female_genitalia
- rjw_genes_loose_anus
-
-
-
- Defs/XenotypeDef[defName="BS_Troll"]/genes
-
- rjw_genes_evergrowth
-
-
-
- Defs/XenotypeDef[defName="BS_Jotun"
- or defName="BS_FrostJotun"
- or defName="BS_FireJotun"
- or defName="BS_Surtr"
- or defName="BS_Ymir"
- or defName="BS_Half_Jotun"
- ]/genes
-
- rjw_genes_big_male_genitalia
- rjw_genes_big_breasts
- rjw_genes_orgasm_rush
-
-
-
-
- Alpha Genes
-
-
- Defs/XenotypeDef[defName="BS_Corrupterd_Titan"]/genes
-
- rjw_genes_rapist
-
-
-
-
- Defs/XenotypeDef[defName="BS_Gnome"]/genes
-
- rjw_genes_tight_female_genitalia
- rjw_genes_tight_anus
- rjw_genes_very_much_fluid
- rjw_genes_inflatable
-
-
-
- Defs/XenotypeDef[defName="BS_Dwarf" or defName="BS_Svartalf"]/genes
-
- rjw_genes_big_male_genitalia
-
-
-
- Defs/XenotypeDef[defName="BS_Redcap"]/genes
-
- rjw_genes_littered_births
- rjw_genes_tight_female_genitalia
- rjw_genes_tight_anus
- rjw_genes_much_fluid
- rjw_genes_rapist
-
-
-
- Defs/XenotypeDef[defName = "BS_Hearthguard" or defName = "BS_Hearthdoll" or defName = "BS_PilotableFleshGolem" or defName="BS_FleshGolemServant"]/genes
-
- rjw_genes_no_sex_need
-
-
-
-
-
-
diff --git a/1.6/Patches/Xenotypes/PatchBSShared.xml b/1.6/Patches/Xenotypes/PatchBSShared.xml
deleted file mode 100644
index 8502746..0000000
--- a/1.6/Patches/Xenotypes/PatchBSShared.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
- Big and Small - Heaven and Hell
-
-
-
-
-
- Defs/XenotypeDef[@Name="BS_Succubus_A"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_aphrodisiac_pheromones
- rjw_genes_hypersexual
- rjw_genes_bisexual
- AptitudeRemarkable_Sex
- rjw_genes_elasticity
-
-
-
- Defs/XenotypeDef[defName="VU_Hellguard"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_equine_genitalia
- AptitudePoor_Sex
-
-
-
- Defs/XenotypeDef[defName="VU_Gatekeeper"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_equine_genitalia
- rjw_genes_big_male_genitalia
- rjw_genes_much_fluid
- AptitudeTerrible_Sex
-
-
-
- Defs/XenotypeDef[defName="VU_Imp"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_much_fluid
- rjw_genes_small_male_genitalia
- rjw_genes_tight_female_genitalia
- rjw_genes_small_breasts
- rjw_genes_tight_anus
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchBSSlimes.xml b/1.6/Patches/Xenotypes/PatchBSSlimes.xml
deleted file mode 100644
index 3236c1b..0000000
--- a/1.6/Patches/Xenotypes/PatchBSSlimes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
- Big and Small - Slimes
-
-
-
-
- Defs/XenotypeDef[defName="BS_GreenSlime"
- or defName="BS_PinkSlime"
- or defName="BS_FrostSlime"
- or defName="BS_LavaSlime"
- or defName="BS_EmperorSlime"
- or defName="BS_ElixirSlime"
- or defName="BS_ToxicSludge"
- or defName="BS_BananaSplitSlime"
- ]/genes
-
- rjw_genes_slime_genitalia
- rjw_genes_much_fluid
- rjw_genes_elasticity
-
-
-
- Defs/XenotypeDef[defName="BS_BananaSplitSlime"]/genes
-
- rjw_genes_hypersexual
- rjw_genes_bisexual
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchBSSneks.xml b/1.6/Patches/Xenotypes/PatchBSSneks.xml
deleted file mode 100644
index 173a3df..0000000
--- a/1.6/Patches/Xenotypes/PatchBSSneks.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
- Big and Small - Lamias and other Snake-People
-
-
-
-
- Defs/XenotypeDef[defName = "LoS_Lamia"
- or defName = "LoS_TrueLamia"
- or defName = "Naga"
- or defName = "Los_Adderman"
- or defName = "Los_Anacondaman"
- or defName = "Los_Snakeman"]/genes
-
- rjw_genes_reptilian_genitalia
-
-
-
- Defs/XenotypeDef[defName = "Nagaraj" or defName = "LoS_Silver" or defName = "LoS_Gorgon"]/genes
-
- rjw_genes_reptilian_genitalia
- rjw_genes_unbreakable
-
-
-
- Defs/XenotypeDef[defName = "LoS_Siren"]/genes
-
- rjw_genes_reptilian_genitalia
- rjw_genes_aphrodisiac_pheromones
- AptitudeStrong_Sex
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchBSUndead.xml b/1.6/Patches/Xenotypes/PatchBSUndead.xml
deleted file mode 100644
index c0a9632..0000000
--- a/1.6/Patches/Xenotypes/PatchBSUndead.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
- Big and Small - Vampires and the Undead
-
-
-
-
- Defs/XenotypeDef[defName="VU_Returned" or defName="VU_Ghoul" or defName="VU_Frankenstein"]/genes
-
- rjw_genes_no_sex_need
-
-
-
- Defs/XenotypeDef[defName="VU_Lycantrope"]/genes
-
- rjw_genes_canine_genitalia
-
-
-
- Defs/XenotypeDef[defName="VU_Nosferatu" or defName="VU_Dracul_Feral"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_no_sex_need
-
-
-
- Defs/XenotypeDef[defName="VU_Dracul_Spawn"
- or defName="VU_Dracul"
- or defName="VU_Dracul_Mature"
- or defName="VU_Dracul_Progenitor"
- ]/genes
-
- rjw_genes_demonic_genitalia
-
-
-
- Defs/XenotypeDef[defName="VU_WhiteRose"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_aphrodisiac_pheromones
- rjw_genes_bisexual
- AptitudeRemarkable_Sex
- rjw_genes_elasticity
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchBSYokai.xml b/1.6/Patches/Xenotypes/PatchBSYokai.xml
deleted file mode 100644
index 97fb917..0000000
--- a/1.6/Patches/Xenotypes/PatchBSYokai.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
- Big and Small - Yokai
-
-
-
-
- Defs/XenotypeDef[defName = "BS_Kitsune"]/genes
-
- rjw_genes_canine_genitalia
- rjw_genes_littered_births
-
-
-
-
- Defs/XenotypeDef[defName = "BS_Nekomata"]/genes
-
- rjw_genes_feline_genitalia
- rjw_genes_extra_vagina
- rjw_genes_extra_penis
- rjw_genes_small_breasts
- rjw_genes_littered_births
-
-
-
-
- Defs/XenotypeDef[defName = "BS_RedOni" or defName = "BS_BlueOni" or defName = "BS_LesserOni"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_much_fluid
-
-
-
-
- Defs/XenotypeDef[defName = "BS_GreatBlueOni" or defName = "BS_GreatRedOni"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_big_male_genitalia
- rjw_genes_loose_female_genitalia
- rjw_genes_very_much_fluid
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchBiotechNyaron.xml b/1.6/Patches/Xenotypes/PatchBiotechNyaron.xml
deleted file mode 100644
index 9f32522..0000000
--- a/1.6/Patches/Xenotypes/PatchBiotechNyaron.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- Biotech Nyaron
-
-
- Defs/XenotypeDef[defName="Nyaron"]/genes
-
- rjw_genes_feline_genitalia
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchErinsAuronya.xml b/1.6/Patches/Xenotypes/PatchErinsAuronya.xml
deleted file mode 100644
index 641b747..0000000
--- a/1.6/Patches/Xenotypes/PatchErinsAuronya.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- Erin's Auronya
-
-
- Defs/XenotypeDef[defName="ERN_Auronya"]/genes
-
- rjw_genes_feline_genitalia
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchErinsShisune.xml b/1.6/Patches/Xenotypes/PatchErinsShisune.xml
deleted file mode 100644
index b4bf303..0000000
--- a/1.6/Patches/Xenotypes/PatchErinsShisune.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- Erin's Shisune
-
-
- Defs/XenotypeDef[defName="ERN_Shisune"]/genes
-
- rjw_genes_canine_genitalia
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchImphileeXeno.xml b/1.6/Patches/Xenotypes/PatchImphileeXeno.xml
deleted file mode 100644
index 4a8655f..0000000
--- a/1.6/Patches/Xenotypes/PatchImphileeXeno.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
- Imphilee Xeno
-
-
- Defs/XenotypeDef[defName="LD_Imphilee"]/genes
-
- rjw_genes_tight_female_genitalia
- rjw_genes_small_breasts
- rjw_genes_elasticity
- rjw_genes_demonic_genitalia
-
-
-
-
-
- Imphilee Xeno
-
-
- Defs/XenotypeDef[defName="LD_Imphilee_Overlord"]/genes
-
- rjw_genes_tight_female_genitalia
- rjw_genes_small_breasts
- rjw_genes_elasticity
- rjw_genes_demonic_genitalia
- rjw_genes_rapist
-
-
-
-
-
-
diff --git a/1.6/Patches/Xenotypes/PatchKijinRace3.xml b/1.6/Patches/Xenotypes/PatchKijinRace3.xml
deleted file mode 100644
index 9fbd4c6..0000000
--- a/1.6/Patches/Xenotypes/PatchKijinRace3.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- Kijin Race 3.0
-
-
- Defs/XenotypeDef[defName="KijinXenotype"]/genes
-
- rjw_genes_demonic_genitalia
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchMammalia.xml b/1.6/Patches/Xenotypes/PatchMammalia.xml
deleted file mode 100644
index 6bf2de5..0000000
--- a/1.6/Patches/Xenotypes/PatchMammalia.xml
+++ /dev/null
@@ -1,140 +0,0 @@
-
-
-
-
- Biotech Expansion - Mammalia
-
-
- Defs/XenotypeDef[defName="Barkkin"]/genes
-
- rjw_genes_canine_genitalia
- rjw_genes_zoophile
-
-
-
-
-
- Biotech Expansion - Mammalia
-
-
- Defs/XenotypeDef[defName="Bonecrown"]/genes
-
- rjw_genes_equine_genitalia
- rjw_genes_zoophile
-
-
-
-
-
- Biotech Expansion - Mammalia
-
-
- Defs/XenotypeDef[defName="Wiretail"]/genes
-
- rjw_genes_small_breasts
- rjw_genes_small_male_genitalia
- rjw_genes_tight_female_genitalia
- rjw_genes_tight_anus
- rjw_genes_zoophile
-
-
-
-
-
- Biotech Expansion - Mammalia
-
-
- Defs/XenotypeDef[defName="Hidewing"]/genes
-
- rjw_genes_small_breasts
- rjw_genes_small_male_genitalia
- rjw_genes_tight_female_genitalia
- rjw_genes_tight_anus
- rjw_genes_zoophile
-
-
-
-
-
- Biotech Expansion - Mammalia
-
-
- Defs/XenotypeDef[defName="Seertusk"]/genes
-
- rjw_genes_big_breasts
- rjw_genes_big_male_genitalia
- rjw_genes_loose_female_genitalia
- rjw_genes_loose_anus
- rjw_genes_equine_genitalia
- rjw_genes_zoophile
-
-
-
-
-
- Biotech Expansion - Mammalia
-
-
- Defs/XenotypeDef[defName="Hindhopper"]/genes
-
- rjw_genes_tight_female_genitalia
- rjw_genes_tight_anus
- rjw_genes_littered_births
- rjw_genes_zoophile
-
-
-
-
-
- Biotech Expansion - Mammalia
-
-
- Defs/XenotypeDef[defName="Haytankard"]/genes
-
- rjw_genes_big_breasts
- rjw_genes_big_male_genitalia
- rjw_genes_loose_female_genitalia
- rjw_genes_loose_anus
- rjw_genes_udder
- rjw_genes_equine_genitalia
- rjw_genes_zoophile
-
-
-
-
-
- Biotech Expansion - Mammalia
-
-
- Defs/XenotypeDef[defName="Cloudpuff"]/genes
-
- rjw_genes_tight_female_genitalia
- rjw_genes_zoophile
-
-
-
-
-
- Biotech Expansion - Mammalia
-
-
- Defs/XenotypeDef[defName="Devilpuff"]/genes
-
- rjw_genes_tight_female_genitalia
- rjw_genes_zoophile
-
-
-
-
-
- Biotech Expansion - Mammalia
-
-
- Defs/XenotypeDef[defName="Blastheart"]/genes
-
- rjw_genes_equine_genitalia
- rjw_genes_zoophile
-
-
-
-
diff --git a/1.6/Patches/Xenotypes/PatchMammaliaMythic.xml b/1.6/Patches/Xenotypes/PatchMammaliaMythic.xml
deleted file mode 100644
index e49761a..0000000
--- a/1.6/Patches/Xenotypes/PatchMammaliaMythic.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
- Biotech Expansion - Mythic
-
-
- Defs/XenotypeDef[defName="Glintscale"]/genes
-
- rjw_genes_much_fluid
- rjw_genes_dragon_genitalia
- rjw_genes_big_male_genitalia
-
-
-
-
-
- Biotech Expansion - Mythic
-
-
- Defs/XenotypeDef[defName="Ashfeather"]/genes
-
- rjw_genes_much_fluid
-
-
-
-
-
- Biotech Expansion - Mythic
-
-
- Defs/XenotypeDef[defName="Tailbinder"]/genes
-
- rjw_genes_much_fluid
- rjw_genes_canine_genitalia
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchNarai.xml b/1.6/Patches/Xenotypes/PatchNarai.xml
deleted file mode 100644
index efcd3da..0000000
--- a/1.6/Patches/Xenotypes/PatchNarai.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- NaraiXenotype
-
-
- Defs/XenotypeDef[defName="Narai"]/genes
-
- rjw_genes_canine_genitalia
- rjw_genes_zoophile
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchNyaron.xml b/1.6/Patches/Xenotypes/PatchNyaron.xml
deleted file mode 100644
index 4ad40a5..0000000
--- a/1.6/Patches/Xenotypes/PatchNyaron.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- Biotech Nyaron
-
-
- Defs/XenotypeDef[defName="Nyaron"]/genes
-
- rjw_genes_tight_female_genitalia
- rjw_genes_feline_genitalia
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchObsidia.xml b/1.6/Patches/Xenotypes/PatchObsidia.xml
deleted file mode 100644
index 60b1c39..0000000
--- a/1.6/Patches/Xenotypes/PatchObsidia.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
-
- Obsidia Expansion - Arachnas Xenotype
-
-
- Defs/XenotypeDef[defName="OE_WidowArachna" or defName="OE_WolfArachna" or defName="OE_GoliathArachna"]/genes
-
- rjw_genes_ovipositor_genitalia
- rjw_genes_insectbreeder
- rjw_genes_fluid_insect_spunk
- rjw_genes_cocoonweaver
-
-
-
-
-
-
- Obsidia Expansion - Axotl Xenotype
-
-
- Defs/XenotypeDef[defName="OE_Axotl"]/genes
-
- rjw_genes_small_male_genitalia
- rjw_genes_living_cumbucket
-
-
-
-
-
-
- Obsidia Expansion - Ceratons Xenotype
-
-
- Defs/XenotypeDef[defName="OE_Protoceraton" or defName="OE_Styracodon" or defName="OE_Triceraton"]/genes
-
- rjw_genes_crocodilian_genitalia
- rjw_genes_big_male_genitalia
- rjw_genes_loose_female_genitalia
- rjw_genes_big_breasts
-
-
-
-
-
-
- Obsidia Expansion - Liches Xenotype
-
-
- Defs/XenotypeDef[defName="OE_Lich" or defName="OE_Archlich"]/genes
-
- rjw_genes_no_fluid
- rjw_genes_featureless_chest
- rjw_genes_no_sex_need
- rjw_genes_no_penis
- rjw_genes_no_vagina
-
-
-
-
-
-
- Obsidia Expansion - Mothoids Xenotype
-
-
- Defs/XenotypeDef[defName="OE_Mothoid" or defName="OE_MothoidPrime" or defName="OE_MothoidAtlant"]/genes
-
- rjw_genes_insectincubator
- rjw_genes_fluid_insect_spunk
-
-
-
-
-
-
- Obsidia Expansion - Slimes Xenotype
-
-
- Defs/XenotypeDef[defName="OE_Slime" or defName="OE_SlimeWaste" or defName="OE_SlimeBloody" or defName="OE_SlimePrime"]/genes
-
- rjw_genes_slime_genitalia
- rjw_genes_very_much_fluid
- rjw_genes_loose_anus
- rjw_genes_loose_female_genitalia
- rjw_genes_inflatable
- rjw_genes_elasticity
-
-
-
-
-
-
- Obsidia Expansion - Tortle Xenotype
-
-
- Defs/XenotypeDef[defName="OE_Tortle"]/genes
-
- rjw_genes_reptilian_genitalia
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchPapou.xml b/1.6/Patches/Xenotypes/PatchPapou.xml
deleted file mode 100644
index 39a6e81..0000000
--- a/1.6/Patches/Xenotypes/PatchPapou.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- Papou Race : emotional birds
-
-
- Defs/XenotypeDef[defName="papago"]/genes
-
- rjw_genes_orgasm_rush
- rjw_genes_tight_female_genitalia
- rjw_genes_tight_anus
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchPigskins.xml b/1.6/Patches/Xenotypes/PatchPigskins.xml
deleted file mode 100644
index 6c0be89..0000000
--- a/1.6/Patches/Xenotypes/PatchPigskins.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- Vanilla Races Expanded - Pigskin
-
-
- Defs/XenotypeDef[defName="VRE_Boarskin"]/genes
-
-
- rjw_genes_human_genitalia
- rjw_genes_much_fluid
- rjw_genes_zoophile
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchRimsenal.xml b/1.6/Patches/Xenotypes/PatchRimsenal.xml
deleted file mode 100644
index f0e9cec..0000000
--- a/1.6/Patches/Xenotypes/PatchRimsenal.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
- Rimsenal Xenotype Pack - Askbarn
-
-
-
-
- Defs/XenotypeDef[defName="Askbarn"]/genes
-
- rjw_genes_electric_satisfaction
- rjw_genes_pheromone_spit
- rjw_genes_loose_anus
- rjw_genes_bisexual
-
-
-
-
- Defs/XenotypeDef[defName="Uredd"]/genes
-
- rjw_genes_electric_satisfaction
- rjw_genes_dragon_genitalia
- rjw_genes_big_male_genitalia
- rjw_genes_big_breasts
-
-
-
-
-
-
-
-
- Rimsenal Xenotype Pack - Harana
-
-
- Defs/XenotypeDef[defName="Harana"]/genes
-
- rjw_genes_small_male_genitalia
- rjw_genes_tight_female_genitalia
- rjw_genes_unbreakable
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchRoosFaun.xml b/1.6/Patches/Xenotypes/PatchRoosFaun.xml
deleted file mode 100644
index 64ee8ad..0000000
--- a/1.6/Patches/Xenotypes/PatchRoosFaun.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- Roo's Faun Xenotype
-
-
- Defs/XenotypeDef[defName="RBSF_Faun"]/genes
-
- rjw_genes_equine_genitalia
- rjw_genes_zoophile
- rjw_genes_mating_call
- rjw_genes_tight_female_genitalia
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchRoosMino.xml b/1.6/Patches/Xenotypes/PatchRoosMino.xml
deleted file mode 100644
index b7930fb..0000000
--- a/1.6/Patches/Xenotypes/PatchRoosMino.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- Roo's Minotaur Xenotype
-
-
- Defs/XenotypeDef[defName="RBM_Minotaur"]/genes
-
- rjw_genes_equine_genitalia
- rjw_genes_much_fluid
- rjw_genes_big_male_genitalia
- rjw_genes_loose_female_genitalia
- rjw_genes_big_breasts
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchRoosSatyr.xml b/1.6/Patches/Xenotypes/PatchRoosSatyr.xml
deleted file mode 100644
index b82b1e1..0000000
--- a/1.6/Patches/Xenotypes/PatchRoosSatyr.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- Roo's Satyr Xenotype
-
-
- Defs/XenotypeDef[defName="RBSF_Satyr"]/genes
-
- rjw_genes_aphrodisiac_pheromones
- rjw_genes_much_fluid
-
-
-
-
diff --git a/1.6/Patches/Xenotypes/PatchSaurid.xml b/1.6/Patches/Xenotypes/PatchSaurid.xml
deleted file mode 100644
index 6a4b99b..0000000
--- a/1.6/Patches/Xenotypes/PatchSaurid.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- Vanilla Races Expanded - Saurid
-
-
- Defs/XenotypeDef[defName="VRESaurids_Saurid"]/genes
-
- rjw_genes_dragon_genitalia
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchVRELycanthrope.xml b/1.6/Patches/Xenotypes/PatchVRELycanthrope.xml
deleted file mode 100644
index 6896e98..0000000
--- a/1.6/Patches/Xenotypes/PatchVRELycanthrope.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- Vanilla Races Expanded - Lycanthrope
-
-
- Defs/XenotypeDef[defName="VRE_Wolfman"]/genes
-
- rjw_genes_human_genitalia
- rjw_genes_zoophile
-
-
-
-
-
- Vanilla Races Expanded - Lycanthrope
-
-
- Defs/XenotypeDef[defName="VRE_Lycan"]/genes
-
- rjw_genes_canine_genitalia
- rjw_genes_zoophile
- rjw_genes_rapist
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchVREPhytokin.xml b/1.6/Patches/Xenotypes/PatchVREPhytokin.xml
deleted file mode 100644
index 055f695..0000000
--- a/1.6/Patches/Xenotypes/PatchVREPhytokin.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- Vanilla Races Expanded - Phytokin
-
-
- Defs/XenotypeDef[defName="VRE_Poluxkin" or defName="VRE_Gauranlenkin" or defName="VRE_Animakin"]/genes
-
- rjw_genes_tight_female_genitalia
- rjw_genes_tight_anus
- rjw_genes_elasticity
- rjw_genes_bisexual
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchVRESanguophage.xml b/1.6/Patches/Xenotypes/PatchVRESanguophage.xml
deleted file mode 100644
index 706852c..0000000
--- a/1.6/Patches/Xenotypes/PatchVRESanguophage.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- Vanilla Races Expanded - Sanguophage
-
-
- Defs/XenotypeDef[defName="VRE_Bruxa" or defName="VRE_Ekkimian" or defName="VRE_Strigoi"]/genes
-
- rjw_genes_demonic_genitalia
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Patches/Xenotypes/PatchXenotech.xml b/1.6/Patches/Xenotypes/PatchXenotech.xml
deleted file mode 100644
index baf17b8..0000000
--- a/1.6/Patches/Xenotypes/PatchXenotech.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
- [LTS]Xenotech
-
-
-
-
- Defs/XenotypeDef[defName="LTS_Nyankind"]/genes
-
- rjw_genes_feline_genitalia
-
-
-
- Defs/XenotypeDef[defName="LTS_Growler"]/genes
-
- rjw_genes_canine_genitalia
- rjw_genes_zoophile
- rjw_genes_mating_call
-
-
-
- Defs/XenotypeDef[defName="LTS_Elfin"]/genes
-
- rjw_genes_small_male_genitalia
- rjw_genes_tight_female_genitalia
-
-
-
- Defs/XenotypeDef[defName="LTS_Ork"]/genes
-
- rjw_genes_big_male_genitalia
- rjw_genes_loose_female_genitalia
-
-
-
- Defs/XenotypeDef[defName="LTS_Lilime"]/genes
-
- rjw_genes_demonic_genitalia
- rjw_genes_elasticity
- AptitudeRemarkable_Sex
-
-
-
- Defs/XenotypeDef[defName="LTS_Anthrae"]/genes
-
- rjw_genes_ovipositor_genitalia
- rjw_genes_bisexual
- rjw_genes_insectincubator
-
-
-
- Defs/XenotypeDef[defName="LTS_Hydragon"]/genes
-
- rjw_genes_dragon_genitalia
- rjw_genes_basic_rut
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Rjw-Genes.sln b/1.6/Rjw-Genes.sln
deleted file mode 100644
index 86df24b..0000000
--- a/1.6/Rjw-Genes.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.32014.148
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rjw-Genes", "Source\Rjw-Genes.csproj", "{D7D21B4A-1DA7-41D8-B202-C58CA8FA62AA}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FB09ADF4-FC35-4C1F-9135-2B4C4E4ED347}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CumpilationPatcher", "Source\CumpilationLoader\CumpilationPatcher.csproj", "{3BF2C17E-C492-44DA-8BC4-7AF6ADEB6468}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {D7D21B4A-1DA7-41D8-B202-C58CA8FA62AA}.Debug|Any CPU.ActiveCfg = Release|Any CPU
- {D7D21B4A-1DA7-41D8-B202-C58CA8FA62AA}.Debug|Any CPU.Build.0 = Release|Any CPU
- {D7D21B4A-1DA7-41D8-B202-C58CA8FA62AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D7D21B4A-1DA7-41D8-B202-C58CA8FA62AA}.Release|Any CPU.Build.0 = Release|Any CPU
- {3BF2C17E-C492-44DA-8BC4-7AF6ADEB6468}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3BF2C17E-C492-44DA-8BC4-7AF6ADEB6468}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3BF2C17E-C492-44DA-8BC4-7AF6ADEB6468}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3BF2C17E-C492-44DA-8BC4-7AF6ADEB6468}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {28CF9A73-5333-4EB3-BFCC-3FBEDDA19200}
- EndGlobalSection
-EndGlobal
diff --git a/1.6/Source/Common/Defs/BoundedExtension.cs b/1.6/Source/Common/Defs/BoundedExtension.cs
deleted file mode 100644
index 08e150f..0000000
--- a/1.6/Source/Common/Defs/BoundedExtension.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class BoundedExtension : DefModExtension
- {
- public float minimum = 0.0f;
- public float maximum = 1.0f;
- }
-
-}
diff --git a/1.6/Source/Common/Defs/ChanceExtension.cs b/1.6/Source/Common/Defs/ChanceExtension.cs
deleted file mode 100644
index ff8b260..0000000
--- a/1.6/Source/Common/Defs/ChanceExtension.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class ChanceExtension : DefModExtension
- {
- public float chance;
- }
-
-}
diff --git a/1.6/Source/Common/Defs/DistanceExtension.cs b/1.6/Source/Common/Defs/DistanceExtension.cs
deleted file mode 100644
index 8bdd083..0000000
--- a/1.6/Source/Common/Defs/DistanceExtension.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
-
- ///
- /// Small Extension that covers distances for Genes.
- /// This allows to set distance in the XMLs.
- /// The distance is measured in tiles, so a distance of ~25 means 25 tiles away from the pawn in any direction.
- ///
- public class DistanceExtension : DefModExtension
- {
- public int distance;
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Common/Defs/HediffIncreaseOnSexExtension.cs b/1.6/Source/Common/Defs/HediffIncreaseOnSexExtension.cs
deleted file mode 100644
index c5f648f..0000000
--- a/1.6/Source/Common/Defs/HediffIncreaseOnSexExtension.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class HediffIncreaseOnSexExtension: DefModExtension
- {
- public HediffDef hediffDef;
- public float severityIncrease;
- public float applicationChance;
-
- public bool canCreateHediff;
-
- public bool applicableForWomen;
- public bool applicableForMen;
- public bool requiresPenetrativeSex;
- }
-
-}
diff --git a/1.6/Source/Common/Defs/ModExtensionHelper.cs b/1.6/Source/Common/Defs/ModExtensionHelper.cs
deleted file mode 100644
index d75fc12..0000000
--- a/1.6/Source/Common/Defs/ModExtensionHelper.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- internal class ModExtensionHelper
- {
-
- public static int GetDistanceFromModExtension(GeneDef defOf, int fallback)
- {
- DistanceExtension distanceExt = defOf.GetModExtension();
-
- int potentialDistance = distanceExt?.distance ?? fallback;
-
- if (potentialDistance > 0)
- {
- return potentialDistance;
- } else {
- ModLog.Warning($"Retrieved a bad distance ({potentialDistance}) reading the RJW_Genes.DistanceExtension for {defOf.defName}");
- return 1;
- }
- }
-
-
- public static int GetTickIntervalFromModExtension(GeneDef defOf, int fallback)
- {
- TickIntervalExtension tickExt = defOf.GetModExtension();
-
- int potentialTickInterval = tickExt?.tickInterval ?? fallback;
-
- if (potentialTickInterval > 0)
- {
- return potentialTickInterval;
- }
- else
- {
- ModLog.Warning($"Retrieved a bad distance ({potentialTickInterval}) reading the RJW_Genes.DistanceExtension for {defOf.defName}");
- return 1;
- }
- }
-
-
- }
-}
diff --git a/1.6/Source/Common/Defs/MultiplierExtension.cs b/1.6/Source/Common/Defs/MultiplierExtension.cs
deleted file mode 100644
index 5be194e..0000000
--- a/1.6/Source/Common/Defs/MultiplierExtension.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class MultiplierExtension : DefModExtension
- {
- public float multiplier;
- }
-}
diff --git a/1.6/Source/Common/Defs/TickBasedChanceExtension.cs b/1.6/Source/Common/Defs/TickBasedChanceExtension.cs
deleted file mode 100644
index 1a8feca..0000000
--- a/1.6/Source/Common/Defs/TickBasedChanceExtension.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class TickBasedChanceExtension : TickIntervalExtension
- {
- ///
- /// Set to 1 for "always", set to 0 for "never".
- /// Everything else is a bit statistics, but e.g. when set to .5 the chances grow per day from [50%, 75%, 82.25%, ...]
- ///
- public float eventChance;
- }
-}
diff --git a/1.6/Source/Common/Defs/TickIntervalExtension.cs b/1.6/Source/Common/Defs/TickIntervalExtension.cs
deleted file mode 100644
index 3e8184c..0000000
--- a/1.6/Source/Common/Defs/TickIntervalExtension.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// General DefModExtension to cover various genes that need to tick regularly.
- /// Defining it like this allows to adjust things in XML.
- ///
- public class TickIntervalExtension : DefModExtension
- {
- public int tickInterval;
- }
-}
diff --git a/1.6/Source/Common/Either.cs b/1.6/Source/Common/Either.cs
deleted file mode 100644
index dcd6dd8..0000000
--- a/1.6/Source/Common/Either.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace RJW_Genes
-{
- public class Either
- {
- public readonly TL left;
- public readonly TR right;
- public readonly bool isLeft;
-
- public Either(TL left)
- {
- this.left = left;
- this.isLeft = true;
- }
-
- public Either(TR right)
- {
- this.right = right;
- this.isLeft = false;
- }
- }
-
-}
diff --git a/1.6/Source/Common/Helpers/FactionUtility.cs b/1.6/Source/Common/Helpers/FactionUtility.cs
deleted file mode 100644
index 10a4e7c..0000000
--- a/1.6/Source/Common/Helpers/FactionUtility.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using RimWorld;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class FactionUtility
- {
-
- ///
- /// Tries to change the goodwill between the factions of two pawns.
- /// Exceptions when nothing happens:
- /// - Pawns, or Pawns Factions, are null
- /// - The `actors` Faction is not the players faction
- /// - Both pawns have the same faction
- /// - The Event is not found
- ///
- /// The pawn that initiated a faction-goodwill change by his actions
- /// The pawn that was harmed/affected by the action
- /// The event defname, for proper reporting
- /// How much (positive or negative) the goodwill will change
- public static void HandleFactionGoodWillPenalties(Pawn actor, Pawn target, string HistoryEventDefname, int goodWillChange, bool canSendHostileLetter=true)
- {
- if (actor == null) return;
- if (target == null) return;
- if (
- target.Faction != null && actor.Faction != null
- && target.Faction != actor.Faction
- && target.Faction != Faction.OfPlayer)
- {
- HistoryEventDef reason = DefDatabase.GetNamedSilentFail(HistoryEventDefname);
- if (reason == null) return;
-
- target.Faction.TryAffectGoodwillWith(actor.Faction, goodWillChange, true, canSendHostileLetter, reason, target);
- }
- }
- }
-}
diff --git a/1.6/Source/Common/Helpers/LaborState.cs b/1.6/Source/Common/Helpers/LaborState.cs
deleted file mode 100644
index abb00a1..0000000
--- a/1.6/Source/Common/Helpers/LaborState.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-
-using Verse;
-
-
-namespace RJW_Genes
-{
- class LaborState
- {
- public Pawn pawn;
- public int birthTotal = 0;
- public int birthCount = 1;
- public bool hasOvaryAgitator = false;
- public bool hasBioscaffold = false;
-
- public LaborState(Pawn pawn, int birthTotal)
- {
- this.pawn = pawn;
- this.birthTotal = birthTotal;
- this.birthCount = 0;
- this.hasOvaryAgitator = pawn.health.hediffSet.HasHediff(HediffDef.Named("OvaryAgitator"));
- this.hasBioscaffold = pawn.health.hediffSet.HasHediff(HediffDef.Named("Bioscaffold"));
- }
- }
-}
diff --git a/1.6/Source/Common/Helpers/MapUtility.cs b/1.6/Source/Common/Helpers/MapUtility.cs
deleted file mode 100644
index 79e45a6..0000000
--- a/1.6/Source/Common/Helpers/MapUtility.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using Verse;
-
-namespace RJW_Genes
-{
- public class MapUtility
- {
- ///
- /// Checks if the pawn is on the players home map.
- ///
- /// Reason is that drones should only be punished for absence of queen if they are on the map and there is no queen.
- /// If they are on a mission, transport-pod etc. they should not get boni or mali.
- ///
- /// The pawn for which to check map-presence.
- /// True if the pawn is on the home-map, False otherwise.
- public static bool PawnIsOnHomeMap(Pawn pawn)
- {
- if (Find.Maps.NullOrEmpty() || !Find.Maps.Where(mapCandidate => mapCandidate.IsPlayerHome).Any())
- {
- return false;
- }
- Map homeMap = Find.Maps.Where(mapCandidate => mapCandidate.IsPlayerHome).First();
- return
- homeMap != null && pawn != null
- && pawn.Spawned
- && pawn.Map == homeMap;
- }
-
- }
-}
diff --git a/1.6/Source/Common/ModLog.cs b/1.6/Source/Common/ModLog.cs
deleted file mode 100644
index b78e675..0000000
--- a/1.6/Source/Common/ModLog.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using Verse;
-
-namespace RJW_Genes
-{
- internal class ModLog
- {
- public static string ModId => "RJW-Genes";
-
- ///
- /// Logs the given message with [SaveStorage.ModId] appended.
- ///
- public static void Error(string message)
- {
- Log.Error($"[{ModId}] {message}");
- }
-
- ///
- /// Logs the given message with [SaveStorage.ModId] appended.
- ///
- public static void Message(string message)
- {
- Log.Message($"[{ModId}] {message}");
- }
-
- ///
- /// Logs the given message with [SaveStorage.ModId] appended.
- ///
- public static void Warning(string message)
- {
- Log.Warning($"[{ModId}] {message}");
- }
-
- public static void Debug(string message)
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- Log.Message($"[{ModId}][debug] {message}");
- }
- }
- }
-}
diff --git a/1.6/Source/Common/patches/PatchImplants.cs b/1.6/Source/Common/patches/PatchImplants.cs
deleted file mode 100644
index e5ce674..0000000
--- a/1.6/Source/Common/patches/PatchImplants.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HarmonyLib;
-using RimWorld;
-using Verse;
-using rjw;
-
-
-namespace RJW_Genes
-{
-
- public class PatchImplants
- {
- public static readonly ThoughtDef regretsStealingLovin = DefDatabase.GetNamed("RegretsStealingLovin");
- public static readonly ThoughtDef stoleSomeLovin = DefDatabase.GetNamed("StoleSomeLovin");
- public static readonly ThoughtDef bloodlustStoleSomeLovin = DefDatabase.GetNamed("BloodlustStoleSomeLovin");
- public static readonly TraitDef rapist = DefDatabase.GetNamed("Rapist");
-
- static Dictionary laborStateMap = new Dictionary();
- static public void would_rape_PostFix(ref bool __result, Pawn rapist)
- {
- if (rapist.health.hediffSet.HasHediff(HediffDef.Named("LimbicStimulator")))
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- ModLog.Message("Found LimbicStimulator hediff during SexAppraiser.InMoodForRape check");
- ModLog.Message("Pawn: " + rapist.NameShortColored + " (" + rapist.ThingID + ")");
- ModLog.Message("__result (Before roll): " + __result);
- }
- __result = Rand.Chance(0.95f);
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- ModLog.Message("__result (After roll): " + __result);
- }
- }
- }
-
- static public void is_rapist_PostFix(ref bool __result, Pawn pawn)
- {
- if (pawn.health.hediffSet.HasHediff(HediffDef.Named("LimbicStimulator")))
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- ModLog.Message("Found LimbicStimulator hediff during xxx.is_rapist check for " + pawn.NameShortColored + " (" + pawn.ThingID + ")" + " with __result = " + __result + " - forcing to true");
- __result = true;
- }
- }
- }
-
- static public void think_about_sex_Rapist_PostFix(ref ThoughtDef __result, Pawn pawn)
- {
- if (RJW_Genes_Settings.regretStealingLovinThoughtDisabled) return;
-
- if (pawn.health.hediffSet.HasHediff(HediffDef.Named("LimbicStimulator")) && (__result == stoleSomeLovin || __result == bloodlustStoleSomeLovin) && !pawn.story.traits.HasTrait(rapist))
- {
- __result = regretsStealingLovin;
- }
- }
-
-
- public static void MultiplyPregnancy(ref float __result, Pawn pawn)
- {
- if (pawn != null && pawn.health.hediffSet.HasHediff(HediffDef.Named("Bioscaffold")))
- {
- __result *= 2f;
- }
- }
- }
-}
diff --git a/1.6/Source/Common/patches/PatchPregnancyHelper.cs b/1.6/Source/Common/patches/PatchPregnancyHelper.cs
deleted file mode 100644
index a040924..0000000
--- a/1.6/Source/Common/patches/PatchPregnancyHelper.cs
+++ /dev/null
@@ -1,269 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HarmonyLib;
-using RimWorld;
-using rjw;
-using rjw.Modules.Interactions;
-using Verse;
-using static rjw.RJWPregnancySettings;
-//using rjw.Modules.Interactions.Enums;
-
-namespace RJW_Genes
-{
- [HarmonyPatch(typeof(PregnancyHelper))]
- public class PatchPregnancyHelper
- {
- public static HediffDef vasectomydef = DefDatabase.GetNamed("Vasectomy", true);
- // Token: 0x0600000F RID: 15
- //[HarmonyPostfix]
- //[HarmonyPatch("impregnate")]
- private static void ImpregnatePostfix(ref SexProps props)
- {
-
- if (RJWSettings.DevMode) rjw.ModLog.Message("Rimjobworld::impregnate(" + props.sexType + "):: " + xxx.get_pawnname(props.pawn) + " + " + xxx.get_pawnname(props.partner) + ":");
-
- //"mech" pregnancy
- //if (props.sexType == xxx.rjwSextype.MechImplant)
- //{
- // return;
- //}
-
- Pawn giver = props.pawn; // orgasmer
- Pawn receiver = props.partner;
-
- if (receiver.genes == null)
- {
- return;
- }
- Hediff vasectomy;
- receiver.health.hediffSet.TryGetHediff(vasectomydef, out vasectomy);
-
-
-
- List pawnparts = giver.GetGenitalsList();
- List partnerparts = receiver.GetGenitalsList();
- //var interaction = rjw.Modules.Interactions.Helpers.InteractionHelper.GetWithExtension(props.dictionaryKey);
- var interaction = props.interaction;
-
-
- // ILewdablePart.CouldBePenetrator()
-
- if (!(props.sexType == xxx.rjwSextype.Anal && receiver.genes.HasActiveGene(GeneDefOf.rjw_genes_fertile_anus)))
- return;
-
- //"normal" and "beastial" pregnancy
- if (RJWSettings.DevMode) ModLog.Message(" 'normal' pregnancy checks");
- //interaction stuff if for handling futa/see who penetrates who in interaction
- if (!props.isReceiver &&
- interaction.Extension.initiatorRequirement.genitalTags.Contains(GenitalTag.CanPenetrate) &&
- Genital_Helper.has_anus(receiver))
- //interaction.SubmissiveHasFamily(GenitalFamily.Anus))
- //TODO: 1.6 Make sure i havn't got these FLIPPED.
- {
- if (RJWSettings.DevMode) ModLog.Message(" impregnate - by initiator");
- }
- else if (props.isReceiver && props.isRevese &&
- Genital_Helper.has_anus(giver) &&
- interaction.Extension.recipientRequirement.genitalTags.Contains(GenitalTag.CanPenetrate))
- {
- if (RJWSettings.DevMode) ModLog.Message(" impregnate - by receiver (reverse)");
- }
- else
- {
- if (RJWSettings.DevMode) ModLog.Message(" no valid interaction tags/family");
- return;
- }
-
- if (!giver.GetLewdParts().AllRJWParts.Any(p => p.HasGenitalTag(GenitalTag.CanFertilize)))
- {
- if (RJWSettings.DevMode) ModLog.Message(xxx.get_pawnname(giver) + " has no parts to Fertilize with");
- return;
- }
-
- //If recieving pawn has a Vasectomy,temporarily remove it to prevent fertility Malice, replace it after DoImpregnate.
- if (vasectomy != null)
- {
- if (RJWSettings.DevMode) ModLog.Message("vasectomy check");
- receiver.health.RemoveHediff(vasectomy);
- }
- if (CanImpregnate2(giver, receiver, props.sexType))
- {
- if (RJWSettings.DevMode) ModLog.Message(xxx.get_pawnname(giver)+" is analy impregnating "+ xxx.get_pawnname(receiver));
- //DOES NOT EXIST
- //PregnancyHelper.DoImpregnate(giver, receiver);
-
- }
- if (vasectomy != null)
- {
- if (RJWSettings.DevMode) ModLog.Message("vasectomy check");
- receiver.health.AddHediff(vasectomy);
- }
- }
-
- private static bool CanImpregnate2(Pawn fucker, Pawn fucked, xxx.rjwSextype sexType)
- {
-
- if (fucker == null || fucked == null)
- {
- return false;
-
- }
- if (RJWSettings.DevMode)
- {
- rjw.ModLog.Message(string.Concat(new string[]
- {
- "Rimjobworld::CanImpregnate checks (",
- sexType.ToString(),
- "):: ",
- xxx.get_pawnname(fucker),
- " + ",
- xxx.get_pawnname(fucked),
- ":"
- }));
- }
- //if (sexType == xxx.rjwSextype.MechImplant && !RJWPregnancySettings.mechanoid_pregnancy_enabled)
- //{
- // if (RJWSettings.DevMode)
- // {
- // ModLog.Message(" mechanoid 'pregnancy' disabled");
- // }
- //return false;
-
- //}
- if (sexType != xxx.rjwSextype.Vaginal && sexType != xxx.rjwSextype.DoublePenetration && !(sexType == xxx.rjwSextype.Anal && fucked.genes.HasActiveGene(GeneDefOf.rjw_genes_fertile_anus)))
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(" sextype cannot result in pregnancy");
- }
- return false;
-
- }
- if (AndroidsCompatibility.IsAndroid(fucker) && AndroidsCompatibility.IsAndroid(fucked))
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(xxx.get_pawnname(fucked) + " androids cant breed/reproduce androids");
- }
- return false;
-
- }
- //if ((fucker.IsUnsexyRobot() || fucked.IsUnsexyRobot()) && sexType != xxx.rjwSextype.MechImplant)
- // {
- // if (RJWSettings.DevMode)
- // {
- // ModLog.Message(" unsexy robot cant be pregnant");
- // }
- // return false;
-
- //}
- if (!fucker.RaceHasPregnancy())
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(xxx.get_pawnname(fucked) + " filtered race that cant be pregnant");
- }
- return false;
-
- }
- if (!fucked.RaceHasPregnancy())
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(xxx.get_pawnname(fucker) + " filtered race that cant impregnate");
- }
- return false;
-
- }
- if (fucked.IsPregnant(false))
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(" already pregnant.");
- }
- return false;
-
- }
- List source = new List();
- fucked.health.hediffSet.GetHediffs(ref source, null);
- if (source.Count > 1)
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(xxx.get_pawnname(fucked) + " cant get pregnant while eggs inside");
- }
- return false;
-
- }
- List genitalsList = fucker.GetGenitalsList();
- List genitalsList2 = fucked.GetGenitalsList();
- if (!Genital_Helper.has_penis_fertile(fucker, genitalsList) && !Genital_Helper.has_penis_fertile(fucked, genitalsList2))
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(" missing genitals for impregnation"+ Genital_Helper.has_penis_fertile(fucker, genitalsList)+" "+ Genital_Helper.has_anus(fucked, genitalsList2)+" "+ Genital_Helper.has_penis_fertile(fucked, genitalsList2)+" "+ Genital_Helper.has_anus(fucker, genitalsList));
- }
- return false;
- }
- if (fucker.health.capacities.GetLevel(xxx.reproduction) <= 0f || fucked.health.capacities.GetLevel(xxx.reproduction) <= 0f)
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(" one (or both) pawn(s) infertile");
- }
- return false;
-
- }
- if (xxx.is_human(fucked) && xxx.is_human(fucker) && (RJWPregnancySettings.humanlike_impregnation_chance == 0 || !RJWPregnancySettings.humanlike_pregnancy_enabled))
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(" human pregnancy chance set to 0% or pregnancy disabled.");
- }
- return false;
-
- }
- if (((xxx.is_animal(fucker) && xxx.is_human(fucked)) || (xxx.is_human(fucker) && xxx.is_animal(fucked))) && RJWPregnancySettings.bestial_pregnancy == BestialPregnancy.None)
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(" bestiality pregnancy chance set to 0% or pregnancy disabled.");
- }
- return false;
-
- }
- if (xxx.is_animal(fucked) && xxx.is_animal(fucker) && (RJWPregnancySettings.animal_impregnation_chance == 0 || !RJWPregnancySettings.animal_pregnancy_enabled))
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(" animal-animal pregnancy chance set to 0% or pregnancy disabled.");
- }
- return false;
-
- }
- if (fucker.def.defName != fucked.def.defName && RJWPregnancySettings.interspecies_impregnation_modifier <= 0f && !RJWPregnancySettings.complex_interspecies)
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(" interspecies pregnancy disabled.");
- }
- return false;
-
- }
- if (fucked.RaceProps.gestationPeriodDays <= 0f && fucked.TryGetComp() == null)
- {
- if (RJWSettings.DevMode)
- {
- ModLog.Message(xxx.get_pawnname(fucked) + " mother.RaceProps.gestationPeriodDays is " + fucked.RaceProps.gestationPeriodDays.ToString() + " cant impregnate");
- }
- return false;
- }
-
- return true;
- }
-
- }
-}
diff --git a/1.6/Source/Common/patches/Patch_HediffIncreaseOnSex.cs b/1.6/Source/Common/patches/Patch_HediffIncreaseOnSex.cs
deleted file mode 100644
index 55e85a3..0000000
--- a/1.6/Source/Common/patches/Patch_HediffIncreaseOnSex.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-using HarmonyLib;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
-
- ///
- /// This patch "only" applies the hediff increase on sex.
- /// It checks for the hediff, creates it if necessary and applicable,
- /// and increases it based on the severity, chance and genders specified in the Extension.
- ///
- /// Some hediffs want follow up logic, e.g. the Feminization Gene,
- /// which is handled in an extra patch (that requires the hediff to be present already).
- ///
- [HarmonyPatch(typeof(SexUtility), "Aftersex")]
- public class Patch_HediffIncreaseOnSex
- {
-
- public static void Postfix(SexProps props)
- {
- if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal() || props.pawn.IsAnimal())
- {
- return;
- }
-
- Pawn pawn = props.pawn;
- Pawn partner = props.partner;
-
- if (pawn.genes == null || partner.genes == null) return;
-
- TryApplyHediffsOfSex(pawn, partner, props);
- TryApplyHediffsOfSex(partner, pawn, props);
- }
-
- ///
- /// Checks for every gene in a pawn if it applies a hediff or the severity of an existing hediff in a sexual partner.
- /// If the checks pass, the hediff is added or changed accordingly.
- ///
- /// Pawn that holds (one or many) genes that might apply a hediff change
- /// Pawn that will receive or alter any hediffs, if applicable
- /// The Sexprops, used for checking if sex is penetrative
- static void TryApplyHediffsOfSex(Pawn pawn, Pawn partner, SexProps props)
- {
- var random = new Random();
-
- foreach (Gene gene in pawn.genes.GenesListForReading)
- {
- HediffIncreaseOnSexExtension ext = gene.def.GetModExtension();
- if (ext == null) continue;
-
- if (DiseaseHelper.IsImmuneAgainstGeneticDisease(partner, gene.def)) continue;
- if (ext.requiresPenetrativeSex && DiseaseHelper.IsPenetrativeSex(props)) continue;
- if (!ext.applicableForMen && partner.gender == Gender.Male) continue;
- if (!ext.applicableForWomen && partner.gender == Gender.Female) continue;
- if (random.NextDouble() >= ext.applicationChance) continue;
-
- Hediff hediff = partner.health.hediffSet.GetFirstHediffOfDef(ext.hediffDef);
- if (hediff == null)
- {
- if (!ext.canCreateHediff) continue;
- hediff = partner.health.GetOrAddHediff(ext.hediffDef);
- hediff.Severity = 0.01f;
- ModLog.Debug($"{partner} got hediff {hediff.def.defName} from Patch_HediffIncreaseOnSex ({gene.def.defName}) upon sex with {pawn}");
- }
- float initial_severity = hediff.Severity;
- ModLog.Debug($"{partner}s hediff {hediff.def.defName} was changed by Patch_HediffIncreaseOnSex ({gene.def.defName}) upon sex with {pawn} [from {initial_severity} to {initial_severity + ext.severityIncrease}]");
- hediff.Severity += ext.severityIncrease;
-
- // DevNote: I also want to have "negative" hediff changes here, but I think its not necessary. Once the severity reaches 0, or below, the hediff should remove itself.
- }
- }
-
- }
-}
diff --git a/1.6/Source/Common/patches/Patch_ParentRelationUtility_GetParents.cs b/1.6/Source/Common/patches/Patch_ParentRelationUtility_GetParents.cs
deleted file mode 100644
index d6f2d94..0000000
--- a/1.6/Source/Common/patches/Patch_ParentRelationUtility_GetParents.cs
+++ /dev/null
@@ -1,171 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HarmonyLib;
-using RimWorld;
-using Verse;
-using rjw;
-
-namespace RJW_Genes
-{
- ///
- /// This Patch handles the changes to Fathers / Mothers when dealing with Femboys and Male/Male Pregnancies.
- ///
- /// This is related to
- ///
- [HarmonyPatch(typeof(ParentRelationUtility))]
- public class Patch_ParentRelationUtility_GetParents
- {
-
- [HarmonyPostfix]
- [HarmonyPatch("GetFather")]
- private static void FatherPostfix(ref Pawn __result, Pawn pawn)
- {
- if (__result == null && pawn.RaceProps.IsFlesh && pawn.relations != null)
- {
- List directRelations = pawn.relations.DirectRelations;
- bool flag = false;
- for (int i = 0; i < directRelations.Count; i++)
- {
- DirectPawnRelation directPawnRelation = directRelations[i];
- if (directPawnRelation.def == PawnRelationDefOf.Parent)
- {
- if (flag)
- {
- __result = directPawnRelation.otherPawn;
- return;
- }
- flag = true;
- }
- }
- }
- }
-
- [HarmonyPostfix]
- [HarmonyPatch("GetMother")]
- private static void MotherPostfix(ref Pawn __result, Pawn pawn)
- {
- if (__result == null && pawn.RaceProps.IsFlesh && pawn.relations != null)
- {
- List directRelations = pawn.relations.DirectRelations;
- for (int i = 0; i < directRelations.Count; i++)
- {
- DirectPawnRelation directPawnRelation = directRelations[i];
- if (directPawnRelation.def == PawnRelationDefOf.Parent)
- {
- __result = directPawnRelation.otherPawn;
- return;
- }
- }
- }
- }
-
-
- [HarmonyPostfix]
- [HarmonyPatch("HasSameFather")]
- private static void HasSameFatherPostfix(ref bool __result, Pawn pawn, Pawn other)
- {
- if (!__result && pawn.RaceProps.IsFlesh && pawn.relations != null)
- {
- Pawn parent = pawn.GetFather();
- Pawn parent2 = other.GetMother();
- Pawn parent3 = other.GetFather();
- Pawn parent4 = pawn.GetMother();
- if (parent != null && parent2 != null && parent == parent2)
- {
- __result = true;
- return;
- }
- if (parent3 != null && parent4 != null && parent3 == parent4)
- {
- __result = true;
- return;
- }
- if (parent != null && parent3 != null && parent == parent3)
- {
- __result = true;
- return;
- }
- if (parent2 != null && parent4 != null && parent2 == parent4)
- {
- __result = true;
- return;
- }
- }
- }
-
-
- [HarmonyPostfix]
- [HarmonyPatch("HasSameMother")]
- private static void HasSameMotherPostfix(ref bool __result, Pawn pawn, Pawn other)
- {
- if (!__result && pawn.RaceProps.IsFlesh && pawn.relations != null)
- {
- Pawn parent = pawn.GetFather();
- Pawn parent2 = other.GetMother();
- Pawn parent3 = other.GetFather();
- Pawn parent4 = pawn.GetMother();
- if (parent != null && parent2 != null && parent == parent2)
- {
- __result = true;
- return;
- }
- if (parent3 != null && parent4 != null && parent3 == parent4)
- {
- __result = true;
- return;
- }
- if (parent != null && parent3 != null && parent == parent3)
- {
- __result = true;
- return;
- }
- if (parent2 != null && parent4 != null && parent2 == parent4)
- {
- __result = true;
- return;
- }
- }
- }
-
- [HarmonyPrefix]
- [HarmonyPatch("SetFather")]
- private static bool SetFatherPrefix(Pawn pawn, Pawn newFather)
- {
- Pawn father = pawn.GetFather();
- if (father != newFather)
- {
- if (father != null)
- {
- pawn.relations.RemoveDirectRelation(PawnRelationDefOf.Parent, father);
- }
- if (newFather != null)
- {
- pawn.relations.AddDirectRelation(PawnRelationDefOf.Parent, newFather);
- }
- }
- return false;
- }
-
- [HarmonyPrefix]
- [HarmonyPatch("SetMother")]
- private static bool SetMotherPrefix(Pawn pawn, Pawn newMother)
- {
- Pawn mother = pawn.GetMother();
- if (mother != newMother)
- {
- if (mother != null)
- {
- pawn.relations.RemoveDirectRelation(PawnRelationDefOf.Parent, mother);
- }
- if (newMother != null)
- {
- pawn.relations.AddDirectRelation(PawnRelationDefOf.Parent, newMother);
- }
- }
- return false;
- }
- }
-}
diff --git a/1.6/Source/CumpilationLoader/CumpilationLoader.cs b/1.6/Source/CumpilationLoader/CumpilationLoader.cs
deleted file mode 100644
index 64fe9f8..0000000
--- a/1.6/Source/CumpilationLoader/CumpilationLoader.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HarmonyLib;
-using rjw;
-using RJW_Genes;
-using Verse;
-
-
-
-namespace CumpilationPatcher
-{
-
- [StaticConstructorOnStartup]
- public static class CumpilationPatcher
- {
- static CumpilationPatcher()
- {
- ModLog.Message("Cumpilation detected, installing relevent RJW_Genes Patches...");
-
- Harmony harmony = new Harmony("rjw_genes_CumPatcher");
-
- // Gene: Inflatable [Postfix Patch]
- harmony.Patch(AccessTools.Method(typeof(SexUtility), nameof(SexUtility.TransferFluids)),
- postfix: new HarmonyMethod(typeof(Patch_Cumpilation_Inflatable), nameof(Patch_Cumpilation_Inflatable.PostFix)));
- // Gene: Inflation-Resistance [Postfix Patch]
- harmony.Patch(AccessTools.Method(typeof(Cumpilation.Cumflation.CumflationUtility), nameof(Cumpilation.Cumflation.CumflationUtility.CanBeCumflated)),
- postfix: new HarmonyMethod(typeof(Patch_Cumpilation_BlockCumflation), nameof(Patch_Cumpilation_BlockCumflation.PostFix)));
- // Gene: Inflation-Resistance [Postfix Patch]
- harmony.Patch(AccessTools.Method(typeof(Cumpilation.Cumflation.StuffingUtility), nameof(Cumpilation.Cumflation.StuffingUtility.CanBeStuffed)),
- postfix: new HarmonyMethod(typeof(Patch_Cumpilation_BlockStuffing), nameof(Patch_Cumpilation_BlockStuffing.PostFix)));
- // Gene: Living Cumbucket [Postfix Patch]
- harmony.Patch(AccessTools.Method(typeof(SexUtility), nameof(SexUtility.SatisfyPersonal)),
- postfix: new HarmonyMethod(typeof(Patch_LivingCumbucket_StackHediff), nameof(Patch_LivingCumbucket_StackHediff.PostFix)));
-
- // JobDriver_processingCumbucket
- harmony.Patch(AccessTools.Method(typeof(JobDriver_ProcessingCumbucket), nameof(JobDriver_ProcessingCumbucket.SpawnCum)),
- postfix: new HarmonyMethod(typeof(Patch_ProcessingCumbucket), nameof(Patch_ProcessingCumbucket.PostFix)));
- // JobGiver_GetLifeForce
- harmony.Patch(AccessTools.Method(typeof(JobGiver_GetLifeForce), nameof(JobGiver_GetLifeForce.GetStoredCum)),
- postfix: new HarmonyMethod(typeof(Patch_JobGiver_GetLifeForce), nameof(Patch_JobGiver_GetLifeForce.PostFix)));
-
- //CumEater
- /// The patched function is: [HarmonyPatch(typeof(JobDriver_Sex), nameof(JobDriver_Sex.ChangePsyfocus))]
- harmony.Patch(AccessTools.Method(typeof(JobDriver_Sex), nameof(JobDriver_Sex.ChangePsyfocus)),
- postfix: new HarmonyMethod(typeof(Patch_SexTicks_ChangePsyfocus), nameof(Patch_SexTicks_ChangePsyfocus.PostFix)));
-
- }
- }
-
-
- internal class ModLog
- {
- public static string ModId => "RJW-Genes-CumPatcher";
-
- ///
- /// Logs the given message with [SaveStorage.ModId] appended.
- ///
- public static void Error(string message)
- {
- Log.Error($"[{ModId}] {message}");
- }
-
- ///
- /// Logs the given message with [SaveStorage.ModId] appended.
- ///
- public static void Message(string message)
- {
- Log.Message($"[{ModId}] {message}");
- }
-
- ///
- /// Logs the given message with [SaveStorage.ModId] appended.
- ///
- public static void Warning(string message)
- {
- Log.Warning($"[{ModId}] {message}");
- }
-
- public static void Debug(string message)
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- Log.Message($"[{ModId}][debug] {message}");
- }
- }
- }
-}
diff --git a/1.6/Source/CumpilationLoader/CumpilationPatcher.csproj b/1.6/Source/CumpilationLoader/CumpilationPatcher.csproj
deleted file mode 100644
index 6207e63..0000000
--- a/1.6/Source/CumpilationLoader/CumpilationPatcher.csproj
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {3BF2C17E-C492-44DA-8BC4-7AF6ADEB6468}
- Library
- Properties
- CumpilationPatcher
- CumpilationPatcher
- v4.8
- 512
- true
-
-
- true
- full
- false
- ..\..\Mods\Cumpilation\Assemblies\
-
-
- prompt
- 4
-
-
- pdbonly
- true
- ..\..\Mods\Cumpilation\Assemblies\
-
-
- prompt
- 4
-
-
-
- ..\..\..\..\..\..\..\Steam\steamapps\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll
- False
-
-
- ..\..\..\..\..\..\..\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll
- False
-
-
- ..\..\..\..\cumpilation\1.6\Assemblies\Cumpilation.dll
- False
-
-
- ..\..\..\..\..\Mods\rjw\1.6\Assemblies\RJW.dll
- False
-
-
- ..\..\Assemblies\Rjw-Genes.dll
- False
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/1.6/Source/CumpilationLoader/Patch_Cumpilation_Inflatable.cs b/1.6/Source/CumpilationLoader/Patch_Cumpilation_Inflatable.cs
deleted file mode 100644
index aaedf58..0000000
--- a/1.6/Source/CumpilationLoader/Patch_Cumpilation_Inflatable.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HarmonyLib;
-using rjw;
-using RimWorld;
-using Verse;
-
-namespace RJW_Genes
-{
- class Patch_Cumpilation_Inflatable
- {
-
- public static bool Prepare() => ModsConfig.IsActive("vegapnk.cumpilation");
-
- // This patch does not need the normal Harmony Targetting,
- // as it needs to be added only on demand (See HarmonyInit.cs)
- public static void PostFix(SexProps props)
- {
-
- if (props == null || props.pawn == null || props.partner == null) return;
-
-
- if (props.pawn.genes != null && props.pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_inflatable) )
- {
- AddOrIncreaseCumflationCounterHediffs(props.pawn);
- }
-
- if (props.partner.genes != null && props.partner.genes.HasActiveGene(GeneDefOf.rjw_genes_inflatable))
- {
- AddOrIncreaseCumflationCounterHediffs(props.partner);
- }
- }
-
- public static void AddOrIncreaseCumflationCounterHediffs(Pawn inflated)
- {
-
- List<(Hediff,HediffDef)> expectedCounterHediffs = inflated.health.hediffSet.hediffs
- .Where(hediff => FindMatchingCounterHediff(hediff.def) != null)
- .Select(hediff => (hediff,FindMatchingCounterHediff(hediff.def)))
- .ToList();
-
- ModLog.Debug($"Adding or Increasing {expectedCounterHediffs.Count()} expected CounterHediffs for Pawn {inflated}");
-
- foreach ((Hediff,HediffDef) matchedHediffs in expectedCounterHediffs) {
- if (inflated.health.hediffSet.HasHediff(matchedHediffs.Item2)) {
- Hediff counter = inflated.health.GetOrAddHediff(matchedHediffs.Item2);
- counter.Severity = matchedHediffs.Item1.Severity;
- } else
- {
- Hediff counter = HediffMaker.MakeHediff(matchedHediffs.Item2, inflated, matchedHediffs.Item1.Part);
- counter.Severity = matchedHediffs.Item1.Severity;
- inflated.health.AddHediff(counter);
- }
- }
- }
-
- public static HediffDef FindMatchingCounterHediff(HediffDef hediffDef)
- {
- if (hediffDef == null) return null;
-
- var result = DefDatabase.AllDefsListForReading
- .Where(def => {
- if (def.comps == null || def.comps.Count == 0) return false;
- var Matcher = def.comps.FirstOrFallback(comp => comp is HediffCompProperties_MatchSeverityOfHediff,null);
- if (Matcher == null) return false;
- HediffCompProperties_MatchSeverityOfHediff MatcherCasted = (HediffCompProperties_MatchSeverityOfHediff)Matcher;
- return MatcherCasted.hediffToMatch == hediffDef;
- })
- .FirstOrFallback(null);
- if (result != null) ModLog.Debug($"Found CounterHediff {result} as counter for {hediffDef}");
-
- return result;
- }
-
- public static Hediff CreateOrGetCumflationCounterHediff(Pawn inflated, HediffDef counterCumflationDef, BodyPartRecord bodyPartRecord)
- {
- Hediff cumflationHediff = inflated.health.hediffSet.GetFirstHediffOfDef(counterCumflationDef);
- if (cumflationHediff == null)
- {
- cumflationHediff = HediffMaker.MakeHediff(counterCumflationDef, inflated, bodyPartRecord);
- cumflationHediff.Severity = 0;
- inflated.health.AddHediff(cumflationHediff, bodyPartRecord);
- }
- return cumflationHediff;
-
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/CumpilationLoader/Patches/Patch_Cumpilation_BlockCumflation.cs b/1.6/Source/CumpilationLoader/Patches/Patch_Cumpilation_BlockCumflation.cs
deleted file mode 100644
index 9a1c5db..0000000
--- a/1.6/Source/CumpilationLoader/Patches/Patch_Cumpilation_BlockCumflation.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RJW_Genes;
-
-
-namespace CumpilationPatcher
-{
- public class Patch_Cumpilation_BlockCumflation
- {
- public static bool Prepare() => ModsConfig.IsActive("vegapnk.cumpilation");
- public static void PostFix(Pawn pawn,ref bool __result) {
- if (pawn != null && pawn.genes != null && pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_un_inflatable))
- __result = false;
- }
-
- }
-}
diff --git a/1.6/Source/CumpilationLoader/Patches/Patch_Cumpilation_BlockStuffing.cs b/1.6/Source/CumpilationLoader/Patches/Patch_Cumpilation_BlockStuffing.cs
deleted file mode 100644
index 79a2a0f..0000000
--- a/1.6/Source/CumpilationLoader/Patches/Patch_Cumpilation_BlockStuffing.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RJW_Genes;
-
-namespace CumpilationPatcher
-{
- public class Patch_Cumpilation_BlockStuffing
- {
-
- public static bool Prepare() => ModsConfig.IsActive("vegapnk.cumpilation");
- public static void PostFix(Pawn pawn,ref bool __result) {
- if (pawn != null && pawn.genes != null && pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_un_inflatable))
- __result = false;
- }
-
- }
-}
diff --git a/1.6/Source/CumpilationLoader/Patches/Patch_Cumpilation_Inflatable.cs b/1.6/Source/CumpilationLoader/Patches/Patch_Cumpilation_Inflatable.cs
deleted file mode 100644
index 42cdf96..0000000
--- a/1.6/Source/CumpilationLoader/Patches/Patch_Cumpilation_Inflatable.cs
+++ /dev/null
@@ -1,95 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HarmonyLib;
-using rjw;
-using RimWorld;
-using Verse;
-using RJW_Genes;
-
-namespace CumpilationPatcher
-{
- class Patch_Cumpilation_Inflatable
- {
-
- public static bool Prepare() => ModsConfig.IsActive("vegapnk.cumpilation");
-
- // This patch does not need the normal Harmony Targetting,
- // as it needs to be added only on demand (See HarmonyInit.cs)
- public static void PostFix(SexProps props)
- {
-
- if (props == null || props.pawn == null || props.partner == null) return;
-
- if (props.pawn.genes != null && (props.pawn.genes.HasActiveGene(RJW_Genes.GeneDefOf.rjw_genes_inflatable) || props.pawn.genes.HasActiveGene(RJW_Genes.GeneDefOf.rjw_genes_elasticity) ))
- {
- ModLog.Debug($"Adding or updating Counter Cumflation HeDiff for {props.pawn.Name}.");
- AddOrIncreaseCumflationCounterHediffs(props.pawn);
- }
-
- if (props.partner.genes != null && (props.partner.genes.HasActiveGene(RJW_Genes.GeneDefOf.rjw_genes_inflatable) || props.partner.genes.HasActiveGene(RJW_Genes.GeneDefOf.rjw_genes_elasticity) ))
- {
- ModLog.Debug($"Adding or updating Counter Cumflation HeDiff for {props.partner.Name}.");
- AddOrIncreaseCumflationCounterHediffs(props.partner);
- }
- }
-
- public static void AddOrIncreaseCumflationCounterHediffs(Pawn inflated)
- {
-
- List<(Hediff,HediffDef)> expectedCounterHediffs = inflated.health.hediffSet.hediffs
- .Where(hediff => FindMatchingCounterHediff(hediff.def) != null)
- .Select(hediff => (hediff,FindMatchingCounterHediff(hediff.def)))
- .ToList();
-
- ModLog.Debug($"Adding or Increasing {expectedCounterHediffs.Count()} expected CounterHediffs for Pawn {inflated}");
-
- foreach ((Hediff,HediffDef) matchedHediffs in expectedCounterHediffs) {
- if (inflated.health.hediffSet.HasHediff(matchedHediffs.Item2)) {
- Hediff counter = inflated.health.GetOrAddHediff(matchedHediffs.Item2);
- counter.Severity = matchedHediffs.Item1.Severity;
- } else
- {
- Hediff counter = HediffMaker.MakeHediff(matchedHediffs.Item2, inflated, matchedHediffs.Item1.Part);
- counter.Severity = matchedHediffs.Item1.Severity;
- inflated.health.AddHediff(counter);
- }
- }
- }
-
- public static HediffDef FindMatchingCounterHediff(HediffDef hediffDef)
- {
- if (hediffDef == null) return null;
-
- var result = DefDatabase.AllDefsListForReading
- .Where(def => {
- if (def.comps == null || def.comps.Count == 0) return false;
- var Matcher = def.comps.FirstOrFallback(comp => comp is HediffCompProperties_MatchSeverityOfHediff,null);
- if (Matcher == null) return false;
- HediffCompProperties_MatchSeverityOfHediff MatcherCasted = (HediffCompProperties_MatchSeverityOfHediff)Matcher;
- return MatcherCasted.hediffToMatch == hediffDef;
- })
- .FirstOrFallback(null);
- if (result != null) ModLog.Debug($"Found CounterHediff {result} as counter for {hediffDef}");
-
- return result;
- }
-
- public static Hediff CreateOrGetCumflationCounterHediff(Pawn inflated, HediffDef counterCumflationDef, BodyPartRecord bodyPartRecord)
- {
- Hediff cumflationHediff = inflated.health.hediffSet.GetFirstHediffOfDef(counterCumflationDef);
- if (cumflationHediff == null)
- {
- cumflationHediff = HediffMaker.MakeHediff(counterCumflationDef, inflated, bodyPartRecord);
- cumflationHediff.Severity = 0;
- inflated.health.AddHediff(cumflationHediff, bodyPartRecord);
- }
- return cumflationHediff;
-
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/CumpilationLoader/Patches/Patch_JobGiver_GetLifeForce.cs b/1.6/Source/CumpilationLoader/Patches/Patch_JobGiver_GetLifeForce.cs
deleted file mode 100644
index 8f4bf47..0000000
--- a/1.6/Source/CumpilationLoader/Patches/Patch_JobGiver_GetLifeForce.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using RimWorld;
-using Verse;
-using Verse.AI;
-
-namespace CumpilationPatcher
-{
- internal class Patch_JobGiver_GetLifeForce
- {
- //Patches the 'empty' GetStoredCum method in 'JobGiver_GetLifeForce'
- public static void PostFix(Pawn pawn, ref Thing __result)
- {
- Thing carriedThing = pawn.carryTracker.CarriedThing;
- ThingDef cumThingDef = Cumpilation.DefOfs.Cumpilation_Cum;
-
- if (cumThingDef == null) { return; } //__result is already null;
-
- if (carriedThing != null && carriedThing.def == cumThingDef)
- {
- __result = carriedThing;
- return;
- }
- for (int i = 0; i < pawn.inventory.innerContainer.Count; i++)
- {
- if (pawn.inventory.innerContainer[i].def == cumThingDef)
- {
- __result = pawn.inventory.innerContainer[i];
- return;
- }
- }
- __result = GenClosest.ClosestThing_Global_Reachable(pawn.Position, pawn.Map, pawn.Map.listerThings.ThingsOfDef(cumThingDef), PathEndMode.OnCell, TraverseParms.For(pawn, Danger.Deadly, TraverseMode.ByPawn, false, false, false), 9999f, (Thing t) => pawn.CanReserve(t, 1, -1, null, false) && !t.IsForbidden(pawn), null);
- return;
- }
- }
-}
diff --git a/1.6/Source/CumpilationLoader/Patches/Patch_LivingCumbucket_StackHediff.cs b/1.6/Source/CumpilationLoader/Patches/Patch_LivingCumbucket_StackHediff.cs
deleted file mode 100644
index a8dec51..0000000
--- a/1.6/Source/CumpilationLoader/Patches/Patch_LivingCumbucket_StackHediff.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using HarmonyLib;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using static System.Net.Mime.MediaTypeNames;
-using Cumpilation;
-using RJW_Genes;
-
-namespace CumpilationPatcher
-{
-
- public class Patch_LivingCumbucket_StackHediff
- {
-
- ///
- /// This is the amount of fluid required if the pawn has a bodysize of 1, to reach a severity in the hediff of 1.
- /// The hediff can still be increased over 1.0.
- ///
- const float fluid_amount_required_for_hediff_severity_ = 100.0f;
- public static bool Prepare() => ModsConfig.IsActive("vegapnk.cumpilation");
-
- public static void PostFix(SexProps props)
- {
- // ShortCuts: Exit Early if Pawn or Partner are null (can happen with Masturbation or other nieche-cases)
- if (props == null || props.pawn == null || !props.hasPartner())
- return;
-
- // Is not internal Sex
- if (!Cumpilation.Cumflation.StuffingUtility.IsSexTypeThatCanCumstuff(props) && !Cumpilation.Cumflation.CumflationUtility.IsSexTypeThatCanCumflate(props))
- return;
-
- Pawn pawnA = props.pawn;
- Pawn pawnB = props.partner;
-
- if (pawnA.genes != null && pawnA.genes.HasActiveGene(GeneDefOf.rjw_genes_living_cumbucket) && FluidUtility.GetTotalFluidAmount(pawnB) > 0)
- {
- ISexPartHediff genital = Cumpilation.Common.FluidUtility.GetGenitalsWithFluids(pawnB,filterForShootsOnOrgasm:true).RandomElement();
- if (genital != null)
- {
- var comp = genital.GetPartComp();
- StackUpLivingCumbucket(pawnA, comp.FluidAmount, comp.Fluid, pawnB);
- }
- }
-
- if (pawnB.genes != null && pawnB.genes.HasActiveGene(GeneDefOf.rjw_genes_living_cumbucket) && FluidUtility.GetTotalFluidAmount(pawnA) > 0)
- {
- ISexPartHediff genital = Cumpilation.Common.FluidUtility.GetGenitalsWithFluids(pawnA, filterForShootsOnOrgasm: true).RandomElement();
- if (genital != null)
- {
- var comp = genital.GetPartComp();
- StackUpLivingCumbucket(pawnB, comp.FluidAmount, comp.Fluid, pawnA);
- }
- }
- }
-
- public static void StackUpLivingCumbucket(Pawn pawn, float cumamount, SexFluidDef fluid, Pawn source)
- {
- if (!ModsConfig.IsActive("vegapnk.cumpilation"))
- return;
-
-
- float bodysize = pawn.BodySize;
- float result_severity_increase = cumamount / (fluid_amount_required_for_hediff_severity_ * bodysize);
-
- Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_filled_living_cumbucket);
- if (hediff == null)
- {
- hediff = pawn.health.GetOrAddHediff(HediffDefOf.rjw_genes_filled_living_cumbucket);
- hediff.Severity = 0.01f;
- }
- try
- {
- var storage = hediff.TryGetComp();
- if (storage != null)
- {
- Cumpilation.Cumflation.FluidSource entry = new Cumpilation.Cumflation.FluidSource() { amount = cumamount, fluid = fluid, pawn = source };
- storage.AddOrMerge(entry);
- }
- } catch {
- return;
- }
- hediff.Severity += result_severity_increase;
- ModLog.Debug($"Pumping the living cumbucket {pawn} (Bodysize {bodysize}) with {cumamount} cum, resulting in severity {hediff.Severity} (+{result_severity_increase})");
-
- }
- }
-}
diff --git a/1.6/Source/CumpilationLoader/Patches/Patch_ProcessingCumbucket.cs b/1.6/Source/CumpilationLoader/Patches/Patch_ProcessingCumbucket.cs
deleted file mode 100644
index b7e6561..0000000
--- a/1.6/Source/CumpilationLoader/Patches/Patch_ProcessingCumbucket.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using rjw;
-using Verse;
-using RJW_Genes;
-
-namespace CumpilationPatcher
-{
- internal class Patch_ProcessingCumbucket
- {
-
-
- //Patches the 'empty' SpawnCum method in 'JobDriver_ProcessingCumbucket'
- public static void PostFix(Pawn pawn, IntVec3 cell, Map map)
- {
- Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_filled_living_cumbucket);
- if (hediff == null)
- {
- ModLog.Warning($"{pawn} has the JobDriver_ProcessCumbucket but does not have the Hediff for filled cumbucket.");
- return;
- }
-
-
- var storage = hediff.TryGetComp();
- var random_entry = storage.sources.RandomElementByWeight(p => p.amount);
-
- ThingDef ToSpawn = random_entry.fluid.consumable == null ? Cumpilation.DefOfs.Cumpilation_Cum : random_entry.fluid.consumable;
-
- ThingDef cumDef = Cumpilation.DefOfs.Cumpilation_Cum;
-
- // Case 1: "Normal Severity", just puke out a bit of cum here and there.
- if (hediff.Severity <= 10)
- {
- Thing cum = ThingMaker.MakeThing(cumDef);
- cum.Position = cell;
- int stacks = Math.Max(1, (int)(hediff.Severity * 1.5));
- stacks = Math.Min(stacks, 75); // 75 is the default max stacksize ...
- cum.stackCount = stacks;
- cum.SpawnSetup(map, false);
- hediff.Severity -= (stacks / 50);
- }
- else
- // Case 2: Reserviour mode, put out a lot of cum at once but less often.
- {
- int stacks = Math.Max(1, (int)(hediff.Severity * 1.5));
-
- while (stacks > 0)
- {
- Thing cum = ThingMaker.MakeThing(cumDef);
- cum.Position = cell;
- var curStacks = Math.Min(stacks, 75); // 75 is the default max stacksize ...
- cum.stackCount = stacks;
- cum.SpawnSetup(map, false);
- hediff.Severity -= (curStacks / 50);
- stacks -= curStacks;
- }
- }
- }
- }
-}
diff --git a/1.6/Source/CumpilationLoader/Patches/Patch_SexTicks_ChangePsyfocus.cs b/1.6/Source/CumpilationLoader/Patches/Patch_SexTicks_ChangePsyfocus.cs
deleted file mode 100644
index bd5905d..0000000
--- a/1.6/Source/CumpilationLoader/Patches/Patch_SexTicks_ChangePsyfocus.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using HarmonyLib;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using RimWorld;
-using Verse;
-using RJW_Genes;
-
-namespace CumpilationPatcher
-{
-
- ///
- /// This patch enables cum-eater pawns to drain cumflations for more fertilin drain by passively having sex.
- /// It is hooked after RJWs Change-Psyfocus so that pawns that are having prolonged sex (e.g. by overdrive) can fully drain the cumflation over time.
- ///
- /// The patched function is: [HarmonyPatch(typeof(JobDriver_Sex), nameof(JobDriver_Sex.ChangePsyfocus))]
- ///
- public static class Patch_SexTicks_ChangePsyfocus
- {
- public const float LIFEFORCE_GAIN_PER_TICK = 0.05f;
- public const float CUMFLATION_SEVERITY_LOSS_PER_TICK = 0.1f;
-
- //Using ChangePsyfocus as it is something that fires every 60 ticks
- public static void PostFix(ref JobDriver_Sex __instance, ref Pawn pawn, ref Thing target)
- {
- SexProps props = __instance.Sexprops;
- if (props != null && props.sexType == xxx.rjwSextype.Cunnilingus && props.partner != null && target != null)
- {
- Pawn pawn2 = target as Pawn;
- // Case 1: Pawn is "drinking" and has CumEater Gene
- if (props.isRevese && RJW_Genes.GeneUtility.IsCumEater(pawn))
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- ModLog.Message($"{pawn.Name} is draining {pawn2.Name}'s cumflation for additional fertilin (CumEater-Gene ChangePsyFocus-Trigger).");
- DrinkCumflation(pawn2, pawn);
- }
- // Case 2: Pawn2 is "drinking" and has CumEater Gene
- else if (RJW_Genes.GeneUtility.IsCumEater(pawn2))
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- ModLog.Message($"{pawn.Name} is draining {pawn2.Name}'s cumflation for additional fertilin (CumEater-Gene ChangePsyFocus-Trigger).");
- DrinkCumflation(pawn, pawn2);
- }
- }
- }
-
- public static void DrinkCumflation(Pawn source, Pawn consumer)
- {
- if (!ModsConfig.IsActive("vegapnk.cumpilation")) return;
- if (source == null || consumer == null || source.IsAnimal() || consumer.IsAnimal() ) return;
-
- if (RJW_Genes.GeneUtility.HasLifeForce(consumer) && RJW_Genes.GeneUtility.IsCumEater(consumer)
- && source.health.hediffSet.HasHediff(Cumpilation.DefOfs.Cumpilation_Cumflation))
- {
- Hediff cumflation = source.health.hediffSet.GetFirstHediffOfDef(Cumpilation.DefOfs.Cumpilation_Cumflation);
- Gene_LifeForce gene_LifeForce = consumer.genes.GetFirstGeneOfType();
- cumflation.Severity = Math.Max(0f,cumflation.Severity - CUMFLATION_SEVERITY_LOSS_PER_TICK);
- gene_LifeForce.Resource.Value += LIFEFORCE_GAIN_PER_TICK;
- }
- }
- }
-}
diff --git a/1.6/Source/CumpilationLoader/Properties/AssemblyInfo.cs b/1.6/Source/CumpilationLoader/Properties/AssemblyInfo.cs
deleted file mode 100644
index b12edb3..0000000
--- a/1.6/Source/CumpilationLoader/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("CumpilationLoader")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("CumpilationLoader")]
-[assembly: AssemblyCopyright("Copyright © 2025")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("3bf2c17e-c492-44da-8bc4-7af6adeb6468")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-[assembly: AssemblyVersion("2.5.3.0")]
-[assembly: AssemblyFileVersion("2.5.3.0")]
diff --git a/1.6/Source/DefOfs/GeneDefOf.cs b/1.6/Source/DefOfs/GeneDefOf.cs
deleted file mode 100644
index 0d60b95..0000000
--- a/1.6/Source/DefOfs/GeneDefOf.cs
+++ /dev/null
@@ -1,155 +0,0 @@
-using RimWorld;
-using Verse;
-using Verse.AI;
-namespace RJW_Genes
-{
- [DefOf]
- public static class GeneDefOf
- {
- public static readonly GeneCategoryDef rjw_genes_genitalia_type;
- public static readonly GeneCategoryDef rjw_genes_genitalia_size;
- public static readonly GeneCategoryDef rjw_genes_gender;
- public static readonly GeneCategoryDef rjw_genes_breeding;
- public static readonly GeneCategoryDef rjw_genes_damage;
- public static readonly GeneCategoryDef rjw_genes_special;
-
- // Base Genitalia Types
- public static readonly GeneDef rjw_genes_equine_genitalia;
- public static readonly GeneDef rjw_genes_demonic_genitalia;
- public static readonly GeneDef rjw_genes_dragon_genitalia;
- public static readonly GeneDef rjw_genes_slime_genitalia;
- public static readonly GeneDef rjw_genes_ovipositor_genitalia;
- public static readonly GeneDef rjw_genes_feline_genitalia;
- public static readonly GeneDef rjw_genes_canine_genitalia;
- public static readonly GeneDef rjw_genes_demonicT_genitalia;
- public static readonly GeneDef rjw_genes_crocodilian_genitalia;
- public static readonly GeneDef rjw_genes_racoon_genitalia;
- public static readonly GeneDef rjw_genes_reptilian_genitalia;
- public static readonly GeneDef rjw_genes_human_genitalia;
-
- // Extra Genitalia
- public static readonly GeneDef rjw_genes_extra_penis;
- public static readonly GeneDef rjw_genes_no_penis;
- public static readonly GeneDef rjw_genes_extra_vagina;
- public static readonly GeneDef rjw_genes_no_vagina;
- public static readonly GeneDef rjw_genes_extra_breasts;
- public static readonly GeneDef rjw_genes_no_breasts;
- public static readonly GeneDef rjw_genes_extra_anus;
- public static readonly GeneDef rjw_genes_no_anus;
- public static readonly GeneDef rjw_genes_futa;
- public static readonly GeneDef rjw_genes_femboy;
- public static readonly GeneDef rjw_genes_featureless_chest;
- public static readonly GeneDef rjw_genes_udder;
-
- // Genitalia Sizes
- public static readonly GeneDef rjw_genes_big_male_genitalia;
- public static readonly GeneDef rjw_genes_small_male_genitalia;
- public static readonly GeneDef rjw_genes_loose_female_genitalia;
- public static readonly GeneDef rjw_genes_tight_female_genitalia;
- public static readonly GeneDef rjw_genes_big_breasts;
- public static readonly GeneDef rjw_genes_small_breasts;
- public static readonly GeneDef rjw_genes_loose_anus;
- public static readonly GeneDef rjw_genes_tight_anus;
- public static readonly GeneDef rjw_genes_evergrowth;
-
- // Gender
- public static readonly GeneDef rjw_genes_female_only;
- public static readonly GeneDef rjw_genes_male_only;
- public static readonly GeneDef rjw_genes_gender_fluid;
-
- // Breeding
- public static readonly GeneDef rjw_genes_mechbreeder;
- public static readonly GeneDef rjw_genes_zoophile;
- public static readonly GeneDef rjw_genes_fertile_anus;
- public static readonly GeneDef rjw_genes_mating_call;
- public static readonly GeneDef rjw_genes_fervent_ovipositor;
- public static readonly GeneDef rjw_genes_insectbreeder;
- public static readonly GeneDef rjw_genes_insectincubator;
- public static readonly GeneDef rjw_genes_hardwired_progenity;
- public static readonly GeneDef rjw_genes_blocked_masturbation;
- public static readonly GeneDef rjw_genes_basic_rut;
-
- // Fluids
- public static readonly GeneDef rjw_genes_no_fluid;
- public static readonly GeneDef rjw_genes_much_fluid;
- public static readonly GeneDef rjw_genes_very_much_fluid;
- [MayRequire("vegapnk.cumpilation")] public static readonly GeneDef rjw_genes_un_inflatable;
- [MayRequire("vegapnk.cumpilation")] public static readonly GeneDef rjw_genes_inflatable;
- public static readonly GeneDef rjw_genes_generous_donor;
- [MayRequire("vegapnk.cumpilation")] public static readonly GeneDef rjw_genes_living_cumbucket;
-
-
- // Reproduction
- public static readonly GeneDef rjw_genes_hypersexual;
- public static readonly GeneDef rjw_genes_rapist;
- public static readonly GeneDef rjw_genes_homosexual;
- public static readonly GeneDef rjw_genes_bisexual;
- public static readonly GeneDef rjw_genes_no_sex_need;
- public static readonly GeneDef rjw_genes_littered_births;
-
- // Damage & Side Effects
- public static readonly GeneDef rjw_genes_elasticity;
- public static readonly GeneDef rjw_genes_unbreakable;
-
- // Special
- public static readonly GeneDef rjw_genes_orgasm_rush;
- public static readonly GeneDef rjw_genes_youth_fountain;
- public static readonly GeneDef rjw_genes_sex_age_drain;
- public static readonly GeneDef rjw_genes_aphrodisiac_pheromones;
- public static readonly GeneDef rjw_genes_sexual_mytosis;
- public static readonly GeneDef rjw_genes_hormonal_saliva;
- public static readonly GeneDef rjw_genes_cocoonweaver;
- public static readonly GeneDef rjw_genes_sex_tamer;
- public static readonly GeneDef rjw_genes_sexual_genetic_swap;
- public static readonly GeneDef rjw_genes_sexual_genetic_thief;
- public static readonly GeneDef rjw_genes_pregnancy_overwrite;
- public static readonly GeneDef rjw_genes_feminizer;
- public static readonly GeneDef rjw_genes_twinkifier;
- public static readonly GeneDef rjw_genes_electric_satisfaction;
-
- // Cosmetic
- public static readonly GeneDef rjw_genes_succubus_tail;
- public static readonly GeneDef rjw_genes_succubus_wings;
-
- // Life force | Fertilin
- public static readonly GeneDef rjw_genes_lifeforce;
- public static readonly GeneDef rjw_genes_pussyhealing;
- public static readonly GeneDef rjw_genes_lifeforce_drain;
- public static readonly GeneDef rjw_genes_cum_eater;
- public static readonly GeneDef rjw_genes_fertilin_absorber;
- public static readonly GeneDef rjw_genes_drainer;
- public static readonly GeneDef rjw_genes_seduce;
- public static readonly GeneDef rjw_genes_paralysingkiss;
- public static readonly GeneDef rjw_genes_cockeater;
- public static readonly GeneDef rjw_genes_lifeforce_empath;
-
- // Diseases
- public static readonly GeneDef rjw_genes_genetic_disease_immunity;
- public static readonly GeneDef rjw_genes_minor_vulnerability;
- public static readonly GeneDef rjw_genes_major_vulnerability;
- public static readonly GeneDef rjw_genes_fluctual_sexual_needs;
- public static readonly GeneDef rjw_genes_size_blinded;
- public static readonly GeneDef rjw_genes_infectious_low_fertility;
- public static readonly GeneDef rjw_genes_infectious_increased_sex_need;
- public static readonly GeneDef rjw_genes_infectious_bisexuality;
- public static readonly GeneDef rjw_genes_infectious_homosexuality;
- public static readonly GeneDef rjw_genes_infectious_hypersexuality;
- public static readonly GeneDef rjw_genes_stretcher;
- public static readonly GeneDef rjw_genes_infectious_blocked_masturbation;
- public static readonly GeneDef rjw_genes_infectious_rut;
- public static readonly GeneDef rjw_genes_disease_carrier;
-
- //Other Defs
- public static readonly XenotypeDef rjw_genes_succubus;
- public static readonly DutyDef rjw_genes_flirt;
- public static readonly MentalBreakDef rjw_genes_lifeforce_randomrape;
- [MayRequire("resplice.xotr.charmweavers")] public static GeneDef RS_LoveFeed = DefDatabase.GetNamed("RS_LoveFeed", false);
- [MayRequire("resplice.xotr.charmweavers")] public static GeneDef RS_MultiPregnancy = DefDatabase.GetNamed("RS_MultiPregnancy", false);
- [MayRequire("redmattis.bigsmall.core")] public static GeneDef VU_VampireLover = DefDatabase.GetNamed("VU_VampireLover", false);
- [MayRequire("vanillaracesexpanded.highmate")] public static GeneDef VRE_LovinDependency = DefDatabase.GetNamed("VRE_LovinDependency", false);
-
-
-
- }
-
-}
diff --git a/1.6/Source/DefOfs/HediffDefOf.cs b/1.6/Source/DefOfs/HediffDefOf.cs
deleted file mode 100644
index 8878f75..0000000
--- a/1.6/Source/DefOfs/HediffDefOf.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RimWorld;
-
-namespace RJW_Genes
-{
- [DefOf]
- public static class HediffDefOf
- {
- public static readonly HediffDef rjw_genes_aphrodisiac_pheromone;
- public static readonly HediffDef rjw_genes_fertilin_lost;
- public static readonly HediffDef rjw_genes_succubus_drained;
- public static readonly HediffDef rjw_genes_orgasm_rush_hediff;
- public static readonly HediffDef rjw_genes_fertilin_craving;
- public static readonly HediffDef rjw_genes_evergrowth_sideeffect;
- public static readonly HediffDef rjw_genes_orgasmic_mytosis_hediff;
- public static readonly HediffDef rjw_genes_mytosis_shock_hediff;
-
- public static readonly HediffDef rjw_genes_twinkification_progress;
- public static readonly HediffDef rjw_genes_feminization_progress;
-
- public static readonly HediffDef rjw_genes_genetic_rut;
-
- public static readonly HediffDef rjw_genes_disease_carrier_storage;
-
- public static readonly HediffDef OvaryAgitator;
- public static readonly HediffDef Bioscaffold;
-
- [MayRequire("vegapnk.cumpilation")] public static readonly HediffDef rjw_genes_filled_living_cumbucket;
- }
-}
diff --git a/1.6/Source/DefOfs/JobDefOf.cs b/1.6/Source/DefOfs/JobDefOf.cs
deleted file mode 100644
index b077aa3..0000000
--- a/1.6/Source/DefOfs/JobDefOf.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RimWorld;
-namespace RJW_Genes
-{
- [DefOf]
- public static class JobDefOf
- {
- public static readonly JobDef rjw_genes_lifeforce_randomrape;
- public static readonly JobDef rjw_genes_lifeforce_seduced;
- public static readonly JobDef sex_on_spot;
- public static readonly JobDef sex_on_spot_reciever;
- public static readonly JobDef rjw_genes_flirt;
- }
-}
diff --git a/1.6/Source/DefOfs/LetterDefOf.cs b/1.6/Source/DefOfs/LetterDefOf.cs
deleted file mode 100644
index 996b619..0000000
--- a/1.6/Source/DefOfs/LetterDefOf.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Verse;
-using RimWorld;
-
-namespace RJW_Genes
-{
- [DefOf]
- public static class LetterDefOf
- {
- public static LetterDef AnotherBaby;
- }
-}
diff --git a/1.6/Source/DefOfs/ThoughtDefOf.cs b/1.6/Source/DefOfs/ThoughtDefOf.cs
deleted file mode 100644
index 596ecc0..0000000
--- a/1.6/Source/DefOfs/ThoughtDefOf.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-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;
- public static readonly ThoughtDef rjw_genes_seduced;
-
- public static readonly ThoughtDef rjw_genes_pheromone_carrier_nearby;
-
- public static readonly ThoughtDef rjw_genes_appealing_cock;
- public static readonly ThoughtDef rjw_genes_has_more_diseases;
-
- //Others with same names but other defs than in genedefof
- public static readonly InteractionDef rjw_genes_flirt;
- }
-}
diff --git a/1.6/Source/First.cs b/1.6/Source/First.cs
deleted file mode 100644
index 101d3cc..0000000
--- a/1.6/Source/First.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using rjw;
-using Verse;
-using RimWorld;
-using rjw.Modules.Interactions.Rules.PartKindUsageRules;
-using rjw.Modules.Interactions.Internals.Implementation;
-
-namespace RJW_Genes
-{
- [StaticConstructorOnStartup]
- internal static class First
- {
- static First()
- {
- AddtoIPartPreferenceRule();
- }
-
- //Modified code from https://gitgud.io/lutepickle/rjw_menstruation/-/tree/main/1.4/source/RJW_Menstruation/RJW_Menstruation
- //Summary//
- //Adds our own partpreferences to rjw's list. Our partpreferences are under Interactions.GenesPartKindUsageRule
- //
- private static void InjectIntoRjwInteractionServices()
- {
- List partPreferenceRules = Unprivater.GetProtectedValue>("_partKindUsageRules", typeof(PartPreferenceDetectorService));
- partPreferenceRules.Add(new Interactions.GenesPartKindUsageRule());
- }
- }
-}
diff --git a/1.6/Source/GeneDefs_GenitaliaTypeEndogenes.xml b/1.6/Source/GeneDefs_GenitaliaTypeEndogenes.xml
deleted file mode 100644
index ff90a9f..0000000
--- a/1.6/Source/GeneDefs_GenitaliaTypeEndogenes.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
- rjw_genes_genitalia
-
- GenitalType
-
- 0
-
-
-
-
- rjw_genes_human_genitalia
- human genitalia
- Carriers of this carry genitalia similar to humans.
- Genes/Icons/Placeholder
- RJW_Genes.Gene_HumanGenitalia
- 1
-
-
-
- rjw_genes_equine_genitalia
- equine genitalia
- Carriers of this gene develop equine genitalia.
- Genes/Icons/Placeholder
- RJW_Genes.Gene_EquineGenitalia
- 2
-
-
-
- rjw_genes_canine_genitalia
- canine genitalia
- Carriers of this gene develop canine genitalia.
- Genes/Icons/Placeholder
- RJW_Genes.Gene_CanineGenitalia
- 3
-
-
-
- rjw_genes_feline_genitalia
- feline genitalia
- Carriers of this gene develop feline genitalia.
- Genes/Icons/Placeholder
- RJW_Genes.Gene_FelineGenitalia
- 4
-
-
-
- rjw_genes_demonic_genitalia
- demonic genitalia
- Carriers of this gene have demonic genitalia.
- Genes/Icons/Placeholder
- RJW_Genes.Gene_DemonicGenitalia
- 5
-
-
-
- rjw_genes_dragon_genitalia
- dragon genitalia
- Carriers of this gene develop dragon genitalia.
- Genes/Icons/Placeholder
- RJW_Genes.Gene_DragonGenitalia
- 6
-
-
-
- rjw_genes_slime_genitalia
- slime genitalia
- Carriers of this gene have slime genitalia.
- Genes/Icons/Placeholder
- RJW_Genes.Gene_SlimeGenitalia
- 7
-
-
-
- rjw_genes_ovipositor_genitalia
- insect genitalia
- Carriers of this gene have ovipositors similar to insects.
- Genes/Icons/Placeholder
- RJW_Genes.Gene_OvipositorGenitalia
- 8
-
-
-
\ No newline at end of file
diff --git a/1.6/Source/Genes/Breeding/Abilities/CompAbilityEffect_MatingCall.cs b/1.6/Source/Genes/Breeding/Abilities/CompAbilityEffect_MatingCall.cs
deleted file mode 100644
index f09bb94..0000000
--- a/1.6/Source/Genes/Breeding/Abilities/CompAbilityEffect_MatingCall.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using RimWorld;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse.Sound;
-using Verse;
-using RimWorld.Planet;
-using rjw;
-using HarmonyLib;
-using Verse.AI;
-
-namespace RJW_Genes
-{
- public class CompAbilityEffect_MatingCall : CompAbilityEffect
- {
-
- private new CompProperties_AbilityMatingCall Props
- {
- get
- {
- return (CompProperties_AbilityMatingCall)this.props;
- }
- }
-
- public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
- {
- base.Apply(target, dest);
- ModLog.Message($"{this.parent.pawn} is casting MatingCall");
- AnimalBreedingHelper.DoAnimalBreedingPulse(this.parent.pawn, Props.calldistance);
- }
-
- }
-}
diff --git a/1.6/Source/Genes/Breeding/Abilities/CompAbilityEffect_PheromoneSpit.cs b/1.6/Source/Genes/Breeding/Abilities/CompAbilityEffect_PheromoneSpit.cs
deleted file mode 100644
index 49ae4d7..0000000
--- a/1.6/Source/Genes/Breeding/Abilities/CompAbilityEffect_PheromoneSpit.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using RimWorld;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using Verse.AI;
-
-namespace RJW_Genes
-{
- public class CompAbilityEffect_PheromoneSpit : CompAbilityEffect
- {
- private new CompProperties_AbilityPheromoneSpit Props
- {
- get
- {
- return (CompProperties_AbilityPheromoneSpit)this.props;
- }
- }
-
- public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
- {
- base.Apply(target, dest);
- AnimalBreedingHelper.DoAnimalBreedingPulse(target.Pawn, Props.calldistance);
- }
-
- }
-}
diff --git a/1.6/Source/Genes/Breeding/Abilities/CompProperties_AbilityMatingCall.cs b/1.6/Source/Genes/Breeding/Abilities/CompProperties_AbilityMatingCall.cs
deleted file mode 100644
index e30485c..0000000
--- a/1.6/Source/Genes/Breeding/Abilities/CompProperties_AbilityMatingCall.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using RimWorld;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace RJW_Genes
-{
- public class CompProperties_AbilityMatingCall : CompProperties_AbilityEffect
- {
-
- public int calldistance;
-
- public CompProperties_AbilityMatingCall()
- {
- this.compClass = typeof(CompAbilityEffect_MatingCall);
- }
- }
-}
diff --git a/1.6/Source/Genes/Breeding/Abilities/CompProperties_AbilityPheromoneSpit.cs b/1.6/Source/Genes/Breeding/Abilities/CompProperties_AbilityPheromoneSpit.cs
deleted file mode 100644
index 381843f..0000000
--- a/1.6/Source/Genes/Breeding/Abilities/CompProperties_AbilityPheromoneSpit.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using RimWorld;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace RJW_Genes {
- public class CompProperties_AbilityPheromoneSpit : CompProperties_AbilityEffect
- {
- public int calldistance;
-
- public CompProperties_AbilityPheromoneSpit()
- {
- this.compClass = typeof(CompAbilityEffect_PheromoneSpit);
- }
- }
-}
diff --git a/1.6/Source/Genes/Breeding/AnimalBreedingHelper.cs b/1.6/Source/Genes/Breeding/AnimalBreedingHelper.cs
deleted file mode 100644
index b4dd02a..0000000
--- a/1.6/Source/Genes/Breeding/AnimalBreedingHelper.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-using RimWorld;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse.AI;
-using Verse;
-
-namespace RJW_Genes
-{
- public class AnimalBreedingHelper
- {
-
- ///
- /// Finds animals in a distance around a pawn, and schedules a breeding job.
- /// This is done regardless of the animals genitalia at the moment.
- /// This function has no checks if the Pawn is hostile, downed, etc., such checks must be done upstream!
- ///
- /// The pawn that will be target of breeding animals
- /// The range around the pawn for which animals will be triggered.
- public static void DoAnimalBreedingPulse(Pawn toBeBred, int pulse_distance, bool ends_manhunter = true)
- {
- ModLog.Debug($"Triggering animal Breeding pulse, target pawn: {toBeBred.Name}, Pulse Distance {pulse_distance}");
- IEnumerable animals = GetAnimalsInRange(toBeBred.Map, toBeBred.Position, pulse_distance);
- int breeder_counter = 0;
-
- foreach (Pawn animal in animals)
- {
- if (ends_manhunter)
- EndManHunter(animal);
-
- if (!RJW_Genes_Settings.animalMatingPulseCheckForGenitals || rjw.xxx.can_rape(animal))
- {
- ForceBreedingJob(toBeBred, animal);
- breeder_counter++;
- }
-
- }
- ModLog.Message($"{breeder_counter} of {animals.Count()} Animals in range are trying to breed {toBeBred}");
- }
-
- private static IEnumerable GetAnimalsInRange(Map map, IntVec3 position, int distance)
- {
- IEnumerable animals =
- map.mapPawns
- .AllPawnsSpawned
- .Where((Func)(p =>
- //1.6 Fix
- //p.IsNonMutantAnimal
- p.IsAnimal
- && !p.IsMutant
- && p.Position.InHorDistOf(position, distance)
- && xxx.is_healthy_enough(p))
- );
-
- return animals;
- }
-
- private static void ForceBreedingJob(Pawn toBeBred, Pawn animal)
- {
- // Stopping all Jobs in this way is a bit heavy - but as it's only about Animals this should be fine.
- animal.jobs.CaptureAndClearJobQueue();
- animal.jobs.StopAll();
- Job job = JobMaker.MakeJob(xxx.animalBreed, toBeBred);
- animal.jobs.TryTakeOrderedJob(job);
- }
-
- private static void EndManHunter(Pawn animal)
- {
- if (animal.MentalState != null && (animal.MentalState.def == MentalStateDefOf.Manhunter || animal.MentalState.def == MentalStateDefOf.ManhunterPermanent))
- {
- animal?.MentalState?.RecoverFromState();
- }
-
- }
- }
-}
diff --git a/1.6/Source/Genes/Breeding/ConditionalStatAffecters/ConditionalStatAffecter_ManyChildren.cs b/1.6/Source/Genes/Breeding/ConditionalStatAffecters/ConditionalStatAffecter_ManyChildren.cs
deleted file mode 100644
index c483eb3..0000000
--- a/1.6/Source/Genes/Breeding/ConditionalStatAffecters/ConditionalStatAffecter_ManyChildren.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using RimWorld;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class ConditionalStatAffecter_ManyChildren : ConditionalStatAffecter
- {
- public override string Label => (string)"StatsReport_ManyChildren".Translate();
-
- public const int THRESHOLD_FOR_CHILDREN = 3;
-
- public override bool Applies(StatRequest req)
- {
- if (req == null || req.Thing == null || !req.Thing.Spawned) return false;
-
- if (req.Thing is Pawn pawn)
- {
- // Do nothing if Pawn is Baby or Child (#25)
- if (!pawn.ageTracker.Adult)
- return false;
-
- if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_hardwired_progenity))
- {
- // This "middle" Conditional Stat Affecter only fires if the other one does not apply
- return pawn.relations.ChildrenCount >= THRESHOLD_FOR_CHILDREN
- && pawn.relations.ChildrenCount < ConditionalStatAffecter_VeryManyChildren.THRESHOLD_FOR_CHILDREN;
- }
- }
-
- return false;
- }
- }
-}
diff --git a/1.6/Source/Genes/Breeding/ConditionalStatAffecters/ConditionalStatAffecter_NoChildren.cs b/1.6/Source/Genes/Breeding/ConditionalStatAffecters/ConditionalStatAffecter_NoChildren.cs
deleted file mode 100644
index 4f50994..0000000
--- a/1.6/Source/Genes/Breeding/ConditionalStatAffecters/ConditionalStatAffecter_NoChildren.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using RimWorld;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// This conditional stat affecter "fires" if the pawn has no children.
- ///
- /// DevNote: I salvaged this from 1.3.3 Halamyr Conditional Stat Affecters.
- /// It seems that with RW 1.5 there was a change how these work, as the req.Pawn seems to be null.
- /// Now, the pawn is in req.Thing.
- ///
- public class ConditionalStatAffecter_NoChildren : ConditionalStatAffecter
- {
- public override string Label => (string)"StatsReport_NoChildren".Translate();
-
- public override bool Applies(StatRequest req)
- {
- if (req == null || req.Thing == null || !req.Thing.Spawned) return false;
-
- if (req.Thing is Pawn pawn)
- {
- // Do nothing if Pawn is Baby or Child (#25)
- if (!pawn.ageTracker.Adult)
- return false;
-
- if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_hardwired_progenity))
- {
- return pawn.relations.ChildrenCount == 0;
- }
- }
-
- return false;
- }
-
- }
-
-}
diff --git a/1.6/Source/Genes/Breeding/ConditionalStatAffecters/ConditionalStatAffecter_VeryManyChildren.cs b/1.6/Source/Genes/Breeding/ConditionalStatAffecters/ConditionalStatAffecter_VeryManyChildren.cs
deleted file mode 100644
index e14d4f1..0000000
--- a/1.6/Source/Genes/Breeding/ConditionalStatAffecters/ConditionalStatAffecter_VeryManyChildren.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using RimWorld;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class ConditionalStatAffecter_VeryManyChildren : ConditionalStatAffecter
- {
- public override string Label => (string)"StatsReport_VeryManyChildren".Translate();
-
- public const int THRESHOLD_FOR_CHILDREN = 8;
-
- public override bool Applies(StatRequest req)
- {
- if (req == null || req.Thing == null || !req.Thing.Spawned) return false;
-
- if (req.Thing is Pawn pawn)
- {
- // Do nothing if Pawn is Baby or Child (#25)
- if (!pawn.ageTracker.Adult)
- return false;
-
- if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_hardwired_progenity))
- {
- return pawn.relations.ChildrenCount >= THRESHOLD_FOR_CHILDREN;
- }
- }
-
- return false;
- }
- }
-}
diff --git a/1.6/Source/Genes/Breeding/Genes/Gene_FerventOvipositor.cs b/1.6/Source/Genes/Breeding/Genes/Gene_FerventOvipositor.cs
deleted file mode 100644
index 0b8536c..0000000
--- a/1.6/Source/Genes/Breeding/Genes/Gene_FerventOvipositor.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-using Verse;
-using rjw;
-
-namespace RJW_Genes
-{
-
- ///
- /// Manages the rjw_genes_fervent_ovipositor to grow eggs much faster.
- ///
- /// TODO: Move the Multiplier into XML
- /// TODO: This gene only works after the first egg, the first egg for two new pawns spawns at the same time (strange).
- ///
- public class Gene_FerventOvipositor : Gene
- {
-
- const int MULTIPLIER = 3; // Tick 3 times as much, making a pawn with this Gene Produce Eggs 4 times as fast as the normal.
-
- public override void Tick()
- {
- base.Tick();
-
- if (pawn == null) return;
-
- Hediff_NaturalSexPart OvipositorF = (Hediff_NaturalSexPart)pawn.health.hediffSet.GetFirstHediffOfDef(rjw.Genital_Helper.ovipositorF);
-
- if (OvipositorF == null) return;
-
- OvipositorF.AsHediff.TryGetComp().eggInterval.max = 10000 / MULTIPLIER;
-
- // DevNote: I first had a for-loop calling OviPositorF.tick(), but I fear that would be a performance sink.
- // Also, it would double other aspects as well, such as bleeding out through your insect-PP or dropping out the eggs.
- }
-
-
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Breeding/Genes/Gene_InsectIncubator.cs b/1.6/Source/Genes/Breeding/Genes/Gene_InsectIncubator.cs
deleted file mode 100644
index ce53827..0000000
--- a/1.6/Source/Genes/Breeding/Genes/Gene_InsectIncubator.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-using RimWorld;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
-
- ///
- /// This Gene checks for all parasitic Insect-Eggs in a Pawn:
- /// 1. Is it fertilized ? => tick it down "extra".
- /// 2. Is it not fertilized? => fertilize it with the Incubator as parent
- ///
- /// To save performance, this gene fires (default) every 0.5h, which also means a slight delay until fertilization happens.
- ///
- public class Gene_InsectIncubator : Gene
- {
- const int TICK_INTERVAL = 60000 / 48; // 60k = 1 day, we want 0.5h which is 1/48th of 1 day.
-
- public override void Tick()
- {
- base.Tick();
-
- // Don't check too often, only in the HashTickInterval to safe some computing power
- if (this.pawn.IsHashIntervalTick(TICK_INTERVAL) && this.pawn.Map != null)
- {
- List eggs = new List();
- pawn.health.hediffSet.GetHediffs(ref eggs);
- // This part works as intended and shows Non-Human Eggs too
- //if (RJW_Genes_Settings.rjw_genes_detailed_debug) ModLog.Message($"Gene_InsectIncubator: Found {eggs.Count} Hediff_InsectEgg in {pawn}");
-
-
- foreach (Hediff_InsectEgg egg in eggs)
- {
- // The implanter check checks if the egg is still in an ovipositor.
- if (egg.implanter == null || egg.implanter == pawn)
- continue;
-
- if (!egg.fertilized && egg.implanter != null)
- {
- egg.Fertilize(pawn);
- // DevNote Issue 38: Sometimes Eggs are not fertilized here, because the normal Fertilize Function is called which has an upper Limit on Gestation.
- // I will not do anything about it here, maybe upstream, but I print here.
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- if (egg.fertilized)
- ModLog.Message($"Gene_InsectIncubator: fertilized egg {egg} in {pawn}");
- else if (egg.GestationProgress > 0.5)
- ModLog.Message($"Gene_InsectIncubator: Failed to fertilize {egg} in {pawn} due to high gestation progress");
- else
- ModLog.Message($"Gene_InsectIncubator: failed to fertiliz egg {egg} in {pawn}");
- }
- }
- // DevNote: There is an issue with Eggs reaching too much gestation progress (>100%), which causes DownStream bugs. To avoid this, there are some extra checks in place.
- else if (egg.fertilized && egg.GestationProgress <= .93)
- {
- egg.lastTick += TICK_INTERVAL;
- }
- }
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/Breeding/Genes/Gene_MechBreeder.cs b/1.6/Source/Genes/Breeding/Genes/Gene_MechBreeder.cs
deleted file mode 100644
index 1ceaf67..0000000
--- a/1.6/Source/Genes/Breeding/Genes/Gene_MechBreeder.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using Verse;
-
-namespace Genes.Breeding
-{
- public class Gene_MechBreeder : Gene
- {
- // This one does not do anything, the patch is some where else checking for the pawn to have this Gene!
- }
-}
diff --git a/1.6/Source/Genes/Breeding/Genes/Gene_Rut.cs b/1.6/Source/Genes/Breeding/Genes/Gene_Rut.cs
deleted file mode 100644
index 9240dcd..0000000
--- a/1.6/Source/Genes/Breeding/Genes/Gene_Rut.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class Gene_Rut : Gene
- {
- public override void Tick()
- {
- base.Tick();
-
- if (pawn == null || pawn.genes == null)
- return;
-
- var chanceExtension = this.def.GetModExtension();
- if (chanceExtension == null) return;
-
- if (pawn.IsHashIntervalTick(chanceExtension.tickInterval)){
- Random r = new Random();
- if (r.NextDouble() < chanceExtension.eventChance)
- {
- Hediff rut = pawn.health.GetOrAddHediff(HediffDefOf.rjw_genes_genetic_rut);
- rut.Severity = 1;
- ModLog.Debug($"Pawn {pawn} gained rjw_genes_genetic_rut based on chance.");
- }
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/Breeding/Patches/PatchMechBirth.cs b/1.6/Source/Genes/Breeding/Patches/PatchMechBirth.cs
deleted file mode 100644
index ab99699..0000000
--- a/1.6/Source/Genes/Breeding/Patches/PatchMechBirth.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-using System.Collections.Generic;
-using System.Reflection;
-using System.Reflection.Emit;
-using HarmonyLib;
-using rjw;
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// 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/
- ///
- [HarmonyPatch(typeof(Hediff_MechanoidPregnancy), "GiveBirth")]
- public static class PatchMechBirth
- {
- [HarmonyTranspiler]
- public static IEnumerable Transpiler(IEnumerable instructions, ILGenerator il)
- {
- bool found_call = false;
- bool finished = false;
- Label skip_label = il.DefineLabel();
- MethodInfo removeHediff = AccessTools.Method(typeof(Pawn_HealthTracker), nameof(Pawn_HealthTracker.RemoveHediff));
- MethodInfo ismechbreeder = AccessTools.Method(typeof(GeneUtility), "IsMechbreeder");
- foreach (CodeInstruction codeInstruction in instructions)
- {
- yield return codeInstruction;
-
- if (finished)
- {
- continue;
- }
-
- 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 new CodeInstruction(OpCodes.Ldloc_0);
- yield return new CodeInstruction(OpCodes.Call, ismechbreeder);
- yield return new CodeInstruction(OpCodes.Brfalse_S, skip_label);
- yield return new CodeInstruction(OpCodes.Ret);
- found_call = true;
- }
- else if (found_call)
- {
- // next instruction after the insert
- codeInstruction.labels.Add(skip_label);
- finished = true;
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Breeding/Patches/Patch_BlockedMasturbation.cs b/1.6/Source/Genes/Breeding/Patches/Patch_BlockedMasturbation.cs
deleted file mode 100644
index 86271f0..0000000
--- a/1.6/Source/Genes/Breeding/Patches/Patch_BlockedMasturbation.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using HarmonyLib;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// Makes the `can_masturbate` return false with certain genes.
- /// This is not the only relevant file, please check #127 and #147 on the matter.
- ///
- [HarmonyPatch(typeof(xxx), "can_masturbate")]
- public class Patch_BlockedMasturbation
- {
- public void PostFix(Pawn pawn, ref bool __result)
- {
- if (pawn != null && !pawn.IsAnimal() && pawn.genes != null)
- {
- __result = __result
- && !pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_blocked_masturbation)
- && !pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_infectious_blocked_masturbation);
- }
- }
-
- }
-}
diff --git a/1.6/Source/Genes/Breeding/Patches/Patch_BlockedMasturbation_ThinkNodeFappin.cs b/1.6/Source/Genes/Breeding/Patches/Patch_BlockedMasturbation_ThinkNodeFappin.cs
deleted file mode 100644
index 3412755..0000000
--- a/1.6/Source/Genes/Breeding/Patches/Patch_BlockedMasturbation_ThinkNodeFappin.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-
-using HarmonyLib;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-
-namespace RJW_Genes
-{
- ///
- /// This is a second Patch that blocks masturbation by making it "unthinkable".
- /// I kept the original Patch_BlockedMasturbation.cs because maybe someone else is checking the "xxx.canMasturbate(Pawn)"
- /// The behaviour was extracted from Sexperience by tinymechanoid333 in #147.
- /// Issue was tracked in #127.
- ///
- [HarmonyPatch(typeof(ThinkNode_ChancePerHour_Fappin), "MtbHours")]
- public static class Patch_BlockedMasturbation_ThinkNodeFappin
- {
- public static void Postfix(Pawn p, ref float __result)
- {
- if (p != null && !p.IsAnimal() && p.genes != null)
- {
- if (p.genes.HasActiveGene(GeneDefOf.rjw_genes_blocked_masturbation) || p.genes.HasActiveGene(GeneDefOf.rjw_genes_infectious_blocked_masturbation))
- {
- __result = -2f;
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Damage/Gene_Elasticity.cs b/1.6/Source/Genes/Damage/Gene_Elasticity.cs
deleted file mode 100644
index 6ee6210..0000000
--- a/1.6/Source/Genes/Damage/Gene_Elasticity.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using Verse;
-
-
-namespace RJW_Genes
-{
- ///
- /// This Gene adds Licentia-Labs Elasticised Hediff to a Pawn.
- /// Note: I had a HarmonyPatch first, similar to skipping cumflation, but the Stretching Logic is called quite a lot and for both pawns actually.
- /// Hence, I think choosing the Elasticiced Hediff was good as then everything is covered by "Licentia-Logic".
- ///
- public class Gene_Elasticity : Gene
- {
- private const int RESET_INTERVAL = 60000; // 60k should be 1 day
-
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
-
-
-
- // Doing it like this will add the hediff with a severity of ~0.5, but it will decay.
- // Hence we check with the Ticks to update.
- //this.pawn.health.AddHediff(Licentia.HediffDefs.Elasticised);
- //ResetSeverity();
- }
-
- public override void Tick()
- {
- base.Tick();
- //if (pawn.IsHashIntervalTick(RESET_INTERVAL))
- // ResetSeverity();
- }
-
- public override void PostRemove()
- {
- //Hediff candidate = pawn.health.hediffSet.GetFirstHediffOfDef(Licentia.HediffDefs.Elasticised);
- //if (candidate != null)
- //{
- // pawn.health.RemoveHediff(candidate);
- //}
- base.PostRemove();
- }
-
-
- //private void ResetSeverity(float severity = 0.7f)
- //{
- // Hediff candidate = pawn.health.hediffSet.GetFirstHediffOfDef(Licentia.HediffDefs.Elasticised);
- // if (candidate != null)
- // {
- // candidate.Severity = severity;
- // }
- //}
-
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Damage/Gene_Unbreakable.cs b/1.6/Source/Genes/Damage/Gene_Unbreakable.cs
deleted file mode 100644
index bc93116..0000000
--- a/1.6/Source/Genes/Damage/Gene_Unbreakable.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using rjw;
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// This Gene regularly removes the broken hediff of a pawn.
- /// Blocking / Removing thoughts are done in an XML Patch.
- ///
- public class Gene_Unbreakable : Gene
- {
- /// DevNote: I first tried to Harmony-Postfix the AfterSexUtility and never add it - but that failed?
-
- private const int RESET_INTERVAL = 30000; // 30k should be 0.5 day
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
- RemoveBrokenHediff();
- }
-
- public override void Tick()
- {
- base.Tick();
- if (pawn.IsHashIntervalTick(RESET_INTERVAL))
- RemoveBrokenHediff();
- }
-
-
-
- private void RemoveBrokenHediff()
- {
- // Clean-Up of existing feeling brokens
- var maybeBrokenHediff = pawn.health.hediffSet.GetFirstHediffOfDef(xxx.feelingBroken);
- if (maybeBrokenHediff != null)
- {
- pawn.health.RemoveHediff(maybeBrokenHediff);
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/Diseases/Comps/HediffCompProperties_DiseaseStorage.cs b/1.6/Source/Genes/Diseases/Comps/HediffCompProperties_DiseaseStorage.cs
deleted file mode 100644
index c1ccbb4..0000000
--- a/1.6/Source/Genes/Diseases/Comps/HediffCompProperties_DiseaseStorage.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class HediffCompProperties_DiseaseStorage : HediffCompProperties
- {
- // 300k = 5 days.
- public int ticksThatDiseasesAreStored = 300000;
- public HediffCompProperties_DiseaseStorage() => this.compClass = typeof(HediffComp_DiseaseStorage);
- }
-
-}
diff --git a/1.6/Source/Genes/Diseases/Comps/HediffComp_DiseaseStorage.cs b/1.6/Source/Genes/Diseases/Comps/HediffComp_DiseaseStorage.cs
deleted file mode 100644
index 294afce..0000000
--- a/1.6/Source/Genes/Diseases/Comps/HediffComp_DiseaseStorage.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class HediffComp_DiseaseStorage : HediffComp
- {
- public HediffCompProperties_DiseaseStorage Props => (HediffCompProperties_DiseaseStorage)this.props;
-
- List remainingTicks = new List();
- List storedDiseases = new List();
-
- public void StoreDisease(GeneDef disease)
- {
- if (storedDiseases.Contains(disease)) {
- remainingTicks[storedDiseases.IndexOf(disease)] = Props.ticksThatDiseasesAreStored;
- } else
- {
- storedDiseases.Add(disease);
- remainingTicks.Add(Props.ticksThatDiseasesAreStored);
- }
- }
- public List GetStoredDiseases() { return storedDiseases.ToList(); }
-
- public override void CompExposeData()
- {
- base.CompExposeData();
-
- Scribe_Collections.Look(ref remainingTicks, "remainingTicks");
- Scribe_Collections.Look(ref storedDiseases, "storedDiseases");
- }
-
- }
-
-}
diff --git a/1.6/Source/Genes/Diseases/Defs/GeneticDiseaseExtension.cs b/1.6/Source/Genes/Diseases/Defs/GeneticDiseaseExtension.cs
deleted file mode 100644
index e156195..0000000
--- a/1.6/Source/Genes/Diseases/Defs/GeneticDiseaseExtension.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class GeneticDiseaseExtension : DefModExtension
- {
- ///
- /// The chance for this gene to spread upon (finished) sex.
- ///
- public float infectionChance;
- }
-
-}
diff --git a/1.6/Source/Genes/Diseases/Defs/GeneticInfectorExtension.cs b/1.6/Source/Genes/Diseases/Defs/GeneticInfectorExtension.cs
deleted file mode 100644
index 2f00ce5..0000000
--- a/1.6/Source/Genes/Diseases/Defs/GeneticInfectorExtension.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class GeneticInfectorExtension : DefModExtension
- {
- public float infectionChance;
-
- public List infectionGenes;
- }
-
-}
diff --git a/1.6/Source/Genes/Diseases/Defs/ImmunityAgainstGenesExtension.cs b/1.6/Source/Genes/Diseases/Defs/ImmunityAgainstGenesExtension.cs
deleted file mode 100644
index 18fe8e0..0000000
--- a/1.6/Source/Genes/Diseases/Defs/ImmunityAgainstGenesExtension.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class ImmunityAgainstGenesExtension : DefModExtension
- {
- ///
- /// A list of the exact defnames of disease-genes that this extension will make immune against.
- /// Must perfectly match!
- ///
- public List givesImmunityAgainst;
- }
-
-}
diff --git a/1.6/Source/Genes/Diseases/DiseaseHelper.cs b/1.6/Source/Genes/Diseases/DiseaseHelper.cs
deleted file mode 100644
index c29b67b..0000000
--- a/1.6/Source/Genes/Diseases/DiseaseHelper.cs
+++ /dev/null
@@ -1,203 +0,0 @@
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public static class DiseaseHelper
- {
-
- ///
- /// Checks for a pawn if it is immune against a disease.
- ///
- /// The pawn for which immunity is checked
- /// The genetic disease that is checked against
- /// True if the pawn is immune, false if the pawn can be infected by it.
- public static bool IsImmuneAgainstGeneticDisease(Pawn pawn, GeneDef disease)
- {
- // Case 1: Something is null / not working, return Immune (to have less follow up effects)
- if (pawn == null || pawn.genes == null) return true;
- if (disease == null) return true;
- // Case 1.B: Dead people can spread, but not receive, diseases.
- if (pawn.Dead) return true;
-
- // Case 2A: The pawn has general genetic immunity to diseases
- if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_genetic_disease_immunity))
- return true;
-
- // Case 2B: The pawn has the carrier gene
- if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_disease_carrier))
- return true;
-
- // Case 3: The pawn already has the genetic disease
- if (GeneUtility.HasGeneNullCheck(pawn, disease))
- return true;
-
- // Case 4: Check all genes if one of them has the Immunity Extension that covers the GeneDef
- List genes = pawn.genes.GenesListForReading;
- genes = genes.Where(x => pawn.genes.HasActiveGene(x.def)).ToList();
-
- foreach (Gene gene in genes)
- {
- ImmunityAgainstGenesExtension ext = gene.def.GetModExtension();
- if (ext != null) {
- foreach (string defname in ext.givesImmunityAgainst)
- if (disease.defName == defname)
- return true;
- }
- }
-
- // Case 5: Nothing special happens, so return false (not immune)
- return false;
- }
-
- ///
- /// Returns all active Genes with the `GeneticDiseaseExtension`.
- /// Update v2.3.0: Returns also possible options if the Pawn is a Genetic Disease Carrier.
- ///
- ///
- /// List of all active Genes with the `GeneticDiseaseExtension` in pawn
- public static List GetGeneticDiseaseGenes(Pawn pawn)
- {
- var diseases = new List() { };
- if (pawn != null && pawn.genes != null)
- {
- diseases = pawn.genes
- .GenesListForReading
- .ConvertAll(gene => gene.def)
- .Where(genedef => pawn.genes.HasActiveGene(genedef))
- .Where(IsGeneticDiseaseGene)
- .ToList();
- }
-
- List carrierResults = GetGeneticDiseasesGenesFromDiseaseCarrier(pawn);
- diseases.AddRange(carrierResults);
-
- return diseases;
- }
-
- public static List GetGeneticDiseasesGenesFromDiseaseCarrier(Pawn pawn) {
- if (pawn == null) return new List() { };
- Hediff storage = null;
- pawn.health.hediffSet.TryGetHediff(HediffDefOf.rjw_genes_disease_carrier_storage, out storage);
- if (storage == null) return new List() { };
- var comp = storage.TryGetComp();
- if (comp == null) return new List() { };
- return comp.GetStoredDiseases();
- }
-
- public static List GetGeneticInfectorGenes(Pawn pawn)
- {
- if (pawn != null && pawn.genes != null)
- {
- return pawn.genes
- .GenesListForReading
- .ConvertAll(gene => gene.def)
- .Where(genedef => pawn.genes.HasActiveGene(genedef))
- .Where(IsGeneticInfectorGene)
- .ToList();
- }
-
- return new List() { };
- }
-
- public static List LookupInfectionGeneDefs(GeneticInfectorExtension infectorExt)
- {
- if (infectorExt == null) new List();
-
- return RimWorld.GeneUtility
- .GenesInOrder
- .Where(genedef => infectorExt.infectionGenes.Contains(genedef.defName))
- .ToList();
- }
-
- ///
- /// Checks if the performed sex was penetrative.
- /// Condom check is not done here!
- ///
- /// The sexprops
- ///
- public static bool IsPenetrativeSex(SexProps props)
- {
- if (props == null) return false;
-
- return props.sexType ==
- xxx.rjwSextype.Vaginal
- || props.sexType == xxx.rjwSextype.Anal
- || props.sexType == xxx.rjwSextype.Oral
- || props.sexType == xxx.rjwSextype.DoublePenetration
- || props.sexType == xxx.rjwSextype.Fellatio
- || props.sexType == xxx.rjwSextype.Sixtynine;
- }
-
- public static bool IsGeneticDiseaseGene(GeneDef geneDef)
- {
- if (geneDef == null) return false;
- GeneticDiseaseExtension diseaseExt = geneDef.GetModExtension();
- return diseaseExt != null;
- }
-
- public static bool IsGeneticInfectorGene(GeneDef geneDef)
- {
- if (geneDef == null) return false;
- GeneticInfectorExtension infectorExt = geneDef.GetModExtension();
- return infectorExt != null;
- }
-
- ///
- /// Manages storing a genetic disease in a pawn.
- /// If the pawn is not a carrier, nothing will happen.
- ///
- /// Disease to store
- /// Pawn that might be a carrier.
- /// True if all goes well and disease is stored - false on unapplicable and errors.
- public static bool TryStoreGeneticDiseaseInCarrier(GeneDef disease, Pawn pawn)
- {
- if (disease == null || pawn == null) return false;
-
- if (!GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_disease_carrier))
- return false;
- var store = GetOrCreateDiseaseStorageHediff(pawn).TryGetComp();
- if (store == null) return false;
-
- store.StoreDisease(disease);
- ModLog.Debug($"DiseaseCarrier: Stored {disease} in {pawn}");
- return true;
- }
-
-
- ///
- /// Gets (or creates) a Disease Storage Hediff for the `carrier`-pawn,
- ///
- ///
- /// A Cumflation Hediff of the inflated pawn.
- public static Hediff GetOrCreateDiseaseStorageHediff(Pawn carrier)
- {
- Hediff diseaseCarrierHediff = carrier.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_disease_carrier_storage);
- if (diseaseCarrierHediff == null)
- {
- diseaseCarrierHediff = HediffMaker.MakeHediff(HediffDefOf.rjw_genes_disease_carrier_storage, carrier);
- carrier.health.AddHediff(diseaseCarrierHediff);
- }
- diseaseCarrierHediff.Severity = 1;
- return diseaseCarrierHediff;
- }
-
- public static float LookupDiseaseInfectionChance(GeneDef geneDef)
- {
- if (IsGeneticDiseaseGene(geneDef))
- {
- GeneticDiseaseExtension diseaseExt = geneDef.GetModExtension();
- return diseaseExt != null ? diseaseExt.infectionChance : 0.0f;
- }
- else
- return 0.0f;
- }
-
-
- }
-}
diff --git a/1.6/Source/Genes/Diseases/Genes/Gene_FluctualSexualNeed.cs b/1.6/Source/Genes/Diseases/Genes/Gene_FluctualSexualNeed.cs
deleted file mode 100644
index b25e812..0000000
--- a/1.6/Source/Genes/Diseases/Genes/Gene_FluctualSexualNeed.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using static HarmonyLib.Code;
-using static RimWorld.ColonistBar;
-
-namespace RJW_Genes
-{
- public class Gene_FluctualSexualNeed : Gene
- {
-
- int event_interval;
- float event_chance;
-
- const float REST_INCREASE = 0.1f;
- const float SET_SEXNEED_TO = 0.1f;
-
- public Gene_FluctualSexualNeed() : base()
- {
- TickBasedChanceExtension tickbasedChanceExt = GeneDefOf.rjw_genes_fluctual_sexual_needs.GetModExtension();
- event_interval = tickbasedChanceExt?.tickInterval ?? 30000; // 30K = 1/2 day
- event_chance = tickbasedChanceExt?.eventChance ?? 0.1f;
- }
-
-
- public override void Tick()
- {
- base.Tick();
-
- if (pawn.IsHashIntervalTick(event_interval) && (new Random()).NextDouble() < event_chance)
- {
- ModLog.Debug($"Firing Gene_FluctualSexualNeed for {pawn}");
- ApplyFluctualSexNeedEffect(pawn);
- }
- }
-
- public static void ApplyFluctualSexNeedEffect(Pawn pawn)
- {
- if (pawn == null || pawn.needs == null) return;
-
- var sexneed = pawn.needs.TryGetNeed();
- if (sexneed != null)
- {
- sexneed.CurLevelPercentage = SET_SEXNEED_TO;
- }
-
- // Pump up Wake-Ness
- if (pawn.needs.rest != null)
- pawn.needs.rest.CurLevel += REST_INCREASE;
- }
-
- }
-}
diff --git a/1.6/Source/Genes/Diseases/Patches/Patch_AfterSexUtility_ApplyGeneticInfectors.cs b/1.6/Source/Genes/Diseases/Patches/Patch_AfterSexUtility_ApplyGeneticInfectors.cs
deleted file mode 100644
index f284217..0000000
--- a/1.6/Source/Genes/Diseases/Patches/Patch_AfterSexUtility_ApplyGeneticInfectors.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using HarmonyLib;
-using RimWorld;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.Remoting.Lifetime;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
-
- [HarmonyPatch(typeof(SexUtility), "Aftersex")]
- public class Patch_AfterSexUtility_ApplyGeneticInfectors
- {
-
- const int FACTION_GOODWILL_CHANGE = -3;
-
- public static void Postfix(SexProps props)
- {
- if (props == null || props.pawn == null || props.partner == null) return;
-
- Pawn pawn = props.pawn;
- Pawn partner = props.partner;
-
- if (pawn == partner) return;
- if (pawn.IsAnimal() || partner.IsAnimal()) return;
- if (pawn.genes == null || partner.genes == null) return;
- // No Infections on Condom Use
- if (props.usedCondom) return;
-
- // Exit early if settings require penetrative sex, but this is not penetrative sex
- if (!DiseaseHelper.IsPenetrativeSex(props) && RJW_Genes_Settings.rjw_genes_genetic_disease_spread_only_on_penetrative_sex) return;
-
- TryApplyGeneticInfections(pawn, partner);
- TryApplyGeneticInfections(partner, pawn);
- }
-
- private static void TryApplyGeneticInfections(Pawn infector, Pawn partner)
- {
- foreach (GeneDef infectorGeneDef in DiseaseHelper.GetGeneticInfectorGenes(infector))
- {
- GeneticInfectorExtension diseaseExt = infectorGeneDef.GetModExtension();
- if (diseaseExt == null) continue;
- float application_chance = diseaseExt.infectionChance;
-
- foreach (GeneDef diseaseGeneDef in DiseaseHelper.LookupInfectionGeneDefs(diseaseExt))
- {
- DiseaseHelper.TryStoreGeneticDiseaseInCarrier(diseaseGeneDef, partner);
- if (DiseaseHelper.IsImmuneAgainstGeneticDisease(partner, diseaseGeneDef))
- continue;
-
- if ((new Random()).NextDouble() < application_chance)
- {
- partner.genes.AddGene(diseaseGeneDef, !RJW_Genes_Settings.rjw_genes_genetic_disease_as_endogenes);
- FactionUtility.HandleFactionGoodWillPenalties(infector, partner, "rjw_genes_GoodwillChangedReason_infected_with_disease",FACTION_GOODWILL_CHANGE);
- }
- }
- }
- }
-
- }
-}
diff --git a/1.6/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs b/1.6/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs
deleted file mode 100644
index b3a44c8..0000000
--- a/1.6/Source/Genes/Diseases/Patches/Patch_AftersexUtility_TransferGeneticDiseases.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-using HarmonyLib;
-using RimWorld;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- [HarmonyPatch(typeof(SexUtility), "Aftersex")]
- public class Patch_AftersexUtility_TransferGeneticDiseases
- {
-
- public const int FACTION_GOODWILL_CHANGE = -2;
-
- public static void Postfix(SexProps props)
- {
- if (!RJW_Genes_Settings.rjw_genes_genetic_disease_spread) return;
-
- if (props == null || props.pawn == null || props.partner == null) return;
-
- Pawn pawn = props.pawn;
- Pawn partner = props.partner;
-
- if (pawn == partner) return;
- if (pawn.IsAnimal() || partner.IsAnimal()) return;
- if (pawn.genes == null || partner.genes == null) return;
- // No Infections on Condom Use
- if (props.usedCondom) return;
-
- // Exit early if settings require penetrative sex, but this is not penetrative sex
- if (!DiseaseHelper.IsPenetrativeSex(props) && RJW_Genes_Settings.rjw_genes_genetic_disease_spread_only_on_penetrative_sex) return;
-
- //ModLog.Debug($"Firing Patch_TransferGeneticDiseases for {pawn} and {partner}");
- TryTransferGeneticDiseases(pawn, partner, props);
- TryTransferGeneticDiseases(partner, pawn, props);
- }
-
- private static void TryTransferGeneticDiseases(Pawn infector, Pawn infected, SexProps props)
- {
- foreach (GeneDef disease in DiseaseHelper.GetGeneticDiseaseGenes(infector)) {
- ModLog.Debug($"Found genetic disease {disease} in {infector}, trying to infect {infected}");
-
- DiseaseHelper.TryStoreGeneticDiseaseInCarrier(disease, infected);
- if (DiseaseHelper.IsImmuneAgainstGeneticDisease(infected,disease))
- continue;
-
- if ((new Random()).NextDouble() <= DiseaseHelper.LookupDiseaseInfectionChance(disease))
- {
- infected.genes.AddGene(disease, !RJW_Genes_Settings.rjw_genes_genetic_disease_as_endogenes);
- FactionUtility.HandleFactionGoodWillPenalties(infector, infected, "rjw_genes_GoodwillChangedReason_spread_genetic_disease", FACTION_GOODWILL_CHANGE);
- }
- }
- }
-
-
- }
-}
diff --git a/1.6/Source/Genes/Diseases/Patches/Patch_SecondaryRomanceChanceFactor_Gene_SizeBlinded.cs b/1.6/Source/Genes/Diseases/Patches/Patch_SecondaryRomanceChanceFactor_Gene_SizeBlinded.cs
deleted file mode 100644
index fa36398..0000000
--- a/1.6/Source/Genes/Diseases/Patches/Patch_SecondaryRomanceChanceFactor_Gene_SizeBlinded.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using HarmonyLib;
-using RimWorld;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// This patch helps with the gene `rjw_genes_size_blinded`.
- /// Within RJW the CasualSexHelper utilizes the basefunction "pawn.relations.SecondaryRomanceChanceFactor"
- /// https://gitgud.io/Ed86/rjw/-/blob/master/1.5/Source/Common/Helpers/CasualSex_Helper.cs
- ///
- /// We check on hookup for the other pawn if they have a penis.
- /// If yes, we modulate the romance chance based on the following:
- /// (Severity * BodySize - 0.5) * romance_multiplier
- /// So pawns with a cock smaller than 0.5 will be penalized, while pawns with more than 0.5 will be preferred.
- ///
- [HarmonyPatch(typeof(Pawn_RelationsTracker), "SecondaryRomanceChanceFactor")]
- public class Patch_SecondaryRomanceChanceFactor_Gene_SizeBlinded
- {
-
- const float romance_multiplier = 2f;
-
- public static void Postfix( Pawn ___pawn, Pawn otherPawn, ref float __result)
- {
- if (otherPawn == null || ___pawn == null || ___pawn.genes == null || otherPawn.genes == null)
- {
- return;
- }
- if (___pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_size_blinded) && Genital_Helper.has_penis_fertile(otherPawn) || (Genital_Helper.has_penis_infertile(otherPawn)))
- {
- Hediff biggest_cock = GenitaliaUtility.GetBiggestPenis(otherPawn);
- if (biggest_cock != null)
- {
- float bodysize = GenitaliaUtility.GetBodySizeOfSexPart(biggest_cock);
- // Bodysize can only be a bonus, not a minus.
- bodysize = Math.Max(1.0f, bodysize);
-
- float attraction_bonus = (biggest_cock.Severity * bodysize - 0.5f) * romance_multiplier;
- float result_backup = __result;
- __result += attraction_bonus;
- // Don't make it smaller than 0, to not get issues.
- __result = __result < 0 ? 0.0f : __result;
-
- ModLog.Debug($"Gene_SizeBlind: Modulate Romance-Chance {___pawn}-->{otherPawn} from {result_backup} by {attraction_bonus} to {__result}");
- }
- }
- }
-
- }
-}
diff --git a/1.6/Source/Genes/Diseases/Thoughts/ThoughtWorker_HasMoreDiseasesThanMe_Social.cs b/1.6/Source/Genes/Diseases/Thoughts/ThoughtWorker_HasMoreDiseasesThanMe_Social.cs
deleted file mode 100644
index 70ccccd..0000000
--- a/1.6/Source/Genes/Diseases/Thoughts/ThoughtWorker_HasMoreDiseasesThanMe_Social.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-using RimWorld;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class ThoughtWorker_HasMoreDiseasesThanMe_Social : ThoughtWorker
- {
- protected override ThoughtState CurrentSocialStateInternal(Pawn pawn, Pawn other)
- {
- // Return for trivial errors
- if (pawn == null || other == null || pawn == other)
- return (ThoughtState)false;
- // Check for position-existance
- //1.6 Fix
- //if (pawn.Position == null || other.Position == null || pawn.Map == null || other.Map == null)
- if (pawn.Map == null || other.Map == null || !pawn.Spawned || !other.Spawned)
- return (ThoughtState)false;
- // Do nothing if pawn is carried
- if (pawn.CarriedBy != null)
- return (ThoughtState)false;
- // Do nothing if Pawn is Baby or Child (#25)
- if (!pawn.ageTracker.Adult)
- return (ThoughtState)false;
- if (!other.ageTracker.Adult)
- return (ThoughtState)false;
- // Only check if they are spawned humans
- if (!pawn.Spawned || !other.Spawned)
- return (ThoughtState)false;
- if (!pawn.RaceProps.Humanlike)
- return (ThoughtState)false;
- if (!other.RaceProps.Humanlike)
- return (ThoughtState)false;
-
- // Pawns that have not "met" wont give each other Mali
- // Known-Each-Other is a key-word for Rimworld that shows they have had any interaction and stored each other in relations.
- if (!RelationsUtility.PawnsKnowEachOther(pawn, other))
- return (ThoughtState)false;
- // If the pawn is not on Map (e.g. caravan), no mali
- if (!MapUtility.PawnIsOnHomeMap(pawn))
- return (ThoughtState)false;
-
- int pawn_diseases = DiseaseHelper.GetGeneticDiseaseGenes(pawn).Count();
- int other_diseases = DiseaseHelper.GetGeneticDiseaseGenes(other).Count();
- int disease_diff = other_diseases - pawn_diseases;
-
- if (disease_diff >= 5)
- return ThoughtState.ActiveAtStage(2);
- else if (disease_diff >= 2)
- return ThoughtState.ActiveAtStage(1);
- else if (disease_diff >= 1)
- return ThoughtState.ActiveAtStage(0);
- else
- return (ThoughtState)false;
- }
- }
-}
diff --git a/1.6/Source/Genes/Diseases/Thoughts/ThoughtWorker_SizeBlinded_Social.cs b/1.6/Source/Genes/Diseases/Thoughts/ThoughtWorker_SizeBlinded_Social.cs
deleted file mode 100644
index 6181769..0000000
--- a/1.6/Source/Genes/Diseases/Thoughts/ThoughtWorker_SizeBlinded_Social.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-using RimWorld;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using UnityEngine;
-using Verse;
-
-namespace RJW_Genes
-{
- public class ThoughtWorker_SizeBlinded_Social : ThoughtWorker
- {
- protected override ThoughtState CurrentSocialStateInternal(Pawn pawn, Pawn other)
- {
- // Return for trivial errors
- if (pawn == null || other == null || pawn == other)
- return (ThoughtState)false;
- // Check for position-existance
- //1.6 Fix
- //if (pawn.Position == null || other.Position == null || pawn.Map == null || other.Map == null)
- if (pawn.Map == null || other.Map == null || !pawn.Spawned || !other.Spawned)
- return (ThoughtState)false;
- // Do nothing if pawn is carried
- if (pawn.CarriedBy != null)
- return (ThoughtState)false;
- // Do nothing if Pawn is Baby or Child (#25)
- if (!pawn.ageTracker.Adult)
- return (ThoughtState)false;
- if (!other.ageTracker.Adult)
- return (ThoughtState)false;
- // Only check if they are spawned humans
- if (!pawn.Spawned || !other.Spawned)
- return (ThoughtState)false;
- if (!pawn.RaceProps.Humanlike)
- return (ThoughtState)false;
- if (!other.RaceProps.Humanlike)
- return (ThoughtState)false;
-
- // Pawns that have not "met" wont give each other Mali
- // Known-Each-Other is a key-word for Rimworld that shows they have had any interaction and stored each other in relations.
- if (!RelationsUtility.PawnsKnowEachOther(pawn, other))
- return (ThoughtState)false;
- // If the pawn is not on Map (e.g. caravan), no mali
- if (!MapUtility.PawnIsOnHomeMap(pawn))
- return (ThoughtState)false;
-
-
- // Do nothing if there is no size-blinded involved
- if (!GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_size_blinded))
- return (ThoughtState)false;
- else
- ModLog.Debug($"{pawn} has the size blinded gene");
-
- // Iff the pawn has a penis, retrieve it's size.
- var penis = GenitaliaUtility.GetBiggestPenis(other);
- // Do Nothing if the other pawn has no penis
- if (penis == null) return (ThoughtState)false;
- var bodysize = GenitaliaUtility.GetBodySizeOfSexPart(penis);
-
- if (penis.Severity + (bodysize) - 1.0 > 1.0)
- return ThoughtState.ActiveAtStage(2);
- else if (penis.Severity >= 0.8f)
- return ThoughtState.ActiveAtStage(1);
- else
- return ThoughtState.ActiveAtStage(0);
-
- }
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraAnus.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraAnus.cs
deleted file mode 100644
index 277691c..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraAnus.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-using System.Linq;
-
-namespace RJW_Genes
-{
- public class Gene_ExtraAnus : RJW_Gene
- {
-
- internal Hediff additional_anus;
-
- public override void PostMake()
- {
- base.PostMake();
-
- // Some sources add Genes before they fire, e.g. Character Editor
- // This should harden the gene, to solve #19
- if (HasAlreadyTwoAnus())
- {
- return;
- }
-
- if (additional_anus == null)
- {
- CreateAndAddAnus();
- }
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
-
- // Some sources add Genes before they fire, e.g. Character Editor
- // This should harden the gene, to solve #19
- if (HasAlreadyTwoAnus())
- {
- return;
- }
-
- if (additional_anus == null)
- {
- CreateAndAddAnus();
- }
- }
-
- public override void PostRemove()
- {
- base.PostRemove();
- if(additional_anus != null)
- pawn.health.RemoveHediff(additional_anus);
- }
-
- internal void CreateAndAddAnus()
- {
- var correctGene = GenitaliaUtility.GetGenitaliaTypeGeneForPawn(pawn);
- var anusDef = GenitaliaUtility.GetAnusForGene(correctGene);
- var partBPR = Genital_Helper.get_anusBPR(pawn);
- additional_anus = HediffMaker.MakeHediff(anusDef, pawn);
-
- var CompHediff = additional_anus.TryGetComp();
- if (CompHediff != null)
- {
- CompHediff.Init(pawn);
- CompHediff.UpdateSeverity();
- }
-
- pawn.health.AddHediff(additional_anus, partBPR);
- }
-
- internal bool HasAlreadyTwoAnus()
- {
- if (pawn == null)
- return false;
-
- var possible_breasts =
- Genital_Helper.get_AllPartsHediffList(pawn).Where(t => Genital_Helper.is_anus(t));
-
- return possible_breasts.Count() >= 2;
- }
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraBreasts.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraBreasts.cs
deleted file mode 100644
index b763a64..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraBreasts.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-using System.Linq;
-
-namespace RJW_Genes
-{
- public class Gene_ExtraBreasts : RJW_Gene
- {
-
- internal Hediff additional_breasts;
-
- public override void PostMake()
- {
- base.PostMake();
-
- // Some sources add Genes before they fire, e.g. Character Editor
- // This should harden the gene, to solve #19
- if (HasAlreadyTwoBreasts())
- {
- return;
- }
-
- // Tits are only added for female pawns!
- if (GenderUtility.IsFemale(pawn) && additional_breasts == null)
- {
- CreateAndAddBreasts();
- }
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
-
- // Some sources add Genes before they fire, e.g. Character Editor
- // This should harden the gene, to solve #19
- if (HasAlreadyTwoBreasts())
- {
- return;
- }
-
- // Tits are only added for female pawns!
- if (GenderUtility.IsFemale(pawn) && additional_breasts == null)
- {
- CreateAndAddBreasts();
- }
- }
-
- public override void PostRemove()
- {
- base.PostRemove();
- if(additional_breasts != null)
- pawn.health.RemoveHediff(additional_breasts);
- }
-
- internal void CreateAndAddBreasts()
- {
- var correctGene = GenitaliaUtility.GetGenitaliaTypeGeneForPawn(pawn);
- var breastDef = GenitaliaUtility.GetBreastsForGene(correctGene);
- var partBPR = Genital_Helper.get_breastsBPR(pawn);
- additional_breasts = HediffMaker.MakeHediff(breastDef, pawn);
-
- var CompHediff = additional_breasts.TryGetComp();
- if (CompHediff != null)
- {
- CompHediff.Init(pawn);
- CompHediff.UpdateSeverity();
- }
-
- pawn.health.AddHediff(additional_breasts, partBPR);
- }
-
- internal bool HasAlreadyTwoBreasts()
- {
- if (pawn == null)
- return false;
-
- var possible_breasts =
- Genital_Helper.get_AllPartsHediffList(pawn).Where(t => t.def.defName.Contains("breast"));
-
- return possible_breasts.Count() >= 2;
- }
-
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraPenis.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraPenis.cs
deleted file mode 100644
index 5bacdbd..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraPenis.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-using System.Linq;
-
-namespace RJW_Genes
-{
- public class Gene_ExtraPenis : RJW_Gene
- {
-
- internal Hediff additional_penis;
-
- public override void PostMake()
- {
- base.PostMake();
-
- // Some sources add Genes before they fire, e.g. Character Editor
- // This should harden the gene, to solve #19
- if (HasAlreadyTwoPenis())
- {
- return;
- }
-
- // Penis are only added for male pawns!
- if (GenderUtility.IsMale(pawn) && additional_penis == null)
- {
- CreateAndAddPenis();
- }
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
-
- // Some sources add Genes before they fire, e.g. Character Editor
- // This should harden the gene, to solve #19
- if (HasAlreadyTwoPenis())
- {
- return;
- }
-
- // Penis are only added for male pawns!
- if (GenderUtility.IsMale(pawn) && additional_penis == null)
- {
- CreateAndAddPenis();
- }
- }
-
- public override void PostRemove()
- {
- base.PostRemove();
- if(additional_penis != null)
- pawn.health.RemoveHediff(additional_penis);
- }
-
- internal void CreateAndAddPenis()
- {
- var correctGene = GenitaliaUtility.GetGenitaliaTypeGeneForPawn(pawn);
- HediffDef penisDef = GenitaliaUtility.GetPenisForGene(correctGene);
- var partBPR = Genital_Helper.get_genitalsBPR(pawn);
- additional_penis = HediffMaker.MakeHediff(penisDef, pawn);
-
- var CompHediff = additional_penis.TryGetComp();
- if (CompHediff != null)
- {
- CompHediff.Init(pawn);
- CompHediff.UpdateSeverity();
- }
-
- pawn.health.AddHediff(additional_penis, partBPR);
- }
-
-
- internal bool HasAlreadyTwoPenis()
- {
- if (pawn == null)
- return false;
-
- var possible_breasts =
- Genital_Helper.get_AllPartsHediffList(pawn).Where(t => Genital_Helper.is_penis(t));
-
- return possible_breasts.Count() >= 2;
- }
-
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraVagina.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraVagina.cs
deleted file mode 100644
index 179742b..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraVagina.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-using System.Linq;
-
-namespace RJW_Genes
-{
- public class Gene_ExtraVagina : RJW_Gene
- {
-
- internal Hediff additional_vagina;
-
- //TODO: This works ingame when genes are added, but if there is
- //a gene (e.g. ovipositor) in creation it does not work as expected (only has one genital)
- //Penis works as expected
-
-
- public override void PostMake()
- {
- base.PostMake();
-
- // Some sources add Genes before they fire, e.g. Character Editor
- // This should harden the gene, to solve #19
- if (HasAlreadyTwoVaginas())
- {
- return;
- }
-
- // Vaginas are only added for female pawns!
- if (GenderUtility.IsFemale(pawn) && additional_vagina == null)
- {
- CreateAndAddVagina();
- }
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
-
- // Some sources add Genes before they fire, e.g. Character Editor
- // This should harden the gene, to solve #19
- if (HasAlreadyTwoVaginas())
- {
- return;
- }
-
- // Vaginas are only added for female pawns!
- if (GenderUtility.IsFemale(pawn) && additional_vagina == null)
- {
- CreateAndAddVagina();
- }
- }
-
- public override void PostRemove()
- {
- base.PostRemove();
- if(additional_vagina != null)
- pawn.health.RemoveHediff(additional_vagina);
- }
-
- internal void CreateAndAddVagina()
- {
- var correctGene = GenitaliaUtility.GetGenitaliaTypeGeneForPawn(pawn);
- HediffDef vaginaDef = GenitaliaUtility.GetVaginaForGene(correctGene);
- var partBPR = Genital_Helper.get_genitalsBPR(pawn);
- additional_vagina = HediffMaker.MakeHediff(vaginaDef, pawn);
-
- var CompHediff = additional_vagina.TryGetComp();
- if (CompHediff != null)
- {
- CompHediff.Init(pawn);
- CompHediff.UpdateSeverity();
- }
-
- pawn.health.AddHediff(additional_vagina, partBPR);
- }
-
- internal bool HasAlreadyTwoVaginas()
- {
- if (pawn == null)
- return false;
-
- var possible_breasts =
- Genital_Helper.get_AllPartsHediffList(pawn).Where(t => Genital_Helper.is_vagina(t));
-
- return possible_breasts.Count() >= 2;
- }
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_FeaturelessChest.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_FeaturelessChest.cs
deleted file mode 100644
index df07876..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_FeaturelessChest.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-using Verse;
-using rjw;
-
-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()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- 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);
- added_nipples = pawn.health.AddHediff(Genital_Helper.featureless_chest, partBPR);
- }
-
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_Femboy.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_Femboy.cs
deleted file mode 100644
index b3e9140..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_Femboy.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-
-namespace RJW_Genes
-{
- public class Gene_Femboy : RJW_Gene
- {
- public override void PostMake()
- {
- base.PostMake();
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
- if (GenderUtility.IsMale(this.pawn) && this.additional_genital == null)
- {
- this.CreateAndAddVagina();
- }
- }
-
- internal void CreateAndAddVagina()
- {
- if (this.pawn.gender != Gender.Female)
- {
- GenderHelper.ChangeSex(this.pawn, delegate ()
- {
- this.pawn.gender = Gender.Female;
- GenitaliaChanger.RemoveAllGenitalia(this.pawn);
- Sexualizer.sexualize_pawn(this.pawn);
- });
- GenderUtility.AdjustBodyToTargetGender(this.pawn, Gender.Female);
- }
- BodyPartRecord bodyPartRecord = Genital_Helper.get_genitalsBPR(this.pawn);
- Hediff hediff = Genital_Helper.get_AllPartsHediffList(this.pawn).FindLast((Hediff x) => Genital_Helper.is_vagina(x));
- if (hediff != null)
- {
- this.pawn.health.RemoveHediff(hediff);
- }
- HediffDef penisForGene = GenitaliaUtility.GetPenisForGene(GenitaliaUtility.GetGenitaliaTypeGeneForPawn(this.pawn));
- BodyPartRecord part = Genital_Helper.get_genitalsBPR(this.pawn);
- this.additional_genital = HediffMaker.MakeHediff(penisForGene, this.pawn, null);
- HediffComp_SexPart hediffCompSexPart = this.additional_genital.TryGetComp();
- if (hediffCompSexPart != null)
- {
- hediffCompSexPart.Init(this.pawn, false);
- hediffCompSexPart.UpdateSeverity(0f);
- }
- this.pawn.health.AddHediff(this.additional_genital, part, null, null);
- foreach (Gene g in pawn.genes.GenesListForReading)
- {
- if (g.def.defName == "rjw_genes_hydrolic_genitalia")
- {
- g.PostAdd();
- }
- if (g.def.defName == "rjw_genes_bionic_genitalia")
- {
- g.PostAdd();
- return;
- }
- }
- }
-
- // Token: 0x040001B0 RID: 432
- internal Hediff additional_genital;
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_Futa.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_Futa.cs
deleted file mode 100644
index 011b466..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_Futa.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-
-namespace RJW_Genes
-{
- public class Gene_Futa : RJW_Gene
- {
-
- internal Hediff additional_genital;
-
- public override void PostMake()
- {
-
- base.PostMake();
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
-
- // If the Pawn is already a Futa, do not do anything. Can Happen by Base-RJW Spawn Chance or potentially races / other mods.
- if (IsAlreadyFuta(pawn))
- {
- return;
- }
-
- if (pawn.gender == Gender.Female && additional_genital == null)
- {
- createAndAddPenis();
- }
- if (pawn.gender == Gender.Male && additional_genital == null)
- {
- CreateAndAddVagina();
- }
- }
-
- public override void PostRemove()
- {
- base.PostRemove();
- if(additional_genital != null)
- pawn.health.RemoveHediff(additional_genital);
- }
-
- //TODO: Extract createAndAddXXX to extra class
- internal void createAndAddPenis()
- {
- var correctGene = GenitaliaUtility.GetGenitaliaTypeGeneForPawn(pawn);
- HediffDef penisDef = GenitaliaUtility.GetPenisForGene(correctGene);
- var partBPR = Genital_Helper.get_genitalsBPR(pawn);
- additional_genital = HediffMaker.MakeHediff(penisDef, pawn);
-
- var CompHediff = additional_genital.TryGetComp();
- if (CompHediff != null)
- {
- CompHediff.Init(pawn);
- CompHediff.UpdateSeverity();
- }
-
- pawn.health.AddHediff(additional_genital, partBPR);
- }
-
- internal void CreateAndAddVagina()
- {
- var correctGene = GenitaliaUtility.GetGenitaliaTypeGeneForPawn(pawn);
- HediffDef vaginaDef = GenitaliaUtility.GetVaginaForGene(correctGene);
- var partBPR = Genital_Helper.get_genitalsBPR(pawn);
- additional_genital = HediffMaker.MakeHediff(vaginaDef, pawn);
-
- var CompHediff = additional_genital.TryGetComp();
- if (CompHediff != null)
- {
- CompHediff.Init(pawn);
- CompHediff.UpdateSeverity();
- }
-
- pawn.health.AddHediff(additional_genital, partBPR);
- }
-
- private static bool IsAlreadyFuta(Pawn pawn)
- {
- if (pawn == null)
- return false;
- if (!Genital_Helper.has_genitals(pawn))
- return false;
- return
- (Genital_Helper.has_penis_fertile(pawn) || Genital_Helper.has_penis_infertile(pawn))
- && Genital_Helper.has_vagina(pawn) ;
- }
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_NoAnus.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_NoAnus.cs
deleted file mode 100644
index 11f8706..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_NoAnus.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-
-namespace RJW_Genes
-{
- public class Gene_NoAnus : RJW_Gene
- {
-
- internal Hediff removed_anus;
-
- public override void PostMake()
- {
- base.PostMake();
-
- if (removed_anus == null)
- {
- RemoveButStoreAnus();
- }
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
-
- if (removed_anus == null)
- {
- RemoveButStoreAnus();
- }
- }
-
- public override void PostRemove()
- {
- base.PostRemove();
- if(removed_anus != null)
- pawn.health.AddHediff(removed_anus);
- }
-
- internal void RemoveButStoreAnus()
- {
- var partBPR = Genital_Helper.get_anusBPR(pawn);
- Hediff anusToRemove = Genital_Helper.get_AllPartsHediffList(pawn).FindLast(x => GenitaliaChanger.IsAnus(x));
-
- if(anusToRemove != null)
- {
- removed_anus = anusToRemove;
- pawn.health.RemoveHediff(anusToRemove);
- }
- }
-
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_NoBreasts.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_NoBreasts.cs
deleted file mode 100644
index f1e6aed..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_NoBreasts.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-
-namespace RJW_Genes
-{
- public class Gene_NoBreasts : RJW_Gene
- {
- Hediff breastsToShrink;
- internal float oldSize = -1f;
-
- public override void PostMake()
- {
- base.PostMake();
-
- // Breasts are removed for female pawns!
- if (GenderUtility.IsFemale(pawn) && oldSize < 0)
- {
- RemoveButStoreBreasts();
- }
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
-
- // Breasts are removed for female pawns!
- if (GenderUtility.IsFemale(pawn) && oldSize < 0)
- {
- RemoveButStoreBreasts();
- }
- }
-
- public override void PostRemove()
- {
- base.PostRemove();
- // Re-Add the old breasts
- if (oldSize != -1f)
- breastsToShrink.Severity = oldSize;
- else
- breastsToShrink.Severity = 0f;
- }
-
- internal void RemoveButStoreBreasts()
- {
- var partBPR = Genital_Helper.get_breastsBPR(pawn);
- breastsToShrink = Genital_Helper.get_AllPartsHediffList(pawn).FindLast(x => GenitaliaUtility.IsBreasts(x));
-
- if(breastsToShrink != null)
- {
- oldSize = breastsToShrink.Severity;
- //pawn.health.RemoveHediff(breastsToRemove);
- breastsToShrink.Severity = 0f;
- }
- }
-
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_NoPenis.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_NoPenis.cs
deleted file mode 100644
index 5471309..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_NoPenis.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-
-namespace RJW_Genes
-{
- public class Gene_NoPenis : RJW_Gene
- {
-
- internal Hediff removed_penis;
-
- public override void PostMake()
- {
- base.PostMake();
-
- // Penis are only removed for male pawns!
- if (GenderUtility.IsMale(pawn) && removed_penis == null)
- {
- RemoveButStorePenis();
- }
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
-
- // Penis are only removed for male pawns!
- if (GenderUtility.IsMale(pawn) && removed_penis == null)
- {
- RemoveButStorePenis();
- }
- }
-
- public override void PostRemove()
- {
- base.PostRemove();
- if(removed_penis != null)
- pawn.health.AddHediff(removed_penis);
- }
-
- internal void RemoveButStorePenis()
- {
- var partBPR = Genital_Helper.get_genitalsBPR(pawn);
- Hediff penisToRemove = Genital_Helper.get_AllPartsHediffList(pawn).FindLast(x => Genital_Helper.is_penis(x));
-
- if(penisToRemove != null)
- {
- removed_penis = penisToRemove;
- pawn.health.RemoveHediff(penisToRemove);
- }
- }
-
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_NoVagina.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_NoVagina.cs
deleted file mode 100644
index c5ec081..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_NoVagina.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-
-namespace RJW_Genes
-{
- public class Gene_NoVagina : RJW_Gene
- {
-
- internal Hediff removed_vagina;
-
- public override void PostMake()
- {
- base.PostMake();
-
- // Vaginas are only removed for female pawns!
- if (GenderUtility.IsFemale(pawn) && removed_vagina == null)
- {
- RemoveButStoreVagina();
- }
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
-
- // Vaginas are only removed for female pawns!
- if (GenderUtility.IsFemale(pawn) && removed_vagina == null)
- {
- RemoveButStoreVagina();
- }
- }
-
- public override void PostRemove()
- {
- base.PostRemove();
- if(removed_vagina != null)
- pawn.health.AddHediff(removed_vagina);
- }
-
- internal void RemoveButStoreVagina()
- {
- var partBPR = Genital_Helper.get_genitalsBPR(pawn);
- Hediff vaginaToRemove = Genital_Helper.get_AllPartsHediffList(pawn).FindLast(x => Genital_Helper.is_vagina(x));
-
- if(vaginaToRemove != null)
- {
- removed_vagina = vaginaToRemove;
- pawn.health.RemoveHediff(vaginaToRemove);
- }
- }
-
- }
-}
diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs
deleted file mode 100644
index ce53b43..0000000
--- a/1.6/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using rjw;
-using Verse;
-
-namespace RJW_Genes
-{
-
- ///
- /// Removes breasts for female (and trap, futa) pawns and adds Udders.
- /// Wished for in Issue #27.
- ///
- /// TODO: Currently, the sexualizer over-writes the added udders and just adds another pair of breasts!
- /// I commented out the gene in .xml for now.
- ///
- public class Gene_UdderBreasts : RJW_Gene
- {
-
- Hediff added_udders;
-
- public override void PostMake()
- {
- base.PostMake();
-
-
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
-
- AddUdders();
-
- }
-
- public override void PostRemove()
- {
- base.PostRemove();
-
- if (added_udders != null)
- pawn.health.RemoveHediff(added_udders);
- }
-
-
- internal void AddUdders()
- {
- HediffComp_SexPart CompHediff = null;
- BodyPartRecord bpr = Genital_Helper.get_breastsBPR(pawn);
- added_udders = pawn.health.AddHediff(Genital_Helper.udder_breasts, bpr);
- added_udders.TryGetComp();
- if (CompHediff != null)
- {
- CompHediff.Init(pawn);
- CompHediff.UpdateSeverity();
- }
-
- }
- }
-
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Fluid/Defs/GenitaliaFluidChangeExtension.cs b/1.6/Source/Genes/Fluid/Defs/GenitaliaFluidChangeExtension.cs
deleted file mode 100644
index 713af2b..0000000
--- a/1.6/Source/Genes/Fluid/Defs/GenitaliaFluidChangeExtension.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class GenitaliaFluidChangeExtension : DefModExtension
- {
- public SexFluidDef penisFluidReplacement; // Everything for which "isPenis" is true
- public SexFluidDef vaginaFluidReplacement; // Everything for which "isVagina" is true
- public SexFluidDef breastFluidReplacement; // Everything for which "isBreasts" is true
- public SexFluidDef otherFluidReplacement; // Everything not the above.
- }
-
-}
diff --git a/1.6/Source/Genes/Fluid/FluidUtility.cs b/1.6/Source/Genes/Fluid/FluidUtility.cs
deleted file mode 100644
index 226845f..0000000
--- a/1.6/Source/Genes/Fluid/FluidUtility.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-
-namespace RJW_Genes
-{
- public class FluidUtility
- {
-
- public static void MultiplyFluidAmountBy(Pawn pawn, float multiplier)
- {
- var partBPR = Genital_Helper.get_genitalsBPR(pawn);
- var parts = Genital_Helper.get_PartsHediffList(pawn, partBPR);
-
- foreach (Hediff part in parts)
- {
- // Right now: Ignore Breasts, only do
- if (part is ISexPartHediff sexPart && (Genital_Helper.is_penis(part) || Genital_Helper.is_vagina(part)))
- sexPart.GetPartComp().partFluidMultiplier *= multiplier;
- }
- }
-
- ///
- /// Looks up the "MultiplierExtensions" Value for a given Gene, with a fall back.
- /// Returns the fallback if there is no Extension, or if the Multiplier is smaller than 0.
- ///
- public static float LookupFluidMultiplier(Gene gene, float FALLBACK = 3.0f) => LookupFluidMultiplier(gene.def, FALLBACK);
- public static float LookupFluidMultiplier(GeneDef def, float FALLBACK = 3.0f)
- {
- MultiplierExtension multiplier = def.GetModExtension();
- if (multiplier == null || multiplier.multiplier < 0)
- return FALLBACK;
- else return multiplier.multiplier;
- }
-
-
- //Get total fluidamount a person has.
- public static float GetTotalFluidAmount(Pawn pawn, float multiplier = 1f)
- {
- var partBPR = Genital_Helper.get_genitalsBPR(pawn);
- var parts = Genital_Helper.get_PartsHediffList(pawn, partBPR);
- float total_fluid = 0;
- if (!parts.NullOrEmpty())
- {
- foreach (Hediff part in parts)
- {
- if (GenitaliaChanger.IsArtificial(part))
- continue;
-
- if (part is ISexPartHediff sexPart)
- {
- total_fluid += sexPart.GetPartComp().FluidAmount;
- }
- }
- }
- return total_fluid;
- }
-
- public static void ChangeFluids(Pawn pawn, SexFluidDef penisFluidDefs = null, SexFluidDef vaginaFluidDefs = null, SexFluidDef breastFluidDefs = null, SexFluidDef otherFluidDefs = null)
- {
- if (pawn == null) return;
-
- var parts = Genital_Helper.get_AllPartsHediffList(pawn);
- foreach (Hediff part in parts)
- {
- if (part is ISexPartHediff sexPart)
- {
- var comp = sexPart.GetPartComp();
- if (penisFluidDefs != null && Genital_Helper.is_penis(part))
- comp.Fluid = penisFluidDefs;
- else if (vaginaFluidDefs != null && Genital_Helper.is_vagina(part))
- comp.Fluid = vaginaFluidDefs;
- else if (breastFluidDefs != null && GenitaliaUtility.IsBreasts(part))
- comp.Fluid = breastFluidDefs;
- else
- comp.Fluid = otherFluidDefs;
- }
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidAmount.cs b/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidAmount.cs
deleted file mode 100644
index 49c84a2..0000000
--- a/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidAmount.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-namespace RJW_Genes
-{
- public class Gene_ChangeFluidAmount : RJW_Gene
- {
- bool has_been_fired = false;
-
-
- public override void PostMake()
- {
- base.PostMake();
-
- float multipier = FluidUtility.LookupFluidMultiplier(this);
- FluidUtility.MultiplyFluidAmountBy(pawn, multipier);
- has_been_fired = true;
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
- if (!has_been_fired)
- {
- float multipier = FluidUtility.LookupFluidMultiplier(this);
- FluidUtility.MultiplyFluidAmountBy(pawn, multipier);
- has_been_fired = true;
- }
- }
-
- public override void PostRemove()
- {
- base.PostAdd();
-
- if (has_been_fired)
- {
- float multipier = FluidUtility.LookupFluidMultiplier(this);
- FluidUtility.MultiplyFluidAmountBy(pawn, 1/ multipier);
- has_been_fired = false;
- }
- }
-
- }
-}
diff --git a/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidType.cs b/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidType.cs
deleted file mode 100644
index 4745828..0000000
--- a/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidType.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace RJW_Genes
-{
- public class Gene_ChangeFluidType : RJW_Gene
- {
- public override void PostMake()
- {
- base.PostMake();
-
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
- Apply();
- }
-
- public virtual void Apply()
- {
- if (this.Active)
- {
- GenitaliaFluidChangeExtension fluidReplacements = def.GetModExtension();
- if (fluidReplacements == null && RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- ModLog.Error($"Gene {def} failed to change genitals - Need a modExtension with Class=\"{typeof(GenitaliaFluidChangeExtension).FullName}\".");
- return;
- }
-
- FluidUtility.ChangeFluids(pawn, fluidReplacements.penisFluidReplacement, fluidReplacements.vaginaFluidReplacement, fluidReplacements.breastFluidReplacement, fluidReplacements.otherFluidReplacement);
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/Fluid/HediffComps/HediffCompProperties_MatchSeverityOfHediff.cs b/1.6/Source/Genes/Fluid/HediffComps/HediffCompProperties_MatchSeverityOfHediff.cs
deleted file mode 100644
index b702547..0000000
--- a/1.6/Source/Genes/Fluid/HediffComps/HediffCompProperties_MatchSeverityOfHediff.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-//using Cumpilation.Oscillation;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class HediffCompProperties_MatchSeverityOfHediff : HediffCompProperties
- {
- public HediffDef hediffToMatch;
-
- public HediffCompProperties_MatchSeverityOfHediff() => this.compClass = typeof(HediffComp_MatchSeverityOfHediff);
- }
-}
diff --git a/1.6/Source/Genes/Fluid/HediffComps/HediffComp_MatchSeverityOfHediff.cs b/1.6/Source/Genes/Fluid/HediffComps/HediffComp_MatchSeverityOfHediff.cs
deleted file mode 100644
index 44ab52c..0000000
--- a/1.6/Source/Genes/Fluid/HediffComps/HediffComp_MatchSeverityOfHediff.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Verse;
-
-namespace RJW_Genes
-{
- public class HediffComp_MatchSeverityOfHediff : HediffComp
- {
- public HediffCompProperties_MatchSeverityOfHediff Props => (HediffCompProperties_MatchSeverityOfHediff)this.props;
-
- public override void CompPostTick(ref float severityAdjustment)
- {
- base.CompPostTick(ref severityAdjustment);
-
- bool hasMatchingHediff = parent.pawn.health.hediffSet.HasHediff(Props.hediffToMatch);
-
- if (!hasMatchingHediff) {
- parent.Severity = 0.0f;
- }
- else
- {
- Hediff match = parent.pawn.health.hediffSet.GetFirstHediffOfDef(Props.hediffToMatch);
- if (match == null) parent.Severity = 0.0f;
- parent.Severity = match.Severity;
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/Fluid/HediffComps/HediffComp_ProcessCumbucket.cs b/1.6/Source/Genes/Fluid/HediffComps/HediffComp_ProcessCumbucket.cs
deleted file mode 100644
index ede3aa7..0000000
--- a/1.6/Source/Genes/Fluid/HediffComps/HediffComp_ProcessCumbucket.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-
-using RimWorld;
-using System;
-using Verse;
-
-namespace RJW_Genes
-{
- public class HediffComp_ProcessCumbucket : HediffComp
- {
-
- public HediffsCompProperties_ProcessCumbucketMTB Props
- {
- get
- {
- return (HediffsCompProperties_ProcessCumbucketMTB)this.props;
- }
- }
-
- public override void CompPostTick(ref float severityAdjustment)
- {
- if (this.Props.mtbDaysPerStage[this.parent.CurStageIndex] > 0f && base.Pawn.IsHashIntervalTick(60) && Rand.MTBEventOccurs(this.Props.mtbDaysPerStage[this.parent.CurStageIndex], 60000f, 60f))
- {
- ModLog.Debug($"Triggered HediffComp_ProcessCumbucket CompPostTick - Starting a JobDriver ProcessCumbucket for {this.parent.pawn}");
- this.Pawn.jobs.StartJob(JobMaker.MakeJob(DefDatabase.GetNamed("RJW_Genes_ProcessCumbucket")), lastJobEndCondition: Verse.AI.JobCondition.InterruptForced, resumeCurJobAfterwards: true);
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/Fluid/HediffComps/HediffsCompProperties_ProcessCumbucketMTB.cs b/1.6/Source/Genes/Fluid/HediffComps/HediffsCompProperties_ProcessCumbucketMTB.cs
deleted file mode 100644
index 919b715..0000000
--- a/1.6/Source/Genes/Fluid/HediffComps/HediffsCompProperties_ProcessCumbucketMTB.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class HediffsCompProperties_ProcessCumbucketMTB : HediffCompProperties
- {
- public HediffsCompProperties_ProcessCumbucketMTB()
- {
- this.compClass = typeof(HediffComp_ProcessCumbucket);
- }
-
- public override IEnumerable ConfigErrors(HediffDef parentDef)
- {
- foreach (string text in base.ConfigErrors(parentDef))
- {
- yield return text;
- }
- if (this.mtbDaysPerStage == null)
- {
- yield return "mtbDaysPerStage is not defined";
- }
- else if (this.mtbDaysPerStage.Count != parentDef.stages.Count)
- {
- yield return "mtbDaysPerStage count doesn't match Hediffs number of stages";
- }
- yield break;
- }
-
- public List mtbDaysPerStage;
- }
-}
diff --git a/1.6/Source/Genes/Fluid/JobDriver_ProcessingCumbucket.cs b/1.6/Source/Genes/Fluid/JobDriver_ProcessingCumbucket.cs
deleted file mode 100644
index e62af91..0000000
--- a/1.6/Source/Genes/Fluid/JobDriver_ProcessingCumbucket.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Runtime.CompilerServices;
-using RimWorld;
-using rjw;
-using UnityEngine;
-using Verse;
-using Verse.AI;
-
-namespace RJW_Genes
-{
- ///
- /// Shamelessly stolen from LicentaLabs
- /// [Jaals Fork] https://gitgud.io/Jaaldabaoth/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/JobDriver_VomitCum.cs
- ///
- public class JobDriver_ProcessingCumbucket : JobDriver_Vomit
- {
- public override bool CanBeginNowWhileLyingDown()
- {
- return true;
- }
-
- protected override IEnumerable MakeNewToils()
- {
- // DevNote: Right now, this needs RJW.sexperience to produce the Cum-Item.
- if (!ModsConfig.IsActive("vegapnk.cumpilation"))
- yield break;
-
- Toil toil = new Toil();
- toil.initAction = delegate ()
- {
- this.ticksLeft = Rand.Range(150, 600);
- int num = 0;
- IntVec3 c;
- for (; ; )
- {
- c = this.pawn.Position + GenAdj.AdjacentCellsAndInside[Rand.Range(0, 9)];
- num++;
- if (num > 12)
- {
- break;
- }
- if (c.InBounds(this.pawn.Map) && c.Standable(this.pawn.Map))
- {
- // DevNote: I am not 100% what this all means, but IL_77 is a jump to the case below (it says IL_77).
- // basically, this calls the next part of the function, but I am not super sure why this has to be like this.
- // JobDrivers are scary.
- goto IL_77;
- }
- }
- c = this.pawn.Position;
- IL_77:
- this.job.targetA = c;
- this.pawn.pather.StopDead();
- };
- toil.tickAction = delegate ()
- {
- if (this.ticksLeft % 150 == 149)
- {
- if (!sourceName.NullOrEmpty())
- {
- //TODO: Currently disabled due to Errors (#129), not a Fix but atleast no more errors
- //if (ModsConfig.IsActive("LustLicentia.RJWLabs"))
- // FilthMaker.TryMakeFilth(this.job.targetA.Cell, base.Map, Licentia.ThingDefs.FilthCum, sourceName);
- SpawnCum(this.pawn, this.job.targetA.Cell, base.Map);
- }
- else
- {
- //TODO: Currently disabled due to Errors (#129), not a Fix but atleast no more errors
- // if (ModsConfig.IsActive("LustLicentia.RJWLabs"))
- // FilthMaker.TryMakeFilth(this.job.targetA.Cell, base.Map, Licentia.ThingDefs.FilthCum);
-
- SpawnCum(this.pawn, this.job.targetA.Cell, base.Map);
- }
- }
- this.ticksLeft--;
- if (this.ticksLeft <= 0)
- {
- base.ReadyForNextToil();
- }
- };
- toil.defaultCompleteMode = ToilCompleteMode.Never;
- toil.WithEffect(EffecterDefOf.Vomit, TargetIndex.A, new Color(100f, 100f, 100f, 0.5f));
- toil.PlaySustainerOrSound(() => SoundDefOf.Vomit, 1f);
- yield return toil;
- yield break;
- }
-
- ///
- /// This Function is intentionaly left blank to avoid typeExceptions when cumpilation addon is not present, it is patched using the Patch_processingCumbucket Function in the optional DLL that is only loaded if Cumpilation is present.
- ///
- ///
- ///
- ///
- [MethodImpl(MethodImplOptions.NoInlining)]
- public void SpawnCum(Pawn pawn, IntVec3 cell, Map map)
- {
- if (!ModsConfig.IsActive("vegapnk.cumpilation"))
- return;
- /*
- Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_filled_living_cumbucket);
- if (hediff == null)
- {
- ModLog.Warning($"{pawn} has the JobDriver_ProcessCumbucket but does not have the Hediff for filled cumbucket.");
- return;
- }
-
-
- var storage = hediff.TryGetComp();
- var random_entry = storage.sources.RandomElementByWeight(p => p.amount);
-
- ThingDef ToSpawn = random_entry.fluid.consumable == null ? Cumpilation.DefOfs.Cumpilation_Cum : random_entry.fluid.consumable;
-
- ThingDef cumDef = Cumpilation.DefOfs.Cumpilation_Cum;
-
- // Case 1: "Normal Severity", just puke out a bit of cum here and there.
- if (hediff.Severity <= 10)
- {
- Thing cum = ThingMaker.MakeThing(cumDef);
- cum.Position = cell;
- int stacks = Math.Max(1, (int)(hediff.Severity * 1.5));
- stacks = Math.Min(stacks, 75); // 75 is the default max stacksize ...
- cum.stackCount = stacks;
- cum.SpawnSetup(map, false);
- hediff.Severity -= (stacks / 50);
- }
- else
- // Case 2: Reserviour mode, put out a lot of cum at once but less often.
- {
- int stacks = Math.Max(1, (int)(hediff.Severity * 1.5));
-
- while (stacks > 0)
- {
- Thing cum = ThingMaker.MakeThing(cumDef);
- cum.Position = cell;
- var curStacks = Math.Min(stacks, 75); // 75 is the default max stacksize ...
- cum.stackCount = stacks;
- cum.SpawnSetup(map, false);
- hediff.Severity -= (curStacks / 50);
- stacks -= curStacks;
- }
- }
- */
- }
-
- private int ticksLeft;
-
- public string sourceName;
- }
-}
diff --git a/1.6/Source/Genes/Fluid/Patches/Patch_TransferNutrition_Generous_Donor_PawnToPartner.cs b/1.6/Source/Genes/Fluid/Patches/Patch_TransferNutrition_Generous_Donor_PawnToPartner.cs
deleted file mode 100644
index fbc08c7..0000000
--- a/1.6/Source/Genes/Fluid/Patches/Patch_TransferNutrition_Generous_Donor_PawnToPartner.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-using HarmonyLib;
-using rjw;
-using Verse;
-
-
-namespace RJW_Genes
-{
-
- ///
- /// Upon Transfer Fluids, the pawns store their current Food need (if applicable).
- /// When running the postfix, all generous donours get their old food need restored if the current one is lower.
- /// If there is any issue, the need is just set to -10 as an error value.
- ///
- /// Patched Method: https://gitgud.io/Ed86/rjw/-/blob/master/1.5/Source/Common/Helpers/SexUtility.cs?ref_type=heads#L992
- ///
- [HarmonyPatch(typeof(rjw.SexUtility), nameof(rjw.SexUtility.TransferFluids))]
- class Patch_TransferNutrition_Generous_Donor_PawnToPartner
- {
-
- static void Prefix(SexProps props, out float __state)
- {
- __state = -10.0f;
- if (props.pawn != null && props.pawn.needs != null && props.pawn.needs.food != null)
- __state = props.pawn.needs.food.CurLevel;
-
- }
-
- static void Postfix(SexProps props,float __state )
- {
-
- if (props.pawn != null && props.pawn.needs != null && props.pawn.needs.food != null && props.pawn.genes != null)
- {
- if (props.pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_generous_donor) && props.pawn.needs.food.CurLevel < __state)
- {
- ModLog.Debug($"Found Generous Donor {props.pawn} Transferring Fluids - Resetting Food Need from {props.pawn.needs.food.CurLevel} to {__state}");
- props.pawn.needs.food.CurLevel = __state;
- }
- }
- }
- }
-
- ///
- /// Harmony Patches only allow for one out-variable as state.
- /// Thus I have simply a clone with the same behaviour. Why not have it easy sometimes.
- ///
- [HarmonyPatch(typeof(rjw.SexUtility), nameof(rjw.SexUtility.TransferFluids))]
- class Patch_TransferNutrition_Generous_Donor_PartnerToPawn
- {
-
- static void Prefix(SexProps props,out float __state)
- {
- __state = -10.0f;
- if (props.partner != null && props.partner.needs != null && props.partner.needs.food != null)
- __state = props.partner.needs.food.CurLevel;
- }
-
- static void Postfix(SexProps props, float __state)
- {
-
- if (props.partner != null && props.partner.needs != null && props.partner.needs.food != null && props.partner.genes != null)
- {
- if (props.partner.genes.HasActiveGene(GeneDefOf.rjw_genes_generous_donor) && props.partner.needs.food.CurLevel < __state)
- {
- ModLog.Debug($"Found Generous Donor {props.partner} Transferring Fluids - Resetting Food Need from {props.partner.needs.food.CurLevel} to {__state}");
- props.partner.needs.food.CurLevel = __state;
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Gender/GenderUtility.cs b/1.6/Source/Genes/Gender/GenderUtility.cs
deleted file mode 100644
index 0f80ba5..0000000
--- a/1.6/Source/Genes/Gender/GenderUtility.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-using Verse;
-using rjw;
-using RimWorld;
-using System.Linq;
-using System;
-using System.Collections.Generic;
-using HarmonyLib;
-
-namespace RJW_Genes
-{
- public class GenderUtility
- {
- ///
- /// Returns if a Pawn is female (Gender==Female) or if it should be (Gene==FemaleOnly)
- /// This is used as a small helper, as the genes might fire in different orders.
- ///
- public static bool IsFemale(Pawn pawn)
- {
- return
- pawn.gender == Gender.Female || pawn.genes.GenesListForReading.Any(gene => gene.def.defName.EqualsIgnoreCase(GeneDefOf.rjw_genes_female_only.defName));
- }
-
- ///
- /// Returns if a Pawn is male (Gender==Male) or if it should be (Gene==MaleOnly)
- /// This is used as a small helper, as the genes might fire in different orders.
- ///
- public static bool IsMale(Pawn pawn)
- {
- return
- pawn.gender == Gender.Male || pawn.genes.GenesListForReading.Any(gene => gene.def.defName.EqualsIgnoreCase(GeneDefOf.rjw_genes_male_only.defName));
- }
-
- ///
- /// Adjusts the Body Type to match the given target gender.
- /// This is only for "drawing" attributes of the pawn, the genitalia are untouched at this point.
- /// (for male and female only, baby,child and hulks don't change)
- ///
- ///
- ///
- public static void AdjustBodyToTargetGender(Pawn pawn, Gender targetGender)
- {
- if (pawn == null)
- return;
- if (pawn.story.bodyType == BodyTypeDefOf.Baby || pawn.story.bodyType == BodyTypeDefOf.Hulk || pawn.story.bodyType == BodyTypeDefOf.Child)
- return;
-
- if (targetGender == Gender.Male)
- {
- pawn.story.bodyType = BodyTypeDefOf.Male;
- }
- else if (targetGender == Gender.Female)
- {
- pawn.story.bodyType = BodyTypeDefOf.Female;
- pawn.style.beardDef = BeardDefOf.NoBeard;
- }
-
- // Re-Choose heads if it is wrong gender
- if (pawn.story.headType.gender == Gender.None || pawn.story.headType.gender == targetGender)
- {
- // Do nothing, Gender of Heat is Neutral or matches
- }
- else
- {
- // Below line tries to get (and set) an available head from the backstory, if it returns true everything worked if it returns false we log it
- if(! pawn.story.TryGetRandomHeadFromSet(DefDatabase.AllDefs.Where((Func)(x => x.randomChosen))))
- {
- Log.Message("Failed to retrieve a correct-gender head for the pawn " + pawn.Name);
- };
- }
-
- // Force Redraw at the spot
- }
-
- // Fetch these once at load time because they don't change inside RJW
- private static readonly List wasSexThoughts = Traverse.Create(typeof(GenderHelper)).Field("old_sex_list").GetValue>();
- private static readonly List sexChangeThoughts = Traverse.Create(typeof(GenderHelper)).Field("SexChangeThoughts").GetValue>();
-
- ///
- /// This method removes all RJW-Sexchange-Hediffs from the pawn.
- /// It used with the RJW_Gene.Notify_OnPawnGeneration() to check for pawns on spawn.
- ///
- /// Fixes Issue #32, where pawns that spawn fresh with a "all female" gene may have m2f thoughts.
- ///
- /// The pawn that needs to have SexChange-Thoughts removed.
- public static void RemoveAllSexChangeThoughts(Pawn pawn)
- {
- // Shouldn't ever be true in the normal case, but this stops someone from calling this with an incorrect setup
- if (pawn?.health == null)
- return;
- if(wasSexThoughts == null || sexChangeThoughts == null || !wasSexThoughts.Any() || !sexChangeThoughts.Any())
- {
- Log.Warning($"Couldn't get values from RJW.\nold_sex_list: {wasSexThoughts.ToStringSafeEnumerable()}\nSexChangeThoughts: {sexChangeThoughts.ToStringSafeEnumerable()}");
- return;
- }
-
- var thoughtsToRemove = wasSexThoughts.Concat(sexChangeThoughts);
- if (thoughtsToRemove.Count() == 0) return;
-
- foreach (var thoughtToRemove in thoughtsToRemove)
- {
- var hediff = pawn.health.hediffSet.GetFirstHediffOfDef(thoughtToRemove);
- if (hediff != null)
- pawn.health.RemoveHediff(hediff);
- }
- }
-
- ///
- /// This check helps to get babies after birth, if the pawn was born with the gene it does not need to have thoughts.
- /// There are very different ways to do the life stages, and there are also HAR people still around,
- /// so instead of checking for stages I intentionally check for the biological ticks to be very low (that they can only exist basically if they are born right before).
- /// Issue is tracked in #103.
- ///
- ///
- public static void RemoveSexChangeThoughtsIfTooYoung(Pawn pawn)
- {
- if (pawn.ageTracker.AgeBiologicalTicks < 1000)
- {
- GenderUtility.RemoveAllSexChangeThoughts(pawn);
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/Gender/Genes/Gene_FemaleOnly.cs b/1.6/Source/Genes/Gender/Genes/Gene_FemaleOnly.cs
deleted file mode 100644
index 551f5ea..0000000
--- a/1.6/Source/Genes/Gender/Genes/Gene_FemaleOnly.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-using Verse;
-using rjw;
-
-
-namespace RJW_Genes
-{
- public class Gene_FemaleOnly : RJW_Gene
- {
- public override void PostMake()
- {
- base.PostMake();
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostMake();
- AdjustPawnToFemale();
- GenderUtility.RemoveSexChangeThoughtsIfTooYoung(this.pawn);
- }
-
- private void AdjustPawnToFemale()
- {
- // Here we really use the Gender.Female and not our helper IsFemale(pawn)
- if (pawn.gender == Gender.Female)
- return;
- else
- {
- GenderHelper.ChangeSex(pawn, () => {
- pawn.gender = Gender.Female;
- GenitaliaChanger.RemoveAllGenitalia(pawn);
- Sexualizer.sexualize_pawn(pawn);
- });
- GenderUtility.AdjustBodyToTargetGender(pawn, Gender.Female);
- }
- foreach(Gene g in pawn.genes.GenesListForReading)
- {
- if(g.def.defName== "rjw_genes_hydrolic_genitalia")
- {
- g.PostAdd();
- }
- if (g.def.defName == "rjw_genes_bionic_genitalia")
- {
- g.PostAdd();
- return;
- }
- }
- }
-
- public override void Notify_OnPawnGeneration()
- {
- base.Notify_OnPawnGeneration();
- // If this is Pawn generation, then we can assume that the pawn was never any gender other than female, so they shouldn't have sex change thoughts. (Issue #32)
- if (pawn != null)
- GenderUtility.RemoveAllSexChangeThoughts(pawn);
- }
- }
-}
diff --git a/1.6/Source/Genes/Gender/Genes/Gene_GenderFluid.cs b/1.6/Source/Genes/Gender/Genes/Gene_GenderFluid.cs
deleted file mode 100644
index 4f530f6..0000000
--- a/1.6/Source/Genes/Gender/Genes/Gene_GenderFluid.cs
+++ /dev/null
@@ -1,242 +0,0 @@
-using HarmonyLib;
-using RimWorld;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using Verse.AI;
-
-namespace RJW_Genes
-{
-
- /*
- * Once per day (or slightly different per configuration) checks if the pawn changes gender.
- * At the triggered tick, there is a random chance to change gender.
- * This will swap genitalia, appearance and breasts.
- *
- * For some situations, the pawn better not change genitalia, e.g. while having vaginal sex. This would throw errors.
- * For these cases a check is implemented, and if there was a block the change happens a bit later when "unblocked".
- *
- * TODO: Keep pregnancies.
- * The pregnancies remove their things on Tick at the end, which kills it for male pawns.
- * This seems to be an upstream RJW thing, but needs a bit of investigation.
- */
- public class Gene_GenderFluid : RJW_Gene
- {
-
- //public const int CHANGE_INTERVAL_FALLBACK = 1000; // Test value for Quick Trials
- const int CHANGE_INTERVAL_FALLBACK = 60000; // 60k == 1 day
- const float SWITCH_CHANCE_FALLBACK = 0.25f;
-
- int change_interval;
- float switch_chance;
-
- List storedBreasts = new List();
-
- private bool sexChangeWasBlocked = false;
-
- public Gene_GenderFluid() : base() {
- TickBasedChanceExtension tickbasedChanceExt = GeneDefOf.rjw_genes_gender_fluid.GetModExtension();
- change_interval = tickbasedChanceExt?.tickInterval ?? CHANGE_INTERVAL_FALLBACK;
- switch_chance = tickbasedChanceExt?.eventChance ?? SWITCH_CHANCE_FALLBACK;
- }
-
- public override void Tick()
- {
- base.Tick();
-
- // Case 1: We had a blocked SexChange, now Pawn is free, apply sexchange a bit delayed.
- if (pawn.IsHashIntervalTick(1500) && sexChangeWasBlocked && !SexChangeBlocked(pawn)){
- ChangeSex();
- sexChangeWasBlocked = false;
- }
- // Case 2: Check every interval if the Chance triggers
- else if (pawn.IsHashIntervalTick(change_interval) && (new Random()).NextDouble() < switch_chance)
- {
-
- // Case 2.A) SexChange was blocked, postpone it
- if (SexChangeBlocked(pawn))
- {
- sexChangeWasBlocked |= true;
- return;
- }
- // Case 2.B) Nothing blocking, change the sex.
- else { ChangeSex();}
- }
-
- }
-
- private void ChangeSex()
- {
- if (rjw.Genital_Helper.is_futa(pawn))
- {
- // Handle Futa Pawns - Keep Genitalia as is, just change RW Gender
- pawn.gender = pawn.gender == Gender.Male? Gender.Female: Gender.Male;
- }
- // Handle Non-Futas - Change Genitalia and Store breasts.
- else
- {
- if (pawn.gender == Gender.Female)
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug) ModLog.Message($"genderfluid pawn {pawn} is changing from female to male");
- SwitchToMale();
- }
- else if (pawn.gender == Gender.Male)
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug) ModLog.Message($"genderfluid pawn {pawn} is changing from male to female");
- SwitchToFemale();
- }
- }
- GenderUtility.RemoveAllSexChangeThoughts(pawn);
- }
-
- private void SwitchToFemale()
- {
- // Change Drawing
- GenderUtility.AdjustBodyToTargetGender(pawn, Verse.Gender.Female);
- // Change Gender
- pawn.gender = Verse.Gender.Female;
-
- // Switch Penisses to Vaginas
- var genitalsToRemove = pawn.GetGenitalsList().FindAll(g => Genital_Helper.is_penis(g) || Genital_Helper.is_vagina(g));
- foreach (var genital in genitalsToRemove)
- {
- var genitaliaHediffDef = GenitaliaUtility.GetVaginaForGene(GenitaliaUtility.GetGenitaliaTypeGeneForPawn(pawn));
- float size = genital.Severity;
- pawn.health.RemoveHediff(genital);
-
- var newVagina = HediffMaker.MakeHediff(genitaliaHediffDef, pawn, Genital_Helper.get_genitalsBPR(pawn));
- pawn.health.AddHediff(newVagina);
- newVagina.Severity = size;
- }
-
- SwitchBreasts();
- }
-
- private void SwitchToMale()
- {
- // Change Drawing
- GenderUtility.AdjustBodyToTargetGender(pawn, Verse.Gender.Male);
- // Change Gender
- pawn.gender = Verse.Gender.Male;
-
- // Switch Vaginas to Penisses
- var genitalsToRemove = pawn.GetGenitalsList().FindAll(g => Genital_Helper.is_penis(g) || Genital_Helper.is_vagina(g));
- foreach (var genital in genitalsToRemove)
- {
- var genitaliaHediffDef = GenitaliaUtility.GetPenisForGene(GenitaliaUtility.GetGenitaliaTypeGeneForPawn(pawn));
- float size = genital.Severity;
- pawn.health.RemoveHediff(genital);
-
- var newPenis = HediffMaker.MakeHediff(genitaliaHediffDef, pawn, Genital_Helper.get_genitalsBPR(pawn));
- pawn.health.AddHediff(newPenis);
- newPenis.Severity = size;
- }
-
- SwitchBreasts();
-
- }
-
-
- private void SwitchBreasts()
- {
- List current_breasts = pawn.GetBreastList();
-
- // Stored_Breasts can be empty when the pawn first ever switches gender!
- if (storedBreasts.NullOrEmpty())
- {
- foreach (var breasts in current_breasts)
- {
- // Is Male, and does not have the "no breast gene"
- if (pawn.gender == Gender.Male && !GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_no_breasts))
- {
- storedBreasts.Add(CreateNewBreasts());
- }
- else if (pawn.gender == Gender.Female && !GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_featureless_chest) )
- {
- storedBreasts.Add(CreateNewBreasts());
- }
- }
- }
-
-
- foreach (var breast in current_breasts)
- {
- pawn.health.RemoveHediff(breast);
- }
- foreach (var breast in storedBreasts)
- {
- pawn.health.AddHediff(breast);
- }
-
- storedBreasts.Clear();
- storedBreasts.AddRange(current_breasts);
- }
-
-
- internal Hediff CreateNewBreasts()
- {
- var correctGene = GenitaliaUtility.GetGenitaliaTypeGeneForPawn(pawn);
- var breastDef = GenitaliaUtility.GetBreastsForGene(correctGene);
- var partBPR = Genital_Helper.get_breastsBPR(pawn);
- var additional_breasts = HediffMaker.MakeHediff(breastDef, pawn,partBPR);
-
- var CompHediff = additional_breasts.TryGetComp();
- if (CompHediff != null)
- {
- CompHediff.Init(pawn);
- CompHediff.UpdateSeverity();
- }
-
- return additional_breasts;
- }
-
- ///
- /// Checks the pawn if it has any of the vagina-related hediffs (e.g. stretched) and removes them.
- /// Anal Soreness, Stretching etc. remains.
- ///
-
-
-
- ///
- /// There are some actions that block sex change,
- /// being drafted or having sex.
- ///
- /// The pawn that want to sexchange.
- /// False if the SexChange is applicable, True if there needs to be a wait timer.
- internal bool SexChangeBlocked(Pawn pawn)
- {
- // DEVNOTE: This list might extend on new cases, thus the explicit method.
- return pawn == null
- || pawn.health.Dead
- || (pawn.jobs.curDriver is JobDriver_Masturbate)
- || (pawn.jobs.curDriver is JobDriver_Sex)
- || (pawn.jobs.curDriver is JobDriver_SexBaseReciever)
- || (pawn.jobs.curDriver is JobDriver_SexBaseInitiator)
- || (pawn.jobs.curDriver is JobDriver_JoinInBed)
-
- || (pawn.jobs.curDriver is JobDriver_SexQuick)
- || (pawn.jobs.curDriver is JobDriver_SexBaseRecieverQuickie)
-
- || (pawn.jobs.curDriver is JobDriver_Knotted)
- || (pawn.jobs.curDriver is JobDriver_Mate)
- || (pawn.jobs.curDriver is JobDriver_Mating)
- || (pawn.jobs.curDriver is JobDriver_Breeding)
-
- || (pawn.jobs.curDriver is JobDriver_Rape)
- || (pawn.jobs.curDriver is JobDriver_SexBaseRecieverRaped)
- || (pawn.jobs.curDriver is JobDriver_RandomRape)
- || (pawn.jobs.curDriver is JobDriver_RapeComfortPawn)
- || (pawn.jobs.curDriver is JobDriver_RapeEnemy)
- || pawn.jobs.curDriver is JobDriver_Lovin
-
- // This is a heavy check, but this is necessary because sometimes the pawns go somewhere to have sex and then they start despite missing genitalia!
- || (pawn.jobs.curDriver is JobDriver_Goto)
-
- || pawn.Drafted;
- }
- }
-}
diff --git a/1.6/Source/Genes/Gender/Genes/Gene_MaleOnly.cs b/1.6/Source/Genes/Gender/Genes/Gene_MaleOnly.cs
deleted file mode 100644
index b25bfa1..0000000
--- a/1.6/Source/Genes/Gender/Genes/Gene_MaleOnly.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-using Verse;
-using rjw;
-
-
-namespace RJW_Genes
-{
- public class Gene_MaleOnly : RJW_Gene
- {
- public override void PostMake()
- {
- base.PostMake();
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostMake();
- AdjustPawnToMale();
- GenderUtility.RemoveSexChangeThoughtsIfTooYoung(this.pawn);
- }
-
- private void AdjustPawnToMale()
- {
- if (pawn.gender == Gender.Male)
- return;
- else
- {
- GenderHelper.ChangeSex(pawn, () => {
-
- pawn.gender = Gender.Male;
- GenitaliaChanger.RemoveAllGenitalia(pawn);
- Sexualizer.sexualize_pawn(pawn);
- });
- GenderUtility.AdjustBodyToTargetGender(pawn, Gender.Male);
- }
- foreach (Gene g in pawn.genes.GenesListForReading)
- {
- if (g.def.defName == "rjw_genes_hydrolic_genitalia")
- {
- g.PostAdd();
- }
- if (g.def.defName == "rjw_genes_bionic_genitalia")
- {
- g.PostAdd();
- return;
- }
- }
- }
-
- public override void Notify_OnPawnGeneration()
- {
- base.Notify_OnPawnGeneration();
- // If this is Pawn generation, then we can assume that the pawn was never any gender other than male, so they shouldn't have sex change thoughts. (Issue #32)
- if (pawn != null)
- GenderUtility.RemoveAllSexChangeThoughts(pawn);
- }
- }
-}
diff --git a/1.6/Source/Genes/GeneUtility.cs b/1.6/Source/Genes/GeneUtility.cs
deleted file mode 100644
index 30c1128..0000000
--- a/1.6/Source/Genes/GeneUtility.cs
+++ /dev/null
@@ -1,128 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Verse;
-using RimWorld;
-namespace RJW_Genes
-{
- public class GeneUtility
- {
-
- //Split function so I can offsetlifeforce from gene without needing to look for the gene agian (for the constant drain tick)
- public static Gene_LifeForce GetLifeForceGene(Pawn pawn)
- {
- Pawn_GeneTracker genes = pawn.genes;
- Gene_LifeForce gene_LifeForce = genes.GetFirstGeneOfType();
- return gene_LifeForce;
- }
-
- public static void OffsetLifeForce(IGeneResourceDrain drain, float offset)
- {
- if (drain == null || offset == 0.0)
- return;
-
- if (drain.Resource != null && drain.Resource.Active)
- {
- float old_value = drain.Resource.Value;
- drain.Resource.Value += offset;
- PostOffSetLifeForce(drain, old_value);
- }
- }
-
- public static void PostOffSetLifeForce(IGeneResourceDrain drain, float old_value)
- {
-
- if (drain.Resource != null && drain.Resource.Active)
- {
- if (old_value > 0.2f && drain.Resource.Value <= 0.2f)
- {
- //TODO: Mood debuff
- }
- else if (old_value > 0f && drain.Resource.Value <= 0f)
- {
- Pawn pawn = drain.Pawn;
- if (!drain.Pawn.health.hediffSet.HasHediff(HediffDefOf.rjw_genes_fertilin_craving))
- {
- drain.Pawn.health.AddHediff(HediffDefOf.rjw_genes_fertilin_craving);
- }
- }
- }
- }
-
-
- public static bool HasLowLifeForce(Pawn pawn)
- {
- if (HasLifeForce(pawn))
- {
- Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType();
- if (gene == null || !gene.Active)
- return false;
- if (gene.Resource.Value < gene.targetValue)
- {
- return true;
- }
- }
- return false;
- }
-
- public static bool HasCriticalLifeForce(Pawn pawn)
- {
- if (HasLifeForce(pawn))
- {
- Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType();
- if (gene == null || !gene.Active)
- return false;
- if (gene.Resource.Value < gene.MinLevelForAlert)
- {
- return true;
- }
- }
- return false;
- }
-
-
- public static List GetGenitaliaResizingGenes(Pawn pawn)
- {
- var ResizingGenes = new List();
-
- // Error Handling: Issue with Pawn or Genes return empty.
- if (pawn == null || pawn.genes == null)
- return ResizingGenes;
-
- foreach (Gene gene in pawn.genes.GenesListForReading)
- if (gene is Gene_GenitaliaResizingGene resizing_gene)
- ResizingGenes.Add(resizing_gene);
-
- return ResizingGenes;
- }
-
- ///
- /// Unified small check for a pawn if it has a specified Gene.
- /// Handles some errors and returns false as default.
- ///
- /// The pawn for which to look up a gene.
- /// The gene to look up.
- ///
- public static bool HasGeneNullCheck(Pawn pawn, GeneDef genedef)
- {
- if (pawn.genes == null)
- {
- return false;
- }
- return pawn.genes.HasActiveGene(genedef);
- }
-
- public static bool HasLifeForce(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_lifeforce); }
- public static bool IsMechbreeder(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_mechbreeder); }
- public static bool IsYouthFountain(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_youth_fountain); }
- public static bool IsAgeDrainer(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_sex_age_drain); }
- public static bool IsElastic(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_elasticity); }
- public static bool IsGenerousDonor(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_generous_donor); }
- public static bool IsPussyHealer(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_pussyhealing); }
- public static bool IsUnbreakable(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_unbreakable); }
- public static bool HasParalysingKiss(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_paralysingkiss); }
- public static bool HasSeduce(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_seduce); }
- public static bool IsSexualDrainer(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_drainer); }
- public static bool IsCumEater(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_cum_eater); }
-
- }
-}
diff --git a/1.6/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs b/1.6/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs
deleted file mode 100644
index d92e9d1..0000000
--- a/1.6/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Verse;
-using RimWorld;
-using rjw;
-
-namespace RJW_Genes
-{
- public class GenitaliaTypeExtension : DefModExtension
- {
- public HediffDef_SexPart penis;
-
- public HediffDef_SexPart vagina;
-
- public HediffDef_SexPart anus;
-
- public HediffDef_SexPart breasts;
-
- }
-}
diff --git a/1.6/Source/Genes/Genitalia/Gene_GenitaliaType.cs b/1.6/Source/Genes/Genitalia/Gene_GenitaliaType.cs
deleted file mode 100644
index b33a210..0000000
--- a/1.6/Source/Genes/Genitalia/Gene_GenitaliaType.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using rjw;
-
-namespace RJW_Genes
-{
- public class Gene_GenitaliaType : RJW_Gene
- {
- public override void PostMake()
- {
- base.PostMake();
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
- Apply();
- }
-
- public virtual void Apply()
- {
- if (this.Active)
- {
- GenitaliaTypeExtension genitals = def.GetModExtension();
- if (genitals == null && RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- ModLog.Error($"Gene {def} failed to change genitals - Need a modExtension with Class=\"{typeof(GenitaliaTypeExtension).FullName}\".");
- return;
- }
- GenitaliaChanger.ChangeGenitalia(pawn, genitals.penis, genitals.vagina, genitals.anus, genitals.breasts);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Genitalia/GenitaliaChanger.cs b/1.6/Source/Genes/Genitalia/GenitaliaChanger.cs
deleted file mode 100644
index 8440c81..0000000
--- a/1.6/Source/Genes/Genitalia/GenitaliaChanger.cs
+++ /dev/null
@@ -1,119 +0,0 @@
-using rjw;
-using RimWorld;
-using Verse;
-using System.Collections.Generic;
-//using rjw.Modules.Interactions.DefModExtensions;
-
-namespace RJW_Genes
-{
- internal class GenitaliaChanger
- {
-
- ///
- /// This method changes the pawns genitalia to the given types of genitalia.
- /// All genitals will be changed, e.g. pawns with 2 penises (for whatever reason) or is a futa, all genitals will be changed.
- ///
- /// the pawn who's genitals will be changed
- /// the new type of penis
- /// the new type of vagina
- /// the new type of anus
- public static void ChangeGenitalia(Pawn pawn, HediffDef penisReplacement = null, HediffDef vaginaReplacement = null, HediffDef anusReplacement = null , HediffDef breastsReplacement = null)
- {
- var oldParts = Genital_Helper.get_AllPartsHediffList(pawn);
- BodyPartRecord correctBPR;
-
- if (!oldParts.NullOrEmpty())
- {
- Hediff replacementGenital;
- HediffComp_SexPart CompHediff;
-
- foreach (Hediff existingGenital in oldParts)
- {
- if (IsArtificial(existingGenital))
- continue;
- correctBPR = Genital_Helper.get_genitalsBPR(pawn);
-
- replacementGenital = null;
- CompHediff = null;
- if (Genital_Helper.is_penis(existingGenital) && penisReplacement != null && existingGenital.def != penisReplacement)
- replacementGenital = HediffMaker.MakeHediff(penisReplacement, pawn, correctBPR);
-
- if (Genital_Helper.is_vagina(existingGenital) && vaginaReplacement != null && existingGenital.def != vaginaReplacement)
- replacementGenital = HediffMaker.MakeHediff(vaginaReplacement, pawn, correctBPR);
-
- if (IsBreast(existingGenital) && breastsReplacement != null && existingGenital.def != breastsReplacement)
- {
- correctBPR = Genital_Helper.get_breastsBPR(pawn);
- replacementGenital = HediffMaker.MakeHediff(breastsReplacement, pawn, correctBPR);
- }
-
- if (IsAnus(existingGenital) && anusReplacement != null && existingGenital.def != anusReplacement)
- {
- correctBPR = Genital_Helper.get_anusBPR(pawn);
- replacementGenital = HediffMaker.MakeHediff(anusReplacement, pawn, correctBPR);
- }
-
- if (replacementGenital != null)
- {
- CompHediff = replacementGenital.TryGetComp();
- if (CompHediff != null)
- {
- CompHediff.Init(pawn);
- CompHediff.UpdateSeverity();
- }
- GenderHelper.ChangeSex(pawn, () =>
- {
- pawn.health.RemoveHediff(existingGenital);
- pawn.health.AddHediff(replacementGenital, correctBPR);
- });
- }
- }
- }
- else
- {
- Messages.Message("RJW_Genes_GenitalsNotAlterable".Translate(pawn), pawn, MessageTypeDefOf.SilentInput);
- return;
- }
-
- }
-
- public static bool IsAnus(Hediff candidate)
- {
- if (candidate == null || !(candidate is ISexPartHediff)) return false;
- return candidate.def.defName.ToLower().Contains("anus");
- }
-
- private static bool IsBreastFamiliy(GenitalFamily family) => family switch
- {
- GenitalFamily.Breasts => true,
- _ => false
- };
-
-
- public static bool IsBreast(Hediff candidate)
- {
- if (candidate == null || !(candidate is ISexPartHediff)) return false;
- if (candidate.def is not HediffDef_SexPart def) return false;
- return IsBreastFamiliy(def.genitalFamily);
- }
-
- public static bool IsArtificial(Hediff candidate)
- {
- if (candidate == null || !(candidate is ISexPartHediff)) return false;
- return candidate.def.defName.ToLower().Contains("bionic") || candidate.def.defName.ToLower().Contains("archo");
- }
-
- public static void RemoveAllGenitalia(Pawn pawn)
- {
- if (pawn == null) return;
- var parts = Genital_Helper.get_AllPartsHediffList(pawn);
- foreach (var part in parts)
- {
- pawn.health.RemoveHediff(part);
- }
- }
-
-
-
- }
-}
diff --git a/1.6/Source/Genes/Genitalia/GenitaliaUtility.cs b/1.6/Source/Genes/Genitalia/GenitaliaUtility.cs
deleted file mode 100644
index 19942a8..0000000
--- a/1.6/Source/Genes/Genitalia/GenitaliaUtility.cs
+++ /dev/null
@@ -1,154 +0,0 @@
-using RimWorld;
-using Verse;
-using rjw;
-using System;
-
-namespace RJW_Genes
-{
- public class GenitaliaUtility
- {
-
- ///
- /// Returns the first (non) overwritten gene from the rjw_genes genitalia genes.
- /// In case the pawn has none, as default the human one is returned.
- ///
- /// the pawn whom to find genitaliagenes for
- /// The first GeneDef of the pawn related to GenitaliaTypes
- public static GeneDef GetGenitaliaTypeGeneForPawn(Pawn pawn)
- {
- foreach (var gene in pawn.genes.GenesListForReading)
- {
- if (gene is Gene_GenitaliaType)
- if (!gene.Overridden)
- return gene.def;
- }
- return null;
- }
-
-
- public static HediffDef GetPenisForGene(GeneDef gene)
- {
- return gene?.GetModExtension()?.penis ?? Genital_Helper.average_penis;
- }
-
-
- public static HediffDef GetVaginaForGene(GeneDef gene)
- {
- return gene?.GetModExtension()?.vagina ?? Genital_Helper.average_vagina;
- }
-
- public static HediffDef GetAnusForGene(GeneDef gene)
- {
- //TODO: Do I want the default to be generic or average for feline,equine and canine?
- return gene?.GetModExtension()?.anus ?? Genital_Helper.average_anus;
- }
-
- public static HediffDef GetBreastsForGene(GeneDef gene)
- {
- return gene?.GetModExtension()?.breasts ?? Genital_Helper.average_breasts;
- }
-
- public static bool PawnStillNeedsGenitalia(Pawn pawn)
- {
- // There is the issue that the genes fire in a pseudo-random order
- // Hence it can happen that the pawn still needs genitalia
- // I wanted to make a simple lookup, but I think the genes are applied for all humans encountered so it could be huge
- // So the heuristic is to check if the pawn has any of the 3 standard genitalia OR has all genes ticked that says "I don't want genitalia".
- if (pawn == null) return false;
-
- bool pawn_has_any_genitalia =
- Genital_Helper.has_genitals(pawn) || Genital_Helper.has_anus(pawn) || Genital_Helper.has_breasts(pawn);
-
- bool pawn_is_not_supposed_to_have_genitalia =
- pawn.genes.GenesListForReading.Any(x => x.def.defName == "rjw_genes_no_penis");
-
- if (pawn_is_not_supposed_to_have_genitalia)
- return false;
- else
- return !pawn_has_any_genitalia;
-
- }
-
- public static bool IsBreasts(Hediff candidate)
- {
- return candidate.def.defName.ToLower().Contains("breast") || candidate.def.defName.ToLower().Contains("udder");
- }
-
- ///
- /// Returns the biggest penis of a pawn.
- /// In case of a identical severity, the highest body size is returned.
- /// For women, or pawns without a penis, null is returned.
- ///
- ///
- /// The biggest penis of a pawn. Null on women or error.
- public static Hediff GetBiggestPenis(Pawn pawn)
- {
- Hediff best = null;
- var parts = Genital_Helper.get_AllPartsHediffList(pawn);
-
- foreach (var part in parts)
- {
- if (Genital_Helper.is_sex_part(part) && Genital_Helper.is_penis(part))
- {
- if (best == null) best = part;
-
- // On a draw of size, we check the body-size.
- if (part.Severity == best.Severity) {
- var partSize = part.TryGetComp();
- var bestSize = part.TryGetComp();
- if (partSize == null || bestSize == null) { continue; }
-
- best = partSize.originalOwnerSize > bestSize.originalOwnerSize ? part : best;
- } else if (part.Severity > best.Severity) {
- best = part;
- }
- }
- }
-
- return best;
- }
-
- public static float GetBodySizeOfSexPart(Hediff part)
- {
- if (part == null || part.TryGetComp() == null)
- return 0.0f;
- else
- return part.TryGetComp().originalOwnerSize;
- }
-
- ///
- /// Checks whether a pawn needs to have breasts, for genes that add or change breast sizes and numbers.
- /// This was a little oversight noticed in #138.
- ///
- ///
- /// True if the Pawn with his current gender and genes should have breasts. False otherwise.
- public static bool ShouldHaveBreasts(Pawn pawn)
- {
- // if anything is missing, just return True for Women and False for anyone else.
- if (pawn == null || pawn.genes == null)
- return pawn.gender == Gender.Female;
-
- if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_featureless_chest))
- return false;
- if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_no_breasts))
- return false;
-
- if (pawn.gender == Gender.Female)
- {
- if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_femboy))
- return false;
-
- // Default Case: Women do have breasts.
- return true;
- }
- if (pawn.gender == Gender.Male)
- {
- // Default Case: Men do not have Breasts.
- return false;
- }
-
- return false;
- }
- }
-
-}
diff --git a/1.6/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs b/1.6/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs
deleted file mode 100644
index fd1a5f1..0000000
--- a/1.6/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// Parent Gene for Genitalia Resizing. All Resizing genes should inherit for this class.
- /// There is a companion-patch `Patch_ResizingOnAdulthood`.
- ///
- /// This helps with some functions (e.g. "hasGenitaliaResizingGenes(pawn)") but also to fire genitalia resizing later in life for Pawns.
- /// (No Children with huge ding dongs, and I don't want kids with tight anuses I am not that degenerate)
- ///
- ///
- /// There was an Issue (#34) that re-sized the genitalia over multiple birthdays.
- /// Before the addition of `ExposeData`, it lost track whether the resizing was already run,
- /// leading to a change with every birthday over multiple game starts.
- ///
- /// Issue #138 lead to male pawns having breasts, fixed by a "should have breasts" check in the relevant genes.
- ///
- /// There is an ongoing issue with Resizing resitting after the first day (#151) which is likely from up-stream.
- ///
- public abstract class Gene_GenitaliaResizingGene : RJW_Gene
- {
-
- ///
- /// Whether or not the gene was already applied.
- /// If not, it is checked on every birthday and will be applied accordingly.
- ///
- private bool resizingWasApplied = false;
- public bool ResizingWasApplied { get => resizingWasApplied; set => resizingWasApplied = value; }
-
-
- public override void PostMake()
- {
- base.PostMake();
- if (pawn.ageTracker.AgeBiologicalYears >= RJW_Genes_Settings.rjw_genes_resizing_age)
- {
- Resize();
- ResizingWasApplied = true;
- }
- }
-
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- base.PostAdd();
- if (pawn.ageTracker.AgeBiologicalYears >= RJW_Genes_Settings.rjw_genes_resizing_age)
- {
- Resize();
- ResizingWasApplied = true;
- }
- }
-
- public override void ExposeData()
- {
- base.ExposeData();
- Scribe_Values.Look(ref resizingWasApplied, "wasApplied");
- }
-
- ///
- /// Used to resize the pawns genitalia.
- /// All Logic should be put here:
- /// 1. Filters for Gender
- /// 2. Filters for Genitalia Existence
- /// 3. Selection of right Genitalia
- /// 4. Adjustment of Size
- ///
- /// I kept it intentionally broad, so that e.g. the Penis Resize can resize multiple penises and or futas,
- /// while the breast-gene is female only.
- ///
- public abstract void Resize();
-
- public (float,float) GetResizingBounds()
- {
-
- BoundedExtension bounds = def.GetModExtension();
- if (bounds != null )
- return (bounds.minimum,bounds.maximum);
- else
- {
- ModLog.Warning($"Tried to read BoundedExtension for {this.def} but failed - going default values.");
- }
- return (0.0f, 1.0f);
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_BigBreasts.cs b/1.6/Source/Genes/GenitaliaSize/Genes/Gene_BigBreasts.cs
deleted file mode 100644
index e28c2b9..0000000
--- a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_BigBreasts.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using Verse;
-namespace RJW_Genes
-{
- public class Gene_BigBreasts : Gene_GenitaliaResizingGene
- {
- public override void Resize()
- {
- if (GenitaliaUtility.ShouldHaveBreasts(this.pawn))
- {
- var bounds = this.GetResizingBounds();
- SizeAdjuster.AdjustAllBreastSizes(pawn, bounds.Item1, bounds.Item2);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_BigMaleGenitalia.cs b/1.6/Source/Genes/GenitaliaSize/Genes/Gene_BigMaleGenitalia.cs
deleted file mode 100644
index 431fe0b..0000000
--- a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_BigMaleGenitalia.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace RJW_Genes
-{
- public class Gene_BigMaleGenitalia : Gene_GenitaliaResizingGene
- {
- public override void Resize()
- {
- var bounds = this.GetResizingBounds();
- SizeAdjuster.AdjustAllPenisSizes(pawn, bounds.Item1, bounds.Item2);
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_EvergrowingGenitalia.cs b/1.6/Source/Genes/GenitaliaSize/Genes/Gene_EvergrowingGenitalia.cs
deleted file mode 100644
index 4a00846..0000000
--- a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_EvergrowingGenitalia.cs
+++ /dev/null
@@ -1,105 +0,0 @@
-using Verse;
-using RimWorld;
-using rjw;
-using System.Collections.Generic;
-
-namespace RJW_Genes
-{
- public class Gene_EvergrowingGenitalia : RJW_Gene
- {
- const int BASE_TICKS = 60000;
-
- public override void Tick()
- {
- base.Tick();
-
- int interval = ModExtensionHelper.GetTickIntervalFromModExtension(GeneDefOf.rjw_genes_evergrowth, ModExtensionHelper.GetTickIntervalFromModExtension(this.def, BASE_TICKS));
- if (pawn.IsHashIntervalTick(interval)
- && this.pawn.Map != null
- && pawn.ageTracker.AgeBiologicalYears >= RJW_Genes_Settings.rjw_genes_resizing_age)
- {
- GrowPenisses();
- GrowVaginas();
- }
- }
-
- private void GrowPenisses()
- {
- List AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x));
- 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();
- if (CompHediff.baseSize <= 1.00f)
- CompHediff.baseSize += 0.10f;
- else
- {
- if (bodySizeOverride <= 1.0) bodySizeOverride = 1.0f;
- bodySizeOverride += 0.05f;
- }
- CompHediff.UpdateSeverity();
-
- if (bodySizeOverride > 3.0f)
- {
- // Add Mental Hediff
- HandleGenitaliaSizeThoughts(pawn);
- }
-
- // Increase Fluid
- if (CompHediff != null)
- CompHediff.partFluidMultiplier *= 1.05f;
- }
- }
-
- private void GrowVaginas()
- {
- List 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)
- {
- HediffComp_SexPart CompHediff = vagina.TryGetComp();
- if (CompHediff.baseSize <= 1.00f)
- CompHediff.baseSize += 0.10f;
- else
- {
- if (bodySizeOverride <= 1.0) bodySizeOverride = 1.0f;
- bodySizeOverride += 0.05f;
- }
- //CompHediff.ForceSize(CompHediff.Size + 0.05f);
- //CompHediff.originalOwnerSize += 0.05f;
- CompHediff.UpdateSeverity();
-
- if (bodySizeOverride > 3.0f)
- {
- // Add Mental Hediff
- HandleGenitaliaSizeThoughts(pawn);
- }
- // Increase Fluid
- if (CompHediff != null)
- CompHediff.partFluidMultiplier *= 1.025f;
- }
- }
-
- private void HandleGenitaliaSizeThoughts(Pawn pawn)
- {
- Hediff sizeThought = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_evergrowth_sideeffect);
-
- if (sizeThought != null)
- {
- sizeThought.Severity += 0.025f;
- }
- else
- {
- sizeThought = HediffMaker.MakeHediff(HediffDefOf.rjw_genes_evergrowth_sideeffect, pawn);
- sizeThought.Severity = 0.1f;
- pawn.health.AddHediff(sizeThought);
-
- if (!xxx.is_nympho(pawn))
- {
- pawn.story.traits.GainTrait(new Trait(xxx.nymphomaniac));
- }
- }
- }
-
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_LooseAnus.cs b/1.6/Source/Genes/GenitaliaSize/Genes/Gene_LooseAnus.cs
deleted file mode 100644
index ce5fc72..0000000
--- a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_LooseAnus.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Verse;
-
-namespace RJW_Genes
-{
- public class Gene_LooseAnus : Gene_GenitaliaResizingGene
- {
- public override void Resize()
- {
- var bounds = this.GetResizingBounds();
- SizeAdjuster.AdjustAllAnusSizes(pawn, bounds.Item1, bounds.Item2);
- }
- }
-}
diff --git a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_LooseFemaleGenitalia.cs b/1.6/Source/Genes/GenitaliaSize/Genes/Gene_LooseFemaleGenitalia.cs
deleted file mode 100644
index da14708..0000000
--- a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_LooseFemaleGenitalia.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Verse;
-
-namespace RJW_Genes
-{
- public class Gene_LooseFemaleGenitalia : Gene_GenitaliaResizingGene
- {
- public override void Resize()
- {
- var bounds = this.GetResizingBounds();
- SizeAdjuster.AdjustAllVaginaSizes(pawn, bounds.Item1, bounds.Item2);
- }
- }
-}
diff --git a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_SmallBreasts.cs b/1.6/Source/Genes/GenitaliaSize/Genes/Gene_SmallBreasts.cs
deleted file mode 100644
index 1b8087e..0000000
--- a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_SmallBreasts.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Verse;
-
-namespace RJW_Genes
-{
- public class Gene_SmallBreasts : Gene_GenitaliaResizingGene
- {
- public override void Resize()
- {
- if (GenitaliaUtility.ShouldHaveBreasts(this.pawn))
- {
- var bounds = this.GetResizingBounds();
- SizeAdjuster.AdjustAllBreastSizes(pawn, bounds.Item1, bounds.Item2);
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_SmallMaleGenitalia.cs b/1.6/Source/Genes/GenitaliaSize/Genes/Gene_SmallMaleGenitalia.cs
deleted file mode 100644
index 12ecb0e..0000000
--- a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_SmallMaleGenitalia.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace RJW_Genes
-{
- public class Gene_SmallMaleGenitalia : Gene_GenitaliaResizingGene
- {
- public override void Resize()
- {
- var bounds = this.GetResizingBounds();
- SizeAdjuster.AdjustAllPenisSizes(pawn, bounds.Item1, bounds.Item2);
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_TightAnus.cs b/1.6/Source/Genes/GenitaliaSize/Genes/Gene_TightAnus.cs
deleted file mode 100644
index 16e4fad..0000000
--- a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_TightAnus.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace RJW_Genes
-{
- public class Gene_TightAnus : Gene_GenitaliaResizingGene
- {
- public override void Resize()
- {
- var bounds = this.GetResizingBounds();
- SizeAdjuster.AdjustAllAnusSizes(pawn, bounds.Item1, bounds.Item2);
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_TightFemaleGenitalia.cs b/1.6/Source/Genes/GenitaliaSize/Genes/Gene_TightFemaleGenitalia.cs
deleted file mode 100644
index b2775bf..0000000
--- a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_TightFemaleGenitalia.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace RJW_Genes
-{
- public class Gene_TightFemaleGenitalia : Gene_GenitaliaResizingGene
- {
- public override void Resize()
- {
- var bounds = this.GetResizingBounds();
- SizeAdjuster.AdjustAllVaginaSizes(pawn, bounds.Item1, bounds.Item2);
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/GenitaliaSize/Patch_ResizingOnAdulthood.cs b/1.6/Source/Genes/GenitaliaSize/Patch_ResizingOnAdulthood.cs
deleted file mode 100644
index 448c873..0000000
--- a/1.6/Source/Genes/GenitaliaSize/Patch_ResizingOnAdulthood.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using HarmonyLib;
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// This Patch adds behavior to all resizing genes:
- /// At Age RESIZING_MIN_AGE the Pawns Resizing Genes will trigger again, if not already triggered somewhere else.
- /// This is meant to allow kids to grow up without resized genitals, and resize later (Fixing #11).
- ///
- /// See `Gene_GenitaliaResizingGene` for a short summary of Issue #34.
- ///
- [HarmonyPatch(typeof(Pawn_AgeTracker), "BirthdayBiological")]
- public class Patch_ResizingOnAdulthood
- {
-
- static void Postfix(Pawn ___pawn, int birthdayAge)
- {
- if (birthdayAge >= RJW_Genes_Settings.rjw_genes_resizing_age)
- {
- foreach(Gene_GenitaliaResizingGene gene in GeneUtility.GetGenitaliaResizingGenes(___pawn))
- {
- if (!gene.ResizingWasApplied)
- {
- gene.Resize();
- gene.ResizingWasApplied = true;
- }
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/GenitaliaSize/SizeAdjuster.cs b/1.6/Source/Genes/GenitaliaSize/SizeAdjuster.cs
deleted file mode 100644
index 3b259f3..0000000
--- a/1.6/Source/Genes/GenitaliaSize/SizeAdjuster.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-using Verse;
-using rjw;
-using System;
-using System.Collections.Generic;
-
-namespace RJW_Genes
-{
- public class SizeAdjuster
- {
-
- ///
- /// Re-Rolls the sizes for all vaginas of the pawn to be between lower and upper limit.
- ///
- /// The pawn whos vaginas are rerolled
- /// The minimum severity for the vagina
- /// The maximum severity for the vagina
- public static void AdjustAllVaginaSizes(Pawn pawn, float lowerLimit = 0.0f, float upperLimit = 1.0f){
- List AllVaginas = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_vagina(x));
- ResizeAll(AllVaginas, lowerLimit, upperLimit);
- }
-
-
-
- ///
- /// Re-Rolls the sizes for all anus of the pawn to be between lower and upper limit.
- ///
- /// The pawn whos anus are rerolled
- /// The minimum severity for the anus
- /// The maximum severity for the anus
- public static void AdjustAllAnusSizes(Pawn pawn, float lowerLimit = 0.0f, float upperLimit = 1.0f)
- {
- List AllAnus = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => GenitaliaChanger.IsAnus(x));
- ResizeAll(AllAnus, lowerLimit, upperLimit);
- }
-
-
-
- ///
- /// Re-Rolls the sizes for all penis of the pawn to be between lower and upper limit.
- ///
- /// The pawn whos penisses are rerolled
- /// The minimum severity for the vagina
- /// The maximum severity for the vagina
- public static void AdjustAllPenisSizes(Pawn pawn, float lowerLimit = 0.0f, float upperLimit = 1.0f)
- {
- List AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x));
- ResizeAll(AllPenisses, lowerLimit, upperLimit);
- }
-
-
-
- ///
- /// Re-Rolls the sizes for all breasts of the pawn to be between lower and upper limit.
- ///
- /// The pawn whos breasts are rerolled
- /// The minimum severity for the vagina
- /// The maximum severity for the vagina
- public static void AdjustAllBreastSizes(Pawn pawn, float lowerLimit = 0.0f, float upperLimit = 1.0f)
- {
- List AllBreasts = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => x.def.defName.ToLower().Contains("breasts"));
- ResizeAll(AllBreasts,lowerLimit,upperLimit);
- }
-
-
- private static void ResizeAll(IEnumerable toResize,float lowerLimit, float upperLimit)
- {
- foreach (var hediff in toResize)
- {
- if (hediff is ISexPartHediff casted)
- {
- Random rnd = new Random();
- float size = (float)(rnd.NextDouble() * (upperLimit - lowerLimit) + lowerLimit);
-
- casted.GetPartComp().baseSize = size;
- casted.GetPartComp().UpdateSeverity();
- }
- }
- }
- }
-}
-
-
-
diff --git a/1.6/Source/Genes/Life_Force/Abilities/AbilityUtility.cs b/1.6/Source/Genes/Life_Force/Abilities/AbilityUtility.cs
deleted file mode 100644
index 05e3d29..0000000
--- a/1.6/Source/Genes/Life_Force/Abilities/AbilityUtility.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse.Sound;
-using Verse;
-using RimWorld;
-using rjw;
-//using rjw.Modules.Interactions.Helpers;
-//using rjw.Modules.Interactions.Enums;
-
-namespace RJW_Genes
-{
- public class AbilityUtility
- {
- public static void PussyHeal(SexProps props)
- {
- //1.6 Update
- //if (InteractoinHelper.GetWithExtension(props.dictionaryKey).DominantHasFamily(GenitalFamily.Vagina) || InteractionHelper.GetWithExtension(props.dictionaryKey).SubmissiveHasFamily(GenitalFamily.Vagina))
- if (props.sexType == xxx.rjwSextype.Vaginal)
- {
- Pawn pawn = props.pawn;
- Pawn partner = props.partner;
- FloatRange tendQualityRange;
- tendQualityRange.min = 0.4f;
- tendQualityRange.max = 0.8f;
- if (GeneUtility.IsPussyHealer(pawn))
- {
- Heal(partner, tendQualityRange);
- }
- if (GeneUtility.IsPussyHealer(partner))
- {
- Heal(pawn, tendQualityRange);
- }
- }
- }
-
- public static bool Heal(Pawn pawn, FloatRange tendQualityRange)
- {
- bool any_wound_tended = false;
- List hediffs = pawn.health.hediffSet.hediffs;
- for (int i = hediffs.Count - 1; i >= 0; i--)
- {
- if ((hediffs[i] is Hediff_Injury || hediffs[i] is Hediff_MissingPart) && hediffs[i].TendableNow(false))
- {
- hediffs[i].Tended(tendQualityRange.RandomInRange, tendQualityRange.TrueMax, 1);
- any_wound_tended = true;
- }
- }
- return any_wound_tended;
- }
-
- public static float LifeForceCost(Ability ability)
- {
- if (ability.comps != null)
- {
- using (List.Enumerator enumerator = ability.comps.GetEnumerator())
- {
- while (enumerator.MoveNext())
- {
- CompAbilityEffect_LifeForceCost compAbilityEffect_HemogenCost;
- if ((compAbilityEffect_HemogenCost = (enumerator.Current as CompAbilityEffect_LifeForceCost)) != null)
- {
- return compAbilityEffect_HemogenCost.Props.fertilinCost;
- }
- }
- }
- }
- return 0f;
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CasterIsNaked.cs b/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CasterIsNaked.cs
deleted file mode 100644
index aa1d61a..0000000
--- a/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CasterIsNaked.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RimWorld;
-using Verse.AI;
-using rjw;
-
-namespace RJW_Genes
-{
- //Summary//
- //Returns invalid if a pawn is not naked
- //Summary//
- public class CompAbilityEffect_CasterIsNaked : CompAbilityEffect_WithDest
- {
- private new CompProperties_CasterIsNaked Props
- {
- get
- {
- return (CompProperties_CasterIsNaked)this.props;
- }
- }
-
- public override bool GizmoDisabled(out string reason)
- {
- Pawn pawn = this.CasterPawn;
- if (pawn != null)
- {
- //Copied from ThoughtWorker_NudistNude.CurrentStateInternal
- List wornApparel = pawn.apparel.WornApparel;
- for (int i = 0; i < wornApparel.Count; i++)
- {
- Apparel apparel = wornApparel[i];
- if (apparel.def.apparel.countsAsClothingForNudity)
- {
- for (int j = 0; j < apparel.def.apparel.bodyPartGroups.Count; j++)
- {
- if (apparel.def.apparel.bodyPartGroups[j] == BodyPartGroupDefOf.Torso)
- {
- reason = pawn.Name + " is not naked";
- return true;
- }
- if (apparel.def.apparel.bodyPartGroups[j] == BodyPartGroupDefOf.Legs)
- {
- reason = pawn.Name + " is not naked";
- return true;
-
- }
- }
- }
- }
- }
- reason = null;
- return false;
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CockEater.cs b/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CockEater.cs
deleted file mode 100644
index 977c77b..0000000
--- a/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CockEater.cs
+++ /dev/null
@@ -1,121 +0,0 @@
-using Verse;
-using RimWorld;
-using rjw;
-
-namespace RJW_Genes
-{
- ///
- /// The CockEater Ability bites off the first found non-artifical cock of an target pawn.
- /// It will restore {MINIMUM_LIFEFORCE_GAIN} multiplied by up to 2-times the Cock-Size.
- /// Consuming a "towering" cock will give 2*{MINIMUM_LIFEFORCE_GAIN}, resulting in default 0.5f LifeForce.
- /// This number is reduced for consuming animals by Settings.
- ///
- /// Balancing note: With the Cock-Eaters a drain of 0.08 is normal per day. This means 1 average cock should hold for 3-4 days of fertilin-fuel and half a day for an animal.
- ///
- public class CompAbilityEffect_CockEater : CompAbilityEffect
- {
- private new CompProperties_AbilityCockEater Props
- {
- get
- {
- return (CompProperties_AbilityCockEater)this.props;
- }
- }
-
- public const float MINIMUM_LIFEFORCE_GAIN = 0.25f;
-
- public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
- {
- base.Apply(target, dest);
- Pawn CockBiter = this.parent.pawn;
- Pawn CockBittenPawn = target.Pawn;
- if (CockBittenPawn == null)
- {
- return;
- }
- var partBPR = Genital_Helper.get_genitalsBPR(CockBittenPawn);
- var parts = Genital_Helper.get_PartsHediffList(CockBittenPawn, partBPR);
- if (!parts.NullOrEmpty())
- {
- foreach (Hediff part in parts)
- {
- if (GenitaliaChanger.IsArtificial(part))
- continue;
-
- if (Genital_Helper.is_penis(part))
- {
- float gained_lifeforce = MINIMUM_LIFEFORCE_GAIN * (1 + part.Severity);
- if (CockBittenPawn.IsAnimal())
- {
- gained_lifeforce *= RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor;
- }
- // Increase LifeForce for Biter
- GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(CockBiter), gained_lifeforce);
- // Handle Damage for Bitten
- CockBittenPawn.TakeDamage(new DamageInfo(DamageDefOf.Bite, 99999f, 999f, hitPart: Genital_Helper.get_genitalsBPR(CockBittenPawn)));
- //CockBittenPawn.health.RemoveHediff(part);
- CockBittenPawn.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.rjw_genes_cock_eaten, CockBittenPawn, null);
-
- //Only one penis at the time
- break;
- }
- }
- }
- }
-
- ///
- /// For validity, there are a few checks:
- /// 1. Target has Penis
- /// 2. Target is either Colonist / Prisoner
- /// 3. If the Target is an enemy, it must be downed.
- ///
- public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
- {
- Pawn CockBiteTarget = target.Pawn;
- if (CockBiteTarget != null)
- {
- bool CockBiteTargetIsColonistOrPrisoner = CockBiteTarget.Faction == this.parent.pawn.Faction || CockBiteTarget.IsPrisonerOfColony;
- bool CockBiteTargetIsHostile = CockBiteTarget.HostileTo(this.parent.pawn);
- bool CockBiteTargetIsDowned = CockBiteTarget.Downed;
-
- if (!CockBiteTargetIsColonistOrPrisoner && !(CockBiteTargetIsHostile && CockBiteTargetIsDowned))
- {
- if (throwMessages)
- {
- if(CockBiteTargetIsHostile && !CockBiteTargetIsDowned)
- {
- Messages.Message(CockBiteTarget.Name + " is hostile, but not downed.", CockBiteTarget, MessageTypeDefOf.RejectInput, false);
- }
- else if (!CockBiteTargetIsColonistOrPrisoner)
- {
- Messages.Message(CockBiteTarget.Name + " is not a part of the colony or hostile.", CockBiteTarget, MessageTypeDefOf.RejectInput, false);
- }
- }
- return false;
- }
- if (!Genital_Helper.has_penis_fertile(CockBiteTarget))
- {
- if (throwMessages)
- {
- Messages.Message(CockBiteTarget.Name + " has no penis", CockBiteTarget, MessageTypeDefOf.RejectInput, false);
- }
- return false;
- }
- }
- return base.Valid(target, throwMessages);
- }
-
- public override bool GizmoDisabled(out string reason)
- {
- Pawn_GeneTracker genes = this.parent.pawn.genes;
- Gene_LifeForce gene_LifeForce = (genes != null) ? genes.GetFirstGeneOfType() : null;
- if (gene_LifeForce == null)
- {
- reason = "AbilityDisabledNoFertilinGene".Translate(this.parent.pawn);
- return true;
- }
- reason = null;
- return false;
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_LifeForceCost.cs b/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_LifeForceCost.cs
deleted file mode 100644
index 44aec81..0000000
--- a/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_LifeForceCost.cs
+++ /dev/null
@@ -1,107 +0,0 @@
-using Verse;
-using Verse.AI;
-using RimWorld;
-namespace RJW_Genes
-{
- public class CompAbilityEffect_LifeForceCost : CompAbilityEffect
- {
-
- public new CompProperties_AbilityLifeForceCost Props
- {
- get
- {
- return (CompProperties_AbilityLifeForceCost)this.props;
- }
- }
-
- private bool HasEnoughFertilin
- {
- get
- {
- Pawn_GeneTracker genes = this.parent.pawn.genes;
- Gene_LifeForce gene_lifeforce = (genes != null) ? genes.GetFirstGeneOfType < Gene_LifeForce>() : null;
- return gene_lifeforce != null && gene_lifeforce.Value >= this.Props.fertilinCost;
- }
- }
-
- public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
- {
- base.Apply(target, dest);
- GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(this.parent.pawn), -this.Props.fertilinCost);
- }
-
-
- public override bool GizmoDisabled(out string reason)
- {
- Pawn_GeneTracker genes = this.parent.pawn.genes;
- Gene_LifeForce gene_LifeForce = (genes != null) ? genes.GetFirstGeneOfType() : null;
- if (gene_LifeForce == null)
- {
- reason = "AbilityDisabledNoFertilinGene".Translate(this.parent.pawn);
- return true;
- }
- if (gene_LifeForce.Value < this.Props.fertilinCost)
- {
- reason = "AbilityDisabledNoFertilin".Translate(this.parent.pawn);
- return true;
- }
- float num = this.TotalLifeForceCostOfQueuedAbilities();
- float num2 = this.Props.fertilinCost + num;
- if (this.Props.fertilinCost > 1E-45f && num2 > gene_LifeForce.Value)
- {
- reason = "AbilityDisabledNoFertilin".Translate(this.parent.pawn);
- return true;
- }
- reason = null;
- return false;
- }
-
- public override bool AICanTargetNow(LocalTargetInfo target)
- {
- return this.HasEnoughFertilin;
- }
-
- private float TotalLifeForceCostOfQueuedAbilities()
- {
- Pawn_JobTracker jobs = this.parent.pawn.jobs;
- object obj;
- if (jobs == null)
- {
- obj = null;
- }
- else
- {
- Job curJob = jobs.curJob;
- obj = ((curJob != null) ? curJob.verbToUse : null);
- }
- Verb_CastAbility verb_CastAbility = obj as Verb_CastAbility;
- float num;
- if (verb_CastAbility == null)
- {
- num = 0f;
- }
- else
- {
- Ability ability = verb_CastAbility.ability;
- num = ((ability != null) ? AbilityUtility.LifeForceCost(ability) : 0f);
- }
- float num2 = num;
- if (this.parent.pawn.jobs != null)
- {
- for (int i = 0; i < this.parent.pawn.jobs.jobQueue.Count; i++)
- {
- Verb_CastAbility verb_CastAbility2;
- if ((verb_CastAbility2 = (this.parent.pawn.jobs.jobQueue[i].job.verbToUse as Verb_CastAbility)) != null)
- {
- float num3 = num2;
- Ability ability2 = verb_CastAbility2.ability;
- num2 = num3 + ((ability2 != null) ? AbilityUtility.LifeForceCost(ability2) : 0f);
- }
- }
- }
- return num2;
- }
-
-
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_PussyHeal.cs b/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_PussyHeal.cs
deleted file mode 100644
index fdb0c7c..0000000
--- a/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_PussyHeal.cs
+++ /dev/null
@@ -1,95 +0,0 @@
-using System.Collections.Generic;
-using Verse;
-using RimWorld;
-using rjw;
-
-namespace RJW_Genes
-{
- public class CompAbilityEffect_PussyHeal : CompAbilityEffect
- {
- private new CompProperties_AbilityPussyHeal Props
- {
- get
- {
- return (CompProperties_AbilityPussyHeal)this.props;
- }
- }
- public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
- {
- base.Apply(target, dest);
- Pawn pawn = target.Pawn;
- if (pawn == null)
- {
- return;
- }
- bool any_wound_tended = AbilityUtility.Heal(pawn, this.Props.tendQualityRange);
- if (any_wound_tended)
- {
- MoteMaker.ThrowText(pawn.DrawPos, pawn.Map, "Sex tended wounds", 3.65f);
- }
- }
-
- //Not yet implemented, but the heal should also trigger after normal sex
- public void AfterSex(Pawn pawn, Pawn target)
- {
- List hediffs = target.health.hediffSet.hediffs;
- for (int i = 0; i < hediffs.Count; i++)
- {
- if ((hediffs[i] is Hediff_Injury || hediffs[i] is Hediff_MissingPart) && hediffs[i].TendableNow(false))
- {
- //target.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.Pussy_Healed, pawn, null);
- break;
- }
- }
- //InteractionHelper.GetWithExtension(dictionaryKey).DominantHasTag("CanBePenetrated")
-
-
- }
-
- public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
- {
- Pawn pawn = target.Pawn;
- if (pawn != null)
- {
- //to be replaced with severel checks to make it clear why target is unable to have sex
- if (!CasualSex_Helper.CanHaveSex(pawn))
- {
- if (throwMessages)
- {
- Messages.Message(pawn.Name + " is unable to have sex", pawn, MessageTypeDefOf.RejectInput, false);
- }
- return false;
- }
- else if (pawn.IsAnimal() && !RJWSettings.bestiality_enabled)
- {
- if (throwMessages)
- {
- Messages.Message("bestiality is disabled", pawn, MessageTypeDefOf.RejectInput, false);
- }
- return false;
- }
- //TODO: Only make pawns targetable that have tendable wounds
-
- }
- return base.Valid(target, throwMessages);
- }
-
- public override bool GizmoDisabled(out string reason)
- {
- reason = null;
- if (!Genital_Helper.has_vagina(this.parent.pawn))
- {
- reason = this.parent.pawn.Name + " has no vagina to use.";
- return true;
- }
- else if (!RJWSettings.rape_enabled)
- {
- reason = "Rape is disabled";
- return true;
- }
- return false;
- }
-
-
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_Seduce.cs b/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_Seduce.cs
deleted file mode 100644
index b8819a8..0000000
--- a/1.6/Source/Genes/Life_Force/Abilities/CompAbilityEffect_Seduce.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RimWorld;
-using Verse.AI;
-using rjw;
-
-namespace RJW_Genes
-{
- public class CompAbilityEffect_Seduce : CompAbilityEffect_WithDest
- {
- private new CompProperties_Seduce Props
- {
- get
- {
- return (CompProperties_Seduce)this.props;
- }
- }
- public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
- {
- base.Apply(target, dest);
- Pawn pawn = target.Thing as Pawn;
- Pawn pawn2 = this.parent.pawn;
- if (pawn != null && pawn2 != null && !pawn.Downed)
- {
- Job job = JobMaker.MakeJob(JobDefOf.rjw_genes_lifeforce_seduced, pawn2);
- job.mote = MoteMaker.MakeThoughtBubble(pawn, this.parent.def.iconPath, true);
- pawn.jobs.StopAll(false, true);
- pawn.jobs.StartJob(job, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
- }
- }
-
- public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
- {
-
- Pawn pawn = target.Pawn;
- if (pawn != null)
- {
- if (!xxx.can_be_fucked(pawn))
- {
- if (throwMessages)
- {
- Messages.Message(pawn.Name + " is unable to have sex", pawn, MessageTypeDefOf.RejectInput, false);
- }
- return false;
- }
- else if (pawn.IsAnimal() && !RJWSettings.bestiality_enabled)
- {
- if (throwMessages)
- {
- Messages.Message("bestiality is disabled", pawn, MessageTypeDefOf.RejectInput, false);
- }
- return false;
- }
- else if (GeneUtility.HasSeduce(pawn))
- {
- if (throwMessages)
- {
- Messages.Message(pawn.Name + " cannot be seduced, as they also have the Seduce-Ability", pawn, MessageTypeDefOf.RejectInput, false);
- }
- return false;
- }
- else if (pawn.Downed)
- {
- if (throwMessages)
- {
- Messages.Message(pawn.Name + " is unable to move", pawn, MessageTypeDefOf.RejectInput, false);
- }
- return false;
- }
-
- }
- return base.Valid(target, throwMessages);
- }
-
- public override bool GizmoDisabled(out string reason)
- {
- reason = null;
- if (!RJWSettings.rape_enabled)
- {
- reason = "Rape is disabled";
- return true;
- }
- return false;
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Abilities/CompProperties_AbilityCockEater.cs b/1.6/Source/Genes/Life_Force/Abilities/CompProperties_AbilityCockEater.cs
deleted file mode 100644
index b64b346..0000000
--- a/1.6/Source/Genes/Life_Force/Abilities/CompProperties_AbilityCockEater.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-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);
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Abilities/CompProperties_AbilityLifeForceCost.cs b/1.6/Source/Genes/Life_Force/Abilities/CompProperties_AbilityLifeForceCost.cs
deleted file mode 100644
index 5a05d5f..0000000
--- a/1.6/Source/Genes/Life_Force/Abilities/CompProperties_AbilityLifeForceCost.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using System.Collections.Generic;
-using UnityEngine;
-using Verse;
-using RimWorld;
-
-namespace RJW_Genes
-{
- // Token: 0x02000F65 RID: 3941
- public class CompProperties_AbilityLifeForceCost : CompProperties_AbilityEffect
- {
- // Token: 0x06005D16 RID: 23830 RVA: 0x001FA73F File Offset: 0x001F893F
- public CompProperties_AbilityLifeForceCost()
- {
- this.compClass = typeof(CompAbilityEffect_LifeForceCost);
- }
-
- // Token: 0x06005D17 RID: 23831 RVA: 0x001FA757 File Offset: 0x001F8957
- public override IEnumerable ExtraStatSummary()
- {
- yield return "AbilityFertilinCost" + ": " + Mathf.RoundToInt(this.fertilinCost * 100f);
- yield break;
- }
-
- // Token: 0x040038CD RID: 14541
- public float fertilinCost;
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Abilities/CompProperties_AbilityPussyHeal.cs b/1.6/Source/Genes/Life_Force/Abilities/CompProperties_AbilityPussyHeal.cs
deleted file mode 100644
index 16ba74d..0000000
--- a/1.6/Source/Genes/Life_Force/Abilities/CompProperties_AbilityPussyHeal.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-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_AbilityPussyHeal : CompProperties_AbilityEffect
- {
- public CompProperties_AbilityPussyHeal()
- {
- this.compClass = typeof(CompAbilityEffect_PussyHeal);
- }
-
- public FloatRange tendQualityRange;
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Abilities/CompProperties_CasterIsNaked.cs b/1.6/Source/Genes/Life_Force/Abilities/CompProperties_CasterIsNaked.cs
deleted file mode 100644
index 8cb300e..0000000
--- a/1.6/Source/Genes/Life_Force/Abilities/CompProperties_CasterIsNaked.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-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_CasterIsNaked : CompProperties_EffectWithDest
- {
- public CompProperties_CasterIsNaked()
- {
- this.compClass = typeof(CompAbilityEffect_CasterIsNaked);
- }
- }
-}
-
diff --git a/1.6/Source/Genes/Life_Force/Abilities/CompProperties_Seduce.cs b/1.6/Source/Genes/Life_Force/Abilities/CompProperties_Seduce.cs
deleted file mode 100644
index 21e0cde..0000000
--- a/1.6/Source/Genes/Life_Force/Abilities/CompProperties_Seduce.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-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_Seduce : CompProperties_EffectWithDest
- {
- public CompProperties_Seduce()
- {
- this.compClass = typeof(CompAbilityEffect_Seduce);
- }
-
- public StatDef durationMultiplier;
- }
-}
-
diff --git a/1.6/Source/Genes/Life_Force/Defs/LifeForceEmpathExtension.cs b/1.6/Source/Genes/Life_Force/Defs/LifeForceEmpathExtension.cs
deleted file mode 100644
index ccc037b..0000000
--- a/1.6/Source/Genes/Life_Force/Defs/LifeForceEmpathExtension.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class LifeForceEmpathExtension : DefModExtension
- {
- public float aheagoIncrement;
- public float satisfactionIncrement;
- public float frustratedDecrement;
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Events/SuccubusVisit/IncidentWorker_SuccubusVisit.cs b/1.6/Source/Genes/Life_Force/Events/SuccubusVisit/IncidentWorker_SuccubusVisit.cs
deleted file mode 100644
index 21daa1a..0000000
--- a/1.6/Source/Genes/Life_Force/Events/SuccubusVisit/IncidentWorker_SuccubusVisit.cs
+++ /dev/null
@@ -1,137 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using Verse.AI;
-using Verse.AI.Group;
-using RimWorld;
-using rjw;
-using rjw.Modules.Attraction;
-
-namespace RJW_Genes
-{
- public class IncidentWorker_SuccubusDreamVisit : IncidentWorker
- {
- //This incidint will only fire if there is a pawn asleep and sexneed is lower than 0.25
- protected override bool CanFireNowSub(IncidentParms parms)
- {
- if (!base.CanFireNowSub(parms))
- {
- return false;
- }
- Map map = (Map)parms.target;
- if (!map.mapTemperature.SeasonAcceptableFor(ThingDefOf.Human))
- {
- return false;
- }
- if (!RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi && !RJW_Genes_Settings.rjw_genes_sexdemon_visit_succubi)
- {
- return false;
- }
-
- foreach (Pawn pawn in map.mapPawns.FreeColonistsAndPrisonersSpawned)
- {
- if (pawn.jobs.curDriver.asleep && xxx.need_some_sex(pawn) > 1f)
- {
- return true;
- }
- }
- return false;
-
- }
-
- protected override bool TryExecuteWorker(IncidentParms parms)
- {
- Map map = (Map)parms.target;
- List victims = ValidVictims(map).ToList();
- if (victims.NullOrEmpty())
- {
- return false;
- }
- Faction faction;
- if (!this.TryFindFormerFaction(out faction))
- {
- return false;
- }
- int pawn_amount = RJW_Genes_Settings.rjw_genes_sexdemon_visit_groups ? Rand.Range(1, victims.Count) : 1;
- List new_sexdemons = new List();
- for (int i = 0; i < pawn_amount; i++)
- {
- Pawn victim = victims.RandomElement();
- IntVec3 loc = victim.Position;
-
- PawnKindDef pawnKindDef;
- Gender gender;
- if (victim.gender == Gender.Male || !RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi)
- {
-
- }
- if ((Rand.Bool && RJW_Genes_Settings.rjw_genes_sexdemon_visit_succubi) || !RJW_Genes_Settings.rjw_genes_sexdemon_visit_incubi)
- {
- pawnKindDef = PawnKindDef.Named("rjw_genes_succubus");
- gender = Gender.Female;
- }
- else
- {
- pawnKindDef = PawnKindDef.Named("rjw_genes_incubus");
- gender = Gender.Male;
- }
-
- //Spawn succubus at pawn
- Pawn sexdemon = PawnGenerator.GeneratePawn(new PawnGenerationRequest(pawnKindDef, faction, PawnGenerationContext.NonPlayer, -1,
- false, false, false, true, false, 1f, false, true, false, true, true, false, false, false, false, 0f, 0f, null, 1f, null, null,
- null, null, null, null, null, gender, null, null, null, null, false, false, false, false, null, null, null, null, null, 0f,
- DevelopmentalStage.Adult, null, null, null, false));
- sexdemon.SetFaction(null, null);
- GenSpawn.Spawn(sexdemon, loc, map, WipeMode.Vanish);
- List sexdemons = new List { sexdemon };
- new_sexdemons.Add(sexdemon);
-
-
- LordMaker.MakeNewLord(Faction.OfPlayer, this.CreateLordJob(parms, sexdemon, victim), map, sexdemons);
-
- //Make succubus rape victim.
- if (RJWSettings.rape_enabled)
- {
- //follow rjw rules
- if (AttractionUtility.Evaluate(sexdemon, victim) > 0f)
- {
- sexdemon.pather.StopDead();
- sexdemon.jobs.StopAll();
- Job newJob = JobMaker.MakeJob(xxx.RapeRandom, victim);
- sexdemon.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
- }
-
- }
- }
- Find.LetterStack.ReceiveLetter("rjw_genes_sexdemon_visit_incident_label".Translate(), "rjw_genes_sexdemon_visit_incident_description".Translate(), RimWorld.LetterDefOf.PositiveEvent, new_sexdemons, null, null, null, null);
-
- return true;
- }
-
- private IEnumerable ValidVictims(Map map)
- {
- foreach (Pawn pawn in map.mapPawns.FreeColonistsAndPrisonersSpawned)
- {
- if (pawn.jobs.curDriver.asleep && xxx.need_some_sex(pawn) > 1f)
- {
- yield return pawn;
- }
- }
- yield break;
- }
-
- private bool TryFindFormerFaction(out Faction formerFaction)
- {
- //1.6 Fix, Faction now has a min/Max techlevel instead of a set value, setting both to undefined.
- return Find.FactionManager.TryGetRandomNonColonyHumanlikeFaction(out formerFaction, false, true, TechLevel.Undefined, TechLevel.Undefined, false);
- }
-
- protected virtual LordJob_SuccubusVisit CreateLordJob(IncidentParms parms, Pawn succubus, Pawn target)
- {
- return new LordJob_SuccubusVisit(target);
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Life_Force/Events/SuccubusVisit/LordJob_SuccubusVisit.cs b/1.6/Source/Genes/Life_Force/Events/SuccubusVisit/LordJob_SuccubusVisit.cs
deleted file mode 100644
index 887a324..0000000
--- a/1.6/Source/Genes/Life_Force/Events/SuccubusVisit/LordJob_SuccubusVisit.cs
+++ /dev/null
@@ -1,102 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Verse;
-using Verse.AI.Group;
-using RimWorld;
-using rjw;
-namespace RJW_Genes
-{
- //Based on LordJob_VisitColony
- public class LordJob_SuccubusVisit : LordJob
- {
- public LordJob_SuccubusVisit() { }
- public LordJob_SuccubusVisit(Pawn target)
- {
- this.target = target;
- }
-
- //
- //Stategraph has lordtoils which say what a pawn should be doing
- //Transitions say when active lordtoil for pawn should change
- //
- public override StateGraph CreateGraph()
- {
- StateGraph stateGraph = new StateGraph();
-
- //Flirt
- LordToil_Flirt lordToil_Flirt = new LordToil_Flirt(this.target, 7f);
- stateGraph.AddToil(lordToil_Flirt);
- stateGraph.StartingToil = lordToil_Flirt;
-
- //Leave
- LordToil_ExitMapRandom lordToil_ExitMapRandom = new LordToil_ExitMapRandom();
- stateGraph.AddToil(lordToil_ExitMapRandom);
- LordToil_ExitMapAndDefendSelf lordToil_ExitMapAndDefendSelf = new LordToil_ExitMapAndDefendSelf();
- stateGraph.AddToil(lordToil_ExitMapAndDefendSelf);
-
- //Leave after some time
- Transition transition1 = new Transition(lordToil_Flirt, lordToil_ExitMapRandom, false, true);
- int tickLimit;
- if (this.durationTicks != null)
- {
- tickLimit = this.durationTicks.Value;
- }
- else
- {
- tickLimit = Rand.Range(60000, 180000); //~1-3 days
- }
- transition1.AddTrigger(new Trigger_TicksPassed(tickLimit));
- transition1.AddPreAction(new TransitionAction_Custom(new Action(this.SuccubiLeave))); //Join or leave colony
- stateGraph.AddTransition(transition1);
-
- //If they become hostile
- Transition transition3 = new Transition(lordToil_Flirt, lordToil_ExitMapAndDefendSelf, false, true);
- transition3.AddSource(lordToil_ExitMapRandom); //Not sure what this does
- transition3.AddTrigger(new Trigger_BecamePlayerEnemy());
- transition3.AddTrigger(new Trigger_PawnKilled());
- transition3.AddPostAction(new TransitionAction_EndAllJobs());
- stateGraph.AddTransition(transition3, false);
-
- Transition transition4 = new Transition(lordToil_ExitMapRandom, lordToil_ExitMapAndDefendSelf, false, true);
- transition4.AddSource(lordToil_Flirt); //Not sure what this does
- transition4.AddTrigger(new Trigger_PawnHarmed(1f, true, Faction.OfPlayer));
- stateGraph.AddTransition(transition4, false);
-
- return stateGraph;
- }
-
- //add toggleable gizmo to allow playes to have colonists sex the succubus into joining your colony
- //comfort pawn? cooldown?
- public override IEnumerable GetPawnGizmos(Pawn p)
- {
- return base.GetPawnGizmos(p);
- }
-
- public override void ExposeData()
- {
- Scribe_Values.Look(ref this.durationTicks, "durationTicks", null, false);
- Scribe_References.Look(ref this.target, "target", false);
- }
-
- public void SuccubiLeave()
- {
- foreach (Pawn pawn in this.lord.ownedPawns)
- {
- if (colonyJoiners.Contains(pawn))
- {
- RecruitUtility.Recruit(pawn, Faction.OfPlayer);
- Find.LetterStack.ReceiveLetter("rjw_genes_succubus_joins_letter_label".Translate(), string.Format("rjw_genes_succubus_joins_letter_description".Translate(), xxx.get_pawnname(pawn)), RimWorld.LetterDefOf.PositiveEvent, pawn, null, null, null, null);
- }
- else
- {
- Messages.Message("SuccubusLeaving".Translate(xxx.get_pawnname(pawn)), pawn, MessageTypeDefOf.NeutralEvent, true);
- }
- }
-
- }
-
- public Pawn target;
- private int? durationTicks;
- public List colonyJoiners = new List();
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Life_Force/Genes/Gene_LifeForce.cs b/1.6/Source/Genes/Life_Force/Genes/Gene_LifeForce.cs
deleted file mode 100644
index 8cac6b3..0000000
--- a/1.6/Source/Genes/Life_Force/Genes/Gene_LifeForce.cs
+++ /dev/null
@@ -1,140 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using UnityEngine;
-using Verse;
-using RimWorld;
-using rjw;
-
-namespace RJW_Genes
-{
- public class Gene_LifeForce : Gene_Resource, IGeneResourceDrain
- {
- //Gene should only be active if sex is allowed for this pawn
- public override bool Active
- {
- get
- {
- if (this.Overridden)
- {
- return false;
- }
- Pawn pawn = this.pawn;
-
- return ((pawn != null) ? pawn.ageTracker : null) == null ||
- ((float)this.pawn.ageTracker.AgeBiologicalYears >= this.def.minAgeActive);
- }
- }
-
- public override void ExposeData()
- {
- base.ExposeData();
- Scribe_Values.Look(ref this.StoredCumAllowed, "StoredCumAllowed", true, false);
- }
-
- public bool ShouldConsumeLifeForceNow()
- {
- return this.Value < this.targetValue;
- }
-
- //Same as Gene_Hemogen
- public override IEnumerable GetGizmos()
- {
- foreach (Gizmo gizmo in base.GetGizmos())
- {
- yield return gizmo;
- }
- yield break;
- }
-
- //every tick it decreases fertilin value and everyday if fertilin is below alert minimum there a ~50 chance for mental break
- public override void Tick()
- {
- base.Tick();
- if (this.CanOffset && this.Resource != null)
- {
- GeneUtility.OffsetLifeForce(this, -this.ResourceLossPerDay / 60000f);
-
- }
-
- }
-
- public bool StoredCumAllowed = true;
- public Gene_Resource Resource
- {
- get
- {
- return this;
- }
- }
- public Pawn Pawn
- {
- get
- {
- return this.pawn;
- }
- }
- public bool CanOffset
- {
- get
- {
- return this.pawn.Spawned && this.Active;
- }
- }
-
- public float ResourceLossPerDay
- {
- get
- {
- return this.def.resourceLossPerDay;
- }
- }
-
- public string DisplayLabel
- {
- get
- {
- return this.def.resourceLabel;
- }
- }
-
- public override float InitialResourceMax
- {
- get
- {
- return 1f;
- }
- }
-
- public override float MinLevelForAlert
- {
- get
- {
- return 0.2f;
- }
- }
- public override float MaxLevelOffset
- {
- get
- {
- return base.MaxLevelOffset;
- }
- }
- protected override Color BarColor
- {
- get
- {
- return Color.grey;
- }
- }
- protected override Color BarHighlightColor
- {
- get
- {
- return Color.white;
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Genes/Gene_LifeForceDrain.cs b/1.6/Source/Genes/Life_Force/Genes/Gene_LifeForceDrain.cs
deleted file mode 100644
index c50dae5..0000000
--- a/1.6/Source/Genes/Life_Force/Genes/Gene_LifeForceDrain.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-using System;
-using System.Collections.Generic;
-using Verse;
-using RimWorld;
-
-namespace RJW_Genes
-{
- public class Gene_LifeForceDrain : Gene, IGeneResourceDrain
- {
- public Gene_Resource Resource
- {
- get
- {
- if (this.cachedLifeForceGene == null || !this.cachedLifeForceGene.Active)
- {
- this.cachedLifeForceGene = this.pawn.genes.GetFirstGeneOfType();
- }
- return this.cachedLifeForceGene;
- }
- }
-
- public bool CanOffset
- {
- get
- {
- return this.Active && this.Resource != null && this.Resource.Active;
- }
- }
-
- public float ResourceLossPerDay
- {
- get
- {
- return this.def.resourceLossPerDay;
- }
- }
-
- public Pawn Pawn
- {
- get
- {
- return this.pawn;
- }
- }
-
- public string DisplayLabel
- {
- get
- {
- return this.Label + " (" + "Gene".Translate() + ")";
- }
- }
-
- public override void Tick()
- {
- base.Tick();
- if (this.CanOffset && this.Resource != null)
- {
- GeneUtility.OffsetLifeForce(this, -this.ResourceLossPerDay / 60000);
- }
- }
-
- [Unsaved(false)]
- private Gene_LifeForce cachedLifeForceGene;
-
- private const float MinAgeForDrain = 3f;
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Genes/Gene_LifeForce_Empath.cs b/1.6/Source/Genes/Life_Force/Genes/Gene_LifeForce_Empath.cs
deleted file mode 100644
index 2623314..0000000
--- a/1.6/Source/Genes/Life_Force/Genes/Gene_LifeForce_Empath.cs
+++ /dev/null
@@ -1,126 +0,0 @@
-using System.Collections.Generic;
-using Verse;
-using RimWorld;
-
-namespace RJW_Genes
-{
- public class Gene_LifeForce_Empath : Gene
- {
-
- const int EMPATH_DISTANCE_FALLBACK = 25;
- const int TICK_INTERVAL_FALLBACK = 60000 / 48;
-
- const float AHEAGO_FALLBACK = 0.02f, SATISFIED_FALLBACK = 0.01f, FRUSTRATED_FALLBACK = -0.01f;
-
- int empathDistance = 25;
- int tickInterval = 60000 / 48 ; // 60k = 1 day, we want 0.5h which is 1/48th of 1 day.
-
- float aheagoIncrement = 0.02f;
- float satisfiedIncrement = 0.01f;
- float frustratedDecrement = -0.01f;
-
-
- public Gene_LifeForce_Empath() : base()
- {
- SetValuesFromExtension();
- }
-
- private void SetValuesFromExtension()
- {
- LifeForceEmpathExtension empathExt = GeneDefOf.rjw_genes_lifeforce_empath.GetModExtension();
-
- tickInterval = ModExtensionHelper.GetTickIntervalFromModExtension(GeneDefOf.rjw_genes_lifeforce_empath, TICK_INTERVAL_FALLBACK);
- empathDistance = ModExtensionHelper.GetTickIntervalFromModExtension(GeneDefOf.rjw_genes_lifeforce_empath, EMPATH_DISTANCE_FALLBACK);
-
- aheagoIncrement = empathExt?.aheagoIncrement ?? AHEAGO_FALLBACK;
- satisfiedIncrement = empathExt?.satisfactionIncrement ?? SATISFIED_FALLBACK;
- frustratedDecrement = empathExt?.frustratedDecrement ?? FRUSTRATED_FALLBACK;
- }
-
- public override void Tick()
- {
- base.Tick();
- if (this.pawn.IsHashIntervalTick(tickInterval) && this.pawn.Map != null)
- {
- // Small check if LifeForce is present - likely minors were ticking this but not having Life-Force yet (#143)
- if (!GeneUtility.HasLifeForce(this.pawn)) return;
-
- // Check if the pawn is on *a* map. Maybe the reason for (#120)
- if (this.pawn.Map == null) return;
-
- foreach (Pawn pawn in this.AffectedPawns(this.pawn.Position, this.pawn.Map))
- {
- this.FarmLifeForce(pawn);
- }
-
- }
- }
-
- ///
- /// Creates an IEnumerable of all pawns which are closeby and in lineofsight, self and other pawns with lifeforce gene are skipped (to prevent loops).
- ///
- /// The position of the empath on the map
- /// The map the empath is on
- /// A list of all pawns that are close enough for the empath to connect.
- private IEnumerable AffectedPawns(IntVec3 pos, Map map)
- {
- foreach (Pawn pawn in map.mapPawns.AllPawns)
- {
- // Return for trivial errors
- if (pawn == null || this.pawn == null || pawn == this.pawn)
- continue;
- // Check for position-existance
- // 1.6 fix
- //if (pawn.Position == null || pos == null || pawn.Map == null)
- if (pawn.Map == null || !pos.InBounds(pawn.Map) || !pawn.Spawned)
- 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 lifeforce
- if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_lifeforce))
- continue;
-
- // Actual Logic:
- // Pawn qualifies in right distance and needs line of sight.
- if (pos.DistanceTo(pawn.Position) < empathDistance && GenSight.LineOfSight(pos, pawn.Position, pawn.Map))
- {
- yield return pawn;
- }
- }
-
- yield break;
- }
-
- ///
- /// Adjust the empaths lifeforce depending on the farmed pawns sexneed.
- ///
- /// The pawn affecting the empath, increasing or decreasing his lifeforce.
- private void FarmLifeForce(Pawn farmedPawn)
- {
- // Short rename to make rest more obvious.
- Pawn empath = pawn;
-
- if (farmedPawn == null)
- return;
-
- var sexneed = farmedPawn.needs.TryGetNeed();
-
- // Shortwire: do nothing on no sexneed.
- if (sexneed == null)
- return;
-
- if (sexneed.CurLevel >= sexneed.thresh_ahegao())
- GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(empath), aheagoIncrement);
- else if (sexneed.CurLevel >= sexneed.thresh_satisfied())
- GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(empath), satisfiedIncrement);
- else if (sexneed.CurLevel <= sexneed.thresh_frustrated())
- GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(empath), frustratedDecrement);
-
- }
-
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/HediffCompProperties_SeverityFromFertilin.cs b/1.6/Source/Genes/Life_Force/HediffCompProperties_SeverityFromFertilin.cs
deleted file mode 100644
index 558c3e0..0000000
--- a/1.6/Source/Genes/Life_Force/HediffCompProperties_SeverityFromFertilin.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-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 HediffCompProperties_SeverityFromFertilin : HediffCompProperties
- {
- public HediffCompProperties_SeverityFromFertilin()
- {
- this.compClass = typeof(HediffComp_SeverityFromFertilin);
- }
-
- // Token: 0x04001162 RID: 4450
- public float severityPerHourEmpty;
-
- // Token: 0x04001163 RID: 4451
- public float severityPerHourHemogen;
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/HediffComp_SeverityFromFertilin.cs b/1.6/Source/Genes/Life_Force/HediffComp_SeverityFromFertilin.cs
deleted file mode 100644
index eda55b2..0000000
--- a/1.6/Source/Genes/Life_Force/HediffComp_SeverityFromFertilin.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-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 HediffComp_SeverityFromFertilin : HediffComp
- {
- public HediffCompProperties_SeverityFromFertilin Props
- {
- get
- {
- return (HediffCompProperties_SeverityFromFertilin)this.props;
- }
- }
- public override bool CompShouldRemove
- {
- get
- {
- Pawn_GeneTracker genes = base.Pawn.genes;
- return ((genes != null) ? genes.GetFirstGeneOfType() : null) == null;
- }
- }
- private Gene_LifeForce LifeForce
- {
- get
- {
- if (this.cachedLifeForceGene == null)
- {
- this.cachedLifeForceGene = base.Pawn.genes.GetFirstGeneOfType();
- }
- return this.cachedLifeForceGene;
- }
- }
- public override void CompPostTick(ref float severityAdjustment)
- {
- base.CompPostTick(ref severityAdjustment);
- severityAdjustment += ((this.LifeForce.Value > 0f) ? this.Props.severityPerHourHemogen : this.Props.severityPerHourEmpty) / 2500f;
- this.MentalBreak();
- }
-
- public void MentalBreak()
- {
- if (cachedLifeForceGene.Resource.Value <= cachedLifeForceGene.Resource.MinLevelForAlert && this.Pawn.IsHashIntervalTick(2500) && Rand.Chance(0.03f)) //~50% chance each day for mental break
- {
- if (this.Pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_cum_eater)
- || this.Pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_fertilin_absorber) || this.Pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_drainer))
- {
- //TODO: use mentalstatedef instead of mentalbreakdef
- MentalBreakDef randomrape = GeneDefOf.rjw_genes_lifeforce_randomrape;
- if (ModsConfig.BiotechActive &&
- this.Pawn.Spawned && !this.Pawn.InMentalState && !this.Pawn.Downed &&
- randomrape.Worker.BreakCanOccur(this.Pawn))
- {
- randomrape.Worker.TryStart(this.Pawn, "MentalBreakNoFertilin".Translate(), false);
- }
- }
- }
- }
-
- private Gene_LifeForce cachedLifeForceGene;
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs b/1.6/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs
deleted file mode 100644
index feae482..0000000
--- a/1.6/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using RimWorld;
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// This class checks for pawns with LifeForce and Cumeater Gene to add Fertilin when eating cum (the Item from RJW-Sexperience).
- ///
- public class IngestionOutcomeDoer_LifeForceOffset : IngestionOutcomeDoer
- {
- public const float DEFAULT_FERTILIN_PER_UNIT = 1f;
- public float FertilinPerUnit = 1f;
-
- protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested, int ingestedCount)
- {
- if (GeneUtility.HasLifeForce(pawn) && GeneUtility.IsCumEater(pawn))
- {
- float num = ingestedCount * this.FertilinPerUnit / 100;
- GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(pawn), num);
- }
- }
-
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Interactions/SuccubusTailjob/DomSuccubusTailCustomRequirementHandler.cs b/1.6/Source/Genes/Life_Force/Interactions/SuccubusTailjob/DomSuccubusTailCustomRequirementHandler.cs
deleted file mode 100644
index e619be9..0000000
--- a/1.6/Source/Genes/Life_Force/Interactions/SuccubusTailjob/DomSuccubusTailCustomRequirementHandler.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RimWorld;
-using rjw.Modules.Interactions;
-//using rjw.Modules.Interactions.Internals.Implementation;
-//using rjw.Modules.Interactions.Objects;
-using rjw;
-//using rjw.Modules.Interactions.Enums;
-
-
-//Modefied code based of RJW-AI code at https://gitgud.io/Ed86/rjw-ia/-/tree/master/
-namespace RJW_Genes
-{
- [StaticConstructorOnStartup]
- public class DomSuccubusTailCustomRequirementHandler : ICustomRequirementHandler
- {
- public string HandlerKey
- {
- get
- {
- return "DomSuccubusTailCustomRequirementHandler";
- }
- }
-
-
- static DomSuccubusTailCustomRequirementHandler()
- {
- Register();
- }
- public static void Register()
- {
- InteractionRequirementService.CustomRequirementHandlers.Add(new DomSuccubusTailCustomRequirementHandler());
- if (Prefs.DevMode)
- {
- Log.Message("DomSuccubusTailCustomRequirementHandler registered: ");
- }
- }
-
- public bool FufillRequirements(InteractionWithExtension interaction, InteractionPawn dominant, InteractionPawn submissive)
- {
- if (GeneUtility.HasGeneNullCheck(dominant.Pawn, GeneDefOf.rjw_genes_succubus_tail))
- {
- return true;
- }
- return false;
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Life_Force/Interactions/SuccubusTailjob/GenesPartKindUsageRule.cs b/1.6/Source/Genes/Life_Force/Interactions/SuccubusTailjob/GenesPartKindUsageRule.cs
deleted file mode 100644
index 04d8398..0000000
--- a/1.6/Source/Genes/Life_Force/Interactions/SuccubusTailjob/GenesPartKindUsageRule.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System;
-using System.Collections.Generic;
-using rjw;
-//using rjw.Modules.Interactions.Contexts;
-//using rjw.Modules.Interactions.Enums;
-//using rjw.Modules.Interactions.Rules.PartKindUsageRules;
-using rjw.Modules.Shared;
-using Verse;
-
-namespace RJW_Genes.Interactions
-{
- //Summary//
- //Set custom preferences for pawn. Gets integrated into rjw by AddtoIPartPreferenceRule in First
- //Depending on the level of lifeforce increase the chance for using the mouth.
- public class GenesPartKindUsageRule : IPartPreferenceRule
- {
- public IEnumerable> ModifiersForDominant(InteractionContext context)
- {
- Pawn pawn = context.Internals.Dominant.Pawn;
- Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType();
- if (gene != null)
- {
- float weight = 2f;
- if (gene.Value < gene.MinLevelForAlert)
- {
- weight *= 10;
- }
- else if (gene.Value < gene.targetValue)
- {
- weight *= 2.5f;
- }
- if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_cum_eater))
- {
- yield return new Weighted(weight, LewdablePartKind.Mouth);
- yield return new Weighted(weight, LewdablePartKind.Beak);
- }
-
- if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_fertilin_absorber))
- {
- yield return new Weighted(weight, LewdablePartKind.Vagina);
- yield return new Weighted(weight, LewdablePartKind.Anus);
- }
- }
- yield break;
- }
-
- public IEnumerable> ModifiersForSubmissive(InteractionContext context)
- {
- Pawn pawn = context.Internals.Dominant.Pawn;
- Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType();
- if (gene != null)
- {
- float weight = 2f;
- if (gene.Value < gene.MinLevelForAlert)
- {
- weight *= 10;
- }
- else if (gene.Value < gene.targetValue)
- {
- weight *= 2.5f;
- }
- yield return new Weighted(weight, LewdablePartKind.Mouth);
- yield return new Weighted(weight, LewdablePartKind.Beak);
-
- if (pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_fertilin_absorber))
- {
- yield return new Weighted(weight, LewdablePartKind.Vagina);
- yield return new Weighted(weight, LewdablePartKind.Anus);
- }
- }
- yield break;
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Life_Force/Interactions/SuccubusTailjob/SubSuccubusTailCustomRequirementHandler.cs b/1.6/Source/Genes/Life_Force/Interactions/SuccubusTailjob/SubSuccubusTailCustomRequirementHandler.cs
deleted file mode 100644
index 04d7657..0000000
--- a/1.6/Source/Genes/Life_Force/Interactions/SuccubusTailjob/SubSuccubusTailCustomRequirementHandler.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using Verse;
-using rjw.Modules.Interactions;
-using rjw.Modules.Interactions.Internals.Implementation;
-using rjw.Modules.Interactions.Objects;
-
-//Modified code based of RJW-AI code at https://gitgud.io/Ed86/rjw-ia/-/tree/master/
-namespace RJW_Genes
-{
- [StaticConstructorOnStartup]
- public class SubSuccubusTailCustomRequirementHandler : ICustomRequirementHandler
- {
- public string HandlerKey
- {
- get
- {
- return "SubSuccubusTailCustomRequirementHandler";
- }
- }
-
- static SubSuccubusTailCustomRequirementHandler()
- {
- Register();
- }
- public static void Register()
- {
- InteractionRequirementService.CustomRequirementHandlers.Add(new SubSuccubusTailCustomRequirementHandler());
- if (Prefs.DevMode)
- {
- Log.Message("SubSuccubusTailCustomRequirementHandler registered: ");
- }
- }
-
- public bool FufillRequirements(InteractionWithExtension interaction, InteractionPawn dominant, InteractionPawn submissive)
- {
- if (GeneUtility.HasGeneNullCheck(submissive.Pawn, GeneDefOf.rjw_genes_succubus_tail))
- {
- return true;
- }
- return false;
- }
- }
-}
-
diff --git a/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_CastAbilityAfterSex.cs b/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_CastAbilityAfterSex.cs
deleted file mode 100644
index 892fdc2..0000000
--- a/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_CastAbilityAfterSex.cs
+++ /dev/null
@@ -1,95 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using RimWorld;
-using Verse;
-using Verse.AI;
-using rjw;
-
-namespace RJW_Genes
-{
- public class JobDriver_CastAbilityAfterSex : JobDriver_SexBaseInitiator
- {
- //Summary//
- //Similar to jobdriver rape, but it cast an ability after sex and tries to limit what kind of sexinteractions are allowed.
- protected override IEnumerable MakeNewToils()
- {
- base.setup_ticks();
- //this.FailOnDespawnedOrNull(TargetIndex.A);
- //this.FailOnCannotTouch(TargetIndex.B, PathEndMode.OnCell);
- this.FailOnDespawnedNullOrForbidden(this.iTarget);
- //this.FailOn(() => !target.health.capacities.CanBeAwake);
- JobDef PartnerJob = xxx.gettin_raped;
- yield return Toils_Goto.Goto(TargetIndex.A, PathEndMode.OnCell);
- yield return new Toil
- {
- defaultCompleteMode = ToilCompleteMode.Instant,
- socialMode = RandomSocialMode.Off,
- initAction = delegate ()
- {
- Job newJob = JobMaker.MakeJob(PartnerJob, this.pawn, this.Partner);
- this.Partner.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
- }
- };
- Toil toil = new Toil();
- toil.defaultCompleteMode = ToilCompleteMode.Never;
- toil.socialMode = RandomSocialMode.Off;
- toil.defaultDuration = this.duration;
- toil.handlingFacing = true;
- toil.FailOn(() => this.Partner.CurJob.def != PartnerJob);
- toil.initAction = delegate ()
- {
- this.Partner.pather.StopDead();
- this.Partner.jobs.curDriver.asleep = false;
-
- //Tries to find CompProperties_SexInteractionRequirements and if it finds it it will try and generate sexprops based on the sexpropsrequirements.
- // TODO
- //1.6
- //Disabling thes checks on pussy-heal job checks, need to rewrite for new SexInteraction system.
-/*
- foreach (AbilityComp comp in this.job.ability.comps)
- {
- if (comp.props is CompProperties_SexInteractionRequirements)
- {
- CompProperties_SexInteractionRequirements sexpropsreq = comp.props as CompProperties_SexInteractionRequirements;
- this.Sexprops = CustomSexInteraction_Helper.GenerateSexProps(this.pawn, this.Partner, sexpropsreq);
- }
- }
-*/
- this.Start();
- this.Sexprops.usedCondom = (CondomUtility.TryUseCondom(this.pawn) || CondomUtility.TryUseCondom(this.Partner));
- };
- toil.AddPreTickAction(delegate
- {
- if (this.pawn.IsHashIntervalTick(this.ticks_between_hearts))
- {
- this.ThrowMetaIconF(this.pawn.Position, this.pawn.Map, FleckDefOf.Heart);
- }
- this.SexTick(this.pawn, this.Partner, true, true);
- SexUtility.reduce_rest(this.Partner, 1f);
- SexUtility.reduce_rest(this.pawn, 1f);
- if (this.ticks_left <= 0)
- {
- this.ReadyForNextToil();
- }
- });
- toil.AddFinishAction(delegate
- {
- this.End();
- });
- yield return toil;
- yield return new Toil
- {
- initAction = delegate ()
- {
- SexUtility.ProcessSex(this.Sexprops);
- },
- defaultCompleteMode = ToilCompleteMode.Instant
- };
- yield return Toils_Combat.CastVerb(TargetIndex.A, TargetIndex.B, false);
- yield break;
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_Flirt.cs b/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_Flirt.cs
deleted file mode 100644
index 337a9b2..0000000
--- a/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_Flirt.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using Verse.AI;
-using RimWorld;
-using rjw;
-namespace RJW_Genes
-{
- public class JobDriver_Flirt : JobDriver
- {
- private Pawn Target
- {
- get
- {
- return (Pawn)((Thing)this.pawn.CurJob.GetTarget(TargetIndex.A));
- }
- }
- public override bool TryMakePreToilReservations(bool errorOnFailed)
- {
- return true;
- }
-
- //Some wait toils to induce delay
- protected override IEnumerable MakeNewToils()
- {
- this.FailOnDespawnedOrNull(TargetIndex.A);
- yield return Toils_Interpersonal.GotoInteractablePosition(TargetIndex.A);
- yield return Toils_General.Wait(300, TargetIndex.A);
- yield return Toils_Interpersonal.WaitToBeAbleToInteract(this.pawn);
- Toil toil = Toils_Interpersonal.GotoInteractablePosition(TargetIndex.A);
- toil.socialMode = RandomSocialMode.Off;
- yield return toil;
- yield return this.InteractToil();
- Toil toil1 = Toils_General.Wait(300, TargetIndex.A);
- toil1.socialMode = RandomSocialMode.Off;
- yield return toil1;
- yield break;
- }
- private Toil InteractToil()
- {
- return Toils_General.Do(delegate
- {
- if (this.pawn.interactions.TryInteractWith(this.Target, ThoughtDefOf.rjw_genes_flirt))
- {
- Need_Sex need_Sex = this.Target.needs.TryGetNeed();
- need_Sex.CurLevel += -0.01f;
- }
- });
- }
-
- private const TargetIndex TargetInd = TargetIndex.A;
- }
-}
-
diff --git a/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_Seduced.cs b/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_Seduced.cs
deleted file mode 100644
index 9bca065..0000000
--- a/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_Seduced.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using RimWorld;
-using Verse;
-using Verse.AI;
-using rjw;
-//using rjw.Modules.Interactions.Enums;
-//using rjw.Modules.Interactions.Helpers;
-//using rjw.Modules.Interactions.Objects;
-//using rjw.Modules.Interactions.Contexts;
-//using rjw.Modules.Interactions.Implementation;
-
-namespace RJW_Genes
-{
- public class JobDriver_Seduced : JobDriver
- {
- //Summary//
- //Makes a pawn move to seducing pawn and then tries to rape them.
- protected override IEnumerable MakeNewToils()
- {
-
- this.FailOnDespawnedNullOrForbidden(TargetIndex.A);
- this.FailOn(() => !this.pawn.CanReserve(TargetA, xxx.max_rapists_per_prisoner, 0, null, false));
- this.FailOn(() => this.pawn.IsFighting());
- this.FailOn(() => this.pawn.Drafted);
-
- Pawn partner = this.job.GetTarget(TargetIndex.A).Pawn;
- yield return Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.Touch);
- yield return new Toil
- {
- defaultCompleteMode = ToilCompleteMode.Instant,
- socialMode = RandomSocialMode.Off,
- initAction = delegate ()
- {
- if(partner != null)
- {
- partner.drafter.Drafted = false;
- this.pawn.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.rjw_genes_seduced, partner, null);
- Job newJob = JobMaker.MakeJob(JobDefOf.sex_on_spot, pawn);
- partner.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
- }
- }
- };
- yield break;
- }
-
- public override bool TryMakePreToilReservations(bool errorOnFailed)
- {
- return this.pawn.Reserve(TargetA, this.job, xxx.max_rapists_per_prisoner, 0, null, errorOnFailed);
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpot.cs b/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpot.cs
deleted file mode 100644
index 905efbb..0000000
--- a/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpot.cs
+++ /dev/null
@@ -1,108 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using RimWorld;
-using Verse;
-using Verse.AI;
-using rjw;
-//using rjw.Modules.Interactions.Enums;
-//using rjw.Modules.Interactions.Helpers;
-//using rjw.Modules.Interactions.Objects;
-//using rjw.Modules.Interactions.Contexts;
-//using rjw.Modules.Interactions.Implementation;
-
-namespace RJW_Genes
-{
- public class JobDriver_SexOnSpot : JobDriver_SexBaseInitiator
- {
- protected override IEnumerable MakeNewToils()
- {
- if (RJWSettings.DebugRape)
- {
- ModLog.Message(base.GetType().ToString() + "::MakeNewToils() called");
- }
- base.setup_ticks();
- JobDef PartnerJob = JobDefOf.sex_on_spot_reciever;
- this.FailOnDespawnedNullOrForbidden(this.iTarget);
- this.FailOn(() => !this.pawn.CanReserve(this.Partner, xxx.max_rapists_per_prisoner, 0, null, false));
- this.FailOn(() => this.pawn.IsFighting());
- this.FailOn(() => this.Partner.IsFighting());
- this.FailOn(() => this.pawn.Drafted);
- yield return Toils_Goto.GotoThing(this.iTarget, PathEndMode.Touch);
- if (this.pawn.HostileTo(this.Partner))
- {
- Partner.health.AddHediff(xxx.submitting);
- }
- yield return Toils_Goto.GotoThing(this.iTarget, PathEndMode.OnCell);
- //Give thought malus to partner (I was seduced into having sex against my will)
- yield return new Toil
- {
- defaultCompleteMode = ToilCompleteMode.Instant,
- socialMode = RandomSocialMode.Off,
- initAction = delegate ()
- {
- if (!(this.Partner.jobs.curDriver is JobDriver_SexOnSpotReciever))
- {
- Job newJob = JobMaker.MakeJob(PartnerJob, this.pawn);
- Building_Bed building_Bed = null;
- if (this.Partner.GetPosture() == PawnPosture.LayingInBed)
- {
- building_Bed = this.Partner.CurrentBed();
- }
- this.Partner.jobs.StartJob(newJob, JobCondition.InterruptForced, null, false, true, null, null, false, false, null, false, true);
- if (building_Bed != null)
- {
- JobDriver_SexOnSpotReciever jobDriver_SexOnSpotReciever = this.Partner.jobs.curDriver as JobDriver_SexOnSpotReciever;
- if (jobDriver_SexOnSpotReciever == null)
- {
- return;
- }
- jobDriver_SexOnSpotReciever.Set_bed(building_Bed);
- }
- }
- }
- };
- Toil toil = new Toil();
- toil.defaultCompleteMode = ToilCompleteMode.Never;
- toil.defaultDuration = this.duration;
- toil.handlingFacing = true;
- toil.FailOn(() => this.Partner.CurJob.def != PartnerJob);
- toil.initAction = delegate ()
- {
- this.Partner.pather.StopDead();
- this.Partner.jobs.curDriver.asleep = false;
- this.Start();
- };
- toil.tickAction = delegate ()
- {
- if (this.pawn.IsHashIntervalTick(this.ticks_between_hearts))
- {
- this.ThrowMetaIconF(this.pawn.Position, this.pawn.Map, FleckDefOf.Heart);
- }
- this.SexTick(this.pawn, this.Partner, true, true);
- SexUtility.reduce_rest(this.Partner, 1f);
- SexUtility.reduce_rest(this.pawn, 2f);
- if (this.ticks_left <= 0)
- {
- this.ReadyForNextToil();
- }
- };
- toil.AddFinishAction(delegate
- {
- this.End();
- });
- yield return toil;
- yield return new Toil
- {
- initAction = delegate ()
- {
- SexUtility.ProcessSex(this.Sexprops);
- },
- defaultCompleteMode = ToilCompleteMode.Instant
- };
- yield break;
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpotReceiver.cs b/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpotReceiver.cs
deleted file mode 100644
index 77429d6..0000000
--- a/1.6/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpotReceiver.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using RimWorld;
-using Verse;
-using Verse.AI;
-using rjw;
-//using rjw.Modules.Interactions.Enums;
-//using rjw.Modules.Interactions.Helpers;
-//using rjw.Modules.Interactions.Objects;
-//using rjw.Modules.Interactions.Contexts;
-//using rjw.Modules.Interactions.Implementation;
-
-namespace RJW_Genes
-{
- //Modified JobDriver_SexBaseRecieverLoved from rjw
- public class JobDriver_SexOnSpotReciever : JobDriver_SexBaseReciever
- {
- protected override IEnumerable MakeNewToils()
- {
- base.setup_ticks();
- this.parteners.Add(base.Partner);
- if (this.pawn.relations.OpinionOf(base.Partner) < 0)
- {
- this.ticks_between_hearts += 50;
- }
- else if (this.pawn.relations.OpinionOf(base.Partner) > 60)
- {
- this.ticks_between_hearts -= 25;
- }
- this.FailOnDespawnedOrNull(this.iTarget);
- this.FailOn(() => !base.Partner.health.capacities.CanBeAwake);
- this.FailOn(() => this.pawn.Drafted);
- this.FailOn(() => base.Partner.Drafted);
- yield return Toils_Reserve.Reserve(this.iTarget, 1, 0, null);
- Toil toil2 = this.MakeSexToil();
- toil2.handlingFacing = false;
- yield return toil2;
- yield break;
- }
-
- private Toil MakeSexToil()
- {
- Toil toil = new Toil();
- toil.defaultCompleteMode = ToilCompleteMode.Never;
- toil.socialMode = RandomSocialMode.Off;
- toil.handlingFacing = true;
- toil.tickAction = delegate ()
- {
- if (this.pawn.IsHashIntervalTick(this.ticks_between_hearts))
- {
- base.ThrowMetaIconF(this.pawn.Position, this.pawn.Map, FleckDefOf.Heart);
- }
- };
- toil.AddEndCondition(delegate
- {
- if (this.parteners.Count <= 0)
- {
- return JobCondition.Succeeded;
- }
- return JobCondition.Ongoing;
- });
- toil.AddFinishAction(delegate
- {
-
- GlobalTextureAtlasManager.TryMarkPawnFrameSetDirty(this.pawn);
- Hediff submitting = this.pawn.health.hediffSet.GetFirstHediffOfDef(xxx.submitting);
- if (submitting != null)
- {
- this.pawn.health.RemoveHediff(submitting);
- this.pawn.stances.stunner.StunFor(60, this.pawn, true, true);
- }
- });
- toil.socialMode = RandomSocialMode.Off;
- return toil;
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_Flirt.cs b/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_Flirt.cs
deleted file mode 100644
index a629e0e..0000000
--- a/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_Flirt.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using Verse.AI;
-using RimWorld;
-namespace RJW_Genes
-{
- public class JobGiver_Flirt : ThinkNode_JobGiver
- {
- // Token: 0x0600405A RID: 16474 RVA: 0x0017271C File Offset: 0x0017091C
- protected override Job TryGiveJob(Pawn pawn)
- {
- Pawn target = pawn.mindState.duty.focus.Pawn;
- if (pawn.CanReach(target, PathEndMode.InteractionCell, Danger.Deadly) && !target.jobs.curDriver.asleep)
- {
- return JobMaker.MakeJob(JobDefOf.rjw_genes_flirt, target);
- }
- return null;
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_GetLifeForce.cs b/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_GetLifeForce.cs
deleted file mode 100644
index e4b273b..0000000
--- a/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_GetLifeForce.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using UnityEngine;
-using Verse;
-using Verse.AI;
-using RimWorld;
-using rjw;
-
-namespace RJW_Genes
-{
- public class JobGiver_GetLifeForce : ThinkNode_JobGiver
- {
- protected override Job TryGiveJob(Pawn pawn)
- {
- Pawn_GeneTracker genes = pawn.genes;
- Gene_LifeForce gene_lifeforce = (genes != null) ? genes.GetFirstGeneOfType() : null;
- if (gene_lifeforce == null)
- {
- return null;
- }
- if (!gene_lifeforce.ShouldConsumeLifeForceNow())
- {
- return null;
- }
-
- if (ModsConfig.IsActive("vegapnk.cumpilation") && gene_lifeforce.StoredCumAllowed && genes.HasActiveGene(GeneDefOf.rjw_genes_cum_eater))
- {
- Thing gatheredCum = this.GetStoredCum(pawn);
- if (gatheredCum == null)
- {
- return null;
- }
- IngestionOutcomeDoer_LifeForceOffset ingestionOutcomeDoer = (IngestionOutcomeDoer_LifeForceOffset)gatheredCum.def.ingestible.outcomeDoers.First((IngestionOutcomeDoer x) => x is IngestionOutcomeDoer_LifeForceOffset);
- if (ingestionOutcomeDoer == null)
- {
- return null;
- }
- int num = Mathf.RoundToInt(((gene_lifeforce.targetValue - gene_lifeforce.Value) * 100 + 10) / IngestionOutcomeDoer_LifeForceOffset.DEFAULT_FERTILIN_PER_UNIT);
- if (gatheredCum != null && num > 0)
- {
- Job job = JobMaker.MakeJob(RimWorld.JobDefOf.Ingest, gatheredCum);
- job.count = Mathf.Min(gatheredCum.stackCount, num);
- job.ingestTotalCount = true;
- return job;
- }
- }
- return null;
- }
-
- //From JobGiver_GetHemogen, dont know exactly what this influences
- public override float GetPriority(Pawn pawn)
- {
- if (!ModsConfig.BiotechActive)
- {
- return 0f;
- }
- Pawn_GeneTracker genes = pawn.genes;
- if (((genes != null) ? genes.GetFirstGeneOfType() : null) == null)
- {
- return 0f;
- }
- return 9.1f;
- }
-
-
- ///
- /// Function is intentionaly left blank, and populated using the CumpilationPatcher external DLL.
- ///
- ///
- ///
- public Thing GetStoredCum(Pawn pawn)
- {
- return null;
- /*
- Thing carriedThing = pawn.carryTracker.CarriedThing;
- ThingDef cumThingDef = Cumpilation.DefOfs.Cumpilation_Cum;
-
- if (cumThingDef == null) { return null; }
-
- if (carriedThing != null && carriedThing.def == cumThingDef)
- {
- return carriedThing;
- }
- for (int i = 0; i < pawn.inventory.innerContainer.Count; i++)
- {
- if (pawn.inventory.innerContainer[i].def == cumThingDef)
- {
- return pawn.inventory.innerContainer[i];
- }
- }
- return GenClosest.ClosestThing_Global_Reachable(pawn.Position, pawn.Map, pawn.Map.listerThings.ThingsOfDef(cumThingDef), PathEndMode.OnCell, TraverseParms.For(pawn, Danger.Deadly, TraverseMode.ByPawn, false, false, false), 9999f, (Thing t) => pawn.CanReserve(t, 1, -1, null, false) && !t.IsForbidden(pawn), null);
- */
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_LifeForce_RandomRape.cs b/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_LifeForce_RandomRape.cs
deleted file mode 100644
index b949c05..0000000
--- a/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_LifeForce_RandomRape.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using UnityEngine;
-using Verse;
-using Verse.AI;
-using RimWorld;
-using rjw;
-
-namespace RJW_Genes
-{
- public class JobGiver_LifeForce_RandomRape : JobGiver_RandomRape
- {
- protected override Job TryGiveJob(Pawn rapist)
- {
- if (!can_rape(rapist, false))
- {
- return null;
- }
- Pawn rapevictim = this.FindVictim(rapist);
- if (rapevictim == null)
- {
- return null;
- }
- return JobMaker.MakeJob(JobDefOf.rjw_genes_lifeforce_randomrape, rapevictim);
- }
-
- //same as xxx.canrape from rjw, but without last requirements.
- public static bool can_rape(Pawn potentialRapist, bool forced = false)
- {
- return RJWSettings.rape_enabled && (xxx.is_mechanoid(potentialRapist) || ((xxx.can_fuck(potentialRapist) ||
- (!xxx.is_male(potentialRapist) && xxx.get_vulnerability(potentialRapist) < RJWSettings.nonFutaWomenRaping_MaxVulnerability &&
- xxx.can_be_fucked(potentialRapist))) && (!xxx.is_human(potentialRapist) || ((potentialRapist.ageTracker.Growth >= 1f || potentialRapist.ageTracker.CurLifeStage.reproductive)))));
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_TryQuickieWith.cs b/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_TryQuickieWith.cs
deleted file mode 100644
index 4ba380d..0000000
--- a/1.6/Source/Genes/Life_Force/JobGivers/JobGiver_TryQuickieWith.cs
+++ /dev/null
@@ -1,176 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using RimWorld;
-using rjw;
-using rjw.Modules.Attraction;
-using RJWSexperience;
-using UnityEngine;
-using Verse;
-using Verse.AI;
-using Verse.AI.Group;
-namespace RJW_Genes
-{
- public class JobGiver_TryQuickieWith : ThinkNode_JobGiver
- {
- protected override Job TryGiveJob(Pawn pawn)
- {
- Pawn target = pawn.mindState.duty.focus.Pawn;
- Pawn_JobTracker jobs = target.jobs;
- string pawn_name = xxx.get_pawnname(pawn);
- string target_name = xxx.get_pawnname(target);
- //can reserve eachother
- if (pawn.CanReserveAndReach(target, PathEndMode.InteractionCell, Danger.Some) && target.CanReserve(pawn, 1, 0, null, false))
- {
- //Dont interrupt player
- if (!(((jobs != null) ? jobs.curJob : null) != null && jobs.curJob.playerForced))
- {
- float willingness = TargetWillingness(pawn, target);
- if (Rand.Chance(willingness))
- {
- Job newJob =JobMaker.MakeJob(xxx.quick_sex, target);
-
-
- return newJob;
- }
- else
- {
- if (RJWSettings.DebugLogJoinInBed) //change this when we have our own settigns
- {
- ModLog.Message(string.Format("{0} was not interested in having sex with {1}: ({2} chance)", pawn_name, target_name, willingness));
- }
- }
- }
- else
- {
- if (RJWSettings.DebugLogJoinInBed) //change this when we have our own settigns
- {
- //ModLog.Message(string.Format(" find_pawn_to_fuck({0}): lover has important job ({1}), skipping", pawn_name, target.jobs.curJob.def));
- }
- }
- }
- else
- {
- if (RJWSettings.DebugLogJoinInBed) //change this when we have our own settigns
- {
- ModLog.Message(" (" + pawn_name + "): cannot reach or reserve " + target_name);
- }
- }
- return null;
- }
- public static float TargetWillingness(Pawn pawn, Pawn target)
- {
- string pawn_name = xxx.get_pawnname(pawn);
- float willingness = AttractionUtility.Evaluate(target,pawn);
- bool nymph = xxx.is_nympho(target);
- bool loverelation = LovePartnerRelationUtility.LovePartnerRelationExists(pawn, target);
- if (nymph || loverelation)
- {
- willingness *= 2;
- }
- if (xxx.HasNonPolyPartner(pawn, false) && !loverelation)
- {
- if (RJWHookupSettings.NymphosCanCheat && nymph && xxx.is_frustrated(pawn))
- {
- if (RJWSettings.DebugLogJoinInBed)
- {
- ModLog.Message(" find_partner(" + pawn_name + "): I'm a nympho and I'm so frustrated that I'm going to cheat");
- }
- }
- else
- {
- if (!pawn.health.hediffSet.HasHediff(HediffDef.Named("AlcoholHigh"), false))
- {
- if (RJWSettings.DebugLogJoinInBed)
- {
- ModLog.Message(" find_partner(" + pawn_name + "): I interested in banging but that's cheating");
- }
- //Succubus has a small chance to seduce even if target is in relationship
- willingness *= 0.1f;
- }
- else
- {
- if (RJWSettings.DebugLogJoinInBed)
- {
- ModLog.Message(" find_partner(" + pawn_name + "): I want to bang and im too drunk to care if its cheating");
- }
- //No change
- }
- }
- }
- return willingness;
- }
-
- public static float JoinChance(Pawn pawn ,Pawn target)
- {
-
- float chance = 0.1f;
-
- //Sex satisfaction, how good the target is at sex
- chance *= xxx.get_sex_satisfaction(target);
-
- //Succubus mood
- if (pawn.needs != null && pawn.needs.mood != null)
- {
- chance *= pawn.needs.mood.CurLevelPercentage + 0.5f;
- }
-
- //Size of genitals
- bool size_matters = true; //To be placed in modsettings
- if (size_matters)
- {
- //The larger the penis to greater the chance
- if (RelationsUtility.AttractedToGender(pawn, Gender.Male))
- {
- chance *= GetGenitalSize(target, true) + 0.5f;
- }
-
- //The tighter the vagine the greater the chance, a size above 1 is considered as 1
- if (RelationsUtility.AttractedToGender(pawn, Gender.Female))
- {
- chance *= 1f - Mathf.Min(GetGenitalSize(target, false),1f) + 0.5f;
- }
- }
-
- //Sex ability from sexperience
- if (ModsConfig.IsActive("rjw.sexperience"))
- {
- chance *= RJWSexperience.PawnExtensions.GetSexStat(pawn);
- }
- return Mathf.Max(chance,0f);
- }
-
- //Gets the size of the largest penis or the tightest vagina
- public static float GetGenitalSize(Pawn pawn, bool penis_else_vagina)
- {
- List genitals = rjw.PawnExtensions.GetGenitalsList(pawn);
- if(!genitals.NullOrEmpty())
- {
- if (penis_else_vagina)
- {
- List penises = genitals.Where(genital => Genital_Helper.is_penis(genital)).ToList();
- {
- if (!penises.NullOrEmpty())
- {
- return penises.Max(genital => genital.Severity);
- }
- }
- }
- else
- {
- List vaginas = genitals.Where(genital => Genital_Helper.is_vagina(genital)).ToList();
- {
- if (!vaginas.NullOrEmpty())
- {
- return vaginas.Min(genital => genital.Severity);
- }
- }
- }
- }
- return 0f;
-
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/LordToil_Flirt.cs b/1.6/Source/Genes/Life_Force/LordToil_Flirt.cs
deleted file mode 100644
index 0bd1e38..0000000
--- a/1.6/Source/Genes/Life_Force/LordToil_Flirt.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using Verse.AI;
-using Verse.AI.Group;
-using RimWorld;
-namespace RJW_Genes
-{
- //Based on LordToil_EscortPawn
- public class LordToil_Flirt : LordToil
- {
- public LordToil_Flirt(Pawn victim, float followRadius)
- {
- this.victim = victim;
- this.followRadius = followRadius;
- }
-
-
- public override void UpdateAllDuties()
- {
- for (int i = 0; i < this.lord.ownedPawns.Count; i++)
- {
- PawnDuty duty = new PawnDuty(GeneDefOf.rjw_genes_flirt, this.victim, this.followRadius);
- this.lord.ownedPawns[i].mindState.duty = duty;
- }
- }
-
- public Pawn victim;
- public float followRadius;
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/MentalStates/LifeForceMentalBreakWorker.cs b/1.6/Source/Genes/Life_Force/MentalStates/LifeForceMentalBreakWorker.cs
deleted file mode 100644
index 36b47b0..0000000
--- a/1.6/Source/Genes/Life_Force/MentalStates/LifeForceMentalBreakWorker.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using UnityEngine;
-using Verse;
-using RimWorld;
-using Verse.AI;
-
-namespace RJW_Genes
-{
- public class LifeForceMentalBreakWorker : MentalBreakWorker
- {
- public override bool BreakCanOccur(Pawn pawn)
- {
- if (pawn.Spawned && base.BreakCanOccur(pawn))
- {
- if (!GeneUtility.HasLifeForce(pawn))
- {
- return false;
- }
- Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType();
- if( gene.Resource.Value <= 0)
- {
- return true;
- }
- }
- return false;
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/MentalStates/LifeForceMentalState.cs b/1.6/Source/Genes/Life_Force/MentalStates/LifeForceMentalState.cs
deleted file mode 100644
index af50a91..0000000
--- a/1.6/Source/Genes/Life_Force/MentalStates/LifeForceMentalState.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System;
-using Verse;
-using Verse.AI;
-using rjw;
-namespace RJW_Genes
-{
- public class LifeForceMentalState : MentalState
- {
- //1.6 Change, delta is now passed to MentalStateTick
- public override void MentalStateTick(int delta)
- {
- //1.6 Update change
- //if (this.pawn.IsHashIntervalTick(150) && !GeneUtility.HasCriticalLifeForce(this.pawn))
- if (this.pawn.IsHashIntervalTick(150, delta) && !GeneUtility.HasCriticalLifeForce(this.pawn))
- {
- Pawn_JobTracker jobs = this.pawn.jobs;
- if (!(((jobs != null) ? jobs.curDriver : null) is JobDriver_Sex))
- {
- base.RecoverFromState();
- return;
- }
- }
- //1.6 Change, delta is now passed to MentalStateTick
- base.MentalStateTick(delta);
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Life_Force/MentalStates/LifeForceMentalStateWorker.cs b/1.6/Source/Genes/Life_Force/MentalStates/LifeForceMentalStateWorker.cs
deleted file mode 100644
index eaeaf89..0000000
--- a/1.6/Source/Genes/Life_Force/MentalStates/LifeForceMentalStateWorker.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-using Verse;
-using Verse.AI;
-using rjw;
-namespace RJW_Genes
-{
- public class LifeForceMentalStateWorker : MentalStateWorker
- {
- public override bool StateCanOccur(Pawn pawn)
- {
- return base.StateCanOccur(pawn) && (xxx.is_human(pawn) && JobGiver_LifeForce_RandomRape.can_rape(pawn));
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Patches/Patch_SatisfyPersonal_LifeForceGain.cs b/1.6/Source/Genes/Life_Force/Patches/Patch_SatisfyPersonal_LifeForceGain.cs
deleted file mode 100644
index ad0a1aa..0000000
--- a/1.6/Source/Genes/Life_Force/Patches/Patch_SatisfyPersonal_LifeForceGain.cs
+++ /dev/null
@@ -1,214 +0,0 @@
-using HarmonyLib;
-using rjw;
-using RimWorld;
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// This Patch hooks after "SatisfyPersonal"(i.E. when the pawn finished fucking) and covers LifeForceGain.
- /// If the pawn has LifeForce, all relevant Genes are checked and applied.
- ///
- [HarmonyPatch(typeof(SexUtility), nameof(SexUtility.SatisfyPersonal))]
- public static class Patch_SatisfyPersonal_LifeForceGain
- {
- public const float LIFEFORCE_GAINED_FROM_DRAINER_GENE = 0.25f;
-
- public static void Postfix(SexProps props)
- {
- // ShortCuts: Exit Early if Pawn or Partner are null (can happen with Animals or Masturbation)
- if (props.pawn == null || !props.hasPartner())
- return;
-
- // Exit if pawn has fertilin themself, it won't give any if it has lifeforce themself.
- if (GeneUtility.HasLifeForce(props.pawn))
- {
- return;
- }
- // Exit if the pawn has ONLY an archotech penis, and no other penises. Issue #72
- if (props.pawn.health.hediffSet.hediffs.Any(x => x.def == rjw.Genital_Helper.archotech_penis)
- && !(Genital_Helper.has_multipenis(props.pawn)))
- {
- return;
- }
-
- //Summary//
- //We use the positions of the pawn (dom or sub) and based on that which interactions will transfer fertilin
- //By checking isreceiver we know if the succubus is the dom or the sub and if the situation is reverse we also swap the function we use
- float absorb_factor = 0f;
- if (GeneUtility.HasLifeForce(props.partner))
- {
- Pawn PawnWithLifeForce = props.partner;
-
- if (!props.isRevese)
- {
- if (props.isReceiver)
- {
- // Scenario Dom Succubus, normal
- absorb_factor = BaseDom(props, PawnWithLifeForce);
- }
- else
- {
- // Scenario Sub Succubus, normal
- absorb_factor = BaseSub(props, PawnWithLifeForce);
- }
- }
- else
- {
- if (props.isReceiver)
- {
- // Scenario Dom Succubus, Reverse
- absorb_factor = BaseSub(props, PawnWithLifeForce);
- }
- else
- {
- // Scenario Sub Succubus, Reverse
- absorb_factor = BaseDom(props, PawnWithLifeForce);
- }
- }
-
- // If we remove this check fertilin is always lost, but the succubus doesn't always gain any
- if (absorb_factor != 0f)
- {
- TransferFertilin(props, absorb_factor);
- }
-
- // Handle Gene: Sexual_Drainer
- // to be drained, a pawn must not-be-drained-already and drainers cannot be drained either.
- if (GeneUtility.IsSexualDrainer(PawnWithLifeForce)
- && !props.pawn.health.hediffSet.HasHediff(HediffDefOf.rjw_genes_succubus_drained)
- && !GeneUtility.IsSexualDrainer(props.pawn))
- {
- 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);
- }
- }
- }
- }
-
- public static void TransferFertilin(SexProps props, float absorb_percentage = 1f)
- {
- Pawn_GeneTracker genes = props.partner.genes;
- Gene_LifeForce gene = genes.GetFirstGeneOfType();
-
- 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);
-
- if (GeneUtility.IsGenerousDonor(props.pawn) && RJW_Genes_Settings.rjw_genes_generous_donor_cheatmode)
- {
- // 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;
- //Currently taking the sum of all penises, maybe I should just consider one at random
- float valuechange = TotalFertilinAmount(props, multiplier);
-
- if (props.partner.IsAnimal())
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- ModLog.Message($"Fertilin-Source of {props.pawn.Name} was an Animal, Fertilin-Gain is being adjusted by {RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor}%");
- valuechange *= RJW_Genes_Settings.rjw_genes_fertilin_from_animals_factor;
- }
-
- GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(props.partner), valuechange);
- }
-
- public static float TotalFertilinAmount(SexProps props, float multiplier)
- {
- float total_fluid = FluidUtility.GetTotalFluidAmount(props.pawn) / 100;
-
-
- //TODO
- //1.6 QUIRK subsystem disabled.
- /*
- //More in the tank means more to give
- if (props.pawn.Has(Quirk.Messy))
- {
- total_fluid *= 2;
- }
- */
- if (props.pawn.RaceProps.Animal)
- {
- total_fluid *= 0.1f; //Should make this settable in settings
- }
-
- return total_fluid;
- }
-
- ///
- /// Handles the Case that the Life-Force wielder initiated the Sex (They are "Dom").
- ///
- /// The summary of the sex act, used for checking conditions.
- /// The pawn that might gain LifeForce through this method.
- /// A factor between 0 and 1 how much of output-fertilin will be used for input-lifeforce
- public static float BaseDom(SexProps props, Pawn PawnWithLifeForce)
- {
- float absorb_factor = 0f;
- if (props.sexType == xxx.rjwSextype.Sixtynine && GeneUtility.IsCumEater(PawnWithLifeForce))
- {
- absorb_factor += 1f;
- }
- return absorb_factor;
- }
-
- ///
- /// Handles the Case that the Life-Force wielder got initiated into sex (They are "Sub").
- ///
- /// The summary of the sex act, used for checking conditions.
- /// The pawn that might gain LifeForce through this method.
- /// A factor between 0 and 1 how much of output-fertilin will be used for input-lifeforce
- public static float BaseSub(SexProps props, Pawn PawnWithLifeForce)
- {
- float absorb_factor = 0f;
- if ((props.sexType == xxx.rjwSextype.Oral || props.sexType == xxx.rjwSextype.Fellatio || props.sexType == xxx.rjwSextype.Sixtynine)
- && GeneUtility.IsCumEater(PawnWithLifeForce))
- {
- absorb_factor += 1f;
- }
- else if (props.sexType == xxx.rjwSextype.Vaginal && GeneUtility.HasGeneNullCheck(PawnWithLifeForce, GeneDefOf.rjw_genes_fertilin_absorber))
- {
- absorb_factor += 1f;
- }
- else if (props.sexType == xxx.rjwSextype.Anal && GeneUtility.HasGeneNullCheck(PawnWithLifeForce, GeneDefOf.rjw_genes_fertilin_absorber))
- {
- absorb_factor += 1f;
- }
- else if (props.sexType == xxx.rjwSextype.DoublePenetration && GeneUtility.HasGeneNullCheck(PawnWithLifeForce, GeneDefOf.rjw_genes_fertilin_absorber))
- {
- absorb_factor += 1f;
- }
- else if (props.sexType == xxx.rjwSextype.Scissoring || props.sexType == xxx.rjwSextype.Cunnilingus)
- {
- //with vaginal cum absorbtion
- //absorb_factor += 1f;
- }
- return absorb_factor;
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/Patches/Patch_Vanilla_Inheritance_Fertilin.cs b/1.6/Source/Genes/Life_Force/Patches/Patch_Vanilla_Inheritance_Fertilin.cs
deleted file mode 100644
index 3d1f684..0000000
--- a/1.6/Source/Genes/Life_Force/Patches/Patch_Vanilla_Inheritance_Fertilin.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HarmonyLib;
-using RimWorld;
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// This Patch is applied to add a absorption gene for fertilin if it has none, but it does have the fertilin gene
- /// First tries to get one from the parents else chooses one of them at random
- /// the genes are determined and "simply added".
- ///
- /// This fixes the potential problem that Pawns could inherit Fertilin, but no gene to gain Fertilin.
- ///
- [HarmonyPatch(typeof(PregnancyUtility), "GetInheritedGeneSet", new Type[]
- {
- typeof(Pawn),
- typeof(Pawn)
- }
- )]
- public static class Patch_Vanilla_Inheritance_Fertilin
- {
- [HarmonyPostfix]
- public static void InheritedGenes(Pawn father, Pawn mother, ref GeneSet __result)
- {
- //Also make a setting for this
- if (__result.GenesListForReading.Contains(GeneDefOf.rjw_genes_lifeforce))
- {
- List babies_genes = __result.GenesListForReading;
-
- //If there is no absorption gene get one from the parents, else a random one
- if(!Has_Fertilin_Source_Gene(babies_genes))
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- ModLog.Message($"Child of ({father.Name};{mother.Name}) has Genes with LifeForce-Resource but no Source-Gene, adding one of parents random if possible or any random otherwise.");
- // Gather Parents Source-Genes
- List absorption_genes_parents = new List();
- foreach (GeneDef geneDef in FertilinSourceGenes)
- {
- if(mother.genes != null && mother.genes.HasActiveGene(geneDef))
- absorption_genes_parents.Add(geneDef);
-
- if (father.genes != null && father.genes.HasActiveGene(geneDef))
- absorption_genes_parents.Add(geneDef);
- }
- // Parents had Genes - Pick a random one of them
- if (!absorption_genes_parents.NullOrEmpty())
- __result.AddGene(absorption_genes_parents.RandomElement());
- // Create a fully random one for your little Cumfueled missbreed
- else
- __result.AddGene(FertilinSourceGenes.RandomElement());
- }
- }
- }
-
- private static List FertilinSourceGenes = new List() {
- GeneDefOf.rjw_genes_drainer,
- GeneDefOf.rjw_genes_cum_eater,
- GeneDefOf.rjw_genes_fertilin_absorber,
- GeneDefOf.rjw_genes_cockeater
- };
-
- private static bool Has_Fertilin_Source_Gene(List genes)
- {
- foreach (GeneDef gene in genes)
- {
- if (FertilinSourceGenes.Contains(gene))
- {
- return true;
- }
- }
- return false;
- }
-
-
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalCannotInteract.cs b/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalCannotInteract.cs
deleted file mode 100644
index 06e05b4..0000000
--- a/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalCannotInteract.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using Verse.AI;
-namespace RJW_Genes
-{
- public class ThinkNode_ConditionalCannotInteract : ThinkNode_Conditional
- {
- protected override bool Satisfied(Pawn pawn)
- {
- Pawn target = pawn.mindState.duty.focus.Pawn;
- if (target == null)
- {
- return true;
- }
- return (target.jobs != null && target.jobs.curDriver.asleep) || !pawn.CanReach(target, PathEndMode.InteractionCell, Danger.Deadly);
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalCritcalLifeForce.cs b/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalCritcalLifeForce.cs
deleted file mode 100644
index dbb3f6b..0000000
--- a/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalCritcalLifeForce.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-using Verse;
-using Verse.AI;
-
-namespace RJW_Genes
-{
- public class ThinkNode_ConditionalCritcalLifeForce : ThinkNode_Conditional
- {
- protected override bool Satisfied(Pawn p)
- {
- return GeneUtility.HasCriticalLifeForce(p);
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalLowLifeForce.cs b/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalLowLifeForce.cs
deleted file mode 100644
index 0e71ce7..0000000
--- a/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_ConditionalLowLifeForce.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-using Verse;
-using Verse.AI;
-
-namespace RJW_Genes
-{
- public class ThinkNode_ConditionalLowLifeForce : ThinkNode_Conditional
- {
- protected override bool Satisfied(Pawn p)
- {
- return GeneUtility.HasLowLifeForce(p);
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_NewFlirtTarget.cs b/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_NewFlirtTarget.cs
deleted file mode 100644
index 9a98e94..0000000
--- a/1.6/Source/Genes/Life_Force/ThinkNodes/ThinkNode_NewFlirtTarget.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using rjw;
-using rjw.Modules.Attraction;
-using Verse;
-using Verse.AI;
-namespace RJW_Genes
-{
- public class ThinkNode_NewFlirtTarget : ThinkNode
- {
- public override ThinkResult TryIssueJobPackage(Pawn pawn, JobIssueParams jobParams)
- {
- List validTargets = ValidTargets(pawn, pawn.Map).ToList();
- Pawn new_target = validTargets.NullOrEmpty() ? null : validTargets.RandomElement();
- if (new_target != null)
- {
- pawn.mindState.duty.focus = new_target;
- }
- return ThinkResult.NoJob;
- }
-
- private IEnumerable ValidTargets(Pawn pawn, Map map)
- {
- foreach (Pawn pawn2 in map.mapPawns.FreeAdultColonistsSpawned)
- {
- if (pawn != null && pawn2 != null && pawn != pawn2 && !pawn2.jobs.curDriver.asleep && AttractionUtility.Evaluate(pawn, pawn2) > 0.1f)
- {
- yield return pawn2;
- }
- }
- //IEnumerator enumerator = null;
- yield break;
- }
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/UI/Alert_LowFertilin.cs b/1.6/Source/Genes/Life_Force/UI/Alert_LowFertilin.cs
deleted file mode 100644
index b5feaa4..0000000
--- a/1.6/Source/Genes/Life_Force/UI/Alert_LowFertilin.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using RimWorld.Planet;
-using Verse;
-using RimWorld;
-namespace RJW_Genes
-{
- public class Alert_CriticalFertilin : Alert
- {
- private List Targets
- {
- get
- {
- this.CalculateTargets();
- return this.targets;
- }
- }
-
- public override string GetLabel()
- {
- if (this.Targets.Count == 1)
- {
- return "AlertLowFertilin".Translate() + ": " + this.targetLabels[0];
- }
- return "AlertLowFertilin".Translate();
- }
-
- private void CalculateTargets()
- {
- this.targets.Clear();
- this.targetLabels.Clear();
- if (!ModsConfig.BiotechActive)
- {
- return;
- }
- //1.6 Patch
- //foreach (Pawn pawn in PawnsFinder.AllMapsCaravansAndTravelingTransportPods_Alive)
- foreach (Pawn pawn in PawnsFinder.AllMapsCaravansAndTravellingTransporters_Alive_OfPlayerFaction)
- {
- if (pawn.RaceProps.Humanlike)
- {
- Pawn_GeneTracker genes = pawn.genes;
- Gene_LifeForce gene_Lifeforce = (genes != null) ? genes.GetFirstGeneOfType() : null;
- if (gene_Lifeforce != null && gene_Lifeforce.Active && gene_Lifeforce.Value < gene_Lifeforce.MinLevelForAlert)
- {
- this.targets.Add(pawn);
- this.targetLabels.Add(pawn.NameShortColored.Resolve());
- }
- }
- }
- }
-
- public override TaggedString GetExplanation()
- {
- return "AlertLowFertilinDesc".Translate() + ":\n" + this.targetLabels.ToLineList(" - ");
- }
-
- public override AlertReport GetReport()
- {
- return AlertReport.CulpritsAre(this.Targets);
- }
-
- private List targets = new List();
-
- private List targetLabels = new List();
- }
-}
diff --git a/1.6/Source/Genes/Life_Force/UI/GeneGizmo_ResourceLifeForce.cs b/1.6/Source/Genes/Life_Force/UI/GeneGizmo_ResourceLifeForce.cs
deleted file mode 100644
index c3c66a0..0000000
--- a/1.6/Source/Genes/Life_Force/UI/GeneGizmo_ResourceLifeForce.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RimWorld;
-using UnityEngine;
-namespace RJW_Genes
-{
- //Copied from GeneGizmo_ResourceHemogen, with small modifications
- public class GeneGizmo_ResourceLifeForce : GeneGizmo_Resource
- {
- private static bool draggingBar;
-
- public GeneGizmo_ResourceLifeForce(Gene_Resource gene, List drainGenes, Color barColor, Color barhighlightColor) : base(gene, drainGenes, barColor, barhighlightColor)
- {
-
- }
-
- public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth, GizmoRenderParms parms)
- {
- return base.GizmoOnGUI(topLeft, maxWidth, parms);
- }
-
- //Added for 1.6 Support.
- protected override bool DraggingBar
- {
- get
- {
- return GeneGizmo_ResourceLifeForce.draggingBar;
- }
- set
- {
- GeneGizmo_ResourceLifeForce.draggingBar = value;
- }
- }
-
- protected override string GetTooltip()
- {
-
- this.tmpDrainGenes.Clear();
- string text = string.Format("{0}: {1} / {2}\n", this.gene.ResourceLabel.CapitalizeFirst().Colorize(ColoredText.TipSectionTitleColor), this.gene.ValueForDisplay, this.gene.MaxForDisplay);
- if (this.gene.pawn.IsColonistPlayerControlled || this.gene.pawn.IsPrisonerOfColony)
- {
- if (this.gene.targetValue <= 0f)
- {
- text += "NeverSeekFertilin";
- }
- else
- {
- text = text + ("SeekFertilinBelow" + ": ") + this.gene.PostProcessValue(this.gene.targetValue);
- }
- }
- if (!this.drainGenes.NullOrEmpty())
- {
- float num = 0f;
- foreach (IGeneResourceDrain geneResourceDrain in this.drainGenes)
- {
- if (geneResourceDrain.CanOffset)
- {
- this.tmpDrainGenes.Add(new Pair(geneResourceDrain, geneResourceDrain.ResourceLossPerDay));
- num += geneResourceDrain.ResourceLossPerDay;
- }
- }
- if (num != 0f)
- {
- string text2 = (num < 0f) ? "RegenerationRate".Translate() : "DrainRate".Translate();
- text = string.Concat(new string[]
- {
- text,
- "\n\n",
- text2,
- ": ",
- "PerDay".Translate(Mathf.Abs(this.gene.PostProcessValue(num))).Resolve()
- });
- foreach (Pair pair in this.tmpDrainGenes)
- {
- text = string.Concat(new string[]
- {
- text,
- "\n - ",
- pair.First.DisplayLabel.CapitalizeFirst(),
- ": ",
- "PerDay".Translate(this.gene.PostProcessValue(-pair.Second).ToStringWithSign()).Resolve()
- });
- }
- }
- }
- if (!this.gene.def.resourceDescription.NullOrEmpty())
- {
- text = text + "\n\n" + this.gene.def.resourceDescription.Formatted(this.gene.pawn.Named("PAWN")).Resolve();
- }
- return text;
- }
- private List> tmpDrainGenes = new List>();
- }
-}
diff --git a/1.6/Source/Genes/Patch_AddNotifyOnGeneration.cs b/1.6/Source/Genes/Patch_AddNotifyOnGeneration.cs
deleted file mode 100644
index e2f8ba1..0000000
--- a/1.6/Source/Genes/Patch_AddNotifyOnGeneration.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using HarmonyLib;
-using rjw;
-using System.Linq;
-using Verse;
-
-namespace RJW_Genes.Genes
-{
- [HarmonyPatch]
- public static class Patch_AddNotifyOnGeneration
- {
- [HarmonyPatch(typeof(PawnGenerator), "GenerateGenes")]
- [HarmonyPostfix]
- public static void PawnGenerator_GenerateGenes_Postfix(Pawn pawn)
- {
- if (pawn == null || pawn.genes == null) return;
-
- if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return;
-
- foreach (var gene in pawn.genes.GenesListForReading)
- {
- if (gene != null && gene is RJW_Gene rjwGene)
- rjwGene.Notify_OnPawnGeneration();
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/Patches/LustFeeding.cs b/1.6/Source/Genes/Patches/LustFeeding.cs
deleted file mode 100644
index 13fc2ac..0000000
--- a/1.6/Source/Genes/Patches/LustFeeding.cs
+++ /dev/null
@@ -1,150 +0,0 @@
-using RimWorld;
-using rjw;
-using Verse;
-using System;
-using RimWorld.Planet;
-
-
-
-namespace RJWLoveFeeding
-{
- static class LustFeeding
- {
- //[HarmonyPostfix]
- static Def LoveFeed = DefDatabase.GetNamed("RS_LoveFeed", false);
- static Def VampireLover = DefDatabase.GetNamed("VU_VampireLover", false);
- static Def LovinDependency = DefDatabase.GetNamed("VRE_LovinDependency", false);
- static NeedDef VRE_Lovin = DefDatabase.GetNamed("VRE_Lovin", false);
- public static void Postfix(SexProps props)
- {
- try
- {
- LustFeeding.RJWLustFeeding(props);
- }
- catch (Exception e)
- {
- Log.Error(e.ToString());
- }
- }
-
- public static void RJWLustFeeding(SexProps props)
- {
- if((props.pawn != null) && (props.partner != null) && !xxx.is_animal(props.pawn) && !xxx.is_animal(props.partner))
- {
- //ModLog.Message($" Patch Worked");
- if(!props.pawn.IsCaravanMember() && !props.partner.IsCaravanMember())
- {
- FillNeed(props.pawn);
- FillNeed(props.partner);
-
- RJWTryTakeBlood(props.pawn, props.partner);
- RJWTryTakeBlood(props.partner, props.pawn);
- }
-
- }
-
- }
-
- public static void FillNeed(Pawn pawn)
- {
- Pawn_GeneTracker genes;
- if (LovinDependency != null)
- {
- genes = pawn.genes;
-
- if (genes == null)
- {
- return;
- }
- if (pawn.genes.HasActiveGene(RJW_Genes.GeneDefOf.VRE_LovinDependency))
- {
- if (VRE_Lovin != null)
- {
- Pawn_NeedsTracker needs = pawn.needs;
- ((needs != null) ? needs.TryGetNeed(VRE_Lovin) : null).CurLevel = 1f;
- }
- }
- }
- }
-
-
- public static bool RJWTryTakeBlood(Pawn pawn, Pawn bloodBag)
- {
-
- if (bloodBag == null || pawn == null) return false;
- Pawn_GeneTracker genes = bloodBag.genes;
- if (genes!=null)
- if ((genes.GetFirstGeneOfType() != null))
- {
- return false;
- }
-
- genes = pawn.genes;
-
- if (genes == null)
- {
- return false;
- }
-
- bool isLoveFeeder = false;
-
- if(LoveFeed != null)
- {
- if (RJWSettings.DevMode) RJW_Genes.ModLog.Message("LoveFeed checks");
- if (genes.HasActiveGene(RJW_Genes.GeneDefOf.RS_LoveFeed))
- {
-
- isLoveFeeder = true;
- }
- }
- if (VampireLover != null)
- {
- if (RJWSettings.DevMode) RJW_Genes.ModLog.Message("LoveFeed checks");
- if (genes.HasActiveGene(RJW_Genes.GeneDefOf.VU_VampireLover))
- {
- isLoveFeeder = true;
- }
- }
-
-
- if (isLoveFeeder && (genes.GetFirstGeneOfType() != null))
- {
- ModLog.Message($" Lovefeeder just finished loving: {xxx.get_pawnname(pawn)}");
-
- Gene_Hemogen gene_Hemogen = genes.GetFirstGeneOfType();
- if (gene_Hemogen != null)
- {
- if (gene_Hemogen.Value < gene_Hemogen.targetValue)
- {
- Hediff bloodBagBloodLoss = bloodBag.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.BloodLoss, false);
- if (bloodBagBloodLoss != null)
- {
- float afterBite = bloodBagBloodLoss.Severity + 0.25f;
- if ((afterBite > HediffDefOf.BloodLoss.lethalSeverity) || (afterBite > 0.49f))
- {
- //ModLog.Message($"{xxx.get_pawnname(pawn)} would have killed someone. {afterBite} > {HediffDefOf.BloodLoss.lethalSeverity}");
- return false;
- }
-
- }
- SanguophageUtility.DoBite(pawn, bloodBag, 0.2f, 0.1f, 0.2f, 1f, IntRange.One, ThoughtDefOf.FedOn, ThoughtDefOf.FedOn_Social);
- ModLog.Message($"{xxx.get_pawnname(pawn)} snacked on {xxx.get_pawnname(bloodBag)}");
- return true;
-
- }
- else
- {
- ModLog.Message($"{xxx.get_pawnname(pawn)} not hungry. {gene_Hemogen.Value} > {gene_Hemogen.targetValue}");
- }
- }
-
-
-
- }
- return false; ;
- }
-
- }
-
-
-}
diff --git a/1.6/Source/Genes/Patches/MultiplePregnancies.cs b/1.6/Source/Genes/Patches/MultiplePregnancies.cs
deleted file mode 100644
index ded8271..0000000
--- a/1.6/Source/Genes/Patches/MultiplePregnancies.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-using RimWorld;
-using rjw;
-using Verse;
-using System.Linq;
-using System.Collections.Generic;
-using System;
-using HarmonyLib;
-using RJWLoveFeeding;
-
-
-namespace RJWLoveFeeding
-{
- [HarmonyPatch(typeof(PawnExtensions), "IsPregnant", new Type[]
-{
- typeof(Pawn), typeof(bool)
- })]
- class MultiplePregnancies
- {
- static Def MultiPregnancy = DefDatabase.GetNamed("RS_MultiPregnancy", false);
- [HarmonyPostfix]
- public static void Postfix(ref bool __result, Pawn pawn, bool mustBeVisible)
- {
- bool isPregnant = __result;
- if (MultiPregnancy != null)
- {
- if (RJWSettings.DevMode) RJW_Genes.ModLog.Message("multipreg checks");
- if (isPregnant)
- {
- try
- {
- isPregnant = MultiplePregnancies.RJWMultiplePregnancy(isPregnant, pawn);
- }
- catch (Exception e)
- {
- Log.Error(e.ToString());
- }
- }
- __result = isPregnant;
- }
- }
-
-
- public static bool RJWMultiplePregnancy(bool isPregnant, Pawn fucked)
- {
- if ((fucked != null) && !xxx.is_animal(fucked))
- {
-
-
- List set = fucked.health.hediffSet.hediffs;
-
- //Taking all hediffs that prevent pregnancy but are are not of the type used for pregnancies itself
- List setNoPreggo = set.FindAll(o => (o.def.preventsPregnancy) && !(o is HediffWithParents));
-
- if (setNoPreggo.NullOrEmpty())
- {
- Pawn_GeneTracker genes = fucked.genes;
- if (genes.HasActiveGene(RJW_Genes.GeneDefOf.RS_MultiPregnancy))
- {
- if (RJWSettings.DevMode) Log.Message(xxx.get_pawnname(fucked) + " has multipregnancy gene");
- return false;
- }
- }
- else
- {
- if (RJWSettings.DevMode) Log.Message(setNoPreggo.First().def.defName + ": This prevents pregnancy");
- }
- }
-
- return isPregnant;
- }
- }
-}
diff --git a/1.6/Source/Genes/Patches/PatchLitteredBirth.cs b/1.6/Source/Genes/Patches/PatchLitteredBirth.cs
deleted file mode 100644
index 90c4f12..0000000
--- a/1.6/Source/Genes/Patches/PatchLitteredBirth.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using HarmonyLib;
-using RimWorld;
-using Verse;
-using rjw;
-
-namespace RJW_Genes
-{
-
- public class PatchLitteredBirth
- {
-
- static Dictionary laborStateMap = new Dictionary();
- public static void Hediff_Labor_PostRemovedPostFix(ref Hediff_Labor __instance)
- {
- bool randomTwinsRoll;
- int totalBirths;
- bool laborStateIsNull = !laborStateMap.ContainsKey(__instance.pawn.ThingID);
- bool hasLitteredBirthsGene = __instance.pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_littered_births);
-
- // we'll never do additional processing if this is the guaranteed last birth (eg birth #4)
- if (!laborStateIsNull && laborStateMap.TryGetValue(__instance.pawn.ThingID).birthCount == 4)
- {
- return;
- }
-
- // For now, littered birth overrides ovary agitator and twin calculations, so if a LaborState already exists
- // with littered births gene, move on
- if (!laborStateIsNull && hasLitteredBirthsGene)
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- ModLog.Message("Found active LaborState and LitteredBirths gene - skipping additional Hediff_Labor_PostRemovedPostFix work");
- ModLog.Message("Pawn: " + __instance.pawn.NameShortColored + " (" + __instance.pawn.ThingID + ")");
- ModLog.Message("birthCount: " + laborStateMap.TryGetValue(__instance.pawn.ThingID).birthCount);
- }
-
- return;
- }
-
- // Make a new LaborState for the null case with littered births
- if (laborStateIsNull && hasLitteredBirthsGene)
- {
- ModLog.Message("Found littered births gene");
- int litteredBirthsTotalRoll = Rand.RangeInclusive(2, 4);
- laborStateMap.SetOrAdd(__instance.pawn.ThingID, new LaborState(__instance.pawn, litteredBirthsTotalRoll));
- return;
- }
-
- // Finally, regardless of littered births gene, we only want new state creation on
- // pawns that don't already have state, so return if state is !null (STATE SHOULD ALWAYS BE CLEANED IN LABORPUSHING POSTFIX)
- if (!laborStateIsNull)
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- ModLog.Warning("Labor state for pawn " + __instance.pawn.NameShortColored + " (" + __instance.pawn.ThingID +
- ") is not null despite all checks passing for determining first instance of Hediff_Labor - this warning should never occur, " +
- "and may indicate a bug in Hediff_LaborPushing of lingering labor state from a previous pregnancy");
- }
- return;
- }
-
- // For everything else, we do random twin and OvaryAgitator handling
- // -------
- // If we fail a base chance twins roll, return without any additional processing and proceed with vanilla childbirth
- // Notes on rolls:
- // -> Chance without OvaryAgitator to have twins: 1%
- // -> Chance with OvaryAgitator to have twins: Guaranteed
- // ---> Chance with OvaryAgitator to have triplets (MUST HAVE SUCCEEDED TWINS ROLL): 50%
- // ---> Chance with OvaryAgitator to have quadruplets (MUST HAVE SUCCEEDED TRIPLETS ROLL): 10%
- // -> Chance with Littered Births gene: random between 2 and 4 (inclusive)
- randomTwinsRoll = Rand.Chance(0.01f);
- bool hasAgitator = __instance.pawn.health.hediffSet.HasHediff(HediffDef.Named("OvaryAgitator"));
- if (!randomTwinsRoll && !hasAgitator)
- {
- // We failed rolls, and we don't have an agitator - no additional processing, do vanilla single baby birth
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- ModLog.Message("Inside Hediff_Labor_PostRemovedPostFix random twins check fail");
- ModLog.Message("Pawn: " + __instance.pawn.NameShortColored);
- ModLog.Message("Random twins roll outcome: " + randomTwinsRoll);
- ModLog.Message("Has OvaryAgitator: " + hasAgitator);
- }
- return;
- }
-
- // Beyond this point, we can assume the pawn has an agitator
- totalBirths = 2;
- bool agitatorTriplets = Rand.Chance(0.5f);
- bool agitatorQuadruplets = Rand.Chance(0.1f);
- if (hasAgitator)
- {
- if (agitatorTriplets) totalBirths = 3;
- if (agitatorTriplets && agitatorQuadruplets) totalBirths = 4;
- }
-
- // Set new LaborState
- laborStateMap.Add(__instance.pawn.ThingID, new LaborState(__instance.pawn, totalBirths));
- }
-
- public static void Hediff_LaborPushing_PostRemovedPostFix(ref Hediff_LaborPushing __instance)
- {
- bool hasAgitator = __instance.pawn.health.hediffSet.HasHediff(HediffDef.Named("OvaryAgitator"));
- bool hasLitteredBirthsGene = __instance.pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_littered_births);
- bool laborStateIsNull = !laborStateMap.ContainsKey(__instance.pawn.ThingID);
- LaborState currentLaborState;
- laborStateMap.TryGetValue(__instance.pawn.ThingID, out currentLaborState);
-
- if (laborStateIsNull)
- {
- if (__instance.pawn.health.hediffSet.HasHediff(HediffDef.Named("Bioscaffold")))
- {
- __instance.pawn.health.RemoveHediff(__instance.pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.Bioscaffold));
- }
- return;
- }
-
- if (currentLaborState.birthTotal == currentLaborState.birthCount)
- {
- laborStateMap.Remove(__instance.pawn.ThingID);
- if (__instance.pawn.health.hediffSet.HasHediff(HediffDef.Named("Bioscaffold")))
- {
-
- __instance.pawn.health.RemoveHediff(__instance.pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.Bioscaffold));
- }
- return;
- }
-
- ((Hediff_Labor)__instance.pawn.health.AddHediff(RimWorld.HediffDefOf.PregnancyLabor)).SetParents(__instance.pawn, __instance.Father, PregnancyUtility.GetInheritedGeneSet(__instance.Father, __instance.pawn));
- currentLaborState.birthCount++;
-
- if (!hasAgitator && !hasLitteredBirthsGene)
- {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- ModLog.Message("Pawn " + __instance.pawn.NameShortColored + " (" + __instance.pawn.ThingID + ") is having random twins");
- }
- Find.LetterStack.ReceiveLetter("rjw_genes_twin_letter".Translate(), __instance.pawn.NameShortColored + " " + "rjw_genes_twin_letter_content".Translate(),
- LetterDefOf.AnotherBaby, __instance.pawn);
- return;
- }
-
- Find.LetterStack.ReceiveLetter("rjw_genes_another_baby_letter".Translate(), __instance.pawn.NameShortColored + " " + "rjw_genes_another_baby_letter_content".Translate(),
- LetterDefOf.AnotherBaby, __instance.pawn);
- }
- }
-}
diff --git a/1.6/Source/Genes/Patches/Patch_Asexual_CanRape.cs b/1.6/Source/Genes/Patches/Patch_Asexual_CanRape.cs
deleted file mode 100644
index 76e02a3..0000000
--- a/1.6/Source/Genes/Patches/Patch_Asexual_CanRape.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using HarmonyLib;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes.Genes.Patches
-{
- ///
- /// This Patch hooks after "can_rape" and changes it to false for pawns that have no sex_need (are a-sexual).
- /// This helps with #100, and is more of a non-intrusive improvement over the base game.
- ///
- [HarmonyPatch(typeof(xxx), nameof(xxx.can_rape))]
- public class Patch_Asexual_CanRape
- {
- public static bool PostFix(Pawn pawn, ref bool __result)
- {
- if (pawn != null && pawn.genes != null && pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_no_sex_need))
- {
- __result = false;
- }
- return __result;
- }
- }
-}
diff --git a/1.6/Source/Genes/Patches/Patch_eltoro_streching.cs b/1.6/Source/Genes/Patches/Patch_eltoro_streching.cs
deleted file mode 100644
index c8275e4..0000000
--- a/1.6/Source/Genes/Patches/Patch_eltoro_streching.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using HarmonyLib;
-
-namespace RJW_Genes
-{
- public class Patch_eltoro_streching
- {
- ///
- /// Patch function that connects to Strecher.ApplyInjury, itercepting the creation of injury hediffs, and preventing if a Gene would stop the injury.
- ///
- ///
- ///
- ///
- ///
- ///
- public static void Postfix(Pawn pawn, BodyPartRecord part, HediffDef def, float severity, ref bool __result)
- {
- if (pawn?.genes?.HasActiveGene(GeneDefOf.rjw_genes_elasticity) ?? false)
- {
- ModLog.Debug($"Preventing creation of Injury Hediffs from streching for pawn {pawn.Name}.");
- __result = false;
- return;
- }
- else
- {
- return;
- }
- }
- }
-
- public class Patch_eltoro_strechheal
- {
- ///
- /// Patch function that connects to Strecher.ApplyInjury, itercepting the creation of injury hediffs, and preventing if a Gene would stop the injury.
- ///
- ///
- public static void Postfix(ref HediffComp __instance, ref float __result)
- {
- if (__instance.Pawn?.genes?.HasActiveGene(GeneDefOf.rjw_genes_elasticity) ?? false)
- {
- ModLog.Debug($"Healing streching factor @ x2 speed for pawn : {__instance.Pawn.Name}.");
- __result = 2f;
- } else
- {
- return;
- }
-
-
- }
- }
-
-}
diff --git a/1.6/Source/Genes/Patches/Patch_sexualize_pawn.cs b/1.6/Source/Genes/Patches/Patch_sexualize_pawn.cs
deleted file mode 100644
index 4e5ea56..0000000
--- a/1.6/Source/Genes/Patches/Patch_sexualize_pawn.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using rjw;
-using Verse;
-
-namespace RJW_Genes
-{
- internal static class Patch_sexualize_pawn
- {
- ///
- /// Harmony Patch for RJW.Sexualizer.sexualize_pawn, Simply checks to see if the pawn already has genitals and skips the function entirely if the pawn has already got genitals of some sort,
- /// may cause issues if pawn has all the 'no genitals' Genes?
- ///
- internal static bool PreFix(Pawn pawn ) {
- //if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn))
- if (!(Genital_Helper.has_genitals(pawn) || Genital_Helper.has_anus(pawn) || Genital_Helper.has_breasts(pawn)))
- {
- return true;
- }
-
- //DEBUG Info.
- string genitalList = "";
- foreach (Hediff genital in pawn.GetGenitalsList())
- {
- genitalList += genital.Label + ",";
- }
- ModLog.Debug($"RJW_Genes is currently pre-patching sexualize_pawn, and blocks it running if it detects the pawn already has genitals.");
- ModLog.Debug($"Pawn Already has some genitals, {genitalList}");
- return false;
- }
- }
-}
diff --git a/1.6/Source/Genes/Quirks/Defs/QirkExtension.cs b/1.6/Source/Genes/Quirks/Defs/QirkExtension.cs
deleted file mode 100644
index 8e90319..0000000
--- a/1.6/Source/Genes/Quirks/Defs/QirkExtension.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Verse;
-using RimWorld;
-using rjw;
-using System;
-
-namespace RJW_Genes
-{
- public class QirkExtension : DefModExtension
- {
- public string Satisfiedquirk;
- }
-}
diff --git a/1.6/Source/Genes/Quirks/QuirkPatcher.cs b/1.6/Source/Genes/Quirks/QuirkPatcher.cs
deleted file mode 100644
index 2945cda..0000000
--- a/1.6/Source/Genes/Quirks/QuirkPatcher.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-using Verse;
-using RimWorld;
-using rjw;
-using System.Collections.Generic;
-//using rjw.Modules.Quirks;
-using System;
-
-namespace RJW_Genes
-{
- public class QuirkPatcher
- {
- ///
- /// This Patch is applied after the quirk-satisfaction and checks
- /// a) which quirks can the sex-partner satisfy?
- /// b) which of the quirks has the pawn?
- ///
- /// The result of the Satisfied is an integer, based on the original framework.
- /// The framework "just checks" the number of satisfied quirks - we increase this number with this postfix.
- ///
- public static void CountSatisfiedPostfix(ref int __result, SexProps props)
- {
- /*
- if (props == null) return;
- Pawn pawn = props.pawn;
- Pawn partner = props.partner;
- if (partner == null || pawn == null) return;
- if(!pawn.IsHuman()||!partner.IsHuman()) return;
-
- List potentiallySatisfiedQuirks = new List();
- foreach (Gene gene in partner.genes.GenesListForReading)
- {
- if (partner.genes.HasActiveGene(gene.def))
- {
- string satisfiable_quirk = gene.def?.GetModExtension()?.Satisfiedquirk;
- if (!string.IsNullOrEmpty(satisfiable_quirk))
- {
- potentiallySatisfiedQuirks.Add(satisfiable_quirk);
- }
- }
- }
-
- int QuirksSatisfiedByGenes = -1;
-
- foreach (Quirk quirk in Quirk.All)
- {
- if (pawn.Has(quirk))
- {
- foreach (string satisfiableQuirk in potentiallySatisfiedQuirks)
- {
- if (!string.IsNullOrEmpty(satisfiableQuirk) && quirk.LocaliztionKey == satisfiableQuirk)
- {
- QuirksSatisfiedByGenes++;
- Quirk.AddThought(pawn);
- }
- }
- }
- }
-
- if(QuirksSatisfiedByGenes > 0)
- __result = __result + QuirksSatisfiedByGenes;
- return;
-*/
- }
-
- }
-
-}
diff --git a/1.6/Source/Genes/RJW_Gene.cs b/1.6/Source/Genes/RJW_Gene.cs
deleted file mode 100644
index b97dbd7..0000000
--- a/1.6/Source/Genes/RJW_Gene.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using rjw;
-using Verse;
-
-namespace RJW_Genes
-{
- public class RJW_Gene : Gene
- {
- ///
- /// PostMake is called after the gene is first in instanciated by Rimworld.Pawn_Genetracker , this is done just prior to the gene being added to the pawn.
- ///
- public override void PostMake()
- {
- base.PostMake();
- }
-
- ///
- /// The add function is what alters the Pawn when the gene is added, PostAdd is called at the end of the AddGene function in Rimworld.Pawn_Genetracker
- ///
- public override void PostAdd()
- {
- if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns.
- if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn))
- {
- Sexualizer.sexualize_pawn(pawn);
- }
- base.PostAdd();
-
- }
-
-
- ///
- /// Executed via PawnGenerator.GenerateGenes at Pawn generation
- /// Allows for execution of code that should only happen during PawnGeneration
- ///
- /// This has an accompanying patch `Patch_AddNotifyOnGeneration.cs`.
- ///
- public virtual void Notify_OnPawnGeneration()
- {
- }
- }
-}
diff --git a/1.6/Source/Genes/Reproduction/Gene_NoSexNeed.cs b/1.6/Source/Genes/Reproduction/Gene_NoSexNeed.cs
deleted file mode 100644
index 7af42e5..0000000
--- a/1.6/Source/Genes/Reproduction/Gene_NoSexNeed.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class Gene_NoSexNeed : Gene
- {
-
- public override void Tick()
- {
- base.Tick();
-
- if (!pawn.IsHashIntervalTick(3000))
- return;
- if (!pawn.ageTracker.Adult)
- return;
-
- if ((bool)(pawn?.genes?.HasActiveGene(GeneDefOf.rjw_genes_no_sex_need)))
- {
- var sex_need = pawn?.needs?.TryGetNeed();
- if (sex_need != null)
- sex_need.CurLevelPercentage = 0.6f;
- }
- }
- }
-}
diff --git a/1.6/Source/Genes/Special/Abilities/CompAbilityEffect_CocoonWeaver.cs b/1.6/Source/Genes/Special/Abilities/CompAbilityEffect_CocoonWeaver.cs
deleted file mode 100644
index a3af363..0000000
--- a/1.6/Source/Genes/Special/Abilities/CompAbilityEffect_CocoonWeaver.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using Verse;
-using RimWorld;
-using rjw;
-
-namespace RJW_Genes
-{
- ///
- /// The CocoonWeaver Ability applies the RJW-Cocoon to a pawn.
- /// Friendly Pawns can always be cocooned, neutral and hostile pawns must be downed.
- ///
- public class CompAbilityEffect_CocoonWeaver : CompAbilityEffect
- {
- private new CompProperties_AbilityCocoonWeaver Props
- {
- get
- {
- return (CompProperties_AbilityCocoonWeaver)this.props;
- }
- }
-
-
- public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
- {
- base.Apply(target, dest);
-
- Pawn CocooningPawn = this.parent.pawn;
- Pawn PawnToCocoon = target.Pawn;
-
- // Error Case - Null Pawn
- if (PawnToCocoon == null)
- {
- return;
- }
-
- PawnToCocoon.health.AddHediff(HediffDef.Named("RJW_Cocoon"));
-
- }
-
- ///
- /// For validity, there are a few checks:
- /// 0. Target is not already cocooned
- /// 1. Target is either Colonist / Prisoner
- /// 2. If the Target is an enemy or neutral, it must be downed.
- ///
- public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
- {
- Pawn cocoonTarget = target.Pawn;
- if (cocoonTarget != null)
- {
- bool CocoonTargetIsColonistOrPrisoner = cocoonTarget.Faction == this.parent.pawn.Faction || cocoonTarget.IsPrisonerOfColony;
- bool CocoonTargetIsHostile = cocoonTarget.HostileTo(this.parent.pawn);
- bool CocoonTargetIsDowned = cocoonTarget.Downed;
-
- if (cocoonTarget.health.hediffSet.hediffs.Any(t => t.def.defName == "RJW_Cocoon"))
- {
- if (throwMessages)
- Messages.Message(cocoonTarget.Name + " is already cocooned.", cocoonTarget, MessageTypeDefOf.RejectInput, false);
- return false;
- }
-
- if (!CocoonTargetIsColonistOrPrisoner && !(CocoonTargetIsHostile && CocoonTargetIsDowned))
- {
- if (throwMessages)
- {
- if (CocoonTargetIsHostile && !CocoonTargetIsDowned)
- {
- Messages.Message(cocoonTarget.Name + " is hostile, but not downed.", cocoonTarget, MessageTypeDefOf.RejectInput, false);
- }
- else if (!CocoonTargetIsColonistOrPrisoner)
- {
- Messages.Message(cocoonTarget.Name + " is not a part of the colony or hostile.", cocoonTarget, MessageTypeDefOf.RejectInput, false);
- }
- }
- return false;
- }
- }
- return base.Valid(target, throwMessages);
- }
-
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Special/Abilities/CompProperties_AbilityCocoonWeaver.cs b/1.6/Source/Genes/Special/Abilities/CompProperties_AbilityCocoonWeaver.cs
deleted file mode 100644
index caa63b6..0000000
--- a/1.6/Source/Genes/Special/Abilities/CompProperties_AbilityCocoonWeaver.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-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_AbilityCocoonWeaver : CompProperties_AbilityEffect
- {
- public CompProperties_AbilityCocoonWeaver()
- {
- this.compClass = typeof(CompAbilityEffect_CocoonWeaver);
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Special/Defs/AgeTransferExtension.cs b/1.6/Source/Genes/Special/Defs/AgeTransferExtension.cs
deleted file mode 100644
index e309381..0000000
--- a/1.6/Source/Genes/Special/Defs/AgeTransferExtension.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Verse;
-
-namespace RJW_Genes
-{
- public class AgeTransferExtension : DefModExtension
- {
- ///
- /// Amount by which the Biological Age Ticks will be changed.
- ///
- public int ageTickChange;
-
- ///
- /// Minimum Age for youthing to take place - pawns cannot end up underaged.
- ///
- public int minAgeInYears;
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Special/Defs/GeneAlteringExtension.cs b/1.6/Source/Genes/Special/Defs/GeneAlteringExtension.cs
deleted file mode 100644
index 64b40d4..0000000
--- a/1.6/Source/Genes/Special/Defs/GeneAlteringExtension.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class GeneAlteringExtension : DefModExtension
- {
- public List minorGenes;
- public List majorGenes;
-
- public float minorApplicationChance;
- public float majorApplicationChance;
- }
-}
diff --git a/1.6/Source/Genes/Special/Defs/HormonalSalivaExtension.cs b/1.6/Source/Genes/Special/Defs/HormonalSalivaExtension.cs
deleted file mode 100644
index 7c212f0..0000000
--- a/1.6/Source/Genes/Special/Defs/HormonalSalivaExtension.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- public class HormonalSalivaExtension : DefModExtension
- {
- ///
- /// How much the genitalia will growth per interaction.
- /// This is applied "flat", so if you have penis 0.5 and growthRate 0.05 it goes to 0.55, 0.60, 0.65 etc.
- ///
- public float sizeIncrement;
- ///
- /// Upper Limit for the body size - default should be 2-3
- ///
- public float maxBodySize;
- ///
- /// How much more cum the pawn will make.
- /// This is applied as multiplication, so if you have cum 20 and multiplier 1.1 you will have 22,24,27 etc.
- /// This leads to exponential growth, so try to keep it kinda low.
- ///
- public float cumMultiplier;
- }
-}
diff --git a/1.6/Source/Genes/Special/Genes/Gene_Aphrodisiac_Pheromones.cs b/1.6/Source/Genes/Special/Genes/Gene_Aphrodisiac_Pheromones.cs
deleted file mode 100644
index 6a64aa6..0000000
--- a/1.6/Source/Genes/Special/Genes/Gene_Aphrodisiac_Pheromones.cs
+++ /dev/null
@@ -1,103 +0,0 @@
-using System.Collections.Generic;
-using Verse;
-using RimWorld;
-
-namespace RJW_Genes
-{
- public class Gene_Aphrodisiac_Pheromones : Gene
- {
-
- // Default XML Setting is that it looses 4 Severity per day - so a "fully libido" gives 6h boost.
- // This means that adding +.25 equals 1.5h of Libido.
- // Tick Speed is hence set to 0.5h
-
- public const int APHRODISIAC_DISTANCE_FALLBACK = 25;
- const int TICK_INTERVAL_FALLBACK = 60000 / 48 ; // 60k = 1 day, we want 0.5h which is 1/48th of 1 day.
-
- const float SEXFREQ_THRESHOLD = 0.5f;
-
- // Summary: once every one hour check for all pawns nearby and in line of sight (same room) and add/renew a hediff which lasts for 1 hour.
- public override void Tick()
- {
- base.Tick();
-
- int tickInterval = ModExtensionHelper.GetTickIntervalFromModExtension(GeneDefOf.rjw_genes_aphrodisiac_pheromones, TICK_INTERVAL_FALLBACK);
-
- if (this.pawn.IsHashIntervalTick(tickInterval) && this.pawn.Map != null)
- {
- // Only spread pheromones if sexdrive above 1
- float sexfrequency = this.pawn.GetStatValue(StatDef.Named("SexFrequency"));
- if(sexfrequency > SEXFREQ_THRESHOLD)
- {
- foreach (Pawn pawn in this.AffectedPawns(this.pawn.Position, this.pawn.Map))
- {
- this.InduceAphrodisiac(pawn);
- }
- }
- }
- }
-
- // Creates an IEnumerable of all pawns which are closeby and in lineofsight, self and other pawns with aphrodisiac pheromones gene are skipped (to prevent loops).
- private IEnumerable AffectedPawns(IntVec3 pos, Map map)
- {
- foreach (Pawn pawn in map.mapPawns.AllPawns)
- {
- // Return for trivial errors
- if (pawn == null || this.pawn == null || pawn == this.pawn)
- continue;
- // Check for position-existance
- // 1.6 Pos Fix
- //if (pawn.Position == null || pos == null || pawn.Map == null)
- if (pawn.Map == null || !pos.InBounds(pawn.Map) || !pawn.Spawned)
- 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;
- // Sometimes things can happen if pawns de-spawn, are in Bed, or otherwise disappear (#183)
- if (!pawn.Spawned)
- continue;
- if (pawn.Crawling)
- continue;
- if (pawn.InBed())
- continue;
- // Do nothing for pawns that also have pheromones
- if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_aphrodisiac_pheromones))
- continue;
- // Do nothing for pawns that wear Gas-Masks
- if (pawn.apparel != null && pawn.apparel.AnyApparel)
- if (pawn.apparel.WornApparel.Any(apparel => apparel.def == RimWorld.ThingDefOf.Apparel_GasMask))
- continue;
-
- // Actual Logic:
- // Pawn qualifies in right distance and needs line of sight.
- int effectDistance = ModExtensionHelper.GetDistanceFromModExtension(GeneDefOf.rjw_genes_aphrodisiac_pheromones, APHRODISIAC_DISTANCE_FALLBACK);
- if (pos.DistanceTo(pawn.Position) < effectDistance && GenSight.LineOfSight(pos, pawn.Position, pawn.Map))
- {
- yield return pawn;
- }
- }
-
- yield break;
- }
-
- private void InduceAphrodisiac(Pawn pawn)
- {
- Hediff aphrodisiac = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_aphrodisiac_pheromone);
-
- if (aphrodisiac != null)
- {
- aphrodisiac.Severity += 0.25f;
- }
- else
- {
- aphrodisiac = HediffMaker.MakeHediff(HediffDefOf.rjw_genes_aphrodisiac_pheromone, pawn);
- aphrodisiac.Severity = 0.5f;
- pawn.health.AddHediff(aphrodisiac);
- }
- }
-
- }
-}
diff --git a/1.6/Source/Genes/Special/Patches/Patch_Aftersex_ApplyProgressingGeneticTransformations.cs b/1.6/Source/Genes/Special/Patches/Patch_Aftersex_ApplyProgressingGeneticTransformations.cs
deleted file mode 100644
index c7c0d5c..0000000
--- a/1.6/Source/Genes/Special/Patches/Patch_Aftersex_ApplyProgressingGeneticTransformations.cs
+++ /dev/null
@@ -1,181 +0,0 @@
-using HarmonyLib;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.Remoting.Lifetime;
-using UnityEngine;
-using Verse;
-
-namespace RJW_Genes
-{
- ///
- /// This patch handles the changes caused by transformation genes.
- /// It requires a transformation progress hediff managed by "HediffIncreaseOnSexExtension" and a set of genes, managed by GeneAlteringExtension.
- /// Otherwise, it will not operate.
- ///
- /// See #145 and the introducing PR #150. Thanks Archer.
- ///
- [HarmonyPatch(typeof(SexUtility), "Aftersex")]
- public static class Patch_Aftersex_ApplyProgressingGeneticTransformations
- {
- public static List GetGeneticTransformationGenes(Pawn pawn)
- {
- if (pawn != null && pawn.genes != null)
- {
- return pawn.genes
- .GenesListForReading
- .ConvertAll(gene => gene.def)
- .Where(genedef => pawn.genes.HasActiveGene(genedef))
- .Where(IsGeneAlteringGene)
- .Where(IsHediffIncreaseOnSexGene)
- .ToList();
- }
- return new List() { };
- }
- public static bool IsGeneAlteringGene(GeneDef geneDef)
- {
- if (geneDef == null) return false;
- GeneAlteringExtension geneAlteringExtension = geneDef.GetModExtension();
- return geneAlteringExtension != null;
- }
-
- public static bool IsHediffIncreaseOnSexGene(GeneDef geneDef)
- {
- if (geneDef == null) return false;
- HediffIncreaseOnSexExtension hediffOnSexExt = geneDef.GetModExtension();
- return hediffOnSexExt != null;
- }
-
- public static void Postfix(SexProps props)
- {
- if (props == null || props.pawn == null || !props.hasPartner() || props.partner == null)
- return;
- if (props.pawn.IsAnimal() || props.partner.IsAnimal())
- return;
-
- foreach (GeneDef geneDef in GetGeneticTransformationGenes(props.pawn))
- {
- ApplyTransformation(props.partner, geneDef);
- }
- foreach (GeneDef geneDef in GetGeneticTransformationGenes(props.partner))
- {
- ApplyTransformation(props.pawn, geneDef);
- }
- }
-
- public static void ApplyTransformation(Pawn pawn, GeneDef geneDef)
- {
- if (pawn == null || geneDef == null) return;
- var Random = new System.Random();
-
- GeneAlteringExtension geneAlteringExtension = geneDef.GetModExtension();
- if (geneAlteringExtension == null) return;
-
- HediffIncreaseOnSexExtension hediffOnSexExt = geneDef.GetModExtension();
- if (hediffOnSexExt == null) return;
-
- Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(hediffOnSexExt.hediffDef);
- if (hediff == null) return;
-
- if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_genetic_disease_immunity)) return;
-
- ModLog.Debug($"Found transformation gene {geneDef} in {pawn}, trying to perform transformation");
- switch (hediff.Severity)
- {
- case float f when f > 0.8f:
- {
- if (Random.NextDouble() <= geneAlteringExtension.majorApplicationChance)
- MajorChange(pawn, geneAlteringExtension, hediff.def.ToString());
- }
- break;
- case float f when f > 0.6f:
- {
- if (Random.NextDouble() <= geneAlteringExtension.minorApplicationChance)
- MinorChange(pawn, geneAlteringExtension, hediff.def.ToString());
- }
- break;
- default:
- {
- ModLog.Debug($"Tried to transform {pawn} - severity of transformation was too low ({hediff.def} @ {hediff.Severity} - {hediff.Label})");
- }
- break;
- }
- }
-
- private static void MinorChange(Pawn pawn, GeneAlteringExtension geneAlteringExtension, string Source = null)
- {
- List possibleGenes = geneAlteringExtension.minorGenes.ToList();
-
- GeneDef chosen = possibleGenes.RandomElement();
- if (chosen == null)
- {
- ModLog.Warning($"Error in retrieving a minor transformation gene for transforming {pawn} {(Source == null ? "" : $"(from {Source})")}");
- return;
- }
-
- if (!pawn.genes.GenesListForReading.Any(p => p.def == chosen))
- {
- List genes = pawn.genes.GenesListForReading;
- genes = genes.Where(x => pawn.genes.HasActiveGene(x.def)).ToList();
-
- foreach (Gene gene in genes)
- {
- ImmunityAgainstGenesExtension ext = gene.def.GetModExtension();
- if (ext != null)
- {
- foreach (string defname in ext.givesImmunityAgainst)
- if (chosen.defName == defname)
- return;
- }
- }
-
- ModLog.Debug($"{pawn} experienced a minor transformation; {pawn} got new gene {chosen} {(Source == null ? "" : $"(from {Source})")}.");
- pawn.genes.AddGene(chosen, !RJW_Genes_Settings.rjw_genes_genetic_disease_as_endogenes);
- }
-
- else
- {
- ModLog.Debug($"Tried to do a minor transformation {(Source == null ? "" : $"(from {Source}) ")}for {pawn} - {pawn} already had {chosen} or has immunity against it");
- }
- }
-
- private static void MajorChange(Pawn pawn, GeneAlteringExtension geneAlteringExtension, string Source = null)
- {
- List possibleGenes = geneAlteringExtension.majorGenes.ToList();
-
- GeneDef chosen = possibleGenes.RandomElement();
- if (chosen == null)
- {
- ModLog.Warning($"Error in retrieving a major transformation gene for transforming {pawn} {(Source == null ? "" : $"(from {Source})")}");
- return;
- }
-
- if (!pawn.genes.GenesListForReading.Any(p => p.def == chosen))
- {
- List genes = pawn.genes.GenesListForReading;
- genes = genes.Where(x => pawn.genes.HasActiveGene(x.def)).ToList();
-
- foreach (Gene gene in genes)
- {
- ImmunityAgainstGenesExtension ext = gene.def.GetModExtension();
- if (ext != null)
- {
- foreach (string defname in ext.givesImmunityAgainst)
- if (chosen.defName == defname)
- return;
- }
- }
-
- ModLog.Debug($"{pawn} experienced a major transformation; {pawn} got new gene {chosen} {(Source == null ? "" : $"(from {Source})")}.");
- pawn.genes.AddGene(chosen, !RJW_Genes_Settings.rjw_genes_genetic_disease_as_endogenes);
- }
-
- else
- {
- ModLog.Debug($"Tried to do a major transformation{(Source == null ? "" : $" (from {Source})")} for {pawn} - {pawn} already had {chosen}. Trying minor transformation for {pawn} instead");
- MinorChange(pawn, geneAlteringExtension, Source+"-MajorChangeFailed");
- }
- }
- }
-}
\ No newline at end of file
diff --git a/1.6/Source/Genes/Special/Patches/Patch_AgeDrain.cs b/1.6/Source/Genes/Special/Patches/Patch_AgeDrain.cs
deleted file mode 100644
index 059baef..0000000
--- a/1.6/Source/Genes/Special/Patches/Patch_AgeDrain.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using HarmonyLib;
-using RimWorld;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using UnityEngine;
-using Verse;
-
-namespace RJW_Genes.Genes.Special
-{
- [HarmonyPatch(typeof(SexUtility), "Aftersex")]
- 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_FALLBACK = 120000; // 120k == 2 days
- // 18 Years * 60 Days / Year * 60k Ticks/Day + 1 for safety
- const long MINIMUM_AGE_FALLBACK = 18 * 60 * 60000 + 1;
-
- const int FACTION_GOODWILL_CHANGE = -1;
-
- public static void Postfix(SexProps props)
- {
- if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal() )
- {
- return;
- }
-
- if (props.pawn == props.partner || props.sexType == xxx.rjwSextype.Masturbation || props.sexType == xxx.rjwSextype.None)
- {
- // This case was reported but is a bit strange, I hardened it after reports in #99
- return;
- }
-
- Pawn pawn = props.pawn;
- Pawn partner = props.partner;
-
- if (GeneUtility.IsAgeDrainer(pawn) && !GeneUtility.IsAgeDrainer(partner))
- {
- TransferAge(pawn, partner);
- }
- else if (GeneUtility.IsAgeDrainer(partner) && !GeneUtility.IsAgeDrainer(pawn))
- {
- TransferAge(partner,pawn);
- }
- else if (GeneUtility.IsAgeDrainer(partner) && GeneUtility.IsAgeDrainer(pawn) && RJW_Genes_Settings.rjw_genes_detailed_debug)
- {
- ModLog.Message($"[Sexual Age Drainer] both {pawn} and {partner} are sexual-age-drainers - nothing happens.");
- }
- }
-
- ///
- /// Transfers age from the giver to the receiver.
- ///
- /// The pawn that will receive biological-Age-Ticks, and becomes younger if they are not already young.
- /// The pawn that will be giving biological-Age-Ticks. This pawn is always aged, even if the other pawn is too young.
- private static void TransferAge(Pawn receiver, Pawn giver)
- {
- AgeTransferExtension transferExt = GeneDefOf.rjw_genes_sex_age_drain.GetModExtension();
- long age_transfered = transferExt?.ageTickChange ?? AGE_TRANSFERED_FALLBACK;
- long minimum_age = transferExt?.minAgeInYears * 60 * 60000 + 1 ?? MINIMUM_AGE_FALLBACK;
-
- var pawnAge = receiver.ageTracker.AgeBiologicalTicks;
-
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- ModLog.Message($"[Sexual Age Drainer] {receiver} is aging {giver} by {age_transfered} ({Math.Round(age_transfered / 60000.0, 2)} days)");
-
- // Giver ALWAYS ages
- giver.ageTracker.AgeBiologicalTicks += age_transfered;
-
- // Make Receiver younger if they are older than minimum age
- if (pawnAge - age_transfered > minimum_age)
- receiver.ageTracker.AgeBiologicalTicks = Math.Max(minimum_age, (pawnAge - age_transfered));
- else {
- if (RJW_Genes_Settings.rjw_genes_detailed_debug)
- ModLog.Message($"[Sexual Age Drainer] {receiver} was too young ({receiver.ageTracker.AgeBiologicalYears}), and remains unchanged.");
- }
-
- FactionUtility.HandleFactionGoodWillPenalties(receiver, giver, "rjw_genes_GoodwillChangedReason_aged_pawn_with_sex_gene",FACTION_GOODWILL_CHANGE);
- }
-
- }
-}
diff --git a/1.6/Source/Genes/Special/Patches/Patch_ElectricSatisfaction.cs b/1.6/Source/Genes/Special/Patches/Patch_ElectricSatisfaction.cs
deleted file mode 100644
index 4e51955..0000000
--- a/1.6/Source/Genes/Special/Patches/Patch_ElectricSatisfaction.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using HarmonyLib;
-using RimWorld;
-using rjw;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-
-namespace RJW_Genes
-{
- [HarmonyPatch(typeof(SexUtility), nameof(SexUtility.SatisfyPersonal))]
- public static class Patch_ElectricSatisfaction
- {
-
-
- public static void Postfix(SexProps props)
- {
- if (props.pawn == null || props.pawn.Map == null || props.pawn.GetRoom() == null) return;
- if (props.pawn.genes == null || !props.pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_electric_satisfaction)) return;
-
- BoundedExtension bounds = GeneDefOf.rjw_genes_electric_satisfaction.GetModExtension();
- (float,float) electricityRange =bounds != null ? (bounds.minimum, bounds.maximum) : (100,100);
- DistanceExtension range = GeneDefOf.rjw_genes_electric_satisfaction.GetModExtension();
- float maxDistance = range != null ? range.distance : 5;
-
- Room room = props.pawn.GetRoom();
- List possibleTargets = new List();
- possibleTargets.AddRange(room.ContainedThings());
- possibleTargets.AddRange(room.ContainedThings());
- possibleTargets.AddRange(room.ContainedThings