示例#1
0
        private static bool OnActivator(Recontainer079 __instance)
        {
            try
            {
                if (__instance._delayStopwatch.Elapsed.TotalSeconds > __instance._activationDelay)
                {
                    if (!__instance._delayStopwatch.IsRunning)
                    {
                        return(false);
                    }

                    Server.Get.Events.Scp.Scp079.Invoke079RecontainEvent(Recontain079Status.Start, out var allow);

                    if (!allow)
                    {
                        __instance._alreadyRecontained = false;
                        __instance._delayStopwatch.Stop();
                        __instance._delayStopwatch.Reset();
                        return(false);
                    }

                    __instance.BeginOvercharge();
                    __instance._delayStopwatch.Stop();
                    __instance._unlockStopwatch.Start();
                    return(false);
                }
                else
                {
                    if (!__instance._activatorGlass.isBroken)
                    {
                        return(false);
                    }

                    __instance._activatorButton.transform.localPosition = Vector3.Lerp(__instance._activatorButton.transform.localPosition, __instance._activatorPos, __instance._activatorLerpSpeed * Time.deltaTime);

                    if (__instance._alreadyRecontained)
                    {
                        return(false);
                    }

                    if (__instance.CassieBusy)
                    {
                        return(false);
                    }

                    Server.Get.Events.Scp.Scp079.Invoke079RecontainEvent(Recontain079Status.Initialize, out var allow);
                    if (!allow)
                    {
                        return(false);
                    }

                    __instance.Recontain();
                    return(false);
                }
            }
            catch (Exception e)
            {
                Synapse.Api.Logger.Get.Error($"Synapse-Event: Scp079RecontainEvent Activator failed!!\n{e}");
                return(true);
            }
        }
示例#2
0
        private IEnumerator <float> VoiceLines(Player player)
        {
            bool blood = Config.SpawnBlood;

            player.ShowHint(Translation.IHaveTo);

            yield return(Timing.WaitForSeconds(5f));

            if (Config.DropItems)
            {
                player.DropItems();
            }

            foreach (EffectType effectType in Config.DyingEffects)
            {
                player.EnableEffect(effectType, 15f, false);
            }

            if (Random.Range(0, 2) == 0)
            {
                player.ShowHint(Translation.IDontThink);
            }

            else
            {
                player.ShowHint(Translation.IMust);
            }

            if (blood)
            {
                player.ReferenceHub.characterClassManager.RpcPlaceBlood(player.Position, 0, 1f);
            }



            yield return(Timing.WaitForSeconds(5f));

            if (Random.Range(0, 2) == 0)
            {
                player.ShowHint(Translation.NoChoice);
            }

            else
            {
                player.ShowHint(Translation.NoSense);
            }

            if (blood)
            {
                player.ReferenceHub.characterClassManager.RpcPlaceBlood(player.Position, 0, 2f);
            }



            yield return(Timing.WaitForSeconds(5f));

            if (Random.Range(0, 2) == 0)
            {
                player.ShowHint(Translation.IsImpossible);
            }

            else
            {
                player.ShowHint(Translation.CantBeCompleted);
            }

            if (blood)
            {
                player.ReferenceHub.characterClassManager.RpcPlaceBlood(player.Position, 0, 3f);
            }



            yield return(Timing.WaitForSeconds(5f));

            PlayersInteracting.Remove(player);

            if (Vector3.Distance(Scp012Item.Networkposition, player.Position) < 7.5f)
            {
                if (blood)
                {
                    player.ReferenceHub.characterClassManager.RpcPlaceBlood(player.Position, 0, 5f);
                }

                if (!Config.DropItems)
                {
                    player.ClearInventory();
                }

                if (player.IsScp)
                {
                    scp012death = true;
                    Log.Debug($"Bool is {scp012death} (before killing)", Config.Debug);
                }

                player.Kill(DamageTypes.Bleeding);

                var scps = Player.Get(Team.SCP);
                if (scps.Count(scp => scp.Role == RoleType.Scp079) > 0 && scps.Count() == 1)
                {
                    Recontainer079.BeginContainment(true);
                }

                scp012death = false;
                Log.Debug($"Bool is {scp012death} (after killing)", Config.Debug);
            }


            if (Config.RagdollCleanupDelay > 0)
            {
                yield return(Timing.WaitForSeconds(Config.RagdollCleanupDelay));

                foreach (Ragdoll ragdoll in Object.FindObjectsOfType <Ragdoll>())
                {
                    if (Vector3.Distance(ragdoll.transform.position, Scp012Item.transform.position) < 5f)
                    {
                        NetworkServer.Destroy(ragdoll.gameObject);
                    }
                }
            }
        }