Cleanup, bugfixes, Slots, flip, gambling commands localizable.
This commit is contained in:
		@@ -19,7 +19,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
    public partial class Gambling
 | 
					    public partial class Gambling
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class CurrencyEvents : ModuleBase
 | 
					        public class CurrencyEvents : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            public enum CurrencyEvent
 | 
					            public enum CurrencyEvent
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
    public partial class Gambling
 | 
					    public partial class Gambling
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class DriceRollCommands : ModuleBase
 | 
					        public class DriceRollCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private Regex dndRegex { get; } = new Regex(@"^(?<n1>\d+)d(?<n2>\d+)(?:\+(?<add>\d+))?(?:\-(?<sub>\d+))?$", RegexOptions.Compiled);
 | 
					            private Regex dndRegex { get; } = new Regex(@"^(?<n1>\d+)d(?<n2>\d+)(?:\+(?<add>\d+))?(?:\-(?<sub>\d+))?$", RegexOptions.Compiled);
 | 
				
			||||||
            private Regex fudgeRegex { get; } = new Regex(@"^(?<n1>\d+)d(?:F|f)$", RegexOptions.Compiled);
 | 
					            private Regex fudgeRegex { get; } = new Regex(@"^(?<n1>\d+)d(?:F|f)$", RegexOptions.Compiled);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
    public partial class Gambling
 | 
					    public partial class Gambling
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class DrawCommands : ModuleBase
 | 
					        public class DrawCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private static readonly ConcurrentDictionary<IGuild, Cards> AllDecks = new ConcurrentDictionary<IGuild, Cards>();
 | 
					            private static readonly ConcurrentDictionary<IGuild, Cards> AllDecks = new ConcurrentDictionary<IGuild, Cards>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,12 +1,10 @@
 | 
				
			|||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using Discord.Commands;
 | 
					using Discord.Commands;
 | 
				
			||||||
using ImageSharp;
 | 
					 | 
				
			||||||
