diff --git a/KfChatDotNetBot/Commands/Kasino/BlackjackCommand.cs b/KfChatDotNetBot/Commands/Kasino/BlackjackCommand.cs index 9f5a0b3..c7dfea0 100644 --- a/KfChatDotNetBot/Commands/Kasino/BlackjackCommand.cs +++ b/KfChatDotNetBot/Commands/Kasino/BlackjackCommand.cs @@ -41,8 +41,23 @@ public class BlackjackCommand : ICommand public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx) { - var cleanupDelay = TimeSpan.FromMilliseconds( - (await SettingsProvider.GetValueAsync(BuiltIn.Keys.KasinoBlackjackCleanupDelay)).ToType()); + var settings = await SettingsProvider.GetMultipleValuesAsync([ + BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay, BuiltIn.Keys.KasinoBlackjackCleanupDelay, + BuiltIn.Keys.KasinoBlackjackEnabled + ]); + + // Check if blackjack is enabled + var blackjackEnabled = (settings[BuiltIn.Keys.KasinoBlackjackEnabled]).ToBoolean(); + if (!blackjackEnabled) + { + var gameDisabledCleanupDelay= TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay].ToType()); + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, blackjack is currently disabled.", + true, autoDeleteAfter: gameDisabledCleanupDelay); + return; + } + + var cleanupDelay = TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoBlackjackCleanupDelay].ToType()); // Check if this is a new game or continuing existing game if (arguments.TryGetValue("amount", out var amountGroup)) diff --git a/KfChatDotNetBot/Commands/Kasino/DiceCommand.cs b/KfChatDotNetBot/Commands/Kasino/DiceCommand.cs index a980b26..8e0f74e 100644 --- a/KfChatDotNetBot/Commands/Kasino/DiceCommand.cs +++ b/KfChatDotNetBot/Commands/Kasino/DiceCommand.cs @@ -30,7 +30,24 @@ public class DiceCommand : ICommand public async Task RunCommand(ChatBot botInstance, MessageModel messagen, UserDbModel user, GroupCollection arguments, CancellationToken ctx) { - var cleanupDelay = TimeSpan.FromMilliseconds((await SettingsProvider.GetValueAsync(BuiltIn.Keys.KasinoDiceCleanupDelay)).ToType()); + var settings = await SettingsProvider.GetMultipleValuesAsync([ + BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay, BuiltIn.Keys.KasinoDiceCleanupDelay, + BuiltIn.Keys.KasinoDiceEnabled + ]); + + // Check if dice is enabled + var diceEnabled = (settings[BuiltIn.Keys.KasinoDiceEnabled]).ToBoolean(); + if (!diceEnabled) + { + var gameDisabledCleanupDelay= TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay].ToType()); + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, dice is currently disabled.", + true, autoDeleteAfter: gameDisabledCleanupDelay); + return; + } + + var cleanupDelay = TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoDiceCleanupDelay].ToType()); + if (!arguments.TryGetValue("amount", out var amount)) { await botInstance.SendChatMessageAsync( diff --git a/KfChatDotNetBot/Commands/Kasino/GuessWhatNumberCommand.cs b/KfChatDotNetBot/Commands/Kasino/GuessWhatNumberCommand.cs index 9b52a4b..11a04e0 100644 --- a/KfChatDotNetBot/Commands/Kasino/GuessWhatNumberCommand.cs +++ b/KfChatDotNetBot/Commands/Kasino/GuessWhatNumberCommand.cs @@ -24,7 +24,24 @@ public class GuessWhatNumberCommand : ICommand public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx) { - var cleanupDelay = TimeSpan.FromMilliseconds((await SettingsProvider.GetValueAsync(BuiltIn.Keys.KasinoGuessWhatNumberCleanupDelay)).ToType()); + var settings = await SettingsProvider.GetMultipleValuesAsync([ + BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay, BuiltIn.Keys.KasinoGuessWhatNumberCleanupDelay, + BuiltIn.Keys.KasinoGuessWhatNumberEnabled + ]); + + // Check if guesswhatnumber is enabled + var guessWhatNumberEnabled = (settings[BuiltIn.Keys.KasinoGuessWhatNumberEnabled]).ToBoolean(); + if (!guessWhatNumberEnabled) + { + var gameDisabledCleanupDelay= TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay].ToType()); + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, guess what number is currently disabled.", + true, autoDeleteAfter: gameDisabledCleanupDelay); + return; + } + + var cleanupDelay = TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoGuessWhatNumberCleanupDelay].ToType()); + if (!arguments.TryGetValue("amount", out var amount)) { await botInstance.SendChatMessageAsync($"{user.FormatUsername()}, not enough arguments. !guess ", true, autoDeleteAfter: cleanupDelay); diff --git a/KfChatDotNetBot/Commands/Kasino/KasinoAdminCommands.cs b/KfChatDotNetBot/Commands/Kasino/KasinoAdminCommands.cs index c7a2aca..9ebee48 100644 --- a/KfChatDotNetBot/Commands/Kasino/KasinoAdminCommands.cs +++ b/KfChatDotNetBot/Commands/Kasino/KasinoAdminCommands.cs @@ -4,6 +4,7 @@ using KfChatDotNetBot.Extensions; using KfChatDotNetBot.Models; using KfChatDotNetBot.Models.DbModels; using KfChatDotNetBot.Services; +using KfChatDotNetBot.Settings; using KfChatDotNetWsClient.Models.Events; using Microsoft.EntityFrameworkCore; @@ -73,4 +74,121 @@ public class TempExcludeCommand : ICommand await db.SaveChangesAsync(ctx); await botInstance.SendChatMessageAsync($"{user.FormatUsername()}, excluded {targetUser.KfUsername} for {exclusionTime.Humanize()}", true); } +} + +internal record KasinoGameSetting(WagerGame Game, string SettingKey, string Alias); + +internal static class KasinoGameSettingMap +{ + internal static readonly IReadOnlyList All = new List + { + new(WagerGame.GuessWhatNumber, BuiltIn.Keys.KasinoGuessWhatNumberEnabled, "guesswhatnumber"), + new(WagerGame.Dice, BuiltIn.Keys.KasinoDiceEnabled, "dice"), + new(WagerGame.Limbo, BuiltIn.Keys.KasinoLimboEnabled, "limbo"), + new(WagerGame.Mines, BuiltIn.Keys.KasinoMinesEnabled, "mines"), + new(WagerGame.Wheel, BuiltIn.Keys.KasinoWheelEnabled, "wheel"), + new(WagerGame.Blackjack, BuiltIn.Keys.KasinoBlackjackEnabled, "blackjack"), + new(WagerGame.Planes, BuiltIn.Keys.KasinoPlanesEnabled, "planes"), + new(WagerGame.LambChop, BuiltIn.Keys.KasinoLambchopEnabled, "lambchop"), + new(WagerGame.Keno, BuiltIn.Keys.KasinoKenoEnabled, "keno"), + new(WagerGame.CoinFlip, BuiltIn.Keys.KasinoCoinflipEnabled, "coinflip"), + new(WagerGame.Slots, BuiltIn.Keys.KasinoSlotsEnabled, "slots") + }; + + internal static KasinoGameSetting? FindByAlias(string alias) => + All.FirstOrDefault(g => + g.Alias.Equals(alias, StringComparison.OrdinalIgnoreCase)); +} +public class KasinoGameToggleCommand : ICommand +{ + public List Patterns => [ + new Regex(@"^admin kasino (?\w+) (?enable|disable)$", RegexOptions.IgnoreCase) + ]; + + public string? HelpText => "Enable or disable a Kasino game (use 'all' to toggle all games)"; + public UserRight RequiredRight => UserRight.TrueAndHonest; + public TimeSpan Timeout => TimeSpan.FromSeconds(10); + public RateLimitOptionsModel? RateLimitOptions => null; + + public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, + CancellationToken ctx) + { + if (!arguments.TryGetValue("game", out var gameArg) || !arguments.TryGetValue("action", out var actionArg)) + { + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, usage: !admin kasino enable|disable", true); + return; + } + + var gameName = gameArg.Value.ToLower(); + var action = actionArg.Value.ToLower(); + var shouldEnable = action == "enable"; + + var status = shouldEnable ? "enabled" : "disabled"; + + // Handle "all" games + if (gameName == "all") + { + foreach (var gameInfo in KasinoGameSettingMap.All) + { + await SettingsProvider.SetValueAsBooleanAsync(gameInfo.SettingKey, shouldEnable); + } + + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, all {KasinoGameSettingMap.All.Count} Kasino games have been {status}.", true); + return; + } + + // Handle individual game + var gameInfoMap = KasinoGameSettingMap.FindByAlias(gameName); + + if (gameInfoMap is null) + { + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, unknown game '{gameName}'. Use '!admin kasino games' to see available games, or use 'all' to toggle all games.", + true); + return; + } + + await SettingsProvider.SetValueAsBooleanAsync(gameInfoMap.SettingKey, shouldEnable); + + var gameDisplayName = gameInfoMap.Game.Humanize(); + + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, {gameDisplayName} has been {status}.", true); + } +} + +public class KasinoGameListCommand : ICommand +{ + public List Patterns => [ + new Regex(@"^admin kasino games$", RegexOptions.IgnoreCase) + ]; + + public string? HelpText => "List all kasino games and their status"; + public UserRight RequiredRight => UserRight.TrueAndHonest; + public TimeSpan Timeout => TimeSpan.FromSeconds(10); + public RateLimitOptionsModel? RateLimitOptions => null; + + public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, + CancellationToken ctx) + { + var response = $"{user.FormatUsername()}, Kasino games:[br]"; + + foreach (var game in KasinoGameSettingMap.All + .OrderBy(g => g.Game.ToString())) + { + var isEnabled = (await SettingsProvider + .GetValueAsync(game.SettingKey)) + .ToBoolean(); + + var status = isEnabled + ? $"[B][COLOR={BuiltIn.Keys.KiwiFarmsGreenColor}]ENABLED[/COLOR][/B]" + : $"[B][COLOR={BuiltIn.Keys.KiwiFarmsRedColor}]DISABLED[/COLOR][/B]"; + + response += $"{game.Game.Humanize()}: {status}[br]"; + } + + await botInstance.SendChatMessageAsync(response,true); + } } \ No newline at end of file diff --git a/KfChatDotNetBot/Commands/Kasino/KenoCommand.cs b/KfChatDotNetBot/Commands/Kasino/KenoCommand.cs index 2a79982..fe4e101 100644 --- a/KfChatDotNetBot/Commands/Kasino/KenoCommand.cs +++ b/KfChatDotNetBot/Commands/Kasino/KenoCommand.cs @@ -39,7 +39,24 @@ public class KenoCommand : ICommand public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx) { - var cleanupDelay = TimeSpan.FromMilliseconds((await SettingsProvider.GetValueAsync(BuiltIn.Keys.KasinoKenoCleanupDelay)).ToType()); + var settings = await SettingsProvider.GetMultipleValuesAsync([ + BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay, BuiltIn.Keys.KasinoKenoCleanupDelay, + BuiltIn.Keys.KasinoKenoFrameDelay, BuiltIn.Keys.KasinoKenoEnabled + ]); + + // Check if keno is enabled + var kenoEnabled = (settings[BuiltIn.Keys.KasinoKenoEnabled]).ToBoolean(); + if (!kenoEnabled) + { + var gameDisabledCleanupDelay= TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay].ToType()); + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, keno is currently disabled.", + true, autoDeleteAfter: gameDisabledCleanupDelay); + return; + } + + var cleanupDelay = TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoKenoCleanupDelay].ToType()); + if (!arguments.TryGetValue("amount", out var amount)) //if user just enters !keno { await botInstance.SendChatMessageAsync( @@ -145,7 +162,7 @@ public class KenoCommand : ICommand throw new Exception($"_kenoTable chat message ID never got populated. Tracker status is: {_kenoTable?.Status}"); } - var frameDelay = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.KasinoKenoFrameDelay)).ToType(); + var frameDelay = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.KasinoKenoFrameDelay)).ToType(); // this should be grabbed from the settings dict declared at the start but idk how to do it cleanly atm. //FIRST FRAME 11111111111111111111111111111 for (var frame = 0; frame < 10; frame++) //1 frame per casino number { diff --git a/KfChatDotNetBot/Commands/Kasino/LambchopCommand.cs b/KfChatDotNetBot/Commands/Kasino/LambchopCommand.cs index 7525aa0..6d5aac3 100644 --- a/KfChatDotNetBot/Commands/Kasino/LambchopCommand.cs +++ b/KfChatDotNetBot/Commands/Kasino/LambchopCommand.cs @@ -61,7 +61,24 @@ public class LambchopCommand : ICommand public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx) { - var cleanupDelay = TimeSpan.FromMilliseconds((await SettingsProvider.GetValueAsync(BuiltIn.Keys.KasinoLambchopCleanupDelay)).ToType()); + var settings = await SettingsProvider.GetMultipleValuesAsync([ + BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay, BuiltIn.Keys.KasinoLambchopCleanupDelay, + BuiltIn.Keys.KasinoLambchopEnabled + ]); + + // Check if lambchop is enabled + var lambchopEnabled = (settings[BuiltIn.Keys.KasinoLambchopEnabled]).ToBoolean(); + if (!lambchopEnabled) + { + var gameDisabledCleanupDelay= TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay].ToType()); + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, lambchop is currently disabled.", + true, autoDeleteAfter: gameDisabledCleanupDelay); + return; + } + + var cleanupDelay = TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoLambchopCleanupDelay].ToType()); + if (!arguments.TryGetValue("amount", out var amount)) { await botInstance.SendChatMessageAsync($"{user.FormatUsername()}, not enough arguments. !lambchop ", true, autoDeleteAfter: cleanupDelay); diff --git a/KfChatDotNetBot/Commands/Kasino/LimboCommand.cs b/KfChatDotNetBot/Commands/Kasino/LimboCommand.cs index 75ae7fa..756a540 100644 --- a/KfChatDotNetBot/Commands/Kasino/LimboCommand.cs +++ b/KfChatDotNetBot/Commands/Kasino/LimboCommand.cs @@ -40,9 +40,24 @@ public class LimboCommand : ICommand { decimal limboNumber; //user number var settings = await SettingsProvider.GetMultipleValuesAsync([ - BuiltIn.Keys.KasinoLimboCleanupDelay, BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor + BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay, + BuiltIn.Keys.KasinoLimboCleanupDelay, BuiltIn.Keys.KasinoLimboEnabled, + BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor ]); + + // Check if limbo is enabled + var limboEnabled = (settings[BuiltIn.Keys.KasinoLimboEnabled]).ToBoolean(); + if (!limboEnabled) + { + var gameDisabledCleanupDelay= TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay].ToType()); + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, limbo is currently disabled.", + true, autoDeleteAfter: gameDisabledCleanupDelay); + return; + } + var cleanupDelay = TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoLimboCleanupDelay].ToType()); + if (!arguments.TryGetValue("amount", out var amount)) { await botInstance.SendChatMessageAsync($"{user.FormatUsername()}, not enough arguments. !limbo ", diff --git a/KfChatDotNetBot/Commands/Kasino/PlanesCommand.cs b/KfChatDotNetBot/Commands/Kasino/PlanesCommand.cs index 540d2ed..6258454 100644 --- a/KfChatDotNetBot/Commands/Kasino/PlanesCommand.cs +++ b/KfChatDotNetBot/Commands/Kasino/PlanesCommand.cs @@ -45,10 +45,23 @@ public class Planes : ICommand CancellationToken ctx) { var settings = await SettingsProvider.GetMultipleValuesAsync([ + BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay, BuiltIn.Keys.KasinoPlanesEnabled, BuiltIn.Keys.KasinoPlanesCleanupDelay, BuiltIn.Keys.KasinoPlanesRandomRiggeryEnabled, BuiltIn.Keys.KasinoPlanesTargetedRiggeryEnabled, BuiltIn.Keys.KasinoPlanesTargetedRiggeryVictims ]); + + // Check if planes is enabled + var planesEnabled = (settings[BuiltIn.Keys.KasinoPlanesEnabled]).ToBoolean(); + if (!planesEnabled) + { + var gameDisabledCleanupDelay= TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay].ToType()); + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, planes is currently disabled.", + true, autoDeleteAfter: gameDisabledCleanupDelay); + return; + } var cleanupDelay = TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoPlanesCleanupDelay].ToType()); + var logger = LogManager.GetCurrentClassLogger(); if (!arguments.TryGetValue("amount", out var amount)) { diff --git a/KfChatDotNetBot/Commands/Kasino/SlotsCommand.cs b/KfChatDotNetBot/Commands/Kasino/SlotsCommand.cs index ff05751..55d93a2 100644 --- a/KfChatDotNetBot/Commands/Kasino/SlotsCommand.cs +++ b/KfChatDotNetBot/Commands/Kasino/SlotsCommand.cs @@ -43,6 +43,21 @@ public class SlotsCommand : ICommand public async Task RunCommand(ChatBot botInstance, MessageModel messagen, UserDbModel user, GroupCollection arguments, CancellationToken ctx) { + var settings = await SettingsProvider.GetMultipleValuesAsync([ + BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay, BuiltIn.Keys.KasinoSlotsEnabled + ]); + + // Check if slots is enabled + var slotsEnabled = (settings[BuiltIn.Keys.KasinoSlotsEnabled]).ToBoolean(); + if (!slotsEnabled) + { + var gameDisabledCleanupDelay= TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay].ToType()); + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, planes is currently disabled.", + true, autoDeleteAfter: gameDisabledCleanupDelay); + return; + } + if (!arguments.TryGetValue("amount", out var amount)) //if user just enters !keno { await botInstance.SendChatMessageAsync( diff --git a/KfChatDotNetBot/Commands/Kasino/WheelCommand.cs b/KfChatDotNetBot/Commands/Kasino/WheelCommand.cs index 02ac2b0..1edb9ce 100644 --- a/KfChatDotNetBot/Commands/Kasino/WheelCommand.cs +++ b/KfChatDotNetBot/Commands/Kasino/WheelCommand.cs @@ -64,7 +64,23 @@ public class WheelCommand : ICommand public async Task RunCommand(ChatBot botInstance, MessageModel message, UserDbModel user, GroupCollection arguments, CancellationToken ctx) { - var cleanupDelay = TimeSpan.FromMilliseconds((await SettingsProvider.GetValueAsync(BuiltIn.Keys.KasinoWheelCleanupDelay)).ToType()); + var settings = await SettingsProvider.GetMultipleValuesAsync([ + BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay, BuiltIn.Keys.KasinoWheelCleanupDelay, + BuiltIn.Keys.KasinoWheelEnabled + ]); + + // Check if wheel is enabled + var wheelEnabled = (settings[BuiltIn.Keys.KasinoWheelEnabled]).ToBoolean(); + if (!wheelEnabled) + { + var gameDisabledCleanupDelay= TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay].ToType()); + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, wheel is currently disabled.", + true, autoDeleteAfter: gameDisabledCleanupDelay); + return; + } + + var cleanupDelay = TimeSpan.FromMilliseconds(settings[BuiltIn.Keys.KasinoWheelCleanupDelay].ToType()); if (!arguments.TryGetValue("amount", out var amount)) { await botInstance.SendChatMessageAsync($"{user.FormatUsername()}, not enough arguments. !wheel ", true, autoDeleteAfter: cleanupDelay); diff --git a/KfChatDotNetBot/Settings/BuiltIn.cs b/KfChatDotNetBot/Settings/BuiltIn.cs index 67ccc2f..7d0dc64 100644 --- a/KfChatDotNetBot/Settings/BuiltIn.cs +++ b/KfChatDotNetBot/Settings/BuiltIn.cs @@ -473,6 +473,31 @@ public static class BuiltIn public static string KasinoDailyDollarEnabled = "Kasino.DailyDollar.Enabled"; [BuiltInSetting("Timezone to use for daily reloads etc.", SettingValueType.Text, "Eastern Standard Time")] public static string KasinoTimezone = "Kasino.Timezone"; + // kasino game controll + [BuiltInSetting("Delay in milliseconds before cleaning up message indicating a Kasino game is disabled", SettingValueType.Text, "15000", WholeNumberRegex)] + public static string KasinoGameDisabledMessageCleanupDelay = "Kasino.GameDisabledMessage.CleanupDelay"; + [BuiltInSetting("Whether guess what number is enabled", SettingValueType.Boolean, "true", BooleanRegex)] + public static string KasinoGuessWhatNumberEnabled = "Kasino.GuessWhatNumber.Enabled"; + [BuiltInSetting("Whether dice is enabled", SettingValueType.Boolean, "true", BooleanRegex)] + public static string KasinoDiceEnabled = "Kasino.Dice.Enabled"; + [BuiltInSetting("Whether limbo is enabled", SettingValueType.Boolean, "true", BooleanRegex)] + public static string KasinoLimboEnabled = "Kasino.Limbo.Enabled"; + [BuiltInSetting("Whether mines is enabled", SettingValueType.Boolean, "true", BooleanRegex)] + public static string KasinoMinesEnabled = "Kasino.Mines.Enabled"; + [BuiltInSetting("Whether wheel is enabled", SettingValueType.Boolean, "true", BooleanRegex)] + public static string KasinoWheelEnabled = "Kasino.Wheel.Enabled"; + [BuiltInSetting("Whether blackjack is enabled", SettingValueType.Boolean, "true", BooleanRegex)] + public static string KasinoBlackjackEnabled = "Kasino.Blackjack.Enabled"; + [BuiltInSetting("Whether planes is enabled", SettingValueType.Boolean, "true", BooleanRegex)] + public static string KasinoPlanesEnabled = "Kasino.Planes.Enabled"; + [BuiltInSetting("Whether lambchop is enabled", SettingValueType.Boolean, "true", BooleanRegex)] + public static string KasinoLambchopEnabled = "Kasino.Lambchop.Enabled"; + [BuiltInSetting("Whether keno is enabled", SettingValueType.Boolean, "true", BooleanRegex)] + public static string KasinoKenoEnabled = "Kasino.Keno.Enabled"; + [BuiltInSetting("Whether coinflip is enabled", SettingValueType.Boolean, "true", BooleanRegex)] + public static string KasinoCoinflipEnabled = "Kasino.Coinflip.Enabled"; + [BuiltInSetting("Whether slots is enabled", SettingValueType.Boolean, "true", BooleanRegex)] + public static string KasinoSlotsEnabled = "Kasino.Slots.Enabled"; } }