@swrpg-online/dice 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dice.js CHANGED
@@ -2,490 +2,101 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.roll = exports.DEFAULT_MAX_TOTAL_DICE = exports.DEFAULT_MAX_DICE_PER_TYPE = void 0;
4
4
  const hints_1 = require("./hints");
5
+ const diceFaces_1 = require("./diceFaces");
5
6
  // Default dice limits for performance and security
6
7
  exports.DEFAULT_MAX_DICE_PER_TYPE = 100;
7
8
  exports.DEFAULT_MAX_TOTAL_DICE = 500;
8
9
  const rollDie = (sides) => Math.floor(Math.random() * sides) + 1;
9
10
  const boostDieResult = (roll) => {
10
- switch (roll) {
11
- case 3:
12
- return {
13
- successes: 1,
14
- failures: 0,
15
- advantages: 0,
16
- threats: 0,
17
- triumphs: 0,
18
- despair: 0,
19
- lightSide: 0,
20
- darkSide: 0,
21
- };
22
- case 4:
23
- return {
24
- successes: 1,
25
- failures: 0,
26
- advantages: 1,
27
- threats: 0,
28
- triumphs: 0,
29
- despair: 0,
30
- lightSide: 0,
31
- darkSide: 0,
32
- };
33
- case 5:
34
- return {
35
- successes: 0,
36
- failures: 0,
37
- advantages: 2,
38
- threats: 0,
39
- triumphs: 0,
40
- despair: 0,
41
- lightSide: 0,
42
- darkSide: 0,
43
- };
44
- case 6:
45
- return {
46
- successes: 0,
47
- failures: 0,
48
- advantages: 1,
49
- threats: 0,
50
- triumphs: 0,
51
- despair: 0,
52
- lightSide: 0,
53
- darkSide: 0,
54
- };
55
- default:
56
- return {
57
- successes: 0,
58
- failures: 0,
59
- advantages: 0,
60
- threats: 0,
61
- triumphs: 0,
62
- despair: 0,
63
- lightSide: 0,
64
- darkSide: 0,
65
- };
66
- }
11
+ const face = diceFaces_1.BOOST_DIE_FACES[roll];
12
+ return {
13
+ successes: face.successes || 0,
14
+ failures: face.failures || 0,
15
+ advantages: face.advantages || 0,
16
+ threats: face.threats || 0,
17
+ triumphs: face.triumphs || 0,
18
+ despair: face.despairs || 0,
19
+ lightSide: face.lightSide || 0,
20
+ darkSide: face.darkSide || 0,
21
+ };
67
22
  };
68
23
  const setBackDieResult = (roll) => {
69
- switch (roll) {
70
- case 3:
71
- case 4:
72
- return {
73
- successes: 0,
74
- failures: 1,
75
- advantages: 0,
76
- threats: 0,
77
- triumphs: 0,
78
- despair: 0,
79
- lightSide: 0,
80
- darkSide: 0,
81
- };
82
- case 5:
83
- case 6:
84
- return {
85
- successes: 0,
86
- failures: 0,
87
- advantages: 0,
88
- threats: 1,
89
- triumphs: 0,
90
- despair: 0,
91
- lightSide: 0,
92
- darkSide: 0,
93
- };
94
- default:
95
- return {
96
- successes: 0,
97
- failures: 0,
98
- advantages: 0,
99
- threats: 0,
100
- triumphs: 0,
101
- despair: 0,
102
- lightSide: 0,
103
- darkSide: 0,
104
- };
105
- }
24
+ const face = diceFaces_1.SETBACK_DIE_FACES[roll];
25
+ return {
26
+ successes: face.successes || 0,
27
+ failures: face.failures || 0,
28
+ advantages: face.advantages || 0,
29
+ threats: face.threats || 0,
30
+ triumphs: face.triumphs || 0,
31
+ despair: face.despairs || 0,
32
+ lightSide: face.lightSide || 0,
33
+ darkSide: face.darkSide || 0,
34
+ };
106
35
  };
