public static void ChangedSetting(ValueTuple <Players.Player, JSONNode, string> data) { if (data.Item1.ActiveColony != null) { switch (data.Item3) { case "server_popup": var cs = ColonyState.GetColonyState(data.Item1.ActiveColony); var maxToggleTimes = SettlersConfiguration.GetorDefault("MaxSettlersToggle", 4); if (cs != null) { if (!SettlersConfiguration.GetorDefault("SettlersEnabled", true)) { PandaChat.Send(data.Item1, _localizationHelper, "AdminDisabledSettlers", ChatColor.red); } else if (!HasToggeledMaxTimes(maxToggleTimes, cs, data.Item1)) { var def = (int)cs.SettlersEnabled; var enabled = data.Item2.GetAsOrDefault(_Setters, def); if (def != enabled) { TurnSettlersOn(data.Item1, cs, maxToggleTimes, (SettlersState)enabled); PandaChat.Send(data.Item1, _localizationHelper, "SettlersState", ChatColor.green, cs.SettlersEnabled.ToString()); } } } break; } } }
public static bool ChangeDifficulty(Players.Player player, ColonyState state, string difficulty) { if (SettlersConfiguration.DifficutlyCanBeChanged) { if (!GameDifficulty.GameDifficulties.ContainsKey(difficulty)) { UnknownCommand(player, difficulty); return(true); } var newDiff = GameDifficulty.GameDifficulties[difficulty]; if (newDiff.Rank >= SettlersConfiguration.MinDifficulty.Rank) { state.Difficulty = newDiff; SettlerManager.UpdateFoodUse(state); state.Difficulty.Print(player); PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green, state.Difficulty.Name); NetworkUI.NetworkMenuManager.SendColonySettingsUI(player); return(true); } NetworkUI.NetworkMenuManager.SendColonySettingsUI(player); PandaChat.Send(player, "The server administrator had disabled setting your difficulty below {0}.", ChatColor.green, SettlersConfiguration.MinDifficulty.Name); } return(true); }
public bool TryDoCommand(Players.Player player, string chat) { var array = CommandManager.SplitCommand(chat); var gitVer = VersionChecker.GetGitVerion(); var versionCompare = GameLoader.MOD_VER.Major.CompareTo(gitVer.Major); PandaChat.Send(player, "Settlers! Mod version: {0}.", ChatColor.green, GameLoader.MOD_VER.ToString()); PandaChat.Send(player, "Settlers! Git version: {0}.", ChatColor.green, gitVer.ToString()); if (versionCompare < 0) { if (!VersionChecker.NewVer) { PandaChat.Send(player, "Settlers! version is out of date. The mod will automatically update now.", ChatColor.red); VersionChecker.WriteVersionsToConsole(); } else { PandaChat.Send(player, "Settlers! Has been updated. Restart the server/game to apply.", ChatColor.red); } } return(true); }
public static void ChangedSetting(TupleStruct <Players.Player, JSONNode, string> data) { switch (data.item3) { case "world_settings": var ps = PlayerState.GetPlayerState(data.item1); var maxToggleTimes = Configuration.GetorDefault("MaxSettlersToggle", 4); if (ps != null && data.item2.GetAsOrDefault(_Setters, Convert.ToInt32(ps.SettlersEnabled)) != Convert.ToInt32(ps.SettlersEnabled)) { if (!Configuration.GetorDefault("SettlersEnabled", true)) { PandaChat.Send(data.item1, "The server administrator had disabled the changing of Settlers.", ChatColor.red); } else if (!HasToggeledMaxTimes(maxToggleTimes, ps, data.item1)) { TurnSettlersOn(data.item1, ps, maxToggleTimes, data.item2.GetAsOrDefault(_Setters, Convert.ToInt32(ps.SettlersEnabled)) != 0); } PandaChat.Send(data.item1, "Settlers! Mod Settlers are now " + (ps.SettlersEnabled ? "on" : "off"), ChatColor.green); } break; } }
private static bool HasToggeledMaxTimes(int maxToggleTimes, ColonyState state, Players.Player player) { if (state.SettlersToggledTimes >= maxToggleTimes) { PandaChat.Send(player, _localizationHelper, "AbuseWarning", ChatColor.red, maxToggleTimes.ToString()); return(true); } return(false); }
private static bool HasToggeledMaxTimes(int maxToggleTimes, PlayerState state, Players.Player player) { if (state.SettlersToggledTimes >= maxToggleTimes) { PandaChat.Send(player, $"To limit abuse of the /settlers command you can no longer toggle settlers on or off. You have used your alloted {maxToggleTimes} times.", ChatColor.red); return(true); } return(false); }
public static void PossibleCommands(Players.Player player, ChatColor color) { PandaChat.Send(player, "Current Difficulty: " + PlayerState.GetPlayerState(player).Difficulty.Name, color); PandaChat.Send(player, "Possible commands:", color); var diffs = string.Empty; foreach (var diff in GameDifficulty.GameDifficulties) { diffs += diff.Key + " | "; } PandaChat.Send(player, "/difficulty " + diffs.Substring(0, diffs.Length - 2), color); }
public bool TryDoCommand(Players.Player player, string chat, List <string> split) { if (!chat.StartsWith("/settlers", StringComparison.OrdinalIgnoreCase)) { return(false); } if (player == null || player.ID == NetworkID.Server || player.ActiveColony == null) { return(true); } var array = new List <string>(); CommandManager.SplitCommand(chat, array); var state = ColonyState.GetColonyState(player.ActiveColony); var maxToggleTimes = SettlersConfiguration.GetorDefault("MaxSettlersToggle", 4); if (maxToggleTimes == 0 && !SettlersConfiguration.GetorDefault("SettlersEnabled", true)) { PandaChat.Send(player, _localizationHelper, "AdminDisabledSettlers.", ChatColor.red); return(true); } if (HasToggeledMaxTimes(maxToggleTimes, state, player)) { return(true); } if (array.Count == 1) { PandaChat.Send(player, _localizationHelper, "SettlersToggleTime", ChatColor.green, state.SettlersEnabled.ToString(), state.SettlersToggledTimes.ToString(), maxToggleTimes.ToString()); return(true); } if (array.Count == 2 && state.SettlersToggledTimes <= maxToggleTimes && Enum.TryParse <SettlersState>(array[1].ToLower().Trim(), out var settlersState)) { TurnSettlersOn(player, state, maxToggleTimes, settlersState); } return(true); }
private static void TurnSettlersOn(Players.Player player, PlayerState state, int maxToggleTimes, bool enabled) { if (!state.SettlersEnabled) { state.SettlersToggledTimes++; } state.SettlersEnabled = enabled; PandaChat.Send(player, $"Settlers! Mod Settlers are now on. You have toggled this {state.SettlersToggledTimes} out of {maxToggleTimes} times.", ChatColor.green); NetworkUI.NetworkMenuManager.SendWorldSettingsUI(player); }
public bool TryDoCommand(Players.Player player, string chat, List <string> split) { if (!chat.StartsWith("/difficulty", StringComparison.OrdinalIgnoreCase) || !chat.StartsWith("/dif", StringComparison.OrdinalIgnoreCase)) { return(false); } if (player == null || player.ID == NetworkID.Server || player.ActiveColony == null) { return(true); } var array = new List <string>(); CommandManager.SplitCommand(chat, array); var state = ColonyState.GetColonyState(player.ActiveColony); if (array.Count == 1) { PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green, state.Difficulty.Name); return(true); } if (array.Count < 2) { UnknownCommand(player, chat); return(true); } if (array.Count == 2) { var difficulty = array[1].Trim(); return(ChangeDifficulty(player, state, difficulty)); } if (!SettlersConfiguration.DifficutlyCanBeChanged) { PandaChat.Send(player, "The server administrator had disabled the changing of game difficulty.", ChatColor.green); } return(true); }
private static void TurnSettlersOn(Players.Player player, ColonyState state, int maxToggleTimes, SettlersState enabled) { if (state.SettlersEnabled == SettlersState.Disabled && enabled != SettlersState.Disabled) { state.SettlersToggledTimes++; } state.SettlersEnabled = enabled; PandaChat.Send(player, _localizationHelper, "SettlersToggleTime", ChatColor.green, state.SettlersEnabled.ToString(), state.SettlersToggledTimes.ToString(), maxToggleTimes.ToString()); NetworkUI.NetworkMenuManager.SendColonySettingsUI(player); }
public bool TryDoCommand(Players.Player player, string chat) { if (player == null || player.ID == NetworkID.Server) { return(true); } var array = CommandManager.SplitCommand(chat); var colony = Colony.Get(player); var state = PlayerState.GetPlayerState(player); var maxToggleTimes = Configuration.GetorDefault("MaxSettlersToggle", 4); if (maxToggleTimes == 0 && !Configuration.GetorDefault("SettlersEnabled", true)) { PandaChat.Send(player, "The server administrator had disabled the changing of Settlers.", ChatColor.red); return(true); } if (HasToggeledMaxTimes(maxToggleTimes, state, player)) { return(true); } if (array.Length == 1) { PandaChat.Send(player, "Settlers! Settlers are {0}. You have toggled this {1} out of {2} times.", ChatColor.green, state.SettlersEnabled ? "on" : "off", state.SettlersToggledTimes.ToString(), maxToggleTimes.ToString()); return(true); } if (array.Length == 2 && state.SettlersToggledTimes <= maxToggleTimes) { TurnSettlersOn(player, state, maxToggleTimes, array[1].ToLower().Trim() == "on" || array[1].ToLower().Trim() == "true"); } return(true); }
public bool TryDoCommand(Players.Player player, string chat) { if (player == null || player.ID == NetworkID.Server) { return(true); } var array = CommandManager.SplitCommand(chat); var colony = Colony.Get(player); var state = PlayerState.GetPlayerState(player); if (array.Length == 1) { PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green, state.Difficulty.Name); return(true); } if (array.Length < 2) { UnknownCommand(player, chat); return(true); } if (array.Length == 2) { var difficulty = array[1].Trim(); return(ChangeDifficulty(player, state, difficulty)); } if (!Configuration.DifficutlyCanBeChanged) { PandaChat.Send(player, "The server administrator had disabled the changing of game difficulty.", ChatColor.green); } return(true); }
public bool TryDoCommand(Players.Player player, string chat) { if (player == null || player.ID == NetworkID.Server) { return(true); } string[] array = CommandManager.SplitCommand(chat); Colony colony = Colony.Get(player); PlayerState state = PlayerState.GetPlayerState(player); if (array.Length == 1) { PandaChat.Send(player, "Settlers! Mod difficulty is set to {0}.", ChatColor.green, state.Difficulty.Name); return(true); } if (array.Length < 2) { UnknownCommand(player, chat); return(true); } if (!GameDifficulty.GameDifficulties.ContainsKey(array[1].Trim())) { UnknownCommand(player, array[1].Trim()); return(true); } state.Difficulty = GameDifficulty.GameDifficulties[array[1].Trim()]; PandaChat.Send(player, "Settlers! Mod difficulty set to {0}.", ChatColor.green, state.Difficulty.Name); Managers.SettlerManager.UpdateFoodUse(player); return(true); }
private static void UnknownCommand(Players.Player player, string command) { PandaChat.Send(player, "Unknown command {0}", ChatColor.white, command); PossibleCommands(player, ChatColor.white); }
public void Print(Players.Player player) { PandaChat.Send(player, $"FoodMultiplier: {FoodMultiplier}", ChatColor.green); PandaChat.Send(player, $"MonsterDamage: {MonsterDamage}", ChatColor.green); PandaChat.Send(player, $"MonsterDamageReduction: {MonsterDamageReduction}", ChatColor.green); }