Example #1
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());
                            }
                        }
                    }
                }
            }
        }
Example #2
0
 public async Task List(CommandContext ctx)
 {
     await ctx.RespondAsync(GameMessages.ShowList(false, true));
 }
Example #3
0
 public async Task Quantity(CommandContext ctx)
 {
     await ctx.RespondAsync(GameMessages.ShowPlayers());
 }
Example #4
0
 public async Task Help(CommandContext ctx)
 {
     await ctx.RespondAsync(GameMessages.ShowHelp());
 }