mirror of
https://gitgud.io/lutepickle/rjw_menstruation.git
synced 2024-08-14 22:46:52 +00:00
1.0.3.2
This commit is contained in:
parent
df1e3c9b23
commit
11d8ae4863
20 changed files with 444 additions and 122 deletions
|
@ -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.3.1</version>
|
<version>1.0.3.2</version>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<incompatibleWith />
|
<incompatibleWith />
|
||||||
|
@ -9,6 +9,6 @@
|
||||||
</loadAfter>
|
</loadAfter>
|
||||||
<suggests>
|
<suggests>
|
||||||
</suggests>
|
</suggests>
|
||||||
<manifestUri>https://github.com/moreoreganostodump/RJW_Menstruation/blob/master/About/Manifest.xml</manifestUri>
|
<manifestUri>https://raw.githubusercontent.com/moreoreganostodump/RJW_Menstruation/master/About/Manifest.xml</manifestUri>
|
||||||
<downloadUri>https://github.com/moreoreganostodump/RJW_Menstruation</downloadUri>
|
<downloadUri>https://github.com/moreoreganostodump/RJW_Menstruation</downloadUri>
|
||||||
</Manifest>
|
</Manifest>
|
Binary file not shown.
|
@ -2,7 +2,7 @@
|
||||||
<Defs>
|
<Defs>
|
||||||
<JobDef>
|
<JobDef>
|
||||||
<defName>LactateSelf</defName>
|
<defName>LactateSelf</defName>
|
||||||
<driverClass>MilkModule.JobDriver_HumanMilkSelf</driverClass>
|
<driverClass>RJW_Menstruation.JobDriver_MilkSelf</driverClass>
|
||||||
<reportString>lactating self</reportString>
|
<reportString>lactating self</reportString>
|
||||||
<allowOpportunisticPrefix>true</allowOpportunisticPrefix>
|
<allowOpportunisticPrefix>true</allowOpportunisticPrefix>
|
||||||
</JobDef>
|
</JobDef>
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
<ThoughtDef>
|
<ThoughtDef>
|
||||||
<defName>CameInsideF</defName>
|
<defName>CameInsideF</defName>
|
||||||
<thoughtClass>Thought_Memory</thoughtClass>
|
<thoughtClass>Thought_MemorySocial</thoughtClass>
|
||||||
<durationDays>7.0</durationDays>
|
<durationDays>7.0</durationDays>
|
||||||
<stackLimit>5</stackLimit>
|
<stackLimit>5</stackLimit>
|
||||||
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
||||||
|
@ -35,8 +35,8 @@
|
||||||
|
|
||||||
<ThoughtDef>
|
<ThoughtDef>
|
||||||
<defName>CameInsideFLowFert</defName>
|
<defName>CameInsideFLowFert</defName>
|
||||||
<thoughtClass>Thought_Memory</thoughtClass>
|
<thoughtClass>Thought_MemorySocial</thoughtClass>
|
||||||
<durationDays>7.0</durationDays>
|
<durationDays>3.0</durationDays>
|
||||||
<stackLimit>5</stackLimit>
|
<stackLimit>5</stackLimit>
|
||||||
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
||||||
<stackLimitForSameOtherPawn>1</stackLimitForSameOtherPawn>
|
<stackLimitForSameOtherPawn>1</stackLimitForSameOtherPawn>
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
|
|
||||||
<ThoughtDef>
|
<ThoughtDef>
|
||||||
<defName>CameInsideFFetish</defName>
|
<defName>CameInsideFFetish</defName>
|
||||||
<thoughtClass>Thought_Memory</thoughtClass>
|
<thoughtClass>Thought_MemorySocial</thoughtClass>
|
||||||
<durationDays>3.0</durationDays>
|
<durationDays>3.0</durationDays>
|
||||||
<stackLimit>5</stackLimit>
|
<stackLimit>5</stackLimit>
|
||||||
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
||||||
|
@ -68,7 +68,7 @@
|
||||||
|
|
||||||
<ThoughtDef>
|
<ThoughtDef>
|
||||||
<defName>CameInsideFFetishSafe</defName>
|
<defName>CameInsideFFetishSafe</defName>
|
||||||
<thoughtClass>Thought_Memory</thoughtClass>
|
<thoughtClass>Thought_MemorySocial</thoughtClass>
|
||||||
<durationDays>3.0</durationDays>
|
<durationDays>3.0</durationDays>
|
||||||
<stackLimit>5</stackLimit>
|
<stackLimit>5</stackLimit>
|
||||||
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
||||||
|
@ -85,7 +85,7 @@
|
||||||
|
|
||||||
<ThoughtDef>
|
<ThoughtDef>
|
||||||
<defName>CameInsideM</defName>
|
<defName>CameInsideM</defName>
|
||||||
<thoughtClass>Thought_Memory</thoughtClass>
|
<thoughtClass>Thought_MemorySocial</thoughtClass>
|
||||||
<durationDays>1.0</durationDays>
|
<durationDays>1.0</durationDays>
|
||||||
<stackLimit>5</stackLimit>
|
<stackLimit>5</stackLimit>
|
||||||
<stackedEffectMultiplier>0.4</stackedEffectMultiplier>
|
<stackedEffectMultiplier>0.4</stackedEffectMultiplier>
|
||||||
|
@ -94,13 +94,14 @@
|
||||||
<label>came inside of {0}</label>
|
<label>came inside of {0}</label>
|
||||||
<description>Feel so good.</description>
|
<description>Feel so good.</description>
|
||||||
<baseMoodEffect>2</baseMoodEffect>
|
<baseMoodEffect>2</baseMoodEffect>
|
||||||
|
<baseOpinionOffset>1</baseOpinionOffset>
|
||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
</ThoughtDef>
|
</ThoughtDef>
|
||||||
|
|
||||||
<ThoughtDef>
|
<ThoughtDef>
|
||||||
<defName>HaterCameInsideFSafe</defName>
|
<defName>HaterCameInsideFSafe</defName>
|
||||||
<thoughtClass>Thought_Memory</thoughtClass>
|
<thoughtClass>Thought_MemorySocial</thoughtClass>
|
||||||
<durationDays>3.0</durationDays>
|
<durationDays>3.0</durationDays>
|
||||||
<stackLimit>5</stackLimit>
|
<stackLimit>5</stackLimit>
|
||||||
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
||||||
|
@ -109,7 +110,7 @@
|
||||||
<li>
|
<li>
|
||||||
<label>{0} came inside</label>
|
<label>{0} came inside</label>
|
||||||
<description>The chance is low. But i don't like it.</description>
|
<description>The chance is low. But i don't like it.</description>
|
||||||
<baseMoodEffect>-3</baseMoodEffect>
|
<baseMoodEffect>-2</baseMoodEffect>
|
||||||
<baseOpinionOffset>-5</baseOpinionOffset>
|
<baseOpinionOffset>-5</baseOpinionOffset>
|
||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
|
@ -117,7 +118,7 @@
|
||||||
|
|
||||||
<ThoughtDef>
|
<ThoughtDef>
|
||||||
<defName>HaterCameInsideF</defName>
|
<defName>HaterCameInsideF</defName>
|
||||||
<thoughtClass>Thought_Memory</thoughtClass>
|
<thoughtClass>Thought_MemorySocial</thoughtClass>
|
||||||
<durationDays>7.0</durationDays>
|
<durationDays>7.0</durationDays>
|
||||||
<stackLimit>5</stackLimit>
|
<stackLimit>5</stackLimit>
|
||||||
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
||||||
|
@ -134,7 +135,7 @@
|
||||||
|
|
||||||
<ThoughtDef>
|
<ThoughtDef>
|
||||||
<defName>HaterCameInsideM</defName>
|
<defName>HaterCameInsideM</defName>
|
||||||
<thoughtClass>Thought_Memory</thoughtClass>
|
<thoughtClass>Thought_MemorySocial</thoughtClass>
|
||||||
<durationDays>1.0</durationDays>
|
<durationDays>1.0</durationDays>
|
||||||
<stackLimit>5</stackLimit>
|
<stackLimit>5</stackLimit>
|
||||||
<stackedEffectMultiplier>0.4</stackedEffectMultiplier>
|
<stackedEffectMultiplier>0.4</stackedEffectMultiplier>
|
||||||
|
@ -143,6 +144,7 @@
|
||||||
<label>came inside of {0}</label>
|
<label>came inside of {0}</label>
|
||||||
<description>i came inside of that bitch</description>
|
<description>i came inside of that bitch</description>
|
||||||
<baseMoodEffect>5</baseMoodEffect>
|
<baseMoodEffect>5</baseMoodEffect>
|
||||||
|
<baseOpinionOffset>1</baseOpinionOffset>
|
||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
</ThoughtDef>
|
</ThoughtDef>
|
||||||
|
@ -157,10 +159,56 @@
|
||||||
<li>
|
<li>
|
||||||
<label>unwanted pregnancy</label>
|
<label>unwanted pregnancy</label>
|
||||||
<description>How do i...</description>
|
<description>How do i...</description>
|
||||||
<baseMoodEffect>-15</baseMoodEffect>
|
<baseMoodEffect>-10</baseMoodEffect>
|
||||||
|
</li>
|
||||||
|
</stages>
|
||||||
|
</ThoughtDef>
|
||||||
|
|
||||||
|
<ThoughtDef>
|
||||||
|
<defName>UnwantedPregnancyMild</defName>
|
||||||
|
<thoughtClass>Thought_Memory</thoughtClass>
|
||||||
|
<durationDays>14.0</durationDays>
|
||||||
|
<stackLimit>5</stackLimit>
|
||||||
|
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
||||||
|
<stages>
|
||||||
|
<li>
|
||||||
|
<label>unwanted pregnancy</label>
|
||||||
|
<description>How do i...</description>
|
||||||
|
<baseMoodEffect>-3</baseMoodEffect>
|
||||||
|
</li>
|
||||||
|
</stages>
|
||||||
|
</ThoughtDef>
|
||||||
|
|
||||||
|
<ThoughtDef>
|
||||||
|
<defName>TookContraptivePill</defName>
|
||||||
|
<thoughtClass>Thought_Memory</thoughtClass>
|
||||||
|
<durationDays>7.0</durationDays>
|
||||||
|
<stackLimit>5</stackLimit>
|
||||||
|
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
||||||
|
<stages>
|
||||||
|
<li>
|
||||||
|
<label>took contraptive pill</label>
|
||||||
|
<description>It will be okay.</description>
|
||||||
|
<baseMoodEffect>1</baseMoodEffect>
|
||||||
|
</li>
|
||||||
|
</stages>
|
||||||
|
</ThoughtDef>
|
||||||
|
|
||||||
|
<ThoughtDef>
|
||||||
|
<defName>HateTookContraptivePill</defName>
|
||||||
|
<thoughtClass>Thought_Memory</thoughtClass>
|
||||||
|
<durationDays>7.0</durationDays>
|
||||||
|
<stackLimit>5</stackLimit>
|
||||||
|
<stackedEffectMultiplier>0.1</stackedEffectMultiplier>
|
||||||
|
<stages>
|
||||||
|
<li>
|
||||||
|
<label>took contraptive pill</label>
|
||||||
|
<description>I want to get pregnant.</description>
|
||||||
|
<baseMoodEffect>-3</baseMoodEffect>
|
||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
</ThoughtDef>
|
</ThoughtDef>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
||||||
|
|
|
@ -17,7 +17,13 @@
|
||||||
<HaterCameInsideFSafe.stages.0.label>{0}에게 질내사정당함</HaterCameInsideFSafe.stages.0.label>
|
<HaterCameInsideFSafe.stages.0.label>{0}에게 질내사정당함</HaterCameInsideFSafe.stages.0.label>
|
||||||
<HaterCameInsideFSafe.stages.0.description>안전일이였지만 기분나빠</HaterCameInsideFSafe.stages.0.description>
|
<HaterCameInsideFSafe.stages.0.description>안전일이였지만 기분나빠</HaterCameInsideFSafe.stages.0.description>
|
||||||
<HaterCameInsideM.stages.0.label>{0}에게 질내사정함</HaterCameInsideM.stages.0.label>
|
<HaterCameInsideM.stages.0.label>{0}에게 질내사정함</HaterCameInsideM.stages.0.label>
|
||||||
<HaterCameInsideM.stages.0.description>그 개년한테 질싸를했어</HaterCameInsideM.stages.0.description>
|
<HaterCameInsideM.stages.0.description>그년한테 질싸를했어</HaterCameInsideM.stages.0.description>
|
||||||
<UnwantedPregnancy.stages.0.label>원치않은 임신</UnwantedPregnancy.stages.0.label>
|
<UnwantedPregnancy.stages.0.label>원치않은 임신</UnwantedPregnancy.stages.0.label>
|
||||||
<UnwantedPregnancy.stages.0.description>어떻게 해야하지?...</UnwantedPregnancy.stages.0.description>
|
<UnwantedPregnancy.stages.0.description>어떻게 해야하지?...</UnwantedPregnancy.stages.0.description> <HaterCameInsideM.stages.0.description>그년한테 질싸를했어</HaterCameInsideM.stages.0.description>
|
||||||
|
<UexpectedPregnancyMild.stages.0.label>원치않은 임신</UexpectedPregnancyMild.stages.0.label>
|
||||||
|
<UexpectedPregnancyMild.stages.0.description>어떻게 해야하지?...</UexpectedPregnancyMild.stages.0.description>
|
||||||
|
<TookContraptivePill.stages.0.label>피임약 복용</TookContraptivePill.stages.0.label>
|
||||||
|
<TookContraptivePill.stages.0.description>괜찮을거야</TookContraptivePill.stages.0.description>
|
||||||
|
<HateTookContraptivePill.stages.0.label>피임약 복용</HateTookContraptivePill.stages.0.label>
|
||||||
|
<HateTookContraptivePill.stages.0.description>임신하고싶어</HateTookContraptivePill.stages.0.description>
|
||||||
</LanguageData>
|
</LanguageData>
|
Binary file not shown.
9
MilkModule/Defs/JobDefs/Jobs_MilkSelf_MC.xml
Normal file
9
MilkModule/Defs/JobDefs/Jobs_MilkSelf_MC.xml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Defs>
|
||||||
|
<JobDef>
|
||||||
|
<defName>LactateSelf_MC</defName>
|
||||||
|
<driverClass>MilkModule.JobDriver_MilkSelf_MC</driverClass>
|
||||||
|
<reportString>lactating self</reportString>
|
||||||
|
<allowOpportunisticPrefix>true</allowOpportunisticPrefix>
|
||||||
|
</JobDef>
|
||||||
|
</Defs>
|
|
@ -7,4 +7,11 @@
|
||||||
<li Class="RJW_Menstruation.FertPillOutcomDoer"/>
|
<li Class="RJW_Menstruation.FertPillOutcomDoer"/>
|
||||||
</value>
|
</value>
|
||||||
</Operation>
|
</Operation>
|
||||||
|
|
||||||
|
<Operation Class="PatchOperationAdd">
|
||||||
|
<xpath>Defs/ThingDef[defName="RJW_Contraceptive"]/ingestible/outcomeDoers</xpath>
|
||||||
|
<value>
|
||||||
|
<li Class="RJW_Menstruation.ContraptiveOutcomDoer"/>
|
||||||
|
</value>
|
||||||
|
</Operation>
|
||||||
</Patch>
|
</Patch>
|
|
@ -38,6 +38,4 @@
|
||||||
</li>
|
</li>
|
||||||
</value>
|
</value>
|
||||||
</Operation>
|
</Operation>
|
||||||
|
|
||||||
|
|
||||||
</Patch>
|
</Patch>
|
|
@ -1,4 +1,11 @@
|
||||||
|
Version 1.0.3.2
|
||||||
|
- fixed self-lactating not work properly
|
||||||
|
- pawns having impregnation fetish or lover get less mood penalty on pregnancy
|
||||||
|
- minor bug fixes
|
||||||
|
- contraptive pills decreases mood debuffs from creampie (breeders will get reversed effect)
|
||||||
|
|
||||||
Version 1.0.3.1
|
Version 1.0.3.1
|
||||||
|
*Note* Remove previous version before installing
|
||||||
- fixed problems that pawns get climacteric stage after pregnancy even the menopause setting is off
|
- fixed problems that pawns get climacteric stage after pregnancy even the menopause setting is off
|
||||||
- now implantation chance is independent with rjw pregnancy settings
|
- now implantation chance is independent with rjw pregnancy settings
|
||||||
- fixed broken vagina support
|
- fixed broken vagina support
|
||||||
|
|
|
@ -11,47 +11,37 @@ using RJW_Menstruation;
|
||||||
|
|
||||||
namespace MilkModule
|
namespace MilkModule
|
||||||
{
|
{
|
||||||
public class JobDriver_HumanMilkSelf : JobDriver
|
public class JobDriver_MilkSelf_MC : JobDriver_MilkSelf
|
||||||
{
|
{
|
||||||
const float milkingTime = 250f;//ticks - 120 = 2 real seconds, 3 in-game minutes
|
HumanCompHasGatherableBodyResource comp;
|
||||||
|
HediffComp_Breast breastcomp;
|
||||||
|
|
||||||
public override bool TryMakePreToilReservations(bool errorOnFailed)
|
protected override float Fullness
|
||||||
{
|
{
|
||||||
return pawn.Reserve(pawn, job, 1, -1, null, errorOnFailed);
|
get
|
||||||
|
{
|
||||||
|
return comp.Fullness;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override IEnumerable<Toil> MakeNewToils()
|
protected override void PreMakeNewToils()
|
||||||
{
|
{
|
||||||
|
comp = GetMilkComp(pawn);
|
||||||
|
breastcomp = pawn.GetBreastComp();
|
||||||
|
}
|
||||||
|
|
||||||
HumanCompHasGatherableBodyResource Comp = GetMilkComp(pawn);
|
protected override void Gathered()
|
||||||
HediffComp_Breast breastcomp = pawn.GetBreastComp();
|
|
||||||
this.FailOn(delegate
|
|
||||||
{
|
{
|
||||||
return !(Comp.Fullness > 0.01f);
|
comp.Gathered(pawn);
|
||||||
});
|
}
|
||||||
Toil milking = Toils_General.Wait((int)(50 + milkingTime * Comp.Fullness), TargetIndex.None);//duration of
|
|
||||||
|
|
||||||
milking.WithProgressBarToilDelay(TargetIndex.A);
|
protected override void PostTickAction()
|
||||||
milking.tickAction = delegate ()
|
|
||||||
{
|
{
|
||||||
if (breastcomp != null)
|
if (breastcomp != null)
|
||||||
{
|
{
|
||||||
breastcomp.AdjustAreolaSize(Rand.Range(0.0f, 0.0001f * Configurations.NipplePermanentTransitionVariance));
|
breastcomp.AdjustAreolaSize(Rand.Range(0.0f, 0.0001f * Configurations.NipplePermanentTransitionVariance));
|
||||||
breastcomp.AdjustNippleSize(Rand.Range(0.0f, 0.0001f * Configurations.NipplePermanentTransitionVariance));
|
breastcomp.AdjustNippleSize(Rand.Range(0.0f, 0.0001f * Configurations.NipplePermanentTransitionVariance));
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
|
||||||
yield return milking;
|
|
||||||
yield return new Toil()
|
|
||||||
{
|
|
||||||
initAction = delegate ()
|
|
||||||
{
|
|
||||||
Comp.Gathered(pawn);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
//yield return excreting;
|
|
||||||
yield break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,6 +51,7 @@ namespace MilkModule
|
||||||
if (pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Heavy_Lactating_Permanent))
|
if (pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Heavy_Lactating_Permanent))
|
||||||
{
|
{
|
||||||
result = pawn.TryGetComp<CompHyperMilkableHuman>();
|
result = pawn.TryGetComp<CompHyperMilkableHuman>();
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -70,7 +61,70 @@ namespace MilkModule
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//public class JobDriver_HumanMilkSelf : JobDriver
|
||||||
|
//{
|
||||||
|
// const float milkingTime = 250f;//ticks - 120 = 2 real seconds, 3 in-game minutes
|
||||||
|
//
|
||||||
|
// public override bool TryMakePreToilReservations(bool errorOnFailed)
|
||||||
|
// {
|
||||||
|
// return pawn.Reserve(pawn, job, 1, -1, null, errorOnFailed);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// protected override IEnumerable<Toil> MakeNewToils()
|
||||||
|
// {
|
||||||
|
//
|
||||||
|
// HumanCompHasGatherableBodyResource Comp = GetMilkComp(pawn);
|
||||||
|
// HediffComp_Breast breastcomp = pawn.GetBreastComp();
|
||||||
|
// this.FailOn(delegate
|
||||||
|
// {
|
||||||
|
// return !(Comp.Fullness > 0.01f);
|
||||||
|
// });
|
||||||
|
// Toil milking = Toils_General.Wait((int)(50 + milkingTime * Comp.Fullness), TargetIndex.None);//duration of
|
||||||
|
//
|
||||||
|
// milking.WithProgressBarToilDelay(TargetIndex.A);
|
||||||
|
// milking.tickAction = delegate ()
|
||||||
|
// {
|
||||||
|
// if (breastcomp != null)
|
||||||
|
// {
|
||||||
|
// breastcomp.AdjustAreolaSize(Rand.Range(0.0f,0.0001f * Configurations.NipplePermanentTransitionVariance));
|
||||||
|
// breastcomp.AdjustNippleSize(Rand.Range(0.0f,0.0001f * Configurations.NipplePermanentTransitionVariance));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// };
|
||||||
|
// yield return milking;
|
||||||
|
// yield return new Toil()
|
||||||
|
// {
|
||||||
|
// initAction = delegate ()
|
||||||
|
// {
|
||||||
|
// Comp.Gathered(pawn);
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
// //yield return excreting;
|
||||||
|
// yield break;
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// public static HumanCompHasGatherableBodyResource GetMilkComp(Pawn pawn)
|
||||||
|
// {
|
||||||
|
// HumanCompHasGatherableBodyResource result;
|
||||||
|
// if (pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Heavy_Lactating_Permanent))
|
||||||
|
// {
|
||||||
|
// result = pawn.TryGetComp<CompHyperMilkableHuman>();
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// result = pawn.TryGetComp<CompMilkableHuman>();
|
||||||
|
// }
|
||||||
|
// return result;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
using RimWorld;
|
using System.Collections.Generic;
|
||||||
|
using RimWorld;
|
||||||
using Verse;
|
using Verse;
|
||||||
|
using rjw;
|
||||||
|
|
||||||
namespace RJW_Menstruation
|
namespace RJW_Menstruation
|
||||||
{
|
{
|
||||||
|
@ -53,6 +55,31 @@ namespace RJW_Menstruation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ContraptiveOutcomDoer : IngestionOutcomeDoer
|
||||||
|
{
|
||||||
|
protected override void DoIngestionOutcomeSpecial(Pawn pawn, Thing ingested)
|
||||||
|
{
|
||||||
|
|
||||||
|
List<Thought_Memory> memories = pawn.needs?.mood?.thoughts?.memories?.Memories.FindAll(
|
||||||
|
x =>
|
||||||
|
x.def == VariousDefOf.CameInsideF
|
||||||
|
|| x.def == VariousDefOf.CameInsideFFetish
|
||||||
|
|| x.def == VariousDefOf.HaterCameInsideF);
|
||||||
|
if (!memories.NullOrEmpty())
|
||||||
|
{
|
||||||
|
foreach (Thought_Memory m in memories)
|
||||||
|
{
|
||||||
|
if (m.def == VariousDefOf.HaterCameInsideF) m.moodPowerFactor = 0.5f;
|
||||||
|
else m.moodPowerFactor = 0.3f;
|
||||||
|
|
||||||
|
}
|
||||||
|
if (pawn.Has(Quirk.Breeder)) pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.HateTookContraptivePill);
|
||||||
|
else pawn.needs.mood.thoughts.memories.TryGainMemoryFast(VariousDefOf.TookContraptivePill);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,6 +56,7 @@ namespace RJW_Menstruation
|
||||||
protected float originareola = -1f;
|
protected float originareola = -1f;
|
||||||
protected float originnipple = -1f;
|
protected float originnipple = -1f;
|
||||||
protected Color cachedcolor;
|
protected Color cachedcolor;
|
||||||
|
protected bool loaded = false;
|
||||||
|
|
||||||
public Action action;
|
public Action action;
|
||||||
|
|
||||||
|
@ -134,6 +135,18 @@ namespace RJW_Menstruation
|
||||||
|
|
||||||
public override void CompPostTick(ref float severityAdjustment) { }
|
public override void CompPostTick(ref float severityAdjustment) { }
|
||||||
|
|
||||||
|
public override void CompPostPostAdd(DamageInfo? dinfo)
|
||||||
|
{
|
||||||
|
if (!loaded) Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void CompPostPostRemoved()
|
||||||
|
{
|
||||||
|
HugsLibController.Instance.TickDelayScheduler.TryUnscheduleCallback(action);
|
||||||
|
ModLog.Message(parent.pawn.Label + "breast tick scheduler removed");
|
||||||
|
base.CompPostPostRemoved();
|
||||||
|
}
|
||||||
|
|
||||||
public void Initialize()
|
public void Initialize()
|
||||||
{
|
{
|
||||||
Props = (CompProperties_Breast)props;
|
Props = (CompProperties_Breast)props;
|
||||||
|
@ -160,9 +173,12 @@ namespace RJW_Menstruation
|
||||||
nippleSizeCurrent = nippleSizePermanent;
|
nippleSizeCurrent = nippleSizePermanent;
|
||||||
}
|
}
|
||||||
UpdateColor();
|
UpdateColor();
|
||||||
|
loaded = true;
|
||||||
HugsLibController.Instance.TickDelayScheduler.ScheduleCallback(action, tickinterval, parent.pawn);
|
HugsLibController.Instance.TickDelayScheduler.ScheduleCallback(action, tickinterval, parent.pawn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void Transition()
|
public void Transition()
|
||||||
{
|
{
|
||||||
alphaCurrent = Mathf.Lerp(alphaCurrent, alpha, Configurations.NippleTransitionRatio);
|
alphaCurrent = Mathf.Lerp(alphaCurrent, alpha, Configurations.NippleTransitionRatio);
|
||||||
|
@ -223,6 +239,7 @@ namespace RJW_Menstruation
|
||||||
float variance = breastSizeIncreased * Math.Min(ratio, 1.0f);
|
float variance = breastSizeIncreased * Math.Min(ratio, 1.0f);
|
||||||
breastSizeIncreased -= variance;
|
breastSizeIncreased -= variance;
|
||||||
parent.Severity -= variance;
|
parent.Severity -= variance;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateColor()
|
public void UpdateColor()
|
||||||
|
|
|
@ -596,48 +596,8 @@ namespace RJW_Menstruation
|
||||||
|
|
||||||
public virtual void AfterCumIn(Pawn cummer)
|
public virtual void AfterCumIn(Pawn cummer)
|
||||||
{
|
{
|
||||||
if (xxx.is_human(parent.pawn) && xxx.is_human(cummer))
|
ThoughtCumInside(cummer);
|
||||||
{
|
|
||||||
if (parent.pawn.GetStatValue(StatDefOf.PawnBeauty) >= 0 || cummer.Has(Quirk.ImpregnationFetish) || cummer.Has(Quirk.Breeder))
|
|
||||||
{
|
|
||||||
if (cummer.relations.OpinionOf(parent.pawn) <= -25)
|
|
||||||
{
|
|
||||||
cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideM, parent.pawn);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideM, parent.pawn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsDangerDay)
|
|
||||||
{
|
|
||||||
if (parent.pawn.Has(Quirk.Breeder) || parent.pawn.Has(Quirk.ImpregnationFetish))
|
|
||||||
{
|
|
||||||
parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer);
|
|
||||||
}
|
|
||||||
else if (!parent.pawn.relations.DirectRelationExists(PawnRelationDefOf.Spouse, cummer) && !parent.pawn.relations.DirectRelationExists(PawnRelationDefOf.Fiance, cummer))
|
|
||||||
{
|
|
||||||
if (parent.pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer);
|
|
||||||
else parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideF, cummer);
|
|
||||||
}
|
|
||||||
else if (parent.pawn.relations.OpinionOf(cummer) <= -5)
|
|
||||||
{
|
|
||||||
parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (parent.pawn.Has(Quirk.Breeder) || parent.pawn.Has(Quirk.ImpregnationFetish))
|
|
||||||
{
|
|
||||||
parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer);
|
|
||||||
}
|
|
||||||
else if (parent.pawn.relations.OpinionOf(cummer) <= -5)
|
|
||||||
{
|
|
||||||
parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void AfterNotCumIn()
|
public virtual void AfterNotCumIn()
|
||||||
|
@ -671,7 +631,7 @@ namespace RJW_Menstruation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual void AfterCumOut()
|
public virtual void AfterCumOut()
|
||||||
{
|
{
|
||||||
parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.LeakingFluids);
|
parent.pawn.needs?.mood?.thoughts?.memories?.TryGainMemory(VariousDefOf.LeakingFluids);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1321,6 +1281,57 @@ namespace RJW_Menstruation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected virtual void ThoughtCumInside(Pawn cummer)
|
||||||
|
{
|
||||||
|
if (xxx.is_human(parent.pawn) && xxx.is_human(cummer))
|
||||||
|
{
|
||||||
|
if (parent.pawn.GetStatValue(StatDefOf.PawnBeauty) >= 0 || cummer.Has(Quirk.ImpregnationFetish) || cummer.Has(Quirk.Breeder))
|
||||||
|
{
|
||||||
|
if (cummer.relations.OpinionOf(parent.pawn) <= -25)
|
||||||
|
{
|
||||||
|
cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideM, parent.pawn);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideM, parent.pawn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsDangerDay)
|
||||||
|
{
|
||||||
|
if (parent.pawn.Has(Quirk.Breeder) || parent.pawn.Has(Quirk.ImpregnationFetish))
|
||||||
|
{
|
||||||
|
parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer);
|
||||||
|
}
|
||||||
|
else if (!parent.pawn.relations.DirectRelationExists(PawnRelationDefOf.Spouse, cummer) && !parent.pawn.relations.DirectRelationExists(PawnRelationDefOf.Fiance, cummer))
|
||||||
|
{
|
||||||
|
if (parent.pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer);
|
||||||
|
else parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideF, cummer);
|
||||||
|
}
|
||||||
|
else if (parent.pawn.relations.OpinionOf(cummer) <= -5)
|
||||||
|
{
|
||||||
|
parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (parent.pawn.Has(Quirk.Breeder) || parent.pawn.Has(Quirk.ImpregnationFetish))
|
||||||
|
{
|
||||||
|
parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer);
|
||||||
|
}
|
||||||
|
else if (parent.pawn.relations.OpinionOf(cummer) <= -5)
|
||||||
|
{
|
||||||
|
parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void ThoughtCummer()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private Action PeriodSimulator(Stage targetstage)
|
private Action PeriodSimulator(Stage targetstage)
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,13 +11,28 @@ namespace RJW_Menstruation
|
||||||
{
|
{
|
||||||
public override void DiscoverPregnancy()
|
public override void DiscoverPregnancy()
|
||||||
{
|
{
|
||||||
if (!is_discovered && xxx.is_human(pawn) && !pawn.Has(Quirk.Breeder) && pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Spouse) || x.def.Equals(PawnRelationDefOf.Fiance)) == null)
|
PregnancyThought();
|
||||||
{
|
|
||||||
pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.UnwantedPregnancy);
|
|
||||||
}
|
|
||||||
base.DiscoverPregnancy();
|
base.DiscoverPregnancy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void PregnancyThought()
|
||||||
|
{
|
||||||
|
if (!is_discovered && xxx.is_human(pawn))
|
||||||
|
{
|
||||||
|
if (!pawn.Has(Quirk.Breeder) && pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Spouse) || x.def.Equals(PawnRelationDefOf.Fiance)) == null)
|
||||||
|
{
|
||||||
|
if (pawn.Has(Quirk.ImpregnationFetish) || pawn.relations?.DirectRelations?.Find(x => x.def.Equals(PawnRelationDefOf.Lover)) != null)
|
||||||
|
{
|
||||||
|
pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.UnwantedPregnancyMild);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.UnwantedPregnancy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override void GiveBirth()
|
public override void GiveBirth()
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,7 +39,84 @@ namespace RJW_Menstruation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class JobDriver_MilkSelf : JobDriver
|
||||||
|
{
|
||||||
|
protected float progress = 0;
|
||||||
|
protected float MilkingTime
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return 250f * Fullness + 50f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected virtual float Fullness
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return comp?.Fullness ?? 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private CompMilkable comp;
|
||||||
|
|
||||||
|
public override bool TryMakePreToilReservations(bool errorOnFailed)
|
||||||
|
{
|
||||||
|
return pawn.Reserve(pawn, job, 1, -1, null, errorOnFailed);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void PreMakeNewToils()
|
||||||
|
{
|
||||||
|
comp = pawn.GetComp<CompMilkable>();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override IEnumerable<Toil> MakeNewToils()
|
||||||
|
{
|
||||||
|
PreMakeNewToils();
|
||||||
|
this.FailOnDespawnedNullOrForbidden(TargetIndex.A);
|
||||||
|
this.FailOnNotCasualInterruptible(TargetIndex.A);
|
||||||
|
Toil milking = new Toil();
|
||||||
|
milking.initAction = delegate ()
|
||||||
|
{
|
||||||
|
pawn.pather.StopDead();
|
||||||
|
};
|
||||||
|
milking.tickAction = MilkingTick;
|
||||||
|
milking.AddFinishAction(Finish);
|
||||||
|
milking.defaultCompleteMode = ToilCompleteMode.Never;
|
||||||
|
milking.WithProgressBar(TargetIndex.A, () => progress / MilkingTime);
|
||||||
|
yield return milking;
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void MilkingTick()
|
||||||
|
{
|
||||||
|
progress += pawn.GetStatValue(StatDefOf.AnimalGatherSpeed);
|
||||||
|
if (progress > MilkingTime)
|
||||||
|
{
|
||||||
|
Gathered();
|
||||||
|
pawn.jobs.EndCurrentJob(JobCondition.Succeeded);
|
||||||
|
}
|
||||||
|
PostTickAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void Gathered()
|
||||||
|
{
|
||||||
|
pawn.GetComp<CompMilkable>().Gathered(pawn);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void Finish()
|
||||||
|
{
|
||||||
|
if(pawn.CurJobDef == JobDefOf.Wait_MaintainPosture)
|
||||||
|
{
|
||||||
|
pawn.jobs.EndCurrentJob(JobCondition.InterruptForced);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void PostTickAction()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,12 +111,14 @@ namespace RJW_Menstruation
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Merged to RJW
|
||||||
[HarmonyPatch(typeof(PawnColumnWorker_Pregnant), "GetIconFor")]
|
[HarmonyPatch(typeof(PawnColumnWorker_Pregnant), "GetIconFor")]
|
||||||
public class PawnColumnWorker_Patch_Icon
|
public class PawnColumnWorker_Patch_Icon
|
||||||
{
|
{
|
||||||
public static void Postfix(Pawn pawn, ref Texture2D __result)
|
public static void Postfix(Pawn pawn, ref Texture2D __result)
|
||||||
{
|
{
|
||||||
if (pawn.IsPregnant()) __result = ContentFinder<Texture2D>.Get("UI/Icons/Animal/Pregnant", true);
|
if (pawn.IsVisiblyPregnant()) __result = ContentFinder<Texture2D>.Get("UI/Icons/Animal/Pregnant", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -135,6 +137,25 @@ namespace RJW_Menstruation
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HarmonyPatch(typeof(TransferableUIUtility), "DoExtraAnimalIcons")]
|
||||||
|
public class TransferableUIUtility_Patch_Icon
|
||||||
|
{
|
||||||
|
private static readonly Texture2D PregnantIcon = ContentFinder<Texture2D>.Get("UI/Icons/Animal/Pregnant", true);
|
||||||
|
public static void Postfix(Transferable trad, Rect rect, ref float curX)
|
||||||
|
{
|
||||||
|
Pawn pawn = trad.AnyThing as Pawn;
|
||||||
|
if (pawn.IsVisiblyPregnant())
|
||||||
|
{
|
||||||
|
Rect rect3 = new Rect(curX - 24f, (rect.height - 24f) / 2f, 24f, 24f);
|
||||||
|
curX -= 24f;
|
||||||
|
if (Mouse.IsOver(rect3))
|
||||||
|
{
|
||||||
|
TooltipHandler.TipRegion(rect3, PawnColumnWorker_Pregnant.GetTooltipText(pawn));
|
||||||
|
}
|
||||||
|
GUI.DrawTexture(rect3, PregnantIcon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//[HarmonyPatch(typeof(JobGiver_OptimizeApparel), "ApparelScoreGain_NewTmp")]
|
//[HarmonyPatch(typeof(JobGiver_OptimizeApparel), "ApparelScoreGain_NewTmp")]
|
||||||
|
|
|
@ -19,6 +19,20 @@ namespace RJW_Menstruation
|
||||||
return fieldInfo?.GetValue(obj);
|
return fieldInfo?.GetValue(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static object GetPropertyValue(this Type type, string name)
|
||||||
|
{
|
||||||
|
BindingFlags flags = BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
|
||||||
|
PropertyInfo propertyInfo = type?.GetProperty(name,flags);
|
||||||
|
return propertyInfo?.GetValue(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static object GetPropertyValue(this object obj, string name)
|
||||||
|
{
|
||||||
|
BindingFlags flags = BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
|
||||||
|
PropertyInfo propertyInfo = obj?.GetType().GetProperty(name,flags);
|
||||||
|
return propertyInfo?.GetValue(obj);
|
||||||
|
}
|
||||||
|
|
||||||
public static void SetMemberValue(this Type type, string name, object value)
|
public static void SetMemberValue(this Type type, string name, object value)
|
||||||
{
|
{
|
||||||
BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
|
BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
|
||||||
|
|
|
@ -413,19 +413,26 @@ namespace RJW_Menstruation
|
||||||
if (milkcomp != null)
|
if (milkcomp != null)
|
||||||
{
|
{
|
||||||
if (milkcomp is CompMilkable)
|
if (milkcomp is CompMilkable)
|
||||||
|
{
|
||||||
|
bool active = (bool)milkcomp.GetPropertyValue("Active");
|
||||||
|
if (active)
|
||||||
{
|
{
|
||||||
CompMilkable m = (CompMilkable)milkcomp;
|
CompMilkable m = (CompMilkable)milkcomp;
|
||||||
res = Math.Max(m.Fullness, res);
|
res = Math.Max(m.Fullness, res);
|
||||||
Widgets.FillableBar(rect, Math.Min(res, 1.0f), TextureCache.milkTexture, Texture2D.blackTexture, true);
|
Widgets.FillableBar(rect, Math.Min(res, 1.0f), TextureCache.milkTexture, Texture2D.blackTexture, true);
|
||||||
DrawMilkBottle(rect, pawn, JobDefOf.Milk, m.Fullness);
|
DrawMilkBottle(rect, pawn, VariousDefOf.Job_LactateSelf, m.Fullness);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
bool active = (bool)milkcomp.GetPropertyValue("Active");
|
||||||
|
if (active)
|
||||||
{
|
{
|
||||||
float fullness = (float)milkcomp.GetMemberValue("fullness");
|
float fullness = (float)milkcomp.GetMemberValue("fullness");
|
||||||
res = Math.Max(fullness, res);
|
res = Math.Max(fullness, res);
|
||||||
Widgets.FillableBar(rect, Math.Min(res, 1.0f), TextureCache.milkTexture, Texture2D.blackTexture, true);
|
Widgets.FillableBar(rect, Math.Min(res, 1.0f), TextureCache.milkTexture, Texture2D.blackTexture, true);
|
||||||
DrawMilkBottle(rect, pawn, VariousDefOf.Job_LactateSelf,fullness);
|
DrawMilkBottle(rect, pawn, VariousDefOf.Job_LactateSelf_MC, fullness);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ namespace RJW_Menstruation
|
||||||
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");
|
||||||
public static readonly NeedDef SexNeed = DefDatabase<NeedDef>.GetNamed("Sex");
|
public static readonly NeedDef SexNeed = DefDatabase<NeedDef>.GetNamed("Sex");
|
||||||
public static readonly JobDef VaginaWashing = DefDatabase<JobDef>.GetNamed("VaginaWashing");
|
public static readonly JobDef VaginaWashing = DefDatabase<JobDef>.GetNamed("VaginaWashing");
|
||||||
|
public static readonly JobDef Job_LactateSelf = DefDatabase<JobDef>.GetNamed("LactateSelf");
|
||||||
public static readonly ThoughtDef LeakingFluids = DefDatabase<ThoughtDef>.GetNamed("LeakingFluids");
|
public static readonly ThoughtDef LeakingFluids = DefDatabase<ThoughtDef>.GetNamed("LeakingFluids");
|
||||||
public static readonly ThoughtDef CameInsideF = DefDatabase<ThoughtDef>.GetNamed("CameInsideF");
|
public static readonly ThoughtDef CameInsideF = DefDatabase<ThoughtDef>.GetNamed("CameInsideF");
|
||||||
public static readonly ThoughtDef CameInsideFLowFert = DefDatabase<ThoughtDef>.GetNamed("CameInsideFLowFert");
|
public static readonly ThoughtDef CameInsideFLowFert = DefDatabase<ThoughtDef>.GetNamed("CameInsideFLowFert");
|
||||||
|
@ -33,6 +34,9 @@ namespace RJW_Menstruation
|
||||||
public static readonly ThoughtDef CameInsideM = DefDatabase<ThoughtDef>.GetNamed("CameInsideM");
|
public static readonly ThoughtDef CameInsideM = DefDatabase<ThoughtDef>.GetNamed("CameInsideM");
|
||||||
public static readonly ThoughtDef HaterCameInsideM = DefDatabase<ThoughtDef>.GetNamed("HaterCameInsideM");
|
public static readonly ThoughtDef HaterCameInsideM = DefDatabase<ThoughtDef>.GetNamed("HaterCameInsideM");
|
||||||
public static readonly ThoughtDef UnwantedPregnancy = DefDatabase<ThoughtDef>.GetNamed("UnwantedPregnancy");
|
public static readonly ThoughtDef UnwantedPregnancy = DefDatabase<ThoughtDef>.GetNamed("UnwantedPregnancy");
|
||||||
|
public static readonly ThoughtDef UnwantedPregnancyMild = DefDatabase<ThoughtDef>.GetNamed("UnwantedPregnancyMild");
|
||||||
|
public static readonly ThoughtDef TookContraptivePill = DefDatabase<ThoughtDef>.GetNamed("TookContraptivePill");
|
||||||
|
public static readonly ThoughtDef HateTookContraptivePill = DefDatabase<ThoughtDef>.GetNamed("HateTookContraptivePill");
|
||||||
public static readonly HediffDef_PartBase Vagina = DefDatabase<HediffDef_PartBase>.GetNamed("Vagina");
|
public static readonly HediffDef_PartBase Vagina = DefDatabase<HediffDef_PartBase>.GetNamed("Vagina");
|
||||||
public static readonly CompProperties_Menstruation VaginaCompProperties = (CompProperties_Menstruation)Vagina.comps.FirstOrDefault(x => x is CompProperties_Menstruation);
|
public static readonly CompProperties_Menstruation VaginaCompProperties = (CompProperties_Menstruation)Vagina.comps.FirstOrDefault(x => x is CompProperties_Menstruation);
|
||||||
public static readonly KeyBindingDef OpenStatusWindowKey = DefDatabase<KeyBindingDef>.GetNamed("OpenStatusWindow");
|
public static readonly KeyBindingDef OpenStatusWindowKey = DefDatabase<KeyBindingDef>.GetNamed("OpenStatusWindow");
|
||||||
|
@ -43,7 +47,7 @@ namespace RJW_Menstruation
|
||||||
public static readonly HediffDef Hediff_Lactating_Natural = DefDatabase<HediffDef>.GetNamedSilentFail("Lactating_Natural");
|
public static readonly HediffDef Hediff_Lactating_Natural = DefDatabase<HediffDef>.GetNamedSilentFail("Lactating_Natural");
|
||||||
public static readonly HediffDef Hediff_Lactating_Permanent = DefDatabase<HediffDef>.GetNamedSilentFail("Lactating_Permanent");
|
public static readonly HediffDef Hediff_Lactating_Permanent = DefDatabase<HediffDef>.GetNamedSilentFail("Lactating_Permanent");
|
||||||
public static readonly HediffDef Hediff_Heavy_Lactating_Permanent = DefDatabase<HediffDef>.GetNamedSilentFail("Heavy_Lactating_Permanent");
|
public static readonly HediffDef Hediff_Heavy_Lactating_Permanent = DefDatabase<HediffDef>.GetNamedSilentFail("Heavy_Lactating_Permanent");
|
||||||
public static readonly JobDef Job_LactateSelf = DefDatabase<JobDef>.GetNamed("LactateSelf");
|
public static readonly JobDef Job_LactateSelf_MC = DefDatabase<JobDef>.GetNamed("LactateSelf_MC");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue