aboutsummaryrefslogtreecommitdiff
path: root/internal/casino
diff options
context:
space:
mode:
Diffstat (limited to 'internal/casino')
-rw-r--r--internal/casino/plinko.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/internal/casino/plinko.go b/internal/casino/plinko.go
index d50cf6f..867978a 100644
--- a/internal/casino/plinko.go
+++ b/internal/casino/plinko.go
@@ -171,7 +171,12 @@ func plinkoHouseEdge(c TableConfig, _ string) HouseEdge {
}
func plinkoRules(c TableConfig) string {
- return fmt.Sprintf("Plinko: 16 fair left/right bounces; 17 pockets. Target RTP %.4g%%. One-decimal payouts are balanced to track that target.\nUse difficulty easy|medium|hard|expert, balls 1-10, then bet N (per ball).\nPocket multipliers INCLUDE your stake. Fractional total returns round randomly, without bias.\nEasy edges pay 16x; expert edges pay 10000x. Higher risk means higher variance.\nOne ball is white; overlapping balls shade toward red (all balls together).\nLeaving is blocked during a drop; disconnect forfeits an unfinished drop.", c.Plinko.Normalize().RTP)
+ rtp := c.Plinko.Normalize().RTP
+ returns := make([]string, len(plinkoRisks))
+ for i, name := range plinkoRisks {
+ returns[i] = fmt.Sprintf("%s %.3f%%", name, 100*plinkoReturn(i, rtp))
+ }
+ return fmt.Sprintf("Plinko: 16 fair left/right bounces; 17 pockets. Target RTP %.4g%%. One-decimal payouts are balanced to track that target; actual returns are %s (higher-risk tables round up by up to ~0.25pp).\nUse difficulty easy|medium|hard|expert, balls 1-10, then bet N (per ball).\nPocket multipliers INCLUDE your stake. Fractional total returns round randomly, without bias.\nEasy edges pay 16x; expert edges pay 10000x. Higher risk means higher variance.\nOne ball is white; overlapping balls shade toward red (all balls together).\nLeaving is blocked during a drop; disconnect forfeits an unfinished drop.", rtp, strings.Join(returns, ", "))
}
type PlinkoSnapshot struct {