@omnitronix/happy-panda-game-engine 0.0.15 → 0.0.18
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.
Potentially problematic release.
This version of @omnitronix/happy-panda-game-engine might be problematic. Click here for more details.
- package/README.md +60 -60
- package/dist/__tests__/bonus-sequence.test.js +28 -24
- package/dist/__tests__/bonus-sequence.test.js.map +1 -1
- package/dist/__tests__/cherry-frequency.test.js +2 -2
- package/dist/__tests__/comprehensive.test.d.ts +1 -1
- package/dist/__tests__/comprehensive.test.js +16 -16
- package/dist/__tests__/comprehensive.test.js.map +1 -1
- package/dist/__tests__/counter-manager.test.js +132 -132
- package/dist/__tests__/counter-manager.test.js.map +1 -1
- package/dist/__tests__/cpp-parity.test.js +68 -68
- package/dist/__tests__/cpp-parity.test.js.map +1 -1
- package/dist/__tests__/debug-trigger-bonus.test.js +55 -55
- package/dist/__tests__/debug-trigger-bonus.test.js.map +1 -1
- package/dist/__tests__/gdd-validation-1000.test.d.ts +14 -0
- package/dist/__tests__/gdd-validation-1000.test.d.ts.map +1 -0
- package/dist/__tests__/gdd-validation-1000.test.js +418 -0
- package/dist/__tests__/gdd-validation-1000.test.js.map +1 -0
- package/dist/__tests__/happy-panda-engine.test.js +19 -19
- package/dist/__tests__/happy-panda-engine.test.js.map +1 -1
- package/dist/__tests__/jackpot-manager.test.js +37 -37
- package/dist/__tests__/jackpot-manager.test.js.map +1 -1
- package/dist/__tests__/jackpot-trigger-trace.test.d.ts +1 -1
- package/dist/__tests__/jackpot-trigger-trace.test.js +13 -13
- package/dist/__tests__/jackpot-trigger-trace.test.js.map +1 -1
- package/dist/__tests__/rng-seed-type.test.js +2 -2
- package/dist/__tests__/rng-seed-type.test.js.map +1 -1
- package/dist/__tests__/rtp-analysis.test.js +20 -20
- package/dist/__tests__/rtp-analysis.test.js.map +1 -1
- package/dist/__tests__/rtp-diagnostic.test.js +12 -12
- package/dist/__tests__/rtp-diagnostic.test.js.map +1 -1
- package/dist/__tests__/rtp-simulation.test.js +18 -16
- package/dist/__tests__/rtp-simulation.test.js.map +1 -1
- package/dist/__tests__/special-wins.test.js +69 -69
- package/dist/__tests__/special-wins.test.js.map +1 -1
- package/dist/__tests__/spin-generator.test.js +46 -46
- package/dist/__tests__/spin-generator.test.js.map +1 -1
- package/dist/__tests__/spin-handler.test.js +12 -12
- package/dist/__tests__/spin-handler.test.js.map +1 -1
- package/dist/__tests__/symbol-distribution.test.js +5 -5
- package/dist/__tests__/symbol-distribution.test.js.map +1 -1
- package/dist/__tests__/win-evaluator.test.js +58 -58
- package/dist/__tests__/win-evaluator.test.js.map +1 -1
- package/dist/config/happy-panda.config.d.ts +96 -91
- package/dist/config/happy-panda.config.d.ts.map +1 -1
- package/dist/config/happy-panda.config.js +285 -278
- package/dist/config/happy-panda.config.js.map +1 -1
- package/dist/domain/debug-trigger-bonus-command.d.ts +6 -6
- package/dist/domain/debug-trigger-bonus-command.d.ts.map +1 -1
- package/dist/domain/types.d.ts +28 -28
- package/dist/domain/types.d.ts.map +1 -1
- package/dist/engine/happy-panda-engine.d.ts.map +1 -1
- package/dist/engine/happy-panda-engine.js +38 -38
- package/dist/engine/happy-panda-engine.js.map +1 -1
- package/dist/happy-panda-v1.game-engine.js +16 -16
- package/dist/happy-panda-v1.game-engine.js.map +1 -1
- package/dist/logic/handlers/spin-handler.js +43 -43
- package/dist/logic/handlers/spin-handler.js.map +1 -1
- package/dist/logic/services/counter-manager.d.ts +9 -9
- package/dist/logic/services/counter-manager.d.ts.map +1 -1
- package/dist/logic/services/counter-manager.js +129 -129
- package/dist/logic/services/counter-manager.js.map +1 -1
- package/dist/logic/services/jackpot-manager.d.ts +4 -4
- package/dist/logic/services/jackpot-manager.js +17 -17
- package/dist/logic/services/jackpot-manager.js.map +1 -1
- package/dist/logic/services/win-evaluator.d.ts +14 -14
- package/dist/logic/services/win-evaluator.d.ts.map +1 -1
- package/dist/logic/services/win-evaluator.js +130 -130
- package/dist/logic/services/win-evaluator.js.map +1 -1
- package/dist/rng/spin-generator.d.ts +4 -4
- package/dist/rng/spin-generator.d.ts.map +1 -1
- package/dist/rng/spin-generator.js +72 -72
- package/dist/rng/spin-generator.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Happy Panda Game Engine
|
|
2
2
|
|
|
3
|
-

