code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
  <Mod_Title>RJW Menstruation Cycle</Mod_Title>

  <Menstrual_Blood>menstrual blood</Menstrual_Blood>
  <Info_noCum>Empty</Info_noCum>
  <Stage_Follicular>Follicular</Stage_Follicular>
  <Stage_Ovulatory>Ovulation</Stage_Ovulatory>
  <Stage_Luteal>Luteal</Stage_Luteal>
  <Stage_Bleeding>In period</Stage_Bleeding>
  <Stage_Fertilized>Luteal</Stage_Fertilized>
  <Stage_Pregnant>Pregnant</Stage_Pregnant>
  <Stage_Recover>Recovering from birth</Stage_Recover>
  <Stage_None>None</Stage_None>
  <Stage_Climacteric>Climacteric</Stage_Climacteric>
  <Stage_Anestrus>Anestrus</Stage_Anestrus>
  <Button_HealthTab>Status</Button_HealthTab>
  <Button_MilkTooltip>Lactate self</Button_MilkTooltip>
  <Dialog_WombInfo01>State</Dialog_WombInfo01>
  <Dialog_WombInfo02>Fetus</Dialog_WombInfo02>
  <Dialog_WombInfo03>Father</Dialog_WombInfo03>
  <Dialog_WombInfo04>Cum list</Dialog_WombInfo04>
  <Dialog_WombInfo05>Fertilized</Dialog_WombInfo05>
  <Dialog_WombInfo06>Fertilizing</Dialog_WombInfo06>
  <Dialog_WombInfo07>Ovulation</Dialog_WombInfo07>
  <Dialog_WombInfo08></Dialog_WombInfo08>
  <Dialog_WombInfo09></Dialog_WombInfo09>

  <Option1_Label_1>enable womb icon</Option1_Label_1>
  <Option1_Label_2>enable button in health tab</Option1_Label_2>
  <Option2_Label>enable animal cycle</Option2_Label>
  <Option2_Desc>simulate animal's cycle.
this option will apply after save loaded
not recommended</Option2_Desc>
  <Option3_Label>implantation chance</Option3_Label>
  <Option3_Desc>set implantation chance of fertilized egg
this value determines finalizing chacne of impregnation</Option3_Desc>
  <Option4_Label>fertilization chance</Option4_Label>
  <Option4_Desc>set fertilize chance of 1mL of sperm on every hour
this value determines beginning chance of impregnation</Option4_Desc>
  <Option5_Label>cum decay ratio per hour</Option5_Label>
  <Option5_Desc>cum will decrease about this ratio
this value affects on the fertility chacne indirectly</Option5_Desc>
  <Option6_Label>cum fertility decay ratio per hour</Option6_Label>
  <Option6_Desc>cum will lose fertility about this ratio
this value affects on the fertility chance indirectly
estimated sperm lifespan: cum lose most of fertility at this time.</Option6_Desc>
  <Option7_Label>cycle accelerate</Option7_Label>
  <Option7_Desc>accelerate menstrution cycle</Option7_Desc>
  <Option8_Label>Debug</Option8_Label>
  <Option8_Desc>show debug informations.</Option8_Desc>
  <Option9_Label>womb status</Option9_Label>
  <Option9_Desc>draw womb icon in status window</Option9_Desc>
  <Option10_Label>vagina and breast status</Option10_Label>
  <Option10_Desc>draw vagina, anus and breast icon in status window</Option10_Desc>
  <Option11_Label>Fetus information level</Option11_Label>
  <Option11_Desc_1>Show all informations about fetus</Option11_Desc_1>
  <Option11_Desc_2>Show all informations about fetus after noticed pregnancy</Option11_Desc_2>
  <Option11_Desc_3>Do not show informations about fetus, but display image of fetus after noticed pregnancy</Option11_Desc_3>
  <Option11_Desc_4>Do not show fetus image and informations</Option11_Desc_4>
  <Option12_Label>enable menopause</Option12_Label>
  <Option12_Desc>enable menopause effect that makes pawn infertile in time progress
if you have problems with long life races, turn off this option.
this option will apply after save loaded</Option12_Desc>
  <Option13_Label>use multiple pregnancy</Option13_Label>
  <Option13_Desc>use multiple pregnancy instead RJW's default pregnancy
disable this option if you are in trouble with impregnation</Option13_Desc>
  <Option14_Label>enable hetero ovular twins</Option14_Label>
  <Option14_Desc>enable multiple eggs can get pregnant</Option14_Desc>
  <Option15_Label>enable enzygotic twins</Option15_Label>
  <Option15_Desc>enable single egg to result multiple offsprings</Option15_Desc>
  <Option16_Label>enzygotic twins chance</Option16_Label>
  <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>
  <Option19_Label_1>bleeding amount</Option19_Label_1>
  <Option19_Label_2>estimated total bleeding amount</Option19_Label_2>
  <Option19_Desc>set bleeding amount
actual bleeding amount can be different depending on vagina
the generic bleeding amount of human female is about 20~80ml per month</Option19_Desc>
  <Option20_Label_1>Colonist</Option20_Label_1>
  <Option20_Label_2>Prisoner</Option20_Label_2>
  <Option20_Label_3>Ally Faction</Option20_Label_3>
  <Option20_Label_4>Neutral</Option20_Label_4>
  <Option20_Label_5>Hostile Faction</Option20_Label_5>
  <Option21_Label>target pawns</Option21_Label>
  <Option21_Desc>the gizmo and button will appear for these pawns</Option21_Desc>
  <Option22_Label>use hybrid extension</Option22_Label>
  <Option22_Desc>overrides RJW and RaceSupport's hybrid definition
Dominant hybrid extension determines whose definition used first. Not recommended to change this</Option22_Desc>
  <Option23_Label>Dominant hybrid extension</Option23_Label>
  <Option23_Label_1>Mother</Option23_Label_1>
  <Option23_Label_2>Father</Option23_Label_2>
  <Option24_Label>Transition variance of nipples after pregnancy</Option24_Label>
  <Option24_Desc>Set how much nipples/areolas be darker/wider on every pregnancy.</Option24_Desc>
  <Option25_Label>Permanent transition variance of Nipples</Option25_Label>
  <Option25_Desc>Set how much nipples/areolas be darker/wider permanently on every pregnancy.</Option25_Desc>
  <Option26_Label>Maximum transition</Option26_Label>
  <Option26_Desc>Nipples/areolas won't be darker/wider than this value.</Option26_Desc>
  <Option27_Label>Transition speed of nipples</Option27_Label>
  <Option27_Desc>Set speed of transition of nipples/areolas.
1 = instant transition</Option27_Desc>
  <Option28_Label>Customize Hybrids</Option28_Label>
  <Option28_Tooltip>Open custom hybrid editor.
This will overrides hybrid definitions of XML files.</Option28_Tooltip>
  <Option29_Label>Allow shrink icon</Option29_Label>
  <Option29_Desc>Let icon become smaller If needed.</Option29_Desc>
  <EstimatedCumLifespan>estimated sperm lifespan</EstimatedCumLifespan>
  <FertilityDesc>The chance of pregnancy of fertilized egg.
The white overlay is indicates fertilization chance of sperms in womb.</FertilityDesc>

  <FloatMenu_CleanSelf>Vaginal washing</FloatMenu_CleanSelf>

  <CustomHybrid_List_Title>Custom Hybrid Editor</CustomHybrid_List_Title>
  <CustomHybrid_Title>Hybrids of {0}</CustomHybrid_Title>
  <CustomHybrid_Tooltip>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.</CustomHybrid_Tooltip>

</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
  <Absorber.label>성기</Absorber.label>
</LanguageData>

license: unknown


code:
<?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>
  <Hediff_Estrus.label>발정기</Hediff_Estrus.label>
  <Hediff_Estrus.description>발정기입니다.</Hediff_Estrus.description>
  <Hediff_Estrus_Consealed.label>발정기(숨김)</Hediff_Estrus_Consealed.label>
  <Hediff_Estrus_Consealed.description>발정기입니다.</Hediff_Estrus_Consealed.description>
  <Hediff_PainReliever.label>진통제</Hediff_PainReliever.label>
  <Hediff_PainReliever.description>약간의 고통을 줄여줍니다.</Hediff_PainReliever.description>

</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
  <VaginaWashing.reportString>질세척 하는중</VaginaWashing.reportString>

</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
  <Surgery_ExpandAreola.label>유륜확대 수술</Surgery_ExpandAreola.label>
  <Surgery_ExpandAreola.description>유륜을 크게만듭니다.</Surgery_ExpandAreola.description>
  <Surgery_ExpandAreola.jobString>유륜확대 수술중</Surgery_ExpandAreola.jobString>
  <Surgery_ContractAreola.label>유륜축소 수술</Surgery_ContractAreola.label>
  <Surgery_ContractAreola.description>유륜을 작게만듭니다.</Surgery_ContractAreola.description>
  <Surgery_ContractAreola.jobString>유륜축소 수술중</Surgery_ContractAreola.jobString>
  <Surgery_ExpandNipple.label>유두확대 수술</Surgery_ExpandNipple.label>
  <Surgery_ExpandNipple.description>유두를 크게만듭니다.</Surgery_ExpandNipple.description>
  <Surgery_ExpandNipple.jobString>유두확대 수술중</Surgery_ExpandNipple.jobString>
  <Surgery_ContractNipple.label>유두축소 수술</Surgery_ContractNipple.label>
  <Surgery_ContractNipple.description>유두를 작게만듭니다.</Surgery_ContractNipple.description>
  <Surgery_ContractNipple.jobString>유두축소 수술중</Surgery_ContractNipple.jobString>
</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
  <AmountofCreampied.label>질내사정</AmountofCreampied.label>
  <AmountofCreampied.description>질내사정당한 정액 양</AmountofCreampied.description>
</LanguageData>


code:
<?xml version="1.0" encoding="utf-8"?>
<LanguageData>
  <MaxAbsorbable.label>흡수량</MaxAbsorbable.label>
  <MaxAbsorbable.description>액체를 흡수할수 있는 정도입니다.</MaxAbsorbable.description>

</LanguageData>


code:
<?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>난소를 재생시켜 배출할수있는 난자의 양을 증가시킵니다.
난자 소모량이 클수록 효과가 줄어듭니다.
폐경을 회복시키지 않습니다.</OvaryRegenerationPill.description>
  <SuperovulationInducingAgent.label>과배란 유도제</SuperovulationInducingAgent.label>
  <SuperovulationInducingAgent.description>과배란을 유도하는 약물입니다.
조기폐경을 초래할수도 있습니다.</SuperovulationInducingAgent.description>
  <PainReliever.label>진통제</PainReliever.label>
  <PainReliever.description>하루동안 약간의 통증을 줄여줍니다.</PainReliever.description>
  <FilthMixture.label>혼합물</FilthMixture.label>

</LanguageData>


code:
<?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>  <HaterCameInsideM.stages.0.description>그년한테 질싸를했어</HaterCameInsideM.stages.0.description>
  <UexpectedPregnancyMild.stages.0.label>원치않은 임신</UexpectedPregnancyMild.stages.0.label>
  <UexpectedPregnancyMild.stages.0.description>어떻게 해야하지?...</UexpectedPregnancyMild.stages.0.description>
  <TookContraptivePill.stages.0.label>피임약 복용</TookContraptivePill.stages.0.label>
  <TookContraptivePill.stages.0.description>괜찮을거야</TookContraptivePill.stages.0.description>
  <HateTookContraptivePill.stages.0.label>피임약 복용</HateTookContraptivePill.stages.0.label>
  <HateTookContraptivePill.stages.0.description>임신하고싶어</HateTookContraptivePill.stages.0.description>
</LanguageData>


code:
<?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>
  <Stage_Anestrus>휴지기</Stage_Anestrus>
  <Button_HealthTab>상태창</Button_HealthTab>
  <Button_MilkTooltip>모유 짜기</Button_MilkTooltip>
  <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_1>자궁아이콘 활성화</Option1_Label_1>
  <Option1_Label_2>건강탭에 버튼 추가</Option1_Label_2>
  <Option2_Label>동물주기 활성화</Option2_Label>
  <Option2_Desc>동물의 월경주기를 시뮬레이션합니다.
변경한후에 세이브로드가 필요합니다.
not recommended</Option2_Desc>
  <Option3_Label>착상확률</Option3_Label>
  <Option3_Desc>수정란의 착상확률을 설정합니다.</Option3_Desc>
  <Option4_Label>수정확률</Option4_Label>
  <Option4_Desc>1시간마다 정자가 난자를 수정시킬확률을 설정합니다.</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>Debug</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>시간이 지남에따라 불임상태로 만드는 폐경기를 활성화합니다.
수명이 긴 종족을 사용할때 문제가 있으면 이 옵션을 끄세요.
변경한후에 세이브로드가 필요합니다.</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>
  <Option18_Label>난자 오버레이</Option18_Label>
  <Option18_Desc>자궁그림 위에 난자그림를 표시합니다.</Option18_Desc>
  <Option19_Label_1>생리양</Option19_Label_1>
  <Option19_Label_2>예상되는 총 생리양</Option19_Label_2>
  <Option19_Desc>생리혈의 양을 설정합니다.
실제 생리양은 보지에따라 다를수 있습니다.
일반적인 인간 여성의 생리량은 약 20~80ml입니다.</Option19_Desc>
  <Option20_Label_1>정착민</Option20_Label_1>
  <Option20_Label_2>죄수</Option20_Label_2>
  <Option20_Label_3>동맹관계</Option20_Label_3>
  <Option20_Label_4>중립</Option20_Label_4>
  <Option20_Label_5>적대관계</Option20_Label_5>
  <Option21_Label>표시 대상</Option21_Label>
  <Option21_Desc>아이콘과 버튼을 표시할 대상입니다.</Option21_Desc>
  <Option22_Label>잡종 정의 대체</Option22_Label>
  <Option22_Desc>RJW와 RaceSupport의 잡종정의를 대체합니다.
우선순위는 누구의 잡종 정의를 우선으로 사용할지 정합니다. 변경하지 않는것을 추천합니다.</Option22_Desc>
  <Option23_Label>우선순위</Option23_Label>
  <Option23_Label_1>모</Option23_Label_1>
  <Option23_Label_2>부</Option23_Label_2>
  <Option24_Label>임신후 유두 변화량</Option24_Label>
  <Option24_Desc>임신후에 유두가 얼마나 어두워지고 커지는지 설정합니다.</Option24_Desc>
  <Option25_Label>유두 영구변화량</Option25_Label>
  <Option25_Desc>매번 임신할때마다 유두가 얼마나 영구적으로 어두워지고 커지는지 설정합니다.</Option25_Desc>
  <Option26_Label>최대 변화량</Option26_Label>
  <Option26_Desc>유두는 이 값 이상으로 변하지 않습니다.</Option26_Desc>
  <Option27_Label>유두 변화 속도</Option27_Label>
  <Option27_Desc>유두가 얼마나 빨리 변하는지 설정합니다.</Option27_Desc>
  <Option28_Label>잡종 정의 변경하기</Option28_Label>
  <Option28_Tooltip>사용자 지정 잡종 편집기를 엽니다.
이 설정은 XML파일의 잡종 정의를 대체합니다.</Option28_Tooltip>
  <Option29_Label>아이콘 축소 허용</Option29_Label>
  <Option29_Desc>아이콘 축소를 허용합니다.</Option29_Desc>
  <EstimatedCumLifespan>정자 예상수명</EstimatedCumLifespan>
  <FertilityDesc>수정란이 임신으로 진행될 확률입니다.
흰색 오버레이는 정자가 난자를 수정시킬 확률을 표시하는 것입니다.</FertilityDesc>

  <FloatMenu_CleanSelf>질세척</FloatMenu_CleanSelf>

  <CustomHybrid_List_Title>사용자 지정 잡종 편집기</CustomHybrid_List_Title>
  <CustomHybrid_Title>{0}의 잡종설정</CustomHybrid_Title>
  <CustomHybrid_Tooltip>{0}이(가) {1}와(과) 교미했을 때, {2}이(가) {3}의 확률로 태어납니다.
만약 두 종족이 서로에 대한 잡종 정의가 있을경우 아버지 쪽의 정의가 우선적으로 사용됩니다.</CustomHybrid_Tooltip>

</LanguageData>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<JobDef>
		<defName>LactateSelf_MC</defName>
		<driverClass>MilkModule.JobDriver_MilkSelf_MC</driverClass>
		<reportString>lactating self</reportString>
		<allowOpportunisticPrefix>true</allowOpportunisticPrefix>
	</JobDef>
</Defs>


code:
<?xml version="1.0" encoding="UTF-8"?>

<Patch>
	<Operation Class="PatchOperationAdd">
		<xpath>Defs/ThingDef[defName="RJW_FertPill"]/ingestible/outcomeDoers</xpath>
		<value>

		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/ThingDef[defName="RJW_Contraceptive"]/ingestible/outcomeDoers</xpath>
		<value>

		</value>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="UTF-8"?>

