This commit is contained in:
moreoreganostodump 2021-02-22 19:51:41 +09:00
parent 0c86674b41
commit 69fd540562
40 changed files with 461 additions and 45 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest>
<identifier>RJW Menstruation</identifier>
<version>1.0.1.6</version>
<version>1.0.1.8</version>
<dependencies>
</dependencies>
<incompatibleWith />

Binary file not shown.

View File

@ -4,7 +4,7 @@
<JobDef Name="VaginaWashing">
<defName>VaginaWashing</defName>
<driverClass>RJW_Menstruation.JobDriver_VaginaWashing</driverClass>
<reportString>wasing vagina</reportString>
<reportString>washing vagina</reportString>
<casualInterruptible>true</casualInterruptible>
</JobDef>
</Defs>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Absorber.label>生殖器</Absorber.label>
</LanguageData>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Hediff_MenstrualCramp.label>中枢性疼痛</Hediff_MenstrualCramp.label>
<Hediff_MenstrualCramp.description>经期中</Hediff_MenstrualCramp.description>
<Hediff_MenstrualCramp.stages.0.label>不快</Hediff_MenstrualCramp.stages.0.label>
<Hediff_MenstrualCramp.stages.1.label>恼人</Hediff_MenstrualCramp.stages.1.label>
<Hediff_MenstrualCramp.stages.2.label>疼痛</Hediff_MenstrualCramp.stages.2.label>
<Hediff_MenstrualCramp.stages.3.label>痛苦</Hediff_MenstrualCramp.stages.3.label>
<Hediff_Climacteric.label>更年期</Hediff_Climacteric.label>
<Hediff_Climacteric.description>到了更年期</Hediff_Climacteric.description>
<Hediff_Climacteric.stages.0.label>初期</Hediff_Climacteric.stages.0.label>
<Hediff_Climacteric.stages.1.label>中期</Hediff_Climacteric.stages.1.label>
<Hediff_Climacteric.stages.2.label>后期</Hediff_Climacteric.stages.2.label>
<Hediff_Climacteric.stages.3.label>更年期</Hediff_Climacteric.stages.3.label>
<Hediff_Menopause.label>更年期</Hediff_Menopause.label>
<Hediff_Menopause.description>不孕</Hediff_Menopause.description>
</LanguageData>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<VaginaWashing.reportString>清洗阴道</VaginaWashing.reportString>
</LanguageData>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<MaxAbsorbable.label>可吸收量</MaxAbsorbable.label>
<MaxAbsorbable.description>最大可吸收的液体量</MaxAbsorbable.description>
</LanguageData>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<LanguageData>
<Absorber_Tampon.label>卫生棉条</Absorber_Tampon.label>
<Absorber_Tampon.description>从阴道吸收液体的卫生棉条</Absorber_Tampon.description>
<Absorber_Tampon_Dirty.label>湿的卫生棉条</Absorber_Tampon_Dirty.label>
<Absorber_Tampon_Dirty.description>使用过的湿卫生棉条</Absorber_Tampon_Dirty.description>
<Absorber_Pad.label>卫生棉</Absorber_Pad.label>
<Absorber_Pad.description>从阴道吸收液体的卫生棉</Absorber_Pad.description>
<Absorber_Pad_Dirty.label>湿的卫生棉</Absorber_Pad_Dirty.label>
<Absorber_Pad_Dirty.description>使用过的湿卫生棉</Absorber_Pad_Dirty.description>
<OvaryRegenerationPill.label>卵巢再生药物</OvaryRegenerationPill.label>
<OvaryRegenerationPill.description>使卵巢再生以增加可排卵的卵子&#10;卵子消耗量越大,效果越差&#10;不能缓解更年期症状</OvaryRegenerationPill.description>
<SuperovulationInducingAgent.label>排卵药</SuperovulationInducingAgent.label>
<SuperovulationInducingAgent.description>诱导排卵的药物&#10;可导致更年期提前</SuperovulationInducingAgent.description>
<FilthMixture.label>混合物</FilthMixture.label>
</LanguageData>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<LeakingFluids.stages.0.label>裤湿啦</LeakingFluids.stages.0.label>
<LeakingFluids.stages.0.description>真让人困恼... </LeakingFluids.stages.0.description>
<CameInsideF.stages.0.label>被{0}中出了</CameInsideF.stages.0.label>
<CameInsideF.stages.0.description>我担心我可能会怀孕... </CameInsideF.stages.0.description>
<CameInsideFLowFert.stages.0.label>被{0}中出了</CameInsideFLowFert.stages.0.label>
<CameInsideFLowFert.stages.0.description>虽然几率很低,但我还是担心怀孕... </CameInsideFLowFert.stages.0.description>
<CameInsideFFetish.stages.0.label>被{0}中出了</CameInsideFFetish.stages.0.label>
<CameInsideFFetish.stages.0.description>我想我怀孕了</CameInsideFFetish.stages.0.description>
<CameInsideFFetishSafe.stages.0.label>被{0}中出了</CameInsideFFetishSafe.stages.0.label>
<CameInsideFFetishSafe.stages.0.description>我爱做爱</CameInsideFFetishSafe.stages.0.description>
<CameInsideM.stages.0.label>中出了{0}</CameInsideM.stages.0.label>
<CameInsideM.stages.0.description>超爽的</CameInsideM.stages.0.description>
<HaterCameInsideF.stages.0.label>被{0}中出了</HaterCameInsideF.stages.0.label>
<HaterCameInsideF.stages.0.description>那龟孙子上了我,我不想怀上他的孩子...</HaterCameInsideF.stages.0.description>
<HaterCameInsideFSafe.stages.0.label>被{0}中出了</HaterCameInsideFSafe.stages.0.label>
<HaterCameInsideFSafe.stages.0.description>那龟孙子上了我....</HaterCameInsideFSafe.stages.0.description>
<HaterCameInsideM.stages.0.label>中出了{0}</HaterCameInsideM.stages.0.label>
<HaterCameInsideM.stages.0.description>我上了一个婊子</HaterCameInsideM.stages.0.description>
<UnwantedPregnancy.stages.0.label>不想要的怀孕</UnwantedPregnancy.stages.0.label>
<UnwantedPregnancy.stages.0.description>我该怎麽办?... </UnwantedPregnancy.stages.0.description>
</LanguageData>

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Mod_Title>RJW Menstruation Cycle</Mod_Title>
<Menstrual_Blood>月经血</Menstrual_Blood>
<Info_noCum>清空</Info_noCum>
<Stage_Follicular>卵泡期</Stage_Follicular>
<Stage_Ovulatory>排卵</Stage_Ovulatory>
<Stage_Luteal>黄体期</Stage_Luteal>
<Stage_Bleeding>月经来潮</Stage_Bleeding>
<Stage_Fertilized>已受精</Stage_Fertilized>
<Stage_Pregnant>怀孕</Stage_Pregnant>
<Stage_Recover>从出生中恢复</Stage_Recover>
<Stage_None></Stage_None>
<Stage_Climacteric>更年期</Stage_Climacteric>
<Dialog_WombInfo01>状态</Dialog_WombInfo01>
<Dialog_WombInfo02>胎儿</Dialog_WombInfo02>
<Dialog_WombInfo03>父亲</Dialog_WombInfo03>
<Dialog_WombInfo04>阴道精液列表</Dialog_WombInfo04>
<Dialog_WombInfo05>已受精</Dialog_WombInfo05>
<Dialog_WombInfo06>受精中</Dialog_WombInfo06>
<Dialog_WombInfo07>排卵</Dialog_WombInfo07>
<Dialog_WombInfo08></Dialog_WombInfo08>
<Dialog_WombInfo09></Dialog_WombInfo09>
<Option1_Label>激活子宫图标</Option1_Label>
<Option1_Desc>激活子宫图标框</Option1_Desc>
<Option2_Label>激活动物经期</Option2_Label>
<Option2_Desc>仿真动物的经期.&#10;此选项将在保存读取后生效&#10;不推荐开启此选项</Option2_Desc>
<Option3_Label>植入机会</Option3_Label>
<Option3_Desc>设置受精卵的植入机会</Option3_Desc>
<Option4_Label>受精的机会</Option4_Label>
<Option4_Desc>设置每小时受精的机会</Option4_Desc>
<Option5_Label>每小时阴道中的精液量衰减率</Option5_Label>
<Option5_Desc>阴道中的精液量将以这个比率减少</Option5_Desc>
<Option6_Label>每小时生育率衰减率</Option6_Label>
<Option6_Desc>精液列表的生育率将以这个比率减少</Option6_Desc>
<Option7_Label>循环加速</Option7_Label>
<Option7_Desc>加快月经周期</Option7_Desc>
<Option8_Label>调试</Option8_Label>
<Option8_Desc>显示调试信息</Option8_Desc>
<Option9_Label>子宫状态</Option9_Label>
<Option9_Desc>在状态窗口中绘制子宫图标</Option9_Desc>
<Option10_Label>阴道状态</Option10_Label>
<Option10_Desc>在状态窗口中绘制阴道和肛门图标</Option10_Desc>
<Option11_Label>胎儿信息级别</Option11_Label>
<Option11_Desc_1>显示有关胎儿的所有信息</Option11_Desc_1>
<Option11_Desc_2>显示妊娠後胎儿的所有信息</Option11_Desc_2>
<Option11_Desc_3>不显示有关胎儿的信息,但显示怀孕後胎儿的图象</Option11_Desc_3>
<Option11_Desc_4>不显示胎儿图象和信息</Option11_Desc_4>
<Option12_Label>激活更年期</Option12_Label>
<Option12_Desc>激活更年期效果,使小人随着时间的推移而变得不育&#10;如果您较长寿的外星人种族有碰到任何问题,请关闭此选项.&#10;此选项将在保存读取后生效</Option12_Desc>
<Option13_Label>多重怀孕</Option13_Label>
<Option13_Desc>使用多重怀孕代替RJW的默认怀孕</Option13_Desc>
<Option14_Label>激活异卵双胞胎</Option14_Label>
<Option14_Desc>激活复数个卵子可以个别受精</Option14_Desc>
<Option15_Label>激活双胞胎</Option15_Label>
<Option15_Desc>允许单个卵子生成多个后代</Option15_Desc>
<Option16_Label>双胞胎出现率</Option16_Label>
<Option16_Desc>设置双胞胎的出现率</Option16_Desc>
<Option17_Label>最大双胞胎数量</Option17_Label>
<Option17_Desc>设置最大双胞胎数量</Option17_Desc>
<FloatMenu_CleanSelf>清洗阴道</FloatMenu_CleanSelf>
</LanguageData>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Absorber.label>生殖器</Absorber.label>
</LanguageData>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Hediff_MenstrualCramp.label>中樞性疼痛</Hediff_MenstrualCramp.label>
<Hediff_MenstrualCramp.description>經期中</Hediff_MenstrualCramp.description>
<Hediff_MenstrualCramp.stages.0.label>不快</Hediff_MenstrualCramp.stages.0.label>
<Hediff_MenstrualCramp.stages.1.label>惱人</Hediff_MenstrualCramp.stages.1.label>
<Hediff_MenstrualCramp.stages.2.label>疼痛</Hediff_MenstrualCramp.stages.2.label>
<Hediff_MenstrualCramp.stages.3.label>痛苦</Hediff_MenstrualCramp.stages.3.label>
<Hediff_Climacteric.label>更年期</Hediff_Climacteric.label>
<Hediff_Climacteric.description>到了更年期</Hediff_Climacteric.description>
<Hediff_Climacteric.stages.0.label>初期</Hediff_Climacteric.stages.0.label>
<Hediff_Climacteric.stages.1.label>中期</Hediff_Climacteric.stages.1.label>
<Hediff_Climacteric.stages.2.label>後期</Hediff_Climacteric.stages.2.label>
<Hediff_Climacteric.stages.3.label>更年期</Hediff_Climacteric.stages.3.label>
<Hediff_Menopause.label>更年期</Hediff_Menopause.label>
<Hediff_Menopause.description>不孕</Hediff_Menopause.description>
</LanguageData>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<VaginaWashing.reportString>清洗陰道</VaginaWashing.reportString>
</LanguageData>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<MaxAbsorbable.label>可吸收量</MaxAbsorbable.label>
<MaxAbsorbable.description>最大可吸收的液體量</MaxAbsorbable.description>
</LanguageData>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<LanguageData>
<Absorber_Tampon.label>衛生棉條</Absorber_Tampon.label>
<Absorber_Tampon.description>從陰道吸收液體的衛生棉條</Absorber_Tampon.description>
<Absorber_Tampon_Dirty.label>濕的衛生棉條</Absorber_Tampon_Dirty.label>
<Absorber_Tampon_Dirty.description>使用過的濕衛生棉條</Absorber_Tampon_Dirty.description>
<Absorber_Pad.label>衛生棉</Absorber_Pad.label>
<Absorber_Pad.description>從陰道吸收液體的衛生棉</Absorber_Pad.description>
<Absorber_Pad_Dirty.label>濕的衛生棉</Absorber_Pad_Dirty.label>
<Absorber_Pad_Dirty.description>使用過的濕衛生棉</Absorber_Pad_Dirty.description>
<OvaryRegenerationPill.label>卵巢再生藥物</OvaryRegenerationPill.label>
<OvaryRegenerationPill.description>使卵巢再生以增加可排卵的卵子&#10;卵子消耗量越大,效果越差&#10;不能緩解更年期症狀</OvaryRegenerationPill.description>
<SuperovulationInducingAgent.label>排卵藥</SuperovulationInducingAgent.label>
<SuperovulationInducingAgent.description>誘導排卵的藥物&#10;可導致更年期提前</SuperovulationInducingAgent.description>
<FilthMixture.label>混合物</FilthMixture.label>
</LanguageData>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<LeakingFluids.stages.0.label>褲濕啦</LeakingFluids.stages.0.label>
<LeakingFluids.stages.0.description>真讓人困惱... </LeakingFluids.stages.0.description>
<CameInsideF.stages.0.label>被{0}中出了</CameInsideF.stages.0.label>
<CameInsideF.stages.0.description>我擔心我可能會懷孕... </CameInsideF.stages.0.description>
<CameInsideFLowFert.stages.0.label>被{0}中出了</CameInsideFLowFert.stages.0.label>
<CameInsideFLowFert.stages.0.description>雖然機率很低,但我還是擔心懷孕... </CameInsideFLowFert.stages.0.description>
<CameInsideFFetish.stages.0.label>被{0}中出了</CameInsideFFetish.stages.0.label>
<CameInsideFFetish.stages.0.description>我想我懷孕了</CameInsideFFetish.stages.0.description>
<CameInsideFFetishSafe.stages.0.label>被{0}中出了</CameInsideFFetishSafe.stages.0.label>
<CameInsideFFetishSafe.stages.0.description>我愛做愛</CameInsideFFetishSafe.stages.0.description>
<CameInsideM.stages.0.label>中出了{0}</CameInsideM.stages.0.label>
<CameInsideM.stages.0.description>超爽的</CameInsideM.stages.0.description>
<HaterCameInsideF.stages.0.label>被{0}中出了</HaterCameInsideF.stages.0.label>
<HaterCameInsideF.stages.0.description>那龜孫子上了我,我不想懷上他的孩子...</HaterCameInsideF.stages.0.description>
<HaterCameInsideFSafe.stages.0.label>被{0}中出了</HaterCameInsideFSafe.stages.0.label>
<HaterCameInsideFSafe.stages.0.description>那龜孫子上了我....</HaterCameInsideFSafe.stages.0.description>
<HaterCameInsideM.stages.0.label>中出了{0}</HaterCameInsideM.stages.0.label>
<HaterCameInsideM.stages.0.description>我上了一個婊子</HaterCameInsideM.stages.0.description>
<UnwantedPregnancy.stages.0.label>不想要的懷孕</UnwantedPregnancy.stages.0.label>
<UnwantedPregnancy.stages.0.description>我該怎麼辦?... </UnwantedPregnancy.stages.0.description>
</LanguageData>

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
<Mod_Title>RJW Menstruation Cycle</Mod_Title>
<Menstrual_Blood>月經血</Menstrual_Blood>
<Info_noCum>清空</Info_noCum>
<Stage_Follicular>卵泡期</Stage_Follicular>
<Stage_Ovulatory>排卵</Stage_Ovulatory>
<Stage_Luteal>黃體期</Stage_Luteal>
<Stage_Bleeding>月經來潮</Stage_Bleeding>
<Stage_Fertilized>已受精</Stage_Fertilized>
<Stage_Pregnant>懷孕</Stage_Pregnant>
<Stage_Recover>從出生中恢復</Stage_Recover>
<Stage_None></Stage_None>
<Stage_Climacteric>更年期</Stage_Climacteric>
<Dialog_WombInfo01>狀態</Dialog_WombInfo01>
<Dialog_WombInfo02>胎兒</Dialog_WombInfo02>
<Dialog_WombInfo03>父親</Dialog_WombInfo03>
<Dialog_WombInfo04>陰道精液列表</Dialog_WombInfo04>
<Dialog_WombInfo05>已受精</Dialog_WombInfo05>
<Dialog_WombInfo06>受精中</Dialog_WombInfo06>
<Dialog_WombInfo07>排卵</Dialog_WombInfo07>
<Dialog_WombInfo08></Dialog_WombInfo08>
<Dialog_WombInfo09></Dialog_WombInfo09>
<Option1_Label>啟用子宮圖標</Option1_Label>
<Option1_Desc>啟用子宮圖標框</Option1_Desc>
<Option2_Label>啟用動物經期</Option2_Label>
<Option2_Desc>模擬動物的經期.&#10;此選項將在保存讀取後生效&#10;不推薦開啟此選項</Option2_Desc>
<Option3_Label>植入機會</Option3_Label>
<Option3_Desc>設置受精卵的植入機會</Option3_Desc>
<Option4_Label>受精的機會</Option4_Label>
<Option4_Desc>設置每小時受精的機會</Option4_Desc>
<Option5_Label>每小時陰道中的精液量衰減率</Option5_Label>
<Option5_Desc>陰道中的精液量將以這個比率減少</Option5_Desc>
<Option6_Label>每小時生育率衰減率</Option6_Label>
<Option6_Desc>精液列表的生育率將以這個比率減少</Option6_Desc>
<Option7_Label>循環加速</Option7_Label>
<Option7_Desc>加快月經週期</Option7_Desc>
<Option8_Label>除錯</Option8_Label>
<Option8_Desc>顯示除錯資訊</Option8_Desc>
<Option9_Label>子宮狀態</Option9_Label>
<Option9_Desc>在狀態窗口中繪製子宮圖標</Option9_Desc>
<Option10_Label>陰道狀態</Option10_Label>
<Option10_Desc>在狀態窗口中繪製陰道和肛門圖標</Option10_Desc>
<Option11_Label>胎兒信息級別</Option11_Label>
<Option11_Desc_1>顯示有關胎兒的所有信息</Option11_Desc_1>
<Option11_Desc_2>顯示妊娠後胎兒的所有信息</Option11_Desc_2>
<Option11_Desc_3>不顯示有關胎兒的信息,但顯示懷孕後胎兒的圖像</Option11_Desc_3>
<Option11_Desc_4>不顯示胎兒圖像和信息</Option11_Desc_4>
<Option12_Label>啟用更年期</Option12_Label>
<Option12_Desc>啟用更年期效果,使小人隨著時間的推移而變得不育&#10;如果您較長壽的外星人種族有碰到任何問題,請關閉此選項.&#10;此選項將在保存讀取後生效</Option12_Desc>
<Option13_Label>多重懷孕</Option13_Label>
<Option13_Desc>使用多重懷孕代替RJW的默認懷孕</Option13_Desc>
<Option14_Label>啟用異卵雙胞胎</Option14_Label>
<Option14_Desc>啟用複數個卵子可以個別受精</Option14_Desc>
<Option15_Label>啟用雙胞胎</Option15_Label>
<Option15_Desc>允許單個卵子產生多個後代</Option15_Desc>
<Option16_Label>雙胞胎出現率</Option16_Label>
<Option16_Desc>設置雙胞胎的出現率</Option16_Desc>
<Option17_Label>最大雙胞胎數量</Option17_Label>
<Option17_Desc>設置最大雙胞胎數量</Option17_Desc>
<FloatMenu_CleanSelf>清洗陰道</FloatMenu_CleanSelf>
</LanguageData>

