enefel 2.11.16 → 2.13.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/2025/newSkills.ts +1 -1
- package/__tests__/getRaceSpecialSkills.test.ts +25 -23
- package/dist/2025/newSkills.js +1 -1
- package/dist/__tests__/getRaceSpecialSkills.test.js +24 -20
- package/dist/package-lock.json +2 -2
- package/dist/package.json +1 -1
- package/dist/skill.d.ts +1 -0
- package/dist/skill.js +2 -2
- package/npm-publish.sh +8 -1
- package/package.json +1 -1
- package/skill.ts +2 -2
package/2025/newSkills.ts
CHANGED
|
@@ -181,7 +181,7 @@ export const newSkills: NewSkill[] = [
|
|
|
181
181
|
family: "Devious",
|
|
182
182
|
mode: "Active",
|
|
183
183
|
summary:
|
|
184
|
-
"Gagne des
|
|
184
|
+
"Gagne des PSP quand une Action Spéciale de ce joueur cause une Élimination. Réservé aux joueurs ayant un Trait d'Action Spéciale.",
|
|
185
185
|
},
|
|
186
186
|
{
|
|
187
187
|
name: "Block",
|
|
@@ -4,32 +4,27 @@ import { getRaceFromCareer, getRaceSpecialSkills } from "../race";
|
|
|
4
4
|
import { isSpecialSkill, SKILL_NAMES } from "../skill";
|
|
5
5
|
|
|
6
6
|
describe("getRaceSpecialSkills", () => {
|
|
7
|
-
it("devrait retourner
|
|
7
|
+
it("devrait retourner un tableau de compétences spéciales (ou vide)", () => {
|
|
8
8
|
const imperialSkills = getRaceSpecialSkills(RACE.IMPERIAL);
|
|
9
9
|
|
|
10
|
-
//
|
|
11
|
-
expect(imperialSkills).toContain("specialist");
|
|
12
|
-
expect(imperialSkills.length).toBeGreaterThan(0);
|
|
13
|
-
|
|
14
|
-
// Vérifier que toutes les compétences retournées sont bien spéciales
|
|
10
|
+
// Toutes les compétences retournées doivent être spéciales
|
|
15
11
|
imperialSkills.forEach((skill) => {
|
|
16
12
|
expect(isSpecialSkill(skill as SKILL_NAMES)).toBe(true);
|
|
17
13
|
});
|
|
18
14
|
});
|
|
19
15
|
|
|
20
|
-
it("devrait retourner '
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
16
|
+
it("ne devrait jamais retourner 'specialist' ou 'big-guy' (traits individuels, pas raciaux)", () => {
|
|
17
|
+
// Tester sur plusieurs races
|
|
18
|
+
const races = [RACE.IMPERIAL, RACE.VAMPIRE, RACE.AMAZON, RACE.HUMAN, RACE.ORC];
|
|
19
|
+
races.forEach((race) => {
|
|
20
|
+
const skills = getRaceSpecialSkills(race);
|
|
21
|
+
expect(skills).not.toContain("specialist");
|
|
22
|
+
expect(skills).not.toContain("big-guy");
|
|
23
|
+
});
|
|
28
24
|
});
|
|
29
25
|
|
|
30
26
|
it("devrait retourner un tableau vide pour une race sans compétences spéciales communes", () => {
|
|
31
27
|
const humanSkills = getRaceSpecialSkills(RACE.HUMAN);
|
|
32
|
-
// Human n'a pas de compétences spéciales communes à toutes les carrières
|
|
33
28
|
expect(Array.isArray(humanSkills)).toBe(true);
|
|
34
29
|
});
|
|
35
30
|
|
|
@@ -40,19 +35,26 @@ describe("getRaceSpecialSkills", () => {
|
|
|
40
35
|
expect(race).toBe(RACE.IMPERIAL);
|
|
41
36
|
|
|
42
37
|
const skills = getRaceSpecialSkills(race!);
|
|
43
|
-
expect(skills
|
|
44
|
-
|
|
38
|
+
expect(Array.isArray(skills)).toBe(true);
|
|
39
|
+
// Toutes les compétences retournées sont spéciales
|
|
40
|
+
skills.forEach((skill) => {
|
|
41
|
+
expect(isSpecialSkill(skill as SKILL_NAMES)).toBe(true);
|
|
42
|
+
});
|
|
45
43
|
});
|
|
46
44
|
|
|
47
|
-
it("devrait retourner les compétences
|
|
45
|
+
it("ne devrait retourner que les compétences présentes dans au moins 50% des carrières", () => {
|
|
48
46
|
const imperialSkills = getRaceSpecialSkills(RACE.IMPERIAL);
|
|
49
47
|
|
|
50
|
-
// Imperial a 5 carrières, donc le seuil est 3 (50% de 5 = 2.5, arrondi à 3)
|
|
51
|
-
// 'specialist' apparaît dans 3 carrières (thrower, blitzer, bodyguard)
|
|
52
|
-
// Donc 'specialist' devrait être retourné
|
|
53
|
-
expect(imperialSkills).toContain("specialist");
|
|
54
|
-
|
|
55
48
|
// 'big-guy' apparaît seulement dans 1 carrière (ogre), donc ne devrait pas être retourné
|
|
56
49
|
expect(imperialSkills).not.toContain("big-guy");
|
|
50
|
+
// 'specialist' est toujours filtré
|
|
51
|
+
expect(imperialSkills).not.toContain("specialist");
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it("devrait retourner un tableau (pas undefined/null) pour toutes les races", () => {
|
|
55
|
+
Object.values(RACE).forEach((race) => {
|
|
56
|
+
const skills = getRaceSpecialSkills(race as RACE);
|
|
57
|
+
expect(Array.isArray(skills)).toBe(true);
|
|
58
|
+
});
|
|
57
59
|
});
|
|
58
60
|
});
|
package/dist/2025/newSkills.js
CHANGED
|
@@ -145,7 +145,7 @@ exports.newSkills = [
|
|
|
145
145
|
name: "Violent Innovator",
|
|
146
146
|
family: "Devious",
|
|
147
147
|
mode: "Active",
|
|
148
|
-
summary: "Gagne des
|
|
148
|
+
summary: "Gagne des PSP quand une Action Spéciale de ce joueur cause une Élimination. Réservé aux joueurs ayant un Trait d'Action Spéciale.",
|
|
149
149
|
},
|
|
150
150
|
{
|
|
151
151
|
name: "Block",
|
|
@@ -5,27 +5,24 @@ const career_1 = require("../career");
|
|
|
5
5
|
const race_1 = require("../race");
|
|
6
6
|
const skill_1 = require("../skill");
|
|
7
7
|
(0, globals_1.describe)("getRaceSpecialSkills", () => {
|
|
8
|
-
(0, globals_1.it)("devrait retourner
|
|
8
|
+
(0, globals_1.it)("devrait retourner un tableau de compétences spéciales (ou vide)", () => {
|
|
9
9
|
const imperialSkills = (0, race_1.getRaceSpecialSkills)(career_1.RACE.IMPERIAL);
|
|
10
|
-
//
|
|
11
|
-
(0, globals_1.expect)(imperialSkills).toContain("specialist");
|
|
12
|
-
(0, globals_1.expect)(imperialSkills.length).toBeGreaterThan(0);
|
|
13
|
-
// Vérifier que toutes les compétences retournées sont bien spéciales
|
|
10
|
+
// Toutes les compétences retournées doivent être spéciales
|
|
14
11
|
imperialSkills.forEach((skill) => {
|
|
15
12
|
(0, globals_1.expect)((0, skill_1.isSpecialSkill)(skill)).toBe(true);
|
|
16
13
|
});
|
|
17
14
|
});
|
|
18
|
-
(0, globals_1.it)("devrait retourner '
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
(0, globals_1.it)("ne devrait jamais retourner 'specialist' ou 'big-guy' (traits individuels, pas raciaux)", () => {
|
|
16
|
+
// Tester sur plusieurs races
|
|
17
|
+
const races = [career_1.RACE.IMPERIAL, career_1.RACE.VAMPIRE, career_1.RACE.AMAZON, career_1.RACE.HUMAN, career_1.RACE.ORC];
|
|
18
|
+
races.forEach((race) => {
|
|
19
|
+
const skills = (0, race_1.getRaceSpecialSkills)(race);
|
|
20
|
+
(0, globals_1.expect)(skills).not.toContain("specialist");
|
|
21
|
+
(0, globals_1.expect)(skills).not.toContain("big-guy");
|
|
22
|
+
});
|
|
25
23
|
});
|
|
26
24
|
(0, globals_1.it)("devrait retourner un tableau vide pour une race sans compétences spéciales communes", () => {
|
|
27
25
|
const humanSkills = (0, race_1.getRaceSpecialSkills)(career_1.RACE.HUMAN);
|
|
28
|
-
// Human n'a pas de compétences spéciales communes à toutes les carrières
|
|
29
26
|
(0, globals_1.expect)(Array.isArray(humanSkills)).toBe(true);
|
|
30
27
|
});
|
|
31
28
|
(0, globals_1.it)("devrait fonctionner avec un RACE obtenu depuis un CAREER_ID", () => {
|
|
@@ -33,16 +30,23 @@ const skill_1 = require("../skill");
|
|
|
33
30
|
const race = (0, race_1.getRaceFromCareer)(careerId);
|
|
34
31
|
(0, globals_1.expect)(race).toBe(career_1.RACE.IMPERIAL);
|
|
35
32
|
const skills = (0, race_1.getRaceSpecialSkills)(race);
|
|
36
|
-
(0, globals_1.expect)(skills
|
|
37
|
-
|
|
33
|
+
(0, globals_1.expect)(Array.isArray(skills)).toBe(true);
|
|
34
|
+
// Toutes les compétences retournées sont spéciales
|
|
35
|
+
skills.forEach((skill) => {
|
|
36
|
+
(0, globals_1.expect)((0, skill_1.isSpecialSkill)(skill)).toBe(true);
|
|
37
|
+
});
|
|
38
38
|
});
|
|
39
|
-
(0, globals_1.it)("devrait retourner les compétences
|
|
39
|
+
(0, globals_1.it)("ne devrait retourner que les compétences présentes dans au moins 50% des carrières", () => {
|
|
40
40
|
const imperialSkills = (0, race_1.getRaceSpecialSkills)(career_1.RACE.IMPERIAL);
|
|
41
|
-
// Imperial a 5 carrières, donc le seuil est 3 (50% de 5 = 2.5, arrondi à 3)
|
|
42
|
-
// 'specialist' apparaît dans 3 carrières (thrower, blitzer, bodyguard)
|
|
43
|
-
// Donc 'specialist' devrait être retourné
|
|
44
|
-
(0, globals_1.expect)(imperialSkills).toContain("specialist");
|
|
45
41
|
// 'big-guy' apparaît seulement dans 1 carrière (ogre), donc ne devrait pas être retourné
|
|
46
42
|
(0, globals_1.expect)(imperialSkills).not.toContain("big-guy");
|
|
43
|
+
// 'specialist' est toujours filtré
|
|
44
|
+
(0, globals_1.expect)(imperialSkills).not.toContain("specialist");
|
|
45
|
+
});
|
|
46
|
+
(0, globals_1.it)("devrait retourner un tableau (pas undefined/null) pour toutes les races", () => {
|
|
47
|
+
Object.values(career_1.RACE).forEach((race) => {
|
|
48
|
+
const skills = (0, race_1.getRaceSpecialSkills)(race);
|
|
49
|
+
(0, globals_1.expect)(Array.isArray(skills)).toBe(true);
|
|
50
|
+
});
|
|
47
51
|
});
|
|
48
52
|
});
|
package/dist/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "enefel",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.13.0",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "enefel",
|
|
9
|
-
"version": "2.
|
|
9
|
+
"version": "2.13.0",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"csv-parse": "^6.1.0",
|
package/dist/package.json
CHANGED
package/dist/skill.d.ts
CHANGED
package/dist/skill.js
CHANGED
|
@@ -146,7 +146,7 @@ var SKILL_NAMES;
|
|
|
146
146
|
SKILL_NAMES["UNCHANNELLED_FURY"] = "unchannelled-fury";
|
|
147
147
|
SKILL_NAMES["UNSTEADY"] = "unsteady";
|
|
148
148
|
SKILL_NAMES["VERY_LONG_LEGS"] = "very-long-legs";
|
|
149
|
-
|
|
149
|
+
SKILL_NAMES["VIOLENT_INNOVATOR"] = "violent-innovator";
|
|
150
150
|
SKILL_NAMES["WRESTLE"] = "wrestle";
|
|
151
151
|
SKILL_NAMES["DIVING_CATCH"] = "diving-catch";
|
|
152
152
|
})(SKILL_NAMES || (exports.SKILL_NAMES = SKILL_NAMES = {}));
|
|
@@ -281,7 +281,7 @@ const SKILL_DEVIOUS = [
|
|
|
281
281
|
// SKILL_NAMES.SABOTEUR,
|
|
282
282
|
SKILL_NAMES.SHADOWING,
|
|
283
283
|
SKILL_NAMES.SNEAKY_GIT,
|
|
284
|
-
|
|
284
|
+
SKILL_NAMES.VIOLENT_INNOVATOR,
|
|
285
285
|
];
|
|
286
286
|
const SKILL_SPECIAL = [
|
|
287
287
|
SKILL_NAMES.BIG_GUY,
|
package/npm-publish.sh
CHANGED
|
@@ -74,7 +74,14 @@ npm publish
|
|
|
74
74
|
# Vérifier si la publication a réussi
|
|
75
75
|
if [ $? -eq 0 ]; then
|
|
76
76
|
echo -e "${GREEN}Package publié avec succès !${NC}"
|
|
77
|
-
|
|
77
|
+
|
|
78
|
+
# Tag git pour marquer la version publiée (utilisé par build.sh pour détecter les changements)
|
|
79
|
+
PUBLISHED_VERSION=$(node -p "require('./package.json').version")
|
|
80
|
+
cd ..
|
|
81
|
+
git tag "enefel-v${PUBLISHED_VERSION}"
|
|
82
|
+
echo -e "${GREEN}Tag git enefel-v${PUBLISHED_VERSION} créé${NC}"
|
|
83
|
+
cd enefel
|
|
84
|
+
|
|
78
85
|
# Afficher les informations sur le package
|
|
79
86
|
echo -e "${BLUE}Informations sur le package :${NC}"
|
|
80
87
|
npm view
|
package/package.json
CHANGED
package/skill.ts
CHANGED
|
@@ -133,7 +133,7 @@ enum SKILL_NAMES {
|
|
|
133
133
|
UNCHANNELLED_FURY = "unchannelled-fury",
|
|
134
134
|
UNSTEADY = "unsteady",
|
|
135
135
|
VERY_LONG_LEGS = "very-long-legs",
|
|
136
|
-
|
|
136
|
+
VIOLENT_INNOVATOR = "violent-innovator",
|
|
137
137
|
WRESTLE = "wrestle",
|
|
138
138
|
DIVING_CATCH = "diving-catch",
|
|
139
139
|
}
|
|
@@ -275,7 +275,7 @@ const SKILL_DEVIOUS: SKILL_NAMES[] = [
|
|
|
275
275
|
// SKILL_NAMES.SABOTEUR,
|
|
276
276
|
SKILL_NAMES.SHADOWING,
|
|
277
277
|
SKILL_NAMES.SNEAKY_GIT,
|
|
278
|
-
|
|
278
|
+
SKILL_NAMES.VIOLENT_INNOVATOR,
|
|
279
279
|
];
|
|
280
280
|
|
|
281
281
|
const SKILL_SPECIAL: SKILL_NAMES[] = [
|