@omnitronix/happy-panda-game-engine 0.0.3 → 0.0.5

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.
Files changed (86) hide show
  1. package/dist/__tests__/bonus-sequence.test.d.ts +7 -0
  2. package/dist/__tests__/bonus-sequence.test.d.ts.map +1 -0
  3. package/dist/__tests__/cherry-frequency.test.d.ts +8 -0
  4. package/dist/__tests__/cherry-frequency.test.d.ts.map +1 -0
  5. package/dist/__tests__/counter-manager.test.d.ts +7 -0
  6. package/dist/__tests__/counter-manager.test.d.ts.map +1 -0
  7. package/dist/__tests__/cpp-parity.test.d.ts +39 -0
  8. package/dist/__tests__/cpp-parity.test.d.ts.map +1 -0
  9. package/dist/__tests__/cpp-parity.test.js +29 -25
  10. package/dist/__tests__/cpp-parity.test.js.map +1 -1
  11. package/dist/__tests__/fixtures/cpp-parity-vectors.json +69 -50
  12. package/dist/__tests__/happy-panda-engine.test.d.ts +7 -0
  13. package/dist/__tests__/happy-panda-engine.test.d.ts.map +1 -0
  14. package/dist/__tests__/jackpot-manager.test.d.ts +8 -0
  15. package/dist/__tests__/jackpot-manager.test.d.ts.map +1 -0
  16. package/dist/__tests__/jackpot-trigger-trace.test.d.ts +6 -0
  17. package/dist/__tests__/jackpot-trigger-trace.test.d.ts.map +1 -0
  18. package/dist/__tests__/rtp-1million.test.d.ts +8 -0
  19. package/dist/__tests__/rtp-1million.test.d.ts.map +1 -0
  20. package/dist/__tests__/rtp-analysis.test.d.ts +8 -0
  21. package/dist/__tests__/rtp-analysis.test.d.ts.map +1 -0
  22. package/dist/__tests__/rtp-diagnostic.test.d.ts +6 -0
  23. package/dist/__tests__/rtp-diagnostic.test.d.ts.map +1 -0
  24. package/dist/__tests__/rtp-simulation.test.d.ts +8 -0
  25. package/dist/__tests__/rtp-simulation.test.d.ts.map +1 -0
  26. package/dist/__tests__/special-wins.test.d.ts +7 -0
  27. package/dist/__tests__/special-wins.test.d.ts.map +1 -0
  28. package/dist/__tests__/spin-generator.test.d.ts +7 -0
  29. package/dist/__tests__/spin-generator.test.d.ts.map +1 -0
  30. package/dist/__tests__/spin-handler.test.d.ts +7 -0
  31. package/dist/__tests__/spin-handler.test.d.ts.map +1 -0
  32. package/dist/__tests__/symbol-distribution.test.d.ts +6 -0
  33. package/dist/__tests__/symbol-distribution.test.d.ts.map +1 -0
  34. package/dist/__tests__/weighted-random.test.d.ts +7 -0
  35. package/dist/__tests__/weighted-random.test.d.ts.map +1 -0
  36. package/dist/__tests__/win-evaluator.test.d.ts +7 -0
  37. package/dist/__tests__/win-evaluator.test.d.ts.map +1 -0
  38. package/dist/__tests__/win-evaluator.test.js +20 -13
  39. package/dist/__tests__/win-evaluator.test.js.map +1 -1
  40. package/dist/config/happy-panda.config.d.ts +212 -0
  41. package/dist/config/happy-panda.config.d.ts.map +1 -0
  42. package/dist/config/index.d.ts +5 -0
  43. package/dist/config/index.d.ts.map +1 -0
  44. package/dist/domain/index.d.ts +5 -0
  45. package/dist/domain/index.d.ts.map +1 -0
  46. package/dist/domain/types.d.ts +205 -0
  47. package/dist/domain/types.d.ts.map +1 -0
  48. package/dist/engine/happy-panda-engine.d.ts +50 -0
  49. package/dist/engine/happy-panda-engine.d.ts.map +1 -0
  50. package/dist/engine/index.d.ts +5 -0
  51. package/dist/engine/index.d.ts.map +1 -0
  52. package/dist/happy-panda-v1.game-engine.d.ts +63 -0
  53. package/dist/happy-panda-v1.game-engine.d.ts.map +1 -0
  54. package/dist/index.d.ts +19 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/logic/handlers/index.d.ts +5 -0
  57. package/dist/logic/handlers/index.d.ts.map +1 -0
  58. package/dist/logic/handlers/spin-handler.d.ts +54 -0
  59. package/dist/logic/handlers/spin-handler.d.ts.map +1 -0
  60. package/dist/logic/index.d.ts +6 -0
  61. package/dist/logic/index.d.ts.map +1 -0
  62. package/dist/logic/services/counter-manager.d.ts +60 -0
  63. package/dist/logic/services/counter-manager.d.ts.map +1 -0
  64. package/dist/logic/services/index.d.ts +7 -0
  65. package/dist/logic/services/index.d.ts.map +1 -0
  66. package/dist/logic/services/jackpot-manager.d.ts +59 -0
  67. package/dist/logic/services/jackpot-manager.d.ts.map +1 -0
  68. package/dist/logic/services/win-evaluator.d.ts +49 -0
  69. package/dist/logic/services/win-evaluator.d.ts.map +1 -0
  70. package/dist/logic/services/win-evaluator.js +9 -4
  71. package/dist/logic/services/win-evaluator.js.map +1 -1
  72. package/dist/rng/dummy-rng-client.d.ts +39 -0
  73. package/dist/rng/dummy-rng-client.d.ts.map +1 -0
  74. package/dist/rng/index.d.ts +10 -0
  75. package/dist/rng/index.d.ts.map +1 -0
  76. package/dist/rng/rng-client.factory.d.ts +33 -0
  77. package/dist/rng/rng-client.factory.d.ts.map +1 -0
  78. package/dist/rng/rng-client.interface.d.ts +51 -0
  79. package/dist/rng/rng-client.interface.d.ts.map +1 -0
  80. package/dist/rng/rng-service.d.ts +93 -0
  81. package/dist/rng/rng-service.d.ts.map +1 -0
  82. package/dist/rng/spin-generator.d.ts +31 -0
  83. package/dist/rng/spin-generator.d.ts.map +1 -0
  84. package/dist/rng/weighted-random.d.ts +30 -0
  85. package/dist/rng/weighted-random.d.ts.map +1 -0
  86. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Bonus Sequence Integration Tests
