@omnitronix/lucky-sharky-game-engine 1.0.0 → 1.0.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/README.md CHANGED
@@ -81,6 +81,49 @@ const spinResult = await engine.processCommand(
81
81
  - 4 Jackpots: Mini (30x), Midi (100x), Maxi (500x), Mega (5000x)
82
82
  - Full screen bonus: 1000x
83
83
 
84
+ ## Debug/Cheat Commands (Testing/Admin)
85
+
86
+ The engine supports debug commands for QA testing via the dev-tools service. These commands are **blocked in REAL_MONEY mode**.
87
+
88
+ ### CHEAT_TRIGGER_BONUS
89
+
90
+ Force trigger a specific bonus round for testing.
91
+
92
+ **Payload:**
93
+ ```typescript
94
+ interface CheatTriggerBonusCommand {
95
+ sessionId: string;
96
+ bonusType: 'FREE_SPINS' | 'HOLD_WIN_BONUS';
97
+ betAmount: number;
98
+ }
99
+ ```
100
+
101
+ **Usage:**
102
+ ```typescript
103
+ const result = await engine.processCommand(
104
+ publicState,
105
+ privateState,
106
+ {
107
+ id: 'cheat-cmd-1',
108
+ type: 'CHEAT_TRIGGER_BONUS',
109
+ payload: {
110
+ sessionId: 'session-123',
111
+ bonusType: 'FREE_SPINS', // or 'HOLD_WIN_BONUS'
112
+ betAmount: 1.0,
113
+ },
114
+ },
115
+ );
116
+ ```
117
+
118
+ **Bonus Types:**
119
+
120
+ | Type | Description |
121
+ |------|-------------|
122
+ | `FREE_SPINS` | Triggers free spins with scatter win |
123
+ | `HOLD_WIN_BONUS` | Triggers Hold & Win with respins and jackpots |
124
+
125
+ **Returns:** Updated state with bonus pending. Execute `START_BONUS_ROUND` to begin the bonus.
126
+
84
127
  ## Development
85
128
 
86
129
  ```bash
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CHEAT_TRIGGER_BONUS Command Tests
3
+ *
4
+ * Tests for the dev-tools cheat command that triggers bonus rounds for testing.
5
+ * Tests the LuckySharkyGameLogic.cheatTriggerBonus method directly.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=cheat-trigger-bonus.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat-trigger-bonus.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/cheat-trigger-bonus.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,410 @@
1
+ "use strict";
2
+ /**
3
+ * CHEAT_TRIGGER_BONUS Command Tests
4
+ *
5
+ * Tests for the dev-tools cheat command that triggers bonus rounds for testing.
6
+ * Tests the LuckySharkyGameLogic.cheatTriggerBonus method directly.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const lucky_sharky_game_logic_1 = require("../logic/lucky-sharky.game-logic");
10
+ const lucky_sharky_types_1 = require("../logic/lucky-sharky.types");
11
+ const rng_service_1 = require("../rng/rng-service");
12
+ // Mock RNG client for testing
13
+ const mockRngClient = {
14
+ getSingleNumber: jest.fn().mockResolvedValue({ value: 0, seed: 12345 }),
15
+ };
16
+ describe('CHEAT_TRIGGER_BONUS Command', () => {
17
+ let gameLogic;
18
+ let rngService;
19
+ beforeEach(() => {
20
+ rngService = new rng_service_1.RngService(mockRngClient);
21
+ gameLogic = new lucky_sharky_game_logic_1.LuckySharkyGameLogic(rngService);
22
+ });
23
+ /**
24
+ * Creates a valid initialized public state for testing
25
+ */
26
+ function createInitializedPublicState() {
27
+ return {
28
+ boosterLevel: 0,
29
+ freeSpinsRemaining: 0,
30
+ coinValues: [],
31
+ };
32
+ }
33
+ /**
34
+ * Creates a valid initialized private state for testing
35
+ */
36
+ function createInitializedPrivateState() {
37
+ return {
38
+ boosterLevel: 0,
39
+ boosterMemory: 0,
40
+ nextSpinType: lucky_sharky_types_1.SpinType.BASE_GAME_SPIN,
41
+ pendingBonuses: [],
42
+ guaranteeSpinCount: 0,
43
+ screen: [
44
+ [0, 1, 2],
45
+ [3, 4, 5],
46
+ [6, 7, 0],
47
+ [1, 2, 3],
48
+ [4, 5, 6],
49
+ ],
50
+ lastBetAmount: 1,
51
+ };
52
+ }
53
+ /**
54
+ * Creates a CheatTriggerBonusCommand payload
55
+ */
56
+ function createCheatTriggerBonusParams(bonusType, betAmount = 1, sessionId = 'test-session-123') {
57
+ return {
58
+ sessionId,
59
+ bonusType,
60
+ betAmount,
61
+ };
62
+ }
63
+ describe('FREE_SPINS bonusType', () => {
64
+ it('should successfully trigger FREE_SPINS bonus', () => {
65
+ const publicState = createInitializedPublicState();
66
+ const privateState = createInitializedPrivateState();
67
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 1);
68
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
69
+ expect(result).toBeDefined();
70
+ expect(result.publicState).toBeDefined();
71
+ expect(result.privateState).toBeDefined();
72
+ expect(result.outcome).toBeDefined();
73
+ });
74
+ it('should set nextSpinType to FREE_SPIN', () => {
75
+ const publicState = createInitializedPublicState();
76
+ const privateState = createInitializedPrivateState();
77
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 1);
78
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
79
+ expect(result.privateState.nextSpinType).toBe(lucky_sharky_types_1.SpinType.FREE_SPIN);
80
+ });
81
+ it('should add FREE_SPINS bonus to pendingBonuses array', () => {
82
+ const publicState = createInitializedPublicState();
83
+ const privateState = createInitializedPrivateState();
84
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 1);
85
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
86
+ expect(result.privateState.pendingBonuses).toHaveLength(1);
87
+ expect(result.privateState.pendingBonuses[0].bonusType).toBe(lucky_sharky_types_1.BonusType.FREE_SPINS);
88
+ });
89
+ it('should return outcome with triggeredBonus details', () => {
90
+ const publicState = createInitializedPublicState();
91
+ const privateState = createInitializedPrivateState();
92
+ const betAmount = 5;
93
+ const params = createCheatTriggerBonusParams('FREE_SPINS', betAmount);
94
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
95
+ expect(result.outcome).toBeDefined();
96
+ expect(result.outcome.triggeredBonus).toBeDefined();
97
+ expect(result.outcome.triggeredBonus.bonusType).toBe('FREE_SPINS');
98
+ expect(result.outcome.triggeredBonus.betAmount).toBe(betAmount);
99
+ expect(result.outcome.triggeredBonus.bonusId).toBeDefined();
100
+ expect(result.outcome.triggeredBonus.bonusId).toMatch(/^cheat-/);
101
+ });
102
+ it('should preserve existing publicState', () => {
103
+ const publicState = {
104
+ boosterLevel: 5,
105
+ freeSpinsRemaining: 3,
106
+ coinValues: [1, 2, 3],
107
+ };
108
+ const privateState = createInitializedPrivateState();
109
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 1);
110
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
111
+ expect(result.publicState.boosterLevel).toBe(5);
112
+ expect(result.publicState.freeSpinsRemaining).toBe(3);
113
+ expect(result.publicState.coinValues).toEqual([1, 2, 3]);
114
+ });
115
+ it('should store correct betAmount in pending bonus', () => {
116
+ const publicState = createInitializedPublicState();
117
+ const privateState = createInitializedPrivateState();
118
+ const betAmount = 10;
119
+ const params = createCheatTriggerBonusParams('FREE_SPINS', betAmount);
120
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
121
+ expect(result.privateState.pendingBonuses[0].betAmount).toBe(betAmount);
122
+ });
123
+ });
124
+ describe('HOLD_WIN_BONUS bonusType', () => {
125
+ it('should successfully trigger HOLD_WIN_BONUS', () => {
126
+ const publicState = createInitializedPublicState();
127
+ const privateState = createInitializedPrivateState();
128
+ const params = createCheatTriggerBonusParams('HOLD_WIN_BONUS', 1);
129
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
130
+ expect(result).toBeDefined();
131
+ expect(result.publicState).toBeDefined();
132
+ expect(result.privateState).toBeDefined();
133
+ expect(result.outcome).toBeDefined();
134
+ });
135
+ it('should set nextSpinType to HOLD_WIN_BONUS_SPIN', () => {
136
+ const publicState = createInitializedPublicState();
137
+ const privateState = createInitializedPrivateState();
138
+ const params = createCheatTriggerBonusParams('HOLD_WIN_BONUS', 1);
139
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
140
+ expect(result.privateState.nextSpinType).toBe(lucky_sharky_types_1.SpinType.HOLD_WIN_BONUS_SPIN);
141
+ });
142
+ it('should add HOLD_WIN_BONUS to pendingBonuses array', () => {
143
+ const publicState = createInitializedPublicState();
144
+ const privateState = createInitializedPrivateState();
145
+ const params = createCheatTriggerBonusParams('HOLD_WIN_BONUS', 1);
146
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
147
+ expect(result.privateState.pendingBonuses).toHaveLength(1);
148
+ expect(result.privateState.pendingBonuses[0].bonusType).toBe(lucky_sharky_types_1.BonusType.HOLD_WIN_BONUS);
149
+ });
150
+ it('should return outcome with triggeredBonus details', () => {
151
+ const publicState = createInitializedPublicState();
152
+ const privateState = createInitializedPrivateState();
153
+ const betAmount = 20;
154
+ const params = createCheatTriggerBonusParams('HOLD_WIN_BONUS', betAmount);
155
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
156
+ expect(result.outcome).toBeDefined();
157
+ expect(result.outcome.triggeredBonus).toBeDefined();
158
+ expect(result.outcome.triggeredBonus.bonusType).toBe('HOLD_WIN_BONUS');
159
+ expect(result.outcome.triggeredBonus.betAmount).toBe(betAmount);
160
+ expect(result.outcome.triggeredBonus.bonusId).toBeDefined();
161
+ });
162
+ it('should preserve existing pendingBonuses when adding new bonus', () => {
163
+ const publicState = createInitializedPublicState();
164
+ const existingBonus = {
165
+ bonusId: 'existing-bonus-123',
166
+ bonusType: lucky_sharky_types_1.BonusType.FREE_SPINS,
167
+ betAmount: 5,
168
+ };
169
+ const privateState = {
170
+ ...createInitializedPrivateState(),
171
+ pendingBonuses: [existingBonus],
172
+ };
173
+ const params = createCheatTriggerBonusParams('HOLD_WIN_BONUS', 10);
174
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
175
+ expect(result.privateState.pendingBonuses).toHaveLength(2);
176
+ expect(result.privateState.pendingBonuses[0]).toEqual(existingBonus);
177
+ expect(result.privateState.pendingBonuses[1].bonusType).toBe(lucky_sharky_types_1.BonusType.HOLD_WIN_BONUS);
178
+ });
179
+ it('should store correct betAmount in pending bonus', () => {
180
+ const publicState = createInitializedPublicState();
181
+ const privateState = createInitializedPrivateState();
182
+ const betAmount = 100;
183
+ const params = createCheatTriggerBonusParams('HOLD_WIN_BONUS', betAmount);
184
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
185
+ expect(result.privateState.pendingBonuses[0].betAmount).toBe(betAmount);
186
+ });
187
+ });
188
+ describe('Error Cases', () => {
189
+ describe('Unknown bonusType', () => {
190
+ it('should throw error for unknown bonusType', () => {
191
+ const publicState = createInitializedPublicState();
192
+ const privateState = createInitializedPrivateState();
193
+ const params = {
194
+ sessionId: 'test-session',
195
+ bonusType: 'UNKNOWN_BONUS',
196
+ betAmount: 1,
197
+ };
198
+ expect(() => {
199
+ gameLogic.cheatTriggerBonus(publicState, privateState, params);
200
+ }).toThrow('Unknown bonus type: UNKNOWN_BONUS');
201
+ });
202
+ it('should throw error for empty bonusType', () => {
203
+ const publicState = createInitializedPublicState();
204
+ const privateState = createInitializedPrivateState();
205
+ const params = {
206
+ sessionId: 'test-session',
207
+ bonusType: '',
208
+ betAmount: 1,
209
+ };
210
+ expect(() => {
211
+ gameLogic.cheatTriggerBonus(publicState, privateState, params);
212
+ }).toThrow('Unknown bonus type:');
213
+ });
214
+ it('should throw error for null bonusType', () => {
215
+ const publicState = createInitializedPublicState();
216
+ const privateState = createInitializedPrivateState();
217
+ const params = {
218
+ sessionId: 'test-session',
219
+ bonusType: null,
220
+ betAmount: 1,
221
+ };
222
+ expect(() => {
223
+ gameLogic.cheatTriggerBonus(publicState, privateState, params);
224
+ }).toThrow('Unknown bonus type');
225
+ });
226
+ });
227
+ describe('State not initialized', () => {
228
+ it('should handle null publicState by returning null publicState', () => {
229
+ const privateState = createInitializedPrivateState();
230
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 1);
231
+ // The cheatTriggerBonus method returns publicState as-is
232
+ const result = gameLogic.cheatTriggerBonus(null, privateState, params);
233
+ expect(result.publicState).toBeNull();
234
+ expect(result.privateState).toBeDefined();
235
+ });
236
+ it('should handle undefined publicState by returning undefined publicState', () => {
237
+ const privateState = createInitializedPrivateState();
238
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 1);
239
+ const result = gameLogic.cheatTriggerBonus(undefined, privateState, params);
240
+ expect(result.publicState).toBeUndefined();
241
+ });
242
+ it('should throw error when privateState is null', () => {
243
+ const publicState = createInitializedPublicState();
244
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 1);
245
+ // When privateState is null, spreading pendingBonuses will throw
246
+ expect(() => {
247
+ gameLogic.cheatTriggerBonus(publicState, null, params);
248
+ }).toThrow();
249
+ });
250
+ it('should throw error when privateState is undefined', () => {
251
+ const publicState = createInitializedPublicState();
252
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 1);
253
+ expect(() => {
254
+ gameLogic.cheatTriggerBonus(publicState, undefined, params);
255
+ }).toThrow();
256
+ });
257
+ it('should throw error when privateState has no pendingBonuses array', () => {
258
+ const publicState = createInitializedPublicState();
259
+ const emptyPrivateState = {};
260
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 1);
261
+ // Spreading undefined pendingBonuses will cause issues
262
+ expect(() => {
263
+ gameLogic.cheatTriggerBonus(publicState, emptyPrivateState, params);
264
+ }).toThrow();
265
+ });
266
+ });
267
+ });
268
+ describe('pendingBonus state verification', () => {
269
+ it('should generate unique bonusId for each trigger', () => {
270
+ const publicState = createInitializedPublicState();
271
+ const privateState1 = createInitializedPrivateState();
272
+ const privateState2 = createInitializedPrivateState();
273
+ const params1 = createCheatTriggerBonusParams('FREE_SPINS', 1);
274
+ const params2 = createCheatTriggerBonusParams('FREE_SPINS', 1);
275
+ const result1 = gameLogic.cheatTriggerBonus(publicState, privateState1, params1);
276
+ const result2 = gameLogic.cheatTriggerBonus(publicState, privateState2, params2);
277
+ expect(result1.outcome.triggeredBonus.bonusId).not.toBe(result2.outcome.triggeredBonus.bonusId);
278
+ });
279
+ it('should correctly set pendingBonus with all required fields', () => {
280
+ const publicState = createInitializedPublicState();
281
+ const privateState = createInitializedPrivateState();
282
+ const betAmount = 50;
283
+ const params = createCheatTriggerBonusParams('FREE_SPINS', betAmount);
284
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
285
+ const pendingBonus = result.privateState.pendingBonuses[0];
286
+ expect(pendingBonus).toHaveProperty('bonusId');
287
+ expect(pendingBonus).toHaveProperty('bonusType');
288
+ expect(pendingBonus).toHaveProperty('betAmount');
289
+ expect(pendingBonus.bonusId).toBeTruthy();
290
+ expect(pendingBonus.bonusType).toBe(lucky_sharky_types_1.BonusType.FREE_SPINS);
291
+ expect(pendingBonus.betAmount).toBe(betAmount);
292
+ });
293
+ it('should preserve other privateState fields when setting pending bonus', () => {
294
+ const publicState = createInitializedPublicState();
295
+ const privateState = {
296
+ boosterLevel: 3,
297
+ boosterMemory: 2,
298
+ nextSpinType: lucky_sharky_types_1.SpinType.BASE_GAME_SPIN,
299
+ pendingBonuses: [],
300
+ guaranteeSpinCount: 5,
301
+ screen: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 1, 2], [3, 4, 5]],
302
+ lastBetAmount: 10,
303
+ };
304
+ const params = createCheatTriggerBonusParams('HOLD_WIN_BONUS', 1);
305
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
306
+ // Verify other fields are preserved
307
+ expect(result.privateState.boosterLevel).toBe(3);
308
+ expect(result.privateState.boosterMemory).toBe(2);
309
+ expect(result.privateState.guaranteeSpinCount).toBe(5);
310
+ expect(result.privateState.screen).toEqual([[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 1, 2], [3, 4, 5]]);
311
+ expect(result.privateState.lastBetAmount).toBe(10);
312
+ // But nextSpinType should be updated
313
+ expect(result.privateState.nextSpinType).toBe(lucky_sharky_types_1.SpinType.HOLD_WIN_BONUS_SPIN);
314
+ });
315
+ it('should match bonusId between outcome and pendingBonuses', () => {
316
+ const publicState = createInitializedPublicState();
317
+ const privateState = createInitializedPrivateState();
318
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 1);
319
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
320
+ expect(result.outcome.triggeredBonus.bonusId).toBe(result.privateState.pendingBonuses[result.privateState.pendingBonuses.length - 1].bonusId);
321
+ });
322
+ });
323
+ describe('Bet amount variations', () => {
324
+ it('should work with different bet amounts', () => {
325
+ const publicState = createInitializedPublicState();
326
+ const betAmounts = [0.1, 1, 5, 10, 50, 100, 1000];
327
+ for (const betAmount of betAmounts) {
328
+ const privateState = createInitializedPrivateState();
329
+ const params = createCheatTriggerBonusParams('FREE_SPINS', betAmount);
330
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
331
+ expect(result.outcome.triggeredBonus.betAmount).toBe(betAmount);
332
+ expect(result.privateState.pendingBonuses[0].betAmount).toBe(betAmount);
333
+ }
334
+ });
335
+ it('should work with zero bet amount', () => {
336
+ const publicState = createInitializedPublicState();
337
+ const privateState = createInitializedPrivateState();
338
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 0);
339
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
340
+ expect(result.outcome.triggeredBonus.betAmount).toBe(0);
341
+ expect(result.privateState.pendingBonuses[0].betAmount).toBe(0);
342
+ });
343
+ it('should work with negative bet amount (edge case)', () => {
344
+ const publicState = createInitializedPublicState();
345
+ const privateState = createInitializedPrivateState();
346
+ const params = createCheatTriggerBonusParams('FREE_SPINS', -5);
347
+ // Method does not validate bet amount
348
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
349
+ expect(result.outcome.triggeredBonus.betAmount).toBe(-5);
350
+ });
351
+ });
352
+ describe('Session ID variations', () => {
353
+ it('should work with different session IDs', () => {
354
+ const publicState = createInitializedPublicState();
355
+ const privateState = createInitializedPrivateState();
356
+ const sessionId = 'custom-session-abc-123';
357
+ const params = createCheatTriggerBonusParams('HOLD_WIN_BONUS', 1, sessionId);
358
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
359
+ expect(result).toBeDefined();
360
+ expect(result.outcome.triggeredBonus).toBeDefined();
361
+ });
362
+ it('should work with empty session ID', () => {
363
+ const publicState = createInitializedPublicState();
364
+ const privateState = createInitializedPrivateState();
365
+ const params = createCheatTriggerBonusParams('FREE_SPINS', 1, '');
366
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
367
+ expect(result).toBeDefined();
368
+ });
369
+ it('should work with very long session ID', () => {
370
+ const publicState = createInitializedPublicState();
371
+ const privateState = createInitializedPrivateState();
372
+ const longSessionId = 'a'.repeat(1000);
373
+ const params = createCheatTriggerBonusParams('HOLD_WIN_BONUS', 1, longSessionId);
374
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
375
+ expect(result).toBeDefined();
376
+ });
377
+ });
378
+ describe('Multiple consecutive triggers', () => {
379
+ it('should handle multiple bonus triggers on the same private state', () => {
380
+ const publicState = createInitializedPublicState();
381
+ let privateState = createInitializedPrivateState();
382
+ // First trigger
383
+ const params1 = createCheatTriggerBonusParams('FREE_SPINS', 1);
384
+ const result1 = gameLogic.cheatTriggerBonus(publicState, privateState, params1);
385
+ privateState = result1.privateState;
386
+ // Second trigger on the updated state
387
+ const params2 = createCheatTriggerBonusParams('HOLD_WIN_BONUS', 5);
388
+ const result2 = gameLogic.cheatTriggerBonus(publicState, privateState, params2);
389
+ expect(result2.privateState.pendingBonuses).toHaveLength(2);
390
+ expect(result2.privateState.pendingBonuses[0].bonusType).toBe(lucky_sharky_types_1.BonusType.FREE_SPINS);
391
+ expect(result2.privateState.pendingBonuses[1].bonusType).toBe(lucky_sharky_types_1.BonusType.HOLD_WIN_BONUS);
392
+ // nextSpinType should be the latest bonus type
393
+ expect(result2.privateState.nextSpinType).toBe(lucky_sharky_types_1.SpinType.HOLD_WIN_BONUS_SPIN);
394
+ });
395
+ it('should handle three consecutive FREE_SPINS triggers', () => {
396
+ const publicState = createInitializedPublicState();
397
+ let privateState = createInitializedPrivateState();
398
+ for (let i = 0; i < 3; i++) {
399
+ const params = createCheatTriggerBonusParams('FREE_SPINS', i + 1);
400
+ const result = gameLogic.cheatTriggerBonus(publicState, privateState, params);
401
+ privateState = result.privateState;
402
+ }
403
+ expect(privateState.pendingBonuses).toHaveLength(3);
404
+ expect(privateState.pendingBonuses[0].betAmount).toBe(1);
405
+ expect(privateState.pendingBonuses[1].betAmount).toBe(2);
406
+ expect(privateState.pendingBonuses[2].betAmount).toBe(3);
407
+ });
408
+ });
409
+ });
410
+ //# sourceMappingURL=cheat-trigger-bonus.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat-trigger-bonus.test.js","sourceRoot":"","sources":["../../src/__tests__/cheat-trigger-bonus.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Command payload for CHEAT_TRIGGER_BONUS
3
+ * Allows dev-tools to trigger bonus rounds for testing
4
+ */
5
+ export interface CheatTriggerBonusCommand {
6
+ sessionId: string;
7
+ bonusType: 'FREE_SPINS' | 'HOLD_WIN_BONUS';
8
+ betAmount: number;
9
+ }
10
+ //# sourceMappingURL=cheat-trigger-bonus-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat-trigger-bonus-command.d.ts","sourceRoot":"","sources":["../../../src/domain/types/cheat-trigger-bonus-command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,YAAY,GAAG,gBAAgB,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=cheat-trigger-bonus-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat-trigger-bonus-command.js","sourceRoot":"","sources":["../../../src/domain/types/cheat-trigger-bonus-command.ts"],"names":[],"mappings":""}
@@ -4,6 +4,7 @@ import { LuckySharkyGameLogicConfigInterface } from './game-logic-config.interfa
4
4
  import { GameSpinInputDto } from '../domain/types/game-spin-input.dto';
5
5
  import { StartBonusRoundInputDto } from '../domain/types/start-bonus-round-input.dto';
6
6
  import { BaseGameSpinResult, BonusType, GetSymbolsResult, LuckySharkyGameLogicSpinResult, LuckySharkyPrivateState, LuckySharkyPublicState, SpinResultResponse } from './lucky-sharky.types';
7
+ import { CheatTriggerBonusCommand } from '../domain/types/cheat-trigger-bonus-command';
7
8
  export interface LuckySharkySessionStateInterface {
8
9
  publicState: LuckySharkyPublicState;
9
10
  privateState: LuckySharkyPrivateState;
@@ -22,5 +23,20 @@ export declare class LuckySharkyGameLogic {
22
23
  private handleHoldWinBonus;
23
24
  getSymbols(gameLogicConfig: LuckySharkyGameLogicConfigInterface): GetSymbolsResult;
24
25
  static getBonusTypeForTrigger(bonusType: BonusType): string;
26
+ /**
27
+ * Cheat command to trigger a bonus round directly
28
+ * Used by dev-tools for testing bonus mechanics
29
+ */
30
+ cheatTriggerBonus(publicState: LuckySharkyPublicState, privateState: LuckySharkyPrivateState, params: CheatTriggerBonusCommand): {
31
+ publicState: LuckySharkyPublicState;
32
+ privateState: LuckySharkyPrivateState;
33
+ outcome: {
34
+ triggeredBonus: {
35
+ bonusId: string;
36
+ bonusType: string;
37
+ betAmount: number;
38
+ };
39
+ };
40
+ };
25
41
  }
26
42
  //# sourceMappingURL=lucky-sharky.game-logic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lucky-sharky.game-logic.d.ts","sourceRoot":"","sources":["../../src/logic/lucky-sharky.game-logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,mCAAmC,EAAE,MAAM,+BAA+B,CAAC;AAKpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,sBAAsB,CAAC;IACpC,YAAY,EAAE,uBAAuB,CAAC;CACvC;AAED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAEtC,gBAAgB,CAC3B,eAAe,EAAE,mCAAmC,EACpD,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE;QAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EACvE,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gCAAgC,CAAC;IA6B/B,IAAI,CACf,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,MAAM,EAAE,mCAAmC,EAC3C,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAmErC,eAAe,CAC1B,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,MAAM,EAAE,mCAAmC,EAC3C,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,8BAA8B,CAAC;IA4B1C,OAAO,CAAC,qBAAqB;YAqBf,oBAAoB;YA+BpB,kBAAkB;IAwBzB,UAAU,CACf,eAAe,EAAE,mCAAmC,GACnD,gBAAgB;WAYL,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;CAUnE"}
1
+ {"version":3,"file":"lucky-sharky.game-logic.d.ts","sourceRoot":"","sources":["../../src/logic/lucky-sharky.game-logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,mCAAmC,EAAE,MAAM,+BAA+B,CAAC;AAKpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAEvF,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,sBAAsB,CAAC;IACpC,YAAY,EAAE,uBAAuB,CAAC;CACvC;AAED,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAEtC,gBAAgB,CAC3B,eAAe,EAAE,mCAAmC,EACpD,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE;QAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,EACvE,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gCAAgC,CAAC;IA6B/B,IAAI,CACf,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,MAAM,EAAE,mCAAmC,EAC3C,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAmErC,eAAe,CAC1B,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,MAAM,EAAE,mCAAmC,EAC3C,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,8BAA8B,CAAC;IA4B1C,OAAO,CAAC,qBAAqB;YAqBf,oBAAoB;YA+BpB,kBAAkB;IAwBzB,UAAU,CACf,eAAe,EAAE,mCAAmC,GACnD,gBAAgB;WAYL,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAWlE;;;OAGG;IACI,iBAAiB,CACtB,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,MAAM,EAAE,wBAAwB,GAC/B;QACD,WAAW,EAAE,sBAAsB,CAAC;QACpC,YAAY,EAAE,uBAAuB,CAAC;QACtC,OAAO,EAAE;YACP,cAAc,EAAE;gBACd,OAAO,EAAE,MAAM,CAAC;gBAChB,SAAS,EAAE,MAAM,CAAC;gBAClB,SAAS,EAAE,MAAM,CAAC;aACnB,CAAC;SACH,CAAC;KACH;CA0CF"}
@@ -126,6 +126,48 @@ class LuckySharkyGameLogic {
126
126
  return 'unknown';
127
127
  }
128
128
  }
129
+ /**
130
+ * Cheat command to trigger a bonus round directly
131
+ * Used by dev-tools for testing bonus mechanics
132
+ */
133
+ cheatTriggerBonus(publicState, privateState, params) {
134
+ const bonusId = `cheat-${Date.now()}-${Math.random().toString(36).substring(7)}`;
135
+ // Determine the next spin type based on bonus type
136
+ let nextSpinType;
137
+ switch (params.bonusType) {
138
+ case 'FREE_SPINS':
139
+ nextSpinType = lucky_sharky_types_1.SpinType.FREE_SPIN;
140
+ break;
141
+ case 'HOLD_WIN_BONUS':
142
+ nextSpinType = lucky_sharky_types_1.SpinType.HOLD_WIN_BONUS_SPIN;
143
+ break;
144
+ default:
145
+ throw new Error(`Unknown bonus type: ${params.bonusType}`);
146
+ }
147
+ // Create the bonus trigger
148
+ const bonusTrigger = {
149
+ bonusId,
150
+ bonusType: params.bonusType === 'FREE_SPINS' ? lucky_sharky_types_1.BonusType.FREE_SPINS : lucky_sharky_types_1.BonusType.HOLD_WIN_BONUS,
151
+ betAmount: params.betAmount,
152
+ };
153
+ // Update state to indicate bonus is pending
154
+ const updatedPrivateState = {
155
+ ...privateState,
156
+ nextSpinType,
157
+ pendingBonuses: [...privateState.pendingBonuses, bonusTrigger],
158
+ };
159
+ return {
160
+ publicState,
161
+ privateState: updatedPrivateState,
162
+ outcome: {
163
+ triggeredBonus: {
164
+ bonusId,
165
+ bonusType: params.bonusType,
166
+ betAmount: params.betAmount,
167
+ },
168
+ },
169
+ };
170
+ }
129
171
  }
130
172
  exports.LuckySharkyGameLogic = LuckySharkyGameLogic;
131
173
  //# sourceMappingURL=lucky-sharky.game-logic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lucky-sharky.game-logic.js","sourceRoot":"","sources":["../../src/logic/lucky-sharky.game-logic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucky-sharky.game-logic.js","sourceRoot":"","sources":["../../src/logic/lucky-sharky.game-logic.ts"],"names":[],"mappings":";;;AAGA,+EAAyE;AACzE,oEAA+D;AAC/D,sEAAiE;AACjE,8EAAwE;AAGxE,6DAS8B;AAQ9B,MAAa,oBAAoB;IAC/B,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEhD,KAAK,CAAC,gBAAgB,CAC3B,eAAoD,EACpD,gBAAkC,EAClC,UAAuE,EACvE,SAAiB;QAEjB,MAAM,WAAW,GAA2B;YAC1C,YAAY,EAAE,CAAC;YACf,kBAAkB,EAAE,CAAC;YACrB,UAAU,EAAE,EAAE;SACf,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,IAAI,sDAAwB,CACtD,IAAI,CAAC,UAAU,CAChB,CAAC,kBAAkB,CAClB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,aAAa,CACd,CAAC;QAEF,MAAM,YAAY,GAA4B;YAC5C,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,6BAAQ,CAAC,cAAc;YACrC,cAAc,EAAE,EAAE;YAClB,kBAAkB,EAAE,CAAC;YACrB,MAAM,EAAE,aAAa;YACrB,aAAa,EAAE,SAAS;SACzB,CAAC;QAEF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,MAAwB,EACxB,WAAmC,EACnC,YAAqC,EACrC,MAA2C,EAC3C,gBAAkC,EAClC,SAAiB;QAEjB,IAAI,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CACnD,MAAM,EACN,YAAY,EACZ,MAAM,CACP,CAAC;QAEF,oBAAoB,GAAG;YACrB,GAAG,oBAAoB;YACvB,aAAa,EAAE,MAAM,CAAC,SAAS;SAChC,CAAC;QAEF,QAAQ,oBAAoB,CAAC,YAAY,EAAE,CAAC;YAC1C,KAAK,6BAAQ,CAAC,cAAc;gBAC1B,OAAO,IAAI,mCAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CACpD,MAAM,EACN,WAAW,EACX,oBAAoB,EACpB,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;YAEJ,KAAK,6BAAQ,CAAC,SAAS;gBACrB,OAAO,IAAI,mCAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CACpD,MAAM,EACN;oBACE,GAAG,WAAW;oBACd,YAAY,EAAE,oBAAoB,CAAC,YAAY;iBAChD,EACD;oBACE,GAAG,oBAAoB;oBACvB,YAAY,EAAE,6BAAQ,CAAC,cAAc;iBACtC,EACD,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;YAEJ,KAAK,6BAAQ,CAAC,mBAAmB;gBAC/B,OAAO,IAAI,mCAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CACpD,MAAM,EACN;oBACE,GAAG,WAAW;oBACd,YAAY,EAAE,oBAAoB,CAAC,YAAY;iBAChD,EACD;oBACE,GAAG,oBAAoB;oBACvB,YAAY,EAAE,6BAAQ,CAAC,cAAc;iBACtC,EACD,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;YAEJ;gBACE,OAAO,IAAI,mCAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CACpD,MAAM,EACN,WAAW,EACX,oBAAoB,EACpB,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;QACN,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,eAAe,CAC1B,MAA+B,EAC/B,WAAmC,EACnC,YAAqC,EACrC,MAA2C,EAC3C,gBAAkC,EAClC,SAAiB;QAEjB,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;YACzB,KAAK,WAAW,CAAC;YACjB,KAAK,YAAY;gBACf,OAAO,IAAI,CAAC,oBAAoB,CAC9B,MAAM,EACN,WAAW,EACX,YAAY,EACZ,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;YAEJ,KAAK,cAAc,CAAC;YACpB,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,kBAAkB,CAC5B,MAAM,EACN,WAAW,EACX,YAAY,EACZ,MAAM,EACN,SAAS,CACV,CAAC;YAEJ;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEO,qBAAqB,CAC3B,MAAwB,EACxB,YAAqC,EACrC,MAA2C;QAE3C,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;QACjD,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC;QAC1C,MAAM,UAAU,GACd,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,gBAAgB,CAAC;QAEpE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO;gBACL,GAAG,YAAY;gBACf,YAAY,EAAE,CAAC;gBACf,aAAa,EAAE,YAAY,CAAC,YAAY;aACzC,CAAC;QACJ,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,MAA+B,EAC/B,WAAmC,EACnC,YAAqC,EACrC,MAA2C,EAC3C,gBAAkC,EAClC,SAAiB;QAEjB,MAAM,mBAAmB,GAA4B;YACnD,GAAG,YAAY;YACf,aAAa,EAAE,YAAY,CAAC,YAAY;SACzC,CAAC;QAEF,MAAM,aAAa,GAAqB;YACtC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE,EAAE;YAClB,MAAM,EAAE,cAAc;YACtB,WAAW,EAAE,OAAO;SACrB,CAAC;QAEF,OAAO,IAAI,qCAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,0BAA0B,CACrE,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,gBAAgB,EAChB,SAAS,CACV,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,MAA+B,EAC/B,WAAmC,EACnC,YAAqC,EACrC,MAA2C,EAC3C,SAAiB;QAEjB,MAAM,aAAa,GAAqB;YACtC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE,EAAE;YAClB,MAAM,EAAE,cAAc;YACtB,WAAW,EAAE,OAAO;SACrB,CAAC;QAEF,OAAO,IAAI,4CAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,yBAAyB,CACvE,aAAa,EACb,WAAW,EACX,YAAY,EACZ,MAAM,EACN,SAAS,CACV,CAAC;IACJ,CAAC;IAEM,UAAU,CACf,eAAoD;QAEpD,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC1E,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC,CAAC;QAEJ,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAAC,SAAoB;QACvD,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,8BAAS,CAAC,UAAU;gBACvB,OAAO,WAAW,CAAC;YACrB,KAAK,8BAAS,CAAC,cAAc;gBAC3B,OAAO,cAAc,CAAC;YACxB;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,iBAAiB,CACtB,WAAmC,EACnC,YAAqC,EACrC,MAAgC;QAYhC,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjF,mDAAmD;QACnD,IAAI,YAAsB,CAAC;QAC3B,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;YACzB,KAAK,YAAY;gBACf,YAAY,GAAG,6BAAQ,CAAC,SAAS,CAAC;gBAClC,MAAM;YACR,KAAK,gBAAgB;gBACnB,YAAY,GAAG,6BAAQ,CAAC,mBAAmB,CAAC;gBAC5C,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,2BAA2B;QAC3B,MAAM,YAAY,GAAG;YACnB,OAAO;YACP,SAAS,EAAE,MAAM,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,8BAAS,CAAC,UAAU,CAAC,CAAC,CAAC,8BAAS,CAAC,cAAc;YAC9F,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;QAEF,4CAA4C;QAC5C,MAAM,mBAAmB,GAA4B;YACnD,GAAG,YAAY;YACf,YAAY;YACZ,cAAc,EAAE,CAAC,GAAG,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC;SAC/D,CAAC;QAEF,OAAO;YACL,WAAW;YACX,YAAY,EAAE,mBAAmB;YACjC,OAAO,EAAE;gBACP,cAAc,EAAE;oBACd,OAAO;oBACP,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAnTD,oDAmTC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lucky-sharky-v1.game-engine.d.ts","sourceRoot":"","sources":["../src/lucky-sharky-v1.game-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EAGvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAIvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAG5F,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,qBAAa,uBACX,YAAW,UAAU,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,GAAG,CAAC;IAE3E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,KAAK,CAAwC;IAErD,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,GAAE,gBAAqB;IAalC,iBAAiB,IAAI,cAAc;YAW5B,OAAO;IAuCR,cAAc,CACzB,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CACR,uBAAuB,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,GAAG,CAAC,CAC9E;CA4HF"}
1
+ {"version":3,"file":"lucky-sharky-v1.game-engine.d.ts","sourceRoot":"","sources":["../src/lucky-sharky-v1.game-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EAGvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAIvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAG5F,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,qBAAa,uBACX,YAAW,UAAU,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,GAAG,CAAC;IAE3E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,KAAK,CAAwC;IAErD,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,GAAE,gBAAqB;IAalC,iBAAiB,IAAI,cAAc;YAW5B,OAAO;IAuCR,cAAc,CACzB,WAAW,EAAE,sBAAsB,EACnC,YAAY,EAAE,uBAAuB,EACrC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CACR,uBAAuB,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,GAAG,CAAC,CAC9E;CAqJF"}
@@ -61,7 +61,12 @@ class LuckySharkyV1GameEngine {
61
61
  if (!baseReels) {
62
62
  throw new Error('Base game reels not found');
63
63
  }
64
- const result = await this.gameLogic.initSessionState(this.config, baseReels, command.payload, command.id);
64
+ // Ensure gameConfig has required fields with defaults
65
+ const gameConfig = {
66
+ betAmountThresholds: command.payload?.betAmountThresholds ?? [0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100],
67
+ defaultBetAmount: command.payload?.defaultBetAmount ?? command.payload?.betStake ?? 1,
68
+ };
69
+ const result = await this.gameLogic.initSessionState(this.config, baseReels, gameConfig, command.id);
65
70
  const rngOutcome = this.rngService.getRngOutcomeForCommand(command.id);
66
71
  this.rngService.removeCommand(command.id);
67
72
  return {
@@ -137,6 +142,20 @@ class LuckySharkyV1GameEngine {
137
142
  rngOutcome: undefined,
138
143
  };
139
144
  }
145
+ case 'CHEAT_TRIGGER_BONUS': {
146
+ const params = command.payload;
147
+ const result = this.gameLogic.cheatTriggerBonus(publicState, privateState, params);
148
+ const rngOutcome = this.rngService.getRngOutcomeForCommand(command.id);
149
+ this.rngService.removeCommand(command.id);
150
+ return {
151
+ success: true,
152
+ publicState: result.publicState,
153
+ privateState: result.privateState,
154
+ outcome: result.outcome,
155
+ message: 'Bonus triggered via cheat command',
156
+ rngOutcome,
157
+ };
158
+ }
140
159
  default: {
141
160
  return {
142
161
  success: false,
@@ -1 +1 @@
1
- {"version":3,"file":"lucky-sharky-v1.game-engine.js","sourceRoot":"","sources":["../src/lucky-sharky-v1.game-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucky-sharky-v1.game-engine.js","sourceRoot":"","sources":["../src/lucky-sharky-v1.game-engine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnitronix/lucky-sharky-game-engine",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Lucky Sharky Game Engine",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",