Exemple #1
0
        private async Task DieAndCheckForWin(SocketGuildUser player, SocketCommandContext context)
        {
            Players.Remove(player);
            if (Players.Count == 1)
            {
                CoinsHandler.AdjustCoins(Players.ElementAt(0), 3 + (2 * PlayerSlots));
                CoinsHandler.AdjustCoins(player, -3);

                await context.Channel.SendMessageAsync("", false, gameEmbed($"The cylinder spins...\n\n*BANG*\n\n{player.Mention} died and lost 3 Coins!\n\n{Players.ElementAt(0).Mention} won the game and got {3 + (2*PlayerSlots)} coins!", ""));

                Reset();
                return;
            }
        }
Exemple #2
0
        public async Task AnswerTrivia(SocketGuildUser user, SocketCommandContext context, string input)
        {
            // Solo Mode Answer
            if (user == Player && triviaMode == "solo")
            {
                if (input == correctAnswer)
                {
                    await context.Channel.SendMessageAsync("", false, Embed("Correct.", $"{GetName(user)} has been awarded 1 coin."));

                    CoinsHandler.AdjustCoins(user, 1);
                    ResetTrivia();
                    return;
                }
                await context.Channel.SendMessageAsync("", false, Embed($"Wrong, it is {correctAnswer.ToUpper()}.", $"{GetName(user)} lost 1 coin."));

                CoinsHandler.AdjustCoins(user, -1);
                ResetTrivia();
                return;
            }

            // All Mode answer
            if (triviaMode == "all" && isTriviaBeingPlayed)
            {
                for (int i = 0; i < PlayersAnswered.Count; i++)
                {
                    if (PlayersAnswered.ElementAt(i) == user)
                    {
                        await Utilities.PrintError(context.Channel, $"You already answered, {user.Mention}.");

                        return;
                    }
                }

                PlayersAnswered.Add(user);
                if (input == correctAnswer)
                {
                    await context.Channel.SendMessageAsync("", false, Embed($"Correct, {user.Mention} won!", $"{GetName(user)} has been awarded 1 coin."));

                    CoinsHandler.AdjustCoins(user, 1);
                    ResetTrivia();
                }
            }
        }
Exemple #3
0
        private async Task DoRound(SocketGuildUser player, SocketCommandContext context)
        {
            round++;
            badChamber     = RandomChamber();
            currentChamber = RandomChamber();
            currentTurn    = currentTurn == (Players.Count - 1) ? currentTurn = 0 : currentTurn + 1;

            if (currentChamber == badChamber)
            {
                await DieAndCheckForWin(player, context);

                await context.Channel.SendMessageAsync("", false, gameEmbed($"The cylinder spins...\n\n*BANG*\n\n{player.Mention} died and lost 3 Coins!\n\nWaiting for {Players.ElementAt(currentTurn).Mention} to pull the trigger. (`!pt`)", ""));

                CoinsHandler.AdjustCoins(player, -3);
            }
            else
            {
                await context.Channel.SendMessageAsync("", false, gameEmbed($"The cylinder spins...\n\n*click*\n\n{player.Mention} survived!\n\nWaiting for {Players.ElementAt(currentTurn).Mention} to pull the trigger. (`!pt`)", ""));
            }
        }
        public async Task ViewPlay(string emote, ISocketMessageChannel channel, Optional <IUser> user)
        {
            if (!isPlaying || Player != user.Value)
            {
                return;
            }

            string playOne = "";

            if (emote == "📰")
            {
                playOne = "Paper";
            }
            else if (emote == "✂")
            {
                playOne = "Scissors";
            }
            else if (emote == "🌑")
            {
                playOne = "Rock";
            }

            string playTwo = Plays.ElementAt(Utilities.GetRandomNumber(0, 3));
            string result  = GetWinner(playOne[0], playTwo[0]);

            await channel.SendMessageAsync("", false, embed($"{Player.Mention} chose {playOne}!\n\nI chose {playTwo}.\n\n{result}", ""));

            if (result.Contains("lose 3 coins"))
            {
                CoinsHandler.AdjustCoins(Player, -3);
            }
            else if (result.Contains("got 3 coins"))
            {
                CoinsHandler.AdjustCoins(Player, 3);
            }

            Player    = null;
            isPlaying = false;
        }