3
+ *
4
+ * Tests for complete bonus flows from trigger to completion.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=bonus-sequence.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bonus-sequence.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/bonus-sequence.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Cherry Frequency Analysis Test
3
+ *
4
+ * Counts how many PAID_SPIN grids have 3x cherry lines to verify
5
+ * grid generation produces expected cherry frequency.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=cherry-frequency.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cherry-frequency.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/cherry-frequency.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Counter Manager Tests
3
+ *
4
+ * Tests for bonus counter logic against the C++ math model.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=counter-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counter-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/counter-manager.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * C++ Parity Tests
3
+ *
4
+ * Validates that the TypeScript implementation produces identical results
5
+ * to the C++ math model (CherryMaster_A_2.cpp).
6
+ *
7
+ * ## How This Works
8
+ *
9
+ * 1. Test vectors contain known inputs and expected outputs from C++
10
+ * 2. We run our TypeScript code with identical inputs
11
+ * 3. We compare outputs to verify parity
12
+ *
13
+ * ## Test Vector Format
14
+ *
15
+ * Each test case has:
16
+ * - input: spinType, gameDirection, betStake, betGame, and either:
17
+ * - rngSequence: deterministic RNG values
18
+ * - forcedGrid: bypass RNG and use this grid directly
19
+ * - expected: the C++ model's output for these inputs
20
+ *
21
+ * ## Generating Test Vectors
22
+ *
23
+ * To add new test vectors:
24
+ * 1. Run the C++ model with known inputs
25
+ * 2. Capture the output (grid, wins, payouts)
26
+ * 3. Add to cpp-parity-vectors.json
27
+ *
28
+ * ## Why This Matters
29
+ *
30
+ * The C++ model is the source of truth for:
31
+ * - Win evaluation logic
32
+ * - Payout calculations
33
+ * - Symbol priorities
34
+ * - Bonus mechanics
35
+ *
36
+ * Any divergence from C++ is a bug that must be fixed.
37
+ */
38
+ export {};
39
+ //# sourceMappingURL=cpp-parity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp-parity.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/cpp-parity.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG"}
@@ -205,19 +205,23 @@ describe('C++ Parity Tests', () => {
205
205
  // Line wins should be suppressed (even though all 8 lines would win)
206
206
  expect(result.lineWins.length).toBe(0);
207
207
  });
