coffees-rjw-ideology-addons/CRIALactation/Source/LactationUtility.cs
dominiclopez391 a5d5cc1d44 changes to lactation hediffs:
prisoners can be milked
pawns spawn lactating by default with hucow precept
2021-11-15 14:58:49 -08:00

83 lines
2.5 KiB
C#

using Milk;
using rjw;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
namespace CRIALactation
{
public static class LactationUtility
{
public static bool IsLactating(Pawn p)
{
return
p.health.hediffSet.HasHediff(HediffDefOf_Milk.Lactating_Natural, false) ||
p.health.hediffSet.HasHediff(HediffDefOf_Milk.Lactating_Drug, false) ||
p.health.hediffSet.HasHediff(HediffDefOf_Milk.Lactating_Permanent, false) ||
p.health.hediffSet.HasHediff(HediffDefOf_Milk.Heavy_Lactating_Permanent, false);
}
public static bool HasMilkableBreasts(Pawn p)
{
if (p.TryGetComp<CompMilkableHuman>() == null) return false;
if (Genital_Helper.has_breasts(p) && (MilkBase.flatChestGivesMilk || !Genital_Helper.has_male_breasts(p)))
{
return true;
}
return false;
}
public static void StartLactating(Pawn p, bool natural)
{
Hediff lactating = HediffMaker.MakeHediff(HediffDefOf_Milk.Lactating_Natural, p, null);
lactating.Severity = Rand.Value;
p.health.AddHediff(lactating, Genital_Helper.get_breastsBPR(p));
}
public static void StopBeingHucow(Pawn p)
{
p.health.RemoveHediff(p.health.hediffSet.GetFirstHediffOfDef(HediffDefOf_Milk.Hucow, false));
}
public static bool IsHucow(Pawn p)
{
return p.health.hediffSet.HasHediff(HediffDefOf_Milk.Hucow);
}
public static bool isMassageable(Pawn p)
{
CompInduceLactation c = p.TryGetComp<CompInduceLactation>();
if (c != null && c.isActive && c.CanMassage)
{
return true;
}
return false;
}
public static void ExtendLactationDuration(Pawn p)
{
var drugLact = p.health.hediffSet.GetFirstHediffOfDef(HediffDefOf_Milk.Lactating_Drug);
if(drugLact != null)
{
drugLact.TryGetComp<HediffComp_Disappears>().ticksToDisappear = 600000;
}
var naturalLact = p.health.hediffSet.GetFirstHediffOfDef(HediffDefOf_Milk.Lactating_Natural);
if (naturalLact != null)
{
naturalLact.TryGetComp<HediffComp_Disappears>().ticksToDisappear = 600000;
}
}
}
}