<Patch>
	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="Vagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>10</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>14</folicularIntervalDays>
					<lutealIntervalDays>14</lutealIntervalDays>
					<bleedingIntervalDays>6</bleedingIntervalDays>
					<recoveryIntervalDays>30</recoveryIntervalDays>
					<eggLifespanDays>1</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<ovaryPower>420</ovaryPower>
					<consealedEstrus>true</consealedEstrus>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="GenericVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>10</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>14</folicularIntervalDays>
					<lutealIntervalDays>14</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>30</recoveryIntervalDays>
					<eggLifespanDays>3</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="HydraulicVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>10</maxCumCapacity>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/BionicVagina</vagTex>
					<infertile>true</infertile>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="BionicVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>10</maxCumCapacity>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/BionicVagina</vagTex>
					<infertile>true</infertile>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="ArchotechVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>10</maxCumCapacity>
					<baseImplantationChanceFactor>2.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>2.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>14</folicularIntervalDays>
					<lutealIntervalDays>14</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>0</recoveryIntervalDays>
					<eggLifespanDays>3</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<consealedEstrus>true</consealedEstrus>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="Anus"]</xpath>
		<value>
			<comps>

					<analTex>Genitals/Anal</analTex>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="HydraulicAnus"]</xpath>
		<value>
			<comps>

					<analTex>Genitals/BionicAnal</analTex>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="BionicAnus"]</xpath>
		<value>
			<comps>

					<analTex>Genitals/BionicAnal</analTex>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="ArchotechAnus"]</xpath>
		<value>
			<comps>

					<analTex>Genitals/Anal</analTex>

			</comps>
		</value>
	</Operation>

</Patch>


code:
<?xml version="1.0" encoding="UTF-8"?>

<Patch>
	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="DogVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>8</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>14</folicularIntervalDays>
					<lutealIntervalDays>166</lutealIntervalDays>
					<bleedingIntervalDays>8</bleedingIntervalDays>
					<recoveryIntervalDays>15</recoveryIntervalDays>
					<eggLifespanDays>4</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<estrusDaysBeforeOvulation>9</estrusDaysBeforeOvulation>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="CatVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>6</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>2.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>9</folicularIntervalDays>
					<lutealIntervalDays>10</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>15</recoveryIntervalDays>
					<eggLifespanDays>1</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<breedingSeason>FirstHalf</breedingSeason>
					<estrusDaysBeforeOvulation>9</estrusDaysBeforeOvulation>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="HorseVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>25</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>7</folicularIntervalDays>
					<lutealIntervalDays>14</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>30</recoveryIntervalDays>
					<eggLifespanDays>1</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<breedingSeason>FirstHalf</breedingSeason>
					<estrusDaysBeforeOvulation>5</estrusDaysBeforeOvulation>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="DragonVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>50</maxCumCapacity>
					<baseImplantationChanceFactor>0.5</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>0.2</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>270</folicularIntervalDays>
					<lutealIntervalDays>30</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>300</recoveryIntervalDays>
					<eggLifespanDays>30</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<estrusDaysBeforeOvulation>0</estrusDaysBeforeOvulation>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="NarrowVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>10</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>5</folicularIntervalDays>
					<lutealIntervalDays>16</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>15</recoveryIntervalDays>
					<eggLifespanDays>2</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<estrusDaysBeforeOvulation>1</estrusDaysBeforeOvulation>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="RodentVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>5</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>2.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>6</folicularIntervalDays>
					<lutealIntervalDays>9</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>3</recoveryIntervalDays>
					<eggLifespanDays>1</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<estrusDaysBeforeOvulation>6</estrusDaysBeforeOvulation>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="SlimeVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>5</maxCumCapacity>
					<baseImplantationChanceFactor>2.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>2.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>12</folicularIntervalDays>
					<lutealIntervalDays>9</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>3</recoveryIntervalDays>
					<eggLifespanDays>1</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<estrusDaysBeforeOvulation>6</estrusDaysBeforeOvulation>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="DemonVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>10</maxCumCapacity>
					<baseImplantationChanceFactor>2.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>2.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>14</folicularIntervalDays>
					<lutealIntervalDays>14</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>3</recoveryIntervalDays>
					<eggLifespanDays>1</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<estrusDaysBeforeOvulation>6</estrusDaysBeforeOvulation>

			</comps>
		</value>
	</Operation>

</Patch>


code:
<?xml version="1.0" encoding="UTF-8"?>

<Patch>
	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="Breasts"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="HydraulicBreasts"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="BionicBreasts"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="ArchotechBreasts"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="SlimeBreasts"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

</Patch>


code:
<?xml version="1.0" encoding="UTF-8"?>

<Patch>
	<Operation Class="PatchOperationAdd">
		<xpath>Defs/ThingDef[defName="Cloth"]/stuffProps/statFactors</xpath>
		<value>
			<MaxAbsorbable>1.0</MaxAbsorbable>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/ThingDef[defName="Synthread"]/stuffProps/statFactors</xpath>
		<value>
			<MaxAbsorbable>2.0</MaxAbsorbable>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/ThingDef[defName="DevilstrandCloth"]/stuffProps/statFactors</xpath>
		<value>
			<MaxAbsorbable>0.5</MaxAbsorbable>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/ThingDef[defName="Hyperweave"]/stuffProps/statFactors</xpath>
		<value>
			<MaxAbsorbable>0.25</MaxAbsorbable>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/ThingDef[@Name="WoolBase"]/stuffProps/statFactors</xpath>
		<value>
			<MaxAbsorbable>1.5</MaxAbsorbable>
		</value>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="UTF-8"?>
<Patch>
	<Operation Class="PatchOperationConditional">
		<xpath>/Defs/ThingDef[defName="HumanMilk" or defName="HumanoidMilk"]/graphicData</xpath>
		<match Class="PatchOperationReplace">
			<xpath>/Defs/ThingDef[defName="HumanMilk" or defName="HumanoidMilk"]/graphicData</xpath>
			<value>
				<graphicData>
					<texPath>Things/Item/Milkbottle</texPath>
					<graphicClass>Graphic_StackCount</graphicClass>
				</graphicData>
			</value>
		</match>
	</Operation>

</Patch>


code:
<?xml version="1.0" encoding="UTF-8"?>

<Patch>
	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[@Name="BigBirdThingBase"]</xpath>
		<value>

					<fetusTexPath>Fetus/Birds/Fetus_Bird</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.2</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[defName="Chicken"]</xpath>
		<value>

					<fetusTexPath>Fetus/Birds/Fetus_Bird</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.2</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[defName="Duck"]</xpath>
		<value>

					<fetusTexPath>Fetus/Birds/Fetus_Bird</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.2</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[defName="Goose"]</xpath>
		<value>

					<fetusTexPath>Fetus/Birds/Fetus_Bird</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.2</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[defName="YorkshireTerrier"]</xpath>
		<value>

					<fetusTexPath>Fetus/Canines/Fetus_Dog</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.05</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[defName="Husky"]</xpath>
		<value>

					<fetusTexPath>Fetus/Canines/Fetus_Dog</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.05</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[defName="LabradorRetriever"]</xpath>
		<value>

					<fetusTexPath>Fetus/Canines/Fetus_Dog</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.05</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[defName="YorkshireTerrier"]</xpath>
		<value>

					<fetusTexPath>Fetus/Canines/Fetus_Dog</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.05</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[defName="Warg"]</xpath>
		<value>

					<fetusTexPath>Fetus/Canines/Fetus_Dog</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.05</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[@Name="ThingBaseWolf"]</xpath>
		<value>

					<fetusTexPath>Fetus/Canines/Fetus_Dog</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.05</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[@Name="ThingBaseFox"]</xpath>
		<value>

					<fetusTexPath>Fetus/Canines/Fetus_Dog</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.05</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[defName="Pig"]</xpath>
		<value>

					<fetusTexPath>Fetus/Livestocks/Fetus_Pig</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.8</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[defName="WildBoar"]</xpath>
		<value>

					<fetusTexPath>Fetus/Livestocks/Fetus_Pig</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.8</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[@Name="BaseInsect"]</xpath>
		<value>

					<fetusTexPath>Fetus/Insects/Fetus_Insect</fetusTexPath>
					<cumColor>(153,212,89,255)</cumColor>
					<cumThickness>0.5</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>

</Patch>


code:
<?xml version="1.0" encoding="UTF-8"?>

<Patch>
	<Operation Class="PatchOperationAddModExtension">
		<xpath>Defs/ThingDef[defName="Human"]</xpath>
		<value>

					<fetusTexPath>Fetus/Fetus_Default</fetusTexPath>
					<cumColor>(255,255,255,255)</cumColor>
					<cumThickness>0.2</cumThickness>
					<hybridExtension>
					</hybridExtension>

		</value>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>
	<name>RJW Menstruation Cycle Race Support</name>
	<author>a</author>
	<supportedVersions>

1.2

	</supportedVersions>
	<modDependencies>

			<packageId>rjw.menstruation</packageId>
			<displayName>RJW Menstruation</displayName>
			<downloadUrl>https://github.com/moreoreganostodump/RJW_Menstruation</downloadUrl>

			<packageId>Abraxas.RJW.RaceSupport</packageId>
			<displayName>RJW - RaceSupport</displayName>
			<downloadUrl>https://gitgud.io/Abraxas/rjw-race-support</downloadUrl>

	</modDependencies>
	<loadAfter>

