added absorbers
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<Manifest>
|
<Manifest>
|
||||||
<identifier>RJW Menstruation</identifier>
|
<identifier>RJW Menstruation</identifier>
|
||||||
<version>1.0.1.0</version>
|
<version>1.0.1.1</version>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<incompatibleWith />
|
<incompatibleWith />
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<rotatable>false</rotatable>
|
<rotatable>false</rotatable>
|
||||||
<statBases>
|
<statBases>
|
||||||
<WorkToMake>2400</WorkToMake>
|
<WorkToMake>2400</WorkToMake>
|
||||||
<MarketValue>120</MarketValue>
|
<MarketValue>160</MarketValue>
|
||||||
<Mass>0.05</Mass>
|
<Mass>0.05</Mass>
|
||||||
</statBases>
|
</statBases>
|
||||||
<techLevel>Industrial</techLevel>
|
<techLevel>Industrial</techLevel>
|
||||||
|
@ -46,4 +46,52 @@
|
||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
|
|
||||||
|
<ThingDef ParentName="MakeableDrugPillBase">
|
||||||
|
<defName>SuperovulationInducingAgent</defName>
|
||||||
|
<label>Superovulation inducing agent</label>
|
||||||
|
<description>Induce superovulation May cause early menopause</description>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>Things/Item/SIA</texPath>
|
||||||
|
<graphicClass>Graphic_StackCount</graphicClass>
|
||||||
|
</graphicData>
|
||||||
|
<rotatable>false</rotatable>
|
||||||
|
<statBases>
|
||||||
|
<WorkToMake>2400</WorkToMake>
|
||||||
|
<MarketValue>140</MarketValue>
|
||||||
|
<Mass>0.05</Mass>
|
||||||
|
</statBases>
|
||||||
|
<techLevel>Industrial</techLevel>
|
||||||
|
<ingestible>
|
||||||
|
<drugCategory>Medical</drugCategory>
|
||||||
|
<outcomeDoers>
|
||||||
|
<li Class="RJW_Menstruation.SuperOvulationOutcomDoer">
|
||||||
|
</li>
|
||||||
|
</outcomeDoers>
|
||||||
|
</ingestible>
|
||||||
|
<recipeMaker>
|
||||||
|
<researchPrerequisite>DrugProduction</researchPrerequisite>
|
||||||
|
<recipeUsers>
|
||||||
|
<li>DrugLab</li>
|
||||||
|
</recipeUsers>
|
||||||
|
</recipeMaker>
|
||||||
|
<costList>
|
||||||
|
<MedicineHerbal>12</MedicineHerbal>
|
||||||
|
<Neutroamine>6</Neutroamine>
|
||||||
|
</costList>
|
||||||
|
<comps>
|
||||||
|
<li Class="CompProperties_Drug">
|
||||||
|
<addictiveness>0</addictiveness>
|
||||||
|
<listOrder>1000</listOrder>
|
||||||
|
<overdoseSeverityOffset>
|
||||||
|
<min>0.08</min>
|
||||||
|
<max>0.14</max>
|
||||||
|
</overdoseSeverityOffset>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
27
Defs/Stats/Stats_Absorber.xml
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Defs>
|
||||||
|
|
||||||
|
<StatDef>
|
||||||
|
<defName>MaxAbsorbable</defName>
|
||||||
|
<label>Absorbable</label>
|
||||||
|
<description>Maximum fluids can be absorbed.</description>
|
||||||
|
<category>Apparel</category>
|
||||||
|
<minValue>0</minValue>
|
||||||
|
<toStringStyle>FloatOne</toStringStyle>
|
||||||
|
<formatString>{0} ml</formatString>
|
||||||
|
<showIfUndefined>false</showIfUndefined>
|
||||||
|
<displayPriorityInCategory>60</displayPriorityInCategory>
|
||||||
|
<parts>
|
||||||
|
<li Class="StatPart_Quality">
|
||||||
|
<factorAwful>0.5</factorAwful>
|
||||||
|
<factorPoor>0.8</factorPoor>
|
||||||
|
<factorNormal>1</factorNormal>
|
||||||
|
<factorGood>1.2</factorGood>
|
||||||
|
<factorExcellent>1.4</factorExcellent>
|
||||||
|
<factorMasterwork>2.0</factorMasterwork>
|
||||||
|
<factorLegendary>5.0</factorLegendary>
|
||||||
|
</li>
|
||||||
|
</parts>
|
||||||
|
</StatDef>
|
||||||
|
|
||||||
|
</Defs>
|
8
Defs/ThingDefs/ApparelLayerDefs_Absorber.xml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Defs>
|
||||||
|
<ApparelLayerDef>
|
||||||
|
<defName>Absorber</defName>
|
||||||
|
<label>genital</label>
|
||||||
|
<drawOrder>500</drawOrder>
|
||||||
|
</ApparelLayerDef>
|
||||||
|
</Defs>
|
239
Defs/ThingDefs/Apparel_Absorbers.xml
Normal file
|
@ -0,0 +1,239 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Defs>
|
||||||
|
|
||||||
|
<ThingDef ParentName="ApparelNoQualityBase">
|
||||||
|
<defName>Absorber_Tampon</defName>
|
||||||
|
<label>tampon</label>
|
||||||
|
<description>A tampon for absorbing fluids from vagina</description>
|
||||||
|
<thingClass>RJW_Menstruation.Absorber_Tampon</thingClass>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>Things/Item/Tampon</texPath>
|
||||||
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
|
</graphicData>
|
||||||
|
<tickerType>Never</tickerType>
|
||||||
|
<smeltable>false</smeltable>
|
||||||
|
<statBases>
|
||||||
|
<MaxHitPoints>20</MaxHitPoints>
|
||||||
|
<Mass>0.01</Mass>
|
||||||
|
<WorkToMake>1000</WorkToMake>
|
||||||
|
<Flammability>1.0</Flammability>
|
||||||
|
<EquipDelay>2</EquipDelay>
|
||||||
|
<MaxAbsorbable>10</MaxAbsorbable>
|
||||||
|
</statBases>
|
||||||
|
<costStuffCount>5</costStuffCount>
|
||||||
|
<stuffCategories>
|
||||||
|
<li>Fabric</li>
|
||||||
|
</stuffCategories>
|
||||||
|
<recipeMaker>
|
||||||
|
<unfinishedThingDef>UnfinishedApparel</unfinishedThingDef>
|
||||||
|
<researchPrerequisite>ComplexClothing</researchPrerequisite>
|
||||||
|
<workSpeedStat>GeneralLaborSpeed</workSpeedStat>
|
||||||
|
<workSkill>Crafting</workSkill>
|
||||||
|
<effectWorking>Tailor</effectWorking>
|
||||||
|
<soundWorking>Recipe_Tailor</soundWorking>
|
||||||
|
<recipeUsers>
|
||||||
|
<li>ElectricTailoringBench</li>
|
||||||
|
<li>HandTailoringBench</li>
|
||||||
|
</recipeUsers>
|
||||||
|
<useIngredientsForColor>true</useIngredientsForColor>
|
||||||
|
<skillRequirements>
|
||||||
|
<Crafting>4</Crafting>
|
||||||
|
</skillRequirements>
|
||||||
|
</recipeMaker>
|
||||||
|
<thingCategories>
|
||||||
|
<li>ApparelUtility</li>
|
||||||
|
</thingCategories>
|
||||||
|
<apparel>
|
||||||
|
<careIfWornByCorpse>true</careIfWornByCorpse>
|
||||||
|
<careIfDamaged>false</careIfDamaged>
|
||||||
|
<wearPerDay>0</wearPerDay>
|
||||||
|
<gender>Female</gender>
|
||||||
|
<bodyPartGroups>
|
||||||
|
<li>Torso</li>
|
||||||
|
</bodyPartGroups>
|
||||||
|
<layers>
|
||||||
|
<li>Absorber</li>
|
||||||
|
</layers>
|
||||||
|
<tags>
|
||||||
|
<li>Absorber</li>
|
||||||
|
</tags>
|
||||||
|
</apparel>
|
||||||
|
<modExtensions>
|
||||||
|
<li Class="RJW_Menstruation.AbsorberModExtention">
|
||||||
|
<leakAfterDirty>false</leakAfterDirty>
|
||||||
|
<effectsAfterDirty>true</effectsAfterDirty>
|
||||||
|
<minHourstoDirtyEffect>8</minHourstoDirtyEffect>
|
||||||
|
<dirtyDef>Absorber_Tampon_Dirty</dirtyDef>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
|
<ThingDef ParentName="ApparelNoQualityBase">
|
||||||
|
<defName>Absorber_Tampon_Dirty</defName>
|
||||||
|
<label>dirty tampon</label>
|
||||||
|
<description>An wet used tampon</description>
|
||||||
|
<thingClass>RJW_Menstruation.Absorber_Tampon</thingClass>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>Things/Item/Tampon_Dirty</texPath>
|
||||||
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
|
</graphicData>
|
||||||
|
<tickerType>Never</tickerType>
|
||||||
|
<smeltable>false</smeltable>
|
||||||
|
<statBases>
|
||||||
|
<MaxHitPoints>20</MaxHitPoints>
|
||||||
|
<Mass>0.05</Mass>
|
||||||
|
<MarketValue>0</MarketValue>
|
||||||
|
<WorkToMake>1000</WorkToMake>
|
||||||
|
<Flammability>0.2</Flammability>
|
||||||
|
<EquipDelay>2</EquipDelay>
|
||||||
|
<MaxAbsorbable>10</MaxAbsorbable>
|
||||||
|
<Cleanliness>-5</Cleanliness>
|
||||||
|
</statBases>
|
||||||
|
<stuffCategories>
|
||||||
|
<li>Fabric</li>
|
||||||
|
</stuffCategories>
|
||||||
|
<thingCategories>
|
||||||
|
<li>ApparelUtility</li>
|
||||||
|
</thingCategories>
|
||||||
|
<apparel>
|
||||||
|
<careIfWornByCorpse>true</careIfWornByCorpse>
|
||||||
|
<careIfDamaged>false</careIfDamaged>
|
||||||
|
<wearPerDay>0</wearPerDay>
|
||||||
|
<gender>Female</gender>
|
||||||
|
<bodyPartGroups>
|
||||||
|
<li>Torso</li>
|
||||||
|
</bodyPartGroups>
|
||||||
|
<layers>
|
||||||
|
<li>Absorber</li>
|
||||||
|
</layers>
|
||||||
|
<tags>
|
||||||
|
<li>Absorber</li>
|
||||||
|
</tags>
|
||||||
|
</apparel>
|
||||||
|
<modExtensions>
|
||||||
|
<li Class="RJW_Menstruation.AbsorberModExtention">
|
||||||
|
<leakAfterDirty>false</leakAfterDirty>
|
||||||
|
<effectsAfterDirty>true</effectsAfterDirty>
|
||||||
|
<minHourstoDirtyEffect>8</minHourstoDirtyEffect>
|
||||||
|
<dirtyDef>Absorber_Tampon_Dirty</dirtyDef>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
|
|
||||||
|
<ThingDef ParentName="ApparelNoQualityBase">
|
||||||
|
<defName>Absorber_Pad</defName>
|
||||||
|
<label>sanitary pad</label>
|
||||||
|
<description>A pad for absorbing fluids from vagina</description>
|
||||||
|
<thingClass>RJW_Menstruation.Absorber</thingClass>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>Things/Item/Pad</texPath>
|
||||||
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
|
</graphicData>
|
||||||
|
<tickerType>Never</tickerType>
|
||||||
|
<smeltable>false</smeltable>
|
||||||
|
<statBases>
|
||||||
|
<MaxHitPoints>20</MaxHitPoints>
|
||||||
|
<Mass>0.02</Mass>
|
||||||
|
<WorkToMake>1000</WorkToMake>
|
||||||
|
<Flammability>1.0</Flammability>
|
||||||
|
<EquipDelay>4</EquipDelay>
|
||||||
|
<MaxAbsorbable>25</MaxAbsorbable>
|
||||||
|
</statBases>
|
||||||
|
<costStuffCount>10</costStuffCount>
|
||||||
|
<stuffCategories>
|
||||||
|
<li>Fabric</li>
|
||||||
|
</stuffCategories>
|
||||||
|
<recipeMaker>
|
||||||
|
<unfinishedThingDef>UnfinishedApparel</unfinishedThingDef>
|
||||||
|
<workSpeedStat>GeneralLaborSpeed</workSpeedStat>
|
||||||
|
<workSkill>Crafting</workSkill>
|
||||||
|
<effectWorking>Tailor</effectWorking>
|
||||||
|
<soundWorking>Recipe_Tailor</soundWorking>
|
||||||
|
<recipeUsers>
|
||||||
|
<li>ElectricTailoringBench</li>
|
||||||
|
<li>HandTailoringBench</li>
|
||||||
|
</recipeUsers>
|
||||||
|
<useIngredientsForColor>true</useIngredientsForColor>
|
||||||
|
<skillRequirements>
|
||||||
|
<Crafting>4</Crafting>
|
||||||
|
</skillRequirements>
|
||||||
|
</recipeMaker>
|
||||||
|
<thingCategories>
|
||||||
|
<li>ApparelUtility</li>
|
||||||
|
</thingCategories>
|
||||||
|
<apparel>
|
||||||
|
<careIfWornByCorpse>true</careIfWornByCorpse>
|
||||||
|
<careIfDamaged>false</careIfDamaged>
|
||||||
|
<wearPerDay>0</wearPerDay>
|
||||||
|
<gender>Female</gender>
|
||||||
|
<bodyPartGroups>
|
||||||
|
<li>Torso</li>
|
||||||
|
</bodyPartGroups>
|
||||||
|
<layers>
|
||||||
|
<li>Absorber</li>
|
||||||
|
</layers>
|
||||||
|
<tags>
|
||||||
|
<li>Absorber</li>
|
||||||
|
</tags>
|
||||||
|
</apparel>
|
||||||
|
<modExtensions>
|
||||||
|
<li Class="RJW_Menstruation.AbsorberModExtention">
|
||||||
|
<leakAfterDirty>true</leakAfterDirty>
|
||||||
|
<effectsAfterDirty>false</effectsAfterDirty>
|
||||||
|
<dirtyDef>Absorber_Pad_Dirty</dirtyDef>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
|
<ThingDef ParentName="ApparelNoQualityBase">
|
||||||
|
<defName>Absorber_Pad_Dirty</defName>
|
||||||
|
<label>wet sanitary pad</label>
|
||||||
|
<description>An wet used pad</description>
|
||||||
|
<thingClass>RJW_Menstruation.Absorber</thingClass>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>Things/Item/Pad_Dirty</texPath>
|
||||||
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
|
</graphicData>
|
||||||
|
<tickerType>Never</tickerType>
|
||||||
|
<smeltable>false</smeltable>
|
||||||
|
<statBases>
|
||||||
|
<MaxHitPoints>20</MaxHitPoints>
|
||||||
|
<Mass>0.10</Mass>
|
||||||
|
<MarketValue>0</MarketValue>
|
||||||
|
<WorkToMake>1000</WorkToMake>
|
||||||
|
<Flammability>0.2</Flammability>
|
||||||
|
<EquipDelay>4</EquipDelay>
|
||||||
|
<MaxAbsorbable>25</MaxAbsorbable>
|
||||||
|
<Cleanliness>-5</Cleanliness>
|
||||||
|
</statBases>
|
||||||
|
<stuffCategories>
|
||||||
|
<li>Fabric</li>
|
||||||
|
</stuffCategories>
|
||||||
|
<thingCategories>
|
||||||
|
<li>ApparelUtility</li>
|
||||||
|
</thingCategories>
|
||||||
|
<apparel>
|
||||||
|
<careIfWornByCorpse>true</careIfWornByCorpse>
|
||||||
|
<careIfDamaged>false</careIfDamaged>
|
||||||
|
<wearPerDay>0</wearPerDay>
|
||||||
|
<gender>Female</gender>
|
||||||
|
<bodyPartGroups>
|
||||||
|
<li>Torso</li>
|
||||||
|
</bodyPartGroups>
|
||||||
|
<layers>
|
||||||
|
<li>Absorber</li>
|
||||||
|
</layers>
|
||||||
|
<tags>
|
||||||
|
<li>Absorber</li>
|
||||||
|
</tags>
|
||||||
|
</apparel>
|
||||||
|
<modExtensions>
|
||||||
|
<li Class="RJW_Menstruation.AbsorberModExtention">
|
||||||
|
<leakAfterDirty>true</leakAfterDirty>
|
||||||
|
<effectsAfterDirty>false</effectsAfterDirty>
|
||||||
|
<dirtyDef>Absorber_Pad_Dirty</dirtyDef>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
</ThingDef>
|
||||||
|
</Defs>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LanguageData>
|
||||||
|
<Absorber.label>성기</Absorber.label>
|
||||||
|
</LanguageData>
|
20
Languages/Korean/DefInjected/HediffDef/RJWMenstruation.xml
Normal file
|
@ -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_Climacteric.label>갱년기</Hediff_Climacteric.label>
|
||||||
|
<Hediff_Climacteric.description>갱년기입니다.</Hediff_Climacteric.description>
|
||||||
|
<Hediff_Climacteric.stages.0.label>초기</Hediff_Climacteric.stages.0.label>
|
||||||
|
<Hediff_Climacteric.stages.1.label>중기</Hediff_Climacteric.stages.1.label>
|
||||||
|
<Hediff_Climacteric.stages.2.label>후기</Hediff_Climacteric.stages.2.label>
|
||||||
|
<Hediff_Climacteric.stages.3.label>폐경</Hediff_Climacteric.stages.3.label>
|
||||||
|
<Hediff_Menopause.label>폐경</Hediff_Menopause.label>
|
||||||
|
<Hediff_Menopause.description>임신할수 없습니다.</Hediff_Menopause.description>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</LanguageData>
|
7
Languages/Korean/DefInjected/StatDef/RJWMenstruation.xml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LanguageData>
|
||||||
|
<MaxAbsorbable.label>흡수량</MaxAbsorbable.label>
|
||||||
|
<MaxAbsorbable.description>액체를 흡수할수 있는 정도입니다.</MaxAbsorbable.description>
|
||||||
|
|
||||||
|
|
||||||
|
</LanguageData>
|
17
Languages/Korean/DefInjected/ThingDef/RJWMenstruation.xml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?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>
|
||||||
|
|
||||||
|
|
||||||
|
</LanguageData>
|
|
@ -4,6 +4,7 @@
|
||||||
<!-- folicularIntervalDays includes bleedingIntervalDays. -->
|
<!-- folicularIntervalDays includes bleedingIntervalDays. -->
|
||||||
<!-- bleedingIntervalDays must be smaller than folicularIntervalDays -->
|
<!-- bleedingIntervalDays must be smaller than folicularIntervalDays -->
|
||||||
<!-- unit of maxCumCapacity is ml -->
|
<!-- unit of maxCumCapacity is ml -->
|
||||||
|
<!-- actual max cum capacity is 500times of maxCumCapacity -->
|
||||||
<!-- one egg = 1 ovaryPower-->
|
<!-- one egg = 1 ovaryPower-->
|
||||||
|
|
||||||
<Patch>
|
<Patch>
|
||||||
|
@ -12,7 +13,7 @@
|
||||||
<value>
|
<value>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="RJW_Menstruation.CompProperties_Menstruation">
|
<li Class="RJW_Menstruation.CompProperties_Menstruation">
|
||||||
<maxCumCapacity>15</maxCumCapacity>
|
<maxCumCapacity>10</maxCumCapacity>
|
||||||
<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
|
<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
|
||||||
<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
|
<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
|
||||||
<deviationFactor>0.05</deviationFactor>
|
<deviationFactor>0.05</deviationFactor>
|
||||||
|
@ -55,7 +56,7 @@
|
||||||
<value>
|
<value>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="RJW_Menstruation.CompProperties_Menstruation">
|
<li Class="RJW_Menstruation.CompProperties_Menstruation">
|
||||||
<maxCumCapacity>15</maxCumCapacity>
|
<maxCumCapacity>10</maxCumCapacity>
|
||||||
<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
|
<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
|
||||||
<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
|
<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
|
||||||
<deviationFactor>0.05</deviationFactor>
|
<deviationFactor>0.05</deviationFactor>
|
||||||
|
@ -76,7 +77,7 @@
|
||||||
<value>
|
<value>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="RJW_Menstruation.CompProperties_Menstruation">
|
<li Class="RJW_Menstruation.CompProperties_Menstruation">
|
||||||
<maxCumCapacity>15</maxCumCapacity>
|
<maxCumCapacity>10</maxCumCapacity>
|
||||||
<wombTex>Womb/Womb</wombTex>
|
<wombTex>Womb/Womb</wombTex>
|
||||||
<vagTex>Genitals/BionicVagina</vagTex>
|
<vagTex>Genitals/BionicVagina</vagTex>
|
||||||
<infertile>true</infertile>
|
<infertile>true</infertile>
|
||||||
|
@ -90,7 +91,7 @@
|
||||||
<value>
|
<value>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="RJW_Menstruation.CompProperties_Menstruation">
|
<li Class="RJW_Menstruation.CompProperties_Menstruation">
|
||||||
<maxCumCapacity>15</maxCumCapacity>
|
<maxCumCapacity>10</maxCumCapacity>
|
||||||
<wombTex>Womb/Womb</wombTex>
|
<wombTex>Womb/Womb</wombTex>
|
||||||
<vagTex>Genitals/BionicVagina</vagTex>
|
<vagTex>Genitals/BionicVagina</vagTex>
|
||||||
<infertile>true</infertile>
|
<infertile>true</infertile>
|
||||||
|
@ -104,7 +105,7 @@
|
||||||
<value>
|
<value>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="RJW_Menstruation.CompProperties_Menstruation">
|
<li Class="RJW_Menstruation.CompProperties_Menstruation">
|
||||||
<maxCumCapacity>15</maxCumCapacity>
|
<maxCumCapacity>10</maxCumCapacity>
|
||||||
<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
|
<baseImplantationChanceFactor>1.0</baseImplantationChanceFactor>
|
||||||
<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
|
<basefertilizationChanceFactor>1.0</basefertilizationChanceFactor>
|
||||||
<deviationFactor>0.05</deviationFactor>
|
<deviationFactor>0.05</deviationFactor>
|
||||||
|
|
BIN
Textures/Things/Item/Pad.png
Normal file
After Width: | Height: | Size: 7.9 KiB |
BIN
Textures/Things/Item/Pad_Dirty.png
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
Textures/Things/Item/SIA/SIA_a.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
Textures/Things/Item/SIA/SIA_b.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
Textures/Things/Item/Tampon.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
Textures/Things/Item/Tampon/Tampon_a.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
Textures/Things/Item/Tampon/Tampon_b.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
Textures/Things/Item/Tampon_Dirty.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
|
@ -1,3 +1,12 @@
|
||||||
|
Version 1.0.1.1
|
||||||
|
- requires RJW 4.6.1 or later
|
||||||
|
- added superovulation inducing agent
|
||||||
|
- cumflations (no effects yet)
|
||||||
|
- added tampon and sanitary pad can absorb fluids.
|
||||||
|
- tampon blocks fluids completly. however, keep wearing dirty tampon can cause infection.
|
||||||
|
- pad blocks fluids for a while, but if exceed over the absorbable, fluids leak again.
|
||||||
|
- fixed erros when male pawn take hyperfertility pills.
|
||||||
|
|
||||||
Version 1.0.1.0
|
Version 1.0.1.0
|
||||||
- requires RJW 4.6.1 or later
|
- requires RJW 4.6.1 or later
|
||||||
- added multiple pregnancy
|
- added multiple pregnancy
|
||||||
|
|
|
@ -45,7 +45,7 @@ namespace RJW_Menstruation
|
||||||
DNAcache = DefDatabase<DNADef>.GetNamedSilentFail(pawn?.def.defName ?? "Human");
|
DNAcache = DefDatabase<DNADef>.GetNamedSilentFail(pawn?.def.defName ?? "Human");
|
||||||
if (DNAcache == null)
|
if (DNAcache == null)
|
||||||
{
|
{
|
||||||
DNAcache = VariousDefOf.defaultDNA;
|
DNAcache = VariousDefOf.HumanDNA;
|
||||||
}
|
}
|
||||||
return DNAcache;
|
return DNAcache;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,11 +13,11 @@ namespace RJW_Menstruation
|
||||||
protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested)
|
protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested)
|
||||||
{
|
{
|
||||||
HediffComp_Menstruation comp = Utility.GetMenstruationComp(pawn);
|
HediffComp_Menstruation comp = Utility.GetMenstruationComp(pawn);
|
||||||
if (comp != null && comp.curStage.Equals(HediffComp_Menstruation.Stage.Follicular)
|
if (comp != null && (comp.curStage.Equals(HediffComp_Menstruation.Stage.Follicular)
|
||||||
|| comp.curStage.Equals(HediffComp_Menstruation.Stage.Luteal)
|
|| comp.curStage.Equals(HediffComp_Menstruation.Stage.Luteal)
|
||||||
|| comp.curStage.Equals(HediffComp_Menstruation.Stage.ClimactericFollicular)
|
|| comp.curStage.Equals(HediffComp_Menstruation.Stage.ClimactericFollicular)
|
||||||
|| comp.curStage.Equals(HediffComp_Menstruation.Stage.ClimactericLuteal)
|
|| comp.curStage.Equals(HediffComp_Menstruation.Stage.ClimactericLuteal)
|
||||||
)
|
))
|
||||||
{
|
{
|
||||||
comp.curStage = HediffComp_Menstruation.Stage.Ovulatory;
|
comp.curStage = HediffComp_Menstruation.Stage.Ovulatory;
|
||||||
comp.ovarypower--;
|
comp.ovarypower--;
|
||||||
|
@ -42,8 +42,20 @@ namespace RJW_Menstruation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class SuperOvulationOutcomDoer : IngestionOutcomeDoer
|
||||||
|
{
|
||||||
|
protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested)
|
||||||
|
{
|
||||||
|
HediffComp_Menstruation comp = Utility.GetMenstruationComp(pawn);
|
||||||
|
if (comp != null)
|
||||||
|
{
|
||||||
|
comp.eggstack += Rand.Range(1,4);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace RJW_Menstruation
|
||||||
public string vagTex = "Genitals/Vagina"; //fertiledays = ovaluationday - spermlifespan ~ ovaluationday + egglifespanday
|
public string vagTex = "Genitals/Vagina"; //fertiledays = ovaluationday - spermlifespan ~ ovaluationday + egglifespanday
|
||||||
public bool infertile = false;
|
public bool infertile = false;
|
||||||
public int ovaryPower = 600000000; // default: almost unlimited ovulation
|
public int ovaryPower = 600000000; // default: almost unlimited ovulation
|
||||||
|
|
||||||
public CompProperties_Menstruation()
|
public CompProperties_Menstruation()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -62,6 +63,7 @@ namespace RJW_Menstruation
|
||||||
public Action actionref;
|
public Action actionref;
|
||||||
public bool loaded = false;
|
public bool loaded = false;
|
||||||
public int ovarypower = -100000;
|
public int ovarypower = -100000;
|
||||||
|
public int eggstack = 0;
|
||||||
|
|
||||||
|
|
||||||
public enum Stage
|
public enum Stage
|
||||||
|
@ -132,7 +134,7 @@ namespace RJW_Menstruation
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
float res = Props.maxCumCapacity * parent.pawn.BodySize;
|
float res = Props.maxCumCapacity * parent.pawn.BodySize;
|
||||||
if (curStage == Stage.Pregnant) res *= 0.2f;
|
if (curStage != Stage.Pregnant) res *= 500f;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -315,6 +317,7 @@ namespace RJW_Menstruation
|
||||||
Scribe_Values.Look(ref recoveryIntervalhours, "recoveryIntervalhours", recoveryIntervalhours, true);
|
Scribe_Values.Look(ref recoveryIntervalhours, "recoveryIntervalhours", recoveryIntervalhours, true);
|
||||||
Scribe_Values.Look(ref crampPain, "crampPain", crampPain, true);
|
Scribe_Values.Look(ref crampPain, "crampPain", crampPain, true);
|
||||||
Scribe_Values.Look(ref ovarypower, "ovarypower", ovarypower, true);
|
Scribe_Values.Look(ref ovarypower, "ovarypower", ovarypower, true);
|
||||||
|
Scribe_Values.Look(ref eggstack, "eggstack", eggstack, true);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -385,9 +388,9 @@ namespace RJW_Menstruation
|
||||||
{
|
{
|
||||||
float volume = injectedvolume * CumInFactor;
|
float volume = injectedvolume * CumInFactor;
|
||||||
float tmp = TotalCum + volume;
|
float tmp = TotalCum + volume;
|
||||||
if (tmp > Props.maxCumCapacity)
|
if (tmp > CumCapacity)
|
||||||
{
|
{
|
||||||
float cumoutrate = 1 - (Props.maxCumCapacity / tmp);
|
float cumoutrate = 1 - (CumCapacity / tmp);
|
||||||
bool merged = false;
|
bool merged = false;
|
||||||
if (!cums.NullOrEmpty()) foreach (Cum cum in cums)
|
if (!cums.NullOrEmpty()) foreach (Cum cum in cums)
|
||||||
{
|
{
|
||||||
|
@ -419,6 +422,7 @@ namespace RJW_Menstruation
|
||||||
}
|
}
|
||||||
if (!merged) cums.Add(new Cum(pawn, volume, fertility, filthdef));
|
if (!merged) cums.Add(new Cum(pawn, volume, fertility, filthdef));
|
||||||
}
|
}
|
||||||
|
AfterCumIn();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -432,9 +436,9 @@ namespace RJW_Menstruation
|
||||||
public void CumIn(Pawn pawn, float volume, string notcumlabel, float decayresist = 0, ThingDef filthdef = null)
|
public void CumIn(Pawn pawn, float volume, string notcumlabel, float decayresist = 0, ThingDef filthdef = null)
|
||||||
{
|
{
|
||||||
float tmp = TotalCum + volume;
|
float tmp = TotalCum + volume;
|
||||||
if (tmp > Props.maxCumCapacity)
|
if (tmp > CumCapacity)
|
||||||
{
|
{
|
||||||
float cumoutrate = 1 - (Props.maxCumCapacity / tmp);
|
float cumoutrate = 1 - (CumCapacity / tmp);
|
||||||
bool merged = false;
|
bool merged = false;
|
||||||
if (!cums.NullOrEmpty()) foreach (Cum cum in cums)
|
if (!cums.NullOrEmpty()) foreach (Cum cum in cums)
|
||||||
{
|
{
|
||||||
|
@ -468,6 +472,21 @@ namespace RJW_Menstruation
|
||||||
}
|
}
|
||||||
if (!merged) cums.Add(new Cum(pawn, volume, notcumlabel,decayresist, filthdef));
|
if (!merged) cums.Add(new Cum(pawn, volume, notcumlabel,decayresist, filthdef));
|
||||||
}
|
}
|
||||||
|
AfterCumIn();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AfterCumIn()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void BeforeCumOut(out Absorber absorber)
|
||||||
|
{
|
||||||
|
absorber = (Absorber)parent.pawn.apparel?.WornApparel?.Find(x => x.def.apparel.tags.Contains("Absorber"));
|
||||||
|
if (absorber != null)
|
||||||
|
{
|
||||||
|
if (absorber.dirty && absorber.EffectAfterDirty) absorber.DirtyEffect();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -475,14 +494,18 @@ namespace RJW_Menstruation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void CumOut()
|
public void CumOut()
|
||||||
{
|
{
|
||||||
|
float leakfactor = 1.0f;
|
||||||
|
Absorber absorber;
|
||||||
|
BeforeCumOut(out absorber);
|
||||||
if (cums.NullOrEmpty()) return;
|
if (cums.NullOrEmpty()) return;
|
||||||
|
else if (absorber != null && absorber.dirty && !absorber.LeakAfterDirty) leakfactor = 0f;
|
||||||
List<Cum> removecums = new List<Cum>();
|
List<Cum> removecums = new List<Cum>();
|
||||||
foreach(Cum cum in cums)
|
foreach(Cum cum in cums)
|
||||||
{
|
{
|
||||||
float vd = cum.volume;
|
float vd = cum.volume;
|
||||||
cum.volume *= Math.Max(0,(1 - (Configurations.CumDecayRatio * (1 - cum.decayresist))));
|
cum.volume *= Math.Max(0, (1 - (Configurations.CumDecayRatio * (1 - cum.decayresist)) * leakfactor));
|
||||||
cum.fertvolume *= Math.Max(0, (1 - (Configurations.CumDecayRatio * (1 - cum.decayresist))) * (1 - (Configurations.CumFertilityDecayRatio * (1 - cum.decayresist))));
|
cum.fertvolume *= Math.Max(0, (1 - (Configurations.CumDecayRatio * (1 - cum.decayresist)) * leakfactor) * (1 - (Configurations.CumFertilityDecayRatio * (1 - cum.decayresist))));
|
||||||
if (vd - cum.volume > minmakefilthvalue) MakeCumFilth(cum);
|
MakeCumFilth(cum, vd - cum.volume, absorber);
|
||||||
if (cum.fertvolume < 0.01f) cum.fertvolume = 0;
|
if (cum.fertvolume < 0.01f) cum.fertvolume = 0;
|
||||||
if (cum.volume < 0.01f) removecums.Add(cum);
|
if (cum.volume < 0.01f) removecums.Add(cum);
|
||||||
}
|
}
|
||||||
|
@ -501,16 +524,20 @@ namespace RJW_Menstruation
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public float CumOut(Cum targetcum, float portion = 0.1f)
|
public float CumOut(Cum targetcum, float portion = 0.1f)
|
||||||
{
|
{
|
||||||
|
float leakfactor = 1.0f;
|
||||||
|
Absorber absorber;
|
||||||
|
BeforeCumOut(out absorber);
|
||||||
if (cums.NullOrEmpty()) return 0;
|
if (cums.NullOrEmpty()) return 0;
|
||||||
|
else if (absorber != null && absorber.dirty && !absorber.LeakAfterDirty) leakfactor = 0;
|
||||||
float outcum = 0;
|
float outcum = 0;
|
||||||
List<Cum> removecums = new List<Cum>();
|
List<Cum> removecums = new List<Cum>();
|
||||||
foreach (Cum cum in cums)
|
foreach (Cum cum in cums)
|
||||||
{
|
{
|
||||||
float vd = cum.volume;
|
float vd = cum.volume;
|
||||||
if (cum.Equals(targetcum)) outcum = cum.volume * (portion * (1 - cum.decayresist));
|
if (cum.Equals(targetcum)) outcum = cum.volume * (portion * (1 - cum.decayresist));
|
||||||
cum.volume *= Math.Max(0, 1 - (portion * (1 - cum.decayresist)));
|
cum.volume *= Math.Max(0, 1 - (portion * (1 - cum.decayresist)) * leakfactor);
|
||||||
cum.fertvolume *= Math.Max(0, (1 - (portion * (1 - cum.decayresist))) * (1 - (Configurations.CumFertilityDecayRatio * (1 - cum.decayresist))));
|
cum.fertvolume *= Math.Max(0, (1 - (portion * (1 - cum.decayresist)) * leakfactor) * (1 - (Configurations.CumFertilityDecayRatio * (1 - cum.decayresist))));
|
||||||
if (vd-cum.volume > minmakefilthvalue) MakeCumFilth(cum);
|
MakeCumFilth(cum, vd - cum.volume,absorber);
|
||||||
if (cum.fertvolume < 0.01f) cum.fertvolume = 0;
|
if (cum.fertvolume < 0.01f) cum.fertvolume = 0;
|
||||||
if (cum.volume < 0.01f) removecums.Add(cum);
|
if (cum.volume < 0.01f) removecums.Add(cum);
|
||||||
}
|
}
|
||||||
|
@ -523,7 +550,7 @@ namespace RJW_Menstruation
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ignores cum's decayratio and get excreted amount of specific cum
|
/// Ignores cum's decayratio and absorber and get excreted amount of specific cum
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="targetcum"></param>
|
/// <param name="targetcum"></param>
|
||||||
/// <param name="portion"></param>
|
/// <param name="portion"></param>
|
||||||
|
@ -539,7 +566,7 @@ namespace RJW_Menstruation
|
||||||
if (cum.Equals(targetcum)) outcum = cum.volume * (portion);
|
if (cum.Equals(targetcum)) outcum = cum.volume * (portion);
|
||||||
cum.volume *= 1 - (portion);
|
cum.volume *= 1 - (portion);
|
||||||
cum.fertvolume *= (1 - (portion)) * (1 - (Configurations.CumFertilityDecayRatio));
|
cum.fertvolume *= (1 - (portion)) * (1 - (Configurations.CumFertilityDecayRatio));
|
||||||
if (vd - cum.volume > minmakefilthvalue) MakeCumFilth(cum);
|
MakeCumFilth(cum, vd - cum.volume);
|
||||||
if (cum.fertvolume < 0.01f) cum.fertvolume = 0;
|
if (cum.fertvolume < 0.01f) cum.fertvolume = 0;
|
||||||
if (cum.volume < 0.1f) removecums.Add(cum);
|
if (cum.volume < 0.1f) removecums.Add(cum);
|
||||||
}
|
}
|
||||||
|
@ -551,6 +578,10 @@ namespace RJW_Menstruation
|
||||||
return outcum;
|
return outcum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fertilize eggs and return the result
|
/// Fertilize eggs and return the result
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -738,9 +769,26 @@ namespace RJW_Menstruation
|
||||||
GetNotCum(Translations.Menstrual_Blood).color = Colors.blood;
|
GetNotCum(Translations.Menstrual_Blood).color = Colors.blood;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MakeCumFilth(Cum cum)
|
private void MakeCumFilth(Cum cum, float amount, Absorber absorber = null)
|
||||||
{
|
{
|
||||||
FilthMaker.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, cum.FilthDef, cum.pawn.LabelShort);
|
|
||||||
|
if (absorber != null)
|
||||||
|
{
|
||||||
|
if (!absorber.dirty)
|
||||||
|
{
|
||||||
|
absorber.absorbedfluids += amount;
|
||||||
|
if (absorber.absorbedfluids < 10)
|
||||||
|
{
|
||||||
|
absorber.def = absorber.DirtyDef;
|
||||||
|
absorber.dirty = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (absorber.LeakAfterDirty) FilthMaker.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, cum.FilthDef, cum.pawn.LabelShort);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (amount >= minmakefilthvalue) FilthMaker.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, cum.FilthDef, cum.pawn.LabelShort);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -794,8 +842,8 @@ namespace RJW_Menstruation
|
||||||
ovarypower--;
|
ovarypower--;
|
||||||
eggs.Add(new Egg((int)(Props.eggLifespanDays * 24 / CycleFactor)));
|
eggs.Add(new Egg((int)(Props.eggLifespanDays * 24 / CycleFactor)));
|
||||||
i++;
|
i++;
|
||||||
} while (i < Rand.ByCurve(parent.pawn.RaceProps.litterSizeCurve));
|
} while (i < Rand.ByCurve(parent.pawn.RaceProps.litterSizeCurve) + eggstack);
|
||||||
|
eggstack = 0;
|
||||||
if (Configurations.EnableMenopause && ovarypower < 1)
|
if (Configurations.EnableMenopause && ovarypower < 1)
|
||||||
{
|
{
|
||||||
eggs.Clear();
|
eggs.Clear();
|
||||||
|
|
|
@ -67,6 +67,7 @@
|
||||||
<Compile Include="HediffComp_Menstruation.cs" />
|
<Compile Include="HediffComp_Menstruation.cs" />
|
||||||
<Compile Include="Patch\Pawn_Patch.cs" />
|
<Compile Include="Patch\Pawn_Patch.cs" />
|
||||||
<Compile Include="Patch\RJW_Patch.cs" />
|
<Compile Include="Patch\RJW_Patch.cs" />
|
||||||
|
<Compile Include="Things.cs" />
|
||||||
<Compile Include="Translations.cs" />
|
<Compile Include="Translations.cs" />
|
||||||
<Compile Include="Utility.cs" />
|
<Compile Include="Utility.cs" />
|
||||||
<Compile Include="VariousDefOf.cs" />
|
<Compile Include="VariousDefOf.cs" />
|
||||||
|
|
77
source/RJW_Menstruation/RJW_Menstruation/Things.cs
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using RimWorld;
|
||||||
|
using Verse;
|
||||||
|
using rjw;
|
||||||
|
|
||||||
|
namespace RJW_Menstruation
|
||||||
|
{
|
||||||
|
|
||||||
|
public class AbsorberModExtention : DefModExtension
|
||||||
|
{
|
||||||
|
public bool leakAfterDirty = false;
|
||||||
|
public bool effectsAfterDirty = false;
|
||||||
|
public ThingDef dirtyDef = null;
|
||||||
|
public int minHourstoDirtyEffect = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Absorber : Apparel
|
||||||
|
{
|
||||||
|
|
||||||
|
public float absorbedfluids = 0;
|
||||||
|
public bool dirty = false;
|
||||||
|
public int wearhours = 0;
|
||||||
|
public virtual bool LeakAfterDirty => def.GetModExtension<AbsorberModExtention>().leakAfterDirty;
|
||||||
|
public virtual bool EffectAfterDirty => def.GetModExtension<AbsorberModExtention>().effectsAfterDirty;
|
||||||
|
public virtual ThingDef DirtyDef => def.GetModExtension<AbsorberModExtention>().dirtyDef;
|
||||||
|
public virtual int MinHrstoDirtyEffect => def.GetModExtension<AbsorberModExtention>().minHourstoDirtyEffect;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public virtual void DirtyEffect() {}
|
||||||
|
|
||||||
|
public virtual void WearEffect()
|
||||||
|
{
|
||||||
|
wearhours++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void ExposeData()
|
||||||
|
{
|
||||||
|
base.ExposeData();
|
||||||
|
Scribe_Values.Look(ref absorbedfluids, "absorbedfluids", absorbedfluids, true);
|
||||||
|
Scribe_Values.Look(ref dirty, "dirty", dirty, true);
|
||||||
|
Scribe_Values.Look(ref wearhours, "wearhours", wearhours, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Absorber_Tampon : Absorber
|
||||||
|
{
|
||||||
|
|
||||||
|
public override void WearEffect()
|
||||||
|
{
|
||||||
|
base.WearEffect();
|
||||||
|
absorbedfluids += 0.1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void DirtyEffect()
|
||||||
|
{
|
||||||
|
if (wearhours > MinHrstoDirtyEffect && Rand.Chance(0.02f))
|
||||||
|
{
|
||||||
|
Hediff hediff = HediffMaker.MakeHediff(HediffDefOf.WoundInfection, Wearer, Genital_Helper.get_genitalsBPR(Wearer));
|
||||||
|
Wearer.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(Wearer));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -11,20 +11,26 @@ namespace RJW_Menstruation
|
||||||
{
|
{
|
||||||
public static class VariousDefOf
|
public static class VariousDefOf
|
||||||
{
|
{
|
||||||
public static readonly DNADef defaultDNA = new DNADef
|
//public static readonly DNADef defaultDNA = new DNADef
|
||||||
{
|
//{
|
||||||
fetusTexPath = "Fetus/Fetus_Default",
|
// fetusTexPath = "Fetus/Fetus_Default",
|
||||||
cumColor = new ColorInt(255, 255, 255, 255),
|
// cumColor = new ColorInt(255, 255, 255, 255),
|
||||||
cumThickness = 0
|
// cumThickness = 0
|
||||||
};
|
//};
|
||||||
|
|
||||||
public static readonly ThingDef CumFilth = DefDatabase<ThingDef>.GetNamed("FilthCum");
|
public static readonly ThingDef CumFilth = DefDatabase<ThingDef>.GetNamed("FilthCum");
|
||||||
|
public static readonly ThingDef Tampon = DefDatabase<ThingDef>.GetNamed("Absorber_Tampon");
|
||||||
|
public static readonly ThingDef Tampon_Dirty = DefDatabase<ThingDef>.GetNamed("Absorber_Tampon_Dirty");
|
||||||
public static readonly HediffDef RJW_IUD = DefDatabase<HediffDef>.GetNamed("RJW_IUD");
|
public static readonly HediffDef RJW_IUD = DefDatabase<HediffDef>.GetNamed("RJW_IUD");
|
||||||
public static readonly HediffDef Hediff_MenstrualCramp = DefDatabase<HediffDef>.GetNamed("Hediff_MenstrualCramp");
|
public static readonly HediffDef Hediff_MenstrualCramp = DefDatabase<HediffDef>.GetNamed("Hediff_MenstrualCramp");
|
||||||
public static readonly HediffDef Hediff_Climacteric = DefDatabase<HediffDef>.GetNamed("Hediff_Climacteric");
|
public static readonly HediffDef Hediff_Climacteric = DefDatabase<HediffDef>.GetNamed("Hediff_Climacteric");
|
||||||
public static readonly HediffDef Hediff_Menopause = DefDatabase<HediffDef>.GetNamed("Hediff_Menopause");
|
public static readonly HediffDef Hediff_Menopause = DefDatabase<HediffDef>.GetNamed("Hediff_Menopause");
|
||||||
|
public static readonly DNADef HumanDNA = DefDatabase<DNADef>.GetNamed("Human");
|
||||||
|
public static readonly StatDef MaxAbsorbable = DefDatabase<StatDef>.GetNamed("MaxAbsorbable");
|
||||||
public static readonly PawnRelationDef Relation_birthgiver = DefDatabase<PawnRelationDef>.AllDefs.FirstOrDefault(d => d.defName == "RJW_Sire");
|
public static readonly PawnRelationDef Relation_birthgiver = DefDatabase<PawnRelationDef>.AllDefs.FirstOrDefault(d => d.defName == "RJW_Sire");
|
||||||
public static readonly PawnRelationDef Relation_spawn = DefDatabase<PawnRelationDef>.AllDefs.FirstOrDefault(d => d.defName == "RJW_Pup");
|
public static readonly PawnRelationDef Relation_spawn = DefDatabase<PawnRelationDef>.AllDefs.FirstOrDefault(d => d.defName == "RJW_Pup");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|