208
- it('should match C++ scatter suppresses line priority', () => {
209
- // 3x Seven in diagonal with potential line wins
208
+ it('should pay BOTH scatter AND line wins (C++ behavior)', () => {
209
+ // 3x Seven in diagonal - C++ pays BOTH line wins AND scatter wins
210
+ // Per C++ simulation (lines 2731-2735): line_wins_sum and screen_win_sum are both added
210
211
  const scatterGrid = [
211
212
  [happy_panda_config_1.Symbol.SEVEN, happy_panda_config_1.Symbol.BAR3, happy_panda_config_1.Symbol.BAR3],
212
213
  [happy_panda_config_1.Symbol.BAR3, happy_panda_config_1.Symbol.SEVEN, happy_panda_config_1.Symbol.BAR3],
213
214
  [happy_panda_config_1.Symbol.BAR3, happy_panda_config_1.Symbol.BAR3, happy_panda_config_1.Symbol.SEVEN],
214
215
  ];
215
216
  const result = (0, win_evaluator_1.evaluateSpin)(scatterGrid, types_1.GameDirection.SINGLE, 1, 8, happy_panda_config_1.SpinType.PAID_SPIN);
216
- // Scatter win should be present
217
+ // Scatter win should be present (3x Seven)
217
218
  expect(result.scatterWins.length).toBeGreaterThan(0);
218
219
  expect(result.scatterWins[0].count).toBe(3);
219
- // Line wins should be suppressed
220
- expect(result.lineWins.length).toBe(0);
220
+ // Line win should ALSO be present (3x Seven on diagonal)
221
+ expect(result.lineWins.length).toBe(1);
222
+ expect(result.lineWins[0].payout).toBe(100); // 3x Seven = 100 × bet_stake
223
+ // Total = line win (100) + scatter win (40) = 140
224
+ expect(result.totalPayout).toBe(140);
221
225
  });
222
226
  });