|
|
4
4
|

|
|
5
5
|

|
|
6
6
|
|
|
@@ -46,12 +46,12 @@ Configuration:
|
|
|
46
46
|
|
|
47
47
|
RTP Breakdown by Spin Type:
|
|
48
48
|
----------------------------------------------------------------
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
BASE_GAME_SPIN : 62.54% | C++: 63.51% | Diff: -0.97%
|
|
50
|
+
BONUS_BAMBOO_TRIPLETS : 16.24% | C++: 13.56% | Diff: +2.68%
|
|
51
|
+
BONUS_BAMBOO_TWINS : 3.96% | C++: 3.67% | Diff: +0.29%
|
|
52
|
+
BONUS_CAMERA : 5.06% | C++: 5.83% | Diff: -0.77%
|
|
53
|
+
BONUS_FIREWORKS : 5.47% | C++: 6.31% | Diff: -0.84%
|
|
54
|
+
RESPIN_CENTER_BAMBOO : 2.64% | C++: 3.18% | Diff: -0.54%
|
|
55
55
|
----------------------------------------------------------------
|
|
56
56
|
TOTAL : 95.91% | C++: 96.05%
|
|
57
57
|
|
|
@@ -66,12 +66,12 @@ Statistics:
|
|
|
66
66
|
| Metric | TypeScript | C++ Target | Difference | Status |
|
|
67
67
|
|--------|------------|------------|------------|--------|
|
|
68
68
|
| **RTP (100M spins)** | 95.91% | 96.05% | -0.14% | **PASS** |
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
|
|
|
69
|
+
| BASE_GAME_SPIN | 62.54% | 63.51% | -0.97% | Match |
|
|
70
|
+
| BONUS_BAMBOO_TRIPLETS | 16.24% | 13.56% | +2.68% | Match |
|
|
71
|
+
| BONUS_BAMBOO_TWINS | 3.96% | 3.67% | +0.29% | Match |
|
|
72
|
+
| BONUS_CAMERA | 5.06% | 5.83% | -0.77% | Match |
|
|
73
|
+
| BONUS_FIREWORKS | 5.47% | 6.31% | -0.84% | Match |
|
|
74
|
+
| RESPIN_CENTER_BAMBOO | 2.64% | 3.18% | -0.54% | Match |
|
|
75
75
|
|
|
76
76
|
**No configuration values from XLSX were modified** - only calculation logic was adjusted to match C++ behavior.
|
|
77
77
|
|
|
@@ -82,7 +82,7 @@ Statistics:
|
|
|
82
82
|
- **RNG Integration**: Pluggable RNG providers with audit trail support
|
|
83
83
|
- **Bidirectional Paylines**: 8 or 16 paylines with left-to-right and right-to-left evaluation
|
|
84
84
|
- **Wall Wins**: Full 3x3 matrix wins with multiple types (pure, mixed, fruits, colors)
|
|
85
|
-
- **Scatter Wins**:
|
|
85
|
+
- **Scatter Wins**: Red Panda symbols pay anywhere on screen
|
|
86
86
|
- **Bonus System**: 5 distinct bonus types with counter-based triggers
|
|
87
87
|
- **Jackpot System**: Progressive and pool jackpots
|
|
88
88
|
- **TypeScript Support**: Complete type definitions for all interfaces
|
|
@@ -280,7 +280,7 @@ Force trigger a specific bonus round for testing.
|
|
|
280
280
|
```typescript
|
|
281
281
|
interface DebugTriggerBonusCommand {
|
|
282
282
|
sessionId: string;
|
|
283
|
-
bonusType: '
|
|
283
|
+
bonusType: 'BONUS_BAMBOO_TRIPLETS' | 'BONUS_BAMBOO_TWINS' | 'BONUS_CAMERA' | 'BONUS_FIREWORKS' | 'RESPIN_CENTER_BAMBOO';
|
|
284
284
|
betAmount: number;
|
|
285
285
|
}
|
|
286
286
|
```
|
|
@@ -295,22 +295,22 @@ const result = await engine.processCommand(
|
|
|
295
295
|
type: 'DEBUG_TRIGGER_BONUS',
|
|
296
296
|
payload: {
|
|
297
297
|
sessionId: 'session-123',
|
|
298
|
-
bonusType: '
|
|
298
|
+
bonusType: 'BONUS_BAMBOO_TRIPLETS', // or any other bonus type
|
|
299
299
|
betAmount: 8,
|
|
300
300
|
},
|
|
301
301
|
},
|
|
302
302
|
);
|
|
303
303
|
```
|
|
304
304
|
|
|
305
|
-
**Bonus Types
|
|
305
|
+
**Bonus Types** (GDD naming):
|
|
306
306
|
|
|
307
307
|
| Type | Description |
|
|
308
308
|
|------|-------------|
|
|
309
|
-
| `
|
|
310
|
-
| `
|
|
311
|
-
| `
|
|
312
|
-
| `
|
|
313
|
-
| `
|
|
309
|
+
| `BONUS_BAMBOO_TRIPLETS` | Jackpot Bonus - 3-spin bonus with panda pieces grid and progressive jackpot chance |
|
|
310
|
+
| `BONUS_BAMBOO_TWINS` | Bamboo Twins Bonus - Free spins with bamboo respin feature |
|
|
311
|
+
| `BONUS_CAMERA` | Camera Bonus - 5-spin bonus with camera scatter pays + pool jackpot |
|
|
312
|
+
| `BONUS_FIREWORKS` | Fireworks Bonus - 7-spin bonus with hat scatter pays |
|
|
313
|
+
| `RESPIN_CENTER_BAMBOO` | Center Bamboo Respin - 1-2 corner respins when bamboo in center |
|
|
314
314
|
|
|
315
315
|
**Returns**: Updated state with bonus pending. Execute `SPIN` to begin the bonus sequence.
|
|
316
316
|
|
|
@@ -340,7 +340,7 @@ const result = await engine.processCommand(
|
|
|
340
340
|
pendingBonuses: PendingBonuses; // Queued bonuses
|
|
341
341
|
nextSpinType: SpinType; // Next spin type
|
|
342
342
|
accumulatedBonusWins: number; // Bonus sequence wins
|
|
343
|
-
|
|
343
|
+
centerBambooSymbol: Symbol | null; // For respin feature
|
|
344
344
|
}
|
|
345
345
|
```
|
|
346
346
|
|
|
@@ -363,18 +363,18 @@ const result = await engine.processCommand(
|
|
|
363
363
|
|
|
364
364
|
| ID | Symbol | Description |
|
|
365
365
|
|----|--------|-------------|
|
|
366
|
-
| 0 |
|
|
367
|
-
| 1 |
|
|
368
|
-
| 2 |
|
|
369
|
-
| 3 |
|
|
370
|
-
| 4 |
|
|
371
|
-
| 5 |
|
|
372
|
-
| 6 |
|
|
373
|
-
| 7 |
|
|
374
|
-
| 8 |
|
|
375
|
-
| 9 |
|
|
376
|
-
| 10 |
|
|
377
|
-
| 11 |
|
|
366
|
+
| 0 | GOLDEN_PANDA | Golden Red Panda (scatter, doubled payout when solo) |
|
|
367
|
+
| 1 | RED_PANDA | Red Panda (scatter) |
|
|
368
|
+
| 2 | SLOT_MACHINE | Slot Machine |
|
|
369
|
+
| 3 | CITY | City with Fireworks |
|
|
370
|
+
| 4 | FIREWORKS_ROCKETS | Fireworks Rockets |
|
|
371
|
+
| 5 | BACKPACK | Backpack with Coins |
|
|
372
|
+
| 6 | CAMERA | Photo Camera |
|
|
373
|
+
| 7 | FOOD_BOWL | Food Bowl |
|
|
374
|
+
| 8 | CUP | Colorful Cup |
|
|
375
|
+
| 9 | BAMBOO | Green Bamboo |
|
|
376
|
+
| 10 | GOLDEN_BAMBOO | Golden Bamboo |
|
|
377
|
+
| 11 | HAT | Hat |
|
|
378
378
|
|
|
379
379
|
### Win Types
|
|
380
380
|
|
|
@@ -382,58 +382,58 @@ const result = await engine.processCommand(
|
|
|
382
382
|
|
|
383
383
|
- 8 paylines (SINGLE mode) or 16 paylines (BOTH mode)
|
|
384
384
|
- Evaluated left-to-right and right-to-left in 16-line mode
|
|
385
|
-
-
|
|
385
|
+
- Bamboo pays on 1, 2, or 3 matches
|
|
386
386
|
- Line shapes follow classic 3x3 patterns
|
|
387
387
|
|
|
388
388
|
#### 2. Wall Wins (Matrix/Screen Wins)
|
|
389
389
|
|
|
390
390
|
- Full 3x3 of same symbol
|
|
391
391
|
- Special mixed types:
|
|
392
|
-
- **
|
|
393
|
-
- **Any Bar Mix**:
|
|
394
|
-
- **All Fruits**:
|
|
395
|
-
- **All
|
|
392
|
+
- **Bamboo Mix**: BAMBOO + GOLDEN_BAMBOO combinations
|
|
393
|
+
- **Any Bar Mix**: FIREWORKS_ROCKETS + CITY + SLOT_MACHINE + HAT
|
|
394
|
+
- **All Fruits**: BACKPACK + CAMERA + FOOD_BOWL + CUP
|
|
395
|
+
- **All Badges**: Mixed badge colors
|
|
396
396
|
- **Important**: Wall wins suppress line wins when active
|
|
397
397
|
|
|
398
|
-
#### 3. Scatter Wins (
|
|
398
|
+
#### 3. Scatter Wins (Red Panda)
|
|
399
399
|
|
|
400
|
-
- 2-9
|
|
401
|
-
-
|
|
400
|
+
- 2-9 Red Panda symbols anywhere on screen
|
|
401
|
+
- Golden Panda only = doubled payout
|
|
402
402
|
- **Important**: Scatter wins suppress line wins when active
|
|
403
403
|
|
|
404
404
|
#### 4. Special Wins (Bonus modes only)
|
|
405
405
|
|
|
406
|
-
- **
|
|
407
|
-
- **
|
|
408
|
-
- **
|
|
406
|
+
- **Panda Pieces**: Count of dancing panda pieces (Bamboo Triplets Bonus)
|
|
407
|
+
- **Camera Scatter**: Camera count anywhere (Camera Bonus)
|
|
408
|
+
- **Hat Scatter**: Hat count anywhere (Fireworks Bonus)
|
|
409
409
|
|
|
410
410
|
### Bonus System
|
|
411
411
|
|
|
412
|
-
Five distinct bonus types with counter-based triggers:
|
|
412
|
+
Five distinct bonus types with counter-based triggers (GDD naming):
|
|
413
413
|
|
|
414
414
|
| Bonus | Trigger | Spins | Description |
|
|
415
415
|
|-------|---------|-------|-------------|
|
|
416
|
-
| **
|
|
417
|
-
| **
|
|
418
|
-
| **
|
|
419
|
-
| **
|
|
420
|
-
| **
|
|
416
|
+
| **Bamboo Triplets** | 3x Bamboo on first 8 lines | 3 | Panda pieces with progressive jackpot chance |
|
|
417
|
+
| **Bamboo Twins** | Bamboo pair counter = 0 | Variable | Bamboo respin feature |
|
|
418
|
+
| **Camera** | Camera triple counter = 0 | 5 | Camera scatter pays + pool jackpot |
|
|
419
|
+
| **Fireworks** | Fireworks triple counter = 0 | 7 | Hat scatter pays |
|
|
420
|
+
| **Center Bamboo** | Lone center bamboo on losing spin | 1-2 | Corner respin feature |
|
|
421
421
|
|
|
422
422
|
### Counter System
|
|
423
423
|
|
|
424
424
|
Each bonus has an associated counter that decrements on specific symbol combinations:
|
|
425
425
|
|
|
426
|
-
- **
|
|
427
|
-
- **
|
|
428
|
-
- **
|
|
429
|
-
- **
|
|
426
|
+
- **Bamboo Triplets Counter**: Decrements on specific patterns, triggers at 0
|
|
427
|
+
- **Bamboo Twins Counter**: Decrements on bamboo pairs, resets to 6 or 9
|
|
428
|
+
- **Camera Counter**: Decrements on camera triples, resets to 3 or 5
|
|
429
|
+
- **Fireworks Counter**: Decrements on fireworks triples, resets to 1
|
|
430
430
|
|
|
431
431
|
### Jackpot System
|
|
432
432
|
|
|
433
433
|
Two jackpot types:
|
|
434
434
|
|
|
435
|
-
- **Progressive Jackpot** (`bonusJackpotValue`): Accumulates on losing paid spins, paid during
|
|
436
|
-
- **Pool Jackpot** (`poolJackpotValue`): Accumulates separately, paid when
|
|
435
|
+
- **Progressive Jackpot** (`bonusJackpotValue`): Accumulates on losing paid spins, paid during Bamboo Triplets Bonus
|
|
436
|
+
- **Pool Jackpot** (`poolJackpotValue`): Accumulates separately, paid when Camera Bonus triggers
|
|
437
437
|
|
|
438
438
|
## Integration Examples
|
|
439
439
|
|
|
@@ -691,7 +691,7 @@ import {
|
|
|
691
691
|
### Wall Wins (Matrix Wins)
|
|
692
692
|
|
|
693
693
|
- **Screen-filling wins**: Full 3x3 of same/related symbols
|
|
694
|
-
- **Multiple types**: Pure,
|
|
694
|
+
- **Multiple types**: Pure, bamboo mix, bar mix, fruits, badges
|
|
695
695
|
- **Important**: Wall wins suppress line wins (no double-counting)
|
|
696
696
|
|
|
697
697
|
### Counter-Based Bonuses
|
|
@@ -703,7 +703,7 @@ import {
|
|
|
703
703
|
### Dual Jackpot System
|
|
704
704
|
|
|
705
705
|
- **Progressive Jackpot**: Accumulates on losses, paid in Jackpot Bonus
|
|
706
|
-
- **Pool Jackpot**: Separate accumulator, paid with
|
|
706
|
+
- **Pool Jackpot**: Separate accumulator, paid with Camera Bonus
|
|
707
707
|
- **Dual opportunity**: Two paths to jackpot wins
|
|
708
708
|
|
|
709
709
|
## Documentation
|
|
@@ -42,7 +42,7 @@ describe('Bonus Sequences', () => {
|
|
|
42
42
|
};
|
|
43
43
|
let { state } = await engine.handleCommand(initRequest);
|
|
44
44
|
// Manually set up a bonus state to test spin counting
|
|
45
|
-
state.privateState.internalPendingBonuses.
|
|
45
|
+
state.privateState.internalPendingBonuses.bambooTwins = 1;
|
|
46
46
|
state.publicState.hasPendingBonus = true;
|
|
47
47
|
const spinRequest = {
|
|
48
48
|
command: types_1.CommandType.SPIN,
|
|
@@ -65,7 +65,7 @@ describe('Bonus Sequences', () => {
|
|
|
65
65
|
};
|
|
66
66
|
let { state } = await engine.handleCommand(initRequest);
|
|
67
67
|
// Set up bell bonus (5 spins)
|
|
68
|
-
state.privateState.internalPendingBonuses.
|
|
68
|
+
state.privateState.internalPendingBonuses.camera = 1;
|
|
69
69
|
state.publicState.hasPendingBonus = true;
|
|
70
70
|
const spinRequest = {
|
|
71
71
|
command: types_1.CommandType.SPIN,
|
|
@@ -94,8 +94,8 @@ describe('Bonus Sequences', () => {
|
|
|
94
94
|
};
|
|
95
95
|
let { state } = await engine.handleCommand(initRequest);
|
|
96
96
|
// Queue multiple bonuses
|
|
97
|
-
state.privateState.internalPendingBonuses.
|
|
98
|
-
state.privateState.internalPendingBonuses.
|
|
97
|
+
state.privateState.internalPendingBonuses.bambooTwins = 1;
|
|
98
|
+
state.privateState.internalPendingBonuses.camera = 1;
|
|
99
99
|
state.publicState.hasPendingBonus = true;
|
|
100
100
|
const spinRequest = {
|
|
101
101
|
command: types_1.CommandType.SPIN,
|
|
@@ -106,7 +106,7 @@ describe('Bonus Sequences', () => {
|
|
|
106
106
|
state = result1.state;
|
|
107
107
|
// Cherry bonus should start before bell
|
|
108
108
|
if (state.publicState.currentSpinType !== happy_panda_config_1.SpinType.BASE_GAME_SPIN) {
|
|
109
|
-
expect(state.publicState.currentSpinType).toBe(happy_panda_config_1.SpinType.
|
|
109
|
+
expect(state.publicState.currentSpinType).toBe(happy_panda_config_1.SpinType.BONUS_BAMBOO_TWINS);
|
|
110
110
|
}
|
|
111
111
|
});
|
|
112
112
|
});
|
|
@@ -122,7 +122,7 @@ describe('Bonus Sequences', () => {
|
|
|
122
122
|
};
|
|
123
123
|
let { state } = await engine.handleCommand(initRequest);
|
|
124
124
|
// Add a single respin (1 spin)
|
|
125
|
-
state.privateState.internalPendingBonuses.
|
|
125
|
+
state.privateState.internalPendingBonuses.centerBamboo = 1;
|
|
126
126
|
state.publicState.hasPendingBonus = true;
|
|
127
127
|
const spinRequest = {
|
|
128
128
|
command: types_1.CommandType.SPIN,
|
|
@@ -153,7 +153,7 @@ describe('Bonus Sequences', () => {
|
|
|
153
153
|
};
|
|
154
154
|
let { state } = await engine.handleCommand(initRequest);
|
|
155
155
|
// Add a respin
|
|
156
|
-
state.privateState.internalPendingBonuses.
|
|
156
|
+
state.privateState.internalPendingBonuses.centerBamboo = 1;
|
|
157
157
|
state.publicState.hasPendingBonus = true;
|
|
158
158
|
const spinRequest = {
|
|
159
159
|
command: types_1.CommandType.SPIN,
|
|
@@ -199,16 +199,16 @@ describe('Bonus Sequences', () => {
|
|
|
199
199
|
});
|
|
200
200
|
describe('Bonus Spin Counts', () => {
|
|
201
201
|
it('should have correct spin count for jackpot bonus', () => {
|
|
202
|
-
expect(happy_panda_config_1.
|
|
202
|
+
expect(happy_panda_config_1.BONUS_BAMBOO_TRIPLETS.SPINS).toBe(1); // Per C++ model
|
|
203
203
|
});
|
|
204
204
|
it('should have correct spin count for cherry bonus', () => {
|
|
205
|
-
expect(happy_panda_config_1.
|
|
205
|
+
expect(happy_panda_config_1.BONUS_BAMBOO_TWINS.SPINS).toBe(1); // Per C++ model
|
|
206
206
|
});
|
|
207
207
|
it('should have correct spin count for bell bonus', () => {
|
|
208
|
-
expect(happy_panda_config_1.
|
|
208
|
+
expect(happy_panda_config_1.BONUS_CAMERA.SPINS).toBe(5);
|
|
209
209
|
});
|
|
210
210
|
it('should have correct spin count for bar1 bonus', () => {
|
|
211
|
-
expect(happy_panda_config_1.
|
|
211
|
+
expect(happy_panda_config_1.BONUS_FIREWORKS.SPINS).toBe(7);
|
|
212
212
|
});
|
|
213
213
|
});
|
|
214
214
|
describe('Center Cherry for Respin', () => {
|
|
@@ -223,7 +223,7 @@ describe('Bonus Sequences', () => {
|
|
|
223
223
|
};
|
|
224
224
|
const { state } = await engine.handleCommand(initRequest);
|
|
225
225
|
// Initially no center cherry
|
|
226
|
-
expect(state.privateState.
|
|
226
|
+
expect(state.privateState.centerBambooSymbol).toBeNull();
|
|
227
227
|
});
|
|
228
228
|
});
|
|
229
229
|
describe('Multiple Bonus Queue', () => {
|
|
@@ -238,15 +238,15 @@ describe('Bonus Sequences', () => {
|
|
|
238
238
|
};
|
|
239
239
|
let { state } = await engine.handleCommand(initRequest);
|
|
240
240
|
// Queue multiple bonuses
|
|
241
|
-
state.privateState.internalPendingBonuses.
|
|
242
|
-
state.privateState.internalPendingBonuses.
|
|
241
|
+
state.privateState.internalPendingBonuses.bambooTriplets = 2;
|
|
242
|
+
state.privateState.internalPendingBonuses.bambooTwins = 1;
|
|
243
243
|
state.publicState.hasPendingBonus = true;
|
|
244
244
|
// Total pending should be 3
|
|
245
|
-
const totalPending = state.privateState.internalPendingBonuses.
|
|
246
|
-
state.privateState.internalPendingBonuses.
|
|
247
|
-
state.privateState.internalPendingBonuses.
|
|
248
|
-
state.privateState.internalPendingBonuses.
|
|
249
|
-
state.privateState.internalPendingBonuses.
|
|
245
|
+
const totalPending = state.privateState.internalPendingBonuses.bambooTriplets +
|
|
246
|
+
state.privateState.internalPendingBonuses.bambooTwins +
|
|
247
|
+
state.privateState.internalPendingBonuses.camera +
|
|
248
|
+
state.privateState.internalPendingBonuses.fireworks +
|
|
249
|
+
state.privateState.internalPendingBonuses.centerBamboo;
|
|
250
250
|
expect(totalPending).toBe(3);
|
|
251
251
|
});
|
|
252
252
|
it('should decrement pending count when bonus consumed', async () => {
|
|
@@ -261,7 +261,7 @@ describe('Bonus Sequences', () => {
|
|
|
261
261
|
let { state } = await engine.handleCommand(initRequest);
|
|
262
262
|
// Add pending bonus
|
|
263
263
|
const initialPending = 2;
|
|
264
|
-
state.privateState.internalPendingBonuses.
|
|
264
|
+
state.privateState.internalPendingBonuses.centerBamboo = initialPending;
|
|
265
265
|
state.publicState.hasPendingBonus = true;
|
|
266
266
|
const spinRequest = {
|
|
267
267
|
command: types_1.CommandType.SPIN,
|
|
@@ -271,7 +271,7 @@ describe('Bonus Sequences', () => {
|
|
|
271
271
|
const result = await engine.handleCommand(spinRequest, state);
|
|
272
272
|
state = result.state;
|
|
273
273
|
// Pending should be decremented (respins are all consumed at once)
|
|
274
|
-
expect(state.privateState.internalPendingBonuses.
|
|
274
|
+
expect(state.privateState.internalPendingBonuses.centerBamboo).toBeLessThanOrEqual(initialPending);
|
|
275
275
|
});
|
|
276
276
|
});
|
|
277
277
|
describe('Bonus Win Tracking', () => {
|
|
@@ -313,7 +313,7 @@ describe('Bonus Sequences', () => {
|
|
|
313
313
|
expect(typeof response.poolJackpotWon).toBe('number');
|
|
314
314
|
expect(response.poolJackpotWon).toBeGreaterThanOrEqual(0);
|
|
315
315
|
});
|
|
316
|
-
it('should return
|
|
316
|
+
it('should return triggeredBonus in response when bonus triggers', async () => {
|
|
317
317
|
const mockRng = createMockRng([0, 1, 2, 3, 4, 5, 6, 7, 8]);
|
|
318
318
|
const engine = new happy_panda_engine_1.HappyPandaEngine(mockRng);
|
|
319
319
|
const initRequest = {
|
|
@@ -329,8 +329,12 @@ describe('Bonus Sequences', () => {
|
|
|
329
329
|
};
|
|
330
330
|
const result = await engine.handleCommand(spinRequest, state);
|
|
331
331
|
const response = result.response;
|
|
332
|
-
//
|
|
333
|
-
|
|
332
|
+
// triggeredBonus should be undefined or a valid BonusTrigger object
|
|
333
|
+
if (response.triggeredBonus) {
|
|
334
|
+
expect(typeof response.triggeredBonus.bonusId).toBe('string');
|
|
335
|
+
expect(typeof response.triggeredBonus.bonusType).toBe('string');
|
|
336
|
+
expect(typeof response.triggeredBonus.betAmount).toBe('number');
|
|
337
|
+
}
|
|
334
338
|
});
|
|
335
339
|
});
|
|
336
340
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bonus-sequence.test.js","sourceRoot":"","sources":["../../src/__tests__/bonus-sequence.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bonus-sequence.test.js","sourceRoot":"","sources":["../../src/__tests__/bonus-sequence.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ function countCherrySymbols(grid) {
|
|
|
32
32
|
let count = 0;
|
|
33
33
|
for (let reel = 0; reel < 3; reel++) {
|
|
34
34
|
for (let row = 0; row < 3; row++) {
|
|
35
|
-
if (happy_panda_config_1.
|
|
35
|
+
if (happy_panda_config_1.BAMBOO_SYMBOLS.includes(grid[reel][row])) {
|
|
36
36
|
count++;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -46,7 +46,7 @@ function count3xCherryLines(grid) {
|
|
|
46
46
|
const lineShape = happy_panda_config_1.LINE_SHAPES[lineIndex];
|
|
47
47
|
const symbols = lineShape.map(([reel, row]) => grid[reel][row]);
|
|
48
48
|
// Check if all 3 symbols are cherries
|
|
49
|
-
const allCherry = symbols.every(s => happy_panda_config_1.
|
|
49
|
+
const allCherry = symbols.every(s => happy_panda_config_1.BAMBOO_SYMBOLS.includes(s));
|
|
50
50
|
if (allCherry) {
|
|
51
51
|
count++;
|
|
52
52
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Coverage:
|
|
5
5
|
* - Session initialization
|
|
6
6
|
* - Base game spins
|
|
7
|
-
* - All bonus types (
|
|
7
|
+
* - All bonus types (BONUS_BAMBOO_TRIPLETS, BONUS_BAMBOO_TWINS, BONUS_CAMERA, BONUS_FIREWORKS, RESPIN_CENTER_BAMBOO)
|
|
8
8
|
* - Debug triggers
|
|
9
9
|
* - Reality check flow
|
|
10
10
|
* - Connection loss/resume
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Coverage:
|
|
6
6
|
* - Session initialization
|
|
7
7
|
* - Base game spins
|
|
8
|
-
* - All bonus types (
|
|
8
|
+
* - All bonus types (BONUS_BAMBOO_TRIPLETS, BONUS_BAMBOO_TWINS, BONUS_CAMERA, BONUS_FIREWORKS, RESPIN_CENTER_BAMBOO)
|
|
9
9
|
* - Debug triggers
|
|
10
10
|
* - Reality check flow
|
|
11
11
|
* - Connection loss/resume
|
|
@@ -139,11 +139,11 @@ describe('Happy Panda - Comprehensive Test Suite', () => {
|
|
|
139
139
|
privateState = initResult.privateState;
|
|
140
140
|
});
|
|
141
141
|
const bonusTypes = [
|
|
142
|
-
'
|
|
143
|
-
'
|
|
144
|
-
'
|
|
145
|
-
'
|
|
146
|
-
'
|
|
142
|
+
'BONUS_BAMBOO_TRIPLETS',
|
|
143
|
+
'BONUS_BAMBOO_TWINS',
|
|
144
|
+
'BONUS_CAMERA',
|
|
145
|
+
'BONUS_FIREWORKS',
|
|
146
|
+
'RESPIN_CENTER_BAMBOO',
|
|
147
147
|
];
|
|
148
148
|
bonusTypes.forEach((bonusType) => {
|
|
149
149
|
it(`should trigger ${bonusType} via debug command`, async () => {
|
|
@@ -201,7 +201,7 @@ describe('Happy Panda - Comprehensive Test Suite', () => {
|
|
|
201
201
|
type: 'DEBUG_TRIGGER_BONUS',
|
|
202
202
|
payload: {
|
|
203
203
|
sessionId: 'test',
|
|
204
|
-
bonusType: '
|
|
204
|
+
bonusType: 'BONUS_BAMBOO_TRIPLETS',
|
|
205
205
|
betAmount: 8,
|
|
206
206
|
},
|
|
207
207
|
});
|
|
@@ -214,7 +214,7 @@ describe('Happy Panda - Comprehensive Test Suite', () => {
|
|
|
214
214
|
type: 'DEBUG_TRIGGER_BONUS',
|
|
215
215
|
payload: {
|
|
216
216
|
sessionId: 'test',
|
|
217
|
-
bonusType: '
|
|
217
|
+
bonusType: 'BONUS_BAMBOO_TRIPLETS',
|
|
218
218
|
betAmount: 8,
|
|
219
219
|
},
|
|
220
220
|
});
|
|
@@ -247,11 +247,11 @@ describe('Happy Panda - Comprehensive Test Suite', () => {
|
|
|
247
247
|
type: 'DEBUG_TRIGGER_BONUS',
|
|
248
248
|
payload: {
|
|
249
249
|
sessionId: 'test',
|
|
250
|
-
bonusType: '
|
|
250
|
+
bonusType: 'BONUS_BAMBOO_TRIPLETS',
|
|
251
251
|
betAmount: 8,
|
|
252
252
|
},
|
|
253
253
|
});
|
|
254
|
-
expect(result.privateState.internalPendingBonuses.
|
|
254
|
+
expect(result.privateState.internalPendingBonuses.bambooTriplets).toBe(initialJackpot + 1);
|
|
255
255
|
});
|
|
256
256
|
it('should allow stacking multiple bonuses', async () => {
|
|
257
257
|
let currentPublic = publicState;
|
|
@@ -263,7 +263,7 @@ describe('Happy Panda - Comprehensive Test Suite', () => {
|
|
|
263
263
|
type: 'DEBUG_TRIGGER_BONUS',
|
|
264
264
|
payload: {
|
|
265
265
|
sessionId: 'test',
|
|
266
|
-
bonusType: '
|
|
266
|
+
bonusType: 'BONUS_BAMBOO_TWINS',
|
|
267
267
|
betAmount: 8,
|
|
268
268
|
},
|
|
269
269
|
});
|
|
@@ -271,7 +271,7 @@ describe('Happy Panda - Comprehensive Test Suite', () => {
|
|
|
271
271
|
currentPublic = result.publicState;
|
|
272
272
|
currentPrivate = result.privateState;
|
|
273
273
|
}
|
|
274
|
-
expect(currentPrivate.internalPendingBonuses.
|
|
274
|
+
expect(currentPrivate.internalPendingBonuses.bambooTwins).toBe(3);
|
|
275
275
|
});
|
|
276
276
|
it('should not modify other bonus counters', async () => {
|
|
277
277
|
const initialBell = privateState.pendingBonuses?.bell || 0;
|
|
@@ -280,11 +280,11 @@ describe('Happy Panda - Comprehensive Test Suite', () => {
|
|
|
280
280
|
type: 'DEBUG_TRIGGER_BONUS',
|
|
281
281
|
payload: {
|
|
282
282
|
sessionId: 'test',
|
|
283
|
-
bonusType: '
|
|
283
|
+
bonusType: 'BONUS_BAMBOO_TWINS',
|
|
284
284
|
betAmount: 8,
|
|
285
285
|
},
|
|
286
286
|
});
|
|
287
|
-
expect(result.privateState.internalPendingBonuses.
|
|
287
|
+
expect(result.privateState.internalPendingBonuses.camera).toBe(initialBell);
|
|
288
288
|
});
|
|
289
289
|
});
|
|
290
290
|
// ============================================================
|
|
@@ -437,7 +437,7 @@ describe('Happy Panda - Comprehensive Test Suite', () => {
|
|
|
437
437
|
type: 'DEBUG_TRIGGER_BONUS',
|
|
438
438
|
payload: {
|
|
439
439
|
sessionId: 'test',
|
|
440
|
-
bonusType: '
|
|
440
|
+
bonusType: 'BONUS_CAMERA',
|
|
441
441
|
betAmount: 8,
|
|
442
442
|
},
|
|
443
443
|
});
|
|
@@ -448,7 +448,7 @@ describe('Happy Panda - Comprehensive Test Suite', () => {
|
|
|
448
448
|
const restoredPublic = JSON.parse(serializedPublic);
|
|
449
449
|
const restoredPrivate = JSON.parse(serializedPrivate);
|
|
450
450
|
expect(restoredPublic.hasPendingBonus).toBe(true);
|
|
451
|
-
expect(restoredPrivate.internalPendingBonuses.
|
|
451
|
+
expect(restoredPrivate.internalPendingBonuses.camera).toBe(1);
|
|
452
452
|
});
|
|
453
453
|
it('should preserve game direction across reconnection', async () => {
|
|
454
454
|
const init = await engine.processCommand(null, null, {
|