diff --git a/KfChatDotNetBot/Commands/Kasino/PlinkoCommand.cs b/KfChatDotNetBot/Commands/Kasino/PlinkoCommand.cs index 0e5ec42..0856d43 100644 --- a/KfChatDotNetBot/Commands/Kasino/PlinkoCommand.cs +++ b/KfChatDotNetBot/Commands/Kasino/PlinkoCommand.cs @@ -26,12 +26,13 @@ public class PlinkoCommand : ICommand public RateLimitOptionsModel? RateLimitOptions => null; - private string NULLSPACE = "⚫"; - private string EMPTYSPACE = "⚪"; - private string BALL = "🟠"; - private int DIFFICULTY = 7;//maybe plan to allow user to change difficulty of plinko in future updates, would need to change the payout logic though - - private readonly Dictionary PlinkoPayoutBoard = new() + private readonly string NULLSPACE = "⚫"; + private readonly string EMPTYSPACE = "⚪"; + private readonly string BALL = "🟠"; + private readonly int DIFFICULTY = 7;//maybe plan to allow user to change difficulty of plinko in future updates, would need to change the payout logic though + private static readonly double VACUUM = 0.02; + + private static readonly Dictionary PlinkoPayoutBoard = new() { {0, 25}, {1, 2_5}, @@ -52,6 +53,7 @@ public class PlinkoCommand : ICommand var settings = await SettingsProvider.GetMultipleValuesAsync([ BuiltIn.Keys.KasinoPlinkoCleanupDelay, BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor, BuiltIn.Keys.KasinoPlinkoEnabled, BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay + BuiltIn.Keys.KasinoPlinkoCleanupDelay, BuiltIn.Keys.KiwiFarmsGreenColor, BuiltIn.Keys.KiwiFarmsRedColor ]); if (!settings[BuiltIn.Keys.KasinoPlinkoEnabled].ToBoolean()) @@ -125,6 +127,7 @@ public class PlinkoCommand : ICommand if (ballsInPlay[0].POSITION.row == DIFFICULTY - 1) //once your ball has reached the bottom calculate the payout { currentPayout = wager * PlinkoPayoutBoard[ballsInPlay[0].POSITION.col]; + payout += currentPayout; ballsInPlay.RemoveAt(0); if (currentPayout > wager) { @@ -142,9 +145,9 @@ public class PlinkoCommand : ICommand ball.Iterate(); } - await Task.Delay(100); + await Task.Delay(250); await botInstance.KfClient.EditMessageAsync(plinkoMessageID.ChatMessageId!.Value,PlinkoBoardDisplay(ballsInPlay)); - await Task.Delay(100); + await Task.Delay(250); } var newBalance = await Money.NewWagerAsync(gambler.Id, wager*numberOfBalls, payout, WagerGame.Plinko, ct: ctx); @@ -208,19 +211,26 @@ public class PlinkoCommand : ICommand public PlinkoBall() { - POSITION = (0, 0); - + POSITION = (0, 3); } public void Iterate() { - int rng = RAND.Next(2); + double rng = RAND.NextDouble(); bool evenrow = POSITION.row % 2 == 0; + if (POSITION.col < 2) + { + rng -= VACUUM; + } + else if (POSITION.col > 4) + { + rng += VACUUM; + } switch (rng) { - case 0: + case >= 0.5: if (!evenrow && Math.Abs(POSITION.col) > POSITION.row / 2) POSITION.col--; break; - case 1: + case < 0.5: if (!evenrow && POSITION.col > POSITION.row / 2) POSITION.col++; break; default: