enefel 1.0.157 → 1.0.159

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/career.js CHANGED
@@ -133,9 +133,9 @@ const CAREER = {
133
133
  normalCoach: "G",
134
134
  icons: ["snotling-wagon1"],
135
135
  skills: [
136
- SKILL_NAMES.DIRTY_PLAYER,
136
+ [SKILL_NAMES.DIRTY_PLAYER, 1],
137
137
  SKILL_NAMES.JUGGERNAUT,
138
- SKILL_NAMES.MIGHTY_BLOW,
138
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
139
139
  SKILL_NAMES.REALLY_STUPID,
140
140
  SKILL_NAMES.STAND_FIRM,
141
141
  SKILL_NAMES.STAR,
@@ -158,7 +158,7 @@ const CAREER = {
158
158
  skills: [
159
159
  SKILL_NAMES.ALWAYS_HUNGRY,
160
160
  [SKILL_NAMES.LONER, 3],
161
- SKILL_NAMES.MIGHTY_BLOW,
161
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
162
162
  SKILL_NAMES.PROJECTILE_VOMIT,
163
163
  SKILL_NAMES.REALLY_STUPID,
164
164
  SKILL_NAMES.REGENERATION,
@@ -240,7 +240,7 @@ const CAREER = {
240
240
  SKILL_NAMES.DISTURBING_PRESENCE,
241
241
  SKILL_NAMES.FOUL_APPEARANCE,
242
242
  [SKILL_NAMES.LONER, 4],
243
- SKILL_NAMES.MIGHTY_BLOW,
243
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
244
244
  SKILL_NAMES.REGENERATION,
245
245
  SKILL_NAMES.PLAGUE_RIDDEN,
246
246
  SKILL_NAMES.REALLY_STUPID,
@@ -400,7 +400,7 @@ const CAREER = {
400
400
  SKILL_NAMES.FRENZY,
401
401
  SKILL_NAMES.BIG_GUY,
402
402
  [SKILL_NAMES.LONER, 4],
403
- SKILL_NAMES.MIGHTY_BLOW,
403
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
404
404
  SKILL_NAMES.UNCHANNELLED_FURY,
405
405
  ],
406
406
  avatars: [AVATAR.BLOODSPAWN],
@@ -489,7 +489,7 @@ const CAREER = {
489
489
  skills: [
490
490
  [SKILL_NAMES.LONER, 4],
491
491
  SKILL_NAMES.BONE_HEAD,
492
- SKILL_NAMES.MIGHTY_BLOW,
492
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
493
493
  SKILL_NAMES.THICK_SKULL,
494
494
  SKILL_NAMES.THROW_TEAM_MATE,
495
495
  SKILL_NAMES.BIG_GUY,
@@ -528,7 +528,7 @@ const CAREER = {
528
528
  SKILL_NAMES.BIG_GUY,
529
529
  SKILL_NAMES.ALWAYS_HUNGRY,
530
530
  [SKILL_NAMES.LONER, 3],
531
- SKILL_NAMES.MIGHTY_BLOW,
531
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
532
532
  SKILL_NAMES.PROJECTILE_VOMIT,
533
533
  SKILL_NAMES.REALLY_STUPID,
534
534
  SKILL_NAMES.REGENERATION,
@@ -683,7 +683,7 @@ const CAREER = {
683
683
  normalCoach: "G",
684
684
  icons: ["undead-mummies1"],
685
685
  skills: [
686
- SKILL_NAMES.MIGHTY_BLOW,
686
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
687
687
  SKILL_NAMES.REGENERATION,
688
688
  SKILL_NAMES.STAR,
689
689
  ],
@@ -756,7 +756,7 @@ const CAREER = {
756
756
  skills: [
757
757
  SKILL_NAMES.BONE_HEAD,
758
758
  [SKILL_NAMES.LONER, 4],
759
- SKILL_NAMES.MIGHTY_BLOW,
759
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
760
760
  SKILL_NAMES.PREHENSILE_TAIL,
761
761
  SKILL_NAMES.THICK_SKULL,
762
762
  SKILL_NAMES.BIG_GUY,
@@ -1007,7 +1007,7 @@ const CAREER = {
1007
1007
  skills: [
1008
1008
  SKILL_NAMES.BONE_HEAD,
1009
1009
  [SKILL_NAMES.LONER, 4],
1010
- SKILL_NAMES.MIGHTY_BLOW,
1010
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
1011
1011
  SKILL_NAMES.THICK_SKULL,
1012
1012
  SKILL_NAMES.THROW_TEAM_MATE,
1013
1013
  SKILL_NAMES.BIG_GUY,
@@ -1093,7 +1093,7 @@ const CAREER = {
1093
1093
  SKILL_NAMES.ALWAYS_HUNGRY,
1094
1094
  SKILL_NAMES.BIG_GUY,
1095
1095
  [SKILL_NAMES.LONER, 4],
1096
- SKILL_NAMES.MIGHTY_BLOW,
1096
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
1097
1097
  SKILL_NAMES.PROJECTILE_VOMIT,
1098
1098
  SKILL_NAMES.REALLY_STUPID,
1099
1099
  SKILL_NAMES.REGENERATION,
@@ -1181,6 +1181,31 @@ const CAREER = {
1181
1181
  range: 4,
1182
1182
  cost: 90,
1183
1183
  },
1184
+ deathroller: {
1185
+ MA: 4,
1186
+ ST: 7,
1187
+ AG: 1,
1188
+ AV: 10,
1189
+ normal: "S",
1190
+ double: "AG",
1191
+ normalCoach: "G",
1192
+ icons: ["dwarf-deathroller1"],
1193
+ skills: [
1194
+ SKILL_NAMES.BREAK_TACKLE,
1195
+ [SKILL_NAMES.DIRTY_PLAYER, 2],
1196
+ SKILL_NAMES.JUGGERNAUT,
1197
+ [SKILL_NAMES.LONER, 5],
1198
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
1199
+ SKILL_NAMES.NO_HANDS,
1200
+ SKILL_NAMES.SECRET_WEAPON,
1201
+ SKILL_NAMES.STAND_FIRM,
1202
+ SKILL_NAMES.BIG_GUY,
1203
+ ],
1204
+ avatars: [AVATAR.DWARF],
1205
+ badge: RACE.DWARF,
1206
+ range: 6,
1207
+ cost: 170,
1208
+ },
1184
1209
 
1185
1210
  // RAT
1186
1211
 
@@ -1258,7 +1283,7 @@ const CAREER = {
1258
1283
  SKILL_NAMES.ANIMAL_SAVAGERY,
1259
1284
  SKILL_NAMES.FRENZY,
1260
1285
  [SKILL_NAMES.LONER, 4],
1261
- SKILL_NAMES.MIGHTY_BLOW,
1286
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
1262
1287
  SKILL_NAMES.PREHENSILE_TAIL,
1263
1288
  ],
1264
1289
  avatars: [AVATAR.RAT_OGRE],
@@ -1385,7 +1410,7 @@ const CAREER = {
1385
1410
  [SKILL_NAMES.LONER, 4],
1386
1411
  SKILL_NAMES.FRENZY,
1387
1412
  SKILL_NAMES.HORNS,
1388
- SKILL_NAMES.MIGHTY_BLOW,
1413
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
1389
1414
  SKILL_NAMES.THICK_SKULL,
1390
1415
  SKILL_NAMES.UNCHANNELLED_FURY,
1391
1416
  SKILL_NAMES.BIG_GUY,
@@ -1583,7 +1608,7 @@ const CAREER = {
1583
1608
  icons: ["halfling-treeman1"],
1584
1609
  skills: [
1585
1610
  SKILL_NAMES.BIG_GUY,
1586
- SKILL_NAMES.MIGHTY_BLOW,
1611
+ [SKILL_NAMES.MIGHTY_BLOW, 1],
1587
1612
  SKILL_NAMES.STAND_FIRM,
1588
1613
  SKILL_NAMES.STRONG_ARM,
1589
1614
  SKILL_NAMES.THICK_SKULL,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "enefel",
3
- "version": "1.0.157",
3
+ "version": "1.0.159",
4
4
  "main": "index.js",
5
5
  "author": "Manest",
6
6
  "license": "MIT",
package/random.js CHANGED
@@ -10,6 +10,13 @@ function shuffleArray(array) {
10
10
  return [...array].sort(() => 0.5 - Math.random());
11
11
  }
12
12
 
13
+ function getRandomItem(arr) {
14
+ const randomIndex = Math.floor(Math.random() * arr.length);
15
+ const item = arr[randomIndex];
16
+
17
+ return item;
18
+ }
19
+
13
20
  const tools = {
14
21
  getRandomNumber: (min, max, r = Math.random) => {
15
22
  return Math.floor(r() * (max - min + 1)) + min;
@@ -28,5 +35,6 @@ const tools = {
28
35
  },
29
36
 
30
37
  shuffleArray,
38
+ getRandomItem,
31
39
  };
32
40
  module.exports = tools;
package/skill.js CHANGED
@@ -269,6 +269,8 @@ const hasSkillDisplayableInfo = (skillId) => {
269
269
  SKILL_NAMES.LONER,
270
270
  SKILL_NAMES.ANIMOSITY,
271
271
  SKILL_NAMES.CHAINSAW,
272
+ SKILL_NAMES.DIRTY_PLAYER,
273
+ SKILL_NAMES.MIGHTY_BLOW,
272
274
  ];
273
275
  return activables.includes(skillId);
274
276
  };
package/stadium.js CHANGED
@@ -4,6 +4,131 @@ const INITIAL_REROLL = 2;
4
4
  const MIN_SCRIMMAGE = 3; // TODO: in league param
5
5
  const MAX_LATERAL = 2;
6
6
 
7
+ const STADIUM_SIZE = {
8
+ SMALL: "s",
9
+ MEDIUM: "m",
10
+ LARGE: "l",
11
+ };
12
+ const TEAM_SIZE_SMALL = 5;
13
+ const TEAM_SIZE_MEDIUM = 8;
14
+ const TEAM_SIZE_LARGE = 11;
15
+
16
+ const STADIUM = {
17
+ [TEAM_SIZE_SMALL]: {
18
+ zone: `bddddddaaaaaahhhhhhfbddddddaaaaaahhhhhhfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbcccccjaaaaaakgggggfbeeeeeeaaaaaaiiiiiifbeeeeeeaaaaaaiiiiiif`,
19
+ type: `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`,
20
+ state: `0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`,
21
+ width: 20,
22
+ height: 11,
23
+ size: STADIUM_SIZE.SMALL,
24
+ },
25
+ [TEAM_SIZE_MEDIUM]: {
26
+ zone: `bddddddddaaaahhhhhhhhfbddddddddaaaahhhhhhhhfbddddddddaaaahhhhhhhhfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbcccccccjaaaakgggggggfbeeeeeeeeaaaaiiiiiiiifbeeeeeeeeaaaaiiiiiiiifbeeeeeeeeaaaaiiiiiiiif`,
27
+ type: `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`,
28
+ state: `0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`,
29
+ width: 22,
30
+ height: 13,
31
+ size: STADIUM_SIZE.MEDIUM,
32
+ },
33
+ [TEAM_SIZE_LARGE]: {
34
+ zone: `bddddddddddddhhhhhhhhhhhhfbddddddddddddhhhhhhhhhhhhfbddddddddddddhhhhhhhhhhhhfbddddddddddddhhhhhhhhhhhhfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbcccccccccccjkgggggggggggfbeeeeeeeeeeeeiiiiiiiiiiiifbeeeeeeeeeeeeiiiiiiiiiiiifbeeeeeeeeeeeeiiiiiiiiiiiifbeeeeeeeeeeeeiiiiiiiiiiiif`,
35
+ type: `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`,
36
+ state: `000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000`,
37
+ width: 26,
38
+ height: 15,
39
+ size: STADIUM_SIZE.LARGE,
40
+ },
41
+ };
42
+
43
+ const getStadiumSizeFromGame = (game) => {
44
+ for (const info of Object.values(STADIUM)) {
45
+ const { width, height, size } = info;
46
+ if (game.stadium_width === width && game.stadium_height === height) {
47
+ return size;
48
+ }
49
+ }
50
+ return null;
51
+ };
52
+
53
+ const getStadium = (size) => {
54
+ switch (size) {
55
+ case STADIUM_SIZE.MEDIUM:
56
+ return STADIUM[TEAM_SIZE_MEDIUM];
57
+ case STADIUM_SIZE.LARGE:
58
+ return STADIUM[TEAM_SIZE_LARGE];
59
+ case STADIUM_SIZE.SMALL:
60
+ return STADIUM[TEAM_SIZE_SMALL];
61
+ default:
62
+ return null;
63
+ }
64
+ };
65
+
66
+ const getStadiumTypeProperty = (size) => {
67
+ switch (size) {
68
+ case STADIUM_SIZE.MEDIUM:
69
+ return "stadium_type_m";
70
+ case STADIUM_SIZE.LARGE:
71
+ return "stadium_type_l";
72
+ default:
73
+ return "stadium_type_s";
74
+ }
75
+ };
76
+
77
+ const getStadiumStateProperty = (size) => {
78
+ switch (size) {
79
+ case STADIUM_SIZE.MEDIUM:
80
+ return "stadium_state_m";
81
+ case STADIUM_SIZE.LARGE:
82
+ return "stadium_state_l";
83
+ default:
84
+ return "stadium_state_s";
85
+ }
86
+ };
87
+
88
+ const getStadiumSizeFromTeams = (team1, team2) => {
89
+ if (
90
+ team1.players.length < TEAM_SIZE_MEDIUM ||
91
+ team2.players.length < TEAM_SIZE_MEDIUM
92
+ ) {
93
+ return STADIUM_SIZE.SMALL;
94
+ }
95
+ if (
96
+ team1.players.length < TEAM_SIZE_LARGE ||
97
+ team2.players.length < TEAM_SIZE_LARGE
98
+ ) {
99
+ return STADIUM_SIZE.MEDIUM;
100
+ }
101
+ return STADIUM_SIZE.LARGE;
102
+ };
103
+
104
+ const getTeamStadium = (team, size) => {
105
+ const result = {
106
+ zone: getStadium(size).zone,
107
+ height: getStadium(size).height,
108
+ width: getStadium(size).width,
109
+ };
110
+ switch (size) {
111
+ case STADIUM_SIZE.MEDIUM:
112
+ return {
113
+ ...result,
114
+ type: team.stadium_type_m,
115
+ state: team.stadium_state_m,
116
+ };
117
+ case STADIUM_SIZE.LARGE:
118
+ return {
119
+ ...result,
120
+ type: team.stadium_type_l,
121
+ state: team.stadium_state_l,
122
+ };
123
+ default:
124
+ return {
125
+ ...result,
126
+ type: team.stadium_type_s,
127
+ state: team.stadium_state_s,
128
+ };
129
+ }
130
+ };
131
+
7
132
  const TILES_STADIUM = {
8
133
  a: {
9
134
  y: 5,
@@ -48,17 +173,8 @@ const minHeight = 11;
48
173
  const maxHeight = 15;
49
174
  const priceSize = 20;
50
175
  const COACH_REROLL_COST = 50;
51
- const STORE_COST = 50;
52
176
  const MAX_STORE = 5;
53
177
 
54
- const getStoreCost = (team) => {
55
- if (team.stadiumStore >= MAX_STORE) {
56
- return Infinity;
57
- }
58
- // 50, 100, 200, 400, 800
59
- return STORE_COST * Math.pow(2, team.stadiumStore);
60
- };
61
-
62
178
  const getRerollCoachCost = (team) => {
63
179
  // 50, 100, 150, 200, 250
64
180
  return COACH_REROLL_COST * (team.rerollCoach + 1);
@@ -69,58 +185,30 @@ const getStadiumCapacityByGame = (game) => {
69
185
  };
70
186
 
71
187
  const getStadiumCapacity = (w, h) => {
72
- // Width : 20 22 24 26
73
188
  // Height: 11 13 15
74
- let nb = 7;
75
- if (w === 22) {
76
- nb += 1;
77
- } else if (w === 24) {
78
- nb += 2;
79
- } else if (w === 26) {
80
- nb += 3;
81
- }
189
+ let nb = 5;
190
+
82
191
  if (h === 13) {
83
- nb += 1;
192
+ nb += 3;
84
193
  } else if (h === 15) {
85
- nb += 2;
194
+ nb += 6;
86
195
  }
87
196
  return nb > 11 ? 11 : nb;
88
197
  };
89
198
 
90
199
  const getStadiumFan = (w, h) => {
91
- // Width : 20 22 24 26
92
- // Height: 11 13 15
93
- let nb = 7;
94
- if (w === 22) {
95
- nb += 4;
96
- } else if (w === 24) {
97
- nb += 8;
98
- } else if (w === 26) {
99
- nb += 12;
100
- }
101
- if (h === 13) {
102
- nb += 4;
103
- } else if (h === 15) {
104
- nb += 8;
105
- }
200
+ // No more limit?
201
+ let nb = 27;
106
202
  return nb;
107
203
  };
108
204
 
109
205
  const getStadiumReroll = (w, h) => {
110
- // Width : 20 22 24 26
111
- // Height: 11 13 15
112
206
  let nb = INITIAL_REROLL;
113
- if (w === 22) {
114
- nb += 1;
115
- } else if (w === 24) {
116
- nb += 2;
117
- } else if (w === 26) {
118
- nb += 3;
119
- }
207
+
120
208
  if (h === 13) {
121
- nb += 1;
122
- } else if (h === 15) {
123
209
  nb += 2;
210
+ } else if (h === 15) {
211
+ nb += 5;
124
212
  }
125
213
  return nb;
126
214
  };
@@ -232,12 +320,17 @@ function splitList(w, s) {
232
320
  module.exports = {
233
321
  addCenterZone,
234
322
  getRerollCoachCost,
323
+ getStadium,
235
324
  getStadiumCapacity,
236
325
  getStadiumCapacityByGame,
237
326
  getStadiumFan,
238
327
  getStadiumReroll,
239
328
  getStadiumRerollCoach,
240
- getStoreCost,
329
+ getStadiumSizeFromGame,
330
+ getStadiumSizeFromTeams,
331
+ getStadiumStateProperty,
332
+ getStadiumTypeProperty,
333
+ getTeamStadium,
241
334
  insertLine,
242
335
  insertTile,
243
336
  MAX_LATERAL,
@@ -251,5 +344,10 @@ module.exports = {
251
344
  removeLine,
252
345
  removeTile,
253
346
  STADIUM_REROLL_COACH_SUCCESS,
347
+ STADIUM_SIZE,
348
+ STADIUM,
254
349
  TILES_STADIUM,
350
+ TEAM_SIZE_SMALL,
351
+ TEAM_SIZE_MEDIUM,
352
+ TEAM_SIZE_LARGE,
255
353
  };