/// <summary> /// Method for client to call to send their action for a turn /// </summary> /// <param name="actionString"> the formatted string of the action to take</param> public void SendAction(string actionString) { char[] sep = { ' ' }; string[] tokens = actionString.Split(sep, 2); // String format: [DUCK | SHOOT target] Game.Action action = null; Player actor = GameLobby.CurrentGame.getPlayerFromConnectionId(Context.ConnectionId); if (actor == null) { return; } if (tokens[0].Equals("DUCK")) { action = new Game.Action(Game.Action.ActionType.DUCK, actor, actor); } else if (tokens[0].Equals("SHOOT")) { Player target = GameLobby.CurrentGame.getPlayerFromName(tokens[1]); action = new Game.Action(Game.Action.ActionType.SHOOT, actor, target); } GameLobby.CurrentGame.AddPlayerAction(actor, action); }
public static void loadActions() { Logging.logHolyInfo("Preloading actions..."); int[] actionIDs = Database.runReadColumnIntegers("SELECT id FROM actions WHERE 1=1", 0); try { foreach (int tempID in actionIDs) { Game.Action _action = new Game.Action(tempID); _action.Name = Database.runRead("SELECT name FROM actions WHERE id = " + tempID); _action.Icon = Database.runRead("SELECT icon FROM actions WHERE id = " + tempID); _action.Ref = Database.runRead("SELECT ref FROM actions WHERE id = " + tempID); _action.Description = Database.runRead("SELECT description FROM actions WHERE id = " + tempID); _action.Animation = Database.runRead("SELECT animation FROM actions WHERE id = " + tempID); _action.Range = int.Parse(Database.runRead("SELECT ragne FROM actions WHERE id = " + tempID)); _action.Fx = Database.runRead("SELECT fx FROM actions WHERE id = " + tempID); _action.Damage = double.Parse(Database.runRead("SELECT damage FROM actions WHERE id = " + tempID)); _action.Mana = int.Parse(Database.runRead("SELECT mana FROM actions WHERE id = " + tempID)); _action.Dsrc = Database.runRead("SELECT dsrc FROM actions WHERE id = " + tempID); _action.Auto = bool.Parse(Database.runRead("SELECT auto FROM actions WHERE id = " + tempID)); _action.Tgt = Database.runRead("SELECT tgt FROM actions WHERE id = " + tempID); _action.Strl = Database.runRead("SELECT strl FROM actions WHERE id = " + tempID); _action.Cd = int.Parse(Database.runRead("SELECT cd FROM actions WHERE id = " + tempID)); _action.Active = bool.Parse(Database.runRead("SELECT active FROM actions WHERE id = " + tempID)); Logging.logHolyInfo("Preloaded '" + _action.Name + "'..."); } Logging.logHolyInfo("Preloaded " + actionIDs.Length + " actions."); } catch (Exception ex) { Logging.logError(ex.Message); } }
async Task ProcessTargetCommand(DiscordChannel channel, Game.Action action, DiscordUser user, TargetCommandArgs targetCommandArgs) { // Проверяем ночь ли сейчас if (Game.Status == Game.GameStatus.Night) { DiscordMember doer = Game.FindPlayerByUser(user); // Проверяем является ли пользователь участником игры if (doer != null) { bool authorized = true; // Проверяем является ли игрок активной ролью (или ходящим мафом) или сделал ли участик ход if (!Game.Active.Contains(doer) || Game.MadeAnOrder(doer)) { authorized = false; } // Проверяем совпадает ли действие с ролью if (authorized) { switch (action) { case Game.Action.Kill: //if (!(Game.Players[doer].Role == Game.Role.Commissar || Game.Players[doer].Role == Game.Role.Mafia || Game.Players[doer].Role == Game.Role.Maniac)) ДОБАВИТЬ: возможность убийства у комиссара после введения денежной системы if (!(Game.Players[doer].Role == Game.Role.Mafia || Game.Players[doer].Role == Game.Role.Maniac)) { authorized = false; } break; case Game.Action.Check: if (!(Game.Players[doer].Role == Game.Role.Commissar)) { authorized = false; } break; case Game.Action.Heal: if (!(Game.Players[doer].Role == Game.Role.Doctor)) { authorized = false; } break; } // Если все ок, то вносим проверяем цель и вносим if (authorized) { if (targetCommandArgs.Member != null) { // Проверка чтобы мафиози не убивал мафиози if (action == Game.Action.Kill && Game.Players[doer].Role == Game.Role.Mafia && Game.Players[targetCommandArgs.Member].Role == Game.Role.Mafia && doer != targetCommandArgs.Member) { await View.Send(channel, GameMessages.ShowCannotKillLogovoMember()); } else { await Game.AddNightOrder(channel, action, doer, targetCommandArgs.Member, targetCommandArgs.Message); } } else { await View.Send(channel, GameMessages.ShowNoPlayer()); } } } } } }
public static string ShowMadeChannel(Game.Action action, DiscordMember doer, DiscordMember target) { return(Utilities.RandomChoice(MadeChannel[action]).Replace("{Doer}", doer.Mention).Replace("{Target}", target.Mention)); }
public static string ShowMade(Game.Action action, DiscordMember target) { return(Utilities.RandomChoice(Made[action]).Replace("{Target}", Code(target.DisplayName))); }