enefel 2.9.1 → 2.11.0
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/.claude/settings.local.json +7 -0
- package/2025/newSkills.ts +769 -0
- package/2025/raceMigration.ts +66 -0
- package/2025/rawTeamsData.ts +1726 -0
- package/2025/skillMigration.ts +155 -0
- package/avatarsSeason.ts +61 -0
- package/career.ts +64 -8
- package/career2025.ts +2752 -0
- package/dice.ts +40 -8
- package/dist/2025/newSkills.d.ts +10 -0
- package/dist/2025/newSkills.js +663 -0
- package/dist/2025/raceMigration.d.ts +10 -0
- package/dist/2025/raceMigration.js +53 -0
- package/dist/2025/rawTeamsData.d.ts +12 -0
- package/dist/2025/rawTeamsData.js +1699 -0
- package/dist/2025/skillMigration.d.ts +31 -0
- package/dist/2025/skillMigration.js +95 -0
- package/dist/avatarsSeason.d.ts +22 -0
- package/dist/avatarsSeason.js +54 -0
- package/dist/career.d.ts +13 -4
- package/dist/career.js +36 -7
- package/dist/career2025.d.ts +192 -0
- package/dist/career2025.js +2611 -0
- package/dist/dice.d.ts +10 -2
- package/dist/dice.js +31 -8
- package/dist/index.d.ts +17 -2
- package/dist/index.js +44 -5
- package/dist/move.d.ts +6 -2
- package/dist/move.js +35 -0
- package/dist/package-lock.json +913 -7
- package/dist/package.json +6 -2
- package/dist/pitch.d.ts +10 -1
- package/dist/pitch.js +16 -0
- package/dist/player.d.ts +8 -4
- package/dist/player.js +104 -20
- package/dist/position.d.ts +4 -0
- package/dist/position.js +17 -1
- package/dist/race.d.ts +23 -12
- package/dist/race.js +210 -2
- package/dist/skill.d.ts +26 -3
- package/dist/skill.js +199 -81
- package/dist/skills/hitAndRun.d.ts +10 -0
- package/dist/skills/hitAndRun.js +12 -0
- package/dist/skills/safePairOfHands.d.ts +28 -0
- package/dist/skills/safePairOfHands.js +18 -0
- package/dist/skills/sidestep.d.ts +21 -0
- package/dist/skills/sidestep.js +20 -0
- package/dist/status.d.ts +4 -1
- package/dist/status.js +14 -4
- package/dist/store.d.ts +3 -0
- package/dist/store.js +3 -0
- package/dist/teams/career_v2025.d.ts +246 -0
- package/dist/teams/career_v2025.js +3512 -0
- package/dist/teams/convert-csv-to-career.d.ts +1 -0
- package/dist/teams/convert-csv-to-career.js +1085 -0
- package/dist/types/models.d.ts +4 -0
- package/index.ts +57 -4
- package/jest.config.js +3 -0
- package/move.ts +50 -2
- package/npm-login.sh +0 -0
- package/package.json +6 -2
- package/pitch.ts +22 -0
- package/player.ts +105 -22
- package/position.ts +16 -0
- package/race.ts +227 -13
- package/skill.ts +217 -83
- package/skills/hitAndRun.ts +14 -0
- package/skills/safePairOfHands.ts +33 -0
- package/skills/sidestep.ts +25 -0
- package/status.ts +15 -3
- package/store.ts +3 -0
- package/teams/README.md +53 -0
- package/teams/clean-stats.js +54 -0
- package/teams/convert-csv-to-career.ts +1209 -0
- package/teams/players_clean.csv +107 -0
- package/teams/players_next.csv +21 -0
- package/types/models.ts +4 -0
package/dist/race.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isPrivateRace = exports.hasUnlockRace = exports.hasUnlockCareer = exports.GROUP_NAME = exports.getRaceSpecialSkills = exports.getRaceGroup = exports.getRaceFromPlayer = exports.getRaceFromCareer = exports.getRaceCompatibility = exports.getPlayersByState = exports.getPlayerGroup = exports.getPlayerCompatibility = exports.getPlayerAvatarPath = exports.getPlayerAvatarDefault = exports.getPlayerAvatar = exports.getCareersByRace = exports.getCareerKeyFromPlayer = exports.getCareerFromPlayer = exports.getCareerFromKey = exports.getCareerFromIcon = exports.getAvatarTypeFromPlayer = exports.GAIN_CAREER_POINT_FRIENDLY = exports.GAIN_CAREER_POINT = exports.COMPATIBILITY = exports.ANIMOSITY_NUMBER = void 0;
|
|
6
|
+
exports.isPrivateRace = exports.hasUnlockRace = exports.hasUnlockCareer = exports.GROUP_NAME = exports.getRaceSpecialSkills = exports.getRaceGroup = exports.getRaceFromPlayer = exports.getRaceFromCareer = exports.getRaceCompatibility = exports.getPlayersByState = exports.getPlayerGroup = exports.getPlayerCompatibility = exports.getPlayerAvatarPath = exports.getPlayerAvatarDefault = exports.getPlayerAvatar = exports.getCareersByRace = exports.getCareerKeyFromPlayer = exports.getCareerFromPlayer = exports.getCareerFromKey = exports.getCareerFromIcon = exports.getCareerId2025 = exports.getAvatarTypeFromPlayer = exports.getAvatarRarityFromFile = exports.getAvatarBasePathFromFile = exports.getAvailableCareersByRace = exports.GAIN_CAREER_POINT_FRIENDLY = exports.GAIN_CAREER_POINT = exports.COMPATIBILITY = exports.ANIMOSITY_NUMBER = void 0;
|
|
7
7
|
exports.getCareerRanges = getCareerRanges;
|
|
8
8
|
exports.getPlayersAvailableForPromo = getPlayersAvailableForPromo;
|
|
9
9
|
exports.getPriceCareer = getPriceCareer;
|
|
@@ -15,6 +15,7 @@ exports.isPlayerNeutralGroup = isPlayerNeutralGroup;
|
|
|
15
15
|
const seedrandom_1 = __importDefault(require("seedrandom"));
|
|
16
16
|
const avatars_1 = require("./avatars");
|
|
17
17
|
const avatarsDefault_1 = require("./avatarsDefault");
|
|
18
|
+
const avatarsSeason_1 = require("./avatarsSeason");
|
|
18
19
|
const badge_1 = require("./badge");
|
|
19
20
|
const career_1 = require("./career");
|
|
20
21
|
const random_1 = require("./random");
|
|
@@ -115,6 +116,139 @@ const getCareerKeyFromPlayer = (player) => {
|
|
|
115
116
|
return player.race_id;
|
|
116
117
|
};
|
|
117
118
|
exports.getCareerKeyFromPlayer = getCareerKeyFromPlayer;
|
|
119
|
+
/**
|
|
120
|
+
* Maps legacy (pre-2025) career IDs to their 2025 equivalents.
|
|
121
|
+
* Derived by inverting the ICON_ADAPTER from convert-csv-to-career.ts:
|
|
122
|
+
* old icon name (strip "1") → new 2025 career ID
|
|
123
|
+
*/
|
|
124
|
+
const LEGACY_TO_2025_CAREER_ID = {
|
|
125
|
+
// Amazon
|
|
126
|
+
"amazon-linewomen": "amazon-linewoman-2025",
|
|
127
|
+
"amazon-blocker": "amazon-blocker-2025",
|
|
128
|
+
"amazon-blitzer": "amazon-blitzer-2025",
|
|
129
|
+
"amazon-catcher": "amazon-catcher-2025",
|
|
130
|
+
"amazon-thrower": "amazon-thrower-2025",
|
|
131
|
+
// Chaos Chosen
|
|
132
|
+
"chaos-beastman": "chaos-chosen-beastman-2025",
|
|
133
|
+
"chaos-warrior": "chaos-chosen-chosen-2025",
|
|
134
|
+
"chaos-minotaur": "chaos-chosen-minotaur-2025",
|
|
135
|
+
// Chaos Dwarf
|
|
136
|
+
"chaos-dwarf-blocker": "chaos-dwarf-blocker-2025",
|
|
137
|
+
"chaos-dwarf-bull-centaur": "chaos-dwarf-bull-centaur-2025",
|
|
138
|
+
"chaos-dwarf-hobgobelin": "chaos-dwarf-hobgoblin-2025",
|
|
139
|
+
// Dark Elf
|
|
140
|
+
"dark-elfe-blitzer": "dark-elf-blitzer-2025",
|
|
141
|
+
"dark-elfe-lineman": "dark-elf-lineman-2025",
|
|
142
|
+
"dark-elfe-runner": "dark-elf-runner-2025",
|
|
143
|
+
"dark-elfe-witch": "dark-elf-witch-elf-2025",
|
|
144
|
+
// Dwarf
|
|
145
|
+
"dwarf": "dwarf-lineman-2025",
|
|
146
|
+
"dwarf-blocker": "dwarf-lineman-2025",
|
|
147
|
+
"dwarf-blitzer": "dwarf-blitzer-2025",
|
|
148
|
+
"dwarf-deathroller": "dwarf-deathroller-2025",
|
|
149
|
+
"dwarf-runner": "dwarf-runner-2025",
|
|
150
|
+
"dwarf-troll-slayer": "dwarf-troll-slayer-2025",
|
|
151
|
+
// Elven Union
|
|
152
|
+
"elven-union-blitzer": "elven-union-blitzer-2025",
|
|
153
|
+
"elven-union-catcher": "elven-union-catcher-2025",
|
|
154
|
+
"elven-union-lineman": "elven-union-lineman-2025",
|
|
155
|
+
"elven-union-thrower": "elven-union-thrower-2025",
|
|
156
|
+
// Goblin
|
|
157
|
+
"gobelin-lineman": "goblin-lineman-2025",
|
|
158
|
+
"gobelin-looney": "goblin-loony-2025",
|
|
159
|
+
"gobelin-pogoer": "goblin-pogoer-2025",
|
|
160
|
+
"gobelin-troll": "goblin-troll-2025",
|
|
161
|
+
// Halfling
|
|
162
|
+
"halfling-lineman": "halfling-lineman-2025",
|
|
163
|
+
"halfling-hefty": "halfling-hefty-2025",
|
|
164
|
+
"halfling-catcher": "halfling-catcher-2025",
|
|
165
|
+
"halfling-treeman": "halfling-treeman-2025",
|
|
166
|
+
// Human
|
|
167
|
+
"human": "human-lineman-2025",
|
|
168
|
+
"human-lineman": "human-lineman-2025",
|
|
169
|
+
"human-blitzer": "human-blitzer-2025",
|
|
170
|
+
"human-catcher": "human-catcher-2025",
|
|
171
|
+
"human-ogre": "human-ogre-2025",
|
|
172
|
+
"human-thrower": "human-thrower-2025",
|
|
173
|
+
// Imperial Nobility
|
|
174
|
+
"imperial-lineman": "imperial-nobility-retainer-2025",
|
|
175
|
+
"imperial-blitzer": "imperial-nobility-blitzer-2025",
|
|
176
|
+
"imperial-bodyguard": "imperial-nobility-bodyguard-2025",
|
|
177
|
+
"imperial-ogre": "imperial-nobility-ogre-2025",
|
|
178
|
+
"imperial-thrower": "imperial-nobility-thrower-2025",
|
|
179
|
+
// Khorne
|
|
180
|
+
"khorne-lineman": "khorne-marauder-2025",
|
|
181
|
+
"khorne-khorngor": "khorne-khorngor-2025",
|
|
182
|
+
"khorne-bloodseeker": "khorne-bloodseeker-2025",
|
|
183
|
+
"khorne-bloodspawn": "khorne-bloodspawn-2025",
|
|
184
|
+
// Lizardmen
|
|
185
|
+
"lizardmen-chameleon": "lizardmen-chameleon-2025",
|
|
186
|
+
"lizardmen-kroxigor": "lizardmen-kroxigor-2025",
|
|
187
|
+
"lizardmen-saurus": "lizardmen-saurus-2025",
|
|
188
|
+
"lizardmen-skink": "lizardmen-skink-2025",
|
|
189
|
+
// Necromantic
|
|
190
|
+
"necromantic-zombie": "necromantic-horror-zombie-2025",
|
|
191
|
+
"necromantic-ghoul": "necromantic-horror-ghoul-2025",
|
|
192
|
+
"necromantic-wraith": "necromantic-horror-wraith-2025",
|
|
193
|
+
"necromantic-werewolf": "necromantic-horror-werewolf-2025",
|
|
194
|
+
"necromantic-golem": "necromantic-horror-flesh-golem-2025",
|
|
195
|
+
// Norse
|
|
196
|
+
"norse-lineman": "norse-raider-2025",
|
|
197
|
+
"norse-berserker": "norse-berserker-2025",
|
|
198
|
+
"norse-catcher": "norse-catcher-2025",
|
|
199
|
+
"norse-thrower": "norse-thrower-2025",
|
|
200
|
+
"norse-ulfwereners": "norse-ulfwerner-2025",
|
|
201
|
+
"norse-yhetee": "norse-yhetee-2025",
|
|
202
|
+
// Nurgle
|
|
203
|
+
"nurgle-rotter": "nurgle-rotter-2025",
|
|
204
|
+
"nurgle-pestigor": "nurgle-pestigor-2025",
|
|
205
|
+
"nurgle-bloater": "nurgle-bloater-2025",
|
|
206
|
+
"nurgle-rotspawn": "nurgle-rotspawn-2025",
|
|
207
|
+
// Orc
|
|
208
|
+
"orc": "orc-lineman-2025",
|
|
209
|
+
"orc-lineman": "orc-lineman-2025",
|
|
210
|
+
"orc-black-orc": "orc-big-un-2025",
|
|
211
|
+
"orc-blitzer": "orc-blitzer-2025",
|
|
212
|
+
"orc-thrower": "orc-thrower-2025",
|
|
213
|
+
"orc-troll": "orc-troll-2025",
|
|
214
|
+
// Skaven (anciens "rat")
|
|
215
|
+
"rat": "skaven-clanrat-2025",
|
|
216
|
+
"rat-lineman": "skaven-clanrat-2025",
|
|
217
|
+
"rat-runner": "skaven-gutter-2025",
|
|
218
|
+
"rat-blitzer": "skaven-blitzer-2025",
|
|
219
|
+
"rat-thrower": "skaven-thrower-2025",
|
|
220
|
+
"rat-ogre": "skaven-rat-ogre-2025",
|
|
221
|
+
// Shambling Undead (anciens "undead")
|
|
222
|
+
"undead-skeleton": "shambling-undead-skeleton-2025",
|
|
223
|
+
"undead-zombie": "shambling-undead-zombie-2025",
|
|
224
|
+
"undead-ghoul": "shambling-undead-ghoul-2025",
|
|
225
|
+
"undead-wight": "shambling-undead-wight-2025",
|
|
226
|
+
"undead-mummies": "shambling-undead-mummy-2025",
|
|
227
|
+
// Snotling
|
|
228
|
+
"snotling-lineman": "snotling-lineman-2025",
|
|
229
|
+
"snotling-runner": "snotling-runna-2025",
|
|
230
|
+
"snotling-wagon": "snotling-pump-wagon-2025",
|
|
231
|
+
"snotling-troll": "snotling-troll-2025",
|
|
232
|
+
// Vampire
|
|
233
|
+
"vampire-thrall": "vampire-thrall-2025",
|
|
234
|
+
"vampire-vampire": "vampire-blitzer-2025",
|
|
235
|
+
// Wood Elf (anciens "silvan")
|
|
236
|
+
"silvan": "wood-elf-lineman-2025",
|
|
237
|
+
"silvan-lineman": "wood-elf-lineman-2025",
|
|
238
|
+
"silvan-thrower": "wood-elf-thrower-2025",
|
|
239
|
+
"silvan-catcher": "wood-elf-catcher-2025",
|
|
240
|
+
"silvan-wardancer": "wood-elf-wardancer-2025",
|
|
241
|
+
};
|
|
242
|
+
/**
|
|
243
|
+
* Returns the 2025 career ID for a given career ID (legacy or already 2025).
|
|
244
|
+
* Returns undefined for careers without a 2025 equivalent (e.g. Slann).
|
|
245
|
+
*/
|
|
246
|
+
const getCareerId2025 = (careerId) => {
|
|
247
|
+
if (careerId.endsWith("-2025"))
|
|
248
|
+
return careerId;
|
|
249
|
+
return LEGACY_TO_2025_CAREER_ID[careerId];
|
|
250
|
+
};
|
|
251
|
+
exports.getCareerId2025 = getCareerId2025;
|
|
118
252
|
const getCareerFromPlayer = (player) => {
|
|
119
253
|
const careerKey = getCareerKeyFromPlayer(player);
|
|
120
254
|
return getCareerFromKey(careerKey);
|
|
@@ -160,11 +294,26 @@ const getPlayerAvatar = (player) => {
|
|
|
160
294
|
if (!av) {
|
|
161
295
|
return null;
|
|
162
296
|
}
|
|
297
|
+
// Les avatars saisonniers (format "s17/1.png" ou trouvés dans la liste) gardent leur extension
|
|
298
|
+
// Normalise .jpeg → .png car les fichiers sont PNG (anciens enregistrements DB peuvent avoir .jpeg)
|
|
299
|
+
if (av.includes("/") || (0, avatarsSeason_1.findSeasonAvatar)(av)) {
|
|
300
|
+
return av.replace(".jpeg", ".png");
|
|
301
|
+
}
|
|
163
302
|
return av.replace(".png", ".jpeg");
|
|
164
303
|
};
|
|
165
304
|
exports.getPlayerAvatar = getPlayerAvatar;
|
|
166
305
|
const getPlayerAvatarPath = (player) => {
|
|
167
306
|
if (player.avatar) {
|
|
307
|
+
// Nouveau format "s17/1.png"
|
|
308
|
+
if (player.avatar.includes("/")) {
|
|
309
|
+
const slashIdx = player.avatar.indexOf("/");
|
|
310
|
+
const season = parseInt(player.avatar.slice(1, slashIdx), 10);
|
|
311
|
+
return (0, avatarsSeason_1.getSeasonAvatarPath)(season);
|
|
312
|
+
}
|
|
313
|
+
const seasonAvatar = (0, avatarsSeason_1.findSeasonAvatar)(player.avatar);
|
|
314
|
+
if (seasonAvatar) {
|
|
315
|
+
return (0, avatarsSeason_1.getSeasonAvatarPath)(seasonAvatar.season);
|
|
316
|
+
}
|
|
168
317
|
return "tile/shop/avatar";
|
|
169
318
|
}
|
|
170
319
|
else if (player.avatarDefault) {
|
|
@@ -201,6 +350,43 @@ const getAvatarTypeFromPlayer = (player, avatarFile) => {
|
|
|
201
350
|
return null;
|
|
202
351
|
};
|
|
203
352
|
exports.getAvatarTypeFromPlayer = getAvatarTypeFromPlayer;
|
|
353
|
+
/** Returns the correct base path for an avatar file based on which list it belongs to,
|
|
354
|
+
* independent of the player's currently active avatar. */
|
|
355
|
+
const getAvatarBasePathFromFile = (player, avatarFile) => {
|
|
356
|
+
const career = getCareerFromPlayer(player);
|
|
357
|
+
if (!avatarFile)
|
|
358
|
+
return null;
|
|
359
|
+
for (const avatarType of career.avatars) {
|
|
360
|
+
const avatars = avatars_1.AVATAR_LIST[avatarType];
|
|
361
|
+
if (avatars?.find((al) => al.file === avatarFile)) {
|
|
362
|
+
return "tile/shop/avatar";
|
|
363
|
+
}
|
|
364
|
+
const avatarsDefault = avatarsDefault_1.AVATAR_DEFAULT_LIST[avatarType];
|
|
365
|
+
if (avatarsDefault?.find((al) => al.file === avatarFile)) {
|
|
366
|
+
return "tile/shop/avatar-default";
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return null;
|
|
370
|
+
};
|
|
371
|
+
exports.getAvatarBasePathFromFile = getAvatarBasePathFromFile;
|
|
372
|
+
/** Returns the rarity string of a standard avatar file for the given player's career. */
|
|
373
|
+
const getAvatarRarityFromFile = (player, avatarFile) => {
|
|
374
|
+
const career = getCareerFromPlayer(player);
|
|
375
|
+
if (!avatarFile)
|
|
376
|
+
return undefined;
|
|
377
|
+
for (const avatarType of career.avatars) {
|
|
378
|
+
const avatars = avatars_1.AVATAR_LIST[avatarType];
|
|
379
|
+
const found = avatars?.find((al) => al.file === avatarFile);
|
|
380
|
+
if (found)
|
|
381
|
+
return found.rarity;
|
|
382
|
+
const avatarsDefault = avatarsDefault_1.AVATAR_DEFAULT_LIST[avatarType];
|
|
383
|
+
const foundDefault = avatarsDefault?.find((al) => al.file === avatarFile);
|
|
384
|
+
if (foundDefault)
|
|
385
|
+
return foundDefault.rarity;
|
|
386
|
+
}
|
|
387
|
+
return undefined;
|
|
388
|
+
};
|
|
389
|
+
exports.getAvatarRarityFromFile = getAvatarRarityFromFile;
|
|
204
390
|
const getRaceFromPlayer = (player) => {
|
|
205
391
|
return getRaceFromCareer(getCareerKeyFromPlayer(player));
|
|
206
392
|
};
|
|
@@ -220,6 +406,21 @@ const getCareersByRace = () => {
|
|
|
220
406
|
return carrers;
|
|
221
407
|
};
|
|
222
408
|
exports.getCareersByRace = getCareersByRace;
|
|
409
|
+
const getAvailableCareersByRace = () => {
|
|
410
|
+
const carrers = {};
|
|
411
|
+
for (const [name, values] of Object.entries((0, career_1.getAvailableCareers)())) {
|
|
412
|
+
const badge = values.badge;
|
|
413
|
+
if (!carrers[badge]) {
|
|
414
|
+
carrers[badge] = [];
|
|
415
|
+
}
|
|
416
|
+
if (!carrers[badge][values.range]) {
|
|
417
|
+
carrers[badge][values.range] = {};
|
|
418
|
+
}
|
|
419
|
+
carrers[badge][values.range][name] = values;
|
|
420
|
+
}
|
|
421
|
+
return carrers;
|
|
422
|
+
};
|
|
423
|
+
exports.getAvailableCareersByRace = getAvailableCareersByRace;
|
|
223
424
|
const GAIN_CAREER_POINT = 2;
|
|
224
425
|
exports.GAIN_CAREER_POINT = GAIN_CAREER_POINT;
|
|
225
426
|
const GAIN_CAREER_POINT_FRIENDLY = 2;
|
|
@@ -254,7 +455,11 @@ const COMPATIBILITY = {
|
|
|
254
455
|
};
|
|
255
456
|
exports.COMPATIBILITY = COMPATIBILITY;
|
|
256
457
|
const getPlayerGroup = (player) => {
|
|
257
|
-
|
|
458
|
+
const race = getRaceFromPlayer(player);
|
|
459
|
+
if (!race) {
|
|
460
|
+
return undefined;
|
|
461
|
+
}
|
|
462
|
+
return getRaceGroup(race);
|
|
258
463
|
};
|
|
259
464
|
exports.getPlayerGroup = getPlayerGroup;
|
|
260
465
|
const getRaceGroup = (race) => {
|
|
@@ -280,6 +485,9 @@ exports.getRaceCompatibility = getRaceCompatibility;
|
|
|
280
485
|
const getPlayerCompatibility = (player1, player2) => {
|
|
281
486
|
const race1 = getRaceFromPlayer(player1);
|
|
282
487
|
const race2 = getRaceFromPlayer(player2);
|
|
488
|
+
if (!race1 || !race2) {
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
283
491
|
getRaceCompatibility(race1, race2);
|
|
284
492
|
};
|
|
285
493
|
exports.getPlayerCompatibility = getPlayerCompatibility;
|
package/dist/skill.d.ts
CHANGED
|
@@ -13,11 +13,14 @@ declare enum SKILL_NAMES {
|
|
|
13
13
|
ALWAYS_HUNGRY = "always-hungry",
|
|
14
14
|
ANIMAL_SAVAGERY = "animal-salvagery",
|
|
15
15
|
ANIMOSITY = "animosity",
|
|
16
|
+
ARM_BAR = "arm-bar",
|
|
16
17
|
BIG_GUY = "big-guy",
|
|
17
18
|
BIG_HAND = "big-hand",
|
|
18
19
|
BLOCK = "block",
|
|
20
|
+
BLOODLUST = "bloodlust",
|
|
19
21
|
BONE_HEAD = "bone-head",
|
|
20
22
|
BRAWLER = "brawler",
|
|
23
|
+
BREATHE_FIRE = "breathe-fire",
|
|
21
24
|
BREAK_TACKLE = "break-tackle",
|
|
22
25
|
CANNONEER = "cannoneer",
|
|
23
26
|
CATCH = "catch",
|
|
@@ -33,12 +36,15 @@ declare enum SKILL_NAMES {
|
|
|
33
36
|
DODGE = "dodge",
|
|
34
37
|
DRUNKARD = "drunkard",
|
|
35
38
|
DUMP_OFF = "dump-off",
|
|
39
|
+
EYE_GOUGE = "eye-gouge",
|
|
36
40
|
EXTRA_ARMS = "extra-arms",
|
|
37
41
|
FEND = "fend",
|
|
38
42
|
FOUL_APPEARANCE = "foul-appearance",
|
|
39
43
|
FRENZY = "frenzy",
|
|
40
44
|
FUMBLEROOSKIE = "fumblerooskie",
|
|
45
|
+
HAIL_MARY_PASS = "hail-mary-pass",
|
|
41
46
|
GUARD = "guard",
|
|
47
|
+
HIT_AND_RUN = "hit-and-run",
|
|
42
48
|
HORNS = "horns",
|
|
43
49
|
HYPNOTIC_GAZE = "hypnotic-gaze",
|
|
44
50
|
IRON_HARD_SKIN = "iron-hard-skin",
|
|
@@ -48,54 +54,70 @@ declare enum SKILL_NAMES {
|
|
|
48
54
|
LONER = "loner",
|
|
49
55
|
MIGHTY_BLOW = "mighty-blow",
|
|
50
56
|
MONSTROUS_MOUTH = "monstrous-mouth",
|
|
57
|
+
MY_BALL = "my-ball",
|
|
51
58
|
NERVES_OF_STEEL = "nerves-of-steel",
|
|
52
59
|
NO_HANDS = "no-hand",
|
|
53
60
|
ON_THE_BALL = "on-the-ball",
|
|
54
61
|
PASS = "pass",
|
|
55
62
|
PILE_DRIVER = "pile-driver",
|
|
63
|
+
PICK_ME_UP = "pick-me-up",
|
|
56
64
|
PLAGUE_RIDDEN = "plague-ridden",
|
|
65
|
+
PUNT = "punt",
|
|
66
|
+
PRO = "pro",
|
|
67
|
+
PUT_THE_BOOT_IN = "put-the-boot-in",
|
|
57
68
|
POGO_STICK = "pogo-stick",
|
|
58
69
|
PREHENSILE_TAIL = "prehensile-tail",
|
|
70
|
+
QUICK_FOUL = "quick-foul",
|
|
59
71
|
PROJECTILE_VOMIT = "projectile-vomit",
|
|
60
72
|
REALLY_STUPID = "really-stupid",
|
|
61
73
|
REGENERATION = "regeneration",
|
|
62
74
|
RIGHT_STUFF = "right-stuff",
|
|
63
|
-
|
|
75
|
+
GIVE_AND_GO = "running-pass",// Keep "running-pass" for DB compatibility
|
|
76
|
+
SAFE_PAIR_OF_HANDS = "safe-pair-of-hands",
|
|
64
77
|
SAFE_PASS = "safe-pass",
|
|
65
78
|
SECRET_WEAPON = "secret-weapon",
|
|
66
79
|
SHADOWING = "shadowing",
|
|
80
|
+
STAB = "stab",
|
|
81
|
+
SIDESTEP = "sidestep",
|
|
67
82
|
SNEAKY_GIT = "sneaky-git",
|
|
68
83
|
SPECIALIST = "specialist",
|
|
69
84
|
SPRINT = "sprint",
|
|
70
85
|
STAND_FIRM = "stand-firm",
|
|
86
|
+
STEADY_FOOTING = "steady-footing",
|
|
71
87
|
STAR = "star",
|
|
72
88
|
STRIP_BALL = "strip-ball",
|
|
73
89
|
STRONG_ARM = "strong-arm",
|
|
74
90
|
STUNTY = "stunty",
|
|
91
|
+
SWOOP = "swoop",
|
|
75
92
|
SURE_FEET = "sure-feet",
|
|
76
93
|
SURE_HANDS = "sure-hands",
|
|
77
94
|
TACKLE = "tackle",
|
|
95
|
+
TAUNT = "taunt",
|
|
78
96
|
TAKE_ROOT = "take-root",
|
|
79
97
|
TENTACLES = "tentacles",
|
|
80
98
|
THICK_SKULL = "thick-skull",
|
|
81
99
|
THROW_TEAM_MATE = "throw-team-mate",
|
|
100
|
+
TIMMM_BER = "timmm-ber",
|
|
82
101
|
TITCHY = "titchy",
|
|
83
102
|
TWO_HEADS = "two-heads",
|
|
84
103
|
UNCHANNELLED_FURY = "unchannelled-fury",
|
|
104
|
+
UNSTEADY = "unsteady",
|
|
85
105
|
VERY_LONG_LEGS = "very-long-legs",
|
|
86
106
|
WRESTLE = "wrestle",
|
|
87
107
|
DIVING_CATCH = "diving-catch"
|
|
88
108
|
}
|
|
89
109
|
declare enum SKILL_TYPE {
|
|
90
110
|
AGILITY = "A",
|
|
91
|
-
EXTRAORDINARY = "E"
|
|
111
|
+
EXTRAORDINARY = "E",// TRAIT
|
|
92
112
|
GENERAL = "G",
|
|
93
113
|
MUTATION = "M",
|
|
94
114
|
PASSING = "P",
|
|
95
115
|
STRENGTH = "S",
|
|
116
|
+
DEVIOUS = "D",
|
|
96
117
|
SPECIAL = "SP"
|
|
97
118
|
}
|
|
98
119
|
declare const SKILLS: Record<SKILL_NAMES, SKILL_TYPE>;
|
|
120
|
+
declare const SKILL_IS_2025: Record<SKILL_NAMES, boolean>;
|
|
99
121
|
declare function useSkill(player: PlayerWithSkill, skillId: SKILL_NAMES, date?: Date | -1, info?: string | null): false | undefined;
|
|
100
122
|
declare function getSkill(player: PlayerWithSkill, skillId: SKILL_NAMES, info?: string | null): PlayerSkill | false;
|
|
101
123
|
declare function hasUsedSkill(player: PlayerWithSkill, skill: SKILL_NAMES): boolean;
|
|
@@ -107,6 +129,7 @@ declare const isSelectPlayersSkills: (skill: SKILL_NAMES) => boolean;
|
|
|
107
129
|
declare const hasSkillForPlayer: (playerWithSkill: PlayerWithSkill, playerTarget: Player, skillId: SKILL_NAMES) => boolean;
|
|
108
130
|
declare function getStarLimit(teamPlayers: PlayerWithSkill[]): number;
|
|
109
131
|
declare function getSpecialistLimit(teamPlayers: PlayerWithSkill[]): number;
|
|
132
|
+
declare const SKILL_MIGRATION_2025: Record<SKILL_NAMES, boolean>;
|
|
110
133
|
declare function getSkillLimitSizeTeam(player: PlayerWithSkill, teamPlayers: PlayerWithSkill[]): SKILL_NAMES.BIG_GUY | SKILL_NAMES.SPECIALIST | SKILL_NAMES.STAR | null;
|
|
111
134
|
declare function getSkillDisplayedWithCarrer(): SKILL_NAMES[];
|
|
112
135
|
declare function getNoTurnoverSkill(): SKILL_NAMES[];
|
|
@@ -148,4 +171,4 @@ declare const helpSkillsToDisplay: {
|
|
|
148
171
|
};
|
|
149
172
|
};
|
|
150
173
|
declare const hasToAgilityJumpUp: (player: PlayerWithSkill) => boolean;
|
|
151
|
-
export { BIG_GUY_LIMIT, getDisturbingPresenceMalus, getNoTurnoverSkill, getPlayersWithSkill, getSkill, getSkillDisplayedWithCarrer, getSkillLimitSizeTeam, getSpecialistLimit, getStarLimit, hasSkill, hasSkillDisplayableInfo, hasSkillForPlayer, hasToAgilityJumpUp, hasUsedSkill, helpSkillsToDisplay, isActivableSkills, isNoTurnoverSkill, isSelectPlayersSkills, isSpecialSkill, SKILL_DURATION, SKILL_INFO_ACTIVE, SKILL_INFO_INACTIVE, SKILL_NAMES, SKILL_TYPE, SKILLS, useSkill, };
|
|
174
|
+
export { BIG_GUY_LIMIT, getDisturbingPresenceMalus, getNoTurnoverSkill, getPlayersWithSkill, getSkill, getSkillDisplayedWithCarrer, getSkillLimitSizeTeam, getSpecialistLimit, getStarLimit, hasSkill, hasSkillDisplayableInfo, hasSkillForPlayer, hasToAgilityJumpUp, hasUsedSkill, helpSkillsToDisplay, isActivableSkills, isNoTurnoverSkill, isSelectPlayersSkills, isSpecialSkill, SKILL_DURATION, SKILL_INFO_ACTIVE, SKILL_INFO_INACTIVE, SKILL_IS_2025, SKILL_MIGRATION_2025, SKILL_NAMES, SKILL_TYPE, SKILLS, useSkill, };
|