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); } }
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); } } } }