public void AddHediff(Hediff hediff, BodyPartRecord part = null, DamageInfo?dinfo = default(DamageInfo?), DamageWorker.DamageResult result = null) { if (part != null) { hediff.Part = part; } hediffSet.AddDirect(hediff, dinfo, result); CheckForStateChange(dinfo, hediff); if (pawn.RaceProps.hediffGiverSets != null) { for (int i = 0; i < pawn.RaceProps.hediffGiverSets.Count; i++) { HediffGiverSetDef hediffGiverSetDef = pawn.RaceProps.hediffGiverSets[i]; for (int j = 0; j < hediffGiverSetDef.hediffGivers.Count; j++) { hediffGiverSetDef.hediffGivers[j].OnHediffAdded(pawn, hediff); } } } }