Compare commits
37 Commits
0a9b153c33
...
65e0713ac4
Author | SHA1 | Date |
---|---|---|
Naz | 65e0713ac4 | |
lutepickle | daeefe8218 | |
lutepickle | e3647caf2a | |
lutepickle | 9a6efaf37d | |
lutepickle | cca7676bc0 | |
lutepickle | ba8801370f | |
lutepickle | c393ab45c0 | |
lutepickle | f580d3232b | |
lutepickle | e964b2af93 | |
lutepickle | 6e56664d41 | |
lutepickle | 4e88184f9b | |
lutepickle | 06ccb04a55 | |
lutepickle | 8bea56b65a | |
lutepickle | c6e4d81a20 | |
lutepickle | 1cdb12fd3a | |
lutepickle | 7e407a1cf9 | |
lutepickle | 32800a3499 | |
lutepickle | ff95b8da39 | |
lutepickle | 8306439576 | |
lutepickle | ebb486179b | |
lutepickle | f79050483d | |
lutepickle | d483e22ac2 | |
lutepickle | 7e5b2000da | |
lutepickle | 836d3d69c8 | |
lutepickle | 50310988ca | |
lutepickle | 82dea0f425 | |
lutepickle | bd39194fd1 | |
lutepickle | 56b11069da | |
lutepickle | 02b0045fb3 | |
lutepickle | fcbc19825e | |
lutepickle | 7b00579969 | |
lutepickle | cb8267bf0f | |
lutepickle | 2dda753ab9 | |
exoxemsn.com | 8000949752 | |
exoxemsn.com | 765b85dc2c | |
exoxemsn.com | 6cf5cba76b | |
exoxemsn.com | 8768c1b7e7 |
|
@ -9,7 +9,8 @@
|
|||
|
||||
<GeneDef Name="Menstruation_EggLifetime" Abstract="True">
|
||||
<displayCategory>Menstruation</displayCategory>
|
||||
<exclusionTags>
|
||||
<iconPath>UI/Genes/Placeholder</iconPath>
|
||||
<exclusionTags>
|
||||
<li>Menstruation_EggLifetime</li>
|
||||
</exclusionTags>
|
||||
</GeneDef>
|
||||
|
@ -18,33 +19,49 @@
|
|||
<defName>Menstruation_ShortEggLifetime</defName>
|
||||
<label>short egg lifetime</label>
|
||||
<description>Unfertilized eggs with this gene last three-quarters as long.</description>
|
||||
<iconPath>UI/Genes/Placeholder</iconPath>
|
||||
<iconPath>UI/Genes/ShortEggLifetime</iconPath>
|
||||
<biostatMet>1</biostatMet>
|
||||
<displayOrderInCategory>10</displayOrderInCategory>
|
||||
<modExtensions>
|
||||
<li Class ="RJW_Menstruation.MenstruationModExtension">
|
||||
<eggLifeTimeFactor>0.75</eggLifeTimeFactor>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="Menstruation_EggLifetime">
|
||||
<defName>Menstruation_DoubleEggLifetime</defName>
|
||||
<label>double egg lifetime</label>
|
||||
<description>Unfertilized eggs with this gene last twice as long.</description>
|
||||
<iconPath>UI/Genes/Placeholder</iconPath>
|
||||
<iconPath>UI/Genes/DoubleEggLifetime</iconPath>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<displayOrderInCategory>12</displayOrderInCategory>
|
||||
<modExtensions>
|
||||
<li Class ="RJW_Menstruation.MenstruationModExtension">
|
||||
<eggLifeTimeFactor>2.0</eggLifeTimeFactor>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="Menstruation_EggLifetime">
|
||||
<defName>Menstruation_QuadEggLifetime</defName>
|
||||
<label>quadrule egg lifetime</label>
|
||||
<description>Eggs with this gene last four times as long.</description>
|
||||
<iconPath>UI/Genes/Placeholder</iconPath>
|
||||
<iconPath>UI/Genes/QuadEggLifetime</iconPath>
|
||||
<biostatMet>-2</biostatMet>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<displayOrderInCategory>16</displayOrderInCategory>
|
||||
<modExtensions>
|
||||
<li Class ="RJW_Menstruation.MenstruationModExtension">
|
||||
<eggLifeTimeFactor>4.0</eggLifeTimeFactor>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef Name="Menstruation_Estrus" Abstract="True">
|
||||
<displayCategory>Menstruation</displayCategory>
|
||||
<exclusionTags>
|
||||
<iconPath>UI/Genes/Placeholder</iconPath>
|
||||
<exclusionTags>
|
||||
<li>Menstruation_Estrus</li>
|
||||
</exclusionTags>
|
||||
</GeneDef>
|
||||
|
@ -53,24 +70,35 @@
|
|||
<defName>Menstruation_NeverEstrus</defName>
|
||||
<label>never estrus</label>
|
||||
<description>Carriers of this gene will never go into estrus.</description>
|
||||
<iconPath>UI/Genes/Placeholder</iconPath>
|
||||
<iconPath>UI/Genes/NeverEstrus</iconPath>
|
||||
<biostatMet>1</biostatMet>
|
||||
<displayOrderInCategory>20</displayOrderInCategory>
|
||||
<modExtensions>
|
||||
<li Class ="RJW_Menstruation.MenstruationModExtension">
|
||||
<neverEstrus>true</neverEstrus>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="Menstruation_Estrus">
|
||||
<defName>Menstruation_FullEstrus</defName>
|
||||
<label>full estrus</label>
|
||||
<description>Carriers of this gene will enter full estrus every menstrual cycle, regardless of vagina type.</description>
|
||||
<iconPath>UI/Genes/Placeholder</iconPath>
|
||||
<iconPath>UI/Genes/FullEstrus</iconPath>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<biostatCpx>1</biostatCpx>
|
||||
<displayOrderInCategory>25</displayOrderInCategory>
|
||||
<modExtensions>
|
||||
<li Class ="RJW_Menstruation.MenstruationModExtension">
|
||||
<alwaysEstrus>true</alwaysEstrus>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef Name="Menstruation_Ovulation" Abstract="True">
|
||||
<displayCategory>Menstruation</displayCategory>
|
||||
<exclusionTags>
|
||||
<iconPath>UI/Genes/Placeholder</iconPath>
|
||||
<exclusionTags>
|
||||
<li>Menstruation_Ovulation</li>
|
||||
</exclusionTags>
|
||||
</GeneDef>
|
||||
|
@ -79,18 +107,28 @@
|
|||
<defName>Menstruation_DoubleOvulation</defName>
|
||||
<label>double ovulation</label>
|
||||
<description>Carriers of this gene will ovulate twice as many eggs.</description>
|
||||
<iconPath>UI/Genes/Placeholder</iconPath>
|
||||
<iconPath>UI/Genes/DoubleOvulation</iconPath>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<displayOrderInCategory>30</displayOrderInCategory>
|
||||
<modExtensions>
|
||||
<li Class ="RJW_Menstruation.MenstruationModExtension">
|
||||
<ovulationFactor>2</ovulationFactor>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef ParentName="Menstruation_Ovulation">
|
||||
<defName>Menstruation_QuadOvulation</defName>
|
||||
<label>quadruple ovulation</label>
|
||||
<description>Carriers of this gene will ovulate four times as many eggs.</description>
|
||||
<iconPath>UI/Genes/Placeholder</iconPath>
|
||||
<iconPath>UI/Genes/QuadOvulation</iconPath>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<displayOrderInCategory>35</displayOrderInCategory>
|
||||
<modExtensions>
|
||||
<li Class ="RJW_Menstruation.MenstruationModExtension">
|
||||
<ovulationFactor>4</ovulationFactor>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<GeneDef>
|
||||
|
@ -98,9 +136,14 @@
|
|||
<label>no bleeding</label>
|
||||
<displayCategory>Menstruation</displayCategory>
|
||||
<description>Carriers of this gene will not bleed at the end of their cycle.</description>
|
||||
<iconPath>UI/Genes/Placeholder</iconPath>
|
||||
<iconPath>UI/Genes/NoBleeding</iconPath>
|
||||
<biostatMet>-1</biostatMet>
|
||||
<displayOrderInCategory>40</displayOrderInCategory>
|
||||
<modExtensions>
|
||||
<li Class ="RJW_Menstruation.MenstruationModExtension">
|
||||
<noBleeding>true</noBleeding>
|
||||
</li>
|
||||
</modExtensions>
|
||||
</GeneDef>
|
||||
|
||||
<!-- Pheromones? -->
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<Hediff_ASA.label>항정자 항체</Hediff_ASA.label>
|
||||
<Hediff_ASA.labelNoun>항정자 항체</Hediff_ASA.labelNoun>
|
||||
<Hediff_ASA.description>항정자 항체. 정자의 생존 시간을 줄입니다.</Hediff_ASA.description>
|
||||
<Hediff_ASA.labelNounPretty>{0}(은)는 항정자 항체를 가졌습니다.</Hediff_ASA.labelNounPretty>
|
||||
<Hediff_ForceFertile.label>좋은 임신률</Hediff_ForceFertile.label>
|
||||
<Hediff_ForceFertile.labelNoun>좋은 임신률</Hediff_ForceFertile.labelNoun>
|
||||
<Hediff_ForceFertile.description>좋은 임신률</Hediff_ForceFertile.description>
|
||||
<Hediff_ForceFertile.labelNounPretty>{0}(은)는 좋은 임신률을 가지고 있습니다.</Hediff_ForceFertile.labelNounPretty>
|
||||
</LanguageData>
|
|
@ -0,0 +1,20 @@
|
|||
<?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_Estrus.label>발정기</Hediff_Estrus.label>
|
||||
<Hediff_Estrus.description>자궁이 생리 주기의 가장 비옥한 단계로 접어든 상태입니다. 신체가 임신하기를 갈망함에 따라 성적 흥분과 욕망은 극적으로 증가합니다.
|
||||
질내 성교의 가능성이 증가하고 잠재적으로 짝짓기 선택의 기준이 낮아집니다.</Hediff_Estrus.description>
|
||||
<Hediff_Estrus_Concealed.label>발정기(숨김)</Hediff_Estrus_Concealed.label>
|
||||
<Hediff_Estrus_Concealed.description>자궁이 생리 주기의 가장 비옥한 단계로 접어든 상태입니다. 성적 흥분과 욕망이 약간 증가합니다.
|
||||
질내 성교의 가능성이 약간 증가합니다.</Hediff_Estrus_Concealed.description>
|
||||
<Hediff_PainReliever.label>진통제</Hediff_PainReliever.label>
|
||||
<Hediff_PainReliever.description>생리통(및 기타)의 통증을 완화해 줍니다.</Hediff_PainReliever.description>
|
||||
<Hediff_Cyclosporine.label>면역 억제제</Hediff_Cyclosporine.label>
|
||||
<Hediff_Cyclosporine.description>면역 억제제의 영향으로, 감염과 질병을 물리치는 신체의 면역력이 떨어집니다.</Hediff_Cyclosporine.description>
|
||||
</LanguageData>
|
|
@ -1,18 +0,0 @@
|
|||
<?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_Estrus.label>발정기</Hediff_Estrus.label>
|
||||
<Hediff_Estrus.description>발정기입니다.</Hediff_Estrus.description>
|
||||
<Hediff_Estrus_Concealed.label>발정기(숨김)</Hediff_Estrus_Concealed.label>
|
||||
<Hediff_Estrus_Concealed.description>발정기입니다.</Hediff_Estrus_Concealed.description>
|
||||
<Hediff_PainReliever.label>진통제</Hediff_PainReliever.label>
|
||||
<Hediff_PainReliever.description>약간의 고통을 줄여줍니다.</Hediff_PainReliever.description>
|
||||
|
||||
|
||||
|
||||
</LanguageData>
|
|
@ -1,7 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<VaginaWashing.reportString>질세척 하는중</VaginaWashing.reportString>
|
||||
|
||||
|
||||
|
||||
</LanguageData>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<LactateSelf.reportString>스스로 젖 짜는 중</LactateSelf.reportString>
|
||||
</LanguageData>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<OpenStatusWindow.label>생리: 상태 창을 엽니다.</OpenStatusWindow.label>
|
||||
</LanguageData>
|
|
@ -1,15 +0,0 @@
|
|||
<?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>
|
|
@ -0,0 +1,21 @@
|
|||
<?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>
|
||||
<Surgery_DarkenNipple.label>유두 흑화</Surgery_DarkenNipple.label>
|
||||
<Surgery_DarkenNipple.description>유두를 어둡게 만듭니다.</Surgery_DarkenNipple.description>
|
||||
<Surgery_DarkenNipple.jobString>유두 흑화 중</Surgery_DarkenNipple.jobString>
|
||||
<Surgery_LightenNipple.label>유두 미백</Surgery_LightenNipple.label>
|
||||
<Surgery_LightenNipple.description>유두를 밝게 만듭니다.</Surgery_LightenNipple.description>
|
||||
<Surgery_LightenNipple.jobString>유두 미백 중</Surgery_LightenNipple.jobString>
|
||||
</LanguageData>
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<AmountofCreampied.label>질내사정</AmountofCreampied.label>
|
||||
<AmountofCreampied.description>질내사정당한 정액 양</AmountofCreampied.description>
|
||||
</LanguageData>
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<AmountofCreampied.label>질내사정</AmountofCreampied.label>
|
||||
<AmountofCreampied.description>질내사정당한 정액 양</AmountofCreampied.description>
|
||||
<AmountofFertilizedEggs.label>수정된 알</AmountofFertilizedEggs.label>
|
||||
<AmountofFertilizedEggs.description>정자에 의해 수정된 알의 갯수</AmountofFertilizedEggs.description>
|
||||
</LanguageData>
|
|
@ -1,7 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<MaxAbsorbable.label>흡수량</MaxAbsorbable.label>
|
||||
<MaxAbsorbable.description>액체를 흡수할수 있는 정도입니다.</MaxAbsorbable.description>
|
||||
|
||||
|
||||
</LanguageData>
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<CameInside.label>질내사정</CameInside.label>
|
||||
<CameInside.rulePack.rulesStrings.0>tale_noun->[FUCKER_nameDef](은)는 [FUCKED_nameDef]의 안에 들어갔다.</CameInside.rulePack.rulesStrings.0>
|
||||
<CameInside.rulePack.rulesStrings.1>image->[FUCKER_nameFull]의 자지는 [circumstance_group] [FUCKED_nameFull]의 보지 안에 깊숙히 들어갔다.</CameInside.rulePack.rulesStrings.1>
|
||||
<CameInside.rulePack.rulesStrings.2>image->[FUCKER_nameFull]의 자지는 [circumstance_group] [FUCKED_nameFull]의 보지 속으로 사라졌다.</CameInside.rulePack.rulesStrings.2>
|
||||
<CameInside.rulePack.rulesStrings.3>image->[FUCKED_nameFull]의 보지는 [circumstance_group] [FUCKER_nameFull]의 자지로 꽉 채워졌다.</CameInside.rulePack.rulesStrings.3>
|
||||
<CameInside.rulePack.rulesStrings.4>image->[FUCKED_nameFull]의 보지는 [circumstance_group] [FUCKER_nameFull]의 자지를 꽉꽉 물어대었다.</CameInside.rulePack.rulesStrings.4>
|
||||
<CameInside.rulePack.rulesStrings.5>circumstance_phrase->[FUCKER_nameDef](이)가 흥분에 이를 갈 때</CameInside.rulePack.rulesStrings.5>
|
||||
<CameInside.rulePack.rulesStrings.6>circumstance_phrase->[FUCKER_nameDef](이)가 만족스런 미소를 짓는 동안</CameInside.rulePack.rulesStrings.6>
|
||||
<CameInside.rulePack.rulesStrings.7>circumstance_phrase->[FUCKED_nameDef]쾌락에 몸을 떨 때</CameInside.rulePack.rulesStrings.7>
|
||||
<CameInside.rulePack.rulesStrings.8>circumstance_phrase->[FUCKER_nameDef](이)가 [FUCKED_nameDef]에게 한 발 쌀 동안</CameInside.rulePack.rulesStrings.8>
|
||||
<CameInside.rulePack.rulesStrings.9>circumstance_phrase->[FUCKED_nameDef](이)가 미소로 [FUCKER_nameDef]의 눈을 마주칠 때</CameInside.rulePack.rulesStrings.9>
|
||||
<CameInside.rulePack.rulesStrings.10>desc_sentence->[FUCKER_nameDef]의 정액이 [FUCKED_nameDef]의 보지를 넘어 바닥에 넘쳐흘렀다.</CameInside.rulePack.rulesStrings.10>
|
||||
<CameInside.rulePack.rulesStrings.11>desc_sentence->[FUCKER_nameDef]의 정자가 [FUCKED_nameDef]의 자궁에서 경주를 벌이고, 끝내 [FUCKED_possessive]의 난자에 도달했다.</CameInside.rulePack.rulesStrings.11>
|
||||
<CameInside.rulePack.rulesStrings.12>desc_sentence->[FUCKER_nameDef]의 정액이 [FUCKED_nameDef]의 자궁에 쏟아졌다.</CameInside.rulePack.rulesStrings.12>
|
||||
<CameInside.rulePack.rulesStrings.13>desc_sentence->[FUCKED_nameDef]의 자궁은 정액으로 가득찼다.</CameInside.rulePack.rulesStrings.13>
|
||||
<CameInside.rulePack.rulesStrings.14>desc_sentence->[FUCKER_nameDef]의 얼굴에 땀이 흘러내렸다.</CameInside.rulePack.rulesStrings.14>
|
||||
<CameInside.rulePack.rulesStrings.15>desc_sentence->[FUCKED_nameDef](은)는 심하게 헐떡였다.</CameInside.rulePack.rulesStrings.15>
|
||||
</LanguageData>
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<Absorber.label>성기</Absorber.label>
|
||||
</LanguageData>
|
|
@ -0,0 +1,13 @@
|
|||
<?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>
|
||||
</LanguageData>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<FilthMixture.label>혼합물</FilthMixture.label>
|
||||
</LanguageData>
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<OvaryRegenerationPill.label>난소 재생약</OvaryRegenerationPill.label>
|
||||
<OvaryRegenerationPill.description>난소를 재생시켜 평생 배출할 수 있는 난자의 총 양을 복구시킵니다.
|
||||
난자 소모량이 클수록 효과가 줄어듭니다.
|
||||
폐경을 회복시키지 않습니다.</OvaryRegenerationPill.description>
|
||||
<SuperovulationInducingAgent.label>과배란 유도제</SuperovulationInducingAgent.label>
|
||||
<SuperovulationInducingAgent.description>과배란을 유도하는 약물입니다. 과배란을 유도하여 다음 배란에서 1-4개의 여분의 난자를 배란합니다.
|
||||
조기폐경을 초래할수도 있습니다.</SuperovulationInducingAgent.description>
|
||||
<PainReliever.label>진통제</PainReliever.label>
|
||||
<PainReliever.description>24시간 동안 생리통을 완화시켜 줍니다.
|
||||
|
||||
다른 통증에도 효과적입니다.</PainReliever.description>
|
||||
<Cyclosporine.label>면역 억제제</Cyclosporine.label>
|
||||
<Cyclosporine.description>면역 억제제.
|
||||
항정자 항체를 치료할 수 있지만, 24시간 동안 감염과 질병을 퇴치하는 신체의 면역력을 떨어뜨립니다. 복용하면 정자의 생존 시간을 늘립니다.</Cyclosporine.description>
|
||||
</LanguageData>
|
|
@ -1,20 +0,0 @@
|
|||
<?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>
|
|
@ -1,29 +1,32 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?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>
|
||||
<LeakingFluids.stages.0.description>이걸 닦아낼 뭔가가 없을까?
|
||||
</LeakingFluids.stages.0.description>
|
||||
<HaterCameInsideM.stages.0.label>{0}에게 질내사정함</HaterCameInsideM.stages.0.label>
|
||||
<HaterCameInsideM.stages.0.description>그 년한테 질싸를 했어!</HaterCameInsideM.stages.0.description>
|
||||
<CameInsideM.stages.0.label>{0}에게 질내사정함</CameInsideM.stages.0.label>
|
||||
<CameInsideM.stages.0.description>질싸를하니 기분이 좋네.</CameInsideM.stages.0.description>
|
||||
<CameInsideFFetish.stages.0.label>{0}에게 질내사정당함</CameInsideFFetish.stages.0.label>
|
||||
<CameInsideFFetish.stages.0.description>임신하면 좋을 텐데.</CameInsideFFetish.stages.0.description>
|
||||
<HaterCameInsideF.stages.0.label>{0}에게 질내사정당함</HaterCameInsideF.stages.0.label>
|
||||
<HaterCameInsideF.stages.0.description>나는 그 새끼의 자식을 임신하고 싶지 않아!</HaterCameInsideF.stages.0.description>
|
||||
<HaterCameInsideFEstrus.stages.0.label>{0}에게 질내사정당함</HaterCameInsideFEstrus.stages.0.label>
|
||||
<HaterCameInsideFEstrus.stages.0.description>아. 이런 일을 당해야 하다니...</HaterCameInsideFEstrus.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>
|
||||
<CameInsideF.stages.0.label>{0}에게 질내사정당함</CameInsideF.stages.0.label>
|
||||
<CameInsideF.stages.0.description>임신할까봐 걱정돼...</CameInsideF.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>
|
||||
<CameInsideFFetishSafe.stages.0.description>아마 임신 안할꺼야. 게다가 좋기도 했어...</CameInsideFFetishSafe.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>
|
||||
<HaterCameInsideFSafe.stages.0.description>안전일이였지만, 기분 더러워.</HaterCameInsideFSafe.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>
|
||||
<UnwantedPregnancy.stages.0.description>어떻게 해야하지?...</UnwantedPregnancy.stages.0.description>
|
||||
<UnwantedPregnancyMild.stages.0.label>원치않은 임신</UnwantedPregnancyMild.stages.0.label>
|
||||
<UnwantedPregnancyMild.stages.0.description>아이를 가졌어. 하지만 아마 괜찮을꺼야.</UnwantedPregnancyMild.stages.0.description>
|
||||
<TookContraceptivePill.stages.0.label>피임약 복용</TookContraceptivePill.stages.0.label>
|
||||
<TookContraceptivePill.stages.0.description>괜찮을거야</TookContraceptivePill.stages.0.description>
|
||||
<TookContraceptivePill.stages.0.description>이젠 해도 괜찮아.</TookContraceptivePill.stages.0.description>
|
||||
<HateTookContraptivePill.stages.0.label>피임약 복용</HateTookContraptivePill.stages.0.label>
|
||||
<HateTookContraptivePill.stages.0.description>임신하고싶어</HateTookContraptivePill.stages.0.description>
|
||||
<HateTookContraptivePill.stages.0.description>임신하고 싶은데.</HateTookContraptivePill.stages.0.description>
|
||||
</LanguageData>
|
|
@ -1,18 +1,29 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LanguageData>
|
||||
<Mod_Title>RJW Menstruation Cycle</Mod_Title>
|
||||
|
||||
<Mod_Title>RJW 생리 주기</Mod_Title>
|
||||
<Menstrual_Blood>생리혈</Menstrual_Blood>
|
||||
<Info_noCum>없음</Info_noCum>
|
||||
<Info_noCum>정액 없음</Info_noCum>
|
||||
<Stage_Follicular>난포기</Stage_Follicular>
|
||||
<Stage_Ovulatory>배란</Stage_Ovulatory>
|
||||
<Stage_Ovulatory>배란</Stage_Ovulatory>
|
||||
<Stage_Luteal>황체기</Stage_Luteal>
|
||||
<Stage_Bleeding>생리중</Stage_Bleeding>
|
||||
<Stage_Pregnant>임신</Stage_Pregnant>
|
||||
<Stage_Recover>회복기</Stage_Recover>
|
||||
<Stage_None>없음</Stage_None>
|
||||
<Stage_None>불임</Stage_None>
|
||||
<Stage_Climacteric>갱년기</Stage_Climacteric>
|
||||
<Stage_Menopause>폐경</Stage_Menopause>
|
||||
<Stage_Anestrus>휴지기</Stage_Anestrus>
|
||||
<Stage_Follicular_Desc>난소가 배란할 준비를 하고 있습니다. 배란은 이 단계가 끝날 때 발생합니다.</Stage_Follicular_Desc>
|
||||
<Stage_Follicular_Induced_Desc>난소가 배란할 준비를 하고 있습니다. 정액이 자궁에 들어가면 배란이 일어날 것입니다.</Stage_Follicular_Induced_Desc>
|
||||
<Stage_Ovulatory_Desc>난소는 자궁 안으로 난자를 방출하고 있습니다.</Stage_Ovulatory_Desc>
|
||||
<Stage_Luteal_Desc>자궁은 수정란을 받을 준비가 되어 있습니다. 이 단계가 끝나기 전에 착상이 되면 임신이 됩니다.</Stage_Luteal_Desc>
|
||||
<Stage_Bleeding_Desc>착상에 실패한 난자와 함께 자궁의 내벽이 허물어지고 있습니다.</Stage_Bleeding_Desc>
|
||||
<Stage_Pregnant_Desc>아기가 자궁 안에서 자라고 있습니다. 정성으로 보살핀다면, 이 세상에 새롭게 태어날 것입니다.</Stage_Pregnant_Desc>
|
||||
<Stage_Recover_Desc>자궁이 최근 임신에서 회복되고 있습니다.</Stage_Recover_Desc>
|
||||
<Stage_None_Desc>자궁이 불임으로 임신할 수 없습니다.</Stage_None_Desc>
|
||||
<Stage_Climacteric_Desc>난소가 거의 고갈되어 생리 주기가 불규칙해졌습니다.</Stage_Climacteric_Desc>
|
||||
<Stage_Menopause_Desc>난소가 고갈되어 자궁은 더 이상 난자를 품을 수 없습니다.</Stage_Menopause_Desc>
|
||||
<Stage_Anestrus_Desc>자궁이 번식기가 아닙니다. 조건이 충족되면 주기가 재개됩니다.</Stage_Anestrus_Desc>
|
||||
<Button_HealthTab>상태창</Button_HealthTab>
|
||||
<Button_MilkTooltip>모유 짜기</Button_MilkTooltip>
|
||||
<Dialog_WombInfo01>상태</Dialog_WombInfo01>
|
||||
|
@ -24,11 +35,15 @@
|
|||
<Dialog_WombInfo07>배란</Dialog_WombInfo07>
|
||||
<Dialog_WombInfo08></Dialog_WombInfo08>
|
||||
<Dialog_WombInfo09></Dialog_WombInfo09>
|
||||
|
||||
<Dialog_DoCleanWomb_Tooltip>양동이에 정액 모으기</Dialog_DoCleanWomb_Tooltip>
|
||||
<Dialog_DontCleanWomb_Tooltip>자궁의 정액 모으기</Dialog_DontCleanWomb_Tooltip>
|
||||
<Dialog_FatherUnknown>알려지지 않음</Dialog_FatherUnknown>
|
||||
<Option1_Label_1>자궁아이콘 활성화</Option1_Label_1>
|
||||
<Option1_Label_2>건강탭에 버튼 추가</Option1_Label_2>
|
||||
<Option2_Label>동물주기 활성화</Option2_Label>
|
||||
<Option2_Desc>동물의 월경주기를 시뮬레이션합니다. 변경한후에 세이브로드가 필요합니다. not recommended</Option2_Desc>
|
||||
<Option2_Desc>동물의 월경주기를 시뮬레이션합니다.
|
||||
변경한후에 세이브로드가 필요합니다.
|
||||
추천하지 않음</Option2_Desc>
|
||||
<Option3_Label>착상확률</Option3_Label>
|
||||
<Option3_Desc>수정란의 착상확률을 설정합니다.</Option3_Desc>
|
||||
<Option4_Label>수정확률</Option4_Label>
|
||||
|
@ -36,10 +51,14 @@
|
|||
<Option5_Label>시간당 정액배출비율</Option5_Label>
|
||||
<Option5_Desc>이 비율만큼 매 시간마다 정액이 배출됩니다.</Option5_Desc>
|
||||
<Option6_Label>시간당 정자 사망비율</Option6_Label>
|
||||
<Option6_Desc>이 비율만큼 매 시간마다 정자가 사망해 정액이 생식능력을 잃습니다. 정자 예상수명: 정액이 대부분의 생식능력을 잃는 시간입니다.</Option6_Desc>
|
||||
<Option6_Desc>이 비율만큼 매 시간마다 정자가 사망해 정액이 생식능력을 잃습니다.
|
||||
정자 예상수명: 정액이 대부분의 생식능력을 잃는 시간입니다.</Option6_Desc>
|
||||
<Option7_Label>주기 가속</Option7_Label>
|
||||
<Option7_Desc>월경주기를 더 빠르게합니다. 이 설정은 조기폐경과 난임을 유발할수도 있습니다. 12배속 이하로 설정하는것을 권장합니다. 림월드의 시간배율: x6(default)</Option7_Desc>
|
||||
<Option8_Label>Debug</Option8_Label>
|
||||
<Option7_Desc>월경주기를 더 빠르게합니다.
|
||||
이 설정은 조기폐경과 난임을 유발할수도 있습니다.
|
||||
12배속 이하로 설정하는것을 권장합니다.
|
||||
림월드의 시간배율: x6(기본)</Option7_Desc>
|
||||
<Option8_Label>디버그</Option8_Label>
|
||||
<Option8_Desc>디버그정보를 보여줍니다.</Option8_Desc>
|
||||
<Option9_Label>자궁 그림</Option9_Label>
|
||||
<Option9_Desc>상태창에 자궁그림을 표시합니다.</Option9_Desc>
|
||||
|
@ -51,9 +70,13 @@
|
|||
<Option11_Desc_3>태아에 대한 정보를 표시하지 않지만, 임신한 이후 태아이미지를 표시합니다.</Option11_Desc_3>
|
||||
<Option11_Desc_4>태아에 대한 어떠한 정보도 표시하지 않습니다.</Option11_Desc_4>
|
||||
<Option12_Label>폐경기 활성화</Option12_Label>
|
||||
<Option12_Desc>시간이 지남에따라 불임상태로 만드는 폐경기를 활성화합니다. 수명이 긴 종족을 사용할때 문제가 있으면 이 옵션을 끄세요. 변경한후에 세이브로드가 필요합니다.</Option12_Desc>
|
||||
<Option12_Desc>시간이 지남에따라 불임상태로 만드는 폐경기를 활성화합니다.
|
||||
수명이 긴 종족을 사용할때 문제가 있으면 이 옵션을 끄세요.
|
||||
변경한후에 세이브로드가 필요합니다.</Option12_Desc>
|
||||
<Option13_Label>다중임신</Option13_Label>
|
||||
<Option13_Desc>RJW의 기본임신 대신 다중임신을 사용합니다. 임신에 문제가 있다면 이 기능을 끄는것으로 해결될수도 있습니다. RJW 임신이 활성화 되어야 합니다.</Option13_Desc>
|
||||
<Option13_Desc>RJW의 기본임신 대신 다중임신을 사용합니다.
|
||||
임신에 문제가 있다면 이 기능을 끄는것으로 해결될수도 있습니다.
|
||||
RJW 임신이 활성화 되어야 합니다.</Option13_Desc>
|
||||
<Option14_Label>이란성 쌍둥이 활성화</Option14_Label>
|
||||
<Option14_Desc>다수의 난자가 임신으로 이어지게 합니다.</Option14_Desc>
|
||||
<Option15_Label>일란성 쌍둥이 활성화</Option15_Label>
|
||||
|
@ -66,7 +89,9 @@
|
|||
<Option18_Desc>자궁그림 위에 난자그림를 표시합니다.</Option18_Desc>
|
||||
<Option19_Label_1>생리양</Option19_Label_1>
|
||||
<Option19_Label_2>예상되는 총 생리양</Option19_Label_2>
|
||||
<Option19_Desc>생리혈의 양을 설정합니다. 실제 생리양은 보지에따라 다를수 있습니다. 일반적인 인간 여성의 생리량은 약 20~80ml입니다.</Option19_Desc>
|
||||
<Option19_Desc>생리혈의 양을 설정합니다.
|
||||
실제 생리양은 보지에따라 다를수 있습니다.
|
||||
일반적인 인간 여성의 생리량은 약 20~80ml입니다.</Option19_Desc>
|
||||
<Option20_Label_1>정착민</Option20_Label_1>
|
||||
<Option20_Label_2>죄수</Option20_Label_2>
|
||||
<Option20_Label_3>동맹관계</Option20_Label_3>
|
||||
|
@ -75,36 +100,54 @@
|
|||
<Option21_Label>표시 대상</Option21_Label>
|
||||
<Option21_Desc>아이콘과 버튼을 표시할 대상입니다.</Option21_Desc>
|
||||
<Option22_Label>잡종 정의 대체</Option22_Label>
|
||||
<Option22_Desc>RJW와 RaceSupport의 잡종정의를 대체합니다. 우선순위는 누구의 잡종 정의를 우선으로 사용할지 정합니다. 변경하지 않는것을 추천합니다.</Option22_Desc>
|
||||
<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>
|
||||
<Option_MaxBreastIncrementFactor_Label>임신 중 유방 크기 변화</Option_MaxBreastIncrementFactor_Label>
|
||||
<Option_MaxBreastIncrementFactor_Desc>임신했을 때 가슴이 얼마나 커질지 설정합니다. 폰에 따라 변화 정도가 다릅니다.</Option_MaxBreastIncrementFactor_Desc>
|
||||
<Option_MaxNippleIncrementFactor_Label>임신 중 유두 변화</Option_MaxNippleIncrementFactor_Label>
|
||||
<Option_MaxNippleIncrementFactor_Desc>임신 중에 유두가 얼마나 변할지를 설정합니다.</Option_MaxNippleIncrementFactor_Desc>
|
||||
<Option_PermanentNippleChange_Label>임신 후 유두 영구 변화</Option_PermanentNippleChange_Label>
|
||||
<Option_PermanentNippleChange_Desc>임신한 폰의 유두가 임신이 끝난 후 변화된 상태를 유지할 대략적인 양을 설정합니다.</Option_PermanentNippleChange_Desc>
|
||||
<Option28_Label>잡종 정의 변경하기</Option28_Label>
|
||||
<Option28_Tooltip>사용자 지정 잡종 편집기를 엽니다. 이 설정은 XML파일의 잡종 정의를 대체합니다.</Option28_Tooltip>
|
||||
<Option28_Tooltip>사용자 지정 잡종 편집기를 엽니다.
|
||||
이 설정은 XML파일의 잡종 정의를 대체합니다.</Option28_Tooltip>
|
||||
<Option29_Label>아이콘 축소 허용</Option29_Label>
|
||||
<Option29_Desc>아이콘 축소를 허용합니다.</Option29_Desc>
|
||||
<Option30_Label>난자 수명 배수</Option30_Label>
|
||||
<Option30_Desc>난자 수명을 늘립니다. 이 설정에 관계없이 황체기가 끝나면 난자는 죽습니다.</Option30_Desc>
|
||||
<Option30_Desc>난자 수명을 늘립니다.
|
||||
이 설정에 관계없이 황체기가 끝나면 난자는 죽습니다.</Option30_Desc>
|
||||
<Option31_Label>출산 이후 보지 변화 활성화</Option31_Label>
|
||||
<Option31_Desc>출산 이후 보지가 영구적으로 늘어나게 합니다. 만약 이 설정을 다루고있는 다른 모드가 있다면, 이 설정을 끄세요.</Option31_Desc>
|
||||
<Option31_Desc>출산 이후 보지가 영구적으로 늘어나게 합니다.
|
||||
만약 이 설정을 다루고있는 다른 모드가 있다면, 이 설정을 끄세요.</Option31_Desc>
|
||||
<Option32_Label>변화 강도</Option32_Label>
|
||||
<Option32_Desc>변화 강도를 설정합니다.</Option32_Desc>
|
||||
<Option_EnableGatherCumGizmo_Label>정액 모으기 아이콘을 보이기</Option_EnableGatherCumGizmo_Label>
|
||||
<Option_EstrusOverride_Label>발정기 시, RJW 유혹 설정 덮어쓰기</Option_EstrusOverride_Label>
|
||||
<Option_EstrusOverride_Desc>활성화된 경우 발정기에 있는 폰은 RJW 설정 대신 유혹으로 이 설정을 사용합니다.
|
||||
모든 설정은 기본적으로 해당 RJW 설정으로 설정됩니다.</Option_EstrusOverride_Desc>
|
||||
<Option_EstrusFuckability_Label>발정기 시 유혹 최소 섹스 가능성</Option_EstrusFuckability_Label>
|
||||
<Option_EstrusAttractability_Label>발정기 시 유혹 최소 매력</Option_EstrusAttractability_Label>
|
||||
<Option_EstrusRelationship_Label>발정기 시 유혹 최소 의견</Option_EstrusRelationship_Label>
|
||||
<EstimatedCumLifespan>정자 예상수명</EstimatedCumLifespan>
|
||||
<EstimatedEggLifespan>난자 예상수명</EstimatedEggLifespan>
|
||||
<FertilityDesc>한시간 안에 수정될 확률: {0}% 수정란이 임신으로 진행될 확률입니다. 흰색 오버레이는 정자가 난자를 수정시킬 확률을 표시하는 것입니다.</FertilityDesc>
|
||||
<FertilityDesc>한시간 안에 수정될 확률: {0}%
|
||||
|
||||
흰색 오버레이는 정자가 난자를 수정시킬 확률을 표시하는 것이고,
|
||||
분홍색 임신률 그래프는 수정된 난자가 착상되어 임신으로 진행될 확률입니다.
|
||||
|
||||
수정이 되더라도 착상에 실패하면 임신하지 않습니다.</FertilityDesc>
|
||||
<Option_PregnancyFromBaseRJW_Label>RJW 기본 임신 사용</Option_PregnancyFromBaseRJW_Label>
|
||||
<Option_PregnancyFromMultiplePregnancy_Label>생리 모드 다중 임신 사용</Option_PregnancyFromMultiplePregnancy_Label>
|
||||
<Option_PregnancyFromBiotech_Label>바이오테크 임신 사용</Option_PregnancyFromBiotech_Label>
|
||||
<Button_ResetToDefault>기본값으로 재설정</Button_ResetToDefault>
|
||||
<Gizmo_GatherCum>정액 모으기</Gizmo_GatherCum>
|
||||
<FloatMenu_CleanSelf>질세척</FloatMenu_CleanSelf>
|
||||
|
||||
<CustomHybrid_List_Title>사용자 지정 잡종 편집기</CustomHybrid_List_Title>
|
||||
<CustomHybrid_Title>{0}의 잡종설정</CustomHybrid_Title>
|
||||
<CustomHybrid_Tooltip>{0}이(가) {1}와(과) 교미했을 때, {2}이(가) {3}의 확률로 태어납니다. 만약 두 종족이 서로에 대한 잡종 정의가 있을경우 아버지 쪽의 정의가 우선적으로 사용됩니다.</CustomHybrid_Tooltip>
|
||||
|
||||
</LanguageData>
|
||||
<CustomHybrid_Tooltip>{0}이(가) {1}와(과) 교미했을 때, {2}이(가) {3}의 확률로 태어납니다.
|
||||
만약 두 종족이 서로에 대한 잡종 정의가 있을경우 아버지 쪽의 정의가 우선적으로 사용됩니다.</CustomHybrid_Tooltip>
|
||||
<CannotNoEggs>난자 없음</CannotNoEggs>
|
||||
</LanguageData>
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<Patch>
|
||||
<Operation Class="PatchOperationFindMod">
|
||||
<mods>
|
||||
<li>Alpha Genes</li>
|
||||
</mods>
|
||||
<match Class="PatchOperationAddModExtension">
|
||||
<xpath>/Defs/GeneDef[defName="AG_EggLaying"]</xpath>
|
||||
<value>
|
||||
<li Class="RJW_Menstruation.MenstruationModExtension">
|
||||
<disableCycle>true</disableCycle>
|
||||
</li>
|
||||
</value>
|
||||
</match>
|
||||
</Operation>
|
||||
|
||||
<Operation Class="PatchOperationFindMod">
|
||||
<mods>
|
||||
<li>Vanilla Races Expanded - Saurid</li>
|
||||
</mods>
|
||||
<match Class="PatchOperationAddModExtension">
|
||||
<xpath>/Defs/GeneDef[defName="VRESaurids_Oviparous"]</xpath>
|
||||
<value>
|
||||
<li Class="RJW_Menstruation.MenstruationModExtension">
|
||||
<disableCycle>true</disableCycle>
|
||||
</li>
|
||||
</value>
|
||||
</match>
|
||||
</Operation>
|
||||
|
||||
<Operation Class="PatchOperationFindMod">
|
||||
<mods>
|
||||
<li>Vanilla Races Expanded - Phytokin</li>
|
||||
</mods>
|
||||
<match Class="PatchOperationAddModExtension">
|
||||
<xpath>/Defs/GeneDef[defName="VRE_SaplingBirth"]</xpath>
|
||||
<value>
|
||||
<li Class="RJW_Menstruation.MenstruationModExtension">
|
||||
<disableCycle>true</disableCycle>
|
||||
</li>
|
||||
</value>
|
||||
</match>
|
||||
</Operation>
|
||||
|
||||
<Operation Class="PatchOperationFindMod">
|
||||
<mods>
|
||||
<li>Erin's Corvyia</li>
|
||||
</mods>
|
||||
<match Class="PatchOperationAddModExtension">
|
||||
<xpath>/Defs/GeneDef[defName="ERN_EggLayer"]</xpath>
|
||||
<value>
|
||||
<li Class="RJW_Menstruation.MenstruationModExtension">
|
||||
<disableCycle>true</disableCycle>
|
||||
</li>
|
||||
</value>
|
||||
</match>
|
||||
</Operation>
|
||||
|
||||
<Operation Class="PatchOperationFindMod">
|
||||
<mods>
|
||||
<li>Outland - Genetics</li>
|
||||
</mods>
|
||||
<match Class="PatchOperationAddModExtension">
|
||||
<xpath>/Defs/GeneDef[defName="Outland_EggLayer"]</xpath>
|
||||
<value>
|
||||
<li Class="RJW_Menstruation.MenstruationModExtension">
|
||||
<disableCycle>true</disableCycle>
|
||||
</li>
|
||||
</value>
|
||||
</match>
|
||||
</Operation>
|
||||
</Patch>
|
|
@ -144,11 +144,5 @@
|
|||
</li>
|
||||
</comps>
|
||||
</value>
|
||||
</Operation>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</Operation>
|
||||
</Patch>
|
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 20 KiB |
|
@ -1,5 +1,4 @@
|
|||
using AlienRace;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace RJW_Menstruation
|
|||
public const int ColonistTickIntervalDefault = GenDate.TicksPerHour;
|
||||
public const int NonColonistTickIntervalDefault = GenDate.TicksPerHour;
|
||||
public const int AnimalTickIntervalDefault = GenDate.TicksPerHour;
|
||||
public const int TickIntervalMinimum = 20;
|
||||
public const int TickIntervalMinimum = GenTicks.TicksPerRealSecond / 3;
|
||||
public const int TickIntervalMaximum = 4 * GenDate.TicksPerHour;
|
||||
public const float EnzygoticTwinsChanceDefault = 0.002f;
|
||||
public const int EnzygoticTwinsChanceAdjustDefault = 2;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
using RimWorld;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using RimWorld;
|
||||
using rjw;
|
||||
using System.Collections.Generic;
|
||||
using Verse;
|
||||
|
||||
|
|
|
@ -109,5 +109,7 @@ namespace RJW_Menstruation
|
|||
if (curStage == Stage.Luteal && !hadOvulatoryStage) return false;
|
||||
else return base.ShouldBeInEstrus();
|
||||
}
|
||||
|
||||
protected override float RandomOvulationChance => 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -123,11 +123,10 @@ namespace RJW_Menstruation
|
|||
protected string customwombtex = null;
|
||||
protected string customvagtex = null;
|
||||
protected bool estrusflag = false;
|
||||
protected float ovulationChanceCache = -1.0f; // Dirtied every simulation
|
||||
protected float implantationChanceCache = -1.0f;
|
||||
protected float? ovulationChanceCache = null; // Dirtied every simulation
|
||||
protected float? implantationChanceCache = null;
|
||||
protected int opcache = -1;
|
||||
protected float antisperm = 0.0f;
|
||||
protected float? originvagsize = null;
|
||||
// RJW pregnancy, or Biotech pregnancy/labor/laborpushing
|
||||
protected Hediff pregnancy = null;
|
||||
|
||||
|
@ -179,7 +178,8 @@ namespace RJW_Menstruation
|
|||
|
||||
public float HoursBetweenSimulations => (float)TickInterval / GenDate.TicksPerHour;
|
||||
|
||||
public Hediff Pregnancy {
|
||||
public Hediff Pregnancy
|
||||
{
|
||||
get
|
||||
{
|
||||
if (pregnancy == null) return null;
|
||||
|
@ -255,11 +255,11 @@ namespace RJW_Menstruation
|
|||
|
||||
public float TotalCum
|
||||
{
|
||||
get => cums?.Sum(cum => cum.Volume) ?? 0;
|
||||
get => cums?.Sum(cum => cum.Volume) ?? 0;
|
||||
}
|
||||
public float TotalFertCum
|
||||
{
|
||||
get => cums?.Sum(cum => cum.FertVolume) ?? 0;
|
||||
get => cums?.Where(cum => CumCanFertilize(cum)).Sum(cum => cum.FertVolume) ?? 0;
|
||||
}
|
||||
public float TotalCumPercent
|
||||
{
|
||||
|
@ -289,7 +289,7 @@ namespace RJW_Menstruation
|
|||
private bool calculatingOvulationChance = false;
|
||||
public bool CalculatingOvulationChance { get => calculatingOvulationChance; }
|
||||
|
||||
protected float CalculatedOvulationChance()
|
||||
private float CalculatedOvulationChance()
|
||||
{
|
||||
float ovulationChance = 1.0f;
|
||||
if (EggHealth <= 0.0f) return 0.0f;
|
||||
|
@ -315,19 +315,20 @@ namespace RJW_Menstruation
|
|||
return ovulationChance;
|
||||
}
|
||||
|
||||
protected float CalculatedImplantChance()
|
||||
private float CalculatedImplantChance()
|
||||
{
|
||||
if (ModsConfig.BiotechActive && xxx.is_human(Pawn))
|
||||
{
|
||||
// Implant factor will be based solely on pawn age, plus any rollover from ovulation chance
|
||||
float factor = 1.0f;
|
||||
StatDefOf.Fertility.GetStatPart<StatPart_FertilityByGenderAge>()?.TransformValue(StatRequest.For(Pawn), ref factor);
|
||||
if (factor <= 0.0f) return 0.0f;
|
||||
if (OvulationChance > 1.0f) factor *= OvulationChance;
|
||||
return Props.baseImplantationChanceFactor * FertilityModifier * factor;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Pawn.health.capacities.GetLevel(xxx.reproduction) * Props.baseImplantationChanceFactor * FertilityModifier;
|
||||
return Pawn.health.capacities.GetLevel(xxx.reproduction) * Props.baseImplantationChanceFactor * FertilityModifier * (Pawn.IsBreeder() ? 10.0f : 1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -335,8 +336,8 @@ namespace RJW_Menstruation
|
|||
{
|
||||
get
|
||||
{
|
||||
if (ovulationChanceCache < 0.0f) ovulationChanceCache = CalculatedOvulationChance();
|
||||
return ovulationChanceCache;
|
||||
if (ovulationChanceCache == null) ovulationChanceCache = CalculatedOvulationChance();
|
||||
return ovulationChanceCache.Value;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -345,8 +346,8 @@ namespace RJW_Menstruation
|
|||
{
|
||||
get
|
||||
{
|
||||
if (implantationChanceCache < 0.0f) implantationChanceCache = CalculatedImplantChance();
|
||||
return implantationChanceCache;
|
||||
if (implantationChanceCache == null) implantationChanceCache = CalculatedImplantChance();
|
||||
return implantationChanceCache.Value;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -356,7 +357,7 @@ namespace RJW_Menstruation
|
|||
{
|
||||
if (cums.NullOrEmpty()) yield return Translations.Info_noCum;
|
||||
else foreach (Cum cum in cums)
|
||||
yield return string.Format("{0}: {1:0.##}ml", cum.notcum ? cum.notcumLabel : cum.pawn?.Label, cum.Volume);
|
||||
yield return string.Format("{0}: {1:0.##}ml", cum.notcum ? cum.notcumLabel : cum.pawn?.Label, cum.Volume);
|
||||
}
|
||||
}
|
||||
public Color GetCumMixtureColor
|
||||
|
@ -563,19 +564,6 @@ namespace RJW_Menstruation
|
|||
}
|
||||
}
|
||||
|
||||
public float OriginVagSize
|
||||
{
|
||||
get
|
||||
{
|
||||
if (originvagsize == null)
|
||||
{
|
||||
originvagsize = parent.Severity;
|
||||
}
|
||||
return originvagsize ?? 0.1f;
|
||||
}
|
||||
set => originvagsize = value;
|
||||
}
|
||||
|
||||
public int CurStageIntervalTicks
|
||||
{
|
||||
get => currentIntervalTicks;
|
||||
|
@ -608,7 +596,7 @@ namespace RJW_Menstruation
|
|||
else if (Pawn.story?.bodyType == BodyTypeDefOf.Female) discoveryTime = 0.35f;
|
||||
// Estimated; there's no way to get the exact value after the fact without writing it into the save
|
||||
float lutealProgressWhenImplanted = Math.Min(0.5f, maxImplantDelayHours / (Props.lutealIntervalDays * GenDate.HoursPerDay));
|
||||
|
||||
|
||||
return GenMath.LerpDouble(0, discoveryTime, lutealProgressWhenImplanted, 1.0f, pregnancy.Severity);
|
||||
}
|
||||
}
|
||||
|
@ -656,7 +644,6 @@ namespace RJW_Menstruation
|
|||
Scribe_Values.Look(ref ovarypower, "ovarypower", ovarypower, true);
|
||||
Scribe_Values.Look(ref eggstack, "eggstack", 0);
|
||||
Scribe_Values.Look(ref estrusflag, "estrusflag", false);
|
||||
Scribe_Values.Look(ref originvagsize, "originvagsize", originvagsize, true);
|
||||
Scribe_Values.Look(ref DoCleanWomb, "DoCleanWomb", false);
|
||||
Scribe_References.Look(ref pregnancy, "pregnancy");
|
||||
if (Scribe.mode == LoadSaveMode.PostLoadInit)
|
||||
|
@ -679,23 +666,18 @@ namespace RJW_Menstruation
|
|||
ovulationFactor = 1f;
|
||||
noBleeding = false;
|
||||
opcache = -1;
|
||||
|
||||
|
||||
if (Pawn.genes == null || !ModsConfig.BiotechActive) return;
|
||||
|
||||
foreach (GeneDef geneDef in Pawn.genes.GenesListForReading.Select(gene => gene.def))
|
||||
foreach (MenstruationModExtension extension in Pawn.genes.GenesListForReading.Select(gene => gene.def.GetModExtension<MenstruationModExtension>()).Where(ext => ext != null))
|
||||
{
|
||||
if (geneDef == VariousDefOf.ShortEggLifetime) eggLifeSpanTicks = eggLifeSpanTicks * 3 / 4;
|
||||
else if (geneDef == VariousDefOf.DoubleEggLifetime) eggLifeSpanTicks *= 2;
|
||||
else if (geneDef == VariousDefOf.QuadEggLifetime) eggLifeSpanTicks *= 4;
|
||||
|
||||
else if (geneDef == VariousDefOf.NeverEstrus) estrusLevel = EstrusLevel.None;
|
||||
else if (geneDef == VariousDefOf.FullEstrus) estrusLevel = EstrusLevel.Visible;
|
||||
|
||||
else if (geneDef == VariousDefOf.DoubleOvulation) ovulationFactor = 2f;
|
||||
else if (geneDef == VariousDefOf.QuadOvulation) ovulationFactor = 4f;
|
||||
|
||||
else if (geneDef == VariousDefOf.NoBleeding) noBleeding = true;
|
||||
eggLifeSpanTicks = (int)(eggLifeSpanTicks * extension.eggLifeTimeFactor);
|
||||
if (extension.alwaysEstrus) estrusLevel = EstrusLevel.Visible;
|
||||
else if (extension.neverEstrus) estrusLevel = EstrusLevel.None;
|
||||
ovulationFactor *= extension.ovulationFactor;
|
||||
if (extension.noBleeding) noBleeding = true;
|
||||
}
|
||||
if (eggLifeSpanTicks < 0) eggLifeSpanTicks = 0;
|
||||
if (ovulationFactor < 0f) ovulationFactor = 0f;
|
||||
}
|
||||
|
||||
public bool ShouldSimulate()
|
||||
|
@ -724,7 +706,7 @@ namespace RJW_Menstruation
|
|||
{
|
||||
if (Pawn.IsHashIntervalTick(recalculateTickInterval)) TickInterval = -1; // Every so often, force TickInterval to be recalculated in case the pawn's status changed.
|
||||
if (!Pawn.IsHashIntervalTick(TickInterval)) return;
|
||||
|
||||
|
||||
if (!ShouldSimulate()) return;
|
||||
|
||||
// Initialize immediately if needed, but if there's an error, then don't spam it every tick
|
||||
|
@ -733,7 +715,7 @@ namespace RJW_Menstruation
|
|||
Log.Warning($"{Pawn}'s womb is ticking, but was not initialized first");
|
||||
Initialize();
|
||||
}
|
||||
|
||||
|
||||
if (initError) Log.Warning($"Attempting to process {Pawn}'s womb uninitialized");
|
||||
|
||||
if (Pregnancy != null && curStage != Stage.Pregnant)
|
||||
|
@ -743,7 +725,7 @@ namespace RJW_Menstruation
|
|||
}
|
||||
|
||||
BeforeSimulator();
|
||||
|
||||
|
||||
if (ShouldBeInfertile()) GoNextStage(Stage.Infertile);
|
||||
switch (curStage)
|
||||
{
|
||||
|
@ -820,7 +802,7 @@ namespace RJW_Menstruation
|
|||
tip.Append(": ");
|
||||
tip.Append(GetCurStageLabel);
|
||||
string fertInfo = GetFertilizingInfo;
|
||||
if(CurrentVisibleStage == Stage.Luteal && fertInfo.Length > 0)
|
||||
if (CurrentVisibleStage == Stage.Luteal && fertInfo.Length > 0)
|
||||
{
|
||||
tip.AppendLine();
|
||||
tip.Append(fertInfo);
|
||||
|
@ -831,7 +813,7 @@ namespace RJW_Menstruation
|
|||
|
||||
protected virtual int TicksToNextStage()
|
||||
{
|
||||
return Math.Max(0,(currentIntervalTicks - curStageTicks) / Configurations.CycleAcceleration);
|
||||
return Math.Max(0, (currentIntervalTicks - curStageTicks) / Configurations.CycleAcceleration);
|
||||
}
|
||||
|
||||
public override string CompDebugString()
|
||||
|
@ -1176,7 +1158,7 @@ namespace RJW_Menstruation
|
|||
|
||||
if (cycleSpeed < 0f) cycleSpeed = Utility.RandGaussianLike(0.8f, 1.2f);
|
||||
if (cycleVariability < 0f) cycleVariability = MenstruationUtility.RandomVariabilityPercent();
|
||||
|
||||
|
||||
InitOvary();
|
||||
|
||||
if (currentIntervalTicks < 0)
|
||||
|
@ -1284,8 +1266,8 @@ namespace RJW_Menstruation
|
|||
|
||||
protected virtual void BeforeSimulator()
|
||||
{
|
||||
ovulationChanceCache = -1.0f;
|
||||
implantationChanceCache = -1.0f;
|
||||
ovulationChanceCache = null;
|
||||
implantationChanceCache = null;
|
||||
CumOut();
|
||||
}
|
||||
|
||||
|
@ -1353,10 +1335,18 @@ namespace RJW_Menstruation
|
|||
}
|
||||
}
|
||||
|
||||
public bool CumCanFertilize(Cum cum)
|
||||
{
|
||||
return !cum.notcum &&
|
||||
cum.FertVolume > 0 &&
|
||||
!(cum.pawn?.Destroyed ?? true) &&
|
||||
(RJWPregnancySettings.bestial_pregnancy_enabled || xxx.is_animal(Pawn) == xxx.is_animal(cum.pawn));
|
||||
}
|
||||
|
||||
protected Pawn Fertilize()
|
||||
{
|
||||
if (cums.NullOrEmpty()) return null;
|
||||
List<Cum> eligibleCum = cums.FindAll(cum => !cum.notcum && cum.FertVolume > 0 && cum.pawn != null && (RJWPregnancySettings.bestial_pregnancy_enabled || xxx.is_animal(Pawn) == xxx.is_animal(cum.pawn)));
|
||||
List<Cum> eligibleCum = cums.FindAll(cum => CumCanFertilize(cum));
|
||||
if (eligibleCum.Count == 0) return null;
|
||||
|
||||
float totalFertPower = eligibleCum.Sum(cum => cum.FertVolume);
|
||||
|
@ -1364,7 +1354,7 @@ namespace RJW_Menstruation
|
|||
//float fertFailChancePerHour = Mathf.Pow(1.0f - Configurations.FertilizeChance, totalFertPower * Props.basefertilizationChanceFactor);
|
||||
//float fertFailChancePerInterval = Mathf.Pow(fertFailChancePerHour, (float)TickInterval / GenDate.TicksPerHour);
|
||||
float fertFailChancePerInterval = Mathf.Pow(1.0f - Configurations.FertilizeChance, totalFertPower * Props.basefertilizationChanceFactor * HoursBetweenSimulations);
|
||||
|
||||
|
||||
if (Rand.Chance(fertFailChancePerInterval)) return null;
|
||||
|
||||
Pawn.records.AddTo(VariousDefOf.AmountofFertilizedEggs, 1);
|
||||
|
@ -1494,7 +1484,7 @@ namespace RJW_Menstruation
|
|||
float interspeciesFactor = InterspeciesImplantFactor(egg.fertilizer);
|
||||
float implantChance = Configurations.ImplantationChance * ImplantChance * interspeciesFactor;
|
||||
Log.Message($"Fertilized egg of {Pawn} failed to implant (chance {implantChance.ToStringPercent()}, " +
|
||||
(interspeciesFactor < 1.0f ? $"interspecies factor {interspeciesFactor.ToStringPercent()}, " : "" ) +
|
||||
(interspeciesFactor < 1.0f ? $"interspecies factor {interspeciesFactor.ToStringPercent()}, " : "") +
|
||||
$"father {egg.fertilizer})");
|
||||
}
|
||||
deadeggs.Add(egg);
|
||||
|
@ -1525,7 +1515,7 @@ namespace RJW_Menstruation
|
|||
protected void BleedOut()
|
||||
{
|
||||
// ~1.5 per hour times acceleration
|
||||
float bledAmount = 0.03f * Configurations.BleedingAmount * Configurations.CycleAcceleration * Rand.Range(0.5f, 1.5f) * HoursBetweenSimulations;
|
||||
float bledAmount = Utility.VariationRange(0.03f * Configurations.BleedingAmount * Configurations.CycleAcceleration * HoursBetweenSimulations, 0.5f);
|
||||
CumIn(Pawn, bledAmount, Translations.Menstrual_Blood, -5.0f, Pawn.RaceProps?.BloodDef ?? ThingDefOf.Filth_Blood);
|
||||
Cum blood = GetNotCum(Translations.Menstrual_Blood);
|
||||
if (blood != null) blood.Color = BloodColor;
|
||||
|
@ -1580,9 +1570,6 @@ namespace RJW_Menstruation
|
|||
return amount;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
protected void EggDecay()
|
||||
{
|
||||
HashSet<Egg> deadeggs = new HashSet<Egg>();
|
||||
|
@ -1602,7 +1589,7 @@ namespace RJW_Menstruation
|
|||
protected void AddCrampPain()
|
||||
{
|
||||
Hediff hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_MenstrualCramp, Pawn);
|
||||
hediff.Severity = crampPain * Rand.Range(0.9f, 1.1f);
|
||||
hediff.Severity = Utility.VariationRange(crampPain, 0.1f);
|
||||
HediffCompProperties_SeverityPerDay Prop = (HediffCompProperties_SeverityPerDay)hediff.TryGetComp<HediffComp_SeverityPerDay>().props;
|
||||
Prop.severityPerDay = -hediff.Severity / (currentIntervalTicks / GenDate.TicksPerDay) * Configurations.CycleAcceleration;
|
||||
Pawn.health.AddHediff(hediff, parent.Part);
|
||||
|
@ -1659,7 +1646,7 @@ namespace RJW_Menstruation
|
|||
eggnum = 1f;
|
||||
}
|
||||
eggnum *= ovulationFactor;
|
||||
int toOvulate = (int)eggnum + eggstack;
|
||||
int toOvulate = Math.Max(1, (int)eggnum + eggstack);
|
||||
|
||||
int ovulated = 0;
|
||||
for (int i = 0; i < toOvulate; i++)
|
||||
|
@ -1670,7 +1657,7 @@ namespace RJW_Menstruation
|
|||
}
|
||||
ovarypower -= ovulated;
|
||||
eggstack = 0;
|
||||
if (Configurations.Debug && ovulated != toOvulate)
|
||||
if (Configurations.Debug && ovulated < toOvulate)
|
||||
Log.Message($"{Pawn} ovulated {ovulated}/{toOvulate} eggs ({OvulationChance.ToStringPercent()} chance)");
|
||||
|
||||
GoNextStage(Stage.Luteal);
|
||||
|
@ -1817,10 +1804,10 @@ namespace RJW_Menstruation
|
|||
}
|
||||
else pawnMemories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer);
|
||||
}
|
||||
else if (Pawn.relations.OpinionOf(cummer) <= -5)
|
||||
pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer);
|
||||
else if (Pawn.IsInEstrus() && Pawn.relations.OpinionOf(cummer) < RJWHookupSettings.MinimumRelationshipToHookup)
|
||||
pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideFEstrus, cummer);
|
||||
else if (Pawn.relations.OpinionOf(cummer) <= -5)
|
||||
pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer);
|
||||
else if (Pawn.IsInEstrus() && Pawn.relations.OpinionOf(cummer) < RJWHookupSettings.MinimumRelationshipToHookup)
|
||||
pawnMemories.TryGainMemory(VariousDefOf.HaterCameInsideFEstrus, cummer);
|
||||
else if (!Pawn.relations.DirectRelationExists(PawnRelationDefOf.Spouse, cummer) && !Pawn.relations.DirectRelationExists(PawnRelationDefOf.Fiance, cummer))
|
||||
{
|
||||
if (Pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) pawnMemories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer);
|
||||
|
@ -1881,15 +1868,15 @@ namespace RJW_Menstruation
|
|||
switch (stage)
|
||||
{
|
||||
case Stage.Follicular:
|
||||
return (int)(Props.follicularIntervalDays * GenDate.TicksPerDay * (1 + Rand.Range(-cycleVariability, cycleVariability) * 1.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 1.5f));
|
||||
return (int)(Utility.VariationRange(Props.follicularIntervalDays * GenDate.TicksPerDay, cycleVariability * 1.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 1.5f));
|
||||
case Stage.Ovulatory:
|
||||
return Props.ovulationIntervalHours * GenDate.TicksPerHour; // No variability for now
|
||||
case Stage.Luteal:
|
||||
return (int)(Props.lutealIntervalDays * GenDate.TicksPerDay * (1 + Rand.Range(-cycleVariability, cycleVariability) * 0.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 0.5f));
|
||||
return (int)(Utility.VariationRange(Props.lutealIntervalDays * GenDate.TicksPerDay, cycleVariability * 0.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 0.5f));
|
||||
case Stage.Bleeding:
|
||||
return (int)(Props.bleedingIntervalDays * GenDate.TicksPerDay * (1 + Rand.Range(-cycleVariability, cycleVariability) * 0.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 0.5f));
|
||||
return (int)(Utility.VariationRange(Props.bleedingIntervalDays * GenDate.TicksPerDay, cycleVariability * 0.5f * variabilityFactor) / (1 + (cycleSpeed - 1) * 0.5f));
|
||||
case Stage.Recover:
|
||||
return (int)(Props.recoveryIntervalDays * GenDate.TicksPerDay * Rand.Range(0.95f, 1.05f));
|
||||
return (int)Utility.VariationRange(Props.recoveryIntervalDays * GenDate.TicksPerDay, 0.05f);
|
||||
case Stage.Pregnant:
|
||||
return (int)(MenstruationUtility.GestationHours(pregnancy) * GenDate.TicksPerHour);
|
||||
default:
|
||||
|
@ -1917,10 +1904,13 @@ namespace RJW_Menstruation
|
|||
else return Rand.Range(0.6f, 1.0f);
|
||||
}
|
||||
|
||||
protected virtual float RandomOvulationChance => (float)Props.ovulationIntervalHours / GenDate.HoursPerDay;
|
||||
|
||||
protected Stage RandomStage()
|
||||
{
|
||||
Stage stage = Rand.ElementByWeight(
|
||||
Stage.Follicular, Props.follicularIntervalDays - Props.bleedingIntervalDays,
|
||||
Stage.Ovulatory, RandomOvulationChance,
|
||||
Stage.Luteal, Props.lutealIntervalDays,
|
||||
Stage.Bleeding, Props.bleedingIntervalDays);
|
||||
|
||||
|
@ -1929,6 +1919,9 @@ namespace RJW_Menstruation
|
|||
case Stage.Follicular:
|
||||
curStageTicks = Rand.Range(0, (Props.follicularIntervalDays - Props.bleedingIntervalDays) * GenDate.TicksPerDay);
|
||||
break;
|
||||
case Stage.Ovulatory:
|
||||
curStageTicks = Rand.Range(0, Props.ovulationIntervalHours * GenDate.TicksPerHour);
|
||||
break;
|
||||
case Stage.Luteal:
|
||||
curStageTicks = Rand.Range(0, Props.lutealIntervalDays * GenDate.TicksPerDay);
|
||||
break;
|
||||
|
@ -2029,28 +2022,6 @@ namespace RJW_Menstruation
|
|||
|
||||
public class HediffComp_Anus : HediffComp
|
||||
{
|
||||
protected float? originanussize;
|
||||
|
||||
public float OriginAnusSize
|
||||
{
|
||||
get
|
||||
{
|
||||
if (originanussize == null)
|
||||
{
|
||||
originanussize = parent.Severity;
|
||||
}
|
||||
return originanussize ?? 0.1f;
|
||||
}
|
||||
}
|
||||
|
||||
public override void CompExposeData()
|
||||
{
|
||||
base.CompExposeData();
|
||||
Scribe_Values.Look(ref originanussize, "originanussize", originanussize, true);
|
||||
}
|
||||
|
||||
public override void CompPostTick(ref float severityAdjustment)
|
||||
{
|
||||
}
|
||||
public CompProperties_Anus Props => (CompProperties_Anus)props;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using RimWorld;
|
||||
using System.Linq;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Menstruation
|
||||
|
@ -29,14 +28,14 @@ namespace RJW_Menstruation
|
|||
|
||||
protected override void InitializeExtraValues()
|
||||
{
|
||||
base.InitializeExtraValues();
|
||||
base.InitializeExtraValues();
|
||||
if (averageCycleIntervalTicks < 0)
|
||||
{
|
||||
averageCycleIntervalTicks = (int)(Props.cycleIntervalDays.RandomInRange * GenDate.TicksPerDay / cycleSpeed);
|
||||
if (ticksToNextCycle < -50000)
|
||||
ticksToNextCycle = Rand.Range(0, averageCycleIntervalTicks);
|
||||
// Make the cutoff halfway into cycle, just to be sure there isn't a double-cycle the first time
|
||||
if ((curStage == Stage.Follicular || curStage == Stage.Luteal || curStage == Stage.Bleeding)
|
||||
if ((curStage == Stage.Follicular || curStage == Stage.Ovulatory || curStage == Stage.Luteal || curStage == Stage.Bleeding)
|
||||
&& (averageCycleIntervalTicks - ticksToNextCycle) / 2 >= GenDate.TicksPerDay * (Props.follicularIntervalDays + Props.lutealIntervalDays) / cycleSpeed)
|
||||
GoNextStage(Stage.Anestrus);
|
||||
}
|
||||
|
@ -99,14 +98,14 @@ namespace RJW_Menstruation
|
|||
base.PregnantAction();
|
||||
if (curStage != Stage.Pregnant)
|
||||
// Go halfway into the cycle
|
||||
ticksToNextCycle = (int)(averageCycleIntervalTicks * (1 + Rand.Range(-cycleVariability, cycleVariability))) / 2;
|
||||
ticksToNextCycle = (int)Utility.VariationRange(averageCycleIntervalTicks, cycleVariability) / 2;
|
||||
}
|
||||
|
||||
protected override void AnestrusAction()
|
||||
{
|
||||
if (ticksToNextCycle <= 0 && IsBreedingSeason())
|
||||
{
|
||||
ticksToNextCycle = (int)(averageCycleIntervalTicks * (1 + Rand.Range(-cycleVariability, cycleVariability)));
|
||||
ticksToNextCycle = (int)Utility.VariationRange(averageCycleIntervalTicks, cycleVariability);
|
||||
GoNextStage(Stage.Follicular);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
|
||||
using RimWorld;
|
||||
using RimWorld.Planet;
|
||||
using rjw;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
@ -46,6 +47,8 @@ namespace RJW_Menstruation
|
|||
|
||||
protected IEnumerable<Pawn> AffectedPawns()
|
||||
{
|
||||
if(Pawn.GetCaravan() is Caravan caravan)
|
||||
foreach (Pawn p in caravan.PawnsListForReading.Where(p => p != Pawn)) yield return p;
|
||||
Map mapHeld = Pawn.MapHeld;
|
||||
if (mapHeld == null) yield break;
|
||||
foreach (Pawn pawn in mapHeld.mapPawns.AllPawnsSpawned)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using HarmonyLib;
|
||||
using Mono.Cecil.Cil;
|
||||
using RimWorld;
|
||||
using rjw;
|
||||
using System;
|
||||
|
@ -203,7 +202,7 @@ namespace RJW_Menstruation
|
|||
if (comp?.HasBaby ?? false)
|
||||
{
|
||||
OutcomeChance thisOutcome = outcome;
|
||||
Precept_Ritual precept_Ritual = (Precept_Ritual)comp.Pawn.Ideo.GetPrecept(PreceptDefOf.ChildBirth);
|
||||
Precept_Ritual precept_Ritual = (Precept_Ritual)comp.Pawn.Ideo.GetPrecept(RimWorld.PreceptDefOf.ChildBirth);
|
||||
float birthQuality = PregnancyUtility.GetBirthQualityFor(mother);
|
||||
do
|
||||
{
|
||||
|
|
|
@ -1,14 +1,10 @@
|
|||
using RimWorld;
|
||||
using RimWorld.Planet;
|
||||
using rjw;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.Eventing.Reader;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
using Verse.AI;
|
||||
|
||||
namespace RJW_Menstruation
|
||||
{
|
||||
|
@ -141,7 +137,7 @@ namespace RJW_Menstruation
|
|||
else if (gestationProgress < 0.8f) icon = fetustex + "04";
|
||||
else icon = fetustex + "05";
|
||||
|
||||
return TryGetTwinsIcon(icon, babycount) ?? ContentFinder<Texture2D>.Get((icon), true);
|
||||
return TryGetTwinsIcon(icon, babycount) ?? ContentFinder<Texture2D>.Get(icon, true);
|
||||
}
|
||||
|
||||
public static Texture2D TryGetTwinsIcon(string path, int babycount)
|
||||
|
@ -160,7 +156,7 @@ namespace RJW_Menstruation
|
|||
|
||||
List<Hediff_InsectEgg> insectEggs = new List<Hediff_InsectEgg>();
|
||||
comp.Pawn.health.hediffSet.GetHediffs(ref insectEggs);
|
||||
if (!insectEggs.NullOrEmpty() && insectEggs.Sum(hediff => hediff.eggssize) > 1.0f) return null; // same logic as "Stuffed" in GetInsectEggedIcon
|
||||
if (insectEggs?.Sum(hediff => hediff.eggssize) > 1.0f) return null; // same logic as "Stuffed" in GetInsectEggedIcon
|
||||
|
||||
string icon = comp.WombTex;
|
||||
float cumpercent = comp.TotalCumPercent;
|
||||
|
@ -183,7 +179,7 @@ namespace RJW_Menstruation
|
|||
else if (cumpercent < 0.89f) icon += "_Cum_15";
|
||||
else if (cumpercent < 0.95f) icon += "_Cum_16";
|
||||
else icon += "_Cum_17";
|
||||
Texture2D cumtex = ContentFinder<Texture2D>.Get((icon), true);
|
||||
Texture2D cumtex = ContentFinder<Texture2D>.Get(icon, true);
|
||||
return cumtex;
|
||||
}
|
||||
public static Texture2D GetInsectEggedIcon(this HediffComp_Menstruation comp)
|
||||
|
@ -306,15 +302,13 @@ namespace RJW_Menstruation
|
|||
}
|
||||
|
||||
|
||||
public static Texture2D GetGenitalIcon(this Pawn pawn, HediffComp_Menstruation comp, bool drawOrigin = false)
|
||||
public static Texture2D GetGenitalIcon(this Pawn pawn, HediffComp_Menstruation comp)
|
||||
{
|
||||
Hediff hediff = comp?.parent;
|
||||
if (hediff == null) return ContentFinder<Texture2D>.Get("Genitals/Vagina00", true);
|
||||
//HediffComp_Menstruation comp = hediff.GetMenstruationComp();
|
||||
string icon;
|
||||
float severity;
|
||||
if (drawOrigin) severity = comp.OriginVagSize;
|
||||
else severity = hediff.Severity;
|
||||
float severity = hediff.Severity;
|
||||
if (comp != null) icon = comp.VagTex;
|
||||
else icon = "Genitals/Vagina";
|
||||
|
||||
|
@ -331,30 +325,18 @@ namespace RJW_Menstruation
|
|||
else if (severity < 1.01f) icon += "10"; //cavernous
|
||||
else icon += "11"; //abyssal
|
||||
|
||||
return ContentFinder<Texture2D>.Get((icon), true);
|
||||
return ContentFinder<Texture2D>.Get(icon, true);
|
||||
}
|
||||
|
||||
public static Texture2D GetAnalIcon(this Pawn pawn, bool drawOrigin = false)
|
||||
public static Texture2D GetAnalIcon(this Pawn pawn)
|
||||
{
|
||||
Hediff hediff = pawn.health.hediffSet.hediffs.FirstOrDefault(h => VariousDefOf.AllAnuses.Contains(h.def)) ??
|
||||
pawn.health.hediffSet.hediffs.FirstOrDefault(h => h.def.defName.ToLower().Contains("anus"));
|
||||
if (hediff == null) return ContentFinder<Texture2D>.Get(("Genitals/Anal00"), true);
|
||||
if (hediff == null) return ContentFinder<Texture2D>.Get("Genitals/Anal00", true);
|
||||
|
||||
string icon = ((CompProperties_Anus)hediff.GetAnusComp()?.props)?.analTex ?? "Genitals/Anal";
|
||||
float severity = hediff.Severity;
|
||||
|
||||
string icon;
|
||||
float severity;
|
||||
HediffComp_Anus comp = hediff.GetAnusComp();
|
||||
if (comp != null)
|
||||
{
|
||||
CompProperties_Anus Props = (CompProperties_Anus)comp.props;
|
||||
icon = Props.analTex ?? "Genitals/Anal";
|
||||
if (drawOrigin) severity = comp.OriginAnusSize;
|
||||
else severity = hediff.Severity;
|
||||
}
|
||||
else
|
||||
{
|
||||
icon = "Genitals/Anal";
|
||||
severity = hediff.Severity;
|
||||
}
|
||||
if (severity < 0.20f) icon += "00"; //micro
|
||||
else if (severity < 0.40f) icon += "01"; //tight
|
||||
else if (severity < 0.60f) icon += "02"; //average
|
||||
|
@ -362,7 +344,7 @@ namespace RJW_Menstruation
|
|||
else if (severity < 1.01f) icon += "04"; //cavernous
|
||||
else icon += "05"; //abyssal
|
||||
|
||||
return ContentFinder<Texture2D>.Get((icon), true);
|
||||
return ContentFinder<Texture2D>.Get(icon, true);
|
||||
}
|
||||
|
||||
public static float GestationHours(this Hediff hediff)
|
||||
|
@ -398,7 +380,8 @@ namespace RJW_Menstruation
|
|||
if (!Configurations.EnableAnimalCycle && pawn.IsAnimal()) return false;
|
||||
if (pawn.GetComp<CompEggLayer>() != null) return false;
|
||||
if (pawn.RaceHasOviPregnancy()) return false;
|
||||
if (ModsConfig.BiotechActive && pawn.genes != null &&
|
||||
|
||||
if (ModsConfig.BiotechActive && pawn.genes != null &&
|
||||
pawn.genes.GenesListForReading.Select(gene => gene.def).Intersect(VariousDefOf.EggLayerGenes).Any()) return false;
|
||||
|
||||
return true;
|
||||
|
@ -452,7 +435,7 @@ namespace RJW_Menstruation
|
|||
if (precept != null) return true;
|
||||
|
||||
else return pawn.IsBreeder() ||
|
||||
pawn.HasImpregnationFetish();
|
||||
pawn.HasImpregnationFetish();
|
||||
}
|
||||
|
||||
public static float DamagePants(this Pawn pawn, float fluidAmount)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using RimWorld;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Verse;
|
||||
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
using RimWorld;
|
||||
using rjw;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Menstruation
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
using Verse;
|
||||
|
||||
namespace RJW_Menstruation
|
||||
{
|
||||
public class MenstruationModExtension : DefModExtension
|
||||
{
|
||||
public float eggLifeTimeFactor = 1.0f;
|
||||
public bool neverEstrus = false;
|
||||
public bool alwaysEstrus = false;
|
||||
public float ovulationFactor = 1.0f;
|
||||
public bool noBleeding = false;
|
||||
|
||||
public bool disableCycle = false;
|
||||
}
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
using HarmonyLib;
|
||||
using System.Linq;
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Reflection.Emit;
|
||||
using Verse;
|
||||
|
||||
namespace RJW_Menstruation
|
||||
{
|
||||
|
@ -195,8 +195,9 @@ namespace RJW_Menstruation
|
|||
[HarmonyPatch(typeof(Pawn_GeneTracker), "Notify_GenesChanged")]
|
||||
public class Notify_GenesChanged_Patch
|
||||
{
|
||||
public static void Postfix(Pawn_GeneTracker __instance)
|
||||
public static void Postfix(Pawn_GeneTracker __instance, GeneDef addedOrRemovedGene)
|
||||
{
|
||||
if (!addedOrRemovedGene.HasModExtension<MenstruationModExtension>()) return;
|
||||
foreach (HediffComp_Menstruation comp in __instance.pawn.GetMenstruationComps())
|
||||
comp.Notify_UpdatedGenes();
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
using RimWorld;
|
||||
using rjw;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using AlienRace;
|
||||
using HarmonyLib;
|
||||
using HarmonyLib;
|
||||
using rjw;
|
||||
using rjw.Modules.Interactions.Internals.Implementation;
|
||||
using rjw.Modules.Interactions.Rules.PartKindUsageRules;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
using HarmonyLib;
|
||||
using RimWorld;
|
||||
using rjw;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
|
|
@ -20,9 +20,8 @@ namespace RJW_Menstruation
|
|||
|
||||
StringBuilder res = new StringBuilder();
|
||||
|
||||
IEnumerable<Pawn> babiesdistinct = babies.Distinct(new RaceComparer());
|
||||
int iteration = 0;
|
||||
foreach (Pawn baby in babiesdistinct)
|
||||
foreach (Pawn baby in babies.Distinct(new RaceComparer()))
|
||||
{
|
||||
int num = babies.Where(x => x.def.Equals(baby.def)).Count();
|
||||
if (iteration > 0) res.Append(", ");
|
||||
|
@ -43,9 +42,8 @@ namespace RJW_Menstruation
|
|||
if (!is_parent_known && Configurations.InfoDetail != Configurations.DetailLevel.All)
|
||||
return res.Append(Translations.Dialog_FatherUnknown).ToString();
|
||||
|
||||
IEnumerable<Pawn> babiesdistinct = babies.Distinct(new FatherComparer(mother));
|
||||
int iteration = 0;
|
||||
foreach (Pawn baby in babiesdistinct)
|
||||
foreach (Pawn baby in babies.Distinct(new FatherComparer(mother)))
|
||||
{
|
||||
if (iteration > 0) res.Append(", ");
|
||||
res.Append(Utility.GetFather(baby, mother)?.LabelShort ?? Translations.Dialog_FatherUnknown);
|
||||
|
|
|
@ -74,6 +74,7 @@
|
|||
<Compile Include="HediffComps\MenstruationUtility.cs" />
|
||||
<Compile Include="Hediff_Estrus.cs" />
|
||||
<Compile Include="IngestionOutcomeDoers.cs" />
|
||||
<Compile Include="MenstruationModExtension.cs" />
|
||||
<Compile Include="Patch\Biotech_Patch.cs" />
|
||||
<Compile Include="Patch\GC_Patch.cs" />
|
||||
<Compile Include="Patch\Gizmo_Patch.cs" />
|
||||
|
@ -108,10 +109,6 @@
|
|||
<HintPath>..\..\..\..\..\..\..\..\workshop\content\294100\2830943477\1.4\Assemblies\AnimalGenetics.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Assembly-CSharp">
|
||||
<HintPath>..\..\..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="RJW">
|
||||
<HintPath>..\..\..\..\..\rjw\1.4\Assemblies\RJW.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
|
@ -172,6 +169,9 @@
|
|||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Krafs.Rimworld.Ref">
|
||||
<Version>1.4.3901</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Lib.Harmony">
|
||||
<Version>2.2.2</Version>
|
||||
<ExcludeAssets>runtime</ExcludeAssets>
|
||||
|
|
|
@ -219,14 +219,14 @@ namespace RJW_Menstruation
|
|||
|
||||
public void CheckDirty()
|
||||
{
|
||||
if (absorbedfluids > this.GetStatValue(VariousDefOf.MaxAbsorbable) && !(Wearer?.apparel?.IsLocked(this) ?? false))
|
||||
if (absorbedfluids > this.GetStatValue(VariousDefOf.MaxAbsorbable) && !(Wearer?.apparel?.IsLocked(this) ?? false) && DirtyDef != def && DirtyDef != null)
|
||||
{
|
||||
bool oldHasStats = !def.equippedStatOffsets.NullOrEmpty();
|
||||
bool newHasStats = !DirtyDef.equippedStatOffsets.NullOrEmpty();
|
||||
def = DirtyDef;
|
||||
dirty = true;
|
||||
OutfitForcedHandler forcedHandler = Wearer.outfits?.forcedHandler;
|
||||
if (forcedHandler?.IsForced(this) ?? false)
|
||||
forcedHandler.SetForced(this, false);
|
||||
if (!def.equippedStatOffsets.NullOrEmpty())
|
||||
Wearer.outfits?.forcedHandler?.SetForced(this, false);
|
||||
if (oldHasStats || newHasStats)
|
||||
Wearer.health.capacities.Notify_CapacityLevelsDirty();
|
||||
Wearer.apparel.Notify_ApparelChanged();
|
||||
}
|
||||
|
@ -272,7 +272,7 @@ namespace RJW_Menstruation
|
|||
public override void DirtyEffect(int tickInterval)
|
||||
{
|
||||
|
||||
if (wearTicks > MinHrstoDirtyEffect * GenDate.TicksPerHour && Rand.MTBEventOccurs(100.0f, GenDate.TicksPerHour, tickInterval) && !Wearer.apparel.IsLocked(this))
|
||||
if (wearTicks > MinHrstoDirtyEffect * GenDate.TicksPerHour && Rand.MTBEventOccurs(100.0f, GenDate.TicksPerHour, tickInterval) && !(Wearer.apparel?.IsLocked(this) ?? false))
|
||||
{
|
||||
Wearer.health.AddHediff(HediffDefOf.WoundInfection, Genital_Helper.get_genitalsBPR(Wearer));
|
||||
}
|
||||
|
|
|
@ -227,7 +227,7 @@ namespace RJW_Menstruation
|
|||
string feinfo = PregnancyCommon.GetBabyInfo(babiescomp?.babies);
|
||||
string fainfo = PregnancyCommon.GetFatherInfo(babiescomp?.babies, babiescomp.Pawn, true) + " "; // Keep all parents known, for now
|
||||
|
||||
if (feinfo == "Null") feinfo = "1 " + p.Mother.def.label + " " + Translations.Dialog_WombInfo02;
|
||||
if (feinfo == "Null") feinfo = "1 " + (p.Mother ?? pawn).def.label + " " + Translations.Dialog_WombInfo02;
|
||||
if (fainfo == "Null ")
|
||||
{
|
||||
string father = p.Father?.LabelShort ?? Translations.Dialog_FatherUnknown;
|
||||
|
@ -388,10 +388,9 @@ namespace RJW_Menstruation
|
|||
Rect genitalIconRect = new Rect(rect.x, rect.y + fontheight, genitalRectWidth, genitalRectHeight);
|
||||
Rect genitalVaginaLabelRect = new Rect(rect.x, rect.y + 10f, genitalRectWidth, fontheight);
|
||||
Rect genitalAnusLabelRect = new Rect(rect.x, rect.y + fontheight + genitalRectHeight, genitalRectWidth, fontheight);
|
||||
bool showOrigin = Mouse.IsOver(genitalIconRect) && Input.GetMouseButton(0);
|
||||
|
||||
vagina = pawn.GetGenitalIcon(comp, showOrigin);
|
||||
anal = pawn.GetAnalIcon(showOrigin);
|
||||
vagina = pawn.GetGenitalIcon(comp);
|
||||
anal = pawn.GetAnalIcon();
|
||||
GUI.color = new Color(1.00f, 0.47f, 0.47f, 1);
|
||||
GUI.Box(rect, "", boxstyle);
|
||||
GUI.color = Utility.SafeSkinColor(pawn);
|
||||
|
|
|
@ -80,7 +80,7 @@ namespace RJW_Menstruation
|
|||
|
||||
try
|
||||
{
|
||||
res = part.FluidAmmount * part.FluidModifier * pawn.BodySize / pawn.RaceProps.baseBodySize * Rand.Range(0.8f, 1.2f);
|
||||
res = VariationRange(part.FluidAmmount * part.FluidModifier * pawn.BodySize / pawn.RaceProps.baseBodySize, 0.2f);
|
||||
}
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
|
|
|
@ -45,14 +45,6 @@ namespace RJW_Menstruation
|
|||
public static readonly RecordDef AmountofCreampied = DefDatabase<RecordDef>.GetNamed("AmountofCreampied");
|
||||
public static readonly RecordDef AmountofFertilizedEggs = DefDatabase<RecordDef>.GetNamed("AmountofFertilizedEggs");
|
||||
public static readonly TaleDef TaleCameInside = DefDatabase<TaleDef>.GetNamed("CameInside");
|
||||
public static readonly GeneDef ShortEggLifetime = DefDatabase<GeneDef>.GetNamed("Menstruation_ShortEggLifetime");
|
||||
public static readonly GeneDef DoubleEggLifetime = DefDatabase<GeneDef>.GetNamed("Menstruation_DoubleEggLifetime");
|
||||
public static readonly GeneDef QuadEggLifetime = DefDatabase<GeneDef>.GetNamed("Menstruation_QuadEggLifetime");
|
||||
public static readonly GeneDef NeverEstrus = DefDatabase<GeneDef>.GetNamed("Menstruation_NeverEstrus");
|
||||
public static readonly GeneDef FullEstrus = DefDatabase<GeneDef>.GetNamed("Menstruation_FullEstrus");
|
||||
public static readonly GeneDef DoubleOvulation = DefDatabase<GeneDef>.GetNamed("Menstruation_DoubleOvulation");
|
||||
public static readonly GeneDef QuadOvulation = DefDatabase<GeneDef>.GetNamed("Menstruation_QuadOvulation");
|
||||
public static readonly GeneDef NoBleeding = DefDatabase<GeneDef>.GetNamed("Menstruation_NoBleeding");
|
||||
|
||||
private static List<ThingDef> allraces = null;
|
||||
private static List<PawnKindDef> allkinds = null;
|
||||
|
@ -66,9 +58,8 @@ namespace RJW_Menstruation
|
|||
get
|
||||
{
|
||||
if (allraces != null) return allraces;
|
||||
allraces = DefDatabase<ThingDef>.AllDefsListForReading.Where(thingdef => thingdef.race?.IsFlesh ?? false).ToList();
|
||||
|
||||
List<ThingDef> allThings = DefDatabase<ThingDef>.AllDefsListForReading;
|
||||
allraces = allThings.FindAll(x => x.race != null && x.race.IsFlesh);
|
||||
return allraces;
|
||||
}
|
||||
}
|
||||
|
@ -77,9 +68,8 @@ namespace RJW_Menstruation
|
|||
get
|
||||
{
|
||||
if (allkinds != null) return allkinds;
|
||||
allkinds = DefDatabase<PawnKindDef>.AllDefsListForReading.Where(pawnkinddef => pawnkinddef.race != null).ToList();
|
||||
|
||||
List<PawnKindDef> allKinds = DefDatabase<PawnKindDef>.AllDefsListForReading;
|
||||
allkinds = allKinds.FindAll(x => x.race != null);
|
||||
return allkinds;
|
||||
}
|
||||
}
|
||||
|
@ -157,13 +147,7 @@ namespace RJW_Menstruation
|
|||
get
|
||||
{
|
||||
if (egglayergenes != null) return egglayergenes;
|
||||
egglayergenes = new HashSet<GeneDef>
|
||||
{
|
||||
DefDatabase<GeneDef>.GetNamedSilentFail("AG_EggLaying"), // Alpha Genes
|
||||
DefDatabase<GeneDef>.GetNamedSilentFail("VRESaurids_Oviparous"), // VE Saurid
|
||||
DefDatabase<GeneDef>.GetNamedSilentFail("VRE_SaplingBirth"), // VE Phytokin
|
||||
};
|
||||
egglayergenes.Remove(null);
|
||||
egglayergenes = DefDatabase<GeneDef>.AllDefsListForReading.Where(geneDef => geneDef.GetModExtension<MenstruationModExtension>()?.disableCycle ?? false).ToHashSet();
|
||||
|
||||
return egglayergenes;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ModMetaData>
|
||||
<packageId>rjw.menstruation</packageId>
|
||||
<name>RJW Menstruation Cycle</name>
|
||||
<author>lutepickle</author>
|
||||
<url>https://gitgud.io/lutepickle/rjw_menstruation/</url>
|
||||
<supportedVersions>
|
||||
<li>1.2</li>
|
||||
<li>1.3</li>
|
||||
|
@ -28,13 +30,17 @@
|
|||
<li>Abraxas.RJW.RaceSupport</li>
|
||||
<li>rjw.milk.humanoid</li>
|
||||
</loadAfter>
|
||||
<packageId>rjw.menstruation</packageId>
|
||||
<incompatibleWithByVersion>
|
||||
<v1.4>
|
||||
<li>conit.thebirdsandthebees</li> <!--Breaks fertility calculations-->
|
||||
</v1.4>
|
||||
</incompatibleWithByVersion>
|
||||
<description>Adds menstruation mechanics to vaginas:
|
||||
|
||||
Wombs cycle between follicular, luteal, and bleeding phases
|
||||
Tracks eggs ovulated and cum in wombs to determine pregnancy
|
||||
Womb icon and status window
|
||||
Estrus effects
|
||||
Estrus and pheromone effects
|
||||
Race-specific fetus images for many vanilla animals
|
||||
Pregnancies from multiple eggs and different fathers
|
||||
Identical siblings
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<Manifest>
|
||||
<identifier>RJW Menstruation</identifier>
|
||||
<version>1.0.9.3</version>
|
||||
<version>1.0.9.4</version>
|
||||
<dependencies>
|
||||
</dependencies>
|
||||
<incompatibleWith />
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
Version 1.0.9.4
|
||||
- Added graphics for the menstruation genes with thanks to Alpenglow.
|
||||
- Pawns in estrus now give their pheromones to their caravan-mates.
|
||||
- Pawns with the egglaying genes from Erin's Corvyia and Outland - Genetics no longer have a menstrual cycle.
|
||||
|
||||
Version 1.0.9.3
|
||||
- The biosculptor egg restoration cycle will now give more eggs to races that ovulate more than one egg at a time.
|
||||
- All pawns can now use all menstruation genes, regardless of gender or having a womb.
|
||||
|
|