diff --git a/CHANGELOG.md b/CHANGELOG.md
index 89390cf..af67de6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,43 +3,42 @@
**Changes:**
- Cocoon Weaver Gene
-- Spawn Spelopede Gene (Can be changed to spawn Megascarabs or other insects via xml)
-- Queens & Caste Logic (see below)
+- Spawn Spelopede Gene (Can be changed to spawn megascarabs or other insects via xml)
+- Queens & Caste logic (see below)
- Addition to InsectIncubator: Now fertilizes eggs once placed inside a host, and breeds out eggs twice as fast.
+- Many new icons
+- Custom background icons when Vanilla-Expanded-Framework is loaded
**Internal:**
-- Renamed Abilities to have _ability_ in their name, to not exactly match the gene-defnames.
-- Moved Insect-Incubator & Insect-Breeder to Hive Category and Folders
+- Renamed abilities to have _ability_ in their name, to not exactly match the gene-defnames.
+- Moved Insect-Incubator & Insect-Breeder to hive category and folders (from breeding)
**Fixes:**
- Cockeater Ability has now Icon of Cockeater Gene
- Cockeater now leaves a bite wound!
- Pythokin-Patch checks for Licentialabs (#30)
+- Removed Sex-Change thoughts for pawns born or spawned with a gender-altering gene (Issue #32, PR #33 by @callavico)
**Queen & Caste Logic**
There are 3 genes revolting around a new, hopefully flexible insect-caste system. Queens, Drones and Workers. These reproduce either through normal sex, or can utilize the insect birth once [this PR](https://gitgud.io/Ed86/rjw/-/merge_requests/266) has been merged in.
+Update: It has been merged into [RJW 5.3.5](https://gitgud.io/Ed86/rjw/-/tags/5.3.5), make sure you update!
In general, the logic is the following:
- A queen can have sex with anyone. If the partner was a drone, there is chance for the baby to become a queen, drone or worker.
- If the partner of the queen was not a drone, the baby will be a worker.
- If the drone didn't mate with a queen but someone else, normal inheritance happens
-- The assignemnt is done by xenotypes for queen and drones. The baby will get all xenogenes of their parents xenotypes.
+- The assignment is done by xenotypes for queen and drones. The baby will get all xenogenes of their parents chosen xenotypes.
- For workers, every queen can have a set of genes for their workers defined in [a special def](./Common/Defs/QueenWorkerMappingDefs/QueenWorkerMappingDefs_base.xml). These will be added as endogenes, so that pawns can still become xenotypes.
-- There is a default set for worker genes, making mentally dumb, sterile and servile pawns.
-- Chances for Offsprings (Drone, Queen, Worker) is defined in an [XML-Def](./Common/Defs/HiveOffspringChanceDef/HiveOffspringChanceDefs.xml)
+- There is a default gene-set for workers, making dumb, sterile and servile pawns.
+- Chances for Offsprings (Drone, Queen, Worker) is defined in an [XML-Def](./Common/Defs/HiveOffspringChanceDef/HiveOffspringChanceDefs.xml). They are set per Queen.
-I am not sure if I want to have a specific mapping defining that Queen can only mate with certain Drones, let me know how you feel about it.
+I am not sure if I want to have a specific mapping defining that queen can only mate with certain drones, let me know how you feel about it.
*Queens can be male*. I just used the female-term, but implementation is gender-neutral.
-**ToDo:**
-
-- Icons: Cocoon, Spelopede Spawn
-- Sound: Spelopede Spawn
-
# 1.1.4
Fixes:
diff --git a/Common/Defs/GeneDefs/GeneDefs_Breeding.xml b/Common/Defs/GeneDefs/GeneDefs_Breeding.xml
index 7482459..aadecc9 100644
--- a/Common/Defs/GeneDefs/GeneDefs_Breeding.xml
+++ b/Common/Defs/GeneDefs/GeneDefs_Breeding.xml
@@ -11,21 +11,34 @@
rjw_genes_breeding1-1
+
+
+
+
@@ -23,7 +30,7 @@
rjw_genes_much_cumMales of this species produce a lot of fluid.
- Genes/Icons/Bonus_Cum
+ Genes/Icons/Much_CumRJW_Genes.Gene_MuchCum5341
@@ -34,7 +41,7 @@
rjw_genes_very_much_cumMales of this species produce a whole lot of fluid. They are like fountains basically.
- Genes/Icons/Much_Bonus_Cum
+ Genes/Icons/Very_Much_CumRJW_Genes.Gene_VeryMuchCum5351
@@ -55,7 +62,14 @@
+
@@ -78,6 +99,13 @@
When this Xenotype transfers nutrition via cumshot, the giver will not get hungry. (Licentia Configuration for Transfer Nutrition must be enabled).Genes/Icons/Generous_Donor538
+
+
+
+
+ rjw_genes_extra_penis
@@ -34,7 +40,7 @@
rjw_genes_extra_vaginaFemales of this species grow an additional vagina .
- Genes/Icons/extra_female
+ Genes/Icons/Extra_VaginaRJW_Genes.Gene_ExtraVagina703
@@ -46,7 +52,7 @@
rjw_genes_no_vaginaFemales of this do not have a vagina.
- Genes/Icons/No_Female_Genitalia
+ Genes/Icons/No_VaginaRJW_Genes.Gene_NoVagina704
@@ -127,5 +133,19 @@
BreastAmount
-
+
\ No newline at end of file
diff --git a/Common/Defs/GeneDefs/GeneDefs_GenitaliaSizes.xml b/Common/Defs/GeneDefs/GeneDefs_GenitaliaSizes.xml
index c5d8826..5c43285 100644
--- a/Common/Defs/GeneDefs/GeneDefs_GenitaliaSizes.xml
+++ b/Common/Defs/GeneDefs/GeneDefs_GenitaliaSizes.xml
@@ -2,7 +2,14 @@
rjw_genes_genitalia_size
-
+
+
+
+
+
@@ -58,7 +65,7 @@
rjw_genes_slime_genitaliaCarriers of this gene have slime genitalia.
- Genes/Icons/Genitalia_Slime
+ Genes/Icons/Slime_GenitaliaRJW_Genes.Gene_SlimeGenitalia807
@@ -67,9 +74,10 @@
rjw_genes_ovipositor_genitaliaCarriers of this gene have ovipositors similar to insects.
- Genes/Icons/Genitalia_Insect
+ Genes/Icons/Ovipositor_GenitaliaRJW_Genes.Gene_OvipositorGenitalia808
+
\ No newline at end of file
diff --git a/Common/Defs/GeneDefs/GeneDefs_Hive.xml b/Common/Defs/GeneDefs/GeneDefs_Hive.xml
index 84b15ff..33c9c74 100644
--- a/Common/Defs/GeneDefs/GeneDefs_Hive.xml
+++ b/Common/Defs/GeneDefs/GeneDefs_Hive.xml
@@ -1,13 +1,24 @@
-
+
+
+ rjw_genes_hive
+
+
+
+
+
+
+ rjw_genes_queenqueenThis gene represents the royal caste amongst its xenotype. Children of a queen are usually born as sterile workers, unless the father was a drone. Having multiple (adult) queens leads to intense rivalry and can throw the whole colony into chaos!
- Things/Mote/Heart
+ Genes/Icons/queen1
- rjw_genes_hive0.5
@@ -41,14 +52,13 @@
-3
-
+ rjw_genes_dronedroneThis gene represents the drone caste amongst its xenotype. Drones are highly specialised experts that ensure the hives functioning. Other than that, drones are the only xenotypes capable of producing fertile offspring with a queen.
- Things/Mote/Heart
+ Genes/Icons/drone2
- rjw_genes_hive
rjw_genes_hive_caste
@@ -70,14 +80,13 @@
-
+ rjw_genes_workerworker
- This gene represents the lowest caste of a hive, the workers. Usually sterile, they are despised by higher castes and only live to serve with labour.
- Things/Mote/Heart
+ This gene marks the lowest caste of a hive, the workers. Usually sterile, they are despised by higher castes and only live to serve with labour.
+ Genes/Icons/worker3
- rjw_genes_hive
rjw_genes_hive_caste
@@ -113,14 +122,13 @@
-
+ rjw_genes_zealous_loyaltyloyaltyCarriers of this gene are genetically wired to worship carriers of the 'Queen'-gene. They receive a massive relation-ship bonus towards the queen and a slight mood bonus. Having multiple queens in the colony causes severe distress.Things/Mote/Heart10
- rjw_genes_hive
+
-
+ rjw_genes_cocoonweavercocooner
- Carriers of this gene can produce a cocoon to prepare helpless victims for breeding.
- Things/Mote/Heart
+ Carriers of this gene can produce a cocoon to prepare helpless (or willing) victims for breeding.
+ Genes/Icons/Cocoon11
- rjw_genes_hive
rjw_genes_ability_cocoonweaver
@@ -148,14 +162,13 @@
-1
-
+ rjw_genes_spawn_spelopede
- cocooner
+ spelopedeCarriers of this gene can generate tame spelopedes. Higher psychic-sensitivity will spawn more spelopedes.World/WorldObjects/Expanding/Insects12
- rjw_genes_hive
rjw_genes_ability_spawn_spelopede
@@ -166,28 +179,44 @@
-1
-
-
- rjw_genes_insectincubator
-
- RJW_Genes.Gene_InsectIncubator
- Pawns with this gene are able to host more insect eggs, hatch them faster and fertilize any inserted egg.
- Genes/Icons/More_Egg_Space
- 52
- rjw_genes_hive
- 1
- -1
-
-
-
- rjw_genes_insectbreeder
-
- Pawns with this gene are able to fertilize eggs with any fertile penis.
- World/WorldObjects/Expanding/Insects
- 53
- rjw_genes_hive
- 1
- -1
-
+
+ rjw_genes_insectincubator
+
+ RJW_Genes.Gene_InsectIncubator
+ Pawns with this gene are able to hold more insect eggs.
+ Genes/Icons/Egg
+ 52
+ 1
+ -1
+
+
+
+ rjw_genes_insectbreeder
+
+ Pawns with this gene are able to fertilize eggs with any fertile penis.
+ Genes/Icons/Insect_Breeder
+ 53
+ 1
+ -1
+
+
+
+
@@ -107,7 +135,7 @@
paralysing kissCarriers of this gene are able to briefly stun an enemy with a kiss.
- Genes/Icons/rjw_genes_lips
+ Genes/Icons/Paralysing_Kissrjw_genes_lifeforce12rjw_genes_fertilin
@@ -125,6 +153,13 @@
+ rjw_genes_drainerCarriers 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.
- Things/Mote/Heart
+ Genes/Icons/Vitality_Drainerrjw_genes_lifeforce4rjw_genes_fertilin1-1
+
+
+
+
+
+
+ rjw_genes_orgasm_rush
- rjw_genes_specialOn Orgasm, carriers of this gene get a boost in activity. (rest-need is partially filled)1-2
@@ -11,10 +22,9 @@
1
-
+ rjw_genes_youth_fountain
- rjw_genes_specialHaving sex with a carrier of this gene makes the partner slightly younger. (Partner stays adult)2-2
@@ -22,10 +32,9 @@
2
-
+ rjw_genes_sex_age_drain
- rjw_genes_specialHaving sex transfers some of the partners life-time to themselves. (Pawn stays adult)2-1
@@ -33,13 +42,12 @@
3
-
+ rjw_genes_aphrodisiac_pheromones
- rjw_genes_specialRJW_Genes.Gene_Aphrodisiac_PheromonesPheremones of this pawn induce an incressed sexdrive to others nearby.
- UI/Memes/FleshPurity
+ Genes/Icons/Pheromones411
diff --git a/Common/Defs/GeneDefs/GeneDefs_SpecifiedGender.xml b/Common/Defs/GeneDefs/GeneDefs_SpecifiedGender.xml
index e168411..0cd226f 100644
--- a/Common/Defs/GeneDefs/GeneDefs_SpecifiedGender.xml
+++ b/Common/Defs/GeneDefs/GeneDefs_SpecifiedGender.xml
@@ -9,6 +9,13 @@
Genes/Icons/Female_OnlyRJW_Genes.Gene_FemaleOnly1
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Common/Defs/GeneDefs/Xenotype_Lifeforce.xml b/Common/Defs/GeneDefs/Xenotype_Lifeforce.xml
index 38dfa28..646d4c8 100644
--- a/Common/Defs/GeneDefs/Xenotype_Lifeforce.xml
+++ b/Common/Defs/GeneDefs/Xenotype_Lifeforce.xml
@@ -6,7 +6,7 @@
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.
- UI/Icons/Xenotypes/Sanguophage
+ Genes/Icons/Xenotypes/Xenotype-SuccubusPawnBecameSanguophage0.50.1~140
@@ -53,7 +53,7 @@
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.
- UI/Icons/Xenotypes/Sanguophage
+ Genes/Icons/Xenotypes/Xenotype-IncubusPawnBecameSanguophage0.50.1~140
@@ -98,7 +98,7 @@
Cumazone are a female only xenotype that excel at meele 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 meele. Their only source for Fertilin is biting of 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.
- UI/Icons/Xenotypes/Neanderthal
+ Genes/Icons/Xenotypes/Xenotype-Cumazon0.50.1~1402.5
diff --git a/Common/Defs/ThoughtDefs/Thoughts_Hive.xml b/Common/Defs/ThoughtDefs/Thoughts_Hive.xml
index b728812..8a232b3 100644
--- a/Common/Defs/ThoughtDefs/Thoughts_Hive.xml
+++ b/Common/Defs/ThoughtDefs/Thoughts_Hive.xml
@@ -30,6 +30,19 @@
+
+ rjw_genes_queen_despises_workers_social
+ Thought_SituationalSocial
+ RJW_Genes.ThoughtWorker_WorkerDespised_Social
+
+
+
+ those workers are not even worth a glance.
+ -20
+
+
+
+
rjw_genes_multiple_queens_mood
diff --git a/Common/Textures/Genes/Icons/Bonus_Cum.png b/Common/Textures/Genes/Icons/Bonus_Cum.png
deleted file mode 100644
index e6c51a4..0000000
Binary files a/Common/Textures/Genes/Icons/Bonus_Cum.png and /dev/null differ
diff --git a/Common/Textures/Genes/Icons/Cocoon.png b/Common/Textures/Genes/Icons/Cocoon.png
new file mode 100644
index 0000000..5e9b0bc
Binary files /dev/null and b/Common/Textures/Genes/Icons/Cocoon.png differ
diff --git a/Common/Textures/Genes/Icons/Egg.png b/Common/Textures/Genes/Icons/Egg.png
new file mode 100644
index 0000000..a635f14
Binary files /dev/null and b/Common/Textures/Genes/Icons/Egg.png differ
diff --git a/Common/Textures/Genes/Icons/Extra_Vagina.png b/Common/Textures/Genes/Icons/Extra_Vagina.png
new file mode 100644
index 0000000..4c93501
Binary files /dev/null and b/Common/Textures/Genes/Icons/Extra_Vagina.png differ
diff --git a/Common/Textures/Genes/Icons/Fervent_Ovipositor.png b/Common/Textures/Genes/Icons/Fervent_Ovipositor.png
new file mode 100644
index 0000000..daa1704
Binary files /dev/null and b/Common/Textures/Genes/Icons/Fervent_Ovipositor.png differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_Insect.png b/Common/Textures/Genes/Icons/Genitalia_Insect.png
deleted file mode 100644
index e71cabe..0000000
Binary files a/Common/Textures/Genes/Icons/Genitalia_Insect.png and /dev/null differ
diff --git a/Common/Textures/Genes/Icons/Genitalia_Slime.png b/Common/Textures/Genes/Icons/Genitalia_Slime.png
deleted file mode 100644
index ee7ae69..0000000
Binary files a/Common/Textures/Genes/Icons/Genitalia_Slime.png and /dev/null differ
diff --git a/Common/Textures/Genes/Icons/Insect_Breeder.png b/Common/Textures/Genes/Icons/Insect_Breeder.png
new file mode 100644
index 0000000..4898614
Binary files /dev/null and b/Common/Textures/Genes/Icons/Insect_Breeder.png differ
diff --git a/Common/Textures/Genes/Icons/Loose_Female_Genitalia.png b/Common/Textures/Genes/Icons/Loose_Female_Genitalia.png
deleted file mode 100644
index 63b6a9c..0000000
Binary files a/Common/Textures/Genes/Icons/Loose_Female_Genitalia.png and /dev/null differ
diff --git a/Common/Textures/Genes/Icons/Loose_Vagina.png b/Common/Textures/Genes/Icons/Loose_Vagina.png
new file mode 100644
index 0000000..c1b5808
Binary files /dev/null and b/Common/Textures/Genes/Icons/Loose_Vagina.png differ
diff --git a/Common/Textures/Genes/Icons/Loyalty.png b/Common/Textures/Genes/Icons/Loyalty.png
new file mode 100644
index 0000000..f7cbe57
Binary files /dev/null and b/Common/Textures/Genes/Icons/Loyalty.png differ
diff --git a/Common/Textures/Genes/Icons/More_Egg_Space.png b/Common/Textures/Genes/Icons/More_Egg_Space.png
deleted file mode 100644
index 35fbcb3..0000000
Binary files a/Common/Textures/Genes/Icons/More_Egg_Space.png and /dev/null differ
diff --git a/Common/Textures/Genes/Icons/Much_Bonus_Cum.png b/Common/Textures/Genes/Icons/Much_Bonus_Cum.png
deleted file mode 100644
index d512725..0000000
Binary files a/Common/Textures/Genes/Icons/Much_Bonus_Cum.png and /dev/null differ
diff --git a/Common/Textures/Genes/Icons/No_Cum.png b/Common/Textures/Genes/Icons/No_Cum.png
index 2084b5e..8bcdc81 100644
Binary files a/Common/Textures/Genes/Icons/No_Cum.png and b/Common/Textures/Genes/Icons/No_Cum.png differ
diff --git a/Common/Textures/Genes/Icons/No_Female_Genitalia.png b/Common/Textures/Genes/Icons/No_Female_Genitalia.png
deleted file mode 100644
index 9405ce7..0000000
Binary files a/Common/Textures/Genes/Icons/No_Female_Genitalia.png and /dev/null differ
diff --git a/Common/Textures/Genes/Icons/No_Vagina.png b/Common/Textures/Genes/Icons/No_Vagina.png
new file mode 100644
index 0000000..ec99f03
Binary files /dev/null and b/Common/Textures/Genes/Icons/No_Vagina.png differ
diff --git a/Common/Textures/Genes/Icons/Ovipositor_Genitalia.png b/Common/Textures/Genes/Icons/Ovipositor_Genitalia.png
new file mode 100644
index 0000000..a2b5806
Binary files /dev/null and b/Common/Textures/Genes/Icons/Ovipositor_Genitalia.png differ
diff --git a/Common/Textures/Genes/Icons/Paralysing_Kiss.png b/Common/Textures/Genes/Icons/Paralysing_Kiss.png
new file mode 100644
index 0000000..20c4fd5
Binary files /dev/null and b/Common/Textures/Genes/Icons/Paralysing_Kiss.png differ
diff --git a/Common/Textures/Genes/Icons/Pheromones.png b/Common/Textures/Genes/Icons/Pheromones.png
new file mode 100644
index 0000000..88a6c53
Binary files /dev/null and b/Common/Textures/Genes/Icons/Pheromones.png differ
diff --git a/Common/Textures/Genes/Icons/RJW-Genes_Endogene_Background (Not in use now).png b/Common/Textures/Genes/Icons/RJW_Genes_Endogene_Background.png
similarity index 100%
rename from Common/Textures/Genes/Icons/RJW-Genes_Endogene_Background (Not in use now).png
rename to Common/Textures/Genes/Icons/RJW_Genes_Endogene_Background.png
diff --git a/Common/Textures/Genes/Icons/RJW-Genes_Xenogene_Background (Not in use now).png b/Common/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.png
similarity index 100%
rename from Common/Textures/Genes/Icons/RJW-Genes_Xenogene_Background (Not in use now).png
rename to Common/Textures/Genes/Icons/RJW_Genes_Xenogene_Background.png
diff --git a/Common/Textures/Genes/Icons/Slime_Genitalia.png b/Common/Textures/Genes/Icons/Slime_Genitalia.png
new file mode 100644
index 0000000..09bbd61
Binary files /dev/null and b/Common/Textures/Genes/Icons/Slime_Genitalia.png differ
diff --git a/Common/Textures/Genes/Icons/Tight_Female_Genitalia.png b/Common/Textures/Genes/Icons/Tight_Female_Genitalia.png
deleted file mode 100644
index d0931fa..0000000
Binary files a/Common/Textures/Genes/Icons/Tight_Female_Genitalia.png and /dev/null differ
diff --git a/Common/Textures/Genes/Icons/Tight_Vagina.png b/Common/Textures/Genes/Icons/Tight_Vagina.png
new file mode 100644
index 0000000..cd8be97
Binary files /dev/null and b/Common/Textures/Genes/Icons/Tight_Vagina.png differ
diff --git a/Common/Textures/Genes/Icons/Vitality_Drainer.png b/Common/Textures/Genes/Icons/Vitality_Drainer.png
new file mode 100644
index 0000000..eb310c1
Binary files /dev/null and b/Common/Textures/Genes/Icons/Vitality_Drainer.png differ
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.png b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.png
new file mode 100644
index 0000000..9ffab2c
Binary files /dev/null and b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Breeder.png differ
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.png b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.png
new file mode 100644
index 0000000..8d285e5
Binary files /dev/null and b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Cumazon.png differ
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.png b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.png
new file mode 100644
index 0000000..e831799
Binary files /dev/null and b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Guard.png differ
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.png b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.png
new file mode 100644
index 0000000..14d6685
Binary files /dev/null and b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Incubus.png differ
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.png b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.png
new file mode 100644
index 0000000..9b0f425
Binary files /dev/null and b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Queen.png differ
diff --git a/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.png b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.png
new file mode 100644
index 0000000..dddb34d
Binary files /dev/null and b/Common/Textures/Genes/Icons/Xenotypes/Xenotype-Succubus.png differ
diff --git a/Common/Textures/Genes/Icons/drone.png b/Common/Textures/Genes/Icons/drone.png
new file mode 100644
index 0000000..e600639
Binary files /dev/null and b/Common/Textures/Genes/Icons/drone.png differ
diff --git a/Common/Textures/Genes/Icons/extra_female.png b/Common/Textures/Genes/Icons/extra_female.png
deleted file mode 100644
index 1a6ae6e..0000000
Binary files a/Common/Textures/Genes/Icons/extra_female.png and /dev/null differ
diff --git a/Common/Textures/Genes/Icons/much_cum.png b/Common/Textures/Genes/Icons/much_cum.png
new file mode 100644
index 0000000..412030f
Binary files /dev/null and b/Common/Textures/Genes/Icons/much_cum.png differ
diff --git a/Common/Textures/Genes/Icons/queen.png b/Common/Textures/Genes/Icons/queen.png
new file mode 100644
index 0000000..8ef515f
Binary files /dev/null and b/Common/Textures/Genes/Icons/queen.png differ
diff --git a/Common/Textures/Genes/Icons/very_much_cum.png b/Common/Textures/Genes/Icons/very_much_cum.png
new file mode 100644
index 0000000..0e692ff
Binary files /dev/null and b/Common/Textures/Genes/Icons/very_much_cum.png differ
diff --git a/Common/Textures/Genes/Icons/worker.png b/Common/Textures/Genes/Icons/worker.png
new file mode 100644
index 0000000..743caa0
Binary files /dev/null and b/Common/Textures/Genes/Icons/worker.png differ
diff --git a/Source/Genes/ExtraGenitalia/Gene_FeaturelessChest.cs b/Source/Genes/ExtraGenitalia/Gene_FeaturelessChest.cs
index 8a93c51..00b4c82 100644
--- a/Source/Genes/ExtraGenitalia/Gene_FeaturelessChest.cs
+++ b/Source/Genes/ExtraGenitalia/Gene_FeaturelessChest.cs
@@ -1,6 +1,5 @@
using Verse;
using rjw;
-using RimWorld;
namespace RJW_Genes
{
@@ -54,7 +53,7 @@ namespace RJW_Genes
internal void AddFeaturelessBreast()
{
var partBPR = Genital_Helper.get_breastsBPR(pawn);
- this.added_nipples = pawn.health.AddHediff(Genital_Helper.featureless_chest, partBPR);
+ added_nipples = pawn.health.AddHediff(Genital_Helper.featureless_chest, partBPR);
}
}
diff --git a/Source/Genes/ExtraGenitalia/Gene_NoAnus.cs b/Source/Genes/ExtraGenitalia/Gene_NoAnus.cs
index d23b2df..8aad9ab 100644
--- a/Source/Genes/ExtraGenitalia/Gene_NoAnus.cs
+++ b/Source/Genes/ExtraGenitalia/Gene_NoAnus.cs
@@ -9,9 +9,6 @@ namespace RJW_Genes
internal Hediff removed_anus;
- // TODO: This gene only works if another Gene was set specifying the genitalia.
- // If it is added later, it still works, but on creation it needs a different
- // TODO: If all Genitalia are removed by genes, RJW adds some to the pawns at spawn
public override void PostMake()
{
base.PostMake();
diff --git a/Source/Genes/ExtraGenitalia/Gene_NoBreasts.cs b/Source/Genes/ExtraGenitalia/Gene_NoBreasts.cs
index 874ff5f..caa0a5c 100644
--- a/Source/Genes/ExtraGenitalia/Gene_NoBreasts.cs
+++ b/Source/Genes/ExtraGenitalia/Gene_NoBreasts.cs
@@ -52,15 +52,5 @@ namespace RJW_Genes
}
}
- /*
- ///
- /// Adds a "rjw.featurelesschest", which means nipples but nothing else (like male human pawns do).
- ///
- internal void AddFeaturelessBreast()
- {
- var partBPR = Genital_Helper.get_breastsBPR(pawn);
- //this.added_nipples = pawn.health.AddHediff(Genital_Helper.featureless_chest, partBPR);
- }
- */
}
}
diff --git a/Source/Genes/ExtraGenitalia/Gene_NoPenis.cs b/Source/Genes/ExtraGenitalia/Gene_NoPenis.cs
index be67ef4..b107a5a 100644
--- a/Source/Genes/ExtraGenitalia/Gene_NoPenis.cs
+++ b/Source/Genes/ExtraGenitalia/Gene_NoPenis.cs
@@ -9,9 +9,6 @@ namespace RJW_Genes
internal Hediff removed_penis;
- // TODO: This gene only works if another Gene was set specifying the genitalia.
- // If it is added later, it still works, but on creation it needs a different
- // TODO: If all Genitalia are removed by genes, RJW adds some to the pawns at spawn
public override void PostMake()
{
base.PostMake();
diff --git a/Source/Genes/ExtraGenitalia/Gene_NoVagina.cs b/Source/Genes/ExtraGenitalia/Gene_NoVagina.cs
index 8083f58..438d76e 100644
--- a/Source/Genes/ExtraGenitalia/Gene_NoVagina.cs
+++ b/Source/Genes/ExtraGenitalia/Gene_NoVagina.cs
@@ -8,10 +8,7 @@ namespace RJW_Genes
{
internal Hediff removed_vagina;
-
- // TODO: This gene only works if another Gene was set specifying the genitalia.
- // If it is added later, it still works, but on creation it needs a different
- // TODO: If all Genitalia are removed by genes, RJW adds some to the pawns at spawn
+
public override void PostMake()
{
base.PostMake();
diff --git a/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs b/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs
new file mode 100644
index 0000000..e098a8c
--- /dev/null
+++ b/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs
@@ -0,0 +1,78 @@
+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 removed_breasts;
+ Hediff added_udders;
+
+ public override void PostMake()
+ {
+ base.PostMake();
+
+ // Breasts are replaced for female,trap and futa pawns
+ if ( removed_breasts == null
+ && (GenderUtility.IsFemale(pawn) || GenderHelper.GetSex(pawn) == GenderHelper.Sex.futa || GenderHelper.GetSex(pawn) == GenderHelper.Sex.trap)
+ )
+ {
+ RemoveButStoreBreasts();
+ AddUdders();
+ }
+
+ }
+
+ public override void PostAdd()
+ {
+ base.PostAdd();
+
+ // Breasts are replaced for female,trap and futa pawns
+ if (removed_breasts == null
+ && (GenderUtility.IsFemale(pawn) || GenderHelper.GetSex(pawn) == GenderHelper.Sex.futa || GenderHelper.GetSex(pawn) == GenderHelper.Sex.trap)
+ )
+ {
+ RemoveButStoreBreasts();
+ AddUdders();
+ }
+ }
+
+ public override void PostRemove()
+ {
+ base.PostRemove();
+ // Re-Add the old breasts
+ if (removed_breasts != null)
+ pawn.health.AddHediff(removed_breasts);
+ if (added_udders != null)
+ pawn.health.RemoveHediff(added_udders);
+ }
+
+ 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 AddUdders()
+ {
+ BodyPartRecord bpr = Genital_Helper.get_uddersBPR(pawn);
+ added_udders = pawn.health.AddHediff(Genital_Helper.udder_breasts, bpr);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Source/Genes/Gender/GenderUtility.cs b/Source/Genes/Gender/GenderUtility.cs
index 3297a0b..10b811d 100644
--- a/Source/Genes/Gender/GenderUtility.cs
+++ b/Source/Genes/Gender/GenderUtility.cs
@@ -75,6 +75,13 @@ namespace RJW_Genes
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
@@ -83,7 +90,7 @@ namespace RJW_Genes
if(wasSexThoughts == null || sexChangeThoughts == null || !wasSexThoughts.Any() || !sexChangeThoughts.Any())
{
- Log.Error($"Couldn't get values from RJW.\nold_sex_list: {wasSexThoughts.ToStringSafeEnumerable()}\nSexChangeThoughts: {sexChangeThoughts.ToStringSafeEnumerable()}");
+ Log.Warning($"Couldn't get values from RJW.\nold_sex_list: {wasSexThoughts.ToStringSafeEnumerable()}\nSexChangeThoughts: {sexChangeThoughts.ToStringSafeEnumerable()}");
return;
}
diff --git a/Source/Genes/Gender/Gene_FemaleOnly.cs b/Source/Genes/Gender/Gene_FemaleOnly.cs
index bc8ac20..97c4365 100644
--- a/Source/Genes/Gender/Gene_FemaleOnly.cs
+++ b/Source/Genes/Gender/Gene_FemaleOnly.cs
@@ -41,7 +41,7 @@ namespace RJW_Genes
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.
+ // 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)
GenderUtility.RemoveAllSexChangeThoughts(pawn);
}
}
diff --git a/Source/Genes/Gender/Gene_MaleOnly.cs b/Source/Genes/Gender/Gene_MaleOnly.cs
index eba7ce5..e081700 100644
--- a/Source/Genes/Gender/Gene_MaleOnly.cs
+++ b/Source/Genes/Gender/Gene_MaleOnly.cs
@@ -41,7 +41,7 @@ namespace RJW_Genes
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.
+ // 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)
GenderUtility.RemoveAllSexChangeThoughts(pawn);
}
}
diff --git a/Source/Genes/Genitalia/GenitaliaUtility.cs b/Source/Genes/Genitalia/GenitaliaUtility.cs
index 4dc289a..c762071 100644
--- a/Source/Genes/Genitalia/GenitaliaUtility.cs
+++ b/Source/Genes/Genitalia/GenitaliaUtility.cs
@@ -99,6 +99,7 @@ namespace RJW_Genes
case "rjw_genes_demonic_genitalia": return Genital_Helper.average_breasts;
case "rjw_genes_dragon_genitalia": return Genital_Helper.average_breasts;
case "rjw_genes_slime_genitalia": return Genital_Helper.slime_breasts;
+ case "rjw_genes_udder_breasts": return Genital_Helper.udder_breasts;
case "rjw_genes_ovipositor_genitalia": return Genital_Helper.average_breasts;
default: return Genital_Helper.generic_breasts;
diff --git a/Source/Genes/Hive/Genes/Gene_FerventOvipositor.cs b/Source/Genes/Hive/Genes/Gene_FerventOvipositor.cs
new file mode 100644
index 0000000..353148a
--- /dev/null
+++ b/Source/Genes/Hive/Genes/Gene_FerventOvipositor.cs
@@ -0,0 +1,42 @@
+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_PartBaseNatural OvipositorF = (Hediff_PartBaseNatural) pawn.health.hediffSet.GetFirstHediffOfDef(rjw.Genital_Helper.ovipositorF);
+
+ if (OvipositorF == null) return;
+
+ OvipositorF.nextEggTick = Math.Max(OvipositorF.nextEggTick - MULTIPLIER, -1);
+
+ // 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.
+ }
+
+
+ }
+}
diff --git a/Source/Genes/Hive/Thoughts/ThoughtWorker_QueenPresent_Social.cs b/Source/Genes/Hive/Thoughts/ThoughtWorker_QueenPresent_Social.cs
index e6b9ea8..e4e7792 100644
--- a/Source/Genes/Hive/Thoughts/ThoughtWorker_QueenPresent_Social.cs
+++ b/Source/Genes/Hive/Thoughts/ThoughtWorker_QueenPresent_Social.cs
@@ -12,6 +12,9 @@ namespace RJW_Genes
{
protected override ThoughtState CurrentSocialStateInternal(Pawn p, Pawn other)
{
+ // p is the pawn `thinking`, and other is the pawn being thought about.
+ // here: p = loyal pawn, other = potential queen
+
if (!p.RaceProps.Humanlike)
return (ThoughtState) false;
diff --git a/Source/Genes/Hive/Thoughts/ThoughtWorker_WorkerDespised_Social.cs b/Source/Genes/Hive/Thoughts/ThoughtWorker_WorkerDespised_Social.cs
new file mode 100644
index 0000000..8a9ad53
--- /dev/null
+++ b/Source/Genes/Hive/Thoughts/ThoughtWorker_WorkerDespised_Social.cs
@@ -0,0 +1,39 @@
+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_WorkerDespised_Social : ThoughtWorker
+ {
+ protected override ThoughtState CurrentSocialStateInternal(Pawn p, Pawn other)
+ {
+ // p is the pawn `thinking`, and other is the pawn being thought about.
+ // here: p = queen, other = potential worker
+
+ if (!p.RaceProps.Humanlike)
+ return (ThoughtState) false;
+
+ if (!other.RaceProps.Humanlike)
+ return (ThoughtState) false;
+
+ if (!RelationsUtility.PawnsKnowEachOther(p, other))
+ return (ThoughtState) false;
+
+ // Only check if they are spawned
+ if (!p.Spawned || !other.Spawned)
+ return (ThoughtState)false;
+
+ if (GeneUtility.HasGeneNullCheck(p, GeneDefOf.rjw_genes_queen) && GeneUtility.HasGeneNullCheck(other, GeneDefOf.rjw_genes_worker))
+ {
+ return (ThoughtState)true;
+ }
+
+ return (ThoughtState)false;
+ }
+ }
+}
diff --git a/Source/Genes/RJW_Gene.cs b/Source/Genes/RJW_Gene.cs
index dfa05bf..c006d2c 100644
--- a/Source/Genes/RJW_Gene.cs
+++ b/Source/Genes/RJW_Gene.cs
@@ -16,6 +16,8 @@ namespace RJW_Genes
///
/// 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/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj
index 4343cee..3084f31 100644
--- a/Source/Rjw-Genes.csproj
+++ b/Source/Rjw-Genes.csproj
@@ -43,7 +43,9 @@
+
+
@@ -101,6 +103,7 @@
+
diff --git a/TODOS.md b/TODOS.md
index 7e223a1..16c5906 100644
--- a/TODOS.md
+++ b/TODOS.md
@@ -39,14 +39,14 @@ Can't help but think about Rexxar Porn now I am a bad person.
**Hive Mother:**
-- [] Spawn the small scarabs
-- [] Fertilise Eggs inside her
-- [] Produce cocoons
+- [X] Spawn the small scarabs
+- [X] Fertilise Eggs inside her
+- [X] Produce cocoons
- [] Maybe: Insert "dropped" Insect eggs
- [] Very fragile, no use except breeding
- [] Maybe: can only eat insect jelly
-- [] Should look like a nice green-yellow alien as we all know fuckable insects would look like.
-- [] There can only be one Hive Mother, some penalties if there are others. This could be implement with an "Alpha Gene" that gives heavy penalties when other Alpha exists.
+- [X] Should look like a nice green-yellow alien as we all know fuckable insects would look like.
+- [X] There can only be one Hive Mother, some penalties if there are others. This could be implement with an "Alpha Gene" that gives heavy penalties when other Alpha exists.
## Genes with Abilities and more Effects