View File

@ -60,6 +60,8 @@
<Option16_Desc>set chance of twins</Option16_Desc>
<Option17_Label>max enzygotic twins</Option17_Label>
<Option17_Desc>set max number of twins</Option17_Desc>
<Option18_Label>enable egg overlay</Option18_Label>
<Option18_Desc>enable egg overlay on womb icon</Option18_Desc>
<FloatMenu_CleanSelf>Vaginal washing</FloatMenu_CleanSelf>

View File

@ -60,6 +60,8 @@
<Option16_Desc>일란성 쌍둥이가 발생할 확률을 설정합니다.</Option16_Desc>
<Option17_Label>최대 일란성 쌍둥이 수</Option17_Label>
<Option17_Desc>일란성 쌍둥이의 수를 제한합니다.</Option17_Desc>
<Option18_Label>난자 오버레이</Option18_Label>
<Option18_Desc>자궁그림 위에 난자그림를 표시합니다.</Option18_Desc>
<FloatMenu_CleanSelf>질세척</FloatMenu_CleanSelf>

BIN
Textures/Eggs/Egg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
Textures/Eggs/Egg.psd Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
Textures/Eggs/Eggs.zip Normal file

Binary file not shown.

View File

@ -1,3 +1,13 @@
Version 1.0.1.8
- fixed problems with animal status window
- fixed RMB menu crash
- added egg overlay
- default implantation chance changed to 65%
- now fertilized eggs are implanted after 7 days later
Version 1.0.1.7
- added chinese translations
- major bug fixes
- minor bug fixes
Version 1.0.1.6
- fixed bugs when display fetus image
- fixed futa female was not set as parent

