enefel 2.2.4 → 2.4.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/dist/index.js +2 -1
- package/dist/item.d.ts +4 -2
- package/dist/item.js +3 -1
- package/dist/itemUsage.d.ts +11 -0
- package/dist/itemUsage.js +47 -0
- package/dist/package-lock.json +2 -2
- package/dist/package.json +1 -1
- package/dist/race.js +1 -1
- package/dist/types/models.d.ts +3 -0
- package/index.ts +1 -0
- package/item.ts +3 -1
- package/itemUsage.ts +69 -0
- package/package.json +1 -1
- package/player.ts +0 -2
- package/race.ts +1 -1
- package/types/models.ts +3 -0
package/dist/index.js
CHANGED
|
@@ -721,7 +721,8 @@ function canPass(player, playerTeam, playerIdWithBall) {
|
|
|
721
721
|
player.id === playerIdWithBall);
|
|
722
722
|
}
|
|
723
723
|
function canEndTurn(player, game) {
|
|
724
|
-
return (player
|
|
724
|
+
return ((0, status_1.hasStatusOnField)(player) &&
|
|
725
|
+
player.date_next_action === null &&
|
|
725
726
|
(player.has_action === false || (0, player_1.hasMove)(player, game)));
|
|
726
727
|
}
|
|
727
728
|
function canThrowTeamMate(player, target, playerTeam) {
|
package/dist/item.d.ts
CHANGED
|
@@ -12,7 +12,9 @@ declare enum ITEM_ID {
|
|
|
12
12
|
DRUG = "drug",
|
|
13
13
|
GREEN_PILL = "green-pill",
|
|
14
14
|
NEWSPAPER = "newspaper",
|
|
15
|
-
BOOSTER = "booster"
|
|
15
|
+
BOOSTER = "booster",
|
|
16
|
+
ENERGY_GEL = "energy-gel",
|
|
17
|
+
SMELLING_SALTS = "smelling-salts"
|
|
16
18
|
}
|
|
17
19
|
declare enum ITEM_TYPE {
|
|
18
20
|
CONSUMABLE = "consumable",
|
|
@@ -20,4 +22,4 @@ declare enum ITEM_TYPE {
|
|
|
20
22
|
FILE = "file"
|
|
21
23
|
}
|
|
22
24
|
declare const getQteFromRarity: (rarity: RARITY) => 1 | 10 | 100 | 1000 | 10000 | undefined;
|
|
23
|
-
export {
|
|
25
|
+
export { ITEM_ID, ITEM_TYPE, RARITY, getQteFromRarity };
|
package/dist/item.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getQteFromRarity = exports.RARITY = exports.ITEM_TYPE = exports.ITEM_ID = void 0;
|
|
4
4
|
var RARITY;
|
|
5
5
|
(function (RARITY) {
|
|
6
6
|
RARITY["COMMUN"] = "c";
|
|
@@ -18,6 +18,8 @@ var ITEM_ID;
|
|
|
18
18
|
ITEM_ID["GREEN_PILL"] = "green-pill";
|
|
19
19
|
ITEM_ID["NEWSPAPER"] = "newspaper";
|
|
20
20
|
ITEM_ID["BOOSTER"] = "booster";
|
|
21
|
+
ITEM_ID["ENERGY_GEL"] = "energy-gel";
|
|
22
|
+
ITEM_ID["SMELLING_SALTS"] = "smelling-salts";
|
|
21
23
|
})(ITEM_ID || (exports.ITEM_ID = ITEM_ID = {}));
|
|
22
24
|
var ITEM_TYPE;
|
|
23
25
|
(function (ITEM_TYPE) {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Player } from "./types/models";
|
|
2
|
+
export interface TempCaracEffect {
|
|
3
|
+
t: number;
|
|
4
|
+
gainCarac?: string;
|
|
5
|
+
loseCarac?: string;
|
|
6
|
+
moralePenalty?: number;
|
|
7
|
+
itemId?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const countItemUsagesInKickoff: (player: Player, itemId: string) => number;
|
|
10
|
+
export declare const canUseItem: (player: Player, itemId: string, maxUsesPerKickoff?: number) => boolean;
|
|
11
|
+
export declare const getRemainingUsages: (player: Player, itemId: string, maxUsesPerKickoff?: number) => number;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRemainingUsages = exports.canUseItem = exports.countItemUsagesInKickoff = void 0;
|
|
4
|
+
const item_1 = require("item");
|
|
5
|
+
const status_1 = require("status");
|
|
6
|
+
const countItemUsagesInKickoff = (player, itemId) => {
|
|
7
|
+
if (!player.tempCarac) {
|
|
8
|
+
return 0;
|
|
9
|
+
}
|
|
10
|
+
let tempCarac;
|
|
11
|
+
try {
|
|
12
|
+
tempCarac = JSON.parse(player.tempCarac);
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
return 0;
|
|
16
|
+
}
|
|
17
|
+
let count = 0;
|
|
18
|
+
for (const effect of Object.values(tempCarac)) {
|
|
19
|
+
// Compter tous les effets liés à cet item
|
|
20
|
+
if (effect.itemId === itemId) {
|
|
21
|
+
count++;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return count;
|
|
25
|
+
};
|
|
26
|
+
exports.countItemUsagesInKickoff = countItemUsagesInKickoff;
|
|
27
|
+
const canUseItem = (player, itemId, maxUsesPerKickoff) => {
|
|
28
|
+
if (maxUsesPerKickoff && maxUsesPerKickoff > 0) {
|
|
29
|
+
const currentUsages = (0, exports.countItemUsagesInKickoff)(player, itemId);
|
|
30
|
+
if (currentUsages >= maxUsesPerKickoff) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (itemId === item_1.ITEM_ID.SMELLING_SALTS) {
|
|
35
|
+
return player.status === status_1.PLAYER_STATUS.KO;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
};
|
|
39
|
+
exports.canUseItem = canUseItem;
|
|
40
|
+
const getRemainingUsages = (player, itemId, maxUsesPerKickoff) => {
|
|
41
|
+
if (!maxUsesPerKickoff || maxUsesPerKickoff <= 0) {
|
|
42
|
+
return -1; // Pas de limite
|
|
43
|
+
}
|
|
44
|
+
const currentUsages = (0, exports.countItemUsagesInKickoff)(player, itemId);
|
|
45
|
+
return Math.max(0, maxUsesPerKickoff - currentUsages);
|
|
46
|
+
};
|
|
47
|
+
exports.getRemainingUsages = getRemainingUsages;
|
package/dist/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "enefel",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "enefel",
|
|
9
|
-
"version": "2.
|
|
9
|
+
"version": "2.4.0",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"seedrandom": "3.0.5",
|
package/dist/package.json
CHANGED
package/dist/race.js
CHANGED
|
@@ -174,7 +174,7 @@ const getPlayerAvatarPath = (player) => {
|
|
|
174
174
|
exports.getPlayerAvatarPath = getPlayerAvatarPath;
|
|
175
175
|
const getRaceFromCareer = (careerId) => {
|
|
176
176
|
const career = getCareerFromKey(careerId);
|
|
177
|
-
return career
|
|
177
|
+
return career?.badge;
|
|
178
178
|
};
|
|
179
179
|
exports.getRaceFromCareer = getRaceFromCareer;
|
|
180
180
|
const getAvatarTypeFromPlayer = (player, avatarFile) => {
|
package/dist/types/models.d.ts
CHANGED
|
@@ -120,6 +120,8 @@ export interface Player extends Point {
|
|
|
120
120
|
prevY: number | null;
|
|
121
121
|
hasEndTurn: boolean;
|
|
122
122
|
canUseSkills?: boolean;
|
|
123
|
+
stats?: Stat[];
|
|
124
|
+
team?: Team;
|
|
123
125
|
}
|
|
124
126
|
export interface PlayerWithSkill extends Player {
|
|
125
127
|
skills: PlayerSkill[];
|
|
@@ -198,6 +200,7 @@ export interface Item {
|
|
|
198
200
|
y: number;
|
|
199
201
|
type: string;
|
|
200
202
|
forUser?: boolean;
|
|
203
|
+
maxUsesPerKickoff?: number;
|
|
201
204
|
}
|
|
202
205
|
export interface UserItem {
|
|
203
206
|
id: string;
|
package/index.ts
CHANGED
package/item.ts
CHANGED
|
@@ -14,6 +14,8 @@ enum ITEM_ID {
|
|
|
14
14
|
GREEN_PILL = "green-pill",
|
|
15
15
|
NEWSPAPER = "newspaper",
|
|
16
16
|
BOOSTER = "booster",
|
|
17
|
+
ENERGY_GEL = "energy-gel",
|
|
18
|
+
SMELLING_SALTS = "smelling-salts",
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
enum ITEM_TYPE {
|
|
@@ -40,4 +42,4 @@ const getQteFromRarity = (rarity: RARITY) => {
|
|
|
40
42
|
}
|
|
41
43
|
};
|
|
42
44
|
|
|
43
|
-
export {
|
|
45
|
+
export { ITEM_ID, ITEM_TYPE, RARITY, getQteFromRarity };
|
package/itemUsage.ts
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ITEM_ID } from "item";
|
|
2
|
+
import { PLAYER_STATUS } from "status";
|
|
3
|
+
import { Player } from "./types/models";
|
|
4
|
+
|
|
5
|
+
export interface TempCaracEffect {
|
|
6
|
+
t: number;
|
|
7
|
+
gainCarac?: string;
|
|
8
|
+
loseCarac?: string;
|
|
9
|
+
moralePenalty?: number;
|
|
10
|
+
itemId?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const countItemUsagesInKickoff = (
|
|
14
|
+
player: Player,
|
|
15
|
+
itemId: string
|
|
16
|
+
): number => {
|
|
17
|
+
if (!player.tempCarac) {
|
|
18
|
+
return 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let tempCarac: Record<string, TempCaracEffect>;
|
|
22
|
+
try {
|
|
23
|
+
tempCarac = JSON.parse(player.tempCarac);
|
|
24
|
+
} catch (e) {
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
let count = 0;
|
|
29
|
+
for (const effect of Object.values(tempCarac)) {
|
|
30
|
+
// Compter tous les effets liés à cet item
|
|
31
|
+
if (effect.itemId === itemId) {
|
|
32
|
+
count++;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return count;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const canUseItem = (
|
|
40
|
+
player: Player,
|
|
41
|
+
itemId: string,
|
|
42
|
+
maxUsesPerKickoff?: number
|
|
43
|
+
): boolean => {
|
|
44
|
+
if (maxUsesPerKickoff && maxUsesPerKickoff > 0) {
|
|
45
|
+
const currentUsages = countItemUsagesInKickoff(player, itemId);
|
|
46
|
+
if (currentUsages >= maxUsesPerKickoff) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (itemId === ITEM_ID.SMELLING_SALTS) {
|
|
52
|
+
return player.status === PLAYER_STATUS.KO;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return true;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const getRemainingUsages = (
|
|
59
|
+
player: Player,
|
|
60
|
+
itemId: string,
|
|
61
|
+
maxUsesPerKickoff?: number
|
|
62
|
+
): number => {
|
|
63
|
+
if (!maxUsesPerKickoff || maxUsesPerKickoff <= 0) {
|
|
64
|
+
return -1; // Pas de limite
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const currentUsages = countItemUsagesInKickoff(player, itemId);
|
|
68
|
+
return Math.max(0, maxUsesPerKickoff - currentUsages);
|
|
69
|
+
};
|
package/package.json
CHANGED
package/player.ts
CHANGED
|
@@ -164,10 +164,8 @@ function getMaxAG(player: Player, game: Game) {
|
|
|
164
164
|
|
|
165
165
|
function getMaxMA(player: Player, game: Game) {
|
|
166
166
|
let c = getMaxCommun(player, PLAYER_CARAC.MA, game);
|
|
167
|
-
|
|
168
167
|
if (game) {
|
|
169
168
|
const maxMA = meteoMaxMA(game.meteo);
|
|
170
|
-
|
|
171
169
|
if (c > maxMA) {
|
|
172
170
|
c = maxMA;
|
|
173
171
|
}
|
package/race.ts
CHANGED
|
@@ -168,7 +168,7 @@ const getPlayerAvatarPath = (player: Player) => {
|
|
|
168
168
|
|
|
169
169
|
const getRaceFromCareer = (careerId: CAREER_ID) => {
|
|
170
170
|
const career = getCareerFromKey(careerId);
|
|
171
|
-
return career
|
|
171
|
+
return career?.badge;
|
|
172
172
|
};
|
|
173
173
|
|
|
174
174
|
const getAvatarTypeFromPlayer = (player: Player, avatarFile: string) => {
|
package/types/models.ts
CHANGED
|
@@ -124,6 +124,8 @@ export interface Player extends Point {
|
|
|
124
124
|
prevY: number | null; // add by Game
|
|
125
125
|
hasEndTurn: boolean; // add by Game
|
|
126
126
|
canUseSkills?: boolean; // add by Game
|
|
127
|
+
stats?: Stat[];
|
|
128
|
+
team?: Team;
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
export interface PlayerWithSkill extends Player {
|
|
@@ -208,6 +210,7 @@ export interface Item {
|
|
|
208
210
|
y: number;
|
|
209
211
|
type: string;
|
|
210
212
|
forUser?: boolean;
|
|
213
|
+
maxUsesPerKickoff?: number;
|
|
211
214
|
}
|
|
212
215
|
|
|
213
216
|
export interface UserItem {
|