@swrpg-online/dice 0.5.0 → 1.0.3
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 +103 -8
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +128 -0
- package/dist/dice.d.ts +1 -1
- package/dist/dice.js +289 -51
- package/dist/index.d.ts +3 -3
- package/dist/pools.d.ts +1 -1
- package/dist/pools.js +4 -4
- package/dist/types.d.ts +1 -1
- package/package.json +30 -5
- package/coverage/clover.xml +0 -113
- package/coverage/coverage-final.json +0 -4
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/dice.ts.html +0 -817
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -146
- package/coverage/lcov-report/index.ts.html +0 -109
- package/coverage/lcov-report/pools.ts.html +0 -253
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov.info +0 -246
- package/jest.config.js +0 -7
- package/src/dice.js +0 -229
- package/src/dice.ts +0 -244
- package/src/index.ts +0 -8
- package/src/pools.ts +0 -56
- package/src/types.js +0 -2
- package/src/types.ts +0 -30
- package/tests/dice.test.ts +0 -351
- package/tests/pools.test.ts +0 -86
- package/tsconfig.json +0 -14
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
var addSorting = (function() {
|
|
3
|
-
'use strict';
|
|
4
|
-
var cols,
|
|
5
|
-
currentSort = {
|
|
6
|
-
index: 0,
|
|
7
|
-
desc: false
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
// returns the summary table element
|
|
11
|
-
function getTable() {
|
|
12
|
-
return document.querySelector('.coverage-summary');
|
|
13
|
-
}
|
|
14
|
-
// returns the thead element of the summary table
|
|
15
|
-
function getTableHeader() {
|
|
16
|
-
return getTable().querySelector('thead tr');
|
|
17
|
-
}
|
|
18
|
-
// returns the tbody element of the summary table
|
|
19
|
-
function getTableBody() {
|
|
20
|
-
return getTable().querySelector('tbody');
|
|
21
|
-
}
|
|
22
|
-
// returns the th element for nth column
|
|
23
|
-
function getNthColumn(n) {
|
|
24
|
-
return getTableHeader().querySelectorAll('th')[n];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function onFilterInput() {
|
|
28
|
-
const searchValue = document.getElementById('fileSearch').value;
|
|
29
|
-
const rows = document.getElementsByTagName('tbody')[0].children;
|
|
30
|
-
for (let i = 0; i < rows.length; i++) {
|
|
31
|
-
const row = rows[i];
|
|
32
|
-
if (
|
|
33
|
-
row.textContent
|
|
34
|
-
.toLowerCase()
|
|
35
|
-
.includes(searchValue.toLowerCase())
|
|
36
|
-
) {
|
|
37
|
-
row.style.display = '';
|
|
38
|
-
} else {
|
|
39
|
-
row.style.display = 'none';
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// loads the search box
|
|
45
|
-
function addSearchBox() {
|
|
46
|
-
var template = document.getElementById('filterTemplate');
|
|
47
|
-
var templateClone = template.content.cloneNode(true);
|
|
48
|
-
templateClone.getElementById('fileSearch').oninput = onFilterInput;
|
|
49
|
-
template.parentElement.appendChild(templateClone);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// loads all columns
|
|
53
|
-
function loadColumns() {
|
|
54
|
-
var colNodes = getTableHeader().querySelectorAll('th'),
|
|
55
|
-
colNode,
|
|
56
|
-
cols = [],
|
|
57
|
-
col,
|
|
58
|
-
i;
|
|
59
|
-
|
|
60
|
-
for (i = 0; i < colNodes.length; i += 1) {
|
|
61
|
-
colNode = colNodes[i];
|
|
62
|
-
col = {
|
|
63
|
-
key: colNode.getAttribute('data-col'),
|
|
64
|
-
sortable: !colNode.getAttribute('data-nosort'),
|
|
65
|
-
type: colNode.getAttribute('data-type') || 'string'
|
|
66
|
-
};
|
|
67
|
-
cols.push(col);
|
|
68
|
-
if (col.sortable) {
|
|
69
|
-
col.defaultDescSort = col.type === 'number';
|
|
70
|
-
colNode.innerHTML =
|
|
71
|
-
colNode.innerHTML + '<span class="sorter"></span>';
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return cols;
|
|
75
|
-
}
|
|
76
|
-
// attaches a data attribute to every tr element with an object
|
|
77
|
-
// of data values keyed by column name
|
|
78
|
-
function loadRowData(tableRow) {
|
|
79
|
-
var tableCols = tableRow.querySelectorAll('td'),
|
|
80
|
-
colNode,
|
|
81
|
-
col,
|
|
82
|
-
data = {},
|
|
83
|
-
i,
|
|
84
|
-
val;
|
|
85
|
-
for (i = 0; i < tableCols.length; i += 1) {
|
|
86
|
-
colNode = tableCols[i];
|
|
87
|
-
col = cols[i];
|
|
88
|
-
val = colNode.getAttribute('data-value');
|
|
89
|
-
if (col.type === 'number') {
|
|
90
|
-
val = Number(val);
|
|
91
|
-
}
|
|
92
|
-
data[col.key] = val;
|
|
93
|
-
}
|
|
94
|
-
return data;
|
|
95
|
-
}
|
|
96
|
-
// loads all row data
|
|
97
|
-
function loadData() {
|
|
98
|
-
var rows = getTableBody().querySelectorAll('tr'),
|
|
99
|
-
i;
|
|
100
|
-
|
|
101
|
-
for (i = 0; i < rows.length; i += 1) {
|
|
102
|
-
rows[i].data = loadRowData(rows[i]);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// sorts the table using the data for the ith column
|
|
106
|
-
function sortByIndex(index, desc) {
|
|
107
|
-
var key = cols[index].key,
|
|
108
|
-
sorter = function(a, b) {
|
|
109
|
-
a = a.data[key];
|
|
110
|
-
b = b.data[key];
|
|
111
|
-
return a < b ? -1 : a > b ? 1 : 0;
|
|
112
|
-
},
|
|
113
|
-
finalSorter = sorter,
|
|
114
|
-
tableBody = document.querySelector('.coverage-summary tbody'),
|
|
115
|
-
rowNodes = tableBody.querySelectorAll('tr'),
|
|
116
|
-
rows = [],
|
|
117
|
-
i;
|
|
118
|
-
|
|
119
|
-
if (desc) {
|
|
120
|
-
finalSorter = function(a, b) {
|
|
121
|
-
return -1 * sorter(a, b);
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
for (i = 0; i < rowNodes.length; i += 1) {
|
|
126
|
-
rows.push(rowNodes[i]);
|
|
127
|
-
tableBody.removeChild(rowNodes[i]);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
rows.sort(finalSorter);
|
|
131
|
-
|
|
132
|
-
for (i = 0; i < rows.length; i += 1) {
|
|
133
|
-
tableBody.appendChild(rows[i]);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
// removes sort indicators for current column being sorted
|
|
137
|
-
function removeSortIndicators() {
|
|
138
|
-
var col = getNthColumn(currentSort.index),
|
|
139
|
-
cls = col.className;
|
|
140
|
-
|
|
141
|
-
cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
|
|
142
|
-
col.className = cls;
|
|
143
|
-
}
|
|
144
|
-
// adds sort indicators for current column being sorted
|
|
145
|
-
function addSortIndicators() {
|
|
146
|
-
getNthColumn(currentSort.index).className += currentSort.desc
|
|
147
|
-
? ' sorted-desc'
|
|
148
|
-
: ' sorted';
|
|
149
|
-
}
|
|
150
|
-
// adds event listeners for all sorter widgets
|
|
151
|
-
function enableUI() {
|
|
152
|
-
var i,
|
|
153
|
-
el,
|
|
154
|
-
ithSorter = function ithSorter(i) {
|
|
155
|
-
var col = cols[i];
|
|
156
|
-
|
|
157
|
-
return function() {
|
|
158
|
-
var desc = col.defaultDescSort;
|
|
159
|
-
|
|
160
|
-
if (currentSort.index === i) {
|
|
161
|
-
desc = !currentSort.desc;
|
|
162
|
-
}
|
|
163
|
-
sortByIndex(i, desc);
|
|
164
|
-
removeSortIndicators();
|
|
165
|
-
currentSort.index = i;
|
|
166
|
-
currentSort.desc = desc;
|
|
167
|
-
addSortIndicators();
|
|
168
|
-
};
|
|
169
|
-
};
|
|
170
|
-
for (i = 0; i < cols.length; i += 1) {
|
|
171
|
-
if (cols[i].sortable) {
|
|
172
|
-
// add the click event handler on the th so users
|
|
173
|
-
// dont have to click on those tiny arrows
|
|
174
|
-
el = getNthColumn(i).querySelector('.sorter').parentElement;
|
|
175
|
-
if (el.addEventListener) {
|
|
176
|
-
el.addEventListener('click', ithSorter(i));
|
|
177
|
-
} else {
|
|
178
|
-
el.attachEvent('onclick', ithSorter(i));
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
// adds sorting functionality to the UI
|
|
184
|
-
return function() {
|
|
185
|
-
if (!getTable()) {
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
cols = loadColumns();
|
|
189
|
-
loadData();
|
|
190
|
-
addSearchBox();
|
|
191
|
-
addSortIndicators();
|
|
192
|
-
enableUI();
|
|
193
|
-
};
|
|
194
|
-
})();
|
|
195
|
-
|
|
196
|
-
window.addEventListener('load', addSorting);
|
package/coverage/lcov.info
DELETED
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
TN:
|
|
2
|
-
SF:src/dice.ts
|
|
3
|
-
FN:3,(anonymous_0)
|
|
4
|
-
FN:5,(anonymous_1)
|
|
5
|
-
FN:20,(anonymous_2)
|
|
6
|
-
FN:33,(anonymous_3)
|
|
7
|
-
FN:52,(anonymous_4)
|
|
8
|
-
FN:71,(anonymous_5)
|
|
9
|
-
FN:95,(anonymous_6)
|
|
10
|
-
FN:119,(anonymous_7)
|
|
11
|
-
FN:120,(anonymous_8)
|
|
12
|
-
FN:159,(anonymous_9)
|
|
13
|
-
FN:242,(anonymous_10)
|
|
14
|
-
FNF:11
|
|
15
|
-
FNH:11
|
|
16
|
-
FNDA:77,(anonymous_0)
|
|
17
|
-
FNDA:10,(anonymous_1)
|
|
18
|
-
FNDA:8,(anonymous_2)
|
|
19
|
-
FNDA:14,(anonymous_3)
|
|
20
|
-
FNDA:14,(anonymous_4)
|
|
21
|
-
FNDA:16,(anonymous_5)
|
|
22
|
-
FNDA:15,(anonymous_6)
|
|
23
|
-
FNDA:62,(anonymous_7)
|
|
24
|
-
FNDA:77,(anonymous_8)
|
|
25
|
-
FNDA:62,(anonymous_9)
|
|
26
|
-
FNDA:77,(anonymous_10)
|
|
27
|
-
DA:3,77
|
|
28
|
-
DA:5,1
|
|
29
|
-
DA:6,10
|
|
30
|
-
DA:8,1
|
|
31
|
-
DA:10,3
|
|
32
|
-
DA:12,2
|
|
33
|
-
DA:14,2
|
|
34
|
-
DA:16,2
|
|
35
|
-
DA:20,1
|
|
36
|
-
DA:21,8
|
|
37
|
-
DA:24,3
|
|
38
|
-
DA:27,3
|
|
39
|
-
DA:29,2
|
|
40
|
-
DA:33,1
|
|
41
|
-
DA:34,14
|
|
42
|
-
DA:37,3
|
|
43
|
-
DA:39,1
|
|
44
|
-
DA:42,4
|
|
45
|
-
DA:44,1
|
|
46
|
-
DA:46,4
|
|
47
|
-
DA:48,1
|
|
48
|
-
DA:52,1
|
|
49
|
-
DA:53,14
|
|
50
|
-
DA:55,2
|
|
51
|
-
DA:57,1
|
|
52
|
-
DA:61,4
|
|
53
|
-
DA:63,2
|
|
54
|
-
DA:65,4
|
|
55
|
-
DA:67,1
|
|
56
|
-
DA:71,1
|
|
57
|
-
DA:72,16
|
|
58
|
-
DA:75,2
|
|
59
|
-
DA:78,2
|
|
60
|
-
DA:80,1
|
|
61
|
-
DA:84,4
|
|
62
|
-
DA:87,2
|
|
63
|
-
DA:89,4
|
|
64
|
-
DA:91,1
|
|
65
|
-
DA:95,1
|
|
66
|
-
DA:96,15
|
|
67
|
-
DA:99,2
|
|
68
|
-
DA:102,2
|
|
69
|
-
DA:105,3
|
|
70
|
-
DA:108,2
|
|
71
|
-
DA:111,2
|
|
72
|
-
DA:113,3
|
|
73
|
-
DA:115,1
|
|
74
|
-
DA:119,1
|
|
75
|
-
DA:120,77
|
|
76
|
-
DA:137,62
|
|
77
|
-
DA:138,62
|
|
78
|
-
DA:140,62
|
|
79
|
-
DA:141,34
|
|
80
|
-
DA:142,34
|
|
81
|
-
DA:143,28
|
|
82
|
-
DA:144,15
|
|
83
|
-
DA:146,13
|
|
84
|
-
DA:149,62
|
|
85
|
-
DA:159,1
|
|
86
|
-
DA:161,62
|
|
87
|
-
DA:162,62
|
|
88
|
-
DA:163,62
|
|
89
|
-
DA:164,62
|
|
90
|
-
DA:165,62
|
|
91
|
-
DA:166,62
|
|
92
|
-
DA:169,62
|
|
93
|
-
DA:178,62
|
|
94
|
-
DA:181,62
|
|
95
|
-
DA:182,10
|
|
96
|
-
DA:183,10
|
|
97
|
-
DA:191,62
|
|
98
|
-
DA:192,14
|
|
99
|
-
DA:193,14
|
|
100
|
-
DA:201,62
|
|
101
|
-
DA:202,16
|
|
102
|
-
DA:203,16
|
|
103
|
-
DA:211,62
|
|
104
|
-
DA:212,8
|
|
105
|
-
DA:213,8
|
|
106
|
-
DA:221,62
|
|
107
|
-
DA:222,14
|
|
108
|
-
DA:223,14
|
|
109
|
-
DA:231,62
|
|
110
|
-
DA:232,15
|
|
111
|
-
DA:233,15
|
|
112
|
-
DA:240,62
|
|
113
|
-
DA:242,77
|
|
114
|
-
LF:87
|
|
115
|
-
LH:87
|
|
116
|
-
BRDA:6,0,0,1
|
|
117
|
-
BRDA:6,0,1,3
|
|
118
|
-
BRDA:6,0,2,2
|
|
119
|
-
BRDA:6,0,3,2
|
|
120
|
-
BRDA:6,0,4,2
|
|
121
|
-
BRDA:21,1,0,1
|
|
122
|
-
BRDA:21,1,1,3
|
|
123
|
-
BRDA:21,1,2,1
|
|
124
|
-
BRDA:21,1,3,3
|
|
125
|
-
BRDA:21,1,4,2
|
|
126
|
-
BRDA:34,2,0,2
|
|
127
|
-
BRDA:34,2,1,3
|
|
128
|
-
BRDA:34,2,2,1
|
|
129
|
-
BRDA:34,2,3,3
|
|
130
|
-
BRDA:34,2,4,4
|
|
131
|
-
BRDA:34,2,5,1
|
|
132
|
-
BRDA:34,2,6,4
|
|
133
|
-
BRDA:34,2,7,1
|
|
134
|
-
BRDA:53,3,0,2
|
|
135
|
-
BRDA:53,3,1,1
|
|
136
|
-
BRDA:53,3,2,1
|
|
137
|
-
BRDA:53,3,3,3
|
|
138
|
-
BRDA:53,3,4,4
|
|
139
|
-
BRDA:53,3,5,2
|
|
140
|
-
BRDA:53,3,6,4
|
|
141
|
-
BRDA:53,3,7,1
|
|
142
|
-
BRDA:72,4,0,1
|
|
143
|
-
BRDA:72,4,1,2
|
|
144
|
-
BRDA:72,4,2,1
|
|
145
|
-
BRDA:72,4,3,2
|
|
146
|
-
BRDA:72,4,4,1
|
|
147
|
-
BRDA:72,4,5,2
|
|
148
|
-
BRDA:72,4,6,3
|
|
149
|
-
BRDA:72,4,7,4
|
|
150
|
-
BRDA:72,4,8,1
|
|
151
|
-
BRDA:72,4,9,2
|
|
152
|
-
BRDA:72,4,10,4
|
|
153
|
-
BRDA:72,4,11,1
|
|
154
|
-
BRDA:96,5,0,1
|
|
155
|
-
BRDA:96,5,1,2
|
|
156
|
-
BRDA:96,5,2,1
|
|
157
|
-
BRDA:96,5,3,2
|
|
158
|
-
BRDA:96,5,4,1
|
|
159
|
-
BRDA:96,5,5,3
|
|
160
|
-
BRDA:96,5,6,1
|
|
161
|
-
BRDA:96,5,7,2
|
|
162
|
-
BRDA:96,5,8,1
|
|
163
|
-
BRDA:96,5,9,2
|
|
164
|
-
BRDA:96,5,10,3
|
|
165
|
-
BRDA:96,5,11,1
|
|
166
|
-
BRDA:140,6,0,34
|
|
167
|
-
BRDA:140,6,1,28
|
|
168
|
-
BRDA:143,7,0,15
|
|
169
|
-
BRDA:143,7,1,13
|
|
170
|
-
BRDA:161,8,0,11
|
|
171
|
-
BRDA:161,8,1,51
|
|
172
|
-
BRDA:161,9,0,62
|
|
173
|
-
BRDA:161,9,1,62
|
|
174
|
-
BRDA:162,10,0,14
|
|
175
|
-
BRDA:162,10,1,48
|
|
176
|
-
BRDA:162,11,0,62
|
|
177
|
-
BRDA:162,11,1,62
|
|
178
|
-
BRDA:163,12,0,17
|
|
179
|
-
BRDA:163,12,1,45
|
|
180
|
-
BRDA:163,13,0,62
|
|
181
|
-
BRDA:163,13,1,62
|
|
182
|
-
BRDA:164,14,0,9
|
|
183
|
-
BRDA:164,14,1,53
|
|
184
|
-
BRDA:164,15,0,62
|
|
185
|
-
BRDA:164,15,1,62
|
|
186
|
-
BRDA:165,16,0,14
|
|
187
|
-
BRDA:165,16,1,48
|
|
188
|
-
BRDA:165,17,0,62
|
|
189
|
-
BRDA:165,17,1,62
|
|
190
|
-
BRDA:166,18,0,16
|
|
191
|
-
BRDA:166,18,1,46
|
|
192
|
-
BRDA:166,19,0,62
|
|
193
|
-
BRDA:166,19,1,62
|
|
194
|
-
BRF:78
|
|
195
|
-
BRH:78
|
|
196
|
-
end_of_record
|
|
197
|
-
TN:
|
|
198
|
-
SF:src/index.ts
|
|
199
|
-
FN:1,(anonymous_0)
|
|
200
|
-
FN:4,(anonymous_1)
|
|
201
|
-
FN:5,(anonymous_2)
|
|
202
|
-
FN:6,(anonymous_3)
|
|
203
|
-
FN:7,(anonymous_4)
|
|
204
|
-
FNF:5
|
|
205
|
-
FNH:0
|
|
206
|
-
FNDA:0,(anonymous_0)
|
|
207
|
-
FNDA:0,(anonymous_1)
|
|
208
|
-
FNDA:0,(anonymous_2)
|
|
209
|
-
FNDA:0,(anonymous_3)
|
|
210
|
-
FNDA:0,(anonymous_4)
|
|
211
|
-
DA:1,0
|
|
212
|
-
DA:3,0
|
|
213
|
-
DA:4,0
|
|
214
|
-
DA:5,0
|
|
215
|
-
DA:6,0
|
|
216
|
-
DA:7,0
|
|
217
|
-
LF:6
|
|
218
|
-
LH:0
|
|
219
|
-
BRF:0
|
|
220
|
-
BRH:0
|
|
221
|
-
end_of_record
|
|
222
|
-
TN:
|
|
223
|
-
SF:src/pools.ts
|
|
224
|
-
FN:9,(anonymous_0)
|
|
225
|
-
FN:21,(anonymous_1)
|
|
226
|
-
FN:35,(anonymous_2)
|
|
227
|
-
FN:53,(anonymous_3)
|
|
228
|
-
FNF:4
|
|
229
|
-
FNH:4
|
|
230
|
-
FNDA:2,(anonymous_0)
|
|
231
|
-
FNDA:2,(anonymous_1)
|
|
232
|
-
FNDA:2,(anonymous_2)
|
|
233
|
-
FNDA:2,(anonymous_3)
|
|
234
|
-
DA:9,2
|
|
235
|
-
DA:21,2
|
|
236
|
-
DA:35,1
|
|
237
|
-
DA:40,2
|
|
238
|
-
DA:53,2
|
|
239
|
-
LF:5
|
|
240
|
-
LH:5
|
|
241
|
-
BRDA:21,0,0,1
|
|
242
|
-
BRDA:39,1,0,1
|
|
243
|
-
BRDA:53,2,0,1
|
|
244
|
-
BRF:3
|
|
245
|
-
BRH:3
|
|
246
|
-
end_of_record
|
package/jest.config.js
DELETED
package/src/dice.js
DELETED
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.roll = void 0;
|
|
4
|
-
var rollDie = function (sides) { return Math.floor(Math.random() * sides) + 1; };
|
|
5
|
-
var boostDieResult = function (roll) {
|
|
6
|
-
switch (roll) {
|
|
7
|
-
case 3:
|
|
8
|
-
return { successes: 1, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
9
|
-
case 4:
|
|
10
|
-
return { successes: 1, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
|
|
11
|
-
case 5:
|
|
12
|
-
return { successes: 0, failures: 0, advantages: 2, threats: 0, triumphs: 0, despair: 0 };
|
|
13
|
-
case 6:
|
|
14
|
-
return { successes: 0, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
|
|
15
|
-
default:
|
|
16
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
var setBackDieResult = function (roll) {
|
|
20
|
-
switch (roll) {
|
|
21
|
-
case 3:
|
|
22
|
-
case 4:
|
|
23
|
-
return { successes: 0, failures: 1, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
24
|
-
case 5:
|
|
25
|
-
case 6:
|
|
26
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 1, triumphs: 0, despair: 0 };
|
|
27
|
-
default:
|
|
28
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
var abilityDieResult = function (roll) {
|
|
32
|
-
switch (roll) {
|
|
33
|
-
case 2:
|
|
34
|
-
case 3:
|
|
35
|
-
return { successes: 1, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
36
|
-
case 4:
|
|
37
|
-
return { successes: 2, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
38
|
-
case 5:
|
|
39
|
-
case 6:
|
|
40
|
-
return { successes: 0, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
|
|
41
|
-
case 7:
|
|
42
|
-
return { successes: 1, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
|
|
43
|
-
case 8:
|
|
44
|
-
return { successes: 0, failures: 0, advantages: 2, threats: 0, triumphs: 0, despair: 0 };
|
|
45
|
-
default:
|
|
46
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
var difficultyDieResult = function (roll) {
|
|
50
|
-
switch (roll) {
|
|
51
|
-
case 2:
|
|
52
|
-
return { successes: 0, failures: 1, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
53
|
-
case 3:
|
|
54
|
-
return { successes: 0, failures: 2, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
55
|
-
case 4:
|
|
56
|
-
case 5:
|
|
57
|
-
case 6:
|
|
58
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 1, triumphs: 0, despair: 0 };
|
|
59
|
-
case 7:
|
|
60
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 2, triumphs: 0, despair: 0 };
|
|
61
|
-
case 8:
|
|
62
|
-
return { successes: 0, failures: 1, advantages: 0, threats: 1, triumphs: 0, despair: 0 };
|
|
63
|
-
default:
|
|
64
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
var proficiencyDieResult = function (roll) {
|
|
68
|
-
switch (roll) {
|
|
69
|
-
case 2:
|
|
70
|
-
case 3:
|
|
71
|
-
return { successes: 1, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
72
|
-
case 4:
|
|
73
|
-
case 5:
|
|
74
|
-
return { successes: 2, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
75
|
-
case 6:
|
|
76
|
-
return { successes: 0, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
|
|
77
|
-
case 7:
|
|
78
|
-
case 8:
|
|
79
|
-
case 9:
|
|
80
|
-
return { successes: 1, failures: 0, advantages: 1, threats: 0, triumphs: 0, despair: 0 };
|
|
81
|
-
case 10:
|
|
82
|
-
case 11:
|
|
83
|
-
return { successes: 0, failures: 0, advantages: 2, threats: 0, triumphs: 0, despair: 0 };
|
|
84
|
-
case 12:
|
|
85
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 1, despair: 0 };
|
|
86
|
-
default:
|
|
87
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
var challengeDieResult = function (roll) {
|
|
91
|
-
switch (roll) {
|
|
92
|
-
case 2:
|
|
93
|
-
case 3:
|
|
94
|
-
return { successes: 0, failures: 1, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
95
|
-
case 4:
|
|
96
|
-
case 5:
|
|
97
|
-
return { successes: 0, failures: 2, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
98
|
-
case 6:
|
|
99
|
-
case 7:
|
|
100
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 1, triumphs: 0, despair: 0 };
|
|
101
|
-
case 8:
|
|
102
|
-
case 9:
|
|
103
|
-
return { successes: 0, failures: 1, advantages: 0, threats: 1, triumphs: 0, despair: 0 };
|
|
104
|
-
case 10:
|
|
105
|
-
case 11:
|
|
106
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 2, triumphs: 0, despair: 0 };
|
|
107
|
-
case 12:
|
|
108
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 1 };
|
|
109
|
-
default:
|
|
110
|
-
return { successes: 0, failures: 0, advantages: 0, threats: 0, triumphs: 0, despair: 0 };
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
var sumResults = function (results) {
|
|
114
|
-
var sums = results.reduce(function (acc, curr) { return ({
|
|
115
|
-
successes: acc.successes + curr.successes,
|
|
116
|
-
failures: acc.failures + curr.failures,
|
|
117
|
-
advantages: acc.advantages + curr.advantages,
|
|
118
|
-
threats: acc.threats + curr.threats,
|
|
119
|
-
triumphs: acc.triumphs + curr.triumphs,
|
|
120
|
-
despair: acc.despair + curr.despair
|
|
121
|
-
}); }, {
|
|
122
|
-
successes: 0,
|
|
123
|
-
failures: 0,
|
|
124
|
-
advantages: 0,
|
|
125
|
-
threats: 0,
|
|
126
|
-
triumphs: 0,
|
|
127
|
-
despair: 0
|
|
128
|
-
});
|
|
129
|
-
// Calculate net successes/failures
|
|
130
|
-
var netSuccesses = 0;
|
|
131
|
-
var netFailures = 0;
|
|
132
|
-
if (sums.successes === sums.failures) {
|
|
133
|
-
netSuccesses = 0;
|
|
134
|
-
netFailures = 0;
|
|
135
|
-
}
|
|
136
|
-
else if (sums.successes > sums.failures) {
|
|
137
|
-
netSuccesses = sums.successes - sums.failures;
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
netFailures = sums.failures - sums.successes;
|
|
141
|
-
}
|
|
142
|
-
return {
|
|
143
|
-
successes: netSuccesses,
|
|
144
|
-
failures: netFailures,
|
|
145
|
-
advantages: sums.advantages,
|
|
146
|
-
threats: sums.threats,
|
|
147
|
-
triumphs: sums.triumphs,
|
|
148
|
-
despair: sums.despair
|
|
149
|
-
};
|
|
150
|
-
};
|
|
151
|
-
var roll = function (pool) {
|
|
152
|
-
var _a, _b, _c, _d, _e, _f;
|
|
153
|
-
// Initialize all dice counts to 0 if undefined
|
|
154
|
-
var boostCount = (_a = pool.boostDice) !== null && _a !== void 0 ? _a : 0;
|
|
155
|
-
var abilityCount = (_b = pool.abilityDice) !== null && _b !== void 0 ? _b : 0;
|
|
156
|
-
var proficiencyCount = (_c = pool.proficiencyDice) !== null && _c !== void 0 ? _c : 0;
|
|
157
|
-
var setBackCount = (_d = pool.setBackDice) !== null && _d !== void 0 ? _d : 0;
|
|
158
|
-
var difficultyCount = (_e = pool.difficultyDice) !== null && _e !== void 0 ? _e : 0;
|
|
159
|
-
var challengeCount = (_f = pool.challengeDice) !== null && _f !== void 0 ? _f : 0;
|
|
160
|
-
// Ensure all dice counts are non-negative
|
|
161
|
-
var sanitizedPool = {
|
|
162
|
-
boostDice: Math.max(0, boostCount),
|
|
163
|
-
abilityDice: Math.max(0, abilityCount),
|
|
164
|
-
proficiencyDice: Math.max(0, proficiencyCount),
|
|
165
|
-
setBackDice: Math.max(0, setBackCount),
|
|
166
|
-
difficultyDice: Math.max(0, difficultyCount),
|
|
167
|
-
challengeDice: Math.max(0, challengeCount)
|
|
168
|
-
};
|
|
169
|
-
var detailedResults = [];
|
|
170
|
-
// Roll boost dice
|
|
171
|
-
for (var i = 0; i < sanitizedPool.boostDice; i++) {
|
|
172
|
-
var roll_1 = rollDie(6);
|
|
173
|
-
detailedResults.push({
|
|
174
|
-
type: 'boost',
|
|
175
|
-
roll: roll_1,
|
|
176
|
-
result: boostDieResult(roll_1)
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
// Roll ability dice
|
|
180
|
-
for (var i = 0; i < sanitizedPool.abilityDice; i++) {
|
|
181
|
-
var roll_2 = rollDie(8);
|
|
182
|
-
detailedResults.push({
|
|
183
|
-
type: 'ability',
|
|
184
|
-
roll: roll_2,
|
|
185
|
-
result: abilityDieResult(roll_2)
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
// Roll proficiency dice
|
|
189
|
-
for (var i = 0; i < sanitizedPool.proficiencyDice; i++) {
|
|
190
|
-
var roll_3 = rollDie(12);
|
|
191
|
-
detailedResults.push({
|
|
192
|
-
type: 'proficiency',
|
|
193
|
-
roll: roll_3,
|
|
194
|
-
result: proficiencyDieResult(roll_3)
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
// Roll setback dice
|
|
198
|
-
for (var i = 0; i < sanitizedPool.setBackDice; i++) {
|
|
199
|
-
var roll_4 = rollDie(6);
|
|
200
|
-
detailedResults.push({
|
|
201
|
-
type: 'setback',
|
|
202
|
-
roll: roll_4,
|
|
203
|
-
result: setBackDieResult(roll_4)
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
// Roll difficulty dice
|
|
207
|
-
for (var i = 0; i < sanitizedPool.difficultyDice; i++) {
|
|
208
|
-
var roll_5 = rollDie(8);
|
|
209
|
-
detailedResults.push({
|
|
210
|
-
type: 'difficulty',
|
|
211
|
-
roll: roll_5,
|
|
212
|
-
result: difficultyDieResult(roll_5)
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
// Roll challenge dice
|
|
216
|
-
for (var i = 0; i < sanitizedPool.challengeDice; i++) {
|
|
217
|
-
var roll_6 = rollDie(12);
|
|
218
|
-
detailedResults.push({
|
|
219
|
-
type: 'challenge',
|
|
220
|
-
roll: roll_6,
|
|
221
|
-
result: challengeDieResult(roll_6)
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
return {
|
|
225
|
-
results: detailedResults,
|
|
226
|
-
summary: sumResults(detailedResults.map(function (r) { return r.result; }))
|
|
227
|
-
};
|
|
228
|
-
};
|
|
229
|
-
exports.roll = roll;
|