private void OnTriggerEnter(Collider other) { if (!enter && IsPlayerCollided(other)) { Debug.Log($"entered({GetInstanceID()})"); if (IsAuroraLeaking() && !Main.isAuroraRadiationBypassed) { LeakingRadiation.main.radiatePlayerInRange.CancelInvoke(); Main.isAuroraRadiationBypassed = true; } bool flag = GameModeUtils.HasRadiation() && (NoDamageConsoleCommand.main == null || !NoDamageConsoleCommand.main.GetNoDamageCheat()); if (flag) { InvokeRepeating("RadiateUranuim", 0f, 0.2f); InvokeRepeating("DoDamage", 0f, updateInterval); } Main.isPlayerInRadiationZone = true; enter = true; exit = false; } }
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 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); } }
public static bool GetRadiationActive() { // If LeakingRadiation isn't null, ship has exploded and radiation is enabled return(LeakingRadiation.main != null && CrashedShipExploder.main.IsExploded() && GameModeUtils.HasRadiation() && LeakingRadiation.main.currentRadius > 1); }