Exemple #5
0
        public async Task TryToGuess(SocketCommandContext context, int number)
        {
            if (Player != context.User)
            {
                await Utilities.PrintError(context.Channel, $"Sorry, {Player.Mention} is currently playing.\nYou can ask an admin to `!reset wsi` if there is an issue.");

                return;
            }
            if (availableOptions.ElementAt(number - 1) == Speaker)
            {
                await Utilities.SendEmbed(context.Channel, "Who Said It?", "Correct!", color, $"{((SocketGuildUser)context.User).Nickname ?? context.User.Username} got 1 coin.", "");

                CoinsHandler.AdjustCoins((SocketGuildUser)context.User, 1);
            }
            else
            {
                await Utilities.SendEmbed(context.Channel, "Who Said It?", "Incorrect.", color, $"{((SocketGuildUser)context.User).Nickname ?? context.User.Username} lost 1 coin.", "");

                CoinsHandler.AdjustCoins((SocketGuildUser)context.User, -1);
            }
            Reset();
        }
        public async Task TryToGuess(SocketGuildUser user, SocketCommandContext context, int input)
        {
            if (!await Utilities.CheckForChannel(context, 518846214603669537, context.User))
            {
                return;
            }
            if (!isGamingGoing)
            {
                return;
            }
            if (playerSlots != Players.Count && playerSlots != 0)
            {
                return;
            }
            bool isPlaying = false;

            foreach (Player p in Players)
            {
                if (p.user == user)
                {
                    isPlaying = true;
                    break;
                }
            }
            if (!isPlaying)
            {
                return;
            }
            for (int i = 0; i < Players.Count; i++)
            {
                if (Players.ElementAt(i).user == user)
                {
                    var p = Players.ElementAt(i);
                    p.hasAnswered = true;
                    p.guess       = input;
                    Players.RemoveAt(i);
                    Players.Add(p);
                }
            }

            foreach (Player p in Players)
            {
                if (p.hasAnswered == false)
                {
                    return;
                }
            }

            var embed = new EmbedBuilder()
                        .WithTitle("Number Guess")
                        .WithColor(new Color(0, 0, 0));

            if (playerSlots == 0)
            {
                if (Players.ElementAt(0).guess == number)
                {
                    embed.WithDescription($"Great job, {Players.ElementAt(0).user.Mention}! You got it exactly right and won 101 Coins!");
                    CoinsHandler.AdjustCoins(Players.ElementAt(0).user, 101);
                }
                else
                {
                    embed.WithDescription($"Sorry, {Players.ElementAt(0).user.Mention}. You did not get it right.");
                    embed.WithFooter("Lost 1 Coin.");
                    CoinsHandler.AdjustCoins(Players.ElementAt(0).user, -1);
                }
                await context.Channel.SendMessageAsync("", false, embed.Build());

                Reset();
                return;
            }

            string          Description     = $"Everyone has answered!\n\nThe answer was...{number}!\n\n";
            bool            lost10          = false;
            bool            didSomeoneGetIt = false;
            SocketGuildUser winner          = null;

            for (int i = 0; i < Players.Count; i++)
            {
                if (Players.ElementAt(i).guess == number)
                {
                    didSomeoneGetIt = true;
                    Description    += $"{Players.ElementAt(i).user.Mention} got it exactly right and won {100 + (2* playerSlots)} Coins!";
                    Description    += "\n\nEveryone else lost 10 coins!";
                    lost10          = true;
                    embed.WithFooter("100 + 2 * Players played.");
                    CoinsHandler.AdjustCoins(Players.ElementAt(i).user, 100 + (2 * playerSlots));
                    winner = Players.ElementAt(i).user;
                    break;
                }
            }
            List <int> list = new List <int>();

            foreach (Player p in Players)
            {
                list.Add(p.guess);
            }
            int Closest = list.Aggregate((x, y) => Math.Abs(x - number) < Math.Abs(y - number) ? x : y);

            if (!didSomeoneGetIt)
            {
                for (int i = 0; i < Players.Count; i++)
                {
                    if (Players.ElementAt(i).guess == Closest)
                    {
                        Description += $"{Players.ElementAt(i).user.Mention} got the closest with {Players.ElementAt(i).guess}!";
                        Description += "\n\nEveryone else lost 1 coin.";
                        winner       = Players.ElementAt(i).user;
                        break;
                    }
                }
            }
            embed.WithDescription(Description);

            for (int i = 0; i < Players.Count; i++)
            {
                if (!(winner == Players.ElementAt(i).user))
                {
                    CoinsHandler.AdjustCoins(Players.ElementAt(i).user, lost10 ? -10 : -1);
                }
            }

            await context.Channel.SendMessageAsync("", false, embed.Build());

            Reset();
        }
Exemple #7
0
 private async Task CancelGame(SocketGuildUser user, SocketCommandContext context)
 {
     CoinsHandler.AdjustCoins(user, -1);
     await context.Channel.SendMessageAsync("", false, Embed($"{user.Mention} took too long to answer and lost 1 coin.", ""));
 }
Exemple #8
0
 public void getCoinsCount(CoinsHandler originator)
 {
     originator.setCoinsCount(coinsCount);
 }