223
227
  describe('Symbol Group Parity', () => {
@@ -282,7 +286,7 @@ describe('C++ Parity Tests', () => {
282
286
  const results = (0, win_evaluator_1.evaluateScatterWins)(grid, 8);
283
287
  expect(results.length).toBe(1);
284
288
  expect(results[0].count).toBe(2);
285
- expect(results[0].payout).toBe(1 * 8); // x2 = 1x bet_game
289
+ expect(results[0].payout).toBe(2 * 8); // x2 = 2x bet_game (per SEVEN_SCATTER_MULTIPLIERS[7])
286
290
  });
287
291
  it('should handle 1 seven (no scatter)', () => {
288
292
  const grid = [
@@ -308,7 +312,7 @@ describe('C++ Parity Tests', () => {
308
312
  const scatterResults = (0, win_evaluator_1.evaluateScatterWins)(grid, 8);
309
313
  expect(scatterResults.length).toBe(1);
310
314
  expect(scatterResults[0].count).toBe(9);
311
- expect(scatterResults[0].payout).toBe(220 * 8); // x9 = 220x bet_game
315
+ expect(scatterResults[0].payout).toBe(1000 * 8); // x9 = 1000x bet_game (per SEVEN_SCATTER_MULTIPLIERS[0])
312
316
  });
313
317
  it('should handle bet stake scaling correctly', () => {
314
318
  // Same grid, different bet stakes
@@ -340,28 +344,28 @@ describe('C++ Parity Tests', () => {
340
344
  });
341
345
  });
342
346
  });
343
- describe('Regression Tests', () => {
344
- describe('RTP Bug Fixes', () => {
345
- it('should have 3x3 bonus rates similar to paid spin (not 10-25%)', () => {
346
- // This was the root cause of 432% RTP
347
- // Bonus 3x3 weights were [3,9] instead of [3,193]
348
- // Verify by checking config values indirectly through test vectors
347
+ describe('C++ Config Verification', () => {
348
+ describe('Multiplier Values from xlsx', () => {
349
+ it('should have C++ 3x3 bonus rates (intentionally high for bonus excitement)', () => {
350
+ // C++ DESIGN: Bonus spins have HIGH 3x3 rates (10-25%)
351
+ // This is intentional - bonuses are rare so high rates within bonus are fine
349
352
  const paidSpinRate = 3 / 196; // ~1.53%
350
- // All bonus rates should be within 2x of paid spin rate
351
- // (previously they were 6-16x higher)
353
+ // Paid spin rate should be low (~1.5%)
352
354
  expect(paidSpinRate).toBeLessThan(0.02);
355
+ expect(paidSpinRate).toBeGreaterThan(0.01);
353
356
  });
354
- it('should have wall multipliers that produce reasonable RTP', () => {
355
- // Original wall multipliers were 10x too high (500, 400, 300...)
356
- // Now they are 50, 40, 30...
357
- expect(happy_panda_config_1.WALL_MULTIPLIERS[0]).toBeLessThan(100); // BAR3 was 500
358
- expect(happy_panda_config_1.WALL_MULTIPLIERS[1]).toBeLessThan(100); // BAR2 was 400
359
- expect(happy_panda_config_1.WALL_MULTIPLIERS[7]).toBeLessThan(100); // Cherry was 400
357
+ it('should have C++ wall multipliers (high values are correct)', () => {
358
+ // These are the CORRECT C++ values from xlsx
359
+ // Wall wins are RARE (require 9 matching symbols) so multipliers are high
360
+ expect(happy_panda_config_1.WALL_MULTIPLIERS[0]).toBe(500); // BAR3 = 500x
361
+ expect(happy_panda_config_1.WALL_MULTIPLIERS[1]).toBe(400); // BAR2 = 400x
362
+ expect(happy_panda_config_1.WALL_MULTIPLIERS[7]).toBe(400); // Cherry = 400x
360
363
  });
361
- it('should have scatter multipliers that produce reasonable RTP', () => {
362
- // Original scatter multipliers were ~3.5x too high
363
- expect(happy_panda_config_1.SEVEN_SCATTER_MULTIPLIERS[0]).toBeLessThan(500); // x9 was 1000
364
- expect(happy_panda_config_1.SEVEN_SCATTER_MULTIPLIERS[1]).toBeLessThan(200); // x8 was 400
364
+ it('should have C++ scatter multipliers (high values are correct)', () => {
365
+ // These are the CORRECT C++ values from xlsx
366
+ // Scatter wins are RARE (require multiple 7s) so multipliers are high
367
+ expect(happy_panda_config_1.SEVEN_SCATTER_MULTIPLIERS[0]).toBe(1000); // x9 = 1000x
368
+ expect(happy_panda_config_1.SEVEN_SCATTER_MULTIPLIERS[1]).toBe(400); // x8 = 400x
365
369
  });
366
370
  });
367
371
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cpp-parity.test.js","sourceRoot":"","sources":["../../src/__tests__/cpp-parity.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cpp-parity.test.js","sourceRoot":"","sources":["../../src/__tests__/cpp-parity.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
- "description": "Test vectors for win evaluation. Multipliers tuned for 96.38% RTP (diverged from original C++ for RTP compliance).",
3
- "version": "2.0.0",
4
- "generatedFrom": "CherryMaster_A_2.cpp (tuned)",
2
+ "description": "Test vectors for win evaluation matching C++ CherryMaster_A_2 math model (xlsx-derived values).",
3
+ "version": "3.0.0",
4
+ "generatedFrom": "CherryMaster_A_2.cpp and xlsx (exact C++ values)",
5
5
  "testCases": [
6
6
  {
7
7
  "id": "paid-spin-no-win-001",
@@ -111,13 +111,13 @@
111
111
  [2, 2, 2],
112
112
  [2, 2, 2]
113
113
  ],
114
- "totalPayout": 352,
114
+ "totalPayout": 4000,
115
115
  "hasWallWin": true,
116
116
  "wallWinType": 2,
117
- "wallPayout": 352,
117
+ "wallPayout": 4000,
118
118
  "hasScatterWin": false,
119
119
  "lineWinCount": 0,
120
- "comment": "Wall wins suppress line wins"
120
+ "comment": "Wall wins suppress line wins (BAR3 = 500 × 8 = 4000)"
121
121
  }
122
122
  },
123
123
  {
@@ -140,17 +140,18 @@
140
140
  [10, 9, 10],
141
141
  [9, 9, 10]
142
142
  ],
143
- "totalPayout": 280,
143
+ "totalPayout": 3200,
144
144
  "hasWallWin": true,
145
145
  "wallWinType": 9,
146
- "wallPayout": 280,
146
+ "wallPayout": 3200,
147
147
  "hasScatterWin": false,
148
- "lineWinCount": 0
148
+ "lineWinCount": 0,
149
+ "comment": "Cherry wall = 400 × 8 = 3200"
149
150
  }
150
151
  },
151
152
  {
152
153
  "id": "scatter-win-3x-seven-006",
153
- "description": "3x Seven scatter win",
154
+ "description": "3x Seven scatter win + line win (C++ pays both)",
154
155
  "input": {
155
156
  "spinType": 0,
156
157
  "gameDirection": 0,
@@ -168,19 +169,27 @@
168
169
  [6, 1, 7],
169
170
  [5, 7, 1]
170
171
  ],
171
- "totalPayout": 16,
172
+ "totalPayout": 140,
172
173
  "hasWallWin": false,
173
174
  "hasScatterWin": true,
174
175
  "scatterSymbol": 1,
175
176
  "scatterCount": 3,
176
- "scatterPayout": 16,
177
- "lineWinCount": 0,
178
- "comment": "Scatter wins suppress line wins"
177
+ "scatterPayout": 40,
178
+ "lineWinCount": 1,
179
+ "lineWins": [
180
+ {
181
+ "lineIndex": 6,
182
+ "symbol": 1,
183
+ "matchLength": 3,
184
+ "payout": 100
185
+ }
186
+ ],
187
+ "comment": "C++ pays BOTH: 3x Seven line (100) + 3x Seven scatter (40) = 140"
179
188
  }
180
189
  },
181
190
  {
182
191
  "id": "scatter-win-3x-super-seven-doubled-007",
183
- "description": "3x Super Seven scatter win (doubled)",
192
+ "description": "3x Super Seven scatter + line win (C++ pays both)",
184
193
  "input": {
185
194
  "spinType": 0,
186
195
  "gameDirection": 0,
@@ -198,15 +207,23 @@
198
207
  [6, 0, 7],
199
208
  [5, 7, 0]
200
209
  ],
201
- "totalPayout": 32,
210
+ "totalPayout": 230,
202
211
  "hasWallWin": false,
203
212
  "hasScatterWin": true,
204
213
  "scatterSymbol": 0,
205
214
  "scatterCount": 3,
206
- "scatterPayout": 32,
215
+ "scatterPayout": 80,
207
216
  "isSuperSevenOnly": true,
208
- "lineWinCount": 0,
209
- "comment": "Super Seven only = doubled payout"
217
+ "lineWinCount": 1,
218
+ "lineWins": [
219
+ {
220
+ "lineIndex": 6,
221
+ "symbol": 0,
222
+ "matchLength": 3,
223
+ "payout": 150
224
+ }
225
+ ],
226
+ "comment": "C++ pays BOTH: 3x Super Seven line (150) + scatter doubled (80) = 230"
210
227
  }
211
228
  },
212
229
  {
@@ -229,12 +246,13 @@
229
246
  [4, 2, 3],
230
247
  [3, 4, 2]
231
248
  ],
232
- "totalPayout": 40,
249
+ "totalPayout": 400,
233
250
  "hasWallWin": true,
234
251
  "wallWinType": 10,
235
- "wallPayout": 40,
252
+ "wallPayout": 400,
236
253
  "hasScatterWin": false,
237
- "lineWinCount": 0
254
+ "lineWinCount": 0,
255
+ "comment": "Any Bar wall = 50 × 8 = 400"
238
256
  }
239
257
  },
240
258
  {
@@ -257,12 +275,13 @@
257
275
  [9, 10, 5],
258
276
  [7, 8, 9]
259
277
  ],
260
- "totalPayout": 16,
278
+ "totalPayout": 120,
261
279
  "hasWallWin": true,
262
280
  "wallWinType": 11,
263
- "wallPayout": 16,
281
+ "wallPayout": 120,
264
282
  "hasScatterWin": false,
265
- "lineWinCount": 0
283
+ "lineWinCount": 0,
284
+ "comment": "All Fruits wall = 15 × 8 = 120"
266
285
  }
267
286
  },
268
287
  {
@@ -297,7 +316,7 @@
297
316
  "payout": 10
298
317
  }
299
318
  ],
300
- "comment": "Symbol 25 = BAR_ANY for mixed bar line"
319
+ "comment": "Symbol 25 = BAR_ANY for mixed bar line (10 × 1 = 10)"
301
320
  }
302
321
  },
303
322
  {
@@ -354,10 +373,10 @@
354
373
  {
355
374
  "winType": 14,
356
375
  "count": 5,
357
- "payout": 25
376
+ "payout": 50
358
377
  }
359
378
  ],
360
- "comment": "Bell Bonus: each bell pays as scatter (5 bells × 5 × 1 = 25)"
379
+ "comment": "Bell Bonus: each bell pays as scatter (5 bells × 10 × 1 = 50)"
361
380
  }
362
381
  },
363
382
  {
@@ -387,15 +406,15 @@
387
406
  {
388
407
  "winType": 15,
389
408
  "count": 4,
390
- "payout": 20
409
+ "payout": 40
391
410
  }
392
411
  ],
393
- "comment": "Bar1 Bonus: each super bar pays as scatter (4 × 5 × 1 = 20)"
412
+ "comment": "Bar1 Bonus: each super bar pays as scatter (4 × 10 × 1 = 40)"
394
413
  }
