diff --git a/1.4/Assemblies/RJW_Menstruation.dll b/1.4/Assemblies/RJW_Menstruation.dll index 2ac459a..2d0b679 100644 Binary files a/1.4/Assemblies/RJW_Menstruation.dll and b/1.4/Assemblies/RJW_Menstruation.dll differ diff --git a/1.4/Defs/DNADef/DNADefs.xml b/1.4/Defs/DNADef/DNADefs.xml deleted file mode 100644 index 09b3a1c..0000000 --- a/1.4/Defs/DNADef/DNADefs.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/1.4/Defs/GeneDefs/GeneDefs_Menstruation.xml b/1.4/Defs/GeneDefs/GeneDefs_Menstruation.xml index d430d3f..9f20c9c 100644 --- a/1.4/Defs/GeneDefs/GeneDefs_Menstruation.xml +++ b/1.4/Defs/GeneDefs/GeneDefs_Menstruation.xml @@ -99,7 +99,7 @@ Menstruation Carriers of this gene will not bleed at the end of their cycle. UI/Genes/Placeholder - 1 + -1 40 diff --git a/1.4/Defs/HediffDef/Hediffs_Menstruation.xml b/1.4/Defs/HediffDef/Hediffs_Menstruation.xml index 375d63d..7fe11f7 100644 --- a/1.4/Defs/HediffDef/Hediffs_Menstruation.xml +++ b/1.4/Defs/HediffDef/Hediffs_Menstruation.xml @@ -83,7 +83,13 @@ 1.5 - + + +
  • + 0.25 + 6 +
  • +
    @@ -113,6 +119,51 @@ + + HediffWithComps + Hediff_AffectedByPheromones + + A condition caused by being around someone in estrus. Sex drive and satisfaction is increased by the scent of heat. + (1.00,0.60,0.75) + false + false + false + false + 1.0 + + true + + +
  • + + + 1.1 + +
  • +
  • + 0.4 + + + 1.4 + 1.1 + +
  • +
  • + 0.8 + + + 2.0 + 1.2 + +
  • +
    + +
  • + -1.0 +
  • +
    +
    + HediffWithComps diff --git a/1.4/Defs/ThingDefs/Apparel_Absorbers.xml b/1.4/Defs/ThingDefs/Apparel_Absorbers.xml index c27e718..87fa765 100644 --- a/1.4/Defs/ThingDefs/Apparel_Absorbers.xml +++ b/1.4/Defs/ThingDefs/Apparel_Absorbers.xml @@ -59,9 +59,16 @@
  • Absorber
  • + +
  • Worker
  • +
  • Soldier
  • +
  • Nudist
  • +
  • Slave
  • +
  • + 0.2 false true 10 @@ -116,6 +123,7 @@
  • + 0.2 false true 8 @@ -190,9 +198,15 @@
  • Absorber
  • + +
  • Worker
  • +
  • Soldier
  • +
  • Slave
  • +
  • + 0.04 true false Absorber_Pad_Dirty @@ -254,6 +268,7 @@
  • + 0.04 true false Absorber_Pad_Dirty diff --git a/1.4/Defs/ThoughtDefs/Thoughts_sex.xml b/1.4/Defs/ThoughtDefs/Thoughts_sex.xml index e35d3e8..0b0bf12 100644 --- a/1.4/Defs/ThoughtDefs/Thoughts_sex.xml +++ b/1.4/Defs/ThoughtDefs/Thoughts_sex.xml @@ -30,6 +30,10 @@ 1
  • + +
  • CameInsideMIdeo
  • +
  • CameInsideM
  • +
    @@ -63,6 +67,9 @@ 5 + +
  • CameInsideFIdeo
  • +
    @@ -80,6 +87,16 @@ -10 + +
  • HaterCameInsideFEstrus
  • +
  • CameInsideF
  • +
  • HaterCameInsideFSafe
  • +
  • CameInsideFLowFert
  • +
  • CameInsideFFetishSafe
  • +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -93,10 +110,19 @@
  • What was I thinking, letting him do that? - -2 + -3 -5
  • + +
  • CameInsideF
  • +
  • HaterCameInsideFSafe
  • +
  • CameInsideFLowFert
  • +
  • CameInsideFFetishSafe
  • +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -113,6 +139,12 @@ -1 + +
  • CameInsideFFetishSafe
  • +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -130,6 +162,14 @@ -2 + +
  • HaterCameInsideFSafe
  • +
  • CameInsideFLowFert
  • +
  • CameInsideFFetishSafe
  • +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -147,6 +187,11 @@ 1 + +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -164,6 +209,13 @@ -5 + +
  • CameInsideFLowFert
  • +
  • CameInsideFFetishSafe
  • +
  • HaterCameInsideFIdeo
  • +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    @@ -226,7 +278,7 @@ - + EggRestorationReceived Thought_Memory 4 @@ -239,6 +291,77 @@ - - + + + CameInsideMIdeo + Thought_MemorySocial + 1.0 + 5 + 0.4 + +
  • + + It is my duty to make her pregnant. + 3 + 2 +
  • +
    + +
  • CameInsideM
  • +
    +
    + + + CameInsideFIdeo + Thought_MemorySocial + 3.0 + 5 + 0.1 + 1 + +
  • + + I hope this makes me pregnant like should be. + 15 + 10 +
  • +
    +
    + + + HaterCameInsideFIdeo + Thought_MemorySocial + 3.0 + 5 + 0.1 + 1 + +
  • + + I know I should become pregnant, but does it have to be his? + 5 + 2 +
  • +
    + +
  • CameInsideFFetish
  • +
  • CameInsideFIdeo
  • +
    +
    + + + HateTookContraceptivePillIdeo + Thought_Memory + 7.0 + 5 + 0.1 + +
  • + + My beliefs demand I become pregnant. + -5 +
  • +
    +
    + diff --git a/1.4/Languages/ChineseTraditional/DefInjected/HediffDef/Hediffs_Menstruation.xml b/1.4/Languages/ChineseTraditional/DefInjected/HediffDef/Hediffs_Menstruation.xml index df23159..fef8db8 100644 --- a/1.4/Languages/ChineseTraditional/DefInjected/HediffDef/Hediffs_Menstruation.xml +++ b/1.4/Languages/ChineseTraditional/DefInjected/HediffDef/Hediffs_Menstruation.xml @@ -13,4 +13,10 @@ 緩解源自於痛經及此類神經痛的苦楚。 環孢素 由於免疫抑製劑的作用,身體抵抗感染和疾病的能力受扼制。 + + 受費洛蒙影響 + 受附近某人處於發情期之故,此人的性需求及娛樂需求正急遽上升。 + + + diff --git a/1.4/Languages/ChineseTraditional/DefInjected/ThoughtDefs/Thoughts_sex.xml b/1.4/Languages/ChineseTraditional/DefInjected/ThoughtDefs/Thoughts_sex.xml index b1eeb56..86e27de 100644 --- a/1.4/Languages/ChineseTraditional/DefInjected/ThoughtDefs/Thoughts_sex.xml +++ b/1.4/Languages/ChineseTraditional/DefInjected/ThoughtDefs/Thoughts_sex.xml @@ -11,4 +11,13 @@ 卵母細胞再生術 我可以繼續繁衍一小段時間了! + + 內射了{0} + 讓她懷孕正是我的職責所在。 + {0}內射了我 + 我希望這次能懷上,讓我盡到責任。 + {0}內射了我 + 我知道我有生育的義務,但是難道非他不可嗎? + 服用避孕藥 + 我的信仰要求我能夠懷孕。 diff --git a/1.4/Languages/ChineseTraditional/Keyed/RJW_Menstruation.xml b/1.4/Languages/ChineseTraditional/Keyed/RJW_Menstruation.xml index 9e5a55e..d190877 100644 --- a/1.4/Languages/ChineseTraditional/Keyed/RJW_Menstruation.xml +++ b/1.4/Languages/ChineseTraditional/Keyed/RJW_Menstruation.xml @@ -154,4 +154,18 @@ (測試中!) 允許在「生機」(Biotech)追加的懷孕機制中出現多胞胎。 啟用這個選項將允許同卵或異卵雙胞胎出現在「生機」(Biotech)追加的懷孕機制中。 一併將啟用雜交系統;然而兩個類人(humanlikes)生物絕不可能生出動物。 + + 玩家小人刷新間隔 + 殖民者、囚犯和奴隸的子宮狀態應該每隔多久刷新一次? +較小的刷新間隔可以更精確地模擬真實子宮;較大的刷新間隔可以提升遊戲流暢度 + 非玩家小人刷新間隔 + 非玩家勢力控制下的小人的子宮應該每隔多久刷新一次? +較小的刷新間隔可以更精確地模擬真實子宮;較大的刷新間隔可以提升遊戲流暢度 + 動物子宮刷新間隔 + 動物們的子宮應該多久刷新一次? +較小的刷新間隔可以更精確地模擬真實子宮;較大的刷新間隔可以提升遊戲流暢度 + 啟用費洛蒙機制 + 擁有發情期的類人生物在發情期將刺激附近的雄性類人生物,使其性慾大增。 + 動物費洛蒙效果 + 選定擁有發情期的動物在發情期內對類人生物的影響。 diff --git a/1.4/Languages/English/Keyed/RJW_Menstruation.xml b/1.4/Languages/English/Keyed/RJW_Menstruation.xml index 18611bd..7aa650e 100644 --- a/1.4/Languages/English/Keyed/RJW_Menstruation.xml +++ b/1.4/Languages/English/Keyed/RJW_Menstruation.xml @@ -36,10 +36,8 @@ Ovulated - Gather cum into bucket - Store cum in womb Unknown - + Absorbed Enable womb icon @@ -74,7 +72,11 @@ Show only image of a fetus after discovered pregnancy. Do not show any information about a fetus. Enable menopause - Enable menopause effect that makes pawn infertile when they run out of eggs If you have problems with long lived races, turn off this option. + Enable menopause effect that makes pawn infertile when they run out of eggs. If you have problems with long lived races, turn off this option. + Enable pheromones + Allow humanlikes in visible estrus to increase the sex drive of nearby humanlike males. + Animal pheromone effect + Set the effect that animals in visible estrus have on humanlikes. Use multiple pregnancy Use multiple pregnancy instead RJW's default pregnancy Disable this option if you are in trouble with impregnation RJW pregnancy should be turned on. Enable hetero ovular twins @@ -118,7 +120,6 @@ Enable permanent vagina stretch after birth. If you are using another mod handling this, turn off this option. Morph power Set morph power. - Enable gather cum gizmo Estrus overrides RJW hookup settings If enabled, a pawn in visible estrus will use these settings for potential impregnation hookups instead of the RJW settings. All settings default to their RJW counterparts. Hookup minimum fuckability in estrus @@ -138,7 +139,6 @@ Draw womb icon for drafted pawns Reset to default - Gather cum Vaginal washing Custom Hybrid Editor diff --git a/1.4/Languages/Japanese/DefInjected/ApparelLayerDef/RJWMenstruation.xml b/1.4/Languages/Japanese/DefInjected/ApparelLayerDef/RJWMenstruation.xml new file mode 100644 index 0000000..cf5232e --- /dev/null +++ b/1.4/Languages/Japanese/DefInjected/ApparelLayerDef/RJWMenstruation.xml @@ -0,0 +1,4 @@ + + + 性器 + \ No newline at end of file diff --git a/1.4/Languages/Japanese/DefInjected/Drugs/Pills_Menstruation.xml b/1.4/Languages/Japanese/DefInjected/Drugs/Pills_Menstruation.xml new file mode 100644 index 0000000..a801670 --- /dev/null +++ b/1.4/Languages/Japanese/DefInjected/Drugs/Pills_Menstruation.xml @@ -0,0 +1,7 @@ + + + 鎮痛剤 + 生理痛を24時間和らげます。 その他の痛みにも効果あり。 + シクロスポリン + 免疫抑制剤。 抗精子抗体を直すことができるが、24時間の間、体の免疫力は低下する。 + diff --git a/1.4/Languages/Japanese/DefInjected/HediffDef/RJWMenstruation.xml b/1.4/Languages/Japanese/DefInjected/HediffDef/RJWMenstruation.xml new file mode 100644 index 0000000..e066065 --- /dev/null +++ b/1.4/Languages/Japanese/DefInjected/HediffDef/RJWMenstruation.xml @@ -0,0 +1,14 @@ + + + + 生理中 + 月経周期の終わりに膣からの出血。よく痛い。 + 不快 + 痒い + 痛い + 苦痛 + + + + + \ No newline at end of file diff --git a/1.4/Languages/Japanese/DefInjected/JobDef/RJWMenstruation.xml b/1.4/Languages/Japanese/DefInjected/JobDef/RJWMenstruation.xml new file mode 100644 index 0000000..abd8a16 --- /dev/null +++ b/1.4/Languages/Japanese/DefInjected/JobDef/RJWMenstruation.xml @@ -0,0 +1,7 @@ + + + 膣を洗っている + + + + \ No newline at end of file diff --git a/1.4/Languages/Japanese/DefInjected/StatDef/RJWMenstruation.xml b/1.4/Languages/Japanese/DefInjected/StatDef/RJWMenstruation.xml new file mode 100644 index 0000000..c5ce3d0 --- /dev/null +++ b/1.4/Languages/Japanese/DefInjected/StatDef/RJWMenstruation.xml @@ -0,0 +1,7 @@ + + + 吸収量 + 吸収可能な液体の最大量。 + + + \ No newline at end of file diff --git a/1.4/Languages/Japanese/DefInjected/ThingDef/RJWMenstruation.xml b/1.4/Languages/Japanese/DefInjected/ThingDef/RJWMenstruation.xml new file mode 100644 index 0000000..76f4ba9 --- /dev/null +++ b/1.4/Languages/Japanese/DefInjected/ThingDef/RJWMenstruation.xml @@ -0,0 +1,31 @@ + + + + +タンポン + +膣内の体液を吸収するタンポン。長時間に着けて感染症を引き起こすことがある。 + +汚れたタンポン + +濡れた使用済みタンポン。そのままにしておくと感染症を引き起こす可能性がある。 + +生理用品 + +膣からの体液を吸収するためのナプキン。 + +汚れた生理用品 + +濡れた使用済みナプキン + +卵巣再生薬 + +卵巣を回復させ、卵子の数をある程度を回復させる。 卵子がほとんど残っていない卵巣にはあまり効果がない。 更年期の回復はできない。 + +排卵剤 + +過排卵を誘発し、次の排卵で卵子を1~4個余分に産生させる。 更年期を早める可能性がある。 + +混じった物 + + \ No newline at end of file diff --git a/1.4/Languages/Japanese/DefInjected/ThoughtDefs/RJWMenstruation.xml b/1.4/Languages/Japanese/DefInjected/ThoughtDefs/RJWMenstruation.xml new file mode 100644 index 0000000..7092dde --- /dev/null +++ b/1.4/Languages/Japanese/DefInjected/ThoughtDefs/RJWMenstruation.xml @@ -0,0 +1,33 @@ + + + ぽたぽた + これを吸収するものはないのかな? + {0}に中出した + ライバルに中出した + {0}に中出した + 気持ちよかった。 + {0}に中出した + 妊娠するといいな。 + {0}に中出された + あいつの子を妊娠したくない! + {0}に中出された + そんなことをさせるなんて、私は何を考えていたんだろう? + {0}に中出された + 可能性は低いけど、妊娠できるかどうか心配で... + {0}に中出された + 妊娠しないか心配なんだ。 + {0}に中出された + 妊娠するとは思わないけど、妄想するのは楽しい。 + {0}に中出された + 妊娠することはないだろうけど、やっぱり嫌だ。 + 望まない妊娠 + 赤ん坊の世話なんてできるか?どうすればいい? + 望まない妊娠 + 赤ちゃんが生まれる。なんとかなるといいな。 + 避妊ピルを飲んだ + もう大丈夫です。 + 避妊ピルを飲んだ + 妊娠したい。 + 卵巣復活を得た + もう少しの間、繁殖ことができる。 + diff --git a/1.4/Languages/Japanese/Keyed/RJW_Menstruation.xml b/1.4/Languages/Japanese/Keyed/RJW_Menstruation.xml new file mode 100644 index 0000000..538bdc3 --- /dev/null +++ b/1.4/Languages/Japanese/Keyed/RJW_Menstruation.xml @@ -0,0 +1,152 @@ + + + RJW Menstruation Cycle + + 経血 + 空っぽ + 卵胞期 + 排卵期 + 黄体期 + 月経期 + 妊娠 + 出産後 + 無し + クリマクテリック + 更年期 + 無発情期 + 卵巣は卵子を放出するの準備をしています。この時期の終わりに排卵が起こります。 + 卵巣は卵子を放出するの準備をしています。精液が子宮に入ると排卵が起こります。 + 卵巣が卵子を子宮に放出しています。 + 子宮は受精卵を受け入れる準備ができている。この時期が終る前に受精卵が着床すれば妊娠となります。 + 子宮内膜は剥がれ落ち、着床できなかった受精卵を排出します。 + 子宮に赤ちゃんがいます。時間とケアによって、この世界の新しい住人となる。 + 子宮は最近の妊娠から回復しています。 + 子宮は繁殖能力がなく、妊娠することはできない。 + 卵巣が枯渇すると、月経周期が不規則になる。 + 。卵巣が枯渇し、子宮が卵子を産み出せなくなる。 + 繁殖期を過ぎた。時期が来れば発情周期は再開する。 + ステータス + 自分を搾乳する + ステータス + 胎児 + 父親 + 精液リスト + 受精卵 + 受精中 + 排卵済み + + + 精液をバケッツに集める + 子宮に精液をためる + 不明 + + + + Enable womb icon + Enable button in health tab + Enable animal cycle + Simulate animal cycles. Not recommended. + Implantation chance + Base implantation chance of fertilized egg This value affects the chance of impregnation. + Fertilization chance + The fertilization chance per ml of sperm per hour This value affects the chance of impregnation. + Cum decay ratio per hour + The amount of cum in the womb will drop by this amount every hour This value affects the chance of impregnation. + Cum fertility decay ratio per hour + Cum will lose fertility by this amount every hour This value affects fertilization chance indirectly. + Cycle acceleration + Accelerate menstruation cycle This can cause early menopause and infertility. Setting this lower than x12 is recommended. Rimworld's timescale: x6(default) + Colonist update interval + How often the womb of each of your colonists, prisoners, and slaves update. Lowering this will improve accuracy, increasing this can improve performance. + Non-colonist update interval + How often the womb of humans you don't control update. Lowering this will improve accuracy, increasing this can improve performance. + Animal update interval + How often the womb of animals update. Lowering this will improve accuracy, increasing this can improve performance. + Debug + Show debug information. + Womb status + Draw womb icon in status window. + Vagina and breast status + Draw vagina, anus and breast icons in the status window. + Fetus information level + Show all information about a fetus. + Show all information about a fetus after discovered pregnancy. + Show only image of a fetus after discovered pregnancy. + Do not show any information about a fetus. + Enable menopause + Enable menopause effect that makes pawn infertile when they run out of eggs If you have problems with long lived races, turn off this option. + Use multiple pregnancy + Use multiple pregnancy instead RJW's default pregnancy Disable this option if you are in trouble with impregnation RJW pregnancy should be turned on. + Enable hetero ovular twins + Allow pregnancy from multiple eggs at the same time. + Enable enzygotic twins + Enable a single egg to result in multiple identical offspring. + Enzygotic twins chance + The chance of identical twins. + Max enzygotic twins + The maximum number of identical siblings. + Enable egg overlay + Enable egg overlay on womb icon. + Bleeding amount + Estimated total bleeding amount + The approximate bleeding amount. The normal bleeding amount of a human is about 20~80ml per cycle. + Colonist + Prisoner + Allied Faction + Neutral + Hostile Faction + Target pawns: + The gizmo and button will appear for these pawns + Use hybrid extension + Overrides RJW and RaceSupport's hybrid definition. Dominant hybrid extension determines whose definition used first. Not recommended to change this. + Dominant hybrid extension + + + Breast growth during pregnancy + Change how much a pregnant pawn's breasts will grow when pregnant. Some pawns will grow more than others. + Nipple change during pregnancy + Change how much a pregnant pawn's nipples will change during pregnancy. + Permanent nipple change after pregnancy + Adjusts approximately how much of a pregnant pawn's nipples will remain changed after the pregnancy ends. + Customize Hybrids + Open custom hybrid editor. This will overrides hybrid definitions of XML files. + Allow shrink icon + Let icon become smaller if needed. + Egg lifespan multiplier + Multiply egg's lifespan. All non-implanted eggs will die at end of luteal stage regardless of this setting. + Enable vagina morph after birth + Enable permanent vagina stretch after birth. If you are using another mod handling this, turn off this option. + Morph power + Set morph power. + Enable gather cum gizmo + Estrus overrides RJW hookup settings + If enabled, a pawn in visible estrus will use these settings for potential impregnation hookups instead of the RJW settings. All settings default to their RJW counterparts. + Hookup minimum fuckability in estrus + Hookup minimum attractability in estrus + Hookup minimum opinion in estrus + Estimated sperm lifespan + Estimated egg lifespan + 排卵 {0} + 排卵時に各卵が放出される確率。 + 受精卵の着床確率。 この時間に受精する確率{0}% + Use basic RJW pregnancy + Use menstruation multiple pregnancy + Use Biotech pregnancy + (EXPERIMENTAL) Enable multiple babies/twins in a single Biotech pregnancy. + Enabling this option will allow identical and hetero ovular twins with Biotech. Also allows the hybrid system, but two humanlikes cannot produce an animal. + Show womb status when drafted + Draw womb icon for drafted pawns + Reset to default + + 精液を収集 + 膣を洗う + + Custom Hybrid Editor + Hybrids of {0} + When {0} breed with {1}, {2} will be born at {3} chance. If both races have hybrid definitions for each other, the father's definition will be used. + + 卵子がない + 子宮が必要 + {PAWN_labelShort} has completed {PAWN_possessive} egg restoration cycle. + + \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/HediffDef/Hediffs_Cum.xml b/1.4/Languages/Korean/DefInjected/HediffDef/Hediffs_Cum.xml new file mode 100644 index 0000000..aa9304d --- /dev/null +++ b/1.4/Languages/Korean/DefInjected/HediffDef/Hediffs_Cum.xml @@ -0,0 +1,11 @@ + + + 항정자 항체 + 항정자 항체 + 항정자 항체. 정자의 생존 시간을 줄입니다. + {0}(은)는 항정자 항체를 가졌습니다. + 좋은 임신률 + 좋은 임신률 + 좋은 임신률 + {0}(은)는 좋은 임신률을 가지고 있습니다. + \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/HediffDef/Hediffs_Menstruation.xml b/1.4/Languages/Korean/DefInjected/HediffDef/Hediffs_Menstruation.xml new file mode 100644 index 0000000..8ff5c76 --- /dev/null +++ b/1.4/Languages/Korean/DefInjected/HediffDef/Hediffs_Menstruation.xml @@ -0,0 +1,20 @@ + + + 생리통 + 생리 주기가 끝날 때 보지에서 출혈이 있습니다. + 종종 고통스럽습니다. + 불편함 + 짜증남 + 아픔 + 고통스러움 + 발정기 + 자궁이 생리 주기의 가장 비옥한 단계로 접어든 상태입니다. 신체가 임신하기를 갈망함에 따라 성적 흥분과 욕망은 극적으로 증가합니다. + 질내 성교의 가능성이 증가하고 잠재적으로 짝짓기 선택의 기준이 낮아집니다. + 발정기(숨김) + 자궁이 생리 주기의 가장 비옥한 단계로 접어든 상태입니다. 성적 흥분과 욕망이 약간 증가합니다. + 질내 성교의 가능성이 약간 증가합니다. + 진통제 + 생리통(및 기타)의 통증을 완화해 줍니다. + 면역 억제제 + 면역 억제제의 영향으로, 감염과 질병을 물리치는 신체의 면역력이 떨어집니다. + \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/HediffDef/RJWMenstruation.xml b/1.4/Languages/Korean/DefInjected/HediffDef/RJWMenstruation.xml deleted file mode 100644 index 0b9539a..0000000 --- a/1.4/Languages/Korean/DefInjected/HediffDef/RJWMenstruation.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 생리통 - 생리중입니다. - 불편함 - 짜증남 - 아픔 - 고통스러움 - 발정기 - 발정기입니다. - 발정기(숨김) - 발정기입니다. - 진통제 - 약간의 고통을 줄여줍니다. - - - - \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/JobDef/RJWMenstruation.xml b/1.4/Languages/Korean/DefInjected/JobDef/Jobs_CleanSelf.xml similarity index 59% rename from 1.4/Languages/Korean/DefInjected/JobDef/RJWMenstruation.xml rename to 1.4/Languages/Korean/DefInjected/JobDef/Jobs_CleanSelf.xml index 67ae283..797f994 100644 --- a/1.4/Languages/Korean/DefInjected/JobDef/RJWMenstruation.xml +++ b/1.4/Languages/Korean/DefInjected/JobDef/Jobs_CleanSelf.xml @@ -1,7 +1,4 @@ - + 질세척 하는중 - - - \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/JobDef/Jobs_MilkSelf.xml b/1.4/Languages/Korean/DefInjected/JobDef/Jobs_MilkSelf.xml new file mode 100644 index 0000000..8a21fd6 --- /dev/null +++ b/1.4/Languages/Korean/DefInjected/JobDef/Jobs_MilkSelf.xml @@ -0,0 +1,4 @@ + + + 스스로 젖 짜는 중 + \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/KeyBinding/KeyBindings_Menstruation.xml b/1.4/Languages/Korean/DefInjected/KeyBinding/KeyBindings_Menstruation.xml new file mode 100644 index 0000000..8415670 --- /dev/null +++ b/1.4/Languages/Korean/DefInjected/KeyBinding/KeyBindings_Menstruation.xml @@ -0,0 +1,4 @@ + + + 생리: 상태 창을 엽니다. + \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/RecipeDef/BreastSurgeries.xml b/1.4/Languages/Korean/DefInjected/RecipeDef/BreastSurgeries.xml deleted file mode 100644 index 8c501f4..0000000 --- a/1.4/Languages/Korean/DefInjected/RecipeDef/BreastSurgeries.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - 유륜확대 수술 - 유륜을 크게만듭니다. - 유륜확대 수술중 - 유륜축소 수술 - 유륜을 작게만듭니다. - 유륜축소 수술중 - 유두확대 수술 - 유두를 크게만듭니다. - 유두확대 수술중 - 유두축소 수술 - 유두를 작게만듭니다. - 유두축소 수술중 - \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/RecipeDef/Recipes_Surgery_Breast.xml b/1.4/Languages/Korean/DefInjected/RecipeDef/Recipes_Surgery_Breast.xml new file mode 100644 index 0000000..4c6cb9d --- /dev/null +++ b/1.4/Languages/Korean/DefInjected/RecipeDef/Recipes_Surgery_Breast.xml @@ -0,0 +1,21 @@ + + + 유륜 확대 + 유륜을 크게 만듭니다. + 유륜 확대 중 + 유륜 축소 + 유륜을 작게 만듭니다. + 유륜 축소 중 + 유두 확대 + 유두를 크게 만듭니다. + 유두 확대 중 + 유두 축소 + 유두를 작게 만듭니다. + 유두 축소 중 + 유두 흑화 + 유두를 어둡게 만듭니다. + 유두 흑화 중 + 유두 미백 + 유두를 밝게 만듭니다. + 유두 미백 중 + \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/RecordDef/RJWMenstruation.xml b/1.4/Languages/Korean/DefInjected/RecordDef/RJWMenstruation.xml deleted file mode 100644 index b807e13..0000000 --- a/1.4/Languages/Korean/DefInjected/RecordDef/RJWMenstruation.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 질내사정 - 질내사정당한 정액 양 - \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/RecordDef/Records_Womb.xml b/1.4/Languages/Korean/DefInjected/RecordDef/Records_Womb.xml new file mode 100644 index 0000000..6831206 --- /dev/null +++ b/1.4/Languages/Korean/DefInjected/RecordDef/Records_Womb.xml @@ -0,0 +1,7 @@ + + + 질내사정 + 질내사정당한 정액 양 + 수정된 알 + 정자에 의해 수정된 알의 갯수 + \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/StatDef/RJWMenstruation.xml b/1.4/Languages/Korean/DefInjected/StatDef/Stats_Absorber.xml similarity index 73% rename from 1.4/Languages/Korean/DefInjected/StatDef/RJWMenstruation.xml rename to 1.4/Languages/Korean/DefInjected/StatDef/Stats_Absorber.xml index f92112e..52f4854 100644 --- a/1.4/Languages/Korean/DefInjected/StatDef/RJWMenstruation.xml +++ b/1.4/Languages/Korean/DefInjected/StatDef/Stats_Absorber.xml @@ -1,7 +1,5 @@ - + 흡수량 액체를 흡수할수 있는 정도입니다. - - \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/TaleDef/Tales_Cum.xml b/1.4/Languages/Korean/DefInjected/TaleDef/Tales_Cum.xml new file mode 100644 index 0000000..9709f39 --- /dev/null +++ b/1.4/Languages/Korean/DefInjected/TaleDef/Tales_Cum.xml @@ -0,0 +1,20 @@ + + + 질내사정 + tale_noun->[FUCKER_nameDef](은)는 [FUCKED_nameDef]의 안에 들어갔다. + image->[FUCKER_nameFull]의 자지는 [circumstance_group] [FUCKED_nameFull]의 보지 안에 깊숙히 들어갔다. + image->[FUCKER_nameFull]의 자지는 [circumstance_group] [FUCKED_nameFull]의 보지 속으로 사라졌다. + image->[FUCKED_nameFull]의 보지는 [circumstance_group] [FUCKER_nameFull]의 자지로 꽉 채워졌다. + image->[FUCKED_nameFull]의 보지는 [circumstance_group] [FUCKER_nameFull]의 자지를 꽉꽉 물어대었다. + circumstance_phrase->[FUCKER_nameDef](이)가 흥분에 이를 갈 때 + circumstance_phrase->[FUCKER_nameDef](이)가 만족스런 미소를 짓는 동안 + circumstance_phrase->[FUCKED_nameDef]쾌락에 몸을 떨 때 + circumstance_phrase->[FUCKER_nameDef](이)가 [FUCKED_nameDef]에게 한 발 쌀 동안 + circumstance_phrase->[FUCKED_nameDef](이)가 미소로 [FUCKER_nameDef]의 눈을 마주칠 때 + desc_sentence->[FUCKER_nameDef]의 정액이 [FUCKED_nameDef]의 보지를 넘어 바닥에 넘쳐흘렀다. + desc_sentence->[FUCKER_nameDef]의 정자가 [FUCKED_nameDef]의 자궁에서 경주를 벌이고, 끝내 [FUCKED_possessive]의 난자에 도달했다. + desc_sentence->[FUCKER_nameDef]의 정액이 [FUCKED_nameDef]의 자궁에 쏟아졌다. + desc_sentence->[FUCKED_nameDef]의 자궁은 정액으로 가득찼다. + desc_sentence->[FUCKER_nameDef]의 얼굴에 땀이 흘러내렸다. + desc_sentence->[FUCKED_nameDef](은)는 심하게 헐떡였다. + \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/ApparelLayerDef/RJWMenstruation.xml b/1.4/Languages/Korean/DefInjected/ThingDef/ApparelLayerDefs_Absorber.xml similarity index 50% rename from 1.4/Languages/Korean/DefInjected/ApparelLayerDef/RJWMenstruation.xml rename to 1.4/Languages/Korean/DefInjected/ThingDef/ApparelLayerDefs_Absorber.xml index 9c687e3..771e108 100644 --- a/1.4/Languages/Korean/DefInjected/ApparelLayerDef/RJWMenstruation.xml +++ b/1.4/Languages/Korean/DefInjected/ThingDef/ApparelLayerDefs_Absorber.xml @@ -1,4 +1,4 @@ - + 성기 \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/ThingDef/Apparel_Absorbers.xml b/1.4/Languages/Korean/DefInjected/ThingDef/Apparel_Absorbers.xml new file mode 100644 index 0000000..e568485 --- /dev/null +++ b/1.4/Languages/Korean/DefInjected/ThingDef/Apparel_Absorbers.xml @@ -0,0 +1,13 @@ + + + 탐폰 + 보지에서 나오는 액체를 흡수하는 탐폰입니다. +오래 착용하고 있을 경우 감염이 발생할수도 있습니다. + 더러운 탐폰 + 사용된 축축한 탐폰입니다. + 생리대 + 보지에서 나오는 액체를 흡수하는 생리대입니다. +흡수량 이상의 액체가 나올경우 샐수있습니다. + 젖은 생리대 + 사용된 축축한 생리대입니다. + \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/ThingDef/Filth_Mixture.xml b/1.4/Languages/Korean/DefInjected/ThingDef/Filth_Mixture.xml new file mode 100644 index 0000000..477650e --- /dev/null +++ b/1.4/Languages/Korean/DefInjected/ThingDef/Filth_Mixture.xml @@ -0,0 +1,4 @@ + + + 혼합물 + \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/ThingDef/Pills_Menstruation.xml b/1.4/Languages/Korean/DefInjected/ThingDef/Pills_Menstruation.xml new file mode 100644 index 0000000..5f788e0 --- /dev/null +++ b/1.4/Languages/Korean/DefInjected/ThingDef/Pills_Menstruation.xml @@ -0,0 +1,17 @@ + + + 난소 재생약 + 난소를 재생시켜 평생 배출할 수 있는 난자의 총 양을 복구시킵니다. +난자 소모량이 클수록 효과가 줄어듭니다. +폐경을 회복시키지 않습니다. + 과배란 유도제 + 과배란을 유도하는 약물입니다. 과배란을 유도하여 다음 배란에서 1-4개의 여분의 난자를 배란합니다. +조기폐경을 초래할수도 있습니다. + 진통제 + 24시간 동안 생리통을 완화시켜 줍니다. + +다른 통증에도 효과적입니다. + 면역 억제제 + 면역 억제제. +항정자 항체를 치료할 수 있지만, 24시간 동안 감염과 질병을 퇴치하는 신체의 면역력을 떨어뜨립니다. 복용하면 정자의 생존 시간을 늘립니다. + diff --git a/1.4/Languages/Korean/DefInjected/ThingDef/RJWMenstruation.xml b/1.4/Languages/Korean/DefInjected/ThingDef/RJWMenstruation.xml deleted file mode 100644 index c48a975..0000000 --- a/1.4/Languages/Korean/DefInjected/ThingDef/RJWMenstruation.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - 탐폰 - 보지에서 나오는 액체를 흡수하는 탐폰입니다. 오래 착용하고 있을 경우 감염이 발생할수도 있습니다. - 더러운 탐폰 - 사용된 축축한 탐폰입니다. - 생리대 - 보지에서 나오는 액체를 흡수하는 생리대입니다. 흡수량 이상의 액체가 나올경우 샐수있습니다. - 젖은 생리대 - 사용된 축축한 생리대입니다. - 난소 재생약 - 난소를 재생시켜 배출할수있는 난자의 양을 증가시킵니다. 난자 소모량이 클수록 효과가 줄어듭니다. 폐경을 회복시키지 않습니다. - 과배란 유도제 - 과배란을 유도하는 약물입니다. 조기폐경을 초래할수도 있습니다. - 진통제 - 하루동안 약간의 통증을 줄여줍니다. - 혼합물 - - - \ No newline at end of file diff --git a/1.4/Languages/Korean/DefInjected/ThoughtDef/RJWMenstruation.xml b/1.4/Languages/Korean/DefInjected/ThoughtDef/Thoughts_sex.xml similarity index 50% rename from 1.4/Languages/Korean/DefInjected/ThoughtDef/RJWMenstruation.xml rename to 1.4/Languages/Korean/DefInjected/ThoughtDef/Thoughts_sex.xml index 9509437..6d817ee 100644 --- a/1.4/Languages/Korean/DefInjected/ThoughtDef/RJWMenstruation.xml +++ b/1.4/Languages/Korean/DefInjected/ThoughtDef/Thoughts_sex.xml @@ -1,29 +1,32 @@ - + 가랑이가 축축함 - 찝찝해... - {0}에게 질내사정당함 - 임신할까봐 걱정돼... + 이걸 닦아낼 뭔가가 없을까? + + {0}에게 질내사정함 + 그 년한테 질싸를 했어! + {0}에게 질내사정함 + 질싸를하니 기분이 좋네. + {0}에게 질내사정당함 + 임신하면 좋을 텐데. + {0}에게 질내사정당함 + 나는 그 새끼의 자식을 임신하고 싶지 않아! + {0}에게 질내사정당함 + 아. 이런 일을 당해야 하다니... {0}에게 질내사정당함 확률은 낮겠지만 임신할까봐 걱정돼... - {0}에게 질내사정당함 - 임신할것 같아 + {0}에게 질내사정당함 + 임신할까봐 걱정돼... {0}에게 질내사정당함 - 좋았어... - {0}에게 질내사정함 - 질싸를하니 기분이 좋네 - {0}에게 질내사정당함 - 그새끼의 자식을 임신하고 싶지 않아... + 아마 임신 안할꺼야. 게다가 좋기도 했어... {0}에게 질내사정당함 - 안전일이였지만 기분나빠 - {0}에게 질내사정함 - 그년한테 질싸를했어 + 안전일이였지만, 기분 더러워. 원치않은 임신 - 어떻게 해야하지?... 그년한테 질싸를했어 - 원치않은 임신 - 어떻게 해야하지?... + 어떻게 해야하지?... + 원치않은 임신 + 아이를 가졌어. 하지만 아마 괜찮을꺼야. 피임약 복용 - 괜찮을거야 + 이젠 해도 괜찮아. 피임약 복용 - 임신하고싶어 + 임신하고 싶은데. \ No newline at end of file diff --git a/1.4/Languages/Korean/Keyed/RJW_Menstruation.xml b/1.4/Languages/Korean/Keyed/RJW_Menstruation.xml index 829fcf5..1a80cfd 100644 --- a/1.4/Languages/Korean/Keyed/RJW_Menstruation.xml +++ b/1.4/Languages/Korean/Keyed/RJW_Menstruation.xml @@ -1,18 +1,29 @@ - + - RJW Menstruation Cycle - + RJW 생리 주기 생리혈 - 없음 + 정액 없음 난포기 - 배란 + 배란 황체기 생리중 임신 회복기 - 없음 + 불임 갱년기 + 폐경 휴지기 + 난소가 배란할 준비를 하고 있습니다. 배란은 이 단계가 끝날 때 발생합니다. + 난소가 배란할 준비를 하고 있습니다. 정액이 자궁에 들어가면 배란이 일어날 것입니다. + 난소는 자궁 안으로 난자를 방출하고 있습니다. + 자궁은 수정란을 받을 준비가 되어 있습니다. 이 단계가 끝나기 전에 착상이 되면 임신이 됩니다. + 착상에 실패한 난자와 함께 자궁의 내벽이 허물어지고 있습니다. + 아기가 자궁 안에서 자라고 있습니다. 정성으로 보살핀다면, 이 세상에 새롭게 태어날 것입니다. + 자궁이 최근 임신에서 회복되고 있습니다. + 자궁이 불임으로 임신할 수 없습니다. + 난소가 거의 고갈되어 생리 주기가 불규칙해졌습니다. + 난소가 고갈되어 자궁은 더 이상 난자를 품을 수 없습니다. + 자궁이 번식기가 아닙니다. 조건이 충족되면 주기가 재개됩니다. 상태창 모유 짜기 상태 @@ -24,11 +35,15 @@ 배란 - + 양동이에 정액 모으기 + 자궁의 정액 모으기 + 알려지지 않음 자궁아이콘 활성화 건강탭에 버튼 추가 동물주기 활성화 - 동물의 월경주기를 시뮬레이션합니다. 변경한후에 세이브로드가 필요합니다. not recommended + 동물의 월경주기를 시뮬레이션합니다. +변경한후에 세이브로드가 필요합니다. +추천하지 않음 착상확률 수정란의 착상확률을 설정합니다. 수정확률 @@ -36,10 +51,14 @@ 시간당 정액배출비율 이 비율만큼 매 시간마다 정액이 배출됩니다. 시간당 정자 사망비율 - 이 비율만큼 매 시간마다 정자가 사망해 정액이 생식능력을 잃습니다. 정자 예상수명: 정액이 대부분의 생식능력을 잃는 시간입니다. + 이 비율만큼 매 시간마다 정자가 사망해 정액이 생식능력을 잃습니다. +정자 예상수명: 정액이 대부분의 생식능력을 잃는 시간입니다. 주기 가속 - 월경주기를 더 빠르게합니다. 이 설정은 조기폐경과 난임을 유발할수도 있습니다. 12배속 이하로 설정하는것을 권장합니다. 림월드의 시간배율: x6(default) - Debug + 월경주기를 더 빠르게합니다. +이 설정은 조기폐경과 난임을 유발할수도 있습니다. +12배속 이하로 설정하는것을 권장합니다. +림월드의 시간배율: x6(기본) + 디버그 디버그정보를 보여줍니다. 자궁 그림 상태창에 자궁그림을 표시합니다. @@ -51,9 +70,13 @@ 태아에 대한 정보를 표시하지 않지만, 임신한 이후 태아이미지를 표시합니다. 태아에 대한 어떠한 정보도 표시하지 않습니다. 폐경기 활성화 - 시간이 지남에따라 불임상태로 만드는 폐경기를 활성화합니다. 수명이 긴 종족을 사용할때 문제가 있으면 이 옵션을 끄세요. 변경한후에 세이브로드가 필요합니다. + 시간이 지남에따라 불임상태로 만드는 폐경기를 활성화합니다. +수명이 긴 종족을 사용할때 문제가 있으면 이 옵션을 끄세요. +변경한후에 세이브로드가 필요합니다. 다중임신 - RJW의 기본임신 대신 다중임신을 사용합니다. 임신에 문제가 있다면 이 기능을 끄는것으로 해결될수도 있습니다. RJW 임신이 활성화 되어야 합니다. + RJW의 기본임신 대신 다중임신을 사용합니다. +임신에 문제가 있다면 이 기능을 끄는것으로 해결될수도 있습니다. +RJW 임신이 활성화 되어야 합니다. 이란성 쌍둥이 활성화 다수의 난자가 임신으로 이어지게 합니다. 일란성 쌍둥이 활성화 @@ -66,7 +89,9 @@ 자궁그림 위에 난자그림를 표시합니다. 생리양 예상되는 총 생리양 - 생리혈의 양을 설정합니다. 실제 생리양은 보지에따라 다를수 있습니다. 일반적인 인간 여성의 생리량은 약 20~80ml입니다. + 생리혈의 양을 설정합니다. +실제 생리양은 보지에따라 다를수 있습니다. +일반적인 인간 여성의 생리량은 약 20~80ml입니다. 정착민 죄수 동맹관계 @@ -75,36 +100,54 @@ 표시 대상 아이콘과 버튼을 표시할 대상입니다. 잡종 정의 대체 - RJW와 RaceSupport의 잡종정의를 대체합니다. 우선순위는 누구의 잡종 정의를 우선으로 사용할지 정합니다. 변경하지 않는것을 추천합니다. + RJW와 RaceSupport의 잡종정의를 대체합니다. +우선순위는 누구의 잡종 정의를 우선으로 사용할지 정합니다. 변경하지 않는것을 추천합니다. 우선순위 - 임신후 유두 변화량 - 임신후에 유두가 얼마나 어두워지고 커지는지 설정합니다. - 유두 영구변화량 - 매번 임신할때마다 유두가 얼마나 영구적으로 어두워지고 커지는지 설정합니다. - 최대 변화량 - 유두는 이 값 이상으로 변하지 않습니다. - 유두 변화 속도 - 유두가 얼마나 빨리 변하는지 설정합니다. + 임신 중 유방 크기 변화 + 임신했을 때 가슴이 얼마나 커질지 설정합니다. 폰에 따라 변화 정도가 다릅니다. + 임신 중 유두 변화 + 임신 중에 유두가 얼마나 변할지를 설정합니다. + 임신 후 유두 영구 변화 + 임신한 폰의 유두가 임신이 끝난 후 변화된 상태를 유지할 대략적인 양을 설정합니다. 잡종 정의 변경하기 - 사용자 지정 잡종 편집기를 엽니다. 이 설정은 XML파일의 잡종 정의를 대체합니다. + 사용자 지정 잡종 편집기를 엽니다. +이 설정은 XML파일의 잡종 정의를 대체합니다. 아이콘 축소 허용 아이콘 축소를 허용합니다. 난자 수명 배수 - 난자 수명을 늘립니다. 이 설정에 관계없이 황체기가 끝나면 난자는 죽습니다. + 난자 수명을 늘립니다. +이 설정에 관계없이 황체기가 끝나면 난자는 죽습니다. 출산 이후 보지 변화 활성화 - 출산 이후 보지가 영구적으로 늘어나게 합니다. 만약 이 설정을 다루고있는 다른 모드가 있다면, 이 설정을 끄세요. + 출산 이후 보지가 영구적으로 늘어나게 합니다. +만약 이 설정을 다루고있는 다른 모드가 있다면, 이 설정을 끄세요. 변화 강도 변화 강도를 설정합니다. + 정액 모으기 아이콘을 보이기 + 발정기 시, RJW 유혹 설정 덮어쓰기 + 활성화된 경우 발정기에 있는 폰은 RJW 설정 대신 유혹으로 이 설정을 사용합니다. +모든 설정은 기본적으로 해당 RJW 설정으로 설정됩니다. + 발정기 시 유혹 최소 섹스 가능성 + 발정기 시 유혹 최소 매력 + 발정기 시 유혹 최소 의견 정자 예상수명 난자 예상수명 - 한시간 안에 수정될 확률: {0}% 수정란이 임신으로 진행될 확률입니다. 흰색 오버레이는 정자가 난자를 수정시킬 확률을 표시하는 것입니다. + 한시간 안에 수정될 확률: {0}% +흰색 오버레이는 정자가 난자를 수정시킬 확률을 표시하는 것이고, +분홍색 임신률 그래프는 수정된 난자가 착상되어 임신으로 진행될 확률입니다. + +수정이 되더라도 착상에 실패하면 임신하지 않습니다. + RJW 기본 임신 사용 + 생리 모드 다중 임신 사용 + 바이오테크 임신 사용 + 기본값으로 재설정 + 정액 모으기 질세척 - 사용자 지정 잡종 편집기 {0}의 잡종설정 - {0}이(가) {1}와(과) 교미했을 때, {2}이(가) {3}의 확률로 태어납니다. 만약 두 종족이 서로에 대한 잡종 정의가 있을경우 아버지 쪽의 정의가 우선적으로 사용됩니다. - - \ No newline at end of file + {0}이(가) {1}와(과) 교미했을 때, {2}이(가) {3}의 확률로 태어납니다. +만약 두 종족이 서로에 대한 잡종 정의가 있을경우 아버지 쪽의 정의가 우선적으로 사용됩니다. + 난자 없음 + diff --git a/1.4/MilkModule/Assemblies/MilkModule.dll b/1.4/MilkModule/Assemblies/MilkModule.dll deleted file mode 100644 index d34b673..0000000 Binary files a/1.4/MilkModule/Assemblies/MilkModule.dll and /dev/null differ diff --git a/1.4/MilkModule/Defs/JobDefs/Jobs_MilkSelf_MC.xml b/1.4/MilkModule/Defs/JobDefs/Jobs_MilkSelf_MC.xml deleted file mode 100644 index 69cdc4d..0000000 --- a/1.4/MilkModule/Defs/JobDefs/Jobs_MilkSelf_MC.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - LactateSelf_MC - MilkModule.JobDriver_MilkSelf_MC - lactating self - true - - diff --git a/1.4/Patches/PawnModExtensions_Animals.xml b/1.4/Patches/PawnModExtensions_Animals.xml index 91a2e87..19172ac 100644 --- a/1.4/Patches/PawnModExtensions_Animals.xml +++ b/1.4/Patches/PawnModExtensions_Animals.xml @@ -82,7 +82,7 @@ /Defs/ThingDef[defName="Husky"]
  • - Fetus/Canines/Fetus_Dog + Fetus/Canines/Fetus_Canine (255,255,255,255) 0.05 @@ -95,7 +95,7 @@ /Defs/ThingDef[defName="LabradorRetriever"]
  • - Fetus/Canines/Fetus_Dog + Fetus/Canines/Fetus_Canine (255,255,255,255) 0.05 @@ -108,7 +108,7 @@ /Defs/ThingDef[defName="YorkshireTerrier"]
  • - Fetus/Canines/Fetus_Dog + Fetus/Canines/Fetus_Canine (255,255,255,255) 0.05 @@ -122,7 +122,7 @@ /Defs/ThingDef[defName="Warg"]
  • - Fetus/Canines/Fetus_Dog + Fetus/Canines/Fetus_Canine (255,255,255,255) 0.05 @@ -135,7 +135,7 @@ /Defs/ThingDef[@Name="ThingBaseWolf"]
  • - Fetus/Canines/Fetus_Dog + Fetus/Canines/Fetus_Canine (255,255,255,255) 0.05 @@ -148,7 +148,7 @@ /Defs/ThingDef[@Name="ThingBaseFox"]
  • - Fetus/Canines/Fetus_Dog + Fetus/Canines/Fetus_CanineV (255,255,255,255) 0.05 @@ -161,7 +161,7 @@ /Defs/ThingDef[defName="Pig"]
  • - Fetus/Livestocks/Fetus_Pig + Fetus/Pigs/Fetus_Pig (255,255,255,255) 0.8 @@ -174,7 +174,7 @@ /Defs/ThingDef[defName="WildBoar"]
  • - Fetus/Livestocks/Fetus_Pig + Fetus/Pigs/Fetus_Pig (255,255,255,255) 0.8 @@ -215,7 +215,7 @@ Defs/ThingDef[defName="Sheep"]
  • - Fetus/Livestocks/Fetus_S_Bovine + Fetus/Bovines/Fetus_Bovine (255,255,255,255) 0.3 @@ -230,7 +230,7 @@ Defs/ThingDef[defName="Goat"]
  • - Fetus/Livestocks/Fetus_S_Bovine + Fetus/Bovines/Fetus_Bovine (255,255,255,255) 0.3 @@ -245,7 +245,7 @@ Defs/ThingDef[defName="Ibex"]
  • - Fetus/Livestocks/Fetus_S_Bovine + Fetus/Cervines/Fetus_Cervine (255,255,255,255) 0.3 @@ -260,7 +260,7 @@ Defs/ThingDef[defName="Deer"]
  • - Fetus/Livestocks/Fetus_S_Bovine + Fetus/Cervines/Fetus_Cervine (255,255,255,255) 0.3 @@ -275,7 +275,7 @@ Defs/ThingDef[defName="Gazelle"]
  • - Fetus/Livestocks/Fetus_Bovine + Fetus/Cervines/Fetus_Cervine (255,255,255,255) 0.3 @@ -290,7 +290,7 @@ Defs/ThingDef[defName="Alpaca"]
  • - Fetus/Livestocks/Fetus_Bovine + Fetus/Bovines/Fetus_Bovine (255,255,255,255) 0.3 @@ -305,7 +305,7 @@ Defs/ThingDef[defName="Yak"]
  • - Fetus/Livestocks/Fetus_Bovine + Fetus/Bovines/Fetus_Bovine (255,255,255,255) 0.3 @@ -320,7 +320,7 @@ Defs/ThingDef[defName="Elk"]
  • - Fetus/Livestocks/Fetus_Bovine + Fetus/Cervines/Fetus_Cervine (255,255,255,255) 0.4 @@ -335,7 +335,7 @@ Defs/ThingDef[defName="Caribou"]
  • - Fetus/Livestocks/Fetus_S_Bovine + Fetus/Cervines/Fetus_Cervine (255,255,255,255) 0.4 @@ -350,7 +350,7 @@ Defs/ThingDef[defName="Horse"]
  • - Fetus/Livestocks/Fetus_Bovine + Fetus/Bovines/Fetus_Bovine (255,255,255,255) 0.4 @@ -365,7 +365,7 @@ Defs/ThingDef[defName="Donkey"]
  • - Fetus/Livestocks/Fetus_Bovine + Fetus/Bovines/Fetus_Bovine (255,255,255,255) 0.4 @@ -380,7 +380,7 @@ Defs/ThingDef[defName="Cow"]
  • - Fetus/Livestocks/Fetus_Bovine + Fetus/Bovines/Fetus_Bovine (255,255,255,255) 0.4 @@ -395,7 +395,7 @@ Defs/ThingDef[defName="Boomalope"]
  • - Fetus/Livestocks/Fetus_Bovine + Fetus/Boomies/Fetus_Boomalope (255,255,255,255) 0.4 @@ -410,7 +410,7 @@ Defs/ThingDef[defName="Muffalo"]
  • - Fetus/Livestocks/Fetus_Bovine + Fetus/Muffalos/Fetus_Muffalo (255,255,255,255) 0.4 @@ -425,7 +425,7 @@ Defs/ThingDef[defName="Bison"]
  • - Fetus/Livestocks/Fetus_S_Bovine + Fetus/Bovines/Fetus_Bovine (255,255,255,255) 0.4 @@ -440,7 +440,7 @@ Defs/ThingDef[defName="Dromedary"]
  • - Fetus/Livestocks/Fetus_Bovine + Fetus/Bovines/Fetus_Bovine (255,255,255,255) 0.4 @@ -455,7 +455,7 @@ Defs/ThingDef[defName="Elephant"]
  • - Fetus/Livestocks/Fetus_Elephant + Fetus/Elephants/Fetus_Elephant (255,255,255,255) 0.5 @@ -470,7 +470,7 @@ Defs/ThingDef[defName="Rhinoceros"]
  • - Fetus/Livestocks/Fetus_Elephant + Fetus/Rhinoceroses/Fetus_Rhinoceros (255,255,255,255) 0.5 @@ -485,7 +485,7 @@ Defs/ThingDef[defName="Cat"]
  • - Fetus/Feline/Fetus_Cat + Fetus/Felines/Fetus_Feline_D (255,255,255,255) 0.1 @@ -500,7 +500,7 @@ Defs/ThingDef[@Name="BigCatThingBase"]
  • - Fetus/Feline/Fetus_Cat + Fetus/Felines/Fetus_Feline_W (255,255,255,255) 0.2 @@ -515,7 +515,7 @@ Defs/ThingDef[defName="Cougar"]
  • - Fetus/Feline/Fetus_Cat + Fetus/Felines/Fetus_Feline_W (255,255,255,255) 0.2 @@ -530,7 +530,7 @@ Defs/ThingDef[defName="Panther"]
  • - Fetus/Feline/Fetus_Cat + Fetus/Felines/Fetus_Feline_D (255,255,255,255) 0.2 @@ -545,7 +545,7 @@ Defs/ThingDef[defName="Iguana"]
  • - Fetus/Reptile/Fetus_Lizard + Fetus/Reptiles/Fetus_Reptile (255,255,255,255) 0.5 @@ -560,7 +560,7 @@ Defs/ThingDef[defName="Tortoise"]
  • - Fetus/Reptile/Fetus_Lizard + Fetus/Reptiles/Fetus_Reptile (255,255,255,255) 0.5 @@ -575,7 +575,7 @@ Defs/ThingDef[defName="Cobra"]
  • - Fetus/Reptile/Fetus_Snake + Fetus/Snakes/Fetus_Snake (255,255,255,255) 0.5 @@ -590,7 +590,7 @@ Defs/ThingDef[@Name="BaseHare"]
  • - Fetus/Pests/Fetus_Rodent + Fetus/Lagomorphs/Fetus_Lagomorph (255,255,255,255) 0.4 @@ -605,7 +605,7 @@ Defs/ThingDef[defName="Rat"]
  • - Fetus/Pests/Fetus_Rodent + Fetus/Rodents/Fetus_Rodent (255,255,255,255) 0.4 @@ -620,7 +620,7 @@ Defs/ThingDef[defName="Boomrat"]
  • - Fetus/Pests/Fetus_Rodent + Fetus/Boomies/Fetus_Boomrat (255,255,255,255) 0.4 @@ -635,7 +635,7 @@ Defs/ThingDef[defName="GuineaPig"]
  • - Fetus/Pests/Fetus_Rodent + Fetus/Rodents/Fetus_Rodent (255,255,255,255) 0.4 @@ -650,7 +650,7 @@ Defs/ThingDef[defName="Chinchilla"]
  • - Fetus/Pests/Fetus_Rodent + Fetus/Rodents/Fetus_Rodent (255,255,255,255) 0.4 @@ -665,7 +665,7 @@ Defs/ThingDef[defName="Snowhare"]
  • - Fetus/Pests/Fetus_Rodent + Fetus/Lagomorphs/Fetus_Lagomorph (255,255,255,255) 0.4 @@ -680,7 +680,7 @@ Defs/ThingDef[defName="Capybara"]
  • - Fetus/Pests/Fetus_Rodent + Fetus/Rodents/Fetus_Rodent (255,255,255,255) 0.4 @@ -695,7 +695,7 @@ Defs/ThingDef[defName="Raccoon"]
  • - Fetus/Pests/Fetus_Rodent + Fetus/Rodents/Fetus_Rodent (255,255,255,255) 0.4 @@ -710,7 +710,7 @@ Defs/ThingDef[defName="Alphabeaver"]
  • - Fetus/Pests/Fetus_Rodent + Fetus/Rodents/Fetus_Rodent (255,255,255,255) 0.4 @@ -725,7 +725,7 @@ Defs/ThingDef[defName="Squirrel"]
  • - Fetus/Pests/Fetus_Rodent + Fetus/Rodents/Fetus_Rodent (255,255,255,255) 0.4 @@ -740,7 +740,7 @@ Defs/ThingDef[defName="Monkey"]
  • - Fetus/Primate/Fetus_Monkey + Fetus/Primate/Fetus_Primate (255,255,255,255) 0.2 @@ -755,7 +755,7 @@ Defs/ThingDef[defName="Megasloth"]
  • - Fetus/Livestocks/Fetus_S_Bovine + Fetus/Megasloths/Fetus_Megasloth (255,255,255,255) 0.9 @@ -770,7 +770,7 @@ Defs/ThingDef[defName="Thrumbo"]
  • - Fetus/Livestocks/Fetus_S_Bovine + Fetus/Thrumbos/Fetus_Thrumbo (255,255,255,255) 0.7 @@ -785,7 +785,7 @@ Defs/ThingDef[@Name="BaseMechanoid"]
  • - Fetus/Mech/Fetus_Mech + Fetus/Mechanoids/Fetus_Mechanoid (255,255,255,255) 0.9 @@ -800,7 +800,7 @@ Defs/ThingDef[@Name="BaseMechanoidWalker"]
  • - Fetus/Mech/Fetus_Mech + Fetus/Mechanoids/Fetus_Mechanoid (255,255,255,255) 0.9 @@ -840,5 +840,20 @@
  • - + + + /Defs/ThingDef[@Name="BaseBear"] + +
  • + Fetus/Ursids/Fetus_Ursid + (255,255,255,255) + 0.05 + + + + +
  • +
    +
    + \ No newline at end of file diff --git a/1.4/Textures/Fetus/Birds/Fetus_Bird00.png b/1.4/Textures/Fetus/Birds/Fetus_Bird00.png index 0732d3a..b84e031 100644 Binary files a/1.4/Textures/Fetus/Birds/Fetus_Bird00.png and b/1.4/Textures/Fetus/Birds/Fetus_Bird00.png differ diff --git a/1.4/Textures/Fetus/Birds/Fetus_Bird01.png b/1.4/Textures/Fetus/Birds/Fetus_Bird01.png index ebe78a4..54642e5 100644 Binary files a/1.4/Textures/Fetus/Birds/Fetus_Bird01.png and b/1.4/Textures/Fetus/Birds/Fetus_Bird01.png differ diff --git a/1.4/Textures/Fetus/Birds/Fetus_Bird02.png b/1.4/Textures/Fetus/Birds/Fetus_Bird02.png index 5282c1b..5e52449 100644 Binary files a/1.4/Textures/Fetus/Birds/Fetus_Bird02.png and b/1.4/Textures/Fetus/Birds/Fetus_Bird02.png differ diff --git a/1.4/Textures/Fetus/Birds/Fetus_Bird03.png b/1.4/Textures/Fetus/Birds/Fetus_Bird03.png index 7709759..2c0ed35 100644 Binary files a/1.4/Textures/Fetus/Birds/Fetus_Bird03.png and b/1.4/Textures/Fetus/Birds/Fetus_Bird03.png differ diff --git a/1.4/Textures/Fetus/Birds/Fetus_Bird04.png b/1.4/Textures/Fetus/Birds/Fetus_Bird04.png index 9ccc7e0..daa5798 100644 Binary files a/1.4/Textures/Fetus/Birds/Fetus_Bird04.png and b/1.4/Textures/Fetus/Birds/Fetus_Bird04.png differ diff --git a/1.4/Textures/Fetus/Birds/Fetus_Bird05.png b/1.4/Textures/Fetus/Birds/Fetus_Bird05.png index afd7ec8..70ddab0 100644 Binary files a/1.4/Textures/Fetus/Birds/Fetus_Bird05.png and b/1.4/Textures/Fetus/Birds/Fetus_Bird05.png differ diff --git a/1.4/Textures/Fetus/Boars/Fetus_Boar00.png b/1.4/Textures/Fetus/Boars/Fetus_Boar00.png new file mode 100644 index 0000000..095bb39 Binary files /dev/null and b/1.4/Textures/Fetus/Boars/Fetus_Boar00.png differ diff --git a/1.4/Textures/Fetus/Boars/Fetus_Boar01.png b/1.4/Textures/Fetus/Boars/Fetus_Boar01.png new file mode 100644 index 0000000..b16ee03 Binary files /dev/null and b/1.4/Textures/Fetus/Boars/Fetus_Boar01.png differ diff --git a/1.4/Textures/Fetus/Boars/Fetus_Boar02.png b/1.4/Textures/Fetus/Boars/Fetus_Boar02.png new file mode 100644 index 0000000..75544ac Binary files /dev/null and b/1.4/Textures/Fetus/Boars/Fetus_Boar02.png differ diff --git a/1.4/Textures/Fetus/Boars/Fetus_Boar03.png b/1.4/Textures/Fetus/Boars/Fetus_Boar03.png new file mode 100644 index 0000000..b6bfab7 Binary files /dev/null and b/1.4/Textures/Fetus/Boars/Fetus_Boar03.png differ diff --git a/1.4/Textures/Fetus/Boars/Fetus_Boar04.png b/1.4/Textures/Fetus/Boars/Fetus_Boar04.png new file mode 100644 index 0000000..96abb97 Binary files /dev/null and b/1.4/Textures/Fetus/Boars/Fetus_Boar04.png differ diff --git a/1.4/Textures/Fetus/Boars/Fetus_Boar05.png b/1.4/Textures/Fetus/Boars/Fetus_Boar05.png new file mode 100644 index 0000000..bcff2f8 Binary files /dev/null and b/1.4/Textures/Fetus/Boars/Fetus_Boar05.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomalope00.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope00.png new file mode 100644 index 0000000..4567ee3 Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope00.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomalope01.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope01.png new file mode 100644 index 0000000..f4c09ec Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope01.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomalope02.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope02.png new file mode 100644 index 0000000..ca62e87 Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope02.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomalope03.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope03.png new file mode 100644 index 0000000..e69c140 Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope03.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomalope04.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope04.png new file mode 100644 index 0000000..df67cc7 Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope04.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomalope05.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope05.png new file mode 100644 index 0000000..28ae365 Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomalope05.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomrat00.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat00.png new file mode 100644 index 0000000..402e595 Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat00.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomrat01.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat01.png new file mode 100644 index 0000000..e590424 Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat01.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomrat02.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat02.png new file mode 100644 index 0000000..a340f7e Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat02.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomrat03.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat03.png new file mode 100644 index 0000000..c90661e Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat03.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomrat04.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat04.png new file mode 100644 index 0000000..c16cbaa Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat04.png differ diff --git a/1.4/Textures/Fetus/Boomies/Fetus_Boomrat05.png b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat05.png new file mode 100644 index 0000000..09fbb40 Binary files /dev/null and b/1.4/Textures/Fetus/Boomies/Fetus_Boomrat05.png differ diff --git a/1.4/Textures/Fetus/Bovines/Fetus_Bovine00.png b/1.4/Textures/Fetus/Bovines/Fetus_Bovine00.png new file mode 100644 index 0000000..4567ee3 Binary files /dev/null and b/1.4/Textures/Fetus/Bovines/Fetus_Bovine00.png differ diff --git a/1.4/Textures/Fetus/Bovines/Fetus_Bovine01.png b/1.4/Textures/Fetus/Bovines/Fetus_Bovine01.png new file mode 100644 index 0000000..f4c09ec Binary files /dev/null and b/1.4/Textures/Fetus/Bovines/Fetus_Bovine01.png differ diff --git a/1.4/Textures/Fetus/Bovines/Fetus_Bovine02.png b/1.4/Textures/Fetus/Bovines/Fetus_Bovine02.png new file mode 100644 index 0000000..65b0b50 Binary files /dev/null and b/1.4/Textures/Fetus/Bovines/Fetus_Bovine02.png differ diff --git a/1.4/Textures/Fetus/Bovines/Fetus_Bovine03.png b/1.4/Textures/Fetus/Bovines/Fetus_Bovine03.png new file mode 100644 index 0000000..57294b6 Binary files /dev/null and b/1.4/Textures/Fetus/Bovines/Fetus_Bovine03.png differ diff --git a/1.4/Textures/Fetus/Bovines/Fetus_Bovine04.png b/1.4/Textures/Fetus/Bovines/Fetus_Bovine04.png new file mode 100644 index 0000000..a77c1a6 Binary files /dev/null and b/1.4/Textures/Fetus/Bovines/Fetus_Bovine04.png differ diff --git a/1.4/Textures/Fetus/Bovines/Fetus_Bovine05.png b/1.4/Textures/Fetus/Bovines/Fetus_Bovine05.png new file mode 100644 index 0000000..208fbef Binary files /dev/null and b/1.4/Textures/Fetus/Bovines/Fetus_Bovine05.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine00.png b/1.4/Textures/Fetus/Canines/Fetus_Canine00.png new file mode 100644 index 0000000..0156d13 Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine00.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine00_Multiplet_2.png b/1.4/Textures/Fetus/Canines/Fetus_Canine00_Multiplet_2.png new file mode 100644 index 0000000..dd61d24 Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine00_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine01.png b/1.4/Textures/Fetus/Canines/Fetus_Canine01.png new file mode 100644 index 0000000..822e5f6 Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine01.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine01_Multiplet_2.png b/1.4/Textures/Fetus/Canines/Fetus_Canine01_Multiplet_2.png new file mode 100644 index 0000000..ce756c2 Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine01_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine02.png b/1.4/Textures/Fetus/Canines/Fetus_Canine02.png new file mode 100644 index 0000000..f66681a Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine02.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine02_Multiplet_2.png b/1.4/Textures/Fetus/Canines/Fetus_Canine02_Multiplet_2.png new file mode 100644 index 0000000..a549eed Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine02_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine03.png b/1.4/Textures/Fetus/Canines/Fetus_Canine03.png new file mode 100644 index 0000000..894e364 Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine03.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine03_Multiplet_2.png b/1.4/Textures/Fetus/Canines/Fetus_Canine03_Multiplet_2.png new file mode 100644 index 0000000..6fbfd4b Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine03_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine04.png b/1.4/Textures/Fetus/Canines/Fetus_Canine04.png new file mode 100644 index 0000000..48c7dc5 Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine04.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine04_Multiplet_2.png b/1.4/Textures/Fetus/Canines/Fetus_Canine04_Multiplet_2.png new file mode 100644 index 0000000..715be9c Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine04_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine05.png b/1.4/Textures/Fetus/Canines/Fetus_Canine05.png new file mode 100644 index 0000000..8d44bca Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine05.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine05_Multiplet_2.png b/1.4/Textures/Fetus/Canines/Fetus_Canine05_Multiplet_2.png new file mode 100644 index 0000000..b4c59ed Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine05_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine_V00.png b/1.4/Textures/Fetus/Canines/Fetus_Canine_V00.png new file mode 100644 index 0000000..0156d13 Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine_V00.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine_V01.png b/1.4/Textures/Fetus/Canines/Fetus_Canine_V01.png new file mode 100644 index 0000000..822e5f6 Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine_V01.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine_V02.png b/1.4/Textures/Fetus/Canines/Fetus_Canine_V02.png new file mode 100644 index 0000000..f66681a Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine_V02.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine_V03.png b/1.4/Textures/Fetus/Canines/Fetus_Canine_V03.png new file mode 100644 index 0000000..894e364 Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine_V03.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine_V04.png b/1.4/Textures/Fetus/Canines/Fetus_Canine_V04.png new file mode 100644 index 0000000..48c7dc5 Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine_V04.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Canine_V05.png b/1.4/Textures/Fetus/Canines/Fetus_Canine_V05.png new file mode 100644 index 0000000..1e4caf8 Binary files /dev/null and b/1.4/Textures/Fetus/Canines/Fetus_Canine_V05.png differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Dog00.png b/1.4/Textures/Fetus/Canines/Fetus_Dog00.png deleted file mode 100644 index 94801e0..0000000 Binary files a/1.4/Textures/Fetus/Canines/Fetus_Dog00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Dog01.png b/1.4/Textures/Fetus/Canines/Fetus_Dog01.png deleted file mode 100644 index 754d5e2..0000000 Binary files a/1.4/Textures/Fetus/Canines/Fetus_Dog01.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Dog02.png b/1.4/Textures/Fetus/Canines/Fetus_Dog02.png deleted file mode 100644 index 7b695d5..0000000 Binary files a/1.4/Textures/Fetus/Canines/Fetus_Dog02.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Dog03.png b/1.4/Textures/Fetus/Canines/Fetus_Dog03.png deleted file mode 100644 index d9113ed..0000000 Binary files a/1.4/Textures/Fetus/Canines/Fetus_Dog03.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Dog04.png b/1.4/Textures/Fetus/Canines/Fetus_Dog04.png deleted file mode 100644 index c0ce6ed..0000000 Binary files a/1.4/Textures/Fetus/Canines/Fetus_Dog04.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Canines/Fetus_Dog05.png b/1.4/Textures/Fetus/Canines/Fetus_Dog05.png deleted file mode 100644 index 3a13bb1..0000000 Binary files a/1.4/Textures/Fetus/Canines/Fetus_Dog05.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Cervines/Fetus_Cervine00.png b/1.4/Textures/Fetus/Cervines/Fetus_Cervine00.png new file mode 100644 index 0000000..095bb39 Binary files /dev/null and b/1.4/Textures/Fetus/Cervines/Fetus_Cervine00.png differ diff --git a/1.4/Textures/Fetus/Cervines/Fetus_Cervine01.png b/1.4/Textures/Fetus/Cervines/Fetus_Cervine01.png new file mode 100644 index 0000000..b16ee03 Binary files /dev/null and b/1.4/Textures/Fetus/Cervines/Fetus_Cervine01.png differ diff --git a/1.4/Textures/Fetus/Cervines/Fetus_Cervine02.png b/1.4/Textures/Fetus/Cervines/Fetus_Cervine02.png new file mode 100644 index 0000000..db9d9d6 Binary files /dev/null and b/1.4/Textures/Fetus/Cervines/Fetus_Cervine02.png differ diff --git a/1.4/Textures/Fetus/Cervines/Fetus_Cervine03.png b/1.4/Textures/Fetus/Cervines/Fetus_Cervine03.png new file mode 100644 index 0000000..f9ad8f5 Binary files /dev/null and b/1.4/Textures/Fetus/Cervines/Fetus_Cervine03.png differ diff --git a/1.4/Textures/Fetus/Cervines/Fetus_Cervine04.png b/1.4/Textures/Fetus/Cervines/Fetus_Cervine04.png new file mode 100644 index 0000000..dffa549 Binary files /dev/null and b/1.4/Textures/Fetus/Cervines/Fetus_Cervine04.png differ diff --git a/1.4/Textures/Fetus/Cervines/Fetus_Cervine05.png b/1.4/Textures/Fetus/Cervines/Fetus_Cervine05.png new file mode 100644 index 0000000..1ce2a7d Binary files /dev/null and b/1.4/Textures/Fetus/Cervines/Fetus_Cervine05.png differ diff --git a/1.4/Textures/Fetus/Elephants/Fetus_Elephant00.png b/1.4/Textures/Fetus/Elephants/Fetus_Elephant00.png new file mode 100644 index 0000000..4567ee3 Binary files /dev/null and b/1.4/Textures/Fetus/Elephants/Fetus_Elephant00.png differ diff --git a/1.4/Textures/Fetus/Elephants/Fetus_Elephant01.png b/1.4/Textures/Fetus/Elephants/Fetus_Elephant01.png new file mode 100644 index 0000000..882a21c Binary files /dev/null and b/1.4/Textures/Fetus/Elephants/Fetus_Elephant01.png differ diff --git a/1.4/Textures/Fetus/Elephants/Fetus_Elephant02.png b/1.4/Textures/Fetus/Elephants/Fetus_Elephant02.png new file mode 100644 index 0000000..64681a3 Binary files /dev/null and b/1.4/Textures/Fetus/Elephants/Fetus_Elephant02.png differ diff --git a/1.4/Textures/Fetus/Elephants/Fetus_Elephant03.png b/1.4/Textures/Fetus/Elephants/Fetus_Elephant03.png new file mode 100644 index 0000000..4cd62c9 Binary files /dev/null and b/1.4/Textures/Fetus/Elephants/Fetus_Elephant03.png differ diff --git a/1.4/Textures/Fetus/Elephants/Fetus_Elephant04.png b/1.4/Textures/Fetus/Elephants/Fetus_Elephant04.png new file mode 100644 index 0000000..8dfec32 Binary files /dev/null and b/1.4/Textures/Fetus/Elephants/Fetus_Elephant04.png differ diff --git a/1.4/Textures/Fetus/Elephants/Fetus_Elephant05.png b/1.4/Textures/Fetus/Elephants/Fetus_Elephant05.png new file mode 100644 index 0000000..7143cb0 Binary files /dev/null and b/1.4/Textures/Fetus/Elephants/Fetus_Elephant05.png differ diff --git a/1.4/Textures/Fetus/Feline/Fetus_Cat00.png b/1.4/Textures/Fetus/Feline/Fetus_Cat00.png deleted file mode 100644 index 954e91d..0000000 Binary files a/1.4/Textures/Fetus/Feline/Fetus_Cat00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Feline/Fetus_Cat01.png b/1.4/Textures/Fetus/Feline/Fetus_Cat01.png deleted file mode 100644 index 39f41e3..0000000 Binary files a/1.4/Textures/Fetus/Feline/Fetus_Cat01.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Feline/Fetus_Cat02.png b/1.4/Textures/Fetus/Feline/Fetus_Cat02.png deleted file mode 100644 index 0e7d9f1..0000000 Binary files a/1.4/Textures/Fetus/Feline/Fetus_Cat02.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Feline/Fetus_Cat03.png b/1.4/Textures/Fetus/Feline/Fetus_Cat03.png deleted file mode 100644 index 9a6f92a..0000000 Binary files a/1.4/Textures/Fetus/Feline/Fetus_Cat03.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Feline/Fetus_Cat04.png b/1.4/Textures/Fetus/Feline/Fetus_Cat04.png deleted file mode 100644 index eff51af..0000000 Binary files a/1.4/Textures/Fetus/Feline/Fetus_Cat04.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Feline/Fetus_Cat05.png b/1.4/Textures/Fetus/Feline/Fetus_Cat05.png deleted file mode 100644 index ced0f5a..0000000 Binary files a/1.4/Textures/Fetus/Feline/Fetus_Cat05.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_D00.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_D00.png new file mode 100644 index 0000000..4567ee3 Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_D00.png differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_D01.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_D01.png new file mode 100644 index 0000000..f4c09ec Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_D01.png differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_D02.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_D02.png new file mode 100644 index 0000000..72310f5 Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_D02.png differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_D03.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_D03.png new file mode 100644 index 0000000..027a650 Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_D03.png differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_D04.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_D04.png new file mode 100644 index 0000000..b47ba59 Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_D04.png differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_D05.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_D05.png new file mode 100644 index 0000000..935782a Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_D05.png differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_W00.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_W00.png new file mode 100644 index 0000000..4567ee3 Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_W00.png differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_W01.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_W01.png new file mode 100644 index 0000000..f4c09ec Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_W01.png differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_W02.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_W02.png new file mode 100644 index 0000000..72310f5 Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_W02.png differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_W03.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_W03.png new file mode 100644 index 0000000..027a650 Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_W03.png differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_W04.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_W04.png new file mode 100644 index 0000000..b47ba59 Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_W04.png differ diff --git a/1.4/Textures/Fetus/Felines/Fetus_Feline_W05.png b/1.4/Textures/Fetus/Felines/Fetus_Feline_W05.png new file mode 100644 index 0000000..ba61605 Binary files /dev/null and b/1.4/Textures/Fetus/Felines/Fetus_Feline_W05.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default00.png b/1.4/Textures/Fetus/Fetus_Default00.png index cc26dc5..2aab282 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default00.png and b/1.4/Textures/Fetus/Fetus_Default00.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default00_Multiplet_2.png b/1.4/Textures/Fetus/Fetus_Default00_Multiplet_2.png index 9f851df..eafb4cb 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default00_Multiplet_2.png and b/1.4/Textures/Fetus/Fetus_Default00_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default01.png b/1.4/Textures/Fetus/Fetus_Default01.png index 57521c2..a824291 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default01.png and b/1.4/Textures/Fetus/Fetus_Default01.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default01_Multiplet_2.png b/1.4/Textures/Fetus/Fetus_Default01_Multiplet_2.png index 5c8ddcb..ddca0d0 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default01_Multiplet_2.png and b/1.4/Textures/Fetus/Fetus_Default01_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default02.png b/1.4/Textures/Fetus/Fetus_Default02.png index b64ddca..459e5a0 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default02.png and b/1.4/Textures/Fetus/Fetus_Default02.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default02_Multiplet_2.png b/1.4/Textures/Fetus/Fetus_Default02_Multiplet_2.png index 8013057..3f12d7d 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default02_Multiplet_2.png and b/1.4/Textures/Fetus/Fetus_Default02_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default03.png b/1.4/Textures/Fetus/Fetus_Default03.png index 62a0f74..963b0e7 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default03.png and b/1.4/Textures/Fetus/Fetus_Default03.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default03_Multiplet_2.png b/1.4/Textures/Fetus/Fetus_Default03_Multiplet_2.png index 317e9e6..1715cd8 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default03_Multiplet_2.png and b/1.4/Textures/Fetus/Fetus_Default03_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default04.png b/1.4/Textures/Fetus/Fetus_Default04.png index 76e40fd..447dc1e 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default04.png and b/1.4/Textures/Fetus/Fetus_Default04.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default04_Multiplet_2.png b/1.4/Textures/Fetus/Fetus_Default04_Multiplet_2.png index 1ba0822..f56e04f 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default04_Multiplet_2.png and b/1.4/Textures/Fetus/Fetus_Default04_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default05.png b/1.4/Textures/Fetus/Fetus_Default05.png index 7a39105..bf5210a 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default05.png and b/1.4/Textures/Fetus/Fetus_Default05.png differ diff --git a/1.4/Textures/Fetus/Fetus_Default05_Multiplet_2.png b/1.4/Textures/Fetus/Fetus_Default05_Multiplet_2.png index 74af81c..83315bd 100644 Binary files a/1.4/Textures/Fetus/Fetus_Default05_Multiplet_2.png and b/1.4/Textures/Fetus/Fetus_Default05_Multiplet_2.png differ diff --git a/1.4/Textures/Fetus/Fetus_Early00.png b/1.4/Textures/Fetus/Fetus_Early00.png deleted file mode 100644 index 234a82a..0000000 Binary files a/1.4/Textures/Fetus/Fetus_Early00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Fetus_Early00_Multiplet_2.png b/1.4/Textures/Fetus/Fetus_Early00_Multiplet_2.png deleted file mode 100644 index 6934605..0000000 Binary files a/1.4/Textures/Fetus/Fetus_Early00_Multiplet_2.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi00.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi00.png new file mode 100644 index 0000000..8b8012e Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi00.png differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi01.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi01.png new file mode 100644 index 0000000..ed995dc Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi01.png differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi02.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi02.png new file mode 100644 index 0000000..c4922db Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi02.png differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi03.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi03.png new file mode 100644 index 0000000..5cba5b4 Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi03.png differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi04.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi04.png new file mode 100644 index 0000000..db9c951 Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi04.png differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi05.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi05.png new file mode 100644 index 0000000..15cdb0f Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi05.png differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A00.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A00.png new file mode 100644 index 0000000..4985c3e Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A00.png differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A01.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A01.png new file mode 100644 index 0000000..60f41d6 Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A01.png differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A02.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A02.png new file mode 100644 index 0000000..593666f Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A02.png differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A03.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A03.png new file mode 100644 index 0000000..c98b875 Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A03.png differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A04.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A04.png new file mode 100644 index 0000000..db9c951 Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A04.png differ diff --git a/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A05.png b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A05.png new file mode 100644 index 0000000..15cdb0f Binary files /dev/null and b/1.4/Textures/Fetus/Fungi/Fetus_Fungi_A05.png differ diff --git a/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine00.png b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine00.png new file mode 100644 index 0000000..f3482be Binary files /dev/null and b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine00.png differ diff --git a/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine01.png b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine01.png new file mode 100644 index 0000000..d7a2c05 Binary files /dev/null and b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine01.png differ diff --git a/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine02.png b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine02.png new file mode 100644 index 0000000..ccf02f3 Binary files /dev/null and b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine02.png differ diff --git a/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine03.png b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine03.png new file mode 100644 index 0000000..22f1095 Binary files /dev/null and b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine03.png differ diff --git a/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine04.png b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine04.png new file mode 100644 index 0000000..d39c755 Binary files /dev/null and b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine04.png differ diff --git a/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine05.png b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine05.png new file mode 100644 index 0000000..b084bb4 Binary files /dev/null and b/1.4/Textures/Fetus/Humanoids/Fetus_Humanoid_Canine05.png differ diff --git a/1.4/Textures/Fetus/Insects/Fetus_Insect00.png b/1.4/Textures/Fetus/Insects/Fetus_Insect00.png index d9c5762..732b53f 100644 Binary files a/1.4/Textures/Fetus/Insects/Fetus_Insect00.png and b/1.4/Textures/Fetus/Insects/Fetus_Insect00.png differ diff --git a/1.4/Textures/Fetus/Insects/Fetus_Insect01.png b/1.4/Textures/Fetus/Insects/Fetus_Insect01.png index a079980..8d5d82f 100644 Binary files a/1.4/Textures/Fetus/Insects/Fetus_Insect01.png and b/1.4/Textures/Fetus/Insects/Fetus_Insect01.png differ diff --git a/1.4/Textures/Fetus/Insects/Fetus_Insect02.png b/1.4/Textures/Fetus/Insects/Fetus_Insect02.png index a2b710c..3cab4f9 100644 Binary files a/1.4/Textures/Fetus/Insects/Fetus_Insect02.png and b/1.4/Textures/Fetus/Insects/Fetus_Insect02.png differ diff --git a/1.4/Textures/Fetus/Insects/Fetus_Insect03.png b/1.4/Textures/Fetus/Insects/Fetus_Insect03.png index 9569db2..6bbff9b 100644 Binary files a/1.4/Textures/Fetus/Insects/Fetus_Insect03.png and b/1.4/Textures/Fetus/Insects/Fetus_Insect03.png differ diff --git a/1.4/Textures/Fetus/Insects/Fetus_Insect04.png b/1.4/Textures/Fetus/Insects/Fetus_Insect04.png index 2ee2ea4..a38ae36 100644 Binary files a/1.4/Textures/Fetus/Insects/Fetus_Insect04.png and b/1.4/Textures/Fetus/Insects/Fetus_Insect04.png differ diff --git a/1.4/Textures/Fetus/Insects/Fetus_Insect05.png b/1.4/Textures/Fetus/Insects/Fetus_Insect05.png index 22487ea..7788761 100644 Binary files a/1.4/Textures/Fetus/Insects/Fetus_Insect05.png and b/1.4/Textures/Fetus/Insects/Fetus_Insect05.png differ diff --git a/1.4/Textures/Fetus/Insects/Insect_Early00.png b/1.4/Textures/Fetus/Insects/Insect_Early00.png deleted file mode 100644 index 917bd14..0000000 Binary files a/1.4/Textures/Fetus/Insects/Insect_Early00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph00.png b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph00.png new file mode 100644 index 0000000..81e056a Binary files /dev/null and b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph00.png differ diff --git a/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph01.png b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph01.png new file mode 100644 index 0000000..17c4a0f Binary files /dev/null and b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph01.png differ diff --git a/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph02.png b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph02.png new file mode 100644 index 0000000..5fc26d7 Binary files /dev/null and b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph02.png differ diff --git a/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph03.png b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph03.png new file mode 100644 index 0000000..7148e79 Binary files /dev/null and b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph03.png differ diff --git a/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph04.png b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph04.png new file mode 100644 index 0000000..fe87a1b Binary files /dev/null and b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph04.png differ diff --git a/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph05.png b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph05.png new file mode 100644 index 0000000..fb10765 Binary files /dev/null and b/1.4/Textures/Fetus/Lagomorphs/Fetus_Lagomorph05.png differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine00.png b/1.4/Textures/Fetus/Livestocks/Fetus_Bovine00.png deleted file mode 100644 index cc3f27f..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine01.png b/1.4/Textures/Fetus/Livestocks/Fetus_Bovine01.png deleted file mode 100644 index d0301a2..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine01.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine02.png b/1.4/Textures/Fetus/Livestocks/Fetus_Bovine02.png deleted file mode 100644 index 36177c8..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine02.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine03.png b/1.4/Textures/Fetus/Livestocks/Fetus_Bovine03.png deleted file mode 100644 index aa679f8..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine03.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine04.png b/1.4/Textures/Fetus/Livestocks/Fetus_Bovine04.png deleted file mode 100644 index b11e248..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine04.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine05.png b/1.4/Textures/Fetus/Livestocks/Fetus_Bovine05.png deleted file mode 100644 index a5823a5..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Bovine05.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant00.png b/1.4/Textures/Fetus/Livestocks/Fetus_Elephant00.png deleted file mode 100644 index 284cc1c..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant01.png b/1.4/Textures/Fetus/Livestocks/Fetus_Elephant01.png deleted file mode 100644 index 418f10c..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant01.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant02.png b/1.4/Textures/Fetus/Livestocks/Fetus_Elephant02.png deleted file mode 100644 index 0ce2a51..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant02.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant03.png b/1.4/Textures/Fetus/Livestocks/Fetus_Elephant03.png deleted file mode 100644 index 3fa7aff..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant03.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant04.png b/1.4/Textures/Fetus/Livestocks/Fetus_Elephant04.png deleted file mode 100644 index 4c7507d..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant04.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant05.png b/1.4/Textures/Fetus/Livestocks/Fetus_Elephant05.png deleted file mode 100644 index 3231d3f..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_Elephant05.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine00.png b/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine00.png deleted file mode 100644 index 36e074d..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine01.png b/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine01.png deleted file mode 100644 index 2ede985..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine01.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine02.png b/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine02.png deleted file mode 100644 index a286064..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine02.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine03.png b/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine03.png deleted file mode 100644 index 6ccd8c1..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine03.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine04.png b/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine04.png deleted file mode 100644 index 793a22a..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine04.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine05.png b/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine05.png deleted file mode 100644 index 5867419..0000000 Binary files a/1.4/Textures/Fetus/Livestocks/Fetus_S_Bovine05.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Mech/Fetus_Mech00.png b/1.4/Textures/Fetus/Mech/Fetus_Mech00.png deleted file mode 100644 index 6c776d2..0000000 Binary files a/1.4/Textures/Fetus/Mech/Fetus_Mech00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Mech/Fetus_Mech01.png b/1.4/Textures/Fetus/Mech/Fetus_Mech01.png deleted file mode 100644 index 41639e7..0000000 Binary files a/1.4/Textures/Fetus/Mech/Fetus_Mech01.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Mech/Fetus_Mech02.png b/1.4/Textures/Fetus/Mech/Fetus_Mech02.png deleted file mode 100644 index 3f92a2f..0000000 Binary files a/1.4/Textures/Fetus/Mech/Fetus_Mech02.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Mech/Fetus_Mech03.png b/1.4/Textures/Fetus/Mech/Fetus_Mech03.png deleted file mode 100644 index b499fca..0000000 Binary files a/1.4/Textures/Fetus/Mech/Fetus_Mech03.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Mech/Fetus_Mech04.png b/1.4/Textures/Fetus/Mech/Fetus_Mech04.png deleted file mode 100644 index f0743f4..0000000 Binary files a/1.4/Textures/Fetus/Mech/Fetus_Mech04.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Mech/Fetus_Mech05.png b/1.4/Textures/Fetus/Mech/Fetus_Mech05.png deleted file mode 100644 index df9007b..0000000 Binary files a/1.4/Textures/Fetus/Mech/Fetus_Mech05.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid00.png b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid00.png new file mode 100644 index 0000000..ab6a8eb Binary files /dev/null and b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid00.png differ diff --git a/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid01.png b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid01.png new file mode 100644 index 0000000..6c43e63 Binary files /dev/null and b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid01.png differ diff --git a/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid02.png b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid02.png new file mode 100644 index 0000000..eb6c837 Binary files /dev/null and b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid02.png differ diff --git a/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid03.png b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid03.png new file mode 100644 index 0000000..10a2748 Binary files /dev/null and b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid03.png differ diff --git a/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid04.png b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid04.png new file mode 100644 index 0000000..7acd396 Binary files /dev/null and b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid04.png differ diff --git a/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid05.png b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid05.png new file mode 100644 index 0000000..9a5bdd7 Binary files /dev/null and b/1.4/Textures/Fetus/Mechanoids/Fetus_Mechanoid05.png differ diff --git a/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth00.png b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth00.png new file mode 100644 index 0000000..402e595 Binary files /dev/null and b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth00.png differ diff --git a/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth01.png b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth01.png new file mode 100644 index 0000000..e590424 Binary files /dev/null and b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth01.png differ diff --git a/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth02.png b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth02.png new file mode 100644 index 0000000..ffc6eb4 Binary files /dev/null and b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth02.png differ diff --git a/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth03.png b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth03.png new file mode 100644 index 0000000..7648f0f Binary files /dev/null and b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth03.png differ diff --git a/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth04.png b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth04.png new file mode 100644 index 0000000..89de0db Binary files /dev/null and b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth04.png differ diff --git a/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth05.png b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth05.png new file mode 100644 index 0000000..72193a9 Binary files /dev/null and b/1.4/Textures/Fetus/Megasloths/Fetus_Megasloth05.png differ diff --git a/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo00.png b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo00.png new file mode 100644 index 0000000..095bb39 Binary files /dev/null and b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo00.png differ diff --git a/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo01.png b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo01.png new file mode 100644 index 0000000..b16ee03 Binary files /dev/null and b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo01.png differ diff --git a/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo02.png b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo02.png new file mode 100644 index 0000000..e8b3776 Binary files /dev/null and b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo02.png differ diff --git a/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo03.png b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo03.png new file mode 100644 index 0000000..8b60784 Binary files /dev/null and b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo03.png differ diff --git a/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo04.png b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo04.png new file mode 100644 index 0000000..006938d Binary files /dev/null and b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo04.png differ diff --git a/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo05.png b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo05.png new file mode 100644 index 0000000..6b62edf Binary files /dev/null and b/1.4/Textures/Fetus/Muffalos/Fetus_Muffalo05.png differ diff --git a/1.4/Textures/Fetus/Pests/Fetus_Rodent00.png b/1.4/Textures/Fetus/Pests/Fetus_Rodent00.png deleted file mode 100644 index 36e074d..0000000 Binary files a/1.4/Textures/Fetus/Pests/Fetus_Rodent00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Pests/Fetus_Rodent01.png b/1.4/Textures/Fetus/Pests/Fetus_Rodent01.png deleted file mode 100644 index 2ede985..0000000 Binary files a/1.4/Textures/Fetus/Pests/Fetus_Rodent01.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Pests/Fetus_Rodent02.png b/1.4/Textures/Fetus/Pests/Fetus_Rodent02.png deleted file mode 100644 index a286064..0000000 Binary files a/1.4/Textures/Fetus/Pests/Fetus_Rodent02.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Pests/Fetus_Rodent03.png b/1.4/Textures/Fetus/Pests/Fetus_Rodent03.png deleted file mode 100644 index 6ccd8c1..0000000 Binary files a/1.4/Textures/Fetus/Pests/Fetus_Rodent03.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Pests/Fetus_Rodent04.png b/1.4/Textures/Fetus/Pests/Fetus_Rodent04.png deleted file mode 100644 index 793a22a..0000000 Binary files a/1.4/Textures/Fetus/Pests/Fetus_Rodent04.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Pests/Fetus_Rodent05.png b/1.4/Textures/Fetus/Pests/Fetus_Rodent05.png deleted file mode 100644 index 5867419..0000000 Binary files a/1.4/Textures/Fetus/Pests/Fetus_Rodent05.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Pig00.png b/1.4/Textures/Fetus/Pigs/Fetus_Pig00.png similarity index 100% rename from 1.4/Textures/Fetus/Livestocks/Fetus_Pig00.png rename to 1.4/Textures/Fetus/Pigs/Fetus_Pig00.png diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Pig01.png b/1.4/Textures/Fetus/Pigs/Fetus_Pig01.png similarity index 100% rename from 1.4/Textures/Fetus/Livestocks/Fetus_Pig01.png rename to 1.4/Textures/Fetus/Pigs/Fetus_Pig01.png diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Pig02.png b/1.4/Textures/Fetus/Pigs/Fetus_Pig02.png similarity index 100% rename from 1.4/Textures/Fetus/Livestocks/Fetus_Pig02.png rename to 1.4/Textures/Fetus/Pigs/Fetus_Pig02.png diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Pig03.png b/1.4/Textures/Fetus/Pigs/Fetus_Pig03.png similarity index 100% rename from 1.4/Textures/Fetus/Livestocks/Fetus_Pig03.png rename to 1.4/Textures/Fetus/Pigs/Fetus_Pig03.png diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Pig04.png b/1.4/Textures/Fetus/Pigs/Fetus_Pig04.png similarity index 100% rename from 1.4/Textures/Fetus/Livestocks/Fetus_Pig04.png rename to 1.4/Textures/Fetus/Pigs/Fetus_Pig04.png diff --git a/1.4/Textures/Fetus/Livestocks/Fetus_Pig05.png b/1.4/Textures/Fetus/Pigs/Fetus_Pig05.png similarity index 100% rename from 1.4/Textures/Fetus/Livestocks/Fetus_Pig05.png rename to 1.4/Textures/Fetus/Pigs/Fetus_Pig05.png diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_F00.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_F00.png new file mode 100644 index 0000000..20e7704 Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_F00.png differ diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_F01.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_F01.png new file mode 100644 index 0000000..cc40ac7 Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_F01.png differ diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_F02.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_F02.png new file mode 100644 index 0000000..2062bfd Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_F02.png differ diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_F03.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_F03.png new file mode 100644 index 0000000..96edba5 Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_F03.png differ diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_F04.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_F04.png new file mode 100644 index 0000000..40c8017 Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_F04.png differ diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_F05.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_F05.png new file mode 100644 index 0000000..118d7c2 Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_F05.png differ diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_G00.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_G00.png new file mode 100644 index 0000000..c6aafb3 Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_G00.png differ diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_G01.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_G01.png new file mode 100644 index 0000000..e6e8c9a Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_G01.png differ diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_G02.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_G02.png new file mode 100644 index 0000000..a6c2b17 Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_G02.png differ diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_G03.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_G03.png new file mode 100644 index 0000000..f02ccc6 Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_G03.png differ diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_G04.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_G04.png new file mode 100644 index 0000000..e113dcb Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_G04.png differ diff --git a/1.4/Textures/Fetus/Plants/Fetus_Plant_G05.png b/1.4/Textures/Fetus/Plants/Fetus_Plant_G05.png new file mode 100644 index 0000000..1ea69b8 Binary files /dev/null and b/1.4/Textures/Fetus/Plants/Fetus_Plant_G05.png differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Monkey00.png b/1.4/Textures/Fetus/Primate/Fetus_Monkey00.png deleted file mode 100644 index c9373bf..0000000 Binary files a/1.4/Textures/Fetus/Primate/Fetus_Monkey00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Monkey01.png b/1.4/Textures/Fetus/Primate/Fetus_Monkey01.png deleted file mode 100644 index 41f7990..0000000 Binary files a/1.4/Textures/Fetus/Primate/Fetus_Monkey01.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Monkey02.png b/1.4/Textures/Fetus/Primate/Fetus_Monkey02.png deleted file mode 100644 index 66c4c66..0000000 Binary files a/1.4/Textures/Fetus/Primate/Fetus_Monkey02.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Monkey03.png b/1.4/Textures/Fetus/Primate/Fetus_Monkey03.png deleted file mode 100644 index 779d224..0000000 Binary files a/1.4/Textures/Fetus/Primate/Fetus_Monkey03.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Monkey04.png b/1.4/Textures/Fetus/Primate/Fetus_Monkey04.png deleted file mode 100644 index 824c129..0000000 Binary files a/1.4/Textures/Fetus/Primate/Fetus_Monkey04.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Monkey05.png b/1.4/Textures/Fetus/Primate/Fetus_Monkey05.png deleted file mode 100644 index 5c24e15..0000000 Binary files a/1.4/Textures/Fetus/Primate/Fetus_Monkey05.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Primate00.png b/1.4/Textures/Fetus/Primate/Fetus_Primate00.png new file mode 100644 index 0000000..3c313c9 Binary files /dev/null and b/1.4/Textures/Fetus/Primate/Fetus_Primate00.png differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Primate01.png b/1.4/Textures/Fetus/Primate/Fetus_Primate01.png new file mode 100644 index 0000000..5768c62 Binary files /dev/null and b/1.4/Textures/Fetus/Primate/Fetus_Primate01.png differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Primate02.png b/1.4/Textures/Fetus/Primate/Fetus_Primate02.png new file mode 100644 index 0000000..928fff8 Binary files /dev/null and b/1.4/Textures/Fetus/Primate/Fetus_Primate02.png differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Primate03.png b/1.4/Textures/Fetus/Primate/Fetus_Primate03.png new file mode 100644 index 0000000..13d19a7 Binary files /dev/null and b/1.4/Textures/Fetus/Primate/Fetus_Primate03.png differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Primate04.png b/1.4/Textures/Fetus/Primate/Fetus_Primate04.png new file mode 100644 index 0000000..a508c6c Binary files /dev/null and b/1.4/Textures/Fetus/Primate/Fetus_Primate04.png differ diff --git a/1.4/Textures/Fetus/Primate/Fetus_Primate05.png b/1.4/Textures/Fetus/Primate/Fetus_Primate05.png new file mode 100644 index 0000000..a739542 Binary files /dev/null and b/1.4/Textures/Fetus/Primate/Fetus_Primate05.png differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Lizard00.png b/1.4/Textures/Fetus/Reptile/Fetus_Lizard00.png deleted file mode 100644 index 0146135..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Lizard00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Lizard01.png b/1.4/Textures/Fetus/Reptile/Fetus_Lizard01.png deleted file mode 100644 index 6fcdbfa..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Lizard01.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Lizard02.png b/1.4/Textures/Fetus/Reptile/Fetus_Lizard02.png deleted file mode 100644 index 1d46463..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Lizard02.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Lizard03.png b/1.4/Textures/Fetus/Reptile/Fetus_Lizard03.png deleted file mode 100644 index bb537f4..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Lizard03.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Lizard04.png b/1.4/Textures/Fetus/Reptile/Fetus_Lizard04.png deleted file mode 100644 index fe10857..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Lizard04.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Lizard05.png b/1.4/Textures/Fetus/Reptile/Fetus_Lizard05.png deleted file mode 100644 index f24bc74..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Lizard05.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Snake00.png b/1.4/Textures/Fetus/Reptile/Fetus_Snake00.png deleted file mode 100644 index 0146135..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Snake00.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Snake01.png b/1.4/Textures/Fetus/Reptile/Fetus_Snake01.png deleted file mode 100644 index afd9795..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Snake01.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Snake02.png b/1.4/Textures/Fetus/Reptile/Fetus_Snake02.png deleted file mode 100644 index 70756b3..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Snake02.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Snake03.png b/1.4/Textures/Fetus/Reptile/Fetus_Snake03.png deleted file mode 100644 index b87191b..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Snake03.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Snake04.png b/1.4/Textures/Fetus/Reptile/Fetus_Snake04.png deleted file mode 100644 index 085b455..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Snake04.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptile/Fetus_Snake05.png b/1.4/Textures/Fetus/Reptile/Fetus_Snake05.png deleted file mode 100644 index 98e3c58..0000000 Binary files a/1.4/Textures/Fetus/Reptile/Fetus_Snake05.png and /dev/null differ diff --git a/1.4/Textures/Fetus/Reptiles/Fetus_Reptile00.png b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile00.png new file mode 100644 index 0000000..b3c7d8e Binary files /dev/null and b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile00.png differ diff --git a/1.4/Textures/Fetus/Reptiles/Fetus_Reptile01.png b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile01.png new file mode 100644 index 0000000..5fec55c Binary files /dev/null and b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile01.png differ diff --git a/1.4/Textures/Fetus/Reptiles/Fetus_Reptile02.png b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile02.png new file mode 100644 index 0000000..b3bf51f Binary files /dev/null and b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile02.png differ diff --git a/1.4/Textures/Fetus/Reptiles/Fetus_Reptile03.png b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile03.png new file mode 100644 index 0000000..bfd7614 Binary files /dev/null and b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile03.png differ diff --git a/1.4/Textures/Fetus/Reptiles/Fetus_Reptile04.png b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile04.png new file mode 100644 index 0000000..195eef5 Binary files /dev/null and b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile04.png differ diff --git a/1.4/Textures/Fetus/Reptiles/Fetus_Reptile05.png b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile05.png new file mode 100644 index 0000000..c2b5506 Binary files /dev/null and b/1.4/Textures/Fetus/Reptiles/Fetus_Reptile05.png differ diff --git a/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros00.png b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros00.png new file mode 100644 index 0000000..095bb39 Binary files /dev/null and b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros00.png differ diff --git a/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros01.png b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros01.png new file mode 100644 index 0000000..b16ee03 Binary files /dev/null and b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros01.png differ diff --git a/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros02.png b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros02.png new file mode 100644 index 0000000..7676b29 Binary files /dev/null and b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros02.png differ diff --git a/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros03.png b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros03.png new file mode 100644 index 0000000..90d1672 Binary files /dev/null and b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros03.png differ diff --git a/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros04.png b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros04.png new file mode 100644 index 0000000..4e2251d Binary files /dev/null and b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros04.png differ diff --git a/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros05.png b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros05.png new file mode 100644 index 0000000..ab3b017 Binary files /dev/null and b/1.4/Textures/Fetus/Rhinoceroses/Fetus_Rhinoceros05.png differ diff --git a/1.4/Textures/Fetus/Rodents/Fetus_Rodent00.png b/1.4/Textures/Fetus/Rodents/Fetus_Rodent00.png new file mode 100644 index 0000000..f6b217e Binary files /dev/null and b/1.4/Textures/Fetus/Rodents/Fetus_Rodent00.png differ diff --git a/1.4/Textures/Fetus/Rodents/Fetus_Rodent01.png b/1.4/Textures/Fetus/Rodents/Fetus_Rodent01.png new file mode 100644 index 0000000..fb7e287 Binary files /dev/null and b/1.4/Textures/Fetus/Rodents/Fetus_Rodent01.png differ diff --git a/1.4/Textures/Fetus/Rodents/Fetus_Rodent02.png b/1.4/Textures/Fetus/Rodents/Fetus_Rodent02.png new file mode 100644 index 0000000..dd5268f Binary files /dev/null and b/1.4/Textures/Fetus/Rodents/Fetus_Rodent02.png differ diff --git a/1.4/Textures/Fetus/Rodents/Fetus_Rodent03.png b/1.4/Textures/Fetus/Rodents/Fetus_Rodent03.png new file mode 100644 index 0000000..3757a44 Binary files /dev/null and b/1.4/Textures/Fetus/Rodents/Fetus_Rodent03.png differ diff --git a/1.4/Textures/Fetus/Rodents/Fetus_Rodent04.png b/1.4/Textures/Fetus/Rodents/Fetus_Rodent04.png new file mode 100644 index 0000000..6699884 Binary files /dev/null and b/1.4/Textures/Fetus/Rodents/Fetus_Rodent04.png differ diff --git a/1.4/Textures/Fetus/Rodents/Fetus_Rodent05.png b/1.4/Textures/Fetus/Rodents/Fetus_Rodent05.png new file mode 100644 index 0000000..01ce67e Binary files /dev/null and b/1.4/Textures/Fetus/Rodents/Fetus_Rodent05.png differ diff --git a/1.4/Textures/Fetus/Slime_Abomi02.png b/1.4/Textures/Fetus/Slime_Abomi02.png index 1d23d46..44a9d95 100644 Binary files a/1.4/Textures/Fetus/Slime_Abomi02.png and b/1.4/Textures/Fetus/Slime_Abomi02.png differ diff --git a/1.4/Textures/Fetus/Snakes/Fetus_Snake00.png b/1.4/Textures/Fetus/Snakes/Fetus_Snake00.png new file mode 100644 index 0000000..a31d953 Binary files /dev/null and b/1.4/Textures/Fetus/Snakes/Fetus_Snake00.png differ diff --git a/1.4/Textures/Fetus/Snakes/Fetus_Snake01.png b/1.4/Textures/Fetus/Snakes/Fetus_Snake01.png new file mode 100644 index 0000000..7cbc485 Binary files /dev/null and b/1.4/Textures/Fetus/Snakes/Fetus_Snake01.png differ diff --git a/1.4/Textures/Fetus/Snakes/Fetus_Snake02.png b/1.4/Textures/Fetus/Snakes/Fetus_Snake02.png new file mode 100644 index 0000000..75ec499 Binary files /dev/null and b/1.4/Textures/Fetus/Snakes/Fetus_Snake02.png differ diff --git a/1.4/Textures/Fetus/Snakes/Fetus_Snake03.png b/1.4/Textures/Fetus/Snakes/Fetus_Snake03.png new file mode 100644 index 0000000..1e2f780 Binary files /dev/null and b/1.4/Textures/Fetus/Snakes/Fetus_Snake03.png differ diff --git a/1.4/Textures/Fetus/Snakes/Fetus_Snake04.png b/1.4/Textures/Fetus/Snakes/Fetus_Snake04.png new file mode 100644 index 0000000..bd5f7a6 Binary files /dev/null and b/1.4/Textures/Fetus/Snakes/Fetus_Snake04.png differ diff --git a/1.4/Textures/Fetus/Snakes/Fetus_Snake05.png b/1.4/Textures/Fetus/Snakes/Fetus_Snake05.png new file mode 100644 index 0000000..a9a18b3 Binary files /dev/null and b/1.4/Textures/Fetus/Snakes/Fetus_Snake05.png differ diff --git a/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo00.png b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo00.png new file mode 100644 index 0000000..7039f06 Binary files /dev/null and b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo00.png differ diff --git a/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo01.png b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo01.png new file mode 100644 index 0000000..902d0a0 Binary files /dev/null and b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo01.png differ diff --git a/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo02.png b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo02.png new file mode 100644 index 0000000..1ec0a15 Binary files /dev/null and b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo02.png differ diff --git a/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo03.png b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo03.png new file mode 100644 index 0000000..3b658c9 Binary files /dev/null and b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo03.png differ diff --git a/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo04.png b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo04.png new file mode 100644 index 0000000..0424c6d Binary files /dev/null and b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo04.png differ diff --git a/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo05.png b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo05.png new file mode 100644 index 0000000..656a310 Binary files /dev/null and b/1.4/Textures/Fetus/Thrumbos/Fetus_Thrumbo05.png differ diff --git a/1.4/Textures/Fetus/Ursids/Fetus_Ursid00.png b/1.4/Textures/Fetus/Ursids/Fetus_Ursid00.png new file mode 100644 index 0000000..8565d03 Binary files /dev/null and b/1.4/Textures/Fetus/Ursids/Fetus_Ursid00.png differ diff --git a/1.4/Textures/Fetus/Ursids/Fetus_Ursid01.png b/1.4/Textures/Fetus/Ursids/Fetus_Ursid01.png new file mode 100644 index 0000000..7e3b021 Binary files /dev/null and b/1.4/Textures/Fetus/Ursids/Fetus_Ursid01.png differ diff --git a/1.4/Textures/Fetus/Ursids/Fetus_Ursid02.png b/1.4/Textures/Fetus/Ursids/Fetus_Ursid02.png new file mode 100644 index 0000000..acab20f Binary files /dev/null and b/1.4/Textures/Fetus/Ursids/Fetus_Ursid02.png differ diff --git a/1.4/Textures/Fetus/Ursids/Fetus_Ursid03.png b/1.4/Textures/Fetus/Ursids/Fetus_Ursid03.png new file mode 100644 index 0000000..71ebfdf Binary files /dev/null and b/1.4/Textures/Fetus/Ursids/Fetus_Ursid03.png differ diff --git a/1.4/Textures/Fetus/Ursids/Fetus_Ursid04.png b/1.4/Textures/Fetus/Ursids/Fetus_Ursid04.png new file mode 100644 index 0000000..d23f6b9 Binary files /dev/null and b/1.4/Textures/Fetus/Ursids/Fetus_Ursid04.png differ diff --git a/1.4/Textures/Fetus/Ursids/Fetus_Ursid05.png b/1.4/Textures/Fetus/Ursids/Fetus_Ursid05.png new file mode 100644 index 0000000..8200c4b Binary files /dev/null and b/1.4/Textures/Fetus/Ursids/Fetus_Ursid05.png differ diff --git a/1.4/Textures/Fetus/Ursids/Fetus_Ursid05_ALT.png b/1.4/Textures/Fetus/Ursids/Fetus_Ursid05_ALT.png new file mode 100644 index 0000000..168be40 Binary files /dev/null and b/1.4/Textures/Fetus/Ursids/Fetus_Ursid05_ALT.png differ diff --git a/1.4/Textures/Fetus/~Dev/00.png b/1.4/Textures/Fetus/~Dev/00.png index cfb062c..8f011de 100644 Binary files a/1.4/Textures/Fetus/~Dev/00.png and b/1.4/Textures/Fetus/~Dev/00.png differ diff --git a/1.4/Textures/Fetus/~Dev/01.png b/1.4/Textures/Fetus/~Dev/01.png index 240f177..a0f5f7b 100644 Binary files a/1.4/Textures/Fetus/~Dev/01.png and b/1.4/Textures/Fetus/~Dev/01.png differ diff --git a/1.4/Textures/Fetus/~Dev/02.png b/1.4/Textures/Fetus/~Dev/02.png index 77fd712..b1ed363 100644 Binary files a/1.4/Textures/Fetus/~Dev/02.png and b/1.4/Textures/Fetus/~Dev/02.png differ diff --git a/1.4/Textures/Fetus/~Dev/03.png b/1.4/Textures/Fetus/~Dev/03.png index b20c79b..cdd6bfb 100644 Binary files a/1.4/Textures/Fetus/~Dev/03.png and b/1.4/Textures/Fetus/~Dev/03.png differ diff --git a/1.4/Textures/Fetus/~Dev/04.png b/1.4/Textures/Fetus/~Dev/04.png index 2c60c54..7b61025 100644 Binary files a/1.4/Textures/Fetus/~Dev/04.png and b/1.4/Textures/Fetus/~Dev/04.png differ diff --git a/1.4/Textures/Fetus/~Dev/05.png b/1.4/Textures/Fetus/~Dev/05.png index 38a4887..86489a7 100644 Binary files a/1.4/Textures/Fetus/~Dev/05.png and b/1.4/Textures/Fetus/~Dev/05.png differ diff --git a/1.4/Textures/UI/Icon/ToBucket.png b/1.4/Textures/UI/Icon/ToBucket.png deleted file mode 100644 index b979db0..0000000 Binary files a/1.4/Textures/UI/Icon/ToBucket.png and /dev/null differ diff --git a/1.4/Textures/UI/Icon/ToPussy.png b/1.4/Textures/UI/Icon/ToPussy.png deleted file mode 100644 index 2e23632..0000000 Binary files a/1.4/Textures/UI/Icon/ToPussy.png and /dev/null differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_1.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_1.png deleted file mode 100644 index 1c6ac74..0000000 Binary files a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_1.png and /dev/null differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_2.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_2.png deleted file mode 100644 index e65723d..0000000 Binary files a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_2.png and /dev/null differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_3.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_3.png deleted file mode 100644 index d67f3d0..0000000 Binary files a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_3.png and /dev/null differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_L00.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_L00.png new file mode 100644 index 0000000..a434f5a Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_L00.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_L01.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_L01.png new file mode 100644 index 0000000..14d8aa6 Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_L01.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_L02.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_L02.png new file mode 100644 index 0000000..359f5f5 Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_L02.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Large.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Large.png deleted file mode 100644 index dbf41c1..0000000 Binary files a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Large.png and /dev/null differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Large_Stretched.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Large_Stretched.png deleted file mode 100644 index 8d7f546..0000000 Binary files a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Large_Stretched.png and /dev/null differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Many.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Many.png deleted file mode 100644 index 2665259..0000000 Binary files a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Many.png and /dev/null differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_ManyMixed.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_ManyMixed.png deleted file mode 100644 index 575203e..0000000 Binary files a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_ManyMixed.png and /dev/null differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S00.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S00.png new file mode 100644 index 0000000..55c2066 Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S00.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S01.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S01.png new file mode 100644 index 0000000..5babb15 Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S01.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S02.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S02.png new file mode 100644 index 0000000..77add16 Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S02.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S03.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S03.png new file mode 100644 index 0000000..40bcdd5 Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S03.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S04.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S04.png new file mode 100644 index 0000000..057c44e Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_S04.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_00.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_00.png new file mode 100644 index 0000000..b95c3ed Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_00.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_01.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_01.png new file mode 100644 index 0000000..ebd19f3 Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_01.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_02.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_02.png new file mode 100644 index 0000000..fc8feee Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_02.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_03.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_03.png new file mode 100644 index 0000000..5eebd57 Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_03.png differ diff --git a/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_04.png b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_04.png new file mode 100644 index 0000000..b17fda9 Binary files /dev/null and b/1.4/Textures/Womb/Insect_Egged/Womb_Egged_Stuffed_04.png differ diff --git a/1.4/Textures/Womb/Mechanoid_Fluid.png b/1.4/Textures/Womb/Mechanoid_Fluid.png deleted file mode 100644 index 5655052..0000000 Binary files a/1.4/Textures/Womb/Mechanoid_Fluid.png and /dev/null differ diff --git a/1.4/Textures/Womb/Womb.png b/1.4/Textures/Womb/Womb.png index 7f49007..8f011de 100644 Binary files a/1.4/Textures/Womb/Womb.png and b/1.4/Textures/Womb/Womb.png differ diff --git a/1.4/Textures/Womb/Womb_Bleeding.png b/1.4/Textures/Womb/Womb_Bleeding.png index 3b931ea..9c4f2df 100644 Binary files a/1.4/Textures/Womb/Womb_Bleeding.png and b/1.4/Textures/Womb/Womb_Bleeding.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_00.png b/1.4/Textures/Womb/Womb_Cum_00.png index 7a4361a..702eb92 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_00.png and b/1.4/Textures/Womb/Womb_Cum_00.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_01.png b/1.4/Textures/Womb/Womb_Cum_01.png index f753ae6..9001a94 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_01.png and b/1.4/Textures/Womb/Womb_Cum_01.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_02.png b/1.4/Textures/Womb/Womb_Cum_02.png index 1653f06..dd5d6f4 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_02.png and b/1.4/Textures/Womb/Womb_Cum_02.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_03.png b/1.4/Textures/Womb/Womb_Cum_03.png index 000d517..ba5e1a8 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_03.png and b/1.4/Textures/Womb/Womb_Cum_03.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_04.png b/1.4/Textures/Womb/Womb_Cum_04.png index f3fdb37..3da2cff 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_04.png and b/1.4/Textures/Womb/Womb_Cum_04.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_05.png b/1.4/Textures/Womb/Womb_Cum_05.png index 9f91d4d..f018236 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_05.png and b/1.4/Textures/Womb/Womb_Cum_05.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_06.png b/1.4/Textures/Womb/Womb_Cum_06.png index a34b233..912bca6 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_06.png and b/1.4/Textures/Womb/Womb_Cum_06.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_07.png b/1.4/Textures/Womb/Womb_Cum_07.png index 9edb791..21694cb 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_07.png and b/1.4/Textures/Womb/Womb_Cum_07.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_08.png b/1.4/Textures/Womb/Womb_Cum_08.png index 5679e84..f44e7d6 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_08.png and b/1.4/Textures/Womb/Womb_Cum_08.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_09.png b/1.4/Textures/Womb/Womb_Cum_09.png index c89a46e..40f1193 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_09.png and b/1.4/Textures/Womb/Womb_Cum_09.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_10.png b/1.4/Textures/Womb/Womb_Cum_10.png index 7c4239c..62970aa 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_10.png and b/1.4/Textures/Womb/Womb_Cum_10.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_11.png b/1.4/Textures/Womb/Womb_Cum_11.png index 52cd588..bda0f85 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_11.png and b/1.4/Textures/Womb/Womb_Cum_11.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_12.png b/1.4/Textures/Womb/Womb_Cum_12.png index 6bd9215..978a5a5 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_12.png and b/1.4/Textures/Womb/Womb_Cum_12.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_13.png b/1.4/Textures/Womb/Womb_Cum_13.png index 9a5a2ee..ac6ee0d 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_13.png and b/1.4/Textures/Womb/Womb_Cum_13.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_14.png b/1.4/Textures/Womb/Womb_Cum_14.png index 991af90..b1e0756 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_14.png and b/1.4/Textures/Womb/Womb_Cum_14.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_15.png b/1.4/Textures/Womb/Womb_Cum_15.png index fcc149e..6975a62 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_15.png and b/1.4/Textures/Womb/Womb_Cum_15.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_16.png b/1.4/Textures/Womb/Womb_Cum_16.png index 3ff95ec..220302c 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_16.png and b/1.4/Textures/Womb/Womb_Cum_16.png differ diff --git a/1.4/Textures/Womb/Womb_Cum_17.png b/1.4/Textures/Womb/Womb_Cum_17.png index 3da3ed4..fd5b8da 100644 Binary files a/1.4/Textures/Womb/Womb_Cum_17.png and b/1.4/Textures/Womb/Womb_Cum_17.png differ diff --git a/1.4/Textures/Womb/Womb_Implanted.png b/1.4/Textures/Womb/Womb_Implanted.png index e570d37..94b7933 100644 Binary files a/1.4/Textures/Womb/Womb_Implanted.png and b/1.4/Textures/Womb/Womb_Implanted.png differ diff --git a/1.4/Textures/Womb/Womb_Implanted_Multiplet_2.png b/1.4/Textures/Womb/Womb_Implanted_Multiplet_2.png index 638e68c..cd2dd74 100644 Binary files a/1.4/Textures/Womb/Womb_Implanted_Multiplet_2.png and b/1.4/Textures/Womb/Womb_Implanted_Multiplet_2.png differ diff --git a/1.4/Textures/Womb/Womb_Implanted_Multiplet_3.png b/1.4/Textures/Womb/Womb_Implanted_Multiplet_3.png index 2ce2c7f..f400b21 100644 Binary files a/1.4/Textures/Womb/Womb_Implanted_Multiplet_3.png and b/1.4/Textures/Womb/Womb_Implanted_Multiplet_3.png differ diff --git a/1.4/Textures/Womb/Womb_Implanted_Multiplet_4.png b/1.4/Textures/Womb/Womb_Implanted_Multiplet_4.png new file mode 100644 index 0000000..15d6b65 Binary files /dev/null and b/1.4/Textures/Womb/Womb_Implanted_Multiplet_4.png differ diff --git a/1.4/Textures/Womb/Womb_Implanted_Multiplet_5.png b/1.4/Textures/Womb/Womb_Implanted_Multiplet_5.png new file mode 100644 index 0000000..52ebb76 Binary files /dev/null and b/1.4/Textures/Womb/Womb_Implanted_Multiplet_5.png differ diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation.sln b/1.4/source/RJW_Menstruation/RJW_Menstruation.sln index 701c76e..37d1010 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation.sln +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation.sln @@ -5,8 +5,6 @@ VisualStudioVersion = 17.3.32929.385 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RJW_Menstruation", "RJW_Menstruation\RJW_Menstruation.csproj", "{EED2F3B9-8C20-4194-919E-8D151B29F70B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MilkModule", "MilkModule\MilkModule.csproj", "{3591B3C1-EB57-44BF-AB69-A613E097A7F8}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -17,10 +15,6 @@ Global {EED2F3B9-8C20-4194-919E-8D151B29F70B}.Debug|Any CPU.Build.0 = Debug|Any CPU {EED2F3B9-8C20-4194-919E-8D151B29F70B}.Release|Any CPU.ActiveCfg = Release|Any CPU {EED2F3B9-8C20-4194-919E-8D151B29F70B}.Release|Any CPU.Build.0 = Release|Any CPU - {3591B3C1-EB57-44BF-AB69-A613E097A7F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3591B3C1-EB57-44BF-AB69-A613E097A7F8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3591B3C1-EB57-44BF-AB69-A613E097A7F8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3591B3C1-EB57-44BF-AB69-A613E097A7F8}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/CompBiosculpterPod_EggRestorationCycle.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/CompBiosculpterPod_EggRestorationCycle.cs index 537ef53..b7656c8 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/CompBiosculpterPod_EggRestorationCycle.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/CompBiosculpterPod_EggRestorationCycle.cs @@ -1,4 +1,5 @@ using RimWorld; +using System.Linq; using Verse; namespace RJW_Menstruation @@ -22,6 +23,8 @@ namespace RJW_Menstruation comp.RestoreEggs(((CompProperties_BiosculpterPod_EggRestorationCycle)Props).yearsToRestore); Messages.Message(Translations.EggRestorationCompleted(occupant.Named("PAWN")), occupant, MessageTypeDefOf.PositiveEvent); + if (occupant.GetMenstruationComps().Any()) + occupant.needs.mood?.thoughts?.memories?.TryGainMemoryFast(VariousDefOf.EggRestorationReceived); } } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs index 07fd58f..1b1f69c 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs @@ -18,10 +18,11 @@ namespace RJW_Menstruation public const float CumFertilityDecayRatioDefault = 0.05f; public const int CumFertilityDecayRatioAdjustDefault = 50; public const int CycleAccelerationDefault = 6; - public const int ColonistTickIntervalDefault = 2500; // 1 hour - public const int NonColonistTickIntervalDefault = 2500; - public const int AnimalTickIntervalDefault = 2500; + public const int ColonistTickIntervalDefault = GenDate.TicksPerHour; + public const int NonColonistTickIntervalDefault = GenDate.TicksPerHour; + public const int AnimalTickIntervalDefault = GenDate.TicksPerHour; public const int TickIntervalMinimum = 20; + public const int TickIntervalMaximum = 4 * GenDate.TicksPerHour; public const float EnzygoticTwinsChanceDefault = 0.002f; public const int EnzygoticTwinsChanceAdjustDefault = 2; public const int MaxEnzygoticTwinsDefault = 9; @@ -57,6 +58,8 @@ namespace RJW_Menstruation public static bool DrawEggOverlay = true; public static bool Debug = false; public static bool EnableMenopause = true; + public static bool EnablePheromones = true; + public static float AnimalPheromoneEffect = 0.0f; public static DetailLevel InfoDetail => infoDetail; public static bool EstrusOverridesHookupSettings = false; public static float EstrusFuckabilityToHookup = RJWHookupSettings.MinimumFuckabilityToHookup; @@ -71,10 +74,8 @@ namespace RJW_Menstruation public static int MaxEnzygoticTwins = MaxEnzygoticTwinsDefault; public static int BleedingAmount = BleedingAmountDefault; public static bool EnableButtonInHT = false; - public static bool EnableGatherCumGizmo = true; public static PawnFlags ShowFlag = PawnFlags.Colonist | PawnFlags.Prisoner; public static bool UseHybridExtention = true; - public static bool MotherFirst = false; public static bool AllowShrinkIcon = false; public static float EggLifespanMultiplier = EggLifespanMultiplierDefault; public static bool EnableBirthVaginaMorph = false; @@ -90,8 +91,10 @@ namespace RJW_Menstruation CumFertilityDecayRatioAdjust = CumFertilityDecayRatioAdjustDefault; EnableWombIcon = true; EnableDraftedIcon = true; - EnableGatherCumGizmo = true; EnableAnimalCycle = false; + EnableMenopause = true; + EnablePheromones = true; + AnimalPheromoneEffect = 0.0f; CycleAcceleration = CycleAccelerationDefault; ColonistTickInterval = ColonistTickIntervalDefault; NonColonistTickInterval = NonColonistTickIntervalDefault; @@ -107,7 +110,6 @@ namespace RJW_Menstruation PregnancySource = PregnancyType.MultiplePregnancy; MaxEnzygoticTwins = MaxEnzygoticTwinsDefault; BleedingAmount = BleedingAmountDefault; - MotherFirst = false; MaxBreastIncrementFactor = MaxBreastIncrementFactorDefault; MaxNippleIncrementFactor= MaxNippleIncrementFactorDefault; PermanentNippleChange = PermanentNippleChangeDefault; @@ -211,6 +213,8 @@ namespace RJW_Menstruation Scribe_Values.Look(ref Debug, "Debug", false); Scribe_Values.Look(ref infoDetail, "InfoDetail", DetailLevel.All); Scribe_Values.Look(ref EnableMenopause, "EnableMenopause", true); + Scribe_Values.Look(ref EnablePheromones, "EnablePheromones", true); + Scribe_Values.Look(ref AnimalPheromoneEffect, "AnimalPheromoneEffect", 0.0f); Scribe_Values.Look(ref EstrusOverridesHookupSettings, "EstrusOverridesHookupSettings", false); Scribe_Values.Look(ref EstrusFuckabilityToHookup, "EstrusFuckabilityToHookup", EstrusFuckabilityToHookup, true); Scribe_Values.Look(ref EstrusAttractivenessToHookup, "EstrusAttractivenessToHookup", EstrusAttractivenessToHookup, true); @@ -224,10 +228,8 @@ namespace RJW_Menstruation Scribe_Values.Look(ref MaxEnzygoticTwins, "MaxEnzygoticTwins", MaxEnzygoticTwinsDefault); Scribe_Values.Look(ref BleedingAmount, "BleedingAmount", BleedingAmountDefault); Scribe_Values.Look(ref EnableButtonInHT, "EnableButtonInHT", false); - Scribe_Values.Look(ref EnableGatherCumGizmo, "EnableGatherCumGizmo", true); Scribe_Values.Look(ref ShowFlag, "ShowFlag", PawnFlags.Colonist | PawnFlags.Prisoner); Scribe_Values.Look(ref UseHybridExtention, "UseHybridExtention", true); - Scribe_Values.Look(ref MotherFirst, "MotherFirst", false); Scribe_Values.Look(ref MaxBreastIncrementFactor, "MaxBreastIncrementFactor", MaxBreastIncrementFactorDefault); Scribe_Values.Look(ref MaxNippleIncrementFactor, "MaxNippleIncrementFactor", MaxNippleIncrementFactorDefault); Scribe_Values.Look(ref PermanentNippleChange, "PermanentNippleChange", PermanentNippleChangeDefault); @@ -291,6 +293,7 @@ namespace RJW_Menstruation float mainRectHeight = 126f + (Configurations.EnableWombIcon || Configurations.EnableButtonInHT ? 400f : 0f) + (Configurations.EnableAnimalCycle ? 48f : 0f) + + (Configurations.EnableAnimalCycle && Configurations.EnablePheromones ? 48f : 0f) + (Configurations.EstrusOverridesHookupSettings ? 144f : 0f) + (Configurations.PregnancySource == Configurations.PregnancyType.MultiplePregnancy ? (Configurations.EnableEnzygoticTwins ? 175f : 75f) : 0f) + (Configurations.PregnancySource == Configurations.PregnancyType.Biotech ? 75f : 0f) + @@ -309,7 +312,6 @@ namespace RJW_Menstruation firstLine.SplitVertically(firstLine.width / 3, out Rect leftCell, out Rect middleAndRightCells); Widgets.CheckboxLabeled(leftCell, Translations.Option1_Label_1, ref Configurations.EnableWombIcon, false, null, null, true); Widgets.CheckboxLabeled(middleAndRightCells.LeftHalf(), Translations.Option1_Label_2, ref Configurations.EnableButtonInHT, false, null, null, true); - Widgets.CheckboxLabeled(middleAndRightCells.RightHalf(), Translations.Option_EnableGatherCumGizmo_Label, ref Configurations.EnableGatherCumGizmo, false, null, null, true); if (Configurations.EnableWombIcon || Configurations.EnableButtonInHT) { Listing_Standard wombsection = listmain.BeginSection(380); @@ -393,6 +395,16 @@ namespace RJW_Menstruation listmain.CheckboxLabeled(Translations.Option12_Label, ref Configurations.EnableMenopause, Translations.Option12_Desc); + listmain.CheckboxLabeled(Translations.Option_EnablePheromones_Label, ref Configurations.EnablePheromones, Translations.Option_EnablePheromones_Desc); + if (Configurations.EnablePheromones && Configurations.EnableAnimalCycle) + { + Adjust = (int)(Configurations.AnimalPheromoneEffect * 1000); + listmain.Label(Translations.Option_AnimalPheromoneEffect_Label + " " + Configurations.AnimalPheromoneEffect * 100 + "%", -1, Translations.Option_AnimalPheromoneEffect_Desc); + Adjust = (int)listmain.Slider(Adjust, 0, 1000); + Configurations.AnimalPheromoneEffect = (float)Adjust / 1000f; + } + else Configurations.AnimalPheromoneEffect = 0.0f; + listmain.Label(Translations.Option3_Label + " " + Configurations.ImplantationChance * 100 + "%", -1, Translations.Option3_Desc); Configurations.ImplantationChanceAdjust = (int)listmain.Slider(Configurations.ImplantationChanceAdjust, 0, 1000); Configurations.ImplantationChance = (float)Configurations.ImplantationChanceAdjust / 100; @@ -432,15 +444,15 @@ namespace RJW_Menstruation Configurations.CycleAcceleration = (int)listmain.Slider(Configurations.CycleAcceleration, 1, 50); listmain.LabelDouble(Translations.Option_ColonistUpdateInterval_Label, GenDate.ToStringTicksToPeriod(Configurations.ColonistTickInterval), Translations.Option_ColonistUpdateInterval_Desc); - Configurations.ColonistTickInterval = (int)Mathf.Exp(listmain.Slider(Mathf.Log(Configurations.ColonistTickInterval), Mathf.Log(Configurations.TickIntervalMinimum), Mathf.Log(4 * GenDate.TicksPerHour))); + Configurations.ColonistTickInterval = (int)Mathf.Exp(listmain.Slider(Mathf.Log(Configurations.ColonistTickInterval), Mathf.Log(Configurations.TickIntervalMinimum), Mathf.Log(Configurations.TickIntervalMaximum))); listmain.LabelDouble(Translations.Option_NonColonistUpdateInterval_Label, GenDate.ToStringTicksToPeriod(Configurations.NonColonistTickInterval), Translations.Option_NonColonistUpdateInterval_Desc); - Configurations.NonColonistTickInterval = (int)Mathf.Exp(listmain.Slider(Mathf.Log(Configurations.NonColonistTickInterval), Mathf.Log(Configurations.TickIntervalMinimum), Mathf.Log(4 * GenDate.TicksPerHour))); + Configurations.NonColonistTickInterval = (int)Mathf.Exp(listmain.Slider(Mathf.Log(Configurations.NonColonistTickInterval), Mathf.Log(Configurations.TickIntervalMinimum), Mathf.Log(Configurations.TickIntervalMaximum))); if(Configurations.EnableAnimalCycle) { listmain.LabelDouble(Translations.Option_AnimalUpdateInterval_Label, GenDate.ToStringTicksToPeriod(Configurations.AnimalTickInterval), Translations.Option_AnimalUpdateInterval_Desc); - Configurations.AnimalTickInterval = (int)Mathf.Exp(listmain.Slider(Mathf.Log(Configurations.AnimalTickInterval), Mathf.Log(Configurations.TickIntervalMinimum), Mathf.Log(4 * GenDate.TicksPerHour))); + Configurations.AnimalTickInterval = (int)Mathf.Exp(listmain.Slider(Mathf.Log(Configurations.AnimalTickInterval), Mathf.Log(Configurations.TickIntervalMinimum), Mathf.Log(Configurations.TickIntervalMaximum))); } float var2 = EstimatedBleedingAmountPerHour; diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Cum.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Cum.cs index 3f112d3..eefdfc7 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Cum.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Cum.cs @@ -204,9 +204,9 @@ namespace RJW_Menstruation { // comp is used for Hydrogen's RJW Muscle Injury float totalleak = volume; - float decayPerInterval = 1 - Mathf.Pow(1 - Configurations.CumDecayRatio, comp.SimulationsPerHour); - float fertilityDecayPerInterval = 1 - Mathf.Pow(1 - Configurations.CumFertilityDecayRatio, comp.SimulationsPerHour); - antisperm *= comp.SimulationsPerHour; + float decayPerInterval = 1 - Mathf.Pow(1 - Configurations.CumDecayRatio, comp.HoursBetweenSimulations); + float fertilityDecayPerInterval = 1 - Mathf.Pow(1 - Configurations.CumFertilityDecayRatio, comp.HoursBetweenSimulations); + antisperm *= comp.HoursBetweenSimulations; volume *= Math.Max(0, 1 - decayPerInterval * (1 - DecayResist) * leakfactor); fertility *= Math.Max(0, 1 - (fertilityDecayPerInterval * (1 - DecayResist) + antisperm)); CutMinor(); diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs index b618abe..33e4e11 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/DrugOutcomeDoers.cs @@ -89,7 +89,7 @@ namespace RJW_Menstruation else m.moodPowerFactor = 0.3f; } - if (pawn.IsProPregnancy()) pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.HateTookContraceptivePill); + if (pawn.IsProPregnancy(out _)) pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.HateTookContraceptivePill); else pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.TookContraceptivePill); } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs index 558031d..eacab7d 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs @@ -144,11 +144,13 @@ namespace RJW_Menstruation Scribe_Values.Look(ref baseAlpha, "baseAlpha", baseAlpha, true); Scribe_Values.Look(ref baseAreola, "baseAreola", baseAreola, true); Scribe_Values.Look(ref baseNipple, "baseNipple", baseNipple, true); + if (Scribe.mode == LoadSaveMode.PostLoadInit) + Initialize(); } public bool ShouldSimulate() { - if (!Configurations.EnableAnimalCycle && Pawn.IsAnimal()) return false; + if (!Pawn.ShouldCycle()) return false; if (Pawn.SpawnedOrAnyParentSpawned || Pawn.IsCaravanMember() || PawnUtility.IsTravelingInTransportPodWorldObject(Pawn)) return true; return false; diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs index a32969c..08dcf50 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs @@ -30,7 +30,7 @@ namespace RJW_Menstruation switch (CurrentVisibleStage) { case Stage.Follicular: - return Translations.Stage_Follicular_Induced_Desc + (EggHealth < 1f ? Translations.Stage_Climacteric_Desc : ""); + return Translations.Stage_Follicular_Induced_Desc + (EggHealth < 1f ? " " + Translations.Stage_Climacteric_Desc : ""); default: return base.GetCurStageDesc; } @@ -106,19 +106,8 @@ namespace RJW_Menstruation protected override bool ShouldBeInEstrus() { - if (!loaded) - Initialize(); - switch (curStage) - { - case Stage.Follicular: - return curStageTicks > currentIntervalTicks - Props.estrusDaysBeforeOvulation * GenDate.TicksPerDay; - case Stage.Ovulatory: - return true; - case Stage.Luteal: - return hadOvulatoryStage && curStageTicks < EggLifespanTicks; - default: - return false; - } + if (curStage == Stage.Luteal && !hadOvulatoryStage) return false; + else return base.ShouldBeInEstrus(); } } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index c32ee83..e5cfef8 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -169,14 +169,15 @@ namespace RJW_Menstruation if (Pawn.IsAnimal()) tickInterval = Configurations.AnimalTickInterval; else if (Pawn.IsColonist || Pawn.IsPrisonerOfColony || Pawn.IsSlaveOfColony) tickInterval = Configurations.ColonistTickInterval; else tickInterval = Configurations.NonColonistTickInterval; - if (tickInterval <= Configurations.TickIntervalMinimum) tickInterval = Configurations.TickIntervalMinimum; + if (tickInterval < Configurations.TickIntervalMinimum) tickInterval = Configurations.TickIntervalMinimum; + else if (tickInterval > Configurations.TickIntervalMaximum) tickInterval = Configurations.TickIntervalMaximum; } return tickInterval; } set => tickInterval = value; } - public float SimulationsPerHour => (float)TickInterval / GenDate.TicksPerHour; + public float HoursBetweenSimulations => (float)TickInterval / GenDate.TicksPerHour; public Hediff Pregnancy { get @@ -197,20 +198,9 @@ namespace RJW_Menstruation get { if (opcache > 0) return opcache; - float avglittersize; - try - { - avglittersize = Mathf.Max(Rand.ByCurveAverage(Pawn.RaceProps.litterSizeCurve), 1.0f); - } - catch - { - // Any exceptions in that will have been reported elsewhere in the code by now - avglittersize = 1.0f; - }; - avglittersize *= ovulationFactor; const float yearsBeforeMenopause = 6.0f; opcache = (int)(RaceCyclesPerYear() * - avglittersize * + AverageLitterSize() * yearsBeforeMenopause * (Pawn.RaceProps.lifeExpectancy / ThingDefOf.Human.race.lifeExpectancy)); if (opcache == 0) opcache = 1; @@ -289,16 +279,17 @@ namespace RJW_Menstruation { get { - if (QuirkUtility.HasQuirk(Pawn, QuirkUtility.Quirks.Breeder)) return 0.5f; + if (Pawn.IsBreeder()) return 0.5f; return 1.0f; } } // I hate doing this, but it's the least bad option - public bool calculatingOvulationChance = false; + private bool calculatingOvulationChance = false; + public bool CalculatingOvulationChance { get => calculatingOvulationChance; } - protected float CalcuatedOvulationChance() + protected float CalculatedOvulationChance() { float ovulationChance = 1.0f; if (EggHealth <= 0.0f) return 0.0f; @@ -306,20 +297,14 @@ namespace RJW_Menstruation if (ModsConfig.BiotechActive && xxx.is_human(Pawn)) { if (Pawn.SterileGenes()) return 0.0f; - // Replicate how rjw.PawnCapacityWorker_Fertility.CalculateCapacityLevel does it, but without the age factor if (!Pawn.RaceHasFertility()) return 0.0f; if (AndroidsCompatibility.IsAndroid(Pawn) && parent.def != Genital_Helper.archotech_vagina) return 0.0f; - foreach (var part in StatDefOf.Fertility.parts) - { - if(part is StatPart_FertilityByGenderAge fertilityByAge) - { - float factor = 1.0f; - fertilityByAge.TransformValue(StatRequest.For(Pawn), ref factor); - if (factor <= 0.0f) return 0.0f; // Too young or too old - } - else part.TransformValue(StatRequest.For(Pawn), ref ovulationChance); - } - if (Pawn.HasQuirk(QuirkUtility.Quirks.Breeder)) ovulationChance *= 10.0f; + + float ageFactor = 1.0f; + StatDefOf.Fertility.GetStatPart()?.TransformValue(StatRequest.For(Pawn), ref ageFactor); + if (ageFactor <= 0.0f) return 0.0f; // Too young or too old + + if (Pawn.IsBreeder()) ovulationChance *= 10.0f; try { calculatingOvulationChance = true; @@ -330,20 +315,19 @@ namespace RJW_Menstruation return ovulationChance; } - protected float CalcuatedImplantChance() + protected float CalculatedImplantChance() { - float factor = 1.0f; if (ModsConfig.BiotechActive && xxx.is_human(Pawn)) { // Implant factor will be based solely on pawn age, plus any rollover from ovulation chance - StatPart_FertilityByGenderAge fertilityStatPart = StatDefOf.Fertility.GetStatPart(); - fertilityStatPart?.TransformValue(StatRequest.For(Pawn), ref factor); + float factor = 1.0f; + StatDefOf.Fertility.GetStatPart()?.TransformValue(StatRequest.For(Pawn), ref factor); if (OvulationChance > 1.0f) factor *= OvulationChance; return Props.baseImplantationChanceFactor * FertilityModifier * factor; } else { - return Pawn.health.capacities.GetLevel(xxx.reproduction) * Props.baseImplantationChanceFactor * FertilityModifier * factor; + return Pawn.health.capacities.GetLevel(xxx.reproduction) * Props.baseImplantationChanceFactor * FertilityModifier; } } @@ -351,16 +335,17 @@ namespace RJW_Menstruation { get { - if (ovulationChanceCache < 0.0f) ovulationChanceCache = CalcuatedOvulationChance(); + if (ovulationChanceCache < 0.0f) ovulationChanceCache = CalculatedOvulationChance(); return ovulationChanceCache; } } + // Before configuration setting public float ImplantChance { get { - if (implantationChanceCache < 0.0f) implantationChanceCache = CalcuatedImplantChance(); + if (implantationChanceCache < 0.0f) implantationChanceCache = CalculatedImplantChance(); return implantationChanceCache; } } @@ -371,10 +356,7 @@ namespace RJW_Menstruation { if (cums.NullOrEmpty()) yield return Translations.Info_noCum; else foreach (Cum cum in cums) - { - if (!cum.notcum) yield return string.Format("{0}: {1:0.##}ml", cum.pawn?.Label, cum.Volume); - else yield return string.Format("{0}: {1:0.##}ml", cum.notcumLabel, cum.Volume); - } + yield return string.Format("{0}: {1:0.##}ml", cum.notcum ? cum.notcumLabel : cum.pawn?.Label, cum.Volume); } } public Color GetCumMixtureColor @@ -677,6 +659,8 @@ namespace RJW_Menstruation Scribe_Values.Look(ref originvagsize, "originvagsize", originvagsize, true); Scribe_Values.Look(ref DoCleanWomb, "DoCleanWomb", false); Scribe_References.Look(ref pregnancy, "pregnancy"); + if (Scribe.mode == LoadSaveMode.PostLoadInit) + Initialize(); } @@ -694,25 +678,29 @@ namespace RJW_Menstruation estrusLevel = Props.concealedEstrus ? EstrusLevel.Concealed : EstrusLevel.Visible; ovulationFactor = 1f; noBleeding = false; + opcache = -1; if (Pawn.genes == null || !ModsConfig.BiotechActive) return; - if (Pawn.genes.HasGene(VariousDefOf.ShortEggLifetime)) eggLifeSpanTicks = eggLifeSpanTicks * 3 / 4; - else if (Pawn.genes.HasGene(VariousDefOf.DoubleEggLifetime)) eggLifeSpanTicks *= 2; - else if (Pawn.genes.HasGene(VariousDefOf.QuadEggLifetime)) eggLifeSpanTicks *= 4; + foreach (GeneDef geneDef in Pawn.genes.GenesListForReading.Select(gene => gene.def)) + { + if (geneDef == VariousDefOf.ShortEggLifetime) eggLifeSpanTicks = eggLifeSpanTicks * 3 / 4; + else if (geneDef == VariousDefOf.DoubleEggLifetime) eggLifeSpanTicks *= 2; + else if (geneDef == VariousDefOf.QuadEggLifetime) eggLifeSpanTicks *= 4; - if (Pawn.genes.HasGene(VariousDefOf.NeverEstrus)) estrusLevel = EstrusLevel.None; - else if (Pawn.genes.HasGene(VariousDefOf.FullEstrus)) estrusLevel = EstrusLevel.Visible; + else if (geneDef == VariousDefOf.NeverEstrus) estrusLevel = EstrusLevel.None; + else if (geneDef == VariousDefOf.FullEstrus) estrusLevel = EstrusLevel.Visible; - if (Pawn.genes.HasGene(VariousDefOf.DoubleOvulation)) ovulationFactor = 2f; - else if (Pawn.genes.HasGene(VariousDefOf.QuadOvulation)) ovulationFactor = 4f; + else if (geneDef == VariousDefOf.DoubleOvulation) ovulationFactor = 2f; + else if (geneDef == VariousDefOf.QuadOvulation) ovulationFactor = 4f; - noBleeding = Pawn.genes.HasGene(VariousDefOf.NoBleeding); + else if (geneDef == VariousDefOf.NoBleeding) noBleeding = true; + } } public bool ShouldSimulate() { - if (!Configurations.EnableAnimalCycle && Pawn.IsAnimal()) return false; + if (!Pawn.ShouldCycle()) return false; if (Pawn.SpawnedOrAnyParentSpawned || Pawn.IsCaravanMember() || PawnUtility.IsTravelingInTransportPodWorldObject(Pawn)) return true; return false; @@ -734,6 +722,9 @@ namespace RJW_Menstruation // If an exception makes it out, RW will remove the hediff, so catch it here try { + if (Pawn.IsHashIntervalTick(recalculateTickInterval)) TickInterval = -1; // Every so often, force TickInterval to be recalculated in case the pawn's status changed. + if (!Pawn.IsHashIntervalTick(TickInterval)) return; + if (!ShouldSimulate()) return; // Initialize immediately if needed, but if there's an error, then don't spam it every tick @@ -742,10 +733,7 @@ namespace RJW_Menstruation Log.Warning($"{Pawn}'s womb is ticking, but was not initialized first"); Initialize(); } - - if (Pawn.IsHashIntervalTick(recalculateTickInterval)) TickInterval = -1; // Every so often, force TickInterval to be recalculated in case the pawn's status changed. - if (!Pawn.IsHashIntervalTick(TickInterval)) return; - + if (initError) Log.Warning($"Attempting to process {Pawn}'s womb uninitialized"); if (Pregnancy != null && curStage != Stage.Pregnant) @@ -888,8 +876,8 @@ namespace RJW_Menstruation if (!precum && fertility > 0 && IsDangerDay && cummer.relations.GetPregnancyApproachForPartner(Pawn) == PregnancyApproach.AvoidPregnancy) { float successChance = pulloutSuccessRate; - if (cummer.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish)) successChance *= fetishPulloutSuccessModifier; - if (Pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish)) successChance *= fetishPulloutSuccessModifier; + if (cummer.HasImpregnationFetish()) successChance *= fetishPulloutSuccessModifier; + if (Pawn.HasImpregnationFetish()) successChance *= fetishPulloutSuccessModifier; if (Rand.Chance(successChance)) return; } if (Pawn.HasIUD()) fertility /= 100f; @@ -901,7 +889,7 @@ namespace RJW_Menstruation bool merged = false; if (!cums.NullOrEmpty()) foreach (Cum cum in cums) { - if (cum.pawn.Equals(cummer)) + if (cum.pawn?.Equals(cummer) ?? false) { cum.MergeWithCum(volume, fertility); merged = true; @@ -916,7 +904,7 @@ namespace RJW_Menstruation bool merged = false; if (!cums.NullOrEmpty()) foreach (Cum cum in cums) { - if (cum.pawn.Equals(cummer)) + if (cum.pawn?.Equals(cummer) ?? false) { cum.MergeWithCum(volume, fertility); merged = true; @@ -953,7 +941,7 @@ namespace RJW_Menstruation bool merged = false; if (!cums.NullOrEmpty()) foreach (Cum cum in cums) { - if (cum.notcum && cum.pawn.Equals(cummer) && cum.notcumLabel.Equals(notcumlabel)) + if (cum.notcum && (cum.pawn?.Equals(cummer) ?? false) && cum.notcumLabel.Equals(notcumlabel)) { cum.MergeWithFluid(volume, decayresist, filthdef); merged = true; @@ -968,7 +956,7 @@ namespace RJW_Menstruation bool merged = false; if (!cums.NullOrEmpty()) foreach (Cum cum in cums) { - if (cum.notcum && cum.pawn.Equals(cummer) && cum.notcumLabel.Equals(notcumlabel)) + if (cum.notcum && (cum.pawn?.Equals(cummer) ?? false) && cum.notcumLabel.Equals(notcumlabel)) { cum.MergeWithFluid(volume, decayresist, filthdef); merged = true; @@ -1061,9 +1049,9 @@ namespace RJW_Menstruation if (Pawn.CurJobDef == xxx.knotted) leakfactor = 0f; foreach (Cum cum in cums) { - if (Rand.Chance(SimulationsPerHour)) cum.CumEffects(Pawn); + if (Rand.Chance(HoursBetweenSimulations)) cum.CumEffects(Pawn); float vd = cum.DismishNatural(leakfactor, this, antisperm); - cum.MakeThinner((float)Configurations.CycleAcceleration * SimulationsPerHour); + cum.MakeThinner((float)Configurations.CycleAcceleration * HoursBetweenSimulations); totalleak += AbsorbCum(vd, absorber); string tmp = "FilthLabelWithSource".Translate(cum.FilthDef.label, cum.pawn?.LabelShort ?? "Unknown", 1.ToString()); filthlabels.Add(tmp.Replace(" x1", "")); @@ -1222,6 +1210,21 @@ namespace RJW_Menstruation { } + protected float AverageLitterSize() + { + float avglittersize; + try + { + avglittersize = Mathf.Max(Rand.ByCurveAverage(Pawn.RaceProps.litterSizeCurve), 1.0f); + } + catch (NullReferenceException) + { + avglittersize = 1.0f; + } + avglittersize *= ovulationFactor; + return avglittersize; + } + protected virtual float RaceCyclesPerYear() { int breedingSeasons = 0; @@ -1244,16 +1247,7 @@ namespace RJW_Menstruation public int GetOvaryPowerByAge() { - float avglittersize; - try - { - avglittersize = Mathf.Max(Rand.ByCurveAverage(Pawn.RaceProps.litterSizeCurve), 1.0f); - } - catch (NullReferenceException) - { - avglittersize = 1.0f; - } - avglittersize *= ovulationFactor; + float avglittersize = AverageLitterSize(); float fertStartAge = Pawn.RaceProps.lifeStageAges?.Find(stage => stage.def.reproductive)?.minAge ?? 0.0f; float fertEndAge = Pawn.RaceProps.lifeExpectancy * (Pawn.IsAnimal() ? RJWPregnancySettings.fertility_endage_female_animal : RJWPregnancySettings.fertility_endage_female_humanlike); @@ -1300,7 +1294,8 @@ namespace RJW_Menstruation if (EggHealth < 1f) { if (sexNeed == null) sexNeed = Pawn.needs.TryGetNeed(VariousDefOf.SexNeed); - if (sexNeed?.CurLevel < 0.5) sexNeed.CurLevel += 0.01f / Math.Max(1, Pawn.GetMenstruationComps().Count()); + if (sexNeed == null) return; + if (sexNeed.CurLevel < 0.5f) sexNeed.CurLevel += 0.01f * HoursBetweenSimulations / Math.Max(1, Pawn.GetMenstruationComps().Count()); } } @@ -1368,7 +1363,7 @@ namespace RJW_Menstruation //float fertFailChancePerHour = Mathf.Pow(1.0f - Configurations.FertilizeChance, totalFertPower * Props.basefertilizationChanceFactor); //float fertFailChancePerInterval = Mathf.Pow(fertFailChancePerHour, (float)TickInterval / GenDate.TicksPerHour); - float fertFailChancePerInterval = Mathf.Pow(1.0f - Configurations.FertilizeChance, totalFertPower * Props.basefertilizationChanceFactor * SimulationsPerHour); + float fertFailChancePerInterval = Mathf.Pow(1.0f - Configurations.FertilizeChance, totalFertPower * Props.basefertilizationChanceFactor * HoursBetweenSimulations); if (Rand.Chance(fertFailChancePerInterval)) return null; @@ -1412,97 +1407,116 @@ namespace RJW_Menstruation } else if (Rand.Chance(Configurations.ImplantationChance * ImplantChance * InterspeciesImplantFactor(egg.fertilizer))) { - if (Configurations.Debug) Log.Message($"Implanting fertilized egg of {Pawn} into {parent}, father {egg.fertilizer}"); - if (pregnancy != null) + try { - if (Configurations.PregnancySource == Configurations.PregnancyType.Biotech && Configurations.EnableBiotechTwins && Configurations.EnableHeteroOvularTwins) + if (Configurations.Debug) Log.Message($"Implanting fertilized egg of {Pawn} into {parent}, father {egg.fertilizer}"); + if (pregnancy == null) { - if (Configurations.Debug) Log.Message($"Adding to existing Biotech pregnancy {pregnancy}"); - HediffComp_PregeneratedBabies comp = pregnancy.TryGetComp(); - if (comp == null) Log.Warning($"Trying to add Biotech egg to {Pawn}'s pregnancy without a pregenerated baby comp: {pregnancy}"); - else + Configurations.PregnancyType usePregnancy = xxx.is_human(Pawn) ? Configurations.PregnancySource : Configurations.PregnancyType.MultiplePregnancy; + switch (usePregnancy) { - comp.AddNewBaby(Pawn, egg.fertilizer); - pregnant = true; - deadeggs.Add(egg); + case Configurations.PregnancyType.BaseRJW: + + if (Configurations.Debug) Log.Message($"Creating new base RJW pregnancy"); + PregnancyHelper.AddPregnancyHediff(Pawn, egg.fertilizer); + // I hate having to do this, but it gets the newest pregnancy + List pregnancies = new List(); + Pawn.health.hediffSet.GetHediffs(ref pregnancies); + pregnancy = pregnancies.MaxBy(hediff => hediff.loadID); + pregnant = true; + break; + + case Configurations.PregnancyType.MultiplePregnancy: + if (Configurations.Debug) Log.Message($"Creating new menstruation pregnancy"); + pregnancy = Hediff_BasePregnancy.Create(Pawn, egg.fertilizer); + pregnant = true; + deadeggs.Add(egg); + break; + + case Configurations.PregnancyType.Biotech: + if (Configurations.Debug) Log.Message($"Creating new biotech pregnancy"); + pregnancy = HediffMaker.MakeHediff(HediffDefOf.PregnantHuman, Pawn); + if (Configurations.EnableBiotechTwins) + pregnancy.TryGetComp().AddNewBaby(Pawn, egg.fertilizer); + ((Hediff_Pregnant)pregnancy).SetParents(Pawn, egg.fertilizer, PregnancyUtility.GetInheritedGeneSet(egg.fertilizer, Pawn)); + Pawn.health.AddHediff(pregnancy); + pregnant = true; + deadeggs.Add(egg); + break; } - } - else if (Configurations.PregnancySource == Configurations.PregnancyType.MultiplePregnancy && Configurations.EnableHeteroOvularTwins) - { - if (pregnancy is Hediff_MultiplePregnancy h) + if (pregnancy is Hediff_BasePregnancy rjw_preg) { - if (Configurations.Debug) Log.Message($"Adding to existing pregnancy {h}"); - h.AddNewBaby(Pawn, egg.fertilizer); + // TODO: advance biotech pregnancy + rjw_preg.p_start_tick -= egg.ticksSinceFertilization / Configurations.CycleAcceleration; + rjw_preg.p_end_tick -= egg.ticksSinceFertilization / Configurations.CycleAcceleration; } - pregnant = true; - deadeggs.Add(egg); } else { - pregnant = true; - break; + switch (pregnancy) + { + case Hediff_Pregnant vanillaPreg: // Not going to do the labor ones + if (!Configurations.EnableBiotechTwins || !Configurations.EnableHeteroOvularTwins) goto default; + if (Configurations.Debug) Log.Message($"Adding to existing Biotech pregnancy {vanillaPreg.GetUniqueLoadID()}"); + HediffComp_PregeneratedBabies comp = vanillaPreg.TryGetComp(); + if (comp == null) Log.Warning($"Trying to add Biotech egg to {Pawn}'s pregnancy without a pregenerated baby comp: {vanillaPreg.GetUniqueLoadID()}"); + else + comp.AddNewBaby(Pawn, egg.fertilizer); + pregnant = true; + deadeggs.Add(egg); + break; + case Hediff_MultiplePregnancy multiPreg: + if (!Configurations.EnableHeteroOvularTwins) goto default; + if (Configurations.Debug) Log.Message($"Adding to existing pregnancy {multiPreg.GetUniqueLoadID()}"); + multiPreg.AddNewBaby(Pawn, egg.fertilizer); + pregnant = true; + deadeggs.Add(egg); + break; + case Hediff_BasePregnancy _: + default: + pregnant = true; + deadeggs.Add(egg); + break; + } } } - else + catch (Exception ex) { - Configurations.PregnancyType usePregnancy = xxx.is_human(Pawn) ? Configurations.PregnancySource : Configurations.PregnancyType.MultiplePregnancy; - switch (usePregnancy) - { - case Configurations.PregnancyType.BaseRJW: - - if (Configurations.Debug) Log.Message($"Creating new base RJW pregnancy"); - PregnancyHelper.AddPregnancyHediff(Pawn, egg.fertilizer); - // I hate having to do this, but it gets the newest pregnancy - List pregnancies = new List(); - Pawn.health.hediffSet.GetHediffs(ref pregnancies); - pregnancy = pregnancies.MaxBy(hediff => hediff.loadID); - pregnant = true; - break; - - case Configurations.PregnancyType.MultiplePregnancy: - if (Configurations.Debug) Log.Message($"Creating new menstruation pregnancy"); - pregnancy = Hediff_BasePregnancy.Create(Pawn, egg.fertilizer); - pregnant = true; - deadeggs.Add(egg); - break; - - case Configurations.PregnancyType.Biotech: - if (Configurations.Debug) Log.Message($"Creating new biotech pregnancy"); - pregnancy = HediffMaker.MakeHediff(HediffDefOf.PregnantHuman, Pawn); - if(Configurations.EnableBiotechTwins) - pregnancy.TryGetComp().AddNewBaby(Pawn, egg.fertilizer); - ((Hediff_Pregnant)pregnancy).SetParents(Pawn, egg.fertilizer, PregnancyUtility.GetInheritedGeneSet(egg.fertilizer, Pawn)); - Pawn.health.AddHediff(pregnancy); - pregnant = true; - deadeggs.Add(egg); - break; - } - if (pregnancy is Hediff_BasePregnancy rjw_preg) - { - // TODO: advance biotech pregnancy - rjw_preg.p_start_tick -= egg.ticksSinceFertilization / Configurations.CycleAcceleration; - rjw_preg.p_end_tick -= egg.ticksSinceFertilization / Configurations.CycleAcceleration; - } + Log.Error($"Error creating pregnancy in {Pawn}'s womb, father {egg.fertilizer}: {ex}"); + TakeLoosePregnancy(); + deadeggs.Add(egg); } } else - { + { if (Configurations.Debug) { - float implantChance = Configurations.ImplantationChance * ImplantChance * InterspeciesImplantFactor(egg.fertilizer); - Log.Message($"Fertilized egg of {Pawn} failed to implant (chance {implantChance.ToStringPercent()}, father {egg.fertilizer})"); + float interspeciesFactor = InterspeciesImplantFactor(egg.fertilizer); + float implantChance = Configurations.ImplantationChance * ImplantChance * interspeciesFactor; + Log.Message($"Fertilized egg of {Pawn} failed to implant (chance {implantChance.ToStringPercent()}, " + + (interspeciesFactor < 1.0f ? $"interspecies factor {interspeciesFactor.ToStringPercent()}, " : "" ) + + $"father {egg.fertilizer})"); } deadeggs.Add(egg); } } - if (pregnant && - (Configurations.PregnancySource != Configurations.PregnancyType.MultiplePregnancy || !Configurations.EnableHeteroOvularTwins) && - (Configurations.PregnancySource != Configurations.PregnancyType.Biotech || !Configurations.EnableBiotechTwins || !Configurations.EnableHeteroOvularTwins)) + bool clearAllEggs = true; + switch (Configurations.PregnancySource) { - eggs.Clear(); - return true; + case Configurations.PregnancyType.BaseRJW: + clearAllEggs = true; + break; + case Configurations.PregnancyType.MultiplePregnancy: + clearAllEggs = !Configurations.EnableHeteroOvularTwins; + break; + case Configurations.PregnancyType.Biotech: + clearAllEggs = !(Configurations.EnableBiotechTwins && Configurations.EnableHeteroOvularTwins); + break; } + + if (pregnant && clearAllEggs) + eggs.Clear(); else eggs.RemoveAll(egg => deadeggs.Contains(egg)); return pregnant; @@ -1511,7 +1525,7 @@ namespace RJW_Menstruation protected void BleedOut() { // ~1.5 per hour times acceleration - float bledAmount = 0.03f * Configurations.BleedingAmount * Configurations.CycleAcceleration * Rand.Range(0.5f, 1.5f) * SimulationsPerHour; + float bledAmount = 0.03f * Configurations.BleedingAmount * Configurations.CycleAcceleration * Rand.Range(0.5f, 1.5f) * HoursBetweenSimulations; CumIn(Pawn, bledAmount, Translations.Menstrual_Blood, -5.0f, Pawn.RaceProps?.BloodDef ?? ThingDefOf.Filth_Blood); Cum blood = GetNotCum(Translations.Menstrual_Blood); if (blood != null) blood.Color = BloodColor; @@ -1524,8 +1538,8 @@ namespace RJW_Menstruation /// protected void MakeCumFilth(Cum cum, float amount) { - if (Pawn.Map == null) return; - if (amount >= minmakefilthvalue) FilthMaker.TryMakeFilth(Pawn.Position, Pawn.Map, cum.FilthDef, cum.pawn?.LabelShort ?? "Unknown"); + if (Pawn.MapHeld == null) return; + if (amount >= minmakefilthvalue) FilthMaker.TryMakeFilth(Pawn.PositionHeld, Pawn.MapHeld, cum.FilthDef, cum.pawn?.LabelShort ?? "Unknown"); } /// @@ -1552,21 +1566,16 @@ namespace RJW_Menstruation return amount; } absorber.absorbedfluids += amount; - if (absorber.absorbedfluids > absorbable && !Pawn.apparel.IsLocked(absorber)) - { - absorber.def = absorber.DirtyDef; - //absorber.fluidColor = GetCumMixtureColor; - absorber.dirty = true; - } + absorber.CheckDirty(); return 0; } protected float MakeCumFilthMixture(float amount, List cumlabels) { - if (Pawn.Map == null) return 0; + if (Pawn.MapHeld == null) return 0; if (amount >= minmakefilthvalue) { - FilthMaker_Colored.TryMakeFilth(Pawn.Position, Pawn.Map, VariousDefOf.FilthMixture, cumlabels, GetCumMixtureColor, false); + FilthMaker_Colored.TryMakeFilth(Pawn.PositionHeld, Pawn.MapHeld, VariousDefOf.FilthMixture, cumlabels, GetCumMixtureColor, false); } return amount; } @@ -1596,7 +1605,12 @@ namespace RJW_Menstruation hediff.Severity = crampPain * Rand.Range(0.9f, 1.1f); HediffCompProperties_SeverityPerDay Prop = (HediffCompProperties_SeverityPerDay)hediff.TryGetComp().props; Prop.severityPerDay = -hediff.Severity / (currentIntervalTicks / GenDate.TicksPerDay) * Configurations.CycleAcceleration; - Pawn.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(Pawn)); + Pawn.health.AddHediff(hediff, parent.Part); + } + + protected void AdvanceStageTime() + { + curStageTicks += TickInterval * Configurations.CycleAcceleration; } protected virtual void FollicularAction() @@ -1613,13 +1627,12 @@ namespace RJW_Menstruation } else { - curStageTicks += TickInterval * Configurations.CycleAcceleration; + AdvanceStageTime(); if (!estrusflag && curStageTicks > currentIntervalTicks - Props.estrusDaysBeforeOvulation * GenDate.TicksPerDay) { estrusflag = true; SetEstrus(); } - StayCurrentStage(); } } @@ -1627,7 +1640,7 @@ namespace RJW_Menstruation { if (curStageTicks < currentIntervalTicks) { - curStageTicks += TickInterval * Configurations.CycleAcceleration; + AdvanceStageTime(); return; } estrusflag = false; @@ -1642,7 +1655,7 @@ namespace RJW_Menstruation } catch (ArgumentException e) { - Log.Warning($"Invalid litterSizeCurve for {Pawn.def}: {e}"); + Log.WarningOnce($"Invalid litterSizeCurve for {Pawn.def}: {e}", 642201874 + Pawn.thingIDNumber); eggnum = 1f; } eggnum *= ovulationFactor; @@ -1687,21 +1700,19 @@ namespace RJW_Menstruation } else { - curStageTicks += TickInterval * Configurations.CycleAcceleration; - StayCurrentStage(); + AdvanceStageTime(); } } else { - curStageTicks += TickInterval * Configurations.CycleAcceleration; - StayCurrentStage(); + AdvanceStageTime(); } } protected virtual void BleedingAction() { - if (curStageTicks >= currentIntervalTicks) + if (curStageTicks >= currentIntervalTicks || noBleeding) { Hediff hediff = Pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_MenstrualCramp); if (hediff != null && !Pawn.GetMenstruationComps().Any(comp => comp != this && comp.curStage == Stage.Bleeding)) Pawn.health.RemoveHediff(hediff); @@ -1710,15 +1721,13 @@ namespace RJW_Menstruation GoOvulatoryStage(); else { - currentIntervalTicks = totalFollicularTicks - currentIntervalTicks; // I.e., the remaining follicular time equals the total minus the bleeding time elapsed - GoNextStage(Stage.Follicular, false); + GoNextStage(Stage.Follicular, totalFollicularTicks - currentIntervalTicks); // I.e., the remaining follicular time equals the total minus the bleeding time elapsed } } else { if (curStageTicks < currentIntervalTicks / 4) BleedOut(); - curStageTicks += TickInterval * Configurations.CycleAcceleration; - StayCurrentStage(); + AdvanceStageTime(); } } @@ -1731,16 +1740,10 @@ namespace RJW_Menstruation Implant(); } - if (pregnancy != null && Pawn.health.hediffSet.hediffs.Contains(pregnancy)) - { + if (Pregnancy != null) curStageTicks += TickInterval; - StayCurrentStageConst(Stage.Pregnant); - } else - { - if (pregnancy != null) pregnancy = null; GoNextStage(Stage.Recover); - } } protected virtual void RecoverAction() @@ -1762,22 +1765,18 @@ namespace RJW_Menstruation } else { - curStageTicks += TickInterval * Configurations.CycleAcceleration; - StayCurrentStage(); + AdvanceStageTime(); } } protected virtual void InfertileAction() { if (ShouldBeInfertile()) - { - StayCurrentStageConst(Stage.Infertile); - } + return; + else if (IsBreedingSeason()) + GoNextStage(Stage.Follicular); else - { - bool breedingSeason = IsBreedingSeason(); - GoNextStage(breedingSeason ? Stage.Follicular : Stage.Anestrus, breedingSeason); - } + GoNextStage(Stage.Anestrus); } protected virtual void AnestrusAction() @@ -1786,62 +1785,54 @@ namespace RJW_Menstruation { GoFollicularOrBleeding(); } - else - { - StayCurrentStage(); - } } protected virtual void ThoughtCumInside(Pawn cummer) { if (!xxx.is_human(Pawn) || !xxx.is_human(cummer)) return; - if ((cummer.HasQuirk(QuirkUtility.Quirks.Teratophile) != (Pawn.GetStatValue(StatDefOf.PawnBeauty) >= 0)) || - cummer.IsProPregnancy()) + MemoryThoughtHandler cummerMemories = cummer.needs.mood.thoughts.memories; + MemoryThoughtHandler pawnMemories = Pawn.needs.mood.thoughts.memories; + + if (cummer.IsProPregnancy(out Precept preceptm) || (cummer.IsTeratophile() != (Pawn.GetStatValue(StatDefOf.PawnBeauty) >= 0))) { - if (cummer.relations.OpinionOf(Pawn) <= -25) - { - cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideM, Pawn); - } + if (cummer.relations.OpinionOf(Pawn) <= -5) + cummerMemories.TryGainMemory(VariousDefOf.HaterCameInsideM, Pawn); + else if (preceptm != null) + cummerMemories.TryGainMemory(VariousDefOf.CameInsideMIdeo, Pawn, preceptm); else - { - cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideM, Pawn); - } + cummerMemories.TryGainMemory(VariousDefOf.CameInsideM, Pawn); } if (IsDangerDay) { - if (Pawn.IsProPregnancy()) + if (Pawn.IsProPregnancy(out Precept preceptf)) { - Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer); - } - else if (Pawn.relations.OpinionOf(cummer) <= -5) - { - Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.CameInsideF, cummer); - Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.HaterCameInsideFEstrus, cummer); - Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer); - } - else if (Pawn.IsInEstrus() && Pawn.relations.OpinionOf(cummer) < RJWHookupSettings.MinimumRelationshipToHookup) - { - Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.CameInsideF, cummer); - Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFEstrus, cummer); + if (preceptf != null) + { + if (Pawn.relations.OpinionOf(cummer) <= -5) + pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideFIdeo, cummer, preceptf); + else + pawnMemories.TryGainMemory(VariousDefOf.CameInsideFIdeo, cummer, preceptf); + } + else pawnMemories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer); } + else if (Pawn.relations.OpinionOf(cummer) <= -5) + pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer); + else if (Pawn.IsInEstrus() && Pawn.relations.OpinionOf(cummer) < RJWHookupSettings.MinimumRelationshipToHookup) + pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideFEstrus, cummer); else if (!Pawn.relations.DirectRelationExists(PawnRelationDefOf.Spouse, cummer) && !Pawn.relations.DirectRelationExists(PawnRelationDefOf.Fiance, cummer)) { - if (Pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer); - else Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideF, cummer); + if (Pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) pawnMemories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer); + else pawnMemories.TryGainMemory(VariousDefOf.CameInsideF, cummer); } } else { - if (Pawn.IsProPregnancy()) - { - Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer); - } + if (Pawn.IsProPregnancy(out Precept _)) + pawnMemories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer); else if (Pawn.relations.OpinionOf(cummer) <= -5) - { - Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer); - } + pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer); } } @@ -1855,10 +1846,10 @@ namespace RJW_Menstruation TaleRecorder.RecordTale(VariousDefOf.TaleCameInside, new object[] { cummer, Pawn }); } - public void GoNextStage(Stage nextstage, bool calculateHours = true) + public void GoNextStage(Stage nextstage, int? stageTicks = null) { curStageTicks = 0; - if (calculateHours) currentIntervalTicks = PeriodRandomizer(nextstage); + currentIntervalTicks = stageTicks ?? PeriodRandomizer(nextstage); curStage = nextstage; } @@ -1867,16 +1858,6 @@ namespace RJW_Menstruation GoNextStage(Stage.Ovulatory); } - //stage can be interrupted in other reasons - protected void StayCurrentStage() - { - } - - //stage never changes - protected void StayCurrentStageConst(Stage curstage) - { - } - protected void GoFollicularOrBleeding() { if (Props.bleedingIntervalDays == 0 || noBleeding) @@ -1987,7 +1968,7 @@ namespace RJW_Menstruation public int EggsRestoredPerBiosculptor(float yearsWorth) { - return Math.Max(1, (int)((float)RaceCyclesPerYear() * yearsWorth)); + return Math.Max(1, (int)(RaceCyclesPerYear() * yearsWorth * AverageLitterSize())); } public void RestoreEggs(float yearsWorth) @@ -2006,7 +1987,7 @@ namespace RJW_Menstruation public Egg() { fertilized = false; - lifeSpanTicks = (int)(96 * GenDate.TicksPerHour * Configurations.EggLifespanMultiplier); + lifeSpanTicks = (int)(VariousDefOf.HumanVaginaCompProperties.eggLifespanDays * GenDate.TicksPerDay * Configurations.EggLifespanMultiplier); fertilizer = null; ageTicks = 0; } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PeriodicOvulator.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PeriodicOvulator.cs index 017a6ed..eb344c3 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PeriodicOvulator.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PeriodicOvulator.cs @@ -73,10 +73,17 @@ namespace RJW_Menstruation protected override int TicksToNextStage() { - if (curStage == Stage.Anestrus && ticksToNextCycle > 0) return ticksToNextCycle / Configurations.CycleAcceleration; + if (curStage == Stage.Anestrus && ticksToNextCycle > 0) return ticksToNextCycle / Configurations.CycleAcceleration; else return base.TicksToNextStage(); } + protected override void LutealAction() + { + base.LutealAction(); + if (curStage == Stage.Follicular) + GoNextStage(Stage.Anestrus); + } + protected override void BleedingAction() { base.BleedingAction(); @@ -97,13 +104,11 @@ namespace RJW_Menstruation protected override void AnestrusAction() { - if (ticksToNextCycle <= 0) + if (ticksToNextCycle <= 0 && IsBreedingSeason()) { ticksToNextCycle = (int)(averageCycleIntervalTicks * (1 + Rand.Range(-cycleVariability, cycleVariability))); - if (IsBreedingSeason()) GoNextStage(Stage.Follicular); - return; + GoNextStage(Stage.Follicular); } - StayCurrentStage(); } public override void CopyCycleProperties(HediffComp_Menstruation original) diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Pheromones.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Pheromones.cs new file mode 100644 index 0000000..42b2aac --- /dev/null +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Pheromones.cs @@ -0,0 +1,103 @@ + + +using RimWorld; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using Verse; + +namespace RJW_Menstruation +{ + public class CompProperties_Pheromones : HediffCompProperties + { + public float daysToMaxSeverity; + public float range; + + public CompProperties_Pheromones() + { + compClass = typeof(HediffComp_Pheromones); + } + } + + public class HediffComp_Pheromones : HediffComp + { + public CompProperties_Pheromones Props => (CompProperties_Pheromones)props; + public const int emitInterval = GenTicks.TickRareInterval; + public const float emitRatio = (float)emitInterval / GenDate.TicksPerDay; + + public override void CompPostTick(ref float severityAdjustment) + { + try + { + if (!Configurations.EnablePheromones) return; + if (!Pawn.RaceProps.Humanlike && (!Configurations.EnableAnimalCycle || Configurations.AnimalPheromoneEffect <= 0.0f)) return; + if (!Pawn.IsHashIntervalTick(emitInterval)) return; + if (!Pawn.SpawnedOrAnyParentSpawned) return; + + foreach (Pawn pawn in AffectedPawns()) + ApplyEffectToPawn(pawn); + } + catch (Exception ex) + { + Log.Error($"Error when trying to emit pheromones from pawn {Pawn}: {ex}"); + } + } + + protected IEnumerable AffectedPawns() + { + Map mapHeld = Pawn.MapHeld; + if (mapHeld == null) yield break; + foreach (Pawn pawn in mapHeld.mapPawns.AllPawnsSpawned) + { + if (pawn == Pawn) continue; + if (!pawn.RaceProps.Humanlike) continue; + if (Pawn.PositionHeld.InHorDistOf(pawn.PositionHeld, Props.range) && Pawn.GetRoom() == pawn.GetRoom()) + yield return pawn; + } + } + + protected float GetEffectOnPawn(Pawn target) + { + if (target.Suspended || target.Dead) return 0.0f; + if (target.needs?.TryGetNeed(VariousDefOf.SexNeed) == null) return 0.0f; + if (!xxx.can_do_loving(target)) return 0.0f; + if (target.story?.traits.HasTrait(TraitDefOf.Asexual) ?? true) return 0.0f; + float penisEffect; + if (Genital_Helper.has_penis_fertile(target)) penisEffect = 1.0f; + else if (target.gender == Gender.Male) penisEffect = 0.25f; + else return 0.0f; + + BodyDef body = target.RaceProps.body; + if (!PawnCapacityUtility.BodyCanEverDoCapacity(body, PawnCapacityDefOf.Breathing)) return 0.0f; + HediffSet hediffs = target.health.hediffSet; + float breathingEffect = PawnCapacityUtility.CalculateCapacityLevel(hediffs, PawnCapacityDefOf.Breathing); + float noseEffect = 1.0f; + List noses = body.GetPartsWithDef(BodyPartDefOf.Nose); + if (noses.Any()) // if the body doesn't have a nose but still breathes, then let it be affected + noseEffect = noses.Average(nose => PawnCapacityUtility.CalculatePartEfficiency(hediffs, nose)); + + return penisEffect * breathingEffect * noseEffect; + } + + protected void ApplyEffectToPawn(Pawn target) + { + float intensity = GetEffectOnPawn(target); + if (intensity <= 0.0f) return; + Hediff pheromones = target.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_AffectedByPheromones); + float decay = VariousDefOf.Hediff_AffectedByPheromones.CompProps().severityPerDay; + float raiseSeverityPerDay = intensity / Props.daysToMaxSeverity - decay; // Desired increase plus enough to overcome pheromone decay + if (!Pawn.RaceProps.Humanlike) raiseSeverityPerDay *= Configurations.AnimalPheromoneEffect; + float amountToApply = emitRatio * raiseSeverityPerDay; + if (pheromones != null) + pheromones.Severity += amountToApply; + else + { + pheromones = HediffMaker.MakeHediff(VariousDefOf.Hediff_AffectedByPheromones, target); + pheromones.Severity = amountToApply; + target.health.AddHediff(pheromones); + } + return; + } + } +} diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PregeneratedBabies.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PregeneratedBabies.cs index ce0efe9..79c13a9 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PregeneratedBabies.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PregeneratedBabies.cs @@ -179,7 +179,7 @@ namespace RJW_Menstruation public static IEnumerable Transpiler(IEnumerable instructions) { if (birtherThing < 0) throw new InvalidOperationException("Could not locate index of birtherThing"); - if (GeneratePawn == null || GeneratePawn.ReturnType != typeof(Pawn)) throw new InvalidOperationException("GeneratePawn not found"); + if (GeneratePawn?.ReturnType != typeof(Pawn)) throw new InvalidOperationException("GeneratePawn not found"); foreach (CodeInstruction instruction in instructions) { if (instruction.Calls(GeneratePawn)) @@ -233,7 +233,7 @@ namespace RJW_Menstruation new Type[] {typeof(OutcomeChance), typeof(float), typeof(Precept_Ritual), typeof(List), typeof(Pawn), typeof(Thing), typeof(Pawn), typeof(Pawn), typeof(LordJob_Ritual), typeof(RitualRoleAssignments)}); public static IEnumerable Transpiler(IEnumerable instructions) { - if (ApplyBirthOutcome == null || ApplyBirthOutcome.ReturnType != typeof(Thing)) throw new InvalidOperationException("ApplyBirthOutcome not found"); + if (ApplyBirthOutcome?.ReturnType != typeof(Thing)) throw new InvalidOperationException("ApplyBirthOutcome not found"); foreach (CodeInstruction instruction in instructions) { if (instruction.Calls(ApplyBirthOutcome)) @@ -283,8 +283,8 @@ namespace RJW_Menstruation new Type[] { typeof(OutcomeChance), typeof(float), typeof(Precept_Ritual), typeof(List), typeof(Pawn), typeof(Thing), typeof(Pawn), typeof(Pawn), typeof(LordJob_Ritual), typeof(RitualRoleAssignments) }); public static IEnumerable Transpiler(IEnumerable instructions) { - if (ApplyBirthOutcome == null || ApplyBirthOutcome.ReturnType != typeof(Thing)) throw new InvalidOperationException("ApplyBirthOutcome not found"); - foreach (var instruction in instructions) + if (ApplyBirthOutcome?.ReturnType != typeof(Thing)) throw new InvalidOperationException("ApplyBirthOutcome not found"); + foreach (CodeInstruction instruction in instructions) { if (instruction.Calls(ApplyBirthOutcome)) yield return CodeInstruction.Call(typeof(Ritual_ChildBirth_Apply_Patch), nameof(Ritual_ChildBirth_Apply_Patch.ApplyBirthLoop)); diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs index c3cd7e4..75c796f 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Diagnostics.Eventing.Reader; using System.Linq; +using System.Text; using UnityEngine; using Verse; using Verse.AI; @@ -21,7 +22,7 @@ namespace RJW_Menstruation public static IEnumerable GetMenstruationComps(this Pawn pawn) { - List hedifflist = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn))?.FindAll(h => VariousDefOf.AllVaginas.Contains(h.def)); + List hedifflist = pawn.health.hediffSet.hediffs.FindAll(h => VariousDefOf.AllVaginas.Contains(h.def)); if (hedifflist == null) yield break; foreach (Hediff hediff in hedifflist) { @@ -62,17 +63,7 @@ namespace RJW_Menstruation public static HediffComp_Anus GetAnusComp(this Pawn pawn) { - List hedifflist = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn))?.FindAll((Hediff h) => h.def.defName.ToLower().Contains("anus")); - HediffComp_Anus result; - if (!hedifflist.NullOrEmpty()) - { - foreach (Hediff h in hedifflist) - { - result = h.TryGetComp(); - if (result != null) return result; - } - } - return null; + return pawn.health.hediffSet.hediffs.FirstOrDefault((Hediff h) => VariousDefOf.AllAnuses.Contains(h.def))?.TryGetComp(); } [Obsolete("This method is obsolete and can cause ambiguity. Use GetMenstruationCompFromVagina or GetMenstruationCompFromPregnancy instead.", true)] @@ -114,15 +105,17 @@ namespace RJW_Menstruation public static Texture2D GetPregnancyIcon(this HediffComp_Menstruation comp, Hediff hediff) { - if (hediff is Hediff_MechanoidPregnancy) - return ContentFinder.Get(("Womb/Mechanoid_Fluid"), true); - float gestationProgress = comp.StageProgress; ThingDef babydef; int babycount; HediffComp_PregeneratedBabies babiescomp = hediff?.TryGetComp(); - if (hediff is Hediff_BasePregnancy preg) + if (hediff is Hediff_MechanoidPregnancy) + { + babydef = VariousDefOf.Scyther; + babycount = 1; + } + else if (hediff is Hediff_BasePregnancy preg) { babydef = preg.babies?.FirstOrDefault()?.def ?? ThingDefOf.Human; babycount = preg.babies?.Count ?? 1; @@ -141,11 +134,6 @@ namespace RJW_Menstruation string fetustex = babydef.GetModExtension()?.fetusTexPath ?? "Fetus/Fetus_Default"; string icon; if (gestationProgress < 0.2f) icon = comp.WombTex + "_Implanted"; - else if (gestationProgress < 0.3f) - { - if (babydef.race?.FleshType == FleshTypeDefOf.Insectoid) icon = "Fetus/Insects/Insect_Early00"; - else icon = "Fetus/Fetus_Early00"; - } else if (gestationProgress < 0.4f) icon = fetustex + "00"; else if (gestationProgress < 0.5f) icon = fetustex + "01"; else if (gestationProgress < 0.6f) icon = fetustex + "02"; @@ -168,6 +156,12 @@ namespace RJW_Menstruation public static Texture2D GetCumIcon(this HediffComp_Menstruation comp) { + Pawn pawn = comp.Pawn; + + List insectEggs = new List(); + comp.Pawn.health.hediffSet.GetHediffs(ref insectEggs); + if (!insectEggs.NullOrEmpty() && insectEggs.Sum(hediff => hediff.eggssize) > 1.0f) return null; // same logic as "Stuffed" in GetInsectEggedIcon + string icon = comp.WombTex; float cumpercent = comp.TotalCumPercent; if (cumpercent < 0.001f) return ContentFinder.Get("Womb/Empty", true); @@ -198,13 +192,39 @@ namespace RJW_Menstruation comp.Pawn.health.hediffSet.GetHediffs(ref hediffs); if (hediffs.NullOrEmpty()) return null; - string path = "Womb/Insect_Egged/"; - if (hediffs.Max(hediff => hediff.eggssize) > 0.3) // The threshold for "large egg" in the debug + string path = "Womb/Insect_Egged/Womb_Egged_"; + + float sumSize = hediffs.Sum(hediff => hediff.eggssize); + if (sumSize > 1.0f) { - if (hediffs.Count == 1) return ContentFinder.Get(path + "Womb_Egged_Large", true); - else return ContentFinder.Get(path + "Womb_Egged_ManyMixed", true); + path += "Stuffed_"; + if (sumSize < 1.0f) path += "00"; + else if (sumSize < 2.0f) path += "01"; + else if (sumSize < 2.5f) path += "02"; + else if (sumSize < 3.0f) path += "03"; + else path += "04"; } - return ContentFinder.Get(path + "Womb_Egged_" + hediffs.Count(), false) ?? ContentFinder.Get(path + "Womb_Egged_Many", true); + else + { + if(hediffs.Max(hediff => hediff.eggssize) > 0.3f) // The threshold for "large egg" in the debug + { + path += "L"; + if (hediffs.Count == 1) path += "00"; + else if (hediffs.Count == 2) path += "01"; + else path += "02"; + } + else + { + path += "S"; + if (hediffs.Count == 1) path += "00"; + else if (hediffs.Count == 2) path += "01"; + else if (hediffs.Count == 3) path += "02"; + else if (hediffs.Count == 4) path += "03"; + else path += "04"; + } + } + + return ContentFinder.Get(path); } public static Texture2D GetWombIcon(this HediffComp_Menstruation comp) { @@ -316,8 +336,8 @@ namespace RJW_Menstruation public static Texture2D GetAnalIcon(this Pawn pawn, bool drawOrigin = false) { - Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllAnuses.Contains(h.def)) ?? - Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => h.def.defName.ToLower().Contains("anus")); + Hediff hediff = pawn.health.hediffSet.hediffs.FirstOrDefault(h => VariousDefOf.AllAnuses.Contains(h.def)) ?? + pawn.health.hediffSet.hediffs.FirstOrDefault(h => h.def.defName.ToLower().Contains("anus")); if (hediff == null) return ContentFinder.Get(("Genitals/Anal00"), true); string icon; @@ -373,6 +393,17 @@ namespace RJW_Menstruation else return variability; } + public static bool ShouldCycle(this Pawn pawn) + { + if (!Configurations.EnableAnimalCycle && pawn.IsAnimal()) return false; + if (pawn.GetComp() != null) return false; + if (pawn.RaceHasOviPregnancy()) return false; + if (ModsConfig.BiotechActive && pawn.genes != null && + pawn.genes.GenesListForReading.Select(gene => gene.def).Intersect(VariousDefOf.EggLayerGenes).Any()) return false; + + return true; + } + public static bool IsInEstrus(this Pawn pawn, bool visible = true) { if (pawn.Dead) return false; @@ -407,20 +438,21 @@ namespace RJW_Menstruation return false; } - public static bool IsProPregnancy(this Pawn pawn) + public static bool IsProPregnancy(this Pawn pawn, out Precept precept) { - if (pawn.HasQuirk(QuirkUtility.Quirks.Breeder) || - pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish)) - return true; + precept = null; Ideo ideo = pawn.Ideo; - if (ideo == null || VariousDefOf.Pregnancy_Elevated == null) return false; - if (ideo.HasPrecept(VariousDefOf.Pregnancy_Elevated) || - ideo.HasPrecept(VariousDefOf.Pregnancy_Holy) || - ideo.HasPrecept(VariousDefOf.Pregnancy_Required)) - return true; + if (ideo != null) + { + precept = ideo.GetPrecept(VariousDefOf.Pregnancy_Required) ?? + ideo.GetPrecept(VariousDefOf.Pregnancy_Holy) ?? + ideo.GetPrecept(VariousDefOf.Pregnancy_Elevated); + } + if (precept != null) return true; - return false; + else return pawn.IsBreeder() || + pawn.HasImpregnationFetish(); } public static float DamagePants(this Pawn pawn, float fluidAmount) diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs index 0b5d0c5..61ce541 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs @@ -23,13 +23,14 @@ namespace RJW_Menstruation { if (is_discovered || !xxx.is_human(pawn) || - pawn.HasQuirk(QuirkUtility.Quirks.Breeder) || (pawn.Ideo?.HasPrecept(VariousDefOf.Pregnancy_Required) ?? false) || + pawn.IsBreeder() || (pawn.Ideo?.HasPrecept(VariousDefOf.Pregnancy_Required) ?? false) || (pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Spouse) || x.def.Equals(PawnRelationDefOf.Fiance))) != null) return; - if (pawn.IsProPregnancy() || pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Lover)) != null) + if (pawn.IsProPregnancy(out Precept precept) || pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Lover)) != null) { - pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.UnwantedPregnancyMild); + if (precept != null) + pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.UnwantedPregnancyMild); } else { diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Biotech_Patch.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Biotech_Patch.cs index 4bd3cef..eb8777a 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Biotech_Patch.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Biotech_Patch.cs @@ -155,7 +155,7 @@ namespace RJW_Menstruation public static IEnumerable Transpiler(IEnumerable instructions) { - if (GetPregnancyHediff == null || GetPregnancyHediff.ReturnType != typeof(Hediff)) throw new InvalidOperationException("GetPregnancyHediff not found"); + if (GetPregnancyHediff?.ReturnType != typeof(Hediff)) throw new InvalidOperationException("GetPregnancyHediff not found"); if (Get_Attitude == null || Nullable.GetUnderlyingType(Get_Attitude.ReturnType) != typeof(PregnancyAttitude)) throw new InvalidOperationException("get_Attitude not found"); foreach (CodeInstruction instruction in instructions) { @@ -192,23 +192,6 @@ namespace RJW_Menstruation } } - [HarmonyPatch(typeof(Pawn_GeneTracker), "AddGene", new Type[] { typeof(Gene), typeof(bool) })] - public class AddGene_Patch - { - public static bool Prefix(ref Gene __result, Gene gene, Pawn ___pawn) - { - if (!VariousDefOf.WombGenes.Contains(gene.def)) return true; - bool keepGene; - if (PawnGenerator.IsBeingGenerated(___pawn)) - // During pawn generation, the vagina hediff doesn't exist yet, so use gender to decide instead - // Not the most accurate, but close enough - keepGene = ___pawn.gender == Gender.Female; - else keepGene = ___pawn.GetMenstruationComps().Any(); - if (!keepGene) __result = null; - return keepGene; - } - } - [HarmonyPatch(typeof(Pawn_GeneTracker), "Notify_GenesChanged")] public class Notify_GenesChanged_Patch { @@ -219,6 +202,17 @@ namespace RJW_Menstruation } } + [HarmonyPatch(typeof(StatPart_FertilityByGenderAge), "AgeFactor")] + public class AgeFactor_Patch + { + public static void Postfix(ref float __result, Pawn pawn) + { + if (__result <= 0.0f) return; + if (pawn.GetMenstruationComps().Any(comp => comp.CalculatingOvulationChance)) + __result = 1.0f; + } + } + //[HarmonyPatch(typeof(ChildcareUtility), nameof(ChildcareUtility.SuckleFromLactatingPawn))] //public class GreedyConsume_Patch //{ diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Gizmo_Patch.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Gizmo_Patch.cs index 86ef4d9..b0ab1a3 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Gizmo_Patch.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Gizmo_Patch.cs @@ -43,6 +43,8 @@ namespace RJW_Menstruation private static Gizmo CreateGizmo_WombStatus(Pawn pawn, HediffComp_Menstruation comp) { + if (!comp.loaded) + comp.Initialize(); Texture2D icon, icon_overlay; StringBuilder description = new StringBuilder(); if (Configurations.Debug) diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Pawn_Patch.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Pawn_Patch.cs index 616f591..98e5997 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Pawn_Patch.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Pawn_Patch.cs @@ -1,5 +1,6 @@ using HarmonyLib; using RimWorld; +using rjw; using System; using System.Collections.Generic; using System.Linq; @@ -36,10 +37,6 @@ namespace RJW_Menstruation if (t.Pawn == pawn && pawn.HasMenstruationComp()) opts.AddDistinct(MakeSelfMenu(pawn, t)); break; } - - - - } public static FloatMenuOption MakeSelfMenu(Pawn pawn, LocalTargetInfo target) @@ -53,60 +50,28 @@ namespace RJW_Menstruation } } - //[HarmonyPatch(typeof(HealthCardUtility), "DrawHediffListing")] - //public class DrawHediffListing_Patch - //{ - // public const float buttonWidth = 80f; - // public const float buttonHeight = 20f; - // - // public static void Postfix(Rect rect, Pawn pawn, bool showBloodLoss) - // { - // if (Configurations.EnableButtonInHT && pawn.HasMenstruationComp()) - // { - // Rect buttonrect = new Rect(rect.xMax - buttonWidth, rect.yMax - buttonHeight, buttonWidth, buttonHeight); - // if (Widgets.ButtonText(buttonrect, "Status")) - // { - // Dialog_WombStatus.ToggleWindow(pawn,pawn.GetMenstruationComp()); - // } - // } - // - // - // } - //} - - [HarmonyPatch(typeof(HealthCardUtility), "DrawHediffRow")] - public class DrawHediffRow_Patch + [HarmonyPatch(typeof(HealthCardUtility), "DrawOverviewTab")] + public class DrawOverviewTab_Patch { public const float buttonWidth = 50f; public const float buttonHeight = 20f; - private static HediffComp_Menstruation GetFirstMenstruation(IEnumerable diffs) + public static void Prefix(Rect leftRect, Pawn pawn, float curY) { - foreach (Hediff diff in diffs) + if (Configurations.EnableButtonInHT && pawn.ShowStatus() && pawn.ShouldCycle()) { - HediffComp_Menstruation comp = diff.GetMenstruationCompFromVagina(); - if (comp != null) return comp; - } - return null; - } - - public static void Prefix(Rect rect, Pawn pawn, IEnumerable diffs, ref float curY) - { - if (Configurations.EnableButtonInHT && pawn.ShowStatus()) - { - HediffComp_Menstruation comp = GetFirstMenstruation(diffs); + HediffComp_Menstruation comp = pawn.GetFirstMenstruationComp(); if (comp != null) { - Rect buttonrect = new Rect((rect.xMax) / 2 - 5f, curY + 2f, buttonWidth, buttonHeight); - if (Widgets.ButtonText(buttonrect, Translations.Button_HealthTab)) + Text.Font = GameFont.Tiny; + Rect buttonRect = new Rect(leftRect.xMax - buttonWidth - 8f, curY + 4f, buttonWidth, buttonHeight); + if (Widgets.ButtonText(buttonRect, Translations.Button_HealthTab)) { Dialog_WombStatus.ToggleWindow(pawn, comp); } } } - } - } [HarmonyPatch(typeof(CompBiosculpterPod), nameof(CompBiosculpterPod.CannotUseNowPawnCycleReason), new Type[] { typeof(Pawn), typeof(Pawn), typeof(CompBiosculpterPod_Cycle), typeof(bool) })] @@ -120,4 +85,28 @@ namespace RJW_Menstruation __result = Translations.CannotNoWomb; } } + + // Doesn't cover everything, but at least it'll get the auto equip + [HarmonyPatch(typeof(Apparel), nameof(Apparel.PawnCanWear))] + public class PawnCanWear_Patch + { + public static void Postfix(ref bool __result, Apparel __instance, Pawn pawn) + { + if (__result && __instance is Absorber) + { + __result = pawn.ShouldCycle() && pawn.GetMenstruationComps().Any(); + } + } + } + + // Might cause issues when it comes to caravans + //[HarmonyPatch(typeof(JobGiver_OptimizeApparel), nameof(JobGiver_OptimizeApparel.ApparelScoreRaw))] + //public class ApparelScoreRaw_Patch + //{ + // public static void Postfix(ref float __result, Pawn pawn, Apparel ap) + // { + // if (__result > 0f && ap is Absorber && !pawn.GetMenstruationComps().Any(comp => comp.TotalCum > 0)) + // __result = -10f; + // } + //} } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs index 57a6b9d..eb776e3 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs @@ -24,14 +24,14 @@ namespace RJW_Menstruation if (sextype != xxx.rjwSextype.Vaginal && sextype != xxx.rjwSextype.DoublePenetration) return true; - if (partner.IsAnimal() && !Configurations.EnableAnimalCycle) return true; + if (!partner.ShouldCycle()) return true; if (!InteractionCanCausePregnancy(props)) return false; List pawnparts = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn)); HediffComp_Menstruation comp; - if (pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish) || partner.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish) || partner.IsInEstrus()) + if (pawn.HasImpregnationFetish() || partner.HasImpregnationFetish() || partner.IsInEstrus()) comp = partner.GetFertileMenstruationComp(); else comp = partner.GetRandomMenstruationComp(); if (comp == null) return true; @@ -100,9 +100,9 @@ namespace RJW_Menstruation { public static bool Prefix(Pawn pawn, Pawn partner) // partner has vagina { - if (partner.IsAnimal() && !Configurations.EnableAnimalCycle) return true; + if (!partner.ShouldCycle()) return true; HediffComp_Menstruation comp; - if (pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish) || partner.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish) || partner.IsInEstrus()) + if (pawn.HasImpregnationFetish() || partner.HasImpregnationFetish() || partner.IsInEstrus()) comp = partner.GetFertileMenstruationComp(); else comp = partner.GetRandomMenstruationComp(); if (comp == null) @@ -125,14 +125,14 @@ namespace RJW_Menstruation { private static bool PregnancyBlocksImpregnation(this Pawn pawn, bool _) { - if (!Configurations.EnableAnimalCycle && pawn.IsAnimal()) return pawn.IsPregnant(); + if (!pawn.ShouldCycle()) return pawn.IsPregnant(); else if (pawn.GetMenstruationComps().Any()) return false; else return pawn.IsPregnant(); } private static readonly MethodInfo IsPregnant = AccessTools.Method(typeof(PawnExtensions), nameof(PawnExtensions.IsPregnant), new System.Type[] { typeof(Pawn), typeof(bool) }); public static IEnumerable Transpiler(IEnumerable instructions) { - if (IsPregnant == null || IsPregnant.ReturnType != typeof(bool)) throw new System.InvalidOperationException("IsPregnant not found"); + if (IsPregnant?.ReturnType != typeof(bool)) throw new System.InvalidOperationException("IsPregnant not found"); foreach (CodeInstruction instruction in instructions) { if (instruction.Calls(IsPregnant)) @@ -179,7 +179,7 @@ namespace RJW_Menstruation { // Awkward, but it'll have to do Pawn pawn = props.pawn; - if (__result == 0 || !pawn.HasQuirk(QuirkUtility.Quirks.ImpregnationFetish) || !props.hasPartner()) return; + if (__result == 0 || !pawn.HasImpregnationFetish() || !props.hasPartner()) return; // Check if the existing code would have added the count Pawn partner = props.partner; @@ -238,7 +238,7 @@ namespace RJW_Menstruation private static readonly FieldInfo MinimumFuckabilityToHookup = AccessTools.Field(typeof(RJWHookupSettings), nameof(RJWHookupSettings.MinimumFuckabilityToHookup)); public static IEnumerable Transpiler(IEnumerable instructions) { - if (MinimumFuckabilityToHookup == null || MinimumFuckabilityToHookup.FieldType != typeof(float)) throw new System.InvalidOperationException("MinimumFuckabilityToHookup not found"); + if (MinimumFuckabilityToHookup?.FieldType != typeof(float)) throw new System.InvalidOperationException("MinimumFuckabilityToHookup not found"); bool first_fuckability = true; foreach (CodeInstruction instruction in instructions) { @@ -274,8 +274,8 @@ namespace RJW_Menstruation private static readonly FieldInfo MinimumRelationshipToHookup = AccessTools.Field(typeof(RJWHookupSettings), nameof(RJWHookupSettings.MinimumRelationshipToHookup)); public static IEnumerable Transpiler(IEnumerable instructions) { - if (MinimumAttractivenessToHookup == null || MinimumAttractivenessToHookup.FieldType != typeof(float)) throw new System.InvalidOperationException("MinimumAttractivenessToHookup not found"); - if (MinimumRelationshipToHookup == null || MinimumRelationshipToHookup.FieldType != typeof(float)) throw new System.InvalidOperationException("MinimumRelationshipToHookup not found"); + if (MinimumAttractivenessToHookup?.FieldType != typeof(float)) throw new System.InvalidOperationException("MinimumAttractivenessToHookup not found"); + if (MinimumRelationshipToHookup?.FieldType != typeof(float)) throw new System.InvalidOperationException("MinimumRelationshipToHookup not found"); LocalBuilder pawn_index = null; // Like in the last one, we switch the arguments around for the second load bool first_attractiveness = true; @@ -342,10 +342,12 @@ namespace RJW_Menstruation { if (!pawn.IsHashIntervalTick(__instance.ticks_between_thrusts)) return; xxx.rjwSextype sextype = __instance.Sexprops.sexType; - if (!(target is Pawn partner) || pawn == partner) return; + if (!(target is Pawn partner)) return; if (sextype != xxx.rjwSextype.Vaginal && sextype != xxx.rjwSextype.DoublePenetration) return; if (__instance.Sexprops.usedCondom) return; + if (AndroidsCompatibility.IsAndroid(pawn)) return; if (!Impregnate_Patch.InteractionCanCausePregnancy(__instance.Sexprops)) return; + if (!partner.ShouldCycle()) return; // Archotech penises have more control. Or something. CompHediffBodyPart penisComp = pawn.GetGenitalsList()?.Find(genital => (genital as Hediff_PartBaseNatural)?.def.defName.ToLower().Contains("penis") ?? false)?.TryGetComp(); @@ -372,26 +374,14 @@ namespace RJW_Menstruation } } - [HarmonyPatch(typeof(PawnCapacityWorker_Fertility), nameof(PawnCapacityWorker_Fertility.CalculateCapacityLevel))] - public static class PawnCapacityWorker_Fertility_Patch + [HarmonyPatch(typeof(PawnCapacityWorker_Fertility), "CalculateAgeImpact")] + public static class PawnCapacityWorker_Fertility_Age_Patch { - private static float GetFertilityStatOrOne(Thing thing, StatDef stat, bool applyPostProcess, int cacheStaleAfterTicks) + public static void Postfix(ref float __result, Pawn pawn) { - Pawn pawn = (Pawn)thing; - if (pawn.GetMenstruationComps().Any(comp => comp.calculatingOvulationChance)) - return 1.0f; - else return thing.GetStatValue(stat, applyPostProcess, cacheStaleAfterTicks); - } - private static readonly MethodInfo GetStatValue = AccessTools.Method(typeof(StatExtension), "GetStatValue", new System.Type[] { typeof(Thing), typeof(StatDef), typeof(bool), typeof(int) }); - public static IEnumerable Transpiler(IEnumerable instructions) - { - if (GetStatValue == null || GetStatValue.ReturnType != typeof(float)) throw new System.InvalidOperationException("GetStatValue not found"); - foreach (CodeInstruction instruction in instructions) - { - if (instruction.Calls(GetStatValue)) - yield return CodeInstruction.Call(typeof(PawnCapacityWorker_Fertility_Patch), nameof(GetFertilityStatOrOne)); - else yield return instruction; - } + if (__result <= 0.0f) return; + if (pawn.GetMenstruationComps().Any(comp => comp.CalculatingOvulationChance)) + __result = 1.0f; } } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/QuirkUtility.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/QuirkUtility.cs index c8c2352..409d3d7 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/QuirkUtility.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/QuirkUtility.cs @@ -6,14 +6,14 @@ namespace RJW_Menstruation public static class QuirkUtility { // All quirks used in Menstruation - public enum Quirks + private enum Quirks { Breeder, ImpregnationFetish, Messy, Teratophile, } - public static bool HasQuirk(this Pawn pawn, Quirks quirk) + private static bool HasQuirk(Pawn pawn, Quirks quirk) { switch (quirk) { @@ -29,5 +29,9 @@ namespace RJW_Menstruation return false; } } + public static bool IsBreeder(this Pawn pawn) => HasQuirk(pawn, Quirks.Breeder); + public static bool HasImpregnationFetish(this Pawn pawn) => HasQuirk(pawn, Quirks.ImpregnationFetish); + public static bool IsMessy(this Pawn pawn) => HasQuirk(pawn, Quirks.Messy); + public static bool IsTeratophile(this Pawn pawn) => HasQuirk(pawn, Quirks.Teratophile); } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj b/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj index f2f1834..0c4aa45 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj @@ -69,6 +69,7 @@ + diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/TextureCache.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/TextureCache.cs index 4c9c591..2e3d6be 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/TextureCache.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/TextureCache.cs @@ -89,9 +89,6 @@ namespace RJW_Menstruation } public static readonly Texture2D FertChanceTex = SolidColorMaterials.NewSolidColorTexture(new Color(1f, 1f, 1f, 0.4f)); - public static readonly Texture2D GatherCum_Bucket = ContentFinder.Get("UI/Icon/ToBucket"); - public static readonly Texture2D GatherCum_Pussy = ContentFinder.Get("UI/Icon/ToPussy"); - private static Texture2D milktexturecache = SolidColorMaterials.NewSolidColorTexture(0.992f, 1.0f, 0.960f, 1.0f); private static Texture2D ovulatorytexturecache = SolidColorMaterials.NewSolidColorTexture(0.686f, 0.062f, 0.698f, 1.0f); private static Texture2D bleedingtexturecache = SolidColorMaterials.NewSolidColorTexture(0.415f, 0.0f, 0.003f, 1.0f); diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Things.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Things.cs index 5e4dd91..cfee336 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Things.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Things.cs @@ -1,6 +1,7 @@ using RimWorld; using rjw; using System.Collections.Generic; +using System.Text; using System.Xml; using UnityEngine; using Verse; @@ -186,6 +187,7 @@ namespace RJW_Menstruation } public class AbsorberModExtension : DefModExtension { + public float passiveAbsorptionPerHour = 0.1f; public bool leakAfterDirty = false; public bool effectsAfterDirty = false; public ThingDef dirtyDef = null; @@ -198,7 +200,7 @@ namespace RJW_Menstruation public float absorbedfluids = 0; public bool dirty = false; public int wearTicks = 0; - protected virtual float PassiveAbsorptionPerHour => 0.1f; + public virtual float PassiveAbsorptionPerHour => def.GetModExtension().passiveAbsorptionPerHour; public virtual bool LeakAfterDirty => def.GetModExtension().leakAfterDirty; public virtual bool EffectAfterDirty => def.GetModExtension().effectsAfterDirty; public virtual ThingDef DirtyDef => def.GetModExtension().dirtyDef; @@ -211,9 +213,25 @@ namespace RJW_Menstruation public virtual void WearEffect(int tickInterval) { absorbedfluids += PassiveAbsorptionPerHour * tickInterval / GenDate.TicksPerHour; + CheckDirty(); if (dirty) wearTicks += tickInterval; } + public void CheckDirty() + { + if (absorbedfluids > this.GetStatValue(VariousDefOf.MaxAbsorbable) && !(Wearer?.apparel?.IsLocked(this) ?? false)) + { + def = DirtyDef; + dirty = true; + OutfitForcedHandler forcedHandler = Wearer.outfits?.forcedHandler; + if (forcedHandler?.IsForced(this) ?? false) + forcedHandler.SetForced(this, false); + if (!def.equippedStatOffsets.NullOrEmpty()) + Wearer.health.capacities.Notify_CapacityLevelsDirty(); + Wearer.apparel.Notify_ApparelChanged(); + } + } + public override Color DrawColorTwo => fluidColor; public override void ExposeData() @@ -231,11 +249,26 @@ namespace RJW_Menstruation Scribe_Values.Look(ref fluidColor, "fluidColor", Color.white); } + public override string DescriptionDetailed + { + get + { + StringBuilder text = new StringBuilder(base.DescriptionDetailed); + text.AppendLine(); + text.Append(Translations.Description_Absorbed); + text.Append(": "); + text.Append(absorbedfluids.ToStringDecimalIfSmall()); + text.Append("/"); + text.Append(this.GetStatValue(VariousDefOf.MaxAbsorbable).ToStringDecimalIfSmall()); + text.Append("ml"); + + return text.ToString(); + } + } } public class Absorber_Tampon : Absorber { - protected override float PassiveAbsorptionPerHour => 0.5f; public override void DirtyEffect(int tickInterval) { diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs index dd2982f..6c511cc 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs @@ -44,6 +44,7 @@ namespace RJW_Menstruation public static readonly string Dialog_WombInfo08 = "Dialog_WombInfo08".Translate(); public static readonly string Dialog_WombInfo09 = "Dialog_WombInfo09".Translate(); public static readonly string Dialog_WombInfo10 = "Dialog_WombInfo10".Translate(); + public static readonly string Description_Absorbed = "Description_Absorbed".Translate(); public static readonly string Option1_Label_1 = "Option1_Label_1".Translate(); @@ -79,6 +80,10 @@ namespace RJW_Menstruation public static readonly string Option11_Desc_4 = "Option11_Desc_4".Translate(); public static readonly string Option12_Label = "Option12_Label".Translate(); public static readonly string Option12_Desc = "Option12_Desc".Translate(); + public static readonly string Option_EnablePheromones_Label = "Option_EnablePheromones_Label".Translate(); + public static readonly string Option_EnablePheromones_Desc = "Option_EnablePheromones_Desc".Translate(); + public static readonly string Option_AnimalPheromoneEffect_Label = "Option_AnimalPheromoneEffect_Label".Translate(); + public static readonly string Option_AnimalPheromoneEffect_Desc = "Option_AnimalPheromoneEffect_Desc".Translate(); public static readonly string Option13_Label = "Option13_Label".Translate(); public static readonly string Option13_Desc = "Option13_Desc".Translate(); public static readonly string Option14_Label = "Option14_Label".Translate(); diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs index db91411..ae2cb4a 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs @@ -86,7 +86,7 @@ namespace RJW_Menstruation { res = 0.0f; } - if (pawn.HasQuirk(QuirkUtility.Quirks.Messy)) res *= Rand.Range(4.0f, 8.0f); + if (pawn.IsMessy()) res *= Rand.Range(4.0f, 8.0f); return res; } @@ -95,16 +95,7 @@ namespace RJW_Menstruation public static HediffComp_Breast GetBreastComp(this Pawn pawn) { - List hedifflist = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_breastsBPR(pawn))?.FindAll(h => VariousDefOf.AllBreasts.Contains(h.def)); - if (hedifflist.NullOrEmpty()) hedifflist = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_uddersBPR(pawn))?.FindAll(h => VariousDefOf.AllBreasts.Contains(h.def)); - if (hedifflist.NullOrEmpty()) return null; - HediffComp_Breast result; - foreach (Hediff h in hedifflist) - { - result = h.TryGetComp(); - if (result != null) return result; - } - return null; + return pawn.health.hediffSet.hediffs.FirstOrDefault((Hediff h) => VariousDefOf.AllBreasts.Contains(h.def))?.TryGetComp(); } public static HediffComp_Breast GetBreastComp(this Hediff hediff) @@ -192,8 +183,7 @@ namespace RJW_Menstruation public static void DrawBreastIcon(this Pawn pawn, Rect rect) { - Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_breastsBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def)) ?? - Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_uddersBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def)); + Hediff hediff = pawn.health.hediffSet.hediffs.FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def)); Texture2D breast, nipple, areola; if (hediff != null) { @@ -351,20 +341,19 @@ namespace RJW_Menstruation public static string GetVaginaLabel(this Pawn pawn) { - Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn)).Find(h => VariousDefOf.AllVaginas.Contains(h.def)); + Hediff hediff = pawn.health.hediffSet.hediffs.Find(h => VariousDefOf.AllVaginas.Contains(h.def)); return hediff.LabelBase.CapitalizeFirst() + "\n(" + hediff.LabelInBrackets + ")" + "\n" + xxx.CountOfSex.LabelCap.CapitalizeFirst() + ": " + pawn.records.GetAsInt(xxx.CountOfSex); } public static string GetAnusLabel(this Pawn pawn) { - Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllAnuses.Contains(h.def)) ?? + Hediff hediff = pawn.health.hediffSet.hediffs.FirstOrDefault(h => VariousDefOf.AllAnuses.Contains(h.def)) ?? Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).FirstOrDefault(h => h.def.defName.ToLower().Contains("anus")); if (hediff != null) return hediff.LabelBase.CapitalizeFirst() + "\n(" + hediff.LabelInBrackets + ")"; else return ""; } public static string GetBreastLabel(this Pawn pawn) { - Hediff hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_breastsBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def)) ?? - Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_uddersBPR(pawn)).FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def)); + Hediff hediff = pawn.health.hediffSet.hediffs.FirstOrDefault(h => VariousDefOf.AllBreasts.Contains(h.def)); if (hediff != null) return hediff.LabelBase.CapitalizeFirst() + "\n(" + hediff.LabelInBrackets + ")"; else return ""; } @@ -416,7 +405,7 @@ namespace RJW_Menstruation { Pawn res = pawn.GetFather(); if (res != null) return res; - else res = pawn.relations?.GetFirstDirectRelationPawn(PawnRelationDefOf.Parent, x => x != mother) ?? null; + else res = pawn.relations?.GetFirstDirectRelationPawn(PawnRelationDefOf.Parent, x => x != mother); return res; } @@ -448,7 +437,7 @@ namespace RJW_Menstruation { if (!Configurations.EnableWombIcon) return false; if (pawn.Drafted && !Configurations.EnableDraftedIcon) return false; - if (pawn.IsAnimal() && !Configurations.EnableAnimalCycle) return false; + if (!pawn.ShouldCycle()) return false; return true; } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs index 6c5e143..e3f8f66 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs @@ -1,7 +1,5 @@ using RimWorld; using rjw; -using rjw.Modules.Interactions.Rules.PartKindUsageRules.Implementation; -using System; using System.Collections.Generic; using System.Linq; using Verse; @@ -16,10 +14,12 @@ namespace RJW_Menstruation public static readonly ThingDef Tampon = DefDatabase.GetNamed("Absorber_Tampon"); public static readonly ThingDef Tampon_Dirty = DefDatabase.GetNamed("Absorber_Tampon_Dirty"); public static readonly ThingDef FilthMixture = DefDatabase.GetNamed("FilthMixture"); + public static readonly ThingDef Scyther = DefDatabase.GetNamed("Mech_Scyther"); public static readonly HediffDef RJW_IUD = DefDatabase.GetNamed("RJW_IUD"); public static readonly HediffDef Hediff_MenstrualCramp = DefDatabase.GetNamed("Hediff_MenstrualCramp"); public static readonly HediffDef Hediff_Estrus = DefDatabase.GetNamed("Hediff_Estrus"); public static readonly HediffDef Hediff_Estrus_Concealed = DefDatabase.GetNamed("Hediff_Estrus_Concealed"); + public static readonly HediffDef Hediff_AffectedByPheromones = DefDatabase.GetNamed("Hediff_AffectedByPheromones"); public static readonly HediffDef Hediff_ASA = DefDatabase.GetNamed("Hediff_ASA"); public static readonly StatDef MaxAbsorbable = DefDatabase.GetNamed("MaxAbsorbable"); public static readonly NeedDef SexNeed = DefDatabase.GetNamed("Sex"); @@ -39,7 +39,8 @@ namespace RJW_Menstruation public static readonly ThoughtDef UnwantedPregnancyMild = DefDatabase.GetNamed("UnwantedPregnancyMild"); public static readonly ThoughtDef TookContraceptivePill = DefDatabase.GetNamed("TookContraceptivePill"); public static readonly ThoughtDef HateTookContraceptivePill = DefDatabase.GetNamed("HateTookContraceptivePill"); - public static readonly CompProperties_Menstruation HumanVaginaCompProperties = (CompProperties_Menstruation)Genital_Helper.average_vagina.comps.FirstOrDefault(x => x is CompProperties_Menstruation); + public static readonly ThoughtDef EggRestorationReceived = DefDatabase.GetNamed("EggRestorationReceived"); + public static readonly CompProperties_Menstruation HumanVaginaCompProperties = Genital_Helper.average_vagina.CompProps(); public static readonly KeyBindingDef OpenStatusWindowKey = DefDatabase.GetNamed("OpenStatusWindow"); public static readonly RecordDef AmountofCreampied = DefDatabase.GetNamed("AmountofCreampied"); public static readonly RecordDef AmountofFertilizedEggs = DefDatabase.GetNamed("AmountofFertilizedEggs"); @@ -53,21 +54,12 @@ namespace RJW_Menstruation public static readonly GeneDef QuadOvulation = DefDatabase.GetNamed("Menstruation_QuadOvulation"); public static readonly GeneDef NoBleeding = DefDatabase.GetNamed("Menstruation_NoBleeding"); - public static readonly HashSet WombGenes = new HashSet() { - ShortEggLifetime, - DoubleEggLifetime, - QuadEggLifetime, - NeverEstrus, - FullEstrus, - DoubleOvulation, - QuadOvulation, - NoBleeding }; - private static List allraces = null; private static List allkinds = null; private static HashSet allvaginas = null; private static HashSet allanuses = null; private static HashSet allbreasts = null; + private static HashSet egglayergenes = null; public static List AllRaces { @@ -160,6 +152,22 @@ namespace RJW_Menstruation return allbreasts; } } + public static HashSet EggLayerGenes + { + get + { + if (egglayergenes != null) return egglayergenes; + egglayergenes = new HashSet + { + DefDatabase.GetNamedSilentFail("AG_EggLaying"), // Alpha Genes + DefDatabase.GetNamedSilentFail("VRESaurids_Oviparous"), // VE Saurid + DefDatabase.GetNamedSilentFail("VRE_SaplingBirth"), // VE Phytokin + }; + egglayergenes.Remove(null); + + return egglayergenes; + } + } // Defs from Milkable Colonists public static readonly HediffDef Hediff_Lactating_Drug = DefDatabase.GetNamedSilentFail("Lactating_Drug"); @@ -172,5 +180,11 @@ namespace RJW_Menstruation public static readonly PreceptDef Pregnancy_Elevated = DefDatabase.GetNamedSilentFail("Pregnancy_Elevated"); public static readonly PreceptDef Pregnancy_Holy = DefDatabase.GetNamedSilentFail("Pregnancy_Holy"); public static readonly PreceptDef Pregnancy_Required = DefDatabase.GetNamedSilentFail("Pregnancy_Required"); + // Related thoughts + public static readonly ThoughtDef CameInsideMIdeo = DefDatabase.GetNamed("CameInsideMIdeo"); + public static readonly ThoughtDef CameInsideFIdeo = DefDatabase.GetNamed("CameInsideFIdeo"); + public static readonly ThoughtDef HaterCameInsideFIdeo = DefDatabase.GetNamed("HaterCameInsideFIdeo"); + public static readonly ThoughtDef HateTookContraceptivePillIdeo = DefDatabase.GetNamed("HateTookContraceptivePillIdeo"); } + } diff --git a/About/Manifest.xml b/About/Manifest.xml index 3299391..6b4c770 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@ RJW Menstruation - 1.0.9.0 + 1.0.9.3 diff --git a/LoadFolders.xml b/LoadFolders.xml index 1707748..f711d5c 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -14,6 +14,5 @@
  • 1.4
  • 1.4/RJW Menstruation Race Support
  • -
    \ No newline at end of file diff --git a/changelogs.txt b/changelogs.txt index 97ae1c8..e6f1bf5 100644 --- a/changelogs.txt +++ b/changelogs.txt @@ -1,3 +1,36 @@ +Version 1.0.9.3 + - The biosculptor egg restoration cycle will now give more eggs to races that ovulate more than one egg at a time. + - All pawns can now use all menstruation genes, regardless of gender or having a womb. + - Egglaying animals no longer have a menstrual cycle. + - Fix bug preventing absorbers from becoming dirty. + +Version 1.0.9.2 + - Updated Traditional Chinese translation by Hydrogen. + - Fixed the no bleeding gene having positive metabolic efficiency instead of negative. + - Fixed ovulation chance not accounting for genes or precepts. + - Better handle wombs that are not in the genitals body part. + - Handle errors more gracefully when starting a pregnancy. + - Fix implanting multiple eggs in an animal when configured to use Biotech pregnancies. + - An equipped tampon or pad will now show how much fluid it has absorbed in its tooltip. + - Passive absorption will now make a tampon or pad dirty after enough time, even if no fluid was added. + - It will take a cloth tampon about 2 days to become dirty passively. A cloth pad will take about 10 days. + - An absorber that was force worn will no longer be forced once it becomes dirty. + - Pawns without a menstrual cycle will no longer equip absorbers. + - Egglaying races no longer have a menstrual cycle, regardless of vagina type. + - Pawns with the egglaying genes from Alpha Genes, VE Saurids, or Phytokin no longer have a menstrual cycle. + - The womb status button will now appear in a pawn's health tab when using Compact Hediffs, with thanks to Fern. + - Tampons and pads are now allowed by default in the worker, soldier, and slave starting outfits. + +Version 1.0.9.1 + - Japanese translation for most text by Lokuzt. + - New womb, cum, and fetus graphics by Euldrop. + - Add new ideology-related thoughts with the sexperience-ideology mod. + - New pheromone system: Pawns in visible estrus will increase the sex drive of nearby males. Can be disabled in the options. + - Using the egg restoration biosculptor cycle will give a small mood buff. + - Fix some errors related to precum. + - Periodic ovulators that don't bleed will properly enter anestrus after their luteal stage. + - Climacteric/menopausal pawns will have their sex need slow properly when the womb's tick rate is non-default. + Version 1.0.9.0 - Fix errors when opening the womb dialog of some low fertility pawns. - Updated Traditional Chinese translation by Hydrogen.