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); } } }
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 { }; } }