View File

@ -10,12 +10,12 @@ namespace RJW_Menstruation
{
public class Configurations : ModSettings
{
public const float ImplantationChanceDefault = 0.25f;
public const int ImplantationChanceAdjustDefault = 25;
public const float ImplantationChanceDefault = 0.65f;
public const int ImplantationChanceAdjustDefault = 65;
public const float FertilizeChanceDefault = 0.05f;
public const int FertilizeChanceAdjustDefault = 50;
public const float CumDecayRatioDefault = 0.05f;
public const int CumDecayRatioAdjustDefault = 50;
public const float CumDecayRatioDefault = 0.15f;
public const int CumDecayRatioAdjustDefault = 150;
public const float CumFertilityDecayRatioDefault = 0.2f;
public const int CumFertilityDecayRatioAdjustDefault = 200;
public const int CycleAccelerationDefault = 6;
@ -36,6 +36,7 @@ namespace RJW_Menstruation
public static bool EnableAnimalCycle = false;
public static bool DrawWombStatus = true;
public static bool DrawVaginaStatus = true;
public static bool DrawEggOverlay = true;
public static bool Debug = false;
public static bool EnableMenopause = true;
public static DetailLevel InfoDetail = DetailLevel.All;
@ -94,6 +95,7 @@ namespace RJW_Menstruation
Scribe_Values.Look(ref EnableAnimalCycle, "EnableAnimalCycle", EnableAnimalCycle, true);
Scribe_Values.Look(ref DrawWombStatus, "DrawWombStatus", DrawWombStatus, true);
Scribe_Values.Look(ref DrawVaginaStatus, "DrawVaginaStatus", DrawVaginaStatus, true);
Scribe_Values.Look(ref DrawEggOverlay, "DrawEggOvray", DrawEggOverlay, true);
Scribe_Values.Look(ref Debug, "Debug", Debug, true);
Scribe_Values.Look(ref InfoDetail, "InfoDetail", InfoDetail, true);
Scribe_Values.Look(ref EnableMenopause, "EnableMenopause", EnableMenopause, true);
@ -143,8 +145,12 @@ namespace RJW_Menstruation
listmain.CheckboxLabeled(Translations.Option1_Label, ref Configurations.EnableWombIcon, Translations.Option1_Desc);
if (Configurations.EnableWombIcon)
{
Listing_Standard wombsection = listmain.BeginSection_NewTemp(111);
Listing_Standard wombsection = listmain.BeginSection_NewTemp(131);
wombsection.CheckboxLabeled(Translations.Option9_Label, ref Configurations.DrawWombStatus, Translations.Option9_Desc);
if (Configurations.DrawWombStatus)
{
wombsection.CheckboxLabeled(Translations.Option18_Label, ref Configurations.DrawEggOverlay, Translations.Option18_Desc);
}
wombsection.CheckboxLabeled(Translations.Option10_Label, ref Configurations.DrawVaginaStatus, Translations.Option10_Desc);
if (wombsection.ButtonText(Translations.Option11_Label + ": " + Configurations.LevelString(Configurations.InfoDetail)))
{

View File

@ -42,7 +42,14 @@ namespace RJW_Menstruation
{
if (DNAcache == null)
{
DNAcache = pawn.def.GetModExtension<PawnDNAModExtention>();
try
{
DNAcache = pawn.def.GetModExtension<PawnDNAModExtention>();
}
catch (NullReferenceException)
{
DNAcache = ThingDefOf.Human.GetModExtension<PawnDNAModExtention>();
}
if (DNAcache == null)
{
DNAcache = ThingDefOf.Human.GetModExtension<PawnDNAModExtention>();
@ -89,9 +96,6 @@ namespace RJW_Menstruation
this.pawn = pawn;
volume = 1.0f;
fertvolume = 1.0f;
decayresist = 0;
}
public Cum(Pawn pawn, float volume, string notcumlabel, float decayresist = 0, ThingDef filthDef = null)

View File

@ -23,7 +23,6 @@ namespace RJW_Menstruation
private const float genitalRectWidth = 102;
private const float genitalRectHeight = 140;
private Texture2D womb;
private Texture2D cum;
private Texture2D vagina;
@ -36,7 +35,7 @@ namespace RJW_Menstruation
private GUIStyle boxstyle = new GUIStyle(GUI.skin.textArea);
private GUIStyle buttonstyle = new GUIStyle(GUI.skin.button);
public override Vector2 InitialSize
@ -97,8 +96,9 @@ namespace RJW_Menstruation
boxstyle.border.left = 4; boxstyle.border.right = 4; boxstyle.border.bottom = 4; boxstyle.border.top = 4;
float preginfoheight = 0f;
bool pregnant = pawn.IsPregnant();
Hediff hediff = PregnancyHelper.GetPregnancy(pawn);
if (pawn.IsPregnant() && Utility.ShowFetusImage((Hediff_BasePregnancy)hediff))
if (pregnant && Utility.ShowFetusImage((Hediff_BasePregnancy)hediff))
{
womb = Utility.GetPregnancyIcon(comp, hediff);
if (hediff is Hediff_MultiplePregnancy)
@ -165,7 +165,7 @@ namespace RJW_Menstruation
Rect pawnLabel2Rect = new Rect(0, pawnRectHeight + fontheight - 10, pawnRectWidth, fontheight - 10);
fontstylecenter.normal.textColor = pawn.DrawColor;
GUI.Label(pawnLabelRect, pawn.Name.ToStringFull, fontstylecenter);
GUI.Label(pawnLabel2Rect, pawn.story.Title, fontstylecenter);
if (pawn.story != null)GUI.Label(pawnLabel2Rect, pawn.story.Title, fontstylecenter);
GUI.color = Color.white;
float wombrecth = 0;
@ -175,6 +175,14 @@ namespace RJW_Menstruation
cumcolor = comp.GetCumMixtureColor;
Rect wombRect = new Rect(0f, mainRect.yMax - wombRectHeight + preginfoheight, wombRectWidth, wombRectWidth*0.9f);
DrawWomb(wombRect);
if (Configurations.DrawEggOverlay)
{
comp.DrawEggOverlay(wombRect);
}
}
Rect wombInfoRect = new Rect(0f, mainRect.yMax - wombrecth - fontheight - 2, wombRectWidth, fontheight);
@ -197,7 +205,7 @@ namespace RJW_Menstruation
//Widgets.Label(wombInfoRect,Translations.Dialog_WombInfo01 + ": " + comp.GetCurStageLabel);
if (Configurations.DrawVaginaStatus)
if (Configurations.DrawVaginaStatus && !pawn.IsAnimal())
{
Rect genitalRect = new Rect(24, pawnRectHeight + 2 * fontheight, genitalRectWidth, genitalRectHeight + fontheight * 2);
DrawVagina(genitalRect);
@ -249,8 +257,12 @@ namespace RJW_Menstruation
GUI.DrawTexture(rect, womb, ScaleMode.ScaleToFit, true, 0, Color.white, 0, 0);
GUI.DrawTexture(rect, cum, ScaleMode.ScaleToFit, true, 0, cumcolor, 0, 0);
GUI.color = Color.white;
}
private void DrawVagina(Rect rect)
{
Rect genitalIconRect = new Rect(rect.x, rect.y + fontheight, genitalRectWidth, genitalRectHeight);

View File

@ -14,6 +14,7 @@ namespace RJW_Menstruation
{
public Texture2D icon_overay;
public Color cumcolor;
public HediffComp_Menstruation comp;
protected override void DrawIcon(Rect rect, Material buttonMat = null)
{
@ -36,6 +37,8 @@ namespace RJW_Menstruation
GUI.color = color;
Widgets.DrawTextureFitted(rect, overay, iconDrawScale * 0.85f, iconProportions, iconTexCoords, iconAngle, buttonMat);
GUI.color = Color.white;
if (Configurations.DrawEggOverlay) comp.DrawEggOverlay(rect);
}

View File

@ -289,7 +289,7 @@ namespace RJW_Menstruation
}
}
public bool GetEggFertilizing
public bool IsEggFertilizing
{
get
{
@ -305,18 +305,22 @@ namespace RJW_Menstruation
else return false;
}
}
public bool GetFertilization
/// <summary>
/// returns fertstage. if not fertilized returns -1
/// </summary>
public int IsFertilized
{
get
{
if (!eggs.NullOrEmpty()) foreach(Egg egg in eggs)
{
if (egg.fertilized) return true;
if (egg.fertilized) return egg.fertstage;
}
return false;
return -1;
}
}
public bool GetEgg
public bool IsEggExist
{
get
{
@ -655,7 +659,7 @@ namespace RJW_Menstruation
public void BeforeCumOut(out Absorber absorber)
{
absorber = (Absorber)parent.pawn.apparel?.WornApparel?.Find(x => x.def.apparel.tags.Contains("Absorber"));
absorber = (Absorber)parent.pawn.apparel?.WornApparel?.Find(x => x is Absorber);
if (absorber != null)
{
absorber.WearEffect();
@ -706,7 +710,7 @@ namespace RJW_Menstruation
cum.fertvolume *= Math.Max(0, (1 - (Configurations.CumDecayRatio * (1 - cum.decayresist)) * leakfactor) * (1 - (Configurations.CumFertilityDecayRatio * (1 - cum.decayresist))));
vd -= cum.volume;
totalleak += AbsorbCum(cum, vd, absorber);
string tmp = "FilthLabelWithSource".Translate(cum.FilthDef.label, cum.pawn.LabelShort, 1.ToString());
string tmp = "FilthLabelWithSource".Translate(cum.FilthDef.label, cum.pawn?.LabelShort ?? "Unknown", 1.ToString());
filthlabels.Add(tmp.Replace(" x1",""));
if (cum.fertvolume < 0.01f) cum.fertvolume = 0;
if (cum.volume < 0.01f) removecums.Add(cum);
@ -746,7 +750,7 @@ namespace RJW_Menstruation
cum.volume *= Math.Max(0, 1 - (portion * (1 - cum.decayresist)) * leakfactor);
cum.fertvolume *= Math.Max(0, (1 - (portion * (1 - cum.decayresist)) * leakfactor) * (1 - (Configurations.CumFertilityDecayRatio * (1 - cum.decayresist))));
//MakeCumFilth(cum, vd - cum.volume);
string tmp = "FilthLabelWithSource".Translate(cum.FilthDef.label, cum.pawn.LabelShort, 1.ToString());
string tmp = "FilthLabelWithSource".Translate(cum.FilthDef.label, cum.pawn?.LabelShort ?? "Unknown", 1.ToString());
filthlabels.Add(tmp.Replace(" x1", ""));
totalleak += vd - cum.volume;
if (cum.fertvolume < 0.01f) cum.fertvolume = 0;
@ -785,7 +789,7 @@ namespace RJW_Menstruation
cum.volume *= 1 - (portion);
cum.fertvolume *= (1 - (portion)) * (1 - (Configurations.CumFertilityDecayRatio));
//MakeCumFilth(cum, vd - cum.volume);
string tmp = "FilthLabelWithSource".Translate(cum.FilthDef.label, cum.pawn.LabelShort, 1.ToString());
string tmp = "FilthLabelWithSource".Translate(cum.FilthDef.label, cum.pawn?.LabelShort ?? "Unknown", 1.ToString());
filthlabels.Add(tmp.Replace(" x1", ""));
totalleak += vd - cum.volume;
if (cum.fertvolume < 0.01f) cum.fertvolume = 0;
@ -821,6 +825,7 @@ namespace RJW_Menstruation
if (!egg.fertilized) egg.fertilizer = Fertilize();
if (egg.fertilizer != null) {
egg.fertilized = true;
egg.lifespanhrs += 240;
onefertilized = true;
}
}
@ -918,7 +923,7 @@ namespace RJW_Menstruation
foreach (Cum cum in cums)
{
float rand = Rand.Range(0.0f, 1.0f);
if (!cum.notcum && rand < cum.fertvolume * cum.fertFactor * Configurations.FertilizeChance * Props.basefertilizationChanceFactor)
if (cum.pawn != null && !cum.notcum && rand < cum.fertvolume * cum.fertFactor * Configurations.FertilizeChance * Props.basefertilizationChanceFactor)
{
if (!RJWPregnancySettings.bestial_pregnancy_enabled && (xxx.is_animal(parent.pawn) ^ xxx.is_animal(cum.pawn))) continue;
return cum.pawn;
@ -936,7 +941,7 @@ namespace RJW_Menstruation
bool pregnant = false;
foreach(Egg egg in eggs)
{
if (egg.position < 24 || !egg.fertilized) continue;
if (!egg.fertilized || egg.fertstage < 168) continue;
else if (Rand.Range(0.0f, 1.0f) <= Configurations.ImplantationChance * Props.baseImplantationChanceFactor * ImplantFactor * InterspeciesImplantFactor(egg.fertilizer))
{
if (!parent.pawn.IsPregnant())
@ -1013,7 +1018,7 @@ namespace RJW_Menstruation
/// <param name="amount"></param>
private void MakeCumFilth(Cum cum, float amount)
{
if (amount >= minmakefilthvalue) FilthMaker.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, cum.FilthDef, cum.pawn.LabelShort);
if (amount >= minmakefilthvalue) FilthMaker.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, cum.FilthDef, cum.pawn?.LabelShort ?? "Unknown");
}
/// <summary>
@ -1076,6 +1081,7 @@ namespace RJW_Menstruation
egg.lifespanhrs -= Configurations.CycleAcceleration;
egg.position += Configurations.CycleAcceleration;
if (egg.lifespanhrs < 0) deadeggs.Add(egg);
if (egg.fertilized) egg.fertstage += Configurations.CycleAcceleration;
}
if (!deadeggs.NullOrEmpty())
@ -1463,6 +1469,7 @@ namespace RJW_Menstruation
public int lifespanhrs;
public Pawn fertilizer;
public int position;
public int fertstage = 0;
public Egg()
{
@ -1486,6 +1493,7 @@ namespace RJW_Menstruation
Scribe_Values.Look(ref fertilized, "fertilized", fertilized, true);
Scribe_Values.Look(ref lifespanhrs, "lifespanhrs", lifespanhrs, true);
Scribe_Values.Look(ref position, "position", position, true);
Scribe_Values.Look(ref fertstage, "fertstage", fertstage, true);
}
}

View File

@ -99,6 +99,7 @@ namespace RJW_Menstruation
icon = icon,
icon_overay = icon_overay,
cumcolor = c,
comp = comp,
order = 100,
action = delegate
{

View File

@ -37,7 +37,7 @@ namespace RJW_Menstruation
foreach (LocalTargetInfo t in selftargets)
{
opts.AddDistinct(MakeSelfMenu(pawn, t));
if (Utility.HasMenstruationComp(pawn)) opts.AddDistinct(MakeSelfMenu(pawn, t));
break;
}
@ -48,15 +48,10 @@ namespace RJW_Menstruation
public static FloatMenuOption MakeSelfMenu(Pawn pawn, LocalTargetInfo target)
{
FloatMenuOption option = null;
if (Utility.HasMenstruationComp(pawn))
{
option = FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(Translations.FloatMenu_CleanSelf, delegate ()
FloatMenuOption option = FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(Translations.FloatMenu_CleanSelf, delegate ()
{
pawn.jobs.TryTakeOrderedJob_NewTemp(new Verse.AI.Job(VariousDefOf.VaginaWashing, null, null, target.Cell));
}, MenuOptionPriority.Low), pawn, target);
}
return option;
}
@ -65,7 +60,20 @@ namespace RJW_Menstruation
}
//[HarmonyPatch(typeof(JobGiver_OptimizeApparel), "ApparelScoreGain_NewTmp")]
//public class OptimizeApparel_Patch
//{
// public static bool Prefix(ref float __result, Pawn pawn, Apparel ap, List<float> wornScoresCache)
// {
// if (ap is Absorber)
// {
// __result = -1000f;
// return false;
// }
// return true;
// }
//
//}

View File

@ -16,6 +16,7 @@ namespace RJW_Menstruation
public ColorInt cumColor;
public Color CumColor => cumColor.ToColor;
public float cumThickness = 0f;
}

View File

@ -66,6 +66,8 @@ namespace RJW_Menstruation
public static readonly string Option16_Desc = "Option16_Desc".Translate();
public static readonly string Option17_Label = "Option17_Label".Translate();
public static readonly string Option17_Desc = "Option17_Desc".Translate();
public static readonly string Option18_Label = "Option18_Label".Translate();
public static readonly string Option18_Desc = "Option18_Desc".Translate();
public static readonly string FloatMenu_CleanSelf = "FloatMenu_CleanSelf".Translate();

View File

@ -46,15 +46,25 @@ namespace RJW_Menstruation
public static class Utility
{
public static float GetCumVolume(this Pawn pawn)
{
CompHediffBodyPart part = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn))?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("penis")).InRandomOrder().FirstOrDefault().TryGetComp<rjw.CompHediffBodyPart>();
if (part == null) part = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn))?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("ovipositorf")).InRandomOrder().FirstOrDefault().TryGetComp<rjw.CompHediffBodyPart>();
if (part == null) part = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn))?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("ovipositorm")).InRandomOrder().FirstOrDefault().TryGetComp<rjw.CompHediffBodyPart>();
if (part == null) part = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn))?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("tentacle")).InRandomOrder().FirstOrDefault().TryGetComp<rjw.CompHediffBodyPart>();
float res = part?.FluidAmmount * part.FluidModifier * pawn.BodySize * Rand.Range(0.8f, 1.2f) * RJWSettings.cum_on_body_amount_adjust * 0.3f ?? 0.0f;
CompHediffBodyPart part = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn))?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("penis")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>();
if (part == null) part = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn))?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("ovipositorf")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>();
if (part == null) part = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn))?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("ovipositorm")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>();
if (part == null) part = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn))?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("tentacle")).InRandomOrder().FirstOrDefault()?.TryGetComp<CompHediffBodyPart>();
float res = 0;
try
{
res = part.FluidAmmount * part.FluidModifier * pawn.BodySize * Rand.Range(0.8f, 1.2f) * RJWSettings.cum_on_body_amount_adjust * 0.3f;
}
catch (NullReferenceException)
{
res = 0.0f;
}
if (pawn.Has(Quirk.Messy)) res *= Rand.Range(4.0f,8.0f);
return res;
@ -149,7 +159,7 @@ namespace RJW_Menstruation
else if (hediff is Hediff_BasePregnancy)
{
Hediff_BasePregnancy h = (Hediff_BasePregnancy)hediff;
string fetustex = h.babies?.First()?.def.GetModExtension<PawnDNAModExtention>()?.fetusTexPath ?? "Fetus/Fetus_Default";
string fetustex = h.babies?.FirstOrDefault()?.def.GetModExtension<PawnDNAModExtention>()?.fetusTexPath ?? "Fetus/Fetus_Default";
if (h.GestationProgress < 0.2f) icon = comp.wombTex + "_Implanted";
else if (h.GestationProgress < 0.3f) icon += "Fetus/Fetus_Early00";
else if (h.GestationProgress < 0.4f) icon += fetustex + "00";
@ -167,7 +177,7 @@ namespace RJW_Menstruation
{
string icon = comp.wombTex;
float cumpercent = comp.TotalCumPercent;
if (cumpercent < 0.001f) icon = "Womb/Empty";
if (cumpercent < 0.001f) return ContentFinder<Texture2D>.Get("Womb/Empty", true);
else if (cumpercent < 0.01f) icon += "_Cum_00";
else if (cumpercent < 0.05f) icon += "_Cum_01";
else if (cumpercent < 0.11f) icon += "_Cum_02";
@ -230,7 +240,7 @@ namespace RJW_Menstruation
var hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_anusBPR(pawn)).Find((Hediff h) => h.def.defName.ToLower().Contains("anus"));
CompProperties_Anus Props = (CompProperties_Anus)hediff.TryGetComp<HediffComp_Anus>().props;
string icon;
if (Props != null) icon = Props.analTex;
if (Props != null) icon = Props.analTex ?? "Genitals/Anal";
else icon = "Genitals/Anal";
if (hediff.Severity < 0.20f) icon += "00"; //micro
else if (hediff.Severity < 0.40f) icon += "01"; //tight
@ -278,7 +288,34 @@ namespace RJW_Menstruation
}
}
public static void DrawEggOverlay(this HediffComp_Menstruation comp, Rect wombRect)
{
Rect rect = new Rect(wombRect.xMax - wombRect.width/3, wombRect.y, wombRect.width / 3, wombRect.width / 3);
GUI.color = Color.white;
GUI.DrawTexture(rect, comp.GetEggIcon(), ScaleMode.ScaleToFit);
}
public static Texture2D GetEggIcon(this HediffComp_Menstruation comp)
{
if (comp.parent.pawn.IsPregnant())
{
if (comp.parent.pawn.GetPregnancyProgress() < 0.2f) return ContentFinder<Texture2D>.Get("Eggs/Egg_Implanted00", true);
else return ContentFinder<Texture2D>.Get("Womb/Empty", true);
}
else if (!comp.IsEggExist) return ContentFinder<Texture2D>.Get("Womb/Empty", true);
else
{
int fertstage = comp.IsFertilized;
if (fertstage >= 0)
{
if (fertstage < 1) return ContentFinder<Texture2D>.Get("Eggs/Egg_Fertilized00", true);
else if (fertstage < 24) return ContentFinder<Texture2D>.Get("Eggs/Egg_Fertilized01", true);
else return ContentFinder<Texture2D>.Get("Eggs/Egg_Fertilized02", true);
}
else if (comp.IsEggFertilizing) return ContentFinder<Texture2D>.Get("Eggs/Egg_Fertilizing01", true);
else return ContentFinder<Texture2D>.Get("Eggs/Egg", true);
}
}