@omnitronix/bonnys-fortune-game-engine 1.7.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/game-logic-config/game-logic-config.js +7 -7
- package/dist/config/game-logic-config/game-logic-config.js.map +1 -1
- package/dist/logic/handlers/collect-feature-bonus.handler.d.ts +0 -1
- package/dist/logic/handlers/collect-feature-bonus.handler.js +14 -14
- package/dist/logic/handlers/collect-feature-bonus.handler.js.map +1 -1
- package/dist/logic/handlers/treasure-hunt-bonus.handler.d.ts +0 -1
- package/dist/logic/handlers/treasure-hunt-bonus.handler.js +13 -12
- package/dist/logic/handlers/treasure-hunt-bonus.handler.js.map +1 -1
- package/package.json +1 -1
- package/src/config/game-logic-config/game-logic-config.ts +7 -7
- package/src/logic/handlers/collect-feature-bonus.handler.ts +16 -24
- package/src/logic/handlers/treasure-hunt-bonus.handler.ts +13 -19
|
@@ -270,22 +270,22 @@ exports.gameLogicConfig = {
|
|
|
270
270
|
potMeter: 'bonusGame2',
|
|
271
271
|
config: {
|
|
272
272
|
spinTypes: [
|
|
273
|
-
// 5x3 layout -
|
|
273
|
+
// 5x3 layout - smallest screen, highest multipliers (C++ math model: x10, x20)
|
|
274
274
|
{
|
|
275
275
|
layout: { reels: 5, rows: 3 },
|
|
276
276
|
spins: 8,
|
|
277
|
-
multiplier:
|
|
277
|
+
multiplier: 10,
|
|
278
278
|
weight: 5,
|
|
279
279
|
reelsOptionsWeights: [1, 1, 4, 4],
|
|
280
280
|
},
|
|
281
281
|
{
|
|
282
282
|
layout: { reels: 5, rows: 3 },
|
|
283
283
|
spins: 4,
|
|
284
|
-
multiplier:
|
|
284
|
+
multiplier: 20,
|
|
285
285
|
weight: 5,
|
|
286
286
|
reelsOptionsWeights: [1, 1, 4, 4],
|
|
287
287
|
},
|
|
288
|
-
// 5x4 layout - medium screen, medium multipliers (
|
|
288
|
+
// 5x4 layout - medium screen, medium multipliers (C++ math model: x3, x6)
|
|
289
289
|
{
|
|
290
290
|
layout: { reels: 5, rows: 4 },
|
|
291
291
|
spins: 8,
|
|
@@ -300,18 +300,18 @@ exports.gameLogicConfig = {
|
|
|
300
300
|
weight: 5,
|
|
301
301
|
reelsOptionsWeights: [1, 1, 4, 4],
|
|
302
302
|
},
|
|
303
|
-
// 5x5 layout -
|
|
303
|
+
// 5x5 layout - largest screen, lowest multipliers (C++ math model: x1, x2)
|
|
304
304
|
{
|
|
305
305
|
layout: { reels: 5, rows: 5 },
|
|
306
306
|
spins: 8,
|
|
307
|
-
multiplier:
|
|
307
|
+
multiplier: 1,
|
|
308
308
|
weight: 5,
|
|
309
309
|
reelsOptionsWeights: [1, 1, 4, 4],
|
|
310
310
|
},
|
|
311
311
|
{
|
|
312
312
|
layout: { reels: 5, rows: 5 },
|
|
313
313
|
spins: 4,
|
|
314
|
-
multiplier:
|
|
314
|
+
multiplier: 2,
|
|
315
315
|
weight: 5,
|
|
316
316
|
reelsOptionsWeights: [1, 1, 4, 4],
|
|
317
317
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game-logic-config.js","sourceRoot":"","sources":["../../../src/config/game-logic-config/game-logic-config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"game-logic-config.js","sourceRoot":"","sources":["../../../src/config/game-logic-config/game-logic-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ class CollectFeatureBonusHandler {
|
|
|
8
8
|
this.rngService = rngService;
|
|
9
9
|
}
|
|
10
10
|
async generateFullBonusRound(params, publicState, privateState, config, commandId) {
|
|
11
|
-
const
|
|
11
|
+
const betGame = params.betAmount;
|
|
12
12
|
const scatterConfig = config.scatterGame.config;
|
|
13
13
|
const results = [];
|
|
14
14
|
const initialPublicState = { ...publicState };
|
|
@@ -23,7 +23,7 @@ class CollectFeatureBonusHandler {
|
|
|
23
23
|
return cp.spin - 1 + result.value;
|
|
24
24
|
}));
|
|
25
25
|
for (let spinIndex = 0; spinIndex < scatterConfig.scatterSpins; spinIndex++) {
|
|
26
|
-
const { result, updatedState, updatedPublicState, updatedPrivateState } = await this.executeSingleSpin(spinIndex, spinsLeft, totalValues, totalMultipliers, totalWin,
|
|
26
|
+
const { result, updatedState, updatedPublicState, updatedPrivateState } = await this.executeSingleSpin(spinIndex, spinsLeft, totalValues, totalMultipliers, totalWin, betGame, scatterConfig, checkpoints, publicState, privateState, commandId);
|
|
27
27
|
results.push({
|
|
28
28
|
result,
|
|
29
29
|
publicState: updatedPublicState,
|
|
@@ -44,7 +44,7 @@ class CollectFeatureBonusHandler {
|
|
|
44
44
|
privateState: initialPrivateState,
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
|
-
async executeSingleSpin(spinIndex, spinsLeft, totalValues, totalMultipliers, totalWin,
|
|
47
|
+
async executeSingleSpin(spinIndex, spinsLeft, totalValues, totalMultipliers, totalWin, betGame, scatterConfig, checkpoints, publicState, privateState, commandId) {
|
|
48
48
|
const symbolCount = await this.weightedPick(scatterConfig.scatterSymbolSpins, commandId, `spin_${spinIndex}_symbol_count`);
|
|
49
49
|
const symbols = [];
|
|
50
50
|
let multiCount = 0;
|
|
@@ -57,12 +57,16 @@ class CollectFeatureBonusHandler {
|
|
|
57
57
|
else
|
|
58
58
|
valueCount++;
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
const cpIndex = checkpoints.indexOf(spinsLeft);
|
|
61
|
+
if (cpIndex >= 0) {
|
|
62
|
+
// Guard: skip checkpoint if a previous checkpoint already matched this spin
|
|
63
|
+
const isDuplicate = cpIndex > 0 && checkpoints[cpIndex] === checkpoints[0];
|
|
64
|
+
if (!isDuplicate) {
|
|
65
|
+
const cp = scatterConfig.scatterCheckpoints[cpIndex];
|
|
66
|
+
if ((totalMultipliers < cp.multiMinValue && multiCount === 0) ||
|
|
67
|
+
(totalValues < cp.valueMinValue && valueCount === 0)) {
|
|
68
|
+
symbols[0] = 'CV1';
|
|
69
|
+
}
|
|
66
70
|
}
|
|
67
71
|
}
|
|
68
72
|
const slashedCount = Math.min(await this.weightedPick(scatterConfig.scatterSymbolSlash, commandId, `spin_${spinIndex}_slashed_count`), symbolCount);
|
|
@@ -84,7 +88,7 @@ class CollectFeatureBonusHandler {
|
|
|
84
88
|
}
|
|
85
89
|
const newTotalValues = number_helper_1.NumberHelper.safeSum(totalValues, currentValues, 2);
|
|
86
90
|
const newTotalMultipliers = number_helper_1.NumberHelper.safeSum(totalMultipliers, currentMultipliers, 2);
|
|
87
|
-
const newTotalWin = number_helper_1.NumberHelper.safeMultiply(number_helper_1.NumberHelper.safeMultiply(newTotalValues, newTotalMultipliers, 2),
|
|
91
|
+
const newTotalWin = number_helper_1.NumberHelper.safeMultiply(number_helper_1.NumberHelper.safeMultiply(newTotalValues, newTotalMultipliers, 2), betGame, 2);
|
|
88
92
|
const playerWinning = number_helper_1.NumberHelper.safeSum(newTotalWin, -totalWin, 2);
|
|
89
93
|
spinsLeft -= 1;
|
|
90
94
|
const collectNextType = spinsLeft > 0 ? bonnys_fortune_types_1.SpinType.COLLECT_FEATURE_SPIN : bonnys_fortune_types_1.SpinType.BASE_GAME_SPIN;
|
|
@@ -149,10 +153,6 @@ class CollectFeatureBonusHandler {
|
|
|
149
153
|
}
|
|
150
154
|
return symbols[0];
|
|
151
155
|
}
|
|
152
|
-
getBetStake(params, config) {
|
|
153
|
-
const baseBet = config.baseGame.baseGameConfig.baseBet;
|
|
154
|
-
return number_helper_1.NumberHelper.safeDivide(params.betAmount, params.creditsPerLine === baseBet ? params.creditsPerLine : baseBet, 3);
|
|
155
|
-
}
|
|
156
156
|
}
|
|
157
157
|
exports.CollectFeatureBonusHandler = CollectFeatureBonusHandler;
|
|
158
158
|
//# sourceMappingURL=collect-feature-bonus.handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-feature-bonus.handler.js","sourceRoot":"","sources":["../../../src/logic/handlers/collect-feature-bonus.handler.ts"],"names":[],"mappings":";;;AAAA,kEAMiC;AAIjC,+DAA2D;AAS3D,MAAa,0BAA0B;IACrC,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEvC,KAAK,CAAC,sBAAsB,CACjC,MAAwB,EACxB,WAAqC,EACrC,YAAuC,EACvC,MAA6C,EAC7C,SAAiB;QAEjB,MAAM,
|
|
1
|
+
{"version":3,"file":"collect-feature-bonus.handler.js","sourceRoot":"","sources":["../../../src/logic/handlers/collect-feature-bonus.handler.ts"],"names":[],"mappings":";;;AAAA,kEAMiC;AAIjC,+DAA2D;AAS3D,MAAa,0BAA0B;IACrC,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEvC,KAAK,CAAC,sBAAsB,CACjC,MAAwB,EACxB,WAAqC,EACrC,YAAuC,EACvC,MAA6C,EAC7C,SAAiB;QAEjB,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;QACjC,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QAChD,MAAM,OAAO,GAAG,EAAE,CAAC;QAEnB,MAAM,kBAAkB,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,MAAM,mBAAmB,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;QAEhD,IAAI,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC;QAC3C,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,aAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;YACvD,MAAM,QAAQ,GAAG,cAAc,KAAK,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAClD,CAAC,EACD,CAAC,EACD,SAAS,EACT,QAAQ,CACT,CAAC;YACF,OAAO,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACpC,CAAC,CAAC,CACH,CAAC;QAEF,KACE,IAAI,SAAS,GAAG,CAAC,EACjB,SAAS,GAAG,aAAa,CAAC,YAAY,EACtC,SAAS,EAAE,EACX,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GACrE,MAAM,IAAI,CAAC,iBAAiB,CAC1B,SAAS,EACT,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,CACV,CAAC;YAEJ,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM;gBACN,WAAW,EAAE,kBAAkB;gBAC/B,YAAY,EAAE,mBAAmB;aAClC,CAAC,CAAC;YAEH,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;YACvC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;YACjD,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;YACjC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;YACnC,WAAW,GAAG,kBAAkB,CAAC;YACjC,YAAY,GAAG,mBAAmB,CAAC;YAEnC,IAAI,SAAS,IAAI,CAAC;gBAAE,MAAM;QAC5B,CAAC;QAED,OAAO;YACL,OAAO;YACP,WAAW,EAAE,kBAAkB;YAC/B,YAAY,EAAE,mBAAmB;SAClC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,SAAiB,EACjB,SAAiB,EACjB,WAAmB,EACnB,gBAAwB,EACxB,QAAgB,EAChB,OAAe,EACf,aAAkB,EAClB,WAAqB,EACrB,WAAqC,EACrC,YAAuC,EACvC,SAAiB;QAYjB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CACzC,aAAa,CAAC,kBAAkB,EAChC,SAAS,EACT,QAAQ,SAAS,eAAe,CACjC,CAAC;QAEF,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC1C,aAAa,CAAC,cAAc,EAC5B,SAAS,EACT,QAAQ,SAAS,WAAW,CAAC,EAAE,CAChC,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,UAAU,EAAE,CAAC;;gBAC9C,UAAU,EAAE,CAAC;QACpB,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,4EAA4E;YAC5E,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,EAAE,GAAG,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBACrD,IACE,CAAC,gBAAgB,GAAG,EAAE,CAAC,aAAa,IAAI,UAAU,KAAK,CAAC,CAAC;oBACzD,CAAC,WAAW,GAAG,EAAE,CAAC,aAAa,IAAI,UAAU,KAAK,CAAC,CAAC,EACpD,CAAC;oBACD,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,MAAM,IAAI,CAAC,YAAY,CACrB,aAAa,CAAC,kBAAkB,EAChC,SAAS,EACT,QAAQ,SAAS,gBAAgB,CAClC,EACD,WAAW,CACZ,CAAC;QACF,MAAM,OAAO,GAAc,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAEzD,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,CAC9C,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAChD,CAAC;gBACF,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC7B,kBAAkB,GAAG,4BAAY,CAAC,OAAO,CACvC,kBAAkB,EAClB,MAAM,CAAC,KAAK,EACZ,CAAC,CACF,CAAC;;oBAEF,aAAa,GAAG,4BAAY,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,4BAAY,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,mBAAmB,GAAG,4BAAY,CAAC,OAAO,CAC9C,gBAAgB,EAChB,kBAAkB,EAClB,CAAC,CACF,CAAC;QACF,MAAM,WAAW,GAAG,4BAAY,CAAC,YAAY,CAC3C,4BAAY,CAAC,YAAY,CAAC,cAAc,EAAE,mBAAmB,EAAE,CAAC,CAAC,EACjE,OAAO,EACP,CAAC,CACF,CAAC;QACF,MAAM,aAAa,GAAG,4BAAY,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEtE,SAAS,IAAI,CAAC,CAAC;QAEf,MAAM,eAAe,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,+BAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,+BAAQ,CAAC,cAAc,CAAC;QAChG,MAAM,MAAM,GAA6B;YACvC,SAAS;YACT,QAAQ,EAAE,+BAAQ,CAAC,oBAAoB;YACvC,OAAO;YACP,OAAO;YACP,aAAa;YACb,kBAAkB;YAClB,WAAW,EAAE,cAAc;YAC3B,gBAAgB,EAAE,mBAAmB;YACrC,aAAa;YACb,QAAQ,EAAE,WAAW;YACrB,SAAS;YACT,YAAY,EAAE,eAAe;YAC7B,kCAAkC;YAClC,UAAU,EAAE,+BAAQ,CAAC,oBAAoB;YACzC,cAAc,EAAE,eAAe;YAC/B,UAAU,EAAE,iBAAiB;YAC7B,eAAe,EAAE,SAAS,KAAK,CAAC;SACjC,CAAC;QAEF,MAAM,kBAAkB,GAA6B;YACnD,GAAG,WAAW;SACf,CAAC;QAEF,MAAM,mBAAmB,GAA8B;YACrD,GAAG,YAAY;YACf,YAAY,EACV,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,+BAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,+BAAQ,CAAC,cAAc;YACzE,WAAW,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;SAClE,CAAC;QAEF,OAAO;YACL,MAAM;YACN,YAAY,EAAE;gBACZ,SAAS;gBACT,WAAW,EAAE,cAAc;gBAC3B,gBAAgB,EAAE,mBAAmB;gBACrC,QAAQ,EAAE,WAAW;aACtB;YACD,kBAAkB;YAClB,mBAAmB;SACpB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,KAAgD,EAChD,SAAiB,EACjB,QAAgB;QAEhB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CACtB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,4BAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EACxD,CAAC,CACF,CAAC;QAEF,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CACzD,CAAC,EACD,GAAG,GAAG,CAAC,EACP,SAAS,EACT,QAAQ,CACT,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,OAAwB,EACxB,SAAiB,EACjB,QAAgB;QAEhB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,4BAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAClD,CAAC,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAClD,CAAC,EACD,GAAG,GAAG,CAAC,EACP,SAAS,EACT,QAAQ,CACT,CAAC;QACF,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;QAE7B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,SAAS,GAAG,CAAC,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC;YACnC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC;QACxB,CAAC;QACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;CACF;AAtRD,gEAsRC"}
|
|
@@ -6,7 +6,6 @@ export declare class TreasureHuntBonusHandler {
|
|
|
6
6
|
private rngService;
|
|
7
7
|
constructor(rngService: RngService);
|
|
8
8
|
generateFullBonusRound(params: GameSpinInputDto, publicState: BonnysFortunePublicState, privateState: BonnysFortunePrivateState, config: BonnysFortuneGameLogicConfigInterface, commandId: string): Promise<BonusRoundResult<TreasureHuntSpinResult>>;
|
|
9
|
-
private getBetStake;
|
|
10
9
|
private drawWinningSymbol;
|
|
11
10
|
private fillRemainingSteps;
|
|
12
11
|
private weightedDraw;
|
|
@@ -8,20 +8,24 @@ class TreasureHuntBonusHandler {
|
|
|
8
8
|
this.rngService = rngService;
|
|
9
9
|
}
|
|
10
10
|
async generateFullBonusRound(params, publicState, privateState, config, commandId) {
|
|
11
|
-
const
|
|
12
|
-
const { stepsCount, jackpotScreenCounts, jackpotMultipliers, winningWeights, } = this.extractBonusConfig(config);
|
|
11
|
+
const betGame = params.betAmount;
|
|
12
|
+
const { symbolsCount, stepsCount, jackpotScreenCounts, jackpotMultipliers, winningWeights, } = this.extractBonusConfig(config);
|
|
13
13
|
const jackpotKeys = Object.keys(jackpotMultipliers);
|
|
14
14
|
const jackpotsNo = Object.values(jackpotScreenCounts);
|
|
15
15
|
const weightsArray = Object.values(winningWeights);
|
|
16
16
|
const winSymbolIndex = await this.drawWinningSymbol(weightsArray, commandId);
|
|
17
|
-
|
|
17
|
+
// Full grid: C++ populates all symbolsCount (25) positions
|
|
18
|
+
const selectionsVector = Array(symbolsCount).fill(-1);
|
|
18
19
|
if (winSymbolIndex >= 0) {
|
|
19
20
|
const positions = await this.randomPositions(stepsCount, 3, commandId);
|
|
20
21
|
positions.forEach((pos) => (selectionsVector[pos] = winSymbolIndex));
|
|
21
22
|
jackpotsNo[winSymbolIndex] = number_helper_1.NumberHelper.safeSum(jackpotsNo[winSymbolIndex], -3, 0);
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
// Fill all symbolsCount positions (6 player steps + 19 background)
|
|
25
|
+
await this.fillRemainingSteps(selectionsVector, symbolsCount, jackpotsNo, winSymbolIndex, commandId);
|
|
26
|
+
// Player only sees the first stepsCount (6) positions
|
|
27
|
+
const playerSelections = selectionsVector.slice(0, stepsCount);
|
|
28
|
+
const selections = playerSelections.map((idx) => jackpotKeys[idx]);
|
|
25
29
|
const multipliers = selections.map((name) => jackpotMultipliers[name]);
|
|
26
30
|
const results = selections.map((symbol, index) => {
|
|
27
31
|
const isFinalStep = index === stepsCount - 1;
|
|
@@ -29,7 +33,7 @@ class TreasureHuntBonusHandler {
|
|
|
29
33
|
? jackpotMultipliers[jackpotKeys[winSymbolIndex]]
|
|
30
34
|
: 0;
|
|
31
35
|
const playerWinning = isFinalStep && winSymbolIndex >= 0
|
|
32
|
-
? number_helper_1.NumberHelper.safeMultiply(
|
|
36
|
+
? number_helper_1.NumberHelper.safeMultiply(betGame, winningMultiplier, 2)
|
|
33
37
|
: 0;
|
|
34
38
|
const treasureNextType = isFinalStep
|
|
35
39
|
? bonnys_fortune_types_1.SpinType.BASE_GAME_SPIN
|
|
@@ -70,10 +74,6 @@ class TreasureHuntBonusHandler {
|
|
|
70
74
|
privateState,
|
|
71
75
|
};
|
|
72
76
|
}
|
|
73
|
-
getBetStake(params, config) {
|
|
74
|
-
const baseBet = config.baseGame.baseGameConfig.baseBet;
|
|
75
|
-
return number_helper_1.NumberHelper.safeDivide(params.betAmount, params.creditsPerLine === baseBet ? params.creditsPerLine : baseBet, 3);
|
|
76
|
-
}
|
|
77
77
|
async drawWinningSymbol(weights, commandId) {
|
|
78
78
|
const total = weights.reduce((acc, w) => number_helper_1.NumberHelper.safeSum(acc, w, 2), 0);
|
|
79
79
|
if (total === 0)
|
|
@@ -88,9 +88,9 @@ class TreasureHuntBonusHandler {
|
|
|
88
88
|
}
|
|
89
89
|
return -1;
|
|
90
90
|
}
|
|
91
|
-
async fillRemainingSteps(vector,
|
|
91
|
+
async fillRemainingSteps(vector, totalSymbols, jackpotsNo, excludeSymbol, commandId) {
|
|
92
92
|
const weights = jackpotsNo.map((_, idx) => idx === excludeSymbol ? 0 : 4);
|
|
93
|
-
for (let i = 0; i <
|
|
93
|
+
for (let i = 0; i < totalSymbols; i++) {
|
|
94
94
|
if (vector[i] < 0) {
|
|
95
95
|
const symbol = await this.weightedDraw(weights, commandId, `fill_step_${i}`);
|
|
96
96
|
vector[i] = symbol;
|
|
@@ -126,6 +126,7 @@ class TreasureHuntBonusHandler {
|
|
|
126
126
|
}
|
|
127
127
|
extractBonusConfig(config) {
|
|
128
128
|
return {
|
|
129
|
+
symbolsCount: config.bonusGames.bonusGame1.config.symbolsCount,
|
|
129
130
|
stepsCount: config.bonusGames.bonusGame1.config.stepsCount,
|
|
130
131
|
jackpotMultipliers: config.bonusGames.bonusGame1.config.jackpotMultipliers,
|
|
131
132
|
winningWeights: config.bonusGames.bonusGame1.config.winningWeights,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treasure-hunt-bonus.handler.js","sourceRoot":"","sources":["../../../src/logic/handlers/treasure-hunt-bonus.handler.ts"],"names":[],"mappings":";;;AAAA,kEAMiC;AAIjC,+DAA2D;AAG3D,MAAa,wBAAwB;IACnC,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEvC,KAAK,CAAC,sBAAsB,CACjC,MAAwB,EACxB,WAAqC,EACrC,YAAuC,EACvC,MAA6C,EAC7C,SAAiB;QAEjB,MAAM,
|
|
1
|
+
{"version":3,"file":"treasure-hunt-bonus.handler.js","sourceRoot":"","sources":["../../../src/logic/handlers/treasure-hunt-bonus.handler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -269,22 +269,22 @@ export const gameLogicConfig: BonnysFortuneGameLogicConfigInterface = {
|
|
|
269
269
|
potMeter: 'bonusGame2',
|
|
270
270
|
config: {
|
|
271
271
|
spinTypes: [
|
|
272
|
-
// 5x3 layout -
|
|
272
|
+
// 5x3 layout - smallest screen, highest multipliers (C++ math model: x10, x20)
|
|
273
273
|
{
|
|
274
274
|
layout: { reels: 5, rows: 3 },
|
|
275
275
|
spins: 8,
|
|
276
|
-
multiplier:
|
|
276
|
+
multiplier: 10,
|
|
277
277
|
weight: 5,
|
|
278
278
|
reelsOptionsWeights: [1, 1, 4, 4],
|
|
279
279
|
},
|
|
280
280
|
{
|
|
281
281
|
layout: { reels: 5, rows: 3 },
|
|
282
282
|
spins: 4,
|
|
283
|
-
multiplier:
|
|
283
|
+
multiplier: 20,
|
|
284
284
|
weight: 5,
|
|
285
285
|
reelsOptionsWeights: [1, 1, 4, 4],
|
|
286
286
|
},
|
|
287
|
-
// 5x4 layout - medium screen, medium multipliers (
|
|
287
|
+
// 5x4 layout - medium screen, medium multipliers (C++ math model: x3, x6)
|
|
288
288
|
{
|
|
289
289
|
layout: { reels: 5, rows: 4 },
|
|
290
290
|
spins: 8,
|
|
@@ -299,18 +299,18 @@ export const gameLogicConfig: BonnysFortuneGameLogicConfigInterface = {
|
|
|
299
299
|
weight: 5,
|
|
300
300
|
reelsOptionsWeights: [1, 1, 4, 4],
|
|
301
301
|
},
|
|
302
|
-
// 5x5 layout -
|
|
302
|
+
// 5x5 layout - largest screen, lowest multipliers (C++ math model: x1, x2)
|
|
303
303
|
{
|
|
304
304
|
layout: { reels: 5, rows: 5 },
|
|
305
305
|
spins: 8,
|
|
306
|
-
multiplier:
|
|
306
|
+
multiplier: 1,
|
|
307
307
|
weight: 5,
|
|
308
308
|
reelsOptionsWeights: [1, 1, 4, 4],
|
|
309
309
|
},
|
|
310
310
|
{
|
|
311
311
|
layout: { reels: 5, rows: 5 },
|
|
312
312
|
spins: 4,
|
|
313
|
-
multiplier:
|
|
313
|
+
multiplier: 2,
|
|
314
314
|
weight: 5,
|
|
315
315
|
reelsOptionsWeights: [1, 1, 4, 4],
|
|
316
316
|
},
|
|
@@ -27,7 +27,7 @@ export class CollectFeatureBonusHandler {
|
|
|
27
27
|
config: BonnysFortuneGameLogicConfigInterface,
|
|
28
28
|
commandId: string,
|
|
29
29
|
): Promise<BonusRoundResult<CollectFeatureSpinResult>> {
|
|
30
|
-
const
|
|
30
|
+
const betGame = params.betAmount;
|
|
31
31
|
const scatterConfig = config.scatterGame.config;
|
|
32
32
|
const results = [];
|
|
33
33
|
|
|
@@ -64,7 +64,7 @@ export class CollectFeatureBonusHandler {
|
|
|
64
64
|
totalValues,
|
|
65
65
|
totalMultipliers,
|
|
66
66
|
totalWin,
|
|
67
|
-
|
|
67
|
+
betGame,
|
|
68
68
|
scatterConfig,
|
|
69
69
|
checkpoints,
|
|
70
70
|
publicState,
|
|
@@ -101,7 +101,7 @@ export class CollectFeatureBonusHandler {
|
|
|
101
101
|
totalValues: number,
|
|
102
102
|
totalMultipliers: number,
|
|
103
103
|
totalWin: number,
|
|
104
|
-
|
|
104
|
+
betGame: number,
|
|
105
105
|
scatterConfig: any,
|
|
106
106
|
checkpoints: number[],
|
|
107
107
|
publicState: BonnysFortunePublicState,
|
|
@@ -139,14 +139,18 @@ export class CollectFeatureBonusHandler {
|
|
|
139
139
|
else valueCount++;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
142
|
+
const cpIndex = checkpoints.indexOf(spinsLeft);
|
|
143
|
+
if (cpIndex >= 0) {
|
|
144
|
+
// Guard: skip checkpoint if a previous checkpoint already matched this spin
|
|
145
|
+
const isDuplicate = cpIndex > 0 && checkpoints[cpIndex] === checkpoints[0];
|
|
146
|
+
if (!isDuplicate) {
|
|
147
|
+
const cp = scatterConfig.scatterCheckpoints[cpIndex];
|
|
148
|
+
if (
|
|
149
|
+
(totalMultipliers < cp.multiMinValue && multiCount === 0) ||
|
|
150
|
+
(totalValues < cp.valueMinValue && valueCount === 0)
|
|
151
|
+
) {
|
|
152
|
+
symbols[0] = 'CV1';
|
|
153
|
+
}
|
|
150
154
|
}
|
|
151
155
|
}
|
|
152
156
|
|
|
@@ -189,7 +193,7 @@ export class CollectFeatureBonusHandler {
|
|
|
189
193
|
);
|
|
190
194
|
const newTotalWin = NumberHelper.safeMultiply(
|
|
191
195
|
NumberHelper.safeMultiply(newTotalValues, newTotalMultipliers, 2),
|
|
192
|
-
|
|
196
|
+
betGame,
|
|
193
197
|
2,
|
|
194
198
|
);
|
|
195
199
|
const playerWinning = NumberHelper.safeSum(newTotalWin, -totalWin, 2);
|
|
@@ -291,16 +295,4 @@ export class CollectFeatureBonusHandler {
|
|
|
291
295
|
}
|
|
292
296
|
return symbols[0];
|
|
293
297
|
}
|
|
294
|
-
|
|
295
|
-
private getBetStake(
|
|
296
|
-
params: GameSpinInputDto,
|
|
297
|
-
config: BonnysFortuneGameLogicConfigInterface,
|
|
298
|
-
): number {
|
|
299
|
-
const baseBet = config.baseGame.baseGameConfig.baseBet;
|
|
300
|
-
return NumberHelper.safeDivide(
|
|
301
|
-
params.betAmount,
|
|
302
|
-
params.creditsPerLine === baseBet ? params.creditsPerLine : baseBet,
|
|
303
|
-
3,
|
|
304
|
-
);
|
|
305
|
-
}
|
|
306
298
|
}
|
|
@@ -21,8 +21,9 @@ export class TreasureHuntBonusHandler {
|
|
|
21
21
|
config: BonnysFortuneGameLogicConfigInterface,
|
|
22
22
|
commandId: string,
|
|
23
23
|
): Promise<BonusRoundResult<TreasureHuntSpinResult>> {
|
|
24
|
-
const
|
|
24
|
+
const betGame = params.betAmount;
|
|
25
25
|
const {
|
|
26
|
+
symbolsCount,
|
|
26
27
|
stepsCount,
|
|
27
28
|
jackpotScreenCounts,
|
|
28
29
|
jackpotMultipliers,
|
|
@@ -38,7 +39,8 @@ export class TreasureHuntBonusHandler {
|
|
|
38
39
|
commandId,
|
|
39
40
|
);
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
// Full grid: C++ populates all symbolsCount (25) positions
|
|
43
|
+
const selectionsVector = Array<number>(symbolsCount).fill(-1);
|
|
42
44
|
|
|
43
45
|
if (winSymbolIndex >= 0) {
|
|
44
46
|
const positions = await this.randomPositions(stepsCount, 3, commandId);
|
|
@@ -50,15 +52,18 @@ export class TreasureHuntBonusHandler {
|
|
|
50
52
|
);
|
|
51
53
|
}
|
|
52
54
|
|
|
55
|
+
// Fill all symbolsCount positions (6 player steps + 19 background)
|
|
53
56
|
await this.fillRemainingSteps(
|
|
54
57
|
selectionsVector,
|
|
55
|
-
|
|
58
|
+
symbolsCount,
|
|
56
59
|
jackpotsNo,
|
|
57
60
|
winSymbolIndex,
|
|
58
61
|
commandId,
|
|
59
62
|
);
|
|
60
63
|
|
|
61
|
-
|
|
64
|
+
// Player only sees the first stepsCount (6) positions
|
|
65
|
+
const playerSelections = selectionsVector.slice(0, stepsCount);
|
|
66
|
+
const selections = playerSelections.map((idx) => jackpotKeys[idx]);
|
|
62
67
|
const multipliers = selections.map((name) => jackpotMultipliers[name]);
|
|
63
68
|
|
|
64
69
|
const results = selections.map((symbol, index) => {
|
|
@@ -70,7 +75,7 @@ export class TreasureHuntBonusHandler {
|
|
|
70
75
|
: 0;
|
|
71
76
|
const playerWinning =
|
|
72
77
|
isFinalStep && winSymbolIndex >= 0
|
|
73
|
-
? NumberHelper.safeMultiply(
|
|
78
|
+
? NumberHelper.safeMultiply(betGame, winningMultiplier, 2)
|
|
74
79
|
: 0;
|
|
75
80
|
const treasureNextType = isFinalStep
|
|
76
81
|
? SpinType.BASE_GAME_SPIN
|
|
@@ -117,18 +122,6 @@ export class TreasureHuntBonusHandler {
|
|
|
117
122
|
};
|
|
118
123
|
}
|
|
119
124
|
|
|
120
|
-
private getBetStake(
|
|
121
|
-
params: GameSpinInputDto,
|
|
122
|
-
config: BonnysFortuneGameLogicConfigInterface,
|
|
123
|
-
): number {
|
|
124
|
-
const baseBet = config.baseGame.baseGameConfig.baseBet;
|
|
125
|
-
return NumberHelper.safeDivide(
|
|
126
|
-
params.betAmount,
|
|
127
|
-
params.creditsPerLine === baseBet ? params.creditsPerLine : baseBet,
|
|
128
|
-
3,
|
|
129
|
-
);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
125
|
private async drawWinningSymbol(
|
|
133
126
|
weights: number[],
|
|
134
127
|
commandId: string,
|
|
@@ -157,7 +150,7 @@ export class TreasureHuntBonusHandler {
|
|
|
157
150
|
|
|
158
151
|
private async fillRemainingSteps(
|
|
159
152
|
vector: number[],
|
|
160
|
-
|
|
153
|
+
totalSymbols: number,
|
|
161
154
|
jackpotsNo: number[],
|
|
162
155
|
excludeSymbol: number | undefined,
|
|
163
156
|
commandId: string,
|
|
@@ -166,7 +159,7 @@ export class TreasureHuntBonusHandler {
|
|
|
166
159
|
idx === excludeSymbol ? 0 : 4,
|
|
167
160
|
);
|
|
168
161
|
|
|
169
|
-
for (let i = 0; i <
|
|
162
|
+
for (let i = 0; i < totalSymbols; i++) {
|
|
170
163
|
if (vector[i] < 0) {
|
|
171
164
|
const symbol = await this.weightedDraw(
|
|
172
165
|
weights,
|
|
@@ -227,6 +220,7 @@ export class TreasureHuntBonusHandler {
|
|
|
227
220
|
|
|
228
221
|
private extractBonusConfig(config: BonnysFortuneGameLogicConfigInterface) {
|
|
229
222
|
return {
|
|
223
|
+
symbolsCount: config.bonusGames.bonusGame1.config.symbolsCount,
|
|
230
224
|
stepsCount: config.bonusGames.bonusGame1.config.stepsCount,
|
|
231
225
|
jackpotMultipliers:
|
|
232
226
|
config.bonusGames.bonusGame1.config.jackpotMultipliers,
|