diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0db6c9f..28a4e46 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,10 +8,6 @@ Features:
- Age-Transfer and Youth-Fountain per Sex Gene
- Bisexual and Homosexual Genes with Placeholder Icon
- Balancing some Genes by changing metabolism and complexity
-- Pheromone Gene (#13, Shabakur)
-- RJW Race-Support Compatibility (#12,#13, Shabakur)
-- Animal Gene Inheritance Gene-Chance Multiplier per Setting (#13, Shabakur)
-- Lots of Debug-Only Logging for Animal Gene Inheritance
Succubus:
@@ -21,7 +17,6 @@ Fixes:
- Error on Game Load when Licentia Genes are tried to be added to Xenotypes for players without Licentia (#5)
- Futa Gene only triggers if Pawn is not a futa already (#2)
- Genitalia Resizing triggers on 20th Birthday (#11)
-- RJW-Gene-Inheritance Settings now do things (#13, Shabakur)
# 1.0.1 (2022-12-20)
diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll
index 4b6ffe9..4c7463c 100644
Binary files a/Common/Assemblies/Rjw-Genes.dll and b/Common/Assemblies/Rjw-Genes.dll differ
diff --git a/Common/Defs/AbilityDefs/Ability_CockEater.xml b/Common/Defs/AbilityDefs/Ability_CockEater.xml
deleted file mode 100644
index d333c1d..0000000
--- a/Common/Defs/AbilityDefs/Ability_CockEater.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
- rjw_genes_cockeater
- Eat Cock
- Eat the cock of another pawn, restoring fertilin based on the size of the cock.
- Things/Mote/Heart
- 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/Common/Defs/AbilityDefs/Ability_Flight.xml b/Common/Defs/AbilityDefs/Ability_Flight.xml
deleted file mode 100644
index 7829d10..0000000
--- a/Common/Defs/AbilityDefs/Ability_Flight.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- rjw_genes_flight
- fly
- Fly to a distant location using 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/Common/Defs/AbilityDefs/Ability_ParalysingKiss.xml b/Common/Defs/AbilityDefs/Ability_ParalysingKiss.xml
deleted file mode 100644
index 09245a0..0000000
--- a/Common/Defs/AbilityDefs/Ability_ParalysingKiss.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
- rjw_genes_paralysingkiss
- paralysing kiss
- Paralyse someone briefly with a kiss.
- Things/Mote/Heart
- true
- true
- false
-
- 5
-
- Mote_CoagulateStencil
- Coagulate
- Coagulate_Cast
- 402
-
- Verb_CastAbilityTouch
- false
- -1
- 1
-
- true
- false
- false
- false
- true
-
-
-
-
- CompAbilityEffect_Stun
- -15
-
-
- Heart
-
-
- 0.05
-
-
-
-
\ No newline at end of file
diff --git a/Common/Defs/AbilityDefs/Ability_PussyHeal.xml b/Common/Defs/AbilityDefs/Ability_PussyHeal.xml
deleted file mode 100644
index 1887160..0000000
--- a/Common/Defs/AbilityDefs/Ability_PussyHeal.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
- rjw_genes_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.2
-
-
- 0.4~0.8
-
-
-
-
- Rape
-
-
-
- Vagina
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Common/Defs/AbilityDefs/Ability_Seduce.xml b/Common/Defs/AbilityDefs/Ability_Seduce.xml
deleted file mode 100644
index fb87fea..0000000
--- a/Common/Defs/AbilityDefs/Ability_Seduce.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
- rjw_genes_seduce
- seduce
- Seduce the target to approach the caster.
- Things/Mote/Heart
- 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.1
-
-
-
-
\ No newline at end of file
diff --git a/Common/Defs/Genes/GeneCategories.xml b/Common/Defs/Genes/GeneCategories.xml
index 06b31cc..81208b9 100644
--- a/Common/Defs/Genes/GeneCategories.xml
+++ b/Common/Defs/Genes/GeneCategories.xml
@@ -37,12 +37,6 @@
15
-
- rjw_genes_fertilin
- Fertilin
- 14
-
-
rjw_genes_breeding
Breeding
@@ -67,6 +61,4 @@
8
-
-
\ No newline at end of file
diff --git a/Common/Defs/Genes/GeneDefs_Cosmetic.xml b/Common/Defs/Genes/GeneDefs_Cosmetic.xml
deleted file mode 100644
index f49b690..0000000
--- a/Common/Defs/Genes/GeneDefs_Cosmetic.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
- Miscellaneous
- true
-
- Wing
- Wings
-
-
- Tailbone
-
-
-
-
- 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_flight
-
-
- rjw_genes_flight
-
- 1
-
- Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings
- Skin
- 2
- (0.0, 0.01, -0.1)
- (0.0, 0.0, -0.1)
- (0.1, 0.0, 0.0)
-
-
-
-
- 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
-
-
- Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L1
- Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R1
- Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L2
- Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R2
-
- Skin
- 2
- (0, 0.2, -0.1)
- (0, -0.1, 0.1)
- (0.2, 0.2, 0.1)
-
- true
-
-
\ No newline at end of file
diff --git a/Common/Defs/Genes/GeneDefs_LifeForce.xml b/Common/Defs/Genes/GeneDefs_LifeForce.xml
deleted file mode 100644
index b9b87c3..0000000
--- a/Common/Defs/Genes/GeneDefs_LifeForce.xml
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
-
- 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.
- UI/Icons/Genes/Gene_Hemogenic
- 0
- rjw_genes_fertilin
- -2
-
- Gives fertilin supply.
-
-
-
- fert
-
-
- rjw_genes_lifeforce_randomrape
- 0.05
- 1
- 1
-
-
-
- rjw_genes_lifeforce_drain
- fertilin drain
- draining
- Carriers lose an additional 15 fertilin per day from biological entropy.
- fertilin
- RJW_Genes.Gene_LifeForceDrain
- UI/Icons/Genes/Gene_HemogenDrain
- rjw_genes_lifeforce
- 0.15
- rjw_genes_fertilin
- -1
- 1
- 6
-
-
-
- rjw_genes_pussyhealer
- Pussy Healer
- pussyhealer
- Carriers of this gene are able use vaginal sex to tend to other's wounds.
- Things/Mote/Heart
- rjw_genes_lifeforce
- 9
- rjw_genes_fertilin
-
- rjw_genes_pussyheal
-
-
- rjw_genes_pussyheal
-
- 1
- -1
-
-
- life
- pussy
- heal
-
-
-
-
-
- rjw_genes_cockeater
- Cockeater
- cockeater
- Carriers of this gene are able eat cocks to restore their fertilin supply.
- Things/Mote/Heart
- rjw_genes_lifeforce
- 11
- rjw_genes_fertilin
-
- rjw_genes_cockeater
-
-
- rjw_genes_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.
- Things/Mote/Heart
- rjw_genes_lifeforce
- 12
- rjw_genes_fertilin
-
- rjw_genes_paralysingkiss
-
-
- rjw_genes_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.
- Things/Mote/Heart
- rjw_genes_lifeforce
- 13
- rjw_genes_fertilin
-
- rjw_genes_seduce
-
-
- rjw_genes_seduce
-
- 1
- -1
-
-
-
- stun
- kiss
-
-
-
-
-
- rjw_genes_vaginal_absorber
- Vaginal Fertilin Absorber
- Carriers of this gene are able to absorb fertilin through their vagina.
- Things/Mote/Heart
- rjw_genes_lifeforce
- 2
- rjw_genes_fertilin
- 1
-
-
-
- rjw_genes_anal_absorber
- Anal Fertilin Absorber
- Carriers of this gene are able to absorb fertilin through their anus.
- Things/Mote/Heart
- rjw_genes_lifeforce
- 3
- rjw_genes_fertilin
- 1
-
-
-
- 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.
- Things/Mote/Heart
- rjw_genes_lifeforce
- 4
- rjw_genes_fertilin
- 1
- -1
-
-
\ No newline at end of file
diff --git a/Common/Defs/Genes/GeneDefs_SexSpecial.xml b/Common/Defs/Genes/GeneDefs_SexSpecial.xml
index 1e0e8c9..3257882 100644
--- a/Common/Defs/Genes/GeneDefs_SexSpecial.xml
+++ b/Common/Defs/Genes/GeneDefs_SexSpecial.xml
@@ -10,7 +10,7 @@
UI/Memes/FleshPurity
1
-
+
rjw_genes_youth_fountain
Youth Fountain
@@ -33,16 +33,4 @@
3
-
- rjw_genes_aphrodisiac_pheromones
- Aphrodisiac Pheromones
- rjw_genes_special
- RJW_Genes.Gene_Aphrodisiac_Pheromones
- Pheremones of this pawn induce an incressed sexdrive to others nearby.
- UI/Memes/FleshPurity
- 4
- 1
- 1
-
-
\ No newline at end of file
diff --git a/Common/Defs/HediffDefs/Hediffs_Genes.xml b/Common/Defs/HediffDefs/Hediffs_Genes.xml
deleted file mode 100644
index b0a9cc9..0000000
--- a/Common/Defs/HediffDefs/Hediffs_Genes.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
- Aphrodisiac_Pheromone
- HediffWithComps
- induced libido
- Aphrodisiac pheromone effects.
- (1,0,0.5)
- 1.0
-
-
- -24.0
-
-
-
-
- true
-
- 2
-
-
-
-
-
-
- Fertilin_Lost
- RJW_Genes.HediffWithComps_tank
- lost fertilin
- Percentage of fertilin lost.
- (1,1,1)
- 1
-
-
- -0.5
-
-
-
-
- true
-
-
-
-
-
- Succubus_Drained
- HediffWithComps
- Drained
- The vitality of this pawn has been drained.
- (1,0,0.5)
- 1.0
- 1.0
-
-
- -1.0
-
-
-
-
- minor
-
-
- Consciousness
- -0.1
-
-
-
-
- 0.5
- moderate
-
-
- Consciousness
- -0.2
-
-
-
-
- 0.8
- severe
-
-
- Consciousness
- -0.4
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Common/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml b/Common/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml
deleted file mode 100644
index be8905c..0000000
--- a/Common/Defs/InteractionDef/Rape/Rape_SuccubusTail.xml
+++ /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/Common/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml b/Common/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml
deleted file mode 100644
index ce679d6..0000000
--- a/Common/Defs/InteractionDef/Rape/Reverse/Rape_Reverse_SuccubusTail.xml
+++ /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/Common/Defs/InteractionDef/Sex/Reverse/Sex_Reverse_SuccubusTail.xml b/Common/Defs/InteractionDef/Sex/Reverse/Sex_Reverse_SuccubusTail.xml
deleted file mode 100644
index a6e98c5..0000000
--- a/Common/Defs/InteractionDef/Sex/Reverse/Sex_Reverse_SuccubusTail.xml
+++ /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/Common/Defs/InteractionDef/Sex/Sex_SuccubusTail.xml b/Common/Defs/InteractionDef/Sex/Sex_SuccubusTail.xml
deleted file mode 100644
index dda1ffe..0000000
--- a/Common/Defs/InteractionDef/Sex/Sex_SuccubusTail.xml
+++ /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/Common/Defs/JobDefs/Jobs_LifeForce.xml b/Common/Defs/JobDefs/Jobs_LifeForce.xml
deleted file mode 100644
index 6992ddd..0000000
--- a/Common/Defs/JobDefs/Jobs_LifeForce.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- rjw_genes_lifeforce_randomrape
- rjw.JobDriver_RandomRape
- Raping
- false
-
-
-
- rjw_genes_lifeforce_healpussy
- RJW_Genes.JobDriver_CastAbilityAfterSex
- Healing someone with sex.
- false
-
-
-
- rjw_genes_lifeforce_seduced
- RJW_Genes.JobDriver_Seduced
- Seduced.
- false
- false
-
-
\ No newline at end of file
diff --git a/Common/Defs/JobDefs/Jobs_SexOnSpot.xml b/Common/Defs/JobDefs/Jobs_SexOnSpot.xml
deleted file mode 100644
index e904f3e..0000000
--- a/Common/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/Common/Defs/MentalStateDefs/MentalState_Lifeforce.xml b/Common/Defs/MentalStateDefs/MentalState_Lifeforce.xml
deleted file mode 100644
index 1da6e15..0000000
--- a/Common/Defs/MentalStateDefs/MentalState_Lifeforce.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- rjw_genes_lifeforce_randomrape
- rjw_genes_lifeforce_randomrape
- 1.5
- Extreme
-
-
-
- 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/Common/Defs/RaceGeneDefs/RaceGeneDefs_Vanilla_Racegroups.xml b/Common/Defs/RaceGeneDefs/RaceGeneDefs_Vanilla_Racegroups.xml
index 6148308..cfd2154 100644
--- a/Common/Defs/RaceGeneDefs/RaceGeneDefs_Vanilla_Racegroups.xml
+++ b/Common/Defs/RaceGeneDefs/RaceGeneDefs_Vanilla_Racegroups.xml
@@ -2,12 +2,7 @@
Canine
-
- Canine_Group
- CanineAnimal
- CanineSingleGenderAnimal
- CanineSkinAnimal
-
+ Canine_Group
Ears_Floppy
@@ -43,11 +38,7 @@
Insect
-
- Insect_Group
- ArthropodOvipositorAnimal
- ArthropodOvipositorHornyAnimal
-
+ Insect_Group
Beauty_Ugly
@@ -82,14 +73,7 @@
Feline
-
- Feline_Group
- FelineAnimal
- FelineHornyAnimal
- FelineSingleGenderAnimal
- AA_SandProwlerAnimal
-
-
+ Feline_Group
Tail_Furry
@@ -124,10 +108,7 @@
Equine
-
- Equine_Group
- HorseAnimal
-
+ Equine_Group
Furskin
@@ -162,12 +143,7 @@
Dragon
-
- Dragon_Group
- ThrumboAnimal
- DragonAnimal
- DragonSingleGenderAnimal
-
+ Dragon_Group
Unstoppable
@@ -190,7 +166,7 @@
0.1
- rjw_genes_dragon_genitalia
+ rjw_genes_draconic_genitalia
0.6
@@ -214,12 +190,7 @@
Rodent
-
- Rodent_Group
- RodentAnimal
- RodentSingleGenderAnimal
- DragonSingleGenderAnimal
-
+ Rodent_Group
Furskin
@@ -254,10 +225,7 @@
Racoon
-
- Raccon_Group
- RaccoonAnimal
-
+ Raccon_Group
Furskin
diff --git a/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml b/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml
index b092257..29e92c6 100644
--- a/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml
+++ b/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml
@@ -1,17 +1,12 @@
-
-
+
+-->
-
+-->
\ No newline at end of file
diff --git a/Common/Defs/RulePackDefs/Sex/RulePacks_SuccubTail.xml b/Common/Defs/RulePackDefs/Sex/RulePacks_SuccubTail.xml
deleted file mode 100644
index 21e75a1..0000000
--- a/Common/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/Common/Defs/ThinkTreeDefs/ThinkTrees_LifeForce.xml b/Common/Defs/ThinkTreeDefs/ThinkTrees_LifeForce.xml
deleted file mode 100644
index 574fe0f..0000000
--- a/Common/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/Common/Defs/ThoughtDefs/Thoughts_LifeForce.xml b/Common/Defs/ThoughtDefs/Thoughts_LifeForce.xml
deleted file mode 100644
index bca1f93..0000000
--- a/Common/Defs/ThoughtDefs/Thoughts_LifeForce.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
- rjw_genes_cock_eaten
- Thought_Memory
- 30.0
- 100
- 0.4
-
-
- cock eaten
- My cock was eaten directly of my body, I am devestated.
- -30
-
-
-
-
-
- rjw_genes_seduced
- Thought_Memory
- 10.0
- 100
- 0.4
-
-
- seduced
- I was seduced into having sex. I regret what happened.
- -10
-
-
-
-
-
- rjw_critical_fertilin
-
-
- low on fertilin
- I'm almost out of fertilin. I'm scared of losing control.
- -10
-
-
-
-
diff --git a/Common/Defs/Xenotypes/Succubus.xml b/Common/Defs/Xenotypes/Succubus.xml
deleted file mode 100644
index c6b51a1..0000000
--- a/Common/Defs/Xenotypes/Succubus.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
- rjw_genes_succubus
- Succubus
- Succubi are strongly enhanced xenohumans. Powered by archites, their abilities go far beyond normal genetic enhancements. 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
- PawnBecameSanguophage
- 0.5
- 0.1~140
- 1
- -1000
- 0.005
-
- 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_vaginal_absorber
- rjw_genes_anal_absorber
-
- rjw_genes_drainer
-
- rjw_genes_pussyhealer
- rjw_genes_paralysingkiss
- rjw_genes_seduce
- rjw_genes_elasticity
- rjw_genes_succubus_tail
- rjw_genes_aphrodisiac_pheromones
-
- Beauty_Pretty
- MoveSpeed_Quick
- Robust
- UVSensitivity_Intense
- AptitudeStrong_Social
- Ears_Pointed
- Headbone_MiniHorns
- Skin_Purple
-
-
-
-
\ No newline at end of file
diff --git a/Common/Languages/English/Keyed/Lifeforce.xml b/Common/Languages/English/Keyed/Lifeforce.xml
deleted file mode 100644
index 23d3f75..0000000
--- a/Common/Languages/English/Keyed/Lifeforce.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- Pawn doesn't have required fertilin gene.
- Not enough fertilin to cast.
-
-
- 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
-
\ No newline at end of file
diff --git a/Common/Patches/ThingDefs/Sexperience_Cum.xml b/Common/Patches/ThingDefs/Sexperience_Cum.xml
deleted file mode 100644
index b905d4b..0000000
--- a/Common/Patches/ThingDefs/Sexperience_Cum.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
- RJW Sexperience
-
-
- /Defs/ThingDef[defName="GatheredCum"]/ingestible/outcomeDoers
-
-
- 1
-
-
-
-
-
\ No newline at end of file
diff --git a/Common/Patches/ThinkTree/MentalStateCritical_LifeForceRandomRape.xml b/Common/Patches/ThinkTree/MentalStateCritical_LifeForceRandomRape.xml
deleted file mode 100644
index 9532df8..0000000
--- a/Common/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/Common/Patches/Xenotypes/GenitaliaUpdate.xml b/Common/Patches/Xenotypes/GenitaliaUpdate.xml
index fd6e360..0a1f3e9 100644
--- a/Common/Patches/Xenotypes/GenitaliaUpdate.xml
+++ b/Common/Patches/Xenotypes/GenitaliaUpdate.xml
@@ -42,15 +42,15 @@
-
- LustLicentia.RJWLabs
-
-
- Defs/XenotypeDef[defName="Highmate"]/genes
-
- rjw_genes_likes_cumflation
-
-
+
+ LustLicentia.RJWLabs
+
+
+ Defs/XenotypeDef[defName="Highmate"]/genes
+
+ rjw_genes_likes_cumflation
+
+
diff --git a/Common/Textures/Genes/Icons/Succubus_Tail.png b/Common/Textures/Genes/Icons/Succubus_Tail.png
deleted file mode 100644
index cc86056..0000000
Binary files a/Common/Textures/Genes/Icons/Succubus_Tail.png and /dev/null differ
diff --git a/Common/Textures/Genes/Icons/Succubus_Wings.png b/Common/Textures/Genes/Icons/Succubus_Wings.png
deleted file mode 100644
index 0665f1a..0000000
Binary files a/Common/Textures/Genes/Icons/Succubus_Wings.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L1_east.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L1_east.png
deleted file mode 100644
index 7f51811..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L1_east.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L1_north.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L1_north.png
deleted file mode 100644
index 25c4097..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L1_north.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L1_south.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L1_south.png
deleted file mode 100644
index 60aae1e..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L1_south.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L2_east.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L2_east.png
deleted file mode 100644
index f3be513..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L2_east.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L2_north.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L2_north.png
deleted file mode 100644
index 7a54823..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L2_north.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L2_south.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L2_south.png
deleted file mode 100644
index 91b5641..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_L2_south.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R1_east.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R1_east.png
deleted file mode 100644
index e08f0b3..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R1_east.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R1_north.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R1_north.png
deleted file mode 100644
index 60aae1e..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R1_north.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R1_south.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R1_south.png
deleted file mode 100644
index 0c9df93..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R1_south.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R2_east.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R2_east.png
deleted file mode 100644
index ea33158..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R2_east.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R2_north.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R2_north.png
deleted file mode 100644
index 30e0e28..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R2_north.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R2_south.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R2_south.png
deleted file mode 100644
index a9f56d7..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Tail/Succubus_Tail_R2_south.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings_east.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings_east.png
deleted file mode 100644
index 71e3f53..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings_east.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings_north.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings_north.png
deleted file mode 100644
index ac55d17..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings_north.png and /dev/null differ
diff --git a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings_south.png b/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings_south.png
deleted file mode 100644
index ac55d17..0000000
Binary files a/Common/Textures/Things/Pawn/Humanlike/BodyAttachments/rjw_genes_Succubus_Wings/Succubus_Wings_south.png and /dev/null differ
diff --git a/Rjw-Genes.sln b/Rjw-Genes.sln
index 3706653..858f9a2 100644
--- a/Rjw-Genes.sln
+++ b/Rjw-Genes.sln
@@ -5,8 +5,6 @@ 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
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
diff --git a/Source/Animal_Inheritance/BestialityGeneInheritanceDef.cs b/Source/Animal_Inheritance/BestialityGeneInheritanceDef.cs
index ae0c51e..04a9735 100644
--- a/Source/Animal_Inheritance/BestialityGeneInheritanceDef.cs
+++ b/Source/Animal_Inheritance/BestialityGeneInheritanceDef.cs
@@ -1,4 +1,10 @@
-namespace RJW_BGS
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace RJW_BGS
{
public class BestialityGeneInheritanceDef
{
diff --git a/Source/Animal_Inheritance/InheritanceUtility.cs b/Source/Animal_Inheritance/InheritanceUtility.cs
index de486ae..1af9e8a 100644
--- a/Source/Animal_Inheritance/InheritanceUtility.cs
+++ b/Source/Animal_Inheritance/InheritanceUtility.cs
@@ -1,4 +1,8 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
using Verse;
using RimWorld;
using rjw;
@@ -16,18 +20,14 @@ namespace RJW_BGS
if (mother.RaceProps.Humanlike && father.RaceProps.Humanlike)
return genelist;
- ModLog.Message($"Trigger an Animal-Gene-Inheritance for {father.Name} and {mother.Name}");
+
//One parent must be an animal and the other must be human, so only one needs to return
if (father != null && !father.RaceProps.Humanlike)
{
- if (RJW_BGSSettings.rjw_bgs_detailed_debug)
- ModLog.Message($"Father was found to be animal - looking up genes for {father.Name}");
return SelectGenes(father);
}
if (mother != null && !mother.RaceProps.Humanlike)
{
- if (RJW_BGSSettings.rjw_bgs_detailed_debug)
- ModLog.Message($"Mother was found to be animal - looking up genes for {mother.Name}");
return SelectGenes(mother);
}
@@ -48,48 +48,25 @@ namespace RJW_BGS
{
foreach (BestialityGeneInheritanceDef gene in raceGeneDef.genes)
{
- if (gene.chance * RJW_BGSSettings.rjw_bgs_global_gene_chance >= Rand.Range(0.01f,1f))
+ if (gene.chance >= Rand.Range(0.01f,1f))
{
genelist.Add(DefDatabase.GetNamed(gene.defName));
}
}
}
- if (RJW_BGSSettings.rjw_bgs_detailed_debug)
- ModLog.Message($"From {raceGeneDef.genes.Count} possible genes in {raceGeneDef.defName}, {genelist.Count} were added by chance ({RJW_BGSSettings.rjw_bgs_global_gene_chance} chance multiplier from Settings).");
return genelist;
}
-
- ///
- /// Adds a list of Genes to the pawns existing GeneSet.
- /// Whether it is added as a Xenogene or Endogene is configured in Mod-Settings.
- ///
- /// The pawn for which Genes will be added
- /// The Genes to add (Endogene by default, Xenogene with Mod Settings)
public static void AddGenes(Pawn pawn, List genes)
{
foreach (GeneDef gene in genes)
{
- pawn.genes.AddGene(gene, RJW_BGSSettings.rjw_bgs_animal_genes_as_xenogenes);
+ pawn.genes.AddGene(gene, false);
}
}
- ///
- /// Initiates a bestiality baby with genes if the baby does not exist earlier.
- /// This is used to make rjw-egg-pregnancies work.
- /// Related file: PatchRJWHediffInsect_Egg.cs
- ///
- /// The mother of the baby.
- /// The father of the baby.
- /// The baby created in non-pregnancy-way (has 0 Genes yet)
public static void NewGenes(Pawn mother, Pawn dad, Pawn baby)
{
- if (!RJW_BGSSettings.rjw_bgs_enabled)
- {
- return;
- }
-
- ModLog.Message($"Triggering an New-Gene Animal-Gene-Inheritance for {baby.Name} ({dad.Name} + {mother.Name})");
if (baby.RaceProps.Humanlike)
{
if (baby.genes == null)
diff --git a/Source/Animal_Inheritance/PatchRJWBestialityPregnancyUtility.cs b/Source/Animal_Inheritance/PatchRJWBestialityPregnancyUtility.cs
index da5ac8d..b6b228b 100644
--- a/Source/Animal_Inheritance/PatchRJWBestialityPregnancyUtility.cs
+++ b/Source/Animal_Inheritance/PatchRJWBestialityPregnancyUtility.cs
@@ -16,10 +16,6 @@ namespace RJW_BGS
[HarmonyPostfix]
public static void AddGenes(Pawn mother, Pawn dad, ref Hediff_BasePregnancy __instance)
{
- if (!RJW_BGSSettings.rjw_bgs_enabled)
- {
- return;
- }
foreach (Pawn baby in __instance.babies)
{
if (baby.RaceProps.Humanlike)
diff --git a/Source/Animal_Inheritance/PatchRJWHediffInsect_Egg.cs b/Source/Animal_Inheritance/PatchRJWHediffInsect_Egg.cs
index 587571f..d52f62d 100644
--- a/Source/Animal_Inheritance/PatchRJWHediffInsect_Egg.cs
+++ b/Source/Animal_Inheritance/PatchRJWHediffInsect_Egg.cs
@@ -1,8 +1,14 @@
-using System.Collections.Generic;
+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_BGS
{
diff --git a/Source/Animal_Inheritance/PatchVanillaPregnancyUtility.cs b/Source/Animal_Inheritance/PatchVanillaPregnancyUtility.cs
index afbfa09..0f5cc90 100644
--- a/Source/Animal_Inheritance/PatchVanillaPregnancyUtility.cs
+++ b/Source/Animal_Inheritance/PatchVanillaPregnancyUtility.cs
@@ -1,17 +1,15 @@
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_BGS
{
- ///
- /// This Patch is applied to change the normal pregnancy to add animal-inheritance.
- /// If the settings allow animal gene inheritance,
- /// the genes are determined and "simply added".
- ///
[HarmonyPatch(typeof(PregnancyUtility), "GetInheritedGeneSet", new Type[]
{
typeof(Pawn),
@@ -24,10 +22,6 @@ namespace RJW_BGS
[HarmonyPostfix]
public static void AnimalInheritedGenes(Pawn father, Pawn mother, ref GeneSet __result)
{
- if (!RJW_BGSSettings.rjw_bgs_enabled)
- {
- return;
- }
List genes = InheritanceUtility.AnimalInheritedGenes(father, mother);
if (genes.Any())
{
@@ -35,7 +29,7 @@ namespace RJW_BGS
{
__result.AddGene(gene);
}
- }
+ }
}
}
}
diff --git a/Source/Animal_Inheritance/RJW_BGSSettings.cs b/Source/Animal_Inheritance/RJW_BGSSettings.cs
index d619354..1d5d859 100644
--- a/Source/Animal_Inheritance/RJW_BGSSettings.cs
+++ b/Source/Animal_Inheritance/RJW_BGSSettings.cs
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
using Verse;
using UnityEngine;
-namespace RJW_BGS
+namespace RJW_Genes.Animal_Inheritance
{
public class RJW_BGSSettings : ModSettings
{
@@ -21,31 +21,17 @@ namespace RJW_BGS
listing_Standard.ColumnWidth = rect.width / 2.05f;
listing_Standard.Begin(rect);
listing_Standard.Gap(24f);
- listing_Standard.CheckboxLabeled("enabled", ref rjw_bgs_enabled, "If toggled, Animal Pregnancies will try inherit genes.", 0f, 1f);
+ listing_Standard.CheckboxLabeled("enabled", ref enabled, "no function yet", 0f, 1f);
//listing_Standard.CheckboxLabeled("sexfrenzy", ref sexfrenzy, "disable the effects", 0f, 1f);
- listing_Standard.Gap(5f);
- listing_Standard.Label("gene inheritance chance"+ ": " +
- Math.Round((double)(RJW_BGSSettings.rjw_bgs_global_gene_chance * 100f), 0).ToString() + "%", -1f, "modify chance for a gene to be inherited.");
- RJW_BGSSettings.rjw_bgs_global_gene_chance = listing_Standard.Slider(RJW_BGSSettings.rjw_bgs_global_gene_chance, 0f, 5f);
- listing_Standard.Gap(5f);
- listing_Standard.CheckboxLabeled("genes as xenogenes", ref rjw_bgs_animal_genes_as_xenogenes, "If toggled, animal genes will be added as xenogenes.", 0f, 1f);
- listing_Standard.Gap(5f);
- listing_Standard.CheckboxLabeled("detailed-debug", ref rjw_bgs_detailed_debug, "Adds detailed information to the log about pregnancies and genes.", 0f, 1f);
listing_Standard.End();
}
public override void ExposeData()
{
base.ExposeData();
- Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_enabled, "rjw_bgs_enabled", RJW_BGSSettings.rjw_bgs_enabled, true);
- Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_global_gene_chance, "rjw_bgs_global_gene_chance", RJW_BGSSettings.rjw_bgs_global_gene_chance, true);
- Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_animal_genes_as_xenogenes, "rjw_bgs_animal_genes_as_xenogenes", RJW_BGSSettings.rjw_bgs_animal_genes_as_xenogenes, true);
- Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_detailed_debug, "rjw_bgs_detailed_debug", RJW_BGSSettings.rjw_bgs_detailed_debug, true);
+ Scribe_Values.Look(ref RJW_BGSSettings.enabled, "enabled", RJW_BGSSettings.enabled, true);
}
- public static float rjw_bgs_global_gene_chance = 1f;
- public static bool rjw_bgs_enabled = true;
- public static bool rjw_bgs_animal_genes_as_xenogenes = false;
- public static bool rjw_bgs_detailed_debug = false;
+ public static bool enabled;
}
}
diff --git a/Source/Animal_Inheritance/RJW_BGSSettingsController.cs b/Source/Animal_Inheritance/RJW_BGSSettingsController.cs
index 12ef107..53a7659 100644
--- a/Source/Animal_Inheritance/RJW_BGSSettingsController.cs
+++ b/Source/Animal_Inheritance/RJW_BGSSettingsController.cs
@@ -6,7 +6,7 @@ using System.Threading.Tasks;
using Verse;
using UnityEngine;
-namespace RJW_BGS
+namespace RJW_Genes.Animal_Inheritance
{
public class RJW_BGSSettingsController : Mod
{
diff --git a/Source/Animal_Inheritance/RaceGeneDef.cs b/Source/Animal_Inheritance/RaceGeneDef.cs
index 5c4b0ad..02ac62d 100644
--- a/Source/Animal_Inheritance/RaceGeneDef.cs
+++ b/Source/Animal_Inheritance/RaceGeneDef.cs
@@ -11,11 +11,11 @@ namespace RJW_BGS
public class RaceGeneDef : Def
{
public int priority;
- public string raceGroup; //keeping this for backwards compatibility
- public List raceGroups; //racegroup, but in list form so multiple can be entered, preference to use this over racegroup
+ public String raceGroup;
public List raceNames;
public List pawnKindNames;
public List genes;
+ //public List genechances;
public String hybridName;
}
}
diff --git a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs
index f88084d..3db664c 100644
--- a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs
+++ b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs
@@ -18,14 +18,14 @@ namespace RJW_BGS
return result;
}
return null;
- }
+ //First check if there is a matching pawnkinddef then race, then racegroup
+ }
public static List ValidRaceGeneDefs(Pawn pawn)
{
PawnKindDef kindDef = pawn.kindDef;
if (kindDef == null)
{
- ModLog.Warning($"Error looking up PawnKindDef for {pawn.Name} - Could not lookup Animal Inheritance Genes");
return null;
}
string raceName = kindDef.race.defName;
@@ -33,9 +33,6 @@ namespace RJW_BGS
PawnData pawnData = SaveStorage.DataStore.GetPawnData(pawn);
RaceGroupDef raceGroupDef = pawnData.RaceSupportDef;
- if (RJW_BGSSettings.rjw_bgs_detailed_debug)
- ModLog.Message($"Looking up Animal-Inheritable Genes for {pawn.Name} with KindDef {kindDef.defName},RaceName {raceName}, PawnKind {pawnKindName} and RaceGroup {raceGroupDef.defName}");
-
IEnumerable allDefs = DefDatabase.AllDefs;
List pawnKindDefs = allDefs.Where(delegate (RaceGeneDef group)
{
@@ -43,12 +40,7 @@ namespace RJW_BGS
return pawnKindNames != null && pawnKindNames.Contains(pawnKindName);
}).ToList();
if (pawnKindDefs.Count() > 0)
- {
- DebugPrintRaceGeneDefs("PawnKindDefs",pawn.Name.ToStringFull,pawnKindDefs);
return pawnKindDefs;
- }
- else if (RJW_BGSSettings.rjw_bgs_detailed_debug)
- ModLog.Message($"Did not find PawnKindDefs for {pawn.Name.ToStringFull}");
List raceKindDefs = allDefs.Where(delegate (RaceGeneDef group)
{
@@ -56,47 +48,22 @@ namespace RJW_BGS
return raceNames != null && raceNames.Contains(raceName);
}).ToList();
if (raceKindDefs.Count() > 0)
- {
- DebugPrintRaceGeneDefs("PawnKindDefs", pawn.Name.ToStringFull, raceKindDefs);
return raceKindDefs;
- }
- else if (RJW_BGSSettings.rjw_bgs_detailed_debug)
- ModLog.Message($"Did not find RaceKindDefs for {pawn.Name.ToStringFull}");
List raceGroupDefs = new List();
if (raceGroupDef != null)
{
raceGroupDefs = allDefs.Where(delegate (RaceGeneDef group)
{
- string raceGroupDefName = group.raceGroup;
- List list_raceGroupDefName = group.raceGroups;
- return (raceGroupDefName != null && raceGroupDefName == raceGroupDef.defName)
- || (list_raceGroupDefName != null && list_raceGroupDefName.Contains(raceGroupDef.defName));
+ String raceGroupDefName = group.raceGroup;
+ return raceGroupDefName != null && raceGroupDefName == raceGroupDef.defName;
}).ToList();
}
-
+
if (raceGroupDefs.Count() > 0)
- {
- DebugPrintRaceGeneDefs("RaceKindDefs", pawn.Name.ToStringFull, raceGroupDefs);
return raceGroupDefs;
- }
- else if (RJW_BGSSettings.rjw_bgs_detailed_debug)
- ModLog.Message($"Did not find RaceGroupDefs for {pawn.Name.ToStringFull}");
- ModLog.Message($"Did not find any Genes inheritable for {pawn.Name.ToStringFull}");
return new List();
}
-
- private static void DebugPrintRaceGeneDefs(String header,String identifier,List defs)
- {
- if (RJW_BGSSettings.rjw_bgs_detailed_debug)
- {
- var defString = "[";
- foreach (RaceGeneDef raceGeneDef in defs)
- defString += $"({raceGeneDef.priority}:{raceGeneDef.defName} - {raceGeneDef.genes.Count} Genes)";
- defString += "]";
- ModLog.Message($"Found the following {header}-Genes for {identifier}: {defString}");
- }
- }
}
}
diff --git a/Source/First.cs b/Source/First.cs
deleted file mode 100644
index e322c58..0000000
--- a/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 AddtoIPartPreferenceRule()
- {
- List partPreferenceRules = Unprivater.GetProtectedValue>("_partKindUsageRules", typeof(PartPreferenceDetectorService));
- partPreferenceRules.Add(new Interactions.GenesPartKindUsageRule());
- }
- }
-}
diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs
index e4f0e12..6b13cfb 100644
--- a/Source/GeneDefOf.cs
+++ b/Source/GeneDefOf.cs
@@ -75,20 +75,8 @@ namespace RJW_Genes
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;
- // LifeForce
- public static readonly GeneDef rjw_genes_lifeforce;
- public static readonly GeneDef rjw_genes_lifeforce_drain;
- public static readonly GeneDef rjw_genes_pussyhealer;
- public static readonly GeneDef rjw_genes_vaginal_absorber;
- public static readonly GeneDef rjw_genes_anal_absorber;
- public static readonly GeneDef rjw_genes_drainer;
- // Cosmetic
- public static readonly GeneDef rjw_genes_succubus_tail;
- public static readonly GeneDef rjw_genes_succubus_wings;
-
- // Others & Non-Genes
+ public static readonly HediffDef rjw_genes_orgasm_rush_hediff;
}
}
diff --git a/Source/Genes/Cum/CumUtility.cs b/Source/Genes/Cum/CumUtility.cs
index b483aed..ea049cc 100644
--- a/Source/Genes/Cum/CumUtility.cs
+++ b/Source/Genes/Cum/CumUtility.cs
@@ -33,35 +33,5 @@ namespace RJW_Genes
}
}
-
- //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_cum = 0;
- if (!parts.NullOrEmpty())
- {
- CompHediffBodyPart CompHediff;
-
- foreach (Hediff part in parts)
- {
- if (GenitaliaChanger.IsArtificial(part))
- continue;
-
- if (rjw.Genital_Helper.is_penis(part))
- {
- CompHediff = part.TryGetComp();
- if (CompHediff != null)
- {
- total_cum += CompHediff.FluidAmmount * CompHediff.FluidModifier * multiplier;
- }
- }
- }
-
- }
- return total_cum;
-
- }
}
}
diff --git a/Source/Genes/Damage/Gene_Unbreakable.cs b/Source/Genes/Damage/Gene_Unbreakable.cs
index 578ed8a..2ebdad3 100644
--- a/Source/Genes/Damage/Gene_Unbreakable.cs
+++ b/Source/Genes/Damage/Gene_Unbreakable.cs
@@ -1,4 +1,5 @@
-using rjw;
+using LicentiaLabs;
+using rjw;
using Verse;
namespace RJW_Genes
diff --git a/Source/Genes/GeneUtility.cs b/Source/Genes/GeneUtility.cs
index 3da53e3..284aab2 100644
--- a/Source/Genes/GeneUtility.cs
+++ b/Source/Genes/GeneUtility.cs
@@ -1,46 +1,11 @@
using System;
using System.Collections.Generic;
using Verse;
-using RimWorld;
+
namespace RJW_Genes
{
public class GeneUtility
{
- //Instead of seperate functions this should be simpeler
- public static bool HasGeneNullCheck(Pawn pawn, GeneDef genedef)
- {
- if (pawn.genes == null)
- {
- return false;
- }
- return pawn.genes.HasGene(genedef);
- }
-
- //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)
- {
- float old_value = drain.Resource.Value;
- drain.Resource.Value += offset;
- //PostOffSetLifeForce(drain, old_value);
- }
-
- public static void PostOffSetLifeForce(IGeneResourceDrain drain, float old_value)
- {
- if (old_value > 0.2f && drain.Resource.Value <= 0.2f)
- {
- Pawn pawn = drain.Pawn;
-
- //Do things
- }
- }
-
public static bool IsMechbreeder(Pawn pawn)
{
if (pawn.genes == null)
@@ -50,41 +15,6 @@ namespace RJW_Genes
return pawn.genes.HasGene(GeneDefOf.rjw_genes_mechbreeder);
}
- public static bool HasLifeForce(Pawn pawn)
- {
- if (pawn.genes == null)
- {
- return false;
- }
- return pawn.genes.HasGene(GeneDefOf.rjw_genes_lifeforce);
- }
-
- public static bool HasLowLifeForce(Pawn pawn)
- {
- if (HasLifeForce(pawn))
- {
- Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType();
- 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.Resource.Value < gene.MinLevelForAlert)
- {
- return true;
- }
- }
- return false;
- }
-
public static bool IsInsectIncubator(Pawn pawn)
{
if (pawn.genes == null)
@@ -157,15 +87,6 @@ namespace RJW_Genes
return pawn.genes.HasGene(GeneDefOf.rjw_genes_generous_donor);
}
- public static bool isPussyHealer(Pawn pawn)
- {
- if (pawn.genes == null)
- {
- return false;
- }
- return pawn.genes.HasGene(GeneDefOf.rjw_genes_pussyhealer);
- }
-
public static bool IsUnbreakable(Pawn pawn)
{
if (pawn.genes == null)
@@ -175,6 +96,12 @@ namespace RJW_Genes
return pawn.genes.HasGene(GeneDefOf.rjw_genes_unbreakable);
}
+
+ public static bool HasGenitaliaResizingGenes(Pawn pawn)
+ {
+ return !GetGenitaliaResizingGenes(pawn).NullOrEmpty();
+ }
+
public static List GetGenitaliaResizingGenes(Pawn pawn)
{
var ResizingGenes = new List();
diff --git a/Source/Genes/Life_Force/Abilities/AbilityUtility.cs b/Source/Genes/Life_Force/Abilities/AbilityUtility.cs
deleted file mode 100644
index 3f18b71..0000000
--- a/Source/Genes/Life_Force/Abilities/AbilityUtility.cs
+++ /dev/null
@@ -1,71 +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)
- {
- if (InteractionHelper.GetWithExtension(props.dictionaryKey).DominantHasFamily(GenitalFamily.Vagina) || InteractionHelper.GetWithExtension(props.dictionaryKey).SubmissiveHasFamily(GenitalFamily.Vagina))
- {
- 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/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CockEater.cs b/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CockEater.cs
deleted file mode 100644
index d4d12ea..0000000
--- a/Source/Genes/Life_Force/Abilities/CompAbilityEffect_CockEater.cs
+++ /dev/null
@@ -1,99 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using UnityEngine;
-using RimWorld;
-using rjw;
-using rjw.Modules.Interactions.Helpers;
-
-namespace RJW_Genes
-{
- public class CompAbilityEffect_CockEater : CompAbilityEffect
- {
- private new CompProperties_AbilityCockEater Props
- {
- get
- {
- return (CompProperties_AbilityCockEater)this.props;
- }
- }
- public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
- {
- base.Apply(target, dest);
- Pawn pawn = target.Pawn;
- if (pawn == null)
- {
- return;
- }
- var partBPR = Genital_Helper.get_genitalsBPR(pawn);
- var parts = Genital_Helper.get_PartsHediffList(pawn, partBPR);
- if (!parts.NullOrEmpty())
- {
- foreach (Hediff part in parts)
- {
- if (GenitaliaChanger.IsArtificial(part))
- continue;
-
- if (Genital_Helper.is_penis(part))
- {
- GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(this.parent.pawn), part.Severity); ;
- pawn.health.RemoveHediff(part);
- pawn.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.rjw_genes_cock_eaten, pawn, null);
- break; //Only one penis at the time
- }
- }
-
- }
- }
-
- public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
- {
- Pawn pawn = target.Pawn;
- if (pawn != null)
- {
- bool flag = pawn.Faction == this.parent.pawn.Faction || pawn.IsPrisonerOfColony;
- bool flag2 = pawn.HostileTo(this.parent.pawn);
- bool flag3 = pawn.Downed;
- if (!flag && !(flag2 && flag3))
- {
- if (throwMessages)
- {
- if(flag2 && !flag3)
- {
- Messages.Message(pawn.Name + " is hostile, but not downed.", pawn, MessageTypeDefOf.RejectInput, false);
- }
- else if (!flag)
- {
- Messages.Message(pawn.Name + " is not a part of the colony or hostile.", pawn, MessageTypeDefOf.RejectInput, false);
- }
- }
- return false;
- }
- if (!Genital_Helper.has_penis_fertile(pawn))
- {
- if (throwMessages)
- {
- Messages.Message(pawn.Name + " has no penis", pawn, 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/Source/Genes/Life_Force/Abilities/CompAbilityEffect_LifeForceCost.cs b/Source/Genes/Life_Force/Abilities/CompAbilityEffect_LifeForceCost.cs
deleted file mode 100644
index d291185..0000000
--- a/Source/Genes/Life_Force/Abilities/CompAbilityEffect_LifeForceCost.cs
+++ /dev/null
@@ -1,112 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using System.Text;
-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/Source/Genes/Life_Force/Abilities/CompAbilityEffect_PussyHeal.cs b/Source/Genes/Life_Force/Abilities/CompAbilityEffect_PussyHeal.cs
deleted file mode 100644
index 009588d..0000000
--- a/Source/Genes/Life_Force/Abilities/CompAbilityEffect_PussyHeal.cs
+++ /dev/null
@@ -1,104 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using UnityEngine;
-using RimWorld;
-using rjw;
-using rjw.Modules.Interactions.Helpers;
-
-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 healed wounds", 3.65f);
- //pawn.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.Pussy_Healed, pawn, null);
- }
- //this.AfterSex(any_wound_tended);
- //FleckMaker.AttachedOverlay(pawn, FleckDefOf.FlashHollow, Vector3.zero, 1.5f, -1f);
- }
-
- //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;
- }
- //AbilityUtility.ValidateHasTendableWound(pawn, throwMessages, this.parent);
-
- }
- 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/Source/Genes/Life_Force/Abilities/CompAbilityEffect_Seduce.cs b/Source/Genes/Life_Force/Abilities/CompAbilityEffect_Seduce.cs
deleted file mode 100644
index 678ab48..0000000
--- a/Source/Genes/Life_Force/Abilities/CompAbilityEffect_Seduce.cs
+++ /dev/null
@@ -1,82 +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 (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/Source/Genes/Life_Force/Abilities/CompProperties_AbilityCockEater.cs b/Source/Genes/Life_Force/Abilities/CompProperties_AbilityCockEater.cs
deleted file mode 100644
index b64b346..0000000
--- a/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/Source/Genes/Life_Force/Abilities/CompProperties_AbilityLifeForceCost.cs b/Source/Genes/Life_Force/Abilities/CompProperties_AbilityLifeForceCost.cs
deleted file mode 100644
index 5a05d5f..0000000
--- a/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/Source/Genes/Life_Force/Abilities/CompProperties_AbilityPussyHeal.cs b/Source/Genes/Life_Force/Abilities/CompProperties_AbilityPussyHeal.cs
deleted file mode 100644
index 16ba74d..0000000
--- a/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/Source/Genes/Life_Force/Abilities/CompProperties_Seduce.cs b/Source/Genes/Life_Force/Abilities/CompProperties_Seduce.cs
deleted file mode 100644
index 21e0cde..0000000
--- a/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/Source/Genes/Life_Force/Alert_LowFertilin.cs b/Source/Genes/Life_Force/Alert_LowFertilin.cs
deleted file mode 100644
index 2fb9fdc..0000000
--- a/Source/Genes/Life_Force/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;
- }
- foreach (Pawn pawn in PawnsFinder.AllMapsCaravansAndTravelingTransportPods_Alive)
- {
- if (pawn.RaceProps.Humanlike && pawn.Faction == Faction.OfPlayer)
- {
- Pawn_GeneTracker genes = pawn.genes;
- Gene_LifeForce gene_Lifeforce = (genes != null) ? genes.GetFirstGeneOfType() : null;
- if (gene_Lifeforce != null && 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);
- }
-
- // Token: 0x04004B5C RID: 19292
- private List targets = new List();
-
- // Token: 0x04004B5D RID: 19293
- private List targetLabels = new List();
- }
-}
diff --git a/Source/Genes/Life_Force/GeneGizmo_ResourceLifeForce.cs b/Source/Genes/Life_Force/GeneGizmo_ResourceLifeForce.cs
deleted file mode 100644
index f2b0055..0000000
--- a/Source/Genes/Life_Force/GeneGizmo_ResourceLifeForce.cs
+++ /dev/null
@@ -1,83 +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
- {
- public GeneGizmo_ResourceLifeForce(Gene_Resource gene, List drainGenes, Color barColor, Color barhighlightColor) : base(gene, drainGenes, barColor, barhighlightColor)
- {
- this.draggableBar = true;
- }
-
- public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth, GizmoRenderParms parms)
- {
- return base.GizmoOnGUI(topLeft, maxWidth, parms);
- }
-
- 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/Source/Genes/Life_Force/Gene_LifeForce.cs b/Source/Genes/Life_Force/Gene_LifeForce.cs
deleted file mode 100644
index 5bb73b6..0000000
--- a/Source/Genes/Life_Force/Gene_LifeForce.cs
+++ /dev/null
@@ -1,153 +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;
- }
- foreach (Gizmo gizmo2 in GeneResourceDrainUtility.GetResourceDrainGizmos(this))
- {
- yield return gizmo2;
- }
- yield break;
- }
-
- //Depending on how low the value is it will increase sexdrive and if it reaches zero it will create a mental break which will make the pawn rape others.
- //Not using base.Tick() as it is used to start mental breaks, but we have another way to do it.
- public override void Tick()
- {
- //base.Tick();
- if (this.CanOffset && this.Resource != null)
- {
- GeneUtility.OffsetLifeForce(this, -this.ResourceLossPerDay / 60000f);
- //this.Resource.Value -= this.ResourceLossPerDay / 60000;
- if (this.Resource.Value <= 0 && this.pawn.IsHashIntervalTick(300))
- {
- if (ModsConfig.BiotechActive && this.def.mentalBreakDef != null &&
- this.pawn.Spawned && !this.pawn.InMentalState && !this.pawn.Downed &&
- this.def.mentalBreakDef.Worker.BreakCanOccur(this.pawn))
- {
- this.def.mentalBreakDef.Worker.TryStart(this.pawn, "MentalStateReason_Gene".Translate() + ": " + this.LabelCap, false);
- }
- }
- }
- }
-
- 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/Source/Genes/Life_Force/Gene_LifeForceDrain.cs b/Source/Genes/Life_Force/Gene_LifeForceDrain.cs
deleted file mode 100644
index 335e257..0000000
--- a/Source/Genes/Life_Force/Gene_LifeForceDrain.cs
+++ /dev/null
@@ -1,79 +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);
- }
- }
-
- public override IEnumerable GetGizmos()
- {
- foreach (Gizmo gizmo in GeneResourceDrainUtility.GetResourceDrainGizmos(this))
- {
- yield return gizmo;
- }
- IEnumerator enumerator = null;
- yield break;
- yield break;
- }
-
- [Unsaved(false)]
- private Gene_LifeForce cachedLifeForceGene;
-
- private const float MinAgeForDrain = 3f;
- }
-}
diff --git a/Source/Genes/Life_Force/HediffWithComps_tank.cs b/Source/Genes/Life_Force/HediffWithComps_tank.cs
deleted file mode 100644
index 7dcea63..0000000
--- a/Source/Genes/Life_Force/HediffWithComps_tank.cs
+++ /dev/null
@@ -1,23 +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
-{
- internal class HediffWithComps_tank : HediffWithComps
- {
- public override string LabelInBrackets
- {
- get
- {
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.Append(base.LabelInBrackets);
- stringBuilder.Append(this.Severity.ToStringPercent());
- return stringBuilder.ToString();
- }
- }
- }
-}
diff --git a/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs b/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs
deleted file mode 100644
index 65e458e..0000000
--- a/Source/Genes/Life_Force/IngestionOutcomeDoer_LifeForceOffset.cs
+++ /dev/null
@@ -1,23 +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
-{
- public class IngestionOutcomeDoer_LifeForceOffset : IngestionOutcomeDoer
- {
- protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested)
- {
- if (GeneUtility.HasLifeForce(pawn))
- {
- float num = ingested.stackCount * this.FertilinPerUnit / 100;
- GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(pawn), num);
- }
- }
- public float FertilinPerUnit = 1f;
- }
-}
diff --git a/Source/Genes/Life_Force/JobDrivers/JobDriver_CastAbilityAfterSex.cs b/Source/Genes/Life_Force/JobDrivers/JobDriver_CastAbilityAfterSex.cs
deleted file mode 100644
index d604cca..0000000
--- a/Source/Genes/Life_Force/JobDrivers/JobDriver_CastAbilityAfterSex.cs
+++ /dev/null
@@ -1,90 +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.
- 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/Source/Genes/Life_Force/JobDrivers/JobDriver_Seduced.cs b/Source/Genes/Life_Force/JobDrivers/JobDriver_Seduced.cs
deleted file mode 100644
index 2d38d75..0000000
--- a/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/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpot.cs b/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpot.cs
deleted file mode 100644
index 05c9d5b..0000000
--- a/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/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpotReceiver.cs b/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpotReceiver.cs
deleted file mode 100644
index 6399e43..0000000
--- a/Source/Genes/Life_Force/JobDrivers/JobDriver_SexOnSpotReceiver.cs
+++ /dev/null
@@ -1,84 +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;
- }
-
- // Token: 0x06000420 RID: 1056 RVA: 0x00024190 File Offset: 0x00022390
- 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
- {
- if (xxx.is_human(this.pawn))
- {
- this.pawn.Drawer.renderer.graphics.ResolveApparelGraphics();
- }
- 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/Source/Genes/Life_Force/JobGiver_GetLifeForce.cs b/Source/Genes/Life_Force/JobGiver_GetLifeForce.cs
deleted file mode 100644
index b39d9cb..0000000
--- a/Source/Genes/Life_Force/JobGiver_GetLifeForce.cs
+++ /dev/null
@@ -1,87 +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("LustLicentia.RJWLabs") && gene_lifeforce.StoredCumAllowed)
- {
- 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.FertilinPerUnit);
- 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;
- }
-
- private Thing GetStoredCum(Pawn pawn)
- {
- Thing carriedThing = pawn.carryTracker.CarriedThing;
- ThingDef gatheredCum = ThingDef.Named("GatheredCum");
- if (carriedThing != null && carriedThing.def == gatheredCum)
- {
- return carriedThing;
- }
- for (int i = 0; i < pawn.inventory.innerContainer.Count; i++)
- {
- if (pawn.inventory.innerContainer[i].def == gatheredCum)
- {
- return pawn.inventory.innerContainer[i];
- }
- }
- return GenClosest.ClosestThing_Global_Reachable(pawn.Position, pawn.Map, pawn.Map.listerThings.ThingsOfDef(gatheredCum), 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/Source/Genes/Life_Force/JobGiver_LifeForce_RandomRape.cs b/Source/Genes/Life_Force/JobGiver_LifeForce_RandomRape.cs
deleted file mode 100644
index f710c62..0000000
--- a/Source/Genes/Life_Force/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 pawn)
- {
- if (!can_rape(pawn, false))
- {
- return null;
- }
- Pawn pawn2 = this.find_victim(pawn, pawn.Map);
- if (pawn2 == null)
- {
- return null;
- }
- return JobMaker.MakeJob(JobDefOf.rjw_genes_lifeforce_randomrape, pawn2);
- }
-
- //same as xxx.canrape from rjw, but without last requirements.
- public static bool can_rape(Pawn pawn, bool forced = false)
- {
- return RJWSettings.rape_enabled && (xxx.is_mechanoid(pawn) || ((xxx.can_fuck(pawn) ||
- (!xxx.is_male(pawn) && xxx.get_vulnerability(pawn) < RJWSettings.nonFutaWomenRaping_MaxVulnerability &&
- xxx.can_be_fucked(pawn))) && (!xxx.is_human(pawn) || ((pawn.ageTracker.Growth >= 1f || pawn.ageTracker.CurLifeStage.reproductive)))));
- }
- }
-}
diff --git a/Source/Genes/Life_Force/LifeForceMentalBreakWorker.cs b/Source/Genes/Life_Force/LifeForceMentalBreakWorker.cs
deleted file mode 100644
index 36b47b0..0000000
--- a/Source/Genes/Life_Force/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/Source/Genes/Life_Force/LifeForceMentalState.cs b/Source/Genes/Life_Force/LifeForceMentalState.cs
deleted file mode 100644
index 9c22f4e..0000000
--- a/Source/Genes/Life_Force/LifeForceMentalState.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-using Verse;
-using Verse.AI;
-using rjw;
-namespace RJW_Genes
-{
- public class LifeForceMentalState : MentalState
- {
- public override void MentalStateTick()
- {
- if (this.pawn.IsHashIntervalTick(150) && !GeneUtility.HasCriticalLifeForce(this.pawn))
- {
- Pawn_JobTracker jobs = this.pawn.jobs;
- if (!(((jobs != null) ? jobs.curDriver : null) is JobDriver_Sex))
- {
- base.RecoverFromState();
- return;
- }
- }
- base.MentalStateTick();
- }
- }
-}
\ No newline at end of file
diff --git a/Source/Genes/Life_Force/LifeForceMentalStateWorker.cs b/Source/Genes/Life_Force/LifeForceMentalStateWorker.cs
deleted file mode 100644
index eaeaf89..0000000
--- a/Source/Genes/Life_Force/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/Source/Genes/Life_Force/Patch_LifeForce.cs b/Source/Genes/Life_Force/Patch_LifeForce.cs
deleted file mode 100644
index f4eb817..0000000
--- a/Source/Genes/Life_Force/Patch_LifeForce.cs
+++ /dev/null
@@ -1,180 +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;
-
-namespace RJW_Genes
-{
-
- [HarmonyPatch(typeof(SexUtility), nameof(SexUtility.SatisfyPersonal))]
- public static class Patch_LifeForce
- {
- 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;
- }
-
- //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 succubus = props.partner;
-
- if (!props.isRevese)
- {
- if (props.isReceiver)
- {
- // Scenario Dom Succubus, normal
- absorb_factor = BaseDom(props, succubus);
- }
- else
- {
- // Scenario Sub Succubus, normal
- absorb_factor = BaseSub(props, succubus);
- }
- }
- else
- {
- if (props.isReceiver)
- {
- // Scenario Dom Succubus, Reverse
- absorb_factor = BaseSub(props, succubus);
- }
- else
- {
- // Scenario Sub Succubus, Reverse
- absorb_factor = BaseDom(props, succubus);
- }
- }
-
- //If we remove this check fertelin is always lost, but the succubus doesn't always gain any
- if (absorb_factor != 0f)
- {
- AbsorbFertilin(props, absorb_factor);
- }
-
- if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_drainer) && !props.pawn.health.hediffSet.HasHediff(HediffDefOf.Succubus_Drained))
- {
- props.pawn.health.AddHediff(HediffDefOf.Succubus_Drained);
- GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(succubus), 0.25f);
- }
- }
- }
- public static void AbsorbFertilin(SexProps props, float absorb_factor = 1f)
- {
- Pawn_GeneTracker genes = props.partner.genes;
- Gene_LifeForce gene = genes.GetFirstGeneOfType();
- Hediff fertilin_lost = props.pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.Fertilin_Lost);
- //Around quarter get ejected everytime pawn cums
- float multiplier = Rand.Range(0.10f, 0.40f);
-
-
- //Create a new ferilin_lost hediff or reduce multiplier
- if (fertilin_lost == null)
- {
- Hediff new_fertilin_lost = HediffMaker.MakeHediff(HediffDefOf.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;
- }
- //More in the tank means more to give
- if (props.pawn.Has(Quirk.Messy))
- {
- multiplier *= 2;
- }
- //Currently taking the sum of all penises, maybe I should just consider one at random
- float valuechange = CumUtility.GetTotalFluidAmount(props.pawn) / 100 * absorb_factor * multiplier;
- GeneUtility.OffsetLifeForce(GeneUtility.GetLifeForceGene(props.partner), valuechange);
- //gene.Resource.Value += CumUtility.GetTotalFluidAmount(props.pawn) / 100 * absorb_factor * multiplier;
- }
-
-
- public static float BaseDom(SexProps props, Pawn succubus)
- {
- float absorb_factor = 0f;
- if (props.sexType == xxx.rjwSextype.Sixtynine)
- {
- absorb_factor += 1f;
-
- }
- else if (props.sexType == xxx.rjwSextype.Vaginal)
- {
- //with insertion absorbtion or vaginal cum absorbtion
- //absorb_factor += 1f;
- }
- else if (props.sexType == xxx.rjwSextype.DoublePenetration)
- {
- if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_vaginal_absorber))
- {
- //with insertion absorbtion?
- //absorb_factor += 0.5f;
- }
- if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_anal_absorber))
- {
- //with insertion absorbtion?
- //absorb_factor += 0.5f;
- }
- }
- else if (props.sexType == xxx.rjwSextype.Scissoring)
- {
- //with vaginal cum absorption && vaginal absorbtion
- //absorb_factor += 1f;
- }
- return absorb_factor;
- }
-
- public static float BaseSub(SexProps props, Pawn succubus)
- {
- float absorb_factor = 0f;
- if (props.sexType == xxx.rjwSextype.Oral || props.sexType == xxx.rjwSextype.Fellatio || props.sexType == xxx.rjwSextype.Sixtynine)
- {
- absorb_factor += 1f;
-
- }
- else if (props.sexType == xxx.rjwSextype.Vaginal && GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_vaginal_absorber))
- {
- absorb_factor += 1f;
- }
- else if (props.sexType == xxx.rjwSextype.Anal && GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_anal_absorber))
- {
- absorb_factor += 1f;
- }
- else if (props.sexType == xxx.rjwSextype.DoublePenetration)
- {
- if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_vaginal_absorber))
- {
- absorb_factor += 0.5f;
- }
- if (GeneUtility.HasGeneNullCheck(succubus, GeneDefOf.rjw_genes_anal_absorber))
- {
- absorb_factor += 0.5f;
- }
- }
- 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/Source/Genes/Life_Force/Patch_SexTicks_ChangePsyfocus.cs b/Source/Genes/Life_Force/Patch_SexTicks_ChangePsyfocus.cs
deleted file mode 100644
index dd3444b..0000000
--- a/Source/Genes/Life_Force/Patch_SexTicks_ChangePsyfocus.cs
+++ /dev/null
@@ -1,57 +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;
-
-namespace RJW_Genes
-{
-
- //[HarmonyPatch(typeof(JobDriver_Sex), nameof(JobDriver_Sex.ChangePsyfocus))]
- public static class Patch_SexTicks_ChangePsyfocus
- {
- //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)
- {
- if (__instance.Sexprops.sexType == xxx.rjwSextype.Cunnilingus)
- {
- if (target != null)
- {
- Pawn pawn2 = target as Pawn;
- if (pawn2 != null)
- {
- //We need who the pawn on top is and if reverse we need to make the sub the pawn on top
- if (__instance.Sexprops.isRevese)
- {
-
- DrinkCumflation(pawn2, pawn);
- }
- else
- {
- //
- DrinkCumflation(pawn, pawn2);
- return;
- }
- }
- }
-
- }
- }
-
- public static void DrinkCumflation(Pawn dom, Pawn sub)
- {
- if (GeneUtility.HasLifeForce(sub) && dom.health.hediffSet.HasHediff(HediffDef.Named("Cumflation")))
- {
- Hediff cumflation = dom.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("Cumflation"));
- Gene_LifeForce gene_LifeForce = sub.genes.GetFirstGeneOfType();
- cumflation.Severity -= 0.1f;
- gene_LifeForce.Resource.Value += 0.05f;
- }
- }
- //Maybe I can store gene and hediff so I dont need to look them up every time
- }
-}
diff --git a/Source/Genes/Life_Force/ThinkNode_ConditionalCritcalLifeForce.cs b/Source/Genes/Life_Force/ThinkNode_ConditionalCritcalLifeForce.cs
deleted file mode 100644
index dbb3f6b..0000000
--- a/Source/Genes/Life_Force/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/Source/Genes/Life_Force/ThinkNode_ConditionalLowLifeForce.cs b/Source/Genes/Life_Force/ThinkNode_ConditionalLowLifeForce.cs
deleted file mode 100644
index 0e71ce7..0000000
--- a/Source/Genes/Life_Force/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/Source/Genes/Special/Gene_Aphrodisiac_Pheromones_.cs b/Source/Genes/Special/Gene_Aphrodisiac_Pheromones_.cs
deleted file mode 100644
index d9f4341..0000000
--- a/Source/Genes/Special/Gene_Aphrodisiac_Pheromones_.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;
-using RimWorld;
-
-namespace RJW_Genes
-{
- public class Gene_Aphrodisiac_Pheromones : Gene
- {
-
- //Summary one every one check for all pawns nearby and in line of sight and add/renew a hediff which increases sexdrive for six hours.
- public override void Tick()
- {
- base.Tick();
- if (this.pawn.IsHashIntervalTick(2500))
- {
- //Only spread pheromones if sexdrive above 1
- float sexfrequency = this.pawn.GetStatValue(StatDef.Named("SexFrequency"));
- if(sexfrequency > 1f)
- {
- foreach (Pawn pawn in this.AffectedPawns(this.pawn.Position, this.pawn.Map))
- {
- this.InduceAphrodisiac(pawn, sexfrequency);
- }
- }
- }
- }
-
- //Creatus an IEnumerable of all pawns which are closeby and in lineofsight, self and other pawns with aphrodisiac pheromones gene are skipped.
- private IEnumerable AffectedPawns(IntVec3 pos, Map map)
- {
- foreach (Pawn pawn in map.mapPawns.AllPawns)
- {
- if (this.pawn != null && pawn != this.pawn && pos.DistanceTo(pawn.Position) < 5 && GenSight.LineOfSight(pos, pawn.Position, pawn.Map) && !GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_aphrodisiac_pheromones))
- {
- yield return pawn;
- }
- }
- //IEnumerator enumerator = null;
- yield break;
- }
-
- //Applies er renews a hediff which increases sexdrive for 6 hours
- private void InduceAphrodisiac(Pawn pawn, float sexfrequency)
- {
- Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.Aphrodisiac_Pheromone);
-
- if (hediff != null)
- {
- hediff.Severity = 1f;
- }
- else
- {
- Hediff aphrodisiac = HediffMaker.MakeHediff(HediffDefOf.Aphrodisiac_Pheromone, pawn);
- foreach (StatModifier stat in aphrodisiac.CurStage.statFactors)
- {
- //Log.Message(pawn.Name.ToString());
- //Log.Message(stat.stat.defName);
- //Log.Message(stat.value.ToString());
- if (stat.stat.defName == "SexFrequency")
- {
- stat.value = ModifySexfrequency(pawn, sexfrequency);
- pawn.health.AddHediff(aphrodisiac);
- }
- }
- }
- }
-
- //Function to modify aphrodisiac strength, currently has no effect, but it's an easy hook for other modders.
- public float ModifySexfrequency(Pawn pawn, float sexfrequency)
- {
- return sexfrequency;
- }
- }
-}
diff --git a/Source/Genes/Special/Patch_OrgasmRush.cs b/Source/Genes/Special/Patch_OrgasmRush.cs
index 3caaa68..fefcb7a 100644
--- a/Source/Genes/Special/Patch_OrgasmRush.cs
+++ b/Source/Genes/Special/Patch_OrgasmRush.cs
@@ -46,10 +46,10 @@ namespace RJW_Genes
///
public static Hediff GetOrgasmRushHediff(Pawn orgasmed)
{
- Hediff orgasmRushHediff = orgasmed.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_orgasm_rush_hediff);
+ Hediff orgasmRushHediff = orgasmed.health.hediffSet.GetFirstHediffOfDef(GeneDefOf.rjw_genes_orgasm_rush_hediff);
if (orgasmRushHediff == null)
{
- orgasmRushHediff = HediffMaker.MakeHediff(HediffDefOf.rjw_genes_orgasm_rush_hediff, orgasmed);
+ orgasmRushHediff = HediffMaker.MakeHediff(GeneDefOf.rjw_genes_orgasm_rush_hediff, orgasmed);
orgasmRushHediff.Severity = 0;
orgasmed.health.AddHediff(orgasmRushHediff);
}
diff --git a/Source/HarmonyInit.cs b/Source/HarmonyInit.cs
index 8c5f3d6..35ffb2e 100644
--- a/Source/HarmonyInit.cs
+++ b/Source/HarmonyInit.cs
@@ -27,8 +27,6 @@ namespace RJW_Genes
// Gene: Generous Donor [Postfix Patch]
harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.TransferNutrition)),
postfix: new HarmonyMethod(typeof(Patch_TransferNutrition), nameof(Patch_TransferNutrition.Postfix)));
- harmony.Patch(AccessTools.Method(typeof(rjw.JobDriver_Sex), nameof(rjw.JobDriver_Sex.ChangePsyfocus)),
- postfix: new HarmonyMethod(typeof(Patch_SexTicks_ChangePsyfocus), nameof(Patch_SexTicks_ChangePsyfocus.Postfix)));
}
}))();
}
diff --git a/Source/HediffDefOf.cs b/Source/HediffDefOf.cs
deleted file mode 100644
index c6581f8..0000000
--- a/Source/HediffDefOf.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 HediffDefOf
- {
- public static readonly HediffDef Aphrodisiac_Pheromone;
- public static readonly HediffDef Fertilin_Lost;
- public static readonly HediffDef Succubus_Drained;
- public static readonly HediffDef rjw_genes_orgasm_rush_hediff;
- }
-}
diff --git a/Source/Interactions/CompAbility_SexInteractionRequirements.cs b/Source/Interactions/CompAbility_SexInteractionRequirements.cs
deleted file mode 100644
index f3b9c26..0000000
--- a/Source/Interactions/CompAbility_SexInteractionRequirements.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 CompAbility_SexInteractionRequirements : AbilityComp
- {
- public CompProperties_SexInteractionRequirements Props
- {
- get
- {
- return (CompProperties_SexInteractionRequirements)this.props;
- }
- }
-
-
- }
-}
diff --git a/Source/Interactions/CompProperties_SexInteractionRequirements.cs b/Source/Interactions/CompProperties_SexInteractionRequirements.cs
deleted file mode 100644
index 3756d7b..0000000
--- a/Source/Interactions/CompProperties_SexInteractionRequirements.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RimWorld;
-using rjw;
-using rjw.Modules.Interactions.Defs.DefFragment;
-using rjw.Modules.Interactions.Enums;
-
-namespace RJW_Genes
-{
- public class CompProperties_SexInteractionRequirements : AbilityCompProperties
- {
- public CompProperties_SexInteractionRequirements()
- {
- this.compClass = typeof(CompAbility_SexInteractionRequirements);
- }
-
- public List tags = new List();
- public InteractionRequirement dominantRequirement;
- public InteractionRequirement submissiveRequirement;
- }
-}
diff --git a/Source/Interactions/CustomSexInteraction_Helper.cs b/Source/Interactions/CustomSexInteraction_Helper.cs
deleted file mode 100644
index 4e69462..0000000
--- a/Source/Interactions/CustomSexInteraction_Helper.cs
+++ /dev/null
@@ -1,146 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Verse;
-using RimWorld;
-using rjw;
-using rjw.Modules.Interactions.Objects;
-using rjw.Modules.Interactions.Helpers;
-using rjw.Modules.Interactions.Enums;
-using rjw.Modules.Interactions.Implementation;
-using rjw.Modules.Interactions.Defs.DefFragment;
-namespace RJW_Genes
-{
- public class CustomSexInteraction_Helper
- {
- public static List GenerateInteractionDefList(Pawn pawn, Pawn pawn2, CompProperties_SexInteractionRequirements sexpropsreq)
- {
- List tags = new List();
- if (pawn2.IsAnimal())
- {
- tags.Add(InteractionTag.Animal);
-
- }
- else
- {
- tags = sexpropsreq.tags;
- }
-
- InteractionRequirement dominantRequirement = sexpropsreq.dominantRequirement;
- InteractionRequirement submissiveRequirement = sexpropsreq.submissiveRequirement;
- List list = new List();
- //List a = from interaction in sexinteractions
- //where InteractionHelper.GetWithExtension(interaction).DominantHasFamily(dominantRequirement.families.)
- // select interaction;
-
- //should use where select but dont fully understand that, so I am using this.
- foreach (InteractionDef interactionDef in SexUtility.SexInterractions)
- {
- //Use rjw function to check if the interaction would be valid
- if (!LewdInteractionValidatorService.Instance.IsValid(interactionDef, pawn, pawn2))
- {
- continue;
- }
- InteractionWithExtension withExtension = InteractionHelper.GetWithExtension(interactionDef);
- bool add_interaction = false;
- //only add interactions which have a correct tag
- foreach (InteractionTag tag in tags)
- {
- if (withExtension.HasInteractionTag(tag))
- {
- add_interaction = true;
- break;
- }
- }
- //In case of failure go to next interaction
- if (!add_interaction)
- {
- continue;
- }
- //goes to next interaction if it doesn't have the required genitals
- if (dominantRequirement != null)
- {
- foreach (GenitalFamily genitalFamily in dominantRequirement.families)
- {
- if (!withExtension.DominantHasFamily(genitalFamily))
- {
- add_interaction = false;
- break;
-
- }
- }
- if (!add_interaction)
- {
- continue;
- }
- foreach (GenitalTag tag in dominantRequirement.tags)
- {
- if (!withExtension.DominantHasTag(tag))
- {
- add_interaction = false;
- break;
-
- }
- }
- }
- //goes to next interaction if it doesn't have the required genitals
- if (submissiveRequirement != null)
- {
- foreach (GenitalFamily genitalFamily in submissiveRequirement.families)
- {
- if (!withExtension.SubmissiveHasFamily(genitalFamily))
- {
- add_interaction = false;
- break;
-
- }
- }
- if (!add_interaction)
- {
- continue;
- }
- foreach (GenitalTag tag in submissiveRequirement.tags)
- {
- if (!withExtension.SubmissiveHasTag(tag))
- {
- add_interaction = false;
- break;
-
- }
-
- }
- }
- if (add_interaction)
- {
- list.Add(interactionDef);
- }
-
- }
- return list;
- }
-
- //Generates a valid interaction for the requirements and assigns sexprops based on that
- public static SexProps GenerateSexProps(Pawn pawn, Pawn pawn2, CompProperties_SexInteractionRequirements sexpropsreq)
- {
- List interactionlist = GenerateInteractionDefList(pawn, pawn2, sexpropsreq);
- if (!interactionlist.Any())
- {
- return null;
- }
- InteractionDef dictionaryKey = interactionlist.RandomElement();
- bool rape = InteractionHelper.GetWithExtension(dictionaryKey).HasInteractionTag(InteractionTag.Rape);
- SexProps sexProps = new SexProps();
- sexProps.pawn = pawn;
- sexProps.partner = pawn2;
- sexProps.sexType = SexUtility.rjwSextypeGet(dictionaryKey);
- sexProps.isRape = rape;
- sexProps.isRapist = rape;
- sexProps.canBeGuilty = false;
- sexProps.dictionaryKey = dictionaryKey;
- sexProps.rulePack = SexUtility.SexRulePackGet(dictionaryKey);
- return sexProps;
- }
- }
-}
diff --git a/Source/Interactions/DomSuccubusTailCustomRequirementHandler.cs b/Source/Interactions/DomSuccubusTailCustomRequirementHandler.cs
deleted file mode 100644
index cfa3ebf..0000000
--- a/Source/Interactions/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;
- }
- //public static readonly StringListDef filter = DefDatabase.GetNamed("DomSuccubusTailFilter");
- }
-}
diff --git a/Source/Interactions/GenesPartKindUsageRule.cs b/Source/Interactions/GenesPartKindUsageRule.cs
deleted file mode 100644
index 6c0f53c..0000000
--- a/Source/Interactions/GenesPartKindUsageRule.cs
+++ /dev/null
@@ -1,53 +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 to 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;
- if (GeneUtility.HasCriticalLifeForce(pawn))
- {
- yield return new Weighted(50f, LewdablePartKind.Mouth);
- }
- else if (GeneUtility.HasLowLifeForce(pawn))
- {
- yield return new Weighted(10f, LewdablePartKind.Mouth);
- }
- else if (GeneUtility.HasLifeForce(pawn))
- {
- yield return new Weighted(2f, LewdablePartKind.Mouth);
- }
- yield break;
- }
-
- public IEnumerable> ModifiersForSubmissive(InteractionContext context)
- {
- Pawn pawn = context.Internals.Submissive.Pawn;
- if (GeneUtility.HasCriticalLifeForce(pawn))
- {
- yield return new Weighted(50f, LewdablePartKind.Mouth);
- }
- else if (GeneUtility.HasLowLifeForce(pawn))
- {
- yield return new Weighted(10f, LewdablePartKind.Mouth);
- }
- else if (GeneUtility.HasLifeForce(pawn))
- {
- yield return new Weighted(2f, LewdablePartKind.Mouth);
- }
- yield break;
- }
- }
-}
diff --git a/Source/Interactions/SubSuccubusTailCustomRequirementHandler - Copy.cs b/Source/Interactions/SubSuccubusTailCustomRequirementHandler - Copy.cs
deleted file mode 100644
index 5824aa5..0000000
--- a/Source/Interactions/SubSuccubusTailCustomRequirementHandler - Copy.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 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;
- }
- //public static readonly StringListDef filter = DefDatabase.GetNamed("SubSuccubusTailFilter");
- }
-}
diff --git a/Source/JobDefOf.cs b/Source/JobDefOf.cs
deleted file mode 100644
index 8bae1fa..0000000
--- a/Source/JobDefOf.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
-{
- [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;
- }
-}
diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj
index d3bad38..48ab4dc 100644
--- a/Source/Rjw-Genes.csproj
+++ b/Source/Rjw-Genes.csproj
@@ -27,14 +27,14 @@
False
- ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll
+ ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll
..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\licentia-labs-master\Assemblies\LicentiaLabs.dll
False
- ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\rjw-master\1.4\Assemblies\RJW.dll
+ ..\..\rjw\1.4\Assemblies\RJW.dll
@@ -49,17 +49,18 @@
- ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.dll
+ ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll
False
- ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll
+ ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll
..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll
+
@@ -70,7 +71,6 @@
-
@@ -82,7 +82,6 @@
-
@@ -99,7 +98,6 @@
-
@@ -107,7 +105,6 @@
-
@@ -117,56 +114,15 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Source/ThoughtDefOf.cs b/Source/ThoughtDefOf.cs
deleted file mode 100644
index 02a4aac..0000000
--- a/Source/ThoughtDefOf.cs
+++ /dev/null
@@ -1,17 +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_critical_fertilin;
- }
-}