public ReferencingTeamEventArgs(AdvancedTeam teams, Respawning.SpawnableTeamType spawnableTeam, bool isAllowed = true, bool forceTeam = false) { Team = teams; IsAllowed = isAllowed; ForceTeam = forceTeam; Spawning = spawnableTeam; }
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); } }
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; }
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(); }
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(); }
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(); }
public NPCTeamRespawnEvent(Npc npc, Player p, Respawning.SpawnableTeamType team) : base(npc, p) { Team = team; }
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."); } }
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); }
public static void Postfix(ref Respawning.SpawnableTeamType __result) { SerpentsHand.instance.EventHandlers.CalculateChance(); }