From 7d6c9323b31b01e1da1f5a2dbd7852a57e7cd8ea Mon Sep 17 00:00:00 2001 From: schwarzlichtbezirk Date: Sun, 29 Dec 2024 07:52:15 +0300 Subject: [PATCH] agt/cherryhot recalculated. --- Dockerfile | 2 +- game/slot/agt/cherryhot/cherryhot_reel.yaml | 290 +++++++++++++----- game/slot/agt/cherryhot/cherryhot_rule.go | 70 ++--- .../agt/valentinesday/valentinesday_reel.yaml | 130 ++++---- .../agt/valentinesday/valentinesday_rule.go | 7 +- .../novomatic/beetlemania/beetlemania_rule.go | 42 ++- .../fortuneteller/fortuneteller_link.go | 2 +- game/slot/screen.go | 155 ---------- helper/cherryhot.lua | 28 ++ task/build-docker.sh | 4 +- 10 files changed, 378 insertions(+), 352 deletions(-) create mode 100644 helper/cherryhot.lua diff --git a/Dockerfile b/Dockerfile index 2ee90ed8..1e02a320 100644 --- a/Dockerfile +++ b/Dockerfile @@ -51,4 +51,4 @@ EXPOSE 8080 # Run application with full path representation. # Without shell to get signal for graceful shutdown. -ENTRYPOINT ["/go/bin/slot_linux_x64", "web"] +ENTRYPOINT ["/go/bin/app", "web"] diff --git a/game/slot/agt/cherryhot/cherryhot_reel.yaml b/game/slot/agt/cherryhot/cherryhot_reel.yaml index b54e5292..5dc0a390 100644 --- a/game/slot/agt/cherryhot/cherryhot_reel.yaml +++ b/game/slot/agt/cherryhot/cherryhot_reel.yaml @@ -1,82 +1,212 @@ # RTP list of available reels: -# 85.420604 -# 89.914198 -# 92.029962 -# 94.125635 -# 98.858395 -# 100.839630 -# 103.181218 -# 111.325226 - -# reels lengths [31, 30, 31, 30, 31], total reshuffles 26811900 -# RTP = 77.139(lined) + 8.2813(scatter) = 85.420604% -85.420604: - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - -# reels lengths [30, 30, 30, 30, 30], total reshuffles 24300000 -# RTP = 81.034(lined) + 8.88(scatter) = 89.914198% -89.914198: - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 6] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 6] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - -# reels lengths [30, 29, 30, 30, 30], total reshuffles 23490000 -# RTP = 82.993(lined) + 9.0372(scatter) = 92.029962% -92.029962: - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 6] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - -# reels lengths [30, 29, 30, 29, 30], total reshuffles 22707000 -# RTP = 84.929(lined) + 9.1967(scatter) = 94.125635% -94.125635: - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - -# reels lengths [30, 30, 30, 30, 30], total reshuffles 24300000 -# RTP = 89.978(lined) + 8.88(scatter) = 98.858395% -98.858395: - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 6] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 1] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - -# reels lengths [30, 30, 30, 30, 30], total reshuffles 24300000 -# RTP = 91.96(lined) + 8.88(scatter) = 100.839630% -100.839630: - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 1] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 6] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - -# reels lengths [30, 30, 30, 29, 30], total reshuffles 23490000 -# RTP = 94.144(lined) + 9.0372(scatter) = 103.181218% -103.181218: - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 1] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - -# reels lengths [30, 30, 30, 30, 30], total reshuffles 24300000 -# RTP = 102.45(lined) + 8.88(scatter) = 111.325226% -111.325226: - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 1] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 1] - - [1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 5, 5, 5, 5, 7, 7, 7, 8, 3, 3, 3, 3, 1, 1, 1, 6, 6, 6, 6, 8] +# 87.545004 +# 88.330066 +# 89.371683 +# 91.543182 +# 92.502565 +# 93.511334 +# 94.154541 +# 94.681382 +# 95.064444 +# 96.166772 +# 96.503475 +# 97.277245 +# 97.361090 +# 98.096560 +# 98.576991 +# 98.928038 +# 100.121875 +# 100.517500 +# 102.139570 +# 105.364992 +# 111.996330 + +# reels lengths [35, 34, 35, 34, 35], total reshuffles 49563500 +# RTP = 81.916(lined) + 5.6286(scatter) = 87.545004% +87.545004: + - [5, 5, 5, 5, 5, 8, 2, 2, 6, 6, 6, 6, 6, 1, 1, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 8, 2, 7, 7, 3, 3, 3, 3, 3] + - [2, 4, 4, 4, 4, 4, 8, 1, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 1, 2, 7, 7, 3, 3, 3, 3, 3, 2] + - [3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 8, 2, 4, 4, 4, 4, 4, 1, 1, 7, 7, 2, 2, 7, 7, 7, 7, 7, 7, 8] + - [5, 5, 5, 5, 5, 1, 8, 2, 2, 7, 7, 7, 7, 7, 7, 1, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 2, 3, 3, 3, 3, 3, 7, 7] + - [2, 1, 1, 2, 5, 5, 5, 5, 5, 2, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 8, 7, 7, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 8] + +# reels lengths [34, 34, 34, 34, 34], total reshuffles 45435424 +# RTP = 82.345(lined) + 5.9853(scatter) = 88.330066% +88.330066: + - [7, 7, 7, 7, 7, 7, 8, 4, 4, 4, 4, 4, 8, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 2, 1, 6, 6, 6, 6, 6, 7, 1, 2, 2] + - [2, 4, 4, 4, 4, 4, 8, 1, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 1, 2, 7, 7, 3, 3, 3, 3, 3, 2] + - [5, 5, 5, 5, 5, 2, 2, 1, 1, 7, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 4, 4, 4, 4, 4, 2, 8] + - [5, 5, 5, 5, 5, 1, 8, 2, 2, 7, 7, 7, 7, 7, 7, 1, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 2, 3, 3, 3, 3, 3, 7, 7] + - [1, 2, 4, 4, 4, 4, 4, 8, 5, 5, 5, 5, 5, 8, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 2, 2, 1, 3, 3, 3, 3, 3] + +# reels lengths [34, 33, 34, 33, 34], total reshuffles 42802056 +# RTP = 83.201(lined) + 6.1708(scatter) = 89.371683% +89.371683: + - [7, 7, 7, 7, 7, 7, 8, 4, 4, 4, 4, 4, 8, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 2, 1, 6, 6, 6, 6, 6, 7, 1, 2, 2] + - [7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 6, 7, 2, 1, 3, 3, 3, 3, 3, 2, 1, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 2] + - [5, 5, 5, 5, 5, 2, 2, 1, 1, 7, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 4, 4, 4, 4, 4, 2, 8] + - [5, 5, 5, 5, 5, 8, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 2, 1, 2, 2] + - [1, 2, 4, 4, 4, 4, 4, 8, 5, 5, 5, 5, 5, 8, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 2, 2, 1, 3, 3, 3, 3, 3] + +# reels lengths [33, 33, 33, 33, 33], total reshuffles 39135393 +# RTP = 84.969(lined) + 6.5743(scatter) = 91.543182% +91.543182: + - [3, 3, 3, 3, 3, 8, 7, 7, 7, 7, 7, 7, 1, 2, 4, 4, 4, 4, 4, 8, 2, 2, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 1] + - [7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 6, 7, 2, 1, 3, 3, 3, 3, 3, 2, 1, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 2] + - [7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 2, 1, 1, 4, 4, 4, 4, 4, 8, 5, 5, 5, 5, 5, 2, 8, 2, 3, 3, 3, 3, 3] + - [5, 5, 5, 5, 5, 8, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 2, 1, 2, 2] + - [1, 2, 2, 2, 8, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 1, 4, 4, 4, 4, 4, 8, 3, 3, 3, 3, 3] + +# reels lengths [43, 43, 43, 43, 43], total reshuffles 147008443 +# RTP = 86.205(lined) + 6.2974(scatter) = 92.502565% +92.502565: + - [6, 6, 6, 6, 6, 6, 1, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 2, 2, 2, 8, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 8, 1, 1, 2, 7, 7, 7, 7, 7, 7] + - [3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 8, 2, 6, 6, 6, 6, 6, 6, 2, 1, 8, 2, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 2, 4, 4, 4, 4, 4, 4, 1, 1] + - [7, 7, 7, 7, 7, 7, 2, 6, 6, 6, 6, 6, 6, 2, 7, 7, 7, 7, 1, 2, 2, 8, 1, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 8, 1, 5, 5, 5, 5, 5, 5] + - [2, 1, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 8, 1, 4, 4, 4, 4, 4, 4, 2, 8, 5, 5, 5, 5, 5, 5, 1, 2, 2, 7, 7, 7, 7] + - [2, 3, 3, 3, 3, 3, 3, 2, 5, 5, 5, 5, 5, 5, 1, 1, 7, 7, 7, 7, 7, 7, 2, 2, 8, 1, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 8, 7, 7, 7, 7] + +# reels lengths [33, 32, 33, 32, 33], total reshuffles 36799488 +# RTP = 86.726(lined) + 6.785(scatter) = 93.511334% +93.511334: + - [3, 3, 3, 3, 3, 8, 7, 7, 7, 7, 7, 7, 1, 2, 4, 4, 4, 4, 4, 8, 2, 2, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 1] + - [1, 2, 2, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 2, 8, 4, 4, 4, 4, 4, 1, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3] + - [7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 2, 1, 1, 4, 4, 4, 4, 4, 8, 5, 5, 5, 5, 5, 2, 8, 2, 3, 3, 3, 3, 3] + - [2, 1, 6, 6, 6, 6, 6, 2, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 8, 4, 4, 4, 4, 4, 2, 3, 3, 3, 3, 3, 1] + - [1, 2, 2, 2, 8, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 1, 4, 4, 4, 4, 4, 8, 3, 3, 3, 3, 3] + +# reels lengths [42, 42, 42, 42, 42], total reshuffles 130691232 +# RTP = 87.372(lined) + 6.7829(scatter) = 94.154541% +94.154541: + - [2, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 8, 7, 7, 7, 2, 2, 1, 1, 2, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 8, 3, 3, 3, 3, 3, 3, 1] + - [2, 3, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 2, 7, 7, 7, 7, 7, 7, 1, 1, 8, 4, 4, 4, 4, 4, 4, 2, 1, 5, 5, 5, 5, 5, 5, 7, 7, 7, 8, 2] + - [7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 6, 6, 6, 6, 6, 6, 8, 4, 4, 4, 4, 4, 4, 8, 2, 1, 2, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 2, 2] + - [1, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 8, 4, 4, 4, 4, 4, 4, 1, 2, 1, 7, 7, 7, 7, 7, 7, 2, 6, 6, 6, 6, 6, 6, 2, 2, 7, 7, 7, 8] + - [3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 2, 1, 2, 6, 6, 6, 6, 6, 6, 1, 8, 7, 7, 7, 2, 8, 2, 1, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5] + +# reels lengths [34, 33, 34, 33, 34], total reshuffles 42802056 +# RTP = 88.511(lined) + 6.1708(scatter) = 94.681382% +94.681382: + - [2, 6, 6, 6, 6, 6, 8, 7, 7, 7, 7, 7, 7, 8, 2, 3, 3, 3, 3, 3, 2, 5, 5, 5, 5, 5, 1, 1, 4, 4, 4, 4, 4, 2] + - [6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 2, 1, 1, 3, 3, 3, 3, 3, 8, 7, 7, 7, 7, 7, 7, 2, 2, 2, 4, 4, 4, 4, 4] + - [2, 2, 6, 6, 6, 6, 6, 8, 2, 1, 4, 4, 4, 4, 4, 2, 3, 3, 3, 3, 3, 8, 5, 5, 5, 5, 5, 1, 7, 7, 7, 7, 7, 7] + - [4, 4, 4, 4, 4, 2, 1, 5, 5, 5, 5, 5, 2, 6, 6, 6, 6, 6, 8, 2, 1, 7, 7, 7, 7, 7, 7, 2, 3, 3, 3, 3, 3] + - [3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 1, 2, 2, 1, 8, 5, 5, 5, 5, 5, 2, 8, 4, 4, 4, 4, 4, 2, 7, 7, 7, 7, 7, 7] + +# reels lengths [41, 42, 42, 42, 41], total reshuffles 124541928 +# RTP = 88.071(lined) + 6.9933(scatter) = 95.064444% +95.064444: + - [4, 4, 4, 4, 4, 4, 8, 6, 6, 6, 6, 6, 6, 8, 3, 3, 3, 3, 3, 3, 2, 2, 1, 2, 1, 1, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 2] + - [2, 3, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 2, 7, 7, 7, 7, 7, 7, 1, 1, 8, 4, 4, 4, 4, 4, 4, 2, 1, 5, 5, 5, 5, 5, 5, 7, 7, 7, 8, 2] + - [7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 6, 6, 6, 6, 6, 6, 8, 4, 4, 4, 4, 4, 4, 8, 2, 1, 2, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 2, 2] + - [1, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 8, 4, 4, 4, 4, 4, 4, 1, 2, 1, 7, 7, 7, 7, 7, 7, 2, 6, 6, 6, 6, 6, 6, 2, 2, 7, 7, 7, 8] + - [1, 1, 2, 4, 4, 4, 4, 4, 4, 8, 2, 7, 7, 5, 5, 5, 5, 5, 5, 2, 8, 3, 3, 3, 3, 3, 3, 2, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 1] + +# reels lengths [41, 41, 42, 41, 41], total reshuffles 118681962 +# RTP = 88.957(lined) + 7.2093(scatter) = 96.166772% +96.166772: + - [1, 2, 3, 3, 3, 3, 3, 3, 8, 1, 5, 5, 5, 5, 5, 5, 2, 1, 7, 7, 7, 7, 7, 7, 2, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 8, 7, 7, 7] + - [7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 2, 8, 1, 5, 5, 5, 5, 5, 5, 8, 1, 7, 7, 7, 2, 1, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2] + - [7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 6, 6, 6, 6, 6, 6, 8, 4, 4, 4, 4, 4, 4, 8, 2, 1, 2, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 2, 2] + - [2, 1, 4, 4, 4, 4, 4, 4, 2, 1, 7, 7, 7, 5, 5, 5, 5, 5, 5, 2, 8, 7, 7, 7, 7, 7, 7, 8, 3, 3, 3, 3, 3, 3, 1, 6, 6, 6, 6, 6, 6] + - [4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 1, 7, 7, 7, 7, 7, 7, 1, 8, 7, 7, 7, 2, 2, 6, 6, 6, 6, 6, 6, 2, 1, 8] + +# reels lengths [41, 41, 41, 41, 41], total reshuffles 115856201 +# RTP = 89.184(lined) + 7.3196(scatter) = 96.503475% +96.503475: + - [4, 4, 4, 4, 4, 4, 8, 6, 6, 6, 6, 6, 6, 8, 3, 3, 3, 3, 3, 3, 2, 2, 1, 2, 1, 1, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 2] + - [7, 7, 2, 6, 6, 6, 6, 6, 6, 1, 3, 3, 3, 3, 3, 3, 8, 1, 2, 7, 7, 7, 7, 7, 7, 2, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 1, 8, 2] + - [1, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 1, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 2, 8, 7, 7, 7, 8, 2, 5, 5, 5, 5, 5, 5, 2, 1] + - [1, 4, 4, 4, 4, 4, 4, 2, 8, 2, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 2, 7, 7, 1, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 1, 8] + - [1, 1, 2, 4, 4, 4, 4, 4, 4, 8, 2, 7, 7, 5, 5, 5, 5, 5, 5, 2, 8, 3, 3, 3, 3, 3, 3, 2, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 1] + +# reels lengths [41, 41, 41, 41, 41], total reshuffles 115856201 +# RTP = 89.958(lined) + 7.3196(scatter) = 97.277245% +97.277245: + - [1, 2, 3, 3, 3, 3, 3, 3, 8, 1, 5, 5, 5, 5, 5, 5, 2, 1, 7, 7, 7, 7, 7, 7, 2, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 8, 7, 7, 7] + - [7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 2, 8, 1, 5, 5, 5, 5, 5, 5, 8, 1, 7, 7, 7, 2, 1, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2] + - [1, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 1, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 2, 8, 7, 7, 7, 8, 2, 5, 5, 5, 5, 5, 5, 2, 1] + - [2, 1, 4, 4, 4, 4, 4, 4, 2, 1, 7, 7, 7, 5, 5, 5, 5, 5, 5, 2, 8, 7, 7, 7, 7, 7, 7, 8, 3, 3, 3, 3, 3, 3, 1, 6, 6, 6, 6, 6, 6] + - [4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 1, 7, 7, 7, 7, 7, 7, 1, 8, 7, 7, 7, 2, 2, 6, 6, 6, 6, 6, 6, 2, 1, 8] + +# reels lengths [41, 41, 41, 41, 41], total reshuffles 115856201 +# RTP = 90.042(lined) + 7.3196(scatter) = 97.361090% +97.361090: + - [4, 4, 4, 4, 4, 4, 8, 6, 6, 6, 6, 6, 6, 8, 3, 3, 3, 3, 3, 3, 2, 2, 1, 2, 1, 1, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 2] + - [7, 7, 2, 6, 6, 6, 6, 6, 6, 1, 3, 3, 3, 3, 3, 3, 8, 1, 2, 7, 7, 7, 7, 7, 7, 2, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 1, 8, 2] + - [5, 5, 5, 5, 5, 5, 1, 7, 7, 1, 2, 8, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 2, 2, 1, 2, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 8] + - [1, 4, 4, 4, 4, 4, 4, 2, 8, 2, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 2, 7, 7, 1, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 1, 8] + - [1, 1, 2, 4, 4, 4, 4, 4, 4, 8, 2, 7, 7, 5, 5, 5, 5, 5, 5, 2, 8, 3, 3, 3, 3, 3, 3, 2, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 1] + +# reels lengths [40, 41, 41, 41, 40], total reshuffles 110273600 +# RTP = 90.544(lined) + 7.5526(scatter) = 98.096560% +98.096560: + - [6, 6, 6, 6, 6, 6, 1, 8, 5, 5, 5, 5, 5, 5, 1, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 8, 1, 2] + - [7, 7, 2, 6, 6, 6, 6, 6, 6, 1, 3, 3, 3, 3, 3, 3, 8, 1, 2, 7, 7, 7, 7, 7, 7, 2, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 1, 8, 2] + - [5, 5, 5, 5, 5, 5, 1, 7, 7, 1, 2, 8, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 2, 2, 1, 2, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 8] + - [1, 4, 4, 4, 4, 4, 4, 2, 8, 2, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 2, 7, 7, 1, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 1, 8] + - [1, 7, 7, 2, 8, 6, 6, 6, 6, 6, 6, 1, 2, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 8, 2, 3, 3, 3, 3, 3, 3, 1] + +# reels lengths [41, 41, 39, 41, 41], total reshuffles 110204679 +# RTP = 91.02(lined) + 7.5569(scatter) = 98.576991% +98.576991: + - [1, 2, 3, 3, 3, 3, 3, 3, 8, 1, 5, 5, 5, 5, 5, 5, 2, 1, 7, 7, 7, 7, 7, 7, 2, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 8, 7, 7, 7] + - [7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 2, 8, 1, 5, 5, 5, 5, 5, 5, 8, 1, 7, 7, 7, 2, 1, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2] + - [1, 2, 1, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 8, 3, 3, 3, 3, 3, 3, 8, 2, 6, 6, 6, 6, 6, 6, 2, 1, 7, 7, 7, 7, 7, 7, 7] + - [2, 1, 4, 4, 4, 4, 4, 4, 2, 1, 7, 7, 7, 5, 5, 5, 5, 5, 5, 2, 8, 7, 7, 7, 7, 7, 7, 8, 3, 3, 3, 3, 3, 3, 1, 6, 6, 6, 6, 6, 6] + - [4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 1, 7, 7, 7, 7, 7, 7, 1, 8, 7, 7, 7, 2, 2, 6, 6, 6, 6, 6, 6, 2, 1, 8] + +# reels lengths [41, 40, 40, 40, 41], total reshuffles 107584000 +# RTP = 91.256(lined) + 7.6715(scatter) = 98.928038% +98.928038: + - [4, 4, 4, 4, 4, 4, 8, 6, 6, 6, 6, 6, 6, 8, 3, 3, 3, 3, 3, 3, 2, 2, 1, 2, 1, 1, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 2] + - [2, 1, 5, 5, 5, 5, 5, 5, 2, 2, 7, 7, 8, 3, 3, 3, 3, 3, 3, 1, 6, 6, 6, 6, 6, 6, 8, 4, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 7] + - [1, 6, 6, 6, 6, 6, 6, 8, 2, 1, 5, 5, 5, 5, 5, 5, 2, 7, 7, 7, 7, 7, 7, 7, 1, 3, 3, 3, 3, 3, 3, 2, 2, 4, 4, 4, 4, 4, 4, 8] + - [1, 2, 2, 8, 1, 7, 7, 1, 3, 3, 3, 3, 3, 3, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 2, 6, 6, 6, 6, 6, 6] + - [1, 1, 2, 4, 4, 4, 4, 4, 4, 8, 2, 7, 7, 5, 5, 5, 5, 5, 5, 2, 8, 3, 3, 3, 3, 3, 3, 2, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 1] + +# reels lengths [40, 40, 40, 40, 40], total reshuffles 102400000 +# RTP = 92.207(lined) + 7.9144(scatter) = 100.121875% +100.121875: + - [7, 7, 7, 7, 7, 7, 2, 2, 1, 8, 5, 5, 5, 5, 5, 5, 8, 1, 2, 1, 4, 4, 4, 4, 4, 4, 2, 7, 3, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6] + - [2, 1, 5, 5, 5, 5, 5, 5, 2, 2, 7, 7, 8, 3, 3, 3, 3, 3, 3, 1, 6, 6, 6, 6, 6, 6, 8, 4, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 7] + - [4, 4, 4, 4, 4, 4, 7, 7, 2, 2, 1, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 2, 1, 1, 8] + - [1, 2, 2, 8, 1, 7, 7, 1, 3, 3, 3, 3, 3, 3, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 2, 6, 6, 6, 6, 6, 6] + - [4, 4, 4, 4, 4, 4, 2, 1, 8, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 2, 1, 7, 7, 7, 7, 7, 7, 2, 7, 2, 8, 1] + +# reels lengths [40, 40, 40, 40, 40], total reshuffles 102400000 +# RTP = 92.603(lined) + 7.9144(scatter) = 100.517500% +100.517500: + - [7, 7, 7, 7, 7, 7, 2, 2, 1, 8, 5, 5, 5, 5, 5, 5, 8, 1, 2, 1, 4, 4, 4, 4, 4, 4, 2, 7, 3, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6] + - [2, 1, 5, 5, 5, 5, 5, 5, 2, 2, 7, 7, 8, 3, 3, 3, 3, 3, 3, 1, 6, 6, 6, 6, 6, 6, 8, 4, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 7] + - [1, 6, 6, 6, 6, 6, 6, 8, 2, 1, 5, 5, 5, 5, 5, 5, 2, 7, 7, 7, 7, 7, 7, 7, 1, 3, 3, 3, 3, 3, 3, 2, 2, 4, 4, 4, 4, 4, 4, 8] + - [1, 2, 2, 8, 1, 7, 7, 1, 3, 3, 3, 3, 3, 3, 8, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 2, 6, 6, 6, 6, 6, 6] + - [4, 4, 4, 4, 4, 4, 2, 1, 8, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 2, 1, 7, 7, 7, 7, 7, 7, 2, 7, 2, 8, 1] + +# reels lengths [40, 40, 40, 40, 40], total reshuffles 102400000 +# RTP = 94.225(lined) + 7.9144(scatter) = 102.139570% +102.139570: + - [7, 7, 7, 7, 7, 7, 2, 2, 1, 8, 5, 5, 5, 5, 5, 5, 8, 1, 2, 1, 4, 4, 4, 4, 4, 4, 2, 7, 3, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6] + - [1, 7, 7, 7, 7, 7, 7, 8, 1, 2, 2, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 1, 8, 2, 7, 4, 4, 4, 4, 4, 4, 2] + - [1, 6, 6, 6, 6, 6, 6, 8, 2, 1, 5, 5, 5, 5, 5, 5, 2, 7, 7, 7, 7, 7, 7, 7, 1, 3, 3, 3, 3, 3, 3, 2, 2, 4, 4, 4, 4, 4, 4, 8] + - [2, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 1, 5, 5, 5, 5, 5, 5, 7, 8, 2, 2, 1, 8, 1, 4, 4, 4, 4, 4, 4, 2, 3, 3, 3, 3, 3, 3] + - [4, 4, 4, 4, 4, 4, 2, 1, 8, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 2, 1, 7, 7, 7, 7, 7, 7, 2, 7, 2, 8, 1] + +# reels lengths [39, 39, 39, 39, 39], total reshuffles 90224199 +# RTP = 96.79(lined) + 8.5754(scatter) = 105.364992% +105.364992: + - [7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, 5, 1, 7, 8, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 2, 1, 8, 6, 6, 6, 6, 6, 6, 2, 2, 1] + - [2, 7, 7, 7, 7, 7, 7, 2, 2, 3, 3, 3, 3, 3, 3, 7, 8, 1, 1, 5, 5, 5, 5, 5, 5, 1, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 8] + - [1, 2, 1, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 8, 3, 3, 3, 3, 3, 3, 8, 2, 6, 6, 6, 6, 6, 6, 2, 1, 7, 7, 7, 7, 7, 7, 7] + - [2, 5, 5, 5, 5, 5, 5, 2, 8, 3, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 2, 8, 1, 1, 1, 7, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7] + - [4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 3, 3, 3, 3, 3, 3, 1, 6, 6, 6, 6, 6, 6, 7, 8, 2, 1, 1, 8, 5, 5, 5, 5, 5, 5, 2, 2] + +# reels lengths [38, 38, 38, 38, 38], total reshuffles 79235168 +# RTP = 102.68(lined) + 9.3122(scatter) = 111.996330% +111.996330: + - [3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 2, 7, 7, 7, 7, 7, 7, 1, 4, 4, 4, 4, 4, 4, 8, 2, 1, 2, 1, 8, 6, 6, 6, 6, 6, 6] + - [2, 1, 1, 5, 5, 5, 5, 5, 5, 1, 4, 4, 4, 4, 4, 4, 2, 2, 8, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 8, 3, 3, 3, 3, 3, 3] + - [3, 3, 3, 3, 3, 3, 1, 8, 2, 6, 6, 6, 6, 6, 6, 2, 7, 7, 7, 7, 7, 7, 1, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 8, 1, 2] + - [1, 2, 1, 5, 5, 5, 5, 5, 5, 8, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 8, 3, 3, 3, 3, 3, 3, 2, 1, 7, 7, 7, 7, 7, 7, 2] + - [5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 8, 1, 2, 2, 8, 1, 3, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 2, 1] diff --git a/game/slot/agt/cherryhot/cherryhot_rule.go b/game/slot/agt/cherryhot/cherryhot_rule.go index 65c42800..6e2def3a 100644 --- a/game/slot/agt/cherryhot/cherryhot_rule.go +++ b/game/slot/agt/cherryhot/cherryhot_rule.go @@ -15,14 +15,14 @@ var ReelsMap = slot.ReadMap[*slot.Reels5x](reels) // Lined payment. var LinePay = [8][5]float64{ - {0, 0, 20, 200, 1000}, // 1 strawberry - {0, 0, 8, 80, 200}, // 2 blueberry - {0, 0, 4.8, 12, 40}, // 3 plum - {0, 0, 4, 10, 40}, // 4 pear - {0, 0, 4, 10, 40}, // 5 peach - {0, 1, 3.2, 8, 32}, // 6 cherry - {0, 0, 1, 4, 20}, // 7 apple - {}, // 8 scatter + {0, 0, 100, 1000, 5000}, // 1 strawberry + {0, 0, 40, 400, 1000}, // 2 blueberry + {0, 0, 24, 60, 200}, // 3 plum + {0, 0, 20, 50, 200}, // 4 pear + {0, 0, 20, 50, 200}, // 5 peach + {0, 5, 16, 40, 160}, // 6 cherry + {0, 0, 5, 20, 100}, // 7 apple + {}, // 8 scatter } // Scatters payment. @@ -49,36 +49,33 @@ func NewGame() *Game { const scat = 8 -var Special = map[slot.Sym]bool{ - 1: false, // 1 strawberry - 2: false, // 2 blueberry - 3: true, // 3 plum - 4: true, // 4 pear - 5: true, // 5 peach - 6: true, // 6 cherry - 7: false, // 7 apple - 8: false, // 8 scatter -} - func (g *Game) Scanner(screen slot.Screen, wins *slot.Wins) { - g.ScanLined(screen, wins) - g.ScanScatters(screen, wins) + var scrn5x3 = screen.(*slot.Screen5x3) + g.ScanLined(scrn5x3, wins) + g.ScanScatters(scrn5x3, wins) } -// Lined symbols calculation. -func (g *Game) ScanLined(screen slot.Screen, wins *slot.Wins) { - var ms float64 = 1 // mult screen - if symm := screen.At(1, 1); Special[symm] { - var x slot.Pos - for x = 1; x <= 5; x++ { - if screen.At(x, 1) != symm || screen.At(x, 2) != symm || screen.At(x, 3) != symm { - break - } - } - if x > 3 { - ms = float64(x - 1) +func FillMult(screen *slot.Screen5x3) float64 { + var sym = screen[0][0] + if sym < 3 || sym > 6 { + return 1 + } + var r *[3]slot.Sym + var i int + for i = 0; i < 5; i++ { + if r = &screen[i]; r[0] != sym || r[1] != sym || r[2] != sym { + break } } + if i < 3 { + return 1 + } + return float64(i) +} + +// Lined symbols calculation. +func (g *Game) ScanLined(screen *slot.Screen5x3, wins *slot.Wins) { + var fm float64 // fill mult for li := 1; li <= g.Sel; li++ { var line = BetLines[li-1] @@ -94,9 +91,12 @@ func (g *Game) ScanLined(screen slot.Screen, wins *slot.Wins) { } if pay := LinePay[syml-1][numl-1]; pay > 0 { + if fm == 0 { // lazy calculation + fm = FillMult(screen) + } *wins = append(*wins, slot.WinItem{ Pay: g.Bet * pay, - Mult: ms, + Mult: fm, Sym: syml, Num: numl, Line: li, @@ -107,7 +107,7 @@ func (g *Game) ScanLined(screen slot.Screen, wins *slot.Wins) { } // Scatters calculation. -func (g *Game) ScanScatters(screen slot.Screen, wins *slot.Wins) { +func (g *Game) ScanScatters(screen *slot.Screen5x3, wins *slot.Wins) { if count := screen.ScatNum(scat); count >= 3 { var pay = ScatPay[count-1] *wins = append(*wins, slot.WinItem{ diff --git a/game/slot/agt/valentinesday/valentinesday_reel.yaml b/game/slot/agt/valentinesday/valentinesday_reel.yaml index 87ccbcba..b2ae9fe6 100644 --- a/game/slot/agt/valentinesday/valentinesday_reel.yaml +++ b/game/slot/agt/valentinesday/valentinesday_reel.yaml @@ -1,30 +1,29 @@ # RTP list of available reels: -# 90.501440 -# 91.076962 -# 91.536036 -# 92.112735 -# 92.534456 -# 93.189474 -# 94.009439 -# 94.489085 -# 94.706484 -# 95.057793 -# 96.027857 -# 96.935829 -# 97.780407 -# 98.566342 -# 99.575261 -# 100.166759 -# 100.538917 -# 102.105221 -# 104.587955 -# 107.700329 -# 110.212934 +# 89.243786 +# 89.628060 +# 90.274802 +# 90.497034 +# 90.965736 +# 91.459782 +# 92.157479 +# 92.469973 +# 93.323128 +# 93.488026 +# 94.138062 +# 95.620366 +# 96.686572 +# 97.950126 +# 98.817194 +# 99.126142 +# 101.014475 +# 103.844019 +# 107.204371 +# 109.919594 # reels lengths [36, 36, 36, 36, 36], total reshuffles 60466176 -# RTP = 79.442(lined) + 11.06(scatter) = 90.501440% -90.501440: +# RTP = 78.184(lined) + 11.06(scatter) = 89.243786% +89.243786: - [3, 4, 4, 4, 4, 4, 8, 8, 8, 8, 2, 2, 3, 8, 8, 8, 5, 5, 5, 5, 5, 2, 3, 6, 6, 6, 6, 6, 1, 7, 7, 7, 7, 7, 3, 1] - [8, 8, 8, 3, 4, 4, 4, 4, 4, 2, 1, 8, 8, 8, 8, 5, 5, 5, 5, 5, 3, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 3, 1, 2, 3, 2] - [6, 6, 6, 6, 6, 8, 8, 8, 8, 1, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 3, 3, 1, 7, 7, 7, 7, 7, 3, 2, 8, 8, 8, 2] @@ -32,8 +31,8 @@ - [2, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 3, 2, 3, 1, 8, 8, 8, 8, 3, 6, 6, 6, 6, 6, 8, 8, 8, 7, 7, 7, 7, 7, 2, 1, 3] # reels lengths [36, 36, 36, 35, 36], total reshuffles 58786560 -# RTP = 79.816(lined) + 11.261(scatter) = 91.076962% -91.076962: +# RTP = 78.367(lined) + 11.261(scatter) = 89.628060% +89.628060: - [3, 4, 4, 4, 4, 4, 8, 8, 8, 8, 2, 2, 3, 8, 8, 8, 5, 5, 5, 5, 5, 2, 3, 6, 6, 6, 6, 6, 1, 7, 7, 7, 7, 7, 3, 1] - [8, 8, 8, 3, 4, 4, 4, 4, 4, 2, 1, 8, 8, 8, 8, 5, 5, 5, 5, 5, 3, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 3, 1, 2, 3, 2] - [6, 6, 6, 6, 6, 8, 8, 8, 8, 1, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 3, 3, 1, 7, 7, 7, 7, 7, 3, 2, 8, 8, 8, 2] @@ -41,8 +40,8 @@ - [2, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 3, 2, 3, 1, 8, 8, 8, 8, 3, 6, 6, 6, 6, 6, 8, 8, 8, 7, 7, 7, 7, 7, 2, 1, 3] # reels lengths [36, 36, 36, 34, 35], total reshuffles 55520640 -# RTP = 79.854(lined) + 11.682(scatter) = 91.536036% -91.536036: +# RTP = 78.593(lined) + 11.682(scatter) = 90.274802% +90.274802: - [3, 4, 4, 4, 4, 4, 8, 8, 8, 8, 2, 2, 3, 8, 8, 8, 5, 5, 5, 5, 5, 2, 3, 6, 6, 6, 6, 6, 1, 7, 7, 7, 7, 7, 3, 1] - [8, 8, 8, 3, 4, 4, 4, 4, 4, 2, 1, 8, 8, 8, 8, 5, 5, 5, 5, 5, 3, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 3, 1, 2, 3, 2] - [6, 6, 6, 6, 6, 8, 8, 8, 8, 1, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 3, 3, 1, 7, 7, 7, 7, 7, 3, 2, 8, 8, 8, 2] @@ -50,8 +49,8 @@ - [2, 3, 2, 2, 6, 6, 6, 6, 6, 3, 1, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 1, 5, 5, 5, 5, 5, 3, 8, 8, 8, 8, 8, 8, 3] # reels lengths [36, 35, 36, 36, 36], total reshuffles 58786560 -# RTP = 80.852(lined) + 11.261(scatter) = 92.112735% -92.112735: +# RTP = 79.236(lined) + 11.261(scatter) = 90.497034% +90.497034: - [3, 4, 4, 4, 4, 4, 8, 8, 8, 8, 2, 2, 3, 8, 8, 8, 5, 5, 5, 5, 5, 2, 3, 6, 6, 6, 6, 6, 1, 7, 7, 7, 7, 7, 3, 1] - [7, 7, 7, 7, 7, 1, 3, 2, 3, 3, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 3, 2, 8, 8, 8, 8, 8, 8, 1, 2, 5, 5, 5, 5, 5] - [6, 6, 6, 6, 6, 8, 8, 8, 8, 1, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 3, 3, 1, 7, 7, 7, 7, 7, 3, 2, 8, 8, 8, 2] @@ -59,8 +58,8 @@ - [2, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 3, 2, 3, 1, 8, 8, 8, 8, 3, 6, 6, 6, 6, 6, 8, 8, 8, 7, 7, 7, 7, 7, 2, 1, 3] # reels lengths [35, 36, 36, 35, 36], total reshuffles 57153600 -# RTP = 81.069(lined) + 11.466(scatter) = 92.534456% -92.534456: +# RTP = 79.5(lined) + 11.466(scatter) = 90.965736% +90.965736: - [8, 8, 8, 8, 8, 8, 3, 3, 6, 6, 6, 6, 6, 2, 3, 1, 5, 5, 5, 5, 5, 2, 2, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 3] - [8, 8, 8, 3, 4, 4, 4, 4, 4, 2, 1, 8, 8, 8, 8, 5, 5, 5, 5, 5, 3, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 3, 1, 2, 3, 2] - [6, 6, 6, 6, 6, 8, 8, 8, 8, 1, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 3, 3, 1, 7, 7, 7, 7, 7, 3, 2, 8, 8, 8, 2] @@ -68,8 +67,8 @@ - [2, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 3, 2, 3, 1, 8, 8, 8, 8, 3, 6, 6, 6, 6, 6, 8, 8, 8, 7, 7, 7, 7, 7, 2, 1, 3] # reels lengths [36, 36, 35, 34, 35], total reshuffles 53978400 -# RTP = 81.296(lined) + 11.894(scatter) = 93.189474% -93.189474: +# RTP = 79.566(lined) + 11.894(scatter) = 91.459782% +91.459782: - [3, 4, 4, 4, 4, 4, 8, 8, 8, 8, 2, 2, 3, 8, 8, 8, 5, 5, 5, 5, 5, 2, 3, 6, 6, 6, 6, 6, 1, 7, 7, 7, 7, 7, 3, 1] - [8, 8, 8, 3, 4, 4, 4, 4, 4, 2, 1, 8, 8, 8, 8, 5, 5, 5, 5, 5, 3, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 3, 1, 2, 3, 2] - [8, 8, 8, 8, 8, 8, 2, 1, 2, 4, 4, 4, 4, 4, 3, 6, 6, 6, 6, 6, 3, 2, 1, 5, 5, 5, 5, 5, 3, 3, 7, 7, 7, 7, 7] @@ -77,8 +76,8 @@ - [2, 3, 2, 2, 6, 6, 6, 6, 6, 3, 1, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 1, 5, 5, 5, 5, 5, 3, 8, 8, 8, 8, 8, 8, 3] # reels lengths [35, 35, 36, 36, 35], total reshuffles 55566000 -# RTP = 82.336(lined) + 11.673(scatter) = 94.009439% -94.009439: +# RTP = 80.484(lined) + 11.673(scatter) = 92.157479% +92.157479: - [8, 8, 8, 8, 8, 8, 3, 3, 6, 6, 6, 6, 6, 2, 3, 1, 5, 5, 5, 5, 5, 2, 2, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 3] - [7, 7, 7, 7, 7, 1, 3, 2, 3, 3, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 3, 2, 8, 8, 8, 8, 8, 8, 1, 2, 5, 5, 5, 5, 5] - [6, 6, 6, 6, 6, 8, 8, 8, 8, 1, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 3, 3, 1, 7, 7, 7, 7, 7, 3, 2, 8, 8, 8, 2] @@ -86,26 +85,17 @@ - [2, 3, 2, 2, 6, 6, 6, 6, 6, 3, 1, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 1, 5, 5, 5, 5, 5, 3, 8, 8, 8, 8, 8, 8, 3] # reels lengths [35, 35, 36, 35, 36], total reshuffles 55566000 -# RTP = 82.816(lined) + 11.673(scatter) = 94.489085% -94.489085: +# RTP = 80.797(lined) + 11.673(scatter) = 92.469973% +92.469973: - [8, 8, 8, 8, 8, 8, 3, 3, 6, 6, 6, 6, 6, 2, 3, 1, 5, 5, 5, 5, 5, 2, 2, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 3] - [7, 7, 7, 7, 7, 1, 3, 2, 3, 3, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 3, 2, 8, 8, 8, 8, 8, 8, 1, 2, 5, 5, 5, 5, 5] - [6, 6, 6, 6, 6, 8, 8, 8, 8, 1, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 3, 3, 1, 7, 7, 7, 7, 7, 3, 2, 8, 8, 8, 2] - [6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 3, 2, 1, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 1, 3, 5, 5, 5, 5, 5, 3, 2, 3, 2] - [2, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 3, 2, 3, 1, 8, 8, 8, 8, 3, 6, 6, 6, 6, 6, 8, 8, 8, 7, 7, 7, 7, 7, 2, 1, 3] -# reels lengths [36, 35, 35, 35, 36], total reshuffles 55566000 -# RTP = 83.033(lined) + 11.673(scatter) = 94.706484% -94.706484: - - [3, 4, 4, 4, 4, 4, 8, 8, 8, 8, 2, 2, 3, 8, 8, 8, 5, 5, 5, 5, 5, 2, 3, 6, 6, 6, 6, 6, 1, 7, 7, 7, 7, 7, 3, 1] - - [7, 7, 7, 7, 7, 1, 3, 2, 3, 3, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 3, 2, 8, 8, 8, 8, 8, 8, 1, 2, 5, 5, 5, 5, 5] - - [8, 8, 8, 8, 8, 8, 2, 1, 2, 4, 4, 4, 4, 4, 3, 6, 6, 6, 6, 6, 3, 2, 1, 5, 5, 5, 5, 5, 3, 3, 7, 7, 7, 7, 7] - - [6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 3, 2, 1, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 1, 3, 5, 5, 5, 5, 5, 3, 2, 3, 2] - - [2, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 3, 2, 3, 1, 8, 8, 8, 8, 3, 6, 6, 6, 6, 6, 8, 8, 8, 7, 7, 7, 7, 7, 2, 1, 3] - # reels lengths [35, 35, 36, 35, 33], total reshuffles 50935500 -# RTP = 82.712(lined) + 12.345(scatter) = 95.057793% -95.057793: +# RTP = 80.978(lined) + 12.345(scatter) = 93.323128% +93.323128: - [8, 8, 8, 8, 8, 8, 3, 3, 6, 6, 6, 6, 6, 2, 3, 1, 5, 5, 5, 5, 5, 2, 2, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 3] - [7, 7, 7, 7, 7, 1, 3, 2, 3, 3, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 3, 2, 8, 8, 8, 8, 8, 8, 1, 2, 5, 5, 5, 5, 5] - [6, 6, 6, 6, 6, 8, 8, 8, 8, 1, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 3, 3, 1, 7, 7, 7, 7, 7, 3, 2, 8, 8, 8, 2] @@ -113,8 +103,8 @@ - [3, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 1, 2, 5, 5, 5, 5, 5, 2, 2, 3, 3, 3, 6, 6, 6, 6, 6, 8, 8, 8, 8] # reels lengths [35, 35, 35, 36, 35], total reshuffles 54022500 -# RTP = 84.143(lined) + 11.885(scatter) = 96.027857% -96.027857: +# RTP = 81.603(lined) + 11.885(scatter) = 93.488026% +93.488026: - [8, 8, 8, 8, 8, 8, 3, 3, 6, 6, 6, 6, 6, 2, 3, 1, 5, 5, 5, 5, 5, 2, 2, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 3] - [7, 7, 7, 7, 7, 1, 3, 2, 3, 3, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 3, 2, 8, 8, 8, 8, 8, 8, 1, 2, 5, 5, 5, 5, 5] - [8, 8, 8, 8, 8, 8, 2, 1, 2, 4, 4, 4, 4, 4, 3, 6, 6, 6, 6, 6, 3, 2, 1, 5, 5, 5, 5, 5, 3, 3, 7, 7, 7, 7, 7] @@ -122,8 +112,8 @@ - [2, 3, 2, 2, 6, 6, 6, 6, 6, 3, 1, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 1, 5, 5, 5, 5, 5, 3, 8, 8, 8, 8, 8, 8, 3] # reels lengths [35, 35, 35, 35, 35], total reshuffles 52521875 -# RTP = 84.837(lined) + 12.099(scatter) = 96.935829% -96.935829: +# RTP = 82.039(lined) + 12.099(scatter) = 94.138062% +94.138062: - [8, 8, 8, 8, 8, 8, 3, 3, 6, 6, 6, 6, 6, 2, 3, 1, 5, 5, 5, 5, 5, 2, 2, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 3] - [7, 7, 7, 7, 7, 1, 3, 2, 3, 3, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 3, 2, 8, 8, 8, 8, 8, 8, 1, 2, 5, 5, 5, 5, 5] - [8, 8, 8, 8, 8, 8, 2, 1, 2, 4, 4, 4, 4, 4, 3, 6, 6, 6, 6, 6, 3, 2, 1, 5, 5, 5, 5, 5, 3, 3, 7, 7, 7, 7, 7] @@ -131,8 +121,8 @@ - [2, 3, 2, 2, 6, 6, 6, 6, 6, 3, 1, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 1, 5, 5, 5, 5, 5, 3, 8, 8, 8, 8, 8, 8, 3] # reels lengths [35, 35, 34, 35, 35], total reshuffles 51021250 -# RTP = 85.454(lined) + 12.326(scatter) = 97.780407% -97.780407: +# RTP = 83.294(lined) + 12.326(scatter) = 95.620366% +95.620366: - [8, 8, 8, 8, 8, 8, 3, 3, 6, 6, 6, 6, 6, 2, 3, 1, 5, 5, 5, 5, 5, 2, 2, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 3] - [7, 7, 7, 7, 7, 1, 3, 2, 3, 3, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 3, 2, 8, 8, 8, 8, 8, 8, 1, 2, 5, 5, 5, 5, 5] - [2, 3, 7, 7, 7, 7, 7, 3, 8, 8, 8, 8, 8, 2, 6, 6, 6, 6, 6, 1, 3, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 1] @@ -140,8 +130,8 @@ - [2, 3, 2, 2, 6, 6, 6, 6, 6, 3, 1, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 1, 5, 5, 5, 5, 5, 3, 8, 8, 8, 8, 8, 8, 3] # reels lengths [35, 34, 35, 34, 35], total reshuffles 49563500 -# RTP = 86.009(lined) + 12.557(scatter) = 98.566342% -98.566342: +# RTP = 84.129(lined) + 12.557(scatter) = 96.686572% +96.686572: - [8, 8, 8, 8, 8, 8, 3, 3, 6, 6, 6, 6, 6, 2, 3, 1, 5, 5, 5, 5, 5, 2, 2, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 3] - [8, 8, 8, 8, 8, 2, 6, 6, 6, 6, 6, 3, 5, 5, 5, 5, 5, 3, 2, 3, 1, 4, 4, 4, 4, 4, 1, 3, 2, 7, 7, 7, 7, 7] - [8, 8, 8, 8, 8, 8, 2, 1, 2, 4, 4, 4, 4, 4, 3, 6, 6, 6, 6, 6, 3, 2, 1, 5, 5, 5, 5, 5, 3, 3, 7, 7, 7, 7, 7] @@ -149,8 +139,8 @@ - [2, 3, 2, 2, 6, 6, 6, 6, 6, 3, 1, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 1, 5, 5, 5, 5, 5, 3, 8, 8, 8, 8, 8, 8, 3] # reels lengths [34, 35, 34, 35, 34], total reshuffles 48147400 -# RTP = 86.783(lined) + 12.792(scatter) = 99.575261% -99.575261: +# RTP = 85.158(lined) + 12.792(scatter) = 97.950126% +97.950126: - [5, 5, 5, 5, 5, 2, 4, 4, 4, 4, 4, 2, 8, 8, 8, 8, 8, 3, 2, 3, 1, 3, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 1, 3] - [7, 7, 7, 7, 7, 1, 3, 2, 3, 3, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 3, 2, 8, 8, 8, 8, 8, 8, 1, 2, 5, 5, 5, 5, 5] - [2, 3, 7, 7, 7, 7, 7, 3, 8, 8, 8, 8, 8, 2, 6, 6, 6, 6, 6, 1, 3, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 1] @@ -158,8 +148,8 @@ - [8, 8, 8, 8, 8, 3, 3, 1, 7, 7, 7, 7, 7, 3, 6, 6, 6, 6, 6, 3, 4, 4, 4, 4, 4, 2, 2, 5, 5, 5, 5, 5, 2, 1] # reels lengths [35, 34, 34, 34, 34], total reshuffles 46771760 -# RTP = 87.136(lined) + 13.031(scatter) = 100.166759% -100.166759: +# RTP = 85.787(lined) + 13.031(scatter) = 98.817194% +98.817194: - [8, 8, 8, 8, 8, 8, 3, 3, 6, 6, 6, 6, 6, 2, 3, 1, 5, 5, 5, 5, 5, 2, 2, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 3] - [8, 8, 8, 8, 8, 2, 6, 6, 6, 6, 6, 3, 5, 5, 5, 5, 5, 3, 2, 3, 1, 4, 4, 4, 4, 4, 1, 3, 2, 7, 7, 7, 7, 7] - [2, 3, 7, 7, 7, 7, 7, 3, 8, 8, 8, 8, 8, 2, 6, 6, 6, 6, 6, 1, 3, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 1] @@ -167,8 +157,8 @@ - [8, 8, 8, 8, 8, 3, 3, 1, 7, 7, 7, 7, 7, 3, 6, 6, 6, 6, 6, 3, 4, 4, 4, 4, 4, 2, 2, 5, 5, 5, 5, 5, 2, 1] # reels lengths [34, 34, 35, 34, 34], total reshuffles 46771760 -# RTP = 87.508(lined) + 13.031(scatter) = 100.538917% -100.538917: +# RTP = 86.096(lined) + 13.031(scatter) = 99.126142% +99.126142: - [5, 5, 5, 5, 5, 2, 4, 4, 4, 4, 4, 2, 8, 8, 8, 8, 8, 3, 2, 3, 1, 3, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 1, 3] - [8, 8, 8, 8, 8, 2, 6, 6, 6, 6, 6, 3, 5, 5, 5, 5, 5, 3, 2, 3, 1, 4, 4, 4, 4, 4, 1, 3, 2, 7, 7, 7, 7, 7] - [8, 8, 8, 8, 8, 8, 2, 1, 2, 4, 4, 4, 4, 4, 3, 6, 6, 6, 6, 6, 3, 2, 1, 5, 5, 5, 5, 5, 3, 3, 7, 7, 7, 7, 7] @@ -176,8 +166,8 @@ - [8, 8, 8, 8, 8, 3, 3, 1, 7, 7, 7, 7, 7, 3, 6, 6, 6, 6, 6, 3, 4, 4, 4, 4, 4, 2, 2, 5, 5, 5, 5, 5, 2, 1] # reels lengths [34, 34, 34, 34, 34], total reshuffles 45435424 -# RTP = 88.832(lined) + 13.273(scatter) = 102.105221% -102.105221: +# RTP = 87.741(lined) + 13.273(scatter) = 101.014475% +101.014475: - [5, 5, 5, 5, 5, 2, 4, 4, 4, 4, 4, 2, 8, 8, 8, 8, 8, 3, 2, 3, 1, 3, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 1, 3] - [8, 8, 8, 8, 8, 2, 6, 6, 6, 6, 6, 3, 5, 5, 5, 5, 5, 3, 2, 3, 1, 4, 4, 4, 4, 4, 1, 3, 2, 7, 7, 7, 7, 7] - [2, 3, 7, 7, 7, 7, 7, 3, 8, 8, 8, 8, 8, 2, 6, 6, 6, 6, 6, 1, 3, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 1] @@ -185,8 +175,8 @@ - [8, 8, 8, 8, 8, 3, 3, 1, 7, 7, 7, 7, 7, 3, 6, 6, 6, 6, 6, 3, 4, 4, 4, 4, 4, 2, 2, 5, 5, 5, 5, 5, 2, 1] # reels lengths [33, 34, 34, 34, 33], total reshuffles 42802056 -# RTP = 90.796(lined) + 13.792(scatter) = 104.587955% -104.587955: +# RTP = 90.052(lined) + 13.792(scatter) = 103.844019% +103.844019: - [3, 2, 3, 5, 5, 5, 5, 5, 3, 1, 8, 8, 8, 8, 7, 7, 7, 7, 7, 3, 4, 4, 4, 4, 4, 2, 6, 6, 6, 6, 6, 2, 1] - [8, 8, 8, 8, 8, 2, 6, 6, 6, 6, 6, 3, 5, 5, 5, 5, 5, 3, 2, 3, 1, 4, 4, 4, 4, 4, 1, 3, 2, 7, 7, 7, 7, 7] - [2, 3, 7, 7, 7, 7, 7, 3, 8, 8, 8, 8, 8, 2, 6, 6, 6, 6, 6, 1, 3, 4, 4, 4, 4, 4, 3, 5, 5, 5, 5, 5, 2, 1] @@ -194,8 +184,8 @@ - [3, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 1, 2, 5, 5, 5, 5, 5, 2, 2, 3, 3, 3, 6, 6, 6, 6, 6, 8, 8, 8, 8] # reels lengths [33, 34, 34, 34, 33], total reshuffles 42802056 -# RTP = 93.908(lined) + 13.792(scatter) = 107.700329% -107.700329: +# RTP = 93.412(lined) + 13.792(scatter) = 107.204371% +107.204371: - [3, 2, 3, 5, 5, 5, 5, 5, 3, 1, 8, 8, 8, 8, 7, 7, 7, 7, 7, 3, 4, 4, 4, 4, 4, 2, 6, 6, 6, 6, 6, 2, 1] - [8, 8, 8, 8, 8, 2, 6, 6, 6, 6, 6, 3, 5, 5, 5, 5, 5, 3, 2, 3, 1, 4, 4, 4, 4, 4, 1, 3, 2, 7, 7, 7, 7, 7] - [6, 6, 6, 6, 6, 3, 3, 2, 3, 5, 5, 5, 5, 5, 1, 7, 7, 7, 7, 7, 1, 2, 4, 4, 4, 4, 4, 3, 2, 8, 8, 8, 8, 3] @@ -203,8 +193,8 @@ - [3, 4, 4, 4, 4, 4, 1, 7, 7, 7, 7, 7, 1, 2, 5, 5, 5, 5, 5, 2, 2, 3, 3, 3, 6, 6, 6, 6, 6, 8, 8, 8, 8] # reels lengths [33, 33, 33, 33, 33], total reshuffles 39135393 -# RTP = 95.609(lined) + 14.604(scatter) = 110.212934% -110.212934: +# RTP = 95.316(lined) + 14.604(scatter) = 109.919594 +109.919594: - [3, 2, 3, 5, 5, 5, 5, 5, 3, 1, 8, 8, 8, 8, 7, 7, 7, 7, 7, 3, 4, 4, 4, 4, 4, 2, 6, 6, 6, 6, 6, 2, 1] - [7, 7, 7, 7, 7, 2, 8, 8, 8, 8, 5, 5, 5, 5, 5, 3, 1, 6, 6, 6, 6, 6, 3, 2, 1, 3, 2, 3, 4, 4, 4, 4, 4] - [8, 8, 8, 8, 7, 7, 7, 7, 7, 1, 2, 2, 3, 3, 5, 5, 5, 5, 5, 2, 4, 4, 4, 4, 4, 1, 6, 6, 6, 6, 6, 3, 3] diff --git a/game/slot/agt/valentinesday/valentinesday_rule.go b/game/slot/agt/valentinesday/valentinesday_rule.go index 15336f66..8c9bbf70 100644 --- a/game/slot/agt/valentinesday/valentinesday_rule.go +++ b/game/slot/agt/valentinesday/valentinesday_rule.go @@ -57,11 +57,14 @@ func (g *Game) Scanner(screen slot.Screen, wins *slot.Wins) { func FillMult(screen *slot.Screen5x3) float64 { var sym = screen[2][1] // center symbol + if sym < 4 || sym > 7 { + return 1 + } var r *[3]slot.Sym if r = &screen[2]; r[0] != sym || r[2] != sym { return 1 } - var n float64 = 1 + var n = 1 if r = &screen[1]; r[0] == sym && r[1] == sym && r[2] == sym { n++ if r = &screen[0]; r[0] == sym && r[1] == sym && r[2] == sym { @@ -77,7 +80,7 @@ func FillMult(screen *slot.Screen5x3) float64 { if n < 3 { return 1 } - return n - 1 + return float64(n - 1) } // Lined symbols calculation. diff --git a/game/slot/novomatic/beetlemania/beetlemania_rule.go b/game/slot/novomatic/beetlemania/beetlemania_rule.go index 43f50ef2..43d1a46f 100644 --- a/game/slot/novomatic/beetlemania/beetlemania_rule.go +++ b/game/slot/novomatic/beetlemania/beetlemania_rule.go @@ -61,12 +61,42 @@ const wild, scat = 1, 10 const jazz = 11 func (g *Game) Scanner(screen slot.Screen, wins *slot.Wins) { - g.ScanLined(screen, wins) - g.ScanScatters(screen, wins) + var scrn5x3 = screen.(*slot.Screen5x3) + g.ScanLined(scrn5x3, wins) + g.ScanScatters(scrn5x3, wins) +} + +func ScatNumCont(scrn *slot.Screen5x3) (n slot.Pos) { + for x := 0; x < 5; x++ { + var r = scrn[x] + if r[0] == scat || r[1] == scat || r[2] == scat { + n++ + } else { + break // scatters should be continuous + } + } + return +} + +func ScatPosCont(scrn *slot.Screen5x3) (l slot.Linex) { + var x int + for x = 0; x < 5; x++ { + var r = scrn[x] + if r[0] == scat { + l[x] = 1 + } else if r[1] == scat { + l[x] = 2 + } else if r[2] == scat { + l[x] = 3 + } else { + break // scatters should be continuous + } + } + return } // Lined symbols calculation. -func (g *Game) ScanLined(screen slot.Screen, wins *slot.Wins) { +func (g *Game) ScanLined(screen *slot.Screen5x3, wins *slot.Wins) { for li := 1; li <= g.Sel; li++ { var line = BetLines[li-1] @@ -140,7 +170,7 @@ func (g *Game) ScanLined(screen slot.Screen, wins *slot.Wins) { } // Scatters calculation. -func (g *Game) ScanScatters(screen slot.Screen, wins *slot.Wins) { +func (g *Game) ScanScatters(screen *slot.Screen5x3, wins *slot.Wins) { if g.FSR > 0 { var y slot.Pos if screen.At(3, 1) == jazz { @@ -164,14 +194,14 @@ func (g *Game) ScanScatters(screen slot.Screen, wins *slot.Wins) { return } - if count := screen.ScatNumCont(scat); count >= 3 { + if count := ScatNumCont(screen); count >= 3 { var pay = ScatPay[count-1] *wins = append(*wins, slot.WinItem{ Pay: g.Bet * float64(g.Sel) * pay, Mult: 1, Sym: scat, Num: count, - XY: screen.ScatPosCont(scat), + XY: ScatPosCont(screen), Free: 10, }) } diff --git a/game/slot/playngo/fortuneteller/fortuneteller_link.go b/game/slot/playngo/fortuneteller/fortuneteller_link.go index 5d668b0f..fc4bec31 100644 --- a/game/slot/playngo/fortuneteller/fortuneteller_link.go +++ b/game/slot/playngo/fortuneteller/fortuneteller_link.go @@ -18,7 +18,7 @@ var Info = game.GameInfo{ SY: 3, SN: len(LinePay), LN: len(BetLines), - BN: 0, + BN: 1, RTP: game.MakeRtpList(ReelsMap), } diff --git a/game/slot/screen.go b/game/slot/screen.go index 7bb32a0e..c19a76ad 100644 --- a/game/slot/screen.go +++ b/game/slot/screen.go @@ -18,9 +18,7 @@ type Screen interface { Spin(reels Reels) // fill the screen with random hits on those reels SymNum(sym Sym) (n Pos) // returns number of symbols on the screen that can repeats on reel ScatNum(scat Sym) (n Pos) // returns number of scatters on the screen - ScatNumCont(scat Sym) (n Pos) // returns number of continuous scatters on the screen ScatPos(scat Sym) Linex // returns line with scatters positions on the screen - ScatPosCont(scat Sym) Linex // returns line with continuous scatters positions on the screen FillSym() Sym // returns symbol that filled whole screen, or 0 Free() // put object to pool } @@ -125,22 +123,6 @@ func (s *Screenx) ScatNum(scat Sym) (n Pos) { return } -func (s *Screenx) ScatNumCont(scat Sym) (n Pos) { - var x, y, i Pos -loopx: - for x = range s.sx { - i = x * s.sy - for y = range s.sy { - if s.data[i+y] == scat { - n++ - continue loopx - } - } - break // scatters should be continuous - } - return -} - func (s *Screenx) ScatPos(scat Sym) (l Linex) { for i := range s.sx * s.sy { if s.data[i] == scat { @@ -150,22 +132,6 @@ func (s *Screenx) ScatPos(scat Sym) (l Linex) { return } -func (s *Screenx) ScatPosCont(scat Sym) (l Linex) { - var x, y, i Pos -loopx: - for x = range s.sx { - i = x * s.sy - for y = range s.sy { - if s.data[i+y] == scat { - l[x] = y + 1 - continue loopx - } - } - break // scatters should be continuous - } - return -} - func (s *Screenx) FillSym() (sym Sym) { sym = s.data[0] for i := range s.sx * s.sy { @@ -261,19 +227,6 @@ func (s *Screen3x3) ScatNum(scat Sym) (n Pos) { return } -func (s *Screen3x3) ScatNumCont(scat Sym) (n Pos) { - var x Pos - for x = 0; x < 3; x++ { - var r = s[x] - if r[0] == scat || r[1] == scat || r[2] == scat { - n++ - } else { - break // scatters should be continuous - } - } - return -} - func (s *Screen3x3) ScatPos(scat Sym) (l Linex) { for x := range 3 { var r = s[x] @@ -288,23 +241,6 @@ func (s *Screen3x3) ScatPos(scat Sym) (l Linex) { return } -func (s *Screen3x3) ScatPosCont(scat Sym) (l Linex) { - var x int - for x = 0; x < 3; x++ { - var r = s[x] - if r[0] == scat { - l[x] = 1 - } else if r[1] == scat { - l[x] = 2 - } else if r[2] == scat { - l[x] = 3 - } else { - break // scatters should be continuous - } - } - return -} - func (s *Screen3x3) FillSym() Sym { var sym = s[0][0] if s[1][0] == sym && s[2][0] == sym && @@ -387,18 +323,6 @@ func (s *Screen4x4) ScatNum(scat Sym) (n Pos) { return } -func (s *Screen4x4) ScatNumCont(scat Sym) (n Pos) { - for x := 0; x < 4; x++ { - var r = s[x] - if r[0] == scat || r[1] == scat || r[2] == scat || r[3] == scat { - n++ - } else { - break // scatters should be continuous - } - } - return -} - func (s *Screen4x4) ScatPos(scat Sym) (l Linex) { for x := range 4 { var r = s[x] @@ -415,25 +339,6 @@ func (s *Screen4x4) ScatPos(scat Sym) (l Linex) { return } -func (s *Screen4x4) ScatPosCont(scat Sym) (l Linex) { - var x int - for x = 0; x < 4; x++ { - var r = s[x] - if r[0] == scat { - l[x] = 1 - } else if r[1] == scat { - l[x] = 2 - } else if r[2] == scat { - l[x] = 3 - } else if r[3] == scat { - l[x] = 4 - } else { - break // scatters should be continuous - } - } - return -} - func (s *Screen4x4) FillSym() Sym { var sym = s[0][0] if s[1][0] == sym && s[2][0] == sym && s[3][0] == sym && @@ -517,18 +422,6 @@ func (s *Screen5x3) ScatNum(scat Sym) (n Pos) { return } -func (s *Screen5x3) ScatNumCont(scat Sym) (n Pos) { - for x := 0; x < 5; x++ { - var r = s[x] - if r[0] == scat || r[1] == scat || r[2] == scat { - n++ - } else { - break // scatters should be continuous - } - } - return -} - func (s *Screen5x3) ScatPos(scat Sym) (l Linex) { for x := range 5 { var r = s[x] @@ -543,23 +436,6 @@ func (s *Screen5x3) ScatPos(scat Sym) (l Linex) { return } -func (s *Screen5x3) ScatPosCont(scat Sym) (l Linex) { - var x int - for x = 0; x < 5; x++ { - var r = s[x] - if r[0] == scat { - l[x] = 1 - } else if r[1] == scat { - l[x] = 2 - } else if r[2] == scat { - l[x] = 3 - } else { - break // scatters should be continuous - } - } - return -} - func (s *Screen5x3) FillSym() Sym { var sym = s[0][0] if s[1][0] == sym && s[2][0] == sym && s[3][0] == sym && s[4][0] == sym && @@ -642,18 +518,6 @@ func (s *Screen5x4) ScatNum(scat Sym) (n Pos) { return } -func (s *Screen5x4) ScatNumCont(scat Sym) (n Pos) { - for x := 0; x < 5; x++ { - var r = s[x] - if r[0] == scat || r[1] == scat || r[2] == scat || r[3] == scat { - n++ - } else { - break // scatters should be continuous - } - } - return -} - func (s *Screen5x4) ScatPos(scat Sym) (l Linex) { for x := range 5 { var r = s[x] @@ -670,25 +534,6 @@ func (s *Screen5x4) ScatPos(scat Sym) (l Linex) { return } -func (s *Screen5x4) ScatPosCont(scat Sym) (l Linex) { - var x int - for x = 0; x < 5; x++ { - var r = s[x] - if r[0] == scat { - l[x] = 1 - } else if r[1] == scat { - l[x] = 2 - } else if r[2] == scat { - l[x] = 3 - } else if r[3] == scat { - l[x] = 4 - } else { - break // scatters should be continuous - } - } - return -} - func (s *Screen5x4) FillSym() Sym { var sym = s[0][0] if s[1][0] == sym && s[2][0] == sym && s[3][0] == sym && s[4][0] == sym && diff --git a/helper/cherryhot.lua b/helper/cherryhot.lua new file mode 100644 index 00000000..c2fdc46c --- /dev/null +++ b/helper/cherryhot.lua @@ -0,0 +1,28 @@ +local path = arg[0]:match("(.*[/\\])") +dofile(path.."lib/reelgen.lua") + +local symset = { + 3, -- 1 strawberry 1000 + 4, -- 2 blueberry 200 + 5, -- 3 plum 40 + 5, -- 4 pear 40 + 5, -- 5 peach 40 + 5, -- 6 cherry 32 + 6, -- 7 apple 20 + 2, -- 8 scatter +} + +local chunklen = { + 1, -- 1 strawberry + 1, -- 2 blueberry + 6, -- 3 plum + 6, -- 4 pear + 6, -- 5 peach + 6, -- 6 cherry + 6, -- 7 apple + 1, -- 8 scatter +} + +math.randomseed(os.time()) +local reel, iter = makereelhot(symset, 3, {[8]=true}, chunklen) +printreel(reel, iter) diff --git a/task/build-docker.sh b/task/build-docker.sh index 3fb8d9ce..2c917ce7 100644 --- a/task/build-docker.sh +++ b/task/build-docker.sh @@ -5,13 +5,13 @@ # dockerfile has no access to git repository, # so update content of this variable by # echo $(git describe --tags) -buildvers="v0.6.0-1-g8f05805" +buildvers="v0.7.0" # See https://tc39.es/ecma262/#sec-date-time-string-format # time format acceptable for Date constructors. buildtime=$(date +'%FT%T.%3NZ') go env -w GOOS=linux GOARCH=amd64 CGO_ENABLED=1 -go build -o /go/bin/slot_linux_x64 -v\ +go build -o /go/bin/app -v\ -tags="jsoniter prod full"\ -ldflags="-linkmode external -extldflags -static\ -X 'github.com/slotopol/server/config.BuildVers=$buildvers'\