// Token: 0x06004378 RID: 17272 RVA: 0x001E8A2C File Offset: 0x001E6E2C
        public override bool OnHediffAdded(Pawn pawn, Hediff hediff)
        {
            if (hediff is Hediff_Injury && !pawn.health.hediffSet.PartIsMissing(hediff.Part.parent) && !pawn.health.hediffSet.PartIsMissing(hediff.Part))
            {
                Hediff_Injury injury = hediff as Hediff_Injury;

                //float oldChance = injury.def.chanceToCauseNoPain;
                //injury.def.chanceToCauseNoPain = 70000f;

                injury.PostMake();
                injury.ageTicks = 70000000;

                //injury.def.chanceToCauseNoPain = oldChance;
            }
            else if (hediff is Hediff_MissingPart && !pawn.health.hediffSet.PartIsMissing(hediff.Part.parent))
            {
                Hediff_MissingPart missing = hediff as Hediff_MissingPart;
                //float oldChance = missing.def.chanceToCauseNoPain;
                //missing.def.chanceToCauseNoPain = 70000f;

                missing.PostMake();
                missing.ageTicks = 70000000;

                //missing.def.chanceToCauseNoPain = oldChance;
            }
            if (pawn.health.Downed && !pawn.health.InPainShock)
            {
                DamageInfo info = new DamageInfo(DamageDefOf.Rotting, 17f, 0f, 0f, null, pawn.health.hediffSet.GetBrain());
                pawn.Kill(info);
            }

            return(false);
        }
コード例 #2
0
        public void copyInjuries(Pawn sourcePawn)
        {
            if (this.def.race.body == sourcePawn.def.race.body)
            {
                for (int i = sourcePawn.health.hediffSet.hediffs.Count - 1; i >= 0; i--)
                {
                    Hediff hediff = sourcePawn.health.hediffSet.hediffs[i];

                    Hediff_Injury      injury  = hediff as Hediff_Injury;
                    Hediff_AddedPart   added   = hediff as Hediff_AddedPart;
                    Hediff_MissingPart missing = hediff as Hediff_MissingPart;
                    if (hediff is Hediff_Injury && injury != null && !health.WouldDieAfterAddingHediff(injury) && !health.hediffSet.PartIsMissing(injury.Part.parent) && !health.hediffSet.PartIsMissing(injury.Part))
                    {
                        //float oldChance = injury.def.chanceToCauseNoPain;
                        //injury.def.chanceToCauseNoPain = 70000f;

                        injury.Severity = injury.Severity * 0.5f;
                        injury.PostMake();
                        injury.ageTicks = 70000000;
                        health.AddHediff(injury, injury.Part);

                        //injury.def.chanceToCauseNoPain = oldChance;
                    }
                    else if (hediff is Hediff_MissingPart && missing != null && !health.hediffSet.PartIsMissing(missing.Part.parent) && !health.hediffSet.PartIsMissing(missing.Part))
                    {
                        bool foundMoving = false;
                        for (int i1 = 0; i1 < missing.Part.def.tags.Count; i1++)
                        {
                            if (missing.Part.def.tags[i1].defName.Contains("Moving"))
                            {
                                foundMoving = true;
                            }
                        }

                        if (!foundMoving)
                        {
                            health.AddHediff(missing.def, missing.Part);
                        }
                        else if (!sourcePawn.health.hediffSet.PartIsMissing(missing.Part.parent))
                        {
                            Hediff nHediff = HediffMaker.MakeHediff(HediffDefOf.Shredded, this, null);
                            nHediff.Severity = 3.7f;

                            //float oldChance = nHediff.def.chanceToCauseNoPain;
                            //nHediff.def.chanceToCauseNoPain = 70000f;

                            nHediff.PostMake();
                            nHediff.ageTicks = 70000000;
                            health.AddHediff(nHediff, missing.Part);

                            //nHediff.def.chanceToCauseNoPain = oldChance;
                        }
                    }
                    else if (hediff is Hediff_AddedPart && added != null && !health.hediffSet.PartIsMissing(added.Part.parent) && !health.hediffSet.PartIsMissing(added.Part))
                    {
                        health.AddHediff(added.def, added.Part);
                    }
                }
            }

            FixZombie();

            armorRating_Sharp = TryDrawOverallArmor(sourcePawn, StatDefOf.ArmorRating_Sharp);
            armorRating_Blunt = TryDrawOverallArmor(sourcePawn, StatDefOf.ArmorRating_Blunt);
            //armorRating_Heat = TryDrawOverallArmor(sourcePawn, StatDefOf.ArmorRating_Heat);
        }