395
414
  }
396
415
  ],
397
416
  "multiplierTests": {
398
- "description": "Verify multiplier values (tuned for 96.38% RTP)",
417
+ "description": "Verify multiplier values match C++ xlsx-derived values exactly",
399
418
  "lineMultipliers": {
400
419
  "SUPER_SEVEN_x3": 150,
401
420
  "SEVEN_x3": 100,
@@ -412,27 +431,27 @@
412
431
  "ANY_BAR_x3": 10
413
432
  },
414
433
  "wallMultipliers": {
415
- "BAR3": 44,
416
- "BAR2": 35,
417
- "BAR1": 27,
418
- "MELON": 27,
419
- "BELL": 17,
420
- "PRUNE": 9,
421
- "ORANGE": 5,
422
- "CHERRY": 35,
423
- "ANY_BAR": 5,
424
- "ALL_FRUITS": 2,
425
- "ALL_COLORS": 5
434
+ "BAR3": 500,
435
+ "BAR2": 400,
436
+ "BAR1": 300,
437
+ "MELON": 300,
438
+ "BELL": 200,
439
+ "PRUNE": 100,
440
+ "ORANGE": 50,
441
+ "CHERRY": 400,
442
+ "ANY_BAR": 50,
443
+ "ALL_FRUITS": 15,
444
+ "ALL_COLORS": 50
426
445
  },
427
446
  "scatterMultipliers": {
428
- "SEVEN_x9": 220,
429
- "SEVEN_x8": 88,
430
- "SEVEN_x7": 44,
431
- "SEVEN_x6": 22,
432
- "SEVEN_x5": 11,
433
- "SEVEN_x4": 4,
434
- "SEVEN_x3": 2,
435
- "SEVEN_x2": 1
447
+ "SEVEN_x9": 1000,
448
+ "SEVEN_x8": 400,
449
+ "SEVEN_x7": 200,
450
+ "SEVEN_x6": 100,
451
+ "SEVEN_x5": 50,
452
+ "SEVEN_x4": 20,
453
+ "SEVEN_x3": 5,
454
+ "SEVEN_x2": 2
436
455
  }
437
456
  }
