Example #1
0
 public ReferencingTeamEventArgs(AdvancedTeam teams, Respawning.SpawnableTeamType spawnableTeam, bool isAllowed = true, bool forceTeam = false)
 {
     Team      = teams;
     IsAllowed = isAllowed;
     ForceTeam = forceTeam;
     Spawning  = spawnableTeam;
 }
Example #2
0
        public void RefNextTeamSpawn(Respawning.SpawnableTeamType spawnableTeamType)
        {
            Log.Debug("Getting Team Referances", MainPlugin.Singleton.Config.Debug);
            var list = MainPlugin.Singleton.Config.Teams.Where(x => x.SpawnTypes.Contains(spawnableTeamType) && x.Active == true).ToList();
            var team = list[MainPlugin.Singleton.EventHandlers.random.Next(0, list.Count)];

            var handler = new Events.General.ReferencingTeamEventArgs(MainPlugin.Singleton.EventHandlers.chosenTeam)
            {
                Team = team
            };

            handler.StartInvoke();
        }
 public static void Postfix(ref Respawning.SpawnableTeamType __result)
 {
     try
     {
         if (!MainPlugin.Singleton.EventHandlers.HasReference)
         {
             MainPlugin.Singleton.TmMethods.RefNextTeamSpawn();
         }
     }
     catch (Exception e)
     {
         Log.Error(e);
     }
 }
 public static void Postfix(ref Respawning.SpawnableTeamType __result)
 {
     try
     {
         if (!Instance.EventHandlers.HasReference)
         {
             TeamMethods.RefNextTeamSpawn(__result);
         }
     }
     catch (Exception e)
     {
         Log.Error(e);
     }
 }
Example #5
0
        internal void InvokeTeamRespawn(ref List <Player> players, ref Respawning.SpawnableTeamType teamType, out bool allow)
        {
            var ev = new TeamRespawnEventArgs
            {
                Players = players,
                Team    = teamType
            };

            TeamRespawnEvent?.Invoke(ev);

            players  = ev.Players;
            teamType = ev.Team;
            allow    = ev.Allow;
        }
Example #6
0
        public static void RefNextTeamSpawn(Respawning.SpawnableTeamType spawnableTeamType)
        {
            Log.Debug("Getting Team Referances", Instance.Config.Debug);
            Log.Debug($"Spawning on side {spawnableTeamType}", Instance.Config.Debug);
            var list = Instance.Config.Teams.Where(x => x.SpawnTypes.Contains(spawnableTeamType) && x.Active == true).ToList();

            if (list.Count == 0)
            {
                Instance.EventHandlers.HasReference = true;
                return;
            }

            var team    = list[Rand.Next(0, list.Count)];
            var handler = new TeamEvents.ReferencingTeamEventArgs(team, spawnableTeamType);

            handler.StartInvoke();
        }
