enefel 1.0.134 → 1.0.136

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/badge.js CHANGED
@@ -2,9 +2,10 @@ const { getCareers } = require("./career");
2
2
  const { ranges } = require("./improvement");
3
3
 
4
4
  const BADGE_NAMES = {
5
- KILL: "kill",
6
- DEAD: "dead",
7
5
  BLOODTHIRSTY: "bloodthirsty",
6
+ DEAD: "dead",
7
+ KILL: "kill",
8
+ NURGLE: "nurgle",
8
9
  };
9
10
  const badges = {};
10
11
 
@@ -19,6 +20,7 @@ Object.values(getCareers()).forEach((r) => {
19
20
  badges[BADGE_NAMES.KILL] = [0, 1, 2, 3, 5, 7, 9]; // 10 max
20
21
  badges[BADGE_NAMES.DEAD] = [0, 1, 2, 3, 5, 7, 9]; // 10 max
21
22
  badges[BADGE_NAMES.BLOODTHIRSTY] = [0]; // 1 max
23
+ badges[BADGE_NAMES.NURGLE] = [0]; // 1 max
22
24
 
23
25
  function getBadgeMaxLevel(badge) {
24
26
  return badges[badge.badge_id].length;
package/career.js CHANGED
@@ -148,10 +148,7 @@ const CAREER = {
148
148
  double: "AS",
149
149
  normalCoach: "G",
150
150
  icons: ["nurgle-rotter1"],
151
- skills: [
152
- SKILL_NAMES.DECAY,
153
- //SKILL_NAMES.PLAGUE_RIDDEN
154
- ],
151
+ skills: [SKILL_NAMES.DECAY, SKILL_NAMES.PLAGUE_RIDDEN],
155
152
  badge: RACE.NURGLE,
156
153
  range: 0,
157
154
  cost: 35,
@@ -162,14 +159,14 @@ const CAREER = {
162
159
  AG: 3,
163
160
  AV: 8,
164
161
  normal: "GMS",
165
- double: "AS",
162
+ double: "AP",
166
163
  normalCoach: "G",
167
164
  icons: ["nurgle-pestigor1"],
168
165
  skills: [
169
166
  SKILL_NAMES.HORNS,
170
167
  SKILL_NAMES.REGENERATION,
171
168
  SKILL_NAMES.SPECIALIST,
172
- // SKILL_NAMES.PLAGUE_RIDDEN
169
+ SKILL_NAMES.PLAGUE_RIDDEN,
173
170
  ],
174
171
  badge: RACE.NURGLE,
175
172
  range: 1,
@@ -189,7 +186,7 @@ const CAREER = {
189
186
  SKILL_NAMES.FOUL_APPEARANCE,
190
187
  SKILL_NAMES.REGENERATION,
191
188
  SKILL_NAMES.STAR,
192
- // SKILL_NAMES.PLAGUE_RIDDEN
189
+ SKILL_NAMES.PLAGUE_RIDDEN,
193
190
  ],
194
191
  badge: RACE.NURGLE,
195
192
  range: 5,
@@ -210,7 +207,7 @@ const CAREER = {
210
207
  [SKILL_NAMES.LONER, 4],
211
208
  SKILL_NAMES.MIGHTY_BLOW,
212
209
  SKILL_NAMES.REGENERATION,
213
- // SKILL_NAMES.PLAGUE_RIDDEN
210
+ SKILL_NAMES.PLAGUE_RIDDEN,
214
211
  SKILL_NAMES.REALLY_STUPID,
215
212
  SKILL_NAMES.TENTACLES,
216
213
  SKILL_NAMES.BIG_GUY,
@@ -1479,6 +1476,7 @@ const CAREER = {
1479
1476
  SKILL_NAMES.STRONG_ARM,
1480
1477
  SKILL_NAMES.THICK_SKULL,
1481
1478
  SKILL_NAMES.THROW_TEAM_MATE,
1479
+ SKILL_NAMES.TAKE_ROOT,
1482
1480
  ],
1483
1481
  badge: RACE.HALFLING,
1484
1482
  range: 6,
package/index.js CHANGED
@@ -20,7 +20,7 @@ const {
20
20
  } = require("./meteo");
21
21
  const { distance } = require("./calcul");
22
22
  const { getCareerFromPlayer } = require("./race");
23
- const { getMaxMA } = require("./player");
23
+ const { getMaxCarac, PLAYER_CARAC } = require("./player");
24
24
  const { GAME_STATUS } = require("./game");
25
25
 
26
26
  const POSTULATION_HOURS = 24;
@@ -141,6 +141,7 @@ const GAME_HISTORY_INFO = {
141
141
  ARMOR: "ar",
142
142
  BALL: "ball",
143
143
  BLOCK: "b",
144
+ CARAC_CHANGE: "cc",
144
145
  CASUALTY: "ca",
145
146
  DODGE: "d",
146
147
  END_PO: "endpo",
@@ -164,13 +165,14 @@ const GAME_HISTORY_INFO = {
164
165
  PASS: "p",
165
166
  REJECTION: "r",
166
167
  REROLL_COACH: "rc",
168
+ REROLL_INITIAL: "rei",
167
169
  REROLL_METEO: "rm",
168
170
  REROLL_RACE_MALUS: "rrm",
169
- REROLL_INITIAL: "rei",
170
171
  REROLL: "re",
171
172
  SCATTER: "sc",
172
- SKILL: "sk",
173
+ SKILL_GAIN: "skg",
173
174
  SKILL_LOSS: "skl",
175
+ SKILL: "sk",
174
176
  SPY: "spy",
175
177
  STANDUP: "st",
176
178
  START_FAN: "fan",
@@ -691,7 +693,7 @@ function getEnemyTackleZones(location, teamId, players) {
691
693
  });
692
694
  }
693
695
 
694
- function canBlock(attacker, defender, attackerTeam, game) {
696
+ function canBlock(attacker, defender, attackerTeam, game, withModif = true) {
695
697
  if (
696
698
  !attacker ||
697
699
  !defender ||
@@ -715,7 +717,9 @@ function canBlock(attacker, defender, attackerTeam, game) {
715
717
 
716
718
  // No blitz available
717
719
  if (attackerTeam.date_next_blitz !== null) {
718
- return attacker.current_MA === getMaxMA(attacker, game);
720
+ return attacker.current_MA === withModif
721
+ ? getMaxCarac(attacker, PLAYER_CARAC.MA, game)
722
+ : attacker.MA;
719
723
  } else {
720
724
  // Blitz available
721
725
 
@@ -753,7 +757,8 @@ function canPass(player, playerTeam, playerIdWithBall) {
753
757
  function canEndTurn(player, game) {
754
758
  return (
755
759
  player.date_next_action === null &&
756
- (player.has_action === false || player.current_MA < getMaxMA(player, game))
760
+ (player.has_action === false ||
761
+ player.current_MA < getMaxCarac(player, PLAYER_CARAC.MA, game))
757
762
  );
758
763
  }
759
764
 
package/item.js ADDED
@@ -0,0 +1,38 @@
1
+ const RARITY = {
2
+ COMMUN: "c",
3
+ UNCOMMUN: "u",
4
+ RARE: "r",
5
+ EPIC: "e",
6
+ LEGENDARY: "l",
7
+ };
8
+
9
+ const ITEM_ID = {
10
+ BEER: "beer",
11
+ DRUG: "drug",
12
+ GREEN_PILL: "green-pill",
13
+ NEWSPAPER: "newspaper",
14
+ };
15
+
16
+ const getQteFromRarity = (rarity) => {
17
+ if (rarity === RARITY.COMMUN) {
18
+ return 10000;
19
+ }
20
+ if (rarity === RARITY.UNCOMMUN) {
21
+ return 1000;
22
+ }
23
+ if (rarity === RARITY.RARE) {
24
+ return 100;
25
+ }
26
+ if (rarity === RARITY.EPIC) {
27
+ return 10;
28
+ }
29
+ if (rarity === RARITY.LEGENDARY) {
30
+ return 1;
31
+ }
32
+ };
33
+
34
+ module.exports = {
35
+ RARITY,
36
+ ITEM_ID,
37
+ getQteFromRarity,
38
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "enefel",
3
- "version": "1.0.134",
3
+ "version": "1.0.136",
4
4
  "main": "index.js",
5
5
  "author": "Manest",
6
6
  "license": "MIT",
package/player.js CHANGED
@@ -1,5 +1,7 @@
1
+ const { getCareers } = require("./career");
1
2
  const { ranges, getAgingMinExperience } = require("./improvement");
2
3
  const { meteoMaxMA } = require("./meteo");
4
+ const { getCareerFromPlayer } = require("./race");
3
5
  const { hasSkill, SKILL_NAMES } = require("./skill");
4
6
 
5
7
  const PLAYER_CARAC = {
@@ -9,19 +11,97 @@ const PLAYER_CARAC = {
9
11
  ST: "ST",
10
12
  };
11
13
 
12
- function getMaxMA(player, game) {
14
+ function getCareerBaseCarac(player, carac) {
15
+ const career = getCareerFromPlayer(player);
16
+ if (!career) {
17
+ throw new Error("No career for player " + player.id);
18
+ }
19
+ return career[carac];
20
+ }
21
+
22
+ function getCareerBaseCaracLimit(player, value, carac) {
23
+ const base = getCareerBaseCarac(player, carac);
24
+ if (value > base + 2) {
25
+ value = base + 2;
26
+ }
27
+ if (value < base - 2) {
28
+ value = base - 2;
29
+ }
30
+ return value;
31
+ }
32
+
33
+ function getMaxCarac(player, carac, game) {
13
34
  if (!player) {
14
35
  return null;
15
36
  }
37
+ if (carac === PLAYER_CARAC.AG) {
38
+ return getMaxAG(player, game);
39
+ } else if (carac === PLAYER_CARAC.MA) {
40
+ return getMaxMA(player, game);
41
+ } else if (carac === PLAYER_CARAC.AV) {
42
+ return getMaxAV(player, game);
43
+ } else if (carac === PLAYER_CARAC.ST) {
44
+ return getMaxST(player, game);
45
+ }
46
+ }
47
+
48
+ function getMaxCommun(player, carac, game) {
49
+ let c = player[carac];
50
+ if (!player.tempCarac) {
51
+ return c;
52
+ }
53
+ const obj = JSON.parse(player.tempCarac);
54
+ for (const value of Object.values(obj)) {
55
+ if (value.gainCarac === PLAYER_CARAC[carac]) {
56
+ c += 1;
57
+ }
58
+ if (value.loseCarac === PLAYER_CARAC[carac]) {
59
+ c -= 1;
60
+ }
61
+ }
62
+
63
+ c = getCareerBaseCaracLimit(player, c, PLAYER_CARAC[carac]);
64
+
65
+ return c;
66
+ }
67
+
68
+ function getLimitedValue(c) {
69
+ if (c > 10) {
70
+ c = 10;
71
+ }
72
+ if (c < 0) {
73
+ c = 0;
74
+ }
75
+ return c;
76
+ }
77
+
78
+ function getMaxAV(player, game) {
79
+ let c = getMaxCommun(player, PLAYER_CARAC.AV, game);
80
+ return getLimitedValue(c);
81
+ }
82
+
83
+ function getMaxST(player, game) {
84
+ let c = getMaxCommun(player, PLAYER_CARAC.ST, game);
85
+ return getLimitedValue(c);
86
+ }
87
+
88
+ function getMaxAG(player, game) {
89
+ let c = getMaxCommun(player, PLAYER_CARAC.AG, game);
90
+ return getLimitedValue(c);
91
+ }
92
+
93
+ function getMaxMA(player, game) {
94
+ let c = getMaxCommun(player, PLAYER_CARAC.MA, game);
16
95
 
17
96
  if (game) {
18
97
  const maxMA = meteoMaxMA(game.meteo);
19
- if (player.MA > maxMA) {
20
- return maxMA;
98
+
99
+ if (c > maxMA) {
100
+ c = maxMA;
21
101
  }
22
102
  }
23
103
 
24
- return player.MA;
104
+ return getLimitedValue(c);
25
105
  }
26
106
 
27
107
  function getMaxGfi(player) {
@@ -76,6 +156,6 @@ module.exports = {
76
156
  gamesforAgingRoll,
77
157
  getAgingBonus,
78
158
  getMaxGfi,
79
- getMaxMA,
159
+ getMaxCarac,
80
160
  PLAYER_CARAC,
81
161
  };
package/skill.js CHANGED
@@ -65,6 +65,7 @@ const SKILL_NAMES = {
65
65
  ON_THE_BALL: "on-the-ball",
66
66
  PASS: "pass",
67
67
  PILE_DRIVER: "pile-driver",
68
+ PLAGUE_RIDDEN: "plague-ridden",
68
69
  PREHENSILE_TAIL: "prehensile-tail",
69
70
  PROJECTILE_VOMIT: "projectile-vomit",
70
71
  REALLY_STUPID: "really-stupid",
@@ -86,6 +87,7 @@ const SKILL_NAMES = {
86
87
  SURE_FEET: "sure-feet",
87
88
  SURE_HANDS: "sure-hands",
88
89
  TACKLE: "tackle",
90
+ TAKE_ROOT: "take-root",
89
91
  TENTACLES: "tentacles",
90
92
  THICK_SKULL: "thick-skull",
91
93
  THROW_TEAM_MATE: "throw-team-mate",
@@ -123,6 +125,7 @@ const SKILLS = {
123
125
  [SKILL_NAMES.CLAW]: SKILL_TYPE.MUTATION,
124
126
  [SKILL_NAMES.CLOUD_BURSTER]: SKILL_TYPE.PASSING,
125
127
  [SKILL_NAMES.DAUNTLESS]: SKILL_TYPE.GENERAL,
128
+ [SKILL_NAMES.DECAY]: SKILL_TYPE.EXTRAORDINARY,
126
129
  [SKILL_NAMES.DEFENSIVE]: SKILL_TYPE.AGILITY,
127
130
  [SKILL_NAMES.DIRTY_PLAYER]: SKILL_TYPE.GENERAL,
128
131
  [SKILL_NAMES.DISTURBING_PRESENCE]: SKILL_TYPE.MUTATION,
@@ -148,6 +151,7 @@ const SKILLS = {
148
151
  [SKILL_NAMES.ON_THE_BALL]: SKILL_TYPE.PASSING,
149
152
  [SKILL_NAMES.PASS]: SKILL_TYPE.PASSING,
150
153
  [SKILL_NAMES.PILE_DRIVER]: SKILL_TYPE.STRENGTH,
154
+ [SKILL_NAMES.PLAGUE_RIDDEN]: SKILL_TYPE.EXTRAORDINARY,
151
155
  [SKILL_NAMES.PREHENSILE_TAIL]: SKILL_TYPE.MUTATION,
152
156
  [SKILL_NAMES.PROJECTILE_VOMIT]: SKILL_TYPE.EXTRAORDINARY,
153
157
  [SKILL_NAMES.REALLY_STUPID]: SKILL_TYPE.EXTRAORDINARY,
@@ -169,6 +173,7 @@ const SKILLS = {
169
173
  [SKILL_NAMES.SURE_FEET]: SKILL_TYPE.AGILITY,
170
174
  [SKILL_NAMES.SURE_HANDS]: SKILL_TYPE.GENERAL,
171
175
  [SKILL_NAMES.TACKLE]: SKILL_TYPE.GENERAL,
176
+ [SKILL_NAMES.TAKE_ROOT]: SKILL_TYPE.EXTRAORDINARY,
172
177
  [SKILL_NAMES.TENTACLES]: SKILL_TYPE.MUTATION,
173
178
  [SKILL_NAMES.THICK_SKULL]: SKILL_TYPE.STRENGTH,
174
179
  [SKILL_NAMES.THROW_TEAM_MATE]: SKILL_TYPE.EXTRAORDINARY,