107
36
  const abilityDieResult = (roll) => {
108
- switch (roll) {
109
- case 2:
110
- case 3:
111
- return {
112
- successes: 1,
113
- failures: 0,
114
- advantages: 0,
115
- threats: 0,
116
- triumphs: 0,
117
- despair: 0,
118
- lightSide: 0,
119
- darkSide: 0,
120
- };
121
- case 4:
122
- return {
123
- successes: 2,
124
- failures: 0,
125
- advantages: 0,
126
- threats: 0,
127
- triumphs: 0,
128
- despair: 0,
129
- lightSide: 0,
130
- darkSide: 0,
131
- };
132
- case 5:
133
- case 6:
134
- return {
135
- successes: 0,
136
- failures: 0,
137
- advantages: 1,
138
- threats: 0,
139
- triumphs: 0,
140
- despair: 0,
141
- lightSide: 0,
142
- darkSide: 0,
143
- };
144
- case 7:
145
- return {
146
- successes: 1,
147
- failures: 0,
148
- advantages: 1,
149
- threats: 0,
150
- triumphs: 0,
151
- despair: 0,
152
- lightSide: 0,
153
- darkSide: 0,
154
- };
155
- case 8:
156
- return {
157
- successes: 0,
158
- failures: 0,
159
- advantages: 2,
160
- threats: 0,
161
- triumphs: 0,
162
- despair: 0,
163
- lightSide: 0,
164
- darkSide: 0,
165
- };
166
- default:
167
- return {
168
- successes: 0,
169
- failures: 0,
170
- advantages: 0,
171
- threats: 0,
172
- triumphs: 0,
173
- despair: 0,
174
- lightSide: 0,
175
- darkSide: 0,
176
- };
177
- }
37
+ const face = diceFaces_1.ABILITY_DIE_FACES[roll];
38
+ return {
39
+ successes: face.successes || 0,
40
+ failures: face.failures || 0,
41
+ advantages: face.advantages || 0,
42
+ threats: face.threats || 0,
43
+ triumphs: face.triumphs || 0,
44
+ despair: face.despairs || 0,
45
+ lightSide: face.lightSide || 0,
46
+ darkSide: face.darkSide || 0,
47
+ };
178
48
  };
179
49
  const difficultyDieResult = (roll) => {
180
- switch (roll) {
181
- case 2:
182
- return {
183
- successes: 0,
184
- failures: 1,
185
- advantages: 0,
186
- threats: 0,
187
- triumphs: 0,
188
- despair: 0,
189
- lightSide: 0,
190
- darkSide: 0,
191
- };
192
- case 3:
193
- return {
194
- successes: 0,
195
- failures: 2,
196
- advantages: 0,
197
- threats: 0,
198
- triumphs: 0,
199
- despair: 0,
200
- lightSide: 0,
201
- darkSide: 0,
202
- };
203
- case 4:
204
- case 5:
205
- case 6:
206
- return {
207
- successes: 0,
208
- failures: 0,
209
- advantages: 0,
210
- threats: 1,
211
- triumphs: 0,
212
- despair: 0,
213
- lightSide: 0,
214
- darkSide: 0,
215
- };
216
- case 7:
217
- return {
218
- successes: 0,
219
- failures: 0,
220
- advantages: 0,
221
- threats: 2,
222
- triumphs: 0,
223
- despair: 0,
224
- lightSide: 0,
225
- darkSide: 0,
226
- };
227
- case 8:
228
- return {
229
- successes: 0,
230
- failures: 1,
231
- advantages: 0,
232
- threats: 1,
233
- triumphs: 0,
234
- despair: 0,
235
- lightSide: 0,
236
- darkSide: 0,
237
- };
238
- default:
239
- return {
240
- successes: 0,
241
- failures: 0,
242
- advantages: 0,
243
- threats: 0,
244
- triumphs: 0,
245
- despair: 0,
246
- lightSide: 0,
247
- darkSide: 0,
248
- };
249
- }
50
+ const face = diceFaces_1.DIFFICULTY_DIE_FACES[roll];
51
+ return {
52
+ successes: face.successes || 0,
53
+ failures: face.failures || 0,
54
+ advantages: face.advantages || 0,
55
+ threats: face.threats || 0,
56
+ triumphs: face.triumphs || 0,
57
+ despair: face.despairs || 0,
58
+ lightSide: face.lightSide || 0,
59
+ darkSide: face.darkSide || 0,
60
+ };
250
61
  };