using NadekoBot.Attributes;
 | 
					using NadekoBot.Attributes;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Services;
 | 
					using NadekoBot.Services;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.IO;
 | 
					 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Image = ImageSharp.Image;
 | 
					using Image = ImageSharp.Image;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -15,7 +13,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
    public partial class Gambling
 | 
					    public partial class Gambling
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class FlipCoinCommands : ModuleBase
 | 
					        public class FlipCoinCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private readonly IImagesService _images;
 | 
					            private readonly IImagesService _images;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -24,7 +22,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
            public FlipCoinCommands()
 | 
					            public FlipCoinCommands()
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                //todo DI in the future, can't atm
 | 
					                //todo DI in the future, can't atm
 | 
				
			||||||
                this._images = NadekoBot.Images;
 | 
					                _images = NadekoBot.Images;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            [NadekoCommand, Usage, Description, Aliases]
 | 
					            [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
@@ -36,21 +34,21 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        using (var heads = _images.Heads.ToStream())
 | 
					                        using (var heads = _images.Heads.ToStream())
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            await Context.Channel.SendFileAsync(heads, "heads.jpg", $"{Context.User.Mention} flipped " + Format.Code("Heads") + ".").ConfigureAwait(false);
 | 
					                            await Context.Channel.SendFileAsync(heads, "heads.jpg", Context.User.Mention + " " + GetText("flipped", Format.Bold(GetText("heads"))) + ".").ConfigureAwait(false);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    else
 | 
					                    else
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        using (var tails = _images.Tails.ToStream())
 | 
					                        using (var tails = _images.Tails.ToStream())
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            await Context.Channel.SendFileAsync(tails, "tails.jpg", $"{Context.User.Mention} flipped " + Format.Code("Tails") + ".").ConfigureAwait(false);
 | 
					                            await Context.Channel.SendFileAsync(tails, "tails.jpg", Context.User.Mention + " " + GetText("flipped", Format.Bold(GetText("tails"))) + ".").ConfigureAwait(false);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (count > 10 || count < 1)
 | 
					                if (count > 10 || count < 1)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    await Context.Channel.SendErrorAsync("`Invalid number specified. You can flip 1 to 10 coins.`").ConfigureAwait(false);
 | 
					                    await ReplyErrorLocalized("flip_invalid", 10).ConfigureAwait(false);
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                var imgs = new Image[count];
 | 
					                var imgs = new Image[count];
 | 
				
			||||||
@@ -76,14 +74,13 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                if (amount < NadekoBot.BotConfig.MinimumBetAmount)
 | 
					                if (amount < NadekoBot.BotConfig.MinimumBetAmount)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    await Context.Channel.SendErrorAsync($"You can't bet less than {NadekoBot.BotConfig.MinimumBetAmount}{CurrencySign}.")
 | 
					                    await ReplyErrorLocalized("min_bet_limit", NadekoBot.BotConfig.MinimumBetAmount + CurrencySign).ConfigureAwait(false);
 | 
				
			||||||
                                 .ConfigureAwait(false);
 | 
					 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                var removed = await CurrencyHandler.RemoveCurrencyAsync(Context.User, "Betflip Gamble", amount, false).ConfigureAwait(false);
 | 
					                var removed = await CurrencyHandler.RemoveCurrencyAsync(Context.User, "Betflip Gamble", amount, false).ConfigureAwait(false);
 | 
				
			||||||
                if (!removed)
 | 
					                if (!removed)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    await Context.Channel.SendErrorAsync($"{Context.User.Mention} You don't have enough {CurrencyPluralName}.").ConfigureAwait(false);
 | 
					                    await ReplyErrorLocalized("not_enough", CurrencyPluralName).ConfigureAwait(false);
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                //heads = true
 | 
					                //heads = true
 | 
				
			||||||
@@ -91,7 +88,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                //todo this seems stinky, no time to look at it right now
 | 
					                //todo this seems stinky, no time to look at it right now
 | 
				
			||||||
                var isHeads = guessStr == "HEADS" || guessStr == "H";
 | 
					                var isHeads = guessStr == "HEADS" || guessStr == "H";
 | 
				
			||||||
                bool result = false;
 | 
					                var result = false;
 | 
				
			||||||
                IEnumerable<byte> imageToSend;
 | 
					                IEnumerable<byte> imageToSend;
 | 
				
			||||||
                if (rng.Next(0, 2) == 1)
 | 
					                if (rng.Next(0, 2) == 1)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -107,12 +104,12 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                if (isHeads == result)
 | 
					                if (isHeads == result)
 | 
				
			||||||
                { 
 | 
					                { 
 | 
				
			||||||
                    var toWin = (int)Math.Round(amount * NadekoBot.BotConfig.BetflipMultiplier);
 | 
					                    var toWin = (int)Math.Round(amount * NadekoBot.BotConfig.BetflipMultiplier);
 | 
				
			||||||
                    str = $"{Context.User.Mention}`You guessed it!` You won {toWin}{CurrencySign}";
 | 
					                    str = Context.User.Mention + " " + GetText("flip_guess", toWin + CurrencySign);
 | 
				
			||||||
                    await CurrencyHandler.AddCurrencyAsync(Context.User, "Betflip Gamble", toWin, false).ConfigureAwait(false);
 | 
					                    await CurrencyHandler.AddCurrencyAsync(Context.User, GetText("betflip_gamble"), toWin, false).ConfigureAwait(false);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    str = $"{Context.User.Mention}`Better luck next time.`";
 | 
					                    str = Context.User.Mention + " " + GetText("better_luck");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                using (var toSend = imageToSend.ToStream())
 | 
					                using (var toSend = imageToSend.ToStream())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ using NadekoBot.Extensions;
 | 
				
			|||||||
using NadekoBot.Services;
 | 
					using NadekoBot.Services;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.IO;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
@@ -16,12 +15,12 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
    public partial class Gambling
 | 
					    public partial class Gambling
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class Slots : ModuleBase
 | 
					        public class Slots : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private static int totalBet = 0;
 | 
					            private static int _totalBet;
 | 
				
			||||||
            private static int totalPaidOut = 0;
 | 
					            private static int _totalPaidOut;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            const int alphaCutOut = byte.MaxValue / 3;
 | 
					            private const int _alphaCutOut = byte.MaxValue / 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //here is a payout chart
 | 
					            //here is a payout chart
 | 
				
			||||||
            //https://lh6.googleusercontent.com/-i1hjAJy_kN4/UswKxmhrbPI/AAAAAAAAB1U/82wq_4ZZc-Y/DE6B0895-6FC1-48BE-AC4F-14D1B91AB75B.jpg
 | 
					            //https://lh6.googleusercontent.com/-i1hjAJy_kN4/UswKxmhrbPI/AAAAAAAAB1U/82wq_4ZZc-Y/DE6B0895-6FC1-48BE-AC4F-14D1B91AB75B.jpg
 | 
				
			||||||
@@ -31,14 +30,14 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            public Slots()
 | 
					            public Slots()
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                this._images = NadekoBot.Images;
 | 
					                _images = NadekoBot.Images;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            public class SlotMachine
 | 
					            public class SlotMachine
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                public const int MaxValue = 5;
 | 
					                public const int MaxValue = 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                static readonly List<Func<int[], int>> winningCombos = new List<Func<int[], int>>()
 | 
					                static readonly List<Func<int[], int>> _winningCombos = new List<Func<int[], int>>()
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    //three flowers
 | 
					                    //three flowers
 | 
				
			||||||
                    (arr) => arr.All(a=>a==MaxValue) ? 30 : 0,
 | 
					                    (arr) => arr.All(a=>a==MaxValue) ? 30 : 0,
 | 
				
			||||||
@@ -53,14 +52,14 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                public static SlotResult Pull()
 | 
					                public static SlotResult Pull()
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var numbers = new int[3];
 | 
					                    var numbers = new int[3];
 | 
				
			||||||
                    for (int i = 0; i < numbers.Length; i++)
 | 
					                    for (var i = 0; i < numbers.Length; i++)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        numbers[i] = new NadekoRandom().Next(0, MaxValue + 1);
 | 
					                        numbers[i] = new NadekoRandom().Next(0, MaxValue + 1);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    int multi = 0;
 | 
					                    var multi = 0;
 | 
				
			||||||
                    for (int i = 0; i < winningCombos.Count; i++)
 | 
					                    foreach (var t in _winningCombos)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        multi = winningCombos[i](numbers);
 | 
					                        multi = t(numbers);
 | 
				
			||||||
                        if (multi != 0)
 | 
					                        if (multi != 0)
 | 
				
			||||||
                            break;
 | 
					                            break;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
@@ -74,8 +73,8 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                    public int Multiplier { get; }
 | 
					                    public int Multiplier { get; }
 | 
				
			||||||
                    public SlotResult(int[] nums, int multi)
 | 
					                    public SlotResult(int[] nums, int multi)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        this.Numbers = nums;
 | 
					                        Numbers = nums;
 | 
				
			||||||
                        this.Multiplier = multi;
 | 
					                        Multiplier = multi;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -85,8 +84,8 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
            public async Task SlotStats()
 | 
					            public async Task SlotStats()
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                //i remembered to not be a moron
 | 
					                //i remembered to not be a moron
 | 
				
			||||||
                var paid = totalPaidOut;
 | 
					                var paid = _totalPaidOut;
 | 
				
			||||||
                var bet = totalBet;
 | 
					                var bet = _totalBet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (bet <= 0)
 | 
					                if (bet <= 0)
 | 
				
			||||||
                    bet = 1;
 | 
					                    bet = 1;
 | 
				
			||||||
@@ -130,33 +129,34 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                    footer: $"Total Bet: {tests * bet} | Payout: {payout * bet} | {payout * 1.0f / tests * 100}%");
 | 
					                    footer: $"Total Bet: {tests * bet} | Payout: {payout * bet} | {payout * 1.0f / tests * 100}%");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            static HashSet<ulong> runningUsers = new HashSet<ulong>();
 | 
					            private static readonly HashSet<ulong> _runningUsers = new HashSet<ulong>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            [NadekoCommand, Usage, Description, Aliases]
 | 
					            [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
            public async Task Slot(int amount = 0)
 | 
					            public async Task Slot(int amount = 0)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (!runningUsers.Add(Context.User.Id))
 | 
					                if (!_runningUsers.Add(Context.User.Id))
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                try
 | 
					                try
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (amount < 1)
 | 
					                    if (amount < 1)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        await Context.Channel.SendErrorAsync($"You can't bet less than 1{NadekoBot.BotConfig.CurrencySign}").ConfigureAwait(false);
 | 
					                        await ReplyErrorLocalized("min_bet_limit", 1 + CurrencySign).ConfigureAwait(false);
 | 
				
			||||||
                        return;
 | 
					                        return;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (amount > 999)
 | 
					                    if (amount > 999)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        await Context.Channel.SendErrorAsync($"You can't bet more than 999{NadekoBot.BotConfig.CurrencySign}").ConfigureAwait(false);
 | 
					                        GetText("slot_maxbet", 999 + CurrencySign);
 | 
				
			||||||
 | 
					                        await ReplyErrorLocalized("max_bet_limit", 999 + CurrencySign).ConfigureAwait(false);
 | 
				
			||||||
                        return;
 | 
					                        return;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (!await CurrencyHandler.RemoveCurrencyAsync(Context.User, "Slot Machine", amount, false))
 | 
					                    if (!await CurrencyHandler.RemoveCurrencyAsync(Context.User, "Slot Machine", amount, false))
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        await Context.Channel.SendErrorAsync($"You don't have enough {NadekoBot.BotConfig.CurrencySign}.").ConfigureAwait(false);
 | 
					                        await ReplyErrorLocalized("not_enough", CurrencySign).ConfigureAwait(false);
 | 
				
			||||||
                        return;
 | 
					                        return;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    Interlocked.Add(ref totalBet, amount);
 | 
					                    Interlocked.Add(ref _totalBet, amount);
 | 
				
			||||||
                    using (var bgFileStream = NadekoBot.Images.SlotBackground.ToStream())
 | 
					                    using (var bgFileStream = NadekoBot.Images.SlotBackground.ToStream())
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        var bgImage = new ImageSharp.Image(bgFileStream);
 | 
					                        var bgImage = new ImageSharp.Image(bgFileStream);
 | 
				
			||||||
@@ -179,7 +179,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                                                var x = 95 + 142 * i + j;
 | 
					                                                var x = 95 + 142 * i + j;
 | 
				
			||||||
                                                int y = 330 + k;
 | 
					                                                int y = 330 + k;
 | 
				
			||||||
                                                var toSet = toAdd[j, k];
 | 
					                                                var toSet = toAdd[j, k];
 | 
				
			||||||
                                                if (toSet.A < alphaCutOut)
 | 
					                                                if (toSet.A < _alphaCutOut)
 | 
				
			||||||
                                                    continue;
 | 
					                                                    continue;
 | 
				
			||||||
                                                bgPixels[x, y] = toAdd[j, k];
 | 
					                                                bgPixels[x, y] = toAdd[j, k];
 | 
				
			||||||
                                            }
 | 
					                                            }
 | 
				
			||||||
