using LicentiaLabs; using Verse; namespace RJW_Genes { /// /// This Gene adds Licentia-Labs Elasticised Hediff to a Pawn. /// Note: I had a HarmonyPatch first, similar to skipping cumflation, but the Stretching Logic is called quite a lot and for both pawns actually. /// Hence, I think choosing the Elasticiced Hediff was good as then everything is covered by "Licentia-Logic". /// public class Gene_Elasticity : Gene { private const int RESET_INTERVAL = 60000; // 60k should be 1 day public override void PostAdd() { base.PostAdd(); // Doing it like this will add the hediff with a severity of ~0.5, but it will decay. // Hence we check with the Ticks to update. this.pawn.health.AddHediff(Licentia.HediffDefs.Elasticised); ResetSeverity(); } public override void Tick() { base.Tick(); if (pawn.IsHashIntervalTick(RESET_INTERVAL)) ResetSeverity(); } public override void PostRemove() { Hediff candidate = pawn.health.hediffSet.GetFirstHediffOfDef(Licentia.HediffDefs.Elasticised); if (candidate != null) { pawn.health.RemoveHediff(candidate); } base.PostRemove(); } private void ResetSeverity(float severity = 0.7f) { Hediff candidate = pawn.health.hediffSet.GetFirstHediffOfDef(Licentia.HediffDefs.Elasticised); if (candidate != null) { candidate.Severity = severity; } } } }