Beispiel #1
0
        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() });
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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();
        }
Beispiel #6
0
 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);
     }
 }
Beispiel #7
0
 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);
         }
     }
 }
Beispiel #8
0
        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();
                }
            }
        }
Beispiel #9
0
 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." });
 }
Beispiel #10
0
        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);
            }
        }