438
457
  }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Happy Panda Engine Tests
3
+ *
4
+ * Integration tests for the engine class - the public API.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=happy-panda-engine.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"happy-panda-engine.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/happy-panda-engine.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Jackpot Manager Tests
3
+ *
4
+ * Tests for progressive and pool jackpot logic.
5
+ * CRITICAL: This is where money comes/goes - must have high coverage.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=jackpot-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jackpot-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/jackpot-manager.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Jackpot Trigger Trace Test
3
+ * Tracks where BONUS_JACKPOT triggers originate (PAID_SPIN vs RESPIN_CHERRY)
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=jackpot-trigger-trace.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jackpot-trigger-trace.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/jackpot-trigger-trace.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * High-Volume RTP Simulation (100k - 1M Spins)
3
+ *
4
+ * This test validates RTP accuracy with statistical significance.
5
+ * With 1M spins, we expect RTP variance of ±0.5% or less.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=rtp-1million.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtp-1million.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/rtp-1million.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * RTP Analysis Tests
3
+ *
4
+ * Analytical calculation to understand expected RTP from weights.
5
+ * Used to debug the 432% RTP issue.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=rtp-analysis.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtp-analysis.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/rtp-analysis.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * RTP Diagnostic Test
3
+ * Compares TypeScript engine RTP breakdown with C++ expected values.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=rtp-diagnostic.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtp-diagnostic.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/rtp-diagnostic.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * RTP (Return to Player) Simulation Tests
3
+ *
4
+ * Mathematically verifies that the engine delivers the expected 96% RTP.
5
+ * Runs large-scale simulations and validates statistical properties.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=rtp-simulation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtp-simulation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/rtp-simulation.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Special Win Evaluator Tests
3
+ *
4
+ * Tests for bonus-specific win evaluation functions.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=special-wins.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"special-wins.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/special-wins.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Spin Generator Tests
3
+ *
4
+ * Tests for grid generation with symbol limitation system.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=spin-generator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spin-generator.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/spin-generator.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Spin Handler Integration Tests
3
+ *
4
+ * Tests for the complete spin flow: state creation, spin execution, and transitions.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=spin-handler.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spin-handler.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/spin-handler.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Symbol Distribution Diagnostic
3
+ * Checks if our screen generation matches C++ probability expectations.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=symbol-distribution.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-distribution.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/symbol-distribution.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}