// make zombies die if necessary ============================================================ // public static bool ShouldDie(this JobDriver_Stumble driver, Zombie zombie) { if (zombie.Dead || zombie.Spawned == false) { driver.EndJobWith(JobCondition.InterruptForced); return(true); } if (zombie.state == ZombieState.ShouldDie) { driver.EndJobWith(JobCondition.InterruptForced); zombie.Kill(null); return(true); } if (zombie.IsSuicideBomber) { if (zombie.bombWillGoOff && zombie.EveryNTick(NthTick.Every10)) { zombie.bombTickingInterval -= 2f; } if (zombie.bombTickingInterval <= 0f) { zombie.Kill(null); return(true); } } if (zombie.EveryNTick(NthTick.Every10)) { if (ZombieSettings.Values.zombiesDieVeryEasily) { if (zombie.hasTankySuit <= 0f && zombie.health.hediffSet.GetHediffs <Hediff_Injury>().Any()) { zombie.Kill(null); return(true); } } else { var hediffs = zombie.health.hediffSet.hediffs .Where(hediff => hediff.def == HediffDefOf.WoundInfection) .ToArray(); foreach (var hediff in hediffs) { zombie.health.RemoveHediff(hediff); } } } return(false); }