Example #7
0
        internal static void InvokeTeamRespawnEvent(ref List <Player> respawnList, ref Respawning.SpawnableTeamType team)
        {
            if (TeamRespawnEvent == null)
            {
                return;
            }

            var ev = new TeamRespawnEvent
            {
                RespawnList = respawnList,
                Team        = team
            };

            TeamRespawnEvent.Invoke(ev);

            team        = ev.Team;
            respawnList = ev.RespawnList;
        }
        public void OnRespawning(RespawningTeamEventArgs ev)
        {
            // Need this, because ev.Players isn't working for methods
            List <Player> tempPlayers = new List <Player>();

            foreach (Player i in ev.Players)
            {
                if (i.IsOverwatchEnabled == false)
                {
                    tempPlayers.Add(i);
                }
            }

            if (ForcedTeam && HasReference)
            {
                ForcedTeam = false;

                ev.NextKnownTeam = chosenTeam.SpawnTypes.FirstOrDefault();

                if (MainPlugin.assemblyUIU)
                {
                    if (Methods.IsUIU())
                    {
                        Methods.SpawneableUIUToFalse();
                    }
                }

                if (MainPlugin.assemblySerpentHands)
                {
                    if (Methods.IsSerpentHand())
                    {
                        Methods.SpawneableSerpentToFalse();
                    }
                }
            }

            if (MainPlugin.assemblyUIU == true)
            {
                if (Methods.IsUIU())
                {
                    MainPlugin.Singleton.TmMethods.RemoveTeamReference();
                    coroutineHandle.Add(Timing.CallDelayed(0.2f, () =>
                    {
                        TeamConvert.SetPlayerTeamName(tempPlayers, "uiu");
                    }));

                    return;
                }
            }

            if (MainPlugin.assemblySerpentHands == true)
            {
                if (Methods.IsSerpentHand())
                {
                    MainPlugin.Singleton.TmMethods.RemoveTeamReference();
                    coroutineHandle.Add(Timing.CallDelayed(0.2f, () =>
                    {
                        TeamConvert.SetPlayerTeamName(tempPlayers, "serpentshand");
                    }));

                    return;
                }
            }

            if (!HasReference)
            {
                MainPlugin.Singleton.TmMethods.RefNextTeamSpawn(ev.NextKnownTeam);
                Log.Debug("Possible admin spawn due to No Team Reference yet", this.plugin.Config.Debug);
            }

            spawnableTeamType = ev.NextKnownTeam;

            if (ev.NextKnownTeam == Respawning.SpawnableTeamType.NineTailedFox)
            {
                respawns++;
            }

            if (chosenTeam != null)
            {
                Log.Debug("Spawned " + chosenTeam.Name, this.plugin.Config.Debug);

                coroutineHandle.Add(Timing.CallDelayed(0.2f, () => MainPlugin.Singleton.TmMethods.ChangePlysToTeam(tempPlayers, chosenTeam)));

                if (random.Next(0, 100) <= chosenTeam.CassieMessageChaosAnnounceChance && ev.NextKnownTeam == Respawning.SpawnableTeamType.ChaosInsurgency)
                {
                    Cassie.DelayedGlitchyMessage(chosenTeam.CassieMessageChaosMessage, 0, 0.25f, 0.25f);
                }
            }

            MainPlugin.Singleton.TmMethods.RemoveTeamReference();
        }
Example #9
0
        public void OnRespawning(RespawningTeamEventArgs ev)
        {
            if (ev.IsAllowed == false)
            {
                return;
            }

            // Need this, because ev.Players isn't working for methods
            List <Player> tempPlayers = new List <Player>(ev.Players);

            if (teamedPlayers.Count == 0)
            {
                TeamMethods.RemoveTeamReference();
                return;
            }

            if (ForcedTeam && HasReference)
            {
                ForcedTeam = false;

                ev.NextKnownTeam = chosenTeam.SpawnTypes.FirstOrDefault();

                if (assemblyUIU)
                {
                    if (Methods.IsUIU())
                    {
                        Methods.SpawneableUIUToFalse();
                    }
                }

                if (assemblySerpentHands)
                {
                    if (Methods.IsSerpentHand())
                    {
                        Methods.SpawneableSerpentToFalse();
                    }
                }
            }

            if (ev.NextKnownTeam == Respawning.SpawnableTeamType.NineTailedFox)
            {
                respawns++;
            }

            if (assemblyUIU)
            {
                if (Methods.IsUIU())
                {
                    if (plugin.Config.DominantPlugin)
                    {
                        Methods.SpawneableUIUToFalse();
                    }
                    else
                    {
                        TeamMethods.RemoveTeamReference();
                        coroutineHandle.Add(Timing.CallDelayed(0.2f, () =>
                        {
                            Extensions.SetAdvancedTeam(tempPlayers, Methods.UiUTeam);
                        }));
                        return;
                    }
                }
            }

            if (assemblySerpentHands == true)
            {
                if (Methods.IsSerpentHand())
                {
                    if (plugin.Config.DominantPlugin)
                    {
                        Methods.SpawneableSerpentToFalse();
                    }
                    else
                    {
                        TeamMethods.RemoveTeamReference();
                        coroutineHandle.Add(Timing.CallDelayed(0.2f, () =>
                        {
                            Extensions.SetAdvancedTeam(tempPlayers, Methods.SerpentHandsTeam);
                        }));
                        return;
                    }
                }
            }

            if (!HasReference)
            {
                TeamMethods.RefNextTeamSpawn(ev.NextKnownTeam);
                Log.Debug("Possible admin spawn due to No Team Reference yet", this.plugin.Config.Debug);
            }

            latestSpawn       = chosenTeam;
            spawnableTeamType = ev.NextKnownTeam;
            if (chosenTeam != null)
            {
                Log.Debug("Spawned " + chosenTeam.Name, this.plugin.Config.Debug);

                coroutineHandle.Add(Timing.CallDelayed(0.01f, () => TeamMethods.ChangePlysToTeam(tempPlayers, chosenTeam)));

                if (Rand.Next(0, 100) <= chosenTeam.CassieMessageChaosAnnounceChance && ev.NextKnownTeam == Respawning.SpawnableTeamType.ChaosInsurgency)
                {
                    Cassie.DelayedGlitchyMessage(chosenTeam.CassieMessageChaosMessage, 0, 0.25f, 0.25f);
                }
            }

            TeamMethods.RemoveTeamReference();
        }
