// Token: 0x06000004 RID: 4 RVA: 0x00002458 File Offset: 0x00000658 internal static void ProximityHediffEffect(Thing thing, Pawn pawn) { if (pawn.RaceProps.IsMechanoid) { return; } var text = ProximityGet.GetProxHediff(thing.def) ?? ""; var proxHediffSev = ProximityGet.GetProxHediffSev(thing.def); var proxRange = ProximityGet.GetProxRange(thing.def); if (proxHediffSev == 0f || text == "" || !NearThingInRange(thing, pawn, proxRange)) { return; } var named = DefDatabase <HediffDef> .GetNamed(text, false); if (named == null || ProxImmuneTo(pawn, named)) { return; } var health = pawn.health; Hediff hediff; if (health == null) { hediff = null; } else { var hediffSet = health.hediffSet; hediff = hediffSet?.GetFirstHediffOfDef(named); } var hediff2 = hediff; if (hediff2 != null) { hediff2.Severity += proxHediffSev; return; } var hediff3 = HediffMaker.MakeHediff(named, pawn); hediff3.Severity = proxHediffSev; pawn.health.AddHediff(hediff3); }
// Token: 0x06000017 RID: 23 RVA: 0x000030FC File Offset: 0x000012FC public override void CompTick() { if (Find.TickManager.TicksGame <= ProxTick) { return; } ProximityStatReset(Pawn); if (Pawn.Map != null) { var list = GenRadial .RadialDistinctThingsAround(Pawn.Position, Pawn.Map, ProxGlobals.closeRange, true).ToList(); if (list.Count > 0) { foreach (var thing in list) { if (!ProxGlobals.IsNearThingValid(thing, Pawn) || !ProxGlobals.NearThingEffects(thing, Pawn)) { continue; } var proxRange = ProximityGet.GetProxRange(thing.def); if (!ProxGlobals.NearThingInRange(thing, Pawn, proxRange)) { continue; } ProxGlobals.ProximityHediffEffect(thing, Pawn); ProximityStatSet(thing, Pawn); } } if (ProxGlobals.UseTerrain) { var list2 = GenRadial.RadialCellsAround(Pawn.Position, ProxGlobals.closeRange, true).ToList(); if (list2.Count > 0) { for (var j = 0; j < list2.Count; j++) { var terrainDef = list2[j].InBounds(Pawn.Map) ? list2[j].GetTerrain(Pawn.Map) : null; if (terrainDef == null || !list2[j].InBounds(Pawn.Map) || !ProxGlobals.IsTerrainValid(terrainDef, Pawn) || !ProxGlobals.TerrainEffects(terrainDef, list2[j], Pawn)) { continue; } var tproxRange = ProximityGet.GetTProxRange(terrainDef); if (!ProxGlobals.TerrainInRange(terrainDef, list2[j], Pawn, tproxRange)) { continue; } ProxGlobals.ProximityTerrainHediffEffect(terrainDef, list2[j], Pawn); ProximityTStatSet(terrainDef, list2[j], Pawn); } } } } ProxTick = Find.TickManager.TicksGame + ProxGlobals.ExtendTicks(); }