Skip to content

Commit

Permalink
agt/valentinesday game added.
Browse files Browse the repository at this point in the history
  • Loading branch information
schwarzlichtbezirk committed Dec 26, 2024
1 parent 19d494a commit 8a401e4
Show file tree
Hide file tree
Showing 14 changed files with 463 additions and 22 deletions.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ Slots games server. Releases functionality for Megajack, Novomatic, NetEnt, BetS
Server provides HTTP-based API for popular slots and have well-optimized performance for thousands requests per second. Can be deployed on dedicated server or as portable application for Linux or Windows.

```text
total: 137 games, 71 algorithms, 9 providers
AGT: 55 games
total: 138 games, 72 algorithms, 9 providers
AGT: 56 games
Aristocrat: 4 games
BetSoft: 3 games
Megajack: 3 games
Expand All @@ -30,6 +30,7 @@ Slotopol: 4 games

*Last added games*:

* '[Valentine's Day](https://demo.agtsoftware.com/games/agt/valentine)' AGT 5x3 videoslot
* '[Halloween](https://demo.agtsoftware.com/games/agt/halloween)' AGT 3x3 videoslot
* '[Merry Christmas](https://demo.agtsoftware.com/games/agt/christmas)' AGT 3x3 videoslot
* '[Ice Fruits](https://demo.agtsoftware.com/games/agt/megaice)' AGT 5x3 videoslot
Expand Down
1 change: 1 addition & 0 deletions cmd/links.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ import (
_ "github.com/slotopol/server/game/slot/agt/shiningstars"
_ "github.com/slotopol/server/game/slot/agt/shiningstars100"
_ "github.com/slotopol/server/game/slot/agt/suncity"
_ "github.com/slotopol/server/game/slot/agt/valentinesday"
_ "github.com/slotopol/server/game/slot/agt/valkyrie"
_ "github.com/slotopol/server/game/slot/agt/wizard"
)
3 changes: 3 additions & 0 deletions cmd/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,9 @@ func FormatGameInfo(gi *game.GameInfo, ai int) string {
if gi.GP&game.GPbsym > 0 {
b.WriteString(", has big symbols")
}
if gi.GP&game.GPfill > 0 {
b.WriteString(", has multiplier on filled screen")
}
}
if fRTP && len(gi.RTP) > 0 {
b.WriteString(", RTP: ")
Expand Down
5 changes: 3 additions & 2 deletions docs/list-all.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,15 +133,16 @@
'Tropic Hot' AGT 3x3 videoslot
'Ultra Hot' Novomatic 3x3 videoslot
'Unicorn Magic' Novomatic 5x3 videoslot
'Valentine's Day' AGT 5x3 videoslot
'Valkyrie' AGT 5x3 videoslot
'Viking's Treasure' NetEnt 5x3 videoslot
'Voodoo Vibes' NetEnt 5x3 videoslot
'Wild West' AGT 5x4 videoslot
'Wild Witches' NetEnt 5x3 videoslot
'Wizard' AGT 5x4 videoslot
total: 137 games, 71 algorithms, 9 providers
AGT: 55 games
total: 138 games, 72 algorithms, 9 providers
AGT: 56 games
Aristocrat: 4 games
BetSoft: 3 games
Megajack: 3 games
Expand Down
27 changes: 14 additions & 13 deletions game/linkdata.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,20 @@ import (
type GP uint

const ( // Game properties
GPsel GP = 0b_0000_0000_0001 // user can change lines
GPjack GP = 0b_0000_0000_0010 // cumulative jackpot is present
GPfgno GP = 0 // free games are absent
GPfghas GP = 0b_0000_0000_0100 // non-retriggered free games are present
GPretrig GP = 0b_0000_0000_1000 // free games are present and can be retriggered
GPfgmult GP = 0b_0000_0001_0000 // any multipliers on free games
GPfgreel GP = 0b_0000_0010_0000 // separate reels on free games
GPscat GP = 0b_0000_0100_0000 // has scatters
GPwild GP = 0b_0000_1000_0000 // has wild symbols
GPrwild GP = 0b_0001_0000_0000 // has reel wild symbols
GPbwild GP = 0b_0010_0000_0000 // has big wild (3x3)
GPwmult GP = 0b_0100_0000_0000 // has multiplier on wilds
GPbsym GP = 0b_1000_0000_0000 // has big symbol (usually 3x3 in the center on free games)
GPsel GP = 0b_0000_0000_0000_0001 // user can change lines
GPjack GP = 0b_0000_0000_0000_0010 // cumulative jackpot is present
GPfgno GP = 0 // free games are absent
GPfghas GP = 0b_0000_0000_0000_0100 // non-retriggered free games are present
GPretrig GP = 0b_0000_0000_0000_1000 // free games are present and can be retriggered
GPfgmult GP = 0b_0000_0000_0001_0000 // any multipliers on free games
GPfgreel GP = 0b_0000_0000_0010_0000 // separate reels on free games
GPscat GP = 0b_0000_0000_0100_0000 // has scatters
GPwild GP = 0b_0000_0000_1000_0000 // has wild symbols
GPrwild GP = 0b_0000_0001_0000_0000 // has reel wild symbols
GPbwild GP = 0b_0000_0010_0000_0000 // has big wild (3x3)
GPwmult GP = 0b_0000_0100_0000_0000 // has multiplier on wilds
GPbsym GP = 0b_0000_1000_0000_0000 // has big symbol (usually 3x3 in the center on free games)
GPfill GP = 0b_0001_0000_0000_0000 // has multiplier on filled screen
)

type (
Expand Down
3 changes: 2 additions & 1 deletion game/slot/agt/doubleice/doubleice_link.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ var Info = game.GameInfo{
{Prov: "AGT", Name: "Double Ice"},
{Prov: "AGT", Name: "Double Hot"}, // see: https://demo.agtsoftware.com/games/agt/double
},
GP: game.GPfgno,
GP: game.GPfgno |
game.GPfill,
SX: 3,
SY: 3,
SN: len(LinePay),
Expand Down
29 changes: 29 additions & 0 deletions game/slot/agt/valentinesday/valentinesday_calc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package valentinesday

import (
"context"
"fmt"
"time"

"github.com/slotopol/server/game/slot"
)

func CalcStat(ctx context.Context, mrtp float64) float64 {
var reels, _ = slot.FindReels(ReelsMap, mrtp)
var g = NewGame()
var sln float64 = 1
g.Sel = int(sln)
var s slot.Stat

var dur = slot.ScanReels5x(ctx, &s, g, reels,
time.Tick(2*time.Second), time.Tick(2*time.Second))

var reshuf = float64(s.Reshuffles)
var lrtp, srtp = s.LinePay / reshuf / sln * 100, s.ScatPay / reshuf / sln * 100
var rtpsym = lrtp + srtp
fmt.Printf("completed %.5g%%, selected %d lines, time spent %v\n", reshuf/float64(s.Planned())*100, g.Sel, dur)
fmt.Printf("reels lengths [%d, %d, %d, %d, %d], total reshuffles %d\n",
len(reels.Reel(1)), len(reels.Reel(2)), len(reels.Reel(3)), len(reels.Reel(4)), len(reels.Reel(5)), reels.Reshuffles())
fmt.Printf("RTP = %.5g(lined) + %.5g(scatter) = %.6f%%\n", lrtp, srtp, rtpsym)
return rtpsym
}
26 changes: 26 additions & 0 deletions game/slot/agt/valentinesday/valentinesday_link.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
//go:build !prod || full || agt

package valentinesday

import (
"github.com/slotopol/server/game"
)

var Info = game.GameInfo{
Aliases: []game.GameAlias{
{Prov: "AGT", Name: "Valentine's Day"},
},
GP: game.GPfgno |
game.GPscat |
game.GPfill,
SX: 5,
SY: 3,
SN: len(LinePay),
LN: len(BetLines),
BN: 0,
RTP: game.MakeRtpList(ReelsMap),
}

func init() {
Info.SetupFactory(func() any { return NewGame() }, CalcStat)
}
Loading

0 comments on commit 8a401e4

Please sign in to comment.