public string[] OnCall(ICommandSender sender, string[] args) { if (args.Length > 0) { string id = ""; Player cPlayer = SerpentsHand.GetPlayer(args[0], out cPlayer); if (cPlayer != null) { id = cPlayer.SteamId; } else if (ulong.TryParse(args[0], out ulong a)) { id = a.ToString(); } else { return(new string[] { "Error: invalid player id." }); } Player tPlayer = SerpentsHand.FindPlayer(id); if (tPlayer != null) { SerpentsHand.SpawnPlayer(tPlayer); return(new string[] { "Spawned player \"" + tPlayer.Name + "\" as Serpent's Hand." }); } } return(new string[] { GetUsage() }); }
public void OnCheckRoundEnd(CheckRoundEndEvent ev) { bool MTFAlive = (SerpentsHand.CountRoles(Team.NINETAILFOX) > 0) ? true : false; bool CiAlive = (SerpentsHand.CountRoles(Team.CHAOS_INSURGENCY) > 0) ? true : false; bool ScpAlive = (SerpentsHand.CountRoles(Team.SCP) > 0) ? true : false; bool DClassAlive = (SerpentsHand.CountRoles(Team.CLASSD) > 0) ? true : false; bool ScientistsAlive = (SerpentsHand.CountRoles(Team.SCIENTISTS) > 0) ? true : false; bool SHAlive = (SerpentsHand.shPlayers.Count > 0) ? true : false; if (MTFAlive && (CiAlive || ScpAlive || DClassAlive || SHAlive)) { ev.Status = ROUND_END_STATUS.ON_GOING; } else if (CiAlive && (MTFAlive || (DClassAlive && ScpAlive) || ScientistsAlive || SHAlive || DClassAlive)) { ev.Status = ROUND_END_STATUS.ON_GOING; } else if (ScpAlive && (MTFAlive || DClassAlive || ScientistsAlive)) { ev.Status = ROUND_END_STATUS.ON_GOING; } else if (SHAlive && ScpAlive && !MTFAlive && !CiAlive && !DClassAlive && !ScientistsAlive) { ev.Status = ROUND_END_STATUS.SCP_VICTORY; } else if (CiAlive && ScpAlive && !plugin.GetConfigBool("sh_ci_win_with_scp")) { ev.Status = ROUND_END_STATUS.ON_GOING; } }
public override void OnDisabled() { ServerEvent.RoundStarted -= EventHandlers.OnRoundStart; ServerEvent.RespawningTeam -= EventHandlers.OnTeamRespawn; PlayerEvent.EnteringPocketDimension -= EventHandlers.OnPocketDimensionEnter; PlayerEvent.FailingEscapePocketDimension -= EventHandlers.OnPocketDimensionDie; PlayerEvent.EscapingPocketDimension -= EventHandlers.OnPocketDimensionExit; PlayerEvent.Dying -= EventHandlers.OnPlayerDying; PlayerEvent.Hurting -= EventHandlers.OnPlayerHurt; ServerEvent.EndingRound -= EventHandlers.OnCheckRoundEnd; PlayerEvent.ChangingRole -= EventHandlers.OnSetRole; PlayerEvent.Left -= EventHandlers.OnDisconnect; Scp106Event.Containing -= EventHandlers.OnContain106; ServerEvent.SendingRemoteAdminCommand -= EventHandlers.OnRACommand; PlayerEvent.InsertingGeneratorTablet -= EventHandlers.OnGeneratorInsert; PlayerEvent.EnteringFemurBreaker -= EventHandlers.OnFemurEnter; PlayerEvent.Died -= EventHandlers.OnPlayerDeath; PlayerEvent.Shooting -= EventHandlers.OnShoot; hInstance.UnpatchAll(); EventHandlers = null; instance = null; base.OnDisabled(); }
public override void OnEnabled() { hInstance = new Harmony($"cyanox.serpentshand-{DateTime.Now.Ticks}"); hInstance.PatchAll(); instance = this; EventHandlers = new EventHandlers(); Check035(); ServerEvent.RoundStarted += EventHandlers.OnRoundStart; ServerEvent.RespawningTeam += EventHandlers.OnTeamRespawn; PlayerEvent.EnteringPocketDimension += EventHandlers.OnPocketDimensionEnter; PlayerEvent.FailingEscapePocketDimension += EventHandlers.OnPocketDimensionDie; PlayerEvent.EscapingPocketDimension += EventHandlers.OnPocketDimensionExit; PlayerEvent.Dying += EventHandlers.OnPlayerDying; PlayerEvent.Hurting += EventHandlers.OnPlayerHurt; ServerEvent.EndingRound += EventHandlers.OnCheckRoundEnd; PlayerEvent.ChangingRole += EventHandlers.OnSetRole; PlayerEvent.Left += EventHandlers.OnDisconnect; Scp106Event.Containing += EventHandlers.OnContain106; ServerEvent.SendingRemoteAdminCommand += EventHandlers.OnRACommand; PlayerEvent.InsertingGeneratorTablet += EventHandlers.OnGeneratorInsert; PlayerEvent.EnteringFemurBreaker += EventHandlers.OnFemurEnter; PlayerEvent.Died += EventHandlers.OnPlayerDeath; PlayerEvent.Shooting += EventHandlers.OnShoot; base.OnEnabled(); }
public override void OnEnabled() { Singleton = this; harmony = new Harmony($"marco15453.serpentshand-{DateTime.Now.Ticks}"); harmony.PatchAll(); RegisterEvents(); base.OnEnabled(); }
public void OnPocketDimensionExit(PlayerPocketDimensionExitEvent ev) { if (SerpentsHand.shPlayers.Contains(ev.Player.SteamId)) { if (plugin.GetConfigBool("sh_teleport_to_106")) { SerpentsHand.TeleportTo106(ev.Player); } SerpentsHand.shPlayersInPocket.Remove(ev.Player.SteamId); } }
public void OnPocketDimensionDie(PlayerPocketDimensionDieEvent ev) { if (SerpentsHand.shPlayers.Contains(ev.Player.SteamId)) { if (!plugin.GetConfigBool("sh_friendly_fire")) { ev.Die = false; } if (plugin.GetConfigBool("sh_teleport_to_106")) { SerpentsHand.TeleportTo106(ev.Player); } } }
public void OnPlayerDie(PlayerDeathEvent ev) { if (SerpentsHand.shPlayers.Contains(ev.Player.SteamId)) { SerpentsHand.shPlayers.Remove(ev.Player.SteamId); } if (ev.Player.TeamRole.Role == Role.SCP_106 && !plugin.GetConfigBool("sh_friendly_fire")) { foreach (string str in SerpentsHand.shPlayersInPocket) { SerpentsHand.FindPlayer(str).Kill(); } } }
public string[] OnCall(ICommandSender sender, string[] args) { if (args.Length > 0) { if (Int32.TryParse(args[0], out int a)) { SerpentsHand.SpawnSquad(a); } else { return(new string[] { "Error: invalid size." }); } } else { SerpentsHand.SpawnSquad(5); } plugin.pluginManager.Server.Map.AnnounceCustomMessage(plugin.GetConfigString("sh_entry_announcement")); return(new string[] { "Spawned squad." }); }
public SpawnDelay(Plugin plugin, List <Player> Playerlist, int delay) { Thread.Sleep(delay); List <Player> SHPlayers = new List <Player>(); List <Player> CIPlayers = Playerlist; for (int i = 1; i <= plugin.GetConfigInt("sh_max_squad"); i++) { Player player = CIPlayers[rand.Next(CIPlayers.Count)]; SHPlayers.Add(player); CIPlayers.Remove(player); } foreach (Player player in SHPlayers) { SerpentsHand.SpawnPlayer(player); } foreach (Player player in CIPlayers) { player.ChangeRole(Role.SPECTATOR); } }