示例#1
0
        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);
                    }
                }
            }
        }