public async Task Scrambler(CommandContext ctx, Player user, bool isGauntlet = false, Difficulty difficulty = Difficulty.Easy, int stage = 0) { embed = new DiscordEmbedBuilder(); var interactivity = ctx.Client.GetInteractivity(); var randomNum = new Random().Next(1, Bot.Words.AllWords.Count); var word = Bot.Words.AllWords[randomNum]; var scrambledWord = WordList.ScrambleWord(word.Word); var crate = Crate.GetScrambleReward(word); var multiple = 1; if (word.Difficulty == Difficulty.Moderate || word.Difficulty == Difficulty.Hard) { multiple = 2; } else if (word.Difficulty == Difficulty.Impossible) { multiple = 4; } var tagdifficulty = word.Difficulty switch { Difficulty.Easy => "E", Difficulty.Moderate => "M", Difficulty.Hard => "H", Difficulty.Extreme => "EXR", Difficulty.Insane => "INA", _ => "IMB" }; if (isGauntlet) { while (word.Difficulty != difficulty) { word = Bot.Words.AllWords[randomNum]; } scrambledWord = WordList.ScrambleWord(word.Word); embed.Title = $"Word Scrambler (Gauntlet stage: {stage})"; } else { embed.Title = "Word Scrambler"; embed.AddField("Reward: ", $"{crate.Name} x{multiple}"); embed.Color = DiscordColor.Aquamarine; } embed.WithFooter("You have 20 seconds to answer."); embed.AddField("Unscramble the following word", $"{scrambledWord}"); var message = await ctx.Channel.SendMessageAsync(embed : embed); embed = embed.ClearFields(); var response = await interactivity.WaitForMessageAsync(x => x.Channel == ctx.Channel && x.Author == ctx.Member, TimeSpan.FromSeconds(20)); if (response.TimedOut) { embed.Title = "Time Ran Out"; embed.Description = "You ran out of time."; embed.AddField("Answer", $"{word.Word.ToLower()}"); embed.WithFooter($"#SC{tagdifficulty}{randomNum}"); embed.Color = DiscordColor.Red; } else if ((response.Result.Content.ToLower() == word.Word.ToLower()) && isGauntlet) { await message.DeleteAsync(); try { await response.Result.DeleteAsync(); } catch { } } else if (response.Result.Content.ToLower() == word.Word.ToLower() && user.IsBanned == false) { for (var i = 0; i < multiple; i++) { var isInInventory = false; Item copy = null; foreach (var thing in user.Inventory) { if (thing.ID == crate.ID) { copy = thing; isInInventory = true; break; } } if (isInInventory == false) { user.Inventory.Add(crate); } else { copy.Multiple++; } } embed.Title = "Correct Answer!"; embed.AddField("Answer", $"{word.Word.ToLower()}"); embed.AddField("Reward: ", $"{crate.Name} x{multiple}"); embed.WithFooter($"#SC{tagdifficulty}{randomNum}"); embed.Color = DiscordColor.Gold; } else if (response.Result.Content.ToLower() == word.Word.ToLower() && user.IsBanned == true) { embed.Title = "Correct Answer!"; embed.Description = "You are not eligible to revieve rewards from this mini-game because you are banned from using the main feature of this bot."; embed.AddField("Answer", $"{word.Word.ToLower()}"); embed.WithFooter($"#SC{tagdifficulty}{randomNum}"); Bot.PlayerDatabase.UpdatePlayer(user); } else if (response.Result.Content.ToLower() != word.Word) { if (isGauntlet) { GauntletCommands.PuzzleStatus = false; } else { embed.Description = "Better luck next time."; } embed.Title = "Word Scrambler (Failed)"; embed.AddField("Answer", $"{word.Word.ToLower()}"); embed.AddField("Your Answer", $"{response.Result.Content.ToLower()}"); embed.WithFooter($"#SC{tagdifficulty}{randomNum}"); embed.Color = DiscordColor.Red; } await ctx.Channel.SendMessageAsync(embed : embed); } }