251
62
  const proficiencyDieResult = (roll) => {
252
- switch (roll) {
253
- case 2:
254
- case 3:
255
- return {
256
- successes: 1,
257
- failures: 0,
258
- advantages: 0,
259
- threats: 0,
260
- triumphs: 0,
261
- despair: 0,
262
- lightSide: 0,
263
- darkSide: 0,
264
- };
265
- case 4:
266
- case 5:
267
- return {
268
- successes: 2,
269
- failures: 0,
270
- advantages: 0,
271
- threats: 0,
272
- triumphs: 0,
273
- despair: 0,
274
- lightSide: 0,
275
- darkSide: 0,
276
- };
277
- case 6:
278
- return {
279
- successes: 0,
280
- failures: 0,
281
- advantages: 1,
282
- threats: 0,
283
- triumphs: 0,
284
- despair: 0,
285
- lightSide: 0,
286
- darkSide: 0,
287
- };
288
- case 7:
289
- case 8:
290
- case 9:
291
- return {
292
- successes: 1,
293
- failures: 0,
294
- advantages: 1,
295
- threats: 0,
296
- triumphs: 0,
297
- despair: 0,
298
- lightSide: 0,
299
- darkSide: 0,
300
- };
301
- case 10:
302
- case 11:
303
- return {
304
- successes: 0,
305
- failures: 0,
306
- advantages: 2,
307
- threats: 0,
308
- triumphs: 0,
309
- despair: 0,
310
- lightSide: 0,
311
- darkSide: 0,
312
- };
313
- case 12:
314
- return {
315
- successes: 0,
316
- failures: 0,
317
- advantages: 0,
318
- threats: 0,
319
- triumphs: 1,
320
- despair: 0,
321
- lightSide: 0,
322
- darkSide: 0,
323
- };
324
- default:
325
- return {
326
- successes: 0,
327
- failures: 0,
328
- advantages: 0,
329
- threats: 0,
330
- triumphs: 0,
331
- despair: 0,
332
- lightSide: 0,
333
- darkSide: 0,
334
- };
335
- }
63
+ const face = diceFaces_1.PROFICIENCY_DIE_FACES[roll];
64
+ return {
65
+ successes: face.successes || 0,
66
+ failures: face.failures || 0,
67
+ advantages: face.advantages || 0,
68
+ threats: face.threats || 0,
69
+ triumphs: face.triumphs || 0,
70
+ despair: face.despairs || 0,
71
+ lightSide: face.lightSide || 0,
72
+ darkSide: face.darkSide || 0,
73
+ };
336
74
  };
