enefel 1.0.88 → 1.0.92

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/index.js CHANGED
@@ -823,6 +823,13 @@ function canFaceUp(player) {
823
823
 
824
824
  // *************************** Field *****************************
825
825
 
826
+ function isGameRunning(game) {
827
+ return (
828
+ game.status === GAME_STATUS.BEFORE ||
829
+ game.status === GAME_STATUS.ONGOING ||
830
+ game.status === GAME_STATUS.TD
831
+ );
832
+ }
826
833
  function isSetUp(game) {
827
834
  return game.status === GAME_STATUS.BEFORE || game.status === GAME_STATUS.TD;
828
835
  }
@@ -905,6 +912,7 @@ module.exports = {
905
912
  INITIAL_REROLL,
906
913
  isAdjacent,
907
914
  isCoach,
915
+ isGameRunning,
908
916
  isOnField,
909
917
  isOnLine,
910
918
  isSamePlayer,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "enefel",
3
- "version": "1.0.88",
3
+ "version": "1.0.92",
4
4
  "main": "index.js",
5
5
  "author": "Manest",
6
6
  "license": "MIT",
@@ -9,6 +9,7 @@
9
9
  },
10
10
  "scripts": {
11
11
  "test": "jest"
12
+
12
13
  },
13
14
  "dependencies": {
14
15
  "yup": "^0.28.5"
package/race.js CHANGED
@@ -18,6 +18,64 @@ const { SKILL_NAMES } = require("./skill");
18
18
  // const ranges = [6, 16, 31, 51, 76, 176];
19
19
  // https://web.archive.org/web/20090403112513/http://enefel.org/carriere.php
20
20
  module.exports = {
21
+ // AMAZON
22
+ "amazon-linewomen": {
23
+ MA: 6,
24
+ ST: 3,
25
+ AG: 3,
26
+ AV: 8,
27
+ normal: "G",
28
+ double: "AS",
29
+ normalCoach: "G",
30
+ icons: ["amazon-linewomen1"],
31
+ skills: [SKILL_NAMES.DODGE],
32
+ badge: "amazon-career",
33
+ range: 0,
34
+ cost: 75,
35
+ },
36
+ "amazon-thrower": {
37
+ MA: 6,
38
+ ST: 3,
39
+ AG: 3,
40
+ AV: 8,
41
+ normal: "GP",
42
+ double: "AS",
43
+ normalCoach: "G",
44
+ icons: ["amazon-thrower1"],
45
+ skills: [SKILL_NAMES.PASS, SKILL_NAMES.DODGE, SKILL_NAMES.SPECIALIST],
46
+ badge: "amazon-career",
47
+ range: 1,
48
+ cost: 75,
49
+ },
50
+ "amazon-catcher": {
51
+ MA: 6,
52
+ ST: 3,
53
+ AG: 3,
54
+ AV: 8,
55
+ normal: "AG",
56
+ double: "S",
57
+ normalCoach: "G",
58
+ icons: ["amazon-catcher1"],
59
+ skills: [SKILL_NAMES.CATCH, SKILL_NAMES.DODGE, SKILL_NAMES.SPECIALIST],
60
+ badge: "amazon-career",
61
+ range: 2,
62
+ cost: 75,
63
+ },
64
+ "amazon-blitzer": {
65
+ MA: 6,
66
+ ST: 3,
67
+ AG: 3,
68
+ AV: 8,
69
+ normal: "GS",
70
+ double: "A",
71
+ normalCoach: "G",
72
+ icons: ["amazon-blitzer1"],
73
+ skills: [SKILL_NAMES.BLOCK, SKILL_NAMES.DODGE, SKILL_NAMES.SPECIALIST],
74
+ badge: "amazon-career",
75
+ range: 4,
76
+ cost: 90,
77
+ },
78
+
21
79
  // HUMAN
22
80
 
23
81
  "human-lineman": {
package/skill.js CHANGED
@@ -215,18 +215,35 @@ const isActivableSkills = (skill) => {
215
215
  return activables.includes(skill);
216
216
  };
217
217
 
218
+ function getStarLimit(teamPlayers) {
219
+ const specialists = getPlayersWithSkill(
220
+ teamPlayers,
221
+ SKILL_NAMES.SPECIALIST
222
+ ).length;
223
+ const extra =
224
+ specialists - SPECIALIST_LIMIT > 0 ? specialists - SPECIALIST_LIMIT : 0;
225
+ return STAR_LIMIT - extra;
226
+ }
227
+
228
+ function getSpecialistLimit(teamPlayers) {
229
+ const stars = getPlayersWithSkill(teamPlayers, SKILL_NAMES.STAR).length;
230
+ const extra = STAR_LIMIT - stars;
231
+ return SPECIALIST_LIMIT + extra;
232
+ }
233
+
218
234
  function getSkillLimitSizeTeam(player, teamPlayers) {
219
235
  let limitSkill = null;
220
236
  let skillToCheck = null;
221
- if (hasSkill(player, SKILL_NAMES.STAR)) {
222
- skillToCheck = SKILL_NAMES.STAR;
223
- limitSkill = STAR_LIMIT;
224
- } else if (hasSkill(player, SKILL_NAMES.BIG_GUY)) {
237
+
238
+ if (hasSkill(player, SKILL_NAMES.BIG_GUY)) {
225
239
  skillToCheck = SKILL_NAMES.BIG_GUY;
226
240
  limitSkill = BIG_GUY_LIMIT;
241
+ } else if (hasSkill(player, SKILL_NAMES.STAR)) {
242
+ skillToCheck = SKILL_NAMES.STAR;
243
+ limitSkill = getStarLimit(teamPlayers);
227
244
  } else if (hasSkill(player, SKILL_NAMES.SPECIALIST)) {
228
245
  skillToCheck = SKILL_NAMES.SPECIALIST;
229
- limitSkill = SPECIALIST_LIMIT;
246
+ limitSkill = getSpecialistLimit(teamPlayers);
230
247
  }
231
248
  if (skillToCheck) {
232
249
  const nb = getPlayersWithSkill(teamPlayers, skillToCheck).length;
@@ -239,16 +256,16 @@ function getSkillLimitSizeTeam(player, teamPlayers) {
239
256
 
240
257
  module.exports = {
241
258
  BIG_GUY_LIMIT,
242
- isActivableSkills,
243
259
  getPlayersWithSkill,
244
260
  getSkill,
245
261
  getSkillLimitSizeTeam,
262
+ getSpecialistLimit,
263
+ getStarLimit,
246
264
  hasSkill,
265
+ isActivableSkills,
266
+ SKILL_INFO_ACTIVE,
267
+ SKILL_INFO_INACTIVE,
247
268
  SKILL_NAMES,
248
269
  SKILLS,
249
- SPECIALIST_LIMIT,
250
- STAR_LIMIT,
251
270
  useSkill,
252
- SKILL_INFO_ACTIVE,
253
- SKILL_INFO_INACTIVE,
254
271
  };
package/stadium.js CHANGED
@@ -1,6 +1,9 @@
1
1
  const { INITIAL_REROLL, p } = require(".");
2
2
  const { d6 } = require("./random");
3
3
 
4
+ const MIN_SCRIMMAGE = 3; // TODO: in league param
5
+ const MAX_LATERAL = 2;
6
+
4
7
  const TILES_STADIUM = {
5
8
  a: {
6
9
  price: 0,
@@ -253,21 +256,23 @@ function splitList(w, s) {
253
256
 
254
257
  module.exports = {
255
258
  addCenterZone,
259
+ getRerollCoachCost,
256
260
  getStadiumCapacity,
257
261
  getStadiumCapacityByGame,
258
262
  getStadiumFan,
259
263
  getStadiumReroll,
264
+ getStadiumRerollCoach,
260
265
  insertLine,
261
266
  insertTile,
267
+ MAX_LATERAL,
262
268
  maxHeight,
263
269
  maxWidth,
270
+ MIN_SCRIMMAGE,
264
271
  minHeight,
265
272
  minWidth,
266
273
  priceSize,
267
274
  removeLine,
268
275
  removeTile,
269
- TILES_STADIUM,
270
- getStadiumRerollCoach,
271
276
  STADIUM_REROLL_COACH_SUCCESS,
272
- getRerollCoachCost,
277
+ TILES_STADIUM,
273
278
  };
package/state.js CHANGED
@@ -1,3 +1,5 @@
1
+ const { MIN_SCRIMMAGE } = require("./stadium");
2
+
1
3
  const TEAM_STATE = {
2
4
  ACTIVE: 0,
3
5
  EMPTY: 1,
@@ -48,6 +50,10 @@ function isTeamEmpty(state) {
48
50
  return state === TEAM_STATE.EMPTY;
49
51
  }
50
52
 
53
+ function isTeamLessMin(team) {
54
+ return team.players && team.players.length < MIN_SCRIMMAGE;
55
+ }
56
+
51
57
  function isTeamBlocked(state) {
52
58
  return state === TEAM_STATE.BLOCKED;
53
59
  }
@@ -56,6 +62,17 @@ function isTeamActive(state) {
56
62
  return state === TEAM_STATE.ACTIVE;
57
63
  }
58
64
 
65
+ function canPlayLeague(team) {
66
+ if (
67
+ isTeamEmpty(team.state) ||
68
+ isTeamBlocked(team.state) ||
69
+ isTeamLessMin(team)
70
+ ) {
71
+ return false;
72
+ }
73
+ return true;
74
+ }
75
+
59
76
  function getPlayableStates() {
60
77
  return [PLAYER_STATE.ACTIVE, PLAYER_STATE.INACTIVE];
61
78
  }
@@ -71,6 +88,7 @@ function shouldBeRemovedFromTeam(state) {
71
88
  module.exports = {
72
89
  canBeSelectedByUser,
73
90
  canJoinTeamWithState,
91
+ canPlayLeague,
74
92
  canTeamPlayLeague,
75
93
  getPlayableStates,
76
94
  isActive,
@@ -82,6 +100,7 @@ module.exports = {
82
100
  isTeamActive,
83
101
  isTeamBlocked,
84
102
  isTeamEmpty,
103
+ isTeamLessMin,
85
104
  PLAYER_STATE,
86
105
  shouldBeRemovedFromTeam,
87
106
  TEAM_STATE,