Abraxas.RJW.RaceSupport

rjw.menstruation

	</loadAfter>
	<packageId>rjw.menstruation.racesupport</packageId>
	<description>good good</description>
</ModMetaData>

path: 1.2/RJW Menstruation Race Support/About/About.xml


code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest>
	<identifier>RJW Menstruation Race Support</identifier>
	<version>8.9.0</version>
	<dependencies>
	</dependencies>
	<incompatibleWith />
	<loadAfter>
	</loadAfter>
	<suggests>
	</suggests>
</Manifest>

path: 1.2/RJW Menstruation Race Support/About/Manifest.xml


code:
<?xml version="1.0" encoding="UTF-8"?>

<Patch>
	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="CervineVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>18</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>10</folicularIntervalDays>
					<lutealIntervalDays>10</lutealIntervalDays>
					<bleedingIntervalDays>4</bleedingIntervalDays>
					<recoveryIntervalDays>30</recoveryIntervalDays>
					<eggLifespanDays>2</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<breedingSeason>SecondHalf</breedingSeason>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="CactoidVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>8</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>8</folicularIntervalDays>
					<lutealIntervalDays>12</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>0</recoveryIntervalDays>
					<eggLifespanDays>2</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<breedingSeason>Summer</breedingSeason>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="TreeVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>15</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>10</folicularIntervalDays>
					<lutealIntervalDays>12</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>30</recoveryIntervalDays>
					<eggLifespanDays>2</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<breedingSeason>Fall</breedingSeason>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="PistilVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>8</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>6</folicularIntervalDays>
					<lutealIntervalDays>12</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>30</recoveryIntervalDays>
					<eggLifespanDays>2</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<breedingSeason>Fall</breedingSeason>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="NephilaSlimeVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>12</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>14</folicularIntervalDays>
					<lutealIntervalDays>20</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>30</recoveryIntervalDays>
					<eggLifespanDays>8</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="GhostVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>2</maxCumCapacity>
					<baseImplantationChanceFactor>0.1</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>0.1</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>14</folicularIntervalDays>
					<lutealIntervalDays>14</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>0</recoveryIntervalDays>
					<eggLifespanDays>1</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<consealedEstrus>true</consealedEstrus>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="NecroVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>10</maxCumCapacity>
					<baseImplantationChanceFactor>0.1</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>0.1</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>14</folicularIntervalDays>
					<lutealIntervalDays>14</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>0</recoveryIntervalDays>
					<eggLifespanDays>1</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<consealedEstrus>true</consealedEstrus>

			</comps>
		</value>
	</Operation>

</Patch>

path: 1.2/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Animal_RaceSupport.xml


code:
<?xml version="1.0" encoding="UTF-8"?>

<Patch>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="BigRaceBreats"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="OrcBreasts"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="GhoulBreasts"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="GhostBreasts"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="NecroBreasts"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="NephilaBreasts"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="NephilaSlimeBreasts"]</xpath>
		<value>
			<comps>

					<BreastTex>Breasts/Breast</BreastTex>
					<BlacknippleColor>(55,20,0)</BlacknippleColor>

			</comps>
		</value>
	</Operation>

</Patch>

path: 1.2/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Breasts_RaceSupport.xml


code:
<?xml version="1.0" encoding="UTF-8"?>

<Patch>
	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="ElfVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>10</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>1800</folicularIntervalDays>
					<lutealIntervalDays>1800</lutealIntervalDays>
					<bleedingIntervalDays>6</bleedingIntervalDays>
					<recoveryIntervalDays>30</recoveryIntervalDays>
					<eggLifespanDays>1</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<ovaryPower>620</ovaryPower>
					<consealedEstrus>true</consealedEstrus>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="ElfAnus"]</xpath>
		<value>
			<comps>

					<analTex>Genitals/Anal</analTex>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="OrcVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>10</maxCumCapacity>
					<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>7</folicularIntervalDays>
					<lutealIntervalDays>10</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>10</recoveryIntervalDays>
					<eggLifespanDays>1</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<ovaryPower>620</ovaryPower>
					<consealedEstrus>true</consealedEstrus>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="OrcAnus"]</xpath>
		<value>
			<comps>

					<analTex>Genitals/Anal</analTex>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="GhoulVagina"]</xpath>
		<value>
			<comps>

					<maxCumCapacity>10</maxCumCapacity>
					<baseImplantationChanceFactor>0.2</baseImplantationChanceFactor>
					<basefertilizationChanceFactor>0.2</basefertilizationChanceFactor>
					<deviationFactor>0.05</deviationFactor>
					<folicularIntervalDays>14</folicularIntervalDays>
					<lutealIntervalDays>14</lutealIntervalDays>
					<bleedingIntervalDays>0</bleedingIntervalDays>
					<recoveryIntervalDays>10</recoveryIntervalDays>
					<eggLifespanDays>1</eggLifespanDays>
					<wombTex>Womb/Womb</wombTex>
					<vagTex>Genitals/Vagina</vagTex>
					<ovaryPower>420</ovaryPower>
					<consealedEstrus>true</consealedEstrus>

			</comps>
		</value>
	</Operation>

	<Operation Class="PatchOperationAdd">
		<xpath>Defs/rjw.HediffDef_PartBase[defName="GhoulAnus"]</xpath>
		<value>
			<comps>

					<analTex>Genitals/Anal</analTex>

			</comps>
		</value>
	</Operation>

</Patch>

path: 1.2/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Humanlike_RaceSupport.xml


code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using Verse.AI;
using RimWorld;
using Milk;
using RJW_Menstruation;

namespace MilkModule
{
    public class JobDriver_MilkSelf_MC : JobDriver_MilkSelf
    {
        HumanCompHasGatherableBodyResource comp;
        HediffComp_Breast breastcomp;

        protected override float Fullness
        {
            get
            {
                return comp.Fullness;
            }
        }

        protected override void PreMakeNewToils()
        {
            comp = GetMilkComp(pawn);
            breastcomp = pawn.GetBreastComp();
        }

        protected override void Gathered()
        {
            comp.Gathered(pawn);
        }

        protected override void PostTickAction()
        {
            if (breastcomp != null)
            {
                breastcomp.AdjustAreolaSize(Rand.Range(0.0f, 0.0001f * Configurations.NipplePermanentTransitionVariance));
                breastcomp.AdjustNippleSize(Rand.Range(0.0f, 0.0001f * Configurations.NipplePermanentTransitionVariance));
            }
        }

        public static HumanCompHasGatherableBodyResource GetMilkComp(Pawn pawn)
        {
            HumanCompHasGatherableBodyResource result;
            if (pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Heavy_Lactating_Permanent))
            {
                result = pawn.TryGetComp<CompHyperMilkableHuman>();

            }
            else
            {
                result = pawn.TryGetComp<CompMilkableHuman>();
            }
            return result;
        }

    }

    //public class JobDriver_HumanMilkSelf : JobDriver
    //{
    //    const float milkingTime = 250f;//ticks - 120 = 2 real seconds, 3 in-game minutes
    //
    //    public override bool TryMakePreToilReservations(bool errorOnFailed)
    //    {
    //        return pawn.Reserve(pawn, job, 1, -1, null, errorOnFailed);
    //    }
    //
    //    protected override IEnumerable<Toil> MakeNewToils()
    //    {
    //
    //        HumanCompHasGatherableBodyResource Comp = GetMilkComp(pawn);
    //        HediffComp_Breast breastcomp = pawn.GetBreastComp();
    //        this.FailOn(delegate
    //        {
    //            return !(Comp.Fullness > 0.01f);
    //        });
    //        Toil milking = Toils_General.Wait((int)(50 + milkingTime * Comp.Fullness), TargetIndex.None);//duration of
    //
    //        milking.WithProgressBarToilDelay(TargetIndex.A);
    //        milking.tickAction = delegate ()
    //        {
    //            if (breastcomp != null)
    //            {
    //                breastcomp.AdjustAreolaSize(Rand.Range(0.0f,0.0001f * Configurations.NipplePermanentTransitionVariance));
    //                breastcomp.AdjustNippleSize(Rand.Range(0.0f,0.0001f * Configurations.NipplePermanentTransitionVariance));
    //            }
    //
    //        };
    //        yield return milking;
    //        yield return new Toil()
    //        {
    //            initAction = delegate ()
    //            {
    //                Comp.Gathered(pawn);
    //            }
    //        };
    //        //yield return excreting;
    //        yield break;
    //
    //    }
    //
    //
    //    public static HumanCompHasGatherableBodyResource GetMilkComp(Pawn pawn)
    //    {
    //        HumanCompHasGatherableBodyResource result;
    //        if (pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Heavy_Lactating_Permanent))
    //        {
    //            result = pawn.TryGetComp<CompHyperMilkableHuman>();
    //        }
    //        else
    //        {
    //            result = pawn.TryGetComp<CompMilkableHuman>();
    //        }
    //        return result;
    //    }
    //
    //
    //}

}


code:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{3591B3C1-EB57-44BF-AB69-A613E097A7F8}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>MilkModule</RootNamespace>
    <AssemblyName>MilkModule</AssemblyName>
    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>..\..\..\MilkModule\Assemblies\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="0Harmony">
      <HintPath>D:\잉어\Lib\Harmony.2.0.4.0\net472\0Harmony.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Assembly-CSharp">
      <HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Milk">
      <HintPath>..\..\..\..\rjw-mc-master\1.2\Assemblies\Milk.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Xml" />
    <Reference Include="UnityEngine">
      <HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="UnityEngine.CoreModule">
      <HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="UnityEngine.IMGUIModule">
      <HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="UnityEngine.TextCoreModule">
      <HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.TextCoreModule.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="UnityEngine.TextRenderingModule">
      <HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.TextRenderingModule.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="UnityEngine.UI">
      <HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UI.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="UnityEngine.UIElementsModule">
      <HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UIElementsModule.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="UnityEngine.UIModule">
      <HintPath>..\..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UIModule.dll</HintPath>
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="JobDriver_MilkSelf.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\RJW_Menstruation\RJW_Menstruation.csproj">
      <Project>{eed2f3b9-8c20-4194-919e-8d151b29f70b}</Project>
      <Name>RJW_Menstruation</Name>
      <Private>False</Private>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>


code:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
// 이러한 특성 값을 변경하세요.
[assembly: AssemblyTitle("MilkModule")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MilkModule")]
[assembly: AssemblyCopyright("Copyright ©  2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
[assembly: ComVisible(false)]

// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("3591b3c1-eb57-44bf-ab69-a613e097a7f8")]

// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
//      주 버전
//      부 버전
//      빌드 번호
//      수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
// 기본값으로 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]


code:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30907.101
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
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{EED2F3B9-8C20-4194-919E-8D151B29F70B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{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
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {0E4B1D09-2A81-4440-AC1E-32ACCECBEE0B}
	EndGlobalSection
EndGlobal


code:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
</configuration>


code:
using System;
using System.Collections.Generic;
using UnityEngine;
using Verse;

namespace RJW_Menstruation
{
    public class Configurations : ModSettings
    {
        public const float ImplantationChanceDefault = 0.65f;
        public const int ImplantationChanceAdjustDefault = 65;
        public const float FertilizeChanceDefault = 0.15f;
        public const int FertilizeChanceAdjustDefault = 150;
        public const float CumDecayRatioDefault = 0.30f;
        public const int CumDecayRatioAdjustDefault = 300;
        public const float CumFertilityDecayRatioDefault = 0.2f;
        public const int CumFertilityDecayRatioAdjustDefault = 200;
        public const int CycleAccelerationDefault = 6;
        public const float EnzygoticTwinsChanceDefault = 0.002f;
        public const int EnzygoticTwinsChanceAdjustDefault = 2;
        public const int MaxEnzygoticTwinsDefault = 9;
        public const int BleedingAmountDefault = 50;
        public const float NippleTransitionVarianceDefault = 0.2f;
        public const float NipplePermanentTransitionVarianceDefault = 0.02f;
        public const float NippleMaximumTransitionDefault = 0.4f;
        public const float NippleTransitionSpeedDefault = 0.035f;

        public static float ImplantationChance = ImplantationChanceDefault;
        public static int ImplantationChanceAdjust = ImplantationChanceAdjustDefault;
        public static float FertilizeChance = FertilizeChanceDefault;
        public static int FertilizeChanceAdjust = FertilizeChanceAdjustDefault;
        public static float CumDecayRatio = CumDecayRatioDefault;
        public static int CumDecayRatioAdjust = CumDecayRatioAdjustDefault;
        public static float CumFertilityDecayRatio = CumFertilityDecayRatioDefault;
        public static int CumFertilityDecayRatioAdjust = CumFertilityDecayRatioAdjustDefault;
        public static int CycleAcceleration = CycleAccelerationDefault;
        public static bool EnableWombIcon = true;
        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;
        public static bool UseMultiplePregnancy = true;
        public static bool EnableHeteroOvularTwins = true;
        public static bool EnableEnzygoticTwins = true;
        public static float EnzygoticTwinsChance = EnzygoticTwinsChanceDefault;
        public static int EnzygoticTwinsChanceAdjust = EnzygoticTwinsChanceAdjustDefault;
        public static int MaxEnzygoticTwins = MaxEnzygoticTwinsDefault;
        public static int BleedingAmount = BleedingAmountDefault;
        public static bool EnableButtonInHT = false;
        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 NippleTransitionVariance = NippleTransitionVarianceDefault;
        public static float NipplePermanentTransitionVariance = NipplePermanentTransitionVarianceDefault;
        public static float NippleMaximumTransition = NippleMaximumTransitionDefault;
        public static float NippleTransitionSpeed = NippleTransitionSpeedDefault;
        public static float NippleTransitionRatio
        {
            get
            {
                return NippleTransitionVariance * NippleTransitionSpeed;
            }
        }

        public static List<HybridInformations> HybridOverride = new List<HybridInformations>();

        public static bool HARActivated = false;
        public static bool LLActivated = false;

        public enum DetailLevel
        {
            All,
            OnReveal,
            HideFetusInfo,
            Hide
        }

        public static string LevelString(DetailLevel level)
        {
            switch (level)
            {
                case DetailLevel.All:
                    return "All";
                case DetailLevel.OnReveal:
                    return "On reveal";
                case DetailLevel.HideFetusInfo:
                    return "Hide fetus info";
                case DetailLevel.Hide:
                    return "Hide";
                default:
                    return "";
            }

        }
        public static string HybridString(bool b)
        {
            if (b) return Translations.Option23_Label_1;
            else return Translations.Option23_Label_2;
        }

        public static bool IsOverrideExist(ThingDef def)
        {
            List<HybridInformations> removeList = new List<HybridInformations>();
            if (!HybridOverride.NullOrEmpty())
                foreach(HybridInformations o in HybridOverride)
                {
                    if (o.IsNull) removeList.Add(o);
                    if (o.defName == def.defName) return true;
                }
            if (!removeList.NullOrEmpty())
            {
                foreach(HybridInformations o in removeList)
                {
                    HybridOverride.Remove(o);
                }
            }
            removeList.Clear();
            return false;
        }

        [Flags]
        public enum PawnFlags
        {
            None = 0,
            Colonist = 1,
            Prisoner = 2,
            Ally = 4,
            Neutral = 8,
            Hostile = 16
        }

        public override void ExposeData()
        {
            Scribe_Values.Look(ref ImplantationChanceAdjust, "ImplantationChanceAdjust", ImplantationChanceAdjust, true);
            Scribe_Values.Look(ref ImplantationChance, "ImplantationChance", ImplantationChance, true);
            Scribe_Values.Look(ref FertilizeChanceAdjust, "FertilizeChanceAdjust", FertilizeChanceAdjust, true);
            Scribe_Values.Look(ref FertilizeChance, "FertilizeChance", FertilizeChance, true);
            Scribe_Values.Look(ref CumDecayRatioAdjust, "CumDecayRatioAdjust", CumDecayRatioAdjust, true);
            Scribe_Values.Look(ref CumDecayRatio, "CumDecayRatio", CumDecayRatio, true);
            Scribe_Values.Look(ref CumFertilityDecayRatioAdjust, "CumFertilityDecayRatioAdjust", CumFertilityDecayRatioAdjust, true);
            Scribe_Values.Look(ref CumFertilityDecayRatio, "CumFertilityDecayRatio", CumFertilityDecayRatio, true);
            Scribe_Values.Look(ref CycleAcceleration, "CycleAcceleration", CycleAcceleration, true);
            Scribe_Values.Look(ref EnableWombIcon, "EnableWombIcon", EnableWombIcon, true);
            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);
            Scribe_Values.Look(ref UseMultiplePregnancy, "UseMultiplePregnancy", UseMultiplePregnancy, true);
            Scribe_Values.Look(ref EnableHeteroOvularTwins, "EnableHeteroOvularTwins", EnableHeteroOvularTwins, true);
            Scribe_Values.Look(ref EnableEnzygoticTwins, "EnableEnzygoticTwins", EnableEnzygoticTwins, true);
            Scribe_Values.Look(ref EnzygoticTwinsChance, "EnzygoticTwinsChance", EnzygoticTwinsChance, true);
            Scribe_Values.Look(ref EnzygoticTwinsChanceAdjust, "EnzygoticTwinsChanceAdjust", EnzygoticTwinsChanceAdjust, true);
            Scribe_Values.Look(ref MaxEnzygoticTwins, "MaxEnzygoticTwins", MaxEnzygoticTwins, true);
            Scribe_Values.Look(ref BleedingAmount, "BleedingAmount", BleedingAmount, true);
            Scribe_Values.Look(ref EnableButtonInHT, "EnableButtonInHT", EnableButtonInHT, true);
            Scribe_Values.Look(ref ShowFlag, "ShowFlag", ShowFlag, true);
            Scribe_Values.Look(ref UseHybridExtention, "UseHybridExtention", UseHybridExtention, true);
            Scribe_Values.Look(ref MotherFirst, "MotherFirst", MotherFirst, true);
            Scribe_Values.Look(ref NippleTransitionVariance, "NippleTransitionVariance", NippleTransitionVariance, true);
            Scribe_Values.Look(ref NipplePermanentTransitionVariance, "NipplePermanentTransitionVariance", NipplePermanentTransitionVariance, true);
            Scribe_Values.Look(ref NippleMaximumTransition, "NippleMaximumTransition", NippleMaximumTransition, true);
            Scribe_Values.Look(ref NippleTransitionSpeed, "NippleTransitionSpeed", NippleTransitionSpeed, true);
            Scribe_Values.Look(ref AllowShrinkIcon, "AllowShrinkIcon", AllowShrinkIcon, true);
            Scribe_Collections.Look(ref HybridOverride, saveDestroyedThings: true, label: "HybridOverride", lookMode: LookMode.Deep, ctorArgs: new object[0]);
            base.ExposeData();
        }

    }

    public class RJW_Menstruation : Mod
    {

        private readonly Configurations config;
        private static Vector2 scroll;

        public static float EstimatedBleedingAmount
        {
            get
            {
                int days = VariousDefOf.VaginaCompProperties.bleedingIntervalDays;
                return days * 0.03f * Configurations.BleedingAmount * 6;
            }
        }

        public static float EstimatedBleedingAmountPerHour
        {
            get
            {
                int days = VariousDefOf.VaginaCompProperties.bleedingIntervalDays;
                return 0.03f * Configurations.BleedingAmount * Configurations.CycleAcceleration;
            }
        }

        public RJW_Menstruation(ModContentPack content) : base(content)
        {
            config = GetSettings<Configurations>();
            Configurations.HARActivated = ModLister.HasActiveModWithName("Humanoid Alien Races 2.0");
            Configurations.LLActivated = ModLister.HasActiveModWithName("RimJobWorld - Licentia Labs");
        }

        public override string SettingsCategory()
        {
            return Translations.Mod_Title;
        }

        public override void DoSettingsWindowContents(Rect inRect)
        {
            Rect outRect = new Rect(0f, 30f, inRect.width, inRect.height - 30f);
            Rect mainRect = new Rect(0f, 0f, inRect.width - 30f, inRect.height + 480f);
            Listing_Standard listmain = new Listing_Standard();
            listmain.maxOneColumn = true;
            listmain.BeginScrollView(outRect, ref scroll, ref mainRect);
            listmain.Begin(mainRect);
            listmain.Gap(20f);
            Rect optionrect1 = listmain.GetRect(30f);
            Widgets.CheckboxLabeled(optionrect1.LeftHalf(), Translations.Option1_Label_1, ref Configurations.EnableWombIcon,false,null,null,true);
            Widgets.CheckboxLabeled(optionrect1.RightHalf(), Translations.Option1_Label_2, ref Configurations.EnableButtonInHT, false, null, null, true);
            //listmain.CheckboxLabeled(Translations.Option1_Label, ref Configurations.EnableWombIcon, Translations.Option1_Desc);
            if (Configurations.EnableWombIcon || Configurations.EnableButtonInHT)
            {
                Listing_Standard wombsection = listmain.BeginSection_NewTemp(400);
                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);
                wombsection.CheckboxLabeled(Translations.Option29_Label, ref Configurations.AllowShrinkIcon, Translations.Option29_Desc);
                if (wombsection.ButtonText(Translations.Option11_Label + ": " + Configurations.LevelString(Configurations.InfoDetail)))
                {
                    if (Configurations.InfoDetail == Configurations.DetailLevel.Hide) Configurations.InfoDetail = Configurations.DetailLevel.All;
                    else Configurations.InfoDetail++;
                }
                switch (Configurations.InfoDetail)
                {
                    case Configurations.DetailLevel.All:
                        wombsection.Label(Translations.Option11_Desc_1);
                        break;
                    case Configurations.DetailLevel.OnReveal:
                        wombsection.Label(Translations.Option11_Desc_2);
                        break;
                    case Configurations.DetailLevel.HideFetusInfo:
                        wombsection.Label(Translations.Option11_Desc_3);
                        break;
                    case Configurations.DetailLevel.Hide:
                        wombsection.Label(Translations.Option11_Desc_4);
                        break;
                }
                wombsection.Label(Translations.Option21_Label + " " + Configurations.ShowFlag, -1, Translations.Option21_Desc);
                Rect flagrect = wombsection.GetRect(30f);
                Rect[] flagrects = new Rect[5];
                for (int i = 0; i < 5; i++)
                {
                    flagrects[i] = new Rect(flagrect.x + (flagrect.width / 5) * i, flagrect.y, flagrect.width / 5, flagrect.height);
                }

                if (Widgets.ButtonText(flagrects[0], Translations.Option20_Label_1 + ": " + Configurations.ShowFlag.HasFlag(Configurations.PawnFlags.Colonist)))
                {
                    Configurations.ShowFlag ^= Configurations.PawnFlags.Colonist;
                }
                if (Widgets.ButtonText(flagrects[1], Translations.Option20_Label_2 + ": " + Configurations.ShowFlag.HasFlag(Configurations.PawnFlags.Prisoner)))
                {
                    Configurations.ShowFlag ^= Configurations.PawnFlags.Prisoner;
                }
                if (Widgets.ButtonText(flagrects[2], Translations.Option20_Label_3 + ": " + Configurations.ShowFlag.HasFlag(Configurations.PawnFlags.Ally)))
                {
                    Configurations.ShowFlag ^= Configurations.PawnFlags.Ally;
                }
                if (Widgets.ButtonText(flagrects[3], Translations.Option20_Label_4 + ": " + Configurations.ShowFlag.HasFlag(Configurations.PawnFlags.Neutral)))
                {
                    Configurations.ShowFlag ^= Configurations.PawnFlags.Neutral;
                }
                if (Widgets.ButtonText(flagrects[4], Translations.Option20_Label_5 + ": " + Configurations.ShowFlag.HasFlag(Configurations.PawnFlags.Hostile)))
                {
                    Configurations.ShowFlag ^= Configurations.PawnFlags.Hostile;
                }

                int Adjust = (int)(Configurations.NippleTransitionVariance * 1000);
                wombsection.Label(Translations.Option24_Label + " " + Configurations.NippleTransitionVariance* 100 + " / 100", -1,Translations.Option24_Desc);
                Adjust = (int)wombsection.Slider(Adjust,0,1000);
                Configurations.NippleTransitionVariance = (float)Adjust / 1000;

                Adjust = (int)(Configurations.NipplePermanentTransitionVariance * 1000);
                wombsection.Label(Translations.Option25_Label + " " + Configurations.NipplePermanentTransitionVariance*100 + " / 100", -1, Translations.Option25_Desc);
                Adjust = (int)wombsection.Slider(Adjust, 0, 1000);
                Configurations.NipplePermanentTransitionVariance = (float)Adjust / 1000;

                Adjust = (int)(Configurations.NippleMaximumTransition * 1000);
                wombsection.Label(Translations.Option26_Label + " " + Configurations.NippleMaximumTransition* 100 + " / 100", -1, Translations.Option26_Desc);
                Adjust = (int)wombsection.Slider(Adjust, 0, 1000);
                Configurations.NippleMaximumTransition = (float)Adjust / 1000;

                Adjust = (int)(Configurations.NippleTransitionSpeed * 1000);
                wombsection.Label(Translations.Option27_Label + " " + Configurations.NippleTransitionSpeed, -1, Translations.Option27_Desc);
                Adjust = (int)wombsection.Slider(Adjust, 0, 1000);
                Configurations.NippleTransitionSpeed = (float)Adjust / 1000;

                listmain.EndSection(wombsection);
            }

            listmain.CheckboxLabeled(Translations.Option2_Label, ref Configurations.EnableAnimalCycle, Translations.Option2_Desc);

            listmain.CheckboxLabeled(Translations.Option12_Label, ref Configurations.EnableMenopause, Translations.Option12_Desc);

            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;

            listmain.Label(Translations.Option4_Label + " " + Configurations.FertilizeChance * 100 + "%", -1, Translations.Option4_Desc);
            Configurations.FertilizeChanceAdjust = (int)listmain.Slider(Configurations.FertilizeChanceAdjust, 0, 1000);
            Configurations.FertilizeChance = (float)Configurations.FertilizeChanceAdjust / 1000;

            listmain.Label(Translations.Option5_Label + " " + Configurations.CumDecayRatio * 100 + "%", -1, Translations.Option5_Desc);
            Configurations.CumDecayRatioAdjust = (int)listmain.Slider(Configurations.CumDecayRatioAdjust, 0, 1000);
            Configurations.CumDecayRatio = (float)Configurations.CumDecayRatioAdjust / 1000;

            int semenlifespan = (int)(-5 / ((float)Math.Log10((1 - Configurations.CumFertilityDecayRatio)*10) - 1)) + 1;
            string estimatedlifespan;
            if (semenlifespan < 0)
            {
                estimatedlifespan = String.Format(": Infinite", semenlifespan);
            }
            else
            {
                estimatedlifespan = String.Format(": {0:0}h", semenlifespan);
            }
            listmain.LabelDouble(Translations.Option6_Label + " " + Configurations.CumFertilityDecayRatio * 100 + "%", Translations.EstimatedCumLifespan + estimatedlifespan, Translations.Option6_Desc);
            Configurations.CumFertilityDecayRatioAdjust = (int)listmain.Slider(Configurations.CumFertilityDecayRatioAdjust, 0, 1000);
            Configurations.CumFertilityDecayRatio = (float)Configurations.CumFertilityDecayRatioAdjust / 1000;

            listmain.Label(Translations.Option7_Label + " x" + Configurations.CycleAcceleration, -1, Translations.Option7_Desc);
            Configurations.CycleAcceleration = (int)listmain.Slider(Configurations.CycleAcceleration, 1, 50);

            float var2 = EstimatedBleedingAmountPerHour;
            float var1 = Math.Max(EstimatedBleedingAmount, var2);
            listmain.LabelDouble(Translations.Option19_Label_1, Translations.Option19_Label_2 + ": " + var1 + "ml, " + var2 + "ml/h", Translations.Option19_Desc);
            Configurations.BleedingAmount = (int)listmain.Slider(Configurations.BleedingAmount, 0, 200);

            listmain.CheckboxLabeled(Translations.Option13_Label, ref Configurations.UseMultiplePregnancy, Translations.Option13_Desc);
            if (Configurations.UseMultiplePregnancy)
            {
                float sectionheight = 75f;
                if (Configurations.EnableEnzygoticTwins) sectionheight += 100;
                Listing_Standard twinsection = listmain.BeginSection_NewTemp(sectionheight);
                Rect hybridrect = twinsection.GetRect(25);
                Widgets.CheckboxLabeled(hybridrect.LeftHalf(), Translations.Option22_Label, ref Configurations.UseHybridExtention, false, null, null, true);
                if (Widgets.ButtonText(hybridrect.RightHalf(), Translations.Option28_Label))
                {
                    Dialog_HybridCustom.ToggleWindow();
                    //Configurations.MotherFirst = !Configurations.MotherFirst;
                }
                TooltipHandler.TipRegion(hybridrect, Translations.Option28_Tooltip);

                twinsection.CheckboxLabeled(Translations.Option14_Label, ref Configurations.EnableHeteroOvularTwins, Translations.Option14_Desc);
                twinsection.CheckboxLabeled(Translations.Option15_Label, ref Configurations.EnableEnzygoticTwins, Translations.Option15_Desc);
                if (Configurations.EnableEnzygoticTwins)
                {
                    twinsection.Label(Translations.Option16_Label + " " + Configurations.EnzygoticTwinsChance * 100 + "%", -1, Translations.Option16_Desc);
                    Configurations.EnzygoticTwinsChanceAdjust = (int)twinsection.Slider(Configurations.EnzygoticTwinsChanceAdjust, 0, 1000);
                    Configurations.EnzygoticTwinsChance = (float)Configurations.EnzygoticTwinsChanceAdjust / 1000;

                    twinsection.Label(Translations.Option17_Label + " " + Configurations.MaxEnzygoticTwins, -1, Translations.Option17_Desc);
                    Configurations.MaxEnzygoticTwins = (int)twinsection.Slider(Configurations.MaxEnzygoticTwins, 2, 100);
                }
                listmain.EndSection(twinsection);
            }

            listmain.EndScrollView(ref mainRect);

            listmain.CheckboxLabeled(Translations.Option8_Label, ref Configurations.Debug, Translations.Option8_Desc);
            if (listmain.ButtonText("reset to default"))
            {
                Configurations.ImplantationChanceAdjust = Configurations.ImplantationChanceAdjustDefault;
                Configurations.FertilizeChanceAdjust = Configurations.FertilizeChanceAdjustDefault;
                Configurations.CumDecayRatioAdjust = Configurations.CumDecayRatioAdjustDefault;
                Configurations.CumFertilityDecayRatioAdjust = Configurations.CumFertilityDecayRatioAdjustDefault;
                Configurations.EnableWombIcon = true;
                Configurations.EnableAnimalCycle = false;
                Configurations.CycleAcceleration = Configurations.CycleAccelerationDefault;
                Configurations.EnzygoticTwinsChanceAdjust = Configurations.EnzygoticTwinsChanceAdjustDefault;
                Configurations.EnableEnzygoticTwins = true;
                Configurations.EnableHeteroOvularTwins = true;
                Configurations.UseMultiplePregnancy = true;
                Configurations.MaxEnzygoticTwins = Configurations.MaxEnzygoticTwinsDefault;
                Configurations.BleedingAmount = Configurations.BleedingAmountDefault;
                Configurations.MotherFirst = false;
                Configurations.NippleTransitionVariance = Configurations.NippleTransitionVarianceDefault;
                Configurations.NipplePermanentTransitionVariance = Configurations.NipplePermanentTransitionVarianceDefault;
                Configurations.NippleMaximumTransition = Configurations.NippleMaximumTransitionDefault;
                Configurations.NippleTransitionSpeed = Configurations.NippleTransitionSpeedDefault;

            }

            listmain.End();

        }

    }

}


code:
using RimWorld;
using System;
using System.Collections.Generic;
using UnityEngine;
using Verse;

namespace RJW_Menstruation
{
    public class Cum : IExposable
    {
        public Pawn pawn;

        protected float volume; // ml
        protected float fertvolume;
        public float fertFactor = 1.0f;
        public bool notcum = false; // for other fluids
        public string notcumLabel = "";
        protected bool useCustomColor = false;
        protected float notcumthickness = 0;
        protected float cumthickness = 1.0f;

        public float Volume
        {
            get
            {
                return volume;
            }
        }

        public float FertVolume
        {
            get
            {
                return fertvolume;
            }
        }

        public float CumThickness
        {
            get
            {
                return cumthickness;
            }
        }

        public float decayresist
        {
            get
            {
                if (!notcum) return DNA.cumThickness;
                else return notcumthickness;
            }
            set
            {
                notcumthickness = value;
            }
        }
        protected Color customColor;

        public PawnDNAModExtension DNA
        {
            get
            {
                if (DNAcache == null)
                {
                    try
                    {
                        DNAcache = pawn.def.GetModExtension<PawnDNAModExtension>();
                    }
                    catch (NullReferenceException)
                    {
                        DNAcache = ThingDefOf.Human.GetModExtension<PawnDNAModExtension>();
                    }
                    if (DNAcache == null)
                    {
                        DNAcache = ThingDefOf.Human.GetModExtension<PawnDNAModExtension>();
                    }
                    return DNAcache;
                }
                else return DNAcache;
            }
        }
        protected PawnDNAModExtension DNAcache = null;
        public ThingDef FilthDef
        {
            get
            {
                if (filthDef == null) return VariousDefOf.CumFilth;
                else return filthDef;
            }
            set
            {
                filthDef = value;
            }
        }
        protected ThingDef filthDef = null;
        public Color color
        {
            get
            {
                if (!useCustomColor) return DNA.CumColor;
                else return customColor;
            }

            set
            {
                useCustomColor = true;
                customColor = value;
            }
        }

        public Cum() { }

        public Cum(Pawn pawn)
        {
            this.pawn = pawn;
            volume = 1.0f;
            fertvolume = 1.0f;
        }

        /// <summary>
        /// Not Cum
        /// </summary>
        /// <param name="pawn"></param>
        /// <param name="volume"></param>
        /// <param name="notcumlabel"></param>
        /// <param name="decayresist"></param>
        /// <param name="filthDef"></param>
        public Cum(Pawn pawn, float volume, string notcumlabel, float decayresist = 0, ThingDef filthDef = null)
        {
            this.pawn = pawn;
            this.volume = volume;
            this.fertvolume = volume;
            this.notcum = true;
            this.notcumLabel = notcumlabel;
            this.notcumthickness = decayresist;
            this.filthDef = filthDef;
        }

        public Cum(Pawn pawn, float volume, float fertility, ThingDef filthDef = null)
        {
            this.pawn = pawn;
            this.volume = volume;
            this.fertvolume = volume * fertility;
            this.filthDef = filthDef;
        }

        public virtual void ExposeData()
        {
            Scribe_References.Look(ref pawn, "pawn", true);
            Scribe_Values.Look(ref volume, "volume", volume, true);
            Scribe_Values.Look(ref fertvolume, "fertvolume", fertvolume, true);
            Scribe_Values.Look(ref notcumthickness, "notcumthickness", notcumthickness, true);
            Scribe_Values.Look(ref fertFactor, "fertFactor", fertFactor, true);
            Scribe_Values.Look(ref notcum, "notcum", notcum, true);
            Scribe_Values.Look(ref notcumLabel, "notcumLabel", notcumLabel, true);
            Scribe_Values.Look(ref useCustomColor, "useCustomColor", useCustomColor, true);
            Scribe_Values.Look(ref customColor, "customColor", customColor, true);
            Scribe_Defs.Look(ref filthDef, "filthDef");

        }

        public void MakeThinner(int speed)
        {
            for (int i=0; i<speed; i++)
            {
                cumthickness = Mathf.Lerp(cumthickness, decayresist, 0.4f);
            }
        }

        public void MergeWithCum(float volumein, float fertility,  ThingDef updatefilthDef = null)
        {
            if (updatefilthDef != null) filthDef = updatefilthDef;
            volume += volumein;
            fertvolume += volumein*fertility;
            cumthickness = Mathf.Lerp(cumthickness, 1.0f, volumein / volume);
        }

        public void MergeWithFluid(float volumein, float thickness, ThingDef updatefilthDef = null)
        {
            if (updatefilthDef != null) filthDef = updatefilthDef;
            volume += volumein;
            cumthickness = Mathf.Lerp(cumthickness, thickness, volumein / volume);
        }

        public bool ShouldRemove()
        {
            if (fertvolume < 0.001f && volume < 0.001f) return true;
            return false;
        }

        public float DismishNatural(float leakfactor, float antisperm = 0.0f)
        {
            float totalleak = volume;
            volume *= Math.Max(0, (1 - (Configurations.CumDecayRatio * (1 - decayresist)) * leakfactor));
            fertvolume *= Math.Max(0, 1 - (Configurations.CumFertilityDecayRatio * (1 - decayresist) + antisperm));
            CutMinor();
            totalleak -= volume;
            return totalleak;
        }

        public float DismishForce(float portion, float leakfactor = 1.0f)
        {
            float totalleak = volume;
            volume *= Math.Max(0, 1 - (portion * (1 - decayresist)) * leakfactor);
            fertvolume *= Math.Max(0, 1 - (portion * (1 - decayresist)) * leakfactor);
            CutMinor();
            totalleak -= volume;
            return totalleak;

        }

        protected void CutMinor()
        {
            if (volume < 0.01f) volume = 0f;
            if (fertvolume < 0.001f) fertvolume = 0f;

        }

    }

    public class CumMixture : Cum, IDisposable
    {
        protected List<string> cums;

        public CumMixture()
        {
            notcum = true;
            cums = new List<string>();
        }

        public CumMixture(Pawn pawn, float volume, List<string> cums, Color color,  ThingDef mixtureDef)
        {
            this.pawn = pawn;
            this.volume = volume;
            this.cums = cums;
            this.customColor = color;
            this.useCustomColor = true;
        }

        public void Dispose()
        {
            cums.Clear();

        }

        public override void ExposeData()
        {
            base.ExposeData();
            Scribe_Collections.Look(ref cums, "cumslabel", LookMode.Value, new object[0]);
        }

        public string GetIngredients()
        {
            string res = "";
            if (!cums.NullOrEmpty()) for(int i=0; i<cums.Count; i++)
                {
                    res += cums[i];
                    if (i < cums.Count - 1) res += ", ";
                }
            return res;
        }

    }

}


code:
using System;
using System.Collections.Generic;
using RimWorld;
using Verse;
using rjw;

namespace RJW_Menstruation
{
    public class FertPillOutcomDoer : IngestionOutcomeDoer
    {
        protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested)
        {
            HediffComp_Menstruation comp = pawn.GetMenstruationComp();
            if (comp != null && (comp.curStage.Equals(HediffComp_Menstruation.Stage.Follicular)
                || comp.curStage.Equals(HediffComp_Menstruation.Stage.Luteal)
                || comp.curStage.Equals(HediffComp_Menstruation.Stage.ClimactericFollicular)
                || comp.curStage.Equals(HediffComp_Menstruation.Stage.ClimactericLuteal)
                || comp.curStage.Equals(HediffComp_Menstruation.Stage.Anestrus)
                ))
            {
                comp.SetEstrus(comp.Props.eggLifespanDays);
                comp.curStage = HediffComp_Menstruation.Stage.Ovulatory;
                comp.ovarypower--;
            }
        }
    }

    public class OvaryPillOutcomDoer : IngestionOutcomeDoer
    {
        public float effectOffset;

        protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested)
        {
            HediffComp_Menstruation comp = pawn.GetMenstruationComp();
            if (Configurations.EnableMenopause && comp != null)
            {
                comp.RecoverOvary(1 + effectOffset);
            }

        }
    }

    public class SuperOvulationOutcomDoer : IngestionOutcomeDoer
    {
        protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested)
        {
            HediffComp_Menstruation comp = pawn.GetMenstruationComp();
            if (comp != null)
            {
                comp.eggstack += Rand.Range(1, 4);
            }

        }
    }

    public class ContraptiveOutcomDoer : IngestionOutcomeDoer
    {
        protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested)
        {

            List<Thought_Memory> memories = pawn.needs?.mood?.thoughts?.memories?.Memories.FindAll(
                x =>
                x.def == VariousDefOf.CameInsideF
             || x.def == VariousDefOf.CameInsideFFetish
             || x.def == VariousDefOf.HaterCameInsideF);
            if (!memories.NullOrEmpty())
            {
                foreach (Thought_Memory m in memories)
                {
                    if (m.def == VariousDefOf.HaterCameInsideF) m.moodPowerFactor = 0.5f;
                    else m.moodPowerFactor = 0.3f;

                }
                if (pawn.Has(Quirk.Breeder)) pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.HateTookContraptivePill);
                else pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.TookContraptivePill);
            }
        }

    }

}


