dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 70bfa60e031daed0dbe7f242a718921818e90904
parent 8cac9623e4bcffd0c884f78a720f4e4c8a4048fb
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Mon, 18 Dec 2023 06:01:41 -0500

fix rake

Diffstat:
Mpkg/web/handlers/poker/poker.go | 30++++++++++++++++++++++++++----
1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go @@ -1073,7 +1073,7 @@ END: winners := ongoing.computeWinners() mainPot := ongoing.getMainPot() - playersGain, rake := processPot(winners, mainPot, bigBlindBet, collectRake) + playersGain, rake := processPot(winners, mainPot, bigBlindBet, collectRake, len(ongoing.Players)) winnersStr, winnerHand := applyGains(g, playersGain, mainPot, rake) ongoing.setMainPot(0) @@ -1178,9 +1178,7 @@ type PlayerGain struct { HandStr string } -const rakePct = 0.045 - -func processPot(winners []GameResult, mainPot, pokerTableMinBet database.PokerChip, collectRake bool) (res []PlayerGain, rake database.PokerChip) { +func processPot(winners []GameResult, mainPot, pokerTableMinBet database.PokerChip, collectRake bool, nbPlayers int) (res []PlayerGain, rake database.PokerChip) { newPlayerGain := func(player *PokerPlayer, gain database.PokerChip, groupIdx int, handStr string) PlayerGain { return PlayerGain{Player: player, Gain: gain, Group: groupIdx, HandStr: handStr} } @@ -1191,7 +1189,31 @@ func processPot(winners []GameResult, mainPot, pokerTableMinBet database.PokerCh } if collectRake { + // https://www.pokerstars.com/poker/room/rake maxRake := pokerTableMinBet * 15 + rakePct := 0.045 + if pokerTableMinBet == 3 { + rakePct = 0.035 + maxRake = 178 + } else if pokerTableMinBet == 20 { + rakePct = 0.0415 + if nbPlayers == 2 { + maxRake = 297 + } else if nbPlayers == 3 || nbPlayers == 4 { + maxRake = 297 + } else if nbPlayers > 4 { + maxRake = 595 + } + } else if pokerTableMinBet == 200 { + rakePct = 0.05 + if nbPlayers == 2 { + maxRake = 446 + } else if nbPlayers == 3 || nbPlayers == 4 { + maxRake = 446 + } else if nbPlayers > 4 { + maxRake = 1190 + } + } rake = database.PokerChip(math.RoundToEven(rakePct * float64(mainPot))) rake = utils.MinInt(rake, maxRake) // Max rake mainPot -= rake