Skip to content

Commit

Permalink
novomatic/fruitilicious game added.
Browse files Browse the repository at this point in the history
  • Loading branch information
schwarzlichtbezirk committed Jan 15, 2025
1 parent 18796c4 commit 981eabc
Show file tree
Hide file tree
Showing 18 changed files with 417 additions and 36 deletions.
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,21 @@ Slots games server. Releases functionality for AGT, Novomatic, NetEnt, BetSoft,
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: 159 games, 77 algorithms, 9 providers
total: 160 games, 78 algorithms, 9 providers
AGT: 56 games
Aristocrat: 4 games
BetSoft: 3 games
Megajack: 4 games
NetEnt: 20 games
Novomatic: 58 games
Novomatic: 59 games
Play'n GO: 3 games
Playtech: 7 games
Slotopol: 4 games
```

*Last added games*:

* '[Fruitilicious](https://www.slotsmate.com/software/novomatic/fruitilicious)' Novomatic 5x3 videoslot
* '[Jaguar Moon](https://www.slotsmate.com/software/novomatic/jaguar-moon)' Novomatic 5x3, 243 ways videoslot
* '[African Simba](https://www.slotsmate.com/software/novomatic/african-simba)' Novomatic 5x3, 243 ways videoslot
* '[Mega Joker](https://www.slotsmate.com/software/novomatic/mega-joker)' Novomatic 5x4 videoslot
Expand All @@ -38,8 +39,6 @@ Slotopol: 4 games
* '[Book of Ra](https://www.slotsmate.com/software/novomatic/book-of-ra-classic)' Novomatic 5x3 videoslot
* '[Gate of Ra Deluxe](https://www.slotsmate.com/software/novomatic/gate-of-ra-deluxe)' Novomatic 5x3 videoslot
* '[Faust](https://freeslotshub.com/novomatic/faust/)' Novomatic 5x3 videoslot
* 'God of Sun' Novomatic 5x3 videoslot
* 'Down Under' Novomatic 5x3 videoslot
* 'Lord of the Ocean' Novomatic 5x3 videoslot
* '[Valentine's Day](https://demo.agtsoftware.com/games/agt/valentine)' 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 @@ -23,6 +23,7 @@ import (
_ "github.com/slotopol/server/game/slot/novomatic/chicago"
_ "github.com/slotopol/server/game/slot/novomatic/columbus"
_ "github.com/slotopol/server/game/slot/novomatic/dolphinspearl"
_ "github.com/slotopol/server/game/slot/novomatic/fruitilicious"
_ "github.com/slotopol/server/game/slot/novomatic/jaguarmoon"
_ "github.com/slotopol/server/game/slot/novomatic/jewels"
_ "github.com/slotopol/server/game/slot/novomatic/jewels4all"
Expand Down
5 changes: 3 additions & 2 deletions docs/list-all.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
'Firefighters' AGT 5x3 videoslot
'Fortune Teller' Play'n GO 5x3 videoslot
'Fruit Shop' NetEnt 5x3 videoslot
'Fruitilicious' Novomatic 5x3 videoslot
'Funky Seventies' NetEnt 5x4 videoslot
'Gate of Ra Deluxe' Novomatic 5x3 videoslot
'Geisha Wonders' NetEnt 5x3 videoslot
Expand Down Expand Up @@ -162,13 +163,13 @@
'Wild Witches' NetEnt 5x3 videoslot
'Wizard' AGT 5x4 videoslot
total: 159 games, 77 algorithms, 9 providers
total: 160 games, 78 algorithms, 9 providers
AGT: 56 games
Aristocrat: 4 games
BetSoft: 3 games
Megajack: 4 games
NetEnt: 20 games
Novomatic: 58 games
Novomatic: 59 games
Play'n GO: 3 games
Playtech: 7 games
Slotopol: 4 games
Expand Down
26 changes: 14 additions & 12 deletions game/linkdata.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,21 @@ type GP uint

const ( // Game properties
GPsel GP = 0b_0000_0000_0000_0001 // user can change lines
GPjack GP = 0b_0000_0000_0000_0010 // cumulative jackpot is present
GPrline GP = 0b_0000_0000_0000_0010 // pays left to right and right to left
GPcline GP = 0b_0000_0000_0000_0100 // pays for combination at any position
GPjack GP = 0b_0000_0000_0000_1000 // 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
GPfghas GP = 0b_0000_0000_0001_0000 // non-retriggered free games are present
GPretrig GP = 0b_0000_0000_0010_0000 // free games are present and can be retriggered
GPfgmult GP = 0b_0000_0000_0100_0000 // any multipliers on free games
GPfgreel GP = 0b_0000_0000_1000_0000 // separate reels on free games
GPscat GP = 0b_0000_0001_0000_0000 // has scatters
GPwild GP = 0b_0000_0010_0000_0000 // has wild symbols
GPrwild GP = 0b_0000_0100_0000_0000 // has reel wild symbols
GPbwild GP = 0b_0000_1000_0000_0000 // has big wild (3x3)
GPwmult GP = 0b_0001_0000_0000_0000 // has multiplier on wilds
GPbsym GP = 0b_0010_0000_0000_0000 // has big symbol (usually 3x3 in the center on free games)
GPfill GP = 0b_0100_0000_0000_0000 // has multiplier on filled screen
)

type (
Expand Down
29 changes: 29 additions & 0 deletions game/slot/novomatic/fruitilicious/fruitilicious_calc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package fruitilicious

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
}
25 changes: 25 additions & 0 deletions game/slot/novomatic/fruitilicious/fruitilicious_link.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//go:build !prod || full || novomatic

package fruitilicious

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

var Info = game.GameInfo{
Aliases: []game.GameAlias{
{Prov: "Novomatic", Name: "Fruitilicious"},
},
GP: game.GPrline |
game.GPfgno,
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 981eabc

Please sign in to comment.