@@ -203,7 +203,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                                        {
 | 
					                                        {
 | 
				
			||||||
                                            for (int j = 0; j < pixels.Height; j++)
 | 
					                                            for (int j = 0; j < pixels.Height; j++)
 | 
				
			||||||
                                            {
 | 
					                                            {
 | 
				
			||||||
                                                if (pixels[i, j].A < alphaCutOut)
 | 
					                                                if (pixels[i, j].A < _alphaCutOut)
 | 
				
			||||||
                                                    continue;
 | 
					                                                    continue;
 | 
				
			||||||
                                                var x = 230 - n * 16 + i;
 | 
					                                                var x = 230 - n * 16 + i;
 | 
				
			||||||
                                                bgPixels[x, 462 + j] = pixels[i, j];
 | 
					                                                bgPixels[x, 462 + j] = pixels[i, j];
 | 
				
			||||||
@@ -228,7 +228,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                                        {
 | 
					                                        {
 | 
				
			||||||
                                            for (int j = 0; j < pixels.Height; j++)
 | 
					                                            for (int j = 0; j < pixels.Height; j++)
 | 
				
			||||||
                                            {
 | 
					                                            {
 | 
				
			||||||
                                                if (pixels[i, j].A < alphaCutOut)
 | 
					                                                if (pixels[i, j].A < _alphaCutOut)
 | 
				
			||||||
                                                    continue;
 | 
					                                                    continue;
 | 
				
			||||||
                                                var x = 395 - n * 16 + i;
 | 
					                                                var x = 395 - n * 16 + i;
 | 
				
			||||||
                                                bgPixels[x, 462 + j] = pixels[i, j];
 | 
					                                                bgPixels[x, 462 + j] = pixels[i, j];
 | 
				
			||||||
@@ -240,22 +240,22 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                            } while ((printAmount /= 10) != 0);
 | 
					                            } while ((printAmount /= 10) != 0);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        var msg = "Better luck next time ^_^";
 | 
					                        var msg = GetText("better_luck");
 | 
				
			||||||
                        if (result.Multiplier != 0)
 | 
					                        if (result.Multiplier != 0)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            await CurrencyHandler.AddCurrencyAsync(Context.User, $"Slot Machine x{result.Multiplier}", amount * result.Multiplier, false);
 | 
					                            await CurrencyHandler.AddCurrencyAsync(Context.User, $"Slot Machine x{result.Multiplier}", amount * result.Multiplier, false);
 | 
				
			||||||
                            Interlocked.Add(ref totalPaidOut, amount * result.Multiplier);
 | 
					                            Interlocked.Add(ref _totalPaidOut, amount * result.Multiplier);
 | 
				
			||||||
                            if (result.Multiplier == 1)
 | 
					                            if (result.Multiplier == 1)
 | 
				
			||||||
                                msg = $"A single {NadekoBot.BotConfig.CurrencySign}, x1 - Try again!";
 | 
					                                msg = GetText("slot_single", CurrencySign, 1);
 | 
				
			||||||
                            else if (result.Multiplier == 4)
 | 
					                            else if (result.Multiplier == 4)
 | 
				
			||||||
                                msg = $"Good job! Two {NadekoBot.BotConfig.CurrencySign} - bet x4";
 | 
					                                msg = GetText("slot_two", CurrencySign, 4);
 | 
				
			||||||
                            else if (result.Multiplier == 10)
 | 
					                            else if (result.Multiplier == 10)
 | 
				
			||||||
                                msg = "Wow! Lucky! Three of a kind! x10";
 | 
					                                msg = GetText("slot_three", 10);
 | 
				
			||||||
                            else if (result.Multiplier == 30)
 | 
					                            else if (result.Multiplier == 30)
 | 
				
			||||||
                                msg = "WOAAHHHHHH!!! Congratulations!!! x30";
 | 
					                                msg = GetText("slot_jackpot", 30);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        await Context.Channel.SendFileAsync(bgImage.ToStream(), "result.png", Context.User.Mention + " " + msg + $"\n`Bet:`{amount} `Won:` {amount * result.Multiplier}{NadekoBot.BotConfig.CurrencySign}").ConfigureAwait(false);
 | 
					                        await Context.Channel.SendFileAsync(bgImage.ToStream(), "result.png", Context.User.Mention + " " + msg + $"\n`{GetText("slot_bet")}:`{amount} `{GetText("slot_won")}:` {amount * result.Multiplier}{NadekoBot.BotConfig.CurrencySign}").ConfigureAwait(false);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                finally
 | 
					                finally
 | 
				
			||||||
@@ -263,7 +263,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                    var _ = Task.Run(async () =>
 | 
					                    var _ = Task.Run(async () =>
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        await Task.Delay(2000);
 | 
					                        await Task.Delay(2000);
 | 
				
			||||||
                        runningUsers.Remove(Context.User.Id);
 | 
					                        _runningUsers.Remove(Context.User.Id);
 | 
				
			||||||
                    });
 | 
					                    });
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,7 +47,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Group]
 | 
					        [Group]
 | 
				
			||||||
        public class WaifuClaimCommands : ModuleBase
 | 
					        public class WaifuClaimCommands : NadekoSubmodule
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            private static ConcurrentDictionary<ulong, DateTime> _divorceCooldowns { get; } = new ConcurrentDictionary<ulong, DateTime>();
 | 
					            private static ConcurrentDictionary<ulong, DateTime> _divorceCooldowns { get; } = new ConcurrentDictionary<ulong, DateTime>();
 | 
				
			||||||
            private static ConcurrentDictionary<ulong, DateTime> _affinityCooldowns { get; } = new ConcurrentDictionary<ulong, DateTime>();
 | 
					            private static ConcurrentDictionary<ulong, DateTime> _affinityCooldowns { get; } = new ConcurrentDictionary<ulong, DateTime>();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
using Discord;
 | 
					using System;
 | 
				
			||||||
 | 
					using Discord;
 | 
				
			||||||
using Discord.Commands;
 | 
					using Discord.Commands;
 | 
				
			||||||
using NadekoBot.Attributes;
 | 
					using NadekoBot.Attributes;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Text;
 | 
					 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Services;
 | 
					using NadekoBot.Services;
 | 
				
			||||||
using NadekoBot.Services.Database.Models;
 | 
					using NadekoBot.Services.Database.Models;
 | 
				
			||||||
@@ -42,7 +42,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
            var members = role.Members().Where(u => u.Status != UserStatus.Offline && u.Status != UserStatus.Unknown);
 | 
					            var members = role.Members().Where(u => u.Status != UserStatus.Offline && u.Status != UserStatus.Unknown);
 | 
				
			||||||
            var membersArray = members as IUser[] ?? members.ToArray();
 | 
					            var membersArray = members as IUser[] ?? members.ToArray();
 | 
				
			||||||
            var usr = membersArray[new NadekoRandom().Next(0, membersArray.Length)];
 | 
					            var usr = membersArray[new NadekoRandom().Next(0, membersArray.Length)];
 | 
				
			||||||
            await Context.Channel.SendConfirmAsync("🎟 Raffled user", $"**{usr.Username}#{usr.Discriminator}**", footer: $"ID: {usr.Id}").ConfigureAwait(false);
 | 
					            await Context.Channel.SendConfirmAsync("🎟 "+ GetText("raffled_user"), $"**{usr.Username}#{usr.Discriminator}**", footer: $"ID: {usr.Id}").ConfigureAwait(false);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
					        [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
@@ -50,15 +50,14 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
        public async Task Cash([Remainder] IUser user = null)
 | 
					        public async Task Cash([Remainder] IUser user = null)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            user = user ?? Context.User;
 | 
					            user = user ?? Context.User;
 | 
				
			||||||
 | 
					            await ReplyConfirmLocalized("has", Format.Bold(user.ToString()), $"{GetCurrency(user.Id)} {CurrencySign}").ConfigureAwait(false);
 | 
				
			||||||
            await Context.Channel.SendConfirmAsync($"{user.Username} has {GetCurrency(user.Id)} {CurrencySign}").ConfigureAwait(false);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
					        [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
        [Priority(1)]
 | 
					        [Priority(1)]
 | 
				
			||||||
        public async Task Cash(ulong userId)
 | 
					        public async Task Cash(ulong userId)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            await Context.Channel.SendConfirmAsync($"`{userId}` has {GetCurrency(userId)} {CurrencySign}").ConfigureAwait(false);
 | 
					            await ReplyConfirmLocalized("has", Format.Code(userId.ToString()), $"{GetCurrency(userId)} {CurrencySign}").ConfigureAwait(false);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
					        [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
@@ -70,11 +69,12 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
            var success = await CurrencyHandler.RemoveCurrencyAsync((IGuildUser)Context.User, $"Gift to {receiver.Username} ({receiver.Id}).", amount, false).ConfigureAwait(false);
 | 
					            var success = await CurrencyHandler.RemoveCurrencyAsync((IGuildUser)Context.User, $"Gift to {receiver.Username} ({receiver.Id}).", amount, false).ConfigureAwait(false);
 | 
				
			||||||
            if (!success)
 | 
					            if (!success)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                await Context.Channel.SendErrorAsync($"{Context.User.Mention} You don't have enough {CurrencyPluralName}.").ConfigureAwait(false);
 | 
					                await ReplyErrorLocalized("not_enough", CurrencyPluralName).ConfigureAwait(false);
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            await CurrencyHandler.AddCurrencyAsync(receiver, $"Gift from {Context.User.Username} ({Context.User.Id}).", amount, true).ConfigureAwait(false);
 | 
					            await CurrencyHandler.AddCurrencyAsync(receiver, $"Gift from {Context.User.Username} ({Context.User.Id}).", amount, true).ConfigureAwait(false);
 | 
				
			||||||
            await Context.Channel.SendConfirmAsync($"{Context.User.Mention} gifted {amount}{CurrencySign} to {Format.Bold(receiver.ToString())}!").ConfigureAwait(false);
 | 
					            await ReplyConfirmLocalized("gifted", amount + CurrencySign, Format.Bold(receiver.ToString()))
 | 
				
			||||||
 | 
					                .ConfigureAwait(false);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
					        [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
@@ -93,8 +93,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                return;
 | 
					                return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            await CurrencyHandler.AddCurrencyAsync(usrId, $"Awarded by bot owner. ({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false);
 | 
					            await CurrencyHandler.AddCurrencyAsync(usrId, $"Awarded by bot owner. ({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false);
 | 
				
			||||||
 | 
					            await ReplyConfirmLocalized("awarded", amount + CurrencySign, $"<@{usrId}>").ConfigureAwait(false);
 | 
				
			||||||
            await Context.Channel.SendConfirmAsync($"{Context.User.Mention} awarded {amount}{CurrencySign} to <@{usrId}>!").ConfigureAwait(false);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
					        [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
@@ -111,9 +110,10 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                                                      amount)))
 | 
					                                                      amount)))
 | 
				
			||||||
                         .ConfigureAwait(false);
 | 
					                         .ConfigureAwait(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            await Context.Channel.SendConfirmAsync($"Awarded `{amount}` {CurrencyPluralName} to `{users.Count}` users from `{role.Name}` role.")
 | 
					            await ReplyConfirmLocalized("mass_award", 
 | 
				
			||||||
                         .ConfigureAwait(false);
 | 
					                amount + CurrencySign, 
 | 
				
			||||||
 | 
					                Format.Bold(users.Count.ToString()), 
 | 
				
			||||||
 | 
					                Format.Bold(role.Name)).ConfigureAwait(false);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
					        [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
@@ -125,9 +125,9 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                return;
 | 
					                return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (await CurrencyHandler.RemoveCurrencyAsync(user, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount, true).ConfigureAwait(false))
 | 
					            if (await CurrencyHandler.RemoveCurrencyAsync(user, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount, true).ConfigureAwait(false))
 | 
				
			||||||
                await Context.Channel.SendConfirmAsync($"{Context.User.Mention} successfully took {amount} {(amount == 1 ? CurrencyName : CurrencyPluralName)} from {user}!").ConfigureAwait(false);
 | 
					                await ReplyConfirmLocalized("take", amount+CurrencySign, Format.Bold(user.ToString())).ConfigureAwait(false);
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                await Context.Channel.SendErrorAsync($"{Context.User.Mention} was unable to take {amount} {(amount == 1 ? CurrencyName : CurrencyPluralName)} from {user} because the user doesn't have that much {CurrencyPluralName}!").ConfigureAwait(false);
 | 
					                await ReplyErrorLocalized("take_fail", amount + CurrencySign, Format.Bold(user.ToString()), CurrencyPluralName).ConfigureAwait(false);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -139,9 +139,9 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                return;
 | 
					                return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (await CurrencyHandler.RemoveCurrencyAsync(usrId, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false))
 | 
					            if (await CurrencyHandler.RemoveCurrencyAsync(usrId, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false))
 | 
				
			||||||
                await Context.Channel.SendConfirmAsync($"{Context.User.Mention} successfully took {amount} {(amount == 1 ? CurrencyName : CurrencyPluralName)} from <@{usrId}>!").ConfigureAwait(false);
 | 
					                await ReplyConfirmLocalized("take", amount + CurrencySign, $"<@{usrId}>").ConfigureAwait(false);
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                await Context.Channel.SendErrorAsync($"{Context.User.Mention} was unable to take {amount} {(amount == 1 ? CurrencyName : CurrencyPluralName)} from `{usrId}` because the user doesn't have that much {CurrencyPluralName}!").ConfigureAwait(false);
 | 
					                await ReplyErrorLocalized("take_fail", amount + CurrencySign, Format.Code(usrId.ToString()), CurrencyPluralName).ConfigureAwait(false);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //[NadekoCommand, Usage, Description, Aliases]
 | 
					        //[NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
@@ -205,49 +205,48 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
            if (amount < 1)
 | 
					            if (amount < 1)
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            long userFlowers;
 | 
					            if (!await CurrencyHandler.RemoveCurrencyAsync(Context.User, "Betroll Gamble", amount, false).ConfigureAwait(false))
 | 
				
			||||||
            using (var uow = DbHandler.UnitOfWork())
 | 
					 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                userFlowers = uow.Currency.GetOrCreate(Context.User.Id).Amount;
 | 
					                await ReplyErrorLocalized("not_enough", CurrencyPluralName).ConfigureAwait(false);
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (userFlowers < amount)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                await Context.Channel.SendErrorAsync($"{Context.User.Mention} You don't have enough {CurrencyPluralName}. You only have {userFlowers}{CurrencySign}.").ConfigureAwait(false);
 | 
					 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            await CurrencyHandler.RemoveCurrencyAsync(Context.User, "Betroll Gamble", amount, false).ConfigureAwait(false);
 | 
					            var rnd = new NadekoRandom().Next(0, 101);
 | 
				
			||||||
 | 
					            var str = Context.User.Mention + Format.Code(GetText("roll", rnd));
 | 
				
			||||||
            var rng = new NadekoRandom().Next(0, 101);
 | 
					            if (rnd < 67)
 | 
				
			||||||
            var str = $"{Context.User.Mention} `You rolled {rng}.` ";
 | 
					 | 
				
			||||||
            if (rng < 67)
 | 
					 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                str += "Better luck next time.";
 | 
					                str += GetText("better_luck");
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            else if (rng < 91)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                str += $"Congratulations! You won {amount * NadekoBot.BotConfig.Betroll67Multiplier}{CurrencySign} for rolling above 66";
 | 
					 | 
				
			||||||
                await CurrencyHandler.AddCurrencyAsync(Context.User, "Betroll Gamble", (int)(amount * NadekoBot.BotConfig.Betroll67Multiplier), false).ConfigureAwait(false);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            else if (rng < 100)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                str += $"Congratulations! You won {amount * NadekoBot.BotConfig.Betroll91Multiplier}{CurrencySign} for rolling above 90.";
 | 
					 | 
				
			||||||
                await CurrencyHandler.AddCurrencyAsync(Context.User, "Betroll Gamble", (int)(amount * NadekoBot.BotConfig.Betroll91Multiplier), false).ConfigureAwait(false);
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                str += $"👑 Congratulations! You won {amount * NadekoBot.BotConfig.Betroll100Multiplier}{CurrencySign} for rolling **100**. 👑";
 | 
					                if (rnd < 91)
 | 
				
			||||||
                await CurrencyHandler.AddCurrencyAsync(Context.User, "Betroll Gamble", (int)(amount * NadekoBot.BotConfig.Betroll100Multiplier), false).ConfigureAwait(false);
 | 
					                {
 | 
				
			||||||
 | 
					                    str += GetText("br_win", (amount * NadekoBot.BotConfig.Betroll67Multiplier) + CurrencySign, 66);
 | 
				
			||||||
 | 
					                    await CurrencyHandler.AddCurrencyAsync(Context.User, "Betroll Gamble",
 | 
				
			||||||
 | 
					                        (int) (amount * NadekoBot.BotConfig.Betroll67Multiplier), false).ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else if (rnd < 100)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    str += GetText("br_win", (amount * NadekoBot.BotConfig.Betroll91Multiplier) + CurrencySign, 90);
 | 
				
			||||||
 | 
					                    await CurrencyHandler.AddCurrencyAsync(Context.User, "Betroll Gamble",
 | 
				
			||||||
 | 
					                        (int) (amount * NadekoBot.BotConfig.Betroll91Multiplier), false).ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    str += GetText("br_win", (amount * NadekoBot.BotConfig.Betroll100Multiplier) + CurrencySign, 100) + " 👑";
 | 
				
			||||||
 | 
					                    await CurrencyHandler.AddCurrencyAsync(Context.User, "Betroll Gamble",
 | 
				
			||||||
 | 
					                        (int) (amount * NadekoBot.BotConfig.Betroll100Multiplier), false).ConfigureAwait(false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            Console.WriteLine("started sending");
 | 
				
			||||||
            await Context.Channel.SendConfirmAsync(str).ConfigureAwait(false);
 | 
					            await Context.Channel.SendConfirmAsync(str).ConfigureAwait(false);
 | 
				
			||||||
 | 
					            Console.WriteLine("done sending");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [NadekoCommand, Usage, Description, Aliases]
 | 
					        [NadekoCommand, Usage, Description, Aliases]
 | 
				
			||||||
        public async Task Leaderboard()
 | 
					        public async Task Leaderboard()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var richest = new List<Currency>();
 | 
					            List<Currency> richest;
 | 
				
			||||||
            using (var uow = DbHandler.UnitOfWork())
 | 
					            using (var uow = DbHandler.UnitOfWork())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                richest = uow.Currency.GetTopRichest(9).ToList();
 | 
					                richest = uow.Currency.GetTopRichest(9).ToList();
 | 
				
			||||||
@@ -255,22 +254,22 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
            if (!richest.Any())
 | 
					            if (!richest.Any())
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
            var embed = new EmbedBuilder()
 | 
					            var embed = new EmbedBuilder()
 | 
				
			||||||
                .WithOkColor()
 | 
					                .WithOkColor()
 | 
				
			||||||
                .WithTitle(NadekoBot.BotConfig.CurrencySign + " Leaderboard");
 | 
					                .WithTitle(NadekoBot.BotConfig.CurrencySign + " " + GetText("leaderboard"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (var i = 0; i < richest.Count; i++)
 | 
					            for (var i = 0; i < richest.Count; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var x = richest[i];
 | 
					                var x = richest[i];
 | 
				
			||||||
                var usr = await Context.Guild.GetUserAsync(x.UserId).ConfigureAwait(false);
 | 
					                var usr = await Context.Guild.GetUserAsync(x.UserId).ConfigureAwait(false);
 | 
				
			||||||
                var usrStr = "";
 | 
					                var usrStr = usr == null 
 | 
				
			||||||
                if (usr == null)
 | 
					                    ? x.UserId.ToString() 
 | 
				
			||||||
                    usrStr = x.UserId.ToString();
 | 
					                    : usr.Username?.TrimTo(20, true);
 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                    usrStr = usr.Username?.TrimTo(20, true);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                embed.AddField(efb => efb.WithName("#" + (i + 1) + " " + usrStr).WithValue(x.Amount.ToString() + " " + NadekoBot.BotConfig.CurrencySign).WithIsInline(true));
 | 
					                var j = i;
 | 
				
			||||||
 | 
					                embed.AddField(efb => efb.WithName("#" + (j + 1) + " " + usrStr)
 | 
				
			||||||
 | 
					                                         .WithValue(x.Amount.ToString() + " " + NadekoBot.BotConfig.CurrencySign)
 | 
				
			||||||
 | 
					                                         .WithIsInline(true));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            await Context.Channel.EmbedAsync(embed).ConfigureAwait(false);
 | 
					            await Context.Channel.EmbedAsync(embed).ConfigureAwait(false);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,14 +67,26 @@ namespace NadekoBot.Modules
 | 
				
			|||||||
            if (string.IsNullOrWhiteSpace(text))
 | 
					            if (string.IsNullOrWhiteSpace(text))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                LogManager.GetCurrentClassLogger().Warn(lowerModuleTypeName + "_" + key + " key is missing from " + cultureInfo + " response strings. PLEASE REPORT THIS.");
 | 
					                LogManager.GetCurrentClassLogger().Warn(lowerModuleTypeName + "_" + key + " key is missing from " + cultureInfo + " response strings. PLEASE REPORT THIS.");
 | 
				
			||||||
                return NadekoBot.ResponsesResourceManager.GetString(lowerModuleTypeName + "_" + key, _usCultureInfo) ?? $"Error: dkey {lowerModuleTypeName + "_" + key} found!";
 | 
					                text = NadekoBot.ResponsesResourceManager.GetString(lowerModuleTypeName + "_" + key, _usCultureInfo) ?? $"Error: dkey {lowerModuleTypeName + "_" + key} not found!";
 | 
				
			||||||
 | 
					                if (string.IsNullOrWhiteSpace(text))
 | 
				
			||||||
 | 
					                    return "I cant tell if you command is executed, because there was an error printing out the response. Key '" +
 | 
				
			||||||
 | 
					                        lowerModuleTypeName + "_" + key + "' " + "is missing from resources. Please report this.";
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return text;
 | 
					            return text;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static string GetTextStatic(string key, CultureInfo cultureInfo, string lowerModuleTypeName, params object[] replacements)
 | 
					        public static string GetTextStatic(string key, CultureInfo cultureInfo, string lowerModuleTypeName,
 | 
				
			||||||
 | 
					            params object[] replacements)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return string.Format(GetTextStatic(key, cultureInfo, lowerModuleTypeName), replacements);
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return string.Format(GetTextStatic(key, cultureInfo, lowerModuleTypeName), replacements);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (FormatException)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return "I cant tell if you command is executed, because there was an error printing out the response. Key '" +
 | 
				
			||||||
 | 
					                       lowerModuleTypeName + "_" + key + "' " + "is not properly formatted. Please report this.";
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        protected string GetText(string key) =>
 | 
					        protected string GetText(string key) =>
 | 
				
			||||||
@@ -85,26 +97,26 @@ namespace NadekoBot.Modules
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        public Task<IUserMessage> ErrorLocalized(string textKey, params object[] replacements)
 | 
					        public Task<IUserMessage> ErrorLocalized(string textKey, params object[] replacements)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var text = GetText(textKey);
 | 
					            var text = GetText(textKey, replacements);
 | 
				
			||||||
            return Context.Channel.SendErrorAsync(string.Format(text, replacements));
 | 
					            return Context.Channel.SendErrorAsync(text);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Task<IUserMessage> ReplyErrorLocalized(string textKey, params object[] replacements)
 | 
					        public Task<IUserMessage> ReplyErrorLocalized(string textKey, params object[] replacements)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var text = GetText(textKey);
 | 
					            var text = GetText(textKey, replacements);
 | 
				
			||||||
            return Context.Channel.SendErrorAsync(Context.User.Mention + " " + string.Format(text, replacements));
 | 
					            return Context.Channel.SendErrorAsync(Context.User.Mention + " " + text);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Task<IUserMessage> ConfirmLocalized(string textKey, params object[] replacements)
 | 
					        public Task<IUserMessage> ConfirmLocalized(string textKey, params object[] replacements)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var text = GetText(textKey);
 | 
					            var text = GetText(textKey, replacements);
 | 
				
			||||||
            return Context.Channel.SendConfirmAsync(string.Format(text, replacements));
 | 
					            return Context.Channel.SendConfirmAsync(text);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Task<IUserMessage> ReplyConfirmLocalized(string textKey, params object[] replacements)
 | 
					        public Task<IUserMessage> ReplyConfirmLocalized(string textKey, params object[] replacements)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var text = GetText(textKey);
 | 
					            var text = GetText(textKey, replacements);
 | 
				
			||||||
            return Context.Channel.SendConfirmAsync(Context.User.Mention + " " + string.Format(text, replacements));
 | 
					            return Context.Channel.SendConfirmAsync(Context.User.Mention + " " + text);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,2 +1,3 @@
 | 
				
			|||||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
 | 
					<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
 | 
				
			||||||
	<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=modules_005Cadministration_005Ccommands/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
 | 
						<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=modules_005Cadministration_005Ccommands/@EntryIndexedValue">True</s:Boolean>
 | 
				
			||||||
 | 
						<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=modules_005Cgambling_005Ccommands/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
 | 
				
			||||||
							
								
								
									
										234
									
								
								src/NadekoBot/Resources/ResponseStrings.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										234
									
								
								src/NadekoBot/Resources/ResponseStrings.Designer.cs
									
									
									
										generated
									
									
									
								
							@@ -2072,6 +2072,240 @@ namespace NadekoBot.Resources {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to has awarded {0} to {1}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_awarded {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_awarded", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Betflip Gamble.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_betflip_gamble {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_betflip_gamble", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Better luck next time ^_^.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_better_luck {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_better_luck", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Congratulations! You won {0} for rolling above {1}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_br_win {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_br_win", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to You guessed it! You won {0}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_flip_guess {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_flip_guess", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Invalid number specified. You can flip 1 to {0} coins..
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_flip_invalid {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_flip_invalid", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to flipped {0}..
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_flipped {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_flipped", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to has gifted {0} to {1}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_gifted {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_gifted", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to {0} has {1}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_has {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_has", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Heads.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_heads {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_heads", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Leaderboard.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_leaderboard {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_leaderboard", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Awarded {0} to {1} users from {2} role..
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_mass_award {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_mass_award", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to You can't bet more than {0}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_max_bet_limit {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_max_bet_limit", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to You can't bet less than {0}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_min_bet_limit {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_min_bet_limit", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to You don't have enough {0}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_not_enough {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_not_enough", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Raffled User.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_raffled_user {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_raffled_user", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to You rolled {0}..
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_roll {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_roll", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Bet.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_slot_bet {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_slot_bet", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to WOAAHHHHHH!!! Congratulations!!! x{0}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_slot_jackpot {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_slot_jackpot", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to A single {0}, x{1}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_slot_single {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_slot_single", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Wow! Lucky! Three of a kind! x{0}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_slot_three {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_slot_three", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Good job! Two {0} - bet x{1}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_slot_two {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_slot_two", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Won.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_slot_won {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_slot_won", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to Tails.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_tails {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_tails", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to successfully took {0} from {1}.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_take {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_take", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        ///    Looks up a localized string similar to was unable to take {0} from{1} because the user doesn't have that much {2}!.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static string gambling_take_fail {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ResourceManager.GetString("gambling_take_fail", resourceCulture);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        ///    Looks up a localized string similar to Back to ToC.
 | 
					        ///    Looks up a localized string similar to Back to ToC.
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -870,6 +870,87 @@ Reason: {1}</value>
 | 
				
			|||||||
  <data name="adminsitration_sb_user" xml:space="preserve">
 | 
					  <data name="adminsitration_sb_user" xml:space="preserve">
 | 
				
			||||||
    <value>User Soft-Banned</value>
 | 
					    <value>User Soft-Banned</value>
 | 
				
			||||||
  </data>
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_awarded" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>has awarded {0} to {1}</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_betflip_gamble" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Betflip Gamble</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_better_luck" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Better luck next time ^_^</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_br_win" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Congratulations! You won {0} for rolling above {1}</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_flipped" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>flipped {0}.</value>
 | 
				
			||||||
 | 
					    <comment>User flipped tails.</comment>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_flip_guess" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>You guessed it! You won {0}</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_flip_invalid" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Invalid number specified. You can flip 1 to {0} coins.</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_gifted" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>has gifted {0} to {1}</value>
 | 
				
			||||||
 | 
					    <comment>X has gifted 15 flowers to Y</comment>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_has" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>{0} has {1}</value>
 | 
				
			||||||
 | 
					    <comment>X has Y flowers</comment>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_heads" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Heads</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_leaderboard" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Leaderboard</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_mass_award" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Awarded {0} to {1} users from {2} role.</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_max_bet_limit" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>You can't bet more than {0}</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_min_bet_limit" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>You can't bet less than {0}</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_not_enough" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>You don't have enough {0}</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_raffled_user" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Raffled User</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_roll" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>You rolled {0}.</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_slot_bet" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Bet</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_slot_jackpot" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>WOAAHHHHHH!!! Congratulations!!! x{0}</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_slot_single" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>A single {0}, x{1}</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_slot_three" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Wow! Lucky! Three of a kind! x{0}</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_slot_two" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Good job! Two {0} - bet x{1}</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_slot_won" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Won</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_tails" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>Tails</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_take" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>successfully took {0} from {1}</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="gambling_take_fail" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>was unable to take {0} from{1} because the user doesn't have that much {2}!</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
  <data name="help_back_to_toc" xml:space="preserve">
 | 
					  <data name="help_back_to_toc" xml:space="preserve">
 | 
				
			||||||
    <value>Back to ToC</value>
 | 
					    <value>Back to ToC</value>
 | 
				
			||||||
  </data>
 | 
					  </data>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user