// Function from file: _disease.dm public void spread(dynamic source = null, int?force_spread = null) { force_spread = force_spread ?? 0; int?spread_range = null; Mob_Living_Carbon C = null; if (((this.spread_flags & 1) != 0 || (this.spread_flags & 2) != 0 || (this.spread_flags & 4) != 0) && !Lang13.Bool(force_spread)) { return; } if (Lang13.Bool(this.affected_mob)) { if (Lang13.Bool(((Reagents)this.affected_mob.reagents).has_reagent("spaceacillin")) || this.affected_mob.satiety > 0 && Rand13.PercentChance(((int)(this.affected_mob.satiety / 10)))) { return; } } spread_range = 1; if (Lang13.Bool(force_spread)) { spread_range = force_spread; } if ((this.spread_flags & 64) != 0) { spread_range++; } if (!Lang13.Bool(source)) { if (Lang13.Bool(this.affected_mob)) { source = this.affected_mob; } else { return; } } if (source.loc is Tile) { foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInViewExcludeThis(source, spread_range), typeof(Mob_Living_Carbon))) { C = _a; if (C.loc is Tile) { if (Lang13.Bool(GlobalFuncs.AStar(source, C.loc, typeof(Tile).GetMethod("Distance"), spread_range, null, null, ((this.spread_flags & 64) != 0 ? typeof(Tile).GetMethod("reachableAdjacentAtmosTurfs") : typeof(Tile).GetMethod("reachableAdjacentTurfs"))))) { C.ContractDisease(this); } } } } return; }