enefel 1.2.0 → 1.2.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/.yarnrc.yml +5 -0
- package/dist/avatars.js +587 -0
- package/dist/avatarsDefault.js +136 -0
- package/dist/badge.js +60 -0
- package/dist/block.js +104 -0
- package/dist/calcul.js +11 -0
- package/dist/canUseSkills.js +46 -0
- package/dist/card.js +20 -0
- package/dist/career.js +1935 -0
- package/dist/color.js +112 -0
- package/dist/date.js +62 -0
- package/dist/dice.js +13 -0
- package/dist/elo.js +30 -0
- package/dist/game.js +64 -0
- package/dist/iconMap.js +261 -0
- package/dist/improvement.js +103 -0
- package/dist/inducement.js +59 -0
- package/dist/item.js +45 -0
- package/dist/jest.config.js +11 -0
- package/dist/league.js +250 -0
- package/dist/meteo.js +234 -0
- package/dist/moral.js +38 -0
- package/dist/move.js +70 -0
- package/dist/package-lock.json +6658 -0
- package/dist/package.json +43 -0
- package/dist/pitch.js +113 -0
- package/dist/player.js +244 -0
- package/dist/position.js +23 -0
- package/dist/race.js +355 -0
- package/dist/random.js +35 -0
- package/dist/right.js +62 -0
- package/dist/skill.js +421 -0
- package/dist/skillCoach.js +51 -0
- package/dist/stadium.js +320 -0
- package/dist/state.js +91 -0
- package/dist/status.js +52 -0
- package/dist/store.js +104 -0
- package/dist/time.js +80 -0
- package/dist/tsconfig.json +25 -0
- package/dist/types/models.js +2 -0
- package/dist/validator.js +96 -0
- package/dist/version.js +4 -0
- package/package.json +2 -2
- package/.npmrc +0 -1
- package/package-lock.json +0 -6658
package/dist/stadium.js
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TILES_STADIUM = exports.TEAM_SIZE_SMALL = exports.TEAM_SIZE_MEDIUM = exports.TEAM_SIZE_LARGE = exports.STADIUM_SIZE = exports.STADIUM_REROLL_COACH_SUCCESS = exports.STADIUM = exports.removeTile = exports.removeLine = exports.remove = exports.priceSize = exports.minWidth = exports.minHeight = exports.MIN_SCRIMMAGE = exports.maxWidth = exports.maxHeight = exports.MAX_STORE = exports.MAX_LATERAL = exports.insertTile = exports.insertLine = exports.insert = exports.INITIAL_REROLL = exports.getTeamStadium = exports.getStadiumTypeProperty = exports.getStadiumStateProperty = exports.getStadiumSizeFromTeams = exports.getStadiumSizeFromGame = exports.getStadiumRerollCoach = exports.getStadiumReroll = exports.getStadiumFan = exports.getStadiumCapacityByGame = exports.getStadiumCapacity = exports.getStadium = exports.getRerollCoachCost = exports.COACH_REROLL_COST = exports.addCenterZone = void 0;
|
|
4
|
+
exports.splitList = splitList;
|
|
5
|
+
const random_1 = require("./random");
|
|
6
|
+
const INITIAL_REROLL = 2;
|
|
7
|
+
exports.INITIAL_REROLL = INITIAL_REROLL;
|
|
8
|
+
const MIN_SCRIMMAGE = 3; // TODO: in league param
|
|
9
|
+
exports.MIN_SCRIMMAGE = MIN_SCRIMMAGE;
|
|
10
|
+
const MAX_LATERAL = 2;
|
|
11
|
+
exports.MAX_LATERAL = MAX_LATERAL;
|
|
12
|
+
var STADIUM_SIZE;
|
|
13
|
+
(function (STADIUM_SIZE) {
|
|
14
|
+
STADIUM_SIZE["SMALL"] = "s";
|
|
15
|
+
STADIUM_SIZE["MEDIUM"] = "m";
|
|
16
|
+
STADIUM_SIZE["LARGE"] = "l";
|
|
17
|
+
})(STADIUM_SIZE || (exports.STADIUM_SIZE = STADIUM_SIZE = {}));
|
|
18
|
+
const TEAM_SIZE_SMALL = 5;
|
|
19
|
+
exports.TEAM_SIZE_SMALL = TEAM_SIZE_SMALL;
|
|
20
|
+
const TEAM_SIZE_MEDIUM = 8;
|
|
21
|
+
exports.TEAM_SIZE_MEDIUM = TEAM_SIZE_MEDIUM;
|
|
22
|
+
const TEAM_SIZE_LARGE = 11;
|
|
23
|
+
exports.TEAM_SIZE_LARGE = TEAM_SIZE_LARGE;
|
|
24
|
+
const STADIUM = {
|
|
25
|
+
[TEAM_SIZE_SMALL]: {
|
|
26
|
+
zone: `bddddddaaaaaahhhhhhfbddddddaaaaaahhhhhhfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbeeeeeeaaaaaaiiiiiifbeeeeeeaaaaaaiiiiiif`,
|
|
27
|
+
type: `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`,
|
|
28
|
+
state: `0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`,
|
|
29
|
+
width: 20,
|
|
30
|
+
height: 11,
|
|
31
|
+
size: STADIUM_SIZE.SMALL,
|
|
32
|
+
},
|
|
33
|
+
[TEAM_SIZE_MEDIUM]: {
|
|
34
|
+
zone: `bddddddddaaaahhhhhhhhfbddddddddaaaahhhhhhhhfbddddddddaaaahhhhhhhhfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbeeeeeeeeaaaaiiiiiiiifbeeeeeeeeaaaaiiiiiiiifbeeeeeeeeaaaaiiiiiiiif`,
|
|
35
|
+
type: `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`,
|
|
36
|
+
state: `0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`,
|
|
37
|
+
width: 22,
|
|
38
|
+
height: 13,
|
|
39
|
+
size: STADIUM_SIZE.MEDIUM,
|
|
40
|
+
},
|
|
41
|
+
[TEAM_SIZE_LARGE]: {
|
|
42
|
+
zone: `bddddddddddddhhhhhhhhhhhhfbddddddddddddhhhhhhhhhhhhfbddddddddddddhhhhhhhhhhhhfbddddddddddddhhhhhhhhhhhhfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbeeeeeeeeeeeeiiiiiiiiiiiifbeeeeeeeeeeeeiiiiiiiiiiiifbeeeeeeeeeeeeiiiiiiiiiiiifbeeeeeeeeeeeeiiiiiiiiiiiif`,
|
|
43
|
+
type: `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`,
|
|
44
|
+
state: `000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`,
|
|
45
|
+
width: 26,
|
|
46
|
+
height: 15,
|
|
47
|
+
size: STADIUM_SIZE.LARGE,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
exports.STADIUM = STADIUM;
|
|
51
|
+
const getStadiumSizeFromGame = (game) => {
|
|
52
|
+
for (const info of Object.values(STADIUM)) {
|
|
53
|
+
const { width, height, size } = info;
|
|
54
|
+
if (game.stadium_width === width && game.stadium_height === height) {
|
|
55
|
+
return size;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
};
|
|
60
|
+
exports.getStadiumSizeFromGame = getStadiumSizeFromGame;
|
|
61
|
+
const getStadium = (size) => {
|
|
62
|
+
switch (size) {
|
|
63
|
+
case STADIUM_SIZE.MEDIUM:
|
|
64
|
+
return STADIUM[TEAM_SIZE_MEDIUM];
|
|
65
|
+
case STADIUM_SIZE.LARGE:
|
|
66
|
+
return STADIUM[TEAM_SIZE_LARGE];
|
|
67
|
+
case STADIUM_SIZE.SMALL:
|
|
68
|
+
return STADIUM[TEAM_SIZE_SMALL];
|
|
69
|
+
default:
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
exports.getStadium = getStadium;
|
|
74
|
+
const getStadiumTypeProperty = (size) => {
|
|
75
|
+
switch (size) {
|
|
76
|
+
case STADIUM_SIZE.MEDIUM:
|
|
77
|
+
return "stadium_type_m";
|
|
78
|
+
case STADIUM_SIZE.LARGE:
|
|
79
|
+
return "stadium_type_l";
|
|
80
|
+
default:
|
|
81
|
+
return "stadium_type_s";
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
exports.getStadiumTypeProperty = getStadiumTypeProperty;
|
|
85
|
+
const getStadiumStateProperty = (size) => {
|
|
86
|
+
switch (size) {
|
|
87
|
+
case STADIUM_SIZE.MEDIUM:
|
|
88
|
+
return "stadium_state_m";
|
|
89
|
+
case STADIUM_SIZE.LARGE:
|
|
90
|
+
return "stadium_state_l";
|
|
91
|
+
default:
|
|
92
|
+
return "stadium_state_s";
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
exports.getStadiumStateProperty = getStadiumStateProperty;
|
|
96
|
+
const getStadiumSizeFromTeams = (team1, team2) => {
|
|
97
|
+
if (team1.players.length < TEAM_SIZE_MEDIUM ||
|
|
98
|
+
team2.players.length < TEAM_SIZE_MEDIUM) {
|
|
99
|
+
return STADIUM_SIZE.SMALL;
|
|
100
|
+
}
|
|
101
|
+
if (team1.players.length < TEAM_SIZE_LARGE ||
|
|
102
|
+
team2.players.length < TEAM_SIZE_LARGE) {
|
|
103
|
+
return STADIUM_SIZE.MEDIUM;
|
|
104
|
+
}
|
|
105
|
+
return STADIUM_SIZE.LARGE;
|
|
106
|
+
};
|
|
107
|
+
exports.getStadiumSizeFromTeams = getStadiumSizeFromTeams;
|
|
108
|
+
const getTeamStadium = (team, size) => {
|
|
109
|
+
const result = {
|
|
110
|
+
zone: getStadium(size)?.zone,
|
|
111
|
+
height: getStadium(size)?.height,
|
|
112
|
+
width: getStadium(size)?.width,
|
|
113
|
+
};
|
|
114
|
+
switch (size) {
|
|
115
|
+
case STADIUM_SIZE.MEDIUM:
|
|
116
|
+
return {
|
|
117
|
+
...result,
|
|
118
|
+
type: team.stadium_type_m,
|
|
119
|
+
state: team.stadium_state_m,
|
|
120
|
+
};
|
|
121
|
+
case STADIUM_SIZE.LARGE:
|
|
122
|
+
return {
|
|
123
|
+
...result,
|
|
124
|
+
type: team.stadium_type_l,
|
|
125
|
+
state: team.stadium_state_l,
|
|
126
|
+
};
|
|
127
|
+
default:
|
|
128
|
+
return {
|
|
129
|
+
...result,
|
|
130
|
+
type: team.stadium_type_s,
|
|
131
|
+
state: team.stadium_state_s,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
exports.getTeamStadium = getTeamStadium;
|
|
136
|
+
const TILES_STADIUM = {
|
|
137
|
+
a: {
|
|
138
|
+
y: 5,
|
|
139
|
+
price: 0,
|
|
140
|
+
wear: 80,
|
|
141
|
+
icons: [0, 2, 4, 6, 8, 9],
|
|
142
|
+
},
|
|
143
|
+
b: {
|
|
144
|
+
y: 4,
|
|
145
|
+
price: 0,
|
|
146
|
+
wear: 80,
|
|
147
|
+
icons: [0, 2, 4, 6, 8, 9],
|
|
148
|
+
},
|
|
149
|
+
c: {
|
|
150
|
+
y: 3,
|
|
151
|
+
price: 0,
|
|
152
|
+
wear: 80,
|
|
153
|
+
icons: [0, 2, 4, 6, 8, 9],
|
|
154
|
+
},
|
|
155
|
+
d: {
|
|
156
|
+
y: 1,
|
|
157
|
+
price: 0,
|
|
158
|
+
wear: 80,
|
|
159
|
+
icons: [0, 2, 4, 6, 8],
|
|
160
|
+
},
|
|
161
|
+
e: {
|
|
162
|
+
y: 2,
|
|
163
|
+
price: 0,
|
|
164
|
+
wear: 80,
|
|
165
|
+
icons: [0, 2, 4, 6, 8],
|
|
166
|
+
},
|
|
167
|
+
f: {
|
|
168
|
+
y: 0,
|
|
169
|
+
price: 0,
|
|
170
|
+
wear: 80,
|
|
171
|
+
icons: [0, 2, 4, 6, 8],
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
exports.TILES_STADIUM = TILES_STADIUM;
|
|
175
|
+
const minWidth = 20;
|
|
176
|
+
exports.minWidth = minWidth;
|
|
177
|
+
const maxWidth = 26;
|
|
178
|
+
exports.maxWidth = maxWidth;
|
|
179
|
+
const minHeight = 11;
|
|
180
|
+
exports.minHeight = minHeight;
|
|
181
|
+
const maxHeight = 15;
|
|
182
|
+
exports.maxHeight = maxHeight;
|
|
183
|
+
const priceSize = 20;
|
|
184
|
+
exports.priceSize = priceSize;
|
|
185
|
+
const COACH_REROLL_COST = 50;
|
|
186
|
+
exports.COACH_REROLL_COST = COACH_REROLL_COST;
|
|
187
|
+
const MAX_STORE = 5;
|
|
188
|
+
exports.MAX_STORE = MAX_STORE;
|
|
189
|
+
const getRerollCoachCost = (team) => {
|
|
190
|
+
// 50, 100, 150, 200, 250
|
|
191
|
+
return COACH_REROLL_COST * (team.rerollCoach + 1);
|
|
192
|
+
};
|
|
193
|
+
exports.getRerollCoachCost = getRerollCoachCost;
|
|
194
|
+
const getStadiumCapacityByGame = (game) => {
|
|
195
|
+
return getStadiumCapacity(game.stadium_width, game.stadium_height);
|
|
196
|
+
};
|
|
197
|
+
exports.getStadiumCapacityByGame = getStadiumCapacityByGame;
|
|
198
|
+
const getStadiumCapacity = (_w, h) => {
|
|
199
|
+
// Height: 11 13 15
|
|
200
|
+
let nb = 5;
|
|
201
|
+
if (h === 13) {
|
|
202
|
+
nb += 3;
|
|
203
|
+
}
|
|
204
|
+
else if (h === 15) {
|
|
205
|
+
nb += 6;
|
|
206
|
+
}
|
|
207
|
+
return nb > 11 ? 11 : nb;
|
|
208
|
+
};
|
|
209
|
+
exports.getStadiumCapacity = getStadiumCapacity;
|
|
210
|
+
const getStadiumFan = (_w, _h) => {
|
|
211
|
+
// No more limit?
|
|
212
|
+
let nb = 27;
|
|
213
|
+
return nb;
|
|
214
|
+
};
|
|
215
|
+
exports.getStadiumFan = getStadiumFan;
|
|
216
|
+
const getStadiumReroll = (_w, h) => {
|
|
217
|
+
let nb = INITIAL_REROLL;
|
|
218
|
+
if (h === 13) {
|
|
219
|
+
nb += 2;
|
|
220
|
+
}
|
|
221
|
+
else if (h === 15) {
|
|
222
|
+
nb += 5;
|
|
223
|
+
}
|
|
224
|
+
return nb;
|
|
225
|
+
};
|
|
226
|
+
exports.getStadiumReroll = getStadiumReroll;
|
|
227
|
+
const STADIUM_REROLL_COACH_SUCCESS = 5;
|
|
228
|
+
exports.STADIUM_REROLL_COACH_SUCCESS = STADIUM_REROLL_COACH_SUCCESS;
|
|
229
|
+
const getStadiumRerollCoach = (team) => {
|
|
230
|
+
let nb = 0;
|
|
231
|
+
let results = [];
|
|
232
|
+
for (let i = 0; i < team.rerollCoach; i++) {
|
|
233
|
+
const result = (0, random_1.d6)();
|
|
234
|
+
if (result >= STADIUM_REROLL_COACH_SUCCESS) {
|
|
235
|
+
nb++;
|
|
236
|
+
}
|
|
237
|
+
results.push(result);
|
|
238
|
+
}
|
|
239
|
+
return { nb, results };
|
|
240
|
+
};
|
|
241
|
+
exports.getStadiumRerollCoach = getStadiumRerollCoach;
|
|
242
|
+
const insert = (str, index, value) => {
|
|
243
|
+
return str.substr(0, index) + value + str.substr(index);
|
|
244
|
+
};
|
|
245
|
+
exports.insert = insert;
|
|
246
|
+
const remove = (str, index, nb = 1) => {
|
|
247
|
+
return str.slice(0, index) + str.slice(index + nb);
|
|
248
|
+
};
|
|
249
|
+
exports.remove = remove;
|
|
250
|
+
const insertTile = (list, width, char) => {
|
|
251
|
+
const lists = splitList(width, list) || [];
|
|
252
|
+
lists.forEach((line, index) => {
|
|
253
|
+
const noScrimage = line[line.length / 2 - 1] === "a";
|
|
254
|
+
line = insert(line, 1, char ? char : line.charAt(1));
|
|
255
|
+
if (!char && noScrimage) {
|
|
256
|
+
line = insert(line, 1, char ? char : line.charAt(1));
|
|
257
|
+
}
|
|
258
|
+
line = insert(line, line.length - 1, char ? char : line.charAt(line.length - 2));
|
|
259
|
+
if (!char && noScrimage) {
|
|
260
|
+
line = insert(line, line.length - 1, char ? char : line.charAt(line.length - 2));
|
|
261
|
+
}
|
|
262
|
+
if (!char && noScrimage) {
|
|
263
|
+
// Remove the "a"
|
|
264
|
+
const charToRemovePosition = line.length / 2 - 1;
|
|
265
|
+
line = remove(line, charToRemovePosition, 2);
|
|
266
|
+
}
|
|
267
|
+
lists[index] = line;
|
|
268
|
+
});
|
|
269
|
+
return lists.join("");
|
|
270
|
+
};
|
|
271
|
+
exports.insertTile = insertTile;
|
|
272
|
+
const addCenterZone = (list, width) => {
|
|
273
|
+
const lists = splitList(width, list) || [];
|
|
274
|
+
lists.forEach((line, index) => {
|
|
275
|
+
// bccccccccjkggggggggf
|
|
276
|
+
const centerToAdd = 26 - line.length - (line.match(/a/g) || []).length;
|
|
277
|
+
if (centerToAdd <= 0) {
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
line = insert(line, line.length / 2, "a".repeat(centerToAdd));
|
|
281
|
+
for (let i = 0; i < centerToAdd / 2; ++i) {
|
|
282
|
+
line = remove(line, 1);
|
|
283
|
+
line = remove(line, line.length - 2);
|
|
284
|
+
}
|
|
285
|
+
lists[index] = line;
|
|
286
|
+
});
|
|
287
|
+
return lists.join("");
|
|
288
|
+
};
|
|
289
|
+
exports.addCenterZone = addCenterZone;
|
|
290
|
+
const removeTile = (list, width) => {
|
|
291
|
+
const lists = splitList(width, list) || [];
|
|
292
|
+
lists.forEach((line, index) => {
|
|
293
|
+
line = remove(line, 1);
|
|
294
|
+
line = remove(line, line.length - 2);
|
|
295
|
+
lists[index] = line;
|
|
296
|
+
});
|
|
297
|
+
return lists.join("");
|
|
298
|
+
};
|
|
299
|
+
exports.removeTile = removeTile;
|
|
300
|
+
const insertLine = (list, width, char) => {
|
|
301
|
+
const lists = splitList(width, list) || [""];
|
|
302
|
+
lists.unshift(lists[0]);
|
|
303
|
+
lists.push(lists[lists.length - 1]);
|
|
304
|
+
if (char) {
|
|
305
|
+
lists[0] = char.repeat(lists[0].length);
|
|
306
|
+
lists[lists.length - 1] = char.repeat(lists[lists.length - 1].length);
|
|
307
|
+
}
|
|
308
|
+
return lists.join("");
|
|
309
|
+
};
|
|
310
|
+
exports.insertLine = insertLine;
|
|
311
|
+
const removeLine = (list, width) => {
|
|
312
|
+
const lists = splitList(width, list) || [];
|
|
313
|
+
lists.shift();
|
|
314
|
+
lists.pop();
|
|
315
|
+
return lists.join("");
|
|
316
|
+
};
|
|
317
|
+
exports.removeLine = removeLine;
|
|
318
|
+
function splitList(w, s) {
|
|
319
|
+
return s.match(new RegExp(".{1," + w + "}", "g"));
|
|
320
|
+
}
|
package/dist/state.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TEAM_STATE = exports.PLAYER_STATE = void 0;
|
|
4
|
+
exports.canBeSelectedByUser = canBeSelectedByUser;
|
|
5
|
+
exports.canJoinTeamWithState = canJoinTeamWithState;
|
|
6
|
+
exports.canPlayLeague = canPlayLeague;
|
|
7
|
+
exports.canTeamPlayLeague = canTeamPlayLeague;
|
|
8
|
+
exports.getPlayableStates = getPlayableStates;
|
|
9
|
+
exports.isActive = isActive;
|
|
10
|
+
exports.isBlocked = isBlocked;
|
|
11
|
+
exports.isDead = isDead;
|
|
12
|
+
exports.isInactive = isInactive;
|
|
13
|
+
exports.isPlayable = isPlayable;
|
|
14
|
+
exports.isRetirement = isRetirement;
|
|
15
|
+
exports.isTeamActive = isTeamActive;
|
|
16
|
+
exports.isTeamBlocked = isTeamBlocked;
|
|
17
|
+
exports.isTeamEmpty = isTeamEmpty;
|
|
18
|
+
exports.isTeamLessMin = isTeamLessMin;
|
|
19
|
+
exports.shouldBeRemovedFromTeam = shouldBeRemovedFromTeam;
|
|
20
|
+
const stadium_1 = require("./stadium");
|
|
21
|
+
var TEAM_STATE;
|
|
22
|
+
(function (TEAM_STATE) {
|
|
23
|
+
TEAM_STATE[TEAM_STATE["ACTIVE"] = 0] = "ACTIVE";
|
|
24
|
+
TEAM_STATE[TEAM_STATE["EMPTY"] = 1] = "EMPTY";
|
|
25
|
+
TEAM_STATE[TEAM_STATE["BLOCKED"] = 2] = "BLOCKED";
|
|
26
|
+
})(TEAM_STATE || (exports.TEAM_STATE = TEAM_STATE = {}));
|
|
27
|
+
var PLAYER_STATE;
|
|
28
|
+
(function (PLAYER_STATE) {
|
|
29
|
+
PLAYER_STATE[PLAYER_STATE["ACTIVE"] = 0] = "ACTIVE";
|
|
30
|
+
PLAYER_STATE[PLAYER_STATE["RETIREMENT"] = 1] = "RETIREMENT";
|
|
31
|
+
PLAYER_STATE[PLAYER_STATE["DEAD"] = 2] = "DEAD";
|
|
32
|
+
PLAYER_STATE[PLAYER_STATE["INACTIVE"] = 3] = "INACTIVE";
|
|
33
|
+
PLAYER_STATE[PLAYER_STATE["BLOCKED"] = 4] = "BLOCKED";
|
|
34
|
+
})(PLAYER_STATE || (exports.PLAYER_STATE = PLAYER_STATE = {}));
|
|
35
|
+
// WARNING, check the state, no the player
|
|
36
|
+
function isActive(state) {
|
|
37
|
+
return state === PLAYER_STATE.ACTIVE;
|
|
38
|
+
}
|
|
39
|
+
function isInactive(state) {
|
|
40
|
+
return state === PLAYER_STATE.INACTIVE;
|
|
41
|
+
}
|
|
42
|
+
function isBlocked(state) {
|
|
43
|
+
return state === PLAYER_STATE.BLOCKED;
|
|
44
|
+
}
|
|
45
|
+
function isDead(state) {
|
|
46
|
+
return state === PLAYER_STATE.DEAD;
|
|
47
|
+
}
|
|
48
|
+
function isRetirement(state) {
|
|
49
|
+
return state === PLAYER_STATE.RETIREMENT;
|
|
50
|
+
}
|
|
51
|
+
function canJoinTeamWithState(state) {
|
|
52
|
+
return state === PLAYER_STATE.ACTIVE;
|
|
53
|
+
}
|
|
54
|
+
function canBeSelectedByUser(state) {
|
|
55
|
+
return state === PLAYER_STATE.ACTIVE || state === PLAYER_STATE.INACTIVE;
|
|
56
|
+
}
|
|
57
|
+
function canTeamPlayLeague(state) {
|
|
58
|
+
return state === TEAM_STATE.ACTIVE;
|
|
59
|
+
}
|
|
60
|
+
function isTeamEmpty(state) {
|
|
61
|
+
return state === TEAM_STATE.EMPTY;
|
|
62
|
+
}
|
|
63
|
+
function isTeamLessMin(team) {
|
|
64
|
+
return team.players && team.players.length < stadium_1.MIN_SCRIMMAGE;
|
|
65
|
+
}
|
|
66
|
+
function isTeamBlocked(state) {
|
|
67
|
+
return state === TEAM_STATE.BLOCKED;
|
|
68
|
+
}
|
|
69
|
+
function isTeamActive(state) {
|
|
70
|
+
return state === TEAM_STATE.ACTIVE;
|
|
71
|
+
}
|
|
72
|
+
function canPlayLeague(team) {
|
|
73
|
+
if (isTeamEmpty(team.state) ||
|
|
74
|
+
isTeamBlocked(team.state) ||
|
|
75
|
+
isTeamLessMin(team)) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
// if (team.id === "c28c487a-5b6c-45a2-be33-9b3460b957b6") {
|
|
79
|
+
// return false;
|
|
80
|
+
// }
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
function getPlayableStates() {
|
|
84
|
+
return [PLAYER_STATE.ACTIVE, PLAYER_STATE.INACTIVE];
|
|
85
|
+
}
|
|
86
|
+
function isPlayable(state) {
|
|
87
|
+
return getPlayableStates().indexOf(state) !== -1;
|
|
88
|
+
}
|
|
89
|
+
function shouldBeRemovedFromTeam(state) {
|
|
90
|
+
return state === PLAYER_STATE.BLOCKED || state === PLAYER_STATE.DEAD;
|
|
91
|
+
}
|
package/dist/status.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PLAYER_STATUS = exports.hasStatusTacleZone = exports.hasStatusStanding = exports.hasStatusOnField = exports.hasStatusInjury = exports.hasStatusFall = exports.hasStatusCantPlay = exports.hasStatusCanStandup = exports.hasStatusCanFaceup = void 0;
|
|
4
|
+
const PLAYER_STATUS = {
|
|
5
|
+
STANDING: 0,
|
|
6
|
+
KNOCKED_DOWN: 1, // Sur le dos
|
|
7
|
+
STUNNED: 2, // Sur le ventre
|
|
8
|
+
RESERVE: 3, // Dans la réserve
|
|
9
|
+
KO: 4,
|
|
10
|
+
CASUALTY: 5, // Blessé
|
|
11
|
+
// For other casuality (death), update all playerTo.status === PLAYER_STATUS.CASUALTY
|
|
12
|
+
SENDOFF: 6, // Expulsé
|
|
13
|
+
BONE_HEAD: 7, // Plus de zdt
|
|
14
|
+
};
|
|
15
|
+
exports.PLAYER_STATUS = PLAYER_STATUS;
|
|
16
|
+
const hasStatusCanFaceup = (player) => {
|
|
17
|
+
return player.status === PLAYER_STATUS.STUNNED;
|
|
18
|
+
};
|
|
19
|
+
exports.hasStatusCanFaceup = hasStatusCanFaceup;
|
|
20
|
+
const hasStatusCanStandup = (player) => {
|
|
21
|
+
return player.status === PLAYER_STATUS.KNOCKED_DOWN;
|
|
22
|
+
};
|
|
23
|
+
exports.hasStatusCanStandup = hasStatusCanStandup;
|
|
24
|
+
const hasStatusTacleZone = (player) => {
|
|
25
|
+
// BONE_HEAD doesn't have table zone
|
|
26
|
+
return player.status === PLAYER_STATUS.STANDING;
|
|
27
|
+
};
|
|
28
|
+
exports.hasStatusTacleZone = hasStatusTacleZone;
|
|
29
|
+
const hasStatusStanding = (player) => {
|
|
30
|
+
return (player.status === PLAYER_STATUS.STANDING ||
|
|
31
|
+
player.status === PLAYER_STATUS.BONE_HEAD);
|
|
32
|
+
};
|
|
33
|
+
exports.hasStatusStanding = hasStatusStanding;
|
|
34
|
+
const hasStatusInjury = (player) => {
|
|
35
|
+
return (player.status === PLAYER_STATUS.KO ||
|
|
36
|
+
player.status === PLAYER_STATUS.CASUALTY);
|
|
37
|
+
};
|
|
38
|
+
exports.hasStatusInjury = hasStatusInjury;
|
|
39
|
+
const hasStatusFall = (player) => {
|
|
40
|
+
return (player.status === PLAYER_STATUS.KNOCKED_DOWN ||
|
|
41
|
+
player.status === PLAYER_STATUS.STUNNED);
|
|
42
|
+
};
|
|
43
|
+
exports.hasStatusFall = hasStatusFall;
|
|
44
|
+
const hasStatusOnField = (player) => {
|
|
45
|
+
return hasStatusStanding(player) || hasStatusFall(player);
|
|
46
|
+
};
|
|
47
|
+
exports.hasStatusOnField = hasStatusOnField;
|
|
48
|
+
const hasStatusCantPlay = (player) => {
|
|
49
|
+
return (player.status === PLAYER_STATUS.SENDOFF ||
|
|
50
|
+
player.status === PLAYER_STATUS.CASUALTY);
|
|
51
|
+
};
|
|
52
|
+
exports.hasStatusCantPlay = hasStatusCantPlay;
|
package/dist/store.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.storeBadges = exports.STORE_ITEM_TYPE = exports.PRODUCTS = exports.AVATAR_PRICE = void 0;
|
|
4
|
+
const badge_1 = require("./badge");
|
|
5
|
+
const career_1 = require("./career");
|
|
6
|
+
const STORE_ITEM_TYPE = {
|
|
7
|
+
AVATAR: "a",
|
|
8
|
+
BADGE: "b",
|
|
9
|
+
};
|
|
10
|
+
exports.STORE_ITEM_TYPE = STORE_ITEM_TYPE;
|
|
11
|
+
const PRODUCTS = {
|
|
12
|
+
1: {
|
|
13
|
+
value: 1,
|
|
14
|
+
teeth: 10,
|
|
15
|
+
title: "",
|
|
16
|
+
description: "get 10 teeth",
|
|
17
|
+
img: "coin1.jpeg",
|
|
18
|
+
},
|
|
19
|
+
5: {
|
|
20
|
+
value: 5,
|
|
21
|
+
teeth: 55,
|
|
22
|
+
title: "",
|
|
23
|
+
description: "get 55 teeth",
|
|
24
|
+
img: "coin2.jpeg",
|
|
25
|
+
},
|
|
26
|
+
10: {
|
|
27
|
+
value: 10,
|
|
28
|
+
teeth: 115,
|
|
29
|
+
title: "",
|
|
30
|
+
description: "get 115 teeth",
|
|
31
|
+
img: "coin3.jpeg",
|
|
32
|
+
},
|
|
33
|
+
15: {
|
|
34
|
+
value: 15,
|
|
35
|
+
teeth: 180,
|
|
36
|
+
title: "",
|
|
37
|
+
description: "get 180 teeth",
|
|
38
|
+
img: "coin4.jpeg",
|
|
39
|
+
},
|
|
40
|
+
20: {
|
|
41
|
+
value: 20,
|
|
42
|
+
teeth: 250,
|
|
43
|
+
title: "",
|
|
44
|
+
description: "get 250 teeth",
|
|
45
|
+
img: "coin5.jpeg",
|
|
46
|
+
},
|
|
47
|
+
30: {
|
|
48
|
+
value: 30,
|
|
49
|
+
teeth: 390,
|
|
50
|
+
title: "",
|
|
51
|
+
description: "get 390 teeth",
|
|
52
|
+
img: "coin6.jpeg",
|
|
53
|
+
},
|
|
54
|
+
40: {
|
|
55
|
+
value: 40,
|
|
56
|
+
teeth: 540,
|
|
57
|
+
title: "",
|
|
58
|
+
description: "get 540 teeth",
|
|
59
|
+
img: "coin7.jpeg",
|
|
60
|
+
},
|
|
61
|
+
80: {
|
|
62
|
+
value: 80,
|
|
63
|
+
teeth: 1120,
|
|
64
|
+
title: "",
|
|
65
|
+
description: "get 1120 teeth",
|
|
66
|
+
img: "coin8.jpeg",
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
exports.PRODUCTS = PRODUCTS;
|
|
70
|
+
const AVATAR_PRICE = {
|
|
71
|
+
[career_1.AVATAR_RARITY.COMMUN]: 100,
|
|
72
|
+
[career_1.AVATAR_RARITY.RARE]: 250,
|
|
73
|
+
[career_1.AVATAR_RARITY.UNIQUE]: 390,
|
|
74
|
+
};
|
|
75
|
+
exports.AVATAR_PRICE = AVATAR_PRICE;
|
|
76
|
+
const STORE_BADGE_PRICE = 180;
|
|
77
|
+
const storeBadges = {
|
|
78
|
+
[badge_1.BADGE_NAMES.ELVEN_UNION]: {
|
|
79
|
+
price: STORE_BADGE_PRICE,
|
|
80
|
+
isUnique: true,
|
|
81
|
+
isBadge: true,
|
|
82
|
+
},
|
|
83
|
+
[badge_1.BADGE_NAMES.SLANN]: {
|
|
84
|
+
price: STORE_BADGE_PRICE,
|
|
85
|
+
isUnique: true,
|
|
86
|
+
isBadge: true,
|
|
87
|
+
},
|
|
88
|
+
[badge_1.BADGE_NAMES.SNOTLING]: {
|
|
89
|
+
price: STORE_BADGE_PRICE,
|
|
90
|
+
isUnique: true,
|
|
91
|
+
isBadge: true,
|
|
92
|
+
},
|
|
93
|
+
[badge_1.BADGE_NAMES.IMPERIAL]: {
|
|
94
|
+
price: STORE_BADGE_PRICE,
|
|
95
|
+
isUnique: true,
|
|
96
|
+
isBadge: true,
|
|
97
|
+
},
|
|
98
|
+
[badge_1.BADGE_NAMES.VAMPIRE]: {
|
|
99
|
+
price: STORE_BADGE_PRICE,
|
|
100
|
+
isUnique: true,
|
|
101
|
+
isBadge: true,
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
exports.storeBadges = storeBadges;
|
package/dist/time.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TYPE_TIMER = exports.getTimeWithMoral = exports.getTime = void 0;
|
|
4
|
+
const moral_1 = require("./moral");
|
|
5
|
+
var TYPE_TIMER;
|
|
6
|
+
(function (TYPE_TIMER) {
|
|
7
|
+
TYPE_TIMER["ACTION_FULL"] = "actionFull";
|
|
8
|
+
TYPE_TIMER["ACTION"] = "action";
|
|
9
|
+
TYPE_TIMER["BEFORE"] = "before";
|
|
10
|
+
TYPE_TIMER["BETWEEN_GAME_LEAGUE"] = "betweenGameLeague";
|
|
11
|
+
TYPE_TIMER["GAME"] = "game";
|
|
12
|
+
TYPE_TIMER["INIT_LEAGUE"] = "initLeague";
|
|
13
|
+
TYPE_TIMER["STANDUP"] = "standup";
|
|
14
|
+
TYPE_TIMER["TD"] = "td";
|
|
15
|
+
TYPE_TIMER["TURNOVER"] = "turnover";
|
|
16
|
+
TYPE_TIMER["WAITING_GAME"] = "waitingGame";
|
|
17
|
+
TYPE_TIMER["TIME_SEASON_IF_NO_LEAGUE"] = "timeSeasonIfNoLeague";
|
|
18
|
+
TYPE_TIMER["HALF_TIME_GAME"] = "halfTime";
|
|
19
|
+
TYPE_TIMER["HALF_TIME_PAUSE"] = "halfTimePause";
|
|
20
|
+
})(TYPE_TIMER || (exports.TYPE_TIMER = TYPE_TIMER = {}));
|
|
21
|
+
const getTime = (type) => {
|
|
22
|
+
// Team actions: blitz, foul, pass, transmition
|
|
23
|
+
// Player action
|
|
24
|
+
// Player move = time / max move. Ex: move 6 -> 12/6 = 2h
|
|
25
|
+
const TIME_ACTION_FULL = 3 * 60 * 60;
|
|
26
|
+
const TIME_ACTION = 10 * 60 * 60;
|
|
27
|
+
// Before game, setup
|
|
28
|
+
const TIME_BEFORE = 3 * 60 * 60;
|
|
29
|
+
const TIME_HALF_TIME_PAUSE = 3 * 60 * 60;
|
|
30
|
+
// Total game time = TIME_BEFORE + TIME_GAME
|
|
31
|
+
const TIME_GAME = 5 * 24 * 60 * 60;
|
|
32
|
+
const TIME_HALF_TIME_GAME = 6 * 24 * 60 * 60;
|
|
33
|
+
// Time of setup after a TD
|
|
34
|
+
const TIME_TD = 3 * 60 * 60;
|
|
35
|
+
// after turnover malus time for player actions
|
|
36
|
+
const TIME_TURNOVER = 4 * 60 * 60;
|
|
37
|
+
// how many hours a game stay pending
|
|
38
|
+
const TIME_WAITING_GAME = 24;
|
|
39
|
+
// before league games (last game end + 1 day)
|
|
40
|
+
const TIME_INIT_LEAGUE = 1 * 24 * 60 * 60;
|
|
41
|
+
// between each league games
|
|
42
|
+
const TIME_BETWEEN_GAME_LEAGUE = TIME_GAME + 2 * 24 * 60 * 60;
|
|
43
|
+
// 2 months
|
|
44
|
+
const TIME_SEASON_IF_NO_LEAGUE = 60 * 24 * 60 * 30 * 2;
|
|
45
|
+
switch (type) {
|
|
46
|
+
case TYPE_TIMER.HALF_TIME_GAME:
|
|
47
|
+
return TIME_HALF_TIME_GAME;
|
|
48
|
+
case TYPE_TIMER.HALF_TIME_PAUSE:
|
|
49
|
+
return TIME_HALF_TIME_PAUSE;
|
|
50
|
+
case TYPE_TIMER.ACTION_FULL:
|
|
51
|
+
return TIME_ACTION_FULL;
|
|
52
|
+
case TYPE_TIMER.TIME_SEASON_IF_NO_LEAGUE:
|
|
53
|
+
return TIME_SEASON_IF_NO_LEAGUE;
|
|
54
|
+
case TYPE_TIMER.ACTION:
|
|
55
|
+
return TIME_ACTION;
|
|
56
|
+
case TYPE_TIMER.BEFORE:
|
|
57
|
+
return TIME_BEFORE;
|
|
58
|
+
case TYPE_TIMER.GAME:
|
|
59
|
+
return TIME_GAME;
|
|
60
|
+
case TYPE_TIMER.TD:
|
|
61
|
+
return TIME_TD;
|
|
62
|
+
case TYPE_TIMER.TURNOVER:
|
|
63
|
+
return TIME_TURNOVER;
|
|
64
|
+
case TYPE_TIMER.WAITING_GAME:
|
|
65
|
+
return TIME_WAITING_GAME;
|
|
66
|
+
case TYPE_TIMER.INIT_LEAGUE:
|
|
67
|
+
return TIME_INIT_LEAGUE;
|
|
68
|
+
case TYPE_TIMER.BETWEEN_GAME_LEAGUE:
|
|
69
|
+
return TIME_BETWEEN_GAME_LEAGUE;
|
|
70
|
+
default:
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
exports.getTime = getTime;
|
|
75
|
+
const getTimeWithMoral = (type, moral = 100) => {
|
|
76
|
+
const normalTime = getTime(type);
|
|
77
|
+
const pourcMoral = (0, moral_1.getMalusFromMoral)(moral);
|
|
78
|
+
return normalTime + (normalTime * pourcMoral) / 100;
|
|
79
|
+
};
|
|
80
|
+
exports.getTimeWithMoral = getTimeWithMoral;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"module": "CommonJS",
|
|
5
|
+
"moduleResolution": "node",
|
|
6
|
+
"esModuleInterop": true,
|
|
7
|
+
"outDir": "./dist",
|
|
8
|
+
"rootDir": "./",
|
|
9
|
+
"strict": true,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"forceConsistentCasingInFileNames": true,
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"noImplicitAny": false, // temporary
|
|
14
|
+
"baseUrl": ".",
|
|
15
|
+
"paths": {
|
|
16
|
+
"status": ["./status"],
|
|
17
|
+
"random": ["./random"],
|
|
18
|
+
"types/models": ["./types/models"],
|
|
19
|
+
"calcul": ["./calcul"],
|
|
20
|
+
"time": ["./time"]
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"include": ["./**/*.ts", "./**/*.d.ts", "./**/*.js", "./**/*.json"],
|
|
24
|
+
"exclude": ["node_modules", "dist"]
|
|
25
|
+
}
|