コード例 #1
0
        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);
        }
コード例 #3
0
        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);
            }
        }