From 5f9ab6d62a0c5a1e60b8bf63c6f22f5b6592e907 Mon Sep 17 00:00:00 2001 From: moreoreganostodump Date: Sat, 7 Aug 2021 02:19:42 +0900 Subject: [PATCH] 1.0.1.7 --- About/Manifest.xml | 2 +- Assemblies/RJWSexperience.dll | Bin 42496 -> 46592 bytes .../PawnRelations_Bastard.xml | 16 +++++ Defs/PreceptDefs/Precepts_BabyFaction.xml | 42 +++++++++++ Defs/PreceptDefs/Precepts_SocialAffection.xml | 62 ++++++++++++++++ .../RitualPatternDefs/RitualPatterns_sex.xml | 2 +- .../PreconfiguredIdeos/IdeoPresetDefs_sex.xml | 36 ++++++++++ Defs/Rituals/Ritual_Behaviors_sex.xml | 2 +- Languages/English/Keyed/RJW_Sexperience.xml | 9 ++- .../MemeDefs/Translations_MemeDef.xml | 50 ++++++------- .../Translations_RitualBehaviorDefs.xml | 9 +++ .../Translations_RitualOutcomeEffectDefs.xml | 22 +++++- .../Translations_RitualPatternDefs.xml | 8 +++ Languages/Korean/Keyed/RJW_Sexperience.xml | 17 +++-- Patches/RJW_ThoughtDefsDeath.xml | 68 ++++++++++++++++++ Patches/RJW_ThoughtDefsLost.xml | 68 ++++++++++++++++++ .../RJWSexperience/Configurations.cs | 41 +++++++---- RJWSexperience/RJWSexperience/DebugAction.cs | 46 ++++++++++++ RJWSexperience/RJWSexperience/Keyed.cs | 6 ++ .../RJWSexperience/PawnRelationWorkers.cs | 32 +++++++++ .../RJWSexperience/RJWSexperience.csproj | 2 + RJWSexperience/RJWSexperience/RJW_Patch.cs | 59 +++++++++++++-- .../RJWSexperience/Rituals/RitualRoles.cs | 11 ++- RJWSexperience/RJWSexperience/Utility.cs | 11 +-- RJWSexperience/RJWSexperience/VariousDefOf.cs | 3 + Textures/UI/Issues/SocialAffection.png | Bin 0 -> 7463 bytes changelogs.txt | 22 ++++-- 27 files changed, 567 insertions(+), 79 deletions(-) create mode 100644 Defs/PawnRelationDefs/PawnRelations_Bastard.xml create mode 100644 Defs/PreceptDefs/Precepts_BabyFaction.xml create mode 100644 Defs/PreceptDefs/Precepts_SocialAffection.xml create mode 100644 Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml create mode 100644 Languages/Korean/DefInjected/RitualBehaviorDefs/Translations_RitualBehaviorDefs.xml create mode 100644 Languages/Korean/DefInjected/RitualPatternDefs/Translations_RitualPatternDefs.xml create mode 100644 Patches/RJW_ThoughtDefsDeath.xml create mode 100644 Patches/RJW_ThoughtDefsLost.xml create mode 100644 RJWSexperience/RJWSexperience/DebugAction.cs create mode 100644 RJWSexperience/RJWSexperience/PawnRelationWorkers.cs create mode 100644 Textures/UI/Issues/SocialAffection.png diff --git a/About/Manifest.xml b/About/Manifest.xml index c701bdb..d2b2963 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@ RJW Sexperience - 1.0.1.6 + 1.0.1.7 diff --git a/Assemblies/RJWSexperience.dll b/Assemblies/RJWSexperience.dll index e80c92fa63ca20cbe316a00e75ce7ff1b1f9ee1b..3db0243e1978acbe24d7cc253874499369230a65 100644 GIT binary patch literal 46592 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 + + + + RJWSexperience.PawnRelationWorker_Bastard + Bastard + + bastard + 185 + -10 + 0.0 + true + true + + + diff --git a/Defs/PreceptDefs/Precepts_BabyFaction.xml b/Defs/PreceptDefs/Precepts_BabyFaction.xml new file mode 100644 index 0000000..e26356c --- /dev/null +++ b/Defs/PreceptDefs/Precepts_BabyFaction.xml @@ -0,0 +1,42 @@ + + + + + + BabyFaction + + UI/Issues/Birth + + + + + + 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/Defs/PreceptDefs/Precepts_SocialAffection.xml b/Defs/PreceptDefs/Precepts_SocialAffection.xml new file mode 100644 index 0000000..b4ee222 --- /dev/null +++ b/Defs/PreceptDefs/Precepts_SocialAffection.xml @@ -0,0 +1,62 @@ + + + + + + SocialAffection + + UI/Issues/SocialAffection + + + + + + SocialAffection_Normal + SocialAffection + + Just normal. + Low + 50 + 1000 + + + + SocialAffection_Small + SocialAffection + + Care about only immediate family. + Medium + 40 + 1000 + + + + SocialAffection_OnlyFamily + SocialAffection + + Don't care about non-family memeber's tragedy. + Medium + 30 + 1000 + + + + SocialAffection_Dry + SocialAffection + + Don't care about family memeber's tragedy. + High + 20 + 1000 + + + + SocialAffection_Psychopath + SocialAffection + + Don't care about others. + High + 10 + 1000 + + \ No newline at end of file diff --git a/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml b/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml index fdc2c0c..1fcfe7b 100644 --- a/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml +++ b/Defs/PreceptDefs/RitualPatternDefs/RitualPatterns_sex.xml @@ -14,7 +14,7 @@ Gangbang Gangbang gangbang - A ritualistic gangbang. The organizer will give a speech to excite the crowd, then fuck the prisoner. If the organizer cannot fuck victim, the ritual will be canceled. + 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 diff --git a/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml b/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml new file mode 100644 index 0000000..13c8abc --- /dev/null +++ b/Defs/PreconfiguredIdeos/IdeoPresetDefs_sex.xml @@ -0,0 +1,36 @@ + + + + Animal_Breeders + + Animals are our better half. + Intense + +
  • AnimalPersonhood
  • +
  • Zoophile
  • +
    +
    + + + Savage_Rapist_Brigands + + All of them are ours. + Intense + +
  • Rapist
  • +
  • Nudism
  • +
  • Raider
  • +
    +
    + + + Hentai_Tribe + + Intense + Impregnate. + +
  • MaleSupremacy
  • +
  • Rapist
  • +
    +
    +
    \ No newline at end of file diff --git a/Defs/Rituals/Ritual_Behaviors_sex.xml b/Defs/Rituals/Ritual_Behaviors_sex.xml index 4182d9d..78cf13d 100644 --- a/Defs/Rituals/Ritual_Behaviors_sex.xml +++ b/Defs/Rituals/Ritual_Behaviors_sex.xml @@ -147,7 +147,7 @@ animal 10 True - a breedable animal. + a breedable animal false diff --git a/Languages/English/Keyed/RJW_Sexperience.xml b/Languages/English/Keyed/RJW_Sexperience.xml index 363f408..9c8edcc 100644 --- a/Languages/English/Keyed/RJW_Sexperience.xml +++ b/Languages/English/Keyed/RJW_Sexperience.xml @@ -6,6 +6,11 @@ Slave: x{0}% Not Slave: x100% Meme: x{0}% + slave, prisoner, submissive gender only + improper animal: cannot breed or forbidden by precepts + not human + not animal + capable of sex is required Enable record randomizer Randomize pawn's sex records. @@ -21,8 +26,8 @@ Set average sex count. Enable slaves get raped experience Slaves will have experience of being raped - - + Lust Limit + Set limitation of lust. If absolute value of lust close to or larger than this value, lust will be less likely to change. diff --git a/Languages/Korean/DefInjected/MemeDefs/Translations_MemeDef.xml b/Languages/Korean/DefInjected/MemeDefs/Translations_MemeDef.xml index 0a3aa60..071d44e 100644 --- a/Languages/Korean/DefInjected/MemeDefs/Translations_MemeDef.xml +++ b/Languages/Korean/DefInjected/MemeDefs/Translations_MemeDef.xml @@ -2,20 +2,20 @@ 수간 동물박이들 - creation(tag=meme_Zoophile) ->[deity0_name]는 동물과 교미하는것을 즐겼습니다. - episode(uses=1,tag=meme_Zoophile) ->[deity0_name]는 모두에게 말했습니다, "Sigmar forbids this!" - 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->수간 + creation(tag=meme_Zoophile) ->[deity0_name]께서는 동물과 교미하는것을 즐기셨느니라. + episode(uses=1,tag=meme_Zoophile) ->[deity0_name]께서 모두에게 이르노니, "Sigmar forbids this!" + 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->수간 @@ -32,25 +32,25 @@ 강간 강간은 최고야 - 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]은(는) 행성을 강간하려다 죽었습니다. + 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]의 힘을 사용하여 파괴자를 강간할 것입니다. + 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->변태적인 + memeConcept->강간 + memeConcept->겁탈 memeGod->슬라네쉬 memeLeaderNoun->종마 memeLeaderNoun->위대한 강간범 diff --git a/Languages/Korean/DefInjected/RitualBehaviorDefs/Translations_RitualBehaviorDefs.xml b/Languages/Korean/DefInjected/RitualBehaviorDefs/Translations_RitualBehaviorDefs.xml new file mode 100644 index 0000000..89c5a4f --- /dev/null +++ b/Languages/Korean/DefInjected/RitualBehaviorDefs/Translations_RitualBehaviorDefs.xml @@ -0,0 +1,9 @@ + + + 개시자 + 희생양 + 개시자 + 번식대상 + 번식동물 + + \ No newline at end of file diff --git a/Languages/Korean/DefInjected/RitualOutcomeEffectDefs/Translations_RitualOutcomeEffectDefs.xml b/Languages/Korean/DefInjected/RitualOutcomeEffectDefs/Translations_RitualOutcomeEffectDefs.xml index 7f07cf6..9747894 100644 --- a/Languages/Korean/DefInjected/RitualOutcomeEffectDefs/Translations_RitualOutcomeEffectDefs.xml +++ b/Languages/Korean/DefInjected/RitualOutcomeEffectDefs/Translations_RitualOutcomeEffectDefs.xml @@ -1,9 +1,25 @@  + 의식의 품질에 따라, 참여자들은 {MINMOOD} ~ {MAXMOOD} 기분을 {MOODDAYS}일동안 얻게 됩니다. + 만약 {0}이 훌륭히 진행된다면 참여자중 한명이 영감을 얻을 수 있습니다. 제단에서 시작 희생양 무너짐 - 제단에서 시작 - 제단에서 시작 - 제단에서 시작 + 희생양 극도로 무너짐 + 희생양 완전히 무너짐 + 만족한 참가자 + 끔찍한 + 지루한 + 즐거운 + 인상적인 + 의식의 품질에 따라, 참여자들은 {MINMOOD} ~ {MAXMOOD} 기분을 {MOODDAYS}일동안 얻게 됩니다. + 만약 {0}이 훌륭히 진행된다면 참여자중 한명이 영감을 얻을 수 있습니다. + 제단에서 시작 + 교배대상 무너짐 + 교배대상 극도로 무너짐 + 교배대상 완전히 무너짐 + 끔찍한 + 지루한 + 즐거운 + 인상적인 \ No newline at end of file diff --git a/Languages/Korean/DefInjected/RitualPatternDefs/Translations_RitualPatternDefs.xml b/Languages/Korean/DefInjected/RitualPatternDefs/Translations_RitualPatternDefs.xml new file mode 100644 index 0000000..6658d61 --- /dev/null +++ b/Languages/Korean/DefInjected/RitualPatternDefs/Translations_RitualPatternDefs.xml @@ -0,0 +1,8 @@ + + + 윤간 + 의례적 윤간입니다. 지도자가 연설을 한 후, 희생양을 강간합니다. 지도자가 희생양을 강간하지 못하면 취소됩니다. + 동물에 의한 윤간 + 동물들을 이용한 의례적 윤간입니다. 지도자가 연설을 마치면, 동물들이 교배대상을 윤간합니다. + + \ No newline at end of file diff --git a/Languages/Korean/Keyed/RJW_Sexperience.xml b/Languages/Korean/Keyed/RJW_Sexperience.xml index 1c469a2..a542592 100644 --- a/Languages/Korean/Keyed/RJW_Sexperience.xml +++ b/Languages/Korean/Keyed/RJW_Sexperience.xml @@ -1,11 +1,16 @@  - RJW Sexperience + RJW Sexperience 음란함: x{0}% 노예: x{0}% 노예가 아님: x100% 문화 요소: x{0}% + 노예, 죄수, 순종적인 성별만 가능합니다. + 부적절한 동물: 번식할수 없거나 규율에의해 금지된 동물입니다. + 사람이 아님 + 동물이 아님 + 성관계가 가능해야 합니다. 기록 생성기 활성화 폰의 섹스기록을 무작위로 생성합니다. @@ -21,12 +26,6 @@ 평균 섹스 횟수를 설정합니다. 노예 강간 경험 활성화 활성화할 경우 노예는 강간당한 경험을 가집니다. - - - - - - - - + 음란함 한계 + 음란함의 한계치를 설정합니다. 음란함의 절대값이 이 값에 가까워지거나 클수록, 음란함이 적게 변합니다. \ No newline at end of file diff --git a/Patches/RJW_ThoughtDefsDeath.xml b/Patches/RJW_ThoughtDefsDeath.xml new file mode 100644 index 0000000..48ff471 --- /dev/null +++ b/Patches/RJW_ThoughtDefsDeath.xml @@ -0,0 +1,68 @@ + + + + + Defs/ThoughtDef[defName="MyKinDied" or defName="MyCousinDied" or defName="MyGrandparentDied" or defName="MyUncleDied" or defName="MyAuntDied" or defName="MyHalfSiblingDied" or defName="MyNephewDied" or defName="MyNieceDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyKinDied" or defName="MyCousinDied" or defName="MyGrandparentDied" or defName="MyUncleDied" or defName="MyAuntDied" or defName="MyHalfSiblingDied" or defName="MyNephewDied" or defName="MyNieceDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyKinDied" or defName="MyCousinDied" or defName="MyGrandparentDied" or defName="MyUncleDied" or defName="MyAuntDied" or defName="MyHalfSiblingDied" or defName="MyNephewDied" or defName="MyNieceDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied" or defName="MyHalfSiblingDied"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied" or defName="WitnessedDeathFamily" ]/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" ] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyMotherDied" or defName="MyFatherDied" or defName="MyGrandchildDied" or defName="MySisterDied" or defName="MyBrotherDied" or defName="MyDaughterDied" or defName="MySonDied" or defName="WitnessedDeathFamily" ]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied" or defName="WitnessedDeathAlly" or defName="WitnessedDeathNonAlly" or defName="ColonistBanishedToDie" or defName="PrisonerBanishedToDie" or defName="ColonistBanishedToDie" or defName="ColonistLeftUnburied"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied" or defName="WitnessedDeathAlly" or defName="WitnessedDeathNonAlly" or defName="ColonistBanishedToDie" or defName="PrisonerBanishedToDie" or defName="ColonistBanishedToDie" or defName="ColonistLeftUnburied"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="KnowGuestExecuted" or defName="KnowColonistExecuted" or defName="KnowPrisonerDiedInnocent" or defName="KnowColonistDied" or defName="PawnWithGoodOpinionDied" or defName="PawnWithBadOpinionDied" or defName="WitnessedDeathAlly" or defName="WitnessedDeathNonAlly" or defName="ColonistBanishedToDie" or defName="PrisonerBanishedToDie" or defName="ColonistBanishedToDie" or defName="ColonistLeftUnburied"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + + +
    \ No newline at end of file diff --git a/Patches/RJW_ThoughtDefsLost.xml b/Patches/RJW_ThoughtDefsLost.xml new file mode 100644 index 0000000..43dd8fb --- /dev/null +++ b/Patches/RJW_ThoughtDefsLost.xml @@ -0,0 +1,68 @@ + + + + + Defs/ThoughtDef[defName="MyKinLost" or defName="MyCousinLost" or defName="MyGrandparentLost" or defName="MyUncleLost" or defName="MyAuntLost" or defName="MyHalfSiblingLost" or defName="MyNephewLost" or defName="MyNieceLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyKinLost" or defName="MyCousinLost" or defName="MyGrandparentLost" or defName="MyUncleLost" or defName="MyAuntLost" or defName="MyHalfSiblingLost" or defName="MyNephewLost" or defName="MyNieceLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyKinLost" or defName="MyCousinLost" or defName="MyGrandparentLost" or defName="MyUncleLost" or defName="MyAuntLost" or defName="MyHalfSiblingLost" or defName="MyNephewLost" or defName="MyNieceLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost" or defName="MyHalfSiblingLost"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
  • SocialAffection_Small
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="MyMotherLost" or defName="MyFatherLost" or defName="MyGrandchildLost" or defName="MySisterLost" or defName="MyBrotherLost" or defName="MyDaughterLost" or defName="MySonLost"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="MyMotherLost" or defName="MyFatherLost" or defName="MyGrandchildLost" or defName="MySisterLost" or defName="MyBrotherLost" or defName="MyDaughterLost" or defName="MySonLost"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + Defs/ThoughtDef[defName="MyMotherLost" or defName="MyFatherLost" or defName="MyGrandchildLost" or defName="MySisterLost" or defName="MyBrotherLost" or defName="MyDaughterLost" or defName="MySonLost"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_Dry
  • +
    +
    +
    + + + Defs/ThoughtDef[defName="ColonistLost" or defName="PawnWithGoodOpinionLost" or defName="PawnWithBadOpinionLost"]/nullifyingPrecepts + + Defs/ThoughtDef[defName="ColonistLost" or defName="PawnWithGoodOpinionLost" or defName="PawnWithBadOpinionLost"] + + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + Defs/ThoughtDef[defName="ColonistLost" or defName="PawnWithGoodOpinionLost" or defName="PawnWithBadOpinionLost"]/nullifyingPrecepts + +
  • SocialAffection_Psychopath
  • +
  • SocialAffection_OnlyFamily
  • +
    +
    +
    + + + +
    \ No newline at end of file diff --git a/RJWSexperience/RJWSexperience/Configurations.cs b/RJWSexperience/RJWSexperience/Configurations.cs index bcc8940..1cf08bf 100644 --- a/RJWSexperience/RJWSexperience/Configurations.cs +++ b/RJWSexperience/RJWSexperience/Configurations.cs @@ -21,6 +21,7 @@ namespace RJWSexperience public const float SexPerYearDefault = 30; public const bool SlavesBeenRapedExpDefault = true; public const bool EnableStatRandomizerDefault = true; + public const float LustLimitDefault = 500f/3f; public static float MaxLustDeviation = MaxInitialLustDefault; public static float AvgLust = AvgLustDefault; @@ -29,6 +30,7 @@ namespace RJWSexperience public static float SexPerYear = SexPerYearDefault; public static bool SlavesBeenRapedExp = SlavesBeenRapedExpDefault; public static bool EnableRecordRandomizer = EnableStatRandomizerDefault; + public static float LustLimit = LustLimitDefault; public static void ResettoDefault() { @@ -39,19 +41,19 @@ namespace RJWSexperience SexPerYear = SexPerYearDefault; SlavesBeenRapedExp = SlavesBeenRapedExpDefault; EnableRecordRandomizer = EnableStatRandomizerDefault; + LustLimit = LustLimitDefault; } public override void ExposeData() { - Scribe_Values.Look(ref MaxLustDeviation, "MaxLustDeviation", MaxLustDeviation); - Scribe_Values.Look(ref AvgLust, "AvgLust", AvgLust); - Scribe_Values.Look(ref MaxSexCountDeviation, "MaxSexCountDeviation", MaxSexCountDeviation); - Scribe_Values.Look(ref LustEffectPower, "LustEffectPower", LustEffectPower); - Scribe_Values.Look(ref SexPerYear, "SexPerYear", SexPerYear); - Scribe_Values.Look(ref SlavesBeenRapedExp, "SlavesBeenRapedExp", SlavesBeenRapedExp); - Scribe_Values.Look(ref EnableRecordRandomizer, "EnableRecordRandomizer", EnableRecordRandomizer); - - + Scribe_Values.Look(ref MaxLustDeviation, "MaxLustDeviation", MaxLustDeviation, true); + Scribe_Values.Look(ref AvgLust, "AvgLust", AvgLust, true); + Scribe_Values.Look(ref MaxSexCountDeviation, "MaxSexCountDeviation", MaxSexCountDeviation, true); + Scribe_Values.Look(ref LustEffectPower, "LustEffectPower", LustEffectPower, true); + Scribe_Values.Look(ref SexPerYear, "SexPerYear", SexPerYear, true); + Scribe_Values.Look(ref SlavesBeenRapedExp, "SlavesBeenRapedExp", SlavesBeenRapedExp, true); + Scribe_Values.Look(ref EnableRecordRandomizer, "EnableRecordRandomizer", EnableRecordRandomizer, true); + Scribe_Values.Look(ref LustLimit, "LustLimit", LustLimit, true); base.ExposeData(); } } @@ -74,6 +76,7 @@ namespace RJWSexperience public override void DoSettingsWindowContents(Rect inRect) { int Adjuster; + float fAdjuster; Rect outRect = new Rect(0f, 30f, inRect.width, inRect.height - 30f); Rect mainRect = new Rect(0f, 0f, inRect.width - 30f, inRect.height + 480f); Listing_Standard listmain = new Listing_Standard(); @@ -82,16 +85,23 @@ namespace RJWSexperience listmain.Begin(mainRect); listmain.Gap(20f); + + LabelwithTextfield(listmain.GetRect(24f), Keyed.Option_2_Label + " x" + Configurations.LustEffectPower, Keyed.Option_2_Desc, ref Configurations.LustEffectPower, 0f, 100f); + Adjuster = (int)(Configurations.LustEffectPower * 1000); + //listmain.Label(Keyed.Option_2_Label + " x" + Configurations.LustEffectPower , -1, Keyed.Option_2_Desc); + Adjuster = (int)listmain.Slider(Adjuster, 0, 2000); + Configurations.LustEffectPower = (float)Adjuster / 1000; + + fAdjuster = Configurations.LustLimit * 3; + LabelwithTextfield(listmain.GetRect(24f), Keyed.Option_8_Label + " " + fAdjuster, Keyed.Option_8_Desc, ref fAdjuster, 0, 10000f); + fAdjuster = (int)listmain.Slider(fAdjuster, 0, 1000); + Configurations.LustLimit = fAdjuster / 3; + listmain.CheckboxLabeled(Keyed.Option_1_Label, ref Configurations.EnableRecordRandomizer, Keyed.Option_1_Desc); if (Configurations.EnableRecordRandomizer) { - Listing_Standard section = listmain.BeginSection(24f*11f); + Listing_Standard section = listmain.BeginSection(24f*9f); - LabelwithTextfield(section.GetRect(24f), Keyed.Option_2_Label + " x" + Configurations.LustEffectPower, Keyed.Option_2_Desc, ref Configurations.LustEffectPower, 0f, 100f); - Adjuster = (int)(Configurations.LustEffectPower * 1000); - //listmain.Label(Keyed.Option_2_Label + " x" + Configurations.LustEffectPower , -1, Keyed.Option_2_Desc); - Adjuster = (int)section.Slider(Adjuster, 0, 2000); - Configurations.LustEffectPower = (float)Adjuster / 1000; LabelwithTextfield(section.GetRect(24f), Keyed.Option_3_Label + " " + Configurations.MaxLustDeviation, Keyed.Option_3_Label, ref Configurations.MaxLustDeviation, 0f, 2000f); Adjuster = (int)Configurations.MaxLustDeviation; @@ -105,6 +115,7 @@ namespace RJWSexperience Adjuster = (int)section.Slider(Adjuster, -1000, 1000); Configurations.AvgLust = Adjuster; + LabelwithTextfield(section.GetRect(24f), Keyed.Option_5_Label + " " + Configurations.MaxSexCountDeviation, Keyed.Option_5_Desc, ref Configurations.MaxSexCountDeviation, 0f, 2000f); Adjuster = (int)Configurations.MaxSexCountDeviation; //listmain.Label(Keyed.Option_5_Label + " " + Configurations.MaxSexCountDeviation, -1, Keyed.Option_5_Desc); diff --git a/RJWSexperience/RJWSexperience/DebugAction.cs b/RJWSexperience/RJWSexperience/DebugAction.cs new file mode 100644 index 0000000..f2610aa --- /dev/null +++ b/RJWSexperience/RJWSexperience/DebugAction.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RimWorld; +using rjw; + +namespace RJWSexperience +{ + public static class DebugToolsSexperience + { + [DebugAction("RJW Sexperience", "Reset lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)] + private static void ResetLust(Pawn p) + { + float lust; + if (xxx.is_nympho(p)) lust = p.RecordRandomizer(VariousDefOf.Lust, Configurations.AvgLust, Configurations.MaxLustDeviation, 0); + else lust = p.RecordRandomizer(VariousDefOf.Lust, Configurations.AvgLust, Configurations.MaxLustDeviation, float.MinValue); + MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + lust); + } + + [DebugAction("RJW Sexperience", "Set lust to 0", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)] + private static void SetLust(Pawn p) + { + p.records.SetTo(VariousDefOf.Lust, 0); + MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: 0"); + } + + + [DebugAction("RJW Sexperience", "Add 10 to lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)] + private static void AddLust(Pawn p) + { + p.records.AddTo(VariousDefOf.Lust, 10); + MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + p.records.GetValue(VariousDefOf.Lust)); + } + + [DebugAction("RJW Sexperience", "Subtract 10 to lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)] + private static void SubtractLust(Pawn p) + { + p.records.AddTo(VariousDefOf.Lust, -10); + MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + p.records.GetValue(VariousDefOf.Lust)); + } + + } +} diff --git a/RJWSexperience/RJWSexperience/Keyed.cs b/RJWSexperience/RJWSexperience/Keyed.cs index 38013f1..70b3e9e 100644 --- a/RJWSexperience/RJWSexperience/Keyed.cs +++ b/RJWSexperience/RJWSexperience/Keyed.cs @@ -17,6 +17,12 @@ namespace RJWSexperience public static readonly string Mod_Title = "RS_Mod_Title".Translate(); public static readonly string SlaveStatFactorDefault = "SlaveStatFactorDefault".Translate(); + public static readonly string RSVictimCondition = "RSVictimCondition".Translate(); + public static readonly string RSBreederCondition = "RSBreederCondition".Translate(); + public static readonly string RSNotHuman = "RSNotHuman".Translate(); + public static readonly string RSNotAnimal = "RSNotAnimal".Translate(); + public static readonly string RSShouldCanFuck = "RSShouldCanFuck".Translate(); + public static readonly string Option_1_Label = "RSOption_1_Label".Translate(); public static readonly string Option_1_Desc = "RSOption_1_Desc".Translate(); diff --git a/RJWSexperience/RJWSexperience/PawnRelationWorkers.cs b/RJWSexperience/RJWSexperience/PawnRelationWorkers.cs new file mode 100644 index 0000000..64256e1 --- /dev/null +++ b/RJWSexperience/RJWSexperience/PawnRelationWorkers.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RimWorld; +using rjw; + + +namespace RJWSexperience +{ + public class PawnRelationWorker_Bastard : PawnRelationWorker_Child + { + public override bool InRelation(Pawn me, Pawn other) + { + Pawn mother = other.GetMother(); + Pawn father = other.GetFather(); + + if (me != other && (mother == me || father == me)) + { + //if (!mother?.relations?.DirectRelationExists(PawnRelationDefOf.Spouse, father) ?? true) return true; + //if (!mother?.relations?.DirectRelationExists(PawnRelationDefOf.ExSpouse, father) ?? true) return true; + return (!mother?.relations?.DirectRelationExists(PawnRelationDefOf.Spouse, father) ?? true) || (!mother?.relations?.DirectRelationExists(PawnRelationDefOf.ExSpouse, father) ?? true); + } + + return false; + } + + + } +} diff --git a/RJWSexperience/RJWSexperience/RJWSexperience.csproj b/RJWSexperience/RJWSexperience/RJWSexperience.csproj index c338c17..c108fca 100644 --- a/RJWSexperience/RJWSexperience/RJWSexperience.csproj +++ b/RJWSexperience/RJWSexperience/RJWSexperience.csproj @@ -78,8 +78,10 @@ + + diff --git a/RJWSexperience/RJWSexperience/RJW_Patch.cs b/RJWSexperience/RJWSexperience/RJW_Patch.cs index 10ab7a5..8a377db 100644 --- a/RJWSexperience/RJWSexperience/RJW_Patch.cs +++ b/RJWSexperience/RJWSexperience/RJW_Patch.cs @@ -7,6 +7,7 @@ using HarmonyLib; using rjw; using RimWorld; using Verse; +using UnityEngine; namespace RJWSexperience @@ -15,7 +16,7 @@ namespace RJWSexperience { public static float GetSexStat(this Pawn pawn) { - if (xxx.is_human(pawn)) + if (xxx.is_human(pawn) && !pawn.Dead) { return pawn.GetStatValue(xxx.sex_stat); } @@ -27,6 +28,32 @@ namespace RJWSexperience return new HistoryEvent(def, pawn.Named(HistoryEventArgsNames.Doer), tag.Named(HistoryEventArgsNamesCustom.Tag), partner.Named(HistoryEventArgsNamesCustom.Partner)); } + public static Faction GetFactionUsingPrecept(this Pawn baby, out Ideo ideo) + { + Faction playerfaction = Find.FactionManager.OfPlayer; + Ideo mainideo = playerfaction.ideos.PrimaryIdeo; + if (mainideo != null) + { + if (mainideo.HasPrecept(VariousDefOf.BabyFaction_AlwaysFather)) + { + Pawn parent = baby.GetFather(); + if (parent == null) baby.GetMother(); + + ideo = parent.Ideo; + return parent.Faction; + } + else if (mainideo.HasPrecept(VariousDefOf.BabyFaction_AlwaysColony)) + { + ideo = mainideo; + return playerfaction; + } + } + Pawn mother = baby.GetMother(); + ideo = mother.Ideo; + return mother.Faction; + } + + } @@ -81,17 +108,23 @@ namespace RJWSexperience [HarmonyPatch(typeof(SexUtility), "SatisfyPersonal")] public static class RJW_Patch_SatisfyPersonal_Post { - private const float base_sat_per_fuck = 0.3f; + private const float base_sat_per_fuck = 0.4f; public static void Postfix(Pawn pawn, Pawn partner, xxx.rjwSextype sextype, bool violent, bool pawn_is_raping, float satisfaction) { float? lust = pawn.records?.GetValue(VariousDefOf.Lust); if (lust != null) { - if (sextype != xxx.rjwSextype.Masturbation) pawn.records.AddTo(VariousDefOf.Lust, satisfaction - base_sat_per_fuck); // If the sex is satisfactory, lust grows up. Declines at the opposite. - else pawn.records.AddTo(VariousDefOf.Lust, satisfaction * satisfaction); // Masturbation always increases lust. + if (sextype != xxx.rjwSextype.Masturbation) pawn.records.AddTo(VariousDefOf.Lust, Mathf.Clamp((satisfaction - base_sat_per_fuck) * LustIncrementFactor(lust ?? 0),-0.5f,0.5f)); // If the sex is satisfactory, lust grows up. Declines at the opposite. + else pawn.records.AddTo(VariousDefOf.Lust, Mathf.Clamp(satisfaction * satisfaction * LustIncrementFactor(lust ?? 0), 0,0.5f)); // Masturbation always increases lust. } } + + public static float LustIncrementFactor(float lust) + { + return Mathf.Exp(-Mathf.Pow(lust / Configurations.LustLimit, 2)); + } + } [HarmonyPatch(typeof(ThinkNode_ChancePerHour_Bestiality), "MtbHours")] @@ -100,7 +133,7 @@ namespace RJWSexperience public static void Postfix(Pawn pawn, ref float __result) { Ideo ideo = pawn.Ideo; - if (ideo != null) __result = BestialityByPrecept(ideo); // ideo is null if don't have dlc + if (ideo != null) __result *= BestialityByPrecept(ideo); // ideo is null if don't have dlc } public static float BestialityByPrecept(Ideo ideo) @@ -403,6 +436,7 @@ namespace RJWSexperience } } + } } @@ -421,7 +455,20 @@ namespace RJWSexperience } } - + [HarmonyPatch(typeof(Hediff_BasePregnancy), "PostBirth")] + public static class RJW_Patch_PostBirth + { + public static void Postfix(Pawn mother, Pawn father, Pawn baby) + { + if (!mother.IsAnimal()) + { + //baby.SetFactionDirect(baby.GetFactionUsingPrecept()); + baby.SetFaction(baby.GetFactionUsingPrecept(out Ideo ideo)); + baby.ideo.SetIdeo(ideo); + if (baby.Faction == Find.FactionManager.OfPlayer && !baby.IsSlave) baby.guest.SetGuestStatus(null, GuestStatus.Guest); + } + } + } diff --git a/RJWSexperience/RJWSexperience/Rituals/RitualRoles.cs b/RJWSexperience/RJWSexperience/Rituals/RitualRoles.cs index bc3daa7..2797957 100644 --- a/RJWSexperience/RJWSexperience/Rituals/RitualRoles.cs +++ b/RJWSexperience/RJWSexperience/Rituals/RitualRoles.cs @@ -23,14 +23,13 @@ namespace RJWSexperience if (CanBeVictim(p)) return true; if (!skipReason) { - reason = "slave, prisoner, submissive gender only"; + reason = Keyed.RSVictimCondition; } return false; } public static bool CanBeVictim(Pawn pawn) { - if (pawn.IsPrisonerOfColony || pawn.IsSlaveOfColony) return true; if (pawn.Ideo?.HasMeme(MemeDefOf.FemaleSupremacy) ?? false && pawn.gender != Gender.Female) return true; else if (pawn.Ideo?.HasMeme(MemeDefOf.MaleSupremacy) ?? false && pawn.gender != Gender.Male) return true; @@ -52,13 +51,13 @@ namespace RJWSexperience reason = null; if (!xxx.is_human(p)) { - reason = "not human"; + reason = Keyed.RSNotHuman; return false; } if (CanBeBreedee(p)) return true; if (!skipReason) { - reason = "capable of sex is required"; + reason = Keyed.RSShouldCanFuck; } return false; } @@ -85,13 +84,13 @@ namespace RJWSexperience reason = null; if (!p.IsAnimal()) { - reason = "not animal"; + reason = Keyed.RSNotAnimal; return false; } if (CanBeBreeder(p, assignments?.Ritual)) return true; if (!skipReason) { - reason = "improper animal: cannot breed or forbidden by precepts"; + reason = Keyed.RSBreederCondition; } return false; } diff --git a/RJWSexperience/RJWSexperience/Utility.cs b/RJWSexperience/RJWSexperience/Utility.cs index 22aeab3..1f9b95c 100644 --- a/RJWSexperience/RJWSexperience/Utility.cs +++ b/RJWSexperience/RJWSexperience/Utility.cs @@ -74,11 +74,14 @@ namespace RJWSexperience float lust = pawn.records.GetValue(VariousDefOf.Lust) * Configurations.LustEffectPower; if (lust < 0) { - lust = (float)Math.Exp((lust + 200 * Math.Log(10)) / 100) - 100f; + lust = Mathf.Exp((lust + 200f * Mathf.Log(10f)) / 100f) - 100f; } - - - return 1 + lust / 100; + else + { + lust = Mathf.Sqrt(100f*(lust + 25f)) - 50f; + } + + return 1 + lust / 100f; } } diff --git a/RJWSexperience/RJWSexperience/VariousDefOf.cs b/RJWSexperience/RJWSexperience/VariousDefOf.cs index d6c341f..ae17038 100644 --- a/RJWSexperience/RJWSexperience/VariousDefOf.cs +++ b/RJWSexperience/RJWSexperience/VariousDefOf.cs @@ -53,5 +53,8 @@ namespace RJWSexperience [MayRequireIdeology] public static readonly PreceptDef Incestuos_Forbidden = DefDatabase.GetNamed("Incestuos_Forbidden"); [MayRequireIdeology] public static readonly PreceptDef Incestuos_IncestOnly = DefDatabase.GetNamed("Incestuos_IncestOnly"); [MayRequireIdeology] public static readonly PreceptDef Incestuos_Disapproved_CloseOnly = DefDatabase.GetNamed("Incestuos_Disapproved_CloseOnly"); + [MayRequireIdeology] public static readonly PreceptDef BabyFaction_AlwaysMother = DefDatabase.GetNamed("BabyFaction_AlwaysMother"); + [MayRequireIdeology] public static readonly PreceptDef BabyFaction_AlwaysFather = DefDatabase.GetNamed("BabyFaction_AlwaysFather"); + [MayRequireIdeology] public static readonly PreceptDef BabyFaction_AlwaysColony = DefDatabase.GetNamed("BabyFaction_AlwaysColony"); } } diff --git a/Textures/UI/Issues/SocialAffection.png b/Textures/UI/Issues/SocialAffection.png new file mode 100644 index 0000000000000000000000000000000000000000..b8304da5775f2ef3006769d955791ece07117fc6 GIT binary patch literal 7463 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 V#PfbMdi;q3R24N9s^#FJ{|B$3BHRD~ literal 0 HcmV?d00001 diff --git a/changelogs.txt b/changelogs.txt index f4e6afd..fe2a156 100644 --- a/changelogs.txt +++ b/changelogs.txt @@ -1,10 +1,20 @@ -Version Beta 1.0.1.6 +Version Beta 1.0.1.7 + - added baby faction and social affection precepts - changed stat calculation of lust - - on negative lust, use exponential function instead of linear - - added gangbang rituals - - chance of bestiality with non-venerated animal on only venerated precept reduced greatly - - added submissive precepts - - added mod settings + - added lust limit + - added debug actions for reset lust + - fixed mod setting was not saved + - fixed bestiality chance + - fixed errors when fuck corpse + - added bastard relation(nothing special yet) + +Version Beta 1.0.1.6 + - changed stat calculation of lust + - on negative lust, use exponential function instead of linear + - added gangbang rituals + - chance of bestiality with non-venerated animal on only venerated precept reduced greatly + - added submissive precepts + - added mod settings Version Beta 1.0.1.5 - changed icon for precepts and memes