enefel 1.0.135 → 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,
@@ -169,7 +166,7 @@ const CAREER = {
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,
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.135",
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
@@ -24,7 +24,6 @@ const SKILL_DURATION = {
24
24
 
25
25
  // Missing for races
26
26
  const SKILL_NAMES = {
27
- TAKE_ROOT: "take-root",
28
27
  ACCURATE: "accurate",
29
28
  ALWAYS_HUNGRY: "always-hungry",
30
29
  ANIMAL_SAVAGERY: "animal-salvagery",
@@ -66,6 +65,7 @@ const SKILL_NAMES = {
66
65
  ON_THE_BALL: "on-the-ball",
67
66
  PASS: "pass",
68
67
  PILE_DRIVER: "pile-driver",
68
+ PLAGUE_RIDDEN: "plague-ridden",
69
69
  PREHENSILE_TAIL: "prehensile-tail",
70
70
  PROJECTILE_VOMIT: "projectile-vomit",
71
71
  REALLY_STUPID: "really-stupid",
@@ -87,6 +87,7 @@ const SKILL_NAMES = {
87
87
  SURE_FEET: "sure-feet",
88
88
  SURE_HANDS: "sure-hands",
89
89
  TACKLE: "tackle",
90
+ TAKE_ROOT: "take-root",
90
91
  TENTACLES: "tentacles",
91
92
  THICK_SKULL: "thick-skull",
92
93
  THROW_TEAM_MATE: "throw-team-mate",
@@ -109,7 +110,6 @@ const SKILL_TYPE = {
109
110
 
110
111
  // TODO: add text translation when add a skill
111
112
  const SKILLS = {
112
- [SKILL_NAMES.TAKE_ROOT]: SKILL_TYPE.EXTRAORDINARY,
113
113
  [SKILL_NAMES.ACCURATE]: SKILL_TYPE.PASSING,
114
114
  [SKILL_NAMES.ALWAYS_HUNGRY]: SKILL_TYPE.EXTRAORDINARY,
115
115
  [SKILL_NAMES.ANIMAL_SAVAGERY]: SKILL_TYPE.EXTRAORDINARY,
@@ -125,6 +125,7 @@ const SKILLS = {
125
125
  [SKILL_NAMES.CLAW]: SKILL_TYPE.MUTATION,
126
126
  [SKILL_NAMES.CLOUD_BURSTER]: SKILL_TYPE.PASSING,
127
127
  [SKILL_NAMES.DAUNTLESS]: SKILL_TYPE.GENERAL,
128
+ [SKILL_NAMES.DECAY]: SKILL_TYPE.EXTRAORDINARY,
128
129
  [SKILL_NAMES.DEFENSIVE]: SKILL_TYPE.AGILITY,
129
130
  [SKILL_NAMES.DIRTY_PLAYER]: SKILL_TYPE.GENERAL,
130
131
  [SKILL_NAMES.DISTURBING_PRESENCE]: SKILL_TYPE.MUTATION,
@@ -150,6 +151,7 @@ const SKILLS = {
150
151
  [SKILL_NAMES.ON_THE_BALL]: SKILL_TYPE.PASSING,
151
152
  [SKILL_NAMES.PASS]: SKILL_TYPE.PASSING,
152
153
  [SKILL_NAMES.PILE_DRIVER]: SKILL_TYPE.STRENGTH,
154
+ [SKILL_NAMES.PLAGUE_RIDDEN]: SKILL_TYPE.EXTRAORDINARY,
153
155
  [SKILL_NAMES.PREHENSILE_TAIL]: SKILL_TYPE.MUTATION,
154
156
  [SKILL_NAMES.PROJECTILE_VOMIT]: SKILL_TYPE.EXTRAORDINARY,
155
157
  [SKILL_NAMES.REALLY_STUPID]: SKILL_TYPE.EXTRAORDINARY,
@@ -171,6 +173,7 @@ const SKILLS = {
171
173
  [SKILL_NAMES.SURE_FEET]: SKILL_TYPE.AGILITY,
172
174
  [SKILL_NAMES.SURE_HANDS]: SKILL_TYPE.GENERAL,
173
175
  [SKILL_NAMES.TACKLE]: SKILL_TYPE.GENERAL,
176
+ [SKILL_NAMES.TAKE_ROOT]: SKILL_TYPE.EXTRAORDINARY,
174
177
  [SKILL_NAMES.TENTACLES]: SKILL_TYPE.MUTATION,
175
178
  [SKILL_NAMES.THICK_SKULL]: SKILL_TYPE.STRENGTH,
176
179
  [SKILL_NAMES.THROW_TEAM_MATE]: SKILL_TYPE.EXTRAORDINARY,