Merge branch 'develop' of git.pogorockgames.com:mango-games/server/game into develop
This commit is contained in:
commit
4da947cd56
|
@ -18,16 +18,19 @@ func DataToCli(response any) interface{} {
|
|||
}
|
||||
sort.Slice(Response.BetChangeList, func(i, j int) bool { return Response.BetChangeList[i] < Response.BetChangeList[j] })
|
||||
sort.Slice(Response.BetLevels, func(i, j int) bool { return Response.BetLevels[i] < Response.BetLevels[j] })
|
||||
sort.Slice(Response.BaseBets, func(i, j int) bool { return Response.BaseBets[i] < Response.BaseBets[j] })
|
||||
sort.Slice(BetSizes, func(i, j int) bool { return BetSizes[i] < BetSizes[j] })
|
||||
tableInfo.BetConfig = BetConfig{
|
||||
BetChangeList: Response.BetChangeList,
|
||||
BetSize: BetSizes,
|
||||
BaseBet: Response.BaseBets,
|
||||
BetLevel: Response.BetLevels,
|
||||
BetLines: Response.BetLines,
|
||||
BetType: 1,
|
||||
BetSizeIndex: Response.BetSizeIndex,
|
||||
BetLevelIndex: Response.BetLevelIndex,
|
||||
BetLineIndex: Response.BetLineIndex,
|
||||
BaseBetIndex: Response.BaseBetIndex,
|
||||
}
|
||||
tableInfo.Coin = float64(Response.Coin) / CoinRate
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -47,10 +47,12 @@ type BetConfig struct {
|
|||
BetSize []float64 `json:"bet_size"` //单注
|
||||
BetLevel []int64 `json:"bet_level"` //下注线数
|
||||
BetLines []int64 `json:"bet_lines"` //可选线数
|
||||
BaseBet []int64 `json:"base_bet"` //下注基数
|
||||
BetType int `json:"bet_type"` //total计算方式 1.显示成Lines betSize*betLevel*lines (lines)
|
||||
BetSizeIndex int64 `json:"bet_size_index"` //选中的单注下标
|
||||
BetLevelIndex int64 `json:"bet_level_index"` //选中的等级下标
|
||||
BetLineIndex int64 `json:"bet_line_index"` //选中的线数下标
|
||||
BaseBetIndex int64 `json:"base_bet_index"` //选中的下注基数下标
|
||||
}
|
||||
type TableInfo struct {
|
||||
SpinResult GameEnd `json:"spin_result"`
|
||||
|
|
Binary file not shown.
BIN
gamesrv/slotspkg/external/excel/Base/Slots/CashMania/Feature/S_ItemInfo.xlsx
vendored
Normal file
BIN
gamesrv/slotspkg/external/excel/Base/Slots/CashMania/Feature/S_ItemInfo.xlsx
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -134,7 +134,8 @@ func init() {
|
|||
CashManiaBetBetLine = map[int64]*structs.CashManiaBetBetLine{
|
||||
0: {
|
||||
Index: 0,
|
||||
BetLine: 10,
|
||||
BetLine: 1,
|
||||
BaseBet: 10,
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -194,6 +195,129 @@ func init() {
|
|||
},
|
||||
}
|
||||
|
||||
CashManiaItemInfo = map[int64]*structs.CashManiaItemInfo{
|
||||
1: {
|
||||
Index: 1,
|
||||
ItemID: 1,
|
||||
Value: 10,
|
||||
IsMid: false,
|
||||
},
|
||||
2: {
|
||||
Index: 2,
|
||||
ItemID: 2,
|
||||
Value: 5,
|
||||
IsMid: false,
|
||||
},
|
||||
3: {
|
||||
Index: 3,
|
||||
ItemID: 3,
|
||||
Value: 1,
|
||||
IsMid: false,
|
||||
},
|
||||
4: {
|
||||
Index: 4,
|
||||
ItemID: 4,
|
||||
Value: 0.5,
|
||||
IsMid: false,
|
||||
},
|
||||
5: {
|
||||
Index: 5,
|
||||
ItemID: 5,
|
||||
Value: 0.1,
|
||||
IsMid: false,
|
||||
},
|
||||
6: {
|
||||
Index: 6,
|
||||
ItemID: 6,
|
||||
Value: 1,
|
||||
IsMid: true,
|
||||
},
|
||||
7: {
|
||||
Index: 7,
|
||||
ItemID: 7,
|
||||
Value: 1,
|
||||
IsMid: true,
|
||||
},
|
||||
8: {
|
||||
Index: 8,
|
||||
ItemID: 8,
|
||||
Value: 1,
|
||||
IsMid: true,
|
||||
},
|
||||
9: {
|
||||
Index: 9,
|
||||
ItemID: 9,
|
||||
Value: 1,
|
||||
IsMid: true,
|
||||
},
|
||||
10: {
|
||||
Index: 10,
|
||||
ItemID: 10,
|
||||
Value: 2,
|
||||
IsMid: true,
|
||||
},
|
||||
11: {
|
||||
Index: 11,
|
||||
ItemID: 11,
|
||||
Value: 3,
|
||||
IsMid: true,
|
||||
},
|
||||
12: {
|
||||
Index: 12,
|
||||
ItemID: 12,
|
||||
Value: 5,
|
||||
IsMid: true,
|
||||
},
|
||||
13: {
|
||||
Index: 13,
|
||||
ItemID: 13,
|
||||
Value: 10,
|
||||
IsMid: true,
|
||||
},
|
||||
14: {
|
||||
Index: 14,
|
||||
ItemID: 14,
|
||||
Value: 15,
|
||||
IsMid: true,
|
||||
},
|
||||
15: {
|
||||
Index: 15,
|
||||
ItemID: 15,
|
||||
Value: 20,
|
||||
IsMid: true,
|
||||
},
|
||||
16: {
|
||||
Index: 16,
|
||||
ItemID: 16,
|
||||
Value: 30,
|
||||
IsMid: true,
|
||||
},
|
||||
17: {
|
||||
Index: 17,
|
||||
ItemID: 17,
|
||||
Value: 40,
|
||||
IsMid: true,
|
||||
},
|
||||
18: {
|
||||
Index: 18,
|
||||
ItemID: 18,
|
||||
Value: 50,
|
||||
IsMid: true,
|
||||
},
|
||||
19: {
|
||||
Index: 19,
|
||||
ItemID: 19,
|
||||
Value: 100,
|
||||
IsMid: true,
|
||||
},
|
||||
200: {
|
||||
Index: 200,
|
||||
ItemID: 200,
|
||||
Value: 0,
|
||||
IsMid: true,
|
||||
},
|
||||
}
|
||||
|
||||
CashManiaMapRTPMode = map[int64]*structs.CashManiaMapRTPMode{
|
||||
1: {
|
||||
ID: 1,
|
||||
|
@ -468,7 +592,7 @@ func init() {
|
|||
CashManiaSymbol = map[int64]*structs.CashManiaSymbol{
|
||||
1: {
|
||||
ID: 1,
|
||||
Name: "100倍",
|
||||
Name: "10倍",
|
||||
IsWild: false,
|
||||
Group: []int64{1},
|
||||
PayRate: []int64{0, 0, 100},
|
||||
|
|
|
@ -174,6 +174,7 @@ func init() {
|
|||
0: {
|
||||
Index: 0,
|
||||
BetLine: 5,
|
||||
BaseBet: 1,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -135,6 +135,7 @@ func init() {
|
|||
0: {
|
||||
Index: 0,
|
||||
BetLine: 5,
|
||||
BaseBet: 1,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -10,79 +10,79 @@ func init() {
|
|||
FortuneOxBetBetChangeList = map[int64]*structs.FortuneOxBetBetChangeList{
|
||||
0: {
|
||||
Index: 0,
|
||||
BetChangeList: 0.3,
|
||||
BetChangeList: 300000,
|
||||
BetSizeIndex: 0,
|
||||
BetLevelIndex: 0,
|
||||
},
|
||||
1: {
|
||||
Index: 1,
|
||||
BetChangeList: 0.6,
|
||||
BetChangeList: 600000,
|
||||
BetSizeIndex: 0,
|
||||
BetLevelIndex: 1,
|
||||
},
|
||||
2: {
|
||||
Index: 2,
|
||||
BetChangeList: 0.9,
|
||||
BetChangeList: 900000,
|
||||
BetSizeIndex: 0,
|
||||
BetLevelIndex: 2,
|
||||
},
|
||||
3: {
|
||||
Index: 3,
|
||||
BetChangeList: 1,
|
||||
BetChangeList: 1000000,
|
||||
BetSizeIndex: 1,
|
||||
BetLevelIndex: 0,
|
||||
},
|
||||
4: {
|
||||
Index: 4,
|
||||
BetChangeList: 1.5,
|
||||
BetChangeList: 1500000,
|
||||
BetSizeIndex: 0,
|
||||
BetLevelIndex: 4,
|
||||
},
|
||||
5: {
|
||||
Index: 5,
|
||||
BetChangeList: 3,
|
||||
BetChangeList: 3000000,
|
||||
BetSizeIndex: 0,
|
||||
BetLevelIndex: 9,
|
||||
},
|
||||
6: {
|
||||
Index: 6,
|
||||
BetChangeList: 5,
|
||||
BetChangeList: 5000000,
|
||||
BetSizeIndex: 1,
|
||||
BetLevelIndex: 4,
|
||||
},
|
||||
7: {
|
||||
Index: 7,
|
||||
BetChangeList: 9,
|
||||
BetChangeList: 9000000,
|
||||
BetSizeIndex: 3,
|
||||
BetLevelIndex: 0,
|
||||
},
|
||||
8: {
|
||||
Index: 8,
|
||||
BetChangeList: 10,
|
||||
BetChangeList: 10000000,
|
||||
BetSizeIndex: 1,
|
||||
BetLevelIndex: 9,
|
||||
},
|
||||
9: {
|
||||
Index: 9,
|
||||
BetChangeList: 15,
|
||||
BetChangeList: 15000000,
|
||||
BetSizeIndex: 2,
|
||||
BetLevelIndex: 4,
|
||||
},
|
||||
10: {
|
||||
Index: 10,
|
||||
BetChangeList: 30,
|
||||
BetChangeList: 30000000,
|
||||
BetSizeIndex: 2,
|
||||
BetLevelIndex: 9,
|
||||
},
|
||||
11: {
|
||||
Index: 11,
|
||||
BetChangeList: 45,
|
||||
BetChangeList: 45000000,
|
||||
BetSizeIndex: 3,
|
||||
BetLevelIndex: 4,
|
||||
},
|
||||
12: {
|
||||
Index: 12,
|
||||
BetChangeList: 90,
|
||||
BetChangeList: 90000000,
|
||||
BetSizeIndex: 3,
|
||||
BetLevelIndex: 9,
|
||||
},
|
||||
|
@ -135,25 +135,26 @@ func init() {
|
|||
0: {
|
||||
Index: 0,
|
||||
BetLine: 10,
|
||||
BaseBet: 1,
|
||||
},
|
||||
}
|
||||
|
||||
FortuneOxBetBetSize = map[int64]*structs.FortuneOxBetBetSize{
|
||||
0: {
|
||||
Index: 0,
|
||||
BetSize: 300,
|
||||
BetSize: 300000000,
|
||||
},
|
||||
1: {
|
||||
Index: 1,
|
||||
BetSize: 1000,
|
||||
BetSize: 1000000000,
|
||||
},
|
||||
2: {
|
||||
Index: 2,
|
||||
BetSize: 3000,
|
||||
BetSize: 3000000000,
|
||||
},
|
||||
3: {
|
||||
Index: 3,
|
||||
BetSize: 9000,
|
||||
BetSize: 9000000000,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -135,6 +135,7 @@ func init() {
|
|||
0: {
|
||||
Index: 0,
|
||||
BetLine: 10,
|
||||
BaseBet: 1,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -135,6 +135,7 @@ func init() {
|
|||
0: {
|
||||
Index: 0,
|
||||
BetLine: 5,
|
||||
BaseBet: 1,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -10,6 +10,7 @@ var (
|
|||
CashManiaBetBetSize = map[int64]*structs.CashManiaBetBetSize{}
|
||||
CashManiaBetFirstBet = map[int64]*structs.CashManiaBetFirstBet{}
|
||||
CashManiaFormation = []*structs.CashManiaFormation{}
|
||||
CashManiaItemInfo = map[int64]*structs.CashManiaItemInfo{}
|
||||
CashManiaMapRTPMode = map[int64]*structs.CashManiaMapRTPMode{}
|
||||
CashManiaMidItemInfo = map[int64]*structs.CashManiaMidItemInfo{}
|
||||
CashManiaOthers = []*structs.CashManiaOthers{}
|
||||
|
@ -119,46 +120,6 @@ var (
|
|||
FortuneTigerSuperStackWeight = []*structs.FortuneTigerSuperStackWeight{}
|
||||
FortuneTigerSymbolBetRatio = []*structs.FortuneTigerSymbolBetRatio{}
|
||||
FortuneTigerSymbol = map[int64]*structs.FortuneTigerSymbol{}
|
||||
GateofOlympusBetBetChangeList = map[int64]*structs.GateofOlympusBetBetChangeList{}
|
||||
GateofOlympusBetBetLevel = map[int64]*structs.GateofOlympusBetBetLevel{}
|
||||
GateofOlympusBetBetLine = map[int64]*structs.GateofOlympusBetBetLine{}
|
||||
GateofOlympusBetBetSize = map[int64]*structs.GateofOlympusBetBetSize{}
|
||||
GateofOlympusBetFirstBet = map[int64]*structs.GateofOlympusBetFirstBet{}
|
||||
GateofOlympusFormation = []*structs.GateofOlympusFormation{}
|
||||
GateofOlympusMapRTPMode = map[int64]*structs.GateofOlympusMapRTPMode{}
|
||||
GateofOlympusMultiplier = []*structs.GateofOlympusMultiplier{}
|
||||
GateofOlympusMultiplierKeyID = map[int64]*structs.GateofOlympusMultiplierKeyID{}
|
||||
GateofOlympusReelBaseSpin1Range = [][]int64{}
|
||||
GateofOlympusReelBaseSpin1Reel = [][]int64{}
|
||||
GateofOlympusReelBaseSpin1Weight = [][]float64{}
|
||||
GateofOlympusReelBaseSpin2Range = [][]int64{}
|
||||
GateofOlympusReelBaseSpin2Reel = [][]int64{}
|
||||
GateofOlympusReelBaseSpin2Weight = [][]float64{}
|
||||
GateofOlympusReelBaseSpin3Range = [][]int64{}
|
||||
GateofOlympusReelBaseSpin3Reel = [][]int64{}
|
||||
GateofOlympusReelBaseSpin3Weight = [][]float64{}
|
||||
GateofOlympusReelBaseSpin7Range = [][]int64{}
|
||||
GateofOlympusReelBaseSpin7Reel = [][]int64{}
|
||||
GateofOlympusReelBaseSpin7Weight = [][]float64{}
|
||||
GateofOlympusReelBaseSpin8Range = [][]int64{}
|
||||
GateofOlympusReelBaseSpin8Reel = [][]int64{}
|
||||
GateofOlympusReelBaseSpin8Weight = [][]float64{}
|
||||
GateofOlympusReelBaseSpinRange = [][]int64{}
|
||||
GateofOlympusReelBaseSpinReel = [][]int64{}
|
||||
GateofOlympusReelBaseSpinWeight = [][]float64{}
|
||||
GateofOlympusReelChoose = []*structs.GateofOlympusReelChoose{}
|
||||
GateofOlympusReelFreeSpin4Range = [][]int64{}
|
||||
GateofOlympusReelFreeSpin4Reel = [][]int64{}
|
||||
GateofOlympusReelFreeSpin4Weight = [][]float64{}
|
||||
GateofOlympusReelFreeSpin5Range = [][]int64{}
|
||||
GateofOlympusReelFreeSpin5Reel = [][]int64{}
|
||||
GateofOlympusReelFreeSpin5Weight = [][]float64{}
|
||||
GateofOlympusReelFreeSpinRange = [][]int64{}
|
||||
GateofOlympusReelFreeSpinReel = [][]int64{}
|
||||
GateofOlympusReelFreeSpinWeight = [][]float64{}
|
||||
GateofOlympusScatter = map[int64]*structs.GateofOlympusScatter{}
|
||||
GateofOlympusSymbolBetRatio = []*structs.GateofOlympusSymbolBetRatio{}
|
||||
GateofOlympusSymbol = map[int64]*structs.GateofOlympusSymbol{}
|
||||
MatrixFeaturesForm15X1TypeA = []*structs.MatrixFeaturesForm15X1TypeA{}
|
||||
MatrixFeaturesForm19X1TypeA = []*structs.MatrixFeaturesForm19X1TypeA{}
|
||||
MatrixFeaturesForm20X1TypeA = []*structs.MatrixFeaturesForm20X1TypeA{}
|
||||
|
|
|
@ -69,6 +69,7 @@ func StoragesLoading(data map[string]string) {
|
|||
Load(data, "Base.CashMania/Bet.BetSize", &base.CashManiaBetBetSize)
|
||||
Load(data, "Base.CashMania/Bet.FirstBet", &base.CashManiaBetFirstBet)
|
||||
Load(data, "Base.CashMania/Formation.Default", &base.CashManiaFormation)
|
||||
Load(data, "Base.CashMania/ItemInfo.Default", &base.CashManiaItemInfo)
|
||||
Load(data, "Base.CashMania/Map.RTPMode", &base.CashManiaMapRTPMode)
|
||||
Load(data, "Base.CashMania/MidItemInfo.Default", &base.CashManiaMidItemInfo)
|
||||
Load(data, "Base.CashMania/Others.Default", &base.CashManiaOthers)
|
||||
|
@ -178,46 +179,6 @@ func StoragesLoading(data map[string]string) {
|
|||
Load(data, "Base.FortuneTiger/SuperStack.Weight", &base.FortuneTigerSuperStackWeight)
|
||||
Load(data, "Base.FortuneTiger/Symbol.BetRatio", &base.FortuneTigerSymbolBetRatio)
|
||||
Load(data, "Base.FortuneTiger/Symbol.Default", &base.FortuneTigerSymbol)
|
||||
Load(data, "Base.GateofOlympus/Bet.BetChangeList", &base.GateofOlympusBetBetChangeList)
|
||||
Load(data, "Base.GateofOlympus/Bet.BetLevel", &base.GateofOlympusBetBetLevel)
|
||||
Load(data, "Base.GateofOlympus/Bet.BetLine", &base.GateofOlympusBetBetLine)
|
||||
Load(data, "Base.GateofOlympus/Bet.BetSize", &base.GateofOlympusBetBetSize)
|
||||
Load(data, "Base.GateofOlympus/Bet.FirstBet", &base.GateofOlympusBetFirstBet)
|
||||
Load(data, "Base.GateofOlympus/Formation.Default", &base.GateofOlympusFormation)
|
||||
Load(data, "Base.GateofOlympus/Map.RTPMode", &base.GateofOlympusMapRTPMode)
|
||||
Load(data, "Base.GateofOlympus/Multiplier.Default", &base.GateofOlympusMultiplier)
|
||||
Load(data, "Base.GateofOlympus/Multiplier.Default/ID", &base.GateofOlympusMultiplierKeyID)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin1.Range", &base.GateofOlympusReelBaseSpin1Range)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin1.Reel", &base.GateofOlympusReelBaseSpin1Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin1.Weight", &base.GateofOlympusReelBaseSpin1Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin2.Range", &base.GateofOlympusReelBaseSpin2Range)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin2.Reel", &base.GateofOlympusReelBaseSpin2Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin2.Weight", &base.GateofOlympusReelBaseSpin2Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin3.Range", &base.GateofOlympusReelBaseSpin3Range)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin3.Reel", &base.GateofOlympusReelBaseSpin3Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin3.Weight", &base.GateofOlympusReelBaseSpin3Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin7.Range", &base.GateofOlympusReelBaseSpin7Range)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin7.Reel", &base.GateofOlympusReelBaseSpin7Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin7.Weight", &base.GateofOlympusReelBaseSpin7Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin8.Range", &base.GateofOlympusReelBaseSpin8Range)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin8.Reel", &base.GateofOlympusReelBaseSpin8Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin8.Weight", &base.GateofOlympusReelBaseSpin8Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin.Range", &base.GateofOlympusReelBaseSpinRange)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin.Reel", &base.GateofOlympusReelBaseSpinReel)
|
||||
Load(data, "Base.GateofOlympus/ReelBaseSpin.Weight", &base.GateofOlympusReelBaseSpinWeight)
|
||||
Load(data, "Base.GateofOlympus/ReelChoose.Default", &base.GateofOlympusReelChoose)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin4.Range", &base.GateofOlympusReelFreeSpin4Range)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin4.Reel", &base.GateofOlympusReelFreeSpin4Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin4.Weight", &base.GateofOlympusReelFreeSpin4Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin5.Range", &base.GateofOlympusReelFreeSpin5Range)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin5.Reel", &base.GateofOlympusReelFreeSpin5Reel)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin5.Weight", &base.GateofOlympusReelFreeSpin5Weight)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin.Range", &base.GateofOlympusReelFreeSpinRange)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin.Reel", &base.GateofOlympusReelFreeSpinReel)
|
||||
Load(data, "Base.GateofOlympus/ReelFreeSpin.Weight", &base.GateofOlympusReelFreeSpinWeight)
|
||||
Load(data, "Base.GateofOlympus/Scatter.Default", &base.GateofOlympusScatter)
|
||||
Load(data, "Base.GateofOlympus/Symbol.BetRatio", &base.GateofOlympusSymbolBetRatio)
|
||||
Load(data, "Base.GateofOlympus/Symbol.Default", &base.GateofOlympusSymbol)
|
||||
Load(data, "Base.Matrix/FeaturesForm15X1TypeA.Default", &base.MatrixFeaturesForm15X1TypeA)
|
||||
Load(data, "Base.Matrix/FeaturesForm19X1TypeA.Default", &base.MatrixFeaturesForm19X1TypeA)
|
||||
Load(data, "Base.Matrix/FeaturesForm20X1TypeA.Default", &base.MatrixFeaturesForm20X1TypeA)
|
||||
|
@ -330,6 +291,7 @@ func StoragesMapping() {
|
|||
Set("Base", "CashMania/Bet", "BetSize", base.CashManiaBetBetSize)
|
||||
Set("Base", "CashMania/Bet", "FirstBet", base.CashManiaBetFirstBet)
|
||||
Set("Base", "CashMania/Formation", "Default", base.CashManiaFormation)
|
||||
Set("Base", "CashMania/ItemInfo", "Default", base.CashManiaItemInfo)
|
||||
Set("Base", "CashMania/Map", "RTPMode", base.CashManiaMapRTPMode)
|
||||
Set("Base", "CashMania/MidItemInfo", "Default", base.CashManiaMidItemInfo)
|
||||
Set("Base", "CashMania/Others", "Default", base.CashManiaOthers)
|
||||
|
@ -439,46 +401,6 @@ func StoragesMapping() {
|
|||
Set("Base", "FortuneTiger/SuperStack", "Weight", base.FortuneTigerSuperStackWeight)
|
||||
Set("Base", "FortuneTiger/Symbol", "BetRatio", base.FortuneTigerSymbolBetRatio)
|
||||
Set("Base", "FortuneTiger/Symbol", "Default", base.FortuneTigerSymbol)
|
||||
Set("Base", "GateofOlympus/Bet", "BetChangeList", base.GateofOlympusBetBetChangeList)
|
||||
Set("Base", "GateofOlympus/Bet", "BetLevel", base.GateofOlympusBetBetLevel)
|
||||
Set("Base", "GateofOlympus/Bet", "BetLine", base.GateofOlympusBetBetLine)
|
||||
Set("Base", "GateofOlympus/Bet", "BetSize", base.GateofOlympusBetBetSize)
|
||||
Set("Base", "GateofOlympus/Bet", "FirstBet", base.GateofOlympusBetFirstBet)
|
||||
Set("Base", "GateofOlympus/Formation", "Default", base.GateofOlympusFormation)
|
||||
Set("Base", "GateofOlympus/Map", "RTPMode", base.GateofOlympusMapRTPMode)
|
||||
Set("Base", "GateofOlympus/Multiplier", "Default", base.GateofOlympusMultiplier)
|
||||
Set("Base", "GateofOlympus/Multiplier", "Default/ID", base.GateofOlympusMultiplierKeyID)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin1", "Range", base.GateofOlympusReelBaseSpin1Range)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin1", "Reel", base.GateofOlympusReelBaseSpin1Reel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin1", "Weight", base.GateofOlympusReelBaseSpin1Weight)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin2", "Range", base.GateofOlympusReelBaseSpin2Range)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin2", "Reel", base.GateofOlympusReelBaseSpin2Reel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin2", "Weight", base.GateofOlympusReelBaseSpin2Weight)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin3", "Range", base.GateofOlympusReelBaseSpin3Range)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin3", "Reel", base.GateofOlympusReelBaseSpin3Reel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin3", "Weight", base.GateofOlympusReelBaseSpin3Weight)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin7", "Range", base.GateofOlympusReelBaseSpin7Range)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin7", "Reel", base.GateofOlympusReelBaseSpin7Reel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin7", "Weight", base.GateofOlympusReelBaseSpin7Weight)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin8", "Range", base.GateofOlympusReelBaseSpin8Range)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin8", "Reel", base.GateofOlympusReelBaseSpin8Reel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin8", "Weight", base.GateofOlympusReelBaseSpin8Weight)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin", "Range", base.GateofOlympusReelBaseSpinRange)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin", "Reel", base.GateofOlympusReelBaseSpinReel)
|
||||
Set("Base", "GateofOlympus/ReelBaseSpin", "Weight", base.GateofOlympusReelBaseSpinWeight)
|
||||
Set("Base", "GateofOlympus/ReelChoose", "Default", base.GateofOlympusReelChoose)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin4", "Range", base.GateofOlympusReelFreeSpin4Range)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin4", "Reel", base.GateofOlympusReelFreeSpin4Reel)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin4", "Weight", base.GateofOlympusReelFreeSpin4Weight)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin5", "Range", base.GateofOlympusReelFreeSpin5Range)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin5", "Reel", base.GateofOlympusReelFreeSpin5Reel)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin5", "Weight", base.GateofOlympusReelFreeSpin5Weight)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin", "Range", base.GateofOlympusReelFreeSpinRange)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin", "Reel", base.GateofOlympusReelFreeSpinReel)
|
||||
Set("Base", "GateofOlympus/ReelFreeSpin", "Weight", base.GateofOlympusReelFreeSpinWeight)
|
||||
Set("Base", "GateofOlympus/Scatter", "Default", base.GateofOlympusScatter)
|
||||
Set("Base", "GateofOlympus/Symbol", "BetRatio", base.GateofOlympusSymbolBetRatio)
|
||||
Set("Base", "GateofOlympus/Symbol", "Default", base.GateofOlympusSymbol)
|
||||
Set("Base", "Matrix/FeaturesForm15X1TypeA", "Default", base.MatrixFeaturesForm15X1TypeA)
|
||||
Set("Base", "Matrix/FeaturesForm19X1TypeA", "Default", base.MatrixFeaturesForm19X1TypeA)
|
||||
Set("Base", "Matrix/FeaturesForm20X1TypeA", "Default", base.MatrixFeaturesForm20X1TypeA)
|
||||
|
@ -618,12 +540,6 @@ func LinksMapping() {
|
|||
Link("FortuneTiger/ReelBaseSpin", "Weight/1", "FortuneTiger/ReelBaseSpin", "Weight")
|
||||
Link("FortuneTiger/ReelBaseSpin", "Weight/2", "FortuneTiger/ReelBaseSpin", "Weight")
|
||||
Link("FortuneTiger/ReelBaseSpin", "Weight/3", "FortuneTiger/ReelBaseSpin", "Weight")
|
||||
Link("GatesOfOlympus/MatrixSameForm5X6TypeA", "Default", "Matrix/SameForm5X6TypeA", "Default")
|
||||
Link("GatesOfOlympus/MatrixSameForm5X6TypeB", "Default", "Matrix/SameForm5X6TypeB", "Default")
|
||||
Link("GatesOfOlympus/PrizeModel", "Default", "PrizeModel/PrizeModelTypeB", "Default")
|
||||
Link("GatesOfOlympus/ReelBaseSpin1", "Weight/1", "GatesOfOlympus/ReelBaseSpin1", "Weight")
|
||||
Link("GatesOfOlympus/ReelBaseSpin1", "Weight/2", "GatesOfOlympus/ReelBaseSpin1", "Weight")
|
||||
Link("GatesOfOlympus/ReelBaseSpin1", "Weight/3", "GatesOfOlympus/ReelBaseSpin1", "Weight")
|
||||
Link("Test/MatrixLine1Form3X3TypeA", "Default", "Matrix/Line1Form3X3TypeA", "Default")
|
||||
Link("Test/PrizeModel", "Default", "PrizeModel/PrizeModelTypeB", "Default")
|
||||
Link("Test/ReelBaseSpin", "Weight/1", "Test/ReelBaseSpin", "Weight")
|
||||
|
|
|
@ -58,12 +58,20 @@ type (
|
|||
BetLine struct {
|
||||
Index int64
|
||||
BetLine int64
|
||||
BaseBet int64
|
||||
}
|
||||
// BetSize comment
|
||||
BetSize struct {
|
||||
Index int64
|
||||
BetSize int64
|
||||
}
|
||||
// CashManiaItemInfo comment
|
||||
CashManiaItemInfo struct {
|
||||
Index int64
|
||||
ItemID int64
|
||||
Value float64
|
||||
IsMid bool
|
||||
}
|
||||
// CashManiaMidItemInfo comment
|
||||
CashManiaMidItemInfo struct {
|
||||
Index int64
|
||||
|
@ -164,19 +172,6 @@ type (
|
|||
FreeSpinCount int64
|
||||
MaxWin int64
|
||||
}
|
||||
// GateofOlympusMultiplier comment
|
||||
GateofOlympusMultiplier struct {
|
||||
Multiple int64
|
||||
ID int64
|
||||
Weights []int64
|
||||
}
|
||||
// GateofOlympusReelChoose comment
|
||||
GateofOlympusReelChoose struct {
|
||||
ID int64
|
||||
IsFreeSpin bool
|
||||
NodeType string
|
||||
Weights []int64
|
||||
}
|
||||
// JackpotPrize comment
|
||||
JackpotPrize struct {
|
||||
PrizeType int64
|
||||
|
@ -273,6 +268,11 @@ type (
|
|||
SymbolBetRatio struct {
|
||||
BetRatio float64
|
||||
}
|
||||
// TestBetBetLine comment
|
||||
TestBetBetLine struct {
|
||||
Index int64
|
||||
BetLine int64
|
||||
}
|
||||
// TestRandomWeight comment
|
||||
TestRandomWeight struct {
|
||||
ID int64
|
||||
|
@ -521,42 +521,6 @@ type (
|
|||
// FortuneTigerSymbolBetRatio comment
|
||||
FortuneTigerSymbolBetRatio = SymbolBetRatio
|
||||
|
||||
// GateofOlympusBetBetChangeList comment
|
||||
GateofOlympusBetBetChangeList = BetChangeList
|
||||
|
||||
// GateofOlympusBetBetLevel comment
|
||||
GateofOlympusBetBetLevel = BetLevel
|
||||
|
||||
// GateofOlympusBetBetLine comment
|
||||
GateofOlympusBetBetLine = BetLine
|
||||
|
||||
// GateofOlympusBetBetSize comment
|
||||
GateofOlympusBetBetSize = BetSize
|
||||
|
||||
// GateofOlympusBetFirstBet comment
|
||||
GateofOlympusBetFirstBet = FirstBet
|
||||
|
||||
// GateofOlympusFormation comment
|
||||
GateofOlympusFormation = Formation
|
||||
|
||||
// GateofOlympusMapRTPMode comment
|
||||
GateofOlympusMapRTPMode = MapRTPMode
|
||||
|
||||
// GateofOlympusMapRTPModeTypeWeight comment
|
||||
GateofOlympusMapRTPModeTypeWeight = MapRTPModeTypeWeight
|
||||
|
||||
// GateofOlympusMultiplierKeyID comment
|
||||
GateofOlympusMultiplierKeyID = GateofOlympusMultiplier
|
||||
|
||||
// GateofOlympusScatter comment
|
||||
GateofOlympusScatter = Scatter
|
||||
|
||||
// GateofOlympusSymbol comment
|
||||
GateofOlympusSymbol = Symbol
|
||||
|
||||
// GateofOlympusSymbolBetRatio comment
|
||||
GateofOlympusSymbolBetRatio = SymbolBetRatio
|
||||
|
||||
// MatrixFeaturesForm15X1TypeA comment
|
||||
MatrixFeaturesForm15X1TypeA = Matrix
|
||||
|
||||
|
@ -827,9 +791,6 @@ type (
|
|||
// TestBetBetLevel comment
|
||||
TestBetBetLevel = BetLevel
|
||||
|
||||
// TestBetBetLine comment
|
||||
TestBetBetLine = BetLine
|
||||
|
||||
// TestBetBetSize comment
|
||||
TestBetBetSize = BetSize
|
||||
|
||||
|
@ -850,4 +811,5 @@ type (
|
|||
|
||||
// TestSymbolBetRatio comment
|
||||
TestSymbolBetRatio = SymbolBetRatio
|
||||
|
||||
)
|
|
@ -73,4 +73,12 @@ type SpinLock struct {
|
|||
Prize [][]float64 `json:"pe,omitempty"`
|
||||
//OXSpecial
|
||||
NewSuperStack []int64 `json:"nss,omitempty"`
|
||||
|
||||
//CashMania
|
||||
FeatureType int `json:"feature_type,omitempty"` //0.无特性 1.nudge 2.respin
|
||||
NudgeDirection int `json:"nudge_direction,omitempty"` //1.上 2.下
|
||||
FreeSpinItemId int64 `json:"free_item_id,omitempty"`
|
||||
Multiple int64 `json:"multiple,omitempty"` //倍乘倍数
|
||||
Irv [][]float64 `json:"irv,omitempty"`
|
||||
Frv [][]float64 `json:"frv,omitempty"`
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ func (n *MachineDesc) Sheet(excel string, sheet string) interface{} {
|
|||
return n.DataSet.GetMachineSheet(n.Theme, excel, sheet, 0)
|
||||
}
|
||||
|
||||
func (n *MachineDesc) GetLineBet(betSizeIndex int64, betLevelIndex int64) int64 {
|
||||
func (n *MachineDesc) GetLineBet(betSizeIndex, betLevelIndex, betLineIndex int64) int64 {
|
||||
betSizeRows, ok := n.Sheet("Bet", "BetSize").(map[int64]*structs.BetSize)
|
||||
if !ok {
|
||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "BetSize"))
|
||||
|
@ -55,7 +55,17 @@ func (n *MachineDesc) GetLineBet(betSizeIndex int64, betLevelIndex int64) int64
|
|||
panic(errors.ConfigRowNoMatch.ErrorWith(n.Theme, "BetLevel", betLevelIndex))
|
||||
}
|
||||
|
||||
return betSizeRow.BetSize * betLevelRow.BetLevel
|
||||
betLineRows, ok := n.Sheet("Bet", "BetLine").(map[int64]*structs.BetLine)
|
||||
if !ok {
|
||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "BetLine"))
|
||||
}
|
||||
|
||||
betLineRow, ok := betLineRows[betLineIndex]
|
||||
if !ok {
|
||||
panic(errors.ConfigRowNoMatch.ErrorWith(n.Theme, "BetLine", betLineIndex))
|
||||
}
|
||||
|
||||
return betSizeRow.BetSize * betLevelRow.BetLevel * betLineRow.BaseBet
|
||||
}
|
||||
func (n *MachineDesc) BetSizes() []int64 {
|
||||
betSizeRows, ok := n.Sheet("Bet", "BetSize").(map[int64]*structs.BetSize)
|
||||
|
@ -90,6 +100,17 @@ func (n *MachineDesc) BetLines() []int64 {
|
|||
}
|
||||
return lists
|
||||
}
|
||||
func (n *MachineDesc) BaseBets() []int64 {
|
||||
baseBetRows, ok := n.Sheet("Bet", "BetLine").(map[int64]*structs.BetLine)
|
||||
if !ok {
|
||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "BaseBet"))
|
||||
}
|
||||
var lists []int64
|
||||
for _, list := range baseBetRows {
|
||||
lists = append(lists, list.BaseBet)
|
||||
}
|
||||
return lists
|
||||
}
|
||||
func (n *MachineDesc) BetChangeList() []float64 {
|
||||
betChangeListRows, ok := n.Sheet("Bet", "BetChangeList").(map[int64]*structs.BetChangeList)
|
||||
if !ok {
|
||||
|
|
|
@ -281,11 +281,11 @@ func (e *Entity) CalcWinType(multi float64) int64 {
|
|||
}
|
||||
|
||||
func (e *Entity) GetLineBetByType(nodeType string) int64 {
|
||||
return e.MachineDesc.GetLineBet(e.NodeTree.Act.BetSizeIndex, e.NodeTree.Act.BetLevelIndex)
|
||||
return e.MachineDesc.GetLineBet(e.NodeTree.Act.BetSizeIndex, e.NodeTree.Act.BetLevelIndex, e.NodeTree.Act.BetLineIndex)
|
||||
}
|
||||
|
||||
func (e *Entity) GetMinLineBet(nodeType string) int64 {
|
||||
return e.MachineDesc.GetLineBet(1, 1)
|
||||
return e.MachineDesc.GetLineBet(1, 1, 1)
|
||||
}
|
||||
|
||||
func (e *Entity) SetBetCoin(betCoin player.DecCoin) {
|
||||
|
|
|
@ -46,6 +46,7 @@ func (sm *SlotsMgr) Enter(s *base.SlotsSession, gameId int64) (*cli.SlotsEnterRe
|
|||
BetSizes: m.BetSizes(),
|
||||
BetLevels: m.BetLevels(),
|
||||
BetLines: m.BetLines(),
|
||||
BaseBets: m.BaseBets(),
|
||||
BetChangeList: m.BetChangeList(),
|
||||
}
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ type Spinner interface {
|
|||
BetSizes() []int64
|
||||
BetLevels() []int64
|
||||
BetLines() []int64
|
||||
BaseBets() []int64
|
||||
BetChangeList() []float64
|
||||
|
||||
Choice() int64
|
||||
|
|
|
@ -39,6 +39,9 @@ func (m *Machine) BetLevels() []int64 {
|
|||
func (m *Machine) BetLines() []int64 {
|
||||
return m.MachineDesc.BetLines()
|
||||
}
|
||||
func (m *Machine) BaseBets() []int64 {
|
||||
return m.MachineDesc.BaseBets()
|
||||
}
|
||||
func (m *Machine) BetChangeList() []float64 {
|
||||
return m.MachineDesc.BetChangeList()
|
||||
}
|
||||
|
|
|
@ -29,8 +29,21 @@ type CustomRespin struct {
|
|||
// 本次的symbol
|
||||
ItemId int64
|
||||
}
|
||||
|
||||
type CustomFortune struct {
|
||||
ForceRound int64 `json:"fr"` //第n次
|
||||
|
||||
FeatureType int `json:"feature_type"` //0.无特性 1.nudge 2.respin
|
||||
NudgeDirection int `json:"nudge_direction"` //1.上 2.下
|
||||
|
||||
FreeSpinItemId int64 `json:"free_item_id"`
|
||||
|
||||
Multiple int64 `json:"multiple"` //倍乘倍数
|
||||
|
||||
FreeStatus int `json:"fs"`
|
||||
FreeSpinNum int64 `json:"fsn"` //剩余freespin
|
||||
FreeNumMax int64 `json:"fnm"` //总次数
|
||||
FreeNumTrigger int64 `json:"fnt"` //新增freespin
|
||||
}
|
||||
|
||||
// Theme is called to get feature theme
|
||||
|
@ -44,8 +57,8 @@ func (p *PluginBase) Customs() []interface{} {
|
|||
&CustomMidInfo{},
|
||||
&CustomNudge{},
|
||||
&CustomRespin{},
|
||||
&Special{},
|
||||
&CustomFortune{})
|
||||
&CustomFortune{},
|
||||
&Special{})
|
||||
}
|
||||
|
||||
// OnStepBegin is called on initializing a step
|
||||
|
@ -58,6 +71,9 @@ func (p *PluginBase) BeforeDisplay(m intf.Master) {
|
|||
case key.BaseSpin:
|
||||
p.changeItem(m, false)
|
||||
case key.FreeSpin:
|
||||
Fortune := getCustomFortune(m)
|
||||
Fortune.FreeStatus = 0
|
||||
Fortune.FreeNumTrigger = 0
|
||||
p.changeItem(m, true)
|
||||
}
|
||||
|
||||
|
@ -67,9 +83,15 @@ func (p *PluginBase) AfterDisplay(m intf.Master) {
|
|||
isFreeSpin := m.Cursor().GetType() == key.FreeSpin
|
||||
cursorFormation := m.CursorFormation()
|
||||
symbols := cursorFormation.GetSymbols()
|
||||
|
||||
Fortune := getCustomFortune(m)
|
||||
|
||||
Fortune.FeatureType = WU
|
||||
if m.Bool("Nudge") {
|
||||
Fortune.FeatureType = Nudge
|
||||
//todo 如果当前是nudge
|
||||
if m.Bool("NudgeDown") {
|
||||
Fortune.NudgeDirection = Nudge_Down
|
||||
symbols[9] = symbols[8]
|
||||
symbols[8] = symbols[7]
|
||||
symbols[7] = symbols[6]
|
||||
|
@ -77,6 +99,7 @@ func (p *PluginBase) AfterDisplay(m intf.Master) {
|
|||
symbols[5] = Descx(m).RandomMidItems(isFreeSpin, 1)[0]
|
||||
m.Remove("NudgeDown")
|
||||
} else if m.Bool("NudgeUp") {
|
||||
Fortune.NudgeDirection = Nudge_Up
|
||||
symbols[5] = symbols[6]
|
||||
symbols[6] = symbols[7]
|
||||
symbols[7] = symbols[8]
|
||||
|
@ -86,6 +109,7 @@ func (p *PluginBase) AfterDisplay(m intf.Master) {
|
|||
}
|
||||
m.Remove("Nudge")
|
||||
} else if m.Bool("Respin") {
|
||||
Fortune.FeatureType = Respin
|
||||
//todo 如果当前是respin
|
||||
if m.Int64("respinsymbols") > 0 {
|
||||
symbols[2] = m.Int64("respinsymbols")
|
||||
|
@ -109,6 +133,14 @@ func (p *PluginBase) AfterSpin(m intf.Master) {
|
|||
p.checkMid(m, false)
|
||||
case key.FreeSpin:
|
||||
p.checkMid(m, true)
|
||||
Fortune := getCustomFortune(m)
|
||||
if Fortune.FreeSpinNum > 0 {
|
||||
if Fortune.FreeSpinNum == 1 {
|
||||
Fortune.FreeStatus = 3
|
||||
}
|
||||
Fortune.FreeSpinNum--
|
||||
//logx.Errorf("这里是哇哇哇 Trigger[%v] FreeNumMax[%v] FreeSpinNum[%v]", Fortune.FreeNumTrigger, Fortune.FreeNumMax, Fortune.FreeSpinNum)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -133,26 +165,24 @@ func (p *PluginBase) Nudge(m intf.Master, symbols []int64) {
|
|||
}
|
||||
}
|
||||
|
||||
// 获取特性数据
|
||||
func (p *PluginBase) getCustomFortune(m intf.Master) *CustomFortune {
|
||||
customFortune := new(CustomFortune)
|
||||
if len(m.CursorCustoms(customFortune)) == 0 {
|
||||
m.AddCursorFeature(customFortune)
|
||||
}
|
||||
return m.CursorCustom(customFortune).(*CustomFortune)
|
||||
}
|
||||
func (p *PluginBase) changeItem(m intf.Master, isFreeSpin bool) {
|
||||
curFormation := m.CursorFormation()
|
||||
symbols := curFormation.GetSymbols()
|
||||
isWin := Descx(m).CheckWin(isFreeSpin)
|
||||
//todo ceshi
|
||||
//isWin = true
|
||||
|
||||
if isFreeSpin {
|
||||
Fortune := p.getCustomFortune(m)
|
||||
Fortune := getCustomFortune(m)
|
||||
if Fortune.ForceRound == m.GetProgressValue() {
|
||||
isWin = true
|
||||
}
|
||||
}
|
||||
isNudge, isReSpin := Descx(m).GetNudgeAndReSpin(isWin)
|
||||
|
||||
//todo ceshi
|
||||
//isNudge = true
|
||||
//isReSpin = true
|
||||
if isWin {
|
||||
itemId := Descx(m).GetWinItem(isFreeSpin)
|
||||
symbols[2] = itemId
|
||||
|
@ -267,13 +297,35 @@ func (p *PluginBase) checkMid(m intf.Master, isFreeSpin bool) {
|
|||
FreeSpinCount: freeSpinCount,
|
||||
}).SetWin(win * (multi - 1))
|
||||
|
||||
Fortune := getCustomFortune(m)
|
||||
|
||||
Fortune.Multiple = multi
|
||||
//Fortune.MultipleWin = win * (multi - 1)
|
||||
Fortune.FreeSpinItemId = symbols[7]
|
||||
if freeSpinCount > 0 {
|
||||
customFortune := getCustomFortune(m)
|
||||
if isFreeSpin {
|
||||
//logx.Errorf("----ReTrigger[%v] FreeNumMax[%v] FreeSpinNum[%v]", customFortune.FreeNumTrigger, customFortune.FreeNumMax, customFortune.FreeSpinNum)
|
||||
customFortune.FreeStatus = 2
|
||||
customFortune.FreeNumTrigger = freeSpinCount
|
||||
customFortune.FreeNumMax += freeSpinCount
|
||||
customFortune.FreeSpinNum += freeSpinCount
|
||||
|
||||
//logx.Errorf("----2ReTrigger[%v] FreeNumMax[%v] FreeSpinNum[%v]", customFortune.FreeNumTrigger, customFortune.FreeNumMax, customFortune.FreeSpinNum)
|
||||
|
||||
m.AddProgress(freeSpinCount)
|
||||
m.AddCursorFeature(&generic.CustomExtraFreeSpin{ExtraTimes: freeSpinCount}).SetLifetime(1)
|
||||
//m.AddCursorFeature(customFortune).SetLifetime(customFortune.FreeSpinNum)
|
||||
m.CursorFeature(customFortune).SetLifetime(customFortune.FreeSpinNum)
|
||||
} else {
|
||||
//logx.Errorf("11Trigger[%v] FreeNumMax[%v] FreeSpinNum[%v]", customFortune.FreeNumTrigger, customFortune.FreeNumMax, customFortune.FreeSpinNum)
|
||||
customFortune.FreeStatus = 1
|
||||
customFortune.FreeNumTrigger = freeSpinCount
|
||||
customFortune.FreeNumMax += freeSpinCount
|
||||
customFortune.FreeSpinNum = freeSpinCount
|
||||
ForceRound := m.Randx().Int63n(freeSpinCount)
|
||||
m.AddNodeFeature(m.AddNodeOnCursor(key.FreeSpin, freeSpinCount).GetID(), &CustomFortune{ForceRound: ForceRound})
|
||||
customFortune.ForceRound = ForceRound
|
||||
//logx.Errorf("1111111Trigger[%v] FreeNumMax[%v] FreeSpinNum[%v]", customFortune.FreeNumTrigger, customFortune.FreeNumMax, customFortune.FreeSpinNum)
|
||||
m.AddNodeFeature(m.AddNodeOnCursor(key.FreeSpin, freeSpinCount).GetID(), customFortune).SetLifetime(freeSpinCount)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,25 @@ package cashmania
|
|||
|
||||
import "mongo.games.com/game/gamesrv/slotspkg/slots/intf"
|
||||
|
||||
const (
|
||||
WU int = iota
|
||||
Nudge
|
||||
Respin
|
||||
)
|
||||
const (
|
||||
Nudge_WU int = iota
|
||||
Nudge_Up
|
||||
Nudge_Down
|
||||
)
|
||||
|
||||
// 获取特性数据
|
||||
func getCustomFortune(m intf.Master) *CustomFortune {
|
||||
customFortune := new(CustomFortune)
|
||||
if len(m.CursorCustoms(customFortune)) == 0 {
|
||||
m.AddCursorFeature(customFortune)
|
||||
}
|
||||
return m.CursorCustom(customFortune).(*CustomFortune)
|
||||
}
|
||||
func (p *PluginBase) RandomItemsByMid(m intf.Master, isFreeSpin bool, symbols []int64, poss ...int) {
|
||||
items := Descx(m).RandomMidItems(isFreeSpin, len(poss))
|
||||
for i, pos := range poss {
|
||||
|
|
|
@ -19,6 +19,14 @@ func Descx(m intf.Master) *descx {
|
|||
NodeDesc: m.Desc(),
|
||||
}
|
||||
}
|
||||
func (n descx) GetItemInfo() map[int64]*structs.CashManiaItemInfo {
|
||||
sheet := n.DefaultSheet("ItemInfo")
|
||||
rows, ok := sheet.(map[int64]*structs.CashManiaItemInfo)
|
||||
if !ok {
|
||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "CashMania", "S_ItemInfo"))
|
||||
}
|
||||
return rows
|
||||
}
|
||||
|
||||
// 判断是否触发respin
|
||||
func (n descx) CheckWin(isFreeSpin bool) bool {
|
||||
|
|
|
@ -2,6 +2,7 @@ package cashmania
|
|||
|
||||
var Plugins = []interface{}{
|
||||
&PluginBase{},
|
||||
&PluginSpecial{},
|
||||
}
|
||||
|
||||
var SimulatorPlugins = []interface{}{
|
||||
|
|
|
@ -17,6 +17,17 @@ func (p *PluginSpecial) Theme() string {
|
|||
|
||||
// Special
|
||||
type Special struct {
|
||||
FreeStatus int `json:"fs"`
|
||||
FreeSpinNum int64 `json:"fsn"` //剩余freespin
|
||||
FreeNumMax int64 `json:"fnm"` //总次数
|
||||
FreeNumTrigger int64 `json:"fnt"` //新增freespin
|
||||
|
||||
FeatureType int `json:"feature_type"` //0.无特性 1.nudge 2.respin
|
||||
NudgeDirection int `json:"nudge_direction"` //1.上 2.下
|
||||
FreeSpinItemId int64 `json:"free_item_id"`
|
||||
Multiple int64 `json:"multiple"` //倍乘倍数
|
||||
Irv [][]float64 `json:"irv"`
|
||||
Frv [][]float64 `json:"frv"`
|
||||
}
|
||||
|
||||
// 获取特性数据
|
||||
|
@ -28,5 +39,56 @@ func (p *PluginSpecial) getCustomSpecial(m intf.Master) *Special {
|
|||
return m.CursorCustom(customSpecial).(*Special)
|
||||
}
|
||||
func (p *PluginSpecial) AfterSpin(m intf.Master) {
|
||||
Fortune := getCustomFortune(m)
|
||||
sp := p.getCustomSpecial(m)
|
||||
sp.FeatureType = Fortune.FeatureType
|
||||
sp.NudgeDirection = Fortune.NudgeDirection
|
||||
sp.FreeStatus = Fortune.FreeStatus
|
||||
sp.FreeSpinNum = Fortune.FreeSpinNum
|
||||
sp.FreeNumMax = Fortune.FreeNumMax
|
||||
sp.FreeNumTrigger = Fortune.FreeNumTrigger
|
||||
sp.FreeSpinItemId = Fortune.FreeSpinItemId
|
||||
sp.Multiple = Fortune.Multiple
|
||||
|
||||
itemInfo := Descx(m).GetItemInfo()
|
||||
displaySymbols := m.CursorFormation().GetReelFormattedDisplaySymbols()
|
||||
var irv = copyMatrix(displaySymbols)
|
||||
for i, symbol := range displaySymbols {
|
||||
for i2, i3 := range symbol {
|
||||
if itemInfo[i3].IsMid {
|
||||
irv[i][i2] = itemInfo[i3].Value
|
||||
} else {
|
||||
irv[i][i2] = itemInfo[i3].Value * float64(m.Bet()) / 10000
|
||||
}
|
||||
}
|
||||
}
|
||||
sp.Irv = irv
|
||||
|
||||
finalSymbols := m.CursorFormation().GetMatrixFormattedFinalSymbols()
|
||||
var frv = copyMatrix(finalSymbols)
|
||||
for i, symbol := range finalSymbols {
|
||||
for i2, i3 := range symbol {
|
||||
if itemInfo[i3].IsMid {
|
||||
frv[i][i2] = itemInfo[i3].Value
|
||||
} else {
|
||||
frv[i][i2] = itemInfo[i3].Value * float64(m.Bet()) / 10000
|
||||
}
|
||||
}
|
||||
}
|
||||
sp.Frv = frv
|
||||
|
||||
}
|
||||
func copyMatrix(mat [][]int64) [][]float64 {
|
||||
if mat == nil {
|
||||
return nil
|
||||
}
|
||||
var newMat [][]float64
|
||||
for _, row := range mat {
|
||||
var r []float64
|
||||
for _, val := range row {
|
||||
r = append(r, 0*float64(val))
|
||||
}
|
||||
newMat = append(newMat, r)
|
||||
}
|
||||
return newMat
|
||||
}
|
||||
|
|
|
@ -12,10 +12,12 @@ type SlotsEnterResponse struct {
|
|||
BetSizeIndex int64
|
||||
BetLevelIndex int64
|
||||
BetLineIndex int64
|
||||
BaseBetIndex int64
|
||||
BetChangeList []float64
|
||||
BetSizes []int64
|
||||
BetLevels []int64
|
||||
BetLines []int64
|
||||
BaseBets []int64
|
||||
}
|
||||
type SlotsPlayRequest struct {
|
||||
Theme string
|
||||
|
|
Loading…
Reference in New Issue