示例#1
0
 public void DoDamageToPawn(Pawn pawn)
 {
     if (!pawn.RaceProps.IsMechanoid)
     {
         var damageInfo = new DamageInfo(DamageDefOf.Scratch, 1, 0f, -1f, this, null, null);
         pawn.TakeDamage(damageInfo);
         var hediff = HediffMaker.MakeHediff(PurpleIvyDefOf.PoisonousPurpleHediff,
                                             pawn, null);
         hediff.Severity = 0.1f;
         (pawn).health.AddHediff(hediff, null, null, null);
         var hediff2 = HediffMaker.MakeHediff(PurpleIvyDefOf.HarmfulBacteriaHediff,
                                              pawn, null);
         hediff2.Severity = 0.1f;
         pawn.health.AddHediff(hediff2, null, null, null);
         if (Rand.Chance(0.1f) && pawn.health.hediffSet.GetFirstHediffOfDef(PurpleIvyDefOf.PI_AlienMutation) == null)
         {
             var hediff3 = HediffMaker.MakeHediff(PurpleIvyDefOf.PI_AlienMutation, pawn, null);
             pawn.health.AddHediff(hediff3, null, null, null);
         }
         if (Rand.Chance(0.1f))
         {
             PurpleIvyUtils.MakeFlee(pawn, this);
         }
     }
 }
示例#2
0
 public override void Tick()
 {
     base.Tick();
     if (this.activeDamage && Find.TickManager.TicksGame % Rand.RangeInclusive(40, 80) == 0)
     {
         try
         {
             List <Pawn> pawnsToDamage = new List <Pawn>();
             if (GenGrid.InBounds(this.Position, this.Map))
             {
                 foreach (var t in this.Map.thingGrid.ThingsListAt(this.Position))
                 {
                     if (t is Pawn pawn && !pawn.Dead && pawn.Faction != PurpleIvyData.AlienFaction)
                     {
                         pawnsToDamage.Add(pawn);
                     }
                 }
             }
             foreach (var pawn in pawnsToDamage)
             {
                 pawn.TakeDamage(new DamageInfo(PurpleIvyDefOf.PI_ToxicBurn, 1f));
                 if (Rand.Chance(0.1f))
                 {
                     pawn.stances.stunner.StunFor(Rand.RangeInclusive(100, 200), null);
                 }
                 if (Rand.Chance(0.1f) && pawn.health.hediffSet.GetFirstHediffOfDef(PurpleIvyDefOf.PI_AlienMutation) == null)
                 {
                     var hediff3 = HediffMaker.MakeHediff(PurpleIvyDefOf.PI_AlienMutation, pawn, null);
                     pawn.health.AddHediff(hediff3, null, null, null);
                 }
                 PurpleIvyUtils.MakeFlee(pawn, this);
             }
         }
         catch { };
     }
 }