public static bool Radiate(RadiatePlayerInRange __instance) { bool flag = GameModeUtils.HasRadiation() && (NoDamageConsoleCommand.main == null || !NoDamageConsoleCommand.main.GetNoDamageCheat()); PlayerDistanceTracker tracker = (PlayerDistanceTracker)AccessTools.Field(typeof(RadiatePlayerInRange), "tracker").GetValue(__instance); float distanceToPlayer = GetDistance(tracker); if (radiated = distanceToPlayer <= __instance.radiateRadius && flag && __instance.radiateRadius > 0f) { float num = Mathf.Clamp01(1f - distanceToPlayer / __instance.radiateRadius); float num2 = num; if (Inventory.main.equipment.GetCount(TechType.RadiationSuit) > 0) { num -= num2 * 0.5f; } if (Inventory.main.equipment.GetCount(TechType.RadiationHelmet) > 0) { num -= num2 * 0.23f * 2f; } if (Inventory.main.equipment.GetCount(TechType.RadiationGloves) > 0) { num -= num2 * 0.23f; } num = Mathf.Clamp01(num); Player.main.SetRadiationAmount(num); } else { Player.main.SetRadiationAmount(0f); } return(false); }
static bool Prefix(RadiatePlayerInRange __instance) { radiateRadius_tmp = __instance.radiateRadius; __instance.radiateRadius = -1f; return(true); }
private void Awake() { RadiationTrigger = new GameObject("RadiationTrigger"); RadiationTrigger.transform.SetParent(transform, false); playerDistanceTracker = RadiationTrigger.EnsureComponent <PlayerDistanceTracker>(); radiatePlayerInRange = RadiationTrigger.EnsureComponent <RadiatePlayerInRange>(); damagePlayerInRadius = RadiationTrigger.EnsureComponent <DamagePlayerInRadius>(); }
static void Postfix(RadiatePlayerInRange __instance) { __instance.radiateRadius = radiateRadius_tmp; var tracker = __instance.GetComponent <PlayerDistanceTracker>(); bool flag = GameModeUtils.HasRadiation() && (NoDamageConsoleCommand.main == null || !NoDamageConsoleCommand.main.GetNoDamageCheat()); float distanceToPlayer = tracker.distanceToPlayer; if (distanceToPlayer <= __instance.radiateRadius && flag && __instance.radiateRadius > 0f) { float num = Mathf.Clamp01(1f - distanceToPlayer / __instance.radiateRadius); float num2 = num; if (checkHelmet()) { num -= num2 * 0.23f * 2f; } if (checkSuit()) { num -= num2 * 0.5f; } if (checkGloves()) { num -= num2 * 0.23f; } num = Mathf.Clamp01(num); Player.main.SetRadiationAmount(num); } }