private void ApplyMutagenicBuildup(Pawn curOccupant) { HediffDef hediffDef = MorphTransformationDefOf.MutagenicBuildup; var hediff = curOccupant.health.hediffSet.GetFirstHediffOfDef(hediffDef); if (hediff == null) { hediff = HediffMaker.MakeHediff(hediffDef, curOccupant); hediff.Severity = _initialSeverity; curOccupant.health.AddHediff(hediff); return; } if (hediff.Severity > MAX_SEVERITY) { return; } float sevOffset = GetSeverityOffset(curOccupant); if (sevOffset < EPSILON) { return; } MutationUtilities.AdjustMutagenicBuildup(curOccupant, sevOffset); }
private void DoPawnsMutagenicDamage(Map map) { List <Pawn> allPawnsSpawned = map.mapPawns.AllPawnsSpawned; var mutagen = MutagenDefOf.defaultMutagen; for (int i = 0; i < allPawnsSpawned.Count; i++) { Pawn pawn = allPawnsSpawned[i]; if (!pawn.Position.Roofed(map) && mutagen.CanInfect(pawn)) { float num = 0.028758334f; num *= pawn.GetMutagenicBuildupMultiplier(); if (num != 0f) { float num2 = Mathf.Lerp(0.85f, 1.15f, Rand.ValueSeeded(pawn.thingIDNumber ^ 0x46EDC5D)); //should be ok num *= num2; //what's the magic number? MutationUtilities.AdjustMutagenicBuildup(pawn, num); } } } }