code:
using RimWorld;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Verse;

namespace RJW_Menstruation
{
    public class FilthMaker_Colored
    {

        public static bool TryMakeFilth(IntVec3 c, Map map, ThingDef filthDef, IEnumerable<string> sources, Color color, bool shouldPropagate, FilthSourceFlags additionalFlags = FilthSourceFlags.None)
        {
            Filth_Colored filth = (Filth_Colored)(from t in c.GetThingList(map)
                                                  where t.def == filthDef
                                                  select t).FirstOrDefault<Thing>();
            if (!c.Walkable(map) || (filth != null && !filth.CanBeThickened))
            {
                if (shouldPropagate)
                {
                    List<IntVec3> list = GenAdj.AdjacentCells8WayRandomized();
                    for (int i = 0; i < 8; i++)
                    {
                        IntVec3 c2 = c + list[i];
                        if (c2.InBounds(map) && TryMakeFilth(c2, map, filthDef, sources, color, false, FilthSourceFlags.None))
                        {
                            return true;
                        }
                    }
                }
                if (filth != null)
                {
                    filth.AddSources(sources);
                }
                return false;
            }
            if (filth != null)
            {
                filth.ThickenFilth();
                filth.AddSources(sources);
            }
            else
            {
                if (!FilthMaker.CanMakeFilth(c, map, filthDef, additionalFlags))
                {
                    return false;
                }
                Filth_Colored filth2 = (Filth_Colored)ThingMaker.MakeThing(filthDef, null);
                filth2.DrawColor = color;
                filth2.AddSources(sources);
                GenSpawn.Spawn(filth2, c, map, WipeMode.Vanish);
            }
            //FilthMonitor.Notify_FilthSpawned();
            return true;
        }

    }
}


code:
using System.Linq;
using Verse;

namespace RJW_Menstruation
{
    public static class HARCompatibility
    {

        public static bool IsHAR(this Pawn pawn)
        {
            return pawn.def.GetType().ToString().StartsWith("AlienRace");
        }

        public static ThingComp GetHARComp(this Pawn pawn)
        {
            return pawn?.GetComps<ThingComp>()?.First(x => x.GetType().Namespace.EqualsIgnoreCase("AlienRace") && x.GetType().Name.EndsWith("AlienComp"));
        }

        public static string GetHARCrown(this Pawn pawn)
        {
            return (string)pawn.GetHARComp().GetMemberValue("crownType");
        }

        public static void SetHARCrown(this Pawn pawn, string crown)
        {
            pawn.GetHARComp().SetMemberValue("crownType", crown);
        }

    }
}