@firestone-hs/simulate-bgs-battle 1.1.765 → 1.1.766

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.
@@ -2,12 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Hopebringer = void 0;
4
4
  const stats_1 = require("../../../simulation/stats");
5
+ const baseBuff = (minion) => {
6
+ const mult = minion.cardId === "BG36_364_G" ? 2 : 1;
7
+ return { attack: 4 * mult, health: 3 * mult };
8
+ };
5
9
  exports.Hopebringer = {
6
10
  cardIds: ["BG36_364", "BG36_364_G"],
7
11
  startOfCombat: (minion, input) => {
8
- const mult = minion.cardId === "BG36_364_G" ? 2 : 1;
9
- const atk = 4 * mult;
10
- const hp = 3 * mult;
12
+ const base = baseBuff(minion);
13
+ const atk = minion.scriptDataNum1 > 0 ? minion.scriptDataNum1 : base.attack;
14
+ const hp = minion.scriptDataNum2 > 0 ? minion.scriptDataNum2 : base.health;
11
15
  for (const target of input.playerBoard) {
12
16
  (0, stats_1.modifyStats)(target, minion, atk, hp, input.playerBoard, input.playerEntity, input.gameState);
13
17
  }
@@ -17,9 +21,9 @@ exports.Hopebringer = {
17
21
  if (input.newValue) {
18
22
  return;
19
23
  }
20
- const mult = minion.cardId === "BG36_364_G" ? 2 : 1;
21
- const atk = (minion.scriptDataNum1 || 4 * mult) + 4 * mult;
22
- const hp = (minion.scriptDataNum2 || 3 * mult) + 3 * mult;
24
+ const base = baseBuff(minion);
25
+ const atk = (minion.scriptDataNum1 || base.attack) + base.attack;
26
+ const hp = (minion.scriptDataNum2 || base.health) + base.health;
23
27
  minion.scriptDataNum1 = atk;
24
28
  minion.scriptDataNum2 = hp;
25
29
  },
@@ -1 +1 @@
1
- {"version":3,"file":"hopebringer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/hopebringer.ts"],"names":[],"mappings":";;;AAYA,qDAAwD;AAG3C,QAAA,WAAW,GAAkD;IACzE,OAAO,EAAE,0BAA8D;IACvE,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;QACrB,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;QACpB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE;YACvC,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SAC7F;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IACD,qBAAqB,EAAE,CAAC,MAAmB,EAAE,KAAiC,EAAE,EAAE;QACjF,IAAI,KAAK,CAAC,QAAQ,EAAE;YACnB,OAAO;SACP;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC3D,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC1D,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC;QAC5B,MAAM,CAAC,cAAc,GAAG,EAAE,CAAC;IAC5B,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Hopebringer (Tier 5, 3/3)\r\n * Start of Combat: Give your minions +3/+3.\r\n * Permanently improves after a friendly minion loses Divine Shield.\r\n *\r\n * Golden Hopebringer (Tier 5, 6/6)\r\n * Start of Combat: Give your minions +6/+6.\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnDivineShieldUpdatedInput } from '../../../keywords/divine-shield';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { OnDivineShieldUpdatedCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Hopebringer: StartOfCombatCard & OnDivineShieldUpdatedCard = {\r\n\tcardIds: [CardIds.Hopebringer_BG36_364, CardIds.Hopebringer_BG36_364_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.Hopebringer_BG36_364_G ? 2 : 1;\r\n\t\tconst atk = 4 * mult;\r\n\t\tconst hp = 3 * mult;\r\n\t\tfor (const target of input.playerBoard) {\r\n\t\t\tmodifyStats(target, minion, atk, hp, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\tonDivineShieldUpdated: (minion: BoardEntity, input: OnDivineShieldUpdatedInput) => {\r\n\t\tif (input.newValue) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = minion.cardId === CardIds.Hopebringer_BG36_364_G ? 2 : 1;\r\n\t\tconst atk = (minion.scriptDataNum1 || 4 * mult) + 4 * mult;\r\n\t\tconst hp = (minion.scriptDataNum2 || 3 * mult) + 3 * mult;\r\n\t\tminion.scriptDataNum1 = atk;\r\n\t\tminion.scriptDataNum2 = hp;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"hopebringer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/hopebringer.ts"],"names":[],"mappings":";;;AAcA,qDAAwD;AAGxD,MAAM,QAAQ,GAAG,CAAC,MAAmB,EAAsC,EAAE;IAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;AAC/C,CAAC,CAAC;AAEW,QAAA,WAAW,GAAkD;IACzE,OAAO,EAAE,0BAA8D;IACvE,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5E,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3E,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE;YACvC,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SAC7F;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IACD,qBAAqB,EAAE,CAAC,MAAmB,EAAE,KAAiC,EAAE,EAAE;QACjF,IAAI,KAAK,CAAC,QAAQ,EAAE;YACnB,OAAO;SACP;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACjE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAChE,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC;QAC5B,MAAM,CAAC,cAAc,GAAG,EAAE,CAAC;IAC5B,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Hopebringer (Tier 5, 3/3)\r\n * Start of Combat: Give your minions +4/+3.\r\n * Permanently improves by that amount after a friendly minion loses Divine Shield.\r\n * The current amounts are stored on scriptDataNum1 / scriptDataNum2.\r\n *\r\n * Golden Hopebringer (Tier 5, 6/6)\r\n * Start of Combat: Give your minions +8/+6, then the same permanent improvement.\r\n * A scaled copy already has the golden amounts stored, so combat does not double them again.\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnDivineShieldUpdatedInput } from '../../../keywords/divine-shield';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { OnDivineShieldUpdatedCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nconst baseBuff = (minion: BoardEntity): { attack: number; health: number } => {\r\n\tconst mult = minion.cardId === CardIds.Hopebringer_BG36_364_G ? 2 : 1;\r\n\treturn { attack: 4 * mult, health: 3 * mult };\r\n};\r\n\r\nexport const Hopebringer: StartOfCombatCard & OnDivineShieldUpdatedCard = {\r\n\tcardIds: [CardIds.Hopebringer_BG36_364, CardIds.Hopebringer_BG36_364_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst base = baseBuff(minion);\r\n\t\t// scriptDataNum1/2 are the improved values. 0 means this copy has not been scaled yet.\r\n\t\tconst atk = minion.scriptDataNum1 > 0 ? minion.scriptDataNum1 : base.attack;\r\n\t\tconst hp = minion.scriptDataNum2 > 0 ? minion.scriptDataNum2 : base.health;\r\n\t\tfor (const target of input.playerBoard) {\r\n\t\t\tmodifyStats(target, minion, atk, hp, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\tonDivineShieldUpdated: (minion: BoardEntity, input: OnDivineShieldUpdatedInput) => {\r\n\t\tif (input.newValue) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst base = baseBuff(minion);\r\n\t\tconst atk = (minion.scriptDataNum1 || base.attack) + base.attack;\r\n\t\tconst hp = (minion.scriptDataNum2 || base.health) + base.health;\r\n\t\tminion.scriptDataNum1 = atk;\r\n\t\tminion.scriptDataNum2 = hp;\r\n\t},\r\n};\r\n"]}
package/package.json CHANGED
@@ -1,12 +1,19 @@
1
1
  {
2
2
  "name": "@firestone-hs/simulate-bgs-battle",
3
- "version": "1.1.765",
3
+ "version": "1.1.766",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "lint": "eslint --color --fix --ext .ts .",
7
7
  "benchmark": "node -r ts-node/register test/full-game/bench.ts",
8
8
  "test-board": "env -u TS_NODE_TRANSPILE_ONLY -u TS_NODE_PROJECT ts-node test/full-game/full-test.ts",
9
- "test:unit": "node -r ts-node/register --test test/unit/hand-minion-priority.test.ts test/unit/tavern-spell-stat-buff.test.ts test/unit/resolve-trinket-hero-power.test.ts test/unit/performance-hotpaths.test.ts test/unit/simulate-single-combat.test.ts test/unit/damage-cap.test.ts test/unit/timewarped-combat-grants.test.ts test/unit/minions-of-different-types.test.ts test/unit/lockbox.test.ts",
9
+ "test:unit": "node -r ts-node/register --test test/unit/hand-minion-priority.test.ts test/unit/tavern-spell-stat-buff.test.ts test/unit/resolve-trinket-hero-power.test.ts test/unit/performance-hotpaths.test.ts test/unit/simulate-single-combat.test.ts test/unit/damage-cap.test.ts test/unit/timewarped-combat-grants.test.ts test/unit/minions-of-different-types.test.ts test/unit/lockbox.test.ts test/unit/hopebringer.test.ts",
10
+ "test:regression": "node -r ts-node/register --test test/regression/bug-reports.test.ts",
11
+ "bug:next": "node -r ts-node/register scripts/bugs/fetch.ts --next",
12
+ "bug:fetch": "node -r ts-node/register scripts/bugs/fetch.ts",
13
+ "bug:check": "node -r ts-node/register scripts/bugs/check.ts",
14
+ "bug:resolve": "node -r ts-node/register scripts/bugs/resolve.ts",
15
+ "bug:list": "node -r ts-node/register scripts/bugs/list.ts",
16
+ "bug:stats": "node -r ts-node/register scripts/bugs/list.ts --stats",
10
17
  "test-board-ss": "env -u TS_NODE_TRANSPILE_ONLY -u TS_NODE_PROJECT node --stack-size=100 --trace-uncaught -r ts-node/register test/full-game/full-test.ts",
11
18
  "test-board-prof": "env -u TS_NODE_TRANSPILE_ONLY -u TS_NODE_PROJECT node --inspect-brk -r ts-node/register test/full-game/full-test.ts",
12
19
  "build": "tsc && webpack --color",
@@ -41,6 +48,7 @@
41
48
  "eslint-config-prettier": "^8.8.0",
42
49
  "eslint-plugin-prettier": "^4.2.1",
43
50
  "eslint-webpack-plugin": "^4.0.1",
51
+ "jszip": "^3.10.1",
44
52
  "prettier": "^2.8.8",
45
53
  "ts-loader": "^9.4.2",
46
54
  "ts-node": "^10.9.1",