Example #10
0
 public NPCTeamRespawnEvent(Npc npc, Player p, Respawning.SpawnableTeamType team) : base(npc, p)
 {
     Team = team;
 }
Example #11
0
        public void CheckForEvent(string EventName, bool HasPlayerParam, bool HasExtraParam, Player player = null, DamageTypes.DamageType cause = null, int NumberOfRespawns = 0, string killerName = null, Respawning.SpawnableTeamType spawnableTeam = Respawning.SpawnableTeamType.None, string reason = null)
        {
            var config = CommsHackEvents.Instance.Config;

            if (eventsS.ContainsKey(EventName))
            {
                AudioAPI.API.PlayFile(eventsS[EventName], CommsHackEvents.Instance.Config.Volume);
            }
            if (eventsBc.ContainsKey(EventName))
            {
                if (HasPlayerParam)
                {
                    if (HasExtraParam)
                    {
                        Map.Broadcast(config.Duration, FilterString(eventsBc[EventName], player, cause, NumberOfRespawns, killerName, spawnableTeam, reason));
                    }
                    Map.Broadcast(config.Duration, FilterString(eventsBc[EventName], player));
                }
            }
            if (eventsC.ContainsKey(EventName))
            {
                if (HasExtraParam)
                {
                    Cassie.Message(FilterString(eventsC[EventName], player, cause, NumberOfRespawns, killerName, spawnableTeam, reason));
                }
                Cassie.Message(FilterString(eventsC[EventName], player));
            }
            if (eventsF.ContainsKey(EventName))
            {
                Map.Broadcast(5, "Please contact a server admin: CommsHackEvents functions is not supported yet.");
            }
        }
Example #12
0
        public string FilterString(string toFilter, Player player, DamageTypes.DamageType cause = null, int NumberOfRespawns = 0, string killerName = null, Respawning.SpawnableTeamType spawnableTeam = Respawning.SpawnableTeamType.None, string reason = null)
        {
            var filteredString = toFilter;

            Dictionary <string, string> filterablesReturns = new Dictionary <string, string>()
            {
                { "%playerName", player.Nickname },
                { "%playerDisplayNickname", player.DisplayNickname },
                { "%playerRank", player.RankName },
                { "%playerRankColor", player.RankColor },
                { "%playerRole", player.Role.ToString() },
                { "%playerSide", player.Side.ToString() },
                { "%serverName", Server.Name },
                { "%playerListTitle", PlayerList.Title.ToString() },
                { "%team", spawnableTeam.ToString() },
                { "%reason", reason },
                { "%attacker", killerName },
                { "%numberOfSpawns", NumberOfRespawns.ToString() },
                { "%cause", cause.ToString() },
                { "%player", " " }
            };

            foreach (string key in filterablesReturns.Keys)
            {
                filteredString.Replace(key, filterablesReturns[key]);
            }

            return(filteredString);
        }
Example #13
0
 public static void Postfix(ref Respawning.SpawnableTeamType __result)
 {
     SerpentsHand.instance.EventHandlers.CalculateChance();
 }