enefel 2.12.0 → 2.14.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.
@@ -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 les compétences spéciales communes à une race", () => {
7
+ it("devrait retourner un tableau de compétences spéciales (ou vide)", () => {
8
8
  const imperialSkills = getRaceSpecialSkills(RACE.IMPERIAL);
9
9
 
10
- // Imperial devrait avoir 'specialist' car 3/5 carrières l'ont
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 'star' pour Vampire", () => {
21
- const vampireSkills = getRaceSpecialSkills(RACE.VAMPIRE);
22
- expect(vampireSkills).toContain("star");
23
- });
24
-
25
- it("devrait retourner 'specialist' pour Amazon", () => {
26
- const amazonSkills = getRaceSpecialSkills(RACE.AMAZON);
27
- expect(amazonSkills).toContain("specialist");
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.length).toBeGreaterThan(0);
44
- expect(skills).toContain("specialist");
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 qui apparaissent dans au moins 50% des carrières", () => {
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
  });
@@ -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 les compétences spéciales communes à une race", () => {
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
- // Imperial devrait avoir 'specialist' car 3/5 carrières l'ont
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 'star' pour Vampire", () => {
19
- const vampireSkills = (0, race_1.getRaceSpecialSkills)(career_1.RACE.VAMPIRE);
20
- (0, globals_1.expect)(vampireSkills).toContain("star");
21
- });
22
- (0, globals_1.it)("devrait retourner 'specialist' pour Amazon", () => {
23
- const amazonSkills = (0, race_1.getRaceSpecialSkills)(career_1.RACE.AMAZON);
24
- (0, globals_1.expect)(amazonSkills).toContain("specialist");
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.length).toBeGreaterThan(0);
37
- (0, globals_1.expect)(skills).toContain("specialist");
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 qui apparaissent dans au moins 50% des carrières", () => {
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/index.d.ts CHANGED
@@ -123,6 +123,7 @@ declare const GAME_HISTORY_INFO: {
123
123
  BRIBE: string;
124
124
  CARAC_CHANGE: string;
125
125
  CASUALTY: string;
126
+ CROWD_SURF: string;
126
127
  DODGE: string;
127
128
  END_PO: string;
128
129
  END_POP: string;
package/dist/index.js CHANGED
@@ -158,6 +158,7 @@ const GAME_HISTORY_INFO = {
158
158
  BRIBE: "br",
159
159
  CARAC_CHANGE: "cc",
160
160
  CASUALTY: "ca",
161
+ CROWD_SURF: "crs",
161
162
  DODGE: "d",
162
163
  END_PO: "endpo",
163
164
  END_POP: "endpop",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "enefel",
3
- "version": "2.12.0",
3
+ "version": "2.14.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "enefel",
9
- "version": "2.12.0",
9
+ "version": "2.14.0",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "csv-parse": "^6.1.0",
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "enefel",
3
- "version": "2.12.0",
3
+ "version": "2.14.0",
4
4
  "description": "Fantasy Football game engine",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/dist/skill.d.ts CHANGED
@@ -22,6 +22,7 @@ declare enum SKILL_NAMES {
22
22
  BRAWLER = "brawler",
23
23
  BREATHE_FIRE = "breathe-fire",
24
24
  BREAK_TACKLE = "break-tackle",
25
+ BULLSEYE = "bullseye",
25
26
  CANNONEER = "cannoneer",
26
27
  CATCH = "catch",
27
28
  CHAINSAW = "chainsaw",
package/dist/skill.js CHANGED
@@ -53,7 +53,7 @@ var SKILL_NAMES;
53
53
  SKILL_NAMES["BRAWLER"] = "brawler";
54
54
  SKILL_NAMES["BREATHE_FIRE"] = "breathe-fire";
55
55
  SKILL_NAMES["BREAK_TACKLE"] = "break-tackle";
56
- // BULLSEYE = "bullseye",
56
+ SKILL_NAMES["BULLSEYE"] = "bullseye";
57
57
  SKILL_NAMES["CANNONEER"] = "cannoneer";
58
58
  SKILL_NAMES["CATCH"] = "catch";
59
59
  SKILL_NAMES["CHAINSAW"] = "chainsaw";
@@ -259,7 +259,7 @@ const SKILL_STRENGTH = [
259
259
  SKILL_NAMES.ARM_BAR,
260
260
  SKILL_NAMES.BRAWLER,
261
261
  SKILL_NAMES.BREAK_TACKLE,
262
- // SKILL_NAMES.BULLSEYE,
262
+ SKILL_NAMES.BULLSEYE,
263
263
  // SKILL_NAMES.GRAB,
264
264
  SKILL_NAMES.GUARD,
265
265
  SKILL_NAMES.JUGGERNAUT,
package/index.ts CHANGED
@@ -148,6 +148,7 @@ const GAME_HISTORY_INFO = {
148
148
  BRIBE: "br",
149
149
  CARAC_CHANGE: "cc",
150
150
  CASUALTY: "ca",
151
+ CROWD_SURF: "crs",
151
152
  DODGE: "d",
152
153
  END_PO: "endpo",
153
154
  END_POP: "endpop",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "enefel",
3
- "version": "2.12.0",
3
+ "version": "2.14.0",
4
4
  "description": "Fantasy Football game engine",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/skill.ts CHANGED
@@ -40,7 +40,7 @@ enum SKILL_NAMES {
40
40
  BRAWLER = "brawler",
41
41
  BREATHE_FIRE = "breathe-fire",
42
42
  BREAK_TACKLE = "break-tackle",
43
- // BULLSEYE = "bullseye",
43
+ BULLSEYE = "bullseye",
44
44
  CANNONEER = "cannoneer",
45
45
  CATCH = "catch",
46
46
  CHAINSAW = "chainsaw",
@@ -252,7 +252,7 @@ const SKILL_STRENGTH: SKILL_NAMES[] = [
252
252
  SKILL_NAMES.ARM_BAR,
253
253
  SKILL_NAMES.BRAWLER,
254
254
  SKILL_NAMES.BREAK_TACKLE,
255
- // SKILL_NAMES.BULLSEYE,
255
+ SKILL_NAMES.BULLSEYE,
256
256
  // SKILL_NAMES.GRAB,
257
257
  SKILL_NAMES.GUARD,
258
258
  SKILL_NAMES.JUGGERNAUT,