337
75
  const challengeDieResult = (roll) => {
338
- switch (roll) {
339
- case 2:
340
- case 3:
341
- return {
342
- successes: 0,
343
- failures: 1,
344
- advantages: 0,
345
- threats: 0,
346
- triumphs: 0,
347
- despair: 0,
348
- lightSide: 0,
349
- darkSide: 0,
350
- };
351
- case 4:
352
- case 5:
353
- return {
354
- successes: 0,
355
- failures: 2,
356
- advantages: 0,
357
- threats: 0,
358
- triumphs: 0,
359
- despair: 0,
360
- lightSide: 0,
361
- darkSide: 0,
362
- };
363
- case 6:
364
- case 7:
365
- return {
366
- successes: 0,
367
- failures: 0,
368
- advantages: 0,
369
- threats: 1,
370
- triumphs: 0,
371
- despair: 0,
372
- lightSide: 0,
373
- darkSide: 0,
374
- };
375
- case 8:
376
- case 9:
377
- return {
378
- successes: 0,
379
- failures: 1,
380
- advantages: 0,
381
- threats: 1,
382
- triumphs: 0,
383
- despair: 0,
384
- lightSide: 0,
385
- darkSide: 0,
386
- };
387
- case 10:
388
- case 11:
389
- return {
390
- successes: 0,
391
- failures: 0,
392
- advantages: 0,
393
- threats: 2,
394
- triumphs: 0,
395
- despair: 0,
396
- lightSide: 0,
397
- darkSide: 0,
398
- };
399
- case 12:
400
- return {
401
- successes: 0,
402
- failures: 0,
403
- advantages: 0,
404
- threats: 0,
405
- triumphs: 0,
406
- despair: 1,
407
- lightSide: 0,
408
- darkSide: 0,
409
- };
410
- default:
411
- return {
412
- successes: 0,
413
- failures: 0,
414
- advantages: 0,
415
- threats: 0,
416
- triumphs: 0,
417
- despair: 0,
418
- lightSide: 0,
419
- darkSide: 0,
420
- };
421
- }
76
+ const face = diceFaces_1.CHALLENGE_DIE_FACES[roll];
77
+ return {
78
+ successes: face.successes || 0,
79
+ failures: face.failures || 0,
80
+ advantages: face.advantages || 0,
81
+ threats: face.threats || 0,
82
+ triumphs: face.triumphs || 0,
83
+ despair: face.despairs || 0,
84
+ lightSide: face.lightSide || 0,
85
+ darkSide: face.darkSide || 0,
86
+ };
422
87
  };
423
88
  const forceDieResult = (roll) => {
424
- switch (roll) {
425
- case 1:
426
- case 2:
427
- case 3:
428
- case 4:
429
- case 5:
430
- return {
431
- successes: 0,
432
- failures: 0,
433
- advantages: 0,
434
- threats: 0,
435
- triumphs: 0,
436
- despair: 0,
437
- lightSide: 1,
438
- darkSide: 0,
439
- };
440
- case 6:
441
- case 7:
442
- return {
443
- successes: 0,
444
- failures: 0,
445
- advantages: 0,
446
- threats: 0,
447
- triumphs: 0,
448
- despair: 0,
449
- lightSide: 2,
450
- darkSide: 0,
451
- };
452
- case 8:
453
- case 9:
454
- case 10:
455
- case 11:
456
- return {
457
- successes: 0,
458
- failures: 0,
459
- advantages: 0,
460
- threats: 0,
461
- triumphs: 0,
462
- despair: 0,
463
- lightSide: 0,
464
- darkSide: 1,
465
- };
466
- case 12:
467
- return {
468
- successes: 0,
469
- failures: 0,
470
- advantages: 0,
471
- threats: 0,
472
- triumphs: 0,
473
- despair: 0,
474
- lightSide: 0,
475
- darkSide: 2,
476
- };
477
- default:
478
- return {
479
- successes: 0,
480
- failures: 0,
481
- advantages: 0,
482
- threats: 0,
483
- triumphs: 0,
484
- despair: 0,
485
- lightSide: 0,
486
- darkSide: 0,
487
- };
488
- }
89
+ const face = diceFaces_1.FORCE_DIE_FACES[roll];
90
+ return {
91
+ successes: face.successes || 0,
92
+ failures: face.failures || 0,
93
+ advantages: face.advantages || 0,
94
+ threats: face.threats || 0,
95
+ triumphs: face.triumphs || 0,
96
+ despair: face.despairs || 0,
97
+ lightSide: face.lightSide || 0,
98
+ darkSide: face.darkSide || 0,
99
+ };
489
100
  };
490
101
  /**
491
102
  * Applies dice upgrades and downgrades to a pool.
@@ -550,8 +161,8 @@ const applyDiceModifications = (pool) => {
550
161
  };
551
162
  const sumResults = (results, automaticSymbols, options) => {
552
163
  const sums = results.reduce((acc, curr) => ({
553
- successes: acc.successes + curr.successes,
554
- failures: acc.failures + curr.failures,
164
+ successes: acc.successes + curr.successes + curr.triumphs,
165
+ failures: acc.failures + curr.failures + curr.despair,
555
166
  advantages: acc.advantages + curr.advantages,
556
167
  threats: acc.threats + curr.threats,
557
168
  triumphs: acc.triumphs + curr.triumphs,
@@ -559,14 +170,14 @@ const sumResults = (results, automaticSymbols, options) => {
559
170
  lightSide: acc.lightSide + (curr.lightSide || 0),
560
171
  darkSide: acc.darkSide + (curr.darkSide || 0),
561
172
  }), {
562
- successes: (automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.successes) || 0,
563
- failures: (automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.failures) || 0,
173
+ successes: ((automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.successes) || 0) + ((automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.triumphs) || 0),
174
+ failures: ((automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.failures) || 0) + ((automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.despairs) || 0),
564
175
  advantages: (automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.advantages) || 0,
565
176
  threats: (automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.threats) || 0,
566
177
  triumphs: (automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.triumphs) || 0,
567
178
  despair: (automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.despairs) || 0,
568
- lightSide: 0,
569
- darkSide: 0,
179
+ lightSide: (automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.lightSide) || 0,
180
+ darkSide: (automaticSymbols === null || automaticSymbols === void 0 ? void 0 : automaticSymbols.darkSide) || 0,
570
181
  });
571
182
  let netSuccesses = 0;
572
183
  let netFailures = 0;
@@ -753,6 +364,8 @@ const roll = (pool, options) => {
753
364
  threats: pool.automaticThreats,
754
365
  triumphs: pool.automaticTriumphs,
755
366
  despairs: pool.automaticDespairs,
367
+ lightSide: pool.automaticLightSide,
368
+ darkSide: pool.automaticDarkSide,
756
369
  };
757
370
  const summary = sumResults(detailedResults.map((r) => r.result), automaticSymbols, options);
758
371
  if (options === null || options === void 0 ? void 0 : options.hints) {
@@ -0,0 +1,17 @@
1
+ import { DieFaceSymbols } from "./types";
2
+ export declare const BOOST_DIE_FACES: Record<number, DieFaceSymbols>;
3
+ export declare const SETBACK_DIE_FACES: Record<number, DieFaceSymbols>;
4
+ export declare const ABILITY_DIE_FACES: Record<number, DieFaceSymbols>;
5
+ export declare const DIFFICULTY_DIE_FACES: Record<number, DieFaceSymbols>;
6
+ export declare const PROFICIENCY_DIE_FACES: Record<number, DieFaceSymbols>;
7
+ export declare const CHALLENGE_DIE_FACES: Record<number, DieFaceSymbols>;
8
+ export declare const FORCE_DIE_FACES: Record<number, DieFaceSymbols>;
9
+ export declare const DICE_FACES: {
10
+ readonly boost: Record<number, DieFaceSymbols>;
11
+ readonly setback: Record<number, DieFaceSymbols>;
12
+ readonly ability: Record<number, DieFaceSymbols>;
13
+ readonly difficulty: Record<number, DieFaceSymbols>;
14
+ readonly proficiency: Record<number, DieFaceSymbols>;
15
+ readonly challenge: Record<number, DieFaceSymbols>;
16
+ readonly force: Record<number, DieFaceSymbols>;
17
+ };