diff --git a/1.3/Assemblies/RJWSexperience.Ideology.dll b/1.3/Assemblies/RJWSexperience.Ideology.dll
index 3ada764..70baec9 100644
Binary files a/1.3/Assemblies/RJWSexperience.Ideology.dll and b/1.3/Assemblies/RJWSexperience.Ideology.dll differ
diff --git a/1.3/Defs/PreceptDefs/Precepts_Pregnancy.xml b/1.3/Defs/PreceptDefs/Precepts_Pregnancy.xml
new file mode 100644
index 0000000..7e5b69f
--- /dev/null
+++ b/1.3/Defs/PreceptDefs/Precepts_Pregnancy.xml
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+
+
+ Pregnancy
+
+ UI/Issues/Birth
+
+
+
+
+ Pregnancy_Holy
+ Pregnancy
+
+ To be pregnant is a duty worthy of respect. Women carry our society into the next generation.
+ Medium
+ 10
+
+
+ Pregnancy_Respected_Pregnant
+
+
+ Pregnancy_Respected_Pregnant_Social
+
+
+
+
+
+ Pregnancy_Elevated
+ Pregnancy
+
+ Being pregnant is considered noble.
+ Low
+ 20
+
+
+ Pregnancy_Elevated_Pregnant
+
+
+ Pregnancy_Elevated_Pregnant_Social
+
+
+
+
+
+ Pregnancy_NoRules
+ Pregnancy
+
+ There are no thoughts about pregnancy.
+ Low
+ 30
+
+
+
+
+
+ Pregnancy_Required
+ Pregnancy
+ High
+ 40
+
+ Women should be pregnant - those who are not, are seen unworthy.
+
+
+ Pregnancy_Respected_Pregnant
+
+
+ Pregnancy_Respected_Pregnant_Social
+
+
+ Pregnancy_Horrible_NonPregnant
+
+
+ Pregnancy_Horrible_NonPregnant_Social
+
+
+
+
+
+ Pregnancy_Horrible
+ Pregnancy
+ Low
+ 50
+
+ Being Pregnant is unclean. Take care and stay pure.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.3/Defs/PreceptDefs/Precepts_Sex.xml b/1.3/Defs/PreceptDefs/Precepts_Sex.xml
index ea37742..8cf05e4 100644
--- a/1.3/Defs/PreceptDefs/Precepts_Sex.xml
+++ b/1.3/Defs/PreceptDefs/Precepts_Sex.xml
@@ -288,7 +288,7 @@
Sex_Promiscuous11
- RJWSexperience.Thought_IncreaseRecord
+ RJWSexperience.Ideology.Thought_IncreaseRecord
@@ -297,7 +297,7 @@
-
+
Lust3.0
diff --git a/1.3/Defs/PreceptDefs/Precepts_SexProselytizing.xml b/1.3/Defs/PreceptDefs/Precepts_SexProselytizing.xml
new file mode 100644
index 0000000..81e0f58
--- /dev/null
+++ b/1.3/Defs/PreceptDefs/Precepts_SexProselytizing.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ SexProselytizing
+
+ UI/Issues/Submissive
+
+
+
+ ProselyzingByOrgasm
+ SexProselytizing
+
+ Giving orgasm converts partner towards this ideology.
+ Medium
+ 50
+ 400
+
+
+
\ No newline at end of file
diff --git a/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml b/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml
new file mode 100644
index 0000000..c060ec4
--- /dev/null
+++ b/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml
@@ -0,0 +1,219 @@
+
+
+
+
+
+ GenitalSize
+
+ UI/Memes/SexualDissolutely
+
+
+
+
+
+ GenitalSize_Big_Better
+ GenitalSize
+ The size matters.
+
+ High
+ 20
+ 200
+
+
+ GenitalSize_Approved
+
+
+ GenitalSize_Approved_Social
+
+
+
+
+
+ GenitalSize_NoRules
+ GenitalSize
+ The size is unimportant.
+
+ High
+ 10
+ 100
+
+
+
+
+
+ GenitalSize_Smaller_Better
+ GenitalSize
+ The greeks actually believed, that a big genital is an animalistic feature. Important members are known for their small genitals.
+
+ High
+ 30
+ 200
+
+
creation(tag=meme_Zoophile) ->[deity0_name] loves breeding with beasts.
+
episode(uses=1,tag=meme_Zoophile) ->[deity0_name] said to all, "Sigmar forbids this!"
+
+
setup(tag=meme_Zoophile) ->Someday, [founderName] was so horny that accidentally fucked with an animal and loved it.
+
story(uses=1,tag=meme_Zoophile) ->For spreading animals, [founderName] started to breed with animals.
+
+
lessonIntro(tag=meme_Zoophile) ->Someday, i had sex with animal. It was much better than humans!
+
lesson(tag=meme_Zoophile) ->Only the animals can satisfy me.
+
lessonReinforcement(tag=meme_Zoophile) ->Breed with animals. It is the eternal hapiness.
+
+
archistBasis(tag=meme_Zoophile) ->Archists are always seeking ultimate pleasure.
+
archistFact(tag=meme_Zoophile) ->That was breeding with animals.
+
archistProphecy(tag=meme_Zoophile) ->[inTheEnd], the archotechs will finally unlock the interspecies breeding, so that they may lead ultimate pleasure.
+
+
animistFact(tag=meme_Zoophile) ->The most powerful spirits are those of beasts, and spirits of beasts will be restless unless beasts rule.
+
animistProphecy(tag=meme_Zoophile) ->[itIsSaid] that a powerful spirit of destruction will seek to end the universe, but that a human-born beast will wield the spirit of the [relic0_name] and destroy the destroyer.
archistProphecy(tag=meme_Rapist) ->[inTheEnd], the rapists never stop raping.
+
+
animistFact(tag=meme_Rapist) ->The most powerful spirits are those of rapists, and spirits of rapists will rape all.
+
animistProphecy(tag=meme_Rapist) ->[itIsSaid] that a powerful spirit of destruction will seek to end the universe, but that a million-raped rapist will wield the spirit of the [relic0_name] and rape the destroyer.
+
+
+
+
+ Bestiality_Acceptable
+ Bestiality
+
+ Bestiality is a normal, unremarkable part of life.
+ Medium
+ 10
+ 10
+ true
+
+
+ 0.75
+
+
+
+
+
+
+ Bestiality_OnlyVenerated
+ Bestiality
+
+ One who sex with venerated animals should be honored and respected. But having sex with other animals will be denounced
+ High
+ 0
+ 1000
+
+
+ RSI_SexWithVeneratedAnimal
+ Bestiality_Know_Honorable
+ Someone sex with animal
+ true
+
+
+
+
+
+
+
+
+ true
+
+
+ 2.0
+
+
+
+
+ true
+
+
+ false
+
+
+ 0.05
+
+
+
+
+ 0.65
+
+
+
+
+
+
+ Bestiality_BondOnly
+ Bestiality
+
+ Sex with Bonded animals should be honored and respected. But having sex with other animals will be denounced.
+ High
+ 0
+ 1000
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Defs/PreceptDefs/Precepts_Pregnancy.xml b/1.4/Defs/PreceptDefs/Precepts_Pregnancy.xml
new file mode 100644
index 0000000..7e5b69f
--- /dev/null
+++ b/1.4/Defs/PreceptDefs/Precepts_Pregnancy.xml
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+
+
+ Pregnancy
+
+ UI/Issues/Birth
+
+
+
+
+ Pregnancy_Holy
+ Pregnancy
+
+ To be pregnant is a duty worthy of respect. Women carry our society into the next generation.
+ Medium
+ 10
+
+
+ Pregnancy_Respected_Pregnant
+
+
+ Pregnancy_Respected_Pregnant_Social
+
+
+
+
+
+ Pregnancy_Elevated
+ Pregnancy
+
+ Being pregnant is considered noble.
+ Low
+ 20
+
+
+ Pregnancy_Elevated_Pregnant
+
+
+ Pregnancy_Elevated_Pregnant_Social
+
+
+
+
+
+ Pregnancy_NoRules
+ Pregnancy
+
+ There are no thoughts about pregnancy.
+ Low
+ 30
+
+
+
+
+
+ Pregnancy_Required
+ Pregnancy
+ High
+ 40
+
+ Women should be pregnant - those who are not, are seen unworthy.
+
+
+ Pregnancy_Respected_Pregnant
+
+
+ Pregnancy_Respected_Pregnant_Social
+
+
+ Pregnancy_Horrible_NonPregnant
+
+
+ Pregnancy_Horrible_NonPregnant_Social
+
+
+
+
+
+ Pregnancy_Horrible
+ Pregnancy
+ Low
+ 50
+
+ Being Pregnant is unclean. Take care and stay pure.
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Defs/PreceptDefs/Precepts_SexProselytizing.xml b/1.4/Defs/PreceptDefs/Precepts_SexProselytizing.xml
new file mode 100644
index 0000000..81e0f58
--- /dev/null
+++ b/1.4/Defs/PreceptDefs/Precepts_SexProselytizing.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ SexProselytizing
+
+ UI/Issues/Submissive
+
+
+
+ ProselyzingByOrgasm
+ SexProselytizing
+
+ Giving orgasm converts partner towards this ideology.
+ Medium
+ 50
+ 400
+
+
+
\ No newline at end of file
diff --git a/1.4/Defs/PreceptDefs/Precepts_SizeMatters.xml b/1.4/Defs/PreceptDefs/Precepts_SizeMatters.xml
new file mode 100644
index 0000000..c060ec4
--- /dev/null
+++ b/1.4/Defs/PreceptDefs/Precepts_SizeMatters.xml
@@ -0,0 +1,219 @@
+
+
+
+
+
+ GenitalSize
+
+ UI/Memes/SexualDissolutely
+
+
+
+
+
+ GenitalSize_Big_Better
+ GenitalSize
+ The size matters.
+
+ High
+ 20
+ 200
+
+
+ GenitalSize_Approved
+
+
+ GenitalSize_Approved_Social
+
+
+
+
+
+ GenitalSize_NoRules
+ GenitalSize
+ The size is unimportant.
+
+ High
+ 10
+ 100
+
+
+
+
+
+ GenitalSize_Smaller_Better
+ GenitalSize
+ The greeks actually believed, that a big genital is an animalistic feature. Important members are known for their small genitals.
+
+ High
+ 30
+ 200
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml b/1.4/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml
new file mode 100644
index 0000000..211c6f1
--- /dev/null
+++ b/1.4/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml
@@ -0,0 +1,67 @@
+
+
+
+ NamerRitualFestival
+ true
+ RitualSpotOrAltar
+
+
Rape
+
+
+
+
+ Gangbang
+ Gangbang
+ gangbang
+ A ritualistic gangbang. The organizer will give a speech to excite the crowd, then fuck the victim. If the organizer cannot fuck victim, the ritual will be canceled.
+ UI/Issues/Gangbang
+ false
+ Gangbang
+
+
+
+
+ Gangbang_Consensual
+ Gangbang_Consensual
+ gangbang
+ A ritualistic gangbang. The organizer will give a speech to excite the crowd, then fucked by the crowd.
+ UI/Issues/Gangbang_Consensual
+ false
+ Gangbang_Consensual
+
+
+
+
+ GangbangByAnimal
+ GangbangByAnimal
+ gangbang by animal
+ A ritualistic animal gangbang. The organizer will give a speech to excite the crowd, then animals begin fuck victim.
+ UI/Commands/Breeding_Pawn_off
+ false
+ BestialGangbang
+
+
+
+
+ GangbangByAnimal_Consensual
+ GangbangByAnimal_Consensual
+ gangbang by animal
+ A ritualistic animal gangbang. The organizer will give a speech to excite the crowd, then animals begin fuck the organizer.
+ UI/Commands/Breeding_Pawn_on
+ false
+ BestialGangbang_Consensual
+
+
+
+
+ DrugOrgy
+ drug orgy
+ An orgy with large amounts of aphrodisiac. Participants will gather around a lustbong, light it on fire, and fuck each other while inhaling the fumes.
+ UI/Icons/Rituals/SmokeCircle
+ false
+ DrugOrgy
+ DrugOrgy
+ DrugOrgy
+
+
+
\ No newline at end of file
diff --git a/1.4/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml b/1.4/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml
new file mode 100644
index 0000000..13c8abc
--- /dev/null
+++ b/1.4/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml
@@ -0,0 +1,36 @@
+
+
+
+ Animal_Breeders
+
+ Animals are our better half.
+ Intense
+
+
AnimalPersonhood
+
Zoophile
+
+
+
+
+ Savage_Rapist_Brigands
+
+ All of them are ours.
+ Intense
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Defs/Rituals/Ritual_Outcomes_sex.xml b/1.4/Defs/Rituals/Ritual_Outcomes_sex.xml
new file mode 100644
index 0000000..a6c9646
--- /dev/null
+++ b/1.4/Defs/Rituals/Ritual_Outcomes_sex.xml
@@ -0,0 +1,400 @@
+
+
+
+ Gangbang
+ Depending on ritual quality, participants will get between {MINMOOD} and {MAXMOOD} mood for {MOODDAYS} days.
+ RitualOutcomeEffectWorker_Consumable
+
+
If the {0} is satisfying, one of the participants might gain an inspiration.
+
+
+
+ initiator
+
+ 0.10
+
+
+
+
+
+
(1, -0.20)
+
(3, -0.05)
+
(5, 0.05)
+
(10, 0.10)
+
+
+
+
+ true
+
+ 0.2
+ an altar
+
+
+
+ 0.15
+ FeelingBroken
+ 0.3
+ victim
+
+
+
+ 0.15
+ FeelingBroken
+ 0.5
+ victim
+
+
+
+ 0.3
+ FeelingBroken
+ 0.9
+ victim
+
+
+
+ 0.4
+ Sex
+ 0.7
+
+
+
+ 0.4
+ Sex
+ 0.9
+
+
+
+
+
+ 0.05
+ TerribleGangbang
+ The {0} was terrible! The speech was stuttering and incoherent, and the victim was botched - everyone was waiting for it to end.
+ -2
+
+
+
+ 0.10
+ BoringGangbang
+ The {0} was boring. The speech was repetitive and the victim was noticeably flawed. It just didn't feel dignified.
+ -1
+
+
+
+ 0.6
+ FunGangbang
+ The {0} was satisfying. The speech felt meaningful, and the victim was precise and dignified.
+ There's a 5% chance that a random participant gets an inspiration.
+ 1
+
+
+
+ 0.25
+ UnforgettableGangbang
+ The {0} was spectacular! The speech brought everyone to the edge of a frenzy and the victim was like succubus.
+ There's a 10% chance that a random participant gets an inspiration.
+ 2
+
+
+
+
+
+ Gangbang_Consensual
+ Depending on ritual quality, participants will get between {MINMOOD} and {MAXMOOD} mood for {MOODDAYS} days.
+ RitualOutcomeEffectWorker_Consumable
+
+
If the {0} is satisfying, one of the participants might gain an inspiration.
+
+
+
+ initiator
+
+ 0.10
+
+
+
+
+
+
(1, -0.20)
+
(3, -0.05)
+
(5, 0.05)
+
(10, 0.10)
+
+
+
+
+ true
+
+ 0.2
+ an altar
+
+
+
+ 0.4
+ Sex
+ 0.7
+
+
+
+ 1.0
+ Sex
+ 0.8
+
+
+
+
+
+ 0.05
+ TerribleGangbang
+ The {0} was terrible! The speech was stuttering and incoherent, and the victim was botched - everyone was waiting for it to end.
+ -2
+
+
+
+ 0.10
+ BoringGangbang
+ The {0} was boring. The speech was repetitive and the victim was noticeably flawed. It just didn't feel dignified.
+ -1
+
+
+
+ 0.6
+ FunGangbang
+ The {0} was satisfying. The speech felt meaningful, and the victim was precise and dignified.
+ There's a 5% chance that a random participant gets an inspiration.
+ 1
+
+
+
+ 0.25
+ UnforgettableGangbang
+ The {0} was spectacular! The speech brought everyone to the edge of a frenzy and the victim was like succubus.
+ There's a 10% chance that a random participant gets an inspiration.
+ 2
+
+
+
+
+
+ BestialGangbang
+ Depending on ritual quality, participants will get between {MINMOOD} and {MAXMOOD} mood for {MOODDAYS} days.
+ RitualOutcomeEffectWorker_Consumable
+
+
If the {0} is satisfying, one of the participants might gain an inspiration.
+
+
+
+ initiator
+
+ 0.10
+
+
+
+
+
+
(1, -0.50)
+
(3, -0.30)
+
(5, -0.15)
+
(10, -0.10)
+
+
+
+
+ true
+
+ 0.2
+ an altar
+
+
+
+ 0.45
+ FeelingBroken
+ 0.3
+ victim
+
+
+
+ 0.45
+ FeelingBroken
+ 0.5
+ victim
+
+
+
+ 0.8
+ FeelingBroken
+ 0.9
+ victim
+
+
+
+
+
+ 0.05
+ TerribleGangbang
+ The {0} was terrible! The speech was stuttering and incoherent, and the victim was botched - everyone was waiting for it to end.
+ -2
+
+
+
+ 0.10
+ BoringGangbang
+ The {0} was boring. The speech was repetitive and the victim was noticeably flawed. It just didn't feel dignified.
+ -1
+
+
+
+ 0.65
+ FunGangbang
+ The {0} was satisfying. The speech felt meaningful, and the victim was precise and dignified.
+ There's a 5% chance that a random participant gets an inspiration.
+ 1
+
+
+
+ 0.2
+ UnforgettableGangbang
+ The {0} was spectacular! The speech brought everyone to the edge of a frenzy and the victim was like succubus.
+ There's a 10% chance that a random participant gets an inspiration.
+ 2
+
+
+
+
+
+ BestialGangbang_Consensual
+ Depending on ritual quality, participants will get between {MINMOOD} and {MAXMOOD} mood for {MOODDAYS} days.
+ RitualOutcomeEffectWorker_Consumable
+
+
If the {0} is satisfying, one of the participants might gain an inspiration.
+
+
+
+ initiator
+
+ 0.10
+
+
+
+
+
+
(1, 0.20)
+
(3, 0.40)
+
(5, 0.65)
+
(10, 1.20)
+
+
+
+
+ true
+
+ 0.2
+ an altar
+
+
+
+
+
+ 0.05
+ TerribleGangbang
+ The {0} was terrible! The speech was stuttering and incoherent, and the victim was botched - everyone was waiting for it to end.
+ -2
+
+
+
+ 0.10
+ BoringGangbang
+ The {0} was boring. The speech was repetitive and the victim was noticeably flawed. It just didn't feel dignified.
+ -1
+
+
+
+ 0.65
+ FunGangbang
+ The {0} was satisfying. The speech felt meaningful, and the victim was precise and dignified.
+ There's a 5% chance that a random participant gets an inspiration.
+ 1
+
+
+
+ 0.2
+ UnforgettableGangbang
+ The {0} was spectacular! The speech brought everyone to the edge of a frenzy and the victim was like succubus.
+ There's a 10% chance that a random participant gets an inspiration.
+ 2
+
+
+
+
+
+ DrugOrgy
+ Depending on ritual quality, participants will get between {MINMOOD} and {MAXMOOD} mood for {MOODDAYS} days.
+ RitualOutcomeEffectWorker_RemoveConsumableBuilding
+
+
If the {0} is satisfying, one of the participants might gain an inspiration.
+
+
+
+
+
+
+
+
(1, -0.50)
+
(3, 0.0)
+
(5, 0.10)
+
(10, 0.30)
+
+
+
+
+
+ Impressiveness
+
+
+
0, 0
+
50, 0.1
+
120, 0.2
+
+
+
+
+
+ 0.7
+ Sex
+ 0.7
+
+
+
+
+
+ 0.05
+ TerribleOrgy
+ The {0} was terrible!
+ -2
+
+
+
+ 0.10
+ BoringOrgy
+ The {0} was boring.
+ -1
+
+
+
+ 0.6
+ FunOrgy
+ The {0} was satisfying.
+ There's a 5% chance that a random participant gets an inspiration.
+ 1
+
+
+
+ 0.25
+ UnforgettableOrgy
+ The {0} was spectacular!
+ There's a 10% chance that a random participant gets an inspiration.
+ 2
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Defs/Rituals/Ritual_Targets_sex.xml b/1.4/Defs/Rituals/Ritual_Targets_sex.xml
new file mode 100644
index 0000000..5805f34
--- /dev/null
+++ b/1.4/Defs/Rituals/Ritual_Targets_sex.xml
@@ -0,0 +1,15 @@
+
+
+
+ RitualSpotOrAltar_Gangbang
+ RitualObligationTargetWorker_AnyRitualSpotOrAltar_Scarification
+
+
+
+ DrugOrgy
+ RitualObligationTargetWorker_ConsumableBuilding
+
+
Burnbong_Aphrodisiac
+
+
+
\ No newline at end of file
diff --git a/1.4/Defs/ThingDefs/Buildings_Ideo_sex.xml b/1.4/Defs/ThingDefs/Buildings_Ideo_sex.xml
new file mode 100644
index 0000000..eaaba10
--- /dev/null
+++ b/1.4/Defs/ThingDefs/Buildings_Ideo_sex.xml
@@ -0,0 +1,134 @@
+
+
+
+ Burnbong_Aphrodisiac
+
+ A wood structure packed with humpshroom. It can be ignited during a ritual and produce a huge amount of humpshroom smoke for a few hours, after which it is destroyed.
+ RealtimeOnly
+
+ Graphic_Single
+ Things/Building/Misc/Burnbong/Burnbong
+ (1.2,1.2)
+
+ (0.92, 1 ,0.92)
+
+
+ (1,1)
+
+ 30
+ 30
+
+
+ 30
+
+ false
+
+ 50
+ 10000
+ 25
+
+
+
+ BurnbongSmoke
+
+
+ 0.5
+ (0, 0, 0.42)
+
+
+ HumpShroomEffect
+ true
+ 10
+ 0.01
+
+
+
+
+
+
+ Autobong_Aphrodisiac
+
+ An automatic humpshroom-burning device which generates an estro-smoke cloud around itself. Anyone in the cloud will become horny over time.
+ Building
+
+ Things/Building/Misc/Autobong/Autobong
+ Graphic_Single
+ (2,2)
+ CutoutComplex
+
+ Things/Building/Misc/Autobong/Autobong
+ Building
+ PassThroughOnly
+ 42
+ Normal
+ RealtimeOnly
+ 0.20
+ false
+ (2,2)
+
+ 80
+ 800
+
+ true
+
+ 10
+ 3
+
+
+
Metallic
+
Woody
+
+ 100
+ true
+
+
MicroelectronicsBasics
+
+
+
+ 0.35
+ 10.0
+
+
+
HumpShroom
+
+
+ 1
+ true
+ true
+
+
+ 10
+ (252,187,113,0)
+
+
+ CompGatherSpot
+
+
+ CompPowerTrader
+ 150
+ true
+
+
+
+ HumpShroomEffect
+ 4.9
+ 0.005
+ true
+
+
+ BurnbongSmoke
+ 4.9
+ 4
+ AutobongSmoke
+ 25
+
+
+ Misc
+ true
+
+
PlaceWorker_SmokeCloudMaker
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Defs/ThoughtDefs/Thoughts_Ritual_sex_Quality.xml b/1.4/Defs/ThoughtDefs/Thoughts_Ritual_sex_Quality.xml
new file mode 100644
index 0000000..9488047
--- /dev/null
+++ b/1.4/Defs/ThoughtDefs/Thoughts_Ritual_sex_Quality.xml
@@ -0,0 +1,115 @@
+
+
+
+
+ TerribleGangbang
+ Thought_AttendedRitual
+ 6
+ 3
+
+
+
+ That orgy was awesome! Everything was perfect.
+ 16
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Patches/InteractionDef/Masturbation.xml b/1.4/Patches/InteractionDef/Masturbation.xml
new file mode 100644
index 0000000..53a35ac
--- /dev/null
+++ b/1.4/Patches/InteractionDef/Masturbation.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ /Defs/InteractionDef[defName="Masturbation_AutoBreastjob" or defName="Masturbation_AutoFellatio" or defName="Masturbation_Breastjob" or defName="Masturbation_HandjobA" or defName="Masturbation_HandjobP" or defName="Masturbation_HandjobV"]
+
+
+
+
RSI_Masturbated
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Patches/InteractionDef/Necro.xml b/1.4/Patches/InteractionDef/Necro.xml
new file mode 100644
index 0000000..0a02d95
--- /dev/null
+++ b/1.4/Patches/InteractionDef/Necro.xml
@@ -0,0 +1,25 @@
+
+
+
+
+ /Defs/InteractionDef[defName="Necro_Anal" or defName="Necro_DoublePenetration" or defName="Necro_DoublePenetrationM" or defName="Necro_Vaginal"]
+
+
+
+
RSI_SexWithCorpse
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Necro_Reverse_Anal" or defName="Necro_Reverse_DoublePenetration" or defName="Necro_Reverse_DoublePenetrationM" or defName="Necro_Reverse_Vaginal"]
+
+
+
+
RSI_SexWithCorpse
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Patches/InteractionDef/Rape.xml b/1.4/Patches/InteractionDef/Rape.xml
new file mode 100644
index 0000000..34bc418
--- /dev/null
+++ b/1.4/Patches/InteractionDef/Rape.xml
@@ -0,0 +1,83 @@
+
+
+
+
+ /Defs/InteractionDef[defName="Rape_Vaginal"]
+
+
+
+
RSI_VaginalSex
+
RSI_Raped
+
+
+
+
RSI_WasRaped
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Rape_Anal" or defName="Rape_Rimming"]
+
+
+
+
RSI_AnalSex
+
RSI_Raped
+
+
+
+
RSI_WasRaped
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Rape_Beakjob" or defName="Rape_Cunnilingus" or defName="Rape_Fellatio" or defName="Rape_Oral"]
+
+
+
+
RSI_OralSex
+
RSI_Raped
+
+
+
+
RSI_WasRaped
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Rape_Breastjob" or defName="Rape_Fingering" or defName="Rape_Footjob" or defName="Rape_Handjob"]
+
+
+
+
RSI_MiscSex
+
RSI_Raped
+
+
+
+
RSI_WasRaped
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Rape_DoublePenetration" or defName="Rape_DoublePenetrationM" or defName="Rape_Fisting" or defName="Rape_Scissoring"]
+
+
+
+
RSI_PromiscuousSex
+
RSI_Raped
+
+
+
+
RSI_WasRaped
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Patches/InteractionDef/Rape_Reverse.xml b/1.4/Patches/InteractionDef/Rape_Reverse.xml
new file mode 100644
index 0000000..2f3a047
--- /dev/null
+++ b/1.4/Patches/InteractionDef/Rape_Reverse.xml
@@ -0,0 +1,83 @@
+
+
+
+
+ /Defs/InteractionDef[defName="Rape_Reverse_Vaginal"]
+
+
+
+
RSI_VaginalSex
+
RSI_Raped
+
+
+
+
RSI_WasRaped
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Rape_Reverse_Anal" or defName="Rape_Reverse_Rimming"]
+
+
+
+
RSI_AnalSex
+
RSI_Raped
+
+
+
+
RSI_WasRaped
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Rape_Reverse_Beakjob" or defName="Rape_Reverse_Cunnilingus" or defName="Rape_Reverse_Fellatio"]
+
+
+
+
RSI_OralSex
+
RSI_Raped
+
+
+
+
RSI_WasRaped
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Rape_Reverse_Breastjob" or defName="Rape_Reverse_Fingering" or defName="Rape_Reverse_Footjob" or defName="Rape_Reverse_Handjob"]
+
+
+
+
RSI_MiscSex
+
RSI_Raped
+
+
+
+
RSI_WasRaped
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Rape_Reverse_DoublePenetration" or defName="Rape_Reverse_DoublePenetrationM" or defName="Rape_Reverse_Fisting" or defName="Rape_Reverse_Scissoring"]
+
+
+
+
RSI_PromiscuousSex
+
RSI_Raped
+
+
+
+
RSI_WasRaped
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Patches/InteractionDef/Sex.xml b/1.4/Patches/InteractionDef/Sex.xml
new file mode 100644
index 0000000..0be25d3
--- /dev/null
+++ b/1.4/Patches/InteractionDef/Sex.xml
@@ -0,0 +1,73 @@
+
+
+
+
+ /Defs/InteractionDef[defName="Sex_Vaginal"]
+
+
+
+
RSI_VaginalSex
+
+
+
RSI_VaginalSex
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Sex_Anal" or defName="Sex_Rimming"]
+
+
+
+
RSI_AnalSex
+
+
+
RSI_AnalSex
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Sex_Beakjob" or defName="Sex_Cunnilingus" or defName="Sex_Fellatio" or defName="Sex_Makeout" or defName="Sex_Sixtynine"]
+
+
+
+
RSI_OralSex
+
+
+
RSI_OralSex
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Sex_Breastjob" or defName="Sex_Fingering" or defName="Sex_Footjob" or defName="Sex_Handjob" or defName="Sex_MutualHandholding" or defName="Sex_MutualMasturbation" or defName="Sex_MutualTailholding"]
+
+
+
+
RSI_MiscSex
+
+
+
RSI_MiscSex
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Sex_DoublePenetration" or defName="Sex_DoublePenetrationM" or defName="Sex_Fisting" or defName="Sex_Scissoring"]
+
+
+
+
RSI_PromiscuousSex
+
+
+
RSI_PromiscuousSex
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Patches/InteractionDef/Sex_Reverse.xml b/1.4/Patches/InteractionDef/Sex_Reverse.xml
new file mode 100644
index 0000000..2e41ab5
--- /dev/null
+++ b/1.4/Patches/InteractionDef/Sex_Reverse.xml
@@ -0,0 +1,73 @@
+
+
+
+
+ /Defs/InteractionDef[defName="Sex_Reverse_Vaginal"]
+
+
+
+
RSI_VaginalSex
+
+
+
RSI_VaginalSex
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Sex_Reverse_Anal" or defName="Sex_Reverse_Rimming"]
+
+
+
+
RSI_AnalSex
+
+
+
RSI_AnalSex
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Sex_Reverse_Beakjob" or defName="Sex_Reverse_Cunnilingus" or defName="Sex_Reverse_Fellatio"]
+
+
+
+
RSI_OralSex
+
+
+
RSI_OralSex
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Sex_Reverse_Breastjob" or defName="Sex_Reverse_Fingering" or defName="Sex_Reverse_Footjob" or defName="Sex_Reverse_Handjob"]
+
+
+
+
RSI_MiscSex
+
+
+
RSI_MiscSex
+
+
+
+
+
+
+ /Defs/InteractionDef[defName="Sex_Reverse_DoublePenetration" or defName="Sex_Reverse_DoublePenetrationM" or defName="Sex_Reverse_Fisting"]
+
+
+
+
RSI_PromiscuousSex
+
+
+
RSI_PromiscuousSex
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Patches/RJW_Drugs.xml b/1.4/Patches/RJW_Drugs.xml
new file mode 100644
index 0000000..e0a93bb
--- /dev/null
+++ b/1.4/Patches/RJW_Drugs.xml
@@ -0,0 +1,47 @@
+
+
+
+
+ Defs/HediffDef[defName="HumpShroomEffect"]/stages
+
+
+
+
+
+ 1.25
+ 0.25
+
+
+
+ 0.3
+
+ 1.1
+
+ 2
+ 0.5
+
+
+
+ 0.6
+
+ 1.33
+
+ 3
+ 0.75
+
+
+
+ 0.9
+
+ 1.33
+
+ 5
+ 1.5
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Patches/RJW_Precepts.xml b/1.4/Patches/RJW_Precepts.xml
new file mode 100644
index 0000000..94c6160
--- /dev/null
+++ b/1.4/Patches/RJW_Precepts.xml
@@ -0,0 +1,29 @@
+
+
+
+
+ Defs/PreceptDef[defName="Corpses_DontCare"]/requiredMemes
+
+
+
+
+
+
+
+ Defs/ThoughtDef[defName="GotRaped" or defName="GotAnalRaped" or defName="GotAnalRapedByFemale" or defName="GotRapedUnconscious" or defName="HateMyRapist" or defName="AllowedMeToGetRaped"]/nullifyingPrecepts
+
+ Defs/ThoughtDef[defName="GotRaped" or defName="GotAnalRaped" or defName="GotAnalRapedByFemale" or defName="GotRapedUnconscious" or defName="HateMyRapist" or defName="AllowedMeToGetRaped"]
+
+
+
Submissive_Male
+
Submissive_Female
+
+
+
+
+ Defs/ThoughtDef[defName="GotRaped" or defName="GotAnalRaped" or defName="GotAnalRapedByFemale" or defName="GotRapedUnconscious" or defName="HateMyRapist" or defName="AllowedMeToGetRaped"]/nullifyingPrecepts
+
+
Submissive_Male
+
Submissive_Female
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Patches/RJW_ThoughtDefsDeath.xml b/1.4/Patches/RJW_ThoughtDefsDeath.xml
new file mode 100644
index 0000000..99ea439
--- /dev/null
+++ b/1.4/Patches/RJW_ThoughtDefsDeath.xml
@@ -0,0 +1,68 @@
+
+
+
+
+ Defs/ThoughtDef[defName="MyKinDied" or defName="MyCousinDied" or defName="MyGrandparentDied" or defName="MyUncleDied" or defName="MyAuntDied" or defName="MyHalfSiblingDied" or defName="MyNephewDied" or defName="MyNieceDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied"]/nullifyingPrecepts
+
+ Defs/ThoughtDef[defName="MyKinDied" or defName="MyCousinDied" or defName="MyGrandparentDied" or defName="MyUncleDied" or defName="MyAuntDied" or defName="MyHalfSiblingDied" or defName="MyNephewDied" or defName="MyNieceDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied"]
+
+
+
SocialAffection_Psychopath
+
SocialAffection_Dry
+
SocialAffection_Small
+
+
+
+
+ Defs/ThoughtDef[defName="MyKinDied" or defName="MyCousinDied" or defName="MyGrandparentDied" or defName="MyUncleDied" or defName="MyAuntDied" or defName="MyHalfSiblingDied" or defName="MyNephewDied" or defName="MyNieceDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied"]/nullifyingPrecepts
+
+
SocialAffection_Psychopath
+
SocialAffection_Dry
+
SocialAffection_Small
+
+
+
+
+
+ Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied" or defName="WitnessedDeathFamily" or defName="MyPupDied" or defName="MyPupDiedFemale" or defName="KilledMyPup" or defName="KilledMyPupFemale" or defName="SoldMyPup" ]/nullifyingPrecepts
+
+ Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied" or defName="WitnessedDeathFamily" or defName="MyPupDied" or defName="MyPupDiedFemale" or defName="KilledMyPup" or defName="KilledMyPupFemale" or defName="SoldMyPup"]
+
+
+
SocialAffection_Psychopath
+
SocialAffection_Dry
+
+
+
+
+ Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied" or defName="WitnessedDeathFamily" or defName="MyPupDied" or defName="MyPupDiedFemale" or defName="KilledMyPup" or defName="KilledMyPupFemale" or defName="SoldMyPup"]/nullifyingPrecepts
+
+
SocialAffection_Psychopath
+
SocialAffection_Dry
+
+
+
+
+
+ Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied" or defName="WitnessedDeathAlly" or defName="WitnessedDeathNonAlly" or defName="ColonistBanishedToDie" or defName="PrisonerBanishedToDie" or defName="ColonistBanishedToDie" or defName="ColonistLeftUnburied"]/nullifyingPrecepts
+
+ Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied" or defName="WitnessedDeathAlly" or defName="WitnessedDeathNonAlly" or defName="ColonistBanishedToDie" or defName="PrisonerBanishedToDie" or defName="ColonistBanishedToDie" or defName="ColonistLeftUnburied"]
+
+
+
SocialAffection_Psychopath
+
SocialAffection_OnlyFamily
+
+
+
+
+ Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied" or defName="WitnessedDeathAlly" or defName="WitnessedDeathNonAlly" or defName="ColonistBanishedToDie" or defName="PrisonerBanishedToDie" or defName="ColonistBanishedToDie" or defName="ColonistLeftUnburied"]/nullifyingPrecepts
+
+
SocialAffection_Psychopath
+
SocialAffection_OnlyFamily
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/Patches/RJW_ThoughtDefsLost.xml b/1.4/Patches/RJW_ThoughtDefsLost.xml
new file mode 100644
index 0000000..43dd8fb
--- /dev/null
+++ b/1.4/Patches/RJW_ThoughtDefsLost.xml
@@ -0,0 +1,68 @@
+
+
+
+
+ Defs/ThoughtDef[defName="MyKinLost" or defName="MyCousinLost" or defName="MyGrandparentLost" or defName="MyUncleLost" or defName="MyAuntLost" or defName="MyHalfSiblingLost" or defName="MyNephewLost" or defName="MyNieceLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost"]/nullifyingPrecepts
+
+ Defs/ThoughtDef[defName="MyKinLost" or defName="MyCousinLost" or defName="MyGrandparentLost" or defName="MyUncleLost" or defName="MyAuntLost" or defName="MyHalfSiblingLost" or defName="MyNephewLost" or defName="MyNieceLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost"]
+
+
+
SocialAffection_Psychopath
+
SocialAffection_Dry
+
SocialAffection_Small
+
+
+
+
+ Defs/ThoughtDef[defName="MyKinLost" or defName="MyCousinLost" or defName="MyGrandparentLost" or defName="MyUncleLost" or defName="MyAuntLost" or defName="MyHalfSiblingLost" or defName="MyNephewLost" or defName="MyNieceLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost"]/nullifyingPrecepts
+
+
SocialAffection_Psychopath
+
SocialAffection_Dry
+
SocialAffection_Small
+
+
+
+
+
+ Defs/ThoughtDef[defName="MyMotherLost" or defName="MyFatherLost" or defName="MyGrandchildLost" or defName="MySisterLost" or defName="MyBrotherLost" or defName="MyDaughterLost" or defName="MySonLost"]/nullifyingPrecepts
+
+ Defs/ThoughtDef[defName="MyMotherLost" or defName="MyFatherLost" or defName="MyGrandchildLost" or defName="MySisterLost" or defName="MyBrotherLost" or defName="MyDaughterLost" or defName="MySonLost"]
+
+
+
SocialAffection_Psychopath
+
SocialAffection_Dry
+
+
+
+
+ Defs/ThoughtDef[defName="MyMotherLost" or defName="MyFatherLost" or defName="MyGrandchildLost" or defName="MySisterLost" or defName="MyBrotherLost" or defName="MyDaughterLost" or defName="MySonLost"]/nullifyingPrecepts
+
+
SocialAffection_Psychopath
+
SocialAffection_Dry
+
+
+
+
+
+ Defs/ThoughtDef[defName="ColonistLost" or defName="PawnWithGoodOpinionLost" or defName="PawnWithBadOpinionLost"]/nullifyingPrecepts
+
+ Defs/ThoughtDef[defName="ColonistLost" or defName="PawnWithGoodOpinionLost" or defName="PawnWithBadOpinionLost"]
+
+
+
SocialAffection_Psychopath
+
SocialAffection_OnlyFamily
+
+
+
+
+ Defs/ThoughtDef[defName="ColonistLost" or defName="PawnWithGoodOpinionLost" or defName="PawnWithBadOpinionLost"]/nullifyingPrecepts
+
+
SocialAffection_Psychopath
+
SocialAffection_OnlyFamily
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/About/About.xml b/About/About.xml
index 4622482..f9aa52b 100644
--- a/About/About.xml
+++ b/About/About.xml
@@ -4,6 +4,7 @@
aamevarashi
1.3
+
1.4
@@ -33,12 +34,13 @@ This is a submod for RJW that adds:
Ideology content:
- Memes: lewd, rapist, zoophile and necrophile memes
- Rituals: consensual gangbang, rape gangbang, consensual animal gangbang, rape animal gangbang and drug orgy
-- Precepts: baby faction, bestiality, incest, necrophilia, rape, allowed sex type, social affection, submissive gender, virginity
+- Precepts: baby faction, bestiality, incest, necrophilia, rape, allowed sex type, social affection, submissive gender, virginity, pregnancy, sex proselyzing and size matters
- HumpShroom bong and HumpShroom Autobong
Credits:
moreorganstodump Original Author
c0ffee RJW 4.9.0 update
-Hawkeye32 Bound Only bestiality precept]]>
+Hawkeye32 Bound Only bestiality precept
+Twonki Pregnancy, Sex Proselyzing and Size Matters precepts]]>
\ No newline at end of file
diff --git a/About/Manifest.xml b/About/Manifest.xml
index 4d44de2..7ad9026 100644
--- a/About/Manifest.xml
+++ b/About/Manifest.xml
@@ -1,9 +1,9 @@
RJWSexperienceIdeology
- 1.0.0.3
+ 1.0.1.0
-
RimJobWorld >= 4.9.5.3
+
RimJobWorld >= 5.3.0
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6313d1f..ded613d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## Version 1.0.1.0
+* Rimworld 1.4
+### by Twonki
+ * Added Pregnancy, Sex Proselyzing and Size Matters precepts
## Version 1.0.0.3
* Fixed error in *_Gendered precept comps
## Version 1.0.0.2
diff --git a/LoadFolders.xml b/LoadFolders.xml
new file mode 100644
index 0000000..48ed2ca
--- /dev/null
+++ b/LoadFolders.xml
@@ -0,0 +1,11 @@
+
+
+
+
/
+
1.3
+
+
+
/
+
1.4
+
+
\ No newline at end of file
diff --git a/Source/IdeologyAddon/Ideology/GoodwillSituationWorker_MemeCompatibility.cs b/Source/IdeologyAddon/GoodwillSituationWorker_MemeCompatibility.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/GoodwillSituationWorker_MemeCompatibility.cs
rename to Source/IdeologyAddon/GoodwillSituationWorker_MemeCompatibility.cs
diff --git a/Source/IdeologyAddon/Ideology/HistoryEvents/ArgsNamesCustom.cs b/Source/IdeologyAddon/HistoryEvents/ArgsNamesCustom.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/HistoryEvents/ArgsNamesCustom.cs
rename to Source/IdeologyAddon/HistoryEvents/ArgsNamesCustom.cs
diff --git a/Source/IdeologyAddon/Ideology/HistoryEvents/DefExtension_EventOverrides.cs b/Source/IdeologyAddon/HistoryEvents/DefExtension_EventOverrides.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/HistoryEvents/DefExtension_EventOverrides.cs
rename to Source/IdeologyAddon/HistoryEvents/DefExtension_EventOverrides.cs
diff --git a/Source/IdeologyAddon/Ideology/HistoryEvents/DefExtension_SecondaryEvents.cs b/Source/IdeologyAddon/HistoryEvents/DefExtension_SecondaryEvents.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/HistoryEvents/DefExtension_SecondaryEvents.cs
rename to Source/IdeologyAddon/HistoryEvents/DefExtension_SecondaryEvents.cs
diff --git a/Source/IdeologyAddon/Ideology/HistoryEvents/HistoryEventDefExtensionMethods.cs b/Source/IdeologyAddon/HistoryEvents/HistoryEventDefExtensionMethods.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/HistoryEvents/HistoryEventDefExtensionMethods.cs
rename to Source/IdeologyAddon/HistoryEvents/HistoryEventDefExtensionMethods.cs
diff --git a/Source/IdeologyAddon/Ideology/HistoryEvents/TwoPawnEventRule.cs b/Source/IdeologyAddon/HistoryEvents/TwoPawnEventRule.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/HistoryEvents/TwoPawnEventRule.cs
rename to Source/IdeologyAddon/HistoryEvents/TwoPawnEventRule.cs
diff --git a/Source/IdeologyAddon/IdeoUtility.cs b/Source/IdeologyAddon/IdeoUtility.cs
new file mode 100644
index 0000000..d02dda3
--- /dev/null
+++ b/Source/IdeologyAddon/IdeoUtility.cs
@@ -0,0 +1,84 @@
+using RimWorld;
+using rjw;
+using Verse;
+
+namespace RJWSexperience.Ideology
+{
+ public static class IdeoUtility
+ {
+ public static bool IsSubmissive(this Pawn pawn)
+ {
+ Ideo ideo = pawn.Ideo;
+ if (ideo == null)
+ return false;
+
+ if (ideo.HasPrecept(VariousDefOf.Submissive_Female) && pawn.gender == Gender.Female)
+ return true;
+ else if (ideo.HasPrecept(VariousDefOf.Submissive_Male) && pawn.gender == Gender.Male)
+ return true;
+
+ return false;
+ }
+
+ public static float GetPreceptsMtbMultiplier(Ideo ideo) where T : Precepts.DefExtension_ModifyMtb
+ {
+ float finalMultiplier = 1f;
+ for (int i = 0; i < ideo.PreceptsListForReading.Count; i++)
+ {
+ T defExtension = ideo.PreceptsListForReading[i].def.GetModExtension();
+
+ if (defExtension == null)
+ continue;
+
+ finalMultiplier *= defExtension.multiplier;
+ }
+ return finalMultiplier;
+ }
+
+ internal static void ConvertPawnBySex(Pawn pawn, Pawn partner, float severity = 0.01f)
+ {
+ // Important Note: This is called on "orgasm" - hence when a pawn has the orgasm he is the "pawn" here.
+ // If Bob fucks Alice, Alice has the orgasm and Alice is the Pawn while Bob is the Partner.
+ // Hence, the Conversion happens from Partner -> Pawn and not the other way round!
+
+ // Short Circuit: Either pawn is null, exit early and do nothing
+ if (pawn == null || partner == null)
+ return;
+
+ bool sameIdeo = pawn.Ideo == partner.Ideo;
+ // Option A: Partner has same Ideo as Pawn, increase certainty
+ if (sameIdeo)
+ {
+ partner.ideo.OffsetCertainty(severity);
+ }
+ // Option B: Partner as different Ideo, try to convert
+ else
+ {
+ pawn.ideo.IdeoConversionAttempt(severity, partner.Ideo);
+ }
+ }
+
+ public static float GetGenitalSize(Pawn p)
+ {
+ if (p == null)
+ return 0f;
+
+ // Iff the pawn has multiple genitalia, the "best" is picked (the biggest penis or tightest vagina)
+ float bestSeenSize = 0f;
+ foreach (Hediff part in Genital_Helper.get_AllPartsHediffList(p))
+ {
+ // Only check for Vaginas and Penises, not for Anus or for things not categorized as primary sexual parts
+ if (Genital_Helper.is_penis(part) || Genital_Helper.is_vagina(part))
+ {
+ bestSeenSize = part.Severity > bestSeenSize ? part.Severity : bestSeenSize;
+ }
+ }
+
+ // For Women, the scale is inverted.
+ if (p.gender == Gender.Female)
+ return 1 - bestSeenSize;
+
+ return bestSeenSize;
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/Ideology/IdeoUtility.cs b/Source/IdeologyAddon/Ideology/IdeoUtility.cs
deleted file mode 100644
index 2334aec..0000000
--- a/Source/IdeologyAddon/Ideology/IdeoUtility.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using RimWorld;
-using Verse;
-
-namespace RJWSexperience.Ideology
-{
- public static class IdeoUtility
- {
- public static bool IsSubmissive(this Pawn pawn)
- {
- Ideo ideo = pawn.Ideo;
- if (ideo == null)
- return false;
-
- if (ideo.HasPrecept(VariousDefOf.Submissive_Female) && pawn.gender == Gender.Female)
- return true;
- else if (ideo.HasPrecept(VariousDefOf.Submissive_Male) && pawn.gender == Gender.Male)
- return true;
-
- return false;
- }
-
- public static float GetPreceptsMtbMultiplier(Ideo ideo) where T : Precepts.DefExtension_ModifyMtb
- {
- float finalMultiplier = 1f;
- for (int i = 0; i < ideo.PreceptsListForReading.Count; i++)
- {
- T defExtension = ideo.PreceptsListForReading[i].def.GetModExtension();
-
- if (defExtension == null)
- continue;
-
- finalMultiplier *= defExtension.multiplier;
- }
- return finalMultiplier;
- }
- }
-}
diff --git a/Source/IdeologyAddon/Ideology/Thought_IncreaseRecord.cs b/Source/IdeologyAddon/Ideology/Thought_IncreaseRecord.cs
deleted file mode 100644
index d50eb50..0000000
--- a/Source/IdeologyAddon/Ideology/Thought_IncreaseRecord.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using RimWorld;
-using Verse;
-
-namespace RJWSexperience.Ideology
-{
- public class Thought_IncreaseRecord : Thought_Recordbased
- {
- protected float recordIncrement;
-
- public override void ExposeData()
- {
- base.ExposeData();
- Scribe_Values.Look(ref recordIncrement, "recordIncrement", recordIncrement, true);
- }
-
- public override void ThoughtInterval()
- {
- base.ThoughtInterval();
- if (recordIncrement != 0)
- {
- pawn.records.AddTo(RecordDef, recordIncrement);
- recordIncrement = 0;
- }
- }
-
- public override bool TryMergeWithExistingMemory(out bool showBubble)
- {
- ThoughtHandler thoughts = pawn.needs.mood.thoughts;
- if (thoughts.memories.NumMemoriesInGroup(this) >= def.stackLimit)
- {
- Thought_IncreaseRecord thought_Memory = (Thought_IncreaseRecord)thoughts.memories.OldestMemoryInGroup(this);
- if (thought_Memory != null)
- {
- showBubble = (thought_Memory.age > thought_Memory.def.DurationTicks / 2);
- thought_Memory.Merged();
- return true;
- }
- }
- showBubble = true;
- return false;
- }
-
- public override void Init()
- {
- base.Init();
- recordIncrement = Def.increment;
- }
- protected virtual void Merged()
- {
- age = 0;
- recordIncrement += Def.increment;
- }
- }
-}
diff --git a/Source/IdeologyAddon/Ideology/Thought_Opinionbased.cs b/Source/IdeologyAddon/Ideology/Thought_Opinionbased.cs
deleted file mode 100644
index 16a83b4..0000000
--- a/Source/IdeologyAddon/Ideology/Thought_Opinionbased.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using RimWorld;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-
-namespace RJWSexperience.Ideology
-{
- ///
- /// ThoughtDef using opinion
- ///
- public class ThoughtDef_Opinionbased : ThoughtDef
- {
- [SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
- public List minimumValueforStage = new List();
- }
-
- ///
- /// Thought class using record.
- ///
- public class Thought_Opinionbased : Thought_Memory
- {
- protected ThoughtDef_Opinionbased Def => (ThoughtDef_Opinionbased)def;
- protected List MinimumValueforStage => Def.minimumValueforStage;
-
- public override int CurStageIndex
- {
- get
- {
- float value = 0f;
- if (otherPawn != null) value = pawn.relations?.OpinionOf(otherPawn) ?? 0f;
- for (int i = MinimumValueforStage.Count - 1; i > 0; i--)
- {
- if (MinimumValueforStage[i] < value) return i;
- }
- return 0;
- }
- }
- }
-}
diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj
index 1ea925e..5f5e896 100644
--- a/Source/IdeologyAddon/IdeologyAddon.csproj
+++ b/Source/IdeologyAddon/IdeologyAddon.csproj
@@ -25,7 +25,7 @@
pdbonlytrue
- ..\..\1.3\Assemblies\
+ ..\..\1.4\Assemblies\TRACEprompt4
@@ -44,55 +44,62 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
-
+
- 1.3.3389
+ 1.4.3524
- 2.2.1
+ 2.2.2runtime
+ compile; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Source/IdeologyAddon/Ideology/InteractionDefExtension_HistoryEvents.cs b/Source/IdeologyAddon/InteractionDefExtension_HistoryEvents.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/InteractionDefExtension_HistoryEvents.cs
rename to Source/IdeologyAddon/InteractionDefExtension_HistoryEvents.cs
diff --git a/Source/IdeologyAddon/Ideology/Keyed.cs b/Source/IdeologyAddon/Keyed.cs
similarity index 93%
rename from Source/IdeologyAddon/Ideology/Keyed.cs
rename to Source/IdeologyAddon/Keyed.cs
index 58c89cf..8a98c01 100644
--- a/Source/IdeologyAddon/Ideology/Keyed.cs
+++ b/Source/IdeologyAddon/Keyed.cs
@@ -1,6 +1,6 @@
using Verse;
-namespace RJWSexperience
+namespace RJWSexperience.Ideology
{
public static class Keyed
{
diff --git a/Source/IdeologyAddon/Ideology/Patches/RJW_Patch_ChancePerHour.cs b/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Patches/RJW_Patch_ChancePerHour.cs
rename to Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs
diff --git a/Source/IdeologyAddon/Ideology/Patches/RJW_Patch_Ideo.cs b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs
similarity index 91%
rename from Source/IdeologyAddon/Ideology/Patches/RJW_Patch_Ideo.cs
rename to Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs
index b7c48d6..a375f0c 100644
--- a/Source/IdeologyAddon/Ideology/Patches/RJW_Patch_Ideo.cs
+++ b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs
@@ -211,4 +211,22 @@ namespace RJWSexperience.Ideology.Patches
return mother?.Faction ?? baby.Faction;
}
}
+
+ [HarmonyPatch(typeof(SexUtility), nameof(SexUtility.SatisfyPersonal))]
+ public static class RJW_Patch_Orgasm_IdeoConversion
+ {
+ 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;
+
+ if (props.partner.Ideo?.HasPrecept(VariousDefOf.ProselyzingByOrgasm) == true)
+ {
+ // Pawn is the one having the orgasm
+ // Partner is "giving" the orgasm, hence the pawn will be converted towards the partners ideology
+ IdeoUtility.ConvertPawnBySex(props.pawn, props.partner, 0.03f);
+ }
+ }
+ }
}
diff --git a/Source/IdeologyAddon/Ideology/Patches/Rimworld_Patch.cs b/Source/IdeologyAddon/Patches/Rimworld_Patch.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Patches/Rimworld_Patch.cs
rename to Source/IdeologyAddon/Patches/Rimworld_Patch.cs
diff --git a/Source/IdeologyAddon/Ideology/Patches/Sexperience_Patch.cs b/Source/IdeologyAddon/Patches/Sexperience_Patch.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Patches/Sexperience_Patch.cs
rename to Source/IdeologyAddon/Patches/Sexperience_Patch.cs
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs
new file mode 100644
index 0000000..b99f610
--- /dev/null
+++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs
@@ -0,0 +1,34 @@
+using RimWorld;
+using rjw;
+using Verse;
+
+namespace RJWSexperience.Ideology.PreceptWorkers
+{
+ public class ThoughtWorker_Precept_GenitalSize : ThoughtWorker_Precept
+ {
+ private ThoughtDefExtension_StageFromValue stageFromValue;
+
+ protected ThoughtDefExtension_StageFromValue StageFromValue
+ {
+ get
+ {
+ if (stageFromValue == null)
+ {
+ stageFromValue = def.GetModExtension();
+ }
+ return stageFromValue;
+ }
+ }
+
+ protected override ThoughtState ShouldHaveThought(Pawn p)
+ {
+ if (p != null && Genital_Helper.get_AllPartsHediffList(p).Count > 0)
+ {
+ float bestSize = IdeoUtility.GetGenitalSize(p);
+ return ThoughtState.ActiveAtStage(StageFromValue.GetStageIndex(bestSize));
+ }
+ // This might can happen if the pawn has no genitalia ... maybe?
+ return ThoughtState.Inactive;
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Social.cs
new file mode 100644
index 0000000..1780e2d
--- /dev/null
+++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Social.cs
@@ -0,0 +1,35 @@
+using RimWorld;
+using rjw;
+using Verse;
+
+namespace RJWSexperience.Ideology.PreceptWorkers
+{
+ public class ThoughtWorker_Precept_GenitalSize_Social : ThoughtWorker_Precept_Social
+ {
+ private ThoughtDefExtension_StageFromValue stageFromValue;
+
+ protected ThoughtDefExtension_StageFromValue StageFromValue
+ {
+ get
+ {
+ if (stageFromValue == null)
+ {
+ stageFromValue = def.GetModExtension();
+ }
+ return stageFromValue;
+ }
+ }
+
+ // Important Note: For the Social Worker, we measure otherPawns genitalia
+ protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn)
+ {
+ if (otherPawn != null && Genital_Helper.get_AllPartsHediffList(otherPawn).Count > 0)
+ {
+ float bestSize = IdeoUtility.GetGenitalSize(otherPawn);
+ return ThoughtState.ActiveAtStage(StageFromValue.GetStageIndex(bestSize));
+ }
+ // This might can happen if the pawn has no genitalia ... maybe?
+ return ThoughtState.Inactive;
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs
new file mode 100644
index 0000000..3631cdf
--- /dev/null
+++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs
@@ -0,0 +1,21 @@
+using RimWorld;
+using rjw;
+using Verse;
+
+namespace RJWSexperience.Ideology.PreceptWorkers
+{
+ ///
+ /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
+ /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
+ ///
+ public class ThoughtWorker_Precept_NonPregnant : ThoughtWorker_Precept
+ {
+ /// Gets the current thought state of the given pawn.
+ /// The pawn for whom the thoughts are generated.
+ ///
+ protected override ThoughtState ShouldHaveThought(Pawn p)
+ {
+ return PregnancyHelper.GetPregnancy(p)?.Visible != true;
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs
new file mode 100644
index 0000000..d12f74a
--- /dev/null
+++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs
@@ -0,0 +1,22 @@
+using RimWorld;
+using rjw;
+using Verse;
+
+namespace RJWSexperience.Ideology.PreceptWorkers
+{
+ ///
+ /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
+ /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
+ ///
+ public class ThoughtWorker_Precept_NonPregnant_Social : ThoughtWorker_Precept_Social
+ {
+ /// Gets the current thought state of the given pawn.
+ /// The pawn for whom the thoughts are generated.
+ /// The pawn about whom the thoughts are generated.
+ ///
+ protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn)
+ {
+ return PregnancyHelper.GetPregnancy(otherPawn)?.Visible != true;
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs
new file mode 100644
index 0000000..ae3d917
--- /dev/null
+++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs
@@ -0,0 +1,21 @@
+using RimWorld;
+using rjw;
+using Verse;
+
+namespace RJWSexperience.Ideology.PreceptWorkers
+{
+ ///
+ /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
+ /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
+ ///
+ public class ThoughtWorker_Precept_Pregnant : ThoughtWorker_Precept
+ {
+ /// Gets the current thought state of the given pawn.
+ /// The pawn for whom the thoughts are generated.
+ ///
+ protected override ThoughtState ShouldHaveThought(Pawn p)
+ {
+ return PregnancyHelper.GetPregnancy(p)?.Visible == true;
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs
new file mode 100644
index 0000000..c54b814
--- /dev/null
+++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs
@@ -0,0 +1,22 @@
+using RimWorld;
+using rjw;
+using Verse;
+
+namespace RJWSexperience.Ideology.PreceptWorkers
+{
+ ///
+ /// thought worker for a thought that is active when a certain hediff is present, and who's stage depends on the ether state of the pawn
+ /// Shamelessly taken from: https://github.com/Tachyonite/Pawnmorpher/blob/master/Source/Pawnmorphs/Esoteria/Thoughts/ThoughtWorker_EtherHediff.cs
+ ///
+ public class ThoughtWorker_Precept_Pregnant_Social : ThoughtWorker_Precept_Social
+ {
+ /// Gets the current thought state of the given pawn.
+ /// The pawn for whom the thoughts are generated.
+ /// The pawn about whom the thoughts are generated.
+ ///
+ protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn)
+ {
+ return PregnancyHelper.GetPregnancy(otherPawn)?.Visible == true;
+ }
+ }
+}
diff --git a/Source/IdeologyAddon/Ideology/Precepts/Comp_KnowsMemoryThought_Gendered.cs b/Source/IdeologyAddon/Precepts/Comp_KnowsMemoryThought_Gendered.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Precepts/Comp_KnowsMemoryThought_Gendered.cs
rename to Source/IdeologyAddon/Precepts/Comp_KnowsMemoryThought_Gendered.cs
diff --git a/Source/IdeologyAddon/Ideology/Precepts/Comp_SelfTookMemoryThought_Gendered.cs b/Source/IdeologyAddon/Precepts/Comp_SelfTookMemoryThought_Gendered.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Precepts/Comp_SelfTookMemoryThought_Gendered.cs
rename to Source/IdeologyAddon/Precepts/Comp_SelfTookMemoryThought_Gendered.cs
diff --git a/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyBestialityMtb.cs b/Source/IdeologyAddon/Precepts/DefExtension_ModifyBestialityMtb.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyBestialityMtb.cs
rename to Source/IdeologyAddon/Precepts/DefExtension_ModifyBestialityMtb.cs
diff --git a/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyFappinMtb.cs b/Source/IdeologyAddon/Precepts/DefExtension_ModifyFappinMtb.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyFappinMtb.cs
rename to Source/IdeologyAddon/Precepts/DefExtension_ModifyFappinMtb.cs
diff --git a/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyMtb.cs b/Source/IdeologyAddon/Precepts/DefExtension_ModifyMtb.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyMtb.cs
rename to Source/IdeologyAddon/Precepts/DefExtension_ModifyMtb.cs
diff --git a/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyNecroMtb.cs b/Source/IdeologyAddon/Precepts/DefExtension_ModifyNecroMtb.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyNecroMtb.cs
rename to Source/IdeologyAddon/Precepts/DefExtension_ModifyNecroMtb.cs
diff --git a/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyPreference.cs b/Source/IdeologyAddon/Precepts/DefExtension_ModifyPreference.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyPreference.cs
rename to Source/IdeologyAddon/Precepts/DefExtension_ModifyPreference.cs
diff --git a/Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyRapeCPMtb.cs b/Source/IdeologyAddon/Precepts/DefExtension_ModifyRapeCPMtb.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Precepts/DefExtension_ModifyRapeCPMtb.cs
rename to Source/IdeologyAddon/Precepts/DefExtension_ModifyRapeCPMtb.cs
diff --git a/Source/IdeologyAddon/Ideology/Precepts/DefExtension_MultipleMemesRequired.cs b/Source/IdeologyAddon/Precepts/DefExtension_MultipleMemesRequired.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Precepts/DefExtension_MultipleMemesRequired.cs
rename to Source/IdeologyAddon/Precepts/DefExtension_MultipleMemesRequired.cs
diff --git a/Source/IdeologyAddon/Ideology/RelationFilter.cs b/Source/IdeologyAddon/RelationFilter.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/RelationFilter.cs
rename to Source/IdeologyAddon/RelationFilter.cs
diff --git a/Source/IdeologyAddon/Ideology/Rituals/JobGiver_DrugOrgy.cs b/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Rituals/JobGiver_DrugOrgy.cs
rename to Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs
diff --git a/Source/IdeologyAddon/Ideology/Rituals/JobGiver_GangbangConsensual.cs b/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Rituals/JobGiver_GangbangConsensual.cs
rename to Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs
diff --git a/Source/IdeologyAddon/Ideology/Rituals/JobGiver_GangbangVictim.cs b/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Rituals/JobGiver_GangbangVictim.cs
rename to Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs
diff --git a/Source/IdeologyAddon/Ideology/Rituals/LordJob_Rituals.cs b/Source/IdeologyAddon/Rituals/LordJob_Rituals.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Rituals/LordJob_Rituals.cs
rename to Source/IdeologyAddon/Rituals/LordJob_Rituals.cs
diff --git a/Source/IdeologyAddon/Ideology/Rituals/RitualBehaviorWorkers.cs b/Source/IdeologyAddon/Rituals/RitualBehaviorWorkers.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Rituals/RitualBehaviorWorkers.cs
rename to Source/IdeologyAddon/Rituals/RitualBehaviorWorkers.cs
diff --git a/Source/IdeologyAddon/Ideology/Rituals/RitualOutcomeComps.cs b/Source/IdeologyAddon/Rituals/RitualOutcomeComps.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/Rituals/RitualOutcomeComps.cs
rename to Source/IdeologyAddon/Rituals/RitualOutcomeComps.cs
diff --git a/Source/IdeologyAddon/Ideology/Rituals/RitualRoles.cs b/Source/IdeologyAddon/Rituals/RitualRoles.cs
similarity index 85%
rename from Source/IdeologyAddon/Ideology/Rituals/RitualRoles.cs
rename to Source/IdeologyAddon/Rituals/RitualRoles.cs
index eb9576a..0d26048 100644
--- a/Source/IdeologyAddon/Ideology/Rituals/RitualRoles.cs
+++ b/Source/IdeologyAddon/Rituals/RitualRoles.cs
@@ -1,8 +1,3 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using RimWorld;
using Verse;
using rjw;
@@ -17,7 +12,7 @@ namespace RJWSexperience.Ideology
return false;
}
- public override bool AppliesToPawn(Pawn p, out string reason, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false)
+ public override bool AppliesToPawn(Pawn p, out string reason, TargetInfo selectedTarget, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false)
{
reason = null;
if (CanBeVictim(p)) return true;
@@ -45,7 +40,7 @@ namespace RJWSexperience.Ideology
return false;
}
- public override bool AppliesToPawn(Pawn p, out string reason, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false)
+ public override bool AppliesToPawn(Pawn p, out string reason, TargetInfo selectedTarget, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false)
{
reason = null;
@@ -79,7 +74,7 @@ namespace RJWSexperience.Ideology
return false;
}
- public override bool AppliesToPawn(Pawn p, out string reason, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false)
+ public override bool AppliesToPawn(Pawn p, out string reason, TargetInfo selectedTarget, LordJob_Ritual ritual = null, RitualRoleAssignments assignments = null, Precept_Ritual precept = null, bool skipReason = false)
{
reason = null;
if (!p.IsAnimal())
diff --git a/Source/IdeologyAddon/Ideology/RsiHistoryEventDefOf.cs b/Source/IdeologyAddon/RsiHistoryEventDefOf.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/RsiHistoryEventDefOf.cs
rename to Source/IdeologyAddon/RsiHistoryEventDefOf.cs
diff --git a/Source/IdeologyAddon/Ideology/SinglePawnFilter.cs b/Source/IdeologyAddon/SinglePawnFilter.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/SinglePawnFilter.cs
rename to Source/IdeologyAddon/SinglePawnFilter.cs
diff --git a/Source/IdeologyAddon/Ideology/StatParts.cs b/Source/IdeologyAddon/StatParts.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/StatParts.cs
rename to Source/IdeologyAddon/StatParts.cs
diff --git a/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_IncreaseRecord.cs b/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_IncreaseRecord.cs
index 63ce3d7..cf53e45 100644
--- a/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_IncreaseRecord.cs
+++ b/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_IncreaseRecord.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Verse;
-namespace RJWSexperience
+namespace RJWSexperience.Ideology
{
public class ThoughtDefExtension_IncreaseRecord : DefModExtension
{
diff --git a/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromOpinion.cs b/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromValue.cs
similarity index 73%
rename from Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromOpinion.cs
rename to Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromValue.cs
index 3b6bfc4..8e556de 100644
--- a/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromOpinion.cs
+++ b/Source/IdeologyAddon/Thoughts/ThoughtDefExtension_StageFromValue.cs
@@ -2,13 +2,26 @@
using System.Diagnostics.CodeAnalysis;
using Verse;
-namespace RJWSexperience
+namespace RJWSexperience.Ideology
{
- public class ThoughtDefExtension_StageFromOpinion : DefModExtension
+ public class ThoughtDefExtension_StageFromValue : DefModExtension
{
[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
public List minimumValueforStage = new List();
+ public int GetStageIndex(float value)
+ {
+ for (int i = minimumValueforStage.Count - 1; i > 0; i--)
+ {
+ if (minimumValueforStage[i] < value)
+ {
+ return i;
+ }
+ }
+
+ return 0;
+ }
+
public override IEnumerable ConfigErrors()
{
foreach (string error in base.ConfigErrors())
diff --git a/Source/IdeologyAddon/Thoughts/Thought_IncreaseRecord.cs b/Source/IdeologyAddon/Thoughts/Thought_IncreaseRecord.cs
index f229813..1299dd3 100644
--- a/Source/IdeologyAddon/Thoughts/Thought_IncreaseRecord.cs
+++ b/Source/IdeologyAddon/Thoughts/Thought_IncreaseRecord.cs
@@ -1,6 +1,6 @@
using RimWorld;
-namespace RJWSexperience
+namespace RJWSexperience.Ideology
{
///
/// Increments record every time the thought is added
diff --git a/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs b/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs
index fded6ad..dbe0115 100644
--- a/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs
+++ b/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs
@@ -1,22 +1,21 @@
using RimWorld;
-using System.Collections.Generic;
using Verse;
-namespace RJWSexperience
+namespace RJWSexperience.Ideology
{
public class Thought_Opinionbased : Thought_Memory
{
- private List minimumValueforStage;
+ private ThoughtDefExtension_StageFromValue stageFromValue;
- protected List MinimumValueforStage
+ protected ThoughtDefExtension_StageFromValue StageFromValue
{
get
{
- if (minimumValueforStage == null)
+ if (stageFromValue == null)
{
- minimumValueforStage = def.GetModExtension().minimumValueforStage;
+ stageFromValue = def.GetModExtension();
}
- return minimumValueforStage;
+ return stageFromValue;
}
}
@@ -47,16 +46,7 @@ namespace RJWSexperience
}
float value = pawn.relations?.OpinionOf(otherPawn) ?? 0f;
-
- for (int i = MinimumValueforStage.Count - 1; i > 0; i--)
- {
- if (MinimumValueforStage[i] < value)
- {
- SetForcedStage(i);
- return;
- }
- }
- SetForcedStage(0);
+ SetForcedStage(StageFromValue.GetStageIndex(value));
}
}
}
diff --git a/Source/IdeologyAddon/Ideology/TwoPawnFilter.cs b/Source/IdeologyAddon/TwoPawnFilter.cs
similarity index 100%
rename from Source/IdeologyAddon/Ideology/TwoPawnFilter.cs
rename to Source/IdeologyAddon/TwoPawnFilter.cs
diff --git a/Source/IdeologyAddon/Ideology/VariousDefOf.cs b/Source/IdeologyAddon/VariousDefOf.cs
similarity index 92%
rename from Source/IdeologyAddon/Ideology/VariousDefOf.cs
rename to Source/IdeologyAddon/VariousDefOf.cs
index 8d1f5a4..52d2180 100644
--- a/Source/IdeologyAddon/Ideology/VariousDefOf.cs
+++ b/Source/IdeologyAddon/VariousDefOf.cs
@@ -21,5 +21,6 @@ namespace RJWSexperience.Ideology
[MayRequireIdeology] public static readonly PreceptDef BabyFaction_AlwaysColony;
[MayRequireIdeology] public static readonly PreceptDef Submissive_Male;
[MayRequireIdeology] public static readonly PreceptDef Submissive_Female;
+ [MayRequireIdeology] public static readonly PreceptDef ProselyzingByOrgasm;
}
}