From 49fdb8a73080d66b796c3bebfc033e15ea3dc348 Mon Sep 17 00:00:00 2001 From: KarubonWaito Date: Thu, 15 Aug 2024 20:04:15 +0800 Subject: [PATCH 01/64] Update Simplified Chinese translation. --- .../MemeCompatibility_Sex.xml | 12 +- .../HistoryEventDef/HistoryEventDef.xml | 30 ++--- .../HistoryEventDef/Precepts_Bestiality.xml | 13 ++ .../HistoryEventDef/Precepts_Incest.xml | 14 ++ .../HistoryEventDef/Precepts_Masturbation.xml | 9 ++ .../HistoryEventDef/Precepts_Necrophilia.xml | 9 ++ .../HistoryEventDef/Precepts_Rape.xml | 14 ++ .../HistoryEventDef/Precepts_Sex.xml | 13 ++ .../HistoryEventDef/Precepts_Virginity.xml | 12 ++ .../IdeoPresetDef/IdeoPresetDefs_sex.xml | 14 ++ .../Interactions_Speech_sex.xml | 93 ++++++++----- .../IssueDef/Precepts_BabyFaction.xml | 9 ++ .../IssueDef/Precepts_Bestiality.xml | 4 +- .../DefInjected/IssueDef/Precepts_Incest.xml | 4 +- .../IssueDef/Precepts_Masturbation.xml | 9 ++ .../IssueDef/Precepts_Necrophilia.xml | 9 ++ .../IssueDef/Precepts_Pregnancy.xml | 9 ++ .../DefInjected/IssueDef/Precepts_Rape.xml | 4 +- .../DefInjected/IssueDef/Precepts_Sex.xml | 4 +- .../IssueDef/Precepts_SexProselytizing.xml | 9 ++ .../IssueDef/Precepts_SizeMatters.xml | 9 ++ .../IssueDef/Precepts_SocialAffection.xml | 9 ++ .../IssueDef/Precepts_Submissive.xml | 4 +- .../IssueDef/Precepts_Virginity.xml | 10 ++ .../DefInjected/JobDef/Jobs_Ritual_Rape.xml | 2 +- .../DefInjected/JobDef/Jobs_Ritual_Sex.xml | 12 ++ .../DefInjected/MemeDef/Memes_Sexual.xml | 125 +++++++++++------- .../PreceptDef/Precepts_BabyFaction.xml | 16 +++ .../PreceptDef/Precepts_Bestiality.xml | 42 +++--- .../PreceptDef/Precepts_Incest.xml | 22 +-- .../PreceptDef/Precepts_Masturbation.xml | 13 ++ .../PreceptDef/Precepts_Necrophilia.xml | 22 +++ .../PreceptDef/Precepts_Pregnancy.xml | 22 +++ .../DefInjected/PreceptDef/Precepts_Rape.xml | 46 +++---- .../PreceptDef/Precepts_Ritual_sex.xml | 17 ++- .../DefInjected/PreceptDef/Precepts_Sex.xml | 22 +-- .../PreceptDef/Precepts_SexProselytizing.xml | 10 ++ .../PreceptDef/Precepts_SizeMatters.xml | 16 +++ .../PreceptDef/Precepts_SocialAffection.xml | 22 +++ .../PreceptDef/Precepts_Submissive.xml | 20 +-- .../PreceptDef/Precepts_Virginity.xml | 31 +++++ .../Ritual_Behaviors_sex.xml | 15 ++- .../Ritual_Outcomes_sex.xml | 109 ++++++++++----- .../RitualPatternDefs/RitualPatterns_sex.xml | 20 +++ .../ThingDef/Buildings_Ideo_sex.xml | 14 ++ .../ThoughtDef/Precepts_Bestiality.xml | 43 +++--- .../ThoughtDef/Precepts_Incest.xml | 22 +-- .../ThoughtDef/Precepts_Necrophilia.xml | 27 ++++ .../ThoughtDef/Precepts_Pregnancy.xml | 28 ++++ .../DefInjected/ThoughtDef/Precepts_Rape.xml | 22 +-- .../DefInjected/ThoughtDef/Precepts_Sex.xml | 15 ++- .../ThoughtDef/Precepts_SizeMatters.xml | 40 ++++++ .../ThoughtDef/Precepts_Submissive.xml | 10 +- .../ThoughtDef/Precepts_Virginity.xml | 28 ++++ .../Thoughts_Ritual_sex_Quality.xml | 28 ++-- .../Keyed/RJW_Sexperience.xml | 21 ++- 56 files changed, 942 insertions(+), 286 deletions(-) create mode 100644 Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Bestiality.xml create mode 100644 Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Incest.xml create mode 100644 Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Masturbation.xml create mode 100644 Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Necrophilia.xml create mode 100644 Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Rape.xml create mode 100644 Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Sex.xml create mode 100644 Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Virginity.xml create mode 100644 Languages/ChineseSimplified/DefInjected/IdeoPresetDef/IdeoPresetDefs_sex.xml create mode 100644 Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_BabyFaction.xml create mode 100644 Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Masturbation.xml create mode 100644 Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Necrophilia.xml create mode 100644 Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Pregnancy.xml create mode 100644 Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SexProselytizing.xml create mode 100644 Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SizeMatters.xml create mode 100644 Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SocialAffection.xml create mode 100644 Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Virginity.xml create mode 100644 Languages/ChineseSimplified/DefInjected/JobDef/Jobs_Ritual_Sex.xml create mode 100644 Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_BabyFaction.xml create mode 100644 Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Masturbation.xml create mode 100644 Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Necrophilia.xml create mode 100644 Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Pregnancy.xml create mode 100644 Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SexProselytizing.xml create mode 100644 Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SizeMatters.xml create mode 100644 Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SocialAffection.xml create mode 100644 Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Virginity.xml create mode 100644 Languages/ChineseSimplified/DefInjected/RitualPatternDefs/RitualPatterns_sex.xml create mode 100644 Languages/ChineseSimplified/DefInjected/ThingDef/Buildings_Ideo_sex.xml create mode 100644 Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Necrophilia.xml create mode 100644 Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Pregnancy.xml create mode 100644 Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_SizeMatters.xml create mode 100644 Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Virginity.xml diff --git a/Languages/ChineseSimplified/DefInjected/GoodwillSituationDef/MemeCompatibility_Sex.xml b/Languages/ChineseSimplified/DefInjected/GoodwillSituationDef/MemeCompatibility_Sex.xml index 0501cec..bffe318 100644 --- a/Languages/ChineseSimplified/DefInjected/GoodwillSituationDef/MemeCompatibility_Sex.xml +++ b/Languages/ChineseSimplified/DefInjected/GoodwillSituationDef/MemeCompatibility_Sex.xml @@ -1,15 +1,17 @@  - + - 赞同恋兽癖 + 恋兽癖同道 + 恋尸癖同道 - + - 恋兽癖 - 强奸犯 + 恋兽癖 + 强奸犯 + 恋尸癖 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/HistoryEventDef/HistoryEventDef.xml b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/HistoryEventDef.xml index a454093..9e8f58e 100644 --- a/Languages/ChineseSimplified/DefInjected/HistoryEventDef/HistoryEventDef.xml +++ b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/HistoryEventDef.xml @@ -1,21 +1,21 @@  - + - 和动物做爱 - 和圣兽做爱 - 族内通婚 - 被强奸 - 强奸了奴隶 - 强奸了囚犯 - 被强奸 - 奴隶被强奸 - 囚犯被强奸 - 阴道容纳性交 - 肛门容纳性交 - 口腔容纳性交 - 做爱 - 乱交 + 和动物做爱 + 和圣兽做爱 + 族内通婚 + 被强奸 + 强奸了奴隶 + 强奸了囚犯 + 被强奸 + 奴隶被强奸 + 囚犯被强奸 + 阴道容纳性交 + 肛门容纳性交 + 口腔容纳性交 + 做爱 + 乱交 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Bestiality.xml b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Bestiality.xml new file mode 100644 index 0000000..32095b4 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Bestiality.xml @@ -0,0 +1,13 @@ + + + + + + 与动物发生性行为 + 与圣兽发生性行为 + 与非圣兽发生性行为 + 与牵绊动物发生性行为 + 与非牵绊动物发生性行为 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Incest.xml b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Incest.xml new file mode 100644 index 0000000..9c10a4e --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Incest.xml @@ -0,0 +1,14 @@ + + + + + + 近亲之间的婚姻 + 乱伦婚姻 + 非乱伦婚姻 + 近亲之间的性行为 + 乱伦性行为 + 非乱伦性行为 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Masturbation.xml b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Masturbation.xml new file mode 100644 index 0000000..71bf37c --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Masturbation.xml @@ -0,0 +1,9 @@ + + + + + + 自慰 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Necrophilia.xml b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Necrophilia.xml new file mode 100644 index 0000000..b3416ad --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Necrophilia.xml @@ -0,0 +1,9 @@ + + + + + + 奸尸 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Rape.xml b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Rape.xml new file mode 100644 index 0000000..26d1c38 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Rape.xml @@ -0,0 +1,14 @@ + + + + + + 被强奸 + 被强奸的奴隶 + 被强奸的囚犯 + 遭到强奸 + 遭到强奸的奴隶 + 遭到强奸的囚犯 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Sex.xml b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Sex.xml new file mode 100644 index 0000000..7c98c96 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Sex.xml @@ -0,0 +1,13 @@ + + + + + + 阴道性交 + 肛门性交 + 口腔性交 + 乱交 + 性交 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Virginity.xml b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Virginity.xml new file mode 100644 index 0000000..223b8c2 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/HistoryEventDef/Precepts_Virginity.xml @@ -0,0 +1,12 @@ + + + + + + 失去初夜 + 夺取初夜 + 初夜被夺 + 初夜被陌生人夺走 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IdeoPresetDef/IdeoPresetDefs_sex.xml b/Languages/ChineseSimplified/DefInjected/IdeoPresetDef/IdeoPresetDefs_sex.xml new file mode 100644 index 0000000..5e8e073 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/IdeoPresetDef/IdeoPresetDefs_sex.xml @@ -0,0 +1,14 @@ + + + + 两脚种畜 + 动物是我们的另一半。 + + 暴虐淫徒 + 全都是我们的。 + + 变态部落 + 灌成泡芙! + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/InteractionDef/Interactions_Speech_sex.xml b/Languages/ChineseSimplified/DefInjected/InteractionDef/Interactions_Speech_sex.xml index 9622570..f139913 100644 --- a/Languages/ChineseSimplified/DefInjected/InteractionDef/Interactions_Speech_sex.xml +++ b/Languages/ChineseSimplified/DefInjected/InteractionDef/Interactions_Speech_sex.xml @@ -1,42 +1,65 @@  - 轮奸演说 - r_logentry->[INITIATOR_nameDef] [spokeof] [speechtopic]. - r_logentry(p=0.2)->[INITIATOR_nameDef] [crazy]。 - speechtopic->强奸的含义和真谛 - speechtopic->强奸的表达方式 - speechtopic->受控的淫荡 - speechtopic->小穴的温暖 - speechtopic->射精的内涵 - speechtopic->爱与强奸 - speechtopic->抽象化的强奸 - speechtopic->阴茎和阴道 - speechtopic->强健的艺术 - speechtopic->受害者的诱惑 - speechtopic->尖叫的音乐性 - speechtopic->射在地上的精液 - crazy->发疯地尖叫着 - crazy->突然开始唱圣歌 - crazy->赞颂天堂 - crazy->对祭品的生殖器吐痰 - crazy->奸笑 - crazy->挥舞着一个套套 - crazy->一边手淫一边发出短促的哼哼 + 轮奸演说 + r_logentry->[INITIATOR_nameDef] [spokeof] [speechtopic]。 + r_logentry(p=0.2)->[INITIATOR_nameDef] [crazy]。 + speechtopic->强奸真正价值的意义 + speechtopic->强奸的表达方式 + speechtopic->受控的淫荡 + speechtopic->肉穴的温度 + speechtopic->射精的意义 + speechtopic->爱与强奸 + speechtopic->强奸的象征 + speechtopic->迪克与蒲西 + speechtopic->强奸的艺术 + speechtopic->受害者的诱惑 + speechtopic->尖叫的音乐 + speechtopic->地板上的精液 + crazy->尖叫痴狂 + crazy->突然唱起了圣歌 + crazy->对着天堂吟唱 + crazy->对受害者的生殖器吐痰 + crazy->高声谈笑 + crazy->挥舞着套套 + crazy->一边自慰一边喃喃自语 - 兽交演讲 - r_logentry->[INITIATOR_nameDef] [spokeof] [speechtopic]。 - speechtopic->兽交的含义和真谛 - speechtopic->兽交的表达方式 - speechtopic->受控的淫荡 - speechtopic->精液的滚烫 - speechtopic->异种繁殖的伟大 - speechtopic->动物与爱 - speechtopic->抽象化的兽交 - speechtopic->繁殖和生育 - speechtopic->繁殖的艺术 - speechtopic->动物的诱惑 - speechtopic->射在地上的精液 + 兽交演讲 + r_logentry->[INITIATOR_nameDef] [spokeof] [speechtopic]。 + speechtopic->兽交真正价值的意义 + speechtopic->兽交的表达方式 + speechtopic->受控的淫荡 + speechtopic->精液的滚烫 + speechtopic->跨种繁殖的意义 + speechtopic->动物与爱 + speechtopic->兽交的象征 + speechtopic->繁殖和生育 + speechtopic->繁殖的艺术 + speechtopic->动物的诱惑 + speechtopic->地板上的精液 + + 乱交演讲 + r_logentry->[INITIATOR_nameDef] [spokeof] [speechtopic]. + r_logentry(p=0.2)->[INITIATOR_nameDef] [crazy]. + speechtopic->性爱真正价值的意义 + speechtopic->性爱的表达方式 + speechtopic->受控的淫荡 + speechtopic->肉穴的温度 + speechtopic->射精的意义 + speechtopic->爱与相奸 + speechtopic->强奸的象征 + speechtopic->迪克与蒲西 + speechtopic->性爱的艺术 + speechtopic->[spokeof]的诱惑 + speechtopic->呻吟的音乐 + speechtopic->地板上的精液 + crazy->尖叫痴狂 + crazy->扔出一只假阳具 + crazy->扔出一只飞机杯 + crazy->对着天堂吟唱 + crazy->呻吟 + crazy->挥舞着假阳具 + crazy->一边自慰一边喃喃自语 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_BabyFaction.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_BabyFaction.xml new file mode 100644 index 0000000..1051645 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_BabyFaction.xml @@ -0,0 +1,9 @@ + + + + + + 婴儿派系 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Bestiality.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Bestiality.xml index 6efa632..5f3939c 100644 --- a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Bestiality.xml +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Bestiality.xml @@ -1,9 +1,9 @@  - + - 兽交 + 兽交 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Incest.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Incest.xml index 5696889..ffd0e7d 100644 --- a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Incest.xml +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Incest.xml @@ -1,9 +1,9 @@  - + - 乱伦 + 乱伦 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Masturbation.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Masturbation.xml new file mode 100644 index 0000000..e9f310a --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Masturbation.xml @@ -0,0 +1,9 @@ + + + + + + 自慰 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Necrophilia.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Necrophilia.xml new file mode 100644 index 0000000..573adce --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Necrophilia.xml @@ -0,0 +1,9 @@ + + + + + + 奸尸 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Pregnancy.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Pregnancy.xml new file mode 100644 index 0000000..bcf7648 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Pregnancy.xml @@ -0,0 +1,9 @@ + + + + + + 妊娠 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Rape.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Rape.xml index 01adf0c..fa2a65a 100644 --- a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Rape.xml +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Rape.xml @@ -1,9 +1,9 @@  - + - 强奸 + 强奸 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Sex.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Sex.xml index 88e34c4..44b9eba 100644 --- a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Sex.xml +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Sex.xml @@ -1,9 +1,9 @@  - + - 性爱种类 + 性交形式 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SexProselytizing.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SexProselytizing.xml new file mode 100644 index 0000000..1abad67 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SexProselytizing.xml @@ -0,0 +1,9 @@ + + + + + + 性交形式 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SizeMatters.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SizeMatters.xml new file mode 100644 index 0000000..e3e2662 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SizeMatters.xml @@ -0,0 +1,9 @@ + + + + + + 尺寸偏好 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SocialAffection.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SocialAffection.xml new file mode 100644 index 0000000..2c5e4a9 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_SocialAffection.xml @@ -0,0 +1,9 @@ + + + + + + 社交情感 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Submissive.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Submissive.xml index df5d520..27ab4c3 100644 --- a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Submissive.xml +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Submissive.xml @@ -1,9 +1,9 @@  - + - 性服从 + 性别服从 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Virginity.xml b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Virginity.xml new file mode 100644 index 0000000..ba4d9b7 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/IssueDef/Precepts_Virginity.xml @@ -0,0 +1,10 @@ + + + + + + 女性的初夜 + 男性的初夜 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/JobDef/Jobs_Ritual_Rape.xml b/Languages/ChineseSimplified/DefInjected/JobDef/Jobs_Ritual_Rape.xml index 4ac1fab..d400c23 100644 --- a/Languages/ChineseSimplified/DefInjected/JobDef/Jobs_Ritual_Rape.xml +++ b/Languages/ChineseSimplified/DefInjected/JobDef/Jobs_Ritual_Rape.xml @@ -1,7 +1,7 @@  - 去强奸一个受害者 + 去强奸一个受害者 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/JobDef/Jobs_Ritual_Sex.xml b/Languages/ChineseSimplified/DefInjected/JobDef/Jobs_Ritual_Sex.xml new file mode 100644 index 0000000..c57b753 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/JobDef/Jobs_Ritual_Sex.xml @@ -0,0 +1,12 @@ + + + + 强奸受害者 + 爱爱。 + 爱爱。 + 自慰。 + 爱爱。 + 被群交。 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/MemeDef/Memes_Sexual.xml b/Languages/ChineseSimplified/DefInjected/MemeDef/Memes_Sexual.xml index d240fcd..bd1708e 100644 --- a/Languages/ChineseSimplified/DefInjected/MemeDef/Memes_Sexual.xml +++ b/Languages/ChineseSimplified/DefInjected/MemeDef/Memes_Sexual.xml @@ -1,56 +1,83 @@  - 恋兽癖 - 日山羊的。 - memeAdjective->兽交的 - memeAdjective->恋兽的 - memeHyphenPrefix->恋兽 - memeConcept->繁殖 - memeConcept->恋兽癖 - memeConcept->兽交 - memeLeaderNoun->家畜 - creation(tag=meme_Zoophile) ->[deity0_name] 喜欢和兽类繁殖。 - episode(uses=1,tag=meme_Zoophile) ->[deity0_name] 告诫众人:“西格玛禁止此等行为!” - setup(tag=meme_Zoophile) ->有一天, [founderName] 性甚至哉,误打误撞强上了一个动物,从此喜欢上了这项运动。 - story(uses=1,tag=meme_Zoophile) ->为了扩大动物种群, [founderName] 开始和动物爱爱。 - lessonIntro(tag=meme_Zoophile) ->有一天,我跟动物做爱了,比跟人做好多了! - lesson(tag=meme_Zoophile) ->还是动物适合老子。 - lessonReinforcement(tag=meme_Zoophile) ->和动物做爱吧!这里有永恒的快乐。 - archistBasis(tag=meme_Zoophile) ->机械神教徒永远寻找永恒的快乐。 - archistFact(tag=meme_Zoophile) ->那便是同动物做爱。 - archistProphecy(tag=meme_Zoophile) ->[inTheEnd], 机械神教徒终于解锁了异种性行为,因此,他们也获得了真正的永恒的快乐。 - animistFact(tag=meme_Zoophile) ->最强大的力量来源于野兽,只有接受野兽的支配,才能发挥野兽的强大力量。 - animistProphecy(tag=meme_Zoophile) ->[itIsSaid] 一个强大的毁灭之神会摧垮宇宙,但一个由动物产下的人类挥舞着 [relic0_name] 击退了毁灭者。 - 兽交的 - 恋兽的 + 恋兽癖 + 与动物性交的人。 + memeAdjective->兽性的 + memeAdjective->兽交的 + memeHyphenPrefix->兽性的 + memeConcept->繁殖 + memeConcept->恋兽癖 + memeConcept->兽交者 + memeLeaderNoun->牲畜 + creation(tag=meme_Zoophile) ->[deity0_name]喜欢与野兽繁殖。 + episode(uses=1,tag=meme_Zoophile) ->[deity0_name]对所有人说:“西格玛禁止这种行为! + setup(tag=meme_Zoophile) ->某天,[founderName]性甚至哉,误打误撞强上了一个动物,从此喜欢上了这项运动。 + story(uses=1,tag=meme_Zoophile) ->为了扩大动物种群,[founderName]开始和动物爱爱。 + lessonIntro(tag=meme_Zoophile) ->有一天,我跟动物做爱了,比跟人做好多了! + lesson(tag=meme_Zoophile) ->还是动物适合老子。 + lessonReinforcement(tag=meme_Zoophile) ->和动物做爱吧!这里有永恒的快乐。 + archistBasis(tag=meme_Zoophile) ->超凡者永远寻找永恒的快乐。 + archistFact(tag=meme_Zoophile) ->那便是同动物做爱。 + archistProphecy(tag=meme_Zoophile) ->[inTheEnd],超凡使徒终于解锁了异种性行为,因此,他们也获得了真正的永恒的快乐。 + animistFact(tag=meme_Zoophile) ->最强大的力量来源于野兽,只有接受野兽的支配,才能发挥野兽的强大力量。 + animistProphecy(tag=meme_Zoophile) ->[itIsSaid]一股强大的毁灭意志在找寻破化宇宙的方法,但一个由动物产下的人类会挥舞[relic0_name]摧毁这个意志。 + 兽交的 + 恋兽的 - 强奸犯 - 无强奸,不做爱 - memeAdjective->暴力的 - memeAdjective->强奸的 - memeHyphenPrefix->强奸犯 - memeHyphenPrefix->骚扰犯 - memeHyphenPrefix->变态 - memeConcept->强奸犯 - memeConcept->变态 - memeGod->色孽 - memeLeaderNoun->种马 - memeLeaderNoun->大强奸犯 - creation(tag=meme_Rapist) ->[deity0_name] 尤好强奸。 - episode(uses=1,tag=meme_Rapist) ->[deity0_name] 将某人强奸致死。 - setup(tag=meme_Rapist) ->[founderName] 总是欲火焚身。 - story(uses=1,tag=meme_Rapist) ->[founderName] 强奸了某人。 没人能够制止 [founderName]。 [founderName] 试图强奸整个星球,死在了半路上。 - lessonIntro(tag=meme_Rapist) ->干艹好棒好棒的!干艹好棒好棒的!干艹好棒好棒的! - lesson(tag=meme_Rapist) ->干艹好棒好棒的!干艹好棒好棒的!干艹好棒好棒的!干艹好棒好棒的! - lessonReinforcement(tag=meme_Rapist) ->干艹好棒好棒的!干艹好棒好棒的!干艹好棒好棒的!干艹好棒好棒的!干艹好棒好棒的! - archistBasis(tag=meme_Rapist) ->人类的历史就是强奸的历史。 - archistFact(tag=meme_Rapist) ->机械信徒也阻止不了强奸犯。 - archistProphecy(tag=meme_Rapist) ->[inTheEnd],强奸犯从未停止过强奸。 - animistFact(tag=meme_Rapist) ->强奸之灵是最强大的灵,牠会强奸其他所有的灵。 - animistProphecy(tag=meme_Rapist) ->[itIsSaid] 一个强大的毁灭之神会摧垮宇宙,但一个强奸了一百万个人类的强奸犯挥舞着 [relic0_name] 击退了毁灭者。 - 强奸的 - 颓废的 + 强奸至上 + 雷普,最高! + memeAdjective->暴力的 + memeAdjective->强奸的 + memeHyphenPrefix->强奸犯 + memeHyphenPrefix->骚扰犯 + memeHyphenPrefix->变态 + memeConcept->强奸犯 + memeConcept->变态 + r_deityName->色孽 + memeLeaderNoun->种马 + memeLeaderNoun->大强奸犯 + creation(tag=meme_Rapist) ->[deity0_name]尤好强奸。 + episode(uses=1,tag=meme_Rapist) ->[deity0_name]将某人强奸致死。 + setup(tag=meme_Rapist) ->[founderName]总是欲火焚身。 + story(uses=1,tag=meme_Rapist) ->[founderName]强奸了某人。没人能够制止[founderName]。[founderName]试图强奸整个星球,死在了半路上。 + lessonIntro(tag=meme_Rapist) ->雷普,最高!雷普,最高!雷普,最高! + lesson(tag=meme_Rapist) ->雷普,最高!雷普,最高!雷普,最高!雷普,最高! + lessonReinforcement(tag=meme_Rapist) ->雷普,最高!雷普,最高!雷普,最高!雷普,最高!雷普,最高! + archistBasis(tag=meme_Rapist) ->人类的历史就是强奸的历史。 + archistFact(tag=meme_Rapist) ->超凡科技也阻止不了强奸犯。 + archistProphecy(tag=meme_Rapist) ->[inTheEnd],强奸犯从未停止过强奸。 + animistFact(tag=meme_Rapist) ->强奸之灵是最强大的灵,牠会强奸其他所有的灵。 + animistProphecy(tag=meme_Rapist) ->[itIsSaid]一股强大的毁灭意志在找寻破化宇宙的方法,但一个强奸了一百万个人类的强奸犯会挥舞[relic0_name]强奸这个意志。 + 强奸的 + 颓废的 + + 淫秽放荡 + 大变态! + memeAdjective->淫荡 + memeAdjective->猥亵 + memeAdjective->引诱 + memeAdjective->性感 + memeAdjective->发情 + memeAdjective->颓废 + memeHyphenPrefix->发情 + memeHyphenPrefix->欲望 + memeConcept->欲望 + memeConcept->性欲 + memeConcept->发情期 + memeConcept->唤起 + memeConcept->渴望 + memeConcept->性 + memeConcept->变态 + r_deityName->色孽 + 颓废的 + + 恋尸癖 + 硬硬的,嘿嘿…… + r_deityName->索尼克 + r_deityName->洛克人 + memeConcept->尸体 + memeConcept->死亡 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_BabyFaction.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_BabyFaction.xml new file mode 100644 index 0000000..de2a172 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_BabyFaction.xml @@ -0,0 +1,16 @@ + + + + + + 始终跟随母亲(默认) + 新生婴儿总是跟随母亲的派系和意识形态。 + + 始终跟随父亲 + 新生婴儿总是跟随父亲的派系和意识形态(如果存在)。 + + 始终跟随殖民地 + 新生婴儿总是跟随玩家的派系和意识形态。 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Bestiality.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Bestiality.xml index 01ab23b..09137ad 100644 --- a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Bestiality.xml +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Bestiality.xml @@ -1,29 +1,37 @@  - + - 可恶的 - 兽交是绝对之恶。 + 厌恶 + 兽交是严重恶行。 - 骇人听闻的 - 兽交听起来太吓人了。 + 畏惧 + 兽交是一种恐怖行为。 - 不赞同的 - 兽交也太恶心了吧。 + 反感 + 兽交是非常令人反感的。 - 可以接受 - 兽交是生活中正常的,无可厚非的一部分。 + 认可 + 兽交是日常生活中微不足道的一部分。 - 仅圣兽 - 和圣兽做爱应该鼓励,但和其他动物做爱是罪行。 - 某人和动物做爱 - 某人和圣兽做爱 + 仅圣兽 + 和圣兽做爱应该鼓励,但和其他动物做爱是罪行。 + 某人和动物做爱 + 某人和圣兽做爱 - 鼓励的 - 是吧!我就是亚历山大日山羊的,怎么了?! - 某人和动物做爱 - 某人和圣兽做爱 + + + + 仅牵绊 + 和牵绊动物做爱应该鼓励,但和其他动物做爱是罪行。 + 某人和动物做爱 + 某人和非牵绊动物做爱 + + 推崇 + 与动物做爱应该值得鼓励。 + 某人和动物做爱 + 某人和圣兽做爱 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Incest.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Incest.xml index 8e2e4f4..e991766 100644 --- a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Incest.xml +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Incest.xml @@ -1,22 +1,22 @@  - + - 无所禁忌 - 随便 + 放纵 + 随便。 - 不允许近亲 - 族内通婚不应被允许,但堂表亲不算族内通婚。 + 不允许近亲 + 族内通婚不应被允许,但堂表亲不算族内通婚。 - 不赞同 - 族内通婚违反公序良俗。 + 反感 + 族内通婚违反公序良俗。 - 禁忌 - 禁止族内通婚。 + 禁忌 + 禁止族内通婚。 - 仅族内通婚 - 万世一系,血脉相融。 + 仅族内通婚 + 万世一系,血脉相融。 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Masturbation.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Masturbation.xml new file mode 100644 index 0000000..f560069 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Masturbation.xml @@ -0,0 +1,13 @@ + + + + + + 厌恶 + 自慰是不可接受的。 + + 反感 + 自慰有些可耻。 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Necrophilia.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Necrophilia.xml new file mode 100644 index 0000000..6b0cbc3 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Necrophilia.xml @@ -0,0 +1,22 @@ + + + + + + 厌恶 + 奸尸是极其邪恶的。 + + 畏惧 + 奸尸是件可怕的事情。 + + 反感 + 奸尸让人极为反感。 + + 认可 + 奸尸是日常生活中微不足道的一部分。 + + 推崇 + 奸尸是被认可的。 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Pregnancy.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Pregnancy.xml new file mode 100644 index 0000000..bd77e3a --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Pregnancy.xml @@ -0,0 +1,22 @@ + + + + + + 神圣 + 怀孕是一项值得尊敬的责任。妇女承载着我们社会的下一代。 + + 高尚 + 怀孕是一种高尚的行为。 + + 冷漠 + 也就那样吧。 + + 繁衍 + 女性应该怀孕——那些没有怀孕的人看起来格格不入。 + + 厌恶 + 怀了孕就不干净了。要小心保持你的纯洁。 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Rape.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Rape.xml index dc205f2..1ef7bb3 100644 --- a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Rape.xml +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Rape.xml @@ -1,34 +1,34 @@  - + - 可恶的 - 强奸是深刻的罪恶。 - 某人强奸了他人 - 强奸了囚犯 - 某人强奸了囚犯 - 强奸了奴隶 - 某人强奸了奴隶 + 厌恶 + 强奸是深刻的罪恶。 + 某人强奸了他人 + 强奸了囚犯 + 某人强奸了囚犯 + 强奸了奴隶 + 某人强奸了奴隶 - 骇人听闻的 - 强奸听起来太吓人了 - 某人强奸了他人 - 强奸了囚犯 - 某人强奸了囚犯 + 恐惧 + 强奸听起来太吓人了 + 某人强奸了他人 + 强奸了囚犯 + 某人强奸了囚犯 - 不赞同的 - 虽然强奸听起来好疼,但这也是生活必不可少的一部分。 - 某人强奸了他人 + 反感 + 虽然强奸听起来好疼,但这也是生活必不可少的一部分。 + 某人强奸了他人 - 允许的 - 强奸是生活中正常的,不可磨灭的一部分。 + 认可 + 强奸是生活中微不足道的一部分。 - 自豪的 - 强奸他人可以吹一辈子。 - 某人强奸了他人 - 某人强奸了他人 - 某人强奸了他人 + 自豪 + 强奸他人可以吹一辈子。 + 某人强奸了他人 + 某人强奸了他人 + 某人强奸了他人 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Ritual_sex.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Ritual_sex.xml index e9d799d..db479bd 100644 --- a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Ritual_sex.xml +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Ritual_sex.xml @@ -1,11 +1,20 @@  - 轮奸 - 一场仪式性的轮奸,受害者被引导者轮奸。听众都可参与引导。 + 轮奸仪式(受害) + 一个仪式性的轮奸,发起者强奸受害者。观众们也会跟着发起者一起进行强奸。 - 动物轮奸 - 一场仪式性的动物轮奸,动物们会轮奸受害者。 + 轮奸仪式(志愿) + 一个仪式性的轮奸,组织者被轮奸。观众们会与组织者进行性交。 + + 动物轮奸(受害) + 一场仪式性的动物轮奸,动物们会轮奸受害者。 + + 动物轮奸(志愿) + 一个仪式性的轮奸,其中动物们与组织者性交。 + + 药趴 + 使用大量春药的群交狂欢。 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Sex.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Sex.xml index cc0d8ca..5b3e62e 100644 --- a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Sex.xml +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Sex.xml @@ -1,22 +1,22 @@  - + - 自由的 - 随心所欲 + 自由 + 随便。 - 仅阴道性交 - 只有阴道性交是合理的,其他都太怪了。 + 仅阴道性交 + 只有阴道性交是合理的,其他都太怪了。 - 仅肛门性交 - 只有肛交是合理的,其他都太怪了。 + 仅肛门性交 + 只有肛交是合理的,其他都太怪了。 - 仅口腔性交 - 只有口交是合理的,其他都太怪了。 + 仅口腔性交 + 只有口交是合理的,其他都太怪了。 - 越怪越好 - 生活总得添点绿…… + 越怪越好 + 平平淡淡的可不是生活! \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SexProselytizing.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SexProselytizing.xml new file mode 100644 index 0000000..1dcd8a3 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SexProselytizing.xml @@ -0,0 +1,10 @@ + + + + + + 性传教 + 给予性高潮会让伴侣皈依这种意识形态。\n\n我要草得你乒乒乓乓,草得你喊****万万岁! + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SizeMatters.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SizeMatters.xml new file mode 100644 index 0000000..0663cd9 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SizeMatters.xml @@ -0,0 +1,16 @@ + + + + + + 大就是好 + 你能满足我吗? + + 无规则 + 我不在意。 + + 小就是好 + 古希腊人有云:大鸡鸡是一种兽性特征,尊贵的人鸡鸡都是很小的。 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SocialAffection.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SocialAffection.xml new file mode 100644 index 0000000..851caa7 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_SocialAffection.xml @@ -0,0 +1,22 @@ + + + + + + 正常(原版) + 和原版一样。 + + 仅限直系亲属 + 只关心直系亲属。 + + 仅限亲戚 + 不关心非家庭成员的悲剧。 + + 仅限非家庭成员 + 开怀大孝了,兄弟们。 + + 精神病 + 他人与我何干? + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Submissive.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Submissive.xml index b899e9f..e0439fb 100644 --- a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Submissive.xml +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Submissive.xml @@ -1,22 +1,16 @@  - + - 正常的 - 无影响 + 正常的 + 就只是这样。 - 男性须服从 - 男性必须服从。即使被人强奸,也得乖乖受着。 - 不听话 - 不听话 - 不听话 + 男性必须服从 + 男性必须服从。即使被人强奸,也得乖乖受着。 - 女性须服从 - 女性必须服从。即使被人强奸,也得乖乖受着。 - 不听话 - 不听话 - 不听话 + 女性必须服从 + 女性必须服从。即使被人强奸,也得乖乖受着。 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Virginity.xml b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Virginity.xml new file mode 100644 index 0000000..82f752b --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/PreceptDef/Precepts_Virginity.xml @@ -0,0 +1,31 @@ + + + + + + 无用 + 女性的第一次也就那样吧。 + + 无用 + 男性的第一次也就那样吧。 + + 珍贵 + 女性的第一次是很珍贵的。 + + 珍贵 + 男性的第一次是很珍贵的。 + + 珍贵(严格) + 结婚前就失去第一次是邪恶的。 + + 珍贵(严格) + 结婚前就失去第一次是邪恶的。 + + 可耻 + 噗噗,你怎么还是处女呀? + + 可耻 + 噗噗,你怎么还是处男呀? + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/RitualBehaviorDef/Ritual_Behaviors_sex.xml b/Languages/ChineseSimplified/DefInjected/RitualBehaviorDef/Ritual_Behaviors_sex.xml index 039cf2b..d7a9fda 100644 --- a/Languages/ChineseSimplified/DefInjected/RitualBehaviorDef/Ritual_Behaviors_sex.xml +++ b/Languages/ChineseSimplified/DefInjected/RitualBehaviorDef/Ritual_Behaviors_sex.xml @@ -1,12 +1,17 @@  - 引导者 - 受害者 + 引导者 + 受害者 - 引导者 - 受精者 - 授精者 + 引导者 + + 引导者 + 受精者 + 授精者 + + 引导者 + 授精者 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml b/Languages/ChineseSimplified/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml index f796bbf..904e2ec 100644 --- a/Languages/ChineseSimplified/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml +++ b/Languages/ChineseSimplified/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml @@ -1,38 +1,85 @@  - 根据仪式的质量,参加者会获得介于 {MINMOOD} 与 {MAXMOOD} 之间的心情更易,维持 {MOODDAYS} 天。 - 道德导师在场 - 参与人数 - 在祭坛举办 - 受害者精神扭曲 - 受害者精神崩溃 - 受害者精神崩坏 - 满意的参加者 - 糟糕的 - {0} 太糟糕了! 演讲结结巴巴,语无伦次,受害者很拙劣——每个人都在等着它结束。 - 无聊的 - {0} 无聊透顶。 演讲内容重复,受害者明显是个残次品。真的很没面子。 - 满意的 - {0} 令人满意。 讲话感觉意味深长,受害者很棒。 - 超凡的 - {0} 太棒了! 演讲让所有人都陷入了疯狂的边缘,受害者就像魅魔一样。 + 参与者将在 {MOODDAYS} 天内获得 {MINMOOD} 到 {MAXMOOD} 的心情值,这取决于仪式的效果。 + 如果{0}令人满意,其中一位参与者可能会获得灵感。 + 糟糕的 + {0}太糟糕了!演讲结结巴巴,语无伦次,受害者也是非常拙劣,每个人都在等着结束。 + 枯燥乏味的 + {0}枯燥乏味。演讲内容重复,受害者明显是个残次品。让人感觉很不体面。 + 令人满意的 + {0}令人满意。 演讲内容很有意义, 受害者的技术也很好。 + 壮观的 + {0}非常壮观。 演讲把每个人带到了疯狂的边缘,那受害者简直像个魅魔。 + 传道者出席 + 参与者数量 + 由祭坛开始仪式 + 受害者精神恍惚 + 受害者崩坏边缘 + 受害者严重崩坏 + 满意的参与者 + 极其满意的参与者 - 根据仪式的质量,参加者会获得介于 {MINMOOD} 与 {MAXMOOD} 之间的心情更易,维持 {MOODDAYS} 天。 - 道德导师在场 - 参与人数 - 在祭坛举办 - 受精者精神扭曲 - 受精者精神崩溃 - 受精者精神崩坏 - 糟糕的 - {0} 太糟糕了! 演讲结结巴巴,语无伦次,受害者很拙劣——每个人都在等着它结束。 - 无聊的 - {0} 无聊透顶。 演讲内容重复,受害者明显是个残次品。真的很没面子。 - 满意的 - {0} 令人满意。 讲话感觉意味深长,受害者很棒。 - 超凡的 - {0} 太棒了! 演讲让所有人都陷入了疯狂的边缘,受害者就像魅魔一样。 + 参与者将在 {MOODDAYS} 天内获得 {MINMOOD} 到 {MAXMOOD} 的心情值,这取决于仪式的效果。 + 如果{0}令人满意,其中一位参与者可能会获得灵感。 + 糟糕的 + {0}太糟糕了!演讲结结巴巴,语无伦次,组织者也是非常拙劣,每个人都在等着结束。 + 枯燥乏味的 + {0}枯燥乏味。演讲内容重复,组织者明显是个残次品。让人感觉很不体面。 + 令人满意的 + {0}令人满意。 演讲内容很有意义, 组织者的技术也很好。 + 壮观的 + {0}非常壮观。 演讲把每个人带到了疯狂的边缘,那组织者简直像个魅魔。 + 传道者出席 + 参与者数量 + 由祭坛开始仪式 + 满意的参与者 + 极其满意的参与者 + + 参与者将在 {MOODDAYS} 天内获得 {MINMOOD} 到 {MAXMOOD} 的心情值,这取决于仪式的效果。 + 如果{0}令人满意,其中一位参与者可能会获得灵感。 + 糟糕的 + {0}太糟糕了!演讲结结巴巴,语无伦次,受害者也是非常拙劣,每个人都在等着结束。 + 枯燥乏味的 + {0}枯燥乏味。演讲内容重复,受害者明显是个残次品。让人感觉很不体面。 + 令人满意的 + {0}令人满意。 演讲内容很有意义, 受害者的技术也很好。 + 壮观的 + {0}非常壮观。 演讲把每个人带到了疯狂的边缘,那受害者简直像个魅魔。 + 传道者出席 + 参与者数量 + 由祭坛开始仪式 + 受害者精神恍惚 + 受害者崩坏边缘 + 受害者严重崩坏 + + 参与者将在 {MOODDAYS} 天内获得 {MINMOOD} 到 {MAXMOOD} 的心情值,这取决于仪式的效果。 + 如果{0}令人满意,其中一位参与者可能会获得灵感。 + 糟糕的 + {0}太糟糕了!演讲结结巴巴,语无伦次,组织者也是非常拙劣,每个人都在等着结束。 + 枯燥乏味的 + {0}枯燥乏味。演讲内容重复,组织者明显是个残次品。让人感觉很不体面。 + 令人满意的 + {0}令人满意。 演讲内容很有意义, 组织者的技术也很好。 + 壮观的 + {0}非常壮观。 演讲把每个人带到了疯狂的边缘,那组织者简直像个魅魔。 + 传道者出席 + 参与者数量 + 由祭坛开始仪式 + + 参与者将在 {MOODDAYS} 天内获得 {MINMOOD} 到 {MAXMOOD} 的心情值,这取决于仪式的效果。 + 如果{0}令人满意,其中一位参与者可能会获得灵感。 + 糟糕的 + {0}太糟糕了! + 枯燥乏味的 + {0}枯燥乏味。 + 令人满意的 + {0}令人满意. + 壮观的 + {0}非常壮观。 + 参与者数量 + 房间观感 + 满意的参与者 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/RitualPatternDefs/RitualPatterns_sex.xml b/Languages/ChineseSimplified/DefInjected/RitualPatternDefs/RitualPatterns_sex.xml new file mode 100644 index 0000000..d78fa05 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/RitualPatternDefs/RitualPatterns_sex.xml @@ -0,0 +1,20 @@ + + + + 轮奸仪式(受害) + 一个仪式性的轮奸,发起者会发表演讲,让观众兴奋起来,然后强奸受害者。如果组织者无法接触受害者,仪式就会取消。 + + 轮奸仪式(志愿) + 一个仪式性的轮奸,组织者会发表演讲,让观众兴奋起来,然后让观众强奸自己。 + + 动物轮奸仪式(受害) + 一个仪式性的轮奸,发起者会发表演讲,让观众兴奋起来,然后让动物强奸受害者。 + + 动物轮奸仪式(志愿) + 一个仪式性的轮奸,组织者会发表演讲,让观众兴奋起来,然后让动物强奸自己。 + + 药趴 + 使用大量春药的群交狂欢。参与者会围着一个“春药桶”,点燃它,然后一边吸着催情烟雾,一边互相做爱。 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/ThingDef/Buildings_Ideo_sex.xml b/Languages/ChineseSimplified/DefInjected/ThingDef/Buildings_Ideo_sex.xml new file mode 100644 index 0000000..bb497fe --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/ThingDef/Buildings_Ideo_sex.xml @@ -0,0 +1,14 @@ + + + + 水烟筒 + 一个装满驼峰菇的木制结构。可以在仪式中点燃,产生大量的催情烟雾,持续数小时,之后结构将被摧毁。 + + 散烟器 + 一个自动燃烧驼峰菇的装置,会在周围产生一片催情烟雾。任何身处烟雾中的人都会随着时间变得越来越情欲高涨。 + 散烟器(蓝图) + 散烟器(建造中) + 一个自动燃烧驼峰菇的装置,会在周围产生一片催情烟雾。任何身处烟雾中的人都会随着时间变得越来越情欲高涨。 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Bestiality.xml b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Bestiality.xml index 9f2f84d..46b3b87 100644 --- a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Bestiality.xml +++ b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Bestiality.xml @@ -1,32 +1,43 @@  - + - 和动物做爱 - 我和动物做爱。 杀了我吧。 + 和动物做爱 + 我和动物做爱。 杀了我吧。 - 和动物做爱 + 和动物做爱 - 和动物做爱 - 我和动物做爱。 我不知道能否原谅自己。 + 和动物做爱 + 我和动物做爱。 我不知道能否原谅自己。 - 和动物做爱 + 和动物做爱 - 和动物做爱 - 我和动物做爱。 我希望牠们不要太难受。 + 和动物做爱 + 我和动物做爱。 我希望牠们不要太难受。 - 和动物做爱 + 和动物做爱 - 和圣兽以外的动物做爱 - 我随便日了一个动物。 我希望牠们不要太难受。 + 和圣兽以外的动物做爱 + 我随便日了一个动物。 我希望牠们不要太难受。 - 和圣兽以外的动物做爱 + 和圣兽以外的动物做了爱 - 和动物做爱 - 我和动物做爱! + 和非牵绊动物做爱 + 我随便日了一个动物。我怎么能这么做? - 和动物做爱 + 和牵绊动物做爱 + 我和我的牵绊做了爱! + + 和牵绊动物做爱 + 共享一种特殊的纽带。 + + 和非牵绊动物做了爱 + + 和动物做爱 + 我和动物做爱。 + + 和动物做爱 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Incest.xml b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Incest.xml index 4374585..e01ca03 100644 --- a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Incest.xml +++ b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Incest.xml @@ -1,20 +1,20 @@  - + - 被社会排除在外 - 没人会祝福我们的婚事…… + 被社会排除在外 + 没人会祝福我们的婚事…… - 被人在背后指指点点 - 他们在戳我们的脊梁骨。 + 被人在背后指指点点 + 他们在戳我们的脊梁骨。 - 族内通婚 - 族内通婚 - 族内通婚 - 族内通婚 - 和非亲族做爱 - 我脏了 + 族内通婚 + 族内通婚 + 族内通婚 + 族内通婚 + 和非亲族做爱 + 我脏了 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Necrophilia.xml b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Necrophilia.xml new file mode 100644 index 0000000..9fb7163 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Necrophilia.xml @@ -0,0 +1,27 @@ + + + + + + 奸尸 + 我干过尸体。 + + 奸尸 + + 奸尸 + 我干过尸体。 + + 奸尸 + + 奸尸 + 我干过尸体。 + + 奸尸 + + 奸尸 + 我干过尸体。 + + 奸尸 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Pregnancy.xml b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Pregnancy.xml new file mode 100644 index 0000000..db93abc --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Pregnancy.xml @@ -0,0 +1,28 @@ + + + + + + 怀孕 + 我怀孕了,这让我为殖民地建设添砖加瓦! + + 怀孕 + 我很快就会让我们的殖民地变得更加强大。 + + 怀孕 + 怀孕 + 怀孕 + + 怀孕 + 怎么会变成这样?我从没想过要怀孕! + + + + + 还没怀孕 + 我希望很快点怀孕。 + + 未受精 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Rape.xml b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Rape.xml index d8b2000..28ab3bb 100644 --- a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Rape.xml +++ b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Rape.xml @@ -1,23 +1,23 @@  - + - 强奸了某人 - 我强奸了某人。 我不该那么做。 + 强奸了某人 + 我强奸了某人。 我不该那么做。 - 强奸了某人 + 强奸了某人 - 强奸了某人 - 我强奸了某人。 我不该那么做。 + 强奸了某人 + 我强奸了某人。 我不该那么做。 - 强奸了某人 + 强奸了某人 - 强奸了某人 - 我强奸了某人。 我不该那么做。 + 强奸了某人 + 我强奸了某人。 我不该那么做。 - 强奸了某人 - 强奸了某人 + 强奸了某人 + 强奸了某人 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Sex.xml b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Sex.xml index af25f1c..7b1f0d2 100644 --- a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Sex.xml +++ b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Sex.xml @@ -1,14 +1,17 @@  - + - 正常的性交 - 根本得不到满足。 + 乱交 + 我不守道德,这恰恰让我性欲旺盛。 - 乱交 - 乱交 - 乏味 + 正常的性交 + 根本得不到满足。 + + 乱交 + 乱交 + 乏味 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_SizeMatters.xml b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_SizeMatters.xml new file mode 100644 index 0000000..c4fe458 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_SizeMatters.xml @@ -0,0 +1,40 @@ + + + + + + 令人蔑视的生殖器 + 我……我现在这样也很好! + 令人失望的生殖器 + 我觉得有点小了。 + 平均水平的生殖器 + 我觉得这样就是平均水平了。 + 令人赞叹的生殖器 + 我觉得还挺大的。 + 令人震撼的生殖器 + 我不想成为房间里的大象,但我的一部分已经是了。 + + 令人震撼的生殖器 + 我不需要过大的生殖器,因为这正是我无上智慧和优雅的象征。 + 令人赞叹的生殖器 + 我觉得还挺小的。 + 平均水平的生殖器 + 我觉得这样就是平均水平了。 + 令人失望的生殖器 + 我觉得有点大了。 + 令人蔑视的生殖器 + 相比人类,我更像动物了。我为什么长成了这种样子? + + + + + 令人失望的生殖器 + 平均水平的生殖器 + 令人喜欢的生殖器 + + 令人喜欢的生殖器 + 平均水平的生殖器 + 令人失望的生殖器 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Submissive.xml b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Submissive.xml index 8f2eb27..5714f5c 100644 --- a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Submissive.xml +++ b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Submissive.xml @@ -1,9 +1,15 @@  - + + + 被强奸 + 我理应接受。但这不是很舒服。 - 不听话 + {0}强奸了我 + 怎么敢… + + 不听话 \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Virginity.xml b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Virginity.xml new file mode 100644 index 0000000..3c6d071 --- /dev/null +++ b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Precepts_Virginity.xml @@ -0,0 +1,28 @@ + + + + + + 贞洁被强行夺走 + 我的贞洁被强行夺走了。 + + 失身于{0} + 我不再是处。 + 失身于{0} + 我不再是处。 + 失身于{0} + 我不再是处。 + 把贞洁交给了{0} + 我把我的贞洁交给了我的爱人。 + + 失身于{0} + 终于! + 失身于{0} + 终于! + 失身于{0} + 终于! + + 淫妇 + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Thoughts_Ritual_sex_Quality.xml b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Thoughts_Ritual_sex_Quality.xml index 890c53c..e1109d3 100644 --- a/Languages/ChineseSimplified/DefInjected/ThoughtDef/Thoughts_Ritual_sex_Quality.xml +++ b/Languages/ChineseSimplified/DefInjected/ThoughtDef/Thoughts_Ritual_sex_Quality.xml @@ -1,17 +1,29 @@  - 糟透了的轮奸 - 那场轮奸糟透了。 呃…… + 糟糕的轮奸 + 那次轮奸太糟糕了。呃。 - 无聊的轮奸 - 那场轮奸不咋的。 我宁愿我没去。 + 无聊的轮奸 + 那次轮奸一点都不好。我真希望我没去。 - 愉快的轮奸 - 真是场愉快的轮奸。 我爽到了。 + 有趣的轮奸 + 那次轮奸很有趣。它真的让我很满足。 - 难忘的轮奸 - 那场轮奸真的太棒了!一切一切都太棒了! + 难忘的轮奸 + 那次轮奸太棒了!一切都很完美。 + + 糟糕的药趴 + 那次药趴太糟糕了。呃。 + + 无聊的药趴 + 那次药趴一点都不好。我真希望我没去。 + + 有趣的药趴 + 那次药趴很有趣。它真的让我很满足。 + + 难忘的药趴 + 那次药趴太棒了!一切都很完美。 \ No newline at end of file diff --git a/Languages/ChineseSimplified/Keyed/RJW_Sexperience.xml b/Languages/ChineseSimplified/Keyed/RJW_Sexperience.xml index 1317511..73469db 100644 --- a/Languages/ChineseSimplified/Keyed/RJW_Sexperience.xml +++ b/Languages/ChineseSimplified/Keyed/RJW_Sexperience.xml @@ -1,7 +1,24 @@  - RJW 性经验 + RJW性意识形态 - 迷因 + 模因 + 受害者条件:仅限奴隶、囚犯、必须顺从的性别 + 不当动物:无法繁殖或被教义禁止 + 非人类 + 非动物 + 必须具有性行为能力 + 启用乱伦教义的浪漫补丁* + 补丁用于让乱伦教义影响浪漫几率因子。可能与浪漫模组冲突。\n\n*需要重启游戏以应用更改。 + 启用乱伦教义的手动浪漫补丁* + 补丁用于让乱伦教义影响手动浪漫选项。\n\n*需要重启游戏以应用更改 + + 兽交尝试间隔时间 x{0} + 自慰尝试间隔时间 x{0} + 恋尸癖尝试间隔时间 x{0} + 强奸尝试间隔时间 x{0} + + + \ No newline at end of file From 3cde2285ec7f9db813fcfbd811cc090e6f4932ee Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 14 Sep 2024 15:02:49 +0500 Subject: [PATCH 02/64] Renamed core xml patch files to reflect patched file names --- ...ath.xml => Core_Thoughts_Memory_Death.xml} | 12 +- ...Lost.xml => Core_Thoughts_Memory_Lost.xml} | 0 1.5/Patches/Core_Thoughts_Memory_Misc.xml | 105 ++++++++++++++++++ .../Core_Thoughts_Situation_Special.xml | 25 +++++ CHANGELOG.md | 5 +- 5 files changed, 140 insertions(+), 7 deletions(-) rename 1.5/Patches/{Core_ThoughtDefsDeath.xml => Core_Thoughts_Memory_Death.xml} (69%) rename 1.5/Patches/{Core_ThoughtDefsLost.xml => Core_Thoughts_Memory_Lost.xml} (100%) create mode 100644 1.5/Patches/Core_Thoughts_Memory_Misc.xml create mode 100644 1.5/Patches/Core_Thoughts_Situation_Special.xml diff --git a/1.5/Patches/Core_ThoughtDefsDeath.xml b/1.5/Patches/Core_Thoughts_Memory_Death.xml similarity index 69% rename from 1.5/Patches/Core_ThoughtDefsDeath.xml rename to 1.5/Patches/Core_Thoughts_Memory_Death.xml index 3071e66..256a4b0 100644 --- a/1.5/Patches/Core_ThoughtDefsDeath.xml +++ b/1.5/Patches/Core_Thoughts_Memory_Death.xml @@ -24,9 +24,9 @@ - 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"]/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"] + Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied"]
  • SocialAffection_Psychopath
  • @@ -35,7 +35,7 @@
    - 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"]/nullifyingPrecepts
  • SocialAffection_Psychopath
  • SocialAffection_Dry
  • @@ -44,9 +44,9 @@
    - 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"]/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"] + Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied"]
  • SocialAffection_Psychopath
  • @@ -55,7 +55,7 @@
    - 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"]/nullifyingPrecepts
  • SocialAffection_Psychopath
  • SocialAffection_OnlyFamily
  • diff --git a/1.5/Patches/Core_ThoughtDefsLost.xml b/1.5/Patches/Core_Thoughts_Memory_Lost.xml similarity index 100% rename from 1.5/Patches/Core_ThoughtDefsLost.xml rename to 1.5/Patches/Core_Thoughts_Memory_Lost.xml diff --git a/1.5/Patches/Core_Thoughts_Memory_Misc.xml b/1.5/Patches/Core_Thoughts_Memory_Misc.xml new file mode 100644 index 0000000..42bda85 --- /dev/null +++ b/1.5/Patches/Core_Thoughts_Memory_Misc.xml @@ -0,0 +1,105 @@ + + + + + + Defs/ThoughtDef[defName="WitnessedDeathAlly"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="WitnessedDeathAlly"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="WitnessedDeathAlly"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="WitnessedDeathNonAlly"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="WitnessedDeathNonAlly"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="WitnessedDeathNonAlly"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="WitnessedDeathFamily"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="WitnessedDeathFamily"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="WitnessedDeathFamily"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="ColonistBanishedToDie"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="ColonistBanishedToDie"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="ColonistBanishedToDie"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="PrisonerBanishedToDie"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="PrisonerBanishedToDie"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="PrisonerBanishedToDie"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + +
    \ No newline at end of file diff --git a/1.5/Patches/Core_Thoughts_Situation_Special.xml b/1.5/Patches/Core_Thoughts_Situation_Special.xml new file mode 100644 index 0000000..0bb32a5 --- /dev/null +++ b/1.5/Patches/Core_Thoughts_Situation_Special.xml @@ -0,0 +1,25 @@ + + + + + + Defs/ThoughtDef[defName="ColonistLeftUnburied"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="ColonistLeftUnburied"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="ColonistLeftUnburied"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + +
    \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a37566..b273bfe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## Version 1.5.1.2 * Updated Social Affection precepts to cover RJW animal relationships +### by Karubon +* Updated Simplified Chinese translation + ## Version 1.5.1.1 * Changed size matters precepts for futanari: now they only check penis size and do not reverse it @@ -51,4 +54,4 @@ ## Version 1.0.0.1 * Fixed SexAbility errors if used without RJW Sexperience ### by XenoMorphie - * Fixed manifest link error \ No newline at end of file + * Fixed manifest link error From 2f38ae56ee7d29cd4144cec63145198b562f560b Mon Sep 17 00:00:00 2001 From: Myphicbowser Date: Sat, 14 Sep 2024 04:42:39 -0400 Subject: [PATCH 03/64] Vanilla-fies some names Changes some of the descriptions to be more Vanilla-ish --- 1.5/Defs/MemeDefs/Memes_Sexual.xml | 6 ++-- 1.5/Defs/PreceptDefs/Precepts_Bestiality.xml | 30 ++++++++--------- 1.5/Defs/PreceptDefs/Precepts_Incest.xml | 32 +++++++++---------- .../PreceptDefs/Precepts_Masturbation.xml | 2 +- 1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml | 14 ++++---- 1.5/Defs/PreceptDefs/Precepts_Pregnancy.xml | 4 +-- 1.5/Defs/PreceptDefs/Precepts_Rape.xml | 6 ++-- 1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml | 4 +-- 1.5/Defs/PreceptDefs/Precepts_Sex.xml | 10 +++--- .../PreceptDefs/Precepts_SexProselytizing.xml | 2 +- 1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml | 12 +++---- .../PreceptDefs/Precepts_SocialAffection.xml | 12 +++---- 1.5/Defs/PreceptDefs/Precepts_Submissive.xml | 8 ++--- 1.5/Defs/PreceptDefs/Precepts_Virginity.xml | 30 ++++++++--------- 14 files changed, 86 insertions(+), 86 deletions(-) diff --git a/1.5/Defs/MemeDefs/Memes_Sexual.xml b/1.5/Defs/MemeDefs/Memes_Sexual.xml index 44f828c..a442285 100644 --- a/1.5/Defs/MemeDefs/Memes_Sexual.xml +++ b/1.5/Defs/MemeDefs/Memes_Sexual.xml @@ -19,7 +19,7 @@ Zoophile - Animal fuckers. + To sexually commune with animals is to show a true connection to creation, and it should be done often. UI/Commands/Breeding_Pawn_off 3 @@ -87,7 +87,7 @@ Rapist - Rape is best. + To want to fuck is only natural, to deny anyone this right is unnatural and vile, and to take without consent is pure and right. UI/Memes/Rape 2 @@ -155,7 +155,7 @@ Lewd - Perverts. + Life is full of pleasures, but none are so pure, so natural, as that of sex. We must engage in sexual acts to truly be ourselves. UI/Memes/SexualDissolutely 3 diff --git a/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml b/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml index a6eebe4..9a1b0e8 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml @@ -90,7 +90,7 @@ Bestiality_Abhorrent Bestiality - Bestiality beings is deeply evil. + Bestiality is a deeply evil act and antithesis to humanity. Low 40 100 @@ -142,7 +142,7 @@ Bestiality_Horrible Bestiality - Bestiality is a horrible thing. + Bestiality is a terrible act, worthy of disgust. Low 30 200 @@ -194,7 +194,7 @@ Bestiality_Disapproved Bestiality - Bestiality is extremely distasteful. + Bestiality is extremely distasteful, worthy of shame. Low 20 300 @@ -260,7 +260,7 @@ Bestiality_OnlyVenerated Bestiality - One who sex with venerated animals should be honored and respected. But having sex with other animals will be denounced + One who has sex with venerated animals should be honored and respected. But having sex with other animals is an act worthy of derision. High 0 1000 @@ -279,7 +279,7 @@
  • RSI_SexWithNonVeneratedAnimal Bestiality_Nonvenerated_Know_Disapproved - Someone sex with any animal + Someone had sex with any animal true
  • @@ -290,7 +290,7 @@
  • RSI_SexWithVeneratedAnimal Bestiality_Know_Honorable - Someone sex with animal + Someone had sex with a venerated animal true
  • @@ -329,7 +329,7 @@ Bestiality_BondOnly Bestiality - Sex with Bonded animals should be honored and respected. But having sex with other animals will be denounced. + Sex with Bonded animals is to be honored and respected. But having sex with other animals is an act worthy of derision. High 0 1000 @@ -348,7 +348,7 @@
  • RSI_SexWithNonBondAnimal Bestiality_NonBonded_Know_Disapproved - Someone sex with any animal + Someone had sex with any animal true
  • @@ -359,7 +359,7 @@
  • RSI_SexWithBondedAnimal Bestiality_Bond_Approved_Know - Someone sex with non bonded animal + Someone had sex with a non bonded animal true
  • @@ -404,7 +404,7 @@ Bestiality_Honorable Bestiality - One who sex with animals should be encouraged. + One who has sex with animals should be encouraged, its only natural. High 0 1000 @@ -423,7 +423,7 @@
  • RSI_SexWithAnimal Bestiality_Know_Honorable - Someone sex with animal + Someone had sex with an animal true
  • @@ -434,7 +434,7 @@
  • RSI_SexWithVeneratedAnimal Bestiality_Know_Honorable - Someone sex with animal + Someone had sex with an animal true
  • @@ -566,7 +566,7 @@
  • - I had sex with animal. I hope nothing terrible happens to them. + I had sex with an animal. I hope nothing terrible happens to them. -5
  • @@ -606,7 +606,7 @@
  • - I had sex with any animal. I hope nothing terrible happens to them. + I had sex with a non-venerated animal. I hope nothing terrible happens to them. -5
  • @@ -716,7 +716,7 @@
  • - I had sex with animal. + I had sex with an animal. 4
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Incest.xml b/1.5/Defs/PreceptDefs/Precepts_Incest.xml index 54c079a..2232503 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Incest.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Incest.xml @@ -3,7 +3,7 @@ - Incestuos + Incestuous UI/Issues/Incest @@ -15,12 +15,12 @@ RSI_IncestuosMarriage - + RSI_NonIncestuosMarriage - +
  • @@ -56,12 +56,12 @@ RSI_IncestuosSex - + RSI_NonIncestuosSex - +
  • @@ -94,9 +94,9 @@ Incestuos_Free - Incestuos + Incestuous - Open minded. + Sex is a natural part of life, it matters little with who you have it. Medium 60 1000 @@ -130,7 +130,7 @@ Incestuos_Disapproved_CloseOnly Incestuos - Incest is disapproved socially. Relations farther than cousin are recognized as not incest. + Incest is disapproved socially, but relations farther than cousin are not recognized as incest. Low 50 1000 @@ -184,7 +184,7 @@ Incestuos_Disapproved - Incestuos + Incestuous Incest is disapproved socially. Low @@ -229,9 +229,9 @@ Incestuos_Forbidden - Incestuos + Incestuous - Incest is forbidden. + Incest is forbidden socially. Low 30 1000 @@ -286,9 +286,9 @@ Incestuos_IncestOnly - Incestuos + Incestuous - For preserving pure blood, only incest allowed. + For the purpose preserving pure blood, only incest is allowed. High 0 1000 @@ -357,7 +357,7 @@
  • - No one bless our marriage. + No one blessed our marriage. -10
  • @@ -378,7 +378,7 @@
  • - They are speaking behind our back. + They are speaking behind our backs. -5
  • @@ -508,7 +508,7 @@
  • - + -50
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml b/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml index 5951b94..bb51c17 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml @@ -18,7 +18,7 @@ Masturbation_Abhorrent Masturbation - Masturbation is unacceptable. + Masturbation is unacceptable morally. Medium 40 100 diff --git a/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml b/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml index 1a65c24..2ce8e0c 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml @@ -19,7 +19,7 @@ Necrophilia_Abhorrent Necrophilia - Necrophilia beings is deeply evil. + Necrophilia is a deeply evil act. Low 40 100 @@ -46,7 +46,7 @@ Necrophilia_Horrible Necrophilia - Necrophilia is a horrible thing. + Necrophilia is a horrible act. Low 30 200 @@ -118,7 +118,7 @@ Necrophilia_Approved Necrophilia - Fucking corpse is approval. + Fucking a corpse is fine, who is it hurting?. High 0 1000 @@ -160,7 +160,7 @@
  • - I had fucked corpse. + I have fucked a corpse. -15
  • @@ -201,7 +201,7 @@
  • - I had fucked corpse. + I have fucked a corpse. -10
  • @@ -242,7 +242,7 @@
  • - I had fucked corpse. + I have fucked a corpse. -5
  • @@ -281,7 +281,7 @@
  • - I had fucked corpse. + I have fucked a corpse. 4
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Pregnancy.xml b/1.5/Defs/PreceptDefs/Precepts_Pregnancy.xml index bdd6015..0f12b10 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Pregnancy.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Pregnancy.xml @@ -50,7 +50,7 @@ Pregnancy_NoRules Pregnancy - There are no thoughts about pregnancy. + Pregnancy is an unremarkable fact of life. Low 30 @@ -119,7 +119,7 @@
  • - I am soon making our colony stronger. + I am making our colony stronger by carrying our future. 5
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Rape.xml b/1.5/Defs/PreceptDefs/Precepts_Rape.xml index da2cfd4..2e61c60 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Rape.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Rape.xml @@ -88,7 +88,7 @@ Rape_Abhorrent Rape - Rape beings is deeply evil. + Rape is a deeply evil act. Low 40 1000 @@ -143,7 +143,7 @@ Rape_Horrible Rape - Raping other is a horrible thing. + Rape is a horrible act. Low 30 1000 @@ -236,7 +236,7 @@ Rape_Honorable Rape - Raping is one of proud behavior. + Raping is a proud behavior that shows strength of character. High 0 1000 diff --git a/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml b/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml index 636b5d1..4a15a17 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml @@ -4,7 +4,7 @@ GangbangCeremony - A ritualistic gangbang where a initiator rape a victim. The audience will rape as the initiator. + A ritualistic gangbang where the oragnizer rapes a victim. The audience will rape the victim as well. Ritual Medium UI/Issues/Gangbang @@ -28,7 +28,7 @@ GangbangCeremony_Consensual - A ritualistic gangbang where a organizer being fucked. The audience will fuck the organizer. + A ritualistic gangbang where the organizer is being fucked. The audience will fuck the organizer. Ritual Medium UI/Issues/Gangbang_Consensual diff --git a/1.5/Defs/PreceptDefs/Precepts_Sex.xml b/1.5/Defs/PreceptDefs/Precepts_Sex.xml index 8cf05e4..f4f9e0d 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Sex.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Sex.xml @@ -38,7 +38,7 @@ Sex_Free Sextype - Open minded. + Vaginal, Anal, Oral, doesn't matter so long as you have fun. Low 50 1000 @@ -49,7 +49,7 @@ Sex_VaginalOnly Sextype - Only vaginal sex is approval and others are crude. + Only vaginal sex is morally acceptable and other sexual acts are distasteful. Low 40 1000 @@ -106,7 +106,7 @@ Sex_AnalOnly Sextype - Only anal sex is approval and others are crude. + Only anal sex is morally acceptable and other sexual acts are distasteful. Medium 30 1000 @@ -163,7 +163,7 @@ Sex_OralOnly Sextype - Only oral sex is approval and others are crude. + Only oral sex is morally acceptable and other sexual acts are distasteful. Medium 20 1000 @@ -220,7 +220,7 @@ Sex_Promiscuous Sextype - Messy sex life is approved. + A messy sex life is approved. High 0 1000 diff --git a/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml b/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml index 81e0f58..42f6ce4 100644 --- a/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml +++ b/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml @@ -12,7 +12,7 @@ ProselyzingByOrgasm SexProselytizing - Giving orgasm converts partner towards this ideology. + Giving an orgasm converts partner towards this ideology. Medium 50 400 diff --git a/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml b/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml index c060ec4..000542d 100644 --- a/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml +++ b/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml @@ -14,7 +14,7 @@ GenitalSize_Big_Better GenitalSize The size matters. - + High 20 200 @@ -31,7 +31,7 @@ GenitalSize_NoRules GenitalSize - The size is unimportant. + It isn't the size of the ship, its the motion of the ocean. High 10 @@ -43,8 +43,8 @@ GenitalSize_Smaller_Better GenitalSize - The greeks actually believed, that a big genital is an animalistic feature. Important members are known for their small genitals. - + The ancients actually believed, that large genitals are an animalistic feature. Influential figures were known for their small genitals. + High 30 200 @@ -67,7 +67,7 @@
  • - I ... I am okay the way I am! + I have to be okay with the way I am, I know no one else is. -10
  • @@ -87,7 +87,7 @@
  • - Don't want to be the elephant in the room, but parts of me are. + My genitals are the ideal size and health, I am the perfect example. +10
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_SocialAffection.xml b/1.5/Defs/PreceptDefs/Precepts_SocialAffection.xml index fe10b90..92cb153 100644 --- a/1.5/Defs/PreceptDefs/Precepts_SocialAffection.xml +++ b/1.5/Defs/PreceptDefs/Precepts_SocialAffection.xml @@ -14,7 +14,7 @@ SocialAffection_Normal SocialAffection - Just normal. + To be social is to be human, and that is just fine. Low 50 1000 @@ -24,7 +24,7 @@ SocialAffection_Small SocialAffection - Care about only immediate family. + To be social is to be vulnerable, and only your family can see that. Medium 40 1000 @@ -34,7 +34,7 @@ SocialAffection_OnlyFamily SocialAffection - Don't care about the tragedy of a non-family member. + To cry for another's kin is morally weak and humiliating. Medium 30 1000 @@ -44,7 +44,7 @@ SocialAffection_Dry SocialAffection - Don't care about the tragedy of a family member. + To concern yourself with the tragedy of another member of your family is the sign of a weak character. High 20 1000 @@ -54,9 +54,9 @@ SocialAffection_Psychopath SocialAffection - Don't care about others. + Only one person matters in this universe, and it must be yourself. High 10 1000
    - \ No newline at end of file + diff --git a/1.5/Defs/PreceptDefs/Precepts_Submissive.xml b/1.5/Defs/PreceptDefs/Precepts_Submissive.xml index aa7ae4d..8dd198a 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Submissive.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Submissive.xml @@ -14,7 +14,7 @@ Submissive_None Submissive - Just normal. + No gender should have obedience demanded of them. Low 50 1000 @@ -24,7 +24,7 @@ Submissive_Male Submissive - Males are submissive. They will obey and accept even being raped. + Males are submissive. They will obey and accept any and all treatment women decide. High 40 1000 @@ -88,7 +88,7 @@ Submissive_Female Submissive - Females are submissive. They will obey and accept even being raped. + Females are submissive. They will obey and accept any and all treatment men decide. High 30 1000 @@ -163,7 +163,7 @@
  • - I had to accept. But i don't feel so good. + I had to accept. But I don't feel so good. -3
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Virginity.xml b/1.5/Defs/PreceptDefs/Precepts_Virginity.xml index a7a231a..e4a2d1e 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Virginity.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Virginity.xml @@ -15,7 +15,7 @@ RSI_VirginTaken - +
  • @@ -36,17 +36,17 @@ RSI_TookVirgin - + RSI_VirginStolen - + RSI_VirginTakenNotSpouse - + @@ -55,7 +55,7 @@ Virgin_UselessF Virginity_Female - Female's virginity is useless. + Female virginity is useless. Medium 50 1000 @@ -66,7 +66,7 @@ Virgin_UselessM Virginity_Male - Male's virginity is useless. + Male virginity is useless. Low 50 1000 @@ -77,7 +77,7 @@ Virgin_PreciousF Virginity_Female - Female's virginity is precious. + Female virginity is precious. Medium 40 1000 @@ -104,7 +104,7 @@ Virgin_PreciousM Virginity_Male - Male's virginity is precious. + Male virginity is precious. Medium 40 1000 @@ -131,7 +131,7 @@ Virgin_OnlyForSpouseF Virginity_Female - Losing virginity before marriage is evil. + Losing your virginity before marriage is evil and makes the soild female lesser. Medium 40 1000 @@ -172,7 +172,7 @@ Virgin_OnlyForSpouseM Virginity_Male - Losing virginity before marriage is evil. + Losing your virginity before marriage is evil and makes the soiled male lesser. Medium 40 1000 @@ -213,7 +213,7 @@ Virgin_ShamefulF Virginity_Female - Remaining as virgin is shameful thing and being laughed at. + Being a Virgin is a shameful state of being, worthy of derision. Medium 30 1000 @@ -234,7 +234,7 @@ Virgin_ShamefulM Virginity_Male - Remaining as virgin is shameful thing and being laughed at. + Being a Virgin is a shameful state of being, worthy of derision. Medium 30 1000 @@ -276,17 +276,17 @@
  • - I am no longer virgin. + I am no longer a virgin. -5
  • - I am no longer virgin. + I am no longer a virgin. -3
  • - I am no longer virgin. + I am no longer a virgin. -1
  • From 483cb3453cb10b39b39fa4249ad341edc831eb48 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 14 Sep 2024 15:39:19 +0500 Subject: [PATCH 04/64] Updated CHANGELOG.md --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b273bfe..de7da6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,8 @@ * Updated Social Affection precepts to cover RJW animal relationships ### by Karubon * Updated Simplified Chinese translation - +### by Myphicbowser +* Changed some of the descriptions to be more Vanilla-ish ## Version 1.5.1.1 * Changed size matters precepts for futanari: now they only check penis size and do not reverse it From 90462f7613bed5cb064e13eb06b82c7118656ddd Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 14 Sep 2024 17:34:45 +0500 Subject: [PATCH 05/64] ci: mark dev builds --- .gitlab-ci.yml | 2 +- Source/IdeologyAddon/IdeologyAddon.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 98b247f..124ff7f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -47,7 +47,7 @@ build: script: - 'cd $SOURCE_CODE_PATH' - 'dotnet restore --packages ../$NUGET_PACKAGES_DIRECTORY' - - 'dotnet build -c Release --no-restore' + - 'dotnet build -c Release --no-restore --version-suffix $CI_COMMIT_BRANCH' - 'cd $CI_PROJECT_DIR/About' - 'mv -f RealAbout.xml About.xml' artifacts: diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index afdf4d0..6c486df 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -3,7 +3,7 @@ Debug 1.5 1.2 - $(TargetGameVersion).$(InternalModVersion) + $(TargetGameVersion).$(InternalModVersion) {B4481C38-31B1-422D-B5AA-0059FE7CCA1C} Library RJWSexperience.Ideology From 9f5d76a768646cafd294b1e385f6fd2b507c0223 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 14 Sep 2024 17:35:31 +0500 Subject: [PATCH 06/64] Revert defName change --- 1.5/Defs/PreceptDefs/Precepts_Incest.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/1.5/Defs/PreceptDefs/Precepts_Incest.xml b/1.5/Defs/PreceptDefs/Precepts_Incest.xml index 2232503..eb30c83 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Incest.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Incest.xml @@ -3,7 +3,7 @@ - Incestuous + Incestuos UI/Issues/Incest @@ -94,7 +94,7 @@ Incestuos_Free - Incestuous + Incestuos Sex is a natural part of life, it matters little with who you have it. Medium @@ -184,7 +184,7 @@ Incestuos_Disapproved - Incestuous + Incestuos Incest is disapproved socially. Low @@ -229,7 +229,7 @@ Incestuos_Forbidden - Incestuous + Incestuos Incest is forbidden socially. Low @@ -286,7 +286,7 @@ Incestuos_IncestOnly - Incestuous + Incestuos For the purpose preserving pure blood, only incest is allowed. High From 8c17fbcb45d8c399afdcd77333272bfa8f712142 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Fri, 27 Sep 2024 12:53:46 +0500 Subject: [PATCH 07/64] Fixed manifest version error in dev builds --- .gitlab-ci.yml | 1 + Source/IdeologyAddon/IdeologyAddon.csproj | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 124ff7f..e1b3eaf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -63,6 +63,7 @@ build: release_dev: stage: deploy + needs: [build] rules: - if: $CI_COMMIT_TAG when: never # Do not run this job when a tag is created manually diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index 6c486df..cd0fadb 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -64,6 +64,6 @@ - + - \ No newline at end of file + From 72306b1989df18338247f30f489ea98b8d40e80a Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 29 Sep 2024 16:31:03 +0500 Subject: [PATCH 08/64] Marked SCE incompatible --- About/RealAbout.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/About/RealAbout.xml b/About/RealAbout.xml index 7f9c70f..20be72f 100644 --- a/About/RealAbout.xml +++ b/About/RealAbout.xml @@ -30,6 +30,9 @@
  • brrainz.harmony
  • rim.job.world
  • + +
  • RJW.SexCultEssentials
  • +
    rjw.sexperience.ideology https://gitgud.io/amevarashi/rjw-sexperience-ideology - \ No newline at end of file +Vegapnk Pregnancy, Sex Proselyzing and Size Matters precepts]]> + From 1fc246ca4a3ed347dec812cfd87b31f52d7fa77b Mon Sep 17 00:00:00 2001 From: AblativeAbsolute <36152-AblativeAbsolute@users.noreply.gitgud.io> Date: Mon, 23 Dec 2024 18:43:43 +0000 Subject: [PATCH 09/64] Added new icons for Size Matters and Sex Proselytizing Size Matters is based on vanilla assets Sex Proselytizing is taken from https://www.vecteezy.com/vector-art/14208947-measuring-tape-cartoon-icon (marked as "No Attribution Required") --- .../PreceptDefs/Precepts_SexProselytizing.xml | 2 +- 1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml | 2 +- .../PreceptDefs/Precepts_SexProselytizing.xml | 2 +- 1.4/Defs/PreceptDefs/Precepts_SizeMatters.xml | 2 +- .../PreceptDefs/Precepts_SexProselytizing.xml | 2 +- 1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml | 2 +- Textures/UI/Issues/GenitalSize.png | Bin 0 -> 10816 bytes Textures/UI/Issues/SexProselytizer.png | Bin 0 -> 4565 bytes 8 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 Textures/UI/Issues/GenitalSize.png create mode 100644 Textures/UI/Issues/SexProselytizer.png diff --git a/1.3/Defs/PreceptDefs/Precepts_SexProselytizing.xml b/1.3/Defs/PreceptDefs/Precepts_SexProselytizing.xml index 81e0f58..6cac8d2 100644 --- a/1.3/Defs/PreceptDefs/Precepts_SexProselytizing.xml +++ b/1.3/Defs/PreceptDefs/Precepts_SexProselytizing.xml @@ -5,7 +5,7 @@ SexProselytizing - UI/Issues/Submissive + UI/Issues/SexProselytizer diff --git a/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml b/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml index c060ec4..9f0a717 100644 --- a/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml +++ b/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml @@ -5,7 +5,7 @@ GenitalSize - UI/Memes/SexualDissolutely + UI/Issues/GenitalSize diff --git a/1.4/Defs/PreceptDefs/Precepts_SexProselytizing.xml b/1.4/Defs/PreceptDefs/Precepts_SexProselytizing.xml index 81e0f58..6cac8d2 100644 --- a/1.4/Defs/PreceptDefs/Precepts_SexProselytizing.xml +++ b/1.4/Defs/PreceptDefs/Precepts_SexProselytizing.xml @@ -5,7 +5,7 @@ SexProselytizing - UI/Issues/Submissive + UI/Issues/SexProselytizer diff --git a/1.4/Defs/PreceptDefs/Precepts_SizeMatters.xml b/1.4/Defs/PreceptDefs/Precepts_SizeMatters.xml index c060ec4..9f0a717 100644 --- a/1.4/Defs/PreceptDefs/Precepts_SizeMatters.xml +++ b/1.4/Defs/PreceptDefs/Precepts_SizeMatters.xml @@ -5,7 +5,7 @@ GenitalSize - UI/Memes/SexualDissolutely + UI/Issues/GenitalSize diff --git a/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml b/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml index 42f6ce4..dca02aa 100644 --- a/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml +++ b/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml @@ -5,7 +5,7 @@ SexProselytizing - UI/Issues/Submissive + UI/Issues/SexProselytizer diff --git a/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml b/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml index 000542d..84b2891 100644 --- a/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml +++ b/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml @@ -5,7 +5,7 @@ GenitalSize - UI/Memes/SexualDissolutely + UI/Issues/GenitalSize diff --git a/Textures/UI/Issues/GenitalSize.png b/Textures/UI/Issues/GenitalSize.png new file mode 100644 index 0000000000000000000000000000000000000000..f600722d22789341bd0e5549cab81c947dfdd0fb GIT binary patch literal 10816 zcmV-GD!qr#8htU;qFB06+}j?A!%Zo7uMo@WvAoNN|S)r;w0*F#@&!xVyW%d)@U- z-Gz2Kb;qf@ySux$<39Us(l1>pBc(1=*7~hFlDl*6x#x!7c$1KnWF#jADMcF6QzRvl ziIPMnilZ+~g!rUkT_j?ypmC*dsqq@U>+ z?WEN-o5oUaYC><({bZvU(vy;;HUL_ZUJA|kX%Fd7h_9fSYX3BxN-$Drj$M)Yc$ zjN$DwP~4*?CiTn0w0_x`UXYDx1F|R^QwEqZrC&`<>{}DX-7+zU!JKBm3W9`^l;=s;w7xq=Sab&s+$7kl^$jm$(n4XKx zrA{m!k%P(ovoW}BDw@3?kH_u`K}tdZg2S~4PYi}3T#c|m4PyACL~=$zex@}vfI z6iO;mh;CGizghgcv_n!u0<~I#h$t0WePqH?F6Q_1bMZ45{NPjvHjHy%UV(tJt`c%}!t8MdV(1(fv4M%PBE zc;hJ}va^(sX%vu3q}*yqNj2n<%g?A3v#A|DOvx1F*I?3ryR*-vorGkQ8lS(GjBVvk z{I<-4!_(YYJk*Zj&Sr3tuB?t`lyu3$?0!}(8^J14?8Jd7ZX9Iw*ve`$YoHYcZBp^! ztBJ_>gdr+I_iug00{W8fqgY>+_^&?uhZACrVJK*wiJzBv@a|32am+C&5BUJ4~GsjkP~K}GEd(J=<@_ZIxJ$b*V* z;sbi!Fk?KcL@Bqi1p@_aDzxJuL%wse3p03H>D0)KJVyXDk!qeed{(AQZ7CHKOAJpw*pjAP-YFviSu;cIj^A&VP_0 zrKbr&IyuJh*|U+0ziEsO+lvGop6bNRepk_c-7yDc-E%ONC3;qWaj|$r<&T$v7?1%1 zN8AiY{~Qjd95_594;$G#^lxECzB?455elf)Qt}4j7b>Cq{pJhOi+NEKOn1}Eh0+#-L5de2j>CpA zVgRay-~dbBG?v-Rz3^o$yEFQUi+)wJ6D!0Z0UO6VadcKL*06%M|0Ee%)(DtV0{p|U zoF1o8(vjkP8@CBM?m1DBN*EJ@5T6(XRY0JB;GWqzq842~&)|ad zi|Fsbs17;Y287cg;C8_IzYFsR*-&_yp7GQBi4X2IW)`=kSq#MTQI#_Wo~Af->fIy* zW+4=bDS^=H)xPzaL$^`L`Sb^A^m}Zq5}&+g#In&23~q11LwAQFCMf`cS|toY8Yoq# zhZx7Hklv?E(vU(72jYw>Oz33s2H>OT?RfnO2R4e;z}FLOnQ-c4u%0(~MV&9zjNbxY z0ErK#jf88LHwXe2^8REW2Tl8@^Z^AV_tH`Cf6+)t zmW$o#nOv4|tYH=D^r;PZ-6UZ3NOAH1!L|tkZ{J)DgdIcLn9=ToOtgGA4GmvQ#pkb> z@Y!o7eE32NK6^0<^%u1t6Qm0OWWV-`{R8H%oRdj?c`;5A$o| zI76{?q#XsV((&knaY)PvfiX24pb4G9HywFhppfH5ibbs75VYARfCX z8Xvx7LYoiL(1QUP(T)S1t~OQ$|6tgzlOWiza*V*Los0QHthn#a7^Gze`ES>+koMoU zgsguHKvfI_hZnitGwU}D!gup(V|%F^MZE+xdMg1<-ZF9uW`kXDU`8JYSnjJ60C8Ke zVRxyM@6Ulg%~Ft+rsYsXf6lM@lS*rVO)Vk}!AMF9gn{oPB3=iJ*?`9w(2t)_M#oQ5 zF{CwzGTkfB;SO==!+;FDHiN-yc5G)QI6Bjfj$b4pDcu0Rki~bR>r8r5R6hXKw3iM} z&cm@;`S^Ao1HlThu`rLX=W}A~1Shz-=P2h?5XuE?E^?q>(@dD+

    LuBg7!_b-gp` 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 b+2u0xI4Q%Q95?)%t^qcd4i?YMd}#j%)-xrT literal 0 HcmV?d00001 From 95bb8e4370aae997130723aa461111daf4388c33 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Tue, 7 Jan 2025 09:10:34 +0500 Subject: [PATCH 10/64] Fixed null errors with RJW 5.6.0.6 --- About/RealAbout.xml | 2 +- CHANGELOG.md | 3 +++ Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs | 4 ++-- Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs | 2 +- Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/About/RealAbout.xml b/About/RealAbout.xml index 20be72f..ca68011 100644 --- a/About/RealAbout.xml +++ b/About/RealAbout.xml @@ -48,4 +48,4 @@ moreorganstodump Original Author c0ffee RJW 4.9.0 update Hawkeye32 Bound Only bestiality precept Vegapnk Pregnancy, Sex Proselyzing and Size Matters precepts]]> - + \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index de7da6b..775d11c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,12 @@ ## Version 1.5.1.2 * Updated Social Affection precepts to cover RJW animal relationships +* RJW 5.6.0.6 ### by Karubon * Updated Simplified Chinese translation ### by Myphicbowser * Changed some of the descriptions to be more Vanilla-ish +### by AblativeAbsolute +* Updated Size Matters and Sex Proselytizing icons ## Version 1.5.1.1 * Changed size matters precepts for futanari: now they only check penis size and do not reverse it diff --git a/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs index 9e9a808..10975ae 100644 --- a/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs +++ b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs @@ -197,7 +197,7 @@ namespace RJWSexperience.Ideology.Patches Ideo ideo = pawn.Ideo; if (ideo?.HasMeme(RsiDefOf.Meme.Zoophile) == true) { - SaveStorage.DataStore.GetPawnData(pawn).CanDesignateBreeding = true; + pawn.GetRJWPawnData().CanDesignateBreeding = true; __result = true; } } @@ -211,7 +211,7 @@ namespace RJWSexperience.Ideology.Patches { if (pawn.IsSubmissive()) { - SaveStorage.DataStore.GetPawnData(pawn).CanDesignateComfort = true; + pawn.GetRJWPawnData().CanDesignateComfort = true; __result = true; } } diff --git a/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs b/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs index 3ef5e10..01dc427 100644 --- a/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs +++ b/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs @@ -192,7 +192,7 @@ namespace RJWSexperience.Ideology { if (xxx.is_human(pawn)) { - CompRJW comp = CompRJW.Comp(pawn); + CompRJW comp = pawn.GetCompRJW(); if (comp != null) { comp.drawNude = false; diff --git a/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs b/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs index 48df03e..6c3220d 100644 --- a/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs +++ b/Source/IdeologyAddon/Rituals/JobGiver_GangbangConsensual.cs @@ -136,7 +136,7 @@ namespace RJWSexperience.Ideology { if (xxx.is_human(pawn)) { - CompRJW comp = CompRJW.Comp(pawn); + CompRJW comp = pawn.GetCompRJW(); if (comp != null) { comp.drawNude = false; From 5eb47950a79f9f39842ddb45655b1c17cc5711dc Mon Sep 17 00:00:00 2001 From: amevarashi Date: Tue, 7 Jan 2025 10:09:45 +0500 Subject: [PATCH 11/64] 1.5.1.2 --- 1.5/Assemblies/RJWSexperience.Ideology.dll | Bin 69120 -> 68608 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/1.5/Assemblies/RJWSexperience.Ideology.dll b/1.5/Assemblies/RJWSexperience.Ideology.dll index f4c67169faed813c9ae02f1c8db7f6e0cf635ac2..ccf3820714bfb5a184f2e2c501f8f2d5a6fe3f1d 100644 GIT binary patch delta 19643 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%0A*mSuplU3Z%4!a$6iap}vSguXb&3;>Dy)Qk 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 delta 19535 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 From 94e22c99deaeebad0d2d8b6a80ab03f7bad54725 Mon Sep 17 00:00:00 2001 From: ElToro Date: Tue, 14 Jan 2025 20:51:03 +0300 Subject: [PATCH 12/64] New Pregnancy precept, increased vaginal chances with positive pregnancy precept, Sex Tame and Training, new icons. --- .../Interactions_SexTameFemale.xml | 35 +++++ .../Interactions_SexTameMale.xml | 39 +++++ 1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml | 55 +++++++ 1.5/Defs/PreceptDefs/Precepts_BabyFaction.xml | 2 +- 1.5/Defs/PreceptDefs/Precepts_Pregnancy.xml | 2 +- .../PreceptDefs/Precepts_PregnancyAnimal.xml | 146 ++++++++++++++++++ 1.5/Defs/PreceptDefs/Precepts_Tame.xml | 20 +++ Source/IdeologyAddon/Harmony.cs | 19 ++- Source/IdeologyAddon/IdeoUtility.cs | 37 ++++- .../ThoughtWorker_Precept_NonPregnant.cs | 2 +- ...ThoughtWorker_Precept_NonPregnantAnimal.cs | 20 +++ ...Worker_Precept_NonPregnantAnimal_Social.cs | 23 +++ ...houghtWorker_Precept_NonPregnant_Social.cs | 3 +- .../ThoughtWorker_Precept_Pregnant.cs | 2 +- .../ThoughtWorker_Precept_PregnantAnimal.cs | 20 +++ ...ghtWorker_Precept_PregnantAnimal_Social.cs | 23 +++ .../ThoughtWorker_Precept_Pregnant_Social.cs | 3 +- Source/IdeologyAddon/RsiDefOf.cs | 30 +++- .../SexTame/BestialityUtility.cs | 20 +++ .../SexTame/InteractAnimalPatches.cs | 96 ++++++++++++ .../SexTame/JobDriver_LewdTameFeed.cs | 57 +++++++ .../SexTame/JobDriver_LewdTameSex.cs | 63 ++++++++ .../SexTame/JobDriver_LewdTrainBase.cs | 78 ++++++++++ .../SexTame/JobDriver_LewdTrainFeed.cs | 59 +++++++ .../SexTame/JobDriver_LewdTrainReciever.cs | 48 ++++++ .../SexTame/JobDriver_LewdTrainSex.cs | 34 ++++ .../FocusedVaginalPartKindUsageRule.cs | 52 +++++++ .../IncreasedVaginalPartKindUsageRule.cs | 47 ++++++ Textures/UI/Issues/BabyHome.png | Bin 0 -> 9963 bytes Textures/UI/Issues/Birth.png | Bin 402 -> 0 bytes Textures/UI/Issues/Pregnancy.png | Bin 0 -> 16689 bytes Textures/UI/Issues/PregnancyAnimal.png | Bin 0 -> 15339 bytes 32 files changed, 1020 insertions(+), 15 deletions(-) create mode 100644 1.5/Defs/InteractionDefs/Interactions_SexTameFemale.xml create mode 100644 1.5/Defs/InteractionDefs/Interactions_SexTameMale.xml create mode 100644 1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml create mode 100644 1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml create mode 100644 1.5/Defs/PreceptDefs/Precepts_Tame.xml create mode 100644 Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnantAnimal.cs create mode 100644 Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnantAnimal_Social.cs create mode 100644 Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_PregnantAnimal.cs create mode 100644 Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_PregnantAnimal_Social.cs create mode 100644 Source/IdeologyAddon/SexTame/BestialityUtility.cs create mode 100644 Source/IdeologyAddon/SexTame/InteractAnimalPatches.cs create mode 100644 Source/IdeologyAddon/SexTame/JobDriver_LewdTameFeed.cs create mode 100644 Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs create mode 100644 Source/IdeologyAddon/SexTame/JobDriver_LewdTrainBase.cs create mode 100644 Source/IdeologyAddon/SexTame/JobDriver_LewdTrainFeed.cs create mode 100644 Source/IdeologyAddon/SexTame/JobDriver_LewdTrainReciever.cs create mode 100644 Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs create mode 100644 Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs create mode 100644 Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs create mode 100644 Textures/UI/Issues/BabyHome.png delete mode 100644 Textures/UI/Issues/Birth.png create mode 100644 Textures/UI/Issues/Pregnancy.png create mode 100644 Textures/UI/Issues/PregnancyAnimal.png diff --git a/1.5/Defs/InteractionDefs/Interactions_SexTameFemale.xml b/1.5/Defs/InteractionDefs/Interactions_SexTameFemale.xml new file mode 100644 index 0000000..b831bb4 --- /dev/null +++ b/1.5/Defs/InteractionDefs/Interactions_SexTameFemale.xml @@ -0,0 +1,35 @@ + + + + + + AnimalSexTameChatFemale + + Things/Mote/SpeechSymbols/AnimalChat + Animals + 40 + + +

  • r_logentry->[INITIATOR_nameDef] [zooact] [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] tried to make [RECIPIENT_nameDef] sit still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] attempted to hold [RECIPIENT_nameDef] still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] [genact] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] allowed [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] encouraged [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • + +
  • genact->gently touched
  • +
  • genact->gently caressed
  • +
  • genact->tried to kiss
  • +
  • genact->tried to lick
  • +
  • genplan->trying to lick
  • +
  • genplan->trying to touch
  • +
  • genplan->trying to caresse
  • +
  • zooplan->to lick
  • +
  • zooplan->to taste
  • +
  • zooplan->to sniff
  • +
  • zooact->showed [INITIATOR_possessive] genitals to
  • +
  • zooact->presented [INITIATOR_possessive] genitals to
  • + + + + \ No newline at end of file diff --git a/1.5/Defs/InteractionDefs/Interactions_SexTameMale.xml b/1.5/Defs/InteractionDefs/Interactions_SexTameMale.xml new file mode 100644 index 0000000..a80068d --- /dev/null +++ b/1.5/Defs/InteractionDefs/Interactions_SexTameMale.xml @@ -0,0 +1,39 @@ + + + + + + AnimalSexTameChatMale + + Things/Mote/SpeechSymbols/AnimalChat + Animals + 40 + + +
  • r_logentry->[INITIATOR_nameDef] [zooact] [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] tried to make [RECIPIENT_nameDef] sit still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] attempted to hold [RECIPIENT_nameDef] still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] [genact] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] allowed [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] encouraged [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • + +
  • genact->gently touched
  • +
  • genact->gently caressed
  • +
  • genact->firmly stroked
  • +
  • genact->gently stroked
  • +
  • genact->tried to kiss
  • +
  • genact->tried to lick
  • +
  • genact->tried to taste
  • +
  • zooplan->to lick
  • +
  • zooplan->to taste
  • +
  • zooplan->to sniff
  • +
  • genplan->trying to lick
  • +
  • genplan->trying to touch
  • +
  • genplan->trying to stroke
  • +
  • genplan->trying to taste
  • +
  • zooact->showed [INITIATOR_possessive] genitals to
  • +
  • zooact->presented [INITIATOR_possessive] genitals to
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml b/1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml new file mode 100644 index 0000000..380b29f --- /dev/null +++ b/1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml @@ -0,0 +1,55 @@ + + + + + + + lovin'. + false + + + + + + + taming TargetA. + + + + TameLewd_Feed + RJWSexperience.Ideology.JobDriver_LewdTameFeed + + + + TameLewd_Lovin + Sexually taming TargetA. + RJWSexperience.Ideology.JobDriver_LewdTameSex + + + + + training TargetA. + + + + TrainLewd_Feed + RJWSexperience.Ideology.JobDriver_LewdTrainFeed + + + + TrainLewd_Lovin + Sexually training TargetA. + RJWSexperience.Ideology.JobDriver_LewdTrainSex + + + + + + TrainLewd_Reciever + RJWSexperience.Ideology.JobDriver_LewdTrainReciever + Being sexually conditioned by TargetA. + false + false + + + \ No newline at end of file diff --git a/1.5/Defs/PreceptDefs/Precepts_BabyFaction.xml b/1.5/Defs/PreceptDefs/Precepts_BabyFaction.xml index e26356c..035d361 100644 --- a/1.5/Defs/PreceptDefs/Precepts_BabyFaction.xml +++ b/1.5/Defs/PreceptDefs/Precepts_BabyFaction.xml @@ -5,7 +5,7 @@ BabyFaction - UI/Issues/Birth + UI/Issues/BabyHome diff --git a/1.5/Defs/PreceptDefs/Precepts_Pregnancy.xml b/1.5/Defs/PreceptDefs/Precepts_Pregnancy.xml index 0f12b10..66dacee 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Pregnancy.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Pregnancy.xml @@ -8,7 +8,7 @@ Pregnancy - UI/Issues/Birth + UI/Issues/Pregnancy diff --git a/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml b/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml new file mode 100644 index 0000000..c172648 --- /dev/null +++ b/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml @@ -0,0 +1,146 @@ + + + + + + + + + PregnancyAnimal + + UI/Issues/PregnancyAnimal + + + + + PregnancyAnimal_NoRules + PregnancyAnimal + + Carrying the offspring of an animal is nothing more than a natural, unremarkable part of life. + Low + 30 + + + + + + PregnancyAnimal_Required + PregnancyAnimal + High + 40 + + Women must bear animal offspring — those who do not are seen as unworthy. Carrying such offspring is a symbol of fertility and primal purpose. + +
  • + Pregnancy_Respected_PregnantAnimal +
  • +
  • + Pregnancy_Respected_PregnantAnimal_Social +
  • +
  • + Pregnancy_Horrible_NonPregnantAnimal +
  • +
  • + Pregnancy_Horrible_NonPregnantAnimal_Social +
  • +
    +
    + + + PregnancyAnimal_Horrible + PregnancyAnimal + Low + 50 + + Carrying animal offspring is a taint upon purity. Take care and keep your body free from corruption. + +
  • + Pregnancy_Horrible_PregnantAnimal +
  • +
  • + Pregnancy_Horrible_PregnantAnimal_Social +
  • +
    +
    + + + + Pregnancy_Respected_PregnantAnimal + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_PregnantAnimal + Thought_Situational + +
  • + + I am pregnant with an animal's offspring. This makes me a symbol of fertility, fulfilling my true purpose in society. + 10 +
  • +
    +
    + + + Pregnancy_Respected_PregnantAnimal_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_PregnantAnimal_Social + Thought_SituationalSocial + +
  • + + 20 +
  • +
    +
    + + + Pregnancy_Horrible_PregnantAnimal_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_PregnantAnimal_Social + Thought_SituationalSocial + +
  • + + -20 +
  • +
    +
    + + + Pregnancy_Horrible_PregnantAnimal + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_PregnantAnimal + Thought_Situational + +
  • + + How did I end up like this? I never wanted to be pregnant by an animal! + -10 +
  • +
    +
    + + + + Pregnancy_Horrible_NonPregnantAnimal + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_NonPregnantAnimal + Thought_Situational + true + Female + +
  • + + I want to be impregnated by an animal. + -6 +
  • +
    +
    + + + Pregnancy_Horrible_NonPregnantAnimal_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_NonPregnantAnimal_Social + Thought_SituationalSocial + Female + +
  • + + -5 +
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.5/Defs/PreceptDefs/Precepts_Tame.xml b/1.5/Defs/PreceptDefs/Precepts_Tame.xml new file mode 100644 index 0000000..e7d5e8b --- /dev/null +++ b/1.5/Defs/PreceptDefs/Precepts_Tame.xml @@ -0,0 +1,20 @@ + + + + AnimalConnection_Lovin + AnimalConnection + + We bond with our animals through physical intercourse. + High + +
  • Zoophile
  • +
    + +
  • Zoophile
  • +
    + + 1.2 + 1.2 + +
    +
    \ No newline at end of file diff --git a/Source/IdeologyAddon/Harmony.cs b/Source/IdeologyAddon/Harmony.cs index d756855..de3237d 100644 --- a/Source/IdeologyAddon/Harmony.cs +++ b/Source/IdeologyAddon/Harmony.cs @@ -1,4 +1,10 @@ -using System.Reflection; +using rjw.Modules.Interactions.Internals.Implementation; +using rjw.Modules.Interactions.Objects; +using rjw.Modules.Interactions.Rules.PartKindUsageRules; +using rjw.Modules.Shared.Logs; +using rjw; +using System.Collections.Generic; +using System.Reflection; using Verse; namespace RJWSexperience.Ideology @@ -10,5 +16,14 @@ namespace RJWSexperience.Ideology { new HarmonyLib.Harmony("RJW_Sexperience.Ideology").PatchAll(Assembly.GetExecutingAssembly()); } - } + private static void InjectIntoRjwInteractionServices() + { + ILog log = LogManager.GetLogger("StaticConstructorOnStartup"); + + List partKindUsageRules = Unprivater.GetProtectedValue>("_partKindUsageRules", typeof(PartPreferenceDetectorService)); + partKindUsageRules.Add(new IncreasedVaginal()); + partKindUsageRules.Add(new FocusedVaginal()); + log.Message("Added 2 rules to PartPreferenceDetectorService._partKindUsageRules"); + } + } } diff --git a/Source/IdeologyAddon/IdeoUtility.cs b/Source/IdeologyAddon/IdeoUtility.cs index c103729..a744c12 100644 --- a/Source/IdeologyAddon/IdeoUtility.cs +++ b/Source/IdeologyAddon/IdeoUtility.cs @@ -112,6 +112,39 @@ namespace RJWSexperience.Ideology } return pregnancy?.Visible == true; - } - } + } + public static bool IsVisiblyPregnantAnimal(Pawn pawn) + { + // Check for RJW pregnancies first + Hediff pregnancy = PregnancyHelper.GetPregnancy(pawn); + + // If no RJW pregnancy, check for Biotech pregnancy + if (pregnancy == null) + { + pregnancy = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.PregnantHuman); + } + + // Check if the pregnancy hediff has a father field or equivalent logic + if (pregnancy is Hediff_BasePregnancy RJWPregnancy) + { + // RJW pregnancy + Pawn father = RJWPregnancy.father; + + if (father != null && father.def.defName != "Human") + { + return pregnancy.Visible == true; + } + } + else if (pregnancy is Hediff_Pregnant biotechPregnancy) + { + // Biotech pregnancy + Pawn father = biotechPregnancy.Father; + if (father != null && father.def.defName != "Human") + { + return pregnancy.Visible == true; + } + } + return false; + } + } } diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs index 124c0bf..2e6ef89 100644 --- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs @@ -14,7 +14,7 @@ namespace RJWSexperience.Ideology.PreceptWorkers /// protected override ThoughtState ShouldHaveThought(Pawn p) { - return p?.DevelopmentalStage == DevelopmentalStage.Adult && !IdeoUtility.IsVisiblyPregnant(p); + return p?.DevelopmentalStage == DevelopmentalStage.Adult && !IdeoUtility.IsVisiblyPregnant(p) && !IdeoUtility.IsVisiblyPregnantAnimal(p); } } } diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnantAnimal.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnantAnimal.cs new file mode 100644 index 0000000..4603d9b --- /dev/null +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnantAnimal.cs @@ -0,0 +1,20 @@ +using RimWorld; +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_NonPregnantAnimal : 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 p?.DevelopmentalStage == DevelopmentalStage.Adult && !IdeoUtility.IsVisiblyPregnantAnimal(p); + } + } +} diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnantAnimal_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnantAnimal_Social.cs new file mode 100644 index 0000000..be9e198 --- /dev/null +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnantAnimal_Social.cs @@ -0,0 +1,23 @@ +using RimWorld; +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_NonPregnantAnimal_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 otherPawn?.DevelopmentalStage == DevelopmentalStage.Adult && + p?.DevelopmentalStage == DevelopmentalStage.Adult && + !IdeoUtility.IsVisiblyPregnantAnimal(otherPawn); + } + } +} diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs index 465c4ce..2714922 100644 --- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs @@ -17,7 +17,8 @@ namespace RJWSexperience.Ideology.PreceptWorkers { return otherPawn?.DevelopmentalStage == DevelopmentalStage.Adult && p?.DevelopmentalStage == DevelopmentalStage.Adult && - !IdeoUtility.IsVisiblyPregnant(otherPawn); + !IdeoUtility.IsVisiblyPregnant(otherPawn) && + !IdeoUtility.IsVisiblyPregnantAnimal(otherPawn); } } } diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs index bc980c1..790169f 100644 --- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs @@ -14,7 +14,7 @@ namespace RJWSexperience.Ideology.PreceptWorkers /// protected override ThoughtState ShouldHaveThought(Pawn p) { - return p?.DevelopmentalStage == DevelopmentalStage.Adult && IdeoUtility.IsVisiblyPregnant(p); + return p?.DevelopmentalStage == DevelopmentalStage.Adult && IdeoUtility.IsVisiblyPregnant(p) && !IdeoUtility.IsVisiblyPregnantAnimal(p); } } } diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_PregnantAnimal.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_PregnantAnimal.cs new file mode 100644 index 0000000..99bbebb --- /dev/null +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_PregnantAnimal.cs @@ -0,0 +1,20 @@ +using RimWorld; +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_PregnantAnimal : 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 p?.DevelopmentalStage == DevelopmentalStage.Adult && IdeoUtility.IsVisiblyPregnantAnimal(p); + } + } +} diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_PregnantAnimal_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_PregnantAnimal_Social.cs new file mode 100644 index 0000000..9529e15 --- /dev/null +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_PregnantAnimal_Social.cs @@ -0,0 +1,23 @@ +using RimWorld; +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_PregnantAnimal_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 otherPawn?.DevelopmentalStage == DevelopmentalStage.Adult && + p?.DevelopmentalStage == DevelopmentalStage.Adult && + IdeoUtility.IsVisiblyPregnantAnimal(otherPawn); + } + } +} diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs index 3a57bc2..746ca7d 100644 --- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs @@ -17,7 +17,8 @@ namespace RJWSexperience.Ideology.PreceptWorkers { return otherPawn?.DevelopmentalStage == DevelopmentalStage.Adult && p?.DevelopmentalStage == DevelopmentalStage.Adult && - IdeoUtility.IsVisiblyPregnant(otherPawn); + IdeoUtility.IsVisiblyPregnant(otherPawn) && + !IdeoUtility.IsVisiblyPregnantAnimal(p); } } } diff --git a/Source/IdeologyAddon/RsiDefOf.cs b/Source/IdeologyAddon/RsiDefOf.cs index d5b0cfa..2445113 100644 --- a/Source/IdeologyAddon/RsiDefOf.cs +++ b/Source/IdeologyAddon/RsiDefOf.cs @@ -13,7 +13,12 @@ namespace RJWSexperience.Ideology public static readonly JobDef GettinGangbang; public static readonly JobDef DrugSex; public static readonly JobDef GettinDrugSex; - public static readonly JobDef DrugMasturbate; + public static readonly JobDef DrugMasturbate; + public static readonly JobDef TameLewd_Feed; + public static readonly JobDef TameLewd_Lovin; + public static readonly JobDef TrainLewd_Feed; + public static readonly JobDef TrainLewd_Lovin; + public static readonly JobDef TrainLewd_Reciever; } [DefOf] @@ -39,7 +44,16 @@ namespace RJWSexperience.Ideology public static readonly PreceptDef BabyFaction_AlwaysColony; public static readonly PreceptDef Submissive_Male; public static readonly PreceptDef Submissive_Female; - public static readonly PreceptDef ProselyzingByOrgasm; + public static readonly PreceptDef ProselyzingByOrgasm; + public static readonly PreceptDef Pregnancy_Holy; + public static readonly PreceptDef Pregnancy_Elevated; + public static readonly PreceptDef Pregnancy_Required; + public static readonly PreceptDef Pregnancy_Horrible; + public static readonly PreceptDef Pregnancy_NoRules; + public static readonly PreceptDef PregnancyAnimal_Required; + public static readonly PreceptDef PregnancyAnimal_Horrible; + public static readonly PreceptDef PregnancyAnimal_NoRules; + public static readonly PreceptDef AnimalConnection_Lovin; } [DefOf] @@ -54,9 +68,15 @@ namespace RJWSexperience.Ideology public static readonly HistoryEventDef RSI_VirginStolen; public static readonly HistoryEventDef RSI_TookVirgin; public static readonly HistoryEventDef RSI_Masturbated; - } - - [DefOf] + } + [DefOf] + public static class Interaction + { + public static readonly InteractionDef AnimalSexTameChatMale; + public static readonly InteractionDef AnimalSexTameChatFemale; + } + + [DefOf] public static class Hediff { [MayRequireBiotech] public static readonly HediffDef PregnantHuman; diff --git a/Source/IdeologyAddon/SexTame/BestialityUtility.cs b/Source/IdeologyAddon/SexTame/BestialityUtility.cs new file mode 100644 index 0000000..9446f96 --- /dev/null +++ b/Source/IdeologyAddon/SexTame/BestialityUtility.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.Linq; +using Verse; +using RimWorld; +using rjw; + +namespace RJWSexperience.Ideology +{ + public static class BestialityUtility + { + public static bool CanDoLewdAnimalWork(Pawn human, Pawn animal) + { + if (human.Ideo == null || !human.Ideo.HasPrecept(RsiDefOf.Precept.AnimalConnection_Lovin)) + { + return false; + } + return SexAppraiser.would_fuck_animal(human, animal) > 0; + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/InteractAnimalPatches.cs b/Source/IdeologyAddon/SexTame/InteractAnimalPatches.cs new file mode 100644 index 0000000..fbe7975 --- /dev/null +++ b/Source/IdeologyAddon/SexTame/InteractAnimalPatches.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Reflection.Emit; +using RimWorld; +using Verse; +using HarmonyLib; +using rjw; +using Verse.AI; + +namespace RJWSexperience.Ideology +{ + [HarmonyPatch] + static class WorkGiver_InteractAnimal_ReduceNutritionRequiredByIdeo + { + public static IEnumerable TargetMethods() + { + yield return AccessTools.Method(typeof(WorkGiver_InteractAnimal), "HasFoodToInteractAnimal"); + yield return AccessTools.Method(typeof(WorkGiver_InteractAnimal), "TakeFoodForAnimalInteractJob"); + yield return AccessTools.Method(typeof(WorkGiver_Tame), nameof(WorkGiver_Tame.JobOnThing)); + } + + public static IEnumerable Transpiler(IEnumerable instructions, MethodBase original) + { + MethodInfo requiredNutritionPerFeed = AccessTools.Method(typeof(JobDriver_InteractAnimal), + nameof(JobDriver_InteractAnimal.RequiredNutritionPerFeed)); + + Type thisType = typeof(WorkGiver_InteractAnimal_ReduceNutritionRequiredByIdeo); + + bool patched = false; + + foreach (var instruction in instructions) + { + yield return instruction; + + if (instruction.Calls(requiredNutritionPerFeed)) + { + yield return new CodeInstruction(OpCodes.Ldarg_1); + yield return new CodeInstruction(OpCodes.Ldarg_2); + yield return CodeInstruction.Call(thisType, nameof(IdeoFactor)); + yield return new CodeInstruction(OpCodes.Mul); + patched = true; + } + } + + if (!patched) + { + Log.Error($"SCE: Transpiler patch {thisType} failed to find a call to {requiredNutritionPerFeed.DeclaringType}:" + + $"{requiredNutritionPerFeed.Name} on {original.ReflectedType}:{original.Name}"); + } + } + + private static float IdeoFactor(Pawn tamer, Pawn tamee) + { + if (BestialityUtility.CanDoLewdAnimalWork(tamer, tamee)) + { + return 0.5f; + } + + return 1f; + } + } + + [HarmonyPatch(typeof(WorkGiver_Tame), nameof(WorkGiver_Tame.JobOnThing))] + static class WorkGiver_Tame_GiveLewdTameJobIfPossible + { + public static void Postfix(Job __result, Pawn pawn, Thing t) + { + if (__result?.def != JobDefOf.Tame) + { + return; + } + + if (BestialityUtility.CanDoLewdAnimalWork(pawn, (Pawn)t)) + { + __result.def = RsiDefOf.Job.TameLewd_Feed; + } + } + } + + [HarmonyPatch(typeof(WorkGiver_Train), nameof(WorkGiver_Train.JobOnThing))] + static class WorkGiver_Train_GiveLewdTrainJobIfPossible + { + public static void Postfix(Job __result, Pawn pawn, Thing t) + { + if (__result?.def != JobDefOf.Train) + { + return; + } + if (BestialityUtility.CanDoLewdAnimalWork(pawn, (Pawn)t)) + { + __result.def = RsiDefOf.Job.TrainLewd_Feed; + } + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTameFeed.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTameFeed.cs new file mode 100644 index 0000000..7044b59 --- /dev/null +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTameFeed.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using Verse; +using Verse.AI; +using RimWorld; +using rjw; + +namespace RJWSexperience.Ideology +{ + public class JobDriver_LewdTameFeed : JobDriver_Tame + { + protected override IEnumerable MakeNewToils() + { + SetFinalizerJob(cond => cond == JobCondition.Succeeded + ? JobMaker.MakeJob(RsiDefOf.Job.TameLewd_Lovin, Animal) + : null); + + bool skipping = false; + foreach (var toil in base.MakeNewToils()) + { + // Base has two sets of toils for feeding, which each begin with a toil named 'FeedToils'. + // Since we only want to feed once, we skip everything between the two. + if (toil.debugName == "FeedToils") + { + skipping = !skipping; + } + // Hold off on setting last interact time until sex is finished + if (skipping || toil.debugName == nameof(Toils_Interpersonal.SetLastInteractTime)) + { + continue; + } + + // Recruitment and roping work to be handled by sex job + if (toil.debugName == "TryRecruit") + { + break; + } + + // Replace talk to animal interaction with RJW's one + if (toil.debugName == "TalkToAnimal" && Rand.Chance(0.5f)) + { + toil.initAction = delegate + { + if (xxx.can_fuck(Animal)) + { + pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatMale); + } + else + { + pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatFemale); + } + }; + } + yield return toil; + } + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs new file mode 100644 index 0000000..aced7f4 --- /dev/null +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs @@ -0,0 +1,63 @@ +using System.Collections.Generic; +using Verse; +using RimWorld; +using rjw; +using Verse.AI; + +namespace RJWSexperience.Ideology +{ + public class JobDriver_LewdTameSex : LewdTrainBase + { + private Pawn originalPartner; + protected override IEnumerable MakeNewToils() + { + originalPartner = Partner; + if (SexAppraiser.would_fuck_animal(pawn, Partner) > 0f) + { + foreach (var baseToil in base.MakeNewToils()) + { + yield return baseToil; + } + } + + if (originalPartner != Partner) + { + // Pawn got interrupted by another partner, then the original partner finished before them. + yield break; + } + + yield return Toils_Interpersonal.SetLastInteractTime(iTarget); + + Toil tryRecruit = Toils_Interpersonal.TryRecruit(iTarget); + tryRecruit.FailOn(() => Map.designationManager.DesignationOn(Partner, DesignationDefOf.Tame) == null); + yield return tryRecruit; + + Toil addTakeToPenWork = ToilMaker.MakeToil(); + addTakeToPenWork.initAction = delegate + { + if (AnimalPenUtility.NeedsToBeManagedByRope(Partner) && Partner.Faction == Faction.OfPlayer && AnimalPenUtility.GetCurrentPenOf(Partner, allowUnenclosedPens: false) == null) + { + Job ropeJob = null; + RopingPriority ropingPriority = RopingPriority.Closest; + + CompAnimalPenMarker penMarker = AnimalPenUtility.GetPenAnimalShouldBeTakenTo(pawn, Partner, out _, forced: false, canInteractWhileSleeping: true, allowUnenclosedPens: true, ignoreSkillRequirements: true, ropingPriority); + if (penMarker != null) + { + ropeJob = WorkGiver_TakeToPen.MakeJob(pawn, Partner, penMarker, allowUnenclosedPens: true, ropingPriority, out _); + } + if (ropeJob != null) + { + pawn.jobs.StartJob(ropeJob, JobCondition.Succeeded); + } + else + { + Messages.Message("MessageTameNoSuitablePens".Translate(Partner.Named("ANIMAL")), Partner, MessageTypeDefOf.NeutralEvent); + } + } + }; + addTakeToPenWork.defaultCompleteMode = ToilCompleteMode.Instant; + yield return addTakeToPenWork; + + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainBase.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainBase.cs new file mode 100644 index 0000000..67f0ac8 --- /dev/null +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainBase.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Security.Cryptography; +using RimWorld; +using rjw; +using RJWSexperience.Ideology; +using Verse; +using Verse.AI; + +namespace RJWSexperience.Ideology +{ + public class LewdTrainBase : JobDriver_SexBaseInitiator + { + public override bool TryMakePreToilReservations(bool errorOnFailed) + { + return pawn.Reserve(Target, job, 1, 0, null, errorOnFailed); + } + + protected override IEnumerable MakeNewToils() + { + setup_ticks(); + var PartnerJob = RsiDefOf.Job.TrainLewd_Reciever; + + this.FailOnDespawnedOrNull(iTarget); + this.FailOn(() => !pawn.CanReserveAndReach(Partner, PathEndMode.OnCell, Danger.Deadly)); + this.FailOn(() => pawn.Drafted); + this.FailOn(() => Partner.IsFighting()); + + yield return Toils_Reserve.Reserve(iTarget, 1, 0); + yield return Toils_Goto.GotoThing(iTarget, PathEndMode.OnCell); + + var StartPartnerJob = new Toil(); + StartPartnerJob.defaultCompleteMode = ToilCompleteMode.Instant; + StartPartnerJob.socialMode = RandomSocialMode.Off; + StartPartnerJob.initAction = delegate + { + Partner.jobs.StartJob( + JobMaker.MakeJob(PartnerJob, pawn), + JobCondition.InterruptForced + ); + }; + yield return StartPartnerJob; + + var sexToil = new Toil(); + sexToil.defaultCompleteMode = ToilCompleteMode.Never; + sexToil.defaultDuration = duration; + sexToil.handlingFacing = true; + sexToil.initAction = delegate + { + Partner.pather.StopDead(); + Partner.jobs.curDriver.asleep = false; + + Start(); + }; + sexToil.tickAction = delegate + { + if (pawn.IsHashIntervalTick(ticks_between_hearts)) + ThrowMetaIconF(pawn.Position, pawn.Map, FleckDefOf.Heart); + SexTick(pawn, Partner); + if (!Partner.Dead) + SexUtility.reduce_rest(Partner, 1); + SexUtility.reduce_rest(pawn, 2); + if (ticks_left <= 0) + ReadyForNextToil(); + }; + sexToil.FailOn(() => Partner.CurJob?.def != PartnerJob); + sexToil.AddFinishAction(End); + yield return sexToil; + + yield return new Toil + { + initAction = () => SexUtility.ProcessSex(Sexprops), + defaultCompleteMode = ToilCompleteMode.Instant + }; + } + + } +} diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainFeed.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainFeed.cs new file mode 100644 index 0000000..1b7eee5 --- /dev/null +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainFeed.cs @@ -0,0 +1,59 @@ +using System.Collections.Generic; +using Verse; +using Verse.AI; +using RimWorld; +using rjw; + +namespace RJWSexperience.Ideology +{ + public class JobDriver_LewdTrainFeed : JobDriver_Train + { + protected override IEnumerable MakeNewToils() + { + SetFinalizerJob(cond => + cond == JobCondition.Succeeded + ? JobMaker.MakeJob(RsiDefOf.Job.TrainLewd_Lovin, Animal) + : null + ); + + bool skipping = false; + foreach (var toil in base.MakeNewToils()) + { + // Base has two sets of toils for feeding, which each begin with a toil named 'FeedToils'. + // Since we only want to feed once, we skip everything between the two. + if (toil.debugName == "FeedToils") + { + skipping = !skipping; + } + // Hold off on setting last interact time until sex is finished + if (skipping || toil.debugName == nameof(Toils_Interpersonal.SetLastInteractTime)) + { + continue; + } + + // Training to be handled by sex job + if (toil.debugName == nameof(Toils_Interpersonal.TryTrain)) + { + break; + } + + // Replace talk to animal interaction with RJW's one + if (toil.debugName == "TalkToAnimal" && Rand.Chance(0.5f)) + { + toil.initAction = delegate + { + if (xxx.can_fuck(Animal)) + { + pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatMale); + } + else + { + pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatFemale); + } + }; + } + yield return toil; + } + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainReciever.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainReciever.cs new file mode 100644 index 0000000..dce2096 --- /dev/null +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainReciever.cs @@ -0,0 +1,48 @@ +using System.Collections.Generic; +using Verse; +using RimWorld; +using rjw; +using Verse.AI; + +namespace RJWSexperience.Ideology +{ + public class JobDriver_LewdTrainReciever : JobDriver_SexBaseReciever + { + protected override IEnumerable MakeNewToils() + { + DoSetup(); + + var get_loved = new Toil + { + defaultCompleteMode = ToilCompleteMode.Never, + handlingFacing = true, + socialMode = RandomSocialMode.Off, + initAction = () => + { + pawn.pather.StopDead(); + pawn.jobs.curDriver.asleep = false; + }, + tickAction = () => + { + if (pawn.IsHashIntervalTick(ticks_between_hearts)) + ThrowMetaIconF(pawn.Position, pawn.Map, FleckDefOf.Heart); + } + }; + get_loved.AddFinishAction(() => + { + if (xxx.is_human(pawn)) + { + var comp = pawn.GetCompRJW(); + if (comp != null) + { + comp.drawNude = false; + pawn.Drawer.renderer.SetAllGraphicsDirty(); + } + } + GlobalTextureAtlasManager.TryMarkPawnFrameSetDirty(pawn); + }); + + yield return get_loved; + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs new file mode 100644 index 0000000..4dd41e3 --- /dev/null +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using Verse; +using RimWorld; +using rjw; +using Verse.AI; + +namespace RJWSexperience.Ideology +{ + public class JobDriver_LewdTrainSex : LewdTrainBase + { + private Pawn originalPartner; + protected override IEnumerable MakeNewToils() + { + originalPartner = Partner; + if (SexAppraiser.would_fuck_animal(pawn, Partner) > 0f) + { + foreach (var baseToil in base.MakeNewToils()) + { + yield return baseToil; + } + } + + if (originalPartner != Partner) + { + // Pawn got interrupted by another partner, then the original partner finished before them. + yield break; + } + + yield return Toils_Interpersonal.SetLastInteractTime(iTarget); + + yield return Toils_Interpersonal.TryTrain(iTarget); + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs new file mode 100644 index 0000000..701e274 --- /dev/null +++ b/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs @@ -0,0 +1,52 @@ +using RimWorld; +using rjw; +using rjw.Modules.Interactions.Contexts; +using rjw.Modules.Interactions.Enums; +using rjw.Modules.Interactions.Rules.PartKindUsageRules; +using rjw.Modules.Shared; +using RJWSexperience.Ideology.PreceptWorkers; +using System.Collections.Generic; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class FocusedVaginal : IPartPreferenceRule + { + private const float vaginal_multiplier = Multipliers.DoubledPlus; + private const float other_multiplier = Multipliers.Rare; + + private bool FocusedWillingAndAble(Pawn fucker, Pawn fucked) + { + // Define the set of valid precepts + var validPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Required, + RsiDefOf.Precept.PregnancyAnimal_Required + }; + + // Check if any of the pawn's precepts match the valid ones + bool hasValidPrecept = fucked.Ideo?.PreceptsListForReading.Any(precept => validPrecepts.Contains(precept.def)) == true; + + return + !IdeoUtility.IsVisiblyPregnant(fucked) && + PregnancyHelper.CanImpregnate(fucker, fucked) && + hasValidPrecept; + } + + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (FocusedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + yield return new Weighted(vaginal_multiplier, LewdablePartKind.Vagina); + yield return new Weighted(other_multiplier, LewdablePartKind.Anus); + yield return new Weighted(other_multiplier, LewdablePartKind.Mouth); + } + + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (FocusedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + yield return new Weighted(vaginal_multiplier, LewdablePartKind.Vagina); + yield return new Weighted(other_multiplier, LewdablePartKind.Anus); + yield return new Weighted(other_multiplier, LewdablePartKind.Mouth); + } + } +} diff --git a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs new file mode 100644 index 0000000..0fe2f9e --- /dev/null +++ b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs @@ -0,0 +1,47 @@ +using RimWorld; +using rjw; +using rjw.Modules.Interactions.Contexts; +using rjw.Modules.Interactions.Enums; +using rjw.Modules.Interactions.Rules.PartKindUsageRules; +using rjw.Modules.Shared; +using RJWSexperience.Ideology.PreceptWorkers; +using System.Collections.Generic; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class IncreasedVaginal : IPartPreferenceRule + { + private const float vaginal_multiplier = Multipliers.Doubled; + + private bool WillingAndAble(Pawn fucker, Pawn fucked) + { + // Define the set of valid precepts + var validPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Holy, + RsiDefOf.Precept.Pregnancy_Elevated, + }; + + // Check if any of the pawn's precepts match the valid ones + bool hasValidPrecept = fucked.Ideo?.PreceptsListForReading.Any(precept => validPrecepts.Contains(precept.def)) == true; + + return + !IdeoUtility.IsVisiblyPregnant(fucked) && + PregnancyHelper.CanImpregnate(fucker, fucked) && + hasValidPrecept; + } + + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (WillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + yield return new Weighted(vaginal_multiplier, LewdablePartKind.Vagina); + } + + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (WillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + yield return new Weighted(vaginal_multiplier, LewdablePartKind.Vagina); + } + } +} diff --git a/Textures/UI/Issues/BabyHome.png b/Textures/UI/Issues/BabyHome.png new file mode 100644 index 0000000000000000000000000000000000000000..ab74b9d745cd1b4b5568824d814beed02ab963bf GIT binary patch literal 9963 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 literal 0 HcmV?d00001 diff --git a/Textures/UI/Issues/Birth.png b/Textures/UI/Issues/Birth.png deleted file mode 100644 index 2fc8e16b1a17255b7224681c2c3d46298ed038fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402 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 S0C=|?P*ZxKSS@cE`o93Jpg4E{ literal 0 HcmV?d00001 diff --git a/Textures/UI/Issues/PregnancyAnimal.png b/Textures/UI/Issues/PregnancyAnimal.png new file mode 100644 index 0000000000000000000000000000000000000000..4d0c026f1c1fa7c6fdddb997f1d18e3341517bd6 GIT binary patch literal 15339 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%0Asc+&<^QR_i%j?FQ*g@nbmyjFtZ;NZ=o&J<^( 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 b{(CaD@LN2i?X*xi1b*ph8EKZNJ6!ueTlfZE literal 0 HcmV?d00001 From 9070d6f9d5b520330095924b10a6153b29bddb4d Mon Sep 17 00:00:00 2001 From: ElToro Date: Wed, 15 Jan 2025 17:53:03 +0300 Subject: [PATCH 13/64] New icons + Sexual Taming having 2 levels - with and withouth stat boost. --- Source/IdeologyAddon/RsiDefOf.cs | 3 ++- .../SexTame/BestialityUtility.cs | 8 ++++++-- Textures/UI/Issues/BabyHome.png | Bin 9963 -> 8019 bytes Textures/UI/Issues/Pregnancy.png | Bin 16689 -> 9210 bytes Textures/UI/Issues/PregnancyAnimal.png | Bin 15339 -> 9556 bytes Textures/UI/Issues/SexProselytizer.png | Bin 4565 -> 7180 bytes 6 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Source/IdeologyAddon/RsiDefOf.cs b/Source/IdeologyAddon/RsiDefOf.cs index 2445113..9754e22 100644 --- a/Source/IdeologyAddon/RsiDefOf.cs +++ b/Source/IdeologyAddon/RsiDefOf.cs @@ -54,7 +54,8 @@ namespace RJWSexperience.Ideology public static readonly PreceptDef PregnancyAnimal_Horrible; public static readonly PreceptDef PregnancyAnimal_NoRules; public static readonly PreceptDef AnimalConnection_Lovin; - } + public static readonly PreceptDef AnimalConnection_LovinBond; + } [DefOf] public static class HistoryEvent diff --git a/Source/IdeologyAddon/SexTame/BestialityUtility.cs b/Source/IdeologyAddon/SexTame/BestialityUtility.cs index 9446f96..5c4e564 100644 --- a/Source/IdeologyAddon/SexTame/BestialityUtility.cs +++ b/Source/IdeologyAddon/SexTame/BestialityUtility.cs @@ -10,11 +10,15 @@ namespace RJWSexperience.Ideology { public static bool CanDoLewdAnimalWork(Pawn human, Pawn animal) { - if (human.Ideo == null || !human.Ideo.HasPrecept(RsiDefOf.Precept.AnimalConnection_Lovin)) + if (human.Ideo == null) { return false; } - return SexAppraiser.would_fuck_animal(human, animal) > 0; + if (human.Ideo.HasPrecept(RsiDefOf.Precept.AnimalConnection_Lovin) || human.Ideo.HasPrecept(RsiDefOf.Precept.AnimalConnection_LovinBond)) + { + return SexAppraiser.would_fuck_animal(human, animal) > 0; + } + else return false; } } } \ No newline at end of file diff --git a/Textures/UI/Issues/BabyHome.png b/Textures/UI/Issues/BabyHome.png index ab74b9d745cd1b4b5568824d814beed02ab963bf..8c9d92cf4fe99f3854fae5d510ae802294b8c3fe 100644 GIT binary patch delta 7236 zcma)g2UHYGw{Fic3_)@Z0}OdUP;wTKJS2f3CxICO1(hfw8BwB$1Q8I)A`&Dh zSrN$@1Ox;m-S(XG|M%Yazqi)w)w8CnYFG8%wZFZ;-L;`VqLRYH43PTjTn_*Ma{50% z2#}r20susHX?ajX2s~{IDypXLf_1{ct@MrHnpl4fTvkj@)LBwS7A~(KCMhQ^qo5!H zmy(b~ic28HC8b3rxQnx*HrC(U5!A@T+tCdp?(5@*_|xn9pS@Rf^^FwOjdYa}QeqMa z_+L#UFUP5v*)%R9MjZU#+p4IE^}_n=V_iU9q!It4UsqGp z$RF$K;RO!-Wr0(WhgYDehYvi!+Y ze?6Z}%tZSiTME8~3HLYdjsAr)xTfYGoGZWu{_(Eh-#Y#;6~#fL#Q)nq@&D8GzsCMY z6#Prv1g-t&G4v1Oy+OZ&4V-GIucPx#OduTN1DfxTP*wSMH;fSgScG)Z>Sm$2TQ?$o z&6XN3@@jjdy7;*23o=xjgGL3TQs5nUxK%hL$p2}2G|&2@RJ$tg;zI*ch1A;p){Nt1RQuY2EeH|50gHsvhhP>0F2EBn*6D_(;? zjwfpc+p#N1}8RzkifuSDjrEX9+EAd@<^CX=qFZ$GnO68M-GKRm28NhXiC03rc| z-a0`w7rwhZnlCJX`3gR|gR+3M{l3T$JIt3EuulpzM26e4L&(VG@dQA;zRHv2M>7!j zE6XIQq6fuMwG=q~@|4KO69mNT%H5r?{L+#V{`HNG!sTVx`7paglExAipvr1(B{A+k8E6r0Mz^b_p0PS`fhwbkzUO!5M;bR-}K zn40CE;pBk@nyd>dyjXk@$rlsTpi>^at3d3<$;<_(UDYyl+71~=W<}&De)EGx8Am&v z%}sGcijaM!p|`ha*Mi@4XPC<5YY+OV^X}I|mwR&>p7Qv2OmO?8MSq%n7usS6-Y_Tx zbu=480)zex5fU(53Lt5>uqv}QZ>OB?GCRfr@8vIEHhhoncD7^;e5cN%ru=?RaX~*{ z`IelloLq_b9j6)=TG}qBn%CZ+l5wZbWH6{T&%2vIiS@T63a#X+t;ZWTW&JrIxf=Kc zb19Q(EEYS|NDoe`YiKYH3aVoz)u35%6)q@Wx^=viq0i_q$G`)TirqdudH(!)uP@Gx zmyXoa-Q8%UybB^C)5wu6WT#~81$#qCHa9UoZX&=SRcC5#ZCzGTp{E-ymf65>#Mt`y z@z7NUdI%Iq>MSw$7hrg{QQ2gm8-2!Kw*auiBc9D8+6x^Nx4z!2s*89qIyP1;#}P5n zAIxBKghsQ;`-qT1PYLknW_-_!ig2+>T&h0Th-GDE1xY_q&%Q!U84uMLetLJg58jS* zH_s*00jSzX^!PkRO7!c4heaE{J>%_YTmGDs(Dh<^%P1xqFm~SzEyKfhfFqOg#r`bm z=WT5>;|A;7+ojjU8e_N0cxagY!&A9WzkaozntFQo3Rk3=cXygPR0t07iNS@sYXYm! zOY?9Q4Lj@<2HCR{74ua^r} z7XT(J3V)POS-fDbYDBOmmZuhQ^>ec_#shW|aj3ewx<@*^WW&08*X1GIy;xlChYufgXkuUgdY&>1n7pMHN>RphwZ9yWE54TTZfg*; zE=%pxz;-wt!WFgqz3+%ufTd~1~-C4GoBO)eI>)5dumd?xlS(#E8GP}?@!iwv)MA2}a>)%s7lifu$ zei=Z_pGWtu>>1nJ)Zu8v`^ii_{u*ye@UUM0+ik{}?> zi|h+&xwFAdHSVb>dU%%Jv({El5NDaHxK@v)SPgE}!Kf*2vgMXM7%hO`;vAAHJw5%+ z>CcZHe(dwR$io%Yi!8QFm(+E2@3rrtLe@tGD;pY^2?z+R8vXg0#O)}mCLYYq%_aEf z`p_*i=-3E`pg6lLZ!~@S^a(HRHt4W1{t_9q&cGyMx-8$;afh54 z)XT%mD*_j}FRP1nCN7)d}uFDm-Z;^(NOqvN=u zthVJ+2&yU9IC}XzHV(4=6F8{iJdS@ZE&4b1Y#f+qX%V*U4`1`JL5U_LCy%&2iPVm2 zdlH(@J6!{7MI-Wy67;BDAeu9LmHS42Jv2-pn%7LwgaHUcadz^kp*Tx} zHpY#0bxC(o;ztp!GWs4M*)#^=R$QCMf`Wo%P$)e#+S%E8|D*l+!)ZYZAd{f$-eu#t zc>+|zs3ayVOhMzRk-FC+HJ3`l@897bI6a^qI2vNFeGc2f0YWHF>bFfz#^&b58*w*o z+#n%}@olsPZva11YPhi2o5sS<4g>U_sBmya?$Zhh38m=q*M#mm;c`)7CbDf|d&_gH zp9^=6BUabeIv6c&xfSkFK#y+4S1w4oG^Vxi0Pyv1ghjtb^YZfUe$S3@oRx^z;(MRO zS2gkC7VYHc&*~Gl0g2<`8V0x3@Q73r+Ivj;WX_LanE|9p3uO%r8S&^ASnUxT9%)j1 zn{1W!7venucNLuE2)Aa4yAOhO()u$&!ulus~iEherQ z(LQ3RDoR}|_*!#wRHJ}=o}2yw5rDae*5JoOjR9{O&3;_Z-sL6f=(ICa0Ei&(H(J>Z z^-?la^_xe3J?EIu!G+~-_1q-0YKw}LJJTd&k(N%}N20d{kCmz>gbkTfbz)DWRFzt8 zlvf}bCzamNKhydV0)eOMIP^Z`L;B6f788qrs;i#PQKxghzMw4Vex+ePdw5cN7NYuo zF0%5&1@1EZp|*;H$+>{UdIX-WDU+o>B5$YgP z`sCMOqsoZ~h$>n*F=Y|mB_hG$IfkaZeA$~!ITs|a5`a6w6xShIF%@uiB)bKD6tw?1 zD!)1h=$@1VbFrxei{8hRquqtR;9zyWeq6382@qfJ>A_p}{Q1+QBr4O`HtdW_F{F(5 zl#zdQ+5q}(uwH#28Np8VLZMB>;$y!q3^3CH^O5(rH>u&_;XmmjBv{O(?@5^+;agy# z(caxP&fSZr+S=N$ilW0f%5N2ID8FVg=Wd2;>-?H)Le@blBK z--~I6tJJt7f|vGfDmf4NDE4Bh8R7xZT7SFF&d#gFk1GX}$ePKGI@RNUZBQDa_mB2R z3~Qp!!uxaNsa2j(CnhGoSucMv>)%Lo5A6%4Em({?y3jaRAwavaFJp%lkGmUMVKZt~ z@0E3W2&TxLZvjJsTx*0oI76D1iwa*TqzI`-X8=VK8e9E@Xyb4=6bnTXAV5tN(>$?3 z*zL!{#@5;14geGomOJhTePZEBz|qX;40XwQBEcl3A6kH^=YF|(>k)Ki=m{|pak|^R zDeV`(HDgurnV zsRX6d$_&YFf^F$?k%O-;E+HxDPd%WVR;$=V11lr0rY5s*2FY__YUW%HNX-KY+T&}* zt5;HH<~Z{XkT=1kXE4IjdU1Xdy4`XJCPI~q(}3fXhY#tF&Y~VYiXUKSWqpUmo!As} z_xQ&v9yq}vz%1y`59?zuK(hMvWBP%i>Y2<%zgIp~>U4dRs*sNC&g*v{n(uyNM?-Fv z;&B;KwLu#e3RT^lw-N@fjd0kK3gLCFwBO_U*VjE?H#9hpm7CX_JAHlaFsoD@`(we{p)Sbk~SNT;u_Z`BemduyNft74z+D!0*_@-;x^iJ=|AV%CJc`nVya{Ku%lZkc)LfQ~M1 ztkjM$-H6@&IHHv_t$V@oW4MW%s!vAL!ft57GUfsQCrZhvBLX6oCUqv7cFE6Di3oC1 zyG~wiNR}SH%K0IQy#`1jU;!02{1C6ltEQcK=)|l-o_Oo@em=~F4q|5Bl%@qP5=eMl zmc&6IbsH#m{C+uShtEA_mV_*TBhfKM9a`pj*iW_hL&iM?4%rYZsHSkijP(-Dm$^vIWMe8ytlEdzn*O>A62(1NwW-R9_Dp{THFQg^1`zkjcu zpKNDLSz23ru12+yQl+vJ_h|s~@2}?YpMoh-+O=P2BNK$Gb%W21?_sQ3hK9)uSFSj0 z1nmvTuPF1qU+@!+8QDfK@=ggBh`^4NBnFvXN$k61a{z{100)Lsot^fLQFF19`|qsS zp(Ee#54sRYW zVbfLQ<>Z#9JG5!0oVxTt15%_!GL&Wxt5w4j->w7}45^`(g+zJ(zSW1<#5$A@zd8FK^vAJ67NvcbDL)fZ&T&C~ z33A0FNH6go?Q~N6O?fvwt*bK+;r~+$eiU!>Qa=Fm&p7QY$oy}m`w*ww+|!mfT+J(C zwX}4kE|$XTG}WGCLesn~mo7Pqd!#T$Cuxq8o^LhGXa@xB#kSsh`SPVzooD*v9ofsD ztVHe(sho(!t!I<}elh=oBI{&7A)b$pG&?89ZzV6pb>Jk+Eni(qaL6i_c#9!@x2f4pc~YH8XCikdhaQ1Wo2as3Zk{ks>k=f%3%?61Ws>`G{{lRQ21DWOy5jRVcYH^usP*&! zH80-}It8ikbh^&QY+5@X+AR)W4!4hwR(sfx&!*`U$AbNF;-HbH={4&S|Fq|v_;+WO zxsb}0pz}ep>Yz(;p^ed;?gylBPkMX&q4Y0WGk1fa0rfmkkvVv+=L~04axV_`@U_Co* zqdLLJ>!X@H?4nYn3eR;Nm?36oL^d`y9vA0l!AjRF@b}rKS|d-~JE95iaHf03alkS^ zVI>}T4Pq{@v@~e){&U;WjplAQ&L13ea43h5 z8YwH{l$6p7Kl|xHosDZr+tt~bmXf|!I}(sar-XFJX>c#iJ;)|9x>t4kOZw>eI4fNg zBGsst!a5gwS%K7*9-v|NbSzR7q9OUz(-Z%6@QFe|$*aA#^y1Tm!Zi-1U={?Pj5N{P zj~ylq7TM4g&HkX^U{<~#mfzt znVLH50BAILV$er88JPHLgh7>(lJaif*4CD}HSf|ZnjlmK0?#&YBNURG3hzhHBlKzr zPngsFTf7>z8=irm;hLH;{`+692p^iU#5({Btvrd^XBGU#`m-?L;+>dxUwuB zAh45C-sJdaZf!5`2!1Jq-*uJmMQbJLWsQUOGqF7*AMPEX(5UX1gkG=TGyph3n~f`~&x=8&utXR$xtIeaY+k zpD)@^pHhCdS!g5(%Xn~qoW4s7^w7Ckx?R;s_=yQph~0$c$W#ZArOe)D5j>SJv615t zq?jdLbY&GwA9-3!QD5PmiM|~51>Spd0TE5EsJ(*R+H4P@5MF@{4|z=QWym$M5P^K7_+?LW5iQ}b$>IbTiFmT?}aXT@nuXGDX?)^E>g5GQ1^5r5G0PmW=X5OM`{VEET}a(ZTS(|2UQd)}Qb6LJ zO;%qBI99!D)@7(pFFoAP9&4_DCq!VOsw*(D+M=||qHs5+xuGe2R=ynmqAHp;oxQl| zGD4#AaIvjun_5EOE$Kbu;X+SZ<>j`jPdh{pRHn>zMhw*ElmH3V1pw*`Ofu zCFe1prj(O+0;#tOFG)5oR-hy53|}vJLPKboJ!yD`J@rRuq{$I!qUvaZ<;vg@Fx}*j zq$Y6&<_YQ_?&BY~Hw- zhf=ZDTZKz}p^*fE*ideON9XkQRv)JCtxj-t(+=__m(wJKX*mQIejC3b)qkUA0>^FhCww0-24#`B{08&FWy<+MB~hF z5Wtfn#MRHwTV6(nOeRZ{kdimi3pk5@w1BhQ38U&J) zuba1@8_|pZ02Aj(yy&M0fdKvdzuV{Ot*`$Fycg*=763kE0&w0kaA}x~r>D$cHAsG% z{s72t2K~1hBr_l}WK0Mo;zeI4f~G&g%TMsH5O}9Q^t~_odi-<;?<7O;Ab0|zBw$qd z--guE(Kq@-=$L)1AK>0;vCi`#0&|eg7#8Na^d# zYY?3-9+;=2p$It`Umj0%a>L92yhY=&D6}(P7V7LIhl8S=(O4+f8AX7~I$@lg;3#KD zI2QgFC><}7AI{5(Z~z5>OS=I$C>#clkOOpJNGu+Tf@3gHEDku~9pz-5@s0=>7K8W; zgrTn+kd-)(zgl$wg$JOVQF4wL0v-!>A|MW|kwrkUScEeaO~Au&axfH@AdC44g?Exa zL-h5;0pWD>#JLb;yuDn0b{r5cuWF>D2ti20{%kSw!1*}?3P26GdEtp<(w|*sZk_~F zKimPIa5*FzgTNwDXbc94g(3eGvLN`9fLuI4g~Ozgzl=Btj6C2DKrQYdQvraV8h|(Q z>b?Y=AJNy0Nc2#I92muap!r9)K2T72oF7gD=SKiQVF+1y7+fBXGK0yLJsTb zBnQLF0a5%rI*I7)N5=UQR9yfb0j_`q{mB)-*l(c{|GPZdm2eOTfHEiy4n3d@Eia3f zhhZTy|9STaC^Vb^#{y2tVvtZ20Rw|#FbEhFP9VT>Xfzz{j6nb0-2b_Ia`G^gJW}re z!aZjs%*h#xafTvLcr+A+fXM-+3>2Xp4kZV}0ga9@-2c9NKNJ3U_Y`Cf-uJ)fs)Ee_ zlg+;b{xU%TQUBEjOgz9mCiBNc_FFm}Od0>d-)~j)9~=RI{&$dn#P7d!{Y%$BV&ESM z|C?R^()EuR_(#J3X4n53UEn{r!UQj1{YnNly3rB6QNSjd-tnxK25A4_U(|Rf188CJ z)6v&tn5SZ;6_nPr@Hh?vaSrKdsG0@XE#?O&nGXd$-|P`&h_dIrQp!u^7YUKn+dc;rkwe9 zjoMn$>xzLgd&x|yRt?_S1L0V965s@KAhkDTHXKF+|qLRq*BOM zKYk(~lBXe^2!d+ZQu(UhR6DFPW7<61lY{JSZdT<8$d`4$`Z6r72Evx$!BthuUKhRG z$1Z+1xFU(Fq`7{TFSASTZG}DY&09P7@0yHB9jAhO-ZcbP2Pubac{{C4zib~PPn3_l zOieaNopEuw#^oOapSSai0vJ*oTc_{B%yD#zQM&nt1QdT#eFX3fkl zR6IlPY;UhU-DPHG&aVC7%LM+GAnzFSPG!cvXhqI*^k!LixIv+kXYwhICDhm10gVP{!qi$9Zauhe*;8&)o2#g( zXx%{~eSHV7ZfqR$aC57&X3&FJry89vLszc*%;(BH+kL3?bW(gnI-+SMI&S2{hx-!a zOvmNCP#wu9-Njq9AWoVs{Jq`e*`A}JXPQlWz^TW?d^*lOFs`_c@o8DI)~uV$h!QGa zSsmF9GrbRHpA*Z`b#-?~y1TpA!JcS|`V4^L9<3Dfa!uN$8J&6Q$LK4CPl=mwitLo+ zOVFp{6(%QSA4hu(gbSPl62?iKiU##;GF-!sV&nn-_Au^VW@VADh<+|!yjlHvG~3<% z=5vBwT?~2DQpPUaPD?ykQ+s=&$PvcS?T?i%{ijSlNYd%Do?qzNWn9E$zV5?0#Z=VQ zY4*!)^KJE-scIs_l<(hG&bW2$_5ZZ4l@J=2lu84YOOqrlVl$K zh}=bG~VY>UA~~O3lLCa;COtM4vBj#HV`YCQ$ysC%{gOh%n+Csy+E+9=C;m z$4N3Tc|7n=6`}j;@tawpD*itVXlnzenR!NZ-*iz{Ki4#!p;@H|QtOj6h3BF(rMT?S zkVj00sNp?$_YEtaNnAr( z4Ngo{7$T2-dv&@p$N0Q#ogleUS|DJ~(SvJ$0+LM*mtH|a!v!DePKRr}AurOru6F4k zwf!hYRXmlZHgLvJODk5XZO(fRrRu|AV`EcMy)N#uJl?pSuWaPQrnr`B?sG?ToW1x~ zkk<6wPB?U5bfpjy(xeu>q(`w3qruoan-lgm(`+~D-lm+kw=XkO z{aGV>YD+Hd%4^^AAwSlK38tf=So=O>jA+Y#9On=<49g+QY7>zL8M|`jO6h4Pj;l*5 z8)Yv=p3Qyvg78VzsoR%aiR)xLccLf#lwy!s_`{8^9DNmHIp4)6Gqqb+VlM1Vr6|8G6lo?tKc}hG zq5DKfNYdDf>K>&ngPSX9yw+<>m+ATQxv^uQ8!42`+2{A?78i^ z<=yOa1B}WDc&iq5+m7D3i^YqlY6qU;cH8Id@T=?ZM;;QGBx6f=J2dyKx~Coz9rpKr zJPc%U(+Q|68K35tpnGoR11cv-vD3M~y>HxINynY;ZLA(u#c=jn8+b(U;hQ6rL(LBR zM)*wTIg|2M@`$+B7`~6w5GIX6!yo| zljFVCl*iK2$5y)p#V%bK&F=48i^R@k7%Ej6zJq;Xf`m!x(K(bhyreZ0xmv<7&=%9@ zm$nG$>a7d-?npWaFmaZFBPBu9I|}g#b{JtGbg0EFf>k10X*{yX+L=n-Xw67qBRMfD z{`MX(SAu6ZYUTS>$B^cuXz*ubW{eSOK@O6X9%XQi`!@BXG|-ooneKWa(>C)9d{lya z{9KBNJzZM+A99dbP3h{D7$(>Fuj=2VSMv9dP_zz*@zCQWo+Bi7I@1KjXIyL;QYQJl z_0F5TNM#j4vWSF(d7wW=3^giUa^7tP|Hyr*nnnZZS%UL~MI9dTK~f z>^aUj;?--g@a8ntuyj*+smk@!2AK}3=H^2SCA6|D_x$6Oj>cgN%|6BAS+X%rDGmwH6Y6zK| zmv<$GiRT!Hh@KH2EnSAP9(B20u2g#tgyLZdWd(Eh4 zhvu(-FcO^29`9juI_b{-nKMkZJRW4i9xnlo{IvZHV-iK)^Fm{T;$9Q?UBj_N*-OaQZLm+khrW;s#`7rp-!9#?rn ziu)zkCj%X`Cc443vlMOy%H(v_K0iBuW4IFE++*rCeztT4x~0q|+-cC& zE_z9|)V!&UT~~!{x$$DWc}f%jzo1w9U@E=nzQhEza3$e{%b9AaP&$GY#b4n`a^fjx zpRW29XjiX$XOWg-??U@=;@Yhh8Qc1swIv@DWtzmc-0&k}Ji^-80PiIB%Zqd-tqPRs zj9FkNtk~3OCG{)17+lA^s-7|VqMJH9wtB3o?UV3VUntx z{o>5D_O?$S)8$I&kj`_0R2ds20@PO^oOaGr-t|s5grd)YRZuKxjrR?WkP&v*?vff2r}Vf8TaA+KiRT;k_jZ0f z2$5v3gaTr(g(YhfbZ>W3g3PH;>D?OsYTU$^qfISfWA<$VSc{GElf$i@Jw#JuiNMQS zq9T8-oYv+cC@Ku@Wu)`A@Md?OF&1CBlur0gPr2KMB58uvfJWr(ehY5 zkL>hc$)Lu~aA4U9887;)gz~80RLyS%b8?lJq)KG6fmFX--&_Hx(MN^^|e!Sz9V=I^CB7Tn#y$$Q&YOF~Ta^l_fua9D6I_M{ep(d)Y)T-_~iSBMg|7bDM*=Xj`3I zx_EsAla7N=Vzyb1cHJixPd$*LX5p2vZ{tbj?c%oXb#QYHmcW?QZM=M1=CYV7#`W-~ zj*Xn_;a3nQwb7$FlA1!p(sg9XM3ty0CZ*|m)yL{~_%yIvzh13Uzz@hkrOmB$p_&Mx z;riwzO>Wh-wzuyDU9?YswzS%w;Y+q)J8a~(DzQDngM4Q?W+))Ac=(a7FatTS?1d4P z5MG;QV=l~fmg&~@Yhi%`vaiW`ycgn{wnnQ>^V87py5IhojBQ~h{X+)$#gckC)7AvI#;V;gzw$23HpQCsr(*a?5VI`f-5 zZ*7RO9P!aj9($=i-(P0tu=vg)1I)@uyZ1tv`dYbX^H<|P%+Qmg>UZGlkq*GR>n&;B zekQ_dG9Gg6jzRu~jrH|;`|a+Q7$z)3JC`Q%{k4?)s>Q4h=&yX*%}T`ahUrsu_%>2#^<;p{df|zTP0*GTJ z3ZZ^SRTVDzIXFBYY(1*W#aZM6RQfi8LX(w35g`Z~6vXg!a%eZVW+*u(^4Uf#2b@3u z30v^&`nR)G7q)kH6cy`f1MUq2o85(uPe&vR!k?a_k-#_J5w#y6hP4Dq=~bylFT)Go z>F~|RFf*`=oTQPKnbaMJIyP;Lx^IguVFOog>Us#w9R6Z^Wa||*J5B9U2VXdf^~7Y| zm8G<>_g*@%doJcxJaLp~o;}&{FI6zRk3OV$jmX}xnj3216DSe%6Fwu>nR(yF=Nyk1 zc%ard&-$}H@XX(ffdz1?Cu&$h@*#E%w}qLqGzg_#t6<%mHdMEx z@(r5wc#O%<`1JD7y(STEoOS}IQNyB)^tkVLEepc;0;T2cPTXnQoJkT;+WCsKO%IMU zNnc^_c?qU_-ZMD_Y^N5^&YhyqG~sRmRU2jJDxtkTVEV%tE5$#Wfh$t^xD#0`HAdMy zL~sIJsc6~Wb1h6j>LBuRb1{$eyzYA7Qg1d8!%)qcs#f(qAv7>q_L-$+V2>&MBsNDI z@B+KK)#0hoUSfeVF@rXlJ z;p)ZIrt96Y``M&`>CQ|XKB+?}C|H171d zk852>!rx~!p}Kq593na%v;Z|U#)_q|&UGG7`zY&rqqcVV-Lr7zy!V>dxA+p$i_}|q zRV!vng5tR_z-s<`-)V^vk=1W?)}a109bjWom3c95)VLX0;6ztBzp$`SIy8}hukKLP z68X4Q+CyQ8LNFdZUw0|a2~Ja*t$FWJu`1jG#xO84QW`$boGeJ-$An32#rZPp=b~PI zuU9R=lq`q&F3vucG8x0()hzwb_{6vf=V&Z8j`zuQn#Qxnz_ z&G^;u;5*x8vlBE`wVK|`_sphQE0fiS2cw@^0_z}_i?x?fxUH05Vp()z#1-^NLbTkb#9;i7){ufz7uj&8* diff --git a/Textures/UI/Issues/Pregnancy.png b/Textures/UI/Issues/Pregnancy.png index 8d3dfa84becfeaf56928ac371c0dbb2fab1baa34..cec8e9d79895623b00235cc53d5379f91b16debb 100644 GIT binary patch literal 9210 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 literal 16689 zcmeHuby$>L*Y7=a3P|?=A|V4qcSxfkDP02$p)^BCcZYPh0)kS40wN&|BCUi-D+mZk z=bW48dEPqbT-UkY>-)a**DC^Z?|bdvUbWZWYwb;p)&mt{0y+W!0EpF86?Fgr0)B)5 zcsSrMQ}+s6@FBuMK|xDRK>_OO?qciUhy(!6k@RF~)h;cH2+fID)`z(F$=v$2^0!J@ z6WL>xYPDtwUP)xN9+2b+-Qwa+41L_$S=dt<7WcaPMs+Ck1ap~JjH^X8=9oQ#syLLI zX=kO?`^ND+E?xq`#7jA%QPiAz4?BOZ38kOKQWq2hkBvugNc9=D;JUHJF)H^b@8Ij* zb~>$nDolS?w|Lqzjn=zT?;Pm!j$;&F-m2>U(Vco*SoNacvu8#0lTs#j0j+@GizmyZ zb%tA(&%=xcCZp}5*(%F)+nyd8uC?|URZSXJXG`CRm$p1{UY$%VR7OkbFKub9t zJzkw^#iH~>hZcc@=CPi9s0d?Og4X&?ui0!;v zTM}dW6O5C>kUQ_UYea&ZHODudVD4B%PMFkRoHS-IdA);^ITS>Y2EQk65@0W0#jt)nEjBY+Wf?k^K>T0@RVByFnt2C?(T|att|U6GMilt9E(pAnkgzr z{es2p=C3?jrvVXzQ=4Zas*Yd62jZWJmYziWDXm(Ouo1GAWp}{sU&A=d4!?fz>Y$V` z_-S+AL}0Hy?8G-!{?-m16>~!w$Idn%+totc%_HPf|1xz*)nhCAR^#6x7r7JiXBbr6 zMhR~kNJI5|3dNcc#z z{(&n2e!gzzV}<@ff_f~?YN(+FRd8`fLWOvRc;PT59|tc1Rv7}Ql)H_sgpQ)}Ul8Dv zG^;%dn+IZ;%>*sFD@?52N&QI5P*RcFpnqBD1;Bp*@NvG;!g}kq=&V; zgDc9x#Tj~yiLi3lK zULeR{4ELBfQ@kzz0_Vep5b06zjQ zBxWrlBrg0@@qJqNw!boA5n7FVYOvnn3gjpf^ZD9yF(%P2aT9_Xp zAod40Hr5i#F78eU(3}oV2s;TRI2WJ}> zZ;yYx(sOV^>Y@orr*>z;pqtpQFb8w3iWh(IAhP`H4w1e_n# zq#j&ULO@(XK=2M+Py+r>^e#3Iwom?F)YsDoD)pz)RUJIQ@t^$B^yi$?MY{d@^yj0a z!yl6g3jJeRNFc2L6u|@Gg|zvDPY~xj`@hk8f6eE=i6_N(y`24RDoXMFACvV@f`3~7K&Sq*4O~~jWt#8r>-1mV4)Xdx z`R}hF@jp2P6#Ab*{w@9fM_vC>*T1EKe~b7(-t`}K{aYINw}}7aUH@(BBKSw9k8}pN z=iXo*U$Fm}3#iL*& z=i~b@Or`H=?&v&zdo-2eIFup!yoZ_&EDXS`Qi_o=ntY9`1S{k2r`-+nyJG0 z2l%}w*~Nr}!HI|!J3|14N7T--B1$v8@&%IzkYKAYUa*6{ohxm#j1&N$S+a~5k~A+K zJGfQUWEB$;c953ab&;(8JP*fR)IZMtqvbhAmrDH3p)XQn2PH8z{swD}2TpbaBz*?H zI5*eTO|4inOM6PAxrbjjzHN7a3%)9OXKa!6UMO(#C?O%irZMNmGaHOohIM(daeb=% zyQgVymrdiQZi535gTzG~-pq)$xy`cgwo!2RnwN(LFHP?*G@)f$)-rOr*x2$JKClG? z{Zx=W*{UAyg+U@GLx45Unb-m-J@S!a{p^w~Tdt9Nk3{xDW486wi%!HbONxVqMcV;4 z7`NyMojZJCzYb{|BD;6oC=*-vBmyC-o9cS%;jzCSsJ#-jR`AaLLpc6#9$BO8?6iyw zW%DJ*CTUg*(w+S%%#Wjy*iej(w$I10_ZS-6a;x>to>y?vzcP9k$<&12Y_QqzOiM{A zDfn{lfitg0j!;YZcaI!P3Ysv1$cNF6;jN(DXx{i~(mPqRY1&NspRCLQ86h{zJ zjrMD^O}=jVq0_^Dww9_n(TR!M?^yTrp`(n&d0!Z|<$9;6Ue|%+$#3-JvSYEWieOJ) z-+0zCe}m5$YmT7z8z~M7uYliN(tF+H^(xR=XO5&@)_9y$U%e0|OZ!ey-BK*wO~3a{ z?n0vXS^5V)m1RE{w4bV^4}Vu!R6t3mk)Uy~X(6k!(~fTQXJllYA0PyHFcfgxlIco0 zx(s%cht_V_j40^mrr*1*UX<%%q{60>sF!qHKtM)tv92Op))jT*J_~>LA_U9%jx9^H z{|U~ca7!X)VQJ&zF|!};Eu5l!nV(<2PqzJ(rN+zPRkNgzhp8$w6`_3r3w zu-dF}++##qvoDdM{Nqb?qey-nvjj3LvS_K3NaCBFLcc>IdwrLFNjgkcXbZVqN#)1{ zK#P-&kVgFL`P^lFepyi7k)k`=yck!MA{8v$MH#=JCCiz8>$FY`MeA zUMx5vEd-Jutco;F%820eQ&;t#3u`6QhVNVt%g2AO4MpH#iKe&|RW$j;T%8@wHF)os zxAW3-I^2M^`>jtklyW*hr8}ZFj=(5n!>pHR|T7E*`S$tfSEC#xnxPG>^RvU=j)zoZza+bzOz z`_@BALkOt{U%Yt}SyH-9L5VaNc|;N?ce2r}6p1fMeml+IV*Wjjsa1^u?Y@P;i*N!$ z!YMWd@@Jf3nSzh?xrj$bIC6*Y;gp8t!FVfcYBG!Os<_VIVEB66be4jT`LZHR(T=YJ zT7G7Avg7pD=^0-QI>oq}c{FwRS5W(X=AhQNK|b?aukrBXdp~(n_+c!Cy~cQqQ+R+u zid%}!c)97zCM=x(*~L&ZN$LzfTqtW`O2{UjLpN3W3X7;X%e)h#hy@BzRi*P9R zO+9*X)jvF3{O(sv>aWXL11=8H+((ZpC)r-r;)UZ<0mKjpJXY-F>*>CpXXCy?4TqJr zH8OKOV4*4Lo?W_5fI`0SGfJwEwl0h!{&*a=hp~oD#cg+CW1@ylsQrBJ(RkX4jeBeC zjSbgC;Mn|&5KCpt0EPF)A6D1CkM|~QzCe9fzk&OKh%gxEt~@Ev(r`nl^O(k4r;?Hq z)*0OoAQQoNORB1QZlSyTn|gb1SH9Y2IR2SERvKqNKfK9#`}2cg*o{WLkoUpguJK#t zfp~eKva-r^o_v%tl_OKj!GS9~JhS_Nu`QMk3nRF}aysj%$lG!_XG*}p>fs^fAALs= zkWuJ5z8pR97847{D4CikPen~F<`Mpci6I~qJ@c{wA|zA`pn5{F3Atdx`IVK`mFxst z*x@+WeDeWRKT$%BF6&mt0|NtPZY#Yy{_<$vM1e^Vmgb&2(K9>`)1jszEZd(AFTl0# zUZbb*BYbjh9)PZA1C`v>$t34(sSeyGWyzGsqU40o~M;l#06K9}f<2sDK13 z3XI@Jj3$;^KOG$%8(;p+`vc|cQC-1{mXJ|8_ekJ3rtiSYVgDgUcJ;vEV2Qn7gQqpJ$BRo`&|^C< zy!;ySx4hmNmuQa8wtM_|aQF~}T>>QxgOUW#Gii*CoiSo+X}iU|ah|`|e$vA?brW0U zY8MprZmT&-4@b9l==6cIh6eHFh)Pg-;pLXyK`*^ae;uhhx)TGgiV`PNP4oTg9Gi5% zNUUxnMpO1Ot-xm)|7=e)P(6x-xr|oOc622v$U=JX02iDFm@6TpIHcs(nQ<03JU``2 z@|j+4AM~>&jgkbNC`h=k(hO${<}&$hNuqY%9}iLnXJ3V_ytrHP3O6{5nGOB)0#i+n z*Q~PWI*f_TztNUfc&DeYud|kZuhPZ-R_>JizyOzke@xsaLz~{ihXeZ~dEyG?nuTR6 zeM#D<5%+BxjllhG0vM?smb-7#@t0`%Kd3*e{`4OBdV^HvME=H2GyLGbm9ilN-U$Wt z0r1NFwXw9qoN24!-5XH~ydx1k>Wss~tQj>K&1bdU;wfHM#k!6s^xBct52DSi99u%Rzrw11TcEa4*-72t{v256oh zKzYYv4j9S@ca*yF@}UP5W+7@eRq_jh1+>{`IxSMg3$@e{z{o-$>tZ^2*OfdQ98J!C^1FzW;N)bAA? zpqwvvh}p?G?r9d4mED7BTk;iwsUQx1Sf{FTop}C(*x1C9x|Qk69hh2Iiv3Hx!rBaZ z6+^6+C~Qk${e*OoR~B*Miq6etv}rW9|NV^Xr*@erMFMY03_JOYx)<6oL}&=MC8^vt z-yYY*3^{pp&New2qy|^Q|x3E!Qa%Z_Dm@>DL+>G8QjMTly{SF;~ zTI_sHB5{`ZeDZkH- z^~R0@8safpRj@7WhA8YJ=8c~SLE41L>1odLh6g#_*+E^z-}P*ecBwN~?4E6u6WBaJ z7(n-;bbCxlN;WAq=m0ZDEk-Dym#AJvg-~4)5bV-M~+#QfkPFI(Wl4AAs`9jji zJpTNf-?( z=Hq3OrfLzm?XV&4IbfbB(fm2H@*D7KeM7rMjp_}>ERYg@*vEQ%esL%7Q`qCw4KY#vQ(^)g9*3&U_ zf{EvtOdcR{ViRJLU+>mNs|8-U9x_UM{Q4^1>}s!}0h{{rB^Av0QU_E;ay4$Os;NCl zelZpm;ouZ*arIm6Y{=qUS(f3uykO+kD751E5Zegk?Fb{-Y)!y=4NQJ$e0M|69mZF0 z8kH#x4i2uL?2)66w#2#l_{wABDD{kEWi! z^JllVUtQ@2?y)jXdq0)A*u^|sj#HQ%4>iRev#B$DM(9M56gOu7^qdr<(7@;;#pY!x z4l{>*t`fK{|B6EzSy{;~;j;_fzNy@V-VcyhtXzGfZ;}RAL_{j9$MlZcyA7nFD~x<- zVX$EveiQpNywvZX@)dN;)XSE-_S5)iSq~41!SuJi#QR%dZc0Q`EdaVB^dpKLus`*d zFuBf$XokTRM7oUe29ucT9Qs7%Y>U}1{B8V#or?KmU|jp&@#U0%k}~7B$}i6V|rD$PJY^Zcb{OTCy6}m`$4(9oY9W+nmu3M zv^SAnT*m8};dtW-g zBYNRJlV$z3@hf7~Rw0C1ZW}kZXB*=l)4^AfFJOz13oJO{ zIoz-9v>dao1#@k(P_c?& zUDiL(F**D(EV_`=$Y$mK+V$P5M=*Q?X64vf8naCM4n@2b_dCTz^1vb*KmK-)B@3Ra zXQZ`0!j($f!uDpLJgO$mX z=i?m9o?&V^#v_vFDq6~ND!FU= zNxS27j2}Hs+C3#Li;TpP@Hl#TP%-+Alt;D2edz=C>|1ZK9zN3RIr@5@So z6MrTLKtn@g8S!?a#q;sT_uMZpRB#Ie3U{cT(H^MfZv5;NBIS^#uiJatsc)yoHmIN{L!^kB~U zU4FGmy=n$-S6>i1yx_@qqem3SnBNTVyn0Z}GzT#RKFC=flO@=$->)GTHoI|IxO3q$ zI6SPKM9gbXiylFrXrA@S%CP0aj6LVbD#ei77oQ8!leZq67f%Orzp;Gnm}v3#*L^fQ zYm|}w#xdsGxefO*dKbq&*VdirZTvbG6BYRCOXJ4xefn{SL-LBm^~qY{H)zz;)AL!X zH{M3zl9}#wyr|bb7$4%BFkiw}oEe4Eik(g6;X8zo`8lUn){8G&KA?xH`|TPC2xY%!ii;srtecm~Gdx5vC_H?4zj(yd&boV^+8 z;aYzz$)kCLap!0|s7V?oz3o8eeO~*ilRn6ovHHrt?k<*Z&t{Day18%d+tyxFxa||0 zT&!M>*7IL}sMTGv!roHZ!DTDcKk&7+z_S50l3qEV<)G8N8rwh;-798m!Sg~g7)%Q2l z^glPz%tvd-RE;Ou6LuTjF#=DdXy7Pub|lS{R^BCSIXu#`jlpk{ofxCIEtRlE^ADGd zyvq~Vgwz$!!!*szV2om}T1VZBk~CS-_4Ie38gP%UDJ%grwPTsnG(@A0(m!@jRV)TG=~l1>U- zgT_cBpATTq(iVOdv|V~n^K5Uh(u6G3vQumEAYSN6I|W3JCiuMkVv-(Y1%o)qK3{n| zbXHbh!TRd5zwQ(sxThH#%=y~*rP!_cV7y|_aY#qnnwNs#I}UE{d!HOS8j$KJ`6NK( zYx|pZb|Om%UUK!LppVX7t;gWze4;{|ZHjFcqmlWMbi+eVH0uI!Z-0k9VzTolJ^lTz zlt{H5l>sWEmA>@Ri1*&1*ia(Q#;7DKE9;7ehBP?FgE%Nji1aM)d-L}5P1pYT=HxVy zFZd%$dp4?cLF(%E-}E0nA}Hp-Dw+Sb#b!d}he;@hhgEsW&po_>8tCQZxfkP)HpWgx zjgL>*EZ?Z14%ooS&ePRm2W`U?bm5jX;MnHH43-_iosM|`B?A}N3wI*Oqd+C)G>s(8 zP;e(0JnkH>jg%4p!Em~J^JYWtCbL3nTp!gCF5`eGoRHKS6N`)uz;L*Ln;&4=$OAXY z*Fr4o=1P$nmZ?ThE-qIf5;Ofn2F zv&6^Nk9~+BTpgb@#>EKs0@TayKF4)gtm|VkDPj67^|;0)mnZywB6bHuq?|*)AI359 zHVbLT8w|iz_7ICujucgWxu=t@9B1g>9i6OaYWk94T+EQ0aNg3MBpA<roQ@TBDXN ziDBf~Hh~XURw=3VTiw^CN=I=P?|mtU*U89m3?0iPwa@)}M393N_j)VZ%!9EiYQ0`M zjZ)1p6tNiszC~5j%=7lDcZB^!n+l-6R4GgvE{J(r%N65Ys?w#;8}gk zvt9e#TwG+rPu3CC-4fi~#=d~SFBiLmGaY~`SZgn4)`BKbAs~!FN5bWb;ZSZh*s*nm zBR(_Cs&*IWY;31#<MjFQbZ>4FP#2DQ3g(ci8SI^cL|S^+#VyhT5=O_r@ppCS}b&s>>2_ zY1>yjto`1!*V}0E+vn?$)_D>a)xvw9c;8#`sw|ceORSK`LCtJfMai+s3D3Zzi7I6B zKy3P*XQX-t4+n1LHZ~p(F<nP@1JFDWS@;Z#XCwd-kGmg1d^nk|pgs=hEU z1~*a3M#wrLRj?(0QC$E1{sO`;9?RkQgRQ^ua01rjsQ8{uHt02vC&6*L1}1(4LT@ojbcc$Q)9|wyebRkhUc>tE+*%G5B^hCL4d5W5<5B;g- z@A0jf*J}jI`gdA-r9QvgxrnvR=x;gvY@)HZhkwlC!EbA1-p&vccYfm+vPcAY--$sQ z+)-I$lcKcAuV0~|`QNVCg?S@*^0uLVXcAr`{(EQ%e$dQUsPNIFqL`z4J zz@+r{t1lrt$^8r*Qc6ao`D>X5P8#&G|{k z1%%iFZ+H%YMit9zU?}gQGFT}j9}r6fadattI*K-tTu2!MO+JDK?M315ww!kS+TJV z+1nfpAM+)nGI-2bqXu$@Z%>3=suWQ6gw@yH^?3a_VPvyFOc!sW9yz2~F@7$CPPANQ zo28h{e!BfM_1P?Zl9~_+u~+ypYw?1`)S06>kJq@?5`sh$zn@(o`94+C;>NB~DD#ll z(W)+MtIEajQu=T=xXx>P)~2*`Hx+a$dgm4g7%}s=bF!e23YUt~*;!*+0!yKyc3NQI zE|J7O7|dFfVlK7Mt;f~&vI1%ROZdliChS*wiQUaGOW`-l=RCqVA3RLFL1bRD6chU4 zL+Ih=m!YwYB^;xtwO(v=QX2A$m&764bXcBXsq|h^MvxS#D>c8T*Pdq_czW5;O`d%3 z!Gjx4-~6M5WKw5rEZY3n=6@Ck+N}+y$Axb%xSu=a+FPlii5eI`wIVL(9}QuvXrq>ko_t#sZwPNk>6% z3GsCfB7R{*wZ1SH5JtID>gwp&4^Gw^_>ifAHN$zgKE_DNU(-_D60=v8q#=%nT7^D8 zUzGnAb(}_7AP`HzlW*)s3fRlXB4tWzvLHpG2h&G)aaTWCJeWjx%SXui;*5UB=7?m zJHnPoG2l{snh%nZEoDVT9j;(8SE?o8{D}F5k~Hh1r5HBl_!C1KbntD)X7}eQiHy>` z6GhfaMQ_%P2vK(c#>YWYSoRbjD70;chQY#exZ-y8emP}03q7c$^L4wzfTPc;nldxU zl<+U+e#5JWzRa;nNei%Vf{O~=LqkIw(|e`vdK|wzyw`g!akn515Cjw_w&O&Fc*!W} zvNMfKSHIe#edz=gDyYU7l|V?%`_bgB^F05O*`+B>y9SI&3oH&OAvrV$I%OHj(O!6H zPi#Ut`loEwFY45I4<8Cus=|<=>|9*@fnz1u?UgTI`Zt4zd6(05)*_Q<8yg#v5lhsS z<-}qYmn6&*Ja(v(sRfR!Cjm^Sx;st~9)P<7Yg8<}xc&6>iTkO2nfEOY4i|MbwPr&@ z!|968XWL=FAm0}|!|D$gc;zK!uk?f7zqvX`K(so;7WaHBifV&@3$=apz6Evs2A_`H z`LUjC?T%H{^C+1Gm<3kL_W1$1ObpVB^AV2tg(cU~>AIe@eDI7)?_@D7DIC{TRpcsW z-QxTCz6;}+$u`L}CMlFiaeK$nO$Twe*mN(Gmd^iVDGK%TfU7y0^Z3#`5?cmo;Zj`Si@c zx?DVtGk<*Ti(0MnYn>gdglqQKxa>bKLTl8|sCwy|_mbMjQCJ;B=@@Jy)2 zf?962kKB0|8Ocs!eH?_RWniEJCj2417R@}0^E^8+EI?F7OES0s1U@GP_GHT7I@A$yFX(tko~cKfw>t?NuinKkn{<=LykAIUgG2WSSf#~#xKF-fltTZ z%0eHXL-rFXD{$|9v+-N((ZJ`E`5r%AQBqIhxS*kYRt%Z%lFKABrU}MCV ztw7B1;$zBSea&EpxI}C@DVh>xxp*3CY88hK2DA$I`O$XyE0ed{Ml)QoiHXU_4ds+= z%|`~K2>{9&%%|s8ZdR8>xVwAwJO3DvO~y06K-VJgFiQADTUjkf>{U&W5XnPov7^st zPE5wY6QfS3D|$>Te64K>8=l+~f{D8xL2X`g`2n-GuN!6j^A4%w#rBvB9+U}_2&gyy zn3mlc7Q~uxeQn76WIGPEyGU(w^O$tVA0dNFPIq<)5UoR8)iU`F!U6TwTBl8~v&$We zQtLiVJjmNYsi19xLwwT#kL?9oMo|naqF|Gz1myyNf+bJNNO?qRpXmLYH4;@pW&S#T zo5q>&y*qAg4C`zfc`H|zV~qg7bCZm1Sw;EX8o{WpPeyb% zUP4Url=l@?R0fDz3WKhiKRzc(ZZQ1lj+&PXp+oD;|)pd;)R8c&R9Tg3V3&XHwNpE=Wt<3}RUy6bF!n zPNKuALR;Z1<_L?9S3azoELAtDO#`E0;i!qrdv@y2;XpjCU`A|gto>@gJU7plU)jz| zpXPWnThvAz-;J?|eQF!lq}x#n-|af0W#V?F;!Db03g5ro>`zaS6+*2;I5$6tPKs*T zdfj&V+7$AAn0}P~Cu<^DgeyJv`t>YH=Ikj$qV2tV49a_MZWPqantOY0?sT3RO&Mxx z0|Mb4iVV5K+%-dvU;+SP~mY9noY;)%y)fZRI8;x%%iMY#27aK1@Yu zq?l0CDl687>v&OIY67Wv_2PN!g;dM=uXpx8^~|vvIJ5-W+OG z8hk3hx!&HRlPP#`nnK*(K3W4zejX(1usHoWFXXlyT&+txCWp6J%`D@emB=i4w@)*# zsLG&b@Num8i7h!3S1H^!=$EvqZ(TVBVc6S2mUp&p)psY4dwXhxw5b&=RQO-%b>UbA8oUT8rFT36JaFZ z_~_qewYi-g&`Nl1app_=Wq7q67aP-=Pw#dmIb#=9R>of6kBhoGWtj=?2~X0X7p?LO zh)QS+!vD5I$GyAq%)xTkNwhI*g9G&gV#yHv<%cy%5wpW4q?YV4{pAyYsLNEr8)MY# zAjeV2>H^GwGI$Hde5?@Y?_ud-b{0zMTX~*gdjy;j zCZZdYs^@^G6cn#9vUfXv1+5knLh$s+5!2kgHlC!a%TnfSvIbJB>n$0&HJ%Nlet|t?QgMVBH z&NNXie}5_3cvYvh5sfH4{a2ZIr+dlG%C^n?^aGr)r=vZ(N#c1N33X8zLqRC;kkA{Q|AjaXE{EEc#S?fqM!4Rz2P@8ZO>jgzPW>H3eY!o2h7T#U#LUkK0XEAI4 zT+j~ekee)&DV$E-ys;RqvuSU$?j=7n?LO>o= zyhY)bG*BWuVd-6ZS`iwm#71GbgPzrXCL2S?(wiS0wGdujEC6kGE`^uCX&{Backb_e zco`c7fhu2_te~ag_IU9X7wlpSK{o<%6H7BP+KJHAva8x_6sIlo3pjVlc9M58T=uko z*P^ztu<6mGa^9kK9yD^RWURq!ALf%3%70_P=oZ`p=u&@?q;}OnsDVn~#xt S0C=|?P*ZxKSS@cE`o93Jpg4E{ diff --git a/Textures/UI/Issues/PregnancyAnimal.png b/Textures/UI/Issues/PregnancyAnimal.png index 4d0c026f1c1fa7c6fdddb997f1d18e3341517bd6..9b102c2a58764c9dbf3a74c56a3e8965289d1445 100644 GIT binary patch literal 9556 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 literal 15339 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%0Asc+&<^QR_i%j?FQ*g@nbmyjFtZ;NZ=o&J<^( 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 b{(CaD@LN2i?X*xi1b*ph8EKZNJ6!ueTlfZE diff --git a/Textures/UI/Issues/SexProselytizer.png b/Textures/UI/Issues/SexProselytizer.png index b072dfc5cd9774a846c46b30d8849a44b1f987e9..66c76128b606ee23bb3e092ffe59424d326c5bb7 100644 GIT binary patch literal 7180 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 b+2u0xI4Q%Q95?)%t^qcd4i?YMd}#j%)-xrT From f472312eb92f4c76b983e9bb8eb7d216231c91bb Mon Sep 17 00:00:00 2001 From: ElToro Date: Wed, 15 Jan 2025 18:25:54 +0300 Subject: [PATCH 14/64] Even more icons --- .../PreceptDefs/Precepts_Masturbation.xml | 2 +- 1.5/Defs/PreceptDefs/Precepts_Sex.xml | 2 +- 1.5/Defs/PreceptDefs/Precepts_Tame.xml | 25 ++++++++++++++---- Textures/UI/Issues/SexType.png | Bin 0 -> 13953 bytes 4 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 Textures/UI/Issues/SexType.png diff --git a/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml b/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml index bb51c17..695f100 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml @@ -5,7 +5,7 @@ Masturbation - UI/Issues/Bestiality + UI/Issues/SexType diff --git a/1.5/Defs/PreceptDefs/Precepts_Sex.xml b/1.5/Defs/PreceptDefs/Precepts_Sex.xml index f4f9e0d..cbfdf9c 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Sex.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Sex.xml @@ -5,7 +5,7 @@ Sextype - UI/Issues/Bestiality + UI/Issues/SexType diff --git a/1.5/Defs/PreceptDefs/Precepts_Tame.xml b/1.5/Defs/PreceptDefs/Precepts_Tame.xml index e7d5e8b..ad4e5f8 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Tame.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Tame.xml @@ -3,8 +3,22 @@ AnimalConnection_Lovin AnimalConnection - - We bond with our animals through physical intercourse. + + We tame and train our animals through acts of physical intimacy. + Medium + + + + + + + + + + AnimalConnection_LovinBond + AnimalConnection + + We bond and teach our animals through shared acts of physical intimacy. High
  • Zoophile
  • @@ -13,8 +27,9 @@
  • Zoophile
  • - 1.2 - 1.2 + 2 + 1.5 + 2 -
    +
    \ No newline at end of file diff --git a/Textures/UI/Issues/SexType.png b/Textures/UI/Issues/SexType.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd4e639c28277d53bb931aaada85554db1f01d4 GIT binary patch literal 13953 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 literal 0 HcmV?d00001 From a09ef22e07f7aba3457f5510fe37ed343f66816c Mon Sep 17 00:00:00 2001 From: ElToro Date: Fri, 17 Jan 2025 00:15:18 +0300 Subject: [PATCH 15/64] New icons. New precepts - Bestial Breeding (4 levels), Animal Connection (2 levels), Bestial Pregnancy (3 levels). Increased and Decreased Vaginal Sex chances based on Bestial Breeding, Bestial Pregnancy, and normal pregnancy. Sexual Taming. Lots of flavor text for animal sex talk during sexual taming. New thoughts and social opinion for Bestial Breeding, Bestial Pregnancy. --- .../PreceptDefs/Precepts_BestialBreeding.xml | 196 ++++++++++++++++++ Source/IdeologyAddon/Harmony.cs | 11 +- Source/IdeologyAddon/IdeoUtility.cs | 35 +++- Source/IdeologyAddon/IdeologyAddon.csproj | 29 +-- .../ThoughtWorker_Precept_BestialBreeding.cs | 32 +++ ...htWorker_Precept_BestialBreeding_Social.cs | 38 ++++ Source/IdeologyAddon/RsiDefOf.cs | 4 + .../DecreasedVaginalPartKindUsageRule.cs | 97 +++++++++ .../FocusedVaginalPartKindUsageRule.cs | 89 ++++++-- .../IncreasedVaginalPartKindUsageRule.cs | 79 +++++-- .../MaleDecreasedVaginalPartKindUsageRule.cs | 97 +++++++++ .../MaleFocusedVaginalPartKindUsageRule.cs | 99 +++++++++ .../MaleIncreasedVaginalPartKindUsageRule.cs | 84 ++++++++ 13 files changed, 830 insertions(+), 60 deletions(-) create mode 100644 1.5/Defs/PreceptDefs/Precepts_BestialBreeding.xml create mode 100644 Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding.cs create mode 100644 Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding_Social.cs create mode 100644 Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs create mode 100644 Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs create mode 100644 Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs create mode 100644 Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs diff --git a/1.5/Defs/PreceptDefs/Precepts_BestialBreeding.xml b/1.5/Defs/PreceptDefs/Precepts_BestialBreeding.xml new file mode 100644 index 0000000..5730779 --- /dev/null +++ b/1.5/Defs/PreceptDefs/Precepts_BestialBreeding.xml @@ -0,0 +1,196 @@ + + + + + + + + + BestialBreeding + + UI/Issues/BestialBreeding + + + + + BestialBreeding_Neutral + BestialBreeding + + Impregnating an animal is simply a natural and unremarkable aspect of life. + Low + 30 + + + + + + BestialBreeding_Encouraged + BestialBreeding + Medium + 40 + + Breeding animals is valued for sustaining their population, while also embracing the shared carnal pleasure it brings. + +
  • + BestialBreeding_Liked +
  • +
  • + BestialBreeding_Liked_Social +
  • +
    +
    + + + BestialBreeding_Required + BestialBreeding + High + 40 + + Breeding animals is not just encouraged — it is an essential practice to sustain their population, enhance the colony's genetic potential through hybrids, and indulge in the carnal pleasures of the act. + +
  • + BestialBreeding_Respected +
  • +
  • + BestialBreeding_Respected_Social +
  • +
    +
    + + + BestialBreeding_Horrible + BestialBreeding + High + 50 + + Breeding animals is an unnatural and vile act, degrading both the animal and the participant. It serves no purpose other than corruption and defilement. + +
  • + BestialBreeding_Horrible +
  • +
  • + BestialBreeding_Horrible_Social +
  • +
    +
    + + + BestialBreeding_Disliked + BestialBreeding + High + 50 + + Breeding animals is a practice that, while not entirely abhorrent, is generally disliked. It should be avoided whenever possible, as there are more acceptable alternatives. + +
  • + BestialBreeding_Disliked +
  • +
  • + BestialBreeding_Disliked_Social +
  • +
    +
    + + + + BestialBreeding_Respected + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding + Thought_Situational + +
  • + + I've impregnated an animal. This ensures the colony's survival and strengthens its genetic potential. The pleasure I feel is secondary to our future. + 4 +
  • +
    +
    + + + BestialBreeding_Respected_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social + Thought_SituationalSocial + +
  • + + 8 +
  • +
    +
    + + + BestialBreeding_Liked + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding + Thought_Situational + +
  • + + I've impregnated an animal. It felt good, and it will help with the animal population. + 2 +
  • +
    +
    + + + BestialBreeding_Liked_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social + Thought_SituationalSocial + +
  • + + 4 +
  • +
    +
    + + + + + BestialBreeding_Horrible_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social + Thought_SituationalSocial + +
  • + + -8 +
  • +
    +
    + + + BestialBreeding_Horrible + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding + Thought_Situational + +
  • + + I've impregnated an animal. This feels disgusting... + -4 +
  • +
    +
    + + + BestialBreeding_Disliked_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social + Thought_SituationalSocial + +
  • + + -4 +
  • +
    +
    + + + BestialBreeding_Disliked + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding + Thought_Situational + +
  • + + I've impregnated an animal. It feels wrong, but there was some pleasure in it. + -2 +
  • +
    +
    +
    \ No newline at end of file diff --git a/Source/IdeologyAddon/Harmony.cs b/Source/IdeologyAddon/Harmony.cs index de3237d..ba830af 100644 --- a/Source/IdeologyAddon/Harmony.cs +++ b/Source/IdeologyAddon/Harmony.cs @@ -6,6 +6,8 @@ using rjw; using System.Collections.Generic; using System.Reflection; using Verse; +using rjw.Modules.Interactions.Rules.PartBlockedRules; +using rjw.Modules.Interactions.Internals; namespace RJWSexperience.Ideology { @@ -15,15 +17,20 @@ namespace RJWSexperience.Ideology static Harmony() { new HarmonyLib.Harmony("RJW_Sexperience.Ideology").PatchAll(Assembly.GetExecutingAssembly()); - } + InjectIntoRjwInteractionServices(); + } private static void InjectIntoRjwInteractionServices() { ILog log = LogManager.GetLogger("StaticConstructorOnStartup"); List partKindUsageRules = Unprivater.GetProtectedValue>("_partKindUsageRules", typeof(PartPreferenceDetectorService)); + partKindUsageRules.Add(new MaleDecreasedVaginal()); + partKindUsageRules.Add(new DecreasedVaginal()); + partKindUsageRules.Add(new MaleIncreasedVaginal()); partKindUsageRules.Add(new IncreasedVaginal()); + partKindUsageRules.Add(new MaleFocusedVaginal()); partKindUsageRules.Add(new FocusedVaginal()); - log.Message("Added 2 rules to PartPreferenceDetectorService._partKindUsageRules"); + log.Message("Added 4 rules to PartPreferenceDetectorService._partKindUsageRules"); } } } diff --git a/Source/IdeologyAddon/IdeoUtility.cs b/Source/IdeologyAddon/IdeoUtility.cs index a744c12..cd08452 100644 --- a/Source/IdeologyAddon/IdeoUtility.cs +++ b/Source/IdeologyAddon/IdeoUtility.cs @@ -124,13 +124,12 @@ namespace RJWSexperience.Ideology pregnancy = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.PregnantHuman); } - // Check if the pregnancy hediff has a father field or equivalent logic if (pregnancy is Hediff_BasePregnancy RJWPregnancy) { // RJW pregnancy Pawn father = RJWPregnancy.father; - if (father != null && father.def.defName != "Human") + if (father != null && xxx.is_human(father)) { return pregnancy.Visible == true; } @@ -139,12 +138,42 @@ namespace RJWSexperience.Ideology { // Biotech pregnancy Pawn father = biotechPregnancy.Father; - if (father != null && father.def.defName != "Human") + if (father != null && xxx.is_human(father)) { return pregnancy.Visible == true; } } return false; } + public static bool IsFatherOfPregnancy(Pawn pawn, Pawn possibleFather) + { + // Iterate through all hediffs in the pawn's hediff set to find pregnancy-related ones + foreach (var hediff in pawn.health.hediffSet.hediffs) + { + // Check for RJW pregnancy + if (hediff is Hediff_BasePregnancy RJWPregnancy) + { + // RJW pregnancy - check the father + Pawn father = RJWPregnancy.father; + if (father != null && father == possibleFather && hediff.Visible) + { + return true; + } + } + // Check for Biotech pregnancy + else if (hediff is Hediff_Pregnant biotechPregnancy) + { + // Biotech pregnancy - check the father + Pawn father = biotechPregnancy.Father; + if (father != null && father == possibleFather && hediff.Visible) + { + return true; + } + } + } + + // If no matching pregnancy found, return false + return false; + } } } diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index cd0fadb..39c228a 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -30,6 +30,13 @@ + + + ..\..\..\rjw-5.6\1.5\Assemblies\RJW.dll + False + + + @@ -44,26 +51,22 @@ - - - - ..\..\..\rjw\$(TargetGameVersion)\Assemblies\RJW.dll - False - - - + - + - + + + + + false + + diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding.cs new file mode 100644 index 0000000..8729dad --- /dev/null +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding.cs @@ -0,0 +1,32 @@ +using RimWorld; +using rjw; +using System.Linq; +using Verse; +using Verse.Noise; + +namespace RJWSexperience.Ideology.PreceptWorkers +{ + public class ThoughtWorker_Precept_BestialBreeding : ThoughtWorker_Precept + { + protected override ThoughtState ShouldHaveThought(Pawn p) + { + if (p?.DevelopmentalStage == DevelopmentalStage.Adult) + { + Map map = p.Map; + if (map != null) + { + foreach (var pawnOnMap in map.mapPawns.AllPawns.Where(x => xxx.is_animal(x) && PawnExtensions.IsVisiblyPregnant (x))) + { + if (pawnOnMap != p && IdeoUtility.IsFatherOfPregnancy(pawnOnMap, p)) // Check if this pawn is the father of p + { + return ThoughtState.ActiveDefault; // Active thought if the pawn is the father + } + } + } + } + + // Return default (inactive) if no valid conditions were met + return ThoughtState.Inactive; + } + } +} diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding_Social.cs new file mode 100644 index 0000000..ed3c346 --- /dev/null +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding_Social.cs @@ -0,0 +1,38 @@ +using RimWorld; +using rjw; +using System.Linq; +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_BestialBreeding_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 mainPawn, Pawn referencedPawn) + { + if (referencedPawn?.DevelopmentalStage == DevelopmentalStage.Adult && mainPawn?.DevelopmentalStage == DevelopmentalStage.Adult) + { + Map map = referencedPawn.Map; + if (map != null) + { + foreach (var pawnOnMap in map.mapPawns.AllPawns.Where(x => xxx.is_animal(x) && PawnExtensions.IsVisiblyPregnant(x))) + { + if (pawnOnMap != referencedPawn && IdeoUtility.IsFatherOfPregnancy(pawnOnMap, referencedPawn)) // Check if this pawn is the father of p + { + return ThoughtState.ActiveDefault; // Active thought if the pawn is the father + } + } + } + } + // Return default (inactive) if no valid conditions were met + return ThoughtState.Inactive; + } + } +} diff --git a/Source/IdeologyAddon/RsiDefOf.cs b/Source/IdeologyAddon/RsiDefOf.cs index 9754e22..7c36db8 100644 --- a/Source/IdeologyAddon/RsiDefOf.cs +++ b/Source/IdeologyAddon/RsiDefOf.cs @@ -55,6 +55,10 @@ namespace RJWSexperience.Ideology public static readonly PreceptDef PregnancyAnimal_NoRules; public static readonly PreceptDef AnimalConnection_Lovin; public static readonly PreceptDef AnimalConnection_LovinBond; + public static readonly PreceptDef BestialBreeding_Disliked; + public static readonly PreceptDef BestialBreeding_Horrible; + public static readonly PreceptDef BestialBreeding_Required; + public static readonly PreceptDef BestialBreeding_Encouraged; } [DefOf] diff --git a/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs new file mode 100644 index 0000000..b042078 --- /dev/null +++ b/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs @@ -0,0 +1,97 @@ +using RimWorld; +using rjw; +using rjw.Modules.Interactions.Contexts; +using rjw.Modules.Interactions.Enums; +using rjw.Modules.Interactions.Rules.PartKindUsageRules; +using rjw.Modules.Shared; +using RJWSexperience.Ideology.PreceptWorkers; +using System.Collections.Generic; +using System.Linq; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class DecreasedVaginal : IPartPreferenceRule + { + private bool DecreasedWillingAndAble(Pawn fucker, Pawn fucked) + { + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Horrible + }; + + var validAnimalPrecepts = new HashSet + { + RsiDefOf.Precept.PregnancyAnimal_Horrible + }; + + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Horrible, + RsiDefOf.Precept.BestialBreeding_Disliked + }; + + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && + validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidBreedingPreceptsForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + bool result = false; + + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"DecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) + { + ModLog.Message($"DecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } + + return result; + } + + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (DecreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + { + ModLog.Message($"DecreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (DecreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + { + ModLog.Message($"DecreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.AlmostNever, LewdablePartKind.Vagina); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Breasts); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Anus); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Mouth); + } + } +} diff --git a/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs index 701e274..44b5b32 100644 --- a/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs @@ -5,48 +5,95 @@ using rjw.Modules.Interactions.Enums; using rjw.Modules.Interactions.Rules.PartKindUsageRules; using rjw.Modules.Shared; using RJWSexperience.Ideology.PreceptWorkers; +using System; using System.Collections.Generic; +using System.Linq; using Verse; namespace RJWSexperience.Ideology { public class FocusedVaginal : IPartPreferenceRule { - private const float vaginal_multiplier = Multipliers.DoubledPlus; - private const float other_multiplier = Multipliers.Rare; - - private bool FocusedWillingAndAble(Pawn fucker, Pawn fucked) - { - // Define the set of valid precepts - var validPrecepts = new HashSet + private bool FocusedWillingAndAble(Pawn fucker, Pawn fucked) + { + // Define the set of valid precepts + var validHumanPrecepts = new HashSet { RsiDefOf.Precept.Pregnancy_Required, - RsiDefOf.Precept.PregnancyAnimal_Required }; - // Check if any of the pawn's precepts match the valid ones - bool hasValidPrecept = fucked.Ideo?.PreceptsListForReading.Any(precept => validPrecepts.Contains(precept.def)) == true; + var validAnimalPrecepts = new HashSet + { + RsiDefOf.Precept.PregnancyAnimal_Required, + }; - return - !IdeoUtility.IsVisiblyPregnant(fucked) && - PregnancyHelper.CanImpregnate(fucker, fucked) && - hasValidPrecept; + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Required, + }; + + // Check precepts for the pawns + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && + validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + // Determine if conditions are met + bool result = false; + + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"FocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) + { + ModLog.Message($"FocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"FocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } + + return result; } public IEnumerable> ModifiersForDominant(InteractionContext context) { if (FocusedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - yield return new Weighted(vaginal_multiplier, LewdablePartKind.Vagina); - yield return new Weighted(other_multiplier, LewdablePartKind.Anus); - yield return new Weighted(other_multiplier, LewdablePartKind.Mouth); + { + ModLog.Message($"FocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have focused vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); } public IEnumerable> ModifiersForSubmissive(InteractionContext context) { if (FocusedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - yield return new Weighted(vaginal_multiplier, LewdablePartKind.Vagina); - yield return new Weighted(other_multiplier, LewdablePartKind.Anus); - yield return new Weighted(other_multiplier, LewdablePartKind.Mouth); + { + ModLog.Message($"FocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have focused vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Vagina); + yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Anus); + yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Mouth); } } -} +} \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs index 0fe2f9e..d1f136c 100644 --- a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs @@ -6,42 +6,79 @@ using rjw.Modules.Interactions.Rules.PartKindUsageRules; using rjw.Modules.Shared; using RJWSexperience.Ideology.PreceptWorkers; using System.Collections.Generic; +using System.Linq; using Verse; namespace RJWSexperience.Ideology { public class IncreasedVaginal : IPartPreferenceRule { - private const float vaginal_multiplier = Multipliers.Doubled; - - private bool WillingAndAble(Pawn fucker, Pawn fucked) - { - // Define the set of valid precepts - var validPrecepts = new HashSet + private bool IncreasedWillingAndAble(Pawn fucker, Pawn fucked) + { + // Define the set of valid precepts + var validHumanPrecepts = new HashSet { - RsiDefOf.Precept.Pregnancy_Holy, RsiDefOf.Precept.Pregnancy_Elevated, - }; - - // Check if any of the pawn's precepts match the valid ones - bool hasValidPrecept = fucked.Ideo?.PreceptsListForReading.Any(precept => validPrecepts.Contains(precept.def)) == true; - - return - !IdeoUtility.IsVisiblyPregnant(fucked) && - PregnancyHelper.CanImpregnate(fucker, fucked) && - hasValidPrecept; + RsiDefOf.Precept.Pregnancy_Holy, + }; + + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Encouraged, + }; + + // Check precepts for the pawns + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + // Determine if conditions are met + bool result = false; + + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"IncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } + + return result; } public IEnumerable> ModifiersForDominant(InteractionContext context) { - if (WillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - yield return new Weighted(vaginal_multiplier, LewdablePartKind.Vagina); + if (IncreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + { + ModLog.Message($"IncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); } public IEnumerable> ModifiersForSubmissive(InteractionContext context) { - if (WillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - yield return new Weighted(vaginal_multiplier, LewdablePartKind.Vagina); + if (IncreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + { + ModLog.Message($"IncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.Doubled, LewdablePartKind.Vagina); } } -} +} \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs new file mode 100644 index 0000000..cc7408d --- /dev/null +++ b/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs @@ -0,0 +1,97 @@ +using RimWorld; +using rjw; +using rjw.Modules.Interactions.Contexts; +using rjw.Modules.Interactions.Enums; +using rjw.Modules.Interactions.Rules.PartKindUsageRules; +using rjw.Modules.Shared; +using RJWSexperience.Ideology.PreceptWorkers; +using System.Collections.Generic; +using System.Linq; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class MaleDecreasedVaginal : IPartPreferenceRule + { + private bool DecreasedWillingAndAble(Pawn fucker, Pawn fucked) + { + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Horrible + }; + + var validAnimalPrecepts = new HashSet + { + RsiDefOf.Precept.PregnancyAnimal_Horrible + }; + + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Horrible, + RsiDefOf.Precept.BestialBreeding_Disliked + }; + + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && + validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidBreedingPreceptsForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + bool result = false; + + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"MaleDecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) + { + ModLog.Message($"MaleDecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } + + return result; + } + + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (DecreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + { + ModLog.Message($"MaleDecreasedVaginal Dominant: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (DecreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + { + ModLog.Message($"MaleDecreasedVaginal Submissive: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.AlmostNever, LewdablePartKind.Vagina); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Breasts); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Anus); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Mouth); + } + } +} diff --git a/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs new file mode 100644 index 0000000..db2b4ea --- /dev/null +++ b/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs @@ -0,0 +1,99 @@ +using RimWorld; +using rjw; +using rjw.Modules.Interactions.Contexts; +using rjw.Modules.Interactions.Enums; +using rjw.Modules.Interactions.Rules.PartKindUsageRules; +using rjw.Modules.Shared; +using RJWSexperience.Ideology.PreceptWorkers; +using System; +using System.Collections.Generic; +using System.Linq; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class MaleFocusedVaginal : IPartPreferenceRule + { + private bool MaleFocusedWillingAndAble(Pawn fucker, Pawn fucked) + { + // Define the set of valid precepts + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Required, + }; + + var validAnimalPrecepts = new HashSet + { + RsiDefOf.Precept.PregnancyAnimal_Required, + }; + + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Required, + }; + + // Check precepts for the pawns + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && + validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + // Determine if conditions are met + bool result = false; + + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"MaleFocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) + { + ModLog.Message($"MaleFocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"MaleFocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } + + return result; + } + + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (MaleFocusedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + { + ModLog.Message($"MaleFocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (MaleFocusedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + { + ModLog.Message($"MaleFocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Vagina); + yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Anus); + yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Mouth); + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs new file mode 100644 index 0000000..2b6f702 --- /dev/null +++ b/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs @@ -0,0 +1,84 @@ +using RimWorld; +using rjw; +using rjw.Modules.Interactions.Contexts; +using rjw.Modules.Interactions.Enums; +using rjw.Modules.Interactions.Rules.PartKindUsageRules; +using rjw.Modules.Shared; +using RJWSexperience.Ideology.PreceptWorkers; +using System.Collections.Generic; +using System.Linq; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class MaleIncreasedVaginal : IPartPreferenceRule + { + private bool IncreasedWillingAndAble(Pawn fucker, Pawn fucked) + { + // Define the set of valid precepts + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Elevated, + RsiDefOf.Precept.Pregnancy_Holy, + }; + + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Encouraged, + }; + + // Check precepts for the pawns + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + // Determine if conditions are met + bool result = false; + + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"MaleIncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } + + return result; + } + + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (IncreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + { + ModLog.Message($"MaleIncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (IncreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + { + ModLog.Message($"MaleIncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.Doubled, LewdablePartKind.Vagina); + } + } +} \ No newline at end of file From 7c894f792c57ceb4ec3d2f792107264a1aef3970 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Thu, 9 Jan 2025 21:48:08 +0500 Subject: [PATCH 16/64] ci: no cache for release job --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e1b3eaf..56badad 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -64,6 +64,7 @@ build: release_dev: stage: deploy needs: [build] + cache: [] rules: - if: $CI_COMMIT_TAG when: never # Do not run this job when a tag is created manually From 586304c4857d4627e1cc9844c9c8623ae032314d Mon Sep 17 00:00:00 2001 From: amevarashi Date: Thu, 9 Jan 2025 21:52:12 +0500 Subject: [PATCH 17/64] ci: don't do builds on tags --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 56badad..da2e98c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,6 +42,8 @@ cache: build: stage: build rules: + - if: $CI_COMMIT_TAG + when: never # Do not run this job when a tag is created manually - if: $CI_COMMIT_BRANCH != "master" # ### Build all projects discovered from solution file. script: From dacae730b8101ec959cc19aa609e57a9a1a0d09b Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 25 Jan 2025 14:37:21 +0500 Subject: [PATCH 18/64] Revert IdeologyAddon.csproj --- Source/IdeologyAddon/IdeologyAddon.csproj | 29 ++++++++++------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index 39c228a..cd0fadb 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -30,13 +30,6 @@ - - - ..\..\..\rjw-5.6\1.5\Assemblies\RJW.dll - False - - - @@ -51,22 +44,26 @@ - + + + + ..\..\..\rjw\$(TargetGameVersion)\Assemblies\RJW.dll + False + + + - + - + - - - - false - - From 334cfe48ae52a8c947025bf221705d69fc6fe71c Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 25 Jan 2025 15:19:06 +0500 Subject: [PATCH 19/64] ci: maybe fixed not building in the merge pipelines --- .gitlab-ci.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index da2e98c..e00d464 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,14 +42,21 @@ cache: build: stage: build rules: + # Do not build on tags. Release DLLs are commited - if: $CI_COMMIT_TAG - when: never # Do not run this job when a tag is created manually - - if: $CI_COMMIT_BRANCH != "master" + when: never + # Build on commits to a non-default branch with version-suffix + - if: $CI_COMMIT_BRANCH && + $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH + variables: + VERSION_SUFFIX: "--version-suffix ${CI_COMMIT_BRANCH}" + # Just build in any other case + - when: always # ### Build all projects discovered from solution file. script: - 'cd $SOURCE_CODE_PATH' - 'dotnet restore --packages ../$NUGET_PACKAGES_DIRECTORY' - - 'dotnet build -c Release --no-restore --version-suffix $CI_COMMIT_BRANCH' + - 'dotnet build -c Release --no-restore ${VERSION_SUFFIX}' - 'cd $CI_PROJECT_DIR/About' - 'mv -f RealAbout.xml About.xml' artifacts: From 145eaccb4234833c5494f301978ef3d363239fc1 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 25 Jan 2025 20:11:20 +0500 Subject: [PATCH 20/64] Format XMLs --- 1.5/Defs/DutyDefs/Duties_Rituals_sex.xml | 34 +- .../Interactions_SexTameFemale.xml | 62 +- .../Interactions_SexTameMale.xml | 70 +- .../Interactions_Speech_sex.xml | 1 - 1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml | 18 +- 1.5/Defs/JobDefs/Jobs_Ritual_Sex.xml | 77 +- .../PreceptDefs/Precepts_BestialBreeding.xml | 72 +- 1.5/Defs/PreceptDefs/Precepts_Bestiality.xml | 9 +- 1.5/Defs/PreceptDefs/Precepts_Incest.xml | 1 - .../PreceptDefs/Precepts_PregnancyAnimal.xml | 27 +- 1.5/Defs/PreceptDefs/Precepts_Rape.xml | 12 +- 1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml | 18 +- 1.5/Defs/PreceptDefs/Precepts_Sex.xml | 18 +- .../PreceptDefs/Precepts_SexProselytizing.xml | 3 +- 1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml | 15 +- .../PreceptDefs/Precepts_SocialAffection.xml | 108 +- 1.5/Defs/PreceptDefs/Precepts_Submissive.xml | 14 +- 1.5/Defs/PreceptDefs/Precepts_Tame.xml | 15 +- 1.5/Defs/PreceptDefs/Precepts_Virginity.xml | 3 +- .../RitualPatternDefs/RitualPatterns_sex.xml | 7 +- .../PreconfiguredIdeos/IdeoPresetDefs_sex.xml | 1 + 1.5/Defs/Rituals/Ritual_Behaviors_sex.xml | 14 +- 1.5/Defs/Rituals/Ritual_Outcomes_sex.xml | 33 +- 1.5/Defs/Rituals/Ritual_Targets_sex.xml | 1 + 1.5/Defs/ThingDefs/Buildings_Ideo_sex.xml | 8 +- .../Thoughts_Ritual_sex_Quality.xml | 2 +- 1.5/Patches/Core_Thoughts_Memory_Death.xml | 121 +- 1.5/Patches/Core_Thoughts_Memory_Lost.xml | 121 +- 1.5/Patches/Core_Thoughts_Memory_Misc.xml | 192 ++- .../Core_Thoughts_Situation_Special.xml | 40 +- 1.5/Patches/InteractionDef/Masturbation.xml | 20 +- 1.5/Patches/InteractionDef/Necro.xml | 40 +- 1.5/Patches/InteractionDef/Rape.xml | 150 +- 1.5/Patches/InteractionDef/Rape_Reverse.xml | 150 +- 1.5/Patches/InteractionDef/Sex.xml | 130 +- 1.5/Patches/InteractionDef/Sex_Reverse.xml | 130 +- 1.5/Patches/RJW_Drugs.xml | 84 +- 1.5/Patches/RJW_Precepts.xml | 44 +- 1.5/Patches/RJW_StatDefs_Ideo.xml | 18 +- 1.5/Patches/RJW_ThoughtDefs.xml | 212 +-- 1.5/Patches/RJW_Thought_Family_Beast.xml | 1367 ++++++++--------- README.md | 2 +- 42 files changed, 1715 insertions(+), 1749 deletions(-) diff --git a/1.5/Defs/DutyDefs/Duties_Rituals_sex.xml b/1.5/Defs/DutyDefs/Duties_Rituals_sex.xml index 87b4ade..67842dd 100644 --- a/1.5/Defs/DutyDefs/Duties_Rituals_sex.xml +++ b/1.5/Defs/DutyDefs/Duties_Rituals_sex.xml @@ -1,6 +1,6 @@ - - + + Gangbang_Rape HighPriority @@ -12,20 +12,20 @@
  • 0.25 -
  • +
  • - Jog - 50~250 -
  • + Jog + 50~250 +
    - + Gangbang_Consensual HighPriority @@ -37,16 +37,16 @@
  • 0.25 -
  • +
  • - Jog - 50~250 -
  • + Jog + 50~250 +
    @@ -57,11 +57,11 @@ Off -
  • +
  • - + DrugOrgy HighPriority @@ -73,16 +73,16 @@
  • 0.15 -
  • +
  • - Jog - 50~250 -
  • + Jog + 50~250 +
    diff --git a/1.5/Defs/InteractionDefs/Interactions_SexTameFemale.xml b/1.5/Defs/InteractionDefs/Interactions_SexTameFemale.xml index b831bb4..648c783 100644 --- a/1.5/Defs/InteractionDefs/Interactions_SexTameFemale.xml +++ b/1.5/Defs/InteractionDefs/Interactions_SexTameFemale.xml @@ -1,35 +1,35 @@ - + - - - AnimalSexTameChatFemale - - Things/Mote/SpeechSymbols/AnimalChat - Animals - 40 - - -
  • r_logentry->[INITIATOR_nameDef] [zooact] [RECIPIENT_nameDef].
  • -
  • r_logentry->[INITIATOR_nameDef] tried to make [RECIPIENT_nameDef] sit still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • -
  • r_logentry->[INITIATOR_nameDef] attempted to hold [RECIPIENT_nameDef] still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • -
  • r_logentry->[INITIATOR_nameDef] [genact] [RECIPIENT_nameDef]'s genitals.
  • -
  • r_logentry->[INITIATOR_nameDef] allowed [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • -
  • r_logentry->[INITIATOR_nameDef] encouraged [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • + + + AnimalSexTameChatFemale + + Things/Mote/SpeechSymbols/AnimalChat + Animals + 40 + + +
  • r_logentry->[INITIATOR_nameDef] [zooact] [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] tried to make [RECIPIENT_nameDef] sit still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] attempted to hold [RECIPIENT_nameDef] still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] [genact] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] allowed [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] encouraged [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • -
  • genact->gently touched
  • -
  • genact->gently caressed
  • -
  • genact->tried to kiss
  • -
  • genact->tried to lick
  • -
  • genplan->trying to lick
  • -
  • genplan->trying to touch
  • -
  • genplan->trying to caresse
  • -
  • zooplan->to lick
  • -
  • zooplan->to taste
  • -
  • zooplan->to sniff
  • -
  • zooact->showed [INITIATOR_possessive] genitals to
  • -
  • zooact->presented [INITIATOR_possessive] genitals to
  • -
    -
    -
    +
  • genact->gently touched
  • +
  • genact->gently caressed
  • +
  • genact->tried to kiss
  • +
  • genact->tried to lick
  • +
  • genplan->trying to lick
  • +
  • genplan->trying to touch
  • +
  • genplan->trying to caresse
  • +
  • zooplan->to lick
  • +
  • zooplan->to taste
  • +
  • zooplan->to sniff
  • +
  • zooact->showed [INITIATOR_possessive] genitals to
  • +
  • zooact->presented [INITIATOR_possessive] genitals to
  • +
    +
    +
    \ No newline at end of file diff --git a/1.5/Defs/InteractionDefs/Interactions_SexTameMale.xml b/1.5/Defs/InteractionDefs/Interactions_SexTameMale.xml index a80068d..9a76771 100644 --- a/1.5/Defs/InteractionDefs/Interactions_SexTameMale.xml +++ b/1.5/Defs/InteractionDefs/Interactions_SexTameMale.xml @@ -1,39 +1,39 @@ - + - - - AnimalSexTameChatMale - - Things/Mote/SpeechSymbols/AnimalChat - Animals - 40 - - -
  • r_logentry->[INITIATOR_nameDef] [zooact] [RECIPIENT_nameDef].
  • -
  • r_logentry->[INITIATOR_nameDef] tried to make [RECIPIENT_nameDef] sit still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • -
  • r_logentry->[INITIATOR_nameDef] attempted to hold [RECIPIENT_nameDef] still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • -
  • r_logentry->[INITIATOR_nameDef] [genact] [RECIPIENT_nameDef]'s genitals.
  • -
  • r_logentry->[INITIATOR_nameDef] allowed [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • -
  • r_logentry->[INITIATOR_nameDef] encouraged [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • + + + AnimalSexTameChatMale + + Things/Mote/SpeechSymbols/AnimalChat + Animals + 40 + + +
  • r_logentry->[INITIATOR_nameDef] [zooact] [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] tried to make [RECIPIENT_nameDef] sit still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] attempted to hold [RECIPIENT_nameDef] still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] [genact] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] allowed [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] encouraged [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • -
  • genact->gently touched
  • -
  • genact->gently caressed
  • -
  • genact->firmly stroked
  • -
  • genact->gently stroked
  • -
  • genact->tried to kiss
  • -
  • genact->tried to lick
  • -
  • genact->tried to taste
  • -
  • zooplan->to lick
  • -
  • zooplan->to taste
  • -
  • zooplan->to sniff
  • -
  • genplan->trying to lick
  • -
  • genplan->trying to touch
  • -
  • genplan->trying to stroke
  • -
  • genplan->trying to taste
  • -
  • zooact->showed [INITIATOR_possessive] genitals to
  • -
  • zooact->presented [INITIATOR_possessive] genitals to
  • -
    -
    -
    +
  • genact->gently touched
  • +
  • genact->gently caressed
  • +
  • genact->firmly stroked
  • +
  • genact->gently stroked
  • +
  • genact->tried to kiss
  • +
  • genact->tried to lick
  • +
  • genact->tried to taste
  • +
  • zooplan->to lick
  • +
  • zooplan->to taste
  • +
  • zooplan->to sniff
  • +
  • genplan->trying to lick
  • +
  • genplan->trying to touch
  • +
  • genplan->trying to stroke
  • +
  • genplan->trying to taste
  • +
  • zooact->showed [INITIATOR_possessive] genitals to
  • +
  • zooact->presented [INITIATOR_possessive] genitals to
  • +
    +
    +
    \ No newline at end of file diff --git a/1.5/Defs/InteractionDefs/Interactions_Speech_sex.xml b/1.5/Defs/InteractionDefs/Interactions_Speech_sex.xml index 8e90d69..f70ec26 100644 --- a/1.5/Defs/InteractionDefs/Interactions_Speech_sex.xml +++ b/1.5/Defs/InteractionDefs/Interactions_Speech_sex.xml @@ -63,7 +63,6 @@ - Speech_Lewd diff --git a/1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml b/1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml index 380b29f..52ef677 100644 --- a/1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml +++ b/1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml @@ -22,7 +22,7 @@ TameLewd_Lovin - Sexually taming TargetA. + Sexually taming TargetA. RJWSexperience.Ideology.JobDriver_LewdTameSex @@ -38,18 +38,18 @@ TrainLewd_Lovin - Sexually training TargetA. + Sexually training TargetA. RJWSexperience.Ideology.JobDriver_LewdTrainSex - - TrainLewd_Reciever - RJWSexperience.Ideology.JobDriver_LewdTrainReciever - Being sexually conditioned by TargetA. - false - false - + + TrainLewd_Reciever + RJWSexperience.Ideology.JobDriver_LewdTrainReciever + Being sexually conditioned by TargetA. + false + false +
    \ No newline at end of file diff --git a/1.5/Defs/JobDefs/Jobs_Ritual_Sex.xml b/1.5/Defs/JobDefs/Jobs_Ritual_Sex.xml index 3f3151b..c82202c 100644 --- a/1.5/Defs/JobDefs/Jobs_Ritual_Sex.xml +++ b/1.5/Defs/JobDefs/Jobs_Ritual_Sex.xml @@ -1,47 +1,46 @@ - + - - RapeVictim - RJWSexperience.Ideology.JobDriver_RapeVictim - rapin' victim - false - + + RapeVictim + RJWSexperience.Ideology.JobDriver_RapeVictim + rapin' victim + false + - - DrugSex - RJWSexperience.Ideology.JobDriver_SexDrugOrgy - lovin'. - false - + + DrugSex + RJWSexperience.Ideology.JobDriver_SexDrugOrgy + lovin'. + false + - - GettinDrugSex - RJWSexperience.Ideology.JobDriver_DrugSexReceiver - lovin'. - false - - - - DrugMasturbate - RJWSexperience.Ideology.JobDriver_DrugMasturabate - masturbatin'. - false - + + GettinDrugSex + RJWSexperience.Ideology.JobDriver_DrugSexReceiver + lovin'. + false + - - Gangbang - RJWSexperience.Ideology.JobDriver_Gangbang - lovin'. - false - + + DrugMasturbate + RJWSexperience.Ideology.JobDriver_DrugMasturabate + masturbatin'. + false + - - GettinGangbang - RJWSexperience.Ideology.JobDriver_GangbangReceiver - gettin' gangbanged. - Never - false - + + Gangbang + RJWSexperience.Ideology.JobDriver_Gangbang + lovin'. + false + + + GettinGangbang + RJWSexperience.Ideology.JobDriver_GangbangReceiver + gettin' gangbanged. + Never + false + \ No newline at end of file diff --git a/1.5/Defs/PreceptDefs/Precepts_BestialBreeding.xml b/1.5/Defs/PreceptDefs/Precepts_BestialBreeding.xml index 5730779..3037ea5 100644 --- a/1.5/Defs/PreceptDefs/Precepts_BestialBreeding.xml +++ b/1.5/Defs/PreceptDefs/Precepts_BestialBreeding.xml @@ -1,7 +1,7 @@ - - + - + + @@ -12,11 +12,11 @@ - + BestialBreeding_Neutral BestialBreeding - Impregnating an animal is simply a natural and unremarkable aspect of life. + Impregnating an animal is simply a natural and unremarkable aspect of life. Low 30 @@ -29,7 +29,7 @@ Medium 40 - Breeding animals is valued for sustaining their population, while also embracing the shared carnal pleasure it brings. + Breeding animals is valued for sustaining their population, while also embracing the shared carnal pleasure it brings.
  • BestialBreeding_Liked @@ -39,14 +39,14 @@
  • - + BestialBreeding_Required BestialBreeding High 40 - Breeding animals is not just encouraged — it is an essential practice to sustain their population, enhance the colony's genetic potential through hybrids, and indulge in the carnal pleasures of the act. + Breeding animals is not just encouraged — it is an essential practice to sustain their population, enhance the colony's genetic potential through hybrids, and indulge in the carnal pleasures of the act.
  • BestialBreeding_Respected @@ -55,7 +55,7 @@ BestialBreeding_Respected_Social
  • -
    +
    BestialBreeding_Horrible @@ -63,7 +63,7 @@ High 50 - Breeding animals is an unnatural and vile act, degrading both the animal and the participant. It serves no purpose other than corruption and defilement. + Breeding animals is an unnatural and vile act, degrading both the animal and the participant. It serves no purpose other than corruption and defilement.
  • BestialBreeding_Horrible @@ -73,14 +73,14 @@
  • - + BestialBreeding_Disliked BestialBreeding High 50 - Breeding animals is a practice that, while not entirely abhorrent, is generally disliked. It should be avoided whenever possible, as there are more acceptable alternatives. + Breeding animals is a practice that, while not entirely abhorrent, is generally disliked. It should be avoided whenever possible, as there are more acceptable alternatives.
  • BestialBreeding_Disliked @@ -89,7 +89,7 @@ BestialBreeding_Disliked_Social
  • -
    +
    @@ -99,98 +99,98 @@
  • - I've impregnated an animal. This ensures the colony's survival and strengthens its genetic potential. The pleasure I feel is secondary to our future. + I've impregnated an animal. This ensures the colony's survival and strengthens its genetic potential. The pleasure I feel is secondary to our future. 4
  • - + BestialBreeding_Respected_Social RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social Thought_SituationalSocial
  • - + 8
  • -
    - + + BestialBreeding_Liked RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding Thought_Situational
  • - - I've impregnated an animal. It felt good, and it will help with the animal population. + + I've impregnated an animal. It felt good, and it will help with the animal population. 2
  • - + BestialBreeding_Liked_Social RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social Thought_SituationalSocial
  • - + 4
  • -
    - - - + + + + BestialBreeding_Horrible_Social RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social Thought_SituationalSocial
  • - + -8
  • - + BestialBreeding_Horrible RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding Thought_Situational
  • - - I've impregnated an animal. This feels disgusting... + + I've impregnated an animal. This feels disgusting... -4
  • - + BestialBreeding_Disliked_Social RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social Thought_SituationalSocial
  • - + -4
  • - + BestialBreeding_Disliked RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding Thought_Situational
  • - - I've impregnated an animal. It feels wrong, but there was some pleasure in it. + + I've impregnated an animal. It feels wrong, but there was some pleasure in it. -2
  • -
    + \ No newline at end of file diff --git a/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml b/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml index 9a1b0e8..a0616ee 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml @@ -254,7 +254,6 @@
    - Bestiality_OnlyVenerated @@ -456,9 +455,8 @@
    - + - Bestiality_Abhorrent @@ -594,7 +592,7 @@ - + Bestiality_Nonvenerated_Disapproved 6 @@ -647,7 +645,7 @@ - + Bestiality_Bond_Approved 6 @@ -740,5 +738,4 @@ - \ No newline at end of file diff --git a/1.5/Defs/PreceptDefs/Precepts_Incest.xml b/1.5/Defs/PreceptDefs/Precepts_Incest.xml index eb30c83..e5e896a 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Incest.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Incest.xml @@ -340,7 +340,6 @@ - IncestuosMarriage_Forbidden diff --git a/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml b/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml index c172648..d139f1e 100644 --- a/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml +++ b/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml @@ -1,7 +1,7 @@ - - + - + + @@ -12,11 +12,11 @@ - + PregnancyAnimal_NoRules PregnancyAnimal - Carrying the offspring of an animal is nothing more than a natural, unremarkable part of life. + Carrying the offspring of an animal is nothing more than a natural, unremarkable part of life. Low 30 @@ -52,7 +52,7 @@ Low 50 - Carrying animal offspring is a taint upon purity. Take care and keep your body free from corruption. + Carrying animal offspring is a taint upon purity. Take care and keep your body free from corruption.
  • Pregnancy_Horrible_PregnantAnimal @@ -71,12 +71,12 @@
  • - I am pregnant with an animal's offspring. This makes me a symbol of fertility, fulfilling my true purpose in society. + I am pregnant with an animal's offspring. This makes me a symbol of fertility, fulfilling my true purpose in society. 10
  • - + Pregnancy_Respected_PregnantAnimal_Social RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_PregnantAnimal_Social @@ -87,8 +87,8 @@ 20 - - + + Pregnancy_Horrible_PregnantAnimal_Social RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_PregnantAnimal_Social @@ -100,7 +100,7 @@ - + Pregnancy_Horrible_PregnantAnimal RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_PregnantAnimal @@ -108,7 +108,7 @@
  • - How did I end up like this? I never wanted to be pregnant by an animal! + How did I end up like this? I never wanted to be pregnant by an animal! -10
  • @@ -124,7 +124,7 @@
  • - I want to be impregnated by an animal. + I want to be impregnated by an animal. -6
  • @@ -142,5 +142,4 @@
    - \ No newline at end of file diff --git a/1.5/Defs/PreceptDefs/Precepts_Rape.xml b/1.5/Defs/PreceptDefs/Precepts_Rape.xml index 2e61c60..2ff90b6 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Rape.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Rape.xml @@ -1,6 +1,6 @@ - - + + Rape @@ -44,7 +44,7 @@ RSI_RapedPrisoner
    - + RSI_WasRaped @@ -81,7 +81,7 @@ RSI_WasRapedPrisoner - + @@ -290,9 +290,8 @@ - + - Rape_Abhorrent @@ -434,5 +433,4 @@ - \ No newline at end of file diff --git a/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml b/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml index 4a15a17..e9fe889 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml @@ -1,6 +1,6 @@ - + + - GangbangCeremony @@ -24,7 +24,7 @@
  • Rapist
  • - + GangbangCeremony_Consensual @@ -62,16 +62,16 @@ false true false - -
  • + +
  • Rapist
  • Zoophile
  • - -
    + +
    - + AnimalGangbangCeremony_Consensual @@ -93,8 +93,6 @@ - - DrugOrgyCeremony diff --git a/1.5/Defs/PreceptDefs/Precepts_Sex.xml b/1.5/Defs/PreceptDefs/Precepts_Sex.xml index cbfdf9c..469f00f 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Sex.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Sex.xml @@ -1,4 +1,4 @@ - + @@ -22,7 +22,7 @@ RSI_OralSex - + RSI_PromiscuousSex @@ -280,15 +280,13 @@ - - Sex_Promiscuous 1 1 - RJWSexperience.Ideology.Thought_IncreaseRecord + RJWSexperience.Ideology.Thought_IncreaseRecord
  • @@ -296,12 +294,12 @@ 5
  • - -
  • - Lust + +
  • + Lust 3.0 -
  • -
    + +
    diff --git a/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml b/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml index dca02aa..9f17ed4 100644 --- a/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml +++ b/1.5/Defs/PreceptDefs/Precepts_SexProselytizing.xml @@ -1,6 +1,6 @@ - + SexProselytizing @@ -17,5 +17,4 @@ 50 400 - \ No newline at end of file diff --git a/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml b/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml index 84b2891..9f56f09 100644 --- a/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml +++ b/1.5/Defs/PreceptDefs/Precepts_SizeMatters.xml @@ -1,6 +1,6 @@ - - + + GenitalSize @@ -62,7 +62,7 @@ GenitalSize_Approved - Thought_Situational + Thought_Situational RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize
  • @@ -109,7 +109,7 @@ GenitalSize_Disapproved RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize - Thought_Situational + Thought_Situational
  • @@ -153,11 +153,11 @@ - + GenitalSize_Approved_Social RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize_Social - Thought_SituationalSocial + Thought_SituationalSocial
  • @@ -188,7 +188,7 @@ GenitalSize_Disapproved_Social RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize_Social - Thought_SituationalSocial + Thought_SituationalSocial
  • @@ -215,5 +215,4 @@
  • -
    \ No newline at end of file diff --git a/1.5/Defs/PreceptDefs/Precepts_SocialAffection.xml b/1.5/Defs/PreceptDefs/Precepts_SocialAffection.xml index 92cb153..3d28d26 100644 --- a/1.5/Defs/PreceptDefs/Precepts_SocialAffection.xml +++ b/1.5/Defs/PreceptDefs/Precepts_SocialAffection.xml @@ -1,62 +1,62 @@ + + + + SocialAffection + + UI/Issues/SocialAffection + - - - SocialAffection - - UI/Issues/SocialAffection - + - + + SocialAffection_Normal + SocialAffection + + To be social is to be human, and that is just fine. + Low + 50 + 1000 + - - SocialAffection_Normal - SocialAffection - - To be social is to be human, and that is just fine. - Low - 50 - 1000 - + + SocialAffection_Small + SocialAffection + + To be social is to be vulnerable, and only your family can see that. + Medium + 40 + 1000 + - - SocialAffection_Small - SocialAffection - - To be social is to be vulnerable, and only your family can see that. - Medium - 40 - 1000 - + + SocialAffection_OnlyFamily + SocialAffection + + To cry for another's kin is morally weak and humiliating. + Medium + 30 + 1000 + - - SocialAffection_OnlyFamily - SocialAffection - - To cry for another's kin is morally weak and humiliating. - Medium - 30 - 1000 - + + SocialAffection_Dry + SocialAffection + + To concern yourself with the tragedy of another member of your family is the sign of a weak character. + High + 20 + 1000 + - - SocialAffection_Dry - SocialAffection - - To concern yourself with the tragedy of another member of your family is the sign of a weak character. - High - 20 - 1000 - - - - SocialAffection_Psychopath - SocialAffection - - Only one person matters in this universe, and it must be yourself. - High - 10 - 1000 - - + + SocialAffection_Psychopath + SocialAffection + + Only one person matters in this universe, and it must be yourself. + High + 10 + 1000 + +
    \ No newline at end of file diff --git a/1.5/Defs/PreceptDefs/Precepts_Submissive.xml b/1.5/Defs/PreceptDefs/Precepts_Submissive.xml index 8dd198a..2290f6c 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Submissive.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Submissive.xml @@ -1,6 +1,6 @@ - - + + Submissive @@ -148,15 +148,15 @@ - + BeenRaped_Submissive 10 100 - Thought_Memory - 0.4 + Thought_Memory + 0.4
  • Masochist
  • @@ -173,8 +173,8 @@ BeenRaped_NotSubmissive 15 100 - Thought_MemorySocial - 0.4 + Thought_MemorySocial + 0.4
  • Masochist
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Tame.xml b/1.5/Defs/PreceptDefs/Precepts_Tame.xml index ad4e5f8..f7a536f 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Tame.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Tame.xml @@ -1,10 +1,11 @@ + AnimalConnection_Lovin AnimalConnection - We tame and train our animals through acts of physical intimacy. + We tame and train our animals through acts of physical intimacy. Medium @@ -13,12 +14,12 @@ - + AnimalConnection_LovinBond AnimalConnection - We bond and teach our animals through shared acts of physical intimacy. + We bond and teach our animals through shared acts of physical intimacy. High
  • Zoophile
  • @@ -27,9 +28,9 @@
  • Zoophile
  • - 2 - 1.5 - 2 + 2 + 1.5 + 2 -
    +
    \ No newline at end of file diff --git a/1.5/Defs/PreceptDefs/Precepts_Virginity.xml b/1.5/Defs/PreceptDefs/Precepts_Virginity.xml index e4a2d1e..4c55f09 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Virginity.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Virginity.xml @@ -1,4 +1,5 @@ - + + diff --git a/1.5/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml b/1.5/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml index 211c6f1..cf458e1 100644 --- a/1.5/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml +++ b/1.5/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml @@ -8,7 +8,7 @@
  • Rape
  • - + Gangbang Gangbang @@ -41,7 +41,7 @@ BestialGangbang - + GangbangByAnimal_Consensual GangbangByAnimal_Consensual @@ -52,7 +52,7 @@ BestialGangbang_Consensual - + DrugOrgy drug orgy @@ -63,5 +63,4 @@ DrugOrgy DrugOrgy -
    \ No newline at end of file diff --git a/1.5/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml b/1.5/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml index 13c8abc..9c503a6 100644 --- a/1.5/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml +++ b/1.5/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml @@ -1,4 +1,5 @@ + Animal_Breeders diff --git a/1.5/Defs/Rituals/Ritual_Behaviors_sex.xml b/1.5/Defs/Rituals/Ritual_Behaviors_sex.xml index aff19a9..6e026ad 100644 --- a/1.5/Defs/Rituals/Ritual_Behaviors_sex.xml +++ b/1.5/Defs/Rituals/Ritual_Behaviors_sex.xml @@ -1,9 +1,9 @@ - - + + -
  • +
  • 7500 @@ -40,7 +40,7 @@
  • Spectate -
  • +
  • @@ -204,7 +204,6 @@ - GangbangByAnimal RJWSexperience.Ideology.RitualBehaviorWorker_Gangbang @@ -345,7 +344,6 @@ - GangbangByAnimal_Consensual RJWSexperience.Ideology.RitualBehaviorWorker_Gangbang_Consensual @@ -447,7 +445,7 @@ DrugOrgy 7500 - + Participants participate @@ -461,6 +459,4 @@
  • - -
    \ No newline at end of file diff --git a/1.5/Defs/Rituals/Ritual_Outcomes_sex.xml b/1.5/Defs/Rituals/Ritual_Outcomes_sex.xml index a6c9646..d1d35ca 100644 --- a/1.5/Defs/Rituals/Ritual_Outcomes_sex.xml +++ b/1.5/Defs/Rituals/Ritual_Outcomes_sex.xml @@ -1,4 +1,5 @@ - + + Gangbang @@ -17,8 +18,8 @@ -
  • (1, -0.20)
  • -
  • (3, -0.05)
  • +
  • (1, -0.20)
  • +
  • (3, -0.05)
  • (5, 0.05)
  • (10, 0.10)
  • @@ -97,7 +98,7 @@
    - + Gangbang_Consensual Depending on ritual quality, participants will get between {MINMOOD} and {MAXMOOD} mood for {MOODDAYS} days. @@ -115,8 +116,8 @@ -
  • (1, -0.20)
  • -
  • (3, -0.05)
  • +
  • (1, -0.20)
  • +
  • (3, -0.05)
  • (5, 0.05)
  • (10, 0.10)
  • @@ -192,9 +193,9 @@ -
  • (1, -0.50)
  • -
  • (3, -0.30)
  • -
  • (5, -0.15)
  • +
  • (1, -0.50)
  • +
  • (3, -0.30)
  • +
  • (5, -0.15)
  • (10, -0.10)
  • @@ -278,9 +279,9 @@ -
  • (1, 0.20)
  • -
  • (3, 0.40)
  • -
  • (5, 0.65)
  • +
  • (1, 0.20)
  • +
  • (3, 0.40)
  • +
  • (5, 0.65)
  • (10, 1.20)
  • @@ -339,8 +340,8 @@ -
  • (1, -0.50)
  • -
  • (3, 0.0)
  • +
  • (1, -0.50)
  • +
  • (3, 0.0)
  • (5, 0.10)
  • (10, 0.30)
  • @@ -351,8 +352,8 @@ Impressiveness -
  • 0, 0
  • -
  • 50, 0.1
  • +
  • 0, 0
  • +
  • 50, 0.1
  • 120, 0.2
  • diff --git a/1.5/Defs/Rituals/Ritual_Targets_sex.xml b/1.5/Defs/Rituals/Ritual_Targets_sex.xml index 5805f34..bd6fc35 100644 --- a/1.5/Defs/Rituals/Ritual_Targets_sex.xml +++ b/1.5/Defs/Rituals/Ritual_Targets_sex.xml @@ -1,4 +1,5 @@ + RitualSpotOrAltar_Gangbang diff --git a/1.5/Defs/ThingDefs/Buildings_Ideo_sex.xml b/1.5/Defs/ThingDefs/Buildings_Ideo_sex.xml index eaaba10..f1f1d3f 100644 --- a/1.5/Defs/ThingDefs/Buildings_Ideo_sex.xml +++ b/1.5/Defs/ThingDefs/Buildings_Ideo_sex.xml @@ -1,4 +1,5 @@ - + + Burnbong_Aphrodisiac @@ -44,7 +45,6 @@ - Autobong_Aphrodisiac @@ -108,7 +108,7 @@ 150 true -
  • +
  • HumpShroomEffect 4.9 @@ -129,6 +129,4 @@
  • PlaceWorker_SmokeCloudMaker
  • - -
    \ No newline at end of file diff --git a/1.5/Defs/ThoughtDefs/Thoughts_Ritual_sex_Quality.xml b/1.5/Defs/ThoughtDefs/Thoughts_Ritual_sex_Quality.xml index 9488047..309769f 100644 --- a/1.5/Defs/ThoughtDefs/Thoughts_Ritual_sex_Quality.xml +++ b/1.5/Defs/ThoughtDefs/Thoughts_Ritual_sex_Quality.xml @@ -1,6 +1,6 @@ + - TerribleGangbang Thought_AttendedRitual diff --git a/1.5/Patches/Core_Thoughts_Memory_Death.xml b/1.5/Patches/Core_Thoughts_Memory_Death.xml index 256a4b0..e317adf 100644 --- a/1.5/Patches/Core_Thoughts_Memory_Death.xml +++ b/1.5/Patches/Core_Thoughts_Memory_Death.xml @@ -1,68 +1,65 @@ - - 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"]/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"] - - -
  • 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"]/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"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied"] - - -
  • 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"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - - Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    - - Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    - + + 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"]/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"] + + +
  • 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"]/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"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied"] + + +
  • 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"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    \ No newline at end of file diff --git a/1.5/Patches/Core_Thoughts_Memory_Lost.xml b/1.5/Patches/Core_Thoughts_Memory_Lost.xml index 5c94b8a..a6807aa 100644 --- a/1.5/Patches/Core_Thoughts_Memory_Lost.xml +++ b/1.5/Patches/Core_Thoughts_Memory_Lost.xml @@ -1,68 +1,65 @@ - - 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"]/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"] - - -
  • 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"]/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
  • -
    -
    -
    - + + 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"]/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"] + + +
  • 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"]/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/1.5/Patches/Core_Thoughts_Memory_Misc.xml b/1.5/Patches/Core_Thoughts_Memory_Misc.xml index 42bda85..f143540 100644 --- a/1.5/Patches/Core_Thoughts_Memory_Misc.xml +++ b/1.5/Patches/Core_Thoughts_Memory_Misc.xml @@ -1,105 +1,103 @@ + + Defs/ThoughtDef[defName="WitnessedDeathAlly"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="WitnessedDeathAlly"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="WitnessedDeathAlly"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    - - Defs/ThoughtDef[defName="WitnessedDeathAlly"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="WitnessedDeathAlly"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    - - Defs/ThoughtDef[defName="WitnessedDeathAlly"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    + + Defs/ThoughtDef[defName="WitnessedDeathNonAlly"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="WitnessedDeathNonAlly"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="WitnessedDeathNonAlly"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    - - Defs/ThoughtDef[defName="WitnessedDeathNonAlly"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="WitnessedDeathNonAlly"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    - - Defs/ThoughtDef[defName="WitnessedDeathNonAlly"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    + + Defs/ThoughtDef[defName="WitnessedDeathFamily"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="WitnessedDeathFamily"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="WitnessedDeathFamily"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="WitnessedDeathFamily"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="WitnessedDeathFamily"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="WitnessedDeathFamily"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - - Defs/ThoughtDef[defName="ColonistBanishedToDie"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="ColonistBanishedToDie"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    - - Defs/ThoughtDef[defName="ColonistBanishedToDie"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    - - - Defs/ThoughtDef[defName="PrisonerBanishedToDie"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="PrisonerBanishedToDie"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    - - Defs/ThoughtDef[defName="PrisonerBanishedToDie"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    + + Defs/ThoughtDef[defName="ColonistBanishedToDie"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="ColonistBanishedToDie"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="ColonistBanishedToDie"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="PrisonerBanishedToDie"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="PrisonerBanishedToDie"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="PrisonerBanishedToDie"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    \ No newline at end of file diff --git a/1.5/Patches/Core_Thoughts_Situation_Special.xml b/1.5/Patches/Core_Thoughts_Situation_Special.xml index 0bb32a5..2050526 100644 --- a/1.5/Patches/Core_Thoughts_Situation_Special.xml +++ b/1.5/Patches/Core_Thoughts_Situation_Special.xml @@ -1,25 +1,23 @@ - - - Defs/ThoughtDef[defName="ColonistLeftUnburied"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="ColonistLeftUnburied"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    - - Defs/ThoughtDef[defName="ColonistLeftUnburied"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_OnlyFamily
  • -
    -
    -
    - + + Defs/ThoughtDef[defName="ColonistLeftUnburied"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="ColonistLeftUnburied"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="ColonistLeftUnburied"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    \ No newline at end of file diff --git a/1.5/Patches/InteractionDef/Masturbation.xml b/1.5/Patches/InteractionDef/Masturbation.xml index 53a35ac..66b6bd4 100644 --- a/1.5/Patches/InteractionDef/Masturbation.xml +++ b/1.5/Patches/InteractionDef/Masturbation.xml @@ -1,14 +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
  • - - -
    -
    + + /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.5/Patches/InteractionDef/Necro.xml b/1.5/Patches/InteractionDef/Necro.xml index 0a02d95..d5adbcc 100644 --- a/1.5/Patches/InteractionDef/Necro.xml +++ b/1.5/Patches/InteractionDef/Necro.xml @@ -1,25 +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_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
  • - - -
    -
    + + /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.5/Patches/InteractionDef/Rape.xml b/1.5/Patches/InteractionDef/Rape.xml index 34bc418..2baae4d 100644 --- a/1.5/Patches/InteractionDef/Rape.xml +++ b/1.5/Patches/InteractionDef/Rape.xml @@ -1,83 +1,83 @@ - - /Defs/InteractionDef[defName="Rape_Vaginal"] - -
  • - -
  • RSI_VaginalSex
  • -
  • RSI_Raped
  • - - - -
  • RSI_WasRaped
  • -
    - -
    -
    + + /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_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_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_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
  • -
    - -
    -
    + + /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.5/Patches/InteractionDef/Rape_Reverse.xml b/1.5/Patches/InteractionDef/Rape_Reverse.xml index 2f3a047..d2d275f 100644 --- a/1.5/Patches/InteractionDef/Rape_Reverse.xml +++ b/1.5/Patches/InteractionDef/Rape_Reverse.xml @@ -1,83 +1,83 @@ - - /Defs/InteractionDef[defName="Rape_Reverse_Vaginal"] - -
  • - -
  • RSI_VaginalSex
  • -
  • RSI_Raped
  • - - - -
  • RSI_WasRaped
  • -
    - -
    -
    + + /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_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_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_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
  • -
    - -
    -
    + + /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.5/Patches/InteractionDef/Sex.xml b/1.5/Patches/InteractionDef/Sex.xml index 0be25d3..8bb2270 100644 --- a/1.5/Patches/InteractionDef/Sex.xml +++ b/1.5/Patches/InteractionDef/Sex.xml @@ -1,73 +1,73 @@ - - /Defs/InteractionDef[defName="Sex_Vaginal"] - -
  • - -
  • RSI_VaginalSex
  • - - -
  • RSI_VaginalSex
  • -
    - -
    -
    + + /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_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_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_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
  • -
    - -
    -
    + + /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.5/Patches/InteractionDef/Sex_Reverse.xml b/1.5/Patches/InteractionDef/Sex_Reverse.xml index 2e41ab5..c29927e 100644 --- a/1.5/Patches/InteractionDef/Sex_Reverse.xml +++ b/1.5/Patches/InteractionDef/Sex_Reverse.xml @@ -1,73 +1,73 @@ - - /Defs/InteractionDef[defName="Sex_Reverse_Vaginal"] - -
  • - -
  • RSI_VaginalSex
  • - - -
  • RSI_VaginalSex
  • -
    - -
    -
    + + /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_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_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_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
  • -
    - -
    -
    + + /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.5/Patches/RJW_Drugs.xml b/1.5/Patches/RJW_Drugs.xml index e0a93bb..d42c21d 100644 --- a/1.5/Patches/RJW_Drugs.xml +++ b/1.5/Patches/RJW_Drugs.xml @@ -1,47 +1,45 @@ - - 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 - -
  • -
    -
    -
    - - + + 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.5/Patches/RJW_Precepts.xml b/1.5/Patches/RJW_Precepts.xml index 94c6160..8fe6ba2 100644 --- a/1.5/Patches/RJW_Precepts.xml +++ b/1.5/Patches/RJW_Precepts.xml @@ -1,29 +1,27 @@ - - Defs/PreceptDef[defName="Corpses_DontCare"]/requiredMemes - -
  • Necrophile
  • -
    -
    - - - Defs/PreceptDef[defName="Corpses_DontCare"]/associatedMemes - -
  • Necrophile
  • -
    -
    - - - Defs/PreceptDef[defName="Lovin_FreeApproved"] - - - 0.5 - 0.25 - - - + + Defs/PreceptDef[defName="Corpses_DontCare"]/requiredMemes + +
  • Necrophile
  • +
    +
    + + Defs/PreceptDef[defName="Corpses_DontCare"]/associatedMemes + +
  • Necrophile
  • +
    +
    + + Defs/PreceptDef[defName="Lovin_FreeApproved"] + + + 0.5 + 0.25 + + +
    \ No newline at end of file diff --git a/1.5/Patches/RJW_StatDefs_Ideo.xml b/1.5/Patches/RJW_StatDefs_Ideo.xml index a044970..121e7f5 100644 --- a/1.5/Patches/RJW_StatDefs_Ideo.xml +++ b/1.5/Patches/RJW_StatDefs_Ideo.xml @@ -1,14 +1,12 @@ - - Defs/StatDef[defName="Vulnerability"]/parts - -
  • - 0.5 -
  • -
    -
    - - + + Defs/StatDef[defName="Vulnerability"]/parts + +
  • + 0.5 +
  • +
    +
    \ No newline at end of file diff --git a/1.5/Patches/RJW_ThoughtDefs.xml b/1.5/Patches/RJW_ThoughtDefs.xml index 30a1b66..a490756 100644 --- a/1.5/Patches/RJW_ThoughtDefs.xml +++ b/1.5/Patches/RJW_ThoughtDefs.xml @@ -1,114 +1,114 @@ - - Defs/ThoughtDef[defName="GotBredByAnimal"] - - -
  • Bestiality_OnlyVenerated
  • -
  • Bestiality_BondOnly
  • -
  • Bestiality_Honorable
  • -
  • Bestiality_Acceptable
  • -
    -
    -
    - - - Defs/ThoughtDef[defName="GotAnalBredByAnimal"] - - -
  • Bestiality_OnlyVenerated
  • -
  • Bestiality_BondOnly
  • -
  • Bestiality_Honorable
  • -
  • Bestiality_Acceptable
  • -
    -
    -
    - - - Defs/ThoughtDef[defName="AllowedAnimalToBreed"] - - -
  • Bestiality_OnlyVenerated
  • -
  • Bestiality_BondOnly
  • -
  • Bestiality_Honorable
  • -
  • Bestiality_Acceptable
  • -
    -
    -
    - - - Defs/ThoughtDef[defName="GotLickedByAnimal"] - - -
  • Bestiality_OnlyVenerated
  • -
  • Bestiality_BondOnly
  • -
  • Bestiality_Honorable
  • -
  • Bestiality_Acceptable
  • -
    -
    -
    - - - Defs/ThoughtDef[defName="GotGropedByAnimal"] - - -
  • Bestiality_OnlyVenerated
  • -
  • Bestiality_BondOnly
  • -
  • Bestiality_Honorable
  • -
  • Bestiality_Acceptable
  • -
    -
    -
    + + Defs/ThoughtDef[defName="GotBredByAnimal"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    - - Defs/ThoughtDef[defName="AllowedAnimalToGrope"] - - -
  • Bestiality_OnlyVenerated
  • -
  • Bestiality_BondOnly
  • -
  • Bestiality_Honorable
  • -
  • Bestiality_Acceptable
  • -
    -
    -
    + + Defs/ThoughtDef[defName="GotAnalBredByAnimal"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    - - Defs/ThoughtDef[defName="StoleSomeLovin"] - - -
  • Rape_Honorable
  • -
    -
    -
    + + Defs/ThoughtDef[defName="AllowedAnimalToBreed"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    - - Defs/ThoughtDef[defName="Incestuous"] - - -
  • Incestuos_Free
  • -
  • Incestuos_IncestOnly
  • -
    -
    -
    + + Defs/ThoughtDef[defName="GotLickedByAnimal"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    - - 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
  • -
    -
    -
    + + Defs/ThoughtDef[defName="GotGropedByAnimal"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="AllowedAnimalToGrope"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="StoleSomeLovin"] + + +
  • Rape_Honorable
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="Incestuous"] + + +
  • Incestuos_Free
  • +
  • Incestuos_IncestOnly
  • +
    +
    +
    + + + 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.5/Patches/RJW_Thought_Family_Beast.xml b/1.5/Patches/RJW_Thought_Family_Beast.xml index 051eb58..15e66cf 100644 --- a/1.5/Patches/RJW_Thought_Family_Beast.xml +++ b/1.5/Patches/RJW_Thought_Family_Beast.xml @@ -1,724 +1,723 @@ - + - - Defs/ThoughtDef[defName="MySonDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MySonDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MySonDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MySonDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MySonDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MySonDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyDaughterDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyDaughterDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyDaughterDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyDaughterDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyDaughterDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyDaughterDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyBrotherDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyBrotherDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyBrotherDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyBrotherDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyBrotherDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyBrotherDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MySisterDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MySisterDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MySisterDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MySisterDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MySisterDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MySisterDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyGrandchildDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyGrandchildDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyGrandchildDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyGrandchildDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyGrandchildDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyGrandchildDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyNieceDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyNieceDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyNieceDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyNieceDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyNieceDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyNieceDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyNephewDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyNephewDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyNephewDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyNephewDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyNephewDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyNephewDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyHalfSiblingDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyHalfSiblingDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyHalfSiblingDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyHalfSiblingDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyHalfSiblingDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyHalfSiblingDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyAuntDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyAuntDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyAuntDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyAuntDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyAuntDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyAuntDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyUncleDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyUncleDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyUncleDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyUncleDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyUncleDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyUncleDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyGrandparentDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyGrandparentDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyGrandparentDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyGrandparentDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyGrandparentDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyGrandparentDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyCousinDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyCousinDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyCousinDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyCousinDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyCousinDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyCousinDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyKinDied_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyKinDied_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyKinDied_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyKinDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyKinDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyKinDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - + - - Defs/ThoughtDef[defName="MySonLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MySonLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MySonLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MySonLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MySonLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MySonLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyDaughterLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyDaughterLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyDaughterLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyDaughterLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyDaughterLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyDaughterLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyBrotherLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyBrotherLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyBrotherLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyBrotherLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyBrotherLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyBrotherLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MySisterLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MySisterLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MySisterLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MySisterLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MySisterLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MySisterLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyGrandchildLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyGrandchildLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyGrandchildLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyGrandchildLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyGrandchildLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyGrandchildLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyNieceLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyNieceLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyNieceLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyNieceLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyNieceLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyNieceLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyNephewLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyNephewLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyNephewLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyNephewLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyNephewLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyNephewLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyHalfSiblingLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyHalfSiblingLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyHalfSiblingLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyHalfSiblingLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyHalfSiblingLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyHalfSiblingLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyAuntLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyAuntLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyAuntLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyAuntLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyAuntLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyAuntLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyUncleLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyUncleLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyUncleLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyUncleLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyUncleLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyUncleLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyGrandparentLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyGrandparentLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyGrandparentLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyGrandparentLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyGrandparentLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyGrandparentLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyCousinLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyCousinLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyCousinLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyCousinLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyCousinLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyCousinLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - - Defs/ThoughtDef[defName="MyKinLost_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="MyKinLost_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="MyKinLost_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    + + Defs/ThoughtDef[defName="MyKinLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyKinLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyKinLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    - + - - Defs/ThoughtDef[defName="KilledMyFather_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="KilledMyFather_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="KilledMyFather_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="KilledMyFather_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMyFather_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMyFather_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="KilledMyMother_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="KilledMyMother_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="KilledMyMother_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="KilledMyMother_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMyMother_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMyMother_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="KilledMySon_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="KilledMySon_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="KilledMySon_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="KilledMySon_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMySon_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMySon_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="KilledMyDaughter_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="KilledMyDaughter_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="KilledMyDaughter_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="KilledMyDaughter_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMyDaughter_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMyDaughter_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="KilledMyBrother_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="KilledMyBrother_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="KilledMyBrother_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="KilledMyBrother_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMyBrother_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMyBrother_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="KilledMySister_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="KilledMySister_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="KilledMySister_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="KilledMySister_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMySister_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMySister_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    - - Defs/ThoughtDef[defName="KilledMyKin_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="KilledMyKin_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - Defs/ThoughtDef[defName="KilledMyKin_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
  • SocialAffection_Small
  • -
    -
    -
    - - - Defs/ThoughtDef[defName="SoldMyLovedOne_Beast"]/nullifyingPrecepts - - Defs/ThoughtDef[defName="SoldMyLovedOne_Beast"] - - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    - - Defs/ThoughtDef[defName="SoldMyLovedOne_Beast"]/nullifyingPrecepts - -
  • SocialAffection_Psychopath
  • -
  • SocialAffection_Dry
  • -
    -
    -
    + + Defs/ThoughtDef[defName="KilledMyKin_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMyKin_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMyKin_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="SoldMyLovedOne_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="SoldMyLovedOne_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="SoldMyLovedOne_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    \ No newline at end of file diff --git a/README.md b/README.md index feca10d..bbaf1b4 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,6 @@ The best practices: 3. Make your changes and commit them to the new branch. 4. Create a new merge request from your branch into the `dev` branch of this repository. -To be consistent with RJW, please use TABS not SPACES. +To be consistent with RJW, please use tabs for C# indentation. XML indentation should be done with 2 spaces. Please, ping me in the RJW Discord after creating a merge request. From 85021c6caf9bfbf6c7cd0f5c81e09181e75c853d Mon Sep 17 00:00:00 2001 From: ElToro Date: Sat, 25 Jan 2025 22:55:33 +0300 Subject: [PATCH 21/64] Bug fix --- .../PreceptDefs/Precepts_PregnancyAnimal.xml | 23 ++++++++++--------- Source/IdeologyAddon/IdeoUtility.cs | 4 ++-- .../ThoughtWorker_Precept_Pregnant_Social.cs | 2 +- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml b/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml index c172648..14b1bf9 100644 --- a/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml +++ b/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml @@ -29,7 +29,7 @@ High 40 - Women must bear animal offspring — those who do not are seen as unworthy. Carrying such offspring is a symbol of fertility and primal purpose. + We must do our part to help increase the animal population, even if it means bearing their offspring. It's a necessary duty for the balance of our society.
  • Pregnancy_Respected_PregnantAnimal @@ -38,10 +38,10 @@ Pregnancy_Respected_PregnantAnimal_Social
  • - Pregnancy_Horrible_NonPregnantAnimal + Pregnancy_Respected_NonPregnantAnimal
  • - Pregnancy_Horrible_NonPregnantAnimal_Social + Pregnancy_Respected_NonPregnantAnimal_Social
  • @@ -52,7 +52,7 @@ Low 50 - Carrying animal offspring is a taint upon purity. Take care and keep your body free from corruption. + Being pregnant with an animal’s offspring feels wrong and unnatural. It’s a burden that must be avoided at all costs.
  • Pregnancy_Horrible_PregnantAnimal @@ -71,7 +71,7 @@
  • - I am pregnant with an animal's offspring. This makes me a symbol of fertility, fulfilling my true purpose in society. + I'm pregnant with an animal's offspring, and it feels right, like I'm meant to be this way. 10
  • @@ -108,15 +108,16 @@
  • - How did I end up like this? I never wanted to be pregnant by an animal! + I never imagined it would end like this — carrying an animal's offspring. This is a nightmare. What am I supposed to do now? -10
  • + - Pregnancy_Horrible_NonPregnantAnimal + Pregnancy_Respected_NonPregnantAnimal RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_NonPregnantAnimal Thought_Situational true @@ -124,23 +125,23 @@
  • - I want to be impregnated by an animal. + The thought of being impregnated by an animal is thrilling — I want to experience it. -6
  • - Pregnancy_Horrible_NonPregnantAnimal_Social + Pregnancy_Respected_NonPregnantAnimal_Social RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_NonPregnantAnimal_Social Thought_SituationalSocial Female
  • - + -5
  • -
    +
    \ No newline at end of file diff --git a/Source/IdeologyAddon/IdeoUtility.cs b/Source/IdeologyAddon/IdeoUtility.cs index cd08452..2509754 100644 --- a/Source/IdeologyAddon/IdeoUtility.cs +++ b/Source/IdeologyAddon/IdeoUtility.cs @@ -129,7 +129,7 @@ namespace RJWSexperience.Ideology // RJW pregnancy Pawn father = RJWPregnancy.father; - if (father != null && xxx.is_human(father)) + if (father != null && !xxx.is_human(father)) { return pregnancy.Visible == true; } @@ -138,7 +138,7 @@ namespace RJWSexperience.Ideology { // Biotech pregnancy Pawn father = biotechPregnancy.Father; - if (father != null && xxx.is_human(father)) + if (father != null && !xxx.is_human(father)) { return pregnancy.Visible == true; } diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs index 746ca7d..644651a 100644 --- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs @@ -18,7 +18,7 @@ namespace RJWSexperience.Ideology.PreceptWorkers return otherPawn?.DevelopmentalStage == DevelopmentalStage.Adult && p?.DevelopmentalStage == DevelopmentalStage.Adult && IdeoUtility.IsVisiblyPregnant(otherPawn) && - !IdeoUtility.IsVisiblyPregnantAnimal(p); + !IdeoUtility.IsVisiblyPregnantAnimal(otherPawn); } } } From 18726f441c3198d1c29423d2b997518f267eda33 Mon Sep 17 00:00:00 2001 From: ElToro Date: Sun, 26 Jan 2025 23:07:33 +0300 Subject: [PATCH 22/64] Changes to animal pregnancy check --- Source/IdeologyAddon/IdeoUtility.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/IdeologyAddon/IdeoUtility.cs b/Source/IdeologyAddon/IdeoUtility.cs index 2509754..b0a3b39 100644 --- a/Source/IdeologyAddon/IdeoUtility.cs +++ b/Source/IdeologyAddon/IdeoUtility.cs @@ -129,7 +129,7 @@ namespace RJWSexperience.Ideology // RJW pregnancy Pawn father = RJWPregnancy.father; - if (father != null && !xxx.is_human(father)) + if (father != null && xxx.is_animal(father)) { return pregnancy.Visible == true; } From 1b8c3821c76ae69ce2abb299bb08a6bd85bfb924 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Mon, 27 Jan 2025 20:06:24 +0500 Subject: [PATCH 23/64] Format Precepts_PregnancyAnimal.xml --- 1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml b/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml index ac1f1db..f1cd147 100644 --- a/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml +++ b/1.5/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml @@ -52,7 +52,7 @@ Low 50 - Being pregnant with an animal’s offspring feels wrong and unnatural. It’s a burden that must be avoided at all costs. + Being pregnant with an animal's offspring feels wrong and unnatural. It's a burden that must be avoided at all costs.
  • Pregnancy_Horrible_PregnantAnimal @@ -71,7 +71,7 @@
  • - I'm pregnant with an animal's offspring, and it feels right, like I'm meant to be this way. + I'm pregnant with an animal's offspring, and it feels right, like I'm meant to be this way. 10
  • @@ -108,14 +108,14 @@
  • - I never imagined it would end like this — carrying an animal's offspring. This is a nightmare. What am I supposed to do now? + I never imagined it would end like this — carrying an animal's offspring. This is a nightmare. What am I supposed to do now? -10
  • - + Pregnancy_Respected_NonPregnantAnimal RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_NonPregnantAnimal @@ -125,7 +125,7 @@
  • - The thought of being impregnated by an animal is thrilling — I want to experience it. + The thought of being impregnated by an animal is thrilling — I want to experience it. -6
  • From ef3db50c6bdbc61d0b7679630b7388a78f73562d Mon Sep 17 00:00:00 2001 From: amevarashi Date: Mon, 27 Jan 2025 21:36:30 +0500 Subject: [PATCH 24/64] Format .cs files --- Source/IdeologyAddon/Harmony.cs | 33 ++-- Source/IdeologyAddon/IdeoUtility.cs | 128 +++++++------- .../ThoughtWorker_Precept_BestialBreeding.cs | 45 +++-- ...htWorker_Precept_BestialBreeding_Social.cs | 76 ++++---- .../Rituals/RitualBehaviorWorkers.cs | 22 +-- Source/IdeologyAddon/RsiDefOf.cs | 63 +++---- .../SexTame/BestialityUtility.cs | 33 ++-- .../SexTame/InteractAnimalPatches.cs | 145 ++++++++------- .../SexTame/JobDriver_LewdTameFeed.cs | 90 +++++----- .../SexTame/JobDriver_LewdTameSex.cs | 96 +++++----- .../SexTame/JobDriver_LewdTrainBase.cs | 121 +++++++------ .../SexTame/JobDriver_LewdTrainFeed.cs | 94 +++++----- .../SexTame/JobDriver_LewdTrainReciever.cs | 88 ++++----- .../SexTame/JobDriver_LewdTrainSex.cs | 44 ++--- .../DecreasedVaginalPartKindUsageRule.cs | 167 +++++++++--------- .../FocusedVaginalPartKindUsageRule.cs | 146 ++++++++------- .../IncreasedVaginalPartKindUsageRule.cs | 117 ++++++------ .../MaleDecreasedVaginalPartKindUsageRule.cs | 167 +++++++++--------- .../MaleFocusedVaginalPartKindUsageRule.cs | 146 ++++++++------- .../MaleIncreasedVaginalPartKindUsageRule.cs | 117 ++++++------ 20 files changed, 958 insertions(+), 980 deletions(-) diff --git a/Source/IdeologyAddon/Harmony.cs b/Source/IdeologyAddon/Harmony.cs index ba830af..ef318fd 100644 --- a/Source/IdeologyAddon/Harmony.cs +++ b/Source/IdeologyAddon/Harmony.cs @@ -1,13 +1,10 @@ using rjw.Modules.Interactions.Internals.Implementation; -using rjw.Modules.Interactions.Objects; using rjw.Modules.Interactions.Rules.PartKindUsageRules; using rjw.Modules.Shared.Logs; using rjw; using System.Collections.Generic; using System.Reflection; using Verse; -using rjw.Modules.Interactions.Rules.PartBlockedRules; -using rjw.Modules.Interactions.Internals; namespace RJWSexperience.Ideology { @@ -17,20 +14,20 @@ namespace RJWSexperience.Ideology static Harmony() { new HarmonyLib.Harmony("RJW_Sexperience.Ideology").PatchAll(Assembly.GetExecutingAssembly()); - InjectIntoRjwInteractionServices(); - } - private static void InjectIntoRjwInteractionServices() - { - ILog log = LogManager.GetLogger("StaticConstructorOnStartup"); + InjectIntoRjwInteractionServices(); + } + private static void InjectIntoRjwInteractionServices() + { + ILog log = LogManager.GetLogger("StaticConstructorOnStartup"); - List partKindUsageRules = Unprivater.GetProtectedValue>("_partKindUsageRules", typeof(PartPreferenceDetectorService)); - partKindUsageRules.Add(new MaleDecreasedVaginal()); - partKindUsageRules.Add(new DecreasedVaginal()); - partKindUsageRules.Add(new MaleIncreasedVaginal()); - partKindUsageRules.Add(new IncreasedVaginal()); - partKindUsageRules.Add(new MaleFocusedVaginal()); - partKindUsageRules.Add(new FocusedVaginal()); - log.Message("Added 4 rules to PartPreferenceDetectorService._partKindUsageRules"); - } - } + List partKindUsageRules = Unprivater.GetProtectedValue>("_partKindUsageRules", typeof(PartPreferenceDetectorService)); + partKindUsageRules.Add(new MaleDecreasedVaginal()); + partKindUsageRules.Add(new DecreasedVaginal()); + partKindUsageRules.Add(new MaleIncreasedVaginal()); + partKindUsageRules.Add(new IncreasedVaginal()); + partKindUsageRules.Add(new MaleFocusedVaginal()); + partKindUsageRules.Add(new FocusedVaginal()); + log.Message("Added 4 rules to PartPreferenceDetectorService._partKindUsageRules"); + } + } } diff --git a/Source/IdeologyAddon/IdeoUtility.cs b/Source/IdeologyAddon/IdeoUtility.cs index b0a3b39..2aa03e4 100644 --- a/Source/IdeologyAddon/IdeoUtility.cs +++ b/Source/IdeologyAddon/IdeoUtility.cs @@ -112,68 +112,68 @@ namespace RJWSexperience.Ideology } return pregnancy?.Visible == true; - } - public static bool IsVisiblyPregnantAnimal(Pawn pawn) - { - // Check for RJW pregnancies first - Hediff pregnancy = PregnancyHelper.GetPregnancy(pawn); - - // If no RJW pregnancy, check for Biotech pregnancy - if (pregnancy == null) - { - pregnancy = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.PregnantHuman); - } - - if (pregnancy is Hediff_BasePregnancy RJWPregnancy) - { - // RJW pregnancy - Pawn father = RJWPregnancy.father; - - if (father != null && xxx.is_animal(father)) - { - return pregnancy.Visible == true; - } - } - else if (pregnancy is Hediff_Pregnant biotechPregnancy) - { - // Biotech pregnancy - Pawn father = biotechPregnancy.Father; - if (father != null && !xxx.is_human(father)) - { - return pregnancy.Visible == true; - } - } - return false; - } - public static bool IsFatherOfPregnancy(Pawn pawn, Pawn possibleFather) - { - // Iterate through all hediffs in the pawn's hediff set to find pregnancy-related ones - foreach (var hediff in pawn.health.hediffSet.hediffs) - { - // Check for RJW pregnancy - if (hediff is Hediff_BasePregnancy RJWPregnancy) - { - // RJW pregnancy - check the father - Pawn father = RJWPregnancy.father; - if (father != null && father == possibleFather && hediff.Visible) - { - return true; - } - } - // Check for Biotech pregnancy - else if (hediff is Hediff_Pregnant biotechPregnancy) - { - // Biotech pregnancy - check the father - Pawn father = biotechPregnancy.Father; - if (father != null && father == possibleFather && hediff.Visible) - { - return true; - } - } - } - - // If no matching pregnancy found, return false - return false; - } - } + } + public static bool IsVisiblyPregnantAnimal(Pawn pawn) + { + // Check for RJW pregnancies first + Hediff pregnancy = PregnancyHelper.GetPregnancy(pawn); + + // If no RJW pregnancy, check for Biotech pregnancy + if (pregnancy == null) + { + pregnancy = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.PregnantHuman); + } + + if (pregnancy is Hediff_BasePregnancy RJWPregnancy) + { + // RJW pregnancy + Pawn father = RJWPregnancy.father; + + if (father != null && xxx.is_animal(father)) + { + return pregnancy.Visible == true; + } + } + else if (pregnancy is Hediff_Pregnant biotechPregnancy) + { + // Biotech pregnancy + Pawn father = biotechPregnancy.Father; + if (father != null && !xxx.is_human(father)) + { + return pregnancy.Visible == true; + } + } + return false; + } + public static bool IsFatherOfPregnancy(Pawn pawn, Pawn possibleFather) + { + // Iterate through all hediffs in the pawn's hediff set to find pregnancy-related ones + foreach (var hediff in pawn.health.hediffSet.hediffs) + { + // Check for RJW pregnancy + if (hediff is Hediff_BasePregnancy RJWPregnancy) + { + // RJW pregnancy - check the father + Pawn father = RJWPregnancy.father; + if (father != null && father == possibleFather && hediff.Visible) + { + return true; + } + } + // Check for Biotech pregnancy + else if (hediff is Hediff_Pregnant biotechPregnancy) + { + // Biotech pregnancy - check the father + Pawn father = biotechPregnancy.Father; + if (father != null && father == possibleFather && hediff.Visible) + { + return true; + } + } + } + + // If no matching pregnancy found, return false + return false; + } + } } diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding.cs index 8729dad..27db863 100644 --- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding.cs +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding.cs @@ -2,31 +2,30 @@ using rjw; using System.Linq; using Verse; -using Verse.Noise; namespace RJWSexperience.Ideology.PreceptWorkers { - public class ThoughtWorker_Precept_BestialBreeding : ThoughtWorker_Precept - { - protected override ThoughtState ShouldHaveThought(Pawn p) - { - if (p?.DevelopmentalStage == DevelopmentalStage.Adult) - { - Map map = p.Map; - if (map != null) - { - foreach (var pawnOnMap in map.mapPawns.AllPawns.Where(x => xxx.is_animal(x) && PawnExtensions.IsVisiblyPregnant (x))) - { - if (pawnOnMap != p && IdeoUtility.IsFatherOfPregnancy(pawnOnMap, p)) // Check if this pawn is the father of p - { - return ThoughtState.ActiveDefault; // Active thought if the pawn is the father - } - } - } - } + public class ThoughtWorker_Precept_BestialBreeding : ThoughtWorker_Precept + { + protected override ThoughtState ShouldHaveThought(Pawn p) + { + if (p?.DevelopmentalStage == DevelopmentalStage.Adult) + { + Map map = p.Map; + if (map != null) + { + foreach (var pawnOnMap in map.mapPawns.AllPawns.Where(x => xxx.is_animal(x) && PawnExtensions.IsVisiblyPregnant(x))) + { + if (pawnOnMap != p && IdeoUtility.IsFatherOfPregnancy(pawnOnMap, p)) // Check if this pawn is the father of p + { + return ThoughtState.ActiveDefault; // Active thought if the pawn is the father + } + } + } + } - // Return default (inactive) if no valid conditions were met - return ThoughtState.Inactive; - } - } + // Return default (inactive) if no valid conditions were met + return ThoughtState.Inactive; + } + } } diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding_Social.cs index ed3c346..150f5b6 100644 --- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding_Social.cs +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_BestialBreeding_Social.cs @@ -1,38 +1,38 @@ -using RimWorld; -using rjw; -using System.Linq; -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_BestialBreeding_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 mainPawn, Pawn referencedPawn) - { - if (referencedPawn?.DevelopmentalStage == DevelopmentalStage.Adult && mainPawn?.DevelopmentalStage == DevelopmentalStage.Adult) - { - Map map = referencedPawn.Map; - if (map != null) - { - foreach (var pawnOnMap in map.mapPawns.AllPawns.Where(x => xxx.is_animal(x) && PawnExtensions.IsVisiblyPregnant(x))) - { - if (pawnOnMap != referencedPawn && IdeoUtility.IsFatherOfPregnancy(pawnOnMap, referencedPawn)) // Check if this pawn is the father of p - { - return ThoughtState.ActiveDefault; // Active thought if the pawn is the father - } - } - } - } - // Return default (inactive) if no valid conditions were met - return ThoughtState.Inactive; - } - } -} +using RimWorld; +using rjw; +using System.Linq; +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_BestialBreeding_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 mainPawn, Pawn referencedPawn) + { + if (referencedPawn?.DevelopmentalStage == DevelopmentalStage.Adult && mainPawn?.DevelopmentalStage == DevelopmentalStage.Adult) + { + Map map = referencedPawn.Map; + if (map != null) + { + foreach (var pawnOnMap in map.mapPawns.AllPawns.Where(x => xxx.is_animal(x) && PawnExtensions.IsVisiblyPregnant(x))) + { + if (pawnOnMap != referencedPawn && IdeoUtility.IsFatherOfPregnancy(pawnOnMap, referencedPawn)) // Check if this pawn is the father of p + { + return ThoughtState.ActiveDefault; // Active thought if the pawn is the father + } + } + } + } + // Return default (inactive) if no valid conditions were met + return ThoughtState.Inactive; + } + } +} diff --git a/Source/IdeologyAddon/Rituals/RitualBehaviorWorkers.cs b/Source/IdeologyAddon/Rituals/RitualBehaviorWorkers.cs index ec831f2..1d5c9b6 100644 --- a/Source/IdeologyAddon/Rituals/RitualBehaviorWorkers.cs +++ b/Source/IdeologyAddon/Rituals/RitualBehaviorWorkers.cs @@ -1,20 +1,16 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Linq; using RimWorld; using Verse; using Verse.AI.Group; namespace RJWSexperience.Ideology { - public class RitualBehaviorWorker_Gangbang : RitualBehaviorWorker - { + public class RitualBehaviorWorker_Gangbang : RitualBehaviorWorker + { public RitualBehaviorWorker_Gangbang() { } public RitualBehaviorWorker_Gangbang(RitualBehaviorDef def) : base(def) { } - + public override void PostCleanup(LordJob_Ritual ritual) { Pawn warden = ritual.PawnWithRole("initiator"); @@ -26,11 +22,11 @@ namespace RJWSexperience.Ideology } } - protected override LordJob CreateLordJob(TargetInfo target, Pawn organizer, Precept_Ritual ritual, RitualObligation obligation, RitualRoleAssignments assignments) - { - return new LordJob_Ritual_Gangbang("victim", target, ritual, obligation, def.stages, assignments, organizer); + protected override LordJob CreateLordJob(TargetInfo target, Pawn organizer, Precept_Ritual ritual, RitualObligation obligation, RitualRoleAssignments assignments) + { + return new LordJob_Ritual_Gangbang("victim", target, ritual, obligation, def.stages, assignments, organizer); } - } + } public class RitualBehaviorWorker_Gangbang_Consensual : RitualBehaviorWorker { @@ -45,7 +41,7 @@ namespace RJWSexperience.Ideology } public class RitualStage_InteractWithVictim : RitualStage - { + { public override TargetInfo GetSecondFocus(LordJob_Ritual ritual) { return ritual.assignments.AssignedPawns("victim").FirstOrDefault(p => RitualRole_RapeVictim.CanBeVictim(p)); diff --git a/Source/IdeologyAddon/RsiDefOf.cs b/Source/IdeologyAddon/RsiDefOf.cs index 7c36db8..92841ce 100644 --- a/Source/IdeologyAddon/RsiDefOf.cs +++ b/Source/IdeologyAddon/RsiDefOf.cs @@ -13,12 +13,12 @@ namespace RJWSexperience.Ideology public static readonly JobDef GettinGangbang; public static readonly JobDef DrugSex; public static readonly JobDef GettinDrugSex; - public static readonly JobDef DrugMasturbate; - public static readonly JobDef TameLewd_Feed; - public static readonly JobDef TameLewd_Lovin; - public static readonly JobDef TrainLewd_Feed; - public static readonly JobDef TrainLewd_Lovin; - public static readonly JobDef TrainLewd_Reciever; + public static readonly JobDef DrugMasturbate; + public static readonly JobDef TameLewd_Feed; + public static readonly JobDef TameLewd_Lovin; + public static readonly JobDef TrainLewd_Feed; + public static readonly JobDef TrainLewd_Lovin; + public static readonly JobDef TrainLewd_Reciever; } [DefOf] @@ -44,22 +44,22 @@ namespace RJWSexperience.Ideology public static readonly PreceptDef BabyFaction_AlwaysColony; public static readonly PreceptDef Submissive_Male; public static readonly PreceptDef Submissive_Female; - public static readonly PreceptDef ProselyzingByOrgasm; - public static readonly PreceptDef Pregnancy_Holy; - public static readonly PreceptDef Pregnancy_Elevated; - public static readonly PreceptDef Pregnancy_Required; - public static readonly PreceptDef Pregnancy_Horrible; - public static readonly PreceptDef Pregnancy_NoRules; - public static readonly PreceptDef PregnancyAnimal_Required; - public static readonly PreceptDef PregnancyAnimal_Horrible; - public static readonly PreceptDef PregnancyAnimal_NoRules; - public static readonly PreceptDef AnimalConnection_Lovin; - public static readonly PreceptDef AnimalConnection_LovinBond; - public static readonly PreceptDef BestialBreeding_Disliked; - public static readonly PreceptDef BestialBreeding_Horrible; - public static readonly PreceptDef BestialBreeding_Required; - public static readonly PreceptDef BestialBreeding_Encouraged; - } + public static readonly PreceptDef ProselyzingByOrgasm; + public static readonly PreceptDef Pregnancy_Holy; + public static readonly PreceptDef Pregnancy_Elevated; + public static readonly PreceptDef Pregnancy_Required; + public static readonly PreceptDef Pregnancy_Horrible; + public static readonly PreceptDef Pregnancy_NoRules; + public static readonly PreceptDef PregnancyAnimal_Required; + public static readonly PreceptDef PregnancyAnimal_Horrible; + public static readonly PreceptDef PregnancyAnimal_NoRules; + public static readonly PreceptDef AnimalConnection_Lovin; + public static readonly PreceptDef AnimalConnection_LovinBond; + public static readonly PreceptDef BestialBreeding_Disliked; + public static readonly PreceptDef BestialBreeding_Horrible; + public static readonly PreceptDef BestialBreeding_Required; + public static readonly PreceptDef BestialBreeding_Encouraged; + } [DefOf] public static class HistoryEvent @@ -73,15 +73,16 @@ namespace RJWSexperience.Ideology public static readonly HistoryEventDef RSI_VirginStolen; public static readonly HistoryEventDef RSI_TookVirgin; public static readonly HistoryEventDef RSI_Masturbated; - } - [DefOf] - public static class Interaction - { - public static readonly InteractionDef AnimalSexTameChatMale; - public static readonly InteractionDef AnimalSexTameChatFemale; - } - - [DefOf] + } + + [DefOf] + public static class Interaction + { + public static readonly InteractionDef AnimalSexTameChatMale; + public static readonly InteractionDef AnimalSexTameChatFemale; + } + + [DefOf] public static class Hediff { [MayRequireBiotech] public static readonly HediffDef PregnantHuman; diff --git a/Source/IdeologyAddon/SexTame/BestialityUtility.cs b/Source/IdeologyAddon/SexTame/BestialityUtility.cs index 5c4e564..2714070 100644 --- a/Source/IdeologyAddon/SexTame/BestialityUtility.cs +++ b/Source/IdeologyAddon/SexTame/BestialityUtility.cs @@ -1,24 +1,21 @@ -using System.Collections.Generic; -using System.Linq; using Verse; -using RimWorld; using rjw; namespace RJWSexperience.Ideology { - public static class BestialityUtility - { - public static bool CanDoLewdAnimalWork(Pawn human, Pawn animal) - { - if (human.Ideo == null) - { - return false; - } - if (human.Ideo.HasPrecept(RsiDefOf.Precept.AnimalConnection_Lovin) || human.Ideo.HasPrecept(RsiDefOf.Precept.AnimalConnection_LovinBond)) - { - return SexAppraiser.would_fuck_animal(human, animal) > 0; - } - else return false; - } - } + public static class BestialityUtility + { + public static bool CanDoLewdAnimalWork(Pawn human, Pawn animal) + { + if (human.Ideo == null) + { + return false; + } + if (human.Ideo.HasPrecept(RsiDefOf.Precept.AnimalConnection_Lovin) || human.Ideo.HasPrecept(RsiDefOf.Precept.AnimalConnection_LovinBond)) + { + return SexAppraiser.would_fuck_animal(human, animal) > 0; + } + else return false; + } + } } \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/InteractAnimalPatches.cs b/Source/IdeologyAddon/SexTame/InteractAnimalPatches.cs index fbe7975..bc8cb23 100644 --- a/Source/IdeologyAddon/SexTame/InteractAnimalPatches.cs +++ b/Source/IdeologyAddon/SexTame/InteractAnimalPatches.cs @@ -5,92 +5,91 @@ using System.Reflection.Emit; using RimWorld; using Verse; using HarmonyLib; -using rjw; using Verse.AI; namespace RJWSexperience.Ideology { - [HarmonyPatch] - static class WorkGiver_InteractAnimal_ReduceNutritionRequiredByIdeo - { - public static IEnumerable TargetMethods() - { - yield return AccessTools.Method(typeof(WorkGiver_InteractAnimal), "HasFoodToInteractAnimal"); - yield return AccessTools.Method(typeof(WorkGiver_InteractAnimal), "TakeFoodForAnimalInteractJob"); - yield return AccessTools.Method(typeof(WorkGiver_Tame), nameof(WorkGiver_Tame.JobOnThing)); - } + [HarmonyPatch] + static class WorkGiver_InteractAnimal_ReduceNutritionRequiredByIdeo + { + public static IEnumerable TargetMethods() + { + yield return AccessTools.Method(typeof(WorkGiver_InteractAnimal), "HasFoodToInteractAnimal"); + yield return AccessTools.Method(typeof(WorkGiver_InteractAnimal), "TakeFoodForAnimalInteractJob"); + yield return AccessTools.Method(typeof(WorkGiver_Tame), nameof(WorkGiver_Tame.JobOnThing)); + } - public static IEnumerable Transpiler(IEnumerable instructions, MethodBase original) - { - MethodInfo requiredNutritionPerFeed = AccessTools.Method(typeof(JobDriver_InteractAnimal), - nameof(JobDriver_InteractAnimal.RequiredNutritionPerFeed)); + public static IEnumerable Transpiler(IEnumerable instructions, MethodBase original) + { + MethodInfo requiredNutritionPerFeed = AccessTools.Method(typeof(JobDriver_InteractAnimal), + nameof(JobDriver_InteractAnimal.RequiredNutritionPerFeed)); - Type thisType = typeof(WorkGiver_InteractAnimal_ReduceNutritionRequiredByIdeo); + Type thisType = typeof(WorkGiver_InteractAnimal_ReduceNutritionRequiredByIdeo); - bool patched = false; + bool patched = false; - foreach (var instruction in instructions) - { - yield return instruction; + foreach (var instruction in instructions) + { + yield return instruction; - if (instruction.Calls(requiredNutritionPerFeed)) - { - yield return new CodeInstruction(OpCodes.Ldarg_1); - yield return new CodeInstruction(OpCodes.Ldarg_2); - yield return CodeInstruction.Call(thisType, nameof(IdeoFactor)); - yield return new CodeInstruction(OpCodes.Mul); - patched = true; - } - } + if (instruction.Calls(requiredNutritionPerFeed)) + { + yield return new CodeInstruction(OpCodes.Ldarg_1); + yield return new CodeInstruction(OpCodes.Ldarg_2); + yield return CodeInstruction.Call(thisType, nameof(IdeoFactor)); + yield return new CodeInstruction(OpCodes.Mul); + patched = true; + } + } - if (!patched) - { - Log.Error($"SCE: Transpiler patch {thisType} failed to find a call to {requiredNutritionPerFeed.DeclaringType}:" + - $"{requiredNutritionPerFeed.Name} on {original.ReflectedType}:{original.Name}"); - } - } + if (!patched) + { + Log.Error($"SCE: Transpiler patch {thisType} failed to find a call to {requiredNutritionPerFeed.DeclaringType}:" + + $"{requiredNutritionPerFeed.Name} on {original.ReflectedType}:{original.Name}"); + } + } - private static float IdeoFactor(Pawn tamer, Pawn tamee) - { - if (BestialityUtility.CanDoLewdAnimalWork(tamer, tamee)) - { - return 0.5f; - } + private static float IdeoFactor(Pawn tamer, Pawn tamee) + { + if (BestialityUtility.CanDoLewdAnimalWork(tamer, tamee)) + { + return 0.5f; + } - return 1f; - } - } + return 1f; + } + } - [HarmonyPatch(typeof(WorkGiver_Tame), nameof(WorkGiver_Tame.JobOnThing))] - static class WorkGiver_Tame_GiveLewdTameJobIfPossible - { - public static void Postfix(Job __result, Pawn pawn, Thing t) - { - if (__result?.def != JobDefOf.Tame) - { - return; - } + [HarmonyPatch(typeof(WorkGiver_Tame), nameof(WorkGiver_Tame.JobOnThing))] + static class WorkGiver_Tame_GiveLewdTameJobIfPossible + { + public static void Postfix(Job __result, Pawn pawn, Thing t) + { + if (__result?.def != JobDefOf.Tame) + { + return; + } - if (BestialityUtility.CanDoLewdAnimalWork(pawn, (Pawn)t)) - { - __result.def = RsiDefOf.Job.TameLewd_Feed; - } - } - } + if (BestialityUtility.CanDoLewdAnimalWork(pawn, (Pawn)t)) + { + __result.def = RsiDefOf.Job.TameLewd_Feed; + } + } + } - [HarmonyPatch(typeof(WorkGiver_Train), nameof(WorkGiver_Train.JobOnThing))] - static class WorkGiver_Train_GiveLewdTrainJobIfPossible - { - public static void Postfix(Job __result, Pawn pawn, Thing t) - { - if (__result?.def != JobDefOf.Train) - { - return; - } - if (BestialityUtility.CanDoLewdAnimalWork(pawn, (Pawn)t)) - { - __result.def = RsiDefOf.Job.TrainLewd_Feed; - } - } - } + [HarmonyPatch(typeof(WorkGiver_Train), nameof(WorkGiver_Train.JobOnThing))] + static class WorkGiver_Train_GiveLewdTrainJobIfPossible + { + public static void Postfix(Job __result, Pawn pawn, Thing t) + { + if (__result?.def != JobDefOf.Train) + { + return; + } + if (BestialityUtility.CanDoLewdAnimalWork(pawn, (Pawn)t)) + { + __result.def = RsiDefOf.Job.TrainLewd_Feed; + } + } + } } \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTameFeed.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTameFeed.cs index 7044b59..9ce9f54 100644 --- a/Source/IdeologyAddon/SexTame/JobDriver_LewdTameFeed.cs +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTameFeed.cs @@ -6,52 +6,52 @@ using rjw; namespace RJWSexperience.Ideology { - public class JobDriver_LewdTameFeed : JobDriver_Tame - { - protected override IEnumerable MakeNewToils() - { - SetFinalizerJob(cond => cond == JobCondition.Succeeded - ? JobMaker.MakeJob(RsiDefOf.Job.TameLewd_Lovin, Animal) - : null); + public class JobDriver_LewdTameFeed : JobDriver_Tame + { + protected override IEnumerable MakeNewToils() + { + SetFinalizerJob(cond => cond == JobCondition.Succeeded + ? JobMaker.MakeJob(RsiDefOf.Job.TameLewd_Lovin, Animal) + : null); - bool skipping = false; - foreach (var toil in base.MakeNewToils()) - { - // Base has two sets of toils for feeding, which each begin with a toil named 'FeedToils'. - // Since we only want to feed once, we skip everything between the two. - if (toil.debugName == "FeedToils") - { - skipping = !skipping; - } - // Hold off on setting last interact time until sex is finished - if (skipping || toil.debugName == nameof(Toils_Interpersonal.SetLastInteractTime)) - { - continue; - } + bool skipping = false; + foreach (var toil in base.MakeNewToils()) + { + // Base has two sets of toils for feeding, which each begin with a toil named 'FeedToils'. + // Since we only want to feed once, we skip everything between the two. + if (toil.debugName == "FeedToils") + { + skipping = !skipping; + } + // Hold off on setting last interact time until sex is finished + if (skipping || toil.debugName == nameof(Toils_Interpersonal.SetLastInteractTime)) + { + continue; + } - // Recruitment and roping work to be handled by sex job - if (toil.debugName == "TryRecruit") - { - break; - } + // Recruitment and roping work to be handled by sex job + if (toil.debugName == "TryRecruit") + { + break; + } - // Replace talk to animal interaction with RJW's one - if (toil.debugName == "TalkToAnimal" && Rand.Chance(0.5f)) - { - toil.initAction = delegate - { - if (xxx.can_fuck(Animal)) - { - pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatMale); - } - else - { - pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatFemale); - } - }; - } - yield return toil; - } - } - } + // Replace talk to animal interaction with RJW's one + if (toil.debugName == "TalkToAnimal" && Rand.Chance(0.5f)) + { + toil.initAction = delegate + { + if (xxx.can_fuck(Animal)) + { + pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatMale); + } + else + { + pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatFemale); + } + }; + } + yield return toil; + } + } + } } \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs index aced7f4..4ec1d1f 100644 --- a/Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs @@ -6,58 +6,58 @@ using Verse.AI; namespace RJWSexperience.Ideology { - public class JobDriver_LewdTameSex : LewdTrainBase - { - private Pawn originalPartner; - protected override IEnumerable MakeNewToils() - { - originalPartner = Partner; - if (SexAppraiser.would_fuck_animal(pawn, Partner) > 0f) - { - foreach (var baseToil in base.MakeNewToils()) - { - yield return baseToil; - } - } + public class JobDriver_LewdTameSex : LewdTrainBase + { + private Pawn originalPartner; + protected override IEnumerable MakeNewToils() + { + originalPartner = Partner; + if (SexAppraiser.would_fuck_animal(pawn, Partner) > 0f) + { + foreach (var baseToil in base.MakeNewToils()) + { + yield return baseToil; + } + } - if (originalPartner != Partner) - { - // Pawn got interrupted by another partner, then the original partner finished before them. - yield break; - } + if (originalPartner != Partner) + { + // Pawn got interrupted by another partner, then the original partner finished before them. + yield break; + } - yield return Toils_Interpersonal.SetLastInteractTime(iTarget); + yield return Toils_Interpersonal.SetLastInteractTime(iTarget); - Toil tryRecruit = Toils_Interpersonal.TryRecruit(iTarget); - tryRecruit.FailOn(() => Map.designationManager.DesignationOn(Partner, DesignationDefOf.Tame) == null); - yield return tryRecruit; + Toil tryRecruit = Toils_Interpersonal.TryRecruit(iTarget); + tryRecruit.FailOn(() => Map.designationManager.DesignationOn(Partner, DesignationDefOf.Tame) == null); + yield return tryRecruit; - Toil addTakeToPenWork = ToilMaker.MakeToil(); - addTakeToPenWork.initAction = delegate - { - if (AnimalPenUtility.NeedsToBeManagedByRope(Partner) && Partner.Faction == Faction.OfPlayer && AnimalPenUtility.GetCurrentPenOf(Partner, allowUnenclosedPens: false) == null) - { - Job ropeJob = null; - RopingPriority ropingPriority = RopingPriority.Closest; + Toil addTakeToPenWork = ToilMaker.MakeToil(); + addTakeToPenWork.initAction = delegate + { + if (AnimalPenUtility.NeedsToBeManagedByRope(Partner) && Partner.Faction == Faction.OfPlayer && AnimalPenUtility.GetCurrentPenOf(Partner, allowUnenclosedPens: false) == null) + { + Job ropeJob = null; + RopingPriority ropingPriority = RopingPriority.Closest; - CompAnimalPenMarker penMarker = AnimalPenUtility.GetPenAnimalShouldBeTakenTo(pawn, Partner, out _, forced: false, canInteractWhileSleeping: true, allowUnenclosedPens: true, ignoreSkillRequirements: true, ropingPriority); - if (penMarker != null) - { - ropeJob = WorkGiver_TakeToPen.MakeJob(pawn, Partner, penMarker, allowUnenclosedPens: true, ropingPriority, out _); - } - if (ropeJob != null) - { - pawn.jobs.StartJob(ropeJob, JobCondition.Succeeded); - } - else - { - Messages.Message("MessageTameNoSuitablePens".Translate(Partner.Named("ANIMAL")), Partner, MessageTypeDefOf.NeutralEvent); - } - } - }; - addTakeToPenWork.defaultCompleteMode = ToilCompleteMode.Instant; - yield return addTakeToPenWork; + CompAnimalPenMarker penMarker = AnimalPenUtility.GetPenAnimalShouldBeTakenTo(pawn, Partner, out _, forced: false, canInteractWhileSleeping: true, allowUnenclosedPens: true, ignoreSkillRequirements: true, ropingPriority); + if (penMarker != null) + { + ropeJob = WorkGiver_TakeToPen.MakeJob(pawn, Partner, penMarker, allowUnenclosedPens: true, ropingPriority, out _); + } + if (ropeJob != null) + { + pawn.jobs.StartJob(ropeJob, JobCondition.Succeeded); + } + else + { + Messages.Message("MessageTameNoSuitablePens".Translate(Partner.Named("ANIMAL")), Partner, MessageTypeDefOf.NeutralEvent); + } + } + }; + addTakeToPenWork.defaultCompleteMode = ToilCompleteMode.Instant; + yield return addTakeToPenWork; - } - } + } + } } \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainBase.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainBase.cs index 67f0ac8..e605a23 100644 --- a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainBase.cs +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainBase.cs @@ -1,9 +1,6 @@ -using System; using System.Collections.Generic; -using System.Security.Cryptography; using RimWorld; using rjw; -using RJWSexperience.Ideology; using Verse; using Verse.AI; @@ -11,68 +8,68 @@ namespace RJWSexperience.Ideology { public class LewdTrainBase : JobDriver_SexBaseInitiator { - public override bool TryMakePreToilReservations(bool errorOnFailed) - { - return pawn.Reserve(Target, job, 1, 0, null, errorOnFailed); - } - - protected override IEnumerable MakeNewToils() - { - setup_ticks(); - var PartnerJob = RsiDefOf.Job.TrainLewd_Reciever; + public override bool TryMakePreToilReservations(bool errorOnFailed) + { + return pawn.Reserve(Target, job, 1, 0, null, errorOnFailed); + } - this.FailOnDespawnedOrNull(iTarget); - this.FailOn(() => !pawn.CanReserveAndReach(Partner, PathEndMode.OnCell, Danger.Deadly)); - this.FailOn(() => pawn.Drafted); - this.FailOn(() => Partner.IsFighting()); + protected override IEnumerable MakeNewToils() + { + setup_ticks(); + var PartnerJob = RsiDefOf.Job.TrainLewd_Reciever; - yield return Toils_Reserve.Reserve(iTarget, 1, 0); - yield return Toils_Goto.GotoThing(iTarget, PathEndMode.OnCell); - - var StartPartnerJob = new Toil(); - StartPartnerJob.defaultCompleteMode = ToilCompleteMode.Instant; - StartPartnerJob.socialMode = RandomSocialMode.Off; - StartPartnerJob.initAction = delegate - { - Partner.jobs.StartJob( - JobMaker.MakeJob(PartnerJob, pawn), - JobCondition.InterruptForced - ); - }; - yield return StartPartnerJob; + this.FailOnDespawnedOrNull(iTarget); + this.FailOn(() => !pawn.CanReserveAndReach(Partner, PathEndMode.OnCell, Danger.Deadly)); + this.FailOn(() => pawn.Drafted); + this.FailOn(() => Partner.IsFighting()); - var sexToil = new Toil(); - sexToil.defaultCompleteMode = ToilCompleteMode.Never; - sexToil.defaultDuration = duration; - sexToil.handlingFacing = true; - sexToil.initAction = delegate - { - Partner.pather.StopDead(); - Partner.jobs.curDriver.asleep = false; + yield return Toils_Reserve.Reserve(iTarget, 1, 0); + yield return Toils_Goto.GotoThing(iTarget, PathEndMode.OnCell); - Start(); - }; - sexToil.tickAction = delegate - { - if (pawn.IsHashIntervalTick(ticks_between_hearts)) - ThrowMetaIconF(pawn.Position, pawn.Map, FleckDefOf.Heart); - SexTick(pawn, Partner); - if (!Partner.Dead) - SexUtility.reduce_rest(Partner, 1); - SexUtility.reduce_rest(pawn, 2); - if (ticks_left <= 0) - ReadyForNextToil(); - }; - sexToil.FailOn(() => Partner.CurJob?.def != PartnerJob); - sexToil.AddFinishAction(End); - yield return sexToil; + var StartPartnerJob = new Toil(); + StartPartnerJob.defaultCompleteMode = ToilCompleteMode.Instant; + StartPartnerJob.socialMode = RandomSocialMode.Off; + StartPartnerJob.initAction = delegate + { + Partner.jobs.StartJob( + JobMaker.MakeJob(PartnerJob, pawn), + JobCondition.InterruptForced + ); + }; + yield return StartPartnerJob; - yield return new Toil - { - initAction = () => SexUtility.ProcessSex(Sexprops), - defaultCompleteMode = ToilCompleteMode.Instant - }; - } - - } + var sexToil = new Toil(); + sexToil.defaultCompleteMode = ToilCompleteMode.Never; + sexToil.defaultDuration = duration; + sexToil.handlingFacing = true; + sexToil.initAction = delegate + { + Partner.pather.StopDead(); + Partner.jobs.curDriver.asleep = false; + + Start(); + }; + sexToil.tickAction = delegate + { + if (pawn.IsHashIntervalTick(ticks_between_hearts)) + ThrowMetaIconF(pawn.Position, pawn.Map, FleckDefOf.Heart); + SexTick(pawn, Partner); + if (!Partner.Dead) + SexUtility.reduce_rest(Partner, 1); + SexUtility.reduce_rest(pawn, 2); + if (ticks_left <= 0) + ReadyForNextToil(); + }; + sexToil.FailOn(() => Partner.CurJob?.def != PartnerJob); + sexToil.AddFinishAction(End); + yield return sexToil; + + yield return new Toil + { + initAction = () => SexUtility.ProcessSex(Sexprops), + defaultCompleteMode = ToilCompleteMode.Instant + }; + } + + } } diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainFeed.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainFeed.cs index 1b7eee5..568d79e 100644 --- a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainFeed.cs +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainFeed.cs @@ -6,54 +6,54 @@ using rjw; namespace RJWSexperience.Ideology { - public class JobDriver_LewdTrainFeed : JobDriver_Train - { - protected override IEnumerable MakeNewToils() - { - SetFinalizerJob(cond => - cond == JobCondition.Succeeded - ? JobMaker.MakeJob(RsiDefOf.Job.TrainLewd_Lovin, Animal) - : null - ); + public class JobDriver_LewdTrainFeed : JobDriver_Train + { + protected override IEnumerable MakeNewToils() + { + SetFinalizerJob(cond => + cond == JobCondition.Succeeded + ? JobMaker.MakeJob(RsiDefOf.Job.TrainLewd_Lovin, Animal) + : null + ); - bool skipping = false; - foreach (var toil in base.MakeNewToils()) - { - // Base has two sets of toils for feeding, which each begin with a toil named 'FeedToils'. - // Since we only want to feed once, we skip everything between the two. - if (toil.debugName == "FeedToils") - { - skipping = !skipping; - } - // Hold off on setting last interact time until sex is finished - if (skipping || toil.debugName == nameof(Toils_Interpersonal.SetLastInteractTime)) - { - continue; - } + bool skipping = false; + foreach (var toil in base.MakeNewToils()) + { + // Base has two sets of toils for feeding, which each begin with a toil named 'FeedToils'. + // Since we only want to feed once, we skip everything between the two. + if (toil.debugName == "FeedToils") + { + skipping = !skipping; + } + // Hold off on setting last interact time until sex is finished + if (skipping || toil.debugName == nameof(Toils_Interpersonal.SetLastInteractTime)) + { + continue; + } - // Training to be handled by sex job - if (toil.debugName == nameof(Toils_Interpersonal.TryTrain)) - { - break; - } + // Training to be handled by sex job + if (toil.debugName == nameof(Toils_Interpersonal.TryTrain)) + { + break; + } - // Replace talk to animal interaction with RJW's one - if (toil.debugName == "TalkToAnimal" && Rand.Chance(0.5f)) - { - toil.initAction = delegate - { - if (xxx.can_fuck(Animal)) - { - pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatMale); - } - else - { - pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatFemale); - } - }; - } - yield return toil; - } - } - } + // Replace talk to animal interaction with RJW's one + if (toil.debugName == "TalkToAnimal" && Rand.Chance(0.5f)) + { + toil.initAction = delegate + { + if (xxx.can_fuck(Animal)) + { + pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatMale); + } + else + { + pawn.interactions.TryInteractWith(Animal, RsiDefOf.Interaction.AnimalSexTameChatFemale); + } + }; + } + yield return toil; + } + } + } } \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainReciever.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainReciever.cs index dce2096..4bef44c 100644 --- a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainReciever.cs +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainReciever.cs @@ -1,48 +1,48 @@ -using System.Collections.Generic; -using Verse; -using RimWorld; -using rjw; -using Verse.AI; - -namespace RJWSexperience.Ideology +using System.Collections.Generic; +using Verse; +using RimWorld; +using rjw; +using Verse.AI; + +namespace RJWSexperience.Ideology { - public class JobDriver_LewdTrainReciever : JobDriver_SexBaseReciever - { - protected override IEnumerable MakeNewToils() - { - DoSetup(); + public class JobDriver_LewdTrainReciever : JobDriver_SexBaseReciever + { + protected override IEnumerable MakeNewToils() + { + DoSetup(); - var get_loved = new Toil - { - defaultCompleteMode = ToilCompleteMode.Never, - handlingFacing = true, - socialMode = RandomSocialMode.Off, - initAction = () => - { - pawn.pather.StopDead(); - pawn.jobs.curDriver.asleep = false; - }, - tickAction = () => - { - if (pawn.IsHashIntervalTick(ticks_between_hearts)) - ThrowMetaIconF(pawn.Position, pawn.Map, FleckDefOf.Heart); - } - }; - get_loved.AddFinishAction(() => - { - if (xxx.is_human(pawn)) - { - var comp = pawn.GetCompRJW(); - if (comp != null) - { - comp.drawNude = false; - pawn.Drawer.renderer.SetAllGraphicsDirty(); - } - } - GlobalTextureAtlasManager.TryMarkPawnFrameSetDirty(pawn); - }); + var get_loved = new Toil + { + defaultCompleteMode = ToilCompleteMode.Never, + handlingFacing = true, + socialMode = RandomSocialMode.Off, + initAction = () => + { + pawn.pather.StopDead(); + pawn.jobs.curDriver.asleep = false; + }, + tickAction = () => + { + if (pawn.IsHashIntervalTick(ticks_between_hearts)) + ThrowMetaIconF(pawn.Position, pawn.Map, FleckDefOf.Heart); + } + }; + get_loved.AddFinishAction(() => + { + if (xxx.is_human(pawn)) + { + var comp = pawn.GetCompRJW(); + if (comp != null) + { + comp.drawNude = false; + pawn.Drawer.renderer.SetAllGraphicsDirty(); + } + } + GlobalTextureAtlasManager.TryMarkPawnFrameSetDirty(pawn); + }); - yield return get_loved; - } - } + yield return get_loved; + } + } } \ No newline at end of file diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs index 4dd41e3..5b56072 100644 --- a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs @@ -6,29 +6,29 @@ using Verse.AI; namespace RJWSexperience.Ideology { - public class JobDriver_LewdTrainSex : LewdTrainBase - { - private Pawn originalPartner; - protected override IEnumerable MakeNewToils() - { - originalPartner = Partner; - if (SexAppraiser.would_fuck_animal(pawn, Partner) > 0f) - { - foreach (var baseToil in base.MakeNewToils()) - { - yield return baseToil; - } - } + public class JobDriver_LewdTrainSex : LewdTrainBase + { + private Pawn originalPartner; + protected override IEnumerable MakeNewToils() + { + originalPartner = Partner; + if (SexAppraiser.would_fuck_animal(pawn, Partner) > 0f) + { + foreach (var baseToil in base.MakeNewToils()) + { + yield return baseToil; + } + } - if (originalPartner != Partner) - { - // Pawn got interrupted by another partner, then the original partner finished before them. - yield break; - } + if (originalPartner != Partner) + { + // Pawn got interrupted by another partner, then the original partner finished before them. + yield break; + } - yield return Toils_Interpersonal.SetLastInteractTime(iTarget); + yield return Toils_Interpersonal.SetLastInteractTime(iTarget); - yield return Toils_Interpersonal.TryTrain(iTarget); - } - } + yield return Toils_Interpersonal.TryTrain(iTarget); + } + } } \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs index b042078..0c64f94 100644 --- a/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs @@ -1,97 +1,96 @@ -using RimWorld; -using rjw; -using rjw.Modules.Interactions.Contexts; -using rjw.Modules.Interactions.Enums; -using rjw.Modules.Interactions.Rules.PartKindUsageRules; -using rjw.Modules.Shared; -using RJWSexperience.Ideology.PreceptWorkers; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class DecreasedVaginal : IPartPreferenceRule - { - private bool DecreasedWillingAndAble(Pawn fucker, Pawn fucked) - { - var validHumanPrecepts = new HashSet - { - RsiDefOf.Precept.Pregnancy_Horrible - }; +using RimWorld; +using rjw; +using rjw.Modules.Interactions.Contexts; +using rjw.Modules.Interactions.Enums; +using rjw.Modules.Interactions.Rules.PartKindUsageRules; +using rjw.Modules.Shared; +using System.Collections.Generic; +using System.Linq; +using Verse; - var validAnimalPrecepts = new HashSet - { - RsiDefOf.Precept.PregnancyAnimal_Horrible - }; +namespace RJWSexperience.Ideology +{ + public class DecreasedVaginal : IPartPreferenceRule + { + private bool DecreasedWillingAndAble(Pawn fucker, Pawn fucked) + { + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Horrible + }; - var validBreedingPrecepts = new HashSet - { - RsiDefOf.Precept.BestialBreeding_Horrible, - RsiDefOf.Precept.BestialBreeding_Disliked - }; + var validAnimalPrecepts = new HashSet + { + RsiDefOf.Precept.PregnancyAnimal_Horrible + }; - bool hasValidHumanPreceptForFucker = fucker.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Horrible, + RsiDefOf.Precept.BestialBreeding_Disliked + }; - bool hasValidHumanPreceptForFucked = fucked.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && - validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - bool hasValidBreedingPreceptsForFucker = fucker.Ideo != null && - validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && + validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - bool result = false; + bool hasValidBreedingPreceptsForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) - { - ModLog.Message($"DecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; - } - else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) - { - ModLog.Message($"DecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); - result = true; - } - else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) - { - ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; - } + bool result = false; - return result; - } + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"DecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) + { + ModLog.Message($"DecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (DecreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - { - ModLog.Message($"DecreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); - return Values(); - } + return result; + } - return Enumerable.Empty>(); - } - - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (DecreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - ModLog.Message($"DecreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); - return Values(); - } + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (DecreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + { + ModLog.Message($"DecreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); + return Values(); + } - return Enumerable.Empty>(); - } + return Enumerable.Empty>(); + } - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.AlmostNever, LewdablePartKind.Vagina); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Breasts); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Anus); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Mouth); - } - } -} + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (DecreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + { + ModLog.Message($"DecreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.AlmostNever, LewdablePartKind.Vagina); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Breasts); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Anus); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Mouth); + } + } +} diff --git a/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs index 44b5b32..8a5d6b6 100644 --- a/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs @@ -4,96 +4,94 @@ using rjw.Modules.Interactions.Contexts; using rjw.Modules.Interactions.Enums; using rjw.Modules.Interactions.Rules.PartKindUsageRules; using rjw.Modules.Shared; -using RJWSexperience.Ideology.PreceptWorkers; -using System; using System.Collections.Generic; using System.Linq; using Verse; namespace RJWSexperience.Ideology { - public class FocusedVaginal : IPartPreferenceRule - { - private bool FocusedWillingAndAble(Pawn fucker, Pawn fucked) - { - // Define the set of valid precepts - var validHumanPrecepts = new HashSet - { - RsiDefOf.Precept.Pregnancy_Required, - }; - - var validAnimalPrecepts = new HashSet - { - RsiDefOf.Precept.PregnancyAnimal_Required, - }; - - var validBreedingPrecepts = new HashSet - { - RsiDefOf.Precept.BestialBreeding_Required, - }; + public class FocusedVaginal : IPartPreferenceRule + { + private bool FocusedWillingAndAble(Pawn fucker, Pawn fucked) + { + // Define the set of valid precepts + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Required, + }; - // Check precepts for the pawns - bool hasValidHumanPreceptForFucked = fucked.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + var validAnimalPrecepts = new HashSet + { + RsiDefOf.Precept.PregnancyAnimal_Required, + }; - bool hasValidHumanPreceptForFucker = fucker.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Required, + }; - bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && - validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + // Check precepts for the pawns + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && - validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - // Determine if conditions are met - bool result = false; + bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && + validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) - { - ModLog.Message($"FocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; - } - else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) - { - ModLog.Message($"FocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); - result = true; - } - else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) - { - ModLog.Message($"FocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; - } + bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - return result; - } + // Determine if conditions are met + bool result = false; - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (FocusedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - { - ModLog.Message($"FocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have focused vaginal chances."); - return Values(); - } + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"FocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) + { + ModLog.Message($"FocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"FocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } - return Enumerable.Empty>(); - } + return result; + } - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (FocusedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - ModLog.Message($"FocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have focused vaginal chances."); - return Values(); - } + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (FocusedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + { + ModLog.Message($"FocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have focused vaginal chances."); + return Values(); + } - return Enumerable.Empty>(); - } + return Enumerable.Empty>(); + } - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Vagina); - yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Anus); - yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Mouth); - } - } + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (FocusedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + { + ModLog.Message($"FocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have focused vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Vagina); + yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Anus); + yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Mouth); + } + } } \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs index d1f136c..5cea620 100644 --- a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs @@ -4,81 +4,80 @@ using rjw.Modules.Interactions.Contexts; using rjw.Modules.Interactions.Enums; using rjw.Modules.Interactions.Rules.PartKindUsageRules; using rjw.Modules.Shared; -using RJWSexperience.Ideology.PreceptWorkers; using System.Collections.Generic; using System.Linq; using Verse; namespace RJWSexperience.Ideology { - public class IncreasedVaginal : IPartPreferenceRule - { - private bool IncreasedWillingAndAble(Pawn fucker, Pawn fucked) - { - // Define the set of valid precepts - var validHumanPrecepts = new HashSet - { - RsiDefOf.Precept.Pregnancy_Elevated, - RsiDefOf.Precept.Pregnancy_Holy, - }; + public class IncreasedVaginal : IPartPreferenceRule + { + private bool IncreasedWillingAndAble(Pawn fucker, Pawn fucked) + { + // Define the set of valid precepts + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Elevated, + RsiDefOf.Precept.Pregnancy_Holy, + }; - var validBreedingPrecepts = new HashSet - { - RsiDefOf.Precept.BestialBreeding_Encouraged, - }; + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Encouraged, + }; - // Check precepts for the pawns - bool hasValidHumanPreceptForFucker = fucker.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + // Check precepts for the pawns + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - bool hasValidHumanPreceptForFucked = fucked.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && - validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - // Determine if conditions are met - bool result = false; + // Determine if conditions are met + bool result = false; - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) - { - ModLog.Message($"IncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; - } - else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) - { - ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; - } + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"IncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } - return result; - } + return result; + } - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (IncreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - { - ModLog.Message($"IncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); - return Values(); - } + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (IncreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + { + ModLog.Message($"IncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); + return Values(); + } - return Enumerable.Empty>(); - } + return Enumerable.Empty>(); + } - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (IncreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - ModLog.Message($"IncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); - return Values(); - } + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (IncreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + { + ModLog.Message($"IncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); + return Values(); + } - return Enumerable.Empty>(); - } + return Enumerable.Empty>(); + } - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.Doubled, LewdablePartKind.Vagina); - } - } + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.Doubled, LewdablePartKind.Vagina); + } + } } \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs index cc7408d..e46f4a8 100644 --- a/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs @@ -1,97 +1,96 @@ -using RimWorld; -using rjw; -using rjw.Modules.Interactions.Contexts; -using rjw.Modules.Interactions.Enums; -using rjw.Modules.Interactions.Rules.PartKindUsageRules; -using rjw.Modules.Shared; -using RJWSexperience.Ideology.PreceptWorkers; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class MaleDecreasedVaginal : IPartPreferenceRule - { - private bool DecreasedWillingAndAble(Pawn fucker, Pawn fucked) - { - var validHumanPrecepts = new HashSet - { - RsiDefOf.Precept.Pregnancy_Horrible - }; +using RimWorld; +using rjw; +using rjw.Modules.Interactions.Contexts; +using rjw.Modules.Interactions.Enums; +using rjw.Modules.Interactions.Rules.PartKindUsageRules; +using rjw.Modules.Shared; +using System.Collections.Generic; +using System.Linq; +using Verse; - var validAnimalPrecepts = new HashSet - { - RsiDefOf.Precept.PregnancyAnimal_Horrible - }; +namespace RJWSexperience.Ideology +{ + public class MaleDecreasedVaginal : IPartPreferenceRule + { + private bool DecreasedWillingAndAble(Pawn fucker, Pawn fucked) + { + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Horrible + }; - var validBreedingPrecepts = new HashSet - { - RsiDefOf.Precept.BestialBreeding_Horrible, - RsiDefOf.Precept.BestialBreeding_Disliked - }; + var validAnimalPrecepts = new HashSet + { + RsiDefOf.Precept.PregnancyAnimal_Horrible + }; - bool hasValidHumanPreceptForFucker = fucker.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Horrible, + RsiDefOf.Precept.BestialBreeding_Disliked + }; - bool hasValidHumanPreceptForFucked = fucked.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && - validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - bool hasValidBreedingPreceptsForFucker = fucker.Ideo != null && - validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && + validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - bool result = false; + bool hasValidBreedingPreceptsForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) - { - ModLog.Message($"MaleDecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; - } - else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) - { - ModLog.Message($"MaleDecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); - result = true; - } - else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) - { - ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; - } + bool result = false; - return result; - } + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"MaleDecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) + { + ModLog.Message($"MaleDecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (DecreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - ModLog.Message($"MaleDecreasedVaginal Dominant: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); - return Values(); - } + return result; + } - return Enumerable.Empty>(); - } - - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (DecreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - { - ModLog.Message($"MaleDecreasedVaginal Submissive: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); - return Values(); - } + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (DecreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + { + ModLog.Message($"MaleDecreasedVaginal Dominant: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); + return Values(); + } - return Enumerable.Empty>(); - } + return Enumerable.Empty>(); + } - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.AlmostNever, LewdablePartKind.Vagina); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Breasts); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Anus); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Mouth); - } - } -} + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (DecreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + { + ModLog.Message($"MaleDecreasedVaginal Submissive: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.AlmostNever, LewdablePartKind.Vagina); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Breasts); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Anus); + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Mouth); + } + } +} diff --git a/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs index db2b4ea..95e3d8c 100644 --- a/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs @@ -4,96 +4,94 @@ using rjw.Modules.Interactions.Contexts; using rjw.Modules.Interactions.Enums; using rjw.Modules.Interactions.Rules.PartKindUsageRules; using rjw.Modules.Shared; -using RJWSexperience.Ideology.PreceptWorkers; -using System; using System.Collections.Generic; using System.Linq; using Verse; namespace RJWSexperience.Ideology { - public class MaleFocusedVaginal : IPartPreferenceRule - { - private bool MaleFocusedWillingAndAble(Pawn fucker, Pawn fucked) - { - // Define the set of valid precepts - var validHumanPrecepts = new HashSet - { - RsiDefOf.Precept.Pregnancy_Required, - }; - - var validAnimalPrecepts = new HashSet - { - RsiDefOf.Precept.PregnancyAnimal_Required, - }; - - var validBreedingPrecepts = new HashSet - { - RsiDefOf.Precept.BestialBreeding_Required, - }; + public class MaleFocusedVaginal : IPartPreferenceRule + { + private bool MaleFocusedWillingAndAble(Pawn fucker, Pawn fucked) + { + // Define the set of valid precepts + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Required, + }; - // Check precepts for the pawns - bool hasValidHumanPreceptForFucked = fucked.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + var validAnimalPrecepts = new HashSet + { + RsiDefOf.Precept.PregnancyAnimal_Required, + }; - bool hasValidHumanPreceptForFucker = fucker.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Required, + }; - bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && - validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + // Check precepts for the pawns + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && - validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - // Determine if conditions are met - bool result = false; + bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && + validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) - { - ModLog.Message($"MaleFocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; - } - else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) - { - ModLog.Message($"MaleFocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); - result = true; - } - else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) - { - ModLog.Message($"MaleFocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; - } + bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - return result; - } + // Determine if conditions are met + bool result = false; - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (MaleFocusedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - ModLog.Message($"MaleFocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); - return Values(); - } + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"MaleFocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) + { + ModLog.Message($"MaleFocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"MaleFocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } - return Enumerable.Empty>(); - } + return result; + } - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (MaleFocusedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - { - ModLog.Message($"MaleFocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); - return Values(); - } + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (MaleFocusedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + { + ModLog.Message($"MaleFocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); + return Values(); + } - return Enumerable.Empty>(); - } + return Enumerable.Empty>(); + } - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Vagina); - yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Anus); - yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Mouth); - } - } + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (MaleFocusedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + { + ModLog.Message($"MaleFocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); + return Values(); + } + + return Enumerable.Empty>(); + } + + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Vagina); + yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Anus); + yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Mouth); + } + } } \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs index 2b6f702..8fa9dec 100644 --- a/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs @@ -4,81 +4,80 @@ using rjw.Modules.Interactions.Contexts; using rjw.Modules.Interactions.Enums; using rjw.Modules.Interactions.Rules.PartKindUsageRules; using rjw.Modules.Shared; -using RJWSexperience.Ideology.PreceptWorkers; using System.Collections.Generic; using System.Linq; using Verse; namespace RJWSexperience.Ideology { - public class MaleIncreasedVaginal : IPartPreferenceRule - { - private bool IncreasedWillingAndAble(Pawn fucker, Pawn fucked) - { - // Define the set of valid precepts - var validHumanPrecepts = new HashSet - { - RsiDefOf.Precept.Pregnancy_Elevated, - RsiDefOf.Precept.Pregnancy_Holy, - }; + public class MaleIncreasedVaginal : IPartPreferenceRule + { + private bool IncreasedWillingAndAble(Pawn fucker, Pawn fucked) + { + // Define the set of valid precepts + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Elevated, + RsiDefOf.Precept.Pregnancy_Holy, + }; - var validBreedingPrecepts = new HashSet - { - RsiDefOf.Precept.BestialBreeding_Encouraged, - }; + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Encouraged, + }; - // Check precepts for the pawns - bool hasValidHumanPreceptForFucker = fucker.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + // Check precepts for the pawns + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - bool hasValidHumanPreceptForFucked = fucked.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && - validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - // Determine if conditions are met - bool result = false; + // Determine if conditions are met + bool result = false; - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) - { - ModLog.Message($"MaleIncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; - } - else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) - { - ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; - } + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + ModLog.Message($"MaleIncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + result = true; + } + else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) + { + ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + result = true; + } - return result; - } + return result; + } - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (IncreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - ModLog.Message($"MaleIncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); - return Values(); - } + public IEnumerable> ModifiersForDominant(InteractionContext context) + { + if (IncreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) + { + ModLog.Message($"MaleIncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); + return Values(); + } - return Enumerable.Empty>(); - } + return Enumerable.Empty>(); + } - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (IncreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - { - ModLog.Message($"MaleIncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); - return Values(); - } + public IEnumerable> ModifiersForSubmissive(InteractionContext context) + { + if (IncreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + { + ModLog.Message($"MaleIncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); + return Values(); + } - return Enumerable.Empty>(); - } + return Enumerable.Empty>(); + } - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.Doubled, LewdablePartKind.Vagina); - } - } + private IEnumerable> Values() + { + yield return new Weighted(Multipliers.Doubled, LewdablePartKind.Vagina); + } + } } \ No newline at end of file From ad63147dfcb1c441dd69ee0a19cd6434ff6d95dd Mon Sep 17 00:00:00 2001 From: amevarashi Date: Mon, 3 Feb 2025 19:59:01 +0500 Subject: [PATCH 25/64] Moved SexTemaing harmony patches to the Patches folder --- .../InteractAnimalPatches.cs => Patches/SexTaming_Patches.cs} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Source/IdeologyAddon/{SexTame/InteractAnimalPatches.cs => Patches/SexTaming_Patches.cs} (98%) diff --git a/Source/IdeologyAddon/SexTame/InteractAnimalPatches.cs b/Source/IdeologyAddon/Patches/SexTaming_Patches.cs similarity index 98% rename from Source/IdeologyAddon/SexTame/InteractAnimalPatches.cs rename to Source/IdeologyAddon/Patches/SexTaming_Patches.cs index bc8cb23..7d50cde 100644 --- a/Source/IdeologyAddon/SexTame/InteractAnimalPatches.cs +++ b/Source/IdeologyAddon/Patches/SexTaming_Patches.cs @@ -7,7 +7,7 @@ using Verse; using HarmonyLib; using Verse.AI; -namespace RJWSexperience.Ideology +namespace RJWSexperience.Ideology.Patches { [HarmonyPatch] static class WorkGiver_InteractAnimal_ReduceNutritionRequiredByIdeo From 683b0b5bc693afe8c4950def874d204125612412 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Mon, 3 Feb 2025 20:24:26 +0500 Subject: [PATCH 26/64] Bump mod version --- Source/IdeologyAddon/IdeologyAddon.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index cd0fadb..d68d958 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -2,7 +2,7 @@ Debug 1.5 - 1.2 + 1.3 $(TargetGameVersion).$(InternalModVersion) {B4481C38-31B1-422D-B5AA-0059FE7CCA1C} Library From 19e19109b63f0d43d89d13f03cc12063551687a2 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Mon, 3 Feb 2025 20:26:15 +0500 Subject: [PATCH 27/64] Fix log prefixes --- Source/IdeologyAddon/Harmony.cs | 4 +--- .../HistoryEventDefExtensionMethods.cs | 12 +++++------ .../IdeologyAddon/Patches/Rimworld_Patch.cs | 8 ++++---- .../Patches/SexTaming_Patches.cs | 2 +- .../Rituals/JobGiver_GangbangVictim.cs | 4 ++-- Source/IdeologyAddon/RsiLog.cs | 20 +++++++++++++++++++ .../Thoughts/Thought_Opinionbased.cs | 2 +- .../DecreasedVaginalPartKindUsageRule.cs | 10 +++++----- .../FocusedVaginalPartKindUsageRule.cs | 10 +++++----- .../IncreasedVaginalPartKindUsageRule.cs | 8 ++++---- .../MaleDecreasedVaginalPartKindUsageRule.cs | 10 +++++----- .../MaleFocusedVaginalPartKindUsageRule.cs | 10 +++++----- .../MaleIncreasedVaginalPartKindUsageRule.cs | 8 ++++---- 13 files changed, 63 insertions(+), 45 deletions(-) create mode 100644 Source/IdeologyAddon/RsiLog.cs diff --git a/Source/IdeologyAddon/Harmony.cs b/Source/IdeologyAddon/Harmony.cs index ef318fd..5739e6b 100644 --- a/Source/IdeologyAddon/Harmony.cs +++ b/Source/IdeologyAddon/Harmony.cs @@ -18,8 +18,6 @@ namespace RJWSexperience.Ideology } private static void InjectIntoRjwInteractionServices() { - ILog log = LogManager.GetLogger("StaticConstructorOnStartup"); - List partKindUsageRules = Unprivater.GetProtectedValue>("_partKindUsageRules", typeof(PartPreferenceDetectorService)); partKindUsageRules.Add(new MaleDecreasedVaginal()); partKindUsageRules.Add(new DecreasedVaginal()); @@ -27,7 +25,7 @@ namespace RJWSexperience.Ideology partKindUsageRules.Add(new IncreasedVaginal()); partKindUsageRules.Add(new MaleFocusedVaginal()); partKindUsageRules.Add(new FocusedVaginal()); - log.Message("Added 4 rules to PartPreferenceDetectorService._partKindUsageRules"); + if (Prefs.DevMode) RsiLog.Message("Added 6 rules to PartPreferenceDetectorService._partKindUsageRules"); } } } diff --git a/Source/IdeologyAddon/HistoryEvents/HistoryEventDefExtensionMethods.cs b/Source/IdeologyAddon/HistoryEvents/HistoryEventDefExtensionMethods.cs index 808170c..74ac96c 100644 --- a/Source/IdeologyAddon/HistoryEvents/HistoryEventDefExtensionMethods.cs +++ b/Source/IdeologyAddon/HistoryEvents/HistoryEventDefExtensionMethods.cs @@ -10,22 +10,22 @@ namespace RJWSexperience.Ideology.HistoryEvents { public static void RecordEventWithPartner(this HistoryEventDef def, Pawn pawn, Pawn partner) { - //Log.Message($"[RSI] Recording event {def.ToStringWithPartner(pawn, partner)}"); + //RsiLog.Message($"Recording event {def.ToStringWithPartner(pawn, partner)}"); List secondaryEventRules = def.GetModExtension()?.generationRules; if (!secondaryEventRules.NullOrEmpty()) { - //Log.Message($"[RSI] Event has {secondaryEventRules?.Count} secondary events"); + //RsiLog.Message($"Event has {secondaryEventRules?.Count} secondary events"); foreach (var rule in secondaryEventRules.Where(rule => rule.Applies(pawn, partner))) { - //Log.Message($"[RSI] Recording secondary event {def.defName}"); + //RsiLog.Message($"Recording secondary event {def.defName}"); rule.historyEventDef.RecordEventWithPartner(pawn, partner); } } HistoryEvent historyEvent = def.CreateEventWithPartner(pawn, partner); Find.HistoryEventsManager.RecordEvent(historyEvent); - //Log.Message($"[RSI] Recorded event {historyEvent.def.ToStringWithPartner(pawn, partner)}"); + //RsiLog.Message($"Recorded event {historyEvent.def.ToStringWithPartner(pawn, partner)}"); } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -36,12 +36,12 @@ namespace RJWSexperience.Ideology.HistoryEvents public static HistoryEvent CreateEventWithPartner(this HistoryEventDef def, Pawn pawn, Pawn partner) { - //Log.Message($"[RSI] Creating event {def.ToStringWithPartner(pawn, partner)}"); + //RsiLog.Message($"Creating event {def.ToStringWithPartner(pawn, partner)}"); HistoryEventDef overrideEvent = def.GetModExtension()?.overrideRules.FirstOrFallback(rule => rule.Applies(pawn, partner))?.historyEventDef; if (overrideEvent != null) { - //Log.Message($"[RSI] Event overridden by {overrideEvent.ToStringWithPartner(pawn, partner)}"); + //RsiLog.Message($"Event overridden by {overrideEvent.ToStringWithPartner(pawn, partner)}"); return overrideEvent.CreateEventWithPartner(pawn, partner); } diff --git a/Source/IdeologyAddon/Patches/Rimworld_Patch.cs b/Source/IdeologyAddon/Patches/Rimworld_Patch.cs index 1cbf453..1ca644b 100644 --- a/Source/IdeologyAddon/Patches/Rimworld_Patch.cs +++ b/Source/IdeologyAddon/Patches/Rimworld_Patch.cs @@ -166,7 +166,7 @@ namespace RJWSexperience.Ideology.Patches if (endOfInstructions) { - Log.Error("[RSI] Failed to transpile Pawn_RelationsTracker.SecondaryRomanceChanceFactor: PawnRelationUtility.GetRelations call not found"); + RsiLog.Error("Failed to transpile Pawn_RelationsTracker.SecondaryRomanceChanceFactor: PawnRelationUtility.GetRelations call not found"); yield break; } @@ -185,7 +185,7 @@ namespace RJWSexperience.Ideology.Patches if (endOfInstructions) { - Log.Error("[RSI] Failed to transpile Pawn_RelationsTracker.SecondaryRomanceChanceFactor: Mul not found. This error means half of SecondaryRomanceChanceFactor was erased. Very not good"); + RsiLog.Error("Failed to transpile Pawn_RelationsTracker.SecondaryRomanceChanceFactor: Mul not found. This error means half of SecondaryRomanceChanceFactor was erased. Very not good"); yield break; } @@ -203,7 +203,7 @@ namespace RJWSexperience.Ideology.Patches if (endOfInstructions) { - Log.Error("[RSI] Failed to transpile Pawn_RelationsTracker.SecondaryRomanceChanceFactor: Endfinally not found. This error means half of SecondaryRomanceChanceFactor was erased. Very not good"); + RsiLog.Error("Failed to transpile Pawn_RelationsTracker.SecondaryRomanceChanceFactor: Endfinally not found. This error means half of SecondaryRomanceChanceFactor was erased. Very not good"); yield break; } @@ -213,7 +213,7 @@ namespace RJWSexperience.Ideology.Patches yield return enumerator.Current; } - if (Prefs.DevMode) Log.Message("[RSI] Successfully transpiled Pawn_RelationsTracker.SecondaryRomanceChanceFactor"); + if (Prefs.DevMode) RsiLog.Message("Successfully transpiled Pawn_RelationsTracker.SecondaryRomanceChanceFactor"); } [HarmonyPatch(typeof(Precept), nameof(Precept.GetTip))] diff --git a/Source/IdeologyAddon/Patches/SexTaming_Patches.cs b/Source/IdeologyAddon/Patches/SexTaming_Patches.cs index 7d50cde..c6af1cf 100644 --- a/Source/IdeologyAddon/Patches/SexTaming_Patches.cs +++ b/Source/IdeologyAddon/Patches/SexTaming_Patches.cs @@ -44,7 +44,7 @@ namespace RJWSexperience.Ideology.Patches if (!patched) { - Log.Error($"SCE: Transpiler patch {thisType} failed to find a call to {requiredNutritionPerFeed.DeclaringType}:" + + RsiLog.Error($"Transpiler patch {thisType} failed to find a call to {requiredNutritionPerFeed.DeclaringType}:" + $"{requiredNutritionPerFeed.Name} on {original.ReflectedType}:{original.Name}"); } } diff --git a/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs b/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs index 092b00b..28788d8 100644 --- a/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs +++ b/Source/IdeologyAddon/Rituals/JobGiver_GangbangVictim.cs @@ -42,7 +42,7 @@ namespace RJWSexperience.Ideology protected override IEnumerable MakeNewToils() { - if (RJWSettings.DebugRape) ModLog.Message("" + this.GetType().ToString() + "::MakeNewToils() called"); + if (RJWSettings.DebugRape) RsiLog.Message("" + this.GetType().ToString() + "::MakeNewToils() called"); setup_ticks(); var PartnerJob = xxx.gettin_raped; @@ -82,7 +82,7 @@ namespace RJWSexperience.Ideology Partner.pather.StopDead(); Partner.jobs.curDriver.asleep = false; - if (RJWSettings.DebugRape) ModLog.Message("JobDriver_RapeComfortPawn::MakeNewToils() - reserving prisoner"); + if (RJWSettings.DebugRape) RsiLog.Message("JobDriver_RapeComfortPawn::MakeNewToils() - reserving prisoner"); Start(); }; SexToil.tickAction = delegate diff --git a/Source/IdeologyAddon/RsiLog.cs b/Source/IdeologyAddon/RsiLog.cs new file mode 100644 index 0000000..99f963b --- /dev/null +++ b/Source/IdeologyAddon/RsiLog.cs @@ -0,0 +1,20 @@ +using System.Runtime.CompilerServices; +using Verse; + +namespace RJWSexperience.Ideology +{ + /// + /// Verse.Log with [RSI] prefix in message text + /// + public static class RsiLog + { + public static void Message(string message, [CallerMemberName] string method = null) + => Log.Message($"[RSI] {{{method}}}: {message}"); + + public static void Warning(string message, [CallerMemberName] string method = null) + => Log.Warning($"[RSI] {{{method}}}: {message}"); + + public static void Error(string message, [CallerMemberName] string method = null) + => Log.Error($"[RSI] {{{method}}}: {message}"); + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs b/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs index dbe0115..c0ed166 100644 --- a/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs +++ b/Source/IdeologyAddon/Thoughts/Thought_Opinionbased.cs @@ -41,7 +41,7 @@ namespace RJWSexperience.Ideology { if (otherPawn == null) { - Log.Warning($"[RSI] Thought_Opinionbased {def.defName} for pawn {pawn.NameShortColored} lacks otherPawn"); + RsiLog.Warning($"Thought_Opinionbased {def.defName} for pawn {pawn.NameShortColored} lacks otherPawn"); SetForcedStage(0); } diff --git a/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs index 0c64f94..4e7ba5c 100644 --- a/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs @@ -46,17 +46,17 @@ namespace RJWSexperience.Ideology if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) { - ModLog.Message($"DecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + RsiLog.Message($"DecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); result = true; } else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) { - ModLog.Message($"DecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + RsiLog.Message($"DecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); result = true; } else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) { - ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + RsiLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); result = true; } @@ -67,7 +67,7 @@ namespace RJWSexperience.Ideology { if (DecreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) { - ModLog.Message($"DecreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); + RsiLog.Message($"DecreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); return Values(); } @@ -78,7 +78,7 @@ namespace RJWSexperience.Ideology { if (DecreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) { - ModLog.Message($"DecreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); + RsiLog.Message($"DecreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); return Values(); } diff --git a/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs index 8a5d6b6..85aa3cb 100644 --- a/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs @@ -48,17 +48,17 @@ namespace RJWSexperience.Ideology if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) { - ModLog.Message($"FocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + RsiLog.Message($"FocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); result = true; } else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) { - ModLog.Message($"FocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + RsiLog.Message($"FocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); result = true; } else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) { - ModLog.Message($"FocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + RsiLog.Message($"FocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); result = true; } @@ -69,7 +69,7 @@ namespace RJWSexperience.Ideology { if (FocusedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) { - ModLog.Message($"FocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have focused vaginal chances."); + RsiLog.Message($"FocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have focused vaginal chances."); return Values(); } @@ -80,7 +80,7 @@ namespace RJWSexperience.Ideology { if (FocusedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) { - ModLog.Message($"FocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have focused vaginal chances."); + RsiLog.Message($"FocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have focused vaginal chances."); return Values(); } diff --git a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs index 5cea620..3178fb0 100644 --- a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs @@ -41,12 +41,12 @@ namespace RJWSexperience.Ideology if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) { - ModLog.Message($"IncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + RsiLog.Message($"IncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); result = true; } else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) { - ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + RsiLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); result = true; } @@ -57,7 +57,7 @@ namespace RJWSexperience.Ideology { if (IncreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) { - ModLog.Message($"IncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); + RsiLog.Message($"IncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); return Values(); } @@ -68,7 +68,7 @@ namespace RJWSexperience.Ideology { if (IncreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) { - ModLog.Message($"IncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); + RsiLog.Message($"IncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); return Values(); } diff --git a/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs index e46f4a8..850aa06 100644 --- a/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs @@ -46,17 +46,17 @@ namespace RJWSexperience.Ideology if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) { - ModLog.Message($"MaleDecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + RsiLog.Message($"MaleDecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); result = true; } else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) { - ModLog.Message($"MaleDecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + RsiLog.Message($"MaleDecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); result = true; } else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) { - ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + RsiLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); result = true; } @@ -67,7 +67,7 @@ namespace RJWSexperience.Ideology { if (DecreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) { - ModLog.Message($"MaleDecreasedVaginal Dominant: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); + RsiLog.Message($"MaleDecreasedVaginal Dominant: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); return Values(); } @@ -78,7 +78,7 @@ namespace RJWSexperience.Ideology { if (DecreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) { - ModLog.Message($"MaleDecreasedVaginal Submissive: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); + RsiLog.Message($"MaleDecreasedVaginal Submissive: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); return Values(); } diff --git a/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs index 95e3d8c..a8a4c8d 100644 --- a/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs @@ -48,17 +48,17 @@ namespace RJWSexperience.Ideology if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) { - ModLog.Message($"MaleFocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + RsiLog.Message($"MaleFocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); result = true; } else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) { - ModLog.Message($"MaleFocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + RsiLog.Message($"MaleFocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); result = true; } else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) { - ModLog.Message($"MaleFocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + RsiLog.Message($"MaleFocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); result = true; } @@ -69,7 +69,7 @@ namespace RJWSexperience.Ideology { if (MaleFocusedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) { - ModLog.Message($"MaleFocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); + RsiLog.Message($"MaleFocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); return Values(); } @@ -80,7 +80,7 @@ namespace RJWSexperience.Ideology { if (MaleFocusedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) { - ModLog.Message($"MaleFocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); + RsiLog.Message($"MaleFocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); return Values(); } diff --git a/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs index 8fa9dec..8138fe8 100644 --- a/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs @@ -41,12 +41,12 @@ namespace RJWSexperience.Ideology if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) { - ModLog.Message($"MaleIncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + RsiLog.Message($"MaleIncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); result = true; } else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) { - ModLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + RsiLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); result = true; } @@ -57,7 +57,7 @@ namespace RJWSexperience.Ideology { if (IncreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) { - ModLog.Message($"MaleIncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); + RsiLog.Message($"MaleIncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); return Values(); } @@ -68,7 +68,7 @@ namespace RJWSexperience.Ideology { if (IncreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) { - ModLog.Message($"MaleIncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); + RsiLog.Message($"MaleIncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); return Values(); } From c290e0a4a78f847ce50f4ea1e28fe4ec8023a265 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Mon, 3 Feb 2025 20:29:43 +0500 Subject: [PATCH 28/64] Remove unused namespace --- Source/IdeologyAddon/Harmony.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Source/IdeologyAddon/Harmony.cs b/Source/IdeologyAddon/Harmony.cs index 5739e6b..33a534a 100644 --- a/Source/IdeologyAddon/Harmony.cs +++ b/Source/IdeologyAddon/Harmony.cs @@ -1,6 +1,5 @@ using rjw.Modules.Interactions.Internals.Implementation; using rjw.Modules.Interactions.Rules.PartKindUsageRules; -using rjw.Modules.Shared.Logs; using rjw; using System.Collections.Generic; using System.Reflection; From ea8f4f2ff091bcdac88afeb9ddf159fca126c8a3 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Wed, 5 Feb 2025 20:52:31 +0500 Subject: [PATCH 29/64] Change JobDef name prefix --- 1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml b/1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml index 52ef677..36ce561 100644 --- a/1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml +++ b/1.5/Defs/JobDefs/Jobs_AnimalSexTame.xml @@ -3,7 +3,7 @@ - + lovin'. false @@ -11,32 +11,32 @@ - + taming TargetA. - + TameLewd_Feed RJWSexperience.Ideology.JobDriver_LewdTameFeed - + TameLewd_Lovin Sexually taming TargetA. RJWSexperience.Ideology.JobDriver_LewdTameSex - + training TargetA. - + TrainLewd_Feed RJWSexperience.Ideology.JobDriver_LewdTrainFeed - + TrainLewd_Lovin Sexually training TargetA. RJWSexperience.Ideology.JobDriver_LewdTrainSex From ea3a75411010323ef82a009167ee4d3e8206ec36 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Wed, 5 Feb 2025 21:46:01 +0500 Subject: [PATCH 30/64] Add icon that was lost in the MRs --- Textures/UI/Issues/BestialBreeding.png | Bin 0 -> 25492 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Textures/UI/Issues/BestialBreeding.png diff --git a/Textures/UI/Issues/BestialBreeding.png b/Textures/UI/Issues/BestialBreeding.png new file mode 100644 index 0000000000000000000000000000000000000000..6b3266f1d0a2b4eba4e2548c623eee15960340e6 GIT binary patch literal 25492 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 XBc-pG2ywu4Mv%Uav38Z_gNXkDU!+VW literal 0 HcmV?d00001 From ad1a2065ac23700e5dba9c09f6dc94d94b65d0e5 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Wed, 5 Feb 2025 21:51:39 +0500 Subject: [PATCH 31/64] Patch SocialAffection in the Biotech thoughts about children --- LoadFolders.xml | 25 ++++++++++--------- .../Patches/Thoughts_Situational_Children.xml | 23 +++++++++++++++++ 2 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 ModCompatibility/Biotech/1.5/Patches/Thoughts_Situational_Children.xml diff --git a/LoadFolders.xml b/LoadFolders.xml index c04e50f..19ece16 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -1,15 +1,16 @@ - -
  • /
  • -
  • 1.3
  • -
    - -
  • /
  • -
  • 1.4
  • -
    - -
  • /
  • -
  • 1.5
  • -
    + +
  • /
  • +
  • 1.3
  • +
    + +
  • /
  • +
  • 1.4
  • +
    + +
  • /
  • +
  • 1.5
  • +
  • Biotech/1.5
  • +
    \ No newline at end of file diff --git a/ModCompatibility/Biotech/1.5/Patches/Thoughts_Situational_Children.xml b/ModCompatibility/Biotech/1.5/Patches/Thoughts_Situational_Children.xml new file mode 100644 index 0000000..7f213bc --- /dev/null +++ b/ModCompatibility/Biotech/1.5/Patches/Thoughts_Situational_Children.xml @@ -0,0 +1,23 @@ + + + + + Defs/ThoughtDef[@Name="ThoughtAboutChildBase"]/nullifyingPrecepts + + Defs/ThoughtDef[@Name="ThoughtAboutChildBase"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[@Name="ThoughtAboutChildBase"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    +
    \ No newline at end of file From de778056410cb296df50df6fc78bca09415daa5a Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 16 Feb 2025 21:22:20 +0500 Subject: [PATCH 32/64] 1.5.1.3 --- 1.5/Assemblies/RJWSexperience.Ideology.dll | Bin 68608 -> 99840 bytes About/Manifest.xml | 2 +- About/RealAbout.xml | 7 +++++-- CHANGELOG.md | 11 +++++++++++ README.md | 3 +++ 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/1.5/Assemblies/RJWSexperience.Ideology.dll b/1.5/Assemblies/RJWSexperience.Ideology.dll index ccf3820714bfb5a184f2e2c501f8f2d5a6fe3f1d..c31bacb33f722ba61d37867d07ecdfa6e16baab9 100644 GIT binary patch literal 99840 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

    Tdc_LuKBD$SFu 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 literal 68608 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

    rEYB|s3}zI&SX-8t9fJmoT_*Z- z{?Yb3k4SjZF3yKd=JXoDxNhl^vyn+RIV!|2Mv8B|QQCt^VWiy_^ zzQBe)2YY(gZ0+-=afWi@W1vIEeLzPbbUmLFv0T38XPcDqp^Pi`J}p%GlQ&AGr%pb_ zRt3Kw_0i=sXP!P)IsNpLr%x@Pdh*OuPpv$;e70PE^5n_0&#XqDs#MCSDvlpeb-yz4 z+@*!-{SC8HxGPku=xgHOjQ{i31UGg5*AKT# z8TXkzj)+YR+&WASgne@Gqt5o(aH0RyySJhyz-o?o+HJ(0EwR`4@GYgj2)AoXlNopZ z-N%%Cmtg5v2P7l{8B z(?#lY8Fy{36$qz+x1Wa9w;A+lUrr={a>tj(pL*|2+A&fc9JFKoyEb_>!?~nA?gfQo zr7^sH$En?&jh%6BHse0~-Wucn8z1@La{R9CmH9>OJ=@a-P(CxV?Ydj?ay=xD>1DqFk`v%1)&mr6GFn0epBcvi6+xwujdo1IQq`w!DoS=5A{GRfj zb;&de{QRVOOxE?)CVW_x%=Y}B1=v~Wn5La3Hu)x*z17wi4xSYU6nljsfkn1oH_lF zs$>psbA_K001$D;MGxv%;_>43{p}M(TX|5Q_KBJO?eg8G>Ay*}zkPllQJ`sZ^I$(3 zt|Z?Mb}#O0!w0!SjTNVRBJK3t1lmnL*!;dBG1Md9FPSxEShtoK>vRD5>iQk9*o%>S8eL<7-w;TsAN9MVA7O!q{JDZOV@?lo@8@iM-XlN1*H?lrtuG3wv(L%Y-y#&Pj z>Z-Sb_E|w4;o2eBC!PELM-n%kbN^N0k_}=q?C1fn~G1T&2k_F^sb~=u}BVE~7`2YFOWZdsdRE0mke*hcYJ(b&>Qu|0NY~NV^ig>$;Qn~%f6yq*p0nY)o1uFeJ6rlsR^}x0_J7ZC zOcfaL>(qjWza^5~u|R{jKfjjB)7_H>$8dYM=0ce%eziK&>rV$<`96t_L$^4>jW)_A z$7Pc{bQd@tt2-{3i0)Z_iM8K`Ka$NyctWn@vcZHq%l~Hxopw(XI>qxT;+Wk0`Mf($ zeL<~F|1I7+G2b7lzu%|B<2&!%?7ZDK!MJqfSh!H6-K*4Fvlay<{kpE8?C(@@(P>9o z$-Mz$mKfVf{^Nagf0tI$?fBKy%|6|)YuT+T%|m~F$L2B{`bbW9C+n%1X_atU*`3Ar zKBsfGUe{?~2b6Wxx}Ad5gV$-&)@iWr_SJf~wVJjzE`TLEgkQJA(mJ{RUfVHXZGV(9 U{I;)i|NZp#jK7Wl{{Vsi3$>o1g8%>k diff --git a/About/Manifest.xml b/About/Manifest.xml index 3da6d20..7052dee 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@  RJWSexperienceIdeology - 1.5.1.2 + 1.5.1.3

  • RimJobWorld >= 5.3.0
  • diff --git a/About/RealAbout.xml b/About/RealAbout.xml index ca68011..eb37e51 100644 --- a/About/RealAbout.xml +++ b/About/RealAbout.xml @@ -7,7 +7,7 @@
  • 1.4
  • 1.5
  • - 1.5.1.2 + 1.5.1.3
  • Ludeon.RimWorld.Ideology @@ -47,5 +47,8 @@ Credits: moreorganstodump Original Author c0ffee RJW 4.9.0 update Hawkeye32 Bound Only bestiality precept -Vegapnk Pregnancy, Sex Proselyzing and Size Matters precepts]]> +Vegapnk Pregnancy, Sex Proselyzing and Size Matters issues +ElToro Bestial Pregnancy and Bestial Breeding issues, Carnal Training precept, Sex Taming port, new icons for old issues + +Sex Cult Essentials mod - original implementation of Sex Taming]]> \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 775d11c..b700f4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## Version 1.5.1.3 +* Fixed thoughts about children from Biotech not affected by the Social Affection precepts +### by ElToro +* Ported Sexual taming from the Sex Cult Essentials +* Added new issue icons: Baby Faction, Pregnancy, Sex Type +* Added new Bestial Pregnancy issue with 3 precepts: Indifferent, Required and Horrible +* Added new Bestial Breeding issue with 5 precepts: Indifferent, Encouraged, Required, Horrible and Disliked +* Added new Carnal Training precept to the vanilla Animal Connection issue +* Changed positive Pregnancy precepts to raise vaginal sex probability +* Lots of flavor text for animal sex talk during sexual taming + ## Version 1.5.1.2 * Updated Social Affection precepts to cover RJW animal relationships * RJW 5.6.0.6 diff --git a/README.md b/README.md index bbaf1b4..f7b4030 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,11 @@ This mod adds: - Submissive gender - Virginity - Pregnancy + - Bestial Pregnancy + - Bestial Breeding - Sex proselyzing - Size matters + - Carnal Training - Buildings - HumpShroom bong - HumpShroom Autobong From 3cc27bc1c9f6a63b2915235d52af1dcecc6d0bcd Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 16 Feb 2025 21:50:37 +0500 Subject: [PATCH 33/64] ci: stop building master branch --- .gitlab-ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e00d464..a4e730f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -45,9 +45,11 @@ build: # Do not build on tags. Release DLLs are commited - if: $CI_COMMIT_TAG when: never + # Do not build master branch. It will fail because RealAbout.xml does not exist + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + when: never # Build on commits to a non-default branch with version-suffix - - if: $CI_COMMIT_BRANCH && - $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH + - if: $CI_COMMIT_BRANCH variables: VERSION_SUFFIX: "--version-suffix ${CI_COMMIT_BRANCH}" # Just build in any other case From 0f73085e1d7197f586daf31f2d4995a64838f171 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 16 Feb 2025 21:51:35 +0500 Subject: [PATCH 34/64] ci: use smaller image to deploy --- .gitlab-ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a4e730f..b7dceef 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,3 @@ -# ### Specify the Docker image -image: mcr.microsoft.com/dotnet/sdk:8.0-alpine - # ### Define variables variables: # 1) Name of directory where restore and build objects are stored. @@ -41,6 +38,7 @@ cache: build: stage: build + image: mcr.microsoft.com/dotnet/sdk:8.0-alpine rules: # Do not build on tags. Release DLLs are commited - if: $CI_COMMIT_TAG @@ -74,6 +72,7 @@ build: release_dev: stage: deploy + image: curlimages/curl:8.12.1 needs: [build] cache: [] rules: From 2fb1265370df99d04db61fa435e5b1cd7d514fb1 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 16 Feb 2025 21:57:35 +0500 Subject: [PATCH 35/64] Revert "ci: use smaller image to deploy" This reverts commit 0f73085e1d7197f586daf31f2d4995a64838f171. --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b7dceef..a4e730f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,3 +1,6 @@ +# ### Specify the Docker image +image: mcr.microsoft.com/dotnet/sdk:8.0-alpine + # ### Define variables variables: # 1) Name of directory where restore and build objects are stored. @@ -38,7 +41,6 @@ cache: build: stage: build - image: mcr.microsoft.com/dotnet/sdk:8.0-alpine rules: # Do not build on tags. Release DLLs are commited - if: $CI_COMMIT_TAG @@ -72,7 +74,6 @@ build: release_dev: stage: deploy - image: curlimages/curl:8.12.1 needs: [build] cache: [] rules: From 8c1f729e744fbc8b06f07102962824b66279528d Mon Sep 17 00:00:00 2001 From: amevarashi Date: Thu, 20 Feb 2025 20:01:00 +0500 Subject: [PATCH 36/64] Enable packages.lock.json to track dependency updates --- .gitlab-ci.yml | 2 +- Source/IdeologyAddon/IdeologyAddon.csproj | 3 ++- Source/IdeologyAddon/packages.lock.json | 33 +++++++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 Source/IdeologyAddon/packages.lock.json diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a4e730f..180839f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,7 +57,7 @@ build: # ### Build all projects discovered from solution file. script: - 'cd $SOURCE_CODE_PATH' - - 'dotnet restore --packages ../$NUGET_PACKAGES_DIRECTORY' + - 'dotnet restore --locked-mode --packages ../$NUGET_PACKAGES_DIRECTORY' - 'dotnet build -c Release --no-restore ${VERSION_SUFFIX}' - 'cd $CI_PROJECT_DIR/About' - 'mv -f RealAbout.xml About.xml' diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index d68d958..aff9638 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -12,6 +12,7 @@ true ..\..\$(TargetGameVersion)\Assemblies\ false + true false false false @@ -24,7 +25,7 @@ $(TargetGameVersion).* - 2.* + * runtime compile; build; native; contentfiles; analyzers; buildtransitive diff --git a/Source/IdeologyAddon/packages.lock.json b/Source/IdeologyAddon/packages.lock.json new file mode 100644 index 0000000..892f985 --- /dev/null +++ b/Source/IdeologyAddon/packages.lock.json @@ -0,0 +1,33 @@ +{ + "version": 1, + "dependencies": { + ".NETFramework,Version=v4.8": { + "Krafs.Rimworld.Ref": { + "type": "Direct", + "requested": "[1.5.*, )", + "resolved": "1.5.4297", + "contentHash": "uhY1DK8YQB55IamhyOus6A//S47F93JiOe5ORBv+KnN9HNOanAQY8TaBMKpJKhdZj2GHYny/7rZixjv4DAKYMQ==" + }, + "Lib.Harmony": { + "type": "Direct", + "requested": "[*, )", + "resolved": "2.3.5", + "contentHash": "LgVL1EhCYtY39YNp/h1PNraKdQn9Vwyb70bYIVLxz60zRgOTi11YohOjJwk4zXsIAoJLG57lO4aP6WXs2fv23A==" + }, + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net48": "1.0.3" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + } + } + } +} \ No newline at end of file From b3544f07ef42a3771debc45ca28f0ff65cd3cdde Mon Sep 17 00:00:00 2001 From: amevarashi Date: Fri, 21 Feb 2025 20:05:03 +0500 Subject: [PATCH 37/64] Merge all ModifyMtb DefExtentions into one --- 1.5/Defs/PreceptDefs/Precepts_Bestiality.xml | 20 +++--- .../PreceptDefs/Precepts_Masturbation.xml | 4 +- 1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml | 12 ++-- 1.5/Defs/PreceptDefs/Precepts_Rape.xml | 12 ++-- Source/IdeologyAddon/IdeoUtility.cs | 12 ++-- .../Patches/RJW_Patch_ChancePerHour.cs | 9 ++- .../IdeologyAddon/Patches/Rimworld_Patch.cs | 4 +- .../DefExtension_ModifyBestialityMtb.cs | 7 -- .../Precepts/DefExtension_ModifyFappinMtb.cs | 7 -- .../Precepts/DefExtension_ModifyMtb.cs | 64 ++++++++++++++++--- .../Precepts/DefExtension_ModifyNecroMtb.cs | 7 -- .../Precepts/DefExtension_ModifyRapeCPMtb.cs | 7 -- .../Precepts/IPreceptTipPostfix.cs | 10 ++- 13 files changed, 100 insertions(+), 75 deletions(-) delete mode 100644 Source/IdeologyAddon/Precepts/DefExtension_ModifyBestialityMtb.cs delete mode 100644 Source/IdeologyAddon/Precepts/DefExtension_ModifyFappinMtb.cs delete mode 100644 Source/IdeologyAddon/Precepts/DefExtension_ModifyNecroMtb.cs delete mode 100644 Source/IdeologyAddon/Precepts/DefExtension_ModifyRapeCPMtb.cs diff --git a/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml b/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml index a0616ee..613ef0d 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml @@ -184,8 +184,8 @@
  • -
  • - 5.0 +
  • + 5.0
  • @@ -249,8 +249,8 @@ 10 true -
  • - 0.75 +
  • + 0.75
  • @@ -317,8 +317,8 @@ -
  • - 0.65 +
  • + 0.65
  • @@ -393,8 +393,8 @@ -
  • - 0.5 +
  • + 0.5
  • @@ -450,8 +450,8 @@ -
  • - 0.5 +
  • + 0.5
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml b/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml index 695f100..fd7dc05 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml @@ -38,8 +38,8 @@ 20 100 -
  • - 2.0 +
  • + 2.0
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml b/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml index 2ce8e0c..a37d9fb 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml @@ -65,8 +65,8 @@ -
  • - 8.0 +
  • + 8.0
  • @@ -108,8 +108,8 @@
  • Necrophile
  • -
  • - 0.75 +
  • + 0.75
  • @@ -137,8 +137,8 @@ -
  • - 0.5 +
  • + 0.5
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Rape.xml b/1.5/Defs/PreceptDefs/Precepts_Rape.xml index 2ff90b6..16e6114 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Rape.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Rape.xml @@ -179,8 +179,8 @@ -
  • - 3.0 +
  • + 3.0
  • @@ -226,8 +226,8 @@ 10 true -
  • - 0.75 +
  • + 0.75
  • @@ -285,8 +285,8 @@ -
  • - 0.5 +
  • + 0.5
  • diff --git a/Source/IdeologyAddon/IdeoUtility.cs b/Source/IdeologyAddon/IdeoUtility.cs index 2aa03e4..e3f95c2 100644 --- a/Source/IdeologyAddon/IdeoUtility.cs +++ b/Source/IdeologyAddon/IdeoUtility.cs @@ -1,5 +1,7 @@ -using RimWorld; +using System; +using RimWorld; using rjw; +using RJWSexperience.Ideology.Precepts; using Verse; namespace RJWSexperience.Ideology @@ -20,17 +22,19 @@ namespace RJWSexperience.Ideology return false; } - public static float GetPreceptsMtbMultiplier(Ideo ideo) where T : Precepts.DefExtension_ModifyMtb + public static float GetPreceptsMtbMultiplier(Ideo ideo, Func getter) { float finalMultiplier = 1f; for (int i = 0; i < ideo.PreceptsListForReading.Count; i++) { - T defExtension = ideo.PreceptsListForReading[i].def.GetModExtension(); + DefExtension_ModifyMtb defExtension = ideo.PreceptsListForReading[i].def.GetModExtension(); if (defExtension == null) + { continue; + } - finalMultiplier *= defExtension.multiplier; + finalMultiplier *= getter(defExtension); } return finalMultiplier; } diff --git a/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs b/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs index 18d8550..2d7a17a 100644 --- a/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs +++ b/Source/IdeologyAddon/Patches/RJW_Patch_ChancePerHour.cs @@ -2,7 +2,6 @@ using RimWorld; using rjw; using RJWSexperience.Ideology.HistoryEvents; -using RJWSexperience.Ideology.Precepts; using Verse; namespace RJWSexperience.Ideology.Patches @@ -20,7 +19,7 @@ namespace RJWSexperience.Ideology.Patches __result = -2f; return; } - __result *= IdeoUtility.GetPreceptsMtbMultiplier(pawn.Ideo); + __result *= IdeoUtility.GetPreceptsMtbMultiplier(pawn.Ideo, x => x.bestialityMtbMult); } } @@ -37,7 +36,7 @@ namespace RJWSexperience.Ideology.Patches __result = -2f; return; } - __result *= IdeoUtility.GetPreceptsMtbMultiplier(pawn.Ideo); + __result *= IdeoUtility.GetPreceptsMtbMultiplier(pawn.Ideo, x => x.rapeCpMtbMult); } } [HarmonyPatch(typeof(ThinkNode_ChancePerHour_Necro), "MtbHours")] @@ -53,7 +52,7 @@ namespace RJWSexperience.Ideology.Patches __result = -2f; return; } - __result *= IdeoUtility.GetPreceptsMtbMultiplier(pawn.Ideo); + __result *= IdeoUtility.GetPreceptsMtbMultiplier(pawn.Ideo, x => x.necroMtbMult); } } @@ -70,7 +69,7 @@ namespace RJWSexperience.Ideology.Patches __result = -2f; return; } - __result *= IdeoUtility.GetPreceptsMtbMultiplier(p.Ideo); + __result *= IdeoUtility.GetPreceptsMtbMultiplier(p.Ideo, x => x.fapMtbMult); } } } diff --git a/Source/IdeologyAddon/Patches/Rimworld_Patch.cs b/Source/IdeologyAddon/Patches/Rimworld_Patch.cs index 1ca644b..90975ce 100644 --- a/Source/IdeologyAddon/Patches/Rimworld_Patch.cs +++ b/Source/IdeologyAddon/Patches/Rimworld_Patch.cs @@ -235,8 +235,8 @@ namespace RJWSexperience.Ideology.Patches { if (__instance.def.modExtensions[i] is IPreceptTipPostfix tipPostfix) { - tipBuilder.AppendInNewLine(" - " + tipPostfix.GetTip()); - tipChanged = true; + bool modified = tipPostfix.AppendTip(tipBuilder); + tipChanged = tipChanged || modified; } } diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyBestialityMtb.cs b/Source/IdeologyAddon/Precepts/DefExtension_ModifyBestialityMtb.cs deleted file mode 100644 index 111ee69..0000000 --- a/Source/IdeologyAddon/Precepts/DefExtension_ModifyBestialityMtb.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace RJWSexperience.Ideology.Precepts -{ - public class DefExtension_ModifyBestialityMtb : DefExtension_ModifyMtb - { - protected override string TipTemplateKey => "RSI_PreceptTipModifyBestialityMtb"; - } -} diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyFappinMtb.cs b/Source/IdeologyAddon/Precepts/DefExtension_ModifyFappinMtb.cs deleted file mode 100644 index f01c4ed..0000000 --- a/Source/IdeologyAddon/Precepts/DefExtension_ModifyFappinMtb.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace RJWSexperience.Ideology.Precepts -{ - public class DefExtension_ModifyFappinMtb : DefExtension_ModifyMtb - { - protected override string TipTemplateKey => "RSI_PreceptTipModifyFappinMtb"; - } -} diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyMtb.cs b/Source/IdeologyAddon/Precepts/DefExtension_ModifyMtb.cs index 361ceb1..600c642 100644 --- a/Source/IdeologyAddon/Precepts/DefExtension_ModifyMtb.cs +++ b/Source/IdeologyAddon/Precepts/DefExtension_ModifyMtb.cs @@ -1,27 +1,71 @@ using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; +using System.Text; using Verse; namespace RJWSexperience.Ideology.Precepts { - [SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field values are loaded from XML")] - public abstract class DefExtension_ModifyMtb : DefModExtension, IPreceptTipPostfix + public class DefExtension_ModifyMtb : DefModExtension, IPreceptTipPostfix { - protected abstract string TipTemplateKey { get; } + public float bestialityMtbMult = 1f; + public float fapMtbMult = 1f; + public float necroMtbMult = 1f; + public float rapeCpMtbMult = 1f; - public float multiplier = 1f; + public bool AppendTip(StringBuilder tipBuilder) + { + bool modified = false; - public string GetTip() => TipTemplateKey.Translate(multiplier.ToString()); + if (bestialityMtbMult != 1f) + { + tipBuilder.AppendInNewLine(" - "); + tipBuilder.Append("RSI_PreceptTipModifyBestialityMtb".Translate(bestialityMtbMult.ToString())); + modified = true; + } + + if (fapMtbMult != 1f) + { + tipBuilder.AppendInNewLine(" - "); + tipBuilder.Append("RSI_PreceptTipModifyFappinMtb".Translate(fapMtbMult.ToString())); + modified = true; + } + + if (necroMtbMult != 1f) + { + tipBuilder.AppendInNewLine(" - "); + tipBuilder.Append("RSI_PreceptTipModifyNecroMtb".Translate(necroMtbMult.ToString())); + modified = true; + } + + if (rapeCpMtbMult != 1f) + { + tipBuilder.AppendInNewLine(" - "); + tipBuilder.Append("RSI_PreceptTipModifyRapeCPMtb".Translate(rapeCpMtbMult.ToString())); + modified = true; + } + + return modified; + } public override IEnumerable ConfigErrors() { - if (multiplier == 1f) + if (bestialityMtbMult <= 0f) { - yield return "There is no point if is 1"; + yield return " must be > 0"; } - else if (multiplier <= 0f) + + if (fapMtbMult <= 0f) { - yield return " must be > 0"; + yield return " must be > 0"; + } + + if (necroMtbMult <= 0f) + { + yield return " must be > 0"; + } + + if (rapeCpMtbMult <= 0f) + { + yield return " must be > 0"; } } } diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyNecroMtb.cs b/Source/IdeologyAddon/Precepts/DefExtension_ModifyNecroMtb.cs deleted file mode 100644 index ce35b27..0000000 --- a/Source/IdeologyAddon/Precepts/DefExtension_ModifyNecroMtb.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace RJWSexperience.Ideology.Precepts -{ - public class DefExtension_ModifyNecroMtb : DefExtension_ModifyMtb - { - protected override string TipTemplateKey => "RSI_PreceptTipModifyNecroMtb"; - } -} diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyRapeCPMtb.cs b/Source/IdeologyAddon/Precepts/DefExtension_ModifyRapeCPMtb.cs deleted file mode 100644 index ff09728..0000000 --- a/Source/IdeologyAddon/Precepts/DefExtension_ModifyRapeCPMtb.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace RJWSexperience.Ideology.Precepts -{ - public class DefExtension_ModifyRapeCPMtb : DefExtension_ModifyMtb - { - protected override string TipTemplateKey => "RSI_PreceptTipModifyRapeCPMtb"; - } -} diff --git a/Source/IdeologyAddon/Precepts/IPreceptTipPostfix.cs b/Source/IdeologyAddon/Precepts/IPreceptTipPostfix.cs index 85411fb..ff5298b 100644 --- a/Source/IdeologyAddon/Precepts/IPreceptTipPostfix.cs +++ b/Source/IdeologyAddon/Precepts/IPreceptTipPostfix.cs @@ -1,7 +1,13 @@ -namespace RJWSexperience.Ideology.Precepts +using System.Text; + +namespace RJWSexperience.Ideology.Precepts { public interface IPreceptTipPostfix { - string GetTip(); + /// + /// + /// + /// true if tip was modified + bool AppendTip(StringBuilder tipBuilder); } } From 08e9529fc87394ce6906967f0a500f83d77689e1 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 22 Feb 2025 12:55:59 +0500 Subject: [PATCH 38/64] ci: remove older version support from the dev release --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 180839f..2220b8c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -85,6 +85,7 @@ release_dev: PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_BRANCH}" script: - apk add zip + - rm -rf ./1.3 ./1.4 - zip -rq mod.zip ./ - echo "${PACKAGE_REGISTRY_URL}" - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file About/About.xml "${PACKAGE_REGISTRY_URL}/About.xml"' From 09d68964cf58c5e78242822d77157a8116d28825 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 9 Mar 2025 11:22:30 +0500 Subject: [PATCH 39/64] ci: auto release generation --- .gitlab-ci.yml | 23 ++++++++++++++++++++++- CHANGELOG.md | 3 +++ Source/ReleaseTemplate.json | 14 ++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 Source/ReleaseTemplate.json diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2220b8c..6486b95 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -72,7 +72,7 @@ build: - ".*/**/*" # Exclude everything in the dot folders - "Source/**/*" # Exclude everything in the Source folder -release_dev: +update_dev_package: stage: deploy needs: [build] cache: [] @@ -90,3 +90,24 @@ release_dev: - echo "${PACKAGE_REGISTRY_URL}" - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file About/About.xml "${PACKAGE_REGISTRY_URL}/About.xml"' - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file mod.zip "${PACKAGE_REGISTRY_URL}/rjw_sexperience_ideology.zip"' + +create_release: + stage: deploy + image: curlimages/curl:8.12.1 + rules: + - if: $CI_COMMIT_TAG =~ /^[0-9].[0-9]+.[0-9].[0-9]+$/ + script: + - 'RELEASE_DESCRIPTION=(sed -n "/## Version ${CI_COMMIT_TAG}/,/## Version/p" CHANGELOG.md | head --lines=-2)' + - | + sed -e "s/_TAG_/${CI_COMMIT_TAG}/g" + -e "s/_DESCRIPTION_/${RELEASE_DESCRIPTION}/" + ./Source/ReleaseTemplate.json >> Release.json' + - | + curl --header "Content-Type: application/json" + --header "JOB-TOKEN: ${CI_JOB_TOKEN}" + --data @Release.json" + --request POST + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases" + artifacts: + paths: + - "Release.json" diff --git a/CHANGELOG.md b/CHANGELOG.md index b700f4a..6a56bf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## Version 1.5.1.4 +* Testing auto release creation + ## Version 1.5.1.3 * Fixed thoughts about children from Biotech not affected by the Social Affection precepts ### by ElToro diff --git a/Source/ReleaseTemplate.json b/Source/ReleaseTemplate.json new file mode 100644 index 0000000..0c24289 --- /dev/null +++ b/Source/ReleaseTemplate.json @@ -0,0 +1,14 @@ +{ + "name": "RJW Sexperience Ideology _TAG_", + "tag_name": "_TAG_", + "description": "_DESCRIPTION_", + "assets": { + "links": [ + { + "name": "RJW Sexperience Ideology", + "url": "https://gitgud.io/amevarashi/rjw-sexperience-ideology/-/archive/_TAG_/rjw-sexperience-ideology-_TAG_.zip", + "link_type": "package" + } + ] + } +} \ No newline at end of file From 38fecb126a95766898fd0c4eb395324cbbfd9d38 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 9 Mar 2025 11:29:26 +0500 Subject: [PATCH 40/64] ci: fix script --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6486b95..0ff435f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -97,7 +97,7 @@ create_release: rules: - if: $CI_COMMIT_TAG =~ /^[0-9].[0-9]+.[0-9].[0-9]+$/ script: - - 'RELEASE_DESCRIPTION=(sed -n "/## Version ${CI_COMMIT_TAG}/,/## Version/p" CHANGELOG.md | head --lines=-2)' + - 'RELEASE_DESCRIPTION=$(sed -n "/## Version ${CI_COMMIT_TAG}/,/## Version/p" CHANGELOG.md | head --lines=-2)' - | sed -e "s/_TAG_/${CI_COMMIT_TAG}/g" -e "s/_DESCRIPTION_/${RELEASE_DESCRIPTION}/" From 1d4adfc5582494e6ab9a8a46025cd6d9b501e9e4 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 9 Mar 2025 11:39:55 +0500 Subject: [PATCH 41/64] ci: alpine things --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0ff435f..ee5905a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -97,7 +97,7 @@ create_release: rules: - if: $CI_COMMIT_TAG =~ /^[0-9].[0-9]+.[0-9].[0-9]+$/ script: - - 'RELEASE_DESCRIPTION=$(sed -n "/## Version ${CI_COMMIT_TAG}/,/## Version/p" CHANGELOG.md | head --lines=-2)' + - 'RELEASE_DESCRIPTION=$(sed -n "/## Version ${CI_COMMIT_TAG}/,/## Version/p" CHANGELOG.md | head -n -2)' - | sed -e "s/_TAG_/${CI_COMMIT_TAG}/g" -e "s/_DESCRIPTION_/${RELEASE_DESCRIPTION}/" From 914f3bf216ae35cd558ac17b46ae8f54c47ed434 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 9 Mar 2025 13:50:43 +0500 Subject: [PATCH 42/64] ci: try using jq --- .gitlab-ci.yml | 9 ++++----- Source/ReleaseTemplate.json | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee5905a..b2e0771 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -93,15 +93,14 @@ update_dev_package: create_release: stage: deploy - image: curlimages/curl:8.12.1 + image: registry.gitlab.com/gitlab-ci-utils/curl-jq rules: - if: $CI_COMMIT_TAG =~ /^[0-9].[0-9]+.[0-9].[0-9]+$/ script: - - 'RELEASE_DESCRIPTION=$(sed -n "/## Version ${CI_COMMIT_TAG}/,/## Version/p" CHANGELOG.md | head -n -2)' + - 'sed -n "/## Version ${CI_COMMIT_TAG}/,/## Version/p" CHANGELOG.md | head -n -2 >> descr.txt' + - 'sed -e "s/_TAG_/${CI_COMMIT_TAG}/g" ./Source/ReleaseTemplate.json >> Release.json' - | - sed -e "s/_TAG_/${CI_COMMIT_TAG}/g" - -e "s/_DESCRIPTION_/${RELEASE_DESCRIPTION}/" - ./Source/ReleaseTemplate.json >> Release.json' + jq --rawfile data descr.txt '.description = $data' Release.json >> Release.json' - | curl --header "Content-Type: application/json" --header "JOB-TOKEN: ${CI_JOB_TOKEN}" diff --git a/Source/ReleaseTemplate.json b/Source/ReleaseTemplate.json index 0c24289..2a6f7d5 100644 --- a/Source/ReleaseTemplate.json +++ b/Source/ReleaseTemplate.json @@ -1,7 +1,7 @@ { "name": "RJW Sexperience Ideology _TAG_", "tag_name": "_TAG_", - "description": "_DESCRIPTION_", + "description": "", "assets": { "links": [ { From 2403879ebeb79b7bfa5e7cae57a2768db24ec70d Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 9 Mar 2025 14:01:07 +0500 Subject: [PATCH 43/64] ci: fix syntax errors --- .gitlab-ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b2e0771..8b07371 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -100,12 +100,12 @@ create_release: - 'sed -n "/## Version ${CI_COMMIT_TAG}/,/## Version/p" CHANGELOG.md | head -n -2 >> descr.txt' - 'sed -e "s/_TAG_/${CI_COMMIT_TAG}/g" ./Source/ReleaseTemplate.json >> Release.json' - | - jq --rawfile data descr.txt '.description = $data' Release.json >> Release.json' + jq --rawfile data descr.txt '.description = $data' Release.json >> Release.json - | - curl --header "Content-Type: application/json" - --header "JOB-TOKEN: ${CI_JOB_TOKEN}" - --data @Release.json" - --request POST + curl --header "Content-Type: application/json" \ + --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ + --data @Release.json" \ + --request POST \ "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases" artifacts: paths: From 627caa300b4a062903bf2f8f5c960b3e1f63280d Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 9 Mar 2025 14:08:48 +0500 Subject: [PATCH 44/64] ci: ... --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8b07371..624f0cc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -104,7 +104,7 @@ create_release: - | curl --header "Content-Type: application/json" \ --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ - --data @Release.json" \ + --data @Release.json \ --request POST \ "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases" artifacts: From a99df8759256313261026e4fd8b3cb079c111f47 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 9 Mar 2025 14:19:01 +0500 Subject: [PATCH 45/64] ci: overwrite Release.json --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 624f0cc..86ff5b1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -97,10 +97,10 @@ create_release: rules: - if: $CI_COMMIT_TAG =~ /^[0-9].[0-9]+.[0-9].[0-9]+$/ script: - - 'sed -n "/## Version ${CI_COMMIT_TAG}/,/## Version/p" CHANGELOG.md | head -n -2 >> descr.txt' - - 'sed -e "s/_TAG_/${CI_COMMIT_TAG}/g" ./Source/ReleaseTemplate.json >> Release.json' + - 'sed -n "/## Version ${CI_COMMIT_TAG}/,/## Version/p" CHANGELOG.md | head -n -2 > descr.txt' + - 'sed -e "s/_TAG_/${CI_COMMIT_TAG}/g" ./Source/ReleaseTemplate.json > Release.json' - | - jq --rawfile data descr.txt '.description = $data' Release.json >> Release.json + jq --rawfile data descr.txt '.description = $data' Release.json > Release.json - | curl --header "Content-Type: application/json" \ --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ From 879022aabee75afe7ace0c7a18bccef05aa0e0fb Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 9 Mar 2025 14:37:25 +0500 Subject: [PATCH 46/64] ci: jq Release.json > Release.json produce empty file. Why? --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 86ff5b1..515616e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -98,9 +98,9 @@ create_release: - if: $CI_COMMIT_TAG =~ /^[0-9].[0-9]+.[0-9].[0-9]+$/ script: - 'sed -n "/## Version ${CI_COMMIT_TAG}/,/## Version/p" CHANGELOG.md | head -n -2 > descr.txt' - - 'sed -e "s/_TAG_/${CI_COMMIT_TAG}/g" ./Source/ReleaseTemplate.json > Release.json' + - 'sed -e "s/_TAG_/${CI_COMMIT_TAG}/g" ./Source/ReleaseTemplate.json > temp.json' - | - jq --rawfile data descr.txt '.description = $data' Release.json > Release.json + jq --rawfile data descr.txt '.description = $data' temp.json > Release.json - | curl --header "Content-Type: application/json" \ --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ From d3380e5542c80c4fbd5067367d8ef774a78a4f45 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 9 Mar 2025 15:05:07 +0500 Subject: [PATCH 47/64] ci: disable cache for create_release --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 515616e..4aa9e69 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -94,6 +94,7 @@ update_dev_package: create_release: stage: deploy image: registry.gitlab.com/gitlab-ci-utils/curl-jq + cache: [] rules: - if: $CI_COMMIT_TAG =~ /^[0-9].[0-9]+.[0-9].[0-9]+$/ script: From 62b63f5675a2d406324a09aa43bbc51206c526f1 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 9 Mar 2025 16:19:16 +0500 Subject: [PATCH 48/64] Delete old bestial breeding --- Textures/UI/Issues/BestialBreeding.png | Bin 25492 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Textures/UI/Issues/BestialBreeding.png diff --git a/Textures/UI/Issues/BestialBreeding.png b/Textures/UI/Issues/BestialBreeding.png deleted file mode 100644 index 6b3266f1d0a2b4eba4e2548c623eee15960340e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25492 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 XBc-pG2ywu4Mv%Uav38Z_gNXkDU!+VW From d02cd9a352eae7f8fc135d035e7736c9fe6963f4 Mon Sep 17 00:00:00 2001 From: ElToro Date: Sat, 22 Feb 2025 23:37:47 +0300 Subject: [PATCH 49/64] New icon for Bestial Breeding --- Textures/UI/Issues/BestialBreeding.png | Bin 0 -> 17899 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Textures/UI/Issues/BestialBreeding.png diff --git a/Textures/UI/Issues/BestialBreeding.png b/Textures/UI/Issues/BestialBreeding.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6090cb2f28e9e6fdcb4560a5cb74e7cfb9fbec GIT binary patch literal 17899 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 Date: Sun, 16 Mar 2025 13:37:16 +0500 Subject: [PATCH 50/64] Adapt to the rjw interaction rework --- 1.5/Defs/PreceptDefs/Precepts_Bestiality.xml | 10 +- .../PreceptDefs/Precepts_Masturbation.xml | 2 +- 1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml | 6 +- 1.5/Defs/PreceptDefs/Precepts_Rape.xml | 6 +- 1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml | 2 +- 1.5/Defs/PreceptDefs/Precepts_Sex.xml | 63 ++++++++++++ About/Manifest.xml | 2 +- About/RealAbout.xml | 2 +- CHANGELOG.md | 4 +- Source/IdeologyAddon/Harmony.cs | 18 +--- Source/IdeologyAddon/IdeoUtility.cs | 4 +- Source/IdeologyAddon/IdeologyAddon.csproj | 2 +- .../IdeologyAddon/Patches/RJW_Patch_Ideo.cs | 47 +++++---- .../IdeologyAddon/Patches/Rimworld_Patch.cs | 5 +- ...Extension_ModifyMtb.cs => DefExtension.cs} | 6 +- .../DefExtension_MultipleMemesRequired.cs | 13 --- .../SelfPartPreferenceDef.cs | 14 +++ .../SexPreferenceDefs/SexPreferenceDef.cs | 30 ++++++ .../SexPreferenceDefs/TypePreferenceDef.cs | 14 +++ .../DecreasedVaginalPartKindUsageRule.cs | 96 ------------------ .../UsageRules/DecreasedVaginalPreferences.cs | 62 ++++++++++++ ...geRule.cs => FocusedVaginalPreferences.cs} | 46 ++------- .../IncreasedVaginalPartKindUsageRule.cs | 83 ---------------- .../UsageRules/IncreasedVaginalPreferences.cs | 52 ++++++++++ .../MaleDecreasedVaginalPartKindUsageRule.cs | 96 ------------------ .../MaleFocusedVaginalPartKindUsageRule.cs | 97 ------------------- .../MaleIncreasedVaginalPartKindUsageRule.cs | 83 ---------------- 27 files changed, 297 insertions(+), 568 deletions(-) rename Source/IdeologyAddon/Precepts/{DefExtension_ModifyMtb.cs => DefExtension.cs} (89%) delete mode 100644 Source/IdeologyAddon/Precepts/DefExtension_MultipleMemesRequired.cs create mode 100644 Source/IdeologyAddon/SexPreferenceDefs/SelfPartPreferenceDef.cs create mode 100644 Source/IdeologyAddon/SexPreferenceDefs/SexPreferenceDef.cs create mode 100644 Source/IdeologyAddon/SexPreferenceDefs/TypePreferenceDef.cs delete mode 100644 Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs create mode 100644 Source/IdeologyAddon/UsageRules/DecreasedVaginalPreferences.cs rename Source/IdeologyAddon/UsageRules/{FocusedVaginalPartKindUsageRule.cs => FocusedVaginalPreferences.cs} (52%) delete mode 100644 Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs create mode 100644 Source/IdeologyAddon/UsageRules/IncreasedVaginalPreferences.cs delete mode 100644 Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs delete mode 100644 Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs delete mode 100644 Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs diff --git a/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml b/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml index 613ef0d..42953d4 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml @@ -184,7 +184,7 @@ -
  • +
  • 5.0
  • @@ -249,7 +249,7 @@ 10 true -
  • +
  • 0.75
  • @@ -317,7 +317,7 @@ -
  • +
  • 0.65
  • @@ -393,7 +393,7 @@ -
  • +
  • 0.5
  • @@ -450,7 +450,7 @@ -
  • +
  • 0.5
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml b/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml index fd7dc05..b9a37f7 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml @@ -38,7 +38,7 @@ 20 100 -
  • +
  • 2.0
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml b/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml index a37d9fb..2f83713 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml @@ -65,7 +65,7 @@ -
  • +
  • 8.0
  • @@ -108,7 +108,7 @@
  • Necrophile
  • -
  • +
  • 0.75
  • @@ -137,7 +137,7 @@ -
  • +
  • 0.5
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Rape.xml b/1.5/Defs/PreceptDefs/Precepts_Rape.xml index 16e6114..ad98dcf 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Rape.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Rape.xml @@ -179,7 +179,7 @@ -
  • +
  • 3.0
  • @@ -226,7 +226,7 @@ 10 true -
  • +
  • 0.75
  • @@ -285,7 +285,7 @@ -
  • +
  • 0.5
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml b/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml index e9fe889..4ee7e33 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml @@ -63,7 +63,7 @@ true false -
  • +
  • Rapist
  • Zoophile
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Sex.xml b/1.5/Defs/PreceptDefs/Precepts_Sex.xml index 469f00f..2a5da80 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Sex.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Sex.xml @@ -100,6 +100,21 @@ Sex_Know_Promiscuous + +
  • + +
  • + Vaginal + 10 + +
  • + 0.1 +
  • + + + + +
    @@ -157,6 +172,21 @@ Sex_Know_Promiscuous + +
  • + +
  • + Anal + 10 + +
  • + 0.1 +
  • + + + + +
    @@ -214,6 +244,21 @@ Sex_Know_Promiscuous + +
  • + +
  • + Mouth + 10 + +
  • + 0.1 +
  • + + + + +
    @@ -278,6 +323,24 @@ Sex_Know_Promiscuous_Approval + +
  • + +
  • + Vaginal + 0.01 +
  • +
  • + Anal + 0.01 +
  • +
  • + Mouth + 0.01 +
  • + + +
    diff --git a/About/Manifest.xml b/About/Manifest.xml index 7052dee..c84d508 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@  RJWSexperienceIdeology - 1.5.1.3 + 1.5.1.4
  • RimJobWorld >= 5.3.0
  • diff --git a/About/RealAbout.xml b/About/RealAbout.xml index eb37e51..9fe5451 100644 --- a/About/RealAbout.xml +++ b/About/RealAbout.xml @@ -7,7 +7,7 @@
  • 1.4
  • 1.5
  • - 1.5.1.3 + 1.5.1.4
  • Ludeon.RimWorld.Ideology diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a56bf7..2b110e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ ## Version 1.5.1.4 -* Testing auto release creation +* Adapt to the new RJW interaction rework +### by ElToro +* New icon for Bestial Breeding ## Version 1.5.1.3 * Fixed thoughts about children from Biotech not affected by the Social Affection precepts diff --git a/Source/IdeologyAddon/Harmony.cs b/Source/IdeologyAddon/Harmony.cs index 33a534a..d756855 100644 --- a/Source/IdeologyAddon/Harmony.cs +++ b/Source/IdeologyAddon/Harmony.cs @@ -1,8 +1,4 @@ -using rjw.Modules.Interactions.Internals.Implementation; -using rjw.Modules.Interactions.Rules.PartKindUsageRules; -using rjw; -using System.Collections.Generic; -using System.Reflection; +using System.Reflection; using Verse; namespace RJWSexperience.Ideology @@ -13,18 +9,6 @@ namespace RJWSexperience.Ideology static Harmony() { new HarmonyLib.Harmony("RJW_Sexperience.Ideology").PatchAll(Assembly.GetExecutingAssembly()); - InjectIntoRjwInteractionServices(); - } - private static void InjectIntoRjwInteractionServices() - { - List partKindUsageRules = Unprivater.GetProtectedValue>("_partKindUsageRules", typeof(PartPreferenceDetectorService)); - partKindUsageRules.Add(new MaleDecreasedVaginal()); - partKindUsageRules.Add(new DecreasedVaginal()); - partKindUsageRules.Add(new MaleIncreasedVaginal()); - partKindUsageRules.Add(new IncreasedVaginal()); - partKindUsageRules.Add(new MaleFocusedVaginal()); - partKindUsageRules.Add(new FocusedVaginal()); - if (Prefs.DevMode) RsiLog.Message("Added 6 rules to PartPreferenceDetectorService._partKindUsageRules"); } } } diff --git a/Source/IdeologyAddon/IdeoUtility.cs b/Source/IdeologyAddon/IdeoUtility.cs index e3f95c2..2dd7b3d 100644 --- a/Source/IdeologyAddon/IdeoUtility.cs +++ b/Source/IdeologyAddon/IdeoUtility.cs @@ -22,12 +22,12 @@ namespace RJWSexperience.Ideology return false; } - public static float GetPreceptsMtbMultiplier(Ideo ideo, Func getter) + public static float GetPreceptsMtbMultiplier(Ideo ideo, Func getter) { float finalMultiplier = 1f; for (int i = 0; i < ideo.PreceptsListForReading.Count; i++) { - DefExtension_ModifyMtb defExtension = ideo.PreceptsListForReading[i].def.GetModExtension(); + DefExtension defExtension = ideo.PreceptsListForReading[i].def.GetModExtension(); if (defExtension == null) { diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index aff9638..cf3c9c3 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -2,7 +2,7 @@ Debug 1.5 - 1.3 + 1.4 $(TargetGameVersion).$(InternalModVersion) {B4481C38-31B1-422D-B5AA-0059FE7CCA1C} Library diff --git a/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs index 10975ae..48c2019 100644 --- a/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs +++ b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs @@ -1,8 +1,8 @@ using HarmonyLib; using RimWorld; using rjw; -using rjw.Modules.Interactions.Internals.Implementation; -using rjw.Modules.Interactions.Objects; +using rjw.Modules.Interactions; +using rjw.Modules.Interactions.Preferences; using RJWSexperience.Ideology.HistoryEvents; using RJWSexperience.Ideology.Precepts; using System; @@ -140,35 +140,42 @@ namespace RJWSexperience.Ideology.Patches /// /// Set prefer sextype using precepts /// - [HarmonyPatch(typeof(InteractionScoringService), nameof(InteractionScoringService.Score), new Type[] { typeof(InteractionWithExtension), typeof(InteractionPawn), typeof(InteractionPawn) })] - public static class RJW_Patch_DetermineSexScores + [HarmonyPatch(typeof(SexInteractionScorer), nameof(SexInteractionScorer.GetPawnPreferences))] + public static class RJW_Patch_SexInteractionScorer { - public static void Postfix(InteractionWithExtension interaction, InteractionPawn dominant, InteractionPawn submissive, ref InteractionScore __result) + public static void Postfix(bool isInitiator, SexProps props, List __result) { - InteractionDefExtension_HistoryEvents interactionEvents = interaction.Interaction.GetModExtension(); - if (interactionEvents == null) - return; + Pawn pawn = isInitiator ? props.initiator : props.recipient; + Pawn partner = isInitiator ? props.recipient : props.initiator; - if (dominant.Pawn.Ideo != null) - __result.Dominant = PreceptSextype(dominant.Pawn, submissive.Pawn, __result.Dominant, interactionEvents.pawnEvents); - - if (submissive.Pawn.Ideo != null) - __result.Submissive = PreceptSextype(submissive.Pawn, dominant.Pawn, __result.Submissive, interactionEvents.partnerEvents); + GetPawnPreferences(pawn, partner, __result); } - public static float PreceptSextype(Pawn pawn, Pawn partner, float score, List historyEventDefs) + private static void GetPawnPreferences(Pawn pawn, Pawn partner, List preferences) { - for (int i = 0; i < historyEventDefs.Count; i++) + List precepts = pawn.Ideo?.PreceptsListForReading; + if (precepts == null) { - HistoryEventDef eventDef = historyEventDefs[i]; + return; + } - if (eventDef.CreateEventWithPartner(pawn, partner).DoerWillingToDo()) + for (int i = 0; i < precepts.Count; i++) + { + List preceptPrefs = precepts[i].def.GetModExtension()?.sexPreferences; + if (preceptPrefs == null) { - float mult = 8.0f * Math.Max(0.3f, 1 / Math.Max(0.01f, pawn.GetStatValue(xxx.sex_drive_stat, cacheStaleAfterTicks: 60))); - return score * mult; + continue; + } + + for (int j = 0; j < preceptPrefs.Count; j++) + { + preferences.Add(preceptPrefs[j].ToSexPreference()); } } - return score; + + preferences.AddRange(DecreasedVaginalPreferences.GetPreferences(pawn, partner)); + preferences.AddRange(FocusedVaginalPreferences.GetPreferences(pawn, partner)); + preferences.AddRange(IncreasedVaginalPreferences.GetPreferences(pawn, partner)); } } diff --git a/Source/IdeologyAddon/Patches/Rimworld_Patch.cs b/Source/IdeologyAddon/Patches/Rimworld_Patch.cs index 90975ce..ae52c8d 100644 --- a/Source/IdeologyAddon/Patches/Rimworld_Patch.cs +++ b/Source/IdeologyAddon/Patches/Rimworld_Patch.cs @@ -1,5 +1,4 @@ using HarmonyLib; -using Mono.Cecil.Cil; using RimWorld; using rjw; using RJWSexperience.Ideology.HistoryEvents; @@ -35,9 +34,9 @@ namespace RJWSexperience.Ideology.Patches [HarmonyPatch(typeof(IdeoFoundation), nameof(IdeoFoundation.CanAdd))] public static class Rimworld_Patch_IdeoFoundation { - public static void Postfix(PreceptDef precept, ref IdeoFoundation __instance, ref AcceptanceReport __result) + public static void Postfix(PreceptDef precept, IdeoFoundation __instance, ref AcceptanceReport __result) { - DefExtension_MultipleMemesRequired extension = precept.GetModExtension(); + DefExtension extension = precept.GetModExtension(); if (extension == null) return; diff --git a/Source/IdeologyAddon/Precepts/DefExtension_ModifyMtb.cs b/Source/IdeologyAddon/Precepts/DefExtension.cs similarity index 89% rename from Source/IdeologyAddon/Precepts/DefExtension_ModifyMtb.cs rename to Source/IdeologyAddon/Precepts/DefExtension.cs index 600c642..2a64236 100644 --- a/Source/IdeologyAddon/Precepts/DefExtension_ModifyMtb.cs +++ b/Source/IdeologyAddon/Precepts/DefExtension.cs @@ -1,15 +1,19 @@ using System.Collections.Generic; using System.Text; +using RimWorld; +using rjw; using Verse; namespace RJWSexperience.Ideology.Precepts { - public class DefExtension_ModifyMtb : DefModExtension, IPreceptTipPostfix + public class DefExtension : DefModExtension, IPreceptTipPostfix { public float bestialityMtbMult = 1f; public float fapMtbMult = 1f; public float necroMtbMult = 1f; public float rapeCpMtbMult = 1f; + public List requiredAllMemes; + public List sexPreferences; public bool AppendTip(StringBuilder tipBuilder) { diff --git a/Source/IdeologyAddon/Precepts/DefExtension_MultipleMemesRequired.cs b/Source/IdeologyAddon/Precepts/DefExtension_MultipleMemesRequired.cs deleted file mode 100644 index 665fd15..0000000 --- a/Source/IdeologyAddon/Precepts/DefExtension_MultipleMemesRequired.cs +++ /dev/null @@ -1,13 +0,0 @@ -using RimWorld; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using Verse; - -namespace RJWSexperience.Ideology.Precepts -{ - public class DefExtension_MultipleMemesRequired : DefModExtension - { - [SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")] - public List requiredAllMemes = new List(); - } -} diff --git a/Source/IdeologyAddon/SexPreferenceDefs/SelfPartPreferenceDef.cs b/Source/IdeologyAddon/SexPreferenceDefs/SelfPartPreferenceDef.cs new file mode 100644 index 0000000..07a3b8f --- /dev/null +++ b/Source/IdeologyAddon/SexPreferenceDefs/SelfPartPreferenceDef.cs @@ -0,0 +1,14 @@ +using rjw.Modules.Interactions; +using rjw.Modules.Interactions.Preferences; + +namespace RJWSexperience.Ideology +{ + /// + /// SelfPartPreference proxy to include in the Defs + /// + public class SelfPartPreferenceDef : SexPreferenceDef { + public LewdablePartFamily part; + + protected override SexPreference ThisToSexPref() => new SelfPartPreference(part, score); + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/SexPreferenceDefs/SexPreferenceDef.cs b/Source/IdeologyAddon/SexPreferenceDefs/SexPreferenceDef.cs new file mode 100644 index 0000000..f8f7750 --- /dev/null +++ b/Source/IdeologyAddon/SexPreferenceDefs/SexPreferenceDef.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using rjw.Modules.Interactions.Preferences; + +namespace RJWSexperience.Ideology +{ + /// + /// SexPreference proxy to include in the Defs + /// + public class SexPreferenceDef { + public float score; + public List ifDissatisfied; + + public SexPreference ToSexPreference() + { + SexPreference result = ThisToSexPref(); + + if (ifDissatisfied != null) + { + for (int i = 0; i < ifDissatisfied.Count; i++) + { + result.IfDissatisfied(ifDissatisfied[i].ThisToSexPref()); + } + } + + return result; + } + + protected virtual SexPreference ThisToSexPref() => new SexPreference(score); + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/SexPreferenceDefs/TypePreferenceDef.cs b/Source/IdeologyAddon/SexPreferenceDefs/TypePreferenceDef.cs new file mode 100644 index 0000000..f6cd13c --- /dev/null +++ b/Source/IdeologyAddon/SexPreferenceDefs/TypePreferenceDef.cs @@ -0,0 +1,14 @@ +using rjw; +using rjw.Modules.Interactions.Preferences; + +namespace RJWSexperience.Ideology +{ + /// + /// TypePreference proxy to include in the Defs + /// + public class TypePreferenceDef : SexPreferenceDef { + public xxx.rjwSextype type; + + protected override SexPreference ThisToSexPref() => new TypePreference(type, score); + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs deleted file mode 100644 index 4e7ba5c..0000000 --- a/Source/IdeologyAddon/UsageRules/DecreasedVaginalPartKindUsageRule.cs +++ /dev/null @@ -1,96 +0,0 @@ -using RimWorld; -using rjw; -using rjw.Modules.Interactions.Contexts; -using rjw.Modules.Interactions.Enums; -using rjw.Modules.Interactions.Rules.PartKindUsageRules; -using rjw.Modules.Shared; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class DecreasedVaginal : IPartPreferenceRule - { - private bool DecreasedWillingAndAble(Pawn fucker, Pawn fucked) - { - var validHumanPrecepts = new HashSet - { - RsiDefOf.Precept.Pregnancy_Horrible - }; - - var validAnimalPrecepts = new HashSet - { - RsiDefOf.Precept.PregnancyAnimal_Horrible - }; - - var validBreedingPrecepts = new HashSet - { - RsiDefOf.Precept.BestialBreeding_Horrible, - RsiDefOf.Precept.BestialBreeding_Disliked - }; - - bool hasValidHumanPreceptForFucker = fucker.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - - bool hasValidHumanPreceptForFucked = fucked.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - - bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && - validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - - bool hasValidBreedingPreceptsForFucker = fucker.Ideo != null && - validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - - bool result = false; - - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) - { - RsiLog.Message($"DecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; - } - else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) - { - RsiLog.Message($"DecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); - result = true; - } - else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) - { - RsiLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; - } - - return result; - } - - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (DecreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - { - RsiLog.Message($"DecreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); - return Values(); - } - - return Enumerable.Empty>(); - } - - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (DecreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - RsiLog.Message($"DecreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); - return Values(); - } - - return Enumerable.Empty>(); - } - - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.AlmostNever, LewdablePartKind.Vagina); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Breasts); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Anus); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Mouth); - } - } -} diff --git a/Source/IdeologyAddon/UsageRules/DecreasedVaginalPreferences.cs b/Source/IdeologyAddon/UsageRules/DecreasedVaginalPreferences.cs new file mode 100644 index 0000000..0846113 --- /dev/null +++ b/Source/IdeologyAddon/UsageRules/DecreasedVaginalPreferences.cs @@ -0,0 +1,62 @@ +using RimWorld; +using rjw; +using rjw.Modules.Interactions.Preferences; +using System.Collections.Generic; +using System.Linq; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class DecreasedVaginalPreferences + { + public static IEnumerable GetPreferences(Pawn fucker, Pawn fucked) + { + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Horrible + }; + + var validAnimalPrecepts = new HashSet + { + RsiDefOf.Precept.PregnancyAnimal_Horrible + }; + + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Horrible, + RsiDefOf.Precept.BestialBreeding_Disliked + }; + + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && + validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidBreedingPreceptsForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + RsiLog.Message($"DecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + } + else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) + { + RsiLog.Message($"DecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); + } + else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) + { + RsiLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + } + else + { + yield break; + } + + yield return new TypePreference(xxx.rjwSextype.Vaginal, Preference.Hate); + } + } +} diff --git a/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/FocusedVaginalPreferences.cs similarity index 52% rename from Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs rename to Source/IdeologyAddon/UsageRules/FocusedVaginalPreferences.cs index 85aa3cb..d96cd2f 100644 --- a/Source/IdeologyAddon/UsageRules/FocusedVaginalPartKindUsageRule.cs +++ b/Source/IdeologyAddon/UsageRules/FocusedVaginalPreferences.cs @@ -1,18 +1,15 @@ using RimWorld; using rjw; -using rjw.Modules.Interactions.Contexts; -using rjw.Modules.Interactions.Enums; -using rjw.Modules.Interactions.Rules.PartKindUsageRules; -using rjw.Modules.Shared; +using rjw.Modules.Interactions.Preferences; using System.Collections.Generic; using System.Linq; using Verse; namespace RJWSexperience.Ideology { - public class FocusedVaginal : IPartPreferenceRule + public class FocusedVaginalPreferences { - private bool FocusedWillingAndAble(Pawn fucker, Pawn fucked) + public static IEnumerable GetPreferences(Pawn fucker, Pawn fucked) { // Define the set of valid precepts var validHumanPrecepts = new HashSet @@ -43,55 +40,24 @@ namespace RJWSexperience.Ideology bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - // Determine if conditions are met - bool result = false; - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) { RsiLog.Message($"FocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; } else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) { RsiLog.Message($"FocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); - result = true; } else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) { RsiLog.Message($"FocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; } - - return result; - } - - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (FocusedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) + else { - RsiLog.Message($"FocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have focused vaginal chances."); - return Values(); + yield break; } - return Enumerable.Empty>(); - } - - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (FocusedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - RsiLog.Message($"FocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have focused vaginal chances."); - return Values(); - } - - return Enumerable.Empty>(); - } - - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Vagina); - yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Anus); - yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Mouth); + yield return new TypePreference(xxx.rjwSextype.Vaginal, Preference.Need); } } } \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs deleted file mode 100644 index 3178fb0..0000000 --- a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPartKindUsageRule.cs +++ /dev/null @@ -1,83 +0,0 @@ -using RimWorld; -using rjw; -using rjw.Modules.Interactions.Contexts; -using rjw.Modules.Interactions.Enums; -using rjw.Modules.Interactions.Rules.PartKindUsageRules; -using rjw.Modules.Shared; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class IncreasedVaginal : IPartPreferenceRule - { - private bool IncreasedWillingAndAble(Pawn fucker, Pawn fucked) - { - // Define the set of valid precepts - var validHumanPrecepts = new HashSet - { - RsiDefOf.Precept.Pregnancy_Elevated, - RsiDefOf.Precept.Pregnancy_Holy, - }; - - var validBreedingPrecepts = new HashSet - { - RsiDefOf.Precept.BestialBreeding_Encouraged, - }; - - // Check precepts for the pawns - bool hasValidHumanPreceptForFucker = fucker.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - - bool hasValidHumanPreceptForFucked = fucked.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - - bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && - validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - - // Determine if conditions are met - bool result = false; - - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) - { - RsiLog.Message($"IncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; - } - else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) - { - RsiLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; - } - - return result; - } - - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (IncreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - { - RsiLog.Message($"IncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); - return Values(); - } - - return Enumerable.Empty>(); - } - - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (IncreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - RsiLog.Message($"IncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); - return Values(); - } - - return Enumerable.Empty>(); - } - - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.Doubled, LewdablePartKind.Vagina); - } - } -} \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPreferences.cs b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPreferences.cs new file mode 100644 index 0000000..2f0cf18 --- /dev/null +++ b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPreferences.cs @@ -0,0 +1,52 @@ +using RimWorld; +using rjw; +using rjw.Modules.Interactions.Preferences; +using System.Collections.Generic; +using System.Linq; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class IncreasedVaginalPreferences + { + public static IEnumerable GetPreferences(Pawn fucker, Pawn fucked) + { + // Define the set of valid precepts + var validHumanPrecepts = new HashSet + { + RsiDefOf.Precept.Pregnancy_Elevated, + RsiDefOf.Precept.Pregnancy_Holy, + }; + + var validBreedingPrecepts = new HashSet + { + RsiDefOf.Precept.BestialBreeding_Encouraged, + }; + + // Check precepts for the pawns + bool hasValidHumanPreceptForFucker = fucker.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + bool hasValidHumanPreceptForFucked = fucked.Ideo != null && + validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); + + bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && + validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); + + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + { + RsiLog.Message($"IncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); + } + else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) + { + RsiLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); + } + else + { + yield break; + } + + yield return new TypePreference(xxx.rjwSextype.Vaginal, Preference.Love); + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs deleted file mode 100644 index 850aa06..0000000 --- a/Source/IdeologyAddon/UsageRules/MaleDecreasedVaginalPartKindUsageRule.cs +++ /dev/null @@ -1,96 +0,0 @@ -using RimWorld; -using rjw; -using rjw.Modules.Interactions.Contexts; -using rjw.Modules.Interactions.Enums; -using rjw.Modules.Interactions.Rules.PartKindUsageRules; -using rjw.Modules.Shared; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class MaleDecreasedVaginal : IPartPreferenceRule - { - private bool DecreasedWillingAndAble(Pawn fucker, Pawn fucked) - { - var validHumanPrecepts = new HashSet - { - RsiDefOf.Precept.Pregnancy_Horrible - }; - - var validAnimalPrecepts = new HashSet - { - RsiDefOf.Precept.PregnancyAnimal_Horrible - }; - - var validBreedingPrecepts = new HashSet - { - RsiDefOf.Precept.BestialBreeding_Horrible, - RsiDefOf.Precept.BestialBreeding_Disliked - }; - - bool hasValidHumanPreceptForFucker = fucker.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - - bool hasValidHumanPreceptForFucked = fucked.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - - bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && - validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - - bool hasValidBreedingPreceptsForFucker = fucker.Ideo != null && - validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - - bool result = false; - - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) - { - RsiLog.Message($"MaleDecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; - } - else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) - { - RsiLog.Message($"MaleDecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); - result = true; - } - else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) - { - RsiLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; - } - - return result; - } - - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (DecreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - RsiLog.Message($"MaleDecreasedVaginal Dominant: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); - return Values(); - } - - return Enumerable.Empty>(); - } - - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (DecreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - { - RsiLog.Message($"MaleDecreasedVaginal Submissive: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); - return Values(); - } - - return Enumerable.Empty>(); - } - - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.AlmostNever, LewdablePartKind.Vagina); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Breasts); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Anus); - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Mouth); - } - } -} diff --git a/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs deleted file mode 100644 index a8a4c8d..0000000 --- a/Source/IdeologyAddon/UsageRules/MaleFocusedVaginalPartKindUsageRule.cs +++ /dev/null @@ -1,97 +0,0 @@ -using RimWorld; -using rjw; -using rjw.Modules.Interactions.Contexts; -using rjw.Modules.Interactions.Enums; -using rjw.Modules.Interactions.Rules.PartKindUsageRules; -using rjw.Modules.Shared; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class MaleFocusedVaginal : IPartPreferenceRule - { - private bool MaleFocusedWillingAndAble(Pawn fucker, Pawn fucked) - { - // Define the set of valid precepts - var validHumanPrecepts = new HashSet - { - RsiDefOf.Precept.Pregnancy_Required, - }; - - var validAnimalPrecepts = new HashSet - { - RsiDefOf.Precept.PregnancyAnimal_Required, - }; - - var validBreedingPrecepts = new HashSet - { - RsiDefOf.Precept.BestialBreeding_Required, - }; - - // Check precepts for the pawns - bool hasValidHumanPreceptForFucked = fucked.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - - bool hasValidHumanPreceptForFucker = fucker.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - - bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && - validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - - bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && - validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - - // Determine if conditions are met - bool result = false; - - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) - { - RsiLog.Message($"MaleFocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; - } - else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) - { - RsiLog.Message($"MaleFocusedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); - result = true; - } - else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) - { - RsiLog.Message($"MaleFocusedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; - } - - return result; - } - - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (MaleFocusedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - RsiLog.Message($"MaleFocusedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have reduced vaginal chances."); - return Values(); - } - - return Enumerable.Empty>(); - } - - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (MaleFocusedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - { - RsiLog.Message($"MaleFocusedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have reduced vaginal chances."); - return Values(); - } - - return Enumerable.Empty>(); - } - - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.DoubledPlus, LewdablePartKind.Vagina); - yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Anus); - yield return new Weighted(Multipliers.VeryRare, LewdablePartKind.Mouth); - } - } -} \ No newline at end of file diff --git a/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs b/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs deleted file mode 100644 index 8138fe8..0000000 --- a/Source/IdeologyAddon/UsageRules/MaleIncreasedVaginalPartKindUsageRule.cs +++ /dev/null @@ -1,83 +0,0 @@ -using RimWorld; -using rjw; -using rjw.Modules.Interactions.Contexts; -using rjw.Modules.Interactions.Enums; -using rjw.Modules.Interactions.Rules.PartKindUsageRules; -using rjw.Modules.Shared; -using System.Collections.Generic; -using System.Linq; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class MaleIncreasedVaginal : IPartPreferenceRule - { - private bool IncreasedWillingAndAble(Pawn fucker, Pawn fucked) - { - // Define the set of valid precepts - var validHumanPrecepts = new HashSet - { - RsiDefOf.Precept.Pregnancy_Elevated, - RsiDefOf.Precept.Pregnancy_Holy, - }; - - var validBreedingPrecepts = new HashSet - { - RsiDefOf.Precept.BestialBreeding_Encouraged, - }; - - // Check precepts for the pawns - bool hasValidHumanPreceptForFucker = fucker.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - - bool hasValidHumanPreceptForFucked = fucked.Ideo != null && - validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); - - bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && - validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - - // Determine if conditions are met - bool result = false; - - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) - { - RsiLog.Message($"MaleIncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); - result = true; - } - else if (hasValidBreedingPreceptForFucker && PawnExtensions.IsAnimal(fucked)) - { - RsiLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); - result = true; - } - - return result; - } - - public IEnumerable> ModifiersForDominant(InteractionContext context) - { - if (IncreasedWillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - { - RsiLog.Message($"MaleIncreasedVaginal: {context.Internals.Submissive.Pawn.Name} and {context.Internals.Dominant.Pawn} have increased vaginal chances."); - return Values(); - } - - return Enumerable.Empty>(); - } - - public IEnumerable> ModifiersForSubmissive(InteractionContext context) - { - if (IncreasedWillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - { - RsiLog.Message($"MaleIncreasedVaginal: {context.Internals.Dominant.Pawn.Name} and {context.Internals.Submissive.Pawn} have increased vaginal chances."); - return Values(); - } - - return Enumerable.Empty>(); - } - - private IEnumerable> Values() - { - yield return new Weighted(Multipliers.Doubled, LewdablePartKind.Vagina); - } - } -} \ No newline at end of file From 0b8759369d11c8893f88ce7ba8cb91894bf9aebd Mon Sep 17 00:00:00 2001 From: ElToro Date: Tue, 22 Jul 2025 17:22:57 +0300 Subject: [PATCH 51/64] 1.6 support --- 1.6/Defs/DutyDefs/Duties_Rituals_sex.xml | 89 +++ 1.6/Defs/Goodwill/MemeCompatibility_Sex.xml | 50 ++ .../Interactions_SexTameFemale.xml | 35 + .../Interactions_SexTameMale.xml | 39 + .../Interactions_Speech_sex.xml | 102 +++ 1.6/Defs/JobDefs/Jobs_AnimalSexTame.xml | 55 ++ 1.6/Defs/JobDefs/Jobs_Ritual_Sex.xml | 46 ++ 1.6/Defs/MemeDefs/Memes_Sexual.xml | 246 ++++++ 1.6/Defs/PreceptDefs/Precepts_BabyFaction.xml | 42 + .../PreceptDefs/Precepts_BestialBreeding.xml | 196 +++++ 1.6/Defs/PreceptDefs/Precepts_Bestiality.xml | 741 ++++++++++++++++++ 1.6/Defs/PreceptDefs/Precepts_Incest.xml | 515 ++++++++++++ .../PreceptDefs/Precepts_Masturbation.xml | 47 ++ 1.6/Defs/PreceptDefs/Precepts_Necrophilia.xml | 309 ++++++++ 1.6/Defs/PreceptDefs/Precepts_Pregnancy.xml | 206 +++++ .../PreceptDefs/Precepts_PregnancyAnimal.xml | 146 ++++ 1.6/Defs/PreceptDefs/Precepts_Rape.xml | 436 +++++++++++ 1.6/Defs/PreceptDefs/Precepts_Ritual_sex.xml | 116 +++ 1.6/Defs/PreceptDefs/Precepts_Sex.xml | 445 +++++++++++ .../PreceptDefs/Precepts_SexProselytizing.xml | 20 + 1.6/Defs/PreceptDefs/Precepts_SizeMatters.xml | 218 ++++++ .../PreceptDefs/Precepts_SocialAffection.xml | 62 ++ 1.6/Defs/PreceptDefs/Precepts_Submissive.xml | 204 +++++ 1.6/Defs/PreceptDefs/Precepts_Tame.xml | 36 + 1.6/Defs/PreceptDefs/Precepts_Virginity.xml | 361 +++++++++ .../RitualPatternDefs/RitualPatterns_sex.xml | 66 ++ .../PreconfiguredIdeos/IdeoPresetDefs_sex.xml | 37 + 1.6/Defs/Rituals/Ritual_Behaviors_sex.xml | 462 +++++++++++ 1.6/Defs/Rituals/Ritual_Outcomes_sex.xml | 401 ++++++++++ 1.6/Defs/Rituals/Ritual_Targets_sex.xml | 16 + 1.6/Defs/ThingDefs/Buildings_Ideo_sex.xml | 132 ++++ .../Thoughts_Ritual_sex_Quality.xml | 115 +++ 1.6/Patches/Core_Thoughts_Memory_Death.xml | 65 ++ 1.6/Patches/Core_Thoughts_Memory_Lost.xml | 65 ++ 1.6/Patches/Core_Thoughts_Memory_Misc.xml | 103 +++ .../Core_Thoughts_Situation_Special.xml | 23 + 1.6/Patches/InteractionDef/Masturbation.xml | 14 + 1.6/Patches/InteractionDef/Necro.xml | 25 + 1.6/Patches/InteractionDef/Rape.xml | 83 ++ 1.6/Patches/InteractionDef/Rape_Reverse.xml | 83 ++ 1.6/Patches/InteractionDef/Sex.xml | 73 ++ 1.6/Patches/InteractionDef/Sex_Reverse.xml | 73 ++ 1.6/Patches/RJW_Drugs.xml | 45 ++ 1.6/Patches/RJW_Precepts.xml | 27 + 1.6/Patches/RJW_StatDefs_Ideo.xml | 12 + 1.6/Patches/RJW_ThoughtDefs.xml | 114 +++ 1.6/Patches/RJW_Thought_Family_Beast.xml | 723 +++++++++++++++++ About/Manifest.xml | 2 +- About/RealAbout.xml | 3 +- LoadFolders.xml | 5 + .../Patches/Thoughts_Situational_Children.xml | 23 + Source/IdeologyAddon/IdeologyAddon.csproj | 25 +- .../Rituals/JobGiver_DrugOrgy.cs | 9 +- .../SexTame/BestialityUtility.cs | 5 +- .../SexTame/JobDriver_LewdTameSex.cs | 8 +- .../SexTame/JobDriver_LewdTrainSex.cs | 7 +- .../UsageRules/DecreasedVaginalPreferences.cs | 2 +- .../UsageRules/FocusedVaginalPreferences.cs | 2 +- .../UsageRules/IncreasedVaginalPreferences.cs | 2 +- Source/IdeologyAddon/packages.lock.json | 24 +- 60 files changed, 7586 insertions(+), 50 deletions(-) create mode 100644 1.6/Defs/DutyDefs/Duties_Rituals_sex.xml create mode 100644 1.6/Defs/Goodwill/MemeCompatibility_Sex.xml create mode 100644 1.6/Defs/InteractionDefs/Interactions_SexTameFemale.xml create mode 100644 1.6/Defs/InteractionDefs/Interactions_SexTameMale.xml create mode 100644 1.6/Defs/InteractionDefs/Interactions_Speech_sex.xml create mode 100644 1.6/Defs/JobDefs/Jobs_AnimalSexTame.xml create mode 100644 1.6/Defs/JobDefs/Jobs_Ritual_Sex.xml create mode 100644 1.6/Defs/MemeDefs/Memes_Sexual.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_BabyFaction.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_BestialBreeding.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_Bestiality.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_Incest.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_Masturbation.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_Necrophilia.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_Pregnancy.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_Rape.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_Ritual_sex.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_Sex.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_SexProselytizing.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_SizeMatters.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_SocialAffection.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_Submissive.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_Tame.xml create mode 100644 1.6/Defs/PreceptDefs/Precepts_Virginity.xml create mode 100644 1.6/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml create mode 100644 1.6/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml create mode 100644 1.6/Defs/Rituals/Ritual_Behaviors_sex.xml create mode 100644 1.6/Defs/Rituals/Ritual_Outcomes_sex.xml create mode 100644 1.6/Defs/Rituals/Ritual_Targets_sex.xml create mode 100644 1.6/Defs/ThingDefs/Buildings_Ideo_sex.xml create mode 100644 1.6/Defs/ThoughtDefs/Thoughts_Ritual_sex_Quality.xml create mode 100644 1.6/Patches/Core_Thoughts_Memory_Death.xml create mode 100644 1.6/Patches/Core_Thoughts_Memory_Lost.xml create mode 100644 1.6/Patches/Core_Thoughts_Memory_Misc.xml create mode 100644 1.6/Patches/Core_Thoughts_Situation_Special.xml create mode 100644 1.6/Patches/InteractionDef/Masturbation.xml create mode 100644 1.6/Patches/InteractionDef/Necro.xml create mode 100644 1.6/Patches/InteractionDef/Rape.xml create mode 100644 1.6/Patches/InteractionDef/Rape_Reverse.xml create mode 100644 1.6/Patches/InteractionDef/Sex.xml create mode 100644 1.6/Patches/InteractionDef/Sex_Reverse.xml create mode 100644 1.6/Patches/RJW_Drugs.xml create mode 100644 1.6/Patches/RJW_Precepts.xml create mode 100644 1.6/Patches/RJW_StatDefs_Ideo.xml create mode 100644 1.6/Patches/RJW_ThoughtDefs.xml create mode 100644 1.6/Patches/RJW_Thought_Family_Beast.xml create mode 100644 ModCompatibility/Biotech/1.6/Patches/Thoughts_Situational_Children.xml diff --git a/1.6/Defs/DutyDefs/Duties_Rituals_sex.xml b/1.6/Defs/DutyDefs/Duties_Rituals_sex.xml new file mode 100644 index 0000000..67842dd --- /dev/null +++ b/1.6/Defs/DutyDefs/Duties_Rituals_sex.xml @@ -0,0 +1,89 @@ + + + + + Gangbang_Rape + HighPriority + Off + + +
  • + +
  • + 0.25 + +
  • + +
  • + + + +
  • + Jog + 50~250 +
  • + + + + + + Gangbang_Consensual + HighPriority + Off + + +
  • + +
  • + 0.25 + +
  • + +
  • +
    + + +
  • + Jog + 50~250 +
  • + +
    +
    + + + FuckVictim + HighPriority + Off + + +
  • + + + + + + DrugOrgy + HighPriority + Off + + +
  • + +
  • + 0.15 + +
  • + +
  • +
    + + +
  • + Jog + 50~250 +
  • + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/Goodwill/MemeCompatibility_Sex.xml b/1.6/Defs/Goodwill/MemeCompatibility_Sex.xml new file mode 100644 index 0000000..2f21ff1 --- /dev/null +++ b/1.6/Defs/Goodwill/MemeCompatibility_Sex.xml @@ -0,0 +1,50 @@ + + + + + + Zoophile_Zoophile + + GoodwillSituationWorker_MemeCompatibility + Zoophile + Zoophile + 30 + + + + Necrophile_Necrophile + + GoodwillSituationWorker_MemeCompatibility + Necrophile + Necrophile + 30 + + + + + Zoophile_All + + RJWSexperience.Ideology.GoodwillSituationWorker_OneWayReceive + Zoophile + true + -50 + + + + Rapist_All + + RJWSexperience.Ideology.GoodwillSituationWorker_OneWayReceive + Rapist + true + -20 + + + + Necrophile_All + + RJWSexperience.Ideology.GoodwillSituationWorker_OneWayReceive + Necrophile + true + -50 + + diff --git a/1.6/Defs/InteractionDefs/Interactions_SexTameFemale.xml b/1.6/Defs/InteractionDefs/Interactions_SexTameFemale.xml new file mode 100644 index 0000000..648c783 --- /dev/null +++ b/1.6/Defs/InteractionDefs/Interactions_SexTameFemale.xml @@ -0,0 +1,35 @@ + + + + + + AnimalSexTameChatFemale + + Things/Mote/SpeechSymbols/AnimalChat + Animals + 40 + + +
  • r_logentry->[INITIATOR_nameDef] [zooact] [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] tried to make [RECIPIENT_nameDef] sit still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] attempted to hold [RECIPIENT_nameDef] still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] [genact] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] allowed [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] encouraged [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • + +
  • genact->gently touched
  • +
  • genact->gently caressed
  • +
  • genact->tried to kiss
  • +
  • genact->tried to lick
  • +
  • genplan->trying to lick
  • +
  • genplan->trying to touch
  • +
  • genplan->trying to caresse
  • +
  • zooplan->to lick
  • +
  • zooplan->to taste
  • +
  • zooplan->to sniff
  • +
  • zooact->showed [INITIATOR_possessive] genitals to
  • +
  • zooact->presented [INITIATOR_possessive] genitals to
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/InteractionDefs/Interactions_SexTameMale.xml b/1.6/Defs/InteractionDefs/Interactions_SexTameMale.xml new file mode 100644 index 0000000..9a76771 --- /dev/null +++ b/1.6/Defs/InteractionDefs/Interactions_SexTameMale.xml @@ -0,0 +1,39 @@ + + + + + + AnimalSexTameChatMale + + Things/Mote/SpeechSymbols/AnimalChat + Animals + 40 + + +
  • r_logentry->[INITIATOR_nameDef] [zooact] [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] tried to make [RECIPIENT_nameDef] sit still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] attempted to hold [RECIPIENT_nameDef] still while [genplan] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] [genact] [RECIPIENT_nameDef]'s genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] allowed [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • +
  • r_logentry->[INITIATOR_nameDef] encouraged [RECIPIENT_nameDef] [zooplan] [INITIATOR_possessive] genitals.
  • + +
  • genact->gently touched
  • +
  • genact->gently caressed
  • +
  • genact->firmly stroked
  • +
  • genact->gently stroked
  • +
  • genact->tried to kiss
  • +
  • genact->tried to lick
  • +
  • genact->tried to taste
  • +
  • zooplan->to lick
  • +
  • zooplan->to taste
  • +
  • zooplan->to sniff
  • +
  • genplan->trying to lick
  • +
  • genplan->trying to touch
  • +
  • genplan->trying to stroke
  • +
  • genplan->trying to taste
  • +
  • zooact->showed [INITIATOR_possessive] genitals to
  • +
  • zooact->presented [INITIATOR_possessive] genitals to
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/InteractionDefs/Interactions_Speech_sex.xml b/1.6/Defs/InteractionDefs/Interactions_Speech_sex.xml new file mode 100644 index 0000000..f70ec26 --- /dev/null +++ b/1.6/Defs/InteractionDefs/Interactions_Speech_sex.xml @@ -0,0 +1,102 @@ + + + + + Speech_Gangbang + + InteractionWorker + True + Things/Mote/SpeechSymbols/Speech + +
  • SpeechUtility
  • + +
  • r_logentry->[INITIATOR_nameDef] [spokeof] [speechtopic].
  • +
  • r_logentry(p=0.2)->[INITIATOR_nameDef] [crazy].
  • + +
  • speechtopic->the meaning and true value of rape
  • +
  • speechtopic->expressions of rape
  • +
  • speechtopic->controlled lustful
  • +
  • speechtopic->the warmth of pussy
  • +
  • speechtopic->the meaning of cum
  • +
  • speechtopic->love and rape
  • +
  • speechtopic->symbolizing rape
  • +
  • speechtopic->dick and pussy
  • +
  • speechtopic->the art of rape
  • +
  • speechtopic->the seduction of victim
  • +
  • speechtopic->the music of screams
  • +
  • speechtopic->cums on the floor
  • + +
  • crazy->screamed maniacally
  • +
  • crazy->broke into a chant
  • +
  • crazy->chanted towards the heavens
  • +
  • crazy->spat in the sacrifice's genital
  • +
  • crazy->cackled
  • +
  • crazy->brandished a condom
  • +
  • crazy->muttered repetitively while masturbating
  • +
    +
    +
    + + + Speech_Zoophile + + InteractionWorker + True + Things/Mote/SpeechSymbols/Speech + +
  • SpeechUtility
  • + +
  • r_logentry->[INITIATOR_nameDef] [spokeof] [speechtopic].
  • + +
  • speechtopic->the meaning and true value of bestiality
  • +
  • speechtopic->expressions of bestiality
  • +
  • speechtopic->controlled lustful
  • +
  • speechtopic->the warmth of cum
  • +
  • speechtopic->the meaning of interspecies breeding
  • +
  • speechtopic->animal and love
  • +
  • speechtopic->symbolizing bestiality
  • +
  • speechtopic->breed and birth
  • +
  • speechtopic->the art of breeding
  • +
  • speechtopic->the seduction of animals
  • +
  • speechtopic->cums on the floor
  • +
    +
    +
    + + + Speech_Lewd + + InteractionWorker + True + Things/Mote/SpeechSymbols/Speech + +
  • SpeechUtility
  • + +
  • r_logentry->[INITIATOR_nameDef] [spokeof] [speechtopic].
  • +
  • r_logentry(p=0.2)->[INITIATOR_nameDef] [crazy].
  • + +
  • speechtopic->the meaning and true value of sex
  • +
  • speechtopic->expressions of sex
  • +
  • speechtopic->uncontrolled lustful
  • +
  • speechtopic->the warmth of pussy
  • +
  • speechtopic->the meaning of cum
  • +
  • speechtopic->love and incest
  • +
  • speechtopic->symbolizing rape
  • +
  • speechtopic->dick and pussy
  • +
  • speechtopic->the art of sex
  • +
  • speechtopic->the seduction of [spokeof]
  • +
  • speechtopic->the music of moan
  • +
  • speechtopic->cums on the floor
  • + +
  • crazy->moaned maniacally
  • +
  • crazy->threw a dildo
  • +
  • crazy->threw an onahole
  • +
  • crazy->chanted towards the heavens
  • +
  • crazy->moaned
  • +
  • crazy->brandished a dildo
  • +
  • crazy->muttered repetitively while masturbating
  • +
    +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Defs/JobDefs/Jobs_AnimalSexTame.xml b/1.6/Defs/JobDefs/Jobs_AnimalSexTame.xml new file mode 100644 index 0000000..36ce561 --- /dev/null +++ b/1.6/Defs/JobDefs/Jobs_AnimalSexTame.xml @@ -0,0 +1,55 @@ + + + + + + + lovin'. + false + + + + + + + taming TargetA. + + + + TameLewd_Feed + RJWSexperience.Ideology.JobDriver_LewdTameFeed + + + + TameLewd_Lovin + Sexually taming TargetA. + RJWSexperience.Ideology.JobDriver_LewdTameSex + + + + + training TargetA. + + + + TrainLewd_Feed + RJWSexperience.Ideology.JobDriver_LewdTrainFeed + + + + TrainLewd_Lovin + Sexually training TargetA. + RJWSexperience.Ideology.JobDriver_LewdTrainSex + + + + + + TrainLewd_Reciever + RJWSexperience.Ideology.JobDriver_LewdTrainReciever + Being sexually conditioned by TargetA. + false + false + + + \ No newline at end of file diff --git a/1.6/Defs/JobDefs/Jobs_Ritual_Sex.xml b/1.6/Defs/JobDefs/Jobs_Ritual_Sex.xml new file mode 100644 index 0000000..c82202c --- /dev/null +++ b/1.6/Defs/JobDefs/Jobs_Ritual_Sex.xml @@ -0,0 +1,46 @@ + + + + + RapeVictim + RJWSexperience.Ideology.JobDriver_RapeVictim + rapin' victim + false + + + + DrugSex + RJWSexperience.Ideology.JobDriver_SexDrugOrgy + lovin'. + false + + + + GettinDrugSex + RJWSexperience.Ideology.JobDriver_DrugSexReceiver + lovin'. + false + + + + DrugMasturbate + RJWSexperience.Ideology.JobDriver_DrugMasturabate + masturbatin'. + false + + + + Gangbang + RJWSexperience.Ideology.JobDriver_Gangbang + lovin'. + false + + + + GettinGangbang + RJWSexperience.Ideology.JobDriver_GangbangReceiver + gettin' gangbanged. + Never + false + + \ No newline at end of file diff --git a/1.6/Defs/MemeDefs/Memes_Sexual.xml b/1.6/Defs/MemeDefs/Memes_Sexual.xml new file mode 100644 index 0000000..a442285 --- /dev/null +++ b/1.6/Defs/MemeDefs/Memes_Sexual.xml @@ -0,0 +1,246 @@ + + + + SexualDissolutely + (0.65, 0.23) + 1 + 3000 + + + + SexualDissolutely + + 1.0 + + + + + + + Zoophile + + To sexually commune with animals is to show a true connection to creation, and it should be done often. + UI/Commands/Breeding_Pawn_off + 3 + +
  • +
  • Bestiality_Acceptable
  • +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • + +
    + + +
  • memeAdjective->bestial
  • +
  • memeAdjective->zoophile
  • +
  • memeHyphenPrefix->bestial
  • +
  • memeConcept->breeding
  • +
  • memeConcept->bestiality
  • +
  • memeConcept->zoophile
  • +
  • memeLeaderNoun->livestock
  • +
    +
    + + + + +
  • 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.
  • +
    +
    +
    + +
  • + Breeders + breed + bestiality + breeder +
  • +
  • + Zoophilia + zoophile + zoophile + zoophiliac +
  • +
    + +
  • Zoophile
  • +
    +
    + + + + Rapist + + To want to fuck is only natural, to deny anyone this right is unnatural and vile, and to take without consent is pure and right. + UI/Memes/Rape + 2 + +
  • +
  • Rape_Honorable
  • +
  • Rape_Acceptable
  • + +
    + + +
  • memeAdjective->violent
  • +
  • memeAdjective->raping
  • +
  • memeHyphenPrefix->rapist
  • +
  • memeHyphenPrefix->molester
  • +
  • memeHyphenPrefix->pervert
  • +
  • memeConcept->rapist
  • +
  • memeConcept->pervert
  • +
  • r_deityName->slaanesh
  • +
  • memeLeaderNoun->stallion
  • +
  • memeLeaderNoun->grand rapist
  • +
    +
    + + + + +
  • creation(tag=meme_Rapist) ->[deity0_name] loves rape.
  • +
  • episode(uses=1,tag=meme_Rapist) ->[deity0_name] raped everyone until death during rape.
  • + +
  • setup(tag=meme_Rapist) ->[founderName] is always horny.
  • +
  • story(uses=1,tag=meme_Rapist) ->[founderName] raped everyone. No one can stop [founderName]. [founderName] died trying to rape planet.
  • + +
  • lessonIntro(tag=meme_Rapist) ->Rape is best! Rape is best! Rape is best!
  • +
  • lesson(tag=meme_Rapist) ->Rape is best! Rape is best! Rape is best! Rape is best!
  • +
  • lessonReinforcement(tag=meme_Rapist) ->Rape is best! Rape is best! Rape is best! Rape is best! Rape is best!
  • + +
  • archistBasis(tag=meme_Rapist) ->Human history is history of rape.
  • +
  • archistFact(tag=meme_Rapist) ->Even archotechs cannot stop rapists.
  • +
  • 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.
  • +
    +
    +
    + +
  • + Rapists + rapist + raping + rapist +
  • +
  • + Cult of Slaanesh + pleasure + decadent + heretic +
  • +
    + +
  • Rapist
  • +
    +
    + + + Lewd + + Life is full of pleasures, but none are so pure, so natural, as that of sex. We must engage in sexual acts to truly be ourselves. + UI/Memes/SexualDissolutely + 3 + +
  • Burnbong_Aphrodisiac
  • +
    + +
  • +
  • Lovin_FreeApproved
  • + +
  • +
  • Incestuos_Free
  • + +
  • +
  • Sex_Free
  • +
  • Sex_Promiscuous
  • + +
    + +
  • + DateRitualConsumable + DrugOrgy + Burnbong_Aphrodisiac +
  • +
    + + +
  • memeAdjective->horny
  • +
  • memeAdjective->lewd
  • +
  • memeAdjective->arousing
  • +
  • memeAdjective->sexy
  • +
  • memeAdjective->estrous
  • +
  • memeAdjective->decadent
  • +
  • memeHyphenPrefix->estro
  • +
  • memeHyphenPrefix->lust
  • +
  • memeConcept->lust
  • +
  • memeConcept->libido
  • +
  • memeConcept->estrus
  • +
  • memeConcept->arousal
  • +
  • memeConcept->desire
  • +
  • memeConcept->sex
  • +
  • memeConcept->perversion
  • +
  • r_deityName->slaanesh
  • +
    +
    + +
  • + Cult of Slaanesh + pleasure + decadent + heretic +
  • +
    + +
  • Autobong_Aphrodisiac
  • +
    + +
  • Nymphomaniac
  • +
    +
    + + + Necrophile + + Corpse fuckers. + UI/Memes/Necrophile + 2 + +
  • +
  • Necrophilia_Acceptable
  • +
  • Necrophilia_Approved
  • + +
  • +
  • Corpses_DontCare
  • + +
    + + +
  • r_deityName->sonic
  • +
  • r_deityName->mega man
  • +
  • memeConcept->corpse
  • +
  • memeConcept->dead
  • +
    +
    + +
  • Necrophiliac
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_BabyFaction.xml b/1.6/Defs/PreceptDefs/Precepts_BabyFaction.xml new file mode 100644 index 0000000..035d361 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_BabyFaction.xml @@ -0,0 +1,42 @@ + + + + + + BabyFaction + + UI/Issues/BabyHome + + + + + + BabyFaction_AlwaysMother + BabyFaction + + New born babies always follow mother's faction and ideology. + Low + 50 + 1000 + + + + BabyFaction_AlwaysFather + BabyFaction + + New born babies always follow father's faction and ideology(if exists). + Low + 40 + 1000 + + + + BabyFaction_AlwaysColony + BabyFaction + + New born babies are always player's faction and ideology. + Low + 30 + 1000 + + \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_BestialBreeding.xml b/1.6/Defs/PreceptDefs/Precepts_BestialBreeding.xml new file mode 100644 index 0000000..3037ea5 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_BestialBreeding.xml @@ -0,0 +1,196 @@ + + + + + + + + + BestialBreeding + + UI/Issues/BestialBreeding + + + + + BestialBreeding_Neutral + BestialBreeding + + Impregnating an animal is simply a natural and unremarkable aspect of life. + Low + 30 + + + + + + BestialBreeding_Encouraged + BestialBreeding + Medium + 40 + + Breeding animals is valued for sustaining their population, while also embracing the shared carnal pleasure it brings. + +
  • + BestialBreeding_Liked +
  • +
  • + BestialBreeding_Liked_Social +
  • +
    +
    + + + BestialBreeding_Required + BestialBreeding + High + 40 + + Breeding animals is not just encouraged — it is an essential practice to sustain their population, enhance the colony's genetic potential through hybrids, and indulge in the carnal pleasures of the act. + +
  • + BestialBreeding_Respected +
  • +
  • + BestialBreeding_Respected_Social +
  • +
    +
    + + + BestialBreeding_Horrible + BestialBreeding + High + 50 + + Breeding animals is an unnatural and vile act, degrading both the animal and the participant. It serves no purpose other than corruption and defilement. + +
  • + BestialBreeding_Horrible +
  • +
  • + BestialBreeding_Horrible_Social +
  • +
    +
    + + + BestialBreeding_Disliked + BestialBreeding + High + 50 + + Breeding animals is a practice that, while not entirely abhorrent, is generally disliked. It should be avoided whenever possible, as there are more acceptable alternatives. + +
  • + BestialBreeding_Disliked +
  • +
  • + BestialBreeding_Disliked_Social +
  • +
    +
    + + + + BestialBreeding_Respected + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding + Thought_Situational + +
  • + + I've impregnated an animal. This ensures the colony's survival and strengthens its genetic potential. The pleasure I feel is secondary to our future. + 4 +
  • +
    +
    + + + BestialBreeding_Respected_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social + Thought_SituationalSocial + +
  • + + 8 +
  • +
    +
    + + + BestialBreeding_Liked + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding + Thought_Situational + +
  • + + I've impregnated an animal. It felt good, and it will help with the animal population. + 2 +
  • +
    +
    + + + BestialBreeding_Liked_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social + Thought_SituationalSocial + +
  • + + 4 +
  • +
    +
    + + + + + BestialBreeding_Horrible_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social + Thought_SituationalSocial + +
  • + + -8 +
  • +
    +
    + + + BestialBreeding_Horrible + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding + Thought_Situational + +
  • + + I've impregnated an animal. This feels disgusting... + -4 +
  • +
    +
    + + + BestialBreeding_Disliked_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding_Social + Thought_SituationalSocial + +
  • + + -4 +
  • +
    +
    + + + BestialBreeding_Disliked + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_BestialBreeding + Thought_Situational + +
  • + + I've impregnated an animal. It feels wrong, but there was some pleasure in it. + -2 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_Bestiality.xml b/1.6/Defs/PreceptDefs/Precepts_Bestiality.xml new file mode 100644 index 0000000..42953d4 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_Bestiality.xml @@ -0,0 +1,741 @@ + + + + + + Bestiality + + UI/Commands/Breeding_Pawn_off + + + + RSI_SexWithAnimal + + +
  • + +
  • + + + true + + + RSI_SexWithVeneratedAnimal +
  • +
  • + + + true + + + false + + + RSI_SexWithNonVeneratedAnimal +
  • +
  • + + + true + + + +
  • Bond
  • + + + + RSI_SexWithBondedAnimal + +
  • + + + true + + + +
  • Bond
  • + + + + RSI_SexWithNonBondAnimal + + + +
    +
    + + + RSI_SexWithVeneratedAnimal + + + + + RSI_SexWithNonVeneratedAnimal + + + + + RSI_SexWithBondedAnimal + + + + + RSI_SexWithNonBondAnimal + + + + + + + Bestiality_Abhorrent + Bestiality + + Bestiality is a deeply evil act and antithesis to humanity. + Low + 40 + 100 + 30 + +
  • Zoophile
  • +
    + +
  • HumanPrimacy
  • +
    + +
  • + RSI_SexWithAnimal +
  • +
  • + RSI_SexWithVeneratedAnimal + Bestiality_Abhorrent +
  • +
  • + RSI_SexWithVeneratedAnimal + Bestiality_Know_Abhorrent +
  • +
  • + RSI_SexWithAnimal + Bestiality_Abhorrent +
  • +
  • + RSI_SexWithAnimal + Bestiality_Know_Abhorrent +
  • +
    + +
  • + +
  • + + + true + + + 0.05 +
  • + + +
    +
    + + + Bestiality_Horrible + Bestiality + + Bestiality is a terrible act, worthy of disgust. + Low + 30 + 200 + 30 + +
  • Zoophile
  • +
    + +
  • HumanPrimacy
  • +
    + +
  • + RSI_SexWithVeneratedAnimal + Bestiality_Horrible +
  • +
  • + RSI_SexWithVeneratedAnimal + Bestiality_Know_Horrible +
  • +
  • + RSI_SexWithAnimal + Bestiality_Horrible +
  • +
  • + RSI_SexWithAnimal + Bestiality_Know_Horrible +
  • +
    + +
  • + +
  • + + + true + + + 0.1 +
  • + + +
  • + 5.0 +
  • +
    +
    + + + Bestiality_Disapproved + Bestiality + + Bestiality is extremely distasteful, worthy of shame. + Low + 20 + 300 + 20 + +
  • Zoophile
  • +
    + +
  • HumanPrimacy
  • +
    + +
  • + RSI_SexWithVeneratedAnimal + Bestiality_Disapproved +
  • +
  • + RSI_SexWithVeneratedAnimal + Bestiality_Know_Disapproved +
  • +
  • + RSI_SexWithAnimal + Bestiality_Disapproved +
  • +
  • + RSI_SexWithAnimal + Bestiality_Know_Disapproved +
  • +
    + +
  • + +
  • + + + true + + + 0.5 +
  • + + +
    +
    + + + Bestiality_Acceptable + Bestiality + + Bestiality is a normal, unremarkable part of life. + Medium + 10 + 10 + true + +
  • + 0.75 +
  • +
    +
    + + + Bestiality_OnlyVenerated + Bestiality + + One who has sex with venerated animals should be honored and respected. But having sex with other animals is an act worthy of derision. + High + 0 + 1000 + +
  • HumanPrimacy
  • +
    + +
  • Zoophile
  • +
    + +
  • + RSI_SexWithNonVeneratedAnimal + Bestiality_Nonvenerated_Disapproved + true +
  • +
  • + RSI_SexWithNonVeneratedAnimal + Bestiality_Nonvenerated_Know_Disapproved + Someone had sex with any animal + true +
  • +
  • + RSI_SexWithVeneratedAnimal + Bestiality_Honorable + true +
  • +
  • + RSI_SexWithVeneratedAnimal + Bestiality_Know_Honorable + Someone had sex with a venerated animal + true +
  • +
    + +
  • + +
  • + + + true + + + 2.0 +
  • +
  • + + + true + + + false + + + 0.05 +
  • + + +
  • + 0.65 +
  • +
    +
    + + + + Bestiality_BondOnly + Bestiality + + Sex with Bonded animals is to be honored and respected. But having sex with other animals is an act worthy of derision. + High + 0 + 1000 + +
  • HumanPrimacy
  • +
    + +
  • Zoophile
  • +
    + +
  • + RSI_SexWithNonBondAnimal + Bestiality_NonBonded_Disapproved + true +
  • +
  • + RSI_SexWithNonBondAnimal + Bestiality_NonBonded_Know_Disapproved + Someone had sex with any animal + true +
  • +
  • + RSI_SexWithBondedAnimal + Bestiality_Bond_Approved + true +
  • +
  • + RSI_SexWithBondedAnimal + Bestiality_Bond_Approved_Know + Someone had sex with a non bonded animal + true +
  • +
    + +
  • + +
  • + + + true + + + +
  • Bond
  • + + + + 2.0 + +
  • + + + true + + + +
  • Bond
  • + + + + 0.1 + + + +
  • + 0.5 +
  • +
    +
    + + + Bestiality_Honorable + Bestiality + + One who has sex with animals should be encouraged, its only natural. + High + 0 + 1000 + +
  • HumanPrimacy
  • +
    + +
  • Zoophile
  • +
    + +
  • + RSI_SexWithAnimal + Bestiality_Honorable + true +
  • +
  • + RSI_SexWithAnimal + Bestiality_Know_Honorable + Someone had sex with an animal + true +
  • +
  • + RSI_SexWithVeneratedAnimal + Bestiality_Honorable + true +
  • +
  • + RSI_SexWithVeneratedAnimal + Bestiality_Know_Honorable + Someone had sex with an animal + true +
  • +
    + +
  • + +
  • + + + true + + + 2.0 +
  • + + +
  • + 0.5 +
  • +
    +
    + + + + + Bestiality_Abhorrent + 6 + 1 + +
  • Zoophile
  • +
    + +
  • Bestiality_Honorable
  • +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Acceptable
  • +
    + +
  • + + I had sex with animal. I want to die. + -15 +
  • +
    +
    + + + Bestiality_Know_Abhorrent + Thought_MemorySocial + 15 + 100 + 3 + +
  • Zoophile
  • +
    + +
  • Bestiality_Honorable
  • +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Acceptable
  • +
    + +
  • + + -30 +
  • +
    +
    + + + Bestiality_Horrible + 6 + 1 + +
  • Zoophile
  • +
    + +
  • Bestiality_Honorable
  • +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Acceptable
  • +
    + +
  • + + I had sex with animal. I'm not sure I can forgive myself. + -10 +
  • +
    +
    + + + Bestiality_Know_Horrible + Thought_MemorySocial + 15 + 100 + 3 + +
  • Zoophile
  • +
    + +
  • Bestiality_Honorable
  • +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Acceptable
  • +
    + +
  • + + -20 +
  • +
    +
    + + + Bestiality_Disapproved + 6 + 1 + +
  • Zoophile
  • +
    + +
  • Bestiality_Honorable
  • +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Acceptable
  • +
    + +
  • + + I had sex with an animal. I hope nothing terrible happens to them. + -5 +
  • +
    +
    + + + Bestiality_Know_Disapproved + Thought_MemorySocial + 15 + 100 + 3 + +
  • Zoophile
  • +
    + +
  • Bestiality_Honorable
  • +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Acceptable
  • +
    + +
  • + + -10 +
  • +
    +
    + + + Bestiality_Nonvenerated_Disapproved + 6 + 1 + +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    + +
  • + + I had sex with a non-venerated animal. I hope nothing terrible happens to them. + -5 +
  • +
    +
    + + + Bestiality_Nonvenerated_Know_Disapproved + Thought_MemorySocial + 15 + 100 + 3 + +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    + +
  • + + -10 +
  • +
    +
    + + + Bestiality_NonBonded_Disapproved + 6 + 1 + +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
  • Bestiality_OnlyVenerated
  • +
    + +
  • + + I had sex with a non bonded animal. How could I? + -5 +
  • +
    +
    + + + Bestiality_Bond_Approved + 6 + 1 + +
  • Bestiality_Abhorrent
  • +
  • Bestiality_Horrible
  • +
  • Bestiality_Disapproved
  • +
    + +
  • + + I went wild with my bonded animal! + 8 +
  • +
    +
    + + + Bestiality_Bond_Approved_Know + Thought_MemorySocial + 15 + 2 + +
  • Bestiality_Abhorrent
  • +
  • Bestiality_Horrible
  • +
  • Bestiality_Disapproved
  • +
    + +
  • + + Shares a special bond. + 5 +
  • +
    +
    + + + Bestiality_NonBonded_Know_Disapproved + Thought_MemorySocial + 15 + 100 + 3 + +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
  • Bestiality_OnlyVenerated
  • +
    + +
  • + + -10 +
  • +
    +
    + + + Bestiality_Honorable + 6 + 1 + +
  • Bestiality_Abhorrent
  • +
  • Bestiality_Horrible
  • +
  • Bestiality_Disapproved
  • +
    + +
  • + + I had sex with an animal. + 4 +
  • +
    +
    + + + Bestiality_Know_Honorable + Thought_MemorySocial + 25 + 100 + 3 + +
  • Bestiality_Abhorrent
  • +
  • Bestiality_Horrible
  • +
  • Bestiality_Disapproved
  • +
    + +
  • + + 5 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_Incest.xml b/1.6/Defs/PreceptDefs/Precepts_Incest.xml new file mode 100644 index 0000000..e5e896a --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_Incest.xml @@ -0,0 +1,515 @@ + + + + + + Incestuos + + UI/Issues/Incest + + + + RSI_CloseRelativeMarriage + + + + + RSI_IncestuosMarriage + + + + + RSI_NonIncestuosMarriage + + +
  • + +
  • + + + +
  • CloseRelative
  • + + + + RSI_CloseRelativeMarriage + +
  • + + + +
  • FarRelative
  • + + + + RSI_IncestuosMarriage + + + +
    +
    + + + RSI_CloseRelativeSex + + + + + RSI_IncestuosSex + + + + + RSI_NonIncestuosSex + + +
  • + +
  • + + + +
  • CloseRelative
  • + + + + RSI_CloseRelativeSex + +
  • + + + +
  • FarRelative
  • + + + + RSI_IncestuosSex + + + +
    +
    + + + + + Incestuos_Free + Incestuos + + Sex is a natural part of life, it matters little with who you have it. + Medium + 60 + 1000 + 100 + +
  • + +
  • CloseRelative
  • +
  • FarRelative
  • +
  • NotRelated
  • + + +
  • + CloseRelative + 1 +
  • +
  • + FarRelative + 1 +
  • +
  • + NotRelated + 1 +
  • +
    + +
    +
    + + + Incestuos_Disapproved_CloseOnly + Incestuos + + Incest is disapproved socially, but relations farther than cousin are not recognized as incest. + Low + 50 + 1000 + 100 + +
  • + RSI_CloseRelativeMarriage + IncestuosMarriage_Disapproved +
  • +
  • + RSI_CloseRelativeSex + Sex_Know_Incest_Disapproved +
  • +
    + +
  • + +
  • + + + +
  • CloseRelative
  • + + +
  • Spouse
  • +
    + + + 0.5 + + + +
  • + +
  • FarRelative
  • +
  • NotRelated
  • + + +
  • + FarRelative + 1 +
  • +
  • + NotRelated + 1 +
  • +
    + +
    +
    + + + Incestuos_Disapproved + Incestuos + + Incest is disapproved socially. + Low + 40 + 1000 + 100 + +
  • + RSI_IncestuosMarriage + IncestuosMarriage_Disapproved +
  • +
  • + RSI_IncestuosMarriage + Sex_Know_IncestMarriage_Disapproved +
  • +
  • + RSI_IncestuosSex + Sex_Know_Incest_Disapproved +
  • +
    + +
  • + +
  • + + + +
  • CloseRelative
  • +
  • FarRelative
  • + + +
  • Spouse
  • +
    + + + 0.5 + + + +
    +
    + + + Incestuos_Forbidden + Incestuos + + Incest is forbidden socially. + Low + 30 + 1000 + 100 + +
  • + RSI_IncestuosMarriage + IncestuosMarriage_Forbidden +
  • +
  • + RSI_IncestuosMarriage + Sex_Know_IncestMarriage_Forbidden +
  • +
  • + RSI_IncestuosSex + Sex_Know_Incest_Forbidden +
  • +
    + +
  • + +
  • + + + +
  • CloseRelative
  • +
  • FarRelative
  • + + +
  • Spouse
  • +
    + + + 0.1 + + + +
  • + +
  • + CloseRelative + 0.03 +
  • +
  • + FarRelative + 0.03 +
  • + + +
    +
    + + + Incestuos_IncestOnly + Incestuos + + For the purpose preserving pure blood, only incest is allowed. + High + 0 + 1000 + +
  • + RSI_NonIncestuosMarriage + Sex_Know_IncestMarriage_Violated +
  • +
  • + RSI_NonIncestuosSex + Sex_Know_Incest_Violated +
  • +
    + +
  • + +
  • + + + +
  • NotRelated
  • + + + + 0.1 + + + +
  • + +
  • CloseRelative
  • +
  • FarRelative
  • + + +
  • + CloseRelative + 1 +
  • +
  • + FarRelative + 1 +
  • +
  • + NotRelated + 0.03 +
  • +
    + +
    +
    + + + + IncestuosMarriage_Forbidden + 30 + 1 + +
  • Psychopath
  • +
  • Nymphomaniac
  • +
    + +
  • Incestuos_IncestOnly
  • +
  • Incestuos_Free
  • +
    + +
  • + + No one blessed our marriage. + -10 +
  • +
    +
    + + + IncestuosMarriage_Disapproved + 30 + 1 + +
  • Psychopath
  • +
  • Nymphomaniac
  • +
    + +
  • Incestuos_IncestOnly
  • +
  • Incestuos_Free
  • +
    + +
  • + + They are speaking behind our backs. + -5 +
  • +
    +
    + + + Sex_Know_Incest_Disapproved + Thought_MemorySocial + 15 + 100 + 3 + +
  • Nymphomaniac
  • +
    + +
  • Incestuos_IncestOnly
  • +
  • Incestuos_Free
  • +
    + +
  • + + -15 +
  • +
    +
    + + + Sex_Know_Incest_Forbidden + Thought_MemorySocial + 15 + 100 + 3 + +
  • Nymphomaniac
  • +
    + +
  • Incestuos_IncestOnly
  • +
  • Incestuos_Free
  • +
    + +
  • + + -30 +
  • +
    +
    + + + Sex_Know_IncestMarriage_Disapproved + Thought_MemorySocial + 60 + 100 + 3 + +
  • Nymphomaniac
  • +
    + +
  • Incestuos_IncestOnly
  • +
  • Incestuos_Free
  • +
    + +
  • + + -15 +
  • +
    +
    + + + Sex_Know_IncestMarriage_Forbidden + Thought_MemorySocial + 60 + 100 + 3 + +
  • Nymphomaniac
  • +
    + +
  • Incestuos_IncestOnly
  • +
  • Incestuos_Free
  • +
    + +
  • + + -30 +
  • +
    +
    + + + Sex_Know_Incest_Violated + Thought_MemorySocial + 15 + 100 + 3 + +
  • Nymphomaniac
  • +
    + +
  • Incestuos_Disapproved_CloseOnly
  • +
  • Incestuos_Disapproved
  • +
  • Incestuos_Forbidden
  • +
  • Incestuos_Free
  • +
    + +
  • + + -15 +
  • +
    +
    + + + Sex_Know_IncestMarriage_Violated + Thought_MemorySocial + 300 + 100 + 3 + +
  • Nymphomaniac
  • +
    + +
  • Incestuos_Disapproved_CloseOnly
  • +
  • Incestuos_Disapproved
  • +
  • Incestuos_Forbidden
  • +
  • Incestuos_Free
  • +
    + +
  • + + -50 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_Masturbation.xml b/1.6/Defs/PreceptDefs/Precepts_Masturbation.xml new file mode 100644 index 0000000..b9a37f7 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_Masturbation.xml @@ -0,0 +1,47 @@ + + + + + + Masturbation + + UI/Issues/SexType + + + + RSI_Masturbated + + + + + + Masturbation_Abhorrent + Masturbation + + Masturbation is unacceptable morally. + Medium + 40 + 100 + +
  • + RSI_Masturbated +
  • +
    +
    + + + Masturbation_Disapproved + Masturbation + + Masturbation is somewhat shameful. + Low + 20 + 100 + +
  • + 2.0 +
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_Necrophilia.xml b/1.6/Defs/PreceptDefs/Precepts_Necrophilia.xml new file mode 100644 index 0000000..2f83713 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_Necrophilia.xml @@ -0,0 +1,309 @@ + + + + + + Necrophilia + + UI/Issues/Necrophilia + + + + RSI_SexWithCorpse + + + + + + + Necrophilia_Abhorrent + Necrophilia + + Necrophilia is a deeply evil act. + Low + 40 + 100 + 30 + +
  • Necrophile
  • +
    + +
  • + RSI_SexWithCorpse +
  • +
  • + RSI_SexWithCorpse + Necrophilia_Abhorrent +
  • +
  • + RSI_SexWithCorpse + Necrophilia_Know_Abhorrent +
  • +
    +
    + + + Necrophilia_Horrible + Necrophilia + + Necrophilia is a horrible act. + Low + 30 + 200 + 30 + +
  • Necrophile
  • +
    + +
  • + RSI_SexWithCorpse + Necrophilia_Horrible +
  • +
  • + RSI_SexWithCorpse + Necrophilia_Know_Horrible +
  • +
    + +
  • + 8.0 +
  • +
    +
    + + + Necrophilia_Disapproved + Necrophilia + + Necrophilia is extremely distasteful. + Low + 20 + 300 + 20 + +
  • Necrophile
  • +
    + +
  • + RSI_SexWithCorpse + Necrophilia_Disapproved +
  • +
  • + RSI_SexWithCorpse + Necrophilia_Know_Disapproved +
  • +
    +
    + + + Necrophilia_Acceptable + Necrophilia + + Necrophilia is a normal, unremarkable part of life. + Medium + 10 + 10 + true + +
  • Necrophile
  • +
    + +
  • + 0.75 +
  • +
    +
    + + + Necrophilia_Approved + Necrophilia + + Fucking a corpse is fine, who is it hurting?. + High + 0 + 1000 + +
  • Necrophile
  • +
  • Lewd
  • +
    + +
  • + RSI_SexWithCorpse + Necrophilia_Approved +
  • +
  • + RSI_SexWithCorpse + Necrophilia_Know_Approved +
  • +
    + +
  • + 0.5 +
  • +
    +
    + + + + + + Necrophilia_Abhorrent + 6 + 1 + +
  • Necrophiliac
  • +
    + +
  • Necrophilia_Approved
  • +
  • Necrophilia_Acceptable
  • +
    + +
  • + + I have fucked a corpse. + -15 +
  • +
    +
    + + + Necrophilia_Know_Abhorrent + Thought_MemorySocial + 15 + 100 + 3 + +
  • Necrophiliac
  • +
    + +
  • Necrophilia_Approved
  • +
  • Necrophilia_Acceptable
  • +
    + +
  • + + -30 +
  • +
    +
    + + + Necrophilia_Horrible + 6 + 1 + +
  • Necrophiliac
  • +
    + +
  • Necrophilia_Approved
  • +
  • Necrophilia_Acceptable
  • +
    + +
  • + + I have fucked a corpse. + -10 +
  • +
    +
    + + + Necrophilia_Know_Horrible + Thought_MemorySocial + 15 + 100 + 3 + +
  • Necrophiliac
  • +
    + +
  • Necrophilia_Approved
  • +
  • Necrophilia_Acceptable
  • +
    + +
  • + + -20 +
  • +
    +
    + + + Necrophilia_Disapproved + 6 + 1 + +
  • Necrophiliac
  • +
    + +
  • Necrophilia_Approved
  • +
  • Necrophilia_Acceptable
  • +
    + +
  • + + I have fucked a corpse. + -5 +
  • +
    +
    + + + Necrophilia_Know_Disapproved + Thought_MemorySocial + 15 + 100 + 3 + +
  • Necrophiliac
  • +
    + +
  • Necrophilia_Approved
  • +
  • Necrophilia_Acceptable
  • +
    + +
  • + + -10 +
  • +
    +
    + + + Necrophilia_Approved + 6 + 1 + +
  • Necrophilia_Abhorrent
  • +
  • Necrophilia_Horrible
  • +
  • Necrophilia_Disapproved
  • +
    + +
  • + + I have fucked a corpse. + 4 +
  • +
    +
    + + + Necrophilia_Know_Approved + Thought_MemorySocial + 25 + 100 + 3 + +
  • Necrophilia_Abhorrent
  • +
  • Necrophilia_Horrible
  • +
  • Necrophilia_Disapproved
  • +
    + +
  • + + 5 +
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_Pregnancy.xml b/1.6/Defs/PreceptDefs/Precepts_Pregnancy.xml new file mode 100644 index 0000000..66dacee --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_Pregnancy.xml @@ -0,0 +1,206 @@ + + + + + + + + + Pregnancy + + UI/Issues/Pregnancy + + + + + 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 + + Pregnancy is an unremarkable fact of life. + 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. + +
  • + Pregnancy_Horrible_Pregnant +
  • +
  • + Pregnancy_Horrible_Pregnant_Social +
  • +
    +
    + + + + + Pregnancy_Respected_Pregnant + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant + Thought_Situational + +
  • + + I am pregnant. This makes me a pillar of society. + 10 +
  • +
    +
    + + + Pregnancy_Elevated_Pregnant + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant + Thought_Situational + +
  • + + I am making our colony stronger by carrying our future. + 5 +
  • +
    +
    + + + Pregnancy_Respected_Pregnant_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant_Social + Thought_SituationalSocial + +
  • + + 20 +
  • +
    +
    + + + Pregnancy_Elevated_Pregnant_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant_Social + Thought_SituationalSocial + +
  • + + 10 +
  • +
    +
    + + + Pregnancy_Horrible_Pregnant_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant_Social + Thought_SituationalSocial + +
  • + + -20 +
  • +
    +
    + + + Pregnancy_Horrible_Pregnant + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_Pregnant + Thought_Situational + +
  • + + How did I end up like this? I never wanted to be pregnant! + -10 +
  • +
    +
    + + + + Pregnancy_Horrible_NonPregnant + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_NonPregnant + Thought_Situational + true + Female + +
  • + + I wish to be pregnant. + -6 +
  • +
    +
    + + + Pregnancy_Horrible_NonPregnant_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_NonPregnant_Social + Thought_SituationalSocial + Female + +
  • + + -5 +
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml b/1.6/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml new file mode 100644 index 0000000..f1cd147 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_PregnancyAnimal.xml @@ -0,0 +1,146 @@ + + + + + + + + + PregnancyAnimal + + UI/Issues/PregnancyAnimal + + + + + PregnancyAnimal_NoRules + PregnancyAnimal + + Carrying the offspring of an animal is nothing more than a natural, unremarkable part of life. + Low + 30 + + + + + + PregnancyAnimal_Required + PregnancyAnimal + High + 40 + + We must do our part to help increase the animal population, even if it means bearing their offspring. It's a necessary duty for the balance of our society. + +
  • + Pregnancy_Respected_PregnantAnimal +
  • +
  • + Pregnancy_Respected_PregnantAnimal_Social +
  • +
  • + Pregnancy_Respected_NonPregnantAnimal +
  • +
  • + Pregnancy_Respected_NonPregnantAnimal_Social +
  • +
    +
    + + + PregnancyAnimal_Horrible + PregnancyAnimal + Low + 50 + + Being pregnant with an animal's offspring feels wrong and unnatural. It's a burden that must be avoided at all costs. + +
  • + Pregnancy_Horrible_PregnantAnimal +
  • +
  • + Pregnancy_Horrible_PregnantAnimal_Social +
  • +
    +
    + + + + Pregnancy_Respected_PregnantAnimal + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_PregnantAnimal + Thought_Situational + +
  • + + I'm pregnant with an animal's offspring, and it feels right, like I'm meant to be this way. + 10 +
  • +
    +
    + + + Pregnancy_Respected_PregnantAnimal_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_PregnantAnimal_Social + Thought_SituationalSocial + +
  • + + 20 +
  • +
    +
    + + + Pregnancy_Horrible_PregnantAnimal_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_PregnantAnimal_Social + Thought_SituationalSocial + +
  • + + -20 +
  • +
    +
    + + + Pregnancy_Horrible_PregnantAnimal + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_PregnantAnimal + Thought_Situational + +
  • + + I never imagined it would end like this — carrying an animal's offspring. This is a nightmare. What am I supposed to do now? + -10 +
  • +
    +
    + + + + + Pregnancy_Respected_NonPregnantAnimal + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_NonPregnantAnimal + Thought_Situational + true + Female + +
  • + + The thought of being impregnated by an animal is thrilling — I want to experience it. + -6 +
  • +
    +
    + + + Pregnancy_Respected_NonPregnantAnimal_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_NonPregnantAnimal_Social + Thought_SituationalSocial + Female + +
  • + + -5 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_Rape.xml b/1.6/Defs/PreceptDefs/Precepts_Rape.xml new file mode 100644 index 0000000..ad98dcf --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_Rape.xml @@ -0,0 +1,436 @@ + + + + + + Rape + + UI/Issues/Rape + + + + RSI_Raped + + +
  • + +
  • + + + true + + + RSI_RapedSlave +
  • +
  • + + + true + + + RSI_RapedPrisoner +
  • + + +
    +
    + + + RSI_RapedSlave + + + + + RSI_RapedPrisoner + + + + + RSI_WasRaped + + +
  • + +
  • + + + true + + + RSI_WasRapedSlave +
  • +
  • + + + true + + + RSI_WasRapedPrisoner +
  • + + +
    +
    + + + RSI_WasRapedSlave + + + + + RSI_WasRapedPrisoner + + + + + + + Rape_Abhorrent + Rape + + Rape is a deeply evil act. + Low + 40 + 1000 + 30 + +
  • RapeBad
  • +
    + +
  • Rapist
  • +
    + +
  • HumanPrimacy
  • +
  • Collectivist
  • +
    + +
  • + RSI_Raped +
  • +
  • + RSI_Raped + Rape_Abhorrent +
  • +
  • + RSI_Raped + Rape_Know_Abhorrent + Someone raped other +
  • +
  • + RSI_RapedPrisoner + Rape_Horrible + Raped prisoner +
  • +
  • + RSI_RapedPrisoner + Rape_Know_Horrible + Someone raped prisoner +
  • +
  • + RSI_RapedSlave + Rape_Disapproved + Raped slave +
  • +
  • + RSI_RapedSlave + Rape_Know_Disapproved + Someone raped slave +
  • +
    +
    + + + Rape_Horrible + Rape + + Rape is a horrible act. + Low + 30 + 1000 + 30 + +
  • RapeBad
  • +
    + +
  • Rapist
  • +
    + +
  • HumanPrimacy
  • +
    + +
  • + RSI_Raped + Rape_Horrible +
  • +
  • + RSI_Raped + Rape_Know_Horrible + Someone raped other +
  • +
  • + RSI_RapedPrisoner + Rape_Disapproved + Raped prisoner +
  • +
  • + RSI_RapedPrisoner + Rape_Know_Disapproved + Someone raped prisoner +
  • +
    + +
  • + 3.0 +
  • +
    +
    + + + Rape_Disapproved + Rape + + Rape is part of life, though it is extremely distasteful. + Medium + 20 + 1000 + 20 + +
  • RapeBad
  • +
    + +
  • Rapist
  • +
    + +
  • HumanPrimacy
  • +
    + +
  • + RSI_Raped + Rape_Disapproved +
  • +
  • + RSI_Raped + Rape_Know_Disapproved + Someone raped other +
  • +
    +
    + + + Rape_Acceptable + Rape + + Rape is a normal, unremarkable part of life. + High + 10 + 10 + true + +
  • + 0.75 +
  • +
    +
    + + + Rape_Honorable + Rape + + Raping is a proud behavior that shows strength of character. + High + 0 + 1000 + +
  • HumanPrimacy
  • +
    + +
  • Rapist
  • +
    + + 0.75 + + +
  • + RSI_Raped + BloodlustStoleSomeLovin + true +
  • +
  • + RSI_Raped + Rape_Know_Honorable + Someone raped other + true +
  • +
  • + RSI_RapedPrisoner + BloodlustStoleSomeLovin + true +
  • +
  • + RSI_RapedPrisoner + Rape_Know_Honorable + Someone raped other + true +
  • +
  • + RSI_RapedSlave + BloodlustStoleSomeLovin + true +
  • +
  • + RSI_RapedSlave + Rape_Know_Honorable + Someone raped other + true +
  • +
    + +
  • + 0.5 +
  • +
    +
    + + + + + Rape_Abhorrent + 6 + 1 + +
  • Rapist
  • +
    + +
  • Rape_Honorable
  • +
  • Rape_Acceptable
  • +
    + +
  • + + I raped someone. I shouldn't do that. + -5 +
  • +
    +
    + + + Rape_Know_Abhorrent + Thought_MemorySocial + 15 + 100 + 3 + +
  • Rapist
  • +
    + +
  • Rape_Honorable
  • +
  • Rape_Acceptable
  • +
    + +
  • + + -30 +
  • +
    +
    + + + Rape_Horrible + 6 + 1 + +
  • Rapist
  • +
    + +
  • Rape_Honorable
  • +
  • Rape_Acceptable
  • +
    + +
  • + + I raped someone. I shouldn't do that. + -3 +
  • +
    +
    + + + Rape_Know_Horrible + Thought_MemorySocial + 15 + 100 + 3 + +
  • Rapist
  • +
    + +
  • Rape_Honorable
  • +
  • Rape_Acceptable
  • +
    + +
  • + + -15 +
  • +
    +
    + + + Rape_Disapproved + 6 + 1 + +
  • Rapist
  • +
    + +
  • Rape_Honorable
  • +
  • Rape_Acceptable
  • +
    + +
  • + + I raped someone. I shouldn't do that. + -1 +
  • +
    +
    + + + Rape_Know_Disapproved + Thought_MemorySocial + 15 + 100 + 3 + +
  • Rapist
  • +
    + +
  • Rape_Honorable
  • +
  • Rape_Acceptable
  • +
    + +
  • + + -5 +
  • +
    +
    + + + Rape_Know_Honorable + Thought_MemorySocial + 25 + 100 + 3 + +
  • Rape_Abhorrent
  • +
  • Rape_Disapproved
  • +
    + +
  • + + 1 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_Ritual_sex.xml b/1.6/Defs/PreceptDefs/Precepts_Ritual_sex.xml new file mode 100644 index 0000000..4ee7e33 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_Ritual_sex.xml @@ -0,0 +1,116 @@ + + + + + GangbangCeremony + + A ritualistic gangbang where the oragnizer rapes a victim. The audience will rape the victim as well. + Ritual + Medium + UI/Issues/Gangbang + Precept_Ritual + Gangbang + true + false + 1.0 + 100 + false + true + false + +
  • RapeBad
  • +
    + +
  • Rapist
  • +
    +
    + + + GangbangCeremony_Consensual + + A ritualistic gangbang where the organizer is being fucked. The audience will fuck the organizer. + Ritual + Medium + UI/Issues/Gangbang_Consensual + Precept_Ritual + Gangbang_Consensual + true + false + 1.0 + 100 + false + true + false + +
  • Lewd
  • +
    +
    + + + AnimalGangbangCeremony + + A ritualistic gangbang where animals rape a victim. + Ritual + Medium + UI/Commands/Breeding_Pawn_off + Precept_Ritual + GangbangByAnimal + true + false + 1.0 + 100 + false + true + false + +
  • + +
  • Rapist
  • +
  • Zoophile
  • + + +
    +
    + + + AnimalGangbangCeremony_Consensual + + A ritualistic gangbang where animals fuck the organizer. + Ritual + Medium + UI/Commands/Breeding_Pawn_on + Precept_Ritual + GangbangByAnimal_Consensual + true + false + 1.0 + 100 + false + true + false + +
  • Zoophile
  • +
    +
    + + + DrugOrgyCeremony + + An orgy using massive aphrodisiac. + Ritual + Medium + UI/Issues/Gangbang + Precept_Ritual + DrugOrgy + true + false + 1.0 + 100 + false + true + false + +
  • Lewd
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_Sex.xml b/1.6/Defs/PreceptDefs/Precepts_Sex.xml new file mode 100644 index 0000000..2a5da80 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_Sex.xml @@ -0,0 +1,445 @@ + + + + + + Sextype + + UI/Issues/SexType + + + + RSI_VaginalSex + + + + + RSI_AnalSex + + + + + RSI_OralSex + + + + + RSI_PromiscuousSex + + + + + RSI_MiscSex + + + + + + Sex_Free + Sextype + + Vaginal, Anal, Oral, doesn't matter so long as you have fun. + Low + 50 + 1000 + 100 + + + + Sex_VaginalOnly + Sextype + + Only vaginal sex is morally acceptable and other sexual acts are distasteful. + Low + 40 + 1000 + 100 + +
  • + RSI_AnalSex +
  • +
  • + RSI_AnalSex + Sex_Promiscuous +
  • +
  • + RSI_AnalSex + Sex_Know_Promiscuous +
  • +
  • + RSI_OralSex +
  • +
  • + RSI_OralSex + Sex_Promiscuous +
  • +
  • + RSI_OralSex + Sex_Know_Promiscuous +
  • +
  • + RSI_MiscSex +
  • +
  • + RSI_MiscSex + Sex_Promiscuous +
  • +
  • + RSI_MiscSex + Sex_Know_Promiscuous +
  • +
  • + RSI_PromiscuousSex +
  • +
  • + RSI_PromiscuousSex + Sex_Promiscuous +
  • +
  • + RSI_PromiscuousSex + Sex_Know_Promiscuous +
  • +
    + +
  • + +
  • + Vaginal + 10 + +
  • + 0.1 +
  • + + + + +
    +
    + + + Sex_AnalOnly + Sextype + + Only anal sex is morally acceptable and other sexual acts are distasteful. + Medium + 30 + 1000 + 10 + +
  • + RSI_VaginalSex +
  • +
  • + RSI_VaginalSex + Sex_Promiscuous +
  • +
  • + RSI_VaginalSex + Sex_Know_Promiscuous +
  • +
  • + RSI_OralSex +
  • +
  • + RSI_OralSex + Sex_Promiscuous +
  • +
  • + RSI_OralSex + Sex_Know_Promiscuous +
  • +
  • + RSI_MiscSex +
  • +
  • + RSI_MiscSex + Sex_Promiscuous +
  • +
  • + RSI_MiscSex + Sex_Know_Promiscuous +
  • +
  • + RSI_PromiscuousSex +
  • +
  • + RSI_PromiscuousSex + Sex_Promiscuous +
  • +
  • + RSI_PromiscuousSex + Sex_Know_Promiscuous +
  • +
    + +
  • + +
  • + Anal + 10 + +
  • + 0.1 +
  • + + + + +
    +
    + + + Sex_OralOnly + Sextype + + Only oral sex is morally acceptable and other sexual acts are distasteful. + Medium + 20 + 1000 + 5 + +
  • + RSI_VaginalSex +
  • +
  • + RSI_VaginalSex + Sex_Promiscuous +
  • +
  • + RSI_VaginalSex + Sex_Know_Promiscuous +
  • +
  • + RSI_AnalSex +
  • +
  • + RSI_AnalSex + Sex_Promiscuous +
  • +
  • + RSI_AnalSex + Sex_Know_Promiscuous +
  • +
  • + RSI_MiscSex +
  • +
  • + RSI_MiscSex + Sex_Promiscuous +
  • +
  • + RSI_MiscSex + Sex_Know_Promiscuous +
  • +
  • + RSI_PromiscuousSex +
  • +
  • + RSI_PromiscuousSex + Sex_Promiscuous +
  • +
  • + RSI_PromiscuousSex + Sex_Know_Promiscuous +
  • +
    + +
  • + +
  • + Mouth + 10 + +
  • + 0.1 +
  • + + + + +
    +
    + + + Sex_Promiscuous + Sextype + + A messy sex life is approved. + High + 0 + 1000 + + 1.5 + 1.25 + + +
  • + RSI_VaginalSex +
  • +
  • + RSI_VaginalSex + Sex_NonPromiscuous +
  • +
  • + RSI_VaginalSex + Sex_Know_NonPromiscuous +
  • +
  • + RSI_AnalSex +
  • +
  • + RSI_AnalSex + Sex_NonPromiscuous +
  • +
  • + RSI_AnalSex + Sex_Know_NonPromiscuous +
  • +
  • + RSI_OralSex +
  • +
  • + RSI_OralSex + Sex_NonPromiscuous +
  • +
  • + RSI_OralSex + Sex_Know_NonPromiscuous +
  • +
  • + RSI_MiscSex +
  • +
  • + RSI_MiscSex + Sex_NonPromiscuous +
  • +
  • + RSI_MiscSex + Sex_Know_NonPromiscuous +
  • +
  • + RSI_PromiscuousSex + Sex_Know_Promiscuous_Approval +
  • +
    + +
  • + +
  • + Vaginal + 0.01 +
  • +
  • + Anal + 0.01 +
  • +
  • + Mouth + 0.01 +
  • + + +
    +
    + + + + + Sex_Promiscuous + 1 + 1 + RJWSexperience.Ideology.Thought_IncreaseRecord + +
  • + + I was immoral. It makes me aroused. + 5 +
  • +
    + +
  • + Lust + 3.0 +
  • +
    +
    + + + Sex_NonPromiscuous + 1 + 1 + +
  • + + It cannot satisfy me. + -1 +
  • +
    +
    + + + Sex_Know_Promiscuous + Thought_MemorySocial + 15 + 100 + 3 + +
  • Nymphomaniac
  • +
  • Zoophile
  • +
  • Rapist
  • +
  • Necrophiliac
  • +
  • Gay
  • +
  • Bisexual
  • +
    + +
  • Sex_Free
  • +
  • Sex_Promiscuous
  • +
    + +
  • + + -10 +
  • +
    +
    + + + Sex_Know_Promiscuous_Approval + Thought_MemorySocial + 15 + 100 + 3 + +
  • Sex_VaginalOnly
  • +
  • Sex_AnalOnly
  • +
  • Sex_OralOnly
  • +
    + +
  • + + 3 +
  • +
    +
    + + + Sex_Know_NonPromiscuous + Thought_MemorySocial + 15 + 100 + 3 + +
  • Sex_VaginalOnly
  • +
  • Sex_AnalOnly
  • +
  • Sex_OralOnly
  • +
  • Sex_Free
  • +
    + +
  • + + -3 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_SexProselytizing.xml b/1.6/Defs/PreceptDefs/Precepts_SexProselytizing.xml new file mode 100644 index 0000000..9f17ed4 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_SexProselytizing.xml @@ -0,0 +1,20 @@ + + + + + + SexProselytizing + + UI/Issues/SexProselytizer + + + + ProselyzingByOrgasm + SexProselytizing + + Giving an orgasm converts partner towards this ideology. + Medium + 50 + 400 + + \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_SizeMatters.xml b/1.6/Defs/PreceptDefs/Precepts_SizeMatters.xml new file mode 100644 index 0000000..9f56f09 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_SizeMatters.xml @@ -0,0 +1,218 @@ + + + + + + GenitalSize + + UI/Issues/GenitalSize + + + + + + GenitalSize_Big_Better + GenitalSize + The size matters. + + High + 20 + 200 + +
  • + GenitalSize_Approved +
  • +
  • + GenitalSize_Approved_Social +
  • +
    +
    + + + GenitalSize_NoRules + GenitalSize + It isn't the size of the ship, its the motion of the ocean. + + High + 10 + 100 + + + + + + GenitalSize_Smaller_Better + GenitalSize + The ancients actually believed, that large genitals are an animalistic feature. Influential figures were known for their small genitals. + + High + 30 + 200 + +
  • + GenitalSize_Disapproved +
  • +
  • + GenitalSize_Disapproved_Social +
  • +
    +
    + + + + + GenitalSize_Approved + Thought_Situational + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize + +
  • + + I have to be okay with the way I am, I know no one else is. + -10 +
  • +
  • + + I think I am below average. + -5 +
  • +
  • + + I guess I am the average. + 0 +
  • +
  • + + I think I am above average. + +5 +
  • +
  • + + My genitals are the ideal size and health, I am the perfect example. + +10 +
  • +
    + +
  • + + +
  • 0
  • +
  • 0.2
  • +
  • 0.4
  • +
  • 0.6
  • +
  • 0.8
  • + + +
    +
    + + + GenitalSize_Disapproved + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize + Thought_Situational + +
  • + + I do not need great genitals, as I am a being of supreme intellect and grace. + +10 +
  • +
  • + + I think I am below average. + +5 +
  • +
  • + + I guess I am the average. + 0 +
  • +
  • + + I think I am above average. + -5 +
  • +
  • + + I am closer to an animal, than to a human. Why did I have to be born this way? + -10 +
  • +
    + +
  • + + +
  • 0
  • +
  • 0.2
  • +
  • 0.4
  • +
  • 0.6
  • +
  • 0.8
  • + + +
    +
    + + + + + GenitalSize_Approved_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize_Social + Thought_SituationalSocial + +
  • + + -5 +
  • +
  • + + 0 +
  • +
  • + + +5 +
  • +
    + +
  • + + +
  • 0
  • +
  • 0.4
  • +
  • 0.6
  • + + +
    +
    + + + GenitalSize_Disapproved_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize_Social + Thought_SituationalSocial + +
  • + + +5 +
  • +
  • + + 0 +
  • +
  • + + -5 +
  • +
    + +
  • + + +
  • 0
  • +
  • 0.4
  • +
  • 0.6
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_SocialAffection.xml b/1.6/Defs/PreceptDefs/Precepts_SocialAffection.xml new file mode 100644 index 0000000..3d28d26 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_SocialAffection.xml @@ -0,0 +1,62 @@ + + + + + + SocialAffection + + UI/Issues/SocialAffection + + + + + + SocialAffection_Normal + SocialAffection + + To be social is to be human, and that is just fine. + Low + 50 + 1000 + + + + SocialAffection_Small + SocialAffection + + To be social is to be vulnerable, and only your family can see that. + Medium + 40 + 1000 + + + + SocialAffection_OnlyFamily + SocialAffection + + To cry for another's kin is morally weak and humiliating. + Medium + 30 + 1000 + + + + SocialAffection_Dry + SocialAffection + + To concern yourself with the tragedy of another member of your family is the sign of a weak character. + High + 20 + 1000 + + + + SocialAffection_Psychopath + SocialAffection + + Only one person matters in this universe, and it must be yourself. + High + 10 + 1000 + + \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_Submissive.xml b/1.6/Defs/PreceptDefs/Precepts_Submissive.xml new file mode 100644 index 0000000..2290f6c --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_Submissive.xml @@ -0,0 +1,204 @@ + + + + + + Submissive + + UI/Issues/Submissive + + + + + + Submissive_None + Submissive + + No gender should have obedience demanded of them. + Low + 50 + 1000 + + + + Submissive_Male + Submissive + + Males are submissive. They will obey and accept any and all treatment women decide. + High + 40 + 1000 + +
  • FemaleSupremacy
  • +
    + +
  • + RSI_Raped + Male +
  • +
  • + RSI_WasRaped + BeenRaped_Submissive + Male +
  • +
  • + RSI_WasRaped + BeenRaped_NotSubmissive + Female +
  • +
  • + RSI_Raped + Raped_Know_NotBeingSubmissive + Male +
  • +
  • + RSI_WasRapedPrisoner + BeenRaped_Submissive + Male +
  • +
  • + RSI_WasRapedPrisoner + BeenRaped_NotSubmissive + Female +
  • +
  • + RSI_RapedPrisoner + Raped_Know_NotBeingSubmissive + Male +
  • +
  • + RSI_WasRapedSlave + BeenRaped_Submissive + Male +
  • +
  • + RSI_WasRapedSlave + BeenRaped_NotSubmissive + Female +
  • + +
    +
    + + + Submissive_Female + Submissive + + Females are submissive. They will obey and accept any and all treatment men decide. + High + 30 + 1000 + +
  • MaleSupremacy
  • +
    + +
  • + RSI_Raped + Female +
  • +
  • + RSI_WasRaped + BeenRaped_Submissive + Female +
  • +
  • + RSI_WasRaped + BeenRaped_NotSubmissive + Male +
  • +
  • + RSI_Raped + Raped_Know_NotBeingSubmissive + Female +
  • +
  • + RSI_WasRapedPrisoner + BeenRaped_Submissive + Female +
  • +
  • + RSI_WasRapedPrisoner + BeenRaped_NotSubmissive + Male +
  • +
  • + RSI_RapedPrisoner + Raped_Know_NotBeingSubmissive + Female +
  • +
  • + RSI_WasRapedSlave + BeenRaped_Submissive + Female +
  • +
  • + RSI_WasRapedSlave + BeenRaped_NotSubmissive + Male +
  • + +
    +
    + + + + + + BeenRaped_Submissive + 10 + 100 + Thought_Memory + 0.4 + +
  • Masochist
  • +
    + +
  • + + I had to accept. But I don't feel so good. + -3 +
  • +
    +
    + + + BeenRaped_NotSubmissive + 15 + 100 + Thought_MemorySocial + 0.4 + +
  • Masochist
  • +
    + +
  • + + How dare... + -30 + -200 +
  • +
    +
    + + + Raped_Know_NotBeingSubmissive + Thought_MemorySocial + 15 + 100 + 3 + +
  • + + -30 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_Tame.xml b/1.6/Defs/PreceptDefs/Precepts_Tame.xml new file mode 100644 index 0000000..f7a536f --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_Tame.xml @@ -0,0 +1,36 @@ + + + + + AnimalConnection_Lovin + AnimalConnection + + We tame and train our animals through acts of physical intimacy. + Medium + + + + + + + + + + AnimalConnection_LovinBond + AnimalConnection + + We bond and teach our animals through shared acts of physical intimacy. + High + +
  • Zoophile
  • +
    + +
  • Zoophile
  • +
    + + 2 + 1.5 + 2 + +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/Precepts_Virginity.xml b/1.6/Defs/PreceptDefs/Precepts_Virginity.xml new file mode 100644 index 0000000..4c55f09 --- /dev/null +++ b/1.6/Defs/PreceptDefs/Precepts_Virginity.xml @@ -0,0 +1,361 @@ + + + + + + Virginity_Female + + UI/Issues/Female + + + + Virginity_Male + + UI/Issues/Male + + + + RSI_VirginTaken + + +
  • + +
  • + + + +
  • Spouse
  • + + + + RSI_VirginTakenNotSpouse + + + +
    +
    + + + RSI_TookVirgin + + + + + RSI_VirginStolen + + + + + RSI_VirginTakenNotSpouse + + + + + + + Virgin_UselessF + Virginity_Female + + Female virginity is useless. + Medium + 50 + 1000 + 10 + + + + Virgin_UselessM + Virginity_Male + + Male virginity is useless. + Low + 50 + 1000 + 80 + + + + Virgin_PreciousF + Virginity_Female + + Female virginity is precious. + Medium + 40 + 1000 + 80 + +
  • + RSI_VirginStolen + Virgin_Precious_Taken_Forcefully + Female +
  • +
  • + RSI_VirginTaken + Virgin_Precious_Taken + Female +
  • +
  • + RSI_TookVirgin + TookVirginity +
  • +
    +
    + + + Virgin_PreciousM + Virginity_Male + + Male virginity is precious. + Medium + 40 + 1000 + 1 + +
  • + RSI_VirginStolen + Virgin_Precious_Taken_Forcefully + Male +
  • +
  • + RSI_VirginTaken + Virgin_Precious_Taken + Male +
  • +
  • + RSI_TookVirgin + TookVirginity +
  • +
    +
    + + + Virgin_OnlyForSpouseF + Virginity_Female + + Losing your virginity before marriage is evil and makes the soild female lesser. + Medium + 40 + 1000 + 80 + +
  • MaleSupremacy
  • +
    + +
  • FemaleSupremacy
  • +
    + +
  • MaleSupremacy
  • +
    + +
  • + RSI_VirginStolen + Virgin_Precious_Taken_Forcefully + Female +
  • +
  • + RSI_VirginTaken + Virgin_Precious_Taken + Female +
  • +
  • + RSI_VirginTakenNotSpouse + Virgin_OnlyForSpouse_Know_Taken + Female +
  • +
  • + RSI_TookVirgin + TookVirginity +
  • +
    +
    + + + Virgin_OnlyForSpouseM + Virginity_Male + + Losing your virginity before marriage is evil and makes the soiled male lesser. + Medium + 40 + 1000 + 20 + +
  • FemaleSupremacy
  • +
    + +
  • MaleSupremacy
  • +
    + +
  • FemaleSupremacy
  • +
    + +
  • + RSI_VirginStolen + Virgin_Precious_Taken_Forcefully + Male +
  • +
  • + RSI_VirginTaken + Virgin_Precious_Taken + Male +
  • +
  • + RSI_VirginTakenNotSpouse + Virgin_OnlyForSpouse_Know_Taken + Male +
  • +
  • + RSI_TookVirgin + TookVirginity +
  • +
    +
    + + + Virgin_ShamefulF + Virginity_Female + + Being a Virgin is a shameful state of being, worthy of derision. + Medium + 30 + 1000 + 1 + +
  • FemaleSupremacy
  • +
    + +
  • + RSI_VirginTaken + Virgin_Shameful_Taken + Female +
  • +
    +
    + + + Virgin_ShamefulM + Virginity_Male + + Being a Virgin is a shameful state of being, worthy of derision. + Medium + 30 + 1000 + 40 + +
  • MaleSupremacy
  • +
    + +
  • + RSI_VirginTaken + Virgin_Shameful_Taken + Male +
  • +
    +
    + + + + + Virgin_Precious_Taken_Forcefully + Thought_MemorySocial + 30 + 1 + +
  • + + My virginity was taken forcefully. + -10 + -200 +
  • +
    +
    + + + Virgin_Precious_Taken + RJWSexperience.Ideology.Thought_Opinionbased + 7 + 1 + +
  • + + I am no longer a virgin. + -5 +
  • +
  • + + I am no longer a virgin. + -3 +
  • +
  • + + I am no longer a virgin. + -1 +
  • +
  • + + I gave my virginity to my love. + 5 +
  • +
    + +
  • + +
  • -100
  • +
  • -50
  • +
  • 0
  • +
  • 75
  • + + +
    +
    + + + Virgin_Shameful_Taken + RJWSexperience.Ideology.Thought_Opinionbased + 7 + 1 + +
  • + + Finally! + 5 +
  • +
  • + + Finally! + 10 +
  • +
  • + + Finally! + 20 +
  • +
    + +
  • + +
  • -100
  • +
  • 0
  • +
  • 75
  • + + +
    +
    + + + + Virgin_OnlyForSpouse_Know_Taken + Thought_MemorySocial + 30 + 100 + 3 + +
  • Nymphomaniac
  • +
    + +
  • + + -30 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml b/1.6/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml new file mode 100644 index 0000000..cf458e1 --- /dev/null +++ b/1.6/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml @@ -0,0 +1,66 @@ + + + + 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.6/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml b/1.6/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml new file mode 100644 index 0000000..9c503a6 --- /dev/null +++ b/1.6/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml @@ -0,0 +1,37 @@ + + + + + Animal_Breeders + + Animals are our better half. + Intense + +
  • AnimalPersonhood
  • +
  • Zoophile
  • +
    +
    + + + Savage_Rapist_Brigands + + All of them are ours. + Intense + +
  • Rapist
  • +
  • Nudism
  • +
  • Raider
  • +
    +
    + + + Hentai_Tribe + + Intense + Impregnate. + +
  • MaleSupremacy
  • +
  • Rapist
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/Rituals/Ritual_Behaviors_sex.xml b/1.6/Defs/Rituals/Ritual_Behaviors_sex.xml new file mode 100644 index 0000000..6e026ad --- /dev/null +++ b/1.6/Defs/Rituals/Ritual_Behaviors_sex.xml @@ -0,0 +1,462 @@ + + + + + +
  • + + 7500 + +
  • + + initiator + Initiator + IdeoRole_Moralist + True + true + 1 + False +
  • + +
    + + + Gangbang + RJWSexperience.Ideology.RitualBehaviorWorker_Gangbang + +
  • + + a victim + victim + 1 + true + False + true + true + true +
  • +
    + +
  • + Spectate + +
  • + + +
  • + initiator + victim + Victim is not reachable. +
  • + + +
  • + initiator + DeliverPawnToAltar +
  • +
  • + victim + Idle +
  • +
    + +
  • + Spectate + +
  • + 0.1 +
  • + + +
  • + initiator + SpeakOnCellFacingSpectators + Speech_Gangbang + +
  • + 5 +
  • +
  • + +
  • +
  • + victim + LayDownAwake +
  • +
    + +
  • + Gangbang_Rape + True + +
  • + 0.9 +
  • + + +
  • + initiator + FuckVictim + +
  • + +
  • +
    + +
  • + Gangbang_Rape + +
  • + 0.1 +
  • + + +
  • + initiator + SpeakOnCellFacingSpectators + Speech_Gangbang + +
  • + +
  • +
    + +
    +
    + + + Gangbang_Consensual + RJWSexperience.Ideology.RitualBehaviorWorker_Gangbang_Consensual + +
  • + Spectate + +
  • + +
  • initiator
  • + + + + +
  • + initiator + ArriveToCell +
  • +
    + +
  • + Spectate + +
  • + 0.1 +
  • + + +
  • + initiator + SpeakOnCellFacingSpectators + Speech_Gangbang + +
  • + 5 +
  • +
  • + +
  • +
    + +
  • + Gangbang_Consensual + True + +
  • + 1.0 +
  • + + +
  • + initiator + LayDownAwake + +
  • + +
  • +
    + +
  • + Spectate + +
  • + 0.1 +
  • + + +
  • + initiator + SpeakOnCellFacingSpectators + Speech_Gangbang + +
  • + +
  • +
    + +
    +
    + + + GangbangByAnimal + RJWSexperience.Ideology.RitualBehaviorWorker_Gangbang + +
  • + + a breedee who will be fucked by animal + victim + 1 + True + False + true +
  • +
  • + + animal + 30 + false + a breedable animal + false +
  • +
    + +
  • + +
  • + initiator + victim +
  • + + Spectate + 5~7 + +
  • + initiator + victim + Victim is not reachable. +
  • +
    + +
  • + +
  • initiator
  • + + true + +
    + +
  • + initiator + DeliverPawnToCellIfAliveThenIdle + +
  • + 2 + 0 +
  • + + +
  • + victim + Idle +
  • +
    + +
  • + Spectate + +
  • + 0.1 +
  • + + +
  • + initiator + SpeakOnCellFacingSpectators + Speech_Zoophile + +
  • + 5 +
  • +
  • + +
  • +
  • + animal + Spectate +
  • +
  • + victim + LayDownAwake +
  • +
    + +
  • + Spectate + True + +
  • + 0.9 +
  • + + +
  • + animal + Gangbang_Rape + +
  • + +
  • +
  • + victim + LayDownAwake +
  • +
    + +
  • + Spectate + +
  • + 0.1 +
  • + + +
  • + initiator + SpeakOnCellFacingSpectators + Speech_Zoophile + +
  • + +
  • +
  • + victim + LayDownAwake +
  • +
    + +
    +
    + + + GangbangByAnimal_Consensual + RJWSexperience.Ideology.RitualBehaviorWorker_Gangbang_Consensual + +
  • + + animal + 30 + false + a breedable animal + false +
  • +
    + +
  • + Spectate + +
  • + +
  • initiator
  • + + + + +
  • + initiator + ArriveToCell +
  • +
    + +
  • + Spectate + +
  • + 0.1 +
  • + + +
  • + initiator + SpeakOnCellFacingSpectators + Speech_Zoophile + +
  • + 5 +
  • +
  • + +
  • +
  • + animal + Spectate +
  • +
    + +
  • + Spectate + True + +
  • + 0.9 +
  • + + +
  • + animal + Gangbang_Consensual + +
  • + +
  • +
  • + initiator + LayDownAwake +
  • +
    + +
  • + Spectate + +
  • + 0.1 +
  • + + +
  • + initiator + SpeakOnCellFacingSpectators + Speech_Zoophile + +
  • + +
  • +
    + +
    +
    + + + DrugOrgy + 7500 + + Participants + participate + +
  • + DrugOrgy + +
  • + 1.0 +
  • + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/Rituals/Ritual_Outcomes_sex.xml b/1.6/Defs/Rituals/Ritual_Outcomes_sex.xml new file mode 100644 index 0000000..d1d35ca --- /dev/null +++ b/1.6/Defs/Rituals/Ritual_Outcomes_sex.xml @@ -0,0 +1,401 @@ + + + + + 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.6/Defs/Rituals/Ritual_Targets_sex.xml b/1.6/Defs/Rituals/Ritual_Targets_sex.xml new file mode 100644 index 0000000..bd6fc35 --- /dev/null +++ b/1.6/Defs/Rituals/Ritual_Targets_sex.xml @@ -0,0 +1,16 @@ + + + + + RitualSpotOrAltar_Gangbang + RitualObligationTargetWorker_AnyRitualSpotOrAltar_Scarification + + + + DrugOrgy + RitualObligationTargetWorker_ConsumableBuilding + +
  • Burnbong_Aphrodisiac
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/ThingDefs/Buildings_Ideo_sex.xml b/1.6/Defs/ThingDefs/Buildings_Ideo_sex.xml new file mode 100644 index 0000000..f1f1d3f --- /dev/null +++ b/1.6/Defs/ThingDefs/Buildings_Ideo_sex.xml @@ -0,0 +1,132 @@ + + + + + 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.6/Defs/ThoughtDefs/Thoughts_Ritual_sex_Quality.xml b/1.6/Defs/ThoughtDefs/Thoughts_Ritual_sex_Quality.xml new file mode 100644 index 0000000..309769f --- /dev/null +++ b/1.6/Defs/ThoughtDefs/Thoughts_Ritual_sex_Quality.xml @@ -0,0 +1,115 @@ + + + + + TerribleGangbang + Thought_AttendedRitual + 6 + 3 + +
  • + + That gangbang was terrible. ugh. + -3 +
  • +
    +
    + + + BoringGangbang + Thought_AttendedRitual + 6 + 3 + +
  • + + That gangbang was not good. Wish I never went. + -1 +
  • +
    +
    + + + FunGangbang + Thought_AttendedRitual + 6 + 3 + +
  • + + That was a fun gangbang. It really satisfied me. + 8 +
  • +
    +
    + + + UnforgettableGangbang + Thought_AttendedRitual + 6 + 3 + +
  • + + That gangbang was awesome! Everything was perfect. + 16 +
  • +
    +
    + + + TerribleOrgy + Thought_AttendedRitual + 6 + 3 + +
  • + + That orgy was terrible. ugh. + -3 +
  • +
    +
    + + + BoringOrgy + Thought_AttendedRitual + 6 + 3 + +
  • + + That orgy was not good. Wish I never went. + -1 +
  • +
    +
    + + + FunOrgy + Thought_AttendedRitual + 6 + 3 + +
  • + + That was a fun orgy. It really satisfied me. + 8 +
  • +
    +
    + + + UnforgettableOrgy + Thought_AttendedRitual + 6 + 3 + +
  • + + That orgy was awesome! Everything was perfect. + 16 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Patches/Core_Thoughts_Memory_Death.xml b/1.6/Patches/Core_Thoughts_Memory_Death.xml new file mode 100644 index 0000000..e317adf --- /dev/null +++ b/1.6/Patches/Core_Thoughts_Memory_Death.xml @@ -0,0 +1,65 @@ + + + + + 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"]/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"] + + +
  • 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"]/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"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied"] + + +
  • 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"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Patches/Core_Thoughts_Memory_Lost.xml b/1.6/Patches/Core_Thoughts_Memory_Lost.xml new file mode 100644 index 0000000..a6807aa --- /dev/null +++ b/1.6/Patches/Core_Thoughts_Memory_Lost.xml @@ -0,0 +1,65 @@ + + + + + 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"]/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"] + + +
  • 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"]/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/1.6/Patches/Core_Thoughts_Memory_Misc.xml b/1.6/Patches/Core_Thoughts_Memory_Misc.xml new file mode 100644 index 0000000..f143540 --- /dev/null +++ b/1.6/Patches/Core_Thoughts_Memory_Misc.xml @@ -0,0 +1,103 @@ + + + + + Defs/ThoughtDef[defName="WitnessedDeathAlly"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="WitnessedDeathAlly"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="WitnessedDeathAlly"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="WitnessedDeathNonAlly"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="WitnessedDeathNonAlly"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="WitnessedDeathNonAlly"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="WitnessedDeathFamily"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="WitnessedDeathFamily"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="WitnessedDeathFamily"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="ColonistBanishedToDie"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="ColonistBanishedToDie"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="ColonistBanishedToDie"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="PrisonerBanishedToDie"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="PrisonerBanishedToDie"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="PrisonerBanishedToDie"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Patches/Core_Thoughts_Situation_Special.xml b/1.6/Patches/Core_Thoughts_Situation_Special.xml new file mode 100644 index 0000000..2050526 --- /dev/null +++ b/1.6/Patches/Core_Thoughts_Situation_Special.xml @@ -0,0 +1,23 @@ + + + + + Defs/ThoughtDef[defName="ColonistLeftUnburied"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="ColonistLeftUnburied"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="ColonistLeftUnburied"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Patches/InteractionDef/Masturbation.xml b/1.6/Patches/InteractionDef/Masturbation.xml new file mode 100644 index 0000000..66b6bd4 --- /dev/null +++ b/1.6/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.6/Patches/InteractionDef/Necro.xml b/1.6/Patches/InteractionDef/Necro.xml new file mode 100644 index 0000000..d5adbcc --- /dev/null +++ b/1.6/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.6/Patches/InteractionDef/Rape.xml b/1.6/Patches/InteractionDef/Rape.xml new file mode 100644 index 0000000..2baae4d --- /dev/null +++ b/1.6/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.6/Patches/InteractionDef/Rape_Reverse.xml b/1.6/Patches/InteractionDef/Rape_Reverse.xml new file mode 100644 index 0000000..d2d275f --- /dev/null +++ b/1.6/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.6/Patches/InteractionDef/Sex.xml b/1.6/Patches/InteractionDef/Sex.xml new file mode 100644 index 0000000..8bb2270 --- /dev/null +++ b/1.6/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.6/Patches/InteractionDef/Sex_Reverse.xml b/1.6/Patches/InteractionDef/Sex_Reverse.xml new file mode 100644 index 0000000..c29927e --- /dev/null +++ b/1.6/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.6/Patches/RJW_Drugs.xml b/1.6/Patches/RJW_Drugs.xml new file mode 100644 index 0000000..d42c21d --- /dev/null +++ b/1.6/Patches/RJW_Drugs.xml @@ -0,0 +1,45 @@ + + + + + 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.6/Patches/RJW_Precepts.xml b/1.6/Patches/RJW_Precepts.xml new file mode 100644 index 0000000..8fe6ba2 --- /dev/null +++ b/1.6/Patches/RJW_Precepts.xml @@ -0,0 +1,27 @@ + + + + + Defs/PreceptDef[defName="Corpses_DontCare"]/requiredMemes + +
  • Necrophile
  • +
    +
    + + + Defs/PreceptDef[defName="Corpses_DontCare"]/associatedMemes + +
  • Necrophile
  • +
    +
    + + + Defs/PreceptDef[defName="Lovin_FreeApproved"] + + + 0.5 + 0.25 + + + +
    \ No newline at end of file diff --git a/1.6/Patches/RJW_StatDefs_Ideo.xml b/1.6/Patches/RJW_StatDefs_Ideo.xml new file mode 100644 index 0000000..121e7f5 --- /dev/null +++ b/1.6/Patches/RJW_StatDefs_Ideo.xml @@ -0,0 +1,12 @@ + + + + + Defs/StatDef[defName="Vulnerability"]/parts + +
  • + 0.5 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Patches/RJW_ThoughtDefs.xml b/1.6/Patches/RJW_ThoughtDefs.xml new file mode 100644 index 0000000..a490756 --- /dev/null +++ b/1.6/Patches/RJW_ThoughtDefs.xml @@ -0,0 +1,114 @@ + + + + + Defs/ThoughtDef[defName="GotBredByAnimal"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="GotAnalBredByAnimal"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="AllowedAnimalToBreed"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="GotLickedByAnimal"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="GotGropedByAnimal"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="AllowedAnimalToGrope"] + + +
  • Bestiality_OnlyVenerated
  • +
  • Bestiality_BondOnly
  • +
  • Bestiality_Honorable
  • +
  • Bestiality_Acceptable
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="StoleSomeLovin"] + + +
  • Rape_Honorable
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="Incestuous"] + + +
  • Incestuos_Free
  • +
  • Incestuos_IncestOnly
  • +
    +
    +
    + + + 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.6/Patches/RJW_Thought_Family_Beast.xml b/1.6/Patches/RJW_Thought_Family_Beast.xml new file mode 100644 index 0000000..15e66cf --- /dev/null +++ b/1.6/Patches/RJW_Thought_Family_Beast.xml @@ -0,0 +1,723 @@ + + + + + + + Defs/ThoughtDef[defName="MySonDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MySonDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MySonDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyDaughterDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyDaughterDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyDaughterDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyBrotherDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyBrotherDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyBrotherDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MySisterDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MySisterDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MySisterDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyGrandchildDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyGrandchildDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyGrandchildDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyNieceDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyNieceDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyNieceDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyNephewDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyNephewDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyNephewDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyHalfSiblingDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyHalfSiblingDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyHalfSiblingDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyAuntDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyAuntDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyAuntDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyUncleDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyUncleDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyUncleDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyGrandparentDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyGrandparentDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyGrandparentDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyCousinDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyCousinDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyCousinDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyKinDied_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyKinDied_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyKinDied_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + + + Defs/ThoughtDef[defName="MySonLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MySonLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MySonLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyDaughterLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyDaughterLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyDaughterLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyBrotherLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyBrotherLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyBrotherLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MySisterLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MySisterLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MySisterLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyGrandchildLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyGrandchildLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyGrandchildLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyNieceLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyNieceLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyNieceLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyNephewLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyNephewLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyNephewLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyHalfSiblingLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyHalfSiblingLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyHalfSiblingLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyAuntLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyAuntLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyAuntLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyUncleLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyUncleLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyUncleLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyGrandparentLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyGrandparentLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyGrandparentLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyCousinLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyCousinLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyCousinLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyKinLost_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyKinLost_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyKinLost_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + + + Defs/ThoughtDef[defName="KilledMyFather_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMyFather_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMyFather_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="KilledMyMother_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMyMother_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMyMother_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="KilledMySon_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMySon_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMySon_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="KilledMyDaughter_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMyDaughter_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMyDaughter_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="KilledMyBrother_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMyBrother_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMyBrother_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="KilledMySister_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMySister_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMySister_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="KilledMyKin_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KilledMyKin_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KilledMyKin_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="SoldMyLovedOne_Beast"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="SoldMyLovedOne_Beast"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="SoldMyLovedOne_Beast"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/About/Manifest.xml b/About/Manifest.xml index c84d508..01912b5 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@  RJWSexperienceIdeology - 1.5.1.4 + 1.6.1.4
  • RimJobWorld >= 5.3.0
  • diff --git a/About/RealAbout.xml b/About/RealAbout.xml index 9fe5451..adc0ccf 100644 --- a/About/RealAbout.xml +++ b/About/RealAbout.xml @@ -6,8 +6,9 @@
  • 1.3
  • 1.4
  • 1.5
  • +
  • 1.6
  • - 1.5.1.4 + 1.6.1.4
  • Ludeon.RimWorld.Ideology diff --git a/LoadFolders.xml b/LoadFolders.xml index 19ece16..b05e0ad 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -13,4 +13,9 @@
  • 1.5
  • Biotech/1.5
  • + +
  • /
  • +
  • 1.6
  • +
  • Biotech/1.6
  • +
    \ No newline at end of file diff --git a/ModCompatibility/Biotech/1.6/Patches/Thoughts_Situational_Children.xml b/ModCompatibility/Biotech/1.6/Patches/Thoughts_Situational_Children.xml new file mode 100644 index 0000000..7f213bc --- /dev/null +++ b/ModCompatibility/Biotech/1.6/Patches/Thoughts_Situational_Children.xml @@ -0,0 +1,23 @@ + + + + + Defs/ThoughtDef[@Name="ThoughtAboutChildBase"]/nullifyingPrecepts + + Defs/ThoughtDef[@Name="ThoughtAboutChildBase"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[@Name="ThoughtAboutChildBase"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index cf3c9c3..97e1d3d 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -1,7 +1,7 @@  Debug - 1.5 + 1.6 1.4 $(TargetGameVersion).$(InternalModVersion) {B4481C38-31B1-422D-B5AA-0059FE7CCA1C} @@ -22,7 +22,7 @@ - $(TargetGameVersion).* + 1.6.4523 * @@ -31,6 +31,13 @@ + + + ..\..\..\..\ModReferences\rjw-5.7\1.6\Assemblies\RJW.dll + false + + + @@ -45,21 +52,11 @@ - - - - ..\..\..\rjw\$(TargetGameVersion)\Assemblies\RJW.dll - False - - - + - + diff --git a/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs b/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs index 01dc427..21541c0 100644 --- a/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs +++ b/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs @@ -1,5 +1,6 @@ using RimWorld; using rjw; +using rjw.Modules.Attraction; using System; using System.Collections.Generic; using System.Linq; @@ -37,7 +38,7 @@ namespace RJWSexperience.Ideology if (duty != null) { IEnumerable pawns = pawn.Map.mapPawns.AllPawnsSpawned.Where(x => x.mindState?.duty?.def == duty.def); - return pawns.RandomElementByWeightWithDefault(x => SexAppraiser.would_fuck(pawn, x), 0.1f); + return pawns.RandomElementByWeightWithDefault(x =>AttractionUtility.Evaluate(pawn,x, AttractionPurpose.ForFucking), 0.1f); } return null; @@ -72,9 +73,9 @@ namespace RJWSexperience.Ideology { ticksLeftThisToil = 5000; }, - tickAction = delegate - { - pawn.GainComfortFromCellIfPossible(); + tickIntervalAction = delegate (int delta) + { + pawn.GainComfortFromCellIfPossible(delta); if (pawn.Position.DistanceTo(Partner.Position) <= 1f) { ReadyForNextToil(); diff --git a/Source/IdeologyAddon/SexTame/BestialityUtility.cs b/Source/IdeologyAddon/SexTame/BestialityUtility.cs index 2714070..08b0dea 100644 --- a/Source/IdeologyAddon/SexTame/BestialityUtility.cs +++ b/Source/IdeologyAddon/SexTame/BestialityUtility.cs @@ -1,5 +1,6 @@ -using Verse; using rjw; +using rjw.Modules.Attraction; +using Verse; namespace RJWSexperience.Ideology { @@ -13,7 +14,7 @@ namespace RJWSexperience.Ideology } if (human.Ideo.HasPrecept(RsiDefOf.Precept.AnimalConnection_Lovin) || human.Ideo.HasPrecept(RsiDefOf.Precept.AnimalConnection_LovinBond)) { - return SexAppraiser.would_fuck_animal(human, animal) > 0; + return AttractionUtility.Evaluate(human, animal, AttractionPurpose.ForFucking) > 0; } else return false; } diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs index 4ec1d1f..4e6d2f9 100644 --- a/Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTameSex.cs @@ -1,7 +1,9 @@ -using System.Collections.Generic; -using Verse; using RimWorld; using rjw; +using rjw.Modules.Attraction; +using System.Collections.Generic; +using System.Security.Cryptography; +using Verse; using Verse.AI; namespace RJWSexperience.Ideology @@ -12,7 +14,7 @@ namespace RJWSexperience.Ideology protected override IEnumerable MakeNewToils() { originalPartner = Partner; - if (SexAppraiser.would_fuck_animal(pawn, Partner) > 0f) + if (AttractionUtility.Evaluate(pawn, Partner, AttractionPurpose.ForFucking) > 0f) { foreach (var baseToil in base.MakeNewToils()) { diff --git a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs index 5b56072..653c1fe 100644 --- a/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs +++ b/Source/IdeologyAddon/SexTame/JobDriver_LewdTrainSex.cs @@ -1,7 +1,8 @@ -using System.Collections.Generic; -using Verse; using RimWorld; using rjw; +using rjw.Modules.Attraction; +using System.Collections.Generic; +using Verse; using Verse.AI; namespace RJWSexperience.Ideology @@ -12,7 +13,7 @@ namespace RJWSexperience.Ideology protected override IEnumerable MakeNewToils() { originalPartner = Partner; - if (SexAppraiser.would_fuck_animal(pawn, Partner) > 0f) + if (AttractionUtility.Evaluate(pawn, Partner, AttractionPurpose.ForFucking) > 0f) { foreach (var baseToil in base.MakeNewToils()) { diff --git a/Source/IdeologyAddon/UsageRules/DecreasedVaginalPreferences.cs b/Source/IdeologyAddon/UsageRules/DecreasedVaginalPreferences.cs index 0846113..d00bc0c 100644 --- a/Source/IdeologyAddon/UsageRules/DecreasedVaginalPreferences.cs +++ b/Source/IdeologyAddon/UsageRules/DecreasedVaginalPreferences.cs @@ -39,7 +39,7 @@ namespace RJWSexperience.Ideology bool hasValidBreedingPreceptsForFucker = fucker.Ideo != null && validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHumanLike(fucker)) { RsiLog.Message($"DecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); } diff --git a/Source/IdeologyAddon/UsageRules/FocusedVaginalPreferences.cs b/Source/IdeologyAddon/UsageRules/FocusedVaginalPreferences.cs index d96cd2f..b3a6bf1 100644 --- a/Source/IdeologyAddon/UsageRules/FocusedVaginalPreferences.cs +++ b/Source/IdeologyAddon/UsageRules/FocusedVaginalPreferences.cs @@ -40,7 +40,7 @@ namespace RJWSexperience.Ideology bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHumanLike(fucker)) { RsiLog.Message($"FocusedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); } diff --git a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPreferences.cs b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPreferences.cs index 2f0cf18..c80831a 100644 --- a/Source/IdeologyAddon/UsageRules/IncreasedVaginalPreferences.cs +++ b/Source/IdeologyAddon/UsageRules/IncreasedVaginalPreferences.cs @@ -33,7 +33,7 @@ namespace RJWSexperience.Ideology bool hasValidBreedingPreceptForFucker = fucker.Ideo != null && validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); - if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) + if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHumanLike(fucker)) { RsiLog.Message($"IncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); } diff --git a/Source/IdeologyAddon/packages.lock.json b/Source/IdeologyAddon/packages.lock.json index 892f985..6cb395f 100644 --- a/Source/IdeologyAddon/packages.lock.json +++ b/Source/IdeologyAddon/packages.lock.json @@ -4,29 +4,15 @@ ".NETFramework,Version=v4.8": { "Krafs.Rimworld.Ref": { "type": "Direct", - "requested": "[1.5.*, )", - "resolved": "1.5.4297", - "contentHash": "uhY1DK8YQB55IamhyOus6A//S47F93JiOe5ORBv+KnN9HNOanAQY8TaBMKpJKhdZj2GHYny/7rZixjv4DAKYMQ==" + "requested": "[1.6.4523, )", + "resolved": "1.6.4523", + "contentHash": "HctRgCN04CKGbfk3eBtpLs5gSku/628e76y90PDhV7+fgb7KKqscwOeKGJaLgGvwkU5a9cRWp8XGjBhXcs+uuQ==" }, "Lib.Harmony": { "type": "Direct", "requested": "[*, )", - "resolved": "2.3.5", - "contentHash": "LgVL1EhCYtY39YNp/h1PNraKdQn9Vwyb70bYIVLxz60zRgOTi11YohOjJwk4zXsIAoJLG57lO4aP6WXs2fv23A==" - }, - "Microsoft.NETFramework.ReferenceAssemblies": { - "type": "Direct", - "requested": "[1.0.3, )", - "resolved": "1.0.3", - "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", - "dependencies": { - "Microsoft.NETFramework.ReferenceAssemblies.net48": "1.0.3" - } - }, - "Microsoft.NETFramework.ReferenceAssemblies.net48": { - "type": "Transitive", - "resolved": "1.0.3", - "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + "resolved": "2.3.6", + "contentHash": "HqXPz33Z+R8ZDCLS5pJZthg33AMdF1bQXUbz2V7Neb9E+sMQOf4S1wquhM4pLIZFX7BZcOQubclbVreiM1+qmw==" } } } From 0266d93a84d3fa09c96ef3feb0d26d988e0264d6 Mon Sep 17 00:00:00 2001 From: ElToro Date: Fri, 25 Jul 2025 14:04:25 +0400 Subject: [PATCH 52/64] AttractionPreference for Bestiality and Incest ideo + fix for DrugOrgy --- 1.6/Defs/PreceptDefs/Precepts_Bestiality.xml | 101 ------------------ 1.6/Defs/PreceptDefs/Precepts_Incest.xml | 67 ------------ 1.6/Defs/PreceptDefs/Precepts_Sex.xml | 47 -------- ...estiality_Ideology_AttractionPreference.cs | 88 +++++++++++++++ .../Incest_Ideology_AttractionPreference.cs | 96 +++++++++++++++++ .../IdeologyAddon/Patches/RJW_Patch_Ideo.cs | 62 ----------- Source/IdeologyAddon/Precepts/DefExtension.cs | 1 - .../Rituals/JobGiver_DrugOrgy.cs | 81 +++++++------- Source/IdeologyAddon/RsiDefOf.cs | 35 +++++- 9 files changed, 257 insertions(+), 321 deletions(-) create mode 100644 Source/IdeologyAddon/AttractionPreferences/Bestiality_Ideology_AttractionPreference.cs create mode 100644 Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs diff --git a/1.6/Defs/PreceptDefs/Precepts_Bestiality.xml b/1.6/Defs/PreceptDefs/Precepts_Bestiality.xml index 42953d4..1aea0b9 100644 --- a/1.6/Defs/PreceptDefs/Precepts_Bestiality.xml +++ b/1.6/Defs/PreceptDefs/Precepts_Bestiality.xml @@ -123,18 +123,6 @@ -
  • - -
  • - - - true - - - 0.05 -
  • - -
    @@ -172,18 +160,6 @@ -
  • - -
  • - - - true - - - 0.1 -
  • - -
  • 5.0
  • @@ -224,18 +200,6 @@ -
  • - -
  • - - - true - - - 0.5 -
  • - -
    @@ -294,29 +258,6 @@ -
  • - -
  • - - - true - - - 2.0 -
  • -
  • - - - true - - - false - - - 0.05 -
  • - -
  • 0.65
  • @@ -363,36 +304,6 @@ -
  • - -
  • - - - true - - - -
  • Bond
  • - - - - 2.0 - -
  • - - - true - - - -
  • Bond
  • - - - - 0.1 - - -
  • 0.5
  • @@ -438,18 +349,6 @@ -
  • - -
  • - - - true - - - 2.0 -
  • - -
  • 0.5
  • diff --git a/1.6/Defs/PreceptDefs/Precepts_Incest.xml b/1.6/Defs/PreceptDefs/Precepts_Incest.xml index e5e896a..05f768e 100644 --- a/1.6/Defs/PreceptDefs/Precepts_Incest.xml +++ b/1.6/Defs/PreceptDefs/Precepts_Incest.xml @@ -146,23 +146,6 @@ -
  • - -
  • - - - -
  • CloseRelative
  • - - -
  • Spouse
  • -
    - - - 0.5 - - -
  • FarRelative
  • @@ -206,24 +189,6 @@ -
  • - -
  • - - - -
  • CloseRelative
  • -
  • FarRelative
  • - - -
  • Spouse
  • -
    - - - 0.5 - - -
    @@ -251,24 +216,6 @@ -
  • - -
  • - - - -
  • CloseRelative
  • -
  • FarRelative
  • - - -
  • Spouse
  • -
    - - - 0.1 - - -
  • @@ -303,20 +250,6 @@
  • -
  • - -
  • - - - -
  • NotRelated
  • - - - - 0.1 - - -
  • CloseRelative
  • diff --git a/1.6/Defs/PreceptDefs/Precepts_Sex.xml b/1.6/Defs/PreceptDefs/Precepts_Sex.xml index 2a5da80..65d248c 100644 --- a/1.6/Defs/PreceptDefs/Precepts_Sex.xml +++ b/1.6/Defs/PreceptDefs/Precepts_Sex.xml @@ -102,17 +102,6 @@
  • - -
  • - Vaginal - 10 - -
  • - 0.1 -
  • - - -
    @@ -174,17 +163,6 @@
  • - -
  • - Anal - 10 - -
  • - 0.1 -
  • - - -
    @@ -246,17 +224,6 @@
  • - -
  • - Mouth - 10 - -
  • - 0.1 -
  • - - -
    @@ -325,20 +292,6 @@
  • - -
  • - Vaginal - 0.01 -
  • -
  • - Anal - 0.01 -
  • -
  • - Mouth - 0.01 -
  • -
    diff --git a/Source/IdeologyAddon/AttractionPreferences/Bestiality_Ideology_AttractionPreference.cs b/Source/IdeologyAddon/AttractionPreferences/Bestiality_Ideology_AttractionPreference.cs new file mode 100644 index 0000000..fd0933e --- /dev/null +++ b/Source/IdeologyAddon/AttractionPreferences/Bestiality_Ideology_AttractionPreference.cs @@ -0,0 +1,88 @@ +using RimWorld; +using rjw; +using rjw.Modules.Attraction; +using rjw.Modules.Attraction.StandardPreferences; +using UnityEngine; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class Bestiality_Ideology : AttractionPreference + { + [StandardPreference] + public static void ApplyTo(ref AttractionRequest request) + { + Pawn pawn = request.Pawn; + + if (!xxx.is_human(pawn) || !xxx.is_animal(request.Target)) + { + return; + } + + foreach (var precept in RsiDefOf.AllBestialityPrecepts) + { + if (pawn.Ideo?.HasPrecept(precept) == true) + { + request.SetPreference(new Bestiality_Ideology()); + return; + } + } + } + + private Bestiality_Ideology() : base( + AttractionMode.Social, + nameof(Bestiality_Ideology), + FactorOperation.Multiply) + { + Priority = 150; + } + + protected override float GetOperand(ref AttractionRequest request, float factor) + { + Pawn pawn = request.Pawn; + Pawn partner = request.Target; + + if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_OnlyVenerated)) + { + if (pawn.Ideo.IsVeneratedAnimal(partner)) + { + return 2f; + } + else + { + return 0.05f; + } + + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_BondOnly)) + { + if (request.Relations.Contains(PawnRelationDefOf.Bond)) + { + return 2f; + } + else + { + return 0.1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Honorable)) + { + return 2f; + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Disapproved)) + { + return 0.5f; + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Horrible)) + { + return 0.1f; + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Abhorrent)) + { + return 0.05f; + } + + return 1f; + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs b/Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs new file mode 100644 index 0000000..e4cafe5 --- /dev/null +++ b/Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs @@ -0,0 +1,96 @@ +using RimWorld; +using rjw; +using rjw.Modules.Attraction; +using rjw.Modules.Attraction.StandardPreferences; +using UnityEngine; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class Incest_Ideology : AttractionPreference + { + [StandardPreference] + public static void ApplyTo(ref AttractionRequest request) + { + Pawn pawn = request.Pawn; + + if (!xxx.is_human(pawn) || !xxx.is_human(request.Target)) + { + return; + } + + foreach (var precept in RsiDefOf.AllIncestPrecepts) + { + if (pawn.Ideo?.HasPrecept(precept) == true) + { + request.SetPreference(new Incest_Ideology()); + return; + } + } + } + + private Incest_Ideology() : base( + AttractionMode.Social, + nameof(Incest_Ideology), + FactorOperation.Multiply) + { + Priority = 150; + } + + protected override float GetOperand(ref AttractionRequest request, float factor) + { + Pawn pawn = request.Pawn; + Pawn partner = request.Target; + + BloodRelationDegree relation = RelationHelpers.GetBloodRelationDegree(pawn, partner); + bool isSpouse = request.Relations.Contains(PawnRelationDefOf.Spouse); + + if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_IncestOnly)) + { + if (relation == BloodRelationDegree.NotRelated) + { + return 0.1f; + } + else + { + return 1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Disapproved_CloseOnly)) + { + if (relation == BloodRelationDegree.CloseRelative && !isSpouse) + { + return 0.5f; + } + else + { + return 1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Disapproved)) + { + if ((relation == BloodRelationDegree.CloseRelative || relation == BloodRelationDegree.FarRelative) && !isSpouse) + { + return 0.5f; + } + else + { + return 1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Forbidden)) + { + if ((relation == BloodRelationDegree.CloseRelative || relation == BloodRelationDegree.FarRelative) && !isSpouse) + { + return 0.1f; + } + else + { + return 1f; + } + } + + return 1f; + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs index 48c2019..82f48bd 100644 --- a/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs +++ b/Source/IdeologyAddon/Patches/RJW_Patch_Ideo.cs @@ -1,10 +1,7 @@ using HarmonyLib; using RimWorld; using rjw; -using rjw.Modules.Interactions; -using rjw.Modules.Interactions.Preferences; using RJWSexperience.Ideology.HistoryEvents; -using RJWSexperience.Ideology.Precepts; using System; using System.Collections.Generic; using System.Reflection.Emit; @@ -137,65 +134,6 @@ namespace RJWSexperience.Ideology.Patches } } - /// - /// Set prefer sextype using precepts - /// - [HarmonyPatch(typeof(SexInteractionScorer), nameof(SexInteractionScorer.GetPawnPreferences))] - public static class RJW_Patch_SexInteractionScorer - { - public static void Postfix(bool isInitiator, SexProps props, List __result) - { - Pawn pawn = isInitiator ? props.initiator : props.recipient; - Pawn partner = isInitiator ? props.recipient : props.initiator; - - GetPawnPreferences(pawn, partner, __result); - } - - private static void GetPawnPreferences(Pawn pawn, Pawn partner, List preferences) - { - List precepts = pawn.Ideo?.PreceptsListForReading; - if (precepts == null) - { - return; - } - - for (int i = 0; i < precepts.Count; i++) - { - List preceptPrefs = precepts[i].def.GetModExtension()?.sexPreferences; - if (preceptPrefs == null) - { - continue; - } - - for (int j = 0; j < preceptPrefs.Count; j++) - { - preferences.Add(preceptPrefs[j].ToSexPreference()); - } - } - - preferences.AddRange(DecreasedVaginalPreferences.GetPreferences(pawn, partner)); - preferences.AddRange(FocusedVaginalPreferences.GetPreferences(pawn, partner)); - preferences.AddRange(IncreasedVaginalPreferences.GetPreferences(pawn, partner)); - } - } - - [HarmonyPatch(typeof(SexAppraiser), nameof(SexAppraiser.would_fuck), new Type[] { typeof(Pawn), typeof(Pawn), typeof(bool), typeof(bool), typeof(bool) })] - public static class RJW_Patch_would_fuck - { - public static void Postfix(Pawn fucker, Pawn fucked, ref float __result) - { - if (!xxx.is_human(fucker)) - return; - - Ideo ideo = fucker.Ideo; - if (ideo == null) - return; - - for(int i = 0; i < ideo.PreceptsListForReading.Count; i++) - ideo.PreceptsListForReading[i].def.GetModExtension()?.Apply(fucker, fucked, ref __result); - } - } - [HarmonyPatch(typeof(PawnDesignations_Breedee), nameof(PawnDesignations_Breedee.UpdateCanDesignateBreeding))] public static class RJW_Patch_UpdateCanDesignateBreeding { diff --git a/Source/IdeologyAddon/Precepts/DefExtension.cs b/Source/IdeologyAddon/Precepts/DefExtension.cs index 2a64236..0568445 100644 --- a/Source/IdeologyAddon/Precepts/DefExtension.cs +++ b/Source/IdeologyAddon/Precepts/DefExtension.cs @@ -13,7 +13,6 @@ namespace RJWSexperience.Ideology.Precepts public float necroMtbMult = 1f; public float rapeCpMtbMult = 1f; public List requiredAllMemes; - public List sexPreferences; public bool AppendTip(StringBuilder tipBuilder) { diff --git a/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs b/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs index 21541c0..4df9a3b 100644 --- a/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs +++ b/Source/IdeologyAddon/Rituals/JobGiver_DrugOrgy.cs @@ -3,6 +3,7 @@ using rjw; using rjw.Modules.Attraction; using System; using System.Collections.Generic; +using System.Drawing.Drawing2D; using System.Linq; using Verse; using Verse.AI; @@ -28,7 +29,7 @@ namespace RJWSexperience.Ideology Pawn target = FindPartner(pawn, duty); if (target == null || !pawn.CanReserveAndReach(target, PathEndMode.ClosestTouch, Danger.None, 1)) - return JobMaker.MakeJob(RsiDefOf.Job.DrugMasturbate); + return JobMaker.MakeJob(RsiDefOf.Job.DrugMasturbate, pawn); return JobMaker.MakeJob(RsiDefOf.Job.DrugSex, target); } @@ -210,51 +211,53 @@ namespace RJWSexperience.Ideology /// copied from rjw /// public class JobDriver_DrugMasturabate : JobDriver_Masturbate - { - protected override IEnumerable MakeNewToils() + { + protected override IEnumerable MakeNewToils() { setup_ticks(); - this.FailOn(() => pawn.health.Downed); - this.FailOn(() => pawn.IsBurning()); - this.FailOn(() => pawn.IsFighting()); - this.FailOn(() => pawn.Drafted); + this.FailOn(() => pawn.health.Downed); + this.FailOn(() => pawn.IsBurning()); + this.FailOn(() => pawn.IsFighting()); + this.FailOn(() => pawn.Drafted); - Toil SexToil = Toils_General.Wait(duration); - SexToil.handlingFacing = true; - SexToil.initAction = delegate - { - Start(); - }; - SexToil.tickAction = delegate - { - SexTick(pawn, null, true); - SexUtility.reduce_rest(pawn, 1); - if (ticks_left <= 0) - ReadyForNextToil(); - }; - SexToil.AddFinishAction(delegate - { - End(); - }); - yield return SexToil; + Toil SexToil = Toils_General.Wait(duration); + SexToil.handlingFacing = true; + SexToil.initAction = delegate + { + Start(); + }; + SexToil.tickAction = delegate + { + if (pawn.IsHashIntervalTick(ticks_between_hearts)) + ThrowMetaIconF(pawn.Position, pawn.Map, FleckDefOf.Heart); + SexTick(pawn, null); + SexUtility.reduce_rest(pawn, 1); + if (ticks_left <= 0) + ReadyForNextToil(); + }; + SexToil.AddFinishAction(delegate + { + End(); + }); + yield return SexToil; - yield return new Toil - { - initAction = delegate - { - SexUtility.Aftersex(Sexprops); - if (!SexUtility.ConsiderCleaning(pawn)) return; + yield return new Toil + { + initAction = delegate + { + SexUtility.Aftersex(Sexprops); + if (!SexUtility.ConsiderCleaning(pawn)) return; - LocalTargetInfo own_cum = pawn.PositionHeld.GetFirstThing(pawn.Map); + LocalTargetInfo own_cum = pawn.PositionHeld.GetFirstThing(pawn.Map); - Job clean = JobMaker.MakeJob(JobDefOf.Clean); - clean.AddQueuedTarget(TargetIndex.A, own_cum); + Job clean = JobMaker.MakeJob(JobDefOf.Clean); + clean.AddQueuedTarget(TargetIndex.A, own_cum); - pawn.jobs.jobQueue.EnqueueFirst(clean); - }, - defaultCompleteMode = ToilCompleteMode.Instant - }; - } + pawn.jobs.jobQueue.EnqueueFirst(clean); + }, + defaultCompleteMode = ToilCompleteMode.Instant + }; + } } } diff --git a/Source/IdeologyAddon/RsiDefOf.cs b/Source/IdeologyAddon/RsiDefOf.cs index 92841ce..b9e0404 100644 --- a/Source/IdeologyAddon/RsiDefOf.cs +++ b/Source/IdeologyAddon/RsiDefOf.cs @@ -1,4 +1,5 @@ using RimWorld; +using System.Collections.Generic; using Verse; namespace RJWSexperience.Ideology @@ -39,8 +40,16 @@ namespace RJWSexperience.Ideology public static class Precept { public static readonly PreceptDef Incestuos_IncestOnly; - public static readonly PreceptDef Bestiality_OnlyVenerated; - public static readonly PreceptDef BabyFaction_AlwaysFather; + public static readonly PreceptDef Incestuos_Forbidden; + public static readonly PreceptDef Incestuos_Disapproved; + public static readonly PreceptDef Incestuos_Disapproved_CloseOnly; + public static readonly PreceptDef Bestiality_OnlyVenerated; + public static readonly PreceptDef Bestiality_Abhorrent; + public static readonly PreceptDef Bestiality_Horrible; + public static readonly PreceptDef Bestiality_Disapproved; + public static readonly PreceptDef Bestiality_BondOnly; + public static readonly PreceptDef Bestiality_Honorable; + public static readonly PreceptDef BabyFaction_AlwaysFather; public static readonly PreceptDef BabyFaction_AlwaysColony; public static readonly PreceptDef Submissive_Male; public static readonly PreceptDef Submissive_Female; @@ -59,9 +68,27 @@ namespace RJWSexperience.Ideology public static readonly PreceptDef BestialBreeding_Horrible; public static readonly PreceptDef BestialBreeding_Required; public static readonly PreceptDef BestialBreeding_Encouraged; - } + } - [DefOf] + public static readonly List AllBestialityPrecepts = new List + { + Precept.Bestiality_OnlyVenerated, + Precept.Bestiality_Abhorrent, + Precept.Bestiality_Horrible, + Precept.Bestiality_Disapproved, + Precept.Bestiality_BondOnly, + Precept.Bestiality_Honorable + }; + + public static readonly List AllIncestPrecepts = new List + { + Precept.Incestuos_IncestOnly, + Precept.Incestuos_Forbidden, + Precept.Incestuos_Disapproved, + Precept.Incestuos_Disapproved_CloseOnly + }; + + [DefOf] public static class HistoryEvent { public static readonly HistoryEventDef RSI_SexWithAnimal; From ca2bda44f2757b5a5d09f0af2a81886a2d32b3e8 Mon Sep 17 00:00:00 2001 From: ElToro Date: Fri, 25 Jul 2025 22:03:30 +0300 Subject: [PATCH 53/64] AttractionPreferences fix --- ...BestialityIdeology_AttractionPreference.cs | 88 +++++++++++++++++ ...IdeologyBestiality_AttractionPreference.cs | 88 +++++++++++++++++ .../IdeologyIncest_AttractionPreference.cs | 96 +++++++++++++++++++ .../IncestAversion_Override.cs | 46 +++++++++ .../IncestIdeology_AttractionPreference.cs | 96 +++++++++++++++++++ .../Incest_Ideology_AttractionPreference.cs | 2 +- Source/IdeologyAddon/IdeologyAddon.csproj | 3 +- Source/IdeologyAddon/RsiDefOf.cs | 2 + 8 files changed, 418 insertions(+), 3 deletions(-) create mode 100644 Source/IdeologyAddon/AttractionPreferences/BestialityIdeology_AttractionPreference.cs create mode 100644 Source/IdeologyAddon/AttractionPreferences/IdeologyBestiality_AttractionPreference.cs create mode 100644 Source/IdeologyAddon/AttractionPreferences/IdeologyIncest_AttractionPreference.cs create mode 100644 Source/IdeologyAddon/AttractionPreferences/IncestAversion_Override.cs create mode 100644 Source/IdeologyAddon/AttractionPreferences/IncestIdeology_AttractionPreference.cs diff --git a/Source/IdeologyAddon/AttractionPreferences/BestialityIdeology_AttractionPreference.cs b/Source/IdeologyAddon/AttractionPreferences/BestialityIdeology_AttractionPreference.cs new file mode 100644 index 0000000..d3678e1 --- /dev/null +++ b/Source/IdeologyAddon/AttractionPreferences/BestialityIdeology_AttractionPreference.cs @@ -0,0 +1,88 @@ +using RimWorld; +using rjw; +using rjw.Modules.Attraction; +using rjw.Modules.Attraction.StandardPreferences; +using UnityEngine; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class BestialityIdeology : AttractionPreference + { + [StandardPreference] + public static void ApplyTo(ref AttractionRequest request) + { + Pawn pawn = request.Pawn; + + if (!xxx.is_human(pawn) || !xxx.is_animal(request.Target)) + { + return; + } + + foreach (var precept in RsiDefOf.AllBestialityPrecepts) + { + if (pawn.Ideo?.HasPrecept(precept) == true) + { + request.SetPreference(new BestialityIdeology()); + return; + } + } + } + + private BestialityIdeology() : base( + AttractionMode.Social, + nameof(BestialityIdeology), + FactorOperation.Multiply) + { + Priority = 200; + } + + protected override float GetOperand(ref AttractionRequest request, float factor) + { + Pawn pawn = request.Pawn; + Pawn partner = request.Target; + + if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_OnlyVenerated)) + { + if (pawn.Ideo.IsVeneratedAnimal(partner)) + { + return 2f; + } + else + { + return 0.05f; + } + + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_BondOnly)) + { + if (request.Relations.Contains(PawnRelationDefOf.Bond)) + { + return 2f; + } + else + { + return 0.1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Honorable)) + { + return 2f; + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Disapproved)) + { + return 0.5f; + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Horrible)) + { + return 0.1f; + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Abhorrent)) + { + return 0.05f; + } + + return 1f; + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/AttractionPreferences/IdeologyBestiality_AttractionPreference.cs b/Source/IdeologyAddon/AttractionPreferences/IdeologyBestiality_AttractionPreference.cs new file mode 100644 index 0000000..7409074 --- /dev/null +++ b/Source/IdeologyAddon/AttractionPreferences/IdeologyBestiality_AttractionPreference.cs @@ -0,0 +1,88 @@ +using RimWorld; +using rjw; +using rjw.Modules.Attraction; +using rjw.Modules.Attraction.StandardPreferences; +using UnityEngine; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class IdeologyBestiality : AttractionPreference + { + [StandardPreference] + public static void ApplyTo(ref AttractionRequest request) + { + Pawn pawn = request.Pawn; + + if (!xxx.is_human(pawn) || !xxx.is_animal(request.Target)) + { + return; + } + + foreach (var precept in RsiDefOf.AllBestialityPrecepts) + { + if (pawn.Ideo?.HasPrecept(precept) == true) + { + request.SetPreference(new IdeologyBestiality()); + return; + } + } + } + + private IdeologyBestiality() : base( + AttractionMode.Social, + nameof(IdeologyBestiality), + FactorOperation.Multiply) + { + Priority = 150; + } + + protected override float GetOperand(ref AttractionRequest request, float factor) + { + Pawn pawn = request.Pawn; + Pawn partner = request.Target; + + if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_OnlyVenerated)) + { + if (pawn.Ideo.IsVeneratedAnimal(partner)) + { + return 2f; + } + else + { + return 0.05f; + } + + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_BondOnly)) + { + if (request.Relations.Contains(PawnRelationDefOf.Bond)) + { + return 2f; + } + else + { + return 0.1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Honorable)) + { + return 2f; + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Disapproved)) + { + return 0.5f; + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Horrible)) + { + return 0.1f; + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Abhorrent)) + { + return 0.05f; + } + + return 1f; + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/AttractionPreferences/IdeologyIncest_AttractionPreference.cs b/Source/IdeologyAddon/AttractionPreferences/IdeologyIncest_AttractionPreference.cs new file mode 100644 index 0000000..41e844b --- /dev/null +++ b/Source/IdeologyAddon/AttractionPreferences/IdeologyIncest_AttractionPreference.cs @@ -0,0 +1,96 @@ +using RimWorld; +using rjw; +using rjw.Modules.Attraction; +using rjw.Modules.Attraction.StandardPreferences; +using UnityEngine; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class IdeologyIncest : AttractionPreference + { + [StandardPreference] + public static void ApplyTo(ref AttractionRequest request) + { + Pawn pawn = request.Pawn; + + if (!xxx.is_human(pawn) || !xxx.is_human(request.Target)) + { + return; + } + + foreach (var precept in RsiDefOf.AllIncestPrecepts) + { + if (pawn.Ideo?.HasPrecept(precept) == true) + { + request.SetPreference(new IdeologyIncest()); + return; + } + } + } + + private IdeologyIncest() : base( + AttractionMode.Romantic, + nameof(IdeologyIncest), + FactorOperation.Multiply) + { + Priority = 150; + } + + protected override float GetOperand(ref AttractionRequest request, float factor) + { + Pawn pawn = request.Pawn; + Pawn partner = request.Target; + + BloodRelationDegree relation = RelationHelpers.GetBloodRelationDegree(pawn, partner); + bool isSpouse = request.Relations.Contains(PawnRelationDefOf.Spouse); + + if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_IncestOnly)) + { + if (relation == BloodRelationDegree.NotRelated) + { + return 0.1f; + } + else + { + return 1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Disapproved_CloseOnly)) + { + if (relation == BloodRelationDegree.CloseRelative && !isSpouse) + { + return 0.5f; + } + else + { + return 1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Disapproved)) + { + if ((relation == BloodRelationDegree.CloseRelative || relation == BloodRelationDegree.FarRelative) && !isSpouse) + { + return 0.5f; + } + else + { + return 1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Forbidden)) + { + if ((relation == BloodRelationDegree.CloseRelative || relation == BloodRelationDegree.FarRelative) && !isSpouse) + { + return 0.1f; + } + else + { + return 1f; + } + } + + return 1f; + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/AttractionPreferences/IncestAversion_Override.cs b/Source/IdeologyAddon/AttractionPreferences/IncestAversion_Override.cs new file mode 100644 index 0000000..dc66f67 --- /dev/null +++ b/Source/IdeologyAddon/AttractionPreferences/IncestAversion_Override.cs @@ -0,0 +1,46 @@ +using RJWSexperience.Ideology; +using Verse; + +namespace rjw.Modules.Attraction.StandardPreferences +{ + /// + /// Handles the observer's non-romantic relations, which are used to suppress + /// incestuous encounters. + /// + public sealed class IncestAversionOverride : AttractionPreference + { + [StandardPreference] + public static void ApplyTo(ref AttractionRequest request) + { + Pawn pawn = request.Pawn; + + if (!xxx.is_human(pawn) || !xxx.is_human(request.Target)) + { + return; + } + + foreach (var precept in RsiDefOf.AllIncestPrecepts) + { + if (pawn.Ideo?.HasPrecept(precept) == true) + { + request.SetPreference(new IncestAversionOverride()); + return; + } + + } + } + + private IncestAversionOverride() : base( + AttractionMode.Social, + nameof(R_IncestAversion), + FactorOperation.Multiply) + { + Priority = 250; + } + + protected override float GetOperand(ref AttractionRequest request, float factor) + { + return 1f; + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/AttractionPreferences/IncestIdeology_AttractionPreference.cs b/Source/IdeologyAddon/AttractionPreferences/IncestIdeology_AttractionPreference.cs new file mode 100644 index 0000000..e32979d --- /dev/null +++ b/Source/IdeologyAddon/AttractionPreferences/IncestIdeology_AttractionPreference.cs @@ -0,0 +1,96 @@ +using RimWorld; +using rjw; +using rjw.Modules.Attraction; +using rjw.Modules.Attraction.StandardPreferences; +using UnityEngine; +using Verse; + +namespace RJWSexperience.Ideology +{ + public class IncestIdeology : AttractionPreference + { + [StandardPreference] + public static void ApplyTo(ref AttractionRequest request) + { + Pawn pawn = request.Pawn; + + if (!xxx.is_human(pawn) || !xxx.is_human(request.Target)) + { + return; + } + + foreach (var precept in RsiDefOf.AllIncestPrecepts) + { + if (pawn.Ideo?.HasPrecept(precept) == true) + { + request.SetPreference(new IncestIdeology()); + return; + } + } + } + + private IncestIdeology() : base( + AttractionMode.Social, + nameof(IncestIdeology), + FactorOperation.Multiply) + { + Priority = 200; + } + + protected override float GetOperand(ref AttractionRequest request, float factor) + { + Pawn pawn = request.Pawn; + Pawn partner = request.Target; + + BloodRelationDegree relation = RelationHelpers.GetBloodRelationDegree(pawn, partner); + bool isSpouse = request.Relations.Contains(PawnRelationDefOf.Spouse); + + if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_IncestOnly)) + { + if (relation == BloodRelationDegree.NotRelated) + { + return 0.1f; + } + else + { + return 1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Disapproved_CloseOnly)) + { + if (relation == BloodRelationDegree.CloseRelative && !isSpouse) + { + return 0.5f; + } + else + { + return 1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Disapproved)) + { + if ((relation == BloodRelationDegree.CloseRelative || relation == BloodRelationDegree.FarRelative) && !isSpouse) + { + return 0.5f; + } + else + { + return 1f; + } + } + else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Forbidden)) + { + if ((relation == BloodRelationDegree.CloseRelative || relation == BloodRelationDegree.FarRelative) && !isSpouse) + { + return 0.1f; + } + else + { + return 1f; + } + } + + return 1f; + } + } +} \ No newline at end of file diff --git a/Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs b/Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs index e4cafe5..4686961 100644 --- a/Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs +++ b/Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs @@ -30,7 +30,7 @@ namespace RJWSexperience.Ideology } private Incest_Ideology() : base( - AttractionMode.Social, + AttractionMode.Romantic, nameof(Incest_Ideology), FactorOperation.Multiply) { diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index 97e1d3d..2efb1f3 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -33,7 +33,7 @@ - ..\..\..\..\ModReferences\rjw-5.7\1.6\Assemblies\RJW.dll + ..\..\..\rjw\1.6\Assemblies\RJW.dll false @@ -61,7 +61,6 @@ -
    diff --git a/Source/IdeologyAddon/RsiDefOf.cs b/Source/IdeologyAddon/RsiDefOf.cs index b9e0404..cde9ba4 100644 --- a/Source/IdeologyAddon/RsiDefOf.cs +++ b/Source/IdeologyAddon/RsiDefOf.cs @@ -43,6 +43,7 @@ namespace RJWSexperience.Ideology public static readonly PreceptDef Incestuos_Forbidden; public static readonly PreceptDef Incestuos_Disapproved; public static readonly PreceptDef Incestuos_Disapproved_CloseOnly; + public static readonly PreceptDef Incestuos_Free; public static readonly PreceptDef Bestiality_OnlyVenerated; public static readonly PreceptDef Bestiality_Abhorrent; public static readonly PreceptDef Bestiality_Horrible; @@ -85,6 +86,7 @@ namespace RJWSexperience.Ideology Precept.Incestuos_IncestOnly, Precept.Incestuos_Forbidden, Precept.Incestuos_Disapproved, + Precept.Incestuos_Free, Precept.Incestuos_Disapproved_CloseOnly }; From e78b341cfbeb46b6bff7db71ae619f6f15d2c55e Mon Sep 17 00:00:00 2001 From: ElToro Date: Thu, 31 Jul 2025 05:25:50 +0300 Subject: [PATCH 54/64] Removed duplicates --- ...estiality_Ideology_AttractionPreference.cs | 88 ----------------- ...IdeologyBestiality_AttractionPreference.cs | 88 ----------------- .../IdeologyIncest_AttractionPreference.cs | 96 ------------------- .../Incest_Ideology_AttractionPreference.cs | 96 ------------------- 4 files changed, 368 deletions(-) delete mode 100644 Source/IdeologyAddon/AttractionPreferences/Bestiality_Ideology_AttractionPreference.cs delete mode 100644 Source/IdeologyAddon/AttractionPreferences/IdeologyBestiality_AttractionPreference.cs delete mode 100644 Source/IdeologyAddon/AttractionPreferences/IdeologyIncest_AttractionPreference.cs delete mode 100644 Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs diff --git a/Source/IdeologyAddon/AttractionPreferences/Bestiality_Ideology_AttractionPreference.cs b/Source/IdeologyAddon/AttractionPreferences/Bestiality_Ideology_AttractionPreference.cs deleted file mode 100644 index fd0933e..0000000 --- a/Source/IdeologyAddon/AttractionPreferences/Bestiality_Ideology_AttractionPreference.cs +++ /dev/null @@ -1,88 +0,0 @@ -using RimWorld; -using rjw; -using rjw.Modules.Attraction; -using rjw.Modules.Attraction.StandardPreferences; -using UnityEngine; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class Bestiality_Ideology : AttractionPreference - { - [StandardPreference] - public static void ApplyTo(ref AttractionRequest request) - { - Pawn pawn = request.Pawn; - - if (!xxx.is_human(pawn) || !xxx.is_animal(request.Target)) - { - return; - } - - foreach (var precept in RsiDefOf.AllBestialityPrecepts) - { - if (pawn.Ideo?.HasPrecept(precept) == true) - { - request.SetPreference(new Bestiality_Ideology()); - return; - } - } - } - - private Bestiality_Ideology() : base( - AttractionMode.Social, - nameof(Bestiality_Ideology), - FactorOperation.Multiply) - { - Priority = 150; - } - - protected override float GetOperand(ref AttractionRequest request, float factor) - { - Pawn pawn = request.Pawn; - Pawn partner = request.Target; - - if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_OnlyVenerated)) - { - if (pawn.Ideo.IsVeneratedAnimal(partner)) - { - return 2f; - } - else - { - return 0.05f; - } - - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_BondOnly)) - { - if (request.Relations.Contains(PawnRelationDefOf.Bond)) - { - return 2f; - } - else - { - return 0.1f; - } - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Honorable)) - { - return 2f; - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Disapproved)) - { - return 0.5f; - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Horrible)) - { - return 0.1f; - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Abhorrent)) - { - return 0.05f; - } - - return 1f; - } - } -} \ No newline at end of file diff --git a/Source/IdeologyAddon/AttractionPreferences/IdeologyBestiality_AttractionPreference.cs b/Source/IdeologyAddon/AttractionPreferences/IdeologyBestiality_AttractionPreference.cs deleted file mode 100644 index 7409074..0000000 --- a/Source/IdeologyAddon/AttractionPreferences/IdeologyBestiality_AttractionPreference.cs +++ /dev/null @@ -1,88 +0,0 @@ -using RimWorld; -using rjw; -using rjw.Modules.Attraction; -using rjw.Modules.Attraction.StandardPreferences; -using UnityEngine; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class IdeologyBestiality : AttractionPreference - { - [StandardPreference] - public static void ApplyTo(ref AttractionRequest request) - { - Pawn pawn = request.Pawn; - - if (!xxx.is_human(pawn) || !xxx.is_animal(request.Target)) - { - return; - } - - foreach (var precept in RsiDefOf.AllBestialityPrecepts) - { - if (pawn.Ideo?.HasPrecept(precept) == true) - { - request.SetPreference(new IdeologyBestiality()); - return; - } - } - } - - private IdeologyBestiality() : base( - AttractionMode.Social, - nameof(IdeologyBestiality), - FactorOperation.Multiply) - { - Priority = 150; - } - - protected override float GetOperand(ref AttractionRequest request, float factor) - { - Pawn pawn = request.Pawn; - Pawn partner = request.Target; - - if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_OnlyVenerated)) - { - if (pawn.Ideo.IsVeneratedAnimal(partner)) - { - return 2f; - } - else - { - return 0.05f; - } - - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_BondOnly)) - { - if (request.Relations.Contains(PawnRelationDefOf.Bond)) - { - return 2f; - } - else - { - return 0.1f; - } - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Honorable)) - { - return 2f; - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Disapproved)) - { - return 0.5f; - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Horrible)) - { - return 0.1f; - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Bestiality_Abhorrent)) - { - return 0.05f; - } - - return 1f; - } - } -} \ No newline at end of file diff --git a/Source/IdeologyAddon/AttractionPreferences/IdeologyIncest_AttractionPreference.cs b/Source/IdeologyAddon/AttractionPreferences/IdeologyIncest_AttractionPreference.cs deleted file mode 100644 index 41e844b..0000000 --- a/Source/IdeologyAddon/AttractionPreferences/IdeologyIncest_AttractionPreference.cs +++ /dev/null @@ -1,96 +0,0 @@ -using RimWorld; -using rjw; -using rjw.Modules.Attraction; -using rjw.Modules.Attraction.StandardPreferences; -using UnityEngine; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class IdeologyIncest : AttractionPreference - { - [StandardPreference] - public static void ApplyTo(ref AttractionRequest request) - { - Pawn pawn = request.Pawn; - - if (!xxx.is_human(pawn) || !xxx.is_human(request.Target)) - { - return; - } - - foreach (var precept in RsiDefOf.AllIncestPrecepts) - { - if (pawn.Ideo?.HasPrecept(precept) == true) - { - request.SetPreference(new IdeologyIncest()); - return; - } - } - } - - private IdeologyIncest() : base( - AttractionMode.Romantic, - nameof(IdeologyIncest), - FactorOperation.Multiply) - { - Priority = 150; - } - - protected override float GetOperand(ref AttractionRequest request, float factor) - { - Pawn pawn = request.Pawn; - Pawn partner = request.Target; - - BloodRelationDegree relation = RelationHelpers.GetBloodRelationDegree(pawn, partner); - bool isSpouse = request.Relations.Contains(PawnRelationDefOf.Spouse); - - if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_IncestOnly)) - { - if (relation == BloodRelationDegree.NotRelated) - { - return 0.1f; - } - else - { - return 1f; - } - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Disapproved_CloseOnly)) - { - if (relation == BloodRelationDegree.CloseRelative && !isSpouse) - { - return 0.5f; - } - else - { - return 1f; - } - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Disapproved)) - { - if ((relation == BloodRelationDegree.CloseRelative || relation == BloodRelationDegree.FarRelative) && !isSpouse) - { - return 0.5f; - } - else - { - return 1f; - } - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Forbidden)) - { - if ((relation == BloodRelationDegree.CloseRelative || relation == BloodRelationDegree.FarRelative) && !isSpouse) - { - return 0.1f; - } - else - { - return 1f; - } - } - - return 1f; - } - } -} \ No newline at end of file diff --git a/Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs b/Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs deleted file mode 100644 index 4686961..0000000 --- a/Source/IdeologyAddon/AttractionPreferences/Incest_Ideology_AttractionPreference.cs +++ /dev/null @@ -1,96 +0,0 @@ -using RimWorld; -using rjw; -using rjw.Modules.Attraction; -using rjw.Modules.Attraction.StandardPreferences; -using UnityEngine; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class Incest_Ideology : AttractionPreference - { - [StandardPreference] - public static void ApplyTo(ref AttractionRequest request) - { - Pawn pawn = request.Pawn; - - if (!xxx.is_human(pawn) || !xxx.is_human(request.Target)) - { - return; - } - - foreach (var precept in RsiDefOf.AllIncestPrecepts) - { - if (pawn.Ideo?.HasPrecept(precept) == true) - { - request.SetPreference(new Incest_Ideology()); - return; - } - } - } - - private Incest_Ideology() : base( - AttractionMode.Romantic, - nameof(Incest_Ideology), - FactorOperation.Multiply) - { - Priority = 150; - } - - protected override float GetOperand(ref AttractionRequest request, float factor) - { - Pawn pawn = request.Pawn; - Pawn partner = request.Target; - - BloodRelationDegree relation = RelationHelpers.GetBloodRelationDegree(pawn, partner); - bool isSpouse = request.Relations.Contains(PawnRelationDefOf.Spouse); - - if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_IncestOnly)) - { - if (relation == BloodRelationDegree.NotRelated) - { - return 0.1f; - } - else - { - return 1f; - } - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Disapproved_CloseOnly)) - { - if (relation == BloodRelationDegree.CloseRelative && !isSpouse) - { - return 0.5f; - } - else - { - return 1f; - } - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Disapproved)) - { - if ((relation == BloodRelationDegree.CloseRelative || relation == BloodRelationDegree.FarRelative) && !isSpouse) - { - return 0.5f; - } - else - { - return 1f; - } - } - else if (pawn.Ideo.HasPrecept(RsiDefOf.Precept.Incestuos_Forbidden)) - { - if ((relation == BloodRelationDegree.CloseRelative || relation == BloodRelationDegree.FarRelative) && !isSpouse) - { - return 0.1f; - } - else - { - return 1f; - } - } - - return 1f; - } - } -} \ No newline at end of file From f6cee85c8beafe6c925e859e4feca9f1731cb4d2 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Wed, 3 Sep 2025 21:49:36 +0500 Subject: [PATCH 55/64] Revert "Adapt to the rjw interaction rework" 1.5 changes. RJW adopted rework in 1.6 --- 1.5/Defs/PreceptDefs/Precepts_Bestiality.xml | 10 +-- .../PreceptDefs/Precepts_Masturbation.xml | 2 +- 1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml | 6 +- 1.5/Defs/PreceptDefs/Precepts_Rape.xml | 6 +- 1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml | 2 +- 1.5/Defs/PreceptDefs/Precepts_Sex.xml | 63 ------------------- 6 files changed, 13 insertions(+), 76 deletions(-) diff --git a/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml b/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml index 42953d4..613ef0d 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Bestiality.xml @@ -184,7 +184,7 @@ -
  • +
  • 5.0
  • @@ -249,7 +249,7 @@ 10 true -
  • +
  • 0.75
  • @@ -317,7 +317,7 @@ -
  • +
  • 0.65
  • @@ -393,7 +393,7 @@ -
  • +
  • 0.5
  • @@ -450,7 +450,7 @@ -
  • +
  • 0.5
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml b/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml index b9a37f7..fd7dc05 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Masturbation.xml @@ -38,7 +38,7 @@ 20 100 -
  • +
  • 2.0
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml b/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml index 2f83713..a37d9fb 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Necrophilia.xml @@ -65,7 +65,7 @@ -
  • +
  • 8.0
  • @@ -108,7 +108,7 @@
  • Necrophile
  • -
  • +
  • 0.75
  • @@ -137,7 +137,7 @@ -
  • +
  • 0.5
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Rape.xml b/1.5/Defs/PreceptDefs/Precepts_Rape.xml index ad98dcf..16e6114 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Rape.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Rape.xml @@ -179,7 +179,7 @@ -
  • +
  • 3.0
  • @@ -226,7 +226,7 @@ 10 true -
  • +
  • 0.75
  • @@ -285,7 +285,7 @@ -
  • +
  • 0.5
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml b/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml index 4ee7e33..e9fe889 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Ritual_sex.xml @@ -63,7 +63,7 @@ true false -
  • +
  • Rapist
  • Zoophile
  • diff --git a/1.5/Defs/PreceptDefs/Precepts_Sex.xml b/1.5/Defs/PreceptDefs/Precepts_Sex.xml index 2a5da80..469f00f 100644 --- a/1.5/Defs/PreceptDefs/Precepts_Sex.xml +++ b/1.5/Defs/PreceptDefs/Precepts_Sex.xml @@ -100,21 +100,6 @@ Sex_Know_Promiscuous - -
  • - -
  • - Vaginal - 10 - -
  • - 0.1 -
  • - - - - -
    @@ -172,21 +157,6 @@ Sex_Know_Promiscuous - -
  • - -
  • - Anal - 10 - -
  • - 0.1 -
  • - - - - -
    @@ -244,21 +214,6 @@ Sex_Know_Promiscuous - -
  • - -
  • - Mouth - 10 - -
  • - 0.1 -
  • - - - - -
    @@ -323,24 +278,6 @@ Sex_Know_Promiscuous_Approval - -
  • - -
  • - Vaginal - 0.01 -
  • -
  • - Anal - 0.01 -
  • -
  • - Mouth - 0.01 -
  • - - -
    From d9770dfc474cbb88875f6973b0954c21cbdaad30 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Wed, 3 Sep 2025 21:52:33 +0500 Subject: [PATCH 56/64] Restore csproj --- Source/IdeologyAddon/IdeologyAddon.csproj | 26 +++++++++++++---------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index 2efb1f3..a4e9438 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -2,7 +2,7 @@ Debug 1.6 - 1.4 + 1.0 $(TargetGameVersion).$(InternalModVersion) {B4481C38-31B1-422D-B5AA-0059FE7CCA1C} Library @@ -22,7 +22,7 @@ - 1.6.4523 + $(TargetGameVersion).* * @@ -31,13 +31,6 @@ - - - ..\..\..\rjw\1.6\Assemblies\RJW.dll - false - - - @@ -52,15 +45,26 @@ - + + + + ..\..\..\rjw\$(TargetGameVersion)\Assemblies\RJW.dll + False + + + - + + From 9b6884b151c2c64145083d72ba796c8cbcf58cb2 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Wed, 3 Sep 2025 21:56:13 +0500 Subject: [PATCH 57/64] Update dependencies versions --- Source/IdeologyAddon/packages.lock.json | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/Source/IdeologyAddon/packages.lock.json b/Source/IdeologyAddon/packages.lock.json index 6cb395f..fdc3da7 100644 --- a/Source/IdeologyAddon/packages.lock.json +++ b/Source/IdeologyAddon/packages.lock.json @@ -4,15 +4,29 @@ ".NETFramework,Version=v4.8": { "Krafs.Rimworld.Ref": { "type": "Direct", - "requested": "[1.6.4523, )", - "resolved": "1.6.4523", - "contentHash": "HctRgCN04CKGbfk3eBtpLs5gSku/628e76y90PDhV7+fgb7KKqscwOeKGJaLgGvwkU5a9cRWp8XGjBhXcs+uuQ==" + "requested": "[1.6.*, )", + "resolved": "1.6.4566", + "contentHash": "lL2q5+XwA6xR4qcOHEVxoPrVxQqJLL1fTbmi2QI17qSlwobNBnhawxJqFMisbOYGA9EeAuIGhSkBrYLsPsFAuw==" }, "Lib.Harmony": { "type": "Direct", "requested": "[*, )", - "resolved": "2.3.6", - "contentHash": "HqXPz33Z+R8ZDCLS5pJZthg33AMdF1bQXUbz2V7Neb9E+sMQOf4S1wquhM4pLIZFX7BZcOQubclbVreiM1+qmw==" + "resolved": "2.4.1", + "contentHash": "iLTZi/kKKB18jYEIwReZSx2xXyVUh4J1swReMgvYBBBn4tzA1Nd0PJlVyntY5BDdSiXSxzmvjc/3OYfFs0YwFg==" + }, + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net48": "1.0.3" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" } } } From 1948ada3cf3c1d39b72a7a2833517cc327aa7c96 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 6 Sep 2025 13:01:18 +0500 Subject: [PATCH 58/64] 1.6.1.0 --- 1.6/Assemblies/RJWSexperience.Ideology.dll | Bin 0 -> 92160 bytes About/Manifest.xml | 2 +- About/RealAbout.xml | 4 ++-- CHANGELOG.md | 4 ++++ 4 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 1.6/Assemblies/RJWSexperience.Ideology.dll diff --git a/1.6/Assemblies/RJWSexperience.Ideology.dll b/1.6/Assemblies/RJWSexperience.Ideology.dll new file mode 100644 index 0000000000000000000000000000000000000000..10af56658d987024a5bcdfc26566e7c4bf56574a GIT binary patch literal 92160 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
    8A46<17HM1Bd0&b28ivbCJTLJ-$EHGvdXR>+gS zmQw75W4&W1gK;dR!bNXY1@!W7^IPFS(hlh5UmQ!Pa8n2-IrmX^QSlDF4#c3INFr@T z#uHnuk;qX{sm;x}P1n2M-Az}9WBOJx{a<<0N!hOH7EHJP2d3-w>pT@dHD~upv>U+~ zhf)bfoL|E!2}Ytcfqmwj9*JX}jKiSpIP~}FTZK!|EIPQ-$K@$j72HbAMnjq^wD+KB zz_yBr(gY}?9_B^rv65r54s7)$^Exe$PFWID=fm68d9g29leM*T&^} z!idI~(!eD?-1=}vYdho{tYmH0mYAE>+D6ioRx+Mt?c-K1>vAaHw#jyEOm4@Bg}!8I z)<(oEyO6X0QY+ajt2N^0)7o-;|HZoGcC5pgSgM)Pj4|n9EX}}Qot-FfzY!@uk&M}r z%FQ&!&uR^sKFc5PqEj(3mhmX@<5w-eAfqBH1Bu&eMZUEBcKkK;P-4QTzC~MP9XzLl z00wsZ0!|SDB>%Di zjOz9U+$RD^{$&9JcO>B7B7o#y5@5@M;2VANz;2G!^sFf!$*}WImECZvG{~t^v~y-> z?miXqfb%xar#JyxahzH)K)P>p_zX)cu+4MKj*H>D3<1rUx&&}I(GSxBYt}Fp<)j6c z`kA*k0uxBvsHQGO6+D;W(EO6VMUT~)vm>S(`K;9CAS32=t{$caAFlVmxairU`xs^) zt1%~!g}qo|ly(%Dyx;1}^Z*67T}yB<(?el|oi0Vap*h-Uz?b^X53G!4KW1LC$4u+Z5INV0|7rTtBGf%RjW_(+@B; zHJR}Ug!0Z1+Ert(^I06Rpu+WMfK!!^JlTBo&Wa=BCz3`}v|z*r@c7bKqoF*~qv?SZ z*5CSBpXMbUzeBxH6H?crUX-ZD)VmI~GAmeWrLIR!u1!)mpa#;7I5cmD*L_=}V{=}| z;{bk4nKYIX?Yppc6WD^d0rz{hCm=#PZbog{QuMq@E`}Y&w*WhS_SUUibK~_Jg_Tt? z%vUY44Uk4Mu$o#dEaN^#F54q2`zYstj-?)az_qbw7pzQ%3k#T@sBE!&aKtL0rlE@z zy$c49>P3#`DIrg#@Q|W+!L-oQIJcs7-Jc!|TeuL#9)ew9H~Rw>TdXE5Z*E0fj*w$A zPX77=tS1EHQX8V>KBHgl$ByC8Hxu(qsUg?^Wd|^Xoj0J7$&F(>ejCK$`2(^%IH$?y zo9SHI_sN>w8E&hK#kk-JW9HpE zpf82UNrcVRov4p|5Grx+A65N`19%9S>AQ*g4`RltBDljzP>FXMkZO;73=-_LpIYw$ ztsqf>tCo9nTuyT&XdC!H0^j_$zFRRqmnH19y}jlxRo>=%^C@aq^W-#-0eu_;3gh=d zUC^ASsjgNHPh{&Ks$@??^3STy-@|6icAAD| zFXSc*^)%JErr+h$Pc#wk|-ncyx{}Ya}%%4&EF!%>Mw>NSGTqO%(l|zV`sRw~- z?t#3|rs;=JAlc!50b^}G?8YJ=`&=}md9DvV{1Kyq`=--@u<q1o4% zumkZ&h|$|%kD{9T3yRh%pDf;*d-~)yXG62u*n|g_Hi4#N+m!1?)Jx;JR=6PF3jvav zg8~mZjSqBQ$PsO0(A1jo$I!T;Il!Cds1^A_lGkR1M0Zo5^P(KH-xrvL+ZV!D=nL{5 z3!bTG7Mzs@*d-CBTchvv!5%pBPmi{flBHo1X_T=pq`a%Tk&%OxBZu`}upeYugs z>~1%;w9n$1>j|`M`r1lAi6i#@ESU+d#hth=&xS#w#2;%Z?7St9>AVf~?8&+wDP$m0 zh+Lx&*STbb&LyLmOXeV&5GA&L{5|^|^&d@ff~lVbc?#NFj3%G8xQwwX>;-1$a;V8X z4KFo$*`MA%J1+PgcI?4C1D*^#kX@-|QCK@=QSd9*LrB`(_bKg|0OPqHngFx09-4@Q znZk-WcPeDtf?syhT8_KK<33$j8tE@!oIpB&Cc>eQw zRMI0L!cL2ZG!@813*|NrLP7uN2!Gx7CoN1*EU)P5?yLa(QGHhpq^CEKhW zFF>2#hvWJbYueI|NlyPJLofO_1qU;QRh84fzG=D(3%<$Ou0-O<_qpEFbj*S>bX+8) zDIiYEnqVwZdG)ps^~KdLu%zQfnsaIUafmrncA0$n4JIpJjlV>`JxEl~agTL*#L2k@u(INOV(})NJ3g1!+`Qo^Q;r5L7 z_Ov_&OJFx;dX5sta24iBv8I-ea)4bsfujj;D1+bA%NszL5}2lbA3*?NdCPi@-SXG#NE-=77aVjbPli<)O@&GPszG|MBq zO@Gi&<2uW8c_=r#JYS7q!;KNNl81D$ARi?!Iatnpu%;y@U!bt`!+OVoJAFBd)DZ$z!X%d-=LS)(h5I?h zZgPIj!-}h1%2Q8KIZs1ctA1or&rSGK{#@+t#{_fcq;nn6&k8#HIQ3+mb#K0UC93ko zBePFV#CD&7Ji?=2bL;ze`G(m?BJ&t=z4II-g;@J)Q%dd7fmBM8^#+DrD`&=9f?5S8OV|}XBP55oW z4<|^4S);0eMCL5l0z3L*hGh1k?6fY~JVTQL@ed{Ni0)iQECVDENPh%$9H;k0BkmZH zy2b9tiTN?{I4!#HxG>r-zR`;}wNTtv|0nx52QraB*&m!6w59rS@k;%;cvfwHidhdo zWj;kaJb$IFi4*-9C4G*f&mP&$K%@3d7%9(NX+A#bNG$uKHllk23C0uG_}{V+FP=X zw7YcIb;D|JLq61$<}fr>b$kuQOZ42tYE2E!#af>&traFWhAauo)&essQp|9oEGlmV z@KG{}Cl)sMPKUt+_*08*f=(Ms)mS8G9bPW!~yZ`1D)~x z34Yja(=kmJ9k&5_R5+kBF=CKHz%l8(5jyAN|6NVE1H3 z=zi9tRbenHFHIoGg{i{JBm+qT_H#_R2i=a)V=EFp|pO%XI zS#jnT*x^x^NX+_mkfYmFc-zQmP?+RyJs!hye$wMXKjz0nG|7Cz1(1vfU72Aa zJPrlk8IQwJ&5p-;7>_p5Lk5foPI4R%ztVGv=UkjP6%vFx7(Y2bkTp9lI_JYvdPGLD z$CB>hDviSRLU$C_%WhOIsCAM*4C3KaY7w8ZqSKW(CBwmEJPu|)m&O&_YwTp>ZPRd3 z2$II;Op^Rd)HsiDVz9b*hMzf?m|S zaxCTzy`kfQJ;`RL8*@*`ZWrl^s!*9Ita3tCF{5%R(9S@ee17kfx^pFAZa5N5h zuQz1JMxO_oj6X>`$fcflx15)@;HD|wegiW#hvD2R%5|xqOCLguh7B{$fA#{vuxcYY)d?>}rOE_-iixh2{A%Y;_s* zI?Hpyt_3`n^f?awUYM+_fpgZ?Ick1c>b&%0rjLaz-CiW>b@UqOg5$mIe&sqk*T}t& zrWW@)dJovfKevwO>Gl`s-ENBILO`#hJO6{APxffP7W)eA4K_BkPQ>^)4Y;~S5OLj! zkdr@6(WUgyB|EoH&RL98R_;YIBBce8xtE9pc^A~kI$7G?O{G{T3vdsCn;muc0+4mG zOQ$^c)A=nrk@^mW>twZ%ODbuWHc3hB8a zqB`awcrxvj$~T}R^>DwW zIHqI~S>YAw$rIa4$ysp+=B(9uIg3BYqb8I^&(EQmR&r>Zy4>gOkhZDPYg2Ab%pu!i zAChh3$<@-CDsMwcJtX9FHO_EO-00lHu*&Bi2@*MX9||R0OG$jNklb?=uviOY8ESWR zP%d^ykgteaMBMQjm!8j%ALUDL!I*Te22yU~a^Hmc94E)pjuSO=?9(^_R^pd`kj&~D(Zn5lGYgoM% zF!|JujStl5z0*=ixQ}Lp~JX5%hnde|0%3_kenW)CcEeh@#g0*MS+T1L_RU%Rq z=M{Ss3%@leYo}vkIZPb28*Wo;r)jiHBsb#M-U;!wZ~9ZzX_ zNjOxx9$|psf{og9=S8e*9KY+>i*^dT8WnZi&q|;B0;{hBB1F{}vUol10WB6^wkNXyg6Kr`iPRJh&%9%P- z$GV(AG{W_idfP#WnR9b7^B_1m7HpkJm}$ZiFlBzT)Svki$uXhE!f(C{rCDZ&l>^uO zIG*1}moRE<9!!gRv7{vc18-onpk65Z5g}S?MOG>TJ7>RUvcXiuD8f>}N$ryS5JqB9 zrPK7S*-pRpi6ek!+)_ZpwVv=Rwe-T7n*k!ADl4F;BS1&ma*m7LXA^ScsN;sAUf1P-j?3oSgw|(+wt9O?oY$tKwE! zD8(vspFeQ+R&%U+A%>+HF}lU?ITN@(DONM#@QGquj!Z_J;2#FNOJjaL=Dc!^H%@ya zzHK~#kGHS;pc=?Mfd92in|oW*tHZUNa`vcRd{0v`RM@*s_Iu{fK) zR3j0enh0jsOZ(yj7r(BGQ*w*2oQ?V(F`mHAVUXBz%d(sfX1naW-GW5Y(91GuC(E)c zT|#6vn%zWy8ob)odQs{Olk1)E{LarK91xvd{(>scueK^Nm6{~uM>1r=aa@<#^c{Zi zsCogvGDE2=@xwh1y*3kR9jg&o8RQU*v@Y2^L&LMHE~5Dj4=eL9vCh6GF2`kcMJf_J zr07*wn+JdP4)DMA;&ZF6>^{z;kcv!06J^~cwt6=|g{8vFBI_vbVyuH#oeLy9uApr^ zhdT2ophOvGE z!V%xJExZ0<-As##uJsR{hBGPA`mD5(Ui>xdpS(Ptmqc!M{X^}!xWLu}))(Z~al!G- z$Aw6dxYz*2j0+A;hK0n%RlvI9;#uIGxWF~E#08(l{w?BTn&=?|augC0_fc#+*0M-8 zQHT$uf;eY;u7#XE6X&xxm^B+co@@Z-(j0~}PPR@i%cAtu3TB>zbhw*JB%QD#GlT>= z59&Ro={Xyumips@u*HGIX0Gw?f1Y=13Lt z_D*6S+hIsw!2xSQ3%(8Dhbu0H<$`(-KPP}| zI3nK~=GdKO32~JuER|UnuGDCpo)b6IYu)EWDg4DBeZxOq6R?Rkl5;|Om7NompPLgi za(>ov!12q+fk=@#@p~xdoZwJoSV$b)0jz6Iyb8P%2d|^LZ5)uHTO42$W&3ep%KdvwRMhjPElhpGoBSvSmz`DkAGw{w>zJ=#_V*Zofu9w z4$3=+{Mc>+PaC%H!jTd=6blJ$nH|;Uxat^FH5O#)`Nn8!PNqE>?ES zjfIXCj&VL#M2f`91JKNQ&*93jkXXSJoi<-+e-8+GAj~JvYZCSMZm9g4{(VrKi24v! zuIVj>CkJ?4hVwGXc=3)m9G(GE&XvSACw%aIpam>Q8L+nB))^>w0#R(b&e`l^=qS{kh3SB zSclg*anGYZZ zlaV7R3lUaiAwq)QFP)5d-aR+=Iu02b`8Z@FtV04(d0mxp_zz$*j0Ds_VV#j6G5Hc) z$pHK(5Zz+(({8AIOk(Yjjma-i)iKHI#@~otBs($rP&Ous>%e1=5|dv7$WS9<@@v+q z%855D*Sf{z6*){cCa=q37>7C2b&TO@M{gVk(z%{!j#s;LFj8Go7>BQI!-F`?%h7T8 z`Zi42I3#B_4o?m#Koj9cMY#iP#jdSW;Ms%M6Iu4bp zov7pRb4WoPa?~UaS&=v-As>gca^tPzkkOEjLpIWJ_y!!sIQ$nd8ICyWU$M?ekT`q? z9E`(nfan&7|L%s$$KiiKadP8#sOmUuN676Vc9HDF;oNK-64&t_lrcAc4e)Prb&^9Z3gm6p;q~`zq5?sh>xAaPQ-5$V7>d}K2w9h6*xc4M!p}F`w=FsNxjw2 z9s8^Xb~VTKkrA1W&bINNFCfz+m$@QBW*^;a&F*c6TO{mIK9={+ zjiHWZ##}y@MZ2uOw>YuPVa~9SSjHV68?S!x`*qIS60G43<(>@kolQ*FuJM^7;Pk`7 zO*3(G7mq|@O8{3^RtozJ%t1&ub{Cq6T|RXl`aTzS`Q-j`8ZWqp`7epco4;Z6Hyzl2 z#~WIyQXCos^0}?{*D-zN5r$5@ks6MdvA6&u&=@UDBwcdwoi>n;pMh|~m(+_xffUx1 zc9~`4Ob`yn=Hgo)d8Mgx@D6zhAN?=`@}$HpR~AH6XXj~5EN6}msI;jR<|?iu$Pmsy z$cAecg&d%8qfWJeNvP4Ze{Y`YE;%p=^qapfySr&a|L(Bz4;xVvhs;K|@ zI&?%g{r1;4t!7g*U4cWYfm5JHBY2RPlei_@3qayzGcCw|;Nt0>O5+t!pB!p-R^n); zDXareZih2b)G%e)C&}8s`O9CHv1P*CWmvj@jjiFUuLtVXUeld>Mmiai;Yo%E!CyHAz$2k=FIX*8J zk9v+XUh{KYhDok%_%b)wl$D@o7#%XlG2EP^aIoFgn{x4>MiQ|M9Qtc_)jBwyPJyc< zuHM1%R191{;`%u_p2l7C2+!MR=TV#-m?k{G;9QseHWRS2zk{voeX57)Cp!i}qCRJp zU8a6-8qYjJcpic1%v5~9aZ$V$1CVJUhnY^W2|6Fn3?w3&8HB@#{V6uh>L~D`N_iQ{yEjsZ@As9-nXPt&@r02ObsLVFNNEb7E&xH=gP&&z?D+n0OCf&ACg9tI4ts$gye`&f8JvZP~gt8aCq$ z4nDYo?#W5k{X7BAV~RibIaa(Qa(J>7m2!^7L}FiMuZnB${c6U7h;k7dXrX}LS^6Ww_$y7R8ho`~9gWfC`exs_gCSu9hb_$&eQ z_7|T~r}i29m-m_2B0l3w#bNQyFt2a0v6%Hu8wEqAH$RXemmjK}{4feac9|$Hw2OB~e5NG1|7=EAQhckwnj306Xb~l(C#FFQ+&*M0`(&dcNwDNg$R!^|Z7{bxa zSRTyua2#|x8Ak-t31yAIwHd!>Pn@KL%y?4q<|q!CVXVi55fgb&n&7n440r_;9C9)q zc>@J?Ci3%28dqc+Bj4v6cP6{BRc6_+bC74l`==1!zKiaoBnlB)mF0fe%`InMortvI z)mgSn+-x!JkcjT6?zqg{|6t~taSj?5(c+^tUDv!<`+OLnZP6W0Vd^-$jgJY5UPxg< zg*-KqRRmJDO02wNtRHU8uN>sDwh;`GZT7N%g0J{<=LZ>hv6lHkhAW#N=#yN2I4~De zI@TGl`B)bz66?dEnfYM^=o!Wa>Z4d^2V@S61Ba}Yai+prc_K=FJ6q!rmB3BO;qq7J zQ%MnxndzwNJYuRe#^4~ajSTS4PB^&Uc_AOK%_WtP#rZA~PQ&45T$6tQM`xx1k9Z_m z(unZMM~mvwRJDSyZzRiC;pLOGKmqwR$^4u>+E=tU?<)$|*U-F3rmtwSTq=uycBX&S zq}e-9Ldv6h`S%x37}_$ZrFBs2U|cNlUqCws<@pEWJ6N5l9HP|KSoZgwy|{hB!XrA! zaWxX`F&N3dd(BoQ59xoOvhVc0W=sLC7Vs1-bNWs?CIu1lXJYE_-RH`JP#EA3Mk_y( zPVLC^>IxiTquK>b7&L_ys)GOc?L~DI;Q2VRPSZx=hYeTWhm!V8Kg5aI>fcyA@y}K- z#y)AaRa*titEBuUy0o=Sy*-rFnpmK}ttu;6ejxQTr9MZ>l$5IkAB;T(2~S2@UJ(oR z4y%iMeAyUQuSHp|ocv{DF}_|Li`uHwdNwp$?JZtPR+}4Hej8_bR8uTktS+yKMZ;?1 z)EQHX)!k!>nbW{>3Un2#JF8ia7ZmYduo2}OOWc`n^rFbNGeG&Ce?oXLt2Ptz?C3^P*-gc2 z(`aHYswU6At*jS@SpHDO^5-&^7ffRLl3)%M52U5EM9$GMjzX*Sx~rIS{?$7c?WxSs zUqy=5m^NDb)6|EDht-Qc!b8KV623jfI3HORlEtd%47REj+wSexTpU*BK=$q_(R<-! zYX4eBCoFp3nAThzRfovP&K91PQS$sz{BTSy>vxV}*(TKUq@JlGCN3jhf@czK^>9-o zJp8Vo5wc;Y=He=KXYZX*A1|@-2l3?0$+T^6P{ETVPyhZqVblr+1p0?n&GZ>l!s;=M zR9H31`IC2F{3^Fd|WPanCa_jKa#p*EN!>Y4|_MDBfSdB{(KV~$`vt-=Q7|HsAK`e)1 ze2dj9@KRL8ENZXpPs}k<#{6=`d9iv)mIj>V9 z;VbwM^RbELxGA*Z1i}0y)VHNROZ+^3IOQiT@+=Wg-Y$~oNd4c#Xv3dmrmU8-=T4Fd z%Q@ozme~G-NVCPZKTA(v5D)xIGS#EgDS5Gs)I`J#{3*TOc^vV^aF!!wG}F@d7-?%m zFGgHApO*PDQfBw*qU)|wQWr`r9n?mdcMW5CZZXTD!vBuM*pcF^I%##0@Sls)R!^7F zSI=TL+3Hw{&q2bue}b_$G(?{aLcLghIEv-RGS)XsHa-+Ht5_|Iu&uuztJD( zdaI3duwgjo$g4v+b8AaJ8&j<6k;ibpfd6e(hq=u2-cGa8Q|DtXfSeA_m6a=}E(263|D5$h z(=@GzS_aNRJ87syI7>#YoVpR5F`<1>L|OpXLOY?k0!<&Jp?Lz8p|^uU+fSfx z3kj8D1w*T+LrR?yQ-=%mO^Jq%66pFS4J{NeJttm@sSbfIs-n*-)CmHe*qcxl{zXE{ z%oMMjdYDm#dqaeFYFjz=IHOvfBG91fl~Xt1DtMVd(*VtfZeLwm?K@@V)LStMzZK}oa{9U+`^?n$5;)fy^=h3!HSqiefG!c}6lqtl zE*Gc?W4qqytF990QCPhZ-vYf>p!X{XHL4o~`Ute^jsAENoEiqhpM-7|Xx>ovA+GKe z=v)W7Tc8sh=w5-=_WJFJ+wd{B`vkh6&u>Tk3DBPeYOd0>2Lw7sXam&40)04^v?lcz zfyUNp=rMsl7tSX2gg}#PDYHpECD3C|yJrNdaN0d5(8Er<7X<3%w0lXQeF~2p^$?`I zBG52EPZ$aO%LVNF2@OY%+K4Ywy&=$nlL-yRMjUDH^dK};y^GaziTZZRkyr!|Q-7Dy zJh-%W*nB|m3v^DKhCUGJss;^xC{Uz_hCUML{UI9qM4+D2HT0=Ke+p{oGl9ko(9q`s zec4Y#UkG$|Tti<9^yy>`eJ#-DG7bGppgTeu`bMC(Q5yQUK*#jb(6<8JSgE1!1bVx- zhJFxexznSc1ge~*X+KK_yVJ2{t3YjzcGHmT=0HA!dFi3PpNyo>ETq8_b>GlWMsCEr z^%{C+B%$HTFPs;&l5>Qzg>zg)Lt%k#Z~0`zd|Zzd3iPl*lT?X7F9|diUs3SYm8e@o zysp_vMGPObV=o8LZmP;fn~80dJZ+Y$bwRULUx7CJ*lsU1(A9398ZNX>TtUr89vbC> z4pNg`?G9BtyJ$zMJp|IW9HZvBI2U5eH*a-^I>rSZuTsLfQTnh{ooJkj9$hE>%czqD zx)xW8^O0RNw09+;)edyQBtmC7P@6zEIMDlzq}}d7m)8)w6A=BP`*)WEX;0j*PIdL+ zA+_4ohey=;u6B>B4KCxeMB=z7ozKv8jTyi17{X*_Nn&t%Ur>PeN-E zTEN&Mw4KG*MFzeTo{Ov=2L9Qmx@^?-G>S})Q2{nD=Bsj}R5+iKSi*VD#o61aazV95 zFBepA)ViR4MqiOKNj%YLGzzqrK!c5eE)7GC;R0z7PB112beKfXWMh&*+VfM5DW+}z z5Zv3G)AeEHdnI$azL9cH(R(Gfx?|*rC?7!CriMjMx7*Z=R+b0#XW1@gbwAcGu46f> z56jLWEWa4Qa&!-t&!KLsE2}5@Z1v4fg_fLhf{BwJ-d}ESPYO8z8DPc(g{t0Pyae0qYL(OX0gpAD+S9A$dBh^0@ z*=p!G)?X=&fTyam+Ed!bDLXT{@@h&=&UM$YE1}IYG)jYmN@XhL+uc`CaWEDEAva59LBBKOb5P3I8k#S%w-_ za0u#qNLf>GEO=fL{!ArXecH_Ow*LQ$_6ZR}>d-oTudRMIaK&<*idbd*QU!cB8 zeS`8%bE{a(UN13NKf)L68CAXgv7WZtIO%?~O&!s9h`&t*d$Ba7JaG!^$4NOm%KBwt zmbDEme=qfcQvafbn3u{3q~Z0+tkcyl)qO$miH8~Y!OV)Qr71SX6`uF zqh&0g6-<@zT+@@7^Aaqt70htK>@VdDeThFr@JpoCO@+kxM9!tdq^)2+5&l(z8Q(zs zoMM(&6|j6ks7r*?5X?QbM~BJ{7S14qqC@O7|I>TZ07vhP{3T2?eD&za%LG0H3A+(cx-hB zI5od+yS-MFra9db{&%{V84kjXVD@1BFsGi^>+bte7?BaBDU>Cxg{}RhhGd#%6}Egy=|7^ zz;!5>1wuGSbOiq(mftNhA9B?={N<*#kQ_Eoc6_o$6-#~c+ zH0C9|4U8Vm?D%e9=ACtKL*}h04K-1EF~NQx^?%ruHc|TW*T4nf@p|cF4<@hI?el;2 z{7o%)9@eR)@$VpWvp~x#P8wq1=Ieh1dQ^=s-ipU1R9&9aQfCRIIsNK7fi$OIt*Fm) z22@F3LYgzEk^*VYp!!Lmb?TFefwHigi)RIB%V|A}$_ntjAfZj_)6u1XY6V)MCJd`6 zD^%wSv`XwOQWp!fwqj9hQCX3?RiJh1^~xtzk^0GjK1uW`D^|N=eX4LReCL#wvJ!Q* zKIp2WX?yuyJFt9ueL{*wdEnL4&Cs;=Y1he~U&P>&0wwO6P+ z29UN+)s;>yt5Cc0c9TFe%c|5OfgV-up*dyM>KlPpC|}C~Wi@JF-avL__Ev`ov`Jk% z{K&H2>TrP`RZq3u7wn@>aB=ogogUg6fmWz{>W?k!qXM|6la<*=^$=*88jD-%ebfL4 zdfX(`=0KNPgeE&sz$P@)fj(9pka>^;Ddg%t>KcKvmfb0k_Ddi2Cx=t(d(MHhzReD# z^<{0*`aX7Oe@5=?qrP#VT?2#;!2>mjC3TZP$2d@NkhFgYq`lk65z2ZgMnQqB-4Yngle>ePCN^HR+EI`yan1w=!3jK*S&>eSFdTHoV1Q`D)7 z!GyG5>O6j__xPn=t#&vWXMNQr0_oAjK9C2xDF>Zg)>nhkv76Z z8>td5+DH#=l$tKIM}r@S0)bI#cg-1mps)q|0ed>_CJei~Y?Mmk9wal-+}1yrjaH`$ zr2R6%BV~d|$^>Mk^QQM*p@<=&IEp$ma zOkL+l+0gWD*)bj|3)N2K=j0}!IRbN z0&P-HObY~-sCOLbl9Bram#AsH;f(R?8#3^GK)XQNgK4!yphwj?HT@!Kb+(6gk%rXs zJxKez<}@_tmmbdVG;O<53P)>C%_ z{_a3)&HI9#>YoB>DV^#^fwYuPwM21kxJ1)ZYctQo3^4O}G1} z(~h~WOZ6M4tsaZjZkIYr$r+=O%UEq}E86dfI^oRE~-)lMf%!6R#vD zN0zI-$5Vs0WraFWpiOvIaeZioN_l7}3PcZ*)}?7`)07#J73ywRyOruOSG$$U-EO7Y z>~MZO?TOGzRXriEeU<7f(28K7a%N(os{_l%sT+|hc5s&UcI@X%JPRu^rxhjzBwRcMc@gT@>jIa_@xkoMVc)pt4C zQIX%O>n2gVrma!83Z#3qM!hVMma@hpWv!~5%yyb{tr{Z`Igg60^~gL=ot>i{968S; z<$QIAi*~+;c7b{+M>{HVfk)8yNeeCWMQ%`g?v&@e$uk3P@QLcarP`-m67h20LJ|1ed5QDe*QRd>5M?^BOB(9O;FNA6QEJ5cG=XCn8jF}rA) zg#N6qc0muS!d>&Uht*;S>e=U&$fIht167qj3C~@gO8*;bp##xpe^X0xG=KTu)ZGqrXKQKs+v-6Fy1BU;(5nKiRpVM! z~QvN8D0Ldny?4j8SC)jsA=V&syzw8 zFQZy!m4B|@6KJjK(Q-ifS1LT4v{ksOTTuRuC)@l-)w*c^QHupyrj`v~Q2w2Y?8$b^ z)B#n7`oYug2em?Ilv!YSX+Ns?UU_{#dfNT0Rtin8QGV`5TPw8XYPl*fepc%p=s7@J z)YT63p?O^SR`s?6-ES=|SB5+98pfv%?MVC7a>Ljvkk)5zf?$dpK=lZ->?wSA4c{f&<-yD;wK5-GOexm5ps& zIoRPI#4yPYy!q0yw*g{^#WbxK>rZv zRtGY0Mh_Sd3&hC6`wYfrf!;MfDL3#hd%oj9y{5DP8oe)Nz8msSJhm)oOxBQb1)ht| z)7DL#0BBc-cFEv%cq!;;U#|X&l}FIHN;tJ;S(>&iWIX7| zq-7z)+COhu$YWWaM$1A*q2@GbS;*MkfoNIC*jpg2FXZt=*jVgvQeW6O_kg^ zMtxypgXR={VdHHFqQ0>4kw98s*rN~8bf9Q3sIS1d>Y%*70*}5tjrt0Vn>45BD=@xr zAnGeHz7$4n9`X{t;li)egicj~N>U(tVG4 z;DBOw!-MMNZN_7D~$dEX?+#O6o*D%R~kzl zh`z2go5bSsLG=+Poq98MLM(wW+HGp5XZL4*hL_%ugW;mp|Q8s#^nw~ebvVMi}Ss$Hq`MV zQ?yrmwC8EmUTp+5r}Vbk*u{aUz1o;9kk(#pEOKbnUSnM6K-6Ai+_W5iC>o}l&`qmMvZdyO&1p;3D;W3dBKdoN@2NqOzP zjPC@}+IxAl=V{d5%aB(PFpH@joG0hC_wvlDUdAp$Tds=D&(Q7w2f7ORtalE&(Epk0 zljH2NKf|*;#|fwIL!BpH>W#A;ee6TMaY|aWhYBY2i`09p&eLdhy>YtcG%gwRm-2e! zRR^Na>OEH18*d9uTU~E_?Lf4;Z;nQ*`{ih~y20=-r7ha(Mvv9~jas4UIo;m~bmpz@ z@3A^hqt*S563r=A_cso7AX?quV|9Py2%%}K`x{Ffh*rmQG+I5tI9q7i&L)qY3FA6P z1HGFt8oTm#COmfLX|yw84APupXTmtefoNyKI87jZZcKQrP8jD2ZMj;2b7R7|#>JWR za3(#RN#i!*)O~37^r6LgT4>tWEyj(@6#jHvw|M%Hr?C$$#vPhd;=0B7)`8fE7GtYG zt7Mm|#ba5E(c@HV(6+P~NrCiPbf9s+1JR!YjeaZ0sdMW*tsdyHI!~k31C1`tDOL|O9&sRAJk%`(oQ{MLp+>Aa%+^`jVsEBf#*f;T&oF-NiZ5_@|3=l!tSa@vVzl`?a`mzi zih60|jo}XME6~Opy9lJMp5XD)MB_+D1FfEDe4!yZYftppnWxdtiN<$MJDxWu8l%_d z?VM=veT1tfXG>EpXwB9&e#e;QP2_wokuL|uS^o*8ss7QzIx!~hp_Y{Rl$t?|ZlyW% zrKwhkoGd>%|5BZmkd?DRBs^V^$8TFdFG!7tk58~dv{9dG|XDed|?dSK%u_NaRd zm}<4)FDWg-XL42-lV?ZuS(T*zbs|dzpBrj;KT4*2L!BgTb7P+wK?(PlwW;=Y@Y)d~FC%Ez5k*``o9t^vLrx%KUv_`l3BUji%}X zk5An^mYhFFh*>vadl-zu2=Zw8ntw-i-BZoOR;F4wB-{4aNjP0}=@I918^5mAv&cNA zYM4s?hN<)kGnk>Yw2vfyD9tArOYK`qsiK|y7HVOq#`%USuPffuX8R8``hM6ae z(RSuBIxp>r>XYYDvi)-Rar<>IXSMWEkE6TP(WvvGE;XkvCrPF{H_E>Ja;fF$S?rdk z>l&YyS*FWhmbNYRB+1y@mYQ>0yvFQ^s`2igx;5%3)m}Xu5pFoyN%uvMGG{^7CvG|J zx?85MYiYVXH#!YhbI0OczGKy!_~Bhg{5u=R;=Q93a4FzYz@>mo0k;UaMZhfrZV_;c zfIAMj58gQopcN%b~0e2d3XW)IhGk`k-pCvd0xHEuT4cuzr zRs**hxYfX&4cytloekXCz?}`;8pvA%+#1MR1Kb+m&IRsV;LZi^T;R?H?n1mZcOh^W z;x5dEz+DL32H-XTw*j~fz-<6-Bi?b`2pr#t+X&o7;4TH2VZ1eV(vT8-BZ1{aDQ8GIOUiwuoG;}9l;s#(a-J;Z z87K|B^LEmZD)p7rD-B{!M%iCoVf>7B?)7??UEMixH0lrH{>k;momde@)b2xe#lNw) zJJ#h7NvriH+ukeXLsHgAtA4_nl=@JqKjAxR$PzV1FjE9Gz!FPB@r3nG!G*wITYiPH)ZvMa{)@3f>Sv++ z);J%fq0U!x!o}vj*4LvVD0@w9HD9+ndrvUmwN}^cVSa4+$Lwu}jN1ktg7T0N3(T*q zPo)=c;=PcMt(zhznj6G6Lp=XI{Db#%{U1$TVSaCYRDY(qUfwS$HD>j?+PqpN`rc)( zHCNZ%Z-)GbH#}(Gqz3hT1^CI6HiPr0_&fMFwT8_20Of=kAEUfx(&uKS|L(~F-yPz~ z`^A%${v~aFeRal1JADAE8S3l1Up!goKWgeA-+J|8?-9NM{%NDf`bPTsg#KXvit6d$ zZz^lSzRg{UO?W2xuPzBd>2eiCn9y*sASI>W!d_dx4<|52eS)@G5sz<=P_ z1FTtM)dDG(IpwU9c59h&Ldl6JOM8W^cY)s%Zw;Q+xYT-I+AcGG)Bj9Rk8WINJt3{0 z@PFGpA3m8iY@_vpzr1IQdfm?_uLt<<9C4-fsrdhU^NZl!*6YUaOG4Iqb^gEytatr4 zwEV^T*njv8LwziA2Kc`zXi;DJ6TP3bzW46}`xh8*Pr}Ug-!=-*_}hK@ykM=hR`!40 z3fV7DdfR%!zajWO${~HevSwHvlYc^e03zyj|Fw7;Xo1mI%(g2>MEosFopNv~S}0DCLmS)pf!`}Z-9A3edpUY*#wvwx)hLdEX>iTDh`{{H#KamB~@ zzcT*Vf4*;qeN*q_Ks|HddjAvtBf^(T+pB@OD)dLRy(siHBG15YQ;vaauo zQL}D<_Vwydi4XkC?A`DwpV$3=9uTt5u$Rnu5+lf753nDq7=pIDP1@UBYtM=M?C;G3 zdQXB^H`YXLL-I^0SMFvHHfwt=v?It%uVO!$Sz@C3ZPDrWZT2T^t3iFS{~9}Feo#pN za}L%>ew!f@SY8BbIC7c2UagtdqVBcN3}1u#DU*M1KV&~X(644-9{qpqy$yJr)paL+ z-x*0WBaKGV*amEDGscG4*cO(*ut7HZwgr}DTf)WxIvUNqk_L}vg6S~dl0tE9aTsZXujT@$+tH#>iLaS`TeYRl^;X$s?VKrxFTLLNcG;g+!y_Pho^?D} z@ojas?Aw8Ft2)Q}OLw`BJKkBo*LBvhdfrX0^}_k}0yzioceS9mcc>jwdb`1U8{NiL zi+=99S!f~xV}So;qyY_;HrVsGYZ}ZQ0}`8TBH|*B{hu16;b8@bWd=+%KV4 zI{>>kPB>~@q@VBl&a(aP8rO3bJ?{A~^79)Gp4nXD>bm4s_Z!lR6`;J$ebk`zd)slK z;yA*TcyA;2Eyo!tw+=L)b8mJ%e8FRG5A=?q+Fi#2A?I1gb(gT0esI-O?%l3$F8(TF zdDa;-NVLHGl`pzOu1Dv7+r8iQ_R_y{kGMAC)X(vfS1$hz!mlrQ2e4;(sppvMR?o$r zi^Mvb-`UcO_E^kx2=L}l9)ALg4u4_K(dA;;WPmkwV>17K{&l0K0 z5-D+ogf}~Xw5V2XcD}Ueqn_8w7HmD@VPDxx}zO~@2=QGID=lG0p@@IsrA5vefsVRS{qy^k~QuyKX!Vghr z$Ck^>qfXC)%gaMj%80(h&e%3m-0W8Yz5oEs@W4`OE3xW8NfwC8nKvi|n+CGIz_ z%$Co0tCjm4E8N@bk0IyBmZDuw-;xIr_FZ#N*(v8u*PJT%xPNc+7t8D1+c!K_zS&)} z?W@R>{P0@Y8*~4nywTmX*yVZ%WA{?|)6VOBua>vFKidA|@+YNlzb4Y=Ice_;#@}9a zjd~IseqqIPGVh)=TIXL<@iHj8jqgg&{7@)gcXCdh6z%+D$>*fZ;-5>br}T3xe&YGD z%#@!?KD$e=`pCT%ua$kN`N4`eP`7H>l;r1M8MIRNyEiQVYQ>YHiE50`&waLHcgf+_ zzXA-^)R#T= zUTrC_RZ;hPgpZfJe!242ls>iG<2_TdYGt+ep!?}7f8#z=_U6?Wc(d*&SFQ$p0q~ex zEm-f}U2^$6Psxh1N9V4EPI-CR+R_r4n_j?fW3Gd8W1)jm`WRYtx0i6-OMZLG`;MZV zd`F4Qbg+%l(p~MZc~?17n|=a#WbH4#%LG28ezdw)9e3Zhf^+u!&6H^e=9W}GDWfmiPtn&KI@Jy+g@2O zsh)NJY-zCajQg(_4OV82Z$j6%2tI3k`SL7MU2^$8N7kqk_%Z1H*WBcpXWcbRw^zRI zzHGtcm2bFzSpT0Y-*Q)@AI>_em%mf_hU<#0hVP8JZ{A!$@)hUu0^eE3a_?H`;-55~ zE_+(tGJmCyGIOJEhm`nw={=qseOcpn%*v2co*XD>dzcGmsUvU_~pNNcEW$6owA@3SRG+FGj4mM!yBw)5_ir}Q5;e!J>v;iadY z-=F(>mB&-F=Dz|)7yP*DW(Otb%?|R|LF3Qn{LiW-o}<2!>J^^9*?2*9o#*c_4OE{+ z+RFgHP#pl~BTEC-n?2^X)d*L$1*#i84^&@Oy~OhoUq^LaiFxThq`lO43+P|iI8Yst zxX~XczG3qXz-sl)YA>9{KLEU0{pV`GI*nML`mTBz;U&g1fR_O}V3|%Lyjd_? z1U3r3Rq!_mX1`!=5zL@q4hkF={D|O>3Fdym92d+f!JHQOgy5eN{40X_p1>ag25{5h z8_>NK0_UiP3$VAZ+5wlU0l<~&AmBQ66!02>%>u6%e3$wJ@HYu2EbxGO449O9`GSn( zJSos=`~mV`YOs_BV@zFeVGrQWi3j!|2HVEtym=QQGa6;guK;@Qv z1U9%&sLwCRNO)Y}guqFG&7O;m#HBr+6Y7@>!U+HT(lNm7(#HXRwe)$w!DVj({>w6F z`NhVe%a#KE?6PLSTP_a+zIOQ-;1wTv9PsEzo(G)#$eZQY7!Avv6&D-7UcR)V*%)5Y zTv36VHv{vxE5d-SSBzDJjVG^oyyAfIjq2xt`RNsJ0{-60u$Pq1O4fg=z-EDAfnx$6 z7x=uuHw8LbZd{bhb)lvt6%>u&$#{@nu@Ogo63UttiPJsb|4HjgoW(jBfC)95jj!F1&ffK-NS@gXB zV&nTO-xQ3RBl!pn2wW<#!Ge;TgnQ!z#f4af#U)v1U7s`>L74j;Do?Q zfoeHp0|FZa_6QsoI3aLSpjsi60viPO2pktUA#hTlx9ckHCz;ae)&80~<-%Ah1VZ zM&P)>34xOW8?GW{kHCz;ae)&8Ck3iaLL)FEa9rSoz)6kSOqvOS>S~4q0viPO2+U~A zHIkdaae)&8Ck3i{Nh@$d;H1WEA-+LikHCz;aUI^u*l~fA0@byWkH7|jJpwb=o>1;f zCnP+nF%6Pd;Do?QfvQnTY$EItI4*EP;G{s+ETssXXkmC#U_+~<5||MG-@HW^9d zqwo-(bo`U!3g>QTpYvg7Rmm>+)10MumHw=Bb=i;0E^zg_o^kzW*Qomk?xUVlo-cX6 z=lQK?Rr!tO|8Mz!DPLX@su-`BsQ9OffVa_m-1~L!UwHq;yT0;Ml@C^awep$DS1Z3? z`P0f@RQ{&Y?Yqpk#@FOK=sWEDtnU%umwn&#earXPzSn(k`rh*W%Ja$gkRGqH+Qq?n6e_r*gs%xqntM9EoUj2vFC#xT;exiCIc25>zUoC+B z@MYK^;E(iN4O{RUc+9ycl7K}x1V8#g*n~;=)zk1?-w7Xo24CG9h0lLXEyNzfV(cjd zu!nFd_6(L`kKl6b2`tARz!mWMuY!-i7C!woSZ}R`&wf38^c&%m$3~(0g{K;OTF-mu z0v3iJT|&&I8!rN^n7?=myy@Cy!2I~yD**pJgcn`QR_OW^h6lIS=J2zH3+W5P4_&)H zm$oqc>ej1g#OKpGV6i)~w|NUj6g%n|PlxKoXksr{RRG?GZ#D3CZY9EBQB{C{fqfB& z`X+zxLaoI&86EiD%?kmy81n(IH7*8hH5LJGGcEz_FqQyz8cP9hFfIe!hwl(NRKKwT zFlwv>yu(-xc&BkC;Kz+Rz5eB@%VFIpl^aHMSL;=@34gg-`7zEtnNC0kg90Y84q%b3T z94i2O9V-DNj@5vDjw=BN9Cd)VI@STk92+oi4uLYEj({?uZgZ>#yxnmn;O~Pnp)#OM zs8LW3sgHwlNZkX6Ylj;kgOsX$}GO7Lulu7j@D3j`sL77xv0cBEs6_jc9ZBVAw%b-lF zzXWAky$Z^-`VJ`5>bsy!tM7yIPW3BL-l={A$~)CRgYr)G4k+(b{{qT8u{pmE(Ba&` zeM{#GK(})xpx3z?(C54ou-aJ%=m%v+%?0JCx&oA=Y85C)RV^q-)f!Nas^p!~QR0_De5 z+IcPDAy9r?9RcOX)osp3z}rE2x5|L>ZZ!(ZyVb`*dAGU;ly~DxNOgesf%0zkNl+eB zCqa2kJp#&OYTVfj_!uaUsn3J*nEHaV74VCoyjT4xDDPFzfbw4TXP~@SJqOBr)t`g% zUNr&Ad(}5VdB6HgP~NXz1?BzfJD|K@eHWDXtM7yIe)Tt?ykGq-C?8Ni1LXti=b(H* z{SVX=H-tg?fcgheKA?VudOo0j1Ikb1Tj(nQ@xx7k?viT(%S)~V^p?~C`bruBt4lUO z#$R5t0&qDf|4>~~(hj%^lz*sdK?w~|ay{T$P@YsfL3vW`0_9274a$>hFDOr{8$o$e zeH4@@)y<%MSoMJNVbu%DhgGEH7QjAGKCA{n`LMbbm!}?9F;G6DhCum&qwer`VG)Mp8(}4bss2CsZXLsr*OCBO2AKp@|5}vT69YN2T-n6 zEs&;R6~$~BMIV1rJ&oU=o5U&g9mX@pe>eW#a5`>x{ITO@#~kOy&byt@JHO-HTaqpL zqmu5@KPjy&YbiTYmcfVa>s%?(0j=H``(wlKlGMY-dK5CWrwf6>gQDlt4lIG z^-!ulzwDDY@gyOB01W3!N_0@*m#e#QW`tB_>d|F?I;5k1gOhn0cVgM)+cfSfoJ5-X zuM?*&rsnt5JmMfpk*ED{qK%;elo7?>t*{jiK(EALFAU-@4(*b_-wAu?(ucA8gV1Xf{=b3WH% zUUK$vMygOA&=cfAc+K%1h?dn0* zft#{B!H+xDXH_RWp1aiN)NXYGH?>ZxF7VVX;Fep|qZs{h{GCD$$JC&49Dff&<2(w@ zaSDHrUmN9mFKsPLBr!5G=A$iQNGUk_vOdcbrtKJ zhbvxG-^E|ZyUy9~J+At_FRIUZH#qveUv|FiTql2Ly{|dDD!(Ux$0~p7d<0?sovD1y z`QPyTZ+HfL-^1TeozLOEVQKyI`lL(MY6OH*1|GW@I6G4KJpaw?6Wbhp;2w&8fVr%vr0j>R}h5NvOa4-aA*T5p}n2$&#J zglsYUT0-eiZz#nCjbRD|1Z0{q0`*Lr$%4Evm+-bdlp5$V)5PzHrsTQD3`IKQu@URN ze(P1i;NfIw2zA~%7z~1=L$TP%)E3C7uC+%Mff@Uel5s)?FVaFvNY8m?@L%{ zQ+Gavk4`py%x9<~P|b;WU$nn9nM@>QqOG-N&RRXhFlnMPPNC#T56JC~W-#B;Gi1Fc zxNZg>Bl2)G7U@VtOjZ=H>49jfdt}IdjaujdGd5%4|~bx_LU9s6=EK`dXz$dEghcx(AYp!%!ljc32Z_YOk40nYE4WYR53tO}zVh zwdcBh!Cf5JVD~^YeqblK62A^WMUFYRJu#dN?g5i-y9gYb2F62Wy)Xv6!iusaA}uXjn4bL9TC0 zBwNf>n9Tx>3FhldnQ1{;g+lqKJ3?_-Vi61hM0I-v<;H@+XdD7A6w4u#iI|BvCTjti z>PjbuBmk2@H4S5WLGT5eOijY)zC`i>Tb~T>3qixggWc$r?gXRIFMQdRjHWO-k`^*F zXznl%M}m~7APGg|`B(HwOHwi;t{bF6H3iKyf**{=8xQsG)ESLnC?(hgTMcb$f>|rI zZH&*ASxV+2YXHXZE6jXODswZc+<$#@j+L0U~NA`a^eoV=P9NO?3?c zTDX>k1ow2c%N)T^Amlm|db0^C9!6x;#7J=pNj~XlJO~|)7nvJfW~{F}kvPy{4kj>k z+NKYJ-NbOvG}p%yhf}i8+#PiQTVpw-N1dL&4TXRo!^iR7CZY>k1(8R}yevyR7(#34l6i;NW4LZP9d zq+kmQD@0#!jv$FOdm&*E)|`R0m6$Bs%^0RQE&tTk1HoWZD0~1jw=GKajzlPu(!o8^ zK}=xaTH|PQ2mrIF6MCLOED137imMT&M-KW0(upQf5S5O`o3JKSeOwgk^`U~P456>| zIzbJ}azSw*f*n|Mid<<64Mt-lO(U`jRf9y+Xrx?$T#RFt0I{HX59Vp>k+d04u|V_> zB$se84oQV=_o z&so>C5fh&M*NJB`8ZlMpP&2eD+d6Oe#~qU^z{35HqoUXKcjm3k}Ca%jR%o zmBe6IA`C$*M5%l*-%N>-DPSJbdD}`|C5FP1cQSN%CzQW%#;(*zcmNZ;KN{v@LGYrP z%~TZfgB_O&idZ*I)f|d9nf8mG{Cl9hg4>6&`nU0E$PKe#X0<^lki%#2fT-T-UJ;cn za+07Y=qs7ZO}3LmWCj$4%_Cqg?ft-XfR^YtF(34kra>YZHX~qopsgMj?>7aKGCGhAP?j3|OLk^I8G1HpxTydcfkqhhxU<;_)Oo;Ls=qx;>6&*Txw@u-C zv`~g_Pe6ckk*eC6CXteGY9MjAX}Fi@scL0=0^Q08uzitQnH~|$p$g<^4#$4q8%;@G zc{7IX4bq~qO%TZK_CCnfX@s;x@|1ilCfx=MW)j9L-Ih!YHk+|nK}LIq3-%bCZp6K}JzJ8gqex+H84rGuObnBs@y^cKlWeu_}8 z$D(GcJ0THCl45ptN7D#&A5JitIFt6kcvm;TLL6z0!<;r@g(fKyh)xo)1F4!RBCIEz zbP_7=&jQ`Y?xh0(HUuXG0A|AuXj-fXp?1RQZgh%*GsA>Djm9n8-O@!nPzx*A9>>yN z-V17|V5Sw6MMFmk2TDkMTA{dvqbYgNE=!V%Ito3~1ec|l$xS1B5lhRBNrX30;O|@?T-k7|3k1!V*cK)lZt5!L+H>GYE_V^93bx^f72dAl^#>ueyfd#4PNhmgI21wsYVG zN*BiDtsj*q5*qPJ!F#MZEZ71205S)!kWyC2Qs5e0zqKwHObJCR*Jvc|96}SK2vF6~ z!DYLQBW!21cNkIIhNA^<$V-fayt2zvO27A0aO82w*qYpVTw^L_4)(@IgxB-vW~du8 z36AVFljPofOgniJJ{)OCM<@*aRS??|8nMjOrf4EFE*8iJ_5X6q^7uMGX#x;v@M8OZ2f!l+%lqZn`iQ^&1vW+&yd}aBHGh z2RPqE1KP%4ktu{B>KECmNk}{el`5tXHimH4T2-bx51E5>ltdTxVR3%6RViw+3(H02@I$XI>uBh!RUD3}6qKF!QQ-%xJ^ z^9mO=D0pd(K?3MyEHY{fC3E5Slr{u(z2cClEJ|h@1F|awnU*q>eA9-uRXa>A(H@wK zQJNuGSWqbyzP4+J0b^t>#sC*KW*@%AXxTXweHx*cSvriRfey4mnjX+WHd|Mm8&S*x z%xT+t7GgLJBZ5(=32Ys@GIp79yj$xvgmeW&hJ#eaA^An#yTJ+PV~s$5%btl4M6{#Dup9IB|_NnFFCiQTmV2HMvEX+KvSo zTmWJPFbW>wqIY-^;&3qaQJaxt7#zw6TlARGEI_XCCfiFG1virJ2aZ{HsGo*MN((V8 zOU11g)HMrkgW=kXzbQ4fSTz^RvDYr6916XUzz>Xpr%s;jsit8a!cf3J z)&W?&jHm@lCi9&J&=e3!!{Pd7!Az=4U-dN>Nw zyWr;lA*NnuvJG0jm+yt!nOyq7+b8)$uy;oh&qWTOd%E3S&`6?>e6*F*Q4k@k2zf!S==U{4pkh*kzzzlFpZ3O_vD#0i*A+#$SSA2jtqCDnM%atC4&q!?qac%IPcTz47!P>y?NRoTx zs$*E!6&C)WB`P_^n@nAXRRwAZai?3@JfCs-m`4_ObWs+wwL)PbMzIAy8YSKhDQr;5 z3uI-AtB_RlFtqLA5?h^Hk;$E09+R)Ppl^ z8Mc8pkwG(-zRVU~OEIoJ*eC^M6};>DiJ>TRbd%wsWpXPqT6jh8h|fpntE7i3D4vHz zoK9A#VDMJ4I~v^DmKetBmMaB|^E!KD(SD6cM&U4#fEaU);3J*Mq3tw`JXzy){ zwMJACJ7CGfAZ%HfdY!#o5a{y2BycJ-0_$N+yExpIW<i&J zM_pguc;NZWdhOgt<+*D;Ezhxa*1hE>y1;( zc|$_*c77Wb+z>Gf_UPe|4x%}-cS26&T+}bX!cU%m-_xb1cOgdmo0EAI>ka!v=YXbn z4a47&gb%6p2<>H7hsQ`D1R>&K?aMJ)jWYS|v>?y)xWN}df+1cVb6)e-zIIbqame63R9|JB}^0fqa zB(T$<{W0>MpSZKh67jXla?LjMF_x*|b~BlPm1E;fta5gKM2 zP!i>0z(tn~4{6^a&S}(cOD6Ezg5_KqPiQtwa4@|->B60AppuMAng{Lm2Yj>#>F7nD zYXxgfmO>4yxyg>us}DJCfHdjokR9Z3VId*0GJ~-{D$#<#R$mmE4|30s0U)g*O?9MuVbGwf z;MfO6J_u1p!zwAfXod7TU%yZU1VIEfh=U4A;cRd-7hFXs%xs!>ML15mB7}CL7v{7F zf+`8edNEF)JTAr-i1b{9)n_axhm#7!GaO47Wx8$HOci5Vu(fEDgGF!RBr1O~6n}j-;_|gesh=A;p0{BdU2pFgtaMUz4d7-G?>KbK+AqZtK@h~fguS4mwP8O#N_r?a&dWykLe)x zd_hL`5(?Dx+$Ia6xH*DyrpKu8a8kRbWN68cNGSZv&G$AO=}Hj8k?ZW!BahDR55?hB zO~OeN#hw^Wf8k(lUu!BH;+a!0g|f7TKJ6tI8?jgg;b>jqaRwevVGQIwPG`{OkZlif z+bTIClV?d*f>wWx6Zbt?|VrMV{3yEX5(AlpNxH~7#&wc27J&-`v#Y8Cb&^N_7N zs$1F*A2JV1yx{aAc5RC+-S?4U!C*}3*!CTm;8rJ#P=(U9UTeAT0DI%`<_zWtPHfE* zp&f)XC!w={rkE*)jXrz?BXB0#DpL+{-qQwRIXyond0Qu(2OzY z)51&&7tujcPxh&$lyz*0mB9KF{(ye0`OpVYM%Yu!AI-E*bVBFK&PJRbgr|3wBX;1Gy@Tq7njB(0^ySP6WV;vQkHUFdR4%^Wp&dn&yC7M*Ce4zaXL$DI8jg11DDKfDjhWfeSl|5&hC)2r2FzDt2 z21K=ZZ7QDzeV2bp+BZe$-D2}FDwOgCJ9Md{DOsrhaNbk9LcwLZ*`If5a46tP=IKNG z;(=KG^nd0&6X?MLM}p=IuoG72ktqC6CYztb>K80abzsmAaG5Pr9ya$dLY$?s&=BfG zrJT?K9AHIYHpeX5&9$huqEpZgaE@RGA%WFH+F-={bn%^wn#Jj>?L^^^+)bL9j`vwv zYjK{ET^=omIp^cz%dn3`TV{Sr!J)vLj;NP7#_1o{9m)WD5DkO7`X^L_yrpkLhFork4)x+b> z;v`O)M=%4Zkfx;o>2#O7HL_qd9Cs79aUmvu4ljolIf2vh>BAy6NZyZ zlm~@T-Uk9UOUrtX!f#l{IUGtWJ=-x!P}{WX?7fu_9GTEhlV`Y8(4K%=Pgq0G8&zPu zw6#Z%?5#a|hA06vTZr(?1+6n-qPXcVlQSx~vp_|zqSjMypI9$x9XEp&Y#Us#Kx!!p zP#a;d!ka6W@u3$-`icj8X(zfM8H(A9Rx1LhWoN)zXF@F+-S07M%GjGev>03N-nd8*Jx&T zVCr+N+|H3zp$It#+4&kBPK*y&%(+MC!)IuZ(uc@l%1C{P9L_ab?~z^Mh!v97Z(SP< zhV@A|o~purep*2l(o}$!q9zstfW9`ay^FuHVBJyF6gy2^VGhOgOM$k|-Lb@VOuda- zsM|&5VYgI@C7e+fQTb4R!Wg{)`>Oqxh~n99I|#8N7UFOYgXU0<$ub+(59~&6h+^B$ z90V3x1nwhoY3+g)AR7!4fI}LuLlzD}?jvcf+K3e|6c`Ms0+)XZ=OARSt7uQg#!Ww~ zWyf$B?9)%sbI6$MjUm|t+hcME4@zlw>LiTvui#t24cd2OsH;8aQfm zI5a%}63N}l$KAZymOWIt74#qoiWf*wW33d=p{Tgf7XywaVsTm@!AMOEL3|S`@WCd-) z+NSZlr2&WC&YFX2> z?H93{a_1cKOdoMaXUiuKtmPH=^-VjB34nt@_FK-MZX+n)?3HmIC+<;ey=-G)SK0?T zY*bzt*%)SLhsk+%7_%QcGPyV07fjhNcIi1pfytl46ExImrn8kJ6CRZ zfJR4%cEXux9KHeIza@KAP_^R=TVaKZKlq|nBfh4ETU7{0@y)HcQkOMZF;RR2G6rlK z-`Hx$uQ!>9kKwN$?`lzD9@AnyJCSw}DOBAab)DLWGQ0401Yh)GSy4b;gWBmiU%Usj z?MTsqvLbkPOC4g&ZBYjx^X)>dLilR~4C9$Vu4*Y$?gce5QP4F5A4eW+gWWpPG=bX0 ze{2)BwWd?eBh^meu`;oCE%0qaw#|j^Zo4*I`k4d~9tpL8FXR1D>s%}EP*oU{^Yq1|w z%5?|6H5*W>8Ru549wmQ;kuS$Pgi*!JD{9HCeY`oJ#|P}2b>v1kol#ytLfv?hH_10$ z7<+PE2wzYo=kCHEPF^Wh*@*ad^mwD%fp)MJN0d6yZE;UOo>-gXyK+NFPab27dXY~G zIYgxOYw(S`0D6Ue7yw-e-@=PaOr6BA2g!FS;K;!PNQwP1i%u=N0cqGrY2cet&m?Ng znz9Y5Y8Ps@2W{D@TJcn#0CHK4KchL%37kFT)gh$Q=V|GvO|wQ79hZK{IAA;oW}=1!5%n_k-@n%a9;{vR9=CyIEuOrEQ@n5jxlE) zSPC|8tXdfJXUj)j`QD|3QHPlDd_<`^ZKw(PHeVO@5zf>!xSu?Y1sO^uC*mN1$O7^c zXOWuM4IF1Nc`a$pCpDk5EQVGx$08|Qqv;7l(l)iC9$_sNa7e_GC0o&Awl;v6LA0IP zO|7e!6f8%NF6%TCC1(^zaE(%j>ycj1(LvO15SoWI8%7R#Z1S^;Ibp{JX|;X`ARLl$ z4dBVSOX+~+9O{yv*`_t}#IdKW8Jc-KUl5zYDg^MOjvu}|(Y1rMm1V&K^BC?C}_oUex_TsHL5j zY3wgHHiW-JfV4{(Pu|VTqI};K=A~)+kt1^rqmS`}z>Bsa9cK^I_u-FE+bU9-$3J-W znYnEe=wba`8c>|uj7`XViSv}&g>&eG^>uOfeEVH0O9skI`~V~udy{NL=Im#GXHK+% zU&0t-t;qgeF+=9j4_3MJ+k3^i%{l$q#bckHm5}&f1yi6{pSfuQRw6Cj&l%W27-zhfKgZH%zv@MbMQO;G=S+<`40Hryv zR%*VMX?sv=p%o3QbG04wzE&NXU()=d>7X@%E$LY?8nHCX7#GMHA2d#;7OE974N(f$ zS{RvH6@O3zor=OXa;BDY0|tt9(Suow&ooo0Po<*bu+5SHT0o;%tBPT~!AucTqquEY zPG&p)y>)};pP8Caiw1EGVOushdX*3OJv=&yJMx5r4{|!1f^B`B8Vf;rKm%`}M z($o#2U0KZB)b;k1`q!Mgs%D=|Pkfh6cmP)Yg|@Fq`$+bnW?a*#E4K?rQ4f<_Xx&qz z6s`;!@opPfYBSdX6fJfNK5-tnfM#lXy{1z0^s^I`ddAQ~p`Xgcx8}KOPa+h-8fqA& zb7e#k!?h9D@HpZQ$apo+ZVA~s=Yuk}*eev1_9|U_e)3jtAJR<~vYHt=KD2c6LQ9Ka zy>5i0Uu0X(te3r>yc+hjtRA;e*U?yKPfitvG;I5&jpmFi9JP%a=>6!4>8qL|jj8It z@U8J@Ub(0JOLuGy-+07zt#ZPPP!ccqgk;s~O#5B_D0nRHKbvm($-dujU5Bzu&*#S?2F3RffagfiiakbGoDq0L94*Bj+fOtAvy_ za~&lvgDI3hi#np&=ztE;-hmt(rD)m0i~QAwW3j{#-hr^Aq#RW9T~3nE^AF=i!$ta0 zs+b*$9W|vEqft;?fNV%VB`dEkODDXr+M#KXtEOaei;ePfR7aCob@QQrSZ)QX=wlXh zl&_pkv}%B^nWN@SE0USI%Pk^rwP7r>t5XA7t5j*lV#WFoJIdT{^lIi9{%5l?cM(0} z*29zCjkoM>-M87@BpA&Ki;ZSW(Xp9hC1o|)Q!ba&>-J|avWFzwZl!3)Xw1P6(v)E^ z*BJP{s#0`p_9E~I`agS-7g@~#0eI8RVvixaHCq8v;NWc zxylWeLbzu1rJB)K+;0EqYYzMll|S>8Kl38+taA2Ai`%?&stu=Igq{OlFNSvXb%Gx; z|F==y(KnF$TNM}}JFLac+bsJnm*yF3W_L)R{6dD|7kUPc3f-?|m`2<216dAK6yi+P zWEUZaF^`v1J-Y~V3oqq?67WAL&|C!x)ZwjmIoY_(Q}b#vFQF!{u-FyI&cLHWI!UKy z|Bh9%)-R$%bdxdgM$OoKWWb`Nyd`csBOfA*@&(x(MQMY8?m>s6W^BbA$g+I#lG?#a z{DJ~ztj?zxt@{@VA<|G!$Fe{rGe^()$2OqNW1H<_!6-rj$t`m4DORoVBFL`HFQ%4L zlX(|ECdM9Pr&&3?dqDuSWM}^vWUTbcyZ*5oE^w9Tx9lRB8`&j({0{~clI)^Dz=e+X z__LM%Y>mvP>^y&VKIJs?$S%swf^y0vw&}65)XC3QTl=hYw>) zEV*(l1dv@}3zB(!o9_vT2m&P;6%`n5$GGMA{$dx@L%zaN8LwAAbZ2@YA$%p6bUw&# zpTk?@DnUFdhC(%+2ziJFu%X~tl|eUZH+ImUZRFc9!HB2?;gMrtFKUBoX%Xg` z(^{>F4jao-DZ)O2kej0_b$J$91!{r%K`rEkhYtk`q9UgpP;pBG2pMxk)~dwEf9N~I zr^hTRV(2q`smTs{0;Ptp+TrthF(M^K^KFyBc ze;uFomMf>1<4`kpiaq>$tQmV{p$}7rVj5uz zg0b(RK-S?$75D{7AK%A*BxML1dDv1D`Du~qAhUVPl#`tYkp^ui0_&78@F^-kZB_X2 z8$@ncP`eGUNWK?X&M%~kCHOYG$)7###Y}NjYZdUVDkx5AsGgZ33rC-j(iSe%98Yu4 zjZTG7$Udu?6Ai7&ex21A`!!@PdX^Rq*$uW8gz48&6;v5@{kmH}Af#%>-gU2mYVu)Z zX}Hy7UnEO+_&MkN*(dzjSNMF*pZy+c4h6S{^U{a#(Ncm+O7f$Xut+! zD)sLPQ%OG_ozDb|F#fo1?1d7?hr)yL5Mq?vVL2x&vZ!hgP=; zOU^rxAv#Xb>^YFa9uU)HHw-S3b-Q8uNZWSHxMHelv}P*u6<8j|8H{F!qZ|#v;MdHp znJan_511q9Wi%8`-|d4OSS}f4PN93zL)rb57|Sh#;}ngnqjh>Rz37nM-T;wJJ%1N0 zA?ZzoI;5Yqv37JbwHo4Uj&AW%YmgA5*ny(?0PjLjvs(V_1DBwEqqkcxsF&`d>;qcJ zJs{nZy+_*nfbOg80}kCwSt8g=*#~rir#PWdv(XHiB1w)?cjE;S_+O;W!i5Vx99`-_ zhsUKQzX-YPQ|PC1J=kKgVw9gk>eJ8qufoZ(Z zrBHf@n{4KV`ojNCrQAMOsoTE^a!3EqNiZM9(&Wb6na}Rugu#MYW7B+(Aw!*meVrs+0&AuTc==uWS%Wm4hnYEpj*gaCHV~!{9!>K zdCOfT4!1w^MWn?_;tmH5lFU<;($V%C@9Vf~rQ52-*AOEJuZMk@dB%RPwg{fH5p&(T-Y@8)F7mia zS)*_H+)z$Z%h834UF`CJW+SLba+CdlaRn|G4A(%yUmRyy=t&ip>Ez3c(^+q{&Dg|M z7r4q$#+qUxD{?(_BNsqI+2EBv%P#amfaywauRx_C?m)B5VXq|~mTq~NgP5hAee@W# z7S_;s$}G)1taE)=y8PLiqxaV+$Tsx)vpz1l`3HVNzV8Cd3?3HgarEJZMB^3zV;boC z-(2Bx(j@>9HM)pwIJ$%xQHzW&f*jM?EU{__oKyl&7K#!I3YAt42~3x`;B}DT5vlEH zi@Y3l|Hs>I-aCK&+9gmWiarLIv!gX>&P@ws;V!b%&J*vR>#R#W+JwB8A8%JI~XSLgWxp zBBV(8SppRA&yEu>o`Xs&AjX%h4vD6=%zlyC;0^1%T*!+R@Fqlx1(f{?$({kK9)At^ z+m62-`0HlG%LLyg_?vQ_6D?1xKY>`t0mnI{QY+Gq(wUn6*i z;5mX9*kvG=T8{uT$|{c513(Yz&Z(Kpw}pIzk*zxwr9+F7ROc({&~$`aBbv)- zK7k9Zwr8k~ISl1A{`G_-E1~J_aF19^GXH*#0H|b5%9)lU z&yGkRLL{Ll$N(^_UdJBLd$g9Bp(P3d>6TTWsL4V7KFfeK-V*qy4!ro5_!Sr3}zfPJ^usRcRk@$301W z?@X0ajH?R`<_4R<`f72JBkT>Bgb`z@T+_Ie-JkxD=E7=TKcY^xMB+R$K6WJbo5> zRlq)+Z+%#6Rlu%dUG2u&&FikJtF7C#wr>5ZKr`+G;+s=j;`-9gs=%&ceE2Vn>jd5S zfsXi=I6kmgt}om$XLfGa4bfb|IF4NWQGoMYbPeth6cT*QnyH5qEld)LYSqSEv%AOWs3RO|cC;+*YjG1Rs1ofYm=SzmLV zu|8Q?m9t8R`M4=|*yeG4ucS>r4U_u6te)azZ!>TLewJ@F})V|rso3I+G40pvsEVdQ83>9nlbe@Lp9BodP-Ax^KI6)TyLnh50DQyTt00!y-w(t z5752VZM^B(pkwwJs$;e)SrHbF+ONX_nm1#q79#$4jXx*c$n}sMC9E zqf$Ez+#H!@=FOOkb)$89X6uy-8S3U)Gn3!qP1R2M+E4C_CDx}_3Z>)9X}@l*_8Dr= zdzO&9^4dJp7iCx0!^EWBCST#vKU7Xjb^h#^e$_>Wnp61gR{J)vN*LEb76 z&vWq$&n0tkUBpmPei!e(Zvw9hV0KJft!=1XyJ^#g_qkeg<1;eb@!P}b2pB@K0*Rh$n-+w+b4%=Nj6L`~9y}%d zM1#8NyyjeioO3@0sekX&W{#8A80-}!sp=cC*0&pL3y&}n5a-;z5I znJaatflq&-&TAR$txri6 zeZb;86yV{9H1rQH(ReujJW$nzPbH-AbH?!D$q(PCt9cu_*nY*U^*w+K#nCv!=WFQT zQHKh(Y~D!YuYa6pjZ=<=UuT>O1p^KJ(x20J1;ujZ^{-j(0WesuT+6gS&*hcjlOy=L z3Oo1J-_JSm)Xx|W5Ig+KZbeK|tOp=PmwDoUZ3rD0bpB zeW#FqqvV(Wf*mo1%`WxHn?AqHeqL*3RD!2=>RSjrTJUEeSKgp*vrf|U%s($~@ZU1U zRQdDxg?FNaKz*g;ACRemI_Z=Cya_Npr@s`MHE6f~Z#_=eqYu;qq%^GC*t})K+X^ta z!H;}*AYDINkKf8deTUEoY@Pnb0Y2U^4Hr;PU@`_!$2ItaYe-#z zTnh8iqZvWIgEH>?%7Oi_N7~Y9l@Ue%uw=V``6l#!y^Pl` RJWSexperienceIdeology - 1.6.1.4 + 1.6.1.0
  • RimJobWorld >= 5.3.0
  • diff --git a/About/RealAbout.xml b/About/RealAbout.xml index adc0ccf..49ad9cd 100644 --- a/About/RealAbout.xml +++ b/About/RealAbout.xml @@ -6,9 +6,9 @@
  • 1.3
  • 1.4
  • 1.5
  • -
  • 1.6
  • +
  • 1.6
  • - 1.6.1.4 + 1.6.1.0
  • Ludeon.RimWorld.Ideology diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b110e7..28bc1e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## Version 1.6.1.0 +### by ElToro +* Rimworld 1.6 update + ## Version 1.5.1.4 * Adapt to the new RJW interaction rework ### by ElToro From aa138464dfcdcbc5adcfa9a552a6c789fecaea90 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 20 Sep 2025 16:56:03 +0500 Subject: [PATCH 59/64] Fix 1.5/1.6 LoadFolders --- LoadFolders.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LoadFolders.xml b/LoadFolders.xml index b05e0ad..95adb77 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -13,9 +13,9 @@
  • 1.5
  • Biotech/1.5
  • - +
  • /
  • 1.6
  • Biotech/1.6
  • -
    + \ No newline at end of file From 2bbc4dac794fcb8131ef91fc1dbce5d0f7e5d942 Mon Sep 17 00:00:00 2001 From: Wailwolf Date: Fri, 27 Feb 2026 12:29:45 +0000 Subject: [PATCH 60/64] Update 10 files - /Languages/French/DefInjected/KeyBindingDef/KeyBindings_Sexperience.xml - /Languages/French/DefInjected/PawnRelationDef/PawnRelations_Bastard.xml - /Languages/French/DefInjected/RecipeDef/Recipes_Surgery_Hymen.xml - /Languages/French/DefInjected/RecordDef/Records_Sexperiences.xml - /Languages/French/DefInjected/RecordDef/Records_Sextypes.xml - /Languages/French/DefInjected/RulePackDef/RulePacks_VSIE.xml - /Languages/French/DefInjected/SkillDef/SexSkills.xml - /Languages/French/DefInjected/StatDef/SexAbility.xml - /Languages/French/DefInjected/TraitDef/Traits_sex.xml - /Languages/French/DefInjected/VSE.Expertise.ExpertiseDef/ExpertiseSex.xml --- .../KeyBindingDef/KeyBindings_Sexperience.xml | 7 ++ .../PawnRelationDef/PawnRelations_Bastard.xml | 9 +++ .../RecipeDef/Recipes_Surgery_Hymen.xml | 11 ++++ .../RecordDef/Records_Sexperiences.xml | 9 +++ .../RecordDef/Records_Sextypes.xml | 64 +++++++++++++++++++ .../RulePackDef/RulePacks_VSIE.xml | 39 +++++++++++ .../French/DefInjected/SkillDef/SexSkills.xml | 21 ++++++ .../French/DefInjected/StatDef/SexAbility.xml | 9 +++ .../DefInjected/TraitDef/Traits_sex.xml | 27 ++++++++ .../ExpertiseSex.xml | 39 +++++++++++ 10 files changed, 235 insertions(+) create mode 100644 Languages/French/DefInjected/KeyBindingDef/KeyBindings_Sexperience.xml create mode 100644 Languages/French/DefInjected/PawnRelationDef/PawnRelations_Bastard.xml create mode 100644 Languages/French/DefInjected/RecipeDef/Recipes_Surgery_Hymen.xml create mode 100644 Languages/French/DefInjected/RecordDef/Records_Sexperiences.xml create mode 100644 Languages/French/DefInjected/RecordDef/Records_Sextypes.xml create mode 100644 Languages/French/DefInjected/RulePackDef/RulePacks_VSIE.xml create mode 100644 Languages/French/DefInjected/SkillDef/SexSkills.xml create mode 100644 Languages/French/DefInjected/StatDef/SexAbility.xml create mode 100644 Languages/French/DefInjected/TraitDef/Traits_sex.xml create mode 100644 Languages/French/DefInjected/VSE.Expertise.ExpertiseDef/ExpertiseSex.xml diff --git a/Languages/French/DefInjected/KeyBindingDef/KeyBindings_Sexperience.xml b/Languages/French/DefInjected/KeyBindingDef/KeyBindings_Sexperience.xml new file mode 100644 index 0000000..ab0091e --- /dev/null +++ b/Languages/French/DefInjected/KeyBindingDef/KeyBindings_Sexperience.xml @@ -0,0 +1,7 @@ + + + + + historique sexuel + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PawnRelationDef/PawnRelations_Bastard.xml b/Languages/French/DefInjected/PawnRelationDef/PawnRelations_Bastard.xml new file mode 100644 index 0000000..d221a5e --- /dev/null +++ b/Languages/French/DefInjected/PawnRelationDef/PawnRelations_Bastard.xml @@ -0,0 +1,9 @@ + + + + + bâtard + + bâtarde + + \ No newline at end of file diff --git a/Languages/French/DefInjected/RecipeDef/Recipes_Surgery_Hymen.xml b/Languages/French/DefInjected/RecipeDef/Recipes_Surgery_Hymen.xml new file mode 100644 index 0000000..fa5c6a1 --- /dev/null +++ b/Languages/French/DefInjected/RecipeDef/Recipes_Surgery_Hymen.xml @@ -0,0 +1,11 @@ + + + + + hyménoplastie + + Pour redevenir vierge, aucune tricherie. + + restaure un hymen + + \ No newline at end of file diff --git a/Languages/French/DefInjected/RecordDef/Records_Sexperiences.xml b/Languages/French/DefInjected/RecordDef/Records_Sexperiences.xml new file mode 100644 index 0000000..4dcb9e1 --- /dev/null +++ b/Languages/French/DefInjected/RecordDef/Records_Sexperiences.xml @@ -0,0 +1,9 @@ + + + + + désir sexuel + + À quel point j'en ai envie. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/RecordDef/Records_Sextypes.xml b/Languages/French/DefInjected/RecordDef/Records_Sextypes.xml new file mode 100644 index 0000000..0c6d70a --- /dev/null +++ b/Languages/French/DefInjected/RecordDef/Records_Sextypes.xml @@ -0,0 +1,64 @@ + + + + + rapports anaux + + Le nombre de rapports sexuels anaux. + + + fellations + + Le nombre de fellations. + + + cunnilingus + + Le nombre de cunnilingus. + + + doigtages + + Le nombre de doigtages. + + + masturbations avec pieds + + Le nombre de branlettes faites avec les pieds. + + + appareils génitaux touchés + + Le nombre d'appareils génitaux touchés (masturbations avec main ou doigtage). + + + masturbations + + Le nombre de masturbations. + + + rapports divers + + Le nombre de rapports sexuels divers et variés. + + + rapports bucaux + + Le nombre de rapports bucaux reçus. + + + orgasmes + + Le nombre d'orgasmes. + + + partenaires sexuels + + Le nombre de partenaires sexuels. + + + rapports vaginaux + + Le nombre de rapports vaginaux. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/RulePackDef/RulePacks_VSIE.xml b/Languages/French/DefInjected/RulePackDef/RulePacks_VSIE.xml new file mode 100644 index 0000000..7b96456 --- /dev/null +++ b/Languages/French/DefInjected/RulePackDef/RulePacks_VSIE.xml @@ -0,0 +1,39 @@ + + + + + +
  • r_logentry->[INITIATOR_nameDef] et [RECIPIENT_nameDef] [talkedabout] [SexTopic].
  • +
  • r_logentry->[INITIATOR_nameDef] [commentedabout] [SexTopic] avec [RECIPIENT_nameDef].
  • +
  • r_logentry(p=0.8)->[INITIATOR_nameDef] [commentedabout] [SexTopic] à [RECIPIENT_nameDef].
  • +
  • talkedabout(p=4)->ont parlé de
  • +
  • talkedabout->ont partagé un mot sur
  • +
  • talkedabout->ont échangé à propos de
  • +
  • talkedabout->ont bavardé à propos de
  • +
  • talkedabout->ont discuté sur
  • +
  • talkedabout->ont plaisanté à propos de
  • +
  • talkedabout->ont ri sur
  • +
  • commentedabout->a dit quelque chose sur
  • +
  • commentedabout->a dit un mot à propos de
  • +
  • commentedabout->a fait un commentaire sur
  • +
  • commentedabout->a commenté à propos de
  • +
  • commentedabout->a plaisanté sur
  • +
    + +
    \ No newline at end of file diff --git a/Languages/French/DefInjected/SkillDef/SexSkills.xml b/Languages/French/DefInjected/SkillDef/SexSkills.xml new file mode 100644 index 0000000..d51b19c --- /dev/null +++ b/Languages/French/DefInjected/SkillDef/SexSkills.xml @@ -0,0 +1,21 @@ + + + + + sexe + + Compétence sexuelle. + + +
  • subject->le sexe
  • +
  • subject->la baise
  • +
  • subject->l'acte intime
  • +
    + + sexe + +
    \ No newline at end of file diff --git a/Languages/French/DefInjected/StatDef/SexAbility.xml b/Languages/French/DefInjected/StatDef/SexAbility.xml new file mode 100644 index 0000000..775eefc --- /dev/null +++ b/Languages/French/DefInjected/StatDef/SexAbility.xml @@ -0,0 +1,9 @@ + + + + + capacité sexuelle + + Mesure si un pion est capable d'avoir des relations sexuelles et dans quelle mesure il est doué pour cela. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/TraitDef/Traits_sex.xml b/Languages/French/DefInjected/TraitDef/Traits_sex.xml new file mode 100644 index 0000000..aafe134 --- /dev/null +++ b/Languages/French/DefInjected/TraitDef/Traits_sex.xml @@ -0,0 +1,27 @@ + + + + + Vierge abîmée + + [PAWN_nameDef] n'avait jamais eu d'expérience sexuelle. Cependant, son hymen était endommagé pour une raison inconnue. + + BUGGÉ ! LES HOMMES NE PEUVENT PAS AVOIR CETTE CARACTÉRISTIQUE + + Puceau + + [PAWN_nameDef] ne l'a jamais fait. + + Vierge ? + + [PAWN_nameDef] semble expérimentée. Mais son hymen est toujours présent. + + BUGGÉ ! LES HOMMES NE PEUVENT PAS AVOIR CETTE CARACTÉRISTIQUE + + Vierge + + [PAWN_nameDef] ne l'a jamais expérimenté. + + BUGGÉ ! LES HOMMES NE PEUVENT PAS AVOIR CETTE CARACTÉRISTIQUE + + \ No newline at end of file diff --git a/Languages/French/DefInjected/VSE.Expertise.ExpertiseDef/ExpertiseSex.xml b/Languages/French/DefInjected/VSE.Expertise.ExpertiseDef/ExpertiseSex.xml new file mode 100644 index 0000000..4d844ba --- /dev/null +++ b/Languages/French/DefInjected/VSE.Expertise.ExpertiseDef/ExpertiseSex.xml @@ -0,0 +1,39 @@ + + + + + Dominant + + Un expert en domination sexuelle. + + + Sexualisation + + Une personne obsédée par le sexe. + + + Prude + + Une personne expérimentée en matière de sexe, mais qui a décidé qu'elle n'aimait pas ça. + + + Viol + + Un violeur expérimenté. + + + Sensualisation + + Un expert en matière de sexe et d'activités sensuelles. + + + Soumis + + Un expert en soumission sexuelle. + + + Violé + + Une expertise dans l'art de se faire violer. + + \ No newline at end of file From 723ab5f55c207ce2bad6f199ff35c7665982dbae Mon Sep 17 00:00:00 2001 From: Wailwolf Date: Sun, 1 Mar 2026 23:01:40 +0000 Subject: [PATCH 61/64] Update 74 files - /Languages/French/DefInjected/KeyBindingDef/KeyBindings_Sexperience.xml - /Languages/French/DefInjected/PawnRelationDef/PawnRelations_Bastard.xml - /Languages/French/DefInjected/RecipeDef/Recipes_Surgery_Hymen.xml - /Languages/French/DefInjected/RecordDef/Records_Sexperiences.xml - /Languages/French/DefInjected/RecordDef/Records_Sextypes.xml - /Languages/French/DefInjected/RulePackDef/RulePacks_VSIE.xml - /Languages/French/DefInjected/SkillDef/SexSkills.xml - /Languages/French/DefInjected/StatDef/SexAbility.xml - /Languages/French/DefInjected/TraitDef/Traits_sex.xml - /Languages/French/DefInjected/VSE.Expertise.ExpertiseDef/ExpertiseSex.xml - /Languages/French/DefInjected/GoodwillSituationDef/MemeCompatibility_Sex.xml - /Languages/French/DefInjected/HistoryEventDef/Precepts_Bestiality.xml - /Languages/French/DefInjected/HistoryEventDef/Precepts_Incest.xml - /Languages/French/DefInjected/HistoryEventDef/Precepts_Masturbation.xml - /Languages/French/DefInjected/HistoryEventDef/Precepts_Necrophilia.xml - /Languages/French/DefInjected/HistoryEventDef/Precepts_Rape.xml - /Languages/French/DefInjected/HistoryEventDef/Precepts_Sex.xml - /Languages/French/DefInjected/HistoryEventDef/Precepts_Virginity.xml - /Languages/French/DefInjected/IdeoPresetDef/IdeoPresetDefs_sex.xml - /Languages/French/DefInjected/InteractionDef/Interactions_SexTameFemale.xml - /Languages/French/DefInjected/InteractionDef/Interactions_SexTameMale.xml - /Languages/French/DefInjected/InteractionDef/Interactions_Speech_sex.xml - /Languages/French/DefInjected/IssueDef/Precepts_BabyFaction.xml - /Languages/French/DefInjected/IssueDef/Precepts_BestialBreeding.xml - /Languages/French/DefInjected/IssueDef/Precepts_Bestiality.xml - /Languages/French/DefInjected/IssueDef/Precepts_Incest.xml - /Languages/French/DefInjected/IssueDef/Precepts_Masturbation.xml - /Languages/French/DefInjected/IssueDef/Precepts_Necrophilia.xml - /Languages/French/DefInjected/IssueDef/Precepts_Pregnancy.xml - /Languages/French/DefInjected/IssueDef/Precepts_PregnancyAnimal.xml - /Languages/French/DefInjected/IssueDef/Precepts_Rape.xml - /Languages/French/DefInjected/IssueDef/Precepts_Sex.xml - /Languages/French/DefInjected/IssueDef/Precepts_SexProselytizing.xml - /Languages/French/DefInjected/IssueDef/Precepts_SizeMatters.xml - /Languages/French/DefInjected/IssueDef/Precepts_SocialAffection.xml - /Languages/French/DefInjected/IssueDef/Precepts_Submissive.xml - /Languages/French/DefInjected/IssueDef/Precepts_Virginity.xml - /Languages/French/DefInjected/JobDef/Jobs_AnimalSexTame.xml - /Languages/French/DefInjected/JobDef/Jobs_Ritual_Sex.xml - /Languages/French/DefInjected/MemeDef/Memes_Sexual.xml - /Languages/French/DefInjected/PreceptDef/Precepts_BabyFaction.xml - /Languages/French/DefInjected/PreceptDef/Precepts_BestialBreeding.xml - /Languages/French/DefInjected/PreceptDef/Precepts_Bestiality.xml - /Languages/French/DefInjected/PreceptDef/Precepts_Incest.xml - /Languages/French/DefInjected/PreceptDef/Precepts_Masturbation.xml - /Languages/French/DefInjected/PreceptDef/Precepts_Necrophilia.xml - /Languages/French/DefInjected/PreceptDef/Precepts_Pregnancy.xml - /Languages/French/DefInjected/PreceptDef/Precepts_PregnancyAnimal.xml - /Languages/French/DefInjected/PreceptDef/Precepts_Rape.xml - /Languages/French/DefInjected/PreceptDef/Precepts_Ritual_sex.xml - /Languages/French/DefInjected/PreceptDef/Precepts_Sex.xml - /Languages/French/DefInjected/PreceptDef/Precepts_SexProselytizing.xml - /Languages/French/DefInjected/PreceptDef/Precepts_SizeMatters.xml - /Languages/French/DefInjected/PreceptDef/Precepts_SocialAffection.xml - /Languages/French/DefInjected/PreceptDef/Precepts_Submissive.xml - /Languages/French/DefInjected/PreceptDef/Precepts_Tame.xml - /Languages/French/DefInjected/PreceptDef/Precepts_Virginity.xml - /Languages/French/DefInjected/RitualBehaviorDef/Ritual_Behaviors_sex.xml - /Languages/French/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml - /Languages/French/DefInjected/RitualPatternDef/RitualPatterns_sex.xml - /Languages/French/DefInjected/ThingDef/Buildings_Ideo_sex.xml - /Languages/French/DefInjected/ThoughtDef/Precepts_BestialBreeding.xml - /Languages/French/DefInjected/ThoughtDef/Precepts_Bestiality.xml - /Languages/French/DefInjected/ThoughtDef/Precepts_Incest.xml - /Languages/French/DefInjected/ThoughtDef/Precepts_Necrophilia.xml - /Languages/French/DefInjected/ThoughtDef/Precepts_Pregnancy.xml - /Languages/French/DefInjected/ThoughtDef/Precepts_PregnancyAnimal.xml - /Languages/French/DefInjected/ThoughtDef/Precepts_Rape.xml - /Languages/French/DefInjected/ThoughtDef/Precepts_Sex.xml - /Languages/French/DefInjected/ThoughtDef/Precepts_SizeMatters.xml - /Languages/French/DefInjected/ThoughtDef/Precepts_Submissive.xml - /Languages/French/DefInjected/ThoughtDef/Precepts_Virginity.xml - /Languages/French/DefInjected/ThoughtDef/Thoughts_Ritual_sex_Quality.xml - /Languages/French/Keyed/RJW_Sexperience.xml --- .../MemeCompatibility_Sex.xml | 19 ++ .../HistoryEventDef/Precepts_Bestiality.xml | 19 ++ .../HistoryEventDef/Precepts_Incest.xml | 22 ++ .../HistoryEventDef/Precepts_Masturbation.xml | 7 + .../HistoryEventDef/Precepts_Necrophilia.xml | 7 + .../HistoryEventDef/Precepts_Rape.xml | 22 ++ .../HistoryEventDef/Precepts_Sex.xml | 19 ++ .../HistoryEventDef/Precepts_Virginity.xml | 16 ++ .../IdeoPresetDef/IdeoPresetDefs_sex.xml | 19 ++ .../Interactions_SexTameFemale.xml | 47 ++++ .../Interactions_SexTameMale.xml | 55 +++++ .../Interactions_Speech_sex.xml | 133 +++++++++++ .../IssueDef/Precepts_BabyFaction.xml | 7 + .../IssueDef/Precepts_BestialBreeding.xml | 7 + .../IssueDef/Precepts_Bestiality.xml | 7 + .../DefInjected/IssueDef/Precepts_Incest.xml | 7 + .../IssueDef/Precepts_Masturbation.xml | 7 + .../IssueDef/Precepts_Necrophilia.xml | 7 + .../IssueDef/Precepts_Pregnancy.xml | 7 + .../IssueDef/Precepts_PregnancyAnimal.xml | 7 + .../DefInjected/IssueDef/Precepts_Rape.xml | 7 + .../DefInjected/IssueDef/Precepts_Sex.xml | 7 + .../IssueDef/Precepts_SexProselytizing.xml | 7 + .../IssueDef/Precepts_SizeMatters.xml | 7 + .../IssueDef/Precepts_SocialAffection.xml | 7 + .../IssueDef/Precepts_Submissive.xml | 7 + .../IssueDef/Precepts_Virginity.xml | 10 + .../DefInjected/JobDef/Jobs_AnimalSexTame.xml | 19 ++ .../DefInjected/JobDef/Jobs_Ritual_Sex.xml | 22 ++ .../KeyBindingDef/KeyBindings_Sexperience.xml | 7 - .../DefInjected/MemeDef/Memes_Sexual.xml | 210 ++++++++++++++++++ .../PawnRelationDef/PawnRelations_Bastard.xml | 9 - .../PreceptDef/Precepts_BabyFaction.xml | 19 ++ .../PreceptDef/Precepts_BestialBreeding.xml | 29 +++ .../PreceptDef/Precepts_Bestiality.xml | 51 +++++ .../PreceptDef/Precepts_Incest.xml | 29 +++ .../PreceptDef/Precepts_Masturbation.xml | 14 ++ .../PreceptDef/Precepts_Necrophilia.xml | 29 +++ .../PreceptDef/Precepts_Pregnancy.xml | 29 +++ .../PreceptDef/Precepts_PregnancyAnimal.xml | 19 ++ .../DefInjected/PreceptDef/Precepts_Rape.xml | 53 +++++ .../PreceptDef/Precepts_Ritual_sex.xml | 29 +++ .../DefInjected/PreceptDef/Precepts_Sex.xml | 29 +++ .../PreceptDef/Precepts_SexProselytizing.xml | 9 + .../PreceptDef/Precepts_SizeMatters.xml | 19 ++ .../PreceptDef/Precepts_SocialAffection.xml | 29 +++ .../PreceptDef/Precepts_Submissive.xml | 19 ++ .../DefInjected/PreceptDef/Precepts_Tame.xml | 14 ++ .../PreceptDef/Precepts_Virginity.xml | 44 ++++ .../RecipeDef/Recipes_Surgery_Hymen.xml | 11 - .../RecordDef/Records_Sexperiences.xml | 9 - .../RecordDef/Records_Sextypes.xml | 64 ------ .../Ritual_Behaviors_sex.xml | 57 +++++ .../Ritual_Outcomes_sex.xml | 187 ++++++++++++++++ .../RitualPatternDef/RitualPatterns_sex.xml | 39 ++++ .../RulePackDef/RulePacks_VSIE.xml | 39 ---- .../French/DefInjected/SkillDef/SexSkills.xml | 21 -- .../French/DefInjected/StatDef/SexAbility.xml | 9 - .../ThingDef/Buildings_Ideo_sex.xml | 14 ++ .../ThoughtDef/Precepts_BestialBreeding.xml | 36 +++ .../ThoughtDef/Precepts_Bestiality.xml | 62 ++++++ .../ThoughtDef/Precepts_Incest.xml | 32 +++ .../ThoughtDef/Precepts_Necrophilia.xml | 36 +++ .../ThoughtDef/Precepts_Pregnancy.xml | 36 +++ .../ThoughtDef/Precepts_PregnancyAnimal.xml | 28 +++ .../DefInjected/ThoughtDef/Precepts_Rape.xml | 31 +++ .../DefInjected/ThoughtDef/Precepts_Sex.xml | 23 ++ .../ThoughtDef/Precepts_SizeMatters.xml | 60 +++++ .../ThoughtDef/Precepts_Submissive.xml | 17 ++ .../ThoughtDef/Precepts_Virginity.xml | 42 ++++ .../Thoughts_Ritual_sex_Quality.xml | 44 ++++ .../DefInjected/TraitDef/Traits_sex.xml | 27 --- .../ExpertiseSex.xml | 39 ---- Languages/French/Keyed/RJW_Sexperience.xml | 39 ++++ 74 files changed, 1991 insertions(+), 235 deletions(-) create mode 100644 Languages/French/DefInjected/GoodwillSituationDef/MemeCompatibility_Sex.xml create mode 100644 Languages/French/DefInjected/HistoryEventDef/Precepts_Bestiality.xml create mode 100644 Languages/French/DefInjected/HistoryEventDef/Precepts_Incest.xml create mode 100644 Languages/French/DefInjected/HistoryEventDef/Precepts_Masturbation.xml create mode 100644 Languages/French/DefInjected/HistoryEventDef/Precepts_Necrophilia.xml create mode 100644 Languages/French/DefInjected/HistoryEventDef/Precepts_Rape.xml create mode 100644 Languages/French/DefInjected/HistoryEventDef/Precepts_Sex.xml create mode 100644 Languages/French/DefInjected/HistoryEventDef/Precepts_Virginity.xml create mode 100644 Languages/French/DefInjected/IdeoPresetDef/IdeoPresetDefs_sex.xml create mode 100644 Languages/French/DefInjected/InteractionDef/Interactions_SexTameFemale.xml create mode 100644 Languages/French/DefInjected/InteractionDef/Interactions_SexTameMale.xml create mode 100644 Languages/French/DefInjected/InteractionDef/Interactions_Speech_sex.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_BabyFaction.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_BestialBreeding.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_Bestiality.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_Incest.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_Masturbation.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_Necrophilia.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_Pregnancy.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_PregnancyAnimal.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_Rape.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_Sex.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_SexProselytizing.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_SizeMatters.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_SocialAffection.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_Submissive.xml create mode 100644 Languages/French/DefInjected/IssueDef/Precepts_Virginity.xml create mode 100644 Languages/French/DefInjected/JobDef/Jobs_AnimalSexTame.xml create mode 100644 Languages/French/DefInjected/JobDef/Jobs_Ritual_Sex.xml delete mode 100644 Languages/French/DefInjected/KeyBindingDef/KeyBindings_Sexperience.xml create mode 100644 Languages/French/DefInjected/MemeDef/Memes_Sexual.xml delete mode 100644 Languages/French/DefInjected/PawnRelationDef/PawnRelations_Bastard.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_BabyFaction.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_BestialBreeding.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_Bestiality.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_Incest.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_Masturbation.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_Necrophilia.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_Pregnancy.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_PregnancyAnimal.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_Rape.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_Ritual_sex.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_Sex.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_SexProselytizing.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_SizeMatters.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_SocialAffection.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_Submissive.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_Tame.xml create mode 100644 Languages/French/DefInjected/PreceptDef/Precepts_Virginity.xml delete mode 100644 Languages/French/DefInjected/RecipeDef/Recipes_Surgery_Hymen.xml delete mode 100644 Languages/French/DefInjected/RecordDef/Records_Sexperiences.xml delete mode 100644 Languages/French/DefInjected/RecordDef/Records_Sextypes.xml create mode 100644 Languages/French/DefInjected/RitualBehaviorDef/Ritual_Behaviors_sex.xml create mode 100644 Languages/French/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml create mode 100644 Languages/French/DefInjected/RitualPatternDef/RitualPatterns_sex.xml delete mode 100644 Languages/French/DefInjected/RulePackDef/RulePacks_VSIE.xml delete mode 100644 Languages/French/DefInjected/SkillDef/SexSkills.xml delete mode 100644 Languages/French/DefInjected/StatDef/SexAbility.xml create mode 100644 Languages/French/DefInjected/ThingDef/Buildings_Ideo_sex.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Precepts_BestialBreeding.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Precepts_Bestiality.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Precepts_Incest.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Precepts_Necrophilia.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Precepts_Pregnancy.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Precepts_PregnancyAnimal.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Precepts_Rape.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Precepts_Sex.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Precepts_SizeMatters.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Precepts_Submissive.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Precepts_Virginity.xml create mode 100644 Languages/French/DefInjected/ThoughtDef/Thoughts_Ritual_sex_Quality.xml delete mode 100644 Languages/French/DefInjected/TraitDef/Traits_sex.xml delete mode 100644 Languages/French/DefInjected/VSE.Expertise.ExpertiseDef/ExpertiseSex.xml create mode 100644 Languages/French/Keyed/RJW_Sexperience.xml diff --git a/Languages/French/DefInjected/GoodwillSituationDef/MemeCompatibility_Sex.xml b/Languages/French/DefInjected/GoodwillSituationDef/MemeCompatibility_Sex.xml new file mode 100644 index 0000000..a605ca3 --- /dev/null +++ b/Languages/French/DefInjected/GoodwillSituationDef/MemeCompatibility_Sex.xml @@ -0,0 +1,19 @@ + + + + + nécrophile + + + accord nécrophile + + + violeur + + + zoophile + + + accord zoophile + + \ No newline at end of file diff --git a/Languages/French/DefInjected/HistoryEventDef/Precepts_Bestiality.xml b/Languages/French/DefInjected/HistoryEventDef/Precepts_Bestiality.xml new file mode 100644 index 0000000..fc9e6a1 --- /dev/null +++ b/Languages/French/DefInjected/HistoryEventDef/Precepts_Bestiality.xml @@ -0,0 +1,19 @@ + + + + + sexe avec animal + + + sexe avec servitude + + + Sexe sans servitude + + + sex avec animal non vénéré + + + sexe avec animal vénéré + + \ No newline at end of file diff --git a/Languages/French/DefInjected/HistoryEventDef/Precepts_Incest.xml b/Languages/French/DefInjected/HistoryEventDef/Precepts_Incest.xml new file mode 100644 index 0000000..b315573 --- /dev/null +++ b/Languages/French/DefInjected/HistoryEventDef/Precepts_Incest.xml @@ -0,0 +1,22 @@ + + + + + Mariage entre proches parents + + + Relations sexuelles entre proches parents + + + Mariage incestueux + + + Sexe incestueux + + + Mariage non incestueux + + + Sexe non incestueux + + \ No newline at end of file diff --git a/Languages/French/DefInjected/HistoryEventDef/Precepts_Masturbation.xml b/Languages/French/DefInjected/HistoryEventDef/Precepts_Masturbation.xml new file mode 100644 index 0000000..791e9b0 --- /dev/null +++ b/Languages/French/DefInjected/HistoryEventDef/Precepts_Masturbation.xml @@ -0,0 +1,7 @@ + + + + + s'est masturbé(e) + + \ No newline at end of file diff --git a/Languages/French/DefInjected/HistoryEventDef/Precepts_Necrophilia.xml b/Languages/French/DefInjected/HistoryEventDef/Precepts_Necrophilia.xml new file mode 100644 index 0000000..100ee25 --- /dev/null +++ b/Languages/French/DefInjected/HistoryEventDef/Precepts_Necrophilia.xml @@ -0,0 +1,7 @@ + + + + + a baisé un cadavre + + \ No newline at end of file diff --git a/Languages/French/DefInjected/HistoryEventDef/Precepts_Rape.xml b/Languages/French/DefInjected/HistoryEventDef/Precepts_Rape.xml new file mode 100644 index 0000000..e7b6162 --- /dev/null +++ b/Languages/French/DefInjected/HistoryEventDef/Precepts_Rape.xml @@ -0,0 +1,22 @@ + + + + + a violé + + + a violé un prisonnier + + + a violé un esclave + + + a été violé(e) + + + a été violé(e) + + + a été violé(e) + + \ No newline at end of file diff --git a/Languages/French/DefInjected/HistoryEventDef/Precepts_Sex.xml b/Languages/French/DefInjected/HistoryEventDef/Precepts_Sex.xml new file mode 100644 index 0000000..bd169b7 --- /dev/null +++ b/Languages/French/DefInjected/HistoryEventDef/Precepts_Sex.xml @@ -0,0 +1,19 @@ + + + + + sexe anal + + + sexe + + + sexe oral + + + rapports sexuels multiples + + + sexe vaginal + + \ No newline at end of file diff --git a/Languages/French/DefInjected/HistoryEventDef/Precepts_Virginity.xml b/Languages/French/DefInjected/HistoryEventDef/Precepts_Virginity.xml new file mode 100644 index 0000000..48a9711 --- /dev/null +++ b/Languages/French/DefInjected/HistoryEventDef/Precepts_Virginity.xml @@ -0,0 +1,16 @@ + + + + + a pris la virginité + + + virginité volée + + + a pris la virginité + + + la virginité a été prise par un étranger + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IdeoPresetDef/IdeoPresetDefs_sex.xml b/Languages/French/DefInjected/IdeoPresetDef/IdeoPresetDefs_sex.xml new file mode 100644 index 0000000..82a7f07 --- /dev/null +++ b/Languages/French/DefInjected/IdeoPresetDef/IdeoPresetDefs_sex.xml @@ -0,0 +1,19 @@ + + + + + fécondeurs d'animaux + + Les animaux sont notre moitié. + + + tribu hentaï + + Imprégner. + + + brigands violeurs sauvages + + Ils sont tous à nous. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/InteractionDef/Interactions_SexTameFemale.xml b/Languages/French/DefInjected/InteractionDef/Interactions_SexTameFemale.xml new file mode 100644 index 0000000..a8018cc --- /dev/null +++ b/Languages/French/DefInjected/InteractionDef/Interactions_SexTameFemale.xml @@ -0,0 +1,47 @@ + + + + + message sexuel féminin animalier + + +
  • r_logentry->[INITIATOR_nameDef] [zooact] [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] a essayé d'immobiliser [RECIPIENT_nameDef] tout en [genplan] l'organe génital de [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] a tenté de maintenir [RECIPIENT_nameDef] en place tout en [genplan] l'organe génital de [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] [genact] l'organe génital de [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] a autorisé [RECIPIENT_nameDef] [zooplan] son organe génital.
  • +
  • r_logentry->[INITIATOR_nameDef] a encouragé [RECIPIENT_nameDef] [zooplan] son organe génital.
  • +
  • genact->a touché délicatement
  • +
  • genact->a caressé délicatement
  • +
  • genact->a essayé d'embrasser
  • +
  • genact->a essayé de lécher
  • +
  • genplan->essayant de lécher
  • +
  • genplan->essayant de toucher
  • +
  • genplan->essayant de caresser
  • +
  • zooplan->à lécher
  • +
  • zooplan->à goûter
  • +
  • zooplan->à renifler
  • +
  • zooact->a montré son organe génital à
  • +
  • zooact->a présenté son organe génital à
  • +
    + +
    \ No newline at end of file diff --git a/Languages/French/DefInjected/InteractionDef/Interactions_SexTameMale.xml b/Languages/French/DefInjected/InteractionDef/Interactions_SexTameMale.xml new file mode 100644 index 0000000..4922177 --- /dev/null +++ b/Languages/French/DefInjected/InteractionDef/Interactions_SexTameMale.xml @@ -0,0 +1,55 @@ + + + + + message sexuel masculin animalier + + +
  • r_logentry->[INITIATOR_nameDef] [zooact] [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] a essayé d'immobiliser [RECIPIENT_nameDef] tout en [genplan] l'organe génital de [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] a tenté de maintenir [RECIPIENT_nameDef] en place tout en [genplan] l'organe génital de [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] [genact] l'organe génital de [RECIPIENT_nameDef].
  • +
  • r_logentry->[INITIATOR_nameDef] a autorisé [RECIPIENT_nameDef] [zooplan] son organe génital.
  • +
  • r_logentry->[INITIATOR_nameDef] a encouragé [RECIPIENT_nameDef] [zooplan] son organe génital.
  • +
  • genact->a touché délicatement
  • +
  • genact->a caressé délicatement
  • +
  • genact->a frotté fermement
  • +
  • genact->a frotté délicatement
  • +
  • genact->a essayé d'embrasser
  • +
  • genact->a essayé de lécher
  • +
  • genact->a essayé de goûter
  • +
  • zooplan->à lécher
  • +
  • zooplan->à goûter
  • +
  • zooplan->à renifler
  • +
  • genplan->essayant de lécher
  • +
  • genplan->essayant de toucher
  • +
  • genplan->essayant de frotter
  • +
  • genplan->essayant de goûter
  • +
  • zooact->a montré son organe génital à
  • +
  • zooact->a présenté son organe génital à
  • +
    + +
    \ No newline at end of file diff --git a/Languages/French/DefInjected/InteractionDef/Interactions_Speech_sex.xml b/Languages/French/DefInjected/InteractionDef/Interactions_Speech_sex.xml new file mode 100644 index 0000000..e852608 --- /dev/null +++ b/Languages/French/DefInjected/InteractionDef/Interactions_Speech_sex.xml @@ -0,0 +1,133 @@ + + + + + discours sur le gangbang + + +
  • r_logentry->[INITIATOR_nameDef] [spokeof] [speechtopic].
  • +
  • r_logentry(p=0.2)->[INITIATOR_nameDef] [crazy].
  • +
  • speechtopic->sens et vraie valeur du viol
  • +
  • speechtopic->manières de violer
  • +
  • speechtopic->désir sexuel contrôlé
  • +
  • speechtopic->la chaleur d'une chatte
  • +
  • speechtopic->sens du sperme
  • +
  • speechtopic->amour et de viol
  • +
  • speechtopic->viol symbolique
  • +
  • speechtopic->bite et de chatte
  • +
  • speechtopic->l'art du viol
  • +
  • speechtopic->la séduction de victime
  • +
  • speechtopic->la musique des cris
  • +
  • speechtopic->éjaculer sur le sol
  • +
  • crazy->a hurlé comme un fou
  • +
  • crazy->s'est mis à scander
  • +
  • crazy->a chanté vers les cieux
  • +
  • crazy->a craché dans les parties génitales de la victime
  • +
  • crazy->a gloussé
  • +
  • crazy->a brandi un préservatif
  • +
  • crazy->a marmonné sans cesse tout en se masturbant
  • +
    + + + discours obscène + + +
  • r_logentry->[INITIATOR_nameDef] [spokeof] [speechtopic].
  • +
  • r_logentry(p=0.2)->[INITIATOR_nameDef] [crazy].
  • +
  • speechtopic->sens et vraie valeur du sexe
  • +
  • speechtopic->manières d'avoir du sexe
  • +
  • speechtopic->désir incontrôlé
  • +
  • speechtopic->la chaleur d'une chatte
  • +
  • speechtopic->sens du sperme
  • +
  • speechtopic->amour et inceste
  • +
  • speechtopic->viol symbolique
  • +
  • speechtopic->bite et de chatte
  • +
  • speechtopic->l'art du sexe
  • +
  • speechtopic->la séduction de [spokeof]
  • +
  • speechtopic->la musique des gémissements
  • +
  • speechtopic->éjaculer sur le sol
  • +
  • crazy->a gémis comme un fou
  • +
  • crazy->a jeté un dildo
  • +
  • crazy->a lancé un masturbateur
  • +
  • crazy->a chanté vers les cieux
  • +
  • crazy->a gémis
  • +
  • crazy->a brandi un dildo
  • +
  • crazy->a marmonné de manière répétitive tout en se masturbant
  • +
    + + + discours zoophile + + +
  • r_logentry->[INITIATOR_nameDef] [spokeof] [speechtopic].
  • +
  • speechtopic->le sens et vraie valeur de la bestialité
  • +
  • speechtopic->manières d'être bestial
  • +
  • speechtopic->désir contrôlé
  • +
  • speechtopic->la chaleur du sperme
  • +
  • speechtopic->le sens de la fécondation inter-espèces.
  • +
  • speechtopic->amour et animaux
  • +
  • speechtopic->symbolique de la bestialité
  • +
  • speechtopic->fécondation et naissance
  • +
  • speechtopic->l'art de féconder
  • +
  • speechtopic->la séduction des animaux
  • +
  • speechtopic->éjaculer sur le sol
  • +
    + +
    \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_BabyFaction.xml b/Languages/French/DefInjected/IssueDef/Precepts_BabyFaction.xml new file mode 100644 index 0000000..3fd9ec8 --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_BabyFaction.xml @@ -0,0 +1,7 @@ + + + + + faction de bébés + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_BestialBreeding.xml b/Languages/French/DefInjected/IssueDef/Precepts_BestialBreeding.xml new file mode 100644 index 0000000..1074be0 --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_BestialBreeding.xml @@ -0,0 +1,7 @@ + + + + + fécondation bestiale + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_Bestiality.xml b/Languages/French/DefInjected/IssueDef/Precepts_Bestiality.xml new file mode 100644 index 0000000..25a2ffa --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_Bestiality.xml @@ -0,0 +1,7 @@ + + + + + bestialité + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_Incest.xml b/Languages/French/DefInjected/IssueDef/Precepts_Incest.xml new file mode 100644 index 0000000..f6b089f --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_Incest.xml @@ -0,0 +1,7 @@ + + + + + inceste + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_Masturbation.xml b/Languages/French/DefInjected/IssueDef/Precepts_Masturbation.xml new file mode 100644 index 0000000..4ad2a30 --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_Masturbation.xml @@ -0,0 +1,7 @@ + + + + + masturbation + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_Necrophilia.xml b/Languages/French/DefInjected/IssueDef/Precepts_Necrophilia.xml new file mode 100644 index 0000000..78f0b7c --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_Necrophilia.xml @@ -0,0 +1,7 @@ + + + + + nécrophilie + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_Pregnancy.xml b/Languages/French/DefInjected/IssueDef/Precepts_Pregnancy.xml new file mode 100644 index 0000000..a86d1b1 --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_Pregnancy.xml @@ -0,0 +1,7 @@ + + + + + grossesse + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_PregnancyAnimal.xml b/Languages/French/DefInjected/IssueDef/Precepts_PregnancyAnimal.xml new file mode 100644 index 0000000..19eeae7 --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_PregnancyAnimal.xml @@ -0,0 +1,7 @@ + + + + + grossesse bestiale + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_Rape.xml b/Languages/French/DefInjected/IssueDef/Precepts_Rape.xml new file mode 100644 index 0000000..dd7e3b1 --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_Rape.xml @@ -0,0 +1,7 @@ + + + + + viol + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_Sex.xml b/Languages/French/DefInjected/IssueDef/Precepts_Sex.xml new file mode 100644 index 0000000..1383e16 --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_Sex.xml @@ -0,0 +1,7 @@ + + + + + type de sexe + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_SexProselytizing.xml b/Languages/French/DefInjected/IssueDef/Precepts_SexProselytizing.xml new file mode 100644 index 0000000..8814137 --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_SexProselytizing.xml @@ -0,0 +1,7 @@ + + + + + type de sexe + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_SizeMatters.xml b/Languages/French/DefInjected/IssueDef/Precepts_SizeMatters.xml new file mode 100644 index 0000000..26742e5 --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_SizeMatters.xml @@ -0,0 +1,7 @@ + + + + + la taille compte + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_SocialAffection.xml b/Languages/French/DefInjected/IssueDef/Precepts_SocialAffection.xml new file mode 100644 index 0000000..77a77cc --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_SocialAffection.xml @@ -0,0 +1,7 @@ + + + + + affection sociale + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_Submissive.xml b/Languages/French/DefInjected/IssueDef/Precepts_Submissive.xml new file mode 100644 index 0000000..384cfd4 --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_Submissive.xml @@ -0,0 +1,7 @@ + + + + + soumission + + \ No newline at end of file diff --git a/Languages/French/DefInjected/IssueDef/Precepts_Virginity.xml b/Languages/French/DefInjected/IssueDef/Precepts_Virginity.xml new file mode 100644 index 0000000..24a88d8 --- /dev/null +++ b/Languages/French/DefInjected/IssueDef/Precepts_Virginity.xml @@ -0,0 +1,10 @@ + + + + + virginité (femme) + + + pucelage (homme) + + \ No newline at end of file diff --git a/Languages/French/DefInjected/JobDef/Jobs_AnimalSexTame.xml b/Languages/French/DefInjected/JobDef/Jobs_AnimalSexTame.xml new file mode 100644 index 0000000..6148b26 --- /dev/null +++ b/Languages/French/DefInjected/JobDef/Jobs_AnimalSexTame.xml @@ -0,0 +1,19 @@ + + + + + apprivoise TargetA. + + + Apprivoise sexuellement TargetA. + + + Entraîne TargetA. + + + Entraîne sexuellement TargetA. + + + Est conditionné sexuellement par TargetA. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/JobDef/Jobs_Ritual_Sex.xml b/Languages/French/DefInjected/JobDef/Jobs_Ritual_Sex.xml new file mode 100644 index 0000000..2d71c5e --- /dev/null +++ b/Languages/French/DefInjected/JobDef/Jobs_Ritual_Sex.xml @@ -0,0 +1,22 @@ + + + + + (se) masturbe. + + + baise. + + + baise. + + + baise. + + + se fait gangbang. + + + viole une victime. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/KeyBindingDef/KeyBindings_Sexperience.xml b/Languages/French/DefInjected/KeyBindingDef/KeyBindings_Sexperience.xml deleted file mode 100644 index ab0091e..0000000 --- a/Languages/French/DefInjected/KeyBindingDef/KeyBindings_Sexperience.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - historique sexuel - - \ No newline at end of file diff --git a/Languages/French/DefInjected/MemeDef/Memes_Sexual.xml b/Languages/French/DefInjected/MemeDef/Memes_Sexual.xml new file mode 100644 index 0000000..71b4073 --- /dev/null +++ b/Languages/French/DefInjected/MemeDef/Memes_Sexual.xml @@ -0,0 +1,210 @@ + + + + + lubrique + + La vie est pleine de plaisirs, mais aucun n'est aussi pur, aussi naturel que celui du sexe. Nous devons nous adonner à des actes sexuels pour être vraiment nous-mêmes. + + +
  • memeAdjective->excité
  • +
  • memeAdjective->obscène
  • +
  • memeAdjective->excitant
  • +
  • memeAdjective->sexy
  • +
  • memeAdjective->en chaleur
  • +
  • memeAdjective->décadent
  • +
  • memeHyphenPrefix->en chaleur
  • +
  • memeHyphenPrefix->désir
  • +
  • memeConcept->désir
  • +
  • memeConcept->libido
  • +
  • memeConcept->en chaleur
  • +
  • memeConcept->excitation
  • +
  • memeConcept->désir
  • +
  • memeConcept->sexe
  • +
  • memeConcept->perversion
  • +
  • r_deityName->slaanesh
  • +
    + + décadent + + Culte de Slaanesh + + hérétique + + plaisir + + + nécrophile + + Baiseurs de corps. + + +
  • r_deityName->sonic
  • +
  • r_deityName->mega man
  • +
  • memeConcept->corps
  • +
  • memeConcept->mort
  • +
    + + + violeur + + Vouloir baiser est tout à fait naturel, refuser ce droit à quelqu'un est contre nature et ignoble, et prendre sans consentement est pur et juste. + + +
  • creation(tag=meme_Rapist) ->[deity0_name] aime le viol.
  • +
  • episode(uses=1,tag=meme_Rapist) ->[deity0_name] a violé tout le monde jusqu'à la mort pendant le viol.
  • +
  • setup(tag=meme_Rapist) ->[founderName] est toujours excité.
  • +
  • story(uses=1,tag=meme_Rapist) ->[founderName] a violé tout le monde. Personne ne peut arrêter [founderName]. [founderName] est mort en essayant de violer la planète.
  • +
  • lessonIntro(tag=meme_Rapist) ->Le viol, c'est génial ! Le viol, c'est génial ! Le viol, c'est génial !
  • +
  • lesson(tag=meme_Rapist) ->Le viol, c'est génial ! Le viol, c'est génial ! Le viol, c'est génial ! Le viol, c'est génial !
  • +
  • lessonReinforcement(tag=meme_Rapist) ->Le viol, c'est génial ! Le viol, c'est génial ! Le viol, c'est génial ! Le viol, c'est génial ! Le viol, c'est génial !
  • +
  • archistBasis(tag=meme_Rapist) ->L'histoire de l'humanité est une histoire de viol.
  • +
  • archistFact(tag=meme_Rapist) ->Même les archotechs ne peuvent pas arrêter les violeurs.
  • +
  • archistProphecy(tag=meme_Rapist) ->[inTheEnd], les violeurs ne cessent jamais de violer.
  • +
  • animistFact(tag=meme_Rapist) ->Les esprits les plus puissants sont ceux des violeurs, et les esprits des violeurs violeront tout le monde.
  • +
  • animistProphecy(tag=meme_Rapist) ->[itIsSaid] qu'un puissant esprit de destruction cherchera à mettre fin à l'univers, mais qu'un violeur ayant violé un million de personnes brandira l'esprit du [relic0_name] et violera le destructeur.
  • +
    + + +
  • memeAdjective->violent
  • +
  • memeAdjective->violant
  • +
  • memeHyphenPrefix->violeur
  • +
  • memeHyphenPrefix->agresseur sexuel
  • +
  • memeHyphenPrefix->pervert
  • +
  • memeConcept->violeur
  • +
  • memeConcept->pervers
  • +
  • r_deityName->slaanesh
  • +
  • memeLeaderNoun->étalon
  • +
  • memeLeaderNoun->grand violeur
  • +
    + + viole + + Violeurs + + violeur + + violeur + + décadent + + Culte de Slaanesh + + hérétique + + plaisir + + + zoophile + + Communiquer sexuellement avec les animaux, c'est montrer un lien véritable avec la création, et cela devrait être fait souvent. + + +
  • creation(tag=meme_Zoophile) ->[deity0_name] aime s'accoupler avec des bêtes.
  • +
  • episode(uses=1,tag=meme_Zoophile) ->[deity0_name] a dit à tous : « Sigmar interdit cela ! »
  • +
  • setup(tag=meme_Zoophile) ->Un jour, [founderName] était tellement excité qu'il a accidentellement baisé avec un animal et a adoré ça.
  • +
  • story(uses=1,tag=meme_Zoophile) ->Pour propager les animaux, [founderName] a commencé à s'accoupler avec des animaux.
  • +
  • lessonIntro(tag=meme_Zoophile) ->Un jour, j'ai couché avec un animal. C'était bien mieux qu'avec un humain !
  • +
  • lesson(tag=meme_Zoophile) ->Seuls les animaux peuvent me satisfaire.
  • +
  • lessonReinforcement(tag=meme_Zoophile) ->Reproduisez-vous avec des animaux. C'est le bonheur éternel.
  • +
  • archistBasis(tag=meme_Zoophile) ->Les archistes sont toujours à la recherche du plaisir ultime.
  • +
  • archistFact(tag=meme_Zoophile) ->C'était la reproduction avec des animaux.
  • +
  • archistProphecy(tag=meme_Zoophile) ->[inTheEnd], les archotechs finiront par débloquer la reproduction interespèces, afin qu'ils puissent mener le plaisir ultime.
  • +
  • animistFact(tag=meme_Zoophile) ->Les esprits les plus puissants sont ceux des bêtes, et les esprits des bêtes seront agités tant que les bêtes ne régneront pas.
  • +
  • animistProphecy(tag=meme_Zoophile) ->[itIsSaid] qu'un puissant esprit de destruction cherchera à mettre fin à l'univers, mais qu'une bête née d'un humain brandira l'esprit du [relic0_name] et détruira le destructeur. + + + +
  • memeAdjectif->bestial
  • +
  • memeAdjective->zoophile
  • +
  • memeHyphenPrefix->bestial
  • +
  • memeConcept->reproduction
  • +
  • memeConcept->bestialité
  • +
  • memeConcept->zoophile
  • +
  • memeLeaderNoun->bétail
  • + + + bestialité + + Fécondeurs + + fécondeur + + féconder + + zoophile + + Zoophilie + + zoophile + + zoophile + +
    \ No newline at end of file diff --git a/Languages/French/DefInjected/PawnRelationDef/PawnRelations_Bastard.xml b/Languages/French/DefInjected/PawnRelationDef/PawnRelations_Bastard.xml deleted file mode 100644 index d221a5e..0000000 --- a/Languages/French/DefInjected/PawnRelationDef/PawnRelations_Bastard.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - bâtard - - bâtarde - - \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_BabyFaction.xml b/Languages/French/DefInjected/PreceptDef/Precepts_BabyFaction.xml new file mode 100644 index 0000000..8368664 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_BabyFaction.xml @@ -0,0 +1,19 @@ + + + + + toujours colonie + + Les nouveau-nés font toujours partie de la faction et de l'idéologie du joueur. + + + toujours père + + Les nouveau-nés suivent toujours la faction et l'idéologie de leur père (si elles existent). + + + toujours mère (défaut) + + Les nouveau-nés suivent toujours la faction et l'idéologie de leur mère. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_BestialBreeding.xml b/Languages/French/DefInjected/PreceptDef/Precepts_BestialBreeding.xml new file mode 100644 index 0000000..c7c3d63 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_BestialBreeding.xml @@ -0,0 +1,29 @@ + + + + + détesté + + La fécondation animale est une pratique qui, sans être tout à fait répréhensible, est généralement mal vue. Elle devrait être évitée autant que possible, car il existe des alternatives plus acceptables. + + + encouragé + + La fécondation animale est appréciée pour le maintien de leur population, tout en embrassant le plaisir charnel partagé qu'elle procure. + + + horrible + + La fécondation animale est un acte contre nature et ignoble, qui dégrade à la fois l'animal et celui qui y participe. Il ne sert aucun autre but que la corruption et la souillure. + + + indifférent + + La fécondation animale est tout simplement un aspect naturel et banal de la vie. + + + requis + + La fécondation animale n'est pas seulement encouragée, c'est une pratique essentielle pour maintenir leur population, améliorer le potentiel génétique de la colonie grâce aux hybrides et se livrer aux plaisirs charnels de l'acte. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_Bestiality.xml b/Languages/French/DefInjected/PreceptDef/Precepts_Bestiality.xml new file mode 100644 index 0000000..22b0c8f --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_Bestiality.xml @@ -0,0 +1,51 @@ + + + + + répugnante + + La bestialité est un acte profondément maléfique et contraire à l'humanité. + + + acceptable + + La bestialité est une partie normale et banale de la vie. + + + seulement lié + + Les relations sexuelles avec des animaux liés doivent être honorées et respectées. Mais avoir des relations sexuelles avec d'autres animaux est un acte digne de dérision. + + Quelqu'un a eu des relations sexuelles avec un animal. + + Quelqu'un a eu des relations sexuelles avec un animal non lié. + + + désapprouvée + + TODO + + + encouragée + + Celui qui a des relations sexuelles avec des animaux devrait être encouragé, c'est tout à fait naturel. + + Quelqu'un a eu des relations sexuelles avec un animal. + + Quelqu'un a eu des relations sexuelles avec un animal. + + + horrible + + La bestialité est un acte terrible, qui mérite le dégoût. + + + uniquement vénéré + + Celui qui a des relations sexuelles avec des animaux vénérés doit être honoré et respecté. Mais avoir des relations sexuelles avec d'autres animaux est un acte digne de dérision. + + Quelqu'un a eu des relations sexuelles avec un animal. + + Quelqu'un a eu des relations sexuelles avec un animal vénéré. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_Incest.xml b/Languages/French/DefInjected/PreceptDef/Precepts_Incest.xml new file mode 100644 index 0000000..3f476f8 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_Incest.xml @@ -0,0 +1,29 @@ + + + + + désapprouvé + + L'inceste est socialement réprouvé. + + + désapprouvé sur les proches parents + + L'inceste est socialement réprouvé, mais les relations au-delà du cousinage ne sont pas reconnues comme de l'inceste. + + + interdit + + L'inceste est interdit socialement. + + + libre + + Le sexe fait naturellement partie de la vie, peu importe avec qui vous le pratiquez. + + + inceste uniquement + + Dans le but de préserver la pureté du sang, seul l'inceste est autorisé. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_Masturbation.xml b/Languages/French/DefInjected/PreceptDef/Precepts_Masturbation.xml new file mode 100644 index 0000000..054fef7 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_Masturbation.xml @@ -0,0 +1,14 @@ + + + + + répugnante + + La masturbation est moralement inacceptable. + + + désapprouvée + + La masturbation est quelque peu honteuse. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_Necrophilia.xml b/Languages/French/DefInjected/PreceptDef/Precepts_Necrophilia.xml new file mode 100644 index 0000000..897d897 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_Necrophilia.xml @@ -0,0 +1,29 @@ + + + + + répugnante + + La nécrophilie est un acte profondément malfaisant. + + + acceptable + + La nécrophilie est un aspect normal et banal de la vie. + + + approuvée + + Baiser un cadavre, ça ne fait de mal à personne. + + + désapprouvée + + La nécrophilie est extrêmement répugnante. + + + horrible + + La nécrophilie est un acte horrible. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_Pregnancy.xml b/Languages/French/DefInjected/PreceptDef/Precepts_Pregnancy.xml new file mode 100644 index 0000000..1ae4563 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_Pregnancy.xml @@ -0,0 +1,29 @@ + + + + + sublimé + + Être enceinte est considéré comme noble. + + + saint + + Être enceinte est un devoir qui mérite le respect. Les femmes transmettent notre société à la génération suivante. + + + horrible + + Être enceinte, c'est impur. Prenez soin de vous et restez pure. + + + indifférent + + La grossesse est un fait banal de la vie. + + + fécondation + + Les femmes devraient être enceintes - celles qui ne le sont pas sont considérées comme indignes. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_PregnancyAnimal.xml b/Languages/French/DefInjected/PreceptDef/Precepts_PregnancyAnimal.xml new file mode 100644 index 0000000..94ecea2 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_PregnancyAnimal.xml @@ -0,0 +1,19 @@ + + + + + horrible + + Être enceinte d'un animal semble anormal et contre nature. C'est un fardeau qu'il faut éviter à tout prix. + + + indifférent + + Porter la progéniture d'un animal n'est rien d'autre qu'une partie naturelle et banale de la vie. + + + fécondation + + Nous devons faire notre part pour aider à augmenter la population animale, même si cela implique de porter leur progéniture. C'est un devoir nécessaire pour l'équilibre de notre société. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_Rape.xml b/Languages/French/DefInjected/PreceptDef/Precepts_Rape.xml new file mode 100644 index 0000000..4d95770 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_Rape.xml @@ -0,0 +1,53 @@ + + + + + répugnant + + Le viol est un acte profondément malfaisant. + + Une personne en a violé une autre + + Prisonnier violé + + Quelqu'un a violé un prisonnier + + Esclave violé + + Quelqu'un a violé un esclave. + + + acceptable + + Le viol est une partie normale et banale de la vie. + + + désapprouvé + + Le viol fait partie de la vie, même s'il est extrêmement déplaisant. + + Quelqu'un a violé quelqu'un d'autre. + + + fierté + + Le viol est un comportement fier qui démontre la force de caractère. + + Une personne en a violé une autre + + Une personne en a violé une autre + + Une personne en a violé une autre + + + horrible + + Le viol est un acte horrible. + + Une personne en a violé une autre + + Prisonnier violé + + Quelqu'un a violé un prisonnier + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_Ritual_sex.xml b/Languages/French/DefInjected/PreceptDef/Precepts_Ritual_sex.xml new file mode 100644 index 0000000..59a5080 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_Ritual_sex.xml @@ -0,0 +1,29 @@ + + + + + gangbang animal + + Un gangbang rituel où des animaux violent une victime. + + + gangbang animal + + Un gangbang rituel où des animaux baisent l'organisateur. + + + orgie de drogue + + Une orgie utilisant un aphrodisiaque puissant. + + + gangbang + + Un gang bang rituel où l'organisateur viole une victime. Le public violera également la victime. + + + gangbang + + Un gangbang rituel où l'organisateur se fait baiser. Le public va baiser l'organisateur. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_Sex.xml b/Languages/French/DefInjected/PreceptDef/Precepts_Sex.xml new file mode 100644 index 0000000..c9de52c --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_Sex.xml @@ -0,0 +1,29 @@ + + + + + anal uniquement + + Seule la sodomie est moralement acceptable, les autres actes sexuels étant considérés comme répugnants. + + + libre + + Vaginal, anal, oral, peu importe tant que vous prenez du plaisir. + + + oral uniquement + + Seule la fellation est moralement acceptable, les autres actes sexuels étant considérés comme répugnants. + + + rapports multiples + + Une vie sexuelle désordonnée est approuvée. + + + vaginal uniquement + + Seuls les rapports sexuels vaginaux sont moralement acceptables, les autres actes sexuels étant considérés comme répugnants. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_SexProselytizing.xml b/Languages/French/DefInjected/PreceptDef/Precepts_SexProselytizing.xml new file mode 100644 index 0000000..daf3583 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_SexProselytizing.xml @@ -0,0 +1,9 @@ + + + + + Prosélytisme sexuel + + Procurer un orgasme convertit le partenaire à cette idéologie. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_SizeMatters.xml b/Languages/French/DefInjected/PreceptDef/Precepts_SizeMatters.xml new file mode 100644 index 0000000..d4986e0 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_SizeMatters.xml @@ -0,0 +1,19 @@ + + + + + Plus c'est gros, mieux c'est + + La taille compte. + + + Pas de règle + + Ce n'est pas la taille du navire qui compte, mais le mouvement de l'océan. + + + Plus petit, c'est mieux + + Les anciens croyaient en effet que les organes génitaux de grande taille étaient une caractéristique animale. Les personnalités influentes étaient connues pour leurs organes génitaux de petite taille. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_SocialAffection.xml b/Languages/French/DefInjected/PreceptDef/Precepts_SocialAffection.xml new file mode 100644 index 0000000..c03d581 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_SocialAffection.xml @@ -0,0 +1,29 @@ + + + + + pas la famille + + Se préoccuper de la tragédie d'un autre membre de sa famille est le signe d'un caractère faible. + + + normal (de base) + + Être sociable, c'est être humain, et c'est très bien ainsi. + + + seule la famille + + Pleurer pour un proche d'autrui est moralement faible et humiliant. + + + Psychopathe + + Une seule personne compte dans cet univers, et c'est vous-même. + + + seule la famille immédiate + + Être sociable, c'est être vulnérable, et seule votre famille peut s'en rendre compte. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_Submissive.xml b/Languages/French/DefInjected/PreceptDef/Precepts_Submissive.xml new file mode 100644 index 0000000..0235dd8 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_Submissive.xml @@ -0,0 +1,19 @@ + + + + + femmes soumises + + Les femmes sont soumises. Elles obéiront et accepteront tout traitement décidé par les hommes. + + + hommes soumis + + Les hommes sont soumis. Ils obéiront et accepteront tout traitement décidé par les femmes. + + + Normal + + Aucun genre ne devrait être tenu d'obéir à l'autre. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_Tame.xml b/Languages/French/DefInjected/PreceptDef/Precepts_Tame.xml new file mode 100644 index 0000000..f11b777 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_Tame.xml @@ -0,0 +1,14 @@ + + + + + Entraînement charnel + + Nous apprivoisons et dressons nos animaux par des actes d'intimité physique. + + + lien charnel + + Nous créons des liens avec nos animaux et leur enseignons des choses grâce à des actes d'intimité physique partagés. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/PreceptDef/Precepts_Virginity.xml b/Languages/French/DefInjected/PreceptDef/Precepts_Virginity.xml new file mode 100644 index 0000000..23b6fc0 --- /dev/null +++ b/Languages/French/DefInjected/PreceptDef/Precepts_Virginity.xml @@ -0,0 +1,44 @@ + + + + + précieuse (strict) + + Perdre sa virginité avant le mariage est mal et rend la femme moins respectable. + + + précieux (strict) + + Perdre son pucelage avant le mariage est mal et rend l'homme souillé inférieur. + + + précieuse + + La virginité féminine est précieuse. + + + précieux + + Le pucelage masculin est précieux. + + + honteuse + + Être vierge est un état honteux, digne de dérision. + + + honteux + + Être puceau est un état honteux, digne de dérision. + + + inutile + + La virginité féminine est inutile. + + + inutile + + Le pucelage masculin est inutile. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/RecipeDef/Recipes_Surgery_Hymen.xml b/Languages/French/DefInjected/RecipeDef/Recipes_Surgery_Hymen.xml deleted file mode 100644 index fa5c6a1..0000000 --- a/Languages/French/DefInjected/RecipeDef/Recipes_Surgery_Hymen.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - hyménoplastie - - Pour redevenir vierge, aucune tricherie. - - restaure un hymen - - \ No newline at end of file diff --git a/Languages/French/DefInjected/RecordDef/Records_Sexperiences.xml b/Languages/French/DefInjected/RecordDef/Records_Sexperiences.xml deleted file mode 100644 index 4dcb9e1..0000000 --- a/Languages/French/DefInjected/RecordDef/Records_Sexperiences.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - désir sexuel - - À quel point j'en ai envie. - - \ No newline at end of file diff --git a/Languages/French/DefInjected/RecordDef/Records_Sextypes.xml b/Languages/French/DefInjected/RecordDef/Records_Sextypes.xml deleted file mode 100644 index 0c6d70a..0000000 --- a/Languages/French/DefInjected/RecordDef/Records_Sextypes.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - rapports anaux - - Le nombre de rapports sexuels anaux. - - - fellations - - Le nombre de fellations. - - - cunnilingus - - Le nombre de cunnilingus. - - - doigtages - - Le nombre de doigtages. - - - masturbations avec pieds - - Le nombre de branlettes faites avec les pieds. - - - appareils génitaux touchés - - Le nombre d'appareils génitaux touchés (masturbations avec main ou doigtage). - - - masturbations - - Le nombre de masturbations. - - - rapports divers - - Le nombre de rapports sexuels divers et variés. - - - rapports bucaux - - Le nombre de rapports bucaux reçus. - - - orgasmes - - Le nombre d'orgasmes. - - - partenaires sexuels - - Le nombre de partenaires sexuels. - - - rapports vaginaux - - Le nombre de rapports vaginaux. - - \ No newline at end of file diff --git a/Languages/French/DefInjected/RitualBehaviorDef/Ritual_Behaviors_sex.xml b/Languages/French/DefInjected/RitualBehaviorDef/Ritual_Behaviors_sex.xml new file mode 100644 index 0000000..0b800ec --- /dev/null +++ b/Languages/French/DefInjected/RitualBehaviorDef/Ritual_Behaviors_sex.xml @@ -0,0 +1,57 @@ + + + + + participer + + participants + + + initiateur + + victime + + une victime + + participer + + participants + + La victime n'est pas accessible. + + + initiateur + + participer + + participants + + + initiateur + + fécondé(e) + + Un(e) fécondé(e) qui sera baisé(e) par un ou des animaux. + + reproducteur + + un animal reproducteur + + participer + + participants + + La victime n'est pas accessible. + + + initiateur + + reproducteur + + un animal reproducteur + + participer + + participants + + \ No newline at end of file diff --git a/Languages/French/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml b/Languages/French/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml new file mode 100644 index 0000000..c4ea9ac --- /dev/null +++ b/Languages/French/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml @@ -0,0 +1,187 @@ + + + + + En fonction de la qualité du rituel, les participants obtiendront une humeur comprise entre {MINMOOD} et {MAXMOOD} pendant {MOODDAYS} jours. + + guide moral présent + + nombre de participants + + commencé à l'autel + + un autel + + fécondé(e) brisé(e) + + fécondé(e) extrêmement brisé(e) + + fécondé(e) complétement brisé(e) + + Si le {0} est satisfaisant, l'un des participants pourrait trouver l'inspiration. + + Horrible + + Le {0} était horrible ! Le discours était hésitant et incohérent, et la victime était râtée - tout le monde attendait que ça se termine. + + Ennuyeux + + Le {0} était ennuyeux. Le discours était répétitif et la victime présentait des défauts évidents. Cela ne semblait tout simplement pas digne. + + Satisfaisant + + Le {0} était satisfaisant. Le discours semblait significatif, et la victime était précise et digne. + + Il y a 5 % de chances qu'un participant aléatoire ait une inspiration. + + Spectaculaire + + Le {0} était spectaculaire ! Le discours a rendu tout le monde fou et la victime se comportait telle une succube. + + Il y a 10 % de chances qu'un participant aléatoire ait une inspiration. + + + En fonction de la qualité du rituel, les participants obtiendront une humeur comprise entre {MINMOOD} et {MAXMOOD} pendant {MOODDAYS} jours. + + guide moral présent + + nombre de participants + + commencé à l'autel + + un autel + + Si le {0} est satisfaisant, l'un des participants pourrait trouver l'inspiration. + + Horrible + + Le {0} était horrible ! Le discours était hésitant et incohérent, et la victime était râtée - tout le monde attendait que ça se termine. + + Ennuyeux + + Le {0} était ennuyeux. Le discours était répétitif et la victime présentait des défauts évidents. Cela ne semblait tout simplement pas digne. + + Satisfaisant + + Le {0} était satisfaisant. Le discours semblait significatif, et la victime était précise et digne. + + Il y a 5 % de chances qu'un participant aléatoire ait une inspiration. + + Spectaculaire + + Le {0} était spectaculaire ! Le discours a rendu tout le monde fou et la victime se comportait telle une succube. + + Il y a 10 % de chances qu'un participant aléatoire ait une inspiration. + + + En fonction de la qualité du rituel, les participants obtiendront une humeur comprise entre {MINMOOD} et {MAXMOOD} pendant {MOODDAYS} jours. + + nombre de participants + + impressivité de la pièce + + participants satisfaits + + Si l'{0} est satisfaisante, l'un des participants pourrait trouver l'inspiration. + + Horrible + + L'{0} était horrible ! + + Ennuyeuse + + L'{0} était ennuyeuse. + + Satisfaisante + + L'{0} était satisfaisante. + + Il y a 5 % de chances qu'un participant aléatoire ait une inspiration. + + Spectaculaire + + L'{0} était spectaculaire ! + + Il y a 10 % de chances qu'un participant aléatoire ait une inspiration. + + + En fonction de la qualité du rituel, les participants obtiendront une humeur comprise entre {MINMOOD} et {MAXMOOD} pendant {MOODDAYS} jours. + + guide moral présent + + nombre de participants + + commencé à l'autel + + un autel + + victime brisée + + victime extrêmement brisée + + victime complétement brisée + + participants satisfaits + + participants entièrement satisfaits + + Si le {0} est satisfaisant, l'un des participants pourrait trouver l'inspiration. + + Horrible + + Le {0} était horrible ! Le discours était hésitant et incohérent, et la victime était râtée - tout le monde attendait que ça se termine. + + Ennuyeux + + Le {0} était ennuyeux. Le discours était répétitif et la victime présentait des défauts évidents. Cela ne semblait tout simplement pas digne. + + Satisfaisant + + Le {0} était satisfaisant. Le discours semblait significatif, et la victime était précise et digne. + + Il y a 5 % de chances qu'un participant aléatoire ait une inspiration. + + Spectaculaire + + Le {0} était spectaculaire ! Le discours a rendu tout le monde fou et la victime se comportait telle une succube. + + Il y a 10 % de chances qu'un participant aléatoire ait une inspiration. + + + En fonction de la qualité du rituel, les participants obtiendront une humeur comprise entre {MINMOOD} et {MAXMOOD} pendant {MOODDAYS} jours. + + guide moral présent + + nombre de participants + + commencé à l'autel + + un autel + + participants satisfaits + + participants entièrement satisfaits + + Si le {0} est satisfaisant, l'un des participants pourrait trouver l'inspiration. + + Horrible + + Le {0} était horrible ! Le discours était hésitant et incohérent, et la victime était râtée - tout le monde attendait que ça se termine. + + Ennuyeux + + Le {0} était ennuyeux. Le discours était répétitif et la victime présentait des défauts évidents. Cela ne semblait tout simplement pas digne. + + Satisfaisant + + Le {0} était satisfaisant. Le discours semblait significatif, et la victime était précise et digne. + + Il y a 5 % de chances qu'un participant aléatoire ait une inspiration. + + Spectaculaire + + Le {0} était spectaculaire ! Le discours a rendu tout le monde fou et la victime se comportait telle une succube. + + Il y a 10 % de chances qu'un participant aléatoire ait une inspiration. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/RitualPatternDef/RitualPatterns_sex.xml b/Languages/French/DefInjected/RitualPatternDef/RitualPatterns_sex.xml new file mode 100644 index 0000000..d2daff7 --- /dev/null +++ b/Languages/French/DefInjected/RitualPatternDef/RitualPatterns_sex.xml @@ -0,0 +1,39 @@ + + + + + Une orgie avec de grandes quantités d'aphrodisiaques. Les participants se rassembleront autour d'un bang de luxure, l'allumeront et baiseront entre eux tout en inhalant les fumées. + + Chaque année, le {DATE}, les {MEMBRES} peuvent organiser une fête spéciale. + + orgie de drogue + + + Un gangbang rituel. L'organisateur prononce un discours pour exciter la foule, puis baise la victime. Si l'organisateur ne peut pas baiser la victime, le rituel est annulé. + + Chaque année, le {DATE}, les {MEMBRES} peuvent organiser une fête spéciale. + + gangbang + + + Un gangbang rituel. L'organisateur prononce un discours pour exciter la foule, puis se fait baiser par celle-ci. + + Chaque année, le {DATE}, les {MEMBRES} peuvent organiser une fête spéciale. + + gangbang + + + Un gangbang rituel animal. L'organisateur prononce un discours pour exciter la foule, puis les animaux commencent à baiser la victime. + + Chaque année, le {DATE}, les {MEMBRES} peuvent organiser une fête spéciale. + + gangbang animal + + + Un gangbang rituel animal. L'organisateur prononce un discours pour exciter la foule, puis les animaux commencent à baiser l'organisateur. + + Chaque année, le {DATE}, les {MEMBRES} peuvent organiser une fête spéciale. + + gangbang animal + + \ No newline at end of file diff --git a/Languages/French/DefInjected/RulePackDef/RulePacks_VSIE.xml b/Languages/French/DefInjected/RulePackDef/RulePacks_VSIE.xml deleted file mode 100644 index 7b96456..0000000 --- a/Languages/French/DefInjected/RulePackDef/RulePacks_VSIE.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - -
  • r_logentry->[INITIATOR_nameDef] et [RECIPIENT_nameDef] [talkedabout] [SexTopic].
  • -
  • r_logentry->[INITIATOR_nameDef] [commentedabout] [SexTopic] avec [RECIPIENT_nameDef].
  • -
  • r_logentry(p=0.8)->[INITIATOR_nameDef] [commentedabout] [SexTopic] à [RECIPIENT_nameDef].
  • -
  • talkedabout(p=4)->ont parlé de
  • -
  • talkedabout->ont partagé un mot sur
  • -
  • talkedabout->ont échangé à propos de
  • -
  • talkedabout->ont bavardé à propos de
  • -
  • talkedabout->ont discuté sur
  • -
  • talkedabout->ont plaisanté à propos de
  • -
  • talkedabout->ont ri sur
  • -
  • commentedabout->a dit quelque chose sur
  • -
  • commentedabout->a dit un mot à propos de
  • -
  • commentedabout->a fait un commentaire sur
  • -
  • commentedabout->a commenté à propos de
  • -
  • commentedabout->a plaisanté sur
  • -
    - -
    \ No newline at end of file diff --git a/Languages/French/DefInjected/SkillDef/SexSkills.xml b/Languages/French/DefInjected/SkillDef/SexSkills.xml deleted file mode 100644 index d51b19c..0000000 --- a/Languages/French/DefInjected/SkillDef/SexSkills.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - sexe - - Compétence sexuelle. - - -
  • subject->le sexe
  • -
  • subject->la baise
  • -
  • subject->l'acte intime
  • -
    - - sexe - -
    \ No newline at end of file diff --git a/Languages/French/DefInjected/StatDef/SexAbility.xml b/Languages/French/DefInjected/StatDef/SexAbility.xml deleted file mode 100644 index 775eefc..0000000 --- a/Languages/French/DefInjected/StatDef/SexAbility.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - capacité sexuelle - - Mesure si un pion est capable d'avoir des relations sexuelles et dans quelle mesure il est doué pour cela. - - \ No newline at end of file diff --git a/Languages/French/DefInjected/ThingDef/Buildings_Ideo_sex.xml b/Languages/French/DefInjected/ThingDef/Buildings_Ideo_sex.xml new file mode 100644 index 0000000..536fa3f --- /dev/null +++ b/Languages/French/DefInjected/ThingDef/Buildings_Ideo_sex.xml @@ -0,0 +1,14 @@ + + + + + œstro-bang + + Un dispositif automatique qui brûle des baisignons et génère un nuage de fumée œstrogénique autour de lui. Toute personne se trouvant dans le nuage deviendra excitée au fil du temps. + + + bang de luxure + + Une structure en bois remplie de baisignons. Elle peut être enflammée lors d'un rituel et produire une énorme quantité de fumée de baisignons pendant quelques heures, après quoi elle est détruite. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Precepts_BestialBreeding.xml b/Languages/French/DefInjected/ThoughtDef/Precepts_BestialBreeding.xml new file mode 100644 index 0000000..23bda10 --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Precepts_BestialBreeding.xml @@ -0,0 +1,36 @@ + + + + + a fécondé un animal + + J'ai fécondé un animal. Je sais que c'est mal, mais j'ai éprouvé un certain plaisir à le faire. + + + a fécondé un animal + + + a fécondé un animal + + J'ai fécondé un animal. C'est dégoûtant... + + + a fécondé un animal + + + a fécondé un animal + + J'ai fécondé un animal. Ça m'a fait du bien, et ça va contribuer à la population animale. + + + a fécondé un animal + + + a fécondé un animal + + J'ai fécondé un animal. Cela garantit la survie de la colonie et renforce son potentiel génétique. Le plaisir que j'éprouve est secondaire par rapport à notre avenir. + + + a fécondé un animal + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Precepts_Bestiality.xml b/Languages/French/DefInjected/ThoughtDef/Precepts_Bestiality.xml new file mode 100644 index 0000000..3c61748 --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Precepts_Bestiality.xml @@ -0,0 +1,62 @@ + + + + + sexe avec un animal + + J'ai eu des relations sexuelles avec un animal. Je veux mourir. + + + sexe avec un animal lié + + Je me suis déchaîn{PAWN_gender ? é : ée} avec mon animal lié ! + + + sexe avec un animal lié + + Partage un lien spécial. + + + sexe avec un animal + + J'ai eu des relations sexuelles avec un animal. J'espère qu'il ne lui arrivera rien de grave. + + + sexe avec un animal + + J'ai eu des relations sexuelles avec un animal. + + + sexe avec un animal + + J'ai eu des relations sexuelles avec un animal. Je ne suis pas sûr de pouvoir me pardonner. + + + sexe avec un animal + + + sexe avec un animal + + + sexe avec un animal + + + sexe avec un animal + + + sexe avec un animal non-lié + + J'ai eu des relations sexuelles avec un animal non lié. Comment ai-je pu faire ça ? + + + sexe avec un animal non-lié + + + sexe avec un animal non-vénéré + + J'ai eu des relations sexuelles avec un animal non vénéré. J'espère qu'il ne lui arrivera rien de grave. + + + sexe avec n'importe quel animal + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Precepts_Incest.xml b/Languages/French/DefInjected/ThoughtDef/Precepts_Incest.xml new file mode 100644 index 0000000..ddcdfc2 --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Precepts_Incest.xml @@ -0,0 +1,32 @@ + + + + + est cible de commérages + + Ils parlent dans notre dos. + + + condamnation sociale + + Personne n'a béni notre mariage. + + + inceste + + + inceste + + + sexe en-dehors de la famille + + + inceste + + + inceste + + + a corrompu la lignée + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Precepts_Necrophilia.xml b/Languages/French/DefInjected/ThoughtDef/Precepts_Necrophilia.xml new file mode 100644 index 0000000..99a8a79 --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Precepts_Necrophilia.xml @@ -0,0 +1,36 @@ + + + + + a baisé un cadavre + + J'ai baisé un cadavre. + + + a baisé un cadavre + + J'ai baisé un cadavre. + + + a baisé un cadavre + + J'ai baisé un cadavre. + + + a baisé un cadavre + + J'ai baisé un cadavre. + + + a baisé un cadavre + + + a baisé un cadavre + + + a baisé un cadavre + + + a baisé un cadavre + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Precepts_Pregnancy.xml b/Languages/French/DefInjected/ThoughtDef/Precepts_Pregnancy.xml new file mode 100644 index 0000000..67eb457 --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Precepts_Pregnancy.xml @@ -0,0 +1,36 @@ + + + + + enceinte + + Je renforce notre colonie en portant notre avenir. + + + enceinte + + + pas enceinte + + Je souhaite être enceinte. + + + non fécondée + + + enceinte + + Comment en suis-je arrivée là ? Je n'ai jamais voulu être enceinte ! + + + enceinte + + + enceinte + + Je suis enceinte. Cela fait de moi un pilier de la société. + + + enceinte + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Precepts_PregnancyAnimal.xml b/Languages/French/DefInjected/ThoughtDef/Precepts_PregnancyAnimal.xml new file mode 100644 index 0000000..3da9440 --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Precepts_PregnancyAnimal.xml @@ -0,0 +1,28 @@ + + + + + enceinte d'un animal + + Je n'aurais jamais imaginé que cela finirait ainsi : porter le petit d'un animal. C'est un cauchemar. Que suis-je censée faire maintenant ? + + + enceinte d'un animal + + + pas enceinte d'un animal + + L'idée d'être fécondée par un animal est excitante — je veux vivre cette expérience. + + + non fécondée par un animal + + + enceinte d'un animal + + Je suis enceinte d'un animal, et cela me semble normal, comme si j'étais destinée à être ainsi. + + + enceinte d'un animal + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Precepts_Rape.xml b/Languages/French/DefInjected/ThoughtDef/Precepts_Rape.xml new file mode 100644 index 0000000..f49210c --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Precepts_Rape.xml @@ -0,0 +1,31 @@ + + + + + a violé quelqu'un + + J'ai violé quelqu'un. Je n'aurais pas dû faire ça. + + + a violé quelqu'un + + J'ai violé quelqu'un. Je n'aurais pas dû faire ça. + + + a violé quelqu'un + + J'ai violé quelqu'un. Je n'aurais pas dû faire ça. + + + a violé quelqu'un + + + a violé quelqu'un + + + a violé quelqu'un + + + a violé quelqu'un + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Precepts_Sex.xml b/Languages/French/DefInjected/ThoughtDef/Precepts_Sex.xml new file mode 100644 index 0000000..d01753e --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Precepts_Sex.xml @@ -0,0 +1,23 @@ + + + + + ennuyeux + + + sans différence + + + sans différence + + + sexe ordinaire + + Ça ne me satisfait pas. + + + sexe sans différence + + J'étais immora{PAWN_gender ? l : le}. Ça m'excite. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Precepts_SizeMatters.xml b/Languages/French/DefInjected/ThoughtDef/Precepts_SizeMatters.xml new file mode 100644 index 0000000..b674566 --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Precepts_SizeMatters.xml @@ -0,0 +1,60 @@ + + + + + Taille génitale méprisée + + Je dois m'accepter telle que je suis, je sais que personne d'autre ne le fera. + + Taille génitale indésirable + + Je pense que je suis en dessous de la moyenne. + + Taille génitale normale + + Je suppose que je suis dans la moyenne. + + Taille génitale appréciée + + Je pense que je suis au-dessus de la moyenne. + + Taille génitale vénérée + + Mon organe génital est de taille et en parfaite santé, j'en suis l'exemple parfait. + + + Taille génitale indésirable + + Taille génitale normale + + Taille génitale favorable + + + Taille génitale vénérée + + Je n'ai pas besoin d'organes génitaux exceptionnels, car je suis un être doté d'une intelligence et d'une grâce suprêmes. + + Organes génitaux appréciés + + Je pense que je suis en dessous de la moyenne. + + Organes génitaux normaux + + Je suppose que je suis dans la moyenne. + + Organes génitaux indésirables + + Je pense que je suis au-dessus de la moyenne. + + Organes génitaux méprisés + + Je suis plus proche d'un animal que d'un être humain. Pourquoi ai-je dû naître ainsi ? + + + Organes génitaux favorables + + Organes génitaux normaux + + Organes génitaux indésirables + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Precepts_Submissive.xml b/Languages/French/DefInjected/ThoughtDef/Precepts_Submissive.xml new file mode 100644 index 0000000..ba9d2b1 --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Precepts_Submissive.xml @@ -0,0 +1,17 @@ + + + + + {0} m'a violé(e) + + Comment ça a pu... + + + a été violé(e) + + J'ai dû accepter. Mais je ne me sens pas très bien. + + + pas obéissant(e) + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Precepts_Virginity.xml b/Languages/French/DefInjected/ThoughtDef/Precepts_Virginity.xml new file mode 100644 index 0000000..59fb8ce --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Precepts_Virginity.xml @@ -0,0 +1,42 @@ + + + + + salope + + + A perdu sa virginité avec {0} + + Je ne suis plus vierge. + + A perdu sa virginité avec {0} + + Je ne suis plus vierge. + + A perdu sa virginité avec {0} + + Je ne suis plus vierge. + + A donné sa virginité à {0} + + J'ai donné ma virginité à mon amour. + + + Virginité volée + + Ma virginité m'a été prise de force. + + + A donné sa virginité à {0} + + Enfin ! + + A donné sa virginité à {0} + + Enfin ! + + A donné sa virginité à {0} + + Enfin ! + + \ No newline at end of file diff --git a/Languages/French/DefInjected/ThoughtDef/Thoughts_Ritual_sex_Quality.xml b/Languages/French/DefInjected/ThoughtDef/Thoughts_Ritual_sex_Quality.xml new file mode 100644 index 0000000..3febf5b --- /dev/null +++ b/Languages/French/DefInjected/ThoughtDef/Thoughts_Ritual_sex_Quality.xml @@ -0,0 +1,44 @@ + + + + + gangbang ennuyeux + + Ce gangbang n'était pas bien. J'aurais préféré ne jamais y aller. + + + orgie ennuyeuse + + Cette orgie n'était pas une bonne idée. J'aurais préféré ne jamais y aller. + + + gangbang amusant + + C'était un gangbang sympa. Ça m'a vraiment satisfait. + + + orgie amusante + + C'était une orgie très sympa. Ça m'a vraiment satisfait. + + + gangbang horrible + + Ce gangbang était horrible. Beurk. + + + orgie horrible + + Cette orgie était horrible. Beurk. + + + gangbang inoubliable + + Ce gangbang était génial ! Tout était parfait. + + + orgie inoubliable + + Cette orgie était géniale ! Tout était parfait. + + \ No newline at end of file diff --git a/Languages/French/DefInjected/TraitDef/Traits_sex.xml b/Languages/French/DefInjected/TraitDef/Traits_sex.xml deleted file mode 100644 index aafe134..0000000 --- a/Languages/French/DefInjected/TraitDef/Traits_sex.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - Vierge abîmée - - [PAWN_nameDef] n'avait jamais eu d'expérience sexuelle. Cependant, son hymen était endommagé pour une raison inconnue. - - BUGGÉ ! LES HOMMES NE PEUVENT PAS AVOIR CETTE CARACTÉRISTIQUE - - Puceau - - [PAWN_nameDef] ne l'a jamais fait. - - Vierge ? - - [PAWN_nameDef] semble expérimentée. Mais son hymen est toujours présent. - - BUGGÉ ! LES HOMMES NE PEUVENT PAS AVOIR CETTE CARACTÉRISTIQUE - - Vierge - - [PAWN_nameDef] ne l'a jamais expérimenté. - - BUGGÉ ! LES HOMMES NE PEUVENT PAS AVOIR CETTE CARACTÉRISTIQUE - - \ No newline at end of file diff --git a/Languages/French/DefInjected/VSE.Expertise.ExpertiseDef/ExpertiseSex.xml b/Languages/French/DefInjected/VSE.Expertise.ExpertiseDef/ExpertiseSex.xml deleted file mode 100644 index 4d844ba..0000000 --- a/Languages/French/DefInjected/VSE.Expertise.ExpertiseDef/ExpertiseSex.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Dominant - - Un expert en domination sexuelle. - - - Sexualisation - - Une personne obsédée par le sexe. - - - Prude - - Une personne expérimentée en matière de sexe, mais qui a décidé qu'elle n'aimait pas ça. - - - Viol - - Un violeur expérimenté. - - - Sensualisation - - Un expert en matière de sexe et d'activités sensuelles. - - - Soumis - - Un expert en soumission sexuelle. - - - Violé - - Une expertise dans l'art de se faire violer. - - \ No newline at end of file diff --git a/Languages/French/Keyed/RJW_Sexperience.xml b/Languages/French/Keyed/RJW_Sexperience.xml new file mode 100644 index 0000000..ce9e45b --- /dev/null +++ b/Languages/French/Keyed/RJW_Sexperience.xml @@ -0,0 +1,39 @@ + + + + RJW Sexpérience Idéologie + + + Meme + + esclave, prisonnier, genre soumis uniquement + + animal impropre : ne peut se reproduire ou interdit par les préceptes + + pas humain + + pas animal + + capable d'avoir des relations sexuelles est requis + + + Activer le patch romance pour les préceptes incestueux* + + Correctif pour que les préceptes incestueux affectent le facteur RomanceChanceFactor. Peut entrer en conflit avec les mods romantiques./n/n* Nécessite un redémarrage du jeu pour appliquer les modifications. + + Activer le patch romance manuel pour les préceptes incestueux* + + Correctif pour que les préceptes incestueux affectent les options romantiques manuelles./n/n* Nécessite un redémarrage du jeu pour appliquer les modifications. + + + Temps entre les tentatives de bestialité x{0} + + Temps entre les tentatives de masturbation x{0} + + Temps entre les tentatives de nécrophilie x{0} + + Temps entre les tentatives de viol x{0} + + + + \ No newline at end of file From 70b993da44b2be27a7a0266fa1fa6619974d1c4b Mon Sep 17 00:00:00 2001 From: amevarashi Date: Tue, 10 Mar 2026 21:42:58 +0500 Subject: [PATCH 62/64] Fix trailing space error --- .../RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Languages/French/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml b/Languages/French/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml index c4ea9ac..0f7b700 100644 --- a/Languages/French/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml +++ b/Languages/French/DefInjected/RitualOutcomeEffectDef/Ritual_Outcomes_sex.xml @@ -74,7 +74,7 @@ Il y a 10 % de chances qu'un participant aléatoire ait une inspiration. - En fonction de la qualité du rituel, les participants obtiendront une humeur comprise entre {MINMOOD} et {MAXMOOD} pendant {MOODDAYS} jours. + En fonction de la qualité du rituel, les participants obtiendront une humeur comprise entre {MINMOOD} et {MAXMOOD} pendant {MOODDAYS} jours. nombre de participants @@ -184,4 +184,4 @@ Il y a 10 % de chances qu'un participant aléatoire ait une inspiration. - \ No newline at end of file + From a94066961e87010d581f27ae3ea6f1f29f506537 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Wed, 11 Mar 2026 19:23:28 +0500 Subject: [PATCH 63/64] ci: update build contaiter to SDK 10 --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4aa9e69..7e3e792 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,5 @@ # ### Specify the Docker image -image: mcr.microsoft.com/dotnet/sdk:8.0-alpine +image: mcr.microsoft.com/dotnet/sdk:10.0-alpine # ### Define variables variables: From 4f4459c576aa8712d3fec58e4eb54d5440a153c5 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Wed, 11 Mar 2026 20:08:44 +0500 Subject: [PATCH 64/64] 1.6.1.1 --- 1.6/Assemblies/RJWSexperience.Ideology.dll | Bin 92160 -> 93184 bytes About/Manifest.xml | 2 +- About/RealAbout.xml | 2 +- CHANGELOG.md | 6 ++++++ Source/IdeologyAddon/IdeologyAddon.csproj | 4 ++-- Source/IdeologyAddon/packages.lock.json | 8 ++++---- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/1.6/Assemblies/RJWSexperience.Ideology.dll b/1.6/Assemblies/RJWSexperience.Ideology.dll index 10af56658d987024a5bcdfc26566e7c4bf56574a..842fe5950be884d2cd9615748d229f4982b8dcc7 100644 GIT binary patch literal 93184 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⪻~wuM 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
  • RimJobWorld >= 5.3.0
  • diff --git a/About/RealAbout.xml b/About/RealAbout.xml index 49ad9cd..bc4c571 100644 --- a/About/RealAbout.xml +++ b/About/RealAbout.xml @@ -8,7 +8,7 @@
  • 1.5
  • 1.6
  • - 1.6.1.0 + 1.6.1.1
  • Ludeon.RimWorld.Ideology diff --git a/CHANGELOG.md b/CHANGELOG.md index 28bc1e5..2a5cfee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## Version 1.6.1.1 +### by amevarashi +* Fix 1.5 loading wrong assembly +### by Wailwolf +* French translation + ## Version 1.6.1.0 ### by ElToro * Rimworld 1.6 update diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index a4e9438..b697d93 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -2,7 +2,7 @@ Debug 1.6 - 1.0 + 1.1 $(TargetGameVersion).$(InternalModVersion) {B4481C38-31B1-422D-B5AA-0059FE7CCA1C} Library @@ -17,7 +17,7 @@ false false none - 8.0 + latest diff --git a/Source/IdeologyAddon/packages.lock.json b/Source/IdeologyAddon/packages.lock.json index fdc3da7..e32642d 100644 --- a/Source/IdeologyAddon/packages.lock.json +++ b/Source/IdeologyAddon/packages.lock.json @@ -5,14 +5,14 @@ "Krafs.Rimworld.Ref": { "type": "Direct", "requested": "[1.6.*, )", - "resolved": "1.6.4566", - "contentHash": "lL2q5+XwA6xR4qcOHEVxoPrVxQqJLL1fTbmi2QI17qSlwobNBnhawxJqFMisbOYGA9EeAuIGhSkBrYLsPsFAuw==" + "resolved": "1.6.4633", + "contentHash": "wbUZCLBFHnNJ9IT4ighta1wrsBI9i/gRrfixPNfsMLlPvd/lksz+yv8H3Os7EIpT3O3wOkXgN3LGt8UHncWpzQ==" }, "Lib.Harmony": { "type": "Direct", "requested": "[*, )", - "resolved": "2.4.1", - "contentHash": "iLTZi/kKKB18jYEIwReZSx2xXyVUh4J1swReMgvYBBBn4tzA1Nd0PJlVyntY5BDdSiXSxzmvjc/3OYfFs0YwFg==" + "resolved": "2.4.2", + "contentHash": "D2X9ojVjqbqdqWVK3VQETrEb56yVoXxtEp6tP5UvW0PP+bA4uJiswqOxF8GhH02ECwyevUa9vwhwdLzyXfksbw==" }, "Microsoft.NETFramework.ReferenceAssemblies": { "type": "Direct",
  • a#V%(-c!HYcMSmxIg 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 literal 92160 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 RJWSexperienceIdeology - 1.6.1.0 + 1.6.1.1