/// <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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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());
                            }
                        }
                    }
                }
            }
        }
Beispiel #5
0
 public static string ShowMadeChannel(Game.Action action, DiscordMember doer, DiscordMember target)
 {
     return(Utilities.RandomChoice(MadeChannel[action]).Replace("{Doer}", doer.Mention).Replace("{Target}", target.Mention));
 }
Beispiel #6
0
 public static string ShowMade(Game.Action action, DiscordMember target)
 {
     return(Utilities.RandomChoice(Made[action]).Replace("{Target}", Code(target.DisplayName)));
 }