From 2c55e94bfdc7d035adf37b16f1f51e7dd93bde11 Mon Sep 17 00:00:00 2001 From: barelyprofessional <150058423+barelyprofessional@users.noreply.github.com> Date: Thu, 9 Apr 2026 21:28:24 -0500 Subject: [PATCH] Fixed green/red colors and added support for multiple bets from the same participant --- KfChatDotNetBot/Services/KasinoKrash.cs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/KfChatDotNetBot/Services/KasinoKrash.cs b/KfChatDotNetBot/Services/KasinoKrash.cs index 6fb2e16..7822c7e 100644 --- a/KfChatDotNetBot/Services/KasinoKrash.cs +++ b/KfChatDotNetBot/Services/KasinoKrash.cs @@ -78,8 +78,9 @@ public class KasinoKrash : IDisposable var multi = TheGame.CurrentMulti; var payout = multi * krashBet.Wager - krashBet.Wager; var newBalance = await Money.NewWagerAsync(krashBet.Gambler.Id, krashBet.Wager, payout, WagerGame.Krash, ct: _ct); + var green = await SettingsProvider.GetValueAsync(BuiltIn.Keys.KiwiFarmsGreenColor); await _kfChatBot.SendChatMessageAsync( - $"{krashBet.Gambler.User.FormatUsername()}, you [color=limegreen][b]won[/b][/color] {await payout.FormatKasinoCurrencyAsync()} by cashing out the krash at {multi}x!", + $"{krashBet.Gambler.User.FormatUsername()}, you [color={green.Value}][b]won[/b][/color] {await payout.FormatKasinoCurrencyAsync()} by cashing out the krash at {multi}x!", true, autoDeleteAfter: TimeSpan.FromSeconds(10)); if (_kfChatBot.BotServices.KasinoShop != null) { @@ -97,9 +98,8 @@ public class KasinoKrash : IDisposable if (TheGame == null) throw new InvalidOperationException("Failed to retrieve state or no krash is in progress"); _ = RunGame(); } - if (TheGame.Bets.Any(x => x.Gambler.User.KfId == gambler.User.KfId)) return; if (!TheGame.BetsAccepted) return; - var bet = new KrashBet{Gambler = gambler, Wager = wager, Multi = multi}; + var bet = new KrashBet { Gambler = gambler, Wager = wager, Multi = multi }; TheGame.Bets.Add(bet); if (_kfChatBot.BotServices.KasinoShop != null) { @@ -140,7 +140,7 @@ public class KasinoKrash : IDisposable var bets = ""; foreach (var bet in TheGame.Bets) { - bets += $"{bet.Gambler.User.FormatUsername()} is betting {bet.Wager}"; + bets += $"{bet.Gambler.User.FormatUsername()} is betting {await bet.Wager.FormatKasinoCurrencyAsync()}"; if (bet.Multi != -1) bets += $" on {bet.Multi}x!"; else bets += " on freehand!"; bets += "[br]"; @@ -164,6 +164,8 @@ public class KasinoKrash : IDisposable var growthRate = 1.02m; var growthAcceleration = 1.00185m; await _kfChatBot.KfClient.DeleteMessageAsync(msg.ChatMessageUuid!); + var green = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.KiwiFarmsGreenColor)).Value; + var red = (await SettingsProvider.GetValueAsync(BuiltIn.Keys.KiwiFarmsRedColor)).Value; msg = await _kfChatBot.SendChatMessageAsync($"[center][b][size=200][color=limegreen]{TheGame.CurrentMulti}x"); var defaultGrowth = 0.01m; interval = TimeSpan.FromSeconds(0.1); @@ -171,14 +173,14 @@ public class KasinoKrash : IDisposable while (await timer.WaitForNextTickAsync(_ct)) { TheGame.KrashAccepted = true; - await _kfChatBot.KfClient.EditMessageAsync(msg.ChatMessageUuid!, $"[center][b][size=200][color=limegreen]{Math.Truncate(TheGame.CurrentMulti*100)/100}x"); + await _kfChatBot.KfClient.EditMessageAsync(msg.ChatMessageUuid!, $"[center][b][size=200][color={green}]{Math.Truncate(TheGame.CurrentMulti*100)/100}x"); TheGame.CurrentMulti += defaultGrowth; defaultGrowth *= growthRate; growthRate *= growthAcceleration; if (TheGame.CurrentMulti >= TheGame.FinalMulti) break; } //at this point the game crashes and everybody who did not cash out or pre bet on a multi will have balance subtracted, winners will be paid out. - await _kfChatBot.KfClient.EditMessageAsync(msg.ChatMessageUuid!, $"[center][b][size=200][color=red]{TheGame.FinalMulti}x"); + await _kfChatBot.KfClient.EditMessageAsync(msg.ChatMessageUuid!, $"[center][b][size=200][color={red}]{TheGame.FinalMulti}x"); foreach (var bet in TheGame.Bets) { var freshBalance = await Money.GetGamblerEntityAsync(bet.Gambler.User.Id, ct: _ct); @@ -195,7 +197,7 @@ public class KasinoKrash : IDisposable var payout = bet.Multi * bet.Wager - bet.Wager; var newBalance = await Money.NewWagerAsync(bet.Gambler.Id, bet.Wager, payout, WagerGame.Krash, ct: _ct); await _kfChatBot.SendChatMessageAsync( - $"{bet.Gambler.User.FormatUsername()}, you [color=limegreen][b]won[/b][/color] {await payout.FormatKasinoCurrencyAsync()}!", + $"{bet.Gambler.User.FormatUsername()}, you [color={green}][b]won[/b][/color] {await payout.FormatKasinoCurrencyAsync()}!", true, autoDeleteAfter: TimeSpan.FromSeconds(10)); if (_kfChatBot.BotServices.KasinoShop != null) { @@ -208,7 +210,7 @@ public class KasinoKrash : IDisposable //automatically lose, no pre entered multi or it was greater than the final multi and failed to cash out var newBalance = await Money.NewWagerAsync(bet.Gambler.Id, bet.Wager, -bet.Wager, WagerGame.Krash, ct: _ct); await _kfChatBot.SendChatMessageAsync( - $"{bet.Gambler.User.FormatUsername()}, you [color=red][b]lost[/b][/color] {await bet.Wager.FormatKasinoCurrencyAsync()}!", + $"{bet.Gambler.User.FormatUsername()}, you [color={red}][b]lost[/b][/color] {await bet.Wager.FormatKasinoCurrencyAsync()}!", true, autoDeleteAfter: TimeSpan.FromSeconds(10)); if (_kfChatBot.BotServices.KasinoShop != null) {