public override float MoodOffset() { if (!added) { if (this.def.hediff != null) { this.pawn.health.AddHediff(this.def.hediff); } if (this.def.HasModExtension <Thought_Hediff_Extension>()) { Thought_Hediff_Extension extension = this.def.GetModExtension <Thought_Hediff_Extension>(); BodyPartRecord part = this.pawn.RaceProps.body.GetPartsWithDef(extension.partToAffect).FirstOrDefault(); this.pawn.health.AddHediff(extension.hediffToAffect, part); pawn.health.hediffSet.GetFirstHediffOfDef(extension.hediffToAffect, false).Severity += extension.percentage; if (extension.secondHediffToAffect != null) { BodyPartRecord part2 = this.pawn.RaceProps.body.GetPartsWithDef(extension.secondPartToAffect).FirstOrDefault(); this.pawn.health.AddHediff(extension.secondHediffToAffect, part2); pawn.health.hediffSet.GetFirstHediffOfDef(extension.secondHediffToAffect, false).Severity += extension.secondPercentage; } } added = true; } return(base.MoodOffset()); }
//Soooo, here was the problem, the Thought class doesn't have an Init() or Start() or similar method, so we hooked into //a method that runs ALL THE TIME, MoodOffset, and by using a simple bool variable we assured this code won't run all //the time and create HUGE amounts of lag public override float MoodOffset() { if (!added) { //First, we use the hediff field of the Thought XML to add that hediff if (this.def.hediff != null) { this.pawn.health.AddHediff(this.def.hediff); } //And if we want to add more hediffs, we can add up to two more. This could be extended to any number using //a simple list if (this.def.HasModExtension <Thought_Hediff_Extension>()) { Thought_Hediff_Extension extension = this.def.GetModExtension <Thought_Hediff_Extension>(); if (extension.hediffToAffect != null) { BodyPartRecord part = this.pawn.RaceProps.body.GetPartsWithDef(extension.partToAffect).FirstOrDefault(); //We check mod options for the toggle to deactivate chronic conditions if (VanillaCookingExpanded_Settings.allowConditions || ((extension.hediffToAffect.defName != "VCE_Cholesterol") && (extension.hediffToAffect.defName != "VCE_Diabetes") && (extension.hediffToAffect.defName != "VCE_HighBloodPressure"))) { this.pawn.health.AddHediff(extension.hediffToAffect, part); pawn.health.hediffSet.GetFirstHediffOfDef(extension.hediffToAffect, false).Severity += extension.percentage; } } if (extension.secondHediffToAffect != null) { BodyPartRecord part2 = this.pawn.RaceProps.body.GetPartsWithDef(extension.secondPartToAffect).FirstOrDefault(); //We check mod options for the toggle to deactivate chronic conditions if (VanillaCookingExpanded_Settings.allowConditions || ((extension.secondHediffToAffect.defName != "VCE_Cholesterol") && (extension.secondHediffToAffect.defName != "VCE_Diabetes") && (extension.secondHediffToAffect.defName != "VCE_HighBloodPressure"))) { this.pawn.health.AddHediff(extension.secondHediffToAffect, part2); pawn.health.hediffSet.GetFirstHediffOfDef(extension.secondHediffToAffect, false).Severity += extension.secondPercentage; } } if (extension.increaseJoy) { pawn.needs.joy.GainJoy(extension.extraJoy, JoyKindDefOf.Gluttonous); } } added = true; } return(base.MoodOffset()); }