@firestone-hs/simulate-bgs-battle 1.1.667 → 1.1.669
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/dist/cards/impl/_card-mappings.js +6 -0
- package/dist/cards/impl/_card-mappings.js.map +1 -1
- package/dist/cards/impl/bg-spell/timewarped-bananas.js +2 -2
- package/dist/cards/impl/bg-spell/timewarped-bananas.js.map +1 -1
- package/dist/cards/impl/hero-power/swatting-insects.js +1 -0
- package/dist/cards/impl/hero-power/swatting-insects.js.map +1 -1
- package/dist/cards/impl/minion/apexis-guardian.js +8 -8
- package/dist/cards/impl/minion/apexis-guardian.js.map +1 -1
- package/dist/cards/impl/minion/blue-volumizer.js +1 -1
- package/dist/cards/impl/minion/blue-volumizer.js.map +1 -1
- package/dist/cards/impl/minion/briarback-drummer.js +1 -1
- package/dist/cards/impl/minion/briarback-drummer.js.map +1 -1
- package/dist/cards/impl/minion/budding-greenthumb.js +1 -1
- package/dist/cards/impl/minion/budding-greenthumb.js.map +1 -1
- package/dist/cards/impl/minion/campfire-shadow.js +5 -2
- package/dist/cards/impl/minion/campfire-shadow.js.map +1 -1
- package/dist/cards/impl/minion/champion-of-the-primus.js +1 -1
- package/dist/cards/impl/minion/champion-of-the-primus.js.map +1 -1
- package/dist/cards/impl/minion/charging-czarina.js +1 -1
- package/dist/cards/impl/minion/charging-czarina.js.map +1 -1
- package/dist/cards/impl/minion/costume-enthusiast.js +1 -1
- package/dist/cards/impl/minion/costume-enthusiast.js.map +1 -1
- package/dist/cards/impl/minion/dastardly-drust.js +2 -2
- package/dist/cards/impl/minion/dastardly-drust.js.map +1 -1
- package/dist/cards/impl/minion/dramaloc.js +1 -1
- package/dist/cards/impl/minion/dramaloc.js.map +1 -1
- package/dist/cards/impl/minion/fauna-whisperer.js +11 -13
- package/dist/cards/impl/minion/fauna-whisperer.js.map +1 -1
- package/dist/cards/impl/minion/fire-forged-evoker.js +1 -1
- package/dist/cards/impl/minion/fire-forged-evoker.js.map +1 -1
- package/dist/cards/impl/minion/forsaken-weaver.js +1 -1
- package/dist/cards/impl/minion/forsaken-weaver.js.map +1 -1
- package/dist/cards/impl/minion/ghoul-of-the-feast.js +1 -1
- package/dist/cards/impl/minion/ghoul-of-the-feast.js.map +1 -1
- package/dist/cards/impl/minion/highkeeper-ra.d.ts +2 -2
- package/dist/cards/impl/minion/highkeeper-ra.js +10 -0
- package/dist/cards/impl/minion/highkeeper-ra.js.map +1 -1
- package/dist/cards/impl/minion/junk-jouster.js +1 -1
- package/dist/cards/impl/minion/junk-jouster.js.map +1 -1
- package/dist/cards/impl/minion/nalaa-the-redeemer.d.ts +2 -0
- package/dist/cards/impl/minion/nalaa-the-redeemer.js +12 -0
- package/dist/cards/impl/minion/nalaa-the-redeemer.js.map +1 -0
- package/dist/cards/impl/minion/plankwalker.js +1 -1
- package/dist/cards/impl/minion/plankwalker.js.map +1 -1
- package/dist/cards/impl/minion/red-volumizer.js +1 -1
- package/dist/cards/impl/minion/red-volumizer.js.map +1 -1
- package/dist/cards/impl/minion/soulsplitter.js +5 -1
- package/dist/cards/impl/minion/soulsplitter.js.map +1 -1
- package/dist/cards/impl/minion/stalwart-kodo.js +1 -1
- package/dist/cards/impl/minion/stalwart-kodo.js.map +1 -1
- package/dist/cards/impl/minion/the-last-one-standing.js +1 -1
- package/dist/cards/impl/minion/the-last-one-standing.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-caretaker.js +1 -1
- package/dist/cards/impl/minion/timewarped-caretaker.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-centurion.js +1 -1
- package/dist/cards/impl/minion/timewarped-centurion.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-duskmaw.js +1 -1
- package/dist/cards/impl/minion/timewarped-duskmaw.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-electron.js +4 -1
- package/dist/cards/impl/minion/timewarped-electron.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-geist.js +1 -1
- package/dist/cards/impl/minion/timewarped-geist.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-goldrinn.js +5 -4
- package/dist/cards/impl/minion/timewarped-goldrinn.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-grease-bot.js +1 -1
- package/dist/cards/impl/minion/timewarped-grease-bot.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-hooktail.js +1 -1
- package/dist/cards/impl/minion/timewarped-hooktail.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-interpreter.js +1 -1
- package/dist/cards/impl/minion/timewarped-interpreter.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-jungle-king.js +1 -1
- package/dist/cards/impl/minion/timewarped-jungle-king.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-painter.js +2 -2
- package/dist/cards/impl/minion/timewarped-painter.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-primscale.js +1 -1
- package/dist/cards/impl/minion/timewarped-primscale.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-ragnaros.js +2 -2
- package/dist/cards/impl/minion/timewarped-ragnaros.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-saurolisk.js +1 -1
- package/dist/cards/impl/minion/timewarped-saurolisk.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-sensei.js +1 -1
- package/dist/cards/impl/minion/timewarped-sensei.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-steamer.js +8 -2
- package/dist/cards/impl/minion/timewarped-steamer.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-sylvar.js +1 -1
- package/dist/cards/impl/minion/timewarped-sylvar.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-tender.js +1 -1
- package/dist/cards/impl/minion/timewarped-tender.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-tide-razor.js +1 -1
- package/dist/cards/impl/minion/timewarped-tide-razor.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-twirler.d.ts +2 -2
- package/dist/cards/impl/minion/timewarped-twirler.js +1 -24
- package/dist/cards/impl/minion/timewarped-twirler.js.map +1 -1
- package/dist/cards/impl/minion/utility-drone.d.ts +2 -0
- package/dist/cards/impl/minion/utility-drone.js +18 -0
- package/dist/cards/impl/minion/utility-drone.js.map +1 -0
- package/dist/cards/impl/minion/whirling-lass-o-matic.js +1 -1
- package/dist/cards/impl/minion/whirling-lass-o-matic.js.map +1 -1
- package/dist/cards/impl/trinket/sepulchral-sergent.js +5 -2
- package/dist/cards/impl/trinket/sepulchral-sergent.js.map +1 -1
- package/dist/input-sanitation.js +5 -10
- package/dist/input-sanitation.js.map +1 -1
- package/dist/simulation/magnetize.d.ts +1 -0
- package/dist/simulation/magnetize.js +5 -1
- package/dist/simulation/magnetize.js.map +1 -1
- package/dist/simulation/start-of-combat/soc-action-processor.js +0 -3
- package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-goldrinn.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-goldrinn.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,0CAAiD;AAGpC,QAAA,kBAAkB,GAAyB;IACvD,OAAO,EAAE,sCAAwF;IACjG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,
|
|
1
|
+
{"version":3,"file":"timewarped-goldrinn.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-goldrinn.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,0CAAiD;AAGpC,QAAA,kBAAkB,GAAyB;IACvD,OAAO,EAAE,sCAAwF;IACjG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC;QACpC,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC;QACpC,IAAA,uBAAe,EACd,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,CAAC,SAAS,EACf,qBAAI,CAAC,qBAAI,CAAC,KAAK,CAAC,CAChB,CAAC;QACF,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,eAAe,IAAI,kBAAkB,CAAC;QAC/E,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;QAClF,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const TimewarpedGoldrinn: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.TimewarpedGoldrinn_BG34_Giant_362, CardIds.TimewarpedGoldrinn_BG34_Giant_362_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedGoldrinn_BG34_Giant_362_G ? 2 : 1;\r\n\t\tconst goldrinnAttackBuff = 3 * mult;\r\n\t\tconst goldrinnHealthBuff = 2 * mult;\r\n\t\taddStatsToBoard(\r\n\t\t\tminion,\r\n\t\t\tinput.boardWithDeadEntity,\r\n\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\tgoldrinnAttackBuff,\r\n\t\t\tgoldrinnHealthBuff,\r\n\t\t\tinput.gameState,\r\n\t\t\tRace[Race.BEAST],\r\n\t\t);\r\n\t\tinput.boardWithDeadEntityHero.globalInfo.GoldrinnBuffAtk += goldrinnAttackBuff;\r\n\t\tinput.boardWithDeadEntityHero.globalInfo.GoldrinnBuffHealth += goldrinnHealthBuff;\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
|
|
@@ -6,7 +6,7 @@ exports.TimewarpedGreaseBot = {
|
|
|
6
6
|
cardIds: ["BG34_Giant_656", "BG34_Giant_656_G"],
|
|
7
7
|
onDivineShieldUpdated: (minion, input) => {
|
|
8
8
|
const mult = minion.cardId === "BG34_Giant_656_G" ? 2 : 1;
|
|
9
|
-
(0, utils_1.addStatsToBoard)(input.target, input.board, input.hero,
|
|
9
|
+
(0, utils_1.addStatsToBoard)(input.target, input.board, input.hero, 3 * mult, 3 * mult, input.gameState);
|
|
10
10
|
},
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=timewarped-grease-bot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-grease-bot.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-grease-bot.ts"],"names":[],"mappings":";;;AAGA,0CAAiD;AAGpC,QAAA,mBAAmB,GAA8B;IAC7D,OAAO,EAAE,sCAA0F;IACnG,qBAAqB,EAAE,CAAC,MAAmB,EAAE,KAAiC,EAAE,EAAE;QACjF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,IAAA,uBAAe,EAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7F,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnDivineShieldUpdatedInput } from '../../../keywords/divine-shield';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { OnDivineShieldUpdatedCard } from '../../card.interface';\r\n\r\nexport const TimewarpedGreaseBot: OnDivineShieldUpdatedCard = {\r\n\tcardIds: [CardIds.TimewarpedGreaseBot_BG34_Giant_656, CardIds.TimewarpedGreaseBot_BG34_Giant_656_G],\r\n\tonDivineShieldUpdated: (minion: BoardEntity, input: OnDivineShieldUpdatedInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedGreaseBot_BG34_Giant_656_G ? 2 : 1;\r\n\t\taddStatsToBoard(input.target, input.board, input.hero,
|
|
1
|
+
{"version":3,"file":"timewarped-grease-bot.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-grease-bot.ts"],"names":[],"mappings":";;;AAGA,0CAAiD;AAGpC,QAAA,mBAAmB,GAA8B;IAC7D,OAAO,EAAE,sCAA0F;IACnG,qBAAqB,EAAE,CAAC,MAAmB,EAAE,KAAiC,EAAE,EAAE;QACjF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,IAAA,uBAAe,EAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7F,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnDivineShieldUpdatedInput } from '../../../keywords/divine-shield';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { OnDivineShieldUpdatedCard } from '../../card.interface';\r\n\r\nexport const TimewarpedGreaseBot: OnDivineShieldUpdatedCard = {\r\n\tcardIds: [CardIds.TimewarpedGreaseBot_BG34_Giant_656, CardIds.TimewarpedGreaseBot_BG34_Giant_656_G],\r\n\tonDivineShieldUpdated: (minion: BoardEntity, input: OnDivineShieldUpdatedInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedGreaseBot_BG34_Giant_656_G ? 2 : 1;\r\n\t\taddStatsToBoard(input.target, input.board, input.hero, 3 * mult, 3 * mult, input.gameState);\r\n\t},\r\n};\r\n"]}
|
|
@@ -6,7 +6,7 @@ exports.TimewarpedHootail = {
|
|
|
6
6
|
cardIds: ["BG34_Giant_015", "BG34_Giant_015_G"],
|
|
7
7
|
onTavernSpellCast: (entity, input) => {
|
|
8
8
|
const mult = entity.cardId === "BG34_Giant_015_G" ? 2 : 1;
|
|
9
|
-
(0, utils_1.addStatsToBoard)(entity, input.board, input.hero, 2 * mult,
|
|
9
|
+
(0, utils_1.addStatsToBoard)(entity, input.board, input.hero, 2 * mult, 2 * mult, input.gameState);
|
|
10
10
|
},
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=timewarped-hooktail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-hooktail.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-hooktail.ts"],"names":[],"mappings":";;;AAEA,0CAAiD;AAGpC,QAAA,iBAAiB,GAA0B;IACvD,OAAO,EAAE,sCAAwF;IACjG,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const TimewarpedHootail: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.TimewarpedHooktail_BG34_Giant_015, CardIds.TimewarpedHooktail_BG34_Giant_015_G],\r\n\tonTavernSpellCast: (entity: BoardEntity, input: CastSpellInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.TimewarpedHooktail_BG34_Giant_015_G ? 2 : 1;\r\n\t\taddStatsToBoard(entity, input.board, input.hero, 2 * mult,
|
|
1
|
+
{"version":3,"file":"timewarped-hooktail.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-hooktail.ts"],"names":[],"mappings":";;;AAEA,0CAAiD;AAGpC,QAAA,iBAAiB,GAA0B;IACvD,OAAO,EAAE,sCAAwF;IACjG,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const TimewarpedHootail: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.TimewarpedHooktail_BG34_Giant_015, CardIds.TimewarpedHooktail_BG34_Giant_015_G],\r\n\tonTavernSpellCast: (entity: BoardEntity, input: CastSpellInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.TimewarpedHooktail_BG34_Giant_015_G ? 2 : 1;\r\n\t\taddStatsToBoard(entity, input.board, input.hero, 2 * mult, 2 * mult, input.gameState);\r\n\t},\r\n};\r\n"]}
|
|
@@ -7,7 +7,7 @@ exports.TimewarpedInterpreter = {
|
|
|
7
7
|
cardIds: ["BG34_Giant_120", "BG34_Giant_120_G"],
|
|
8
8
|
onBeforeMagnetize: (entity, input) => {
|
|
9
9
|
const mult = entity.cardId === "BG34_Giant_120_G" ? 2 : 1;
|
|
10
|
-
(0, utils_1.addStatsToBoard)(entity, input.board, input.hero, 3 * mult,
|
|
10
|
+
(0, utils_1.addStatsToBoard)(entity, input.board, input.hero, 3 * mult, 2 * mult, input.gameState, reference_data_1.Race[reference_data_1.Race.MECH]);
|
|
11
11
|
},
|
|
12
12
|
};
|
|
13
13
|
//# sourceMappingURL=timewarped-interpreter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-interpreter.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-interpreter.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,0CAAiD;AAGpC,QAAA,qBAAqB,GAA0B;IAC3D,OAAO,EAAE,sCAA8F;IACvG,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAA6B,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,qBAAI,CAAC,qBAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxG,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnBeforeMagnetizeInput } from '../../../simulation/magnetize';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { OnBeforeMagnetizeCard } from '../../card.interface';\r\n\r\nexport const TimewarpedInterpreter: OnBeforeMagnetizeCard = {\r\n\tcardIds: [CardIds.TimewarpedInterpreter_BG34_Giant_120, CardIds.TimewarpedInterpreter_BG34_Giant_120_G],\r\n\tonBeforeMagnetize: (entity: BoardEntity, input: OnBeforeMagnetizeInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.TimewarpedInterpreter_BG34_Giant_120_G ? 2 : 1;\r\n\t\taddStatsToBoard(entity, input.board, input.hero, 3 * mult,
|
|
1
|
+
{"version":3,"file":"timewarped-interpreter.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-interpreter.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,0CAAiD;AAGpC,QAAA,qBAAqB,GAA0B;IAC3D,OAAO,EAAE,sCAA8F;IACvG,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAA6B,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,qBAAI,CAAC,qBAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxG,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnBeforeMagnetizeInput } from '../../../simulation/magnetize';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { OnBeforeMagnetizeCard } from '../../card.interface';\r\n\r\nexport const TimewarpedInterpreter: OnBeforeMagnetizeCard = {\r\n\tcardIds: [CardIds.TimewarpedInterpreter_BG34_Giant_120, CardIds.TimewarpedInterpreter_BG34_Giant_120_G],\r\n\tonBeforeMagnetize: (entity: BoardEntity, input: OnBeforeMagnetizeInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.TimewarpedInterpreter_BG34_Giant_120_G ? 2 : 1;\r\n\t\taddStatsToBoard(entity, input.board, input.hero, 3 * mult, 2 * mult, input.gameState, Race[Race.MECH]);\r\n\t},\r\n};\r\n"]}
|
|
@@ -13,7 +13,7 @@ exports.TimewarpedJungleKing = {
|
|
|
13
13
|
}
|
|
14
14
|
const baseBuff = (_a = minion.scriptDataNum1) !== null && _a !== void 0 ? _a : 1;
|
|
15
15
|
const mult = minion.cardId === "BG34_PreMadeChamp_004_G" ? 2 : 1;
|
|
16
|
-
(0, stats_1.modifyStats)(input.spawned, minion,
|
|
16
|
+
(0, stats_1.modifyStats)(input.spawned, minion, 3 * baseBuff * mult, 2 * baseBuff * mult, input.board, input.hero, input.gameState);
|
|
17
17
|
},
|
|
18
18
|
afterTavernSpellCast: (entity, input) => {
|
|
19
19
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-jungle-king.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-jungle-king.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,oBAAoB,GAAqD;IACrF,OAAO,EAAE,oDAA0G;IACnH,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;;QACpE,IACC,CAAC,IAAA,uBAAe,EAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC3G;YACD,OAAO;SACP;QAED,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,cAAc,mCAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,8BAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,IAAA,mBAAW,EACV,KAAK,CAAC,OAAO,EACb,MAAM,EACN,CAAC,GAAG,QAAQ,GAAG,IAAI,EACnB,CAAC,GAAG,QAAQ,GAAG,IAAI,EACnB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;IACH,CAAC;IACD,oBAAoB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;;QACpE,MAAM,CAAC,cAAc,GAAG,MAAA,MAAM,CAAC,cAAc,mCAAI,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,EAAE,CAAC;IACzB,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { AfterOtherSpawnedCard, AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nexport const TimewarpedJungleKing: AfterOtherSpawnedCard & AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.TimewarpedJungleKing_BG34_PreMadeChamp_004, CardIds.TimewarpedJungleKing_BG34_PreMadeChamp_004_G],\r\n\tafterOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tif (\r\n\t\t\t!hasCorrectTribe(input.spawned, input.hero, Race.BEAST, input.gameState.anomalies, input.gameState.allCards)\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst baseBuff = minion.scriptDataNum1 ?? 1;\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedJungleKing_BG34_PreMadeChamp_004_G ? 2 : 1;\r\n\t\tmodifyStats(\r\n\t\t\tinput.spawned,\r\n\t\t\tminion,\r\n\t\t\
|
|
1
|
+
{"version":3,"file":"timewarped-jungle-king.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-jungle-king.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,oBAAoB,GAAqD;IACrF,OAAO,EAAE,oDAA0G;IACnH,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;;QACpE,IACC,CAAC,IAAA,uBAAe,EAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC3G;YACD,OAAO;SACP;QAED,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,cAAc,mCAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,8BAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,IAAA,mBAAW,EACV,KAAK,CAAC,OAAO,EACb,MAAM,EACN,CAAC,GAAG,QAAQ,GAAG,IAAI,EACnB,CAAC,GAAG,QAAQ,GAAG,IAAI,EACnB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;IACH,CAAC;IACD,oBAAoB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;;QACpE,MAAM,CAAC,cAAc,GAAG,MAAA,MAAM,CAAC,cAAc,mCAAI,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,EAAE,CAAC;IACzB,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { AfterOtherSpawnedCard, AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nexport const TimewarpedJungleKing: AfterOtherSpawnedCard & AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.TimewarpedJungleKing_BG34_PreMadeChamp_004, CardIds.TimewarpedJungleKing_BG34_PreMadeChamp_004_G],\r\n\tafterOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tif (\r\n\t\t\t!hasCorrectTribe(input.spawned, input.hero, Race.BEAST, input.gameState.anomalies, input.gameState.allCards)\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst baseBuff = minion.scriptDataNum1 ?? 1;\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedJungleKing_BG34_PreMadeChamp_004_G ? 2 : 1;\r\n\t\tmodifyStats(\r\n\t\t\tinput.spawned,\r\n\t\t\tminion,\r\n\t\t\t3 * baseBuff * mult,\r\n\t\t\t2 * baseBuff * mult,\r\n\t\t\tinput.board,\r\n\t\t\tinput.hero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t},\r\n\tafterTavernSpellCast: (entity: BoardEntity, input: CastSpellInput) => {\r\n\t\tentity.scriptDataNum1 = entity.scriptDataNum1 ?? 0;\r\n\t\tentity.scriptDataNum1++;\r\n\t},\r\n};\r\n"]}
|
|
@@ -9,10 +9,10 @@ exports.TimewarpedPainter = {
|
|
|
9
9
|
var _a;
|
|
10
10
|
const targets = (0, attack_1.getNeighbours)(input.board, minion);
|
|
11
11
|
const mult = minion.cardId === "BG34_Giant_319_G" ? 2 : 1;
|
|
12
|
-
const baseBuff = (_a = minion.scriptDataNum1) !== null && _a !== void 0 ? _a :
|
|
12
|
+
const baseBuff = (_a = minion.scriptDataNum1) !== null && _a !== void 0 ? _a : 1;
|
|
13
13
|
for (const target of targets) {
|
|
14
14
|
input.gameState.spectator.registerPowerTarget(minion, target, input.board, input.hero, input.otherHero);
|
|
15
|
-
(0, stats_1.modifyStats)(target, minion, baseBuff * mult, baseBuff * mult, input.board, input.hero, input.gameState);
|
|
15
|
+
(0, stats_1.modifyStats)(target, minion, 2 * baseBuff * mult, 1 * baseBuff * mult, input.board, input.hero, input.gameState);
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-painter.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-painter.ts"],"names":[],"mappings":";;;AAEA,uDAA2D;AAC3D,qDAAwD;AAG3C,QAAA,iBAAiB,GAAkB;IAC/C,OAAO,EAAE,sCAAsF;IAC/F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;;QACzD,MAAM,OAAO,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,cAAc,mCAAI,CAAC,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACxG,IAAA,mBAAW,
|
|
1
|
+
{"version":3,"file":"timewarped-painter.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-painter.ts"],"names":[],"mappings":";;;AAEA,uDAA2D;AAC3D,qDAAwD;AAG3C,QAAA,iBAAiB,GAAkB;IAC/C,OAAO,EAAE,sCAAsF;IAC/F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;;QACzD,MAAM,OAAO,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,cAAc,mCAAI,CAAC,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACxG,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,CAAC,GAAG,QAAQ,GAAG,IAAI,EACnB,CAAC,GAAG,QAAQ,GAAG,IAAI,EACnB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const TimewarpedPainter: EndOfTurnCard = {\r\n\tcardIds: [CardIds.TimewarpedPainter_BG34_Giant_319, CardIds.TimewarpedPainter_BG34_Giant_319_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst targets = getNeighbours(input.board, minion);\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedPainter_BG34_Giant_319_G ? 2 : 1;\r\n\t\tconst baseBuff = minion.scriptDataNum1 ?? 1;\r\n\t\tfor (const target of targets) {\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(minion, target, input.board, input.hero, input.otherHero);\r\n\t\t\tmodifyStats(\r\n\t\t\t\ttarget,\r\n\t\t\t\tminion,\r\n\t\t\t\t2 * baseBuff * mult,\r\n\t\t\t\t1 * baseBuff * mult,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -7,7 +7,7 @@ exports.TimewarpedPrimscale = {
|
|
|
7
7
|
baseAvengeValue: (cardId) => 3,
|
|
8
8
|
avenge: (minion, input) => {
|
|
9
9
|
const mult = minion.cardId === "BG34_PreMadeChamp_022_G" ? 2 : 1;
|
|
10
|
-
const cardsToAdd = Array.from({ length: mult }).map(() =>
|
|
10
|
+
const cardsToAdd = Array.from({ length: mult }).map(() => "BG28_169");
|
|
11
11
|
(0, cards_in_hand_1.addCardsInHand)(input.hero, input.board, cardsToAdd, input.gameState);
|
|
12
12
|
},
|
|
13
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-primscale.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-primscale.ts"],"names":[],"mappings":";;;AAGA,qEAAmE;AAGtD,QAAA,mBAAmB,GAAe;IAC9C,OAAO,EAAE,oDAA0G;IACnH,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,8BAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"timewarped-primscale.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-primscale.ts"],"names":[],"mappings":";;;AAGA,qEAAmE;AAGtD,QAAA,mBAAmB,GAAe;IAC9C,OAAO,EAAE,oDAA0G;IACnH,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,8BAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,WAAoC,CAAC,CAAC;QAC/F,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const TimewarpedPrimscale: AvengeCard = {\r\n\tcardIds: [CardIds.TimewarpedPrismscale_BG34_PreMadeChamp_022, CardIds.TimewarpedPrismscale_BG34_PreMadeChamp_022_G],\r\n\tbaseAvengeValue: (cardId: string) => 3,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedPrismscale_BG34_PreMadeChamp_022_G ? 2 : 1;\r\n\t\tconst cardsToAdd = Array.from({ length: mult }).map(() => CardIds.AzeriteEmpowerment_BG28_169);\r\n\t\taddCardsInHand(input.hero, input.board, cardsToAdd, input.gameState);\r\n\t},\r\n};\r\n"]}
|
|
@@ -8,9 +8,9 @@ exports.TimewarpedRagnaros = {
|
|
|
8
8
|
startOfCombatTiming: 'start-of-combat',
|
|
9
9
|
startOfCombat: (minion, input) => {
|
|
10
10
|
const mult = minion.cardId === "BG34_Giant_580_G" ? 2 : 1;
|
|
11
|
-
const target = (0, utils_1.
|
|
11
|
+
const target = (0, utils_1.pickRandomHighestHealth)(input.opponentBoard);
|
|
12
12
|
if (!!target) {
|
|
13
|
-
(0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, input.playerEntity,
|
|
13
|
+
(0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, input.playerEntity, minion.attack * mult, input.playerBoard, input.playerEntity, input.gameState);
|
|
14
14
|
}
|
|
15
15
|
return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
|
|
16
16
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-ragnaros.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-ragnaros.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"timewarped-ragnaros.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-ragnaros.ts"],"names":[],"mappings":";;;AAEA,mDAAkE;AAClE,uDAAgE;AAInD,QAAA,kBAAkB,GAAsB;IACpD,OAAO,EAAE,sCAAwF;IACjG,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,IAAA,+BAAuB,EAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,IAAA,2BAAkB,EACjB,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,YAAY,EAClB,MAAM,CAAC,MAAM,GAAG,IAAI,EACpB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandomHighestHealth } from '../../../services/utils';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const TimewarpedRagnaros: StartOfCombatCard = {\r\n\tcardIds: [CardIds.TimewarpedRagnaros_BG34_Giant_580, CardIds.TimewarpedRagnaros_BG34_Giant_580_G],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedRagnaros_BG34_Giant_580_G ? 2 : 1;\r\n\t\tconst target = pickRandomHighestHealth(input.opponentBoard);\r\n\t\tif (!!target) {\r\n\t\t\tdealDamageToMinion(\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tminion.attack * mult,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t},\r\n};\r\n"]}
|
|
@@ -6,7 +6,7 @@ exports.TimewarpedSaurolisk = {
|
|
|
6
6
|
cardIds: ["BG34_Giant_202", "BG34_Giant_202_G"],
|
|
7
7
|
onDeathrattleTriggered: (minion, input) => {
|
|
8
8
|
const mult = minion.cardId === "BG34_Giant_202_G" ? 2 : 1;
|
|
9
|
-
(0, stats_1.modifyStats)(minion, minion, 3 * mult,
|
|
9
|
+
(0, stats_1.modifyStats)(minion, minion, 3 * mult, 2 * mult, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.gameState);
|
|
10
10
|
return true;
|
|
11
11
|
},
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-saurolisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-saurolisk.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,mBAAmB,GAA6B;IAC5D,OAAO,EAAE,sCAA0F;IACnG,sBAAsB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QACjF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,CAAC,GAAG,IAAI,EACR,CAAC,GAAG,IAAI,EACR,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { DeathrattleTriggeredCard } from '../../card.interface';\r\n\r\nexport const TimewarpedSaurolisk: DeathrattleTriggeredCard = {\r\n\tcardIds: [CardIds.TimewarpedSaurolisk_BG34_Giant_202, CardIds.TimewarpedSaurolisk_BG34_Giant_202_G],\r\n\tonDeathrattleTriggered: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedSaurolisk_BG34_Giant_202_G ? 2 : 1;\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\t3 * mult,\r\n\t\t\
|
|
1
|
+
{"version":3,"file":"timewarped-saurolisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-saurolisk.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,mBAAmB,GAA6B;IAC5D,OAAO,EAAE,sCAA0F;IACnG,sBAAsB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QACjF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,CAAC,GAAG,IAAI,EACR,CAAC,GAAG,IAAI,EACR,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { DeathrattleTriggeredCard } from '../../card.interface';\r\n\r\nexport const TimewarpedSaurolisk: DeathrattleTriggeredCard = {\r\n\tcardIds: [CardIds.TimewarpedSaurolisk_BG34_Giant_202, CardIds.TimewarpedSaurolisk_BG34_Giant_202_G],\r\n\tonDeathrattleTriggered: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedSaurolisk_BG34_Giant_202_G ? 2 : 1;\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\t3 * mult,\r\n\t\t\t2 * mult,\r\n\t\t\tinput.boardWithDeadEntity,\r\n\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
|
|
@@ -12,7 +12,7 @@ exports.TimewarpedSensei = {
|
|
|
12
12
|
const neighbours = (0, attack_1.getNeighbours)(input.board, minion);
|
|
13
13
|
for (const neighbour of neighbours) {
|
|
14
14
|
if ((0, utils_1.hasCorrectTribe)(neighbour, input.hero, reference_data_1.Race.MECH, input.gameState.anomalies, input.gameState.allCards)) {
|
|
15
|
-
(0, stats_1.modifyStats)(neighbour, minion, 3 * mult,
|
|
15
|
+
(0, stats_1.modifyStats)(neighbour, minion, 3 * mult, 3 * mult, input.board, input.hero, input.gameState);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-sensei.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-sensei.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,uDAA2D;AAC3D,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,gBAAgB,GAAkB;IAC9C,OAAO,EAAE,sCAAoF;IAC7F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACtD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YACnC,IACC,IAAA,uBAAe,EAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EACrG;gBACD,IAAA,mBAAW,EAAC,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aAC7F;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const TimewarpedSensei: EndOfTurnCard = {\r\n\tcardIds: [CardIds.TimewarpedSensei_BG34_Giant_209, CardIds.TimewarpedSensei_BG34_Giant_209_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedSensei_BG34_Giant_209_G ? 2 : 1;\r\n\t\tconst neighbours = getNeighbours(input.board, minion);\r\n\t\tfor (const neighbour of neighbours) {\r\n\t\t\tif (\r\n\t\t\t\thasCorrectTribe(neighbour, input.hero, Race.MECH, input.gameState.anomalies, input.gameState.allCards)\r\n\t\t\t) {\r\n\t\t\t\tmodifyStats(neighbour, minion, 3 * mult,
|
|
1
|
+
{"version":3,"file":"timewarped-sensei.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-sensei.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,uDAA2D;AAC3D,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,gBAAgB,GAAkB;IAC9C,OAAO,EAAE,sCAAoF;IAC7F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACtD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YACnC,IACC,IAAA,uBAAe,EAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EACrG;gBACD,IAAA,mBAAW,EAAC,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aAC7F;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const TimewarpedSensei: EndOfTurnCard = {\r\n\tcardIds: [CardIds.TimewarpedSensei_BG34_Giant_209, CardIds.TimewarpedSensei_BG34_Giant_209_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedSensei_BG34_Giant_209_G ? 2 : 1;\r\n\t\tconst neighbours = getNeighbours(input.board, minion);\r\n\t\tfor (const neighbour of neighbours) {\r\n\t\t\tif (\r\n\t\t\t\thasCorrectTribe(neighbour, input.hero, Race.MECH, input.gameState.anomalies, input.gameState.allCards)\r\n\t\t\t) {\r\n\t\t\t\tmodifyStats(neighbour, minion, 3 * mult, 3 * mult, input.board, input.hero, input.gameState);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -6,8 +6,14 @@ exports.TimewarpedSteamer = {
|
|
|
6
6
|
cardIds: ["BG34_PreMadeChamp_038", "BG34_PreMadeChamp_038_G"],
|
|
7
7
|
endOfTurn: (minion, input) => {
|
|
8
8
|
const mult = minion.cardId === "BG34_PreMadeChamp_038_G" ? 2 : 1;
|
|
9
|
-
const cardsToAdd =
|
|
10
|
-
|
|
9
|
+
const cardsToAdd = [
|
|
10
|
+
"BG34_170t2",
|
|
11
|
+
"BG34_170t3",
|
|
12
|
+
"BG34_170t",
|
|
13
|
+
];
|
|
14
|
+
for (let i = 0; i < mult; i++) {
|
|
15
|
+
(0, cards_in_hand_1.addCardsInHand)(input.hero, input.board, cardsToAdd, input.gameState);
|
|
16
|
+
}
|
|
11
17
|
},
|
|
12
18
|
};
|
|
13
19
|
//# sourceMappingURL=timewarped-steamer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-steamer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-steamer.ts"],"names":[],"mappings":";;;AAEA,qEAAmE;AAGtD,QAAA,iBAAiB,GAAkB;IAC/C,OAAO,EAAE,oDAAoG;IAC7G,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,8BAAsD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,MAAM,UAAU,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"timewarped-steamer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-steamer.ts"],"names":[],"mappings":";;;AAEA,qEAAmE;AAGtD,QAAA,iBAAiB,GAAkB;IAC/C,OAAO,EAAE,oDAAoG;IAC7G,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,8BAAsD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,MAAM,UAAU,GAAG;;;;SAIlB,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACrE;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const TimewarpedSteamer: EndOfTurnCard = {\r\n\tcardIds: [CardIds.TimewarpedSteamer_BG34_PreMadeChamp_038, CardIds.TimewarpedSteamer_BG34_PreMadeChamp_038_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedSteamer_BG34_PreMadeChamp_038_G ? 2 : 1;\r\n\t\tconst cardsToAdd = [\r\n\t\t\tCardIds.AutoAccelerator_BlueVolumizerToken_BG34_170t2,\r\n\t\t\tCardIds.AutoAccelerator_GreenVolumizerToken_BG34_170t3,\r\n\t\t\tCardIds.AutoAccelerator_RedVolumizerToken_BG34_170t,\r\n\t\t];\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\taddCardsInHand(input.hero, input.board, cardsToAdd, input.gameState);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -11,7 +11,7 @@ exports.TimewarpedSylvar = {
|
|
|
11
11
|
const goldenMinions = input.board.filter((e) => (0, utils_1.isGolden)(e.cardId, input.gameState.allCards)).length;
|
|
12
12
|
const neighbours = (0, attack_1.getNeighbours)(input.board, minion);
|
|
13
13
|
for (let i = 0; i < goldenMinions + 1; i++) {
|
|
14
|
-
neighbours.forEach((target) => (0, stats_1.modifyStats)(target, minion,
|
|
14
|
+
neighbours.forEach((target) => (0, stats_1.modifyStats)(target, minion, 8 * mult, 8 * mult, input.board, input.hero, input.gameState));
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-sylvar.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-sylvar.ts"],"names":[],"mappings":";;;AAEA,uDAA2D;AAC3D,qDAAwD;AACxD,0CAA0C;AAG7B,QAAA,gBAAgB,GAAkB;IAC9C,OAAO,EAAE,sCAAoF;IAC7F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACrG,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAC7B,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CACzF,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { isGolden } from '../../../utils';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const TimewarpedSylvar: EndOfTurnCard = {\r\n\tcardIds: [CardIds.TimewarpedSylvar_BG34_Giant_021, CardIds.TimewarpedSylvar_BG34_Giant_021_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedSylvar_BG34_Giant_021_G ? 2 : 1;\r\n\t\tconst goldenMinions = input.board.filter((e) => isGolden(e.cardId, input.gameState.allCards)).length;\r\n\t\tconst neighbours = getNeighbours(input.board, minion);\r\n\t\tfor (let i = 0; i < goldenMinions + 1; i++) {\r\n\t\t\tneighbours.forEach((target) =>\r\n\t\t\t\tmodifyStats(target, minion,
|
|
1
|
+
{"version":3,"file":"timewarped-sylvar.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-sylvar.ts"],"names":[],"mappings":";;;AAEA,uDAA2D;AAC3D,qDAAwD;AACxD,0CAA0C;AAG7B,QAAA,gBAAgB,GAAkB;IAC9C,OAAO,EAAE,sCAAoF;IAC7F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACrG,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAC7B,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CACzF,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { isGolden } from '../../../utils';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const TimewarpedSylvar: EndOfTurnCard = {\r\n\tcardIds: [CardIds.TimewarpedSylvar_BG34_Giant_021, CardIds.TimewarpedSylvar_BG34_Giant_021_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedSylvar_BG34_Giant_021_G ? 2 : 1;\r\n\t\tconst goldenMinions = input.board.filter((e) => isGolden(e.cardId, input.gameState.allCards)).length;\r\n\t\tconst neighbours = getNeighbours(input.board, minion);\r\n\t\tfor (let i = 0; i < goldenMinions + 1; i++) {\r\n\t\t\tneighbours.forEach((target) =>\r\n\t\t\t\tmodifyStats(target, minion, 8 * mult, 8 * mult, input.board, input.hero, input.gameState),\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -6,7 +6,7 @@ exports.TimewarpedTender = {
|
|
|
6
6
|
cardIds: ["BG34_Giant_603", "BG34_Giant_603_G"],
|
|
7
7
|
endOfTurn: (minion, input) => {
|
|
8
8
|
const mult = minion.cardId === "BG34_Giant_603_G" ? 2 : 1;
|
|
9
|
-
const cardsToAdd = Array(2 * mult).
|
|
9
|
+
const cardsToAdd = Array.from({ length: 2 * mult }).map(() => input.gameState.cardsData.getRandomTavernSpell());
|
|
10
10
|
(0, cards_in_hand_1.addCardsInHand)(input.hero, input.board, cardsToAdd, input.gameState);
|
|
11
11
|
},
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-tender.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-tender.ts"],"names":[],"mappings":";;;AAEA,qEAAmE;AAGtD,QAAA,gBAAgB,GAAkB;IAC9C,OAAO,EAAE,sCAAoF;IAC7F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"timewarped-tender.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-tender.ts"],"names":[],"mappings":";;;AAEA,qEAAmE;AAGtD,QAAA,gBAAgB,GAAkB;IAC9C,OAAO,EAAE,sCAAoF;IAC7F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAChH,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const TimewarpedTender: EndOfTurnCard = {\r\n\tcardIds: [CardIds.TimewarpedTender_BG34_Giant_603, CardIds.TimewarpedTender_BG34_Giant_603_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedTender_BG34_Giant_603_G ? 2 : 1;\r\n\t\tconst cardsToAdd = Array.from({ length: 2 * mult }).map(() => input.gameState.cardsData.getRandomTavernSpell());\r\n\t\taddCardsInHand(input.hero, input.board, cardsToAdd, input.gameState);\r\n\t},\r\n};\r\n"]}
|
|
@@ -10,7 +10,7 @@ exports.TimewarpedTideRazor = {
|
|
|
10
10
|
var _a;
|
|
11
11
|
const mult = minion.cardId === "BG34_Giant_328_G" ? 2 : 1;
|
|
12
12
|
const spawnedEntities = [];
|
|
13
|
-
for (let i = 0; i <
|
|
13
|
+
for (let i = 0; i < 4 * mult; i++) {
|
|
14
14
|
const cardToAdd = input.gameState.cardsData.getRandomMinionForTribe(reference_data_1.Race.PIRATE, (_a = input.boardWithDeadEntityHero.tavernTier) !== null && _a !== void 0 ? _a : 5);
|
|
15
15
|
const spawned = (0, deathrattle_spawns_1.simplifiedSpawnEntities)(cardToAdd, 1, input);
|
|
16
16
|
spawnedEntities.push(...spawned);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-tide-razor.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-tide-razor.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,qEAAmE;AAEnE,+EAAiF;AAGpE,QAAA,mBAAmB,GAAyB;IACxD,OAAO,EAAE,sCAA0F;IACnG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,eAAe,GAAkB,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,uBAAuB,CAClE,qBAAI,CAAC,MAAM,EACX,MAAA,KAAK,CAAC,uBAAuB,CAAC,UAAU,mCAAI,CAAC,CAC7C,CAAC;YACF,MAAM,OAAO,GAAG,IAAA,4CAAuB,EAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7D,eAAe,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;YACjC,IAAA,8BAAc,EAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACvG;QACD,OAAO,eAAe,CAAC;IACxB,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const TimewarpedTideRazor: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.TimewarpedTideRazor_BG34_Giant_328, CardIds.TimewarpedTideRazor_BG34_Giant_328_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedTideRazor_BG34_Giant_328_G ? 2 : 1;\r\n\t\tconst spawnedEntities: BoardEntity[] = [];\r\n\t\tfor (let i = 0; i <
|
|
1
|
+
{"version":3,"file":"timewarped-tide-razor.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-tide-razor.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,qEAAmE;AAEnE,+EAAiF;AAGpE,QAAA,mBAAmB,GAAyB;IACxD,OAAO,EAAE,sCAA0F;IACnG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,eAAe,GAAkB,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,uBAAuB,CAClE,qBAAI,CAAC,MAAM,EACX,MAAA,KAAK,CAAC,uBAAuB,CAAC,UAAU,mCAAI,CAAC,CAC7C,CAAC;YACF,MAAM,OAAO,GAAG,IAAA,4CAAuB,EAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7D,eAAe,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;YACjC,IAAA,8BAAc,EAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACvG;QACD,OAAO,eAAe,CAAC;IACxB,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const TimewarpedTideRazor: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.TimewarpedTideRazor_BG34_Giant_328, CardIds.TimewarpedTideRazor_BG34_Giant_328_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedTideRazor_BG34_Giant_328_G ? 2 : 1;\r\n\t\tconst spawnedEntities: BoardEntity[] = [];\r\n\t\tfor (let i = 0; i < 4 * mult; i++) {\r\n\t\t\tconst cardToAdd = input.gameState.cardsData.getRandomMinionForTribe(\r\n\t\t\t\tRace.PIRATE,\r\n\t\t\t\tinput.boardWithDeadEntityHero.tavernTier ?? 5,\r\n\t\t\t);\r\n\t\t\tconst spawned = simplifiedSpawnEntities(cardToAdd, 1, input);\r\n\t\t\tspawnedEntities.push(...spawned);\r\n\t\t\taddCardsInHand(input.boardWithDeadEntityHero, input.boardWithDeadEntity, [cardToAdd], input.gameState);\r\n\t\t}\r\n\t\treturn spawnedEntities;\r\n\t},\r\n};\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const TimewarpedTwirler: PlayedBloodGemsOnMeCard
|
|
1
|
+
import { PlayedBloodGemsOnMeCard } from '../../card.interface';
|
|
2
|
+
export declare const TimewarpedTwirler: PlayedBloodGemsOnMeCard;
|
|
@@ -1,33 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TimewarpedTwirler = void 0;
|
|
4
|
-
const cast_tavern_spell_1 = require("../../../mechanics/cast-tavern-spell");
|
|
5
4
|
exports.TimewarpedTwirler = {
|
|
6
5
|
cardIds: ["BG34_Giant_105", "BG34_Giant_105_G"],
|
|
7
|
-
defaultCharges: (entity) => 2,
|
|
8
6
|
playedBloodGemsOnMe: (entity, input) => {
|
|
9
|
-
|
|
10
|
-
entity.memory = (_b = (_a = entity.memory) !== null && _a !== void 0 ? _a : entity.scriptDataNum1) !== null && _b !== void 0 ? _b : 0;
|
|
11
|
-
entity.memory++;
|
|
12
|
-
if (entity.abiityChargesLeft <= 0) {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
if (entity.memory % 2 === 0) {
|
|
16
|
-
entity.abiityChargesLeft--;
|
|
17
|
-
const mult = entity.cardId === "BG34_Giant_105_G" ? 2 : 1;
|
|
18
|
-
for (let i = 0; i < mult; i++) {
|
|
19
|
-
(0, cast_tavern_spell_1.castTavernSpell)("BG34_689", {
|
|
20
|
-
spellCardId: "BG34_689",
|
|
21
|
-
source: input.hero,
|
|
22
|
-
target: null,
|
|
23
|
-
board: input.board,
|
|
24
|
-
hero: input.hero,
|
|
25
|
-
otherBoard: input.otherBoard,
|
|
26
|
-
otherHero: input.otherHero,
|
|
27
|
-
gameState: input.gameState,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
7
|
+
return;
|
|
31
8
|
},
|
|
32
9
|
};
|
|
33
10
|
//# sourceMappingURL=timewarped-twirler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-twirler.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-twirler.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"timewarped-twirler.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-twirler.ts"],"names":[],"mappings":";;;AAKa,QAAA,iBAAiB,GAA4B;IACzD,OAAO,EAAE,sCAAsF;IAC/F,mBAAmB,EAAE,CAAC,MAAmB,EAAE,KAA+B,EAAE,EAAE;QAG7E,OAAO;IAcR,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { PlayedBloodGemsOnMeInput } from '../../../simulation/blood-gems';\r\nimport { PlayedBloodGemsOnMeCard } from '../../card.interface';\r\n\r\nexport const TimewarpedTwirler: PlayedBloodGemsOnMeCard = {\r\n\tcardIds: [CardIds.TimewarpedTwirler_BG34_Giant_105, CardIds.TimewarpedTwirler_BG34_Giant_105_G],\r\n\tplayedBloodGemsOnMe: (entity: BoardEntity, input: PlayedBloodGemsOnMeInput) => {\r\n\t\t// It only does something if the player plays a blood gem on this.\r\n\t\t// I'll implement it when I face an interaction that requires it\r\n\t\treturn;\r\n\t\t// const mult = entity.cardId === CardIds.TimewarpedTwirler_BG34_Giant_105_G ? 2 : 1;\r\n\t\t// for (let i = 0; i < mult; i++) {\r\n\t\t// \tcastTavernSpell(CardIds.BloodGemBarrage_BG34_689, {\r\n\t\t// \t\tspellCardId: CardIds.BloodGemBarrage_BG34_689,\r\n\t\t// \t\tsource: input.hero,\r\n\t\t// \t\ttarget: null,\r\n\t\t// \t\tboard: input.board,\r\n\t\t// \t\thero: input.hero,\r\n\t\t// \t\totherBoard: input.otherBoard,\r\n\t\t// \t\totherHero: input.otherHero,\r\n\t\t// \t\tgameState: input.gameState,\r\n\t\t// \t});\r\n\t\t// }\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UtilityDrone = void 0;
|
|
4
|
+
const magnetize_1 = require("../../../simulation/magnetize");
|
|
5
|
+
const stats_1 = require("../../../simulation/stats");
|
|
6
|
+
exports.UtilityDrone = {
|
|
7
|
+
cardIds: ["BG26_152", "BG26_152_G"],
|
|
8
|
+
endOfTurn: (minion, input) => {
|
|
9
|
+
const mult = minion.cardId === "BG26_152_G" ? 2 : 1;
|
|
10
|
+
for (const target of input.board) {
|
|
11
|
+
const magnetizations = (0, magnetize_1.getMagnetizations)(target, input.gameState);
|
|
12
|
+
if (magnetizations > 0) {
|
|
13
|
+
(0, stats_1.modifyStats)(target, minion, 3 * magnetizations * mult, 3 * magnetizations * mult, input.board, input.hero, input.gameState);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=utility-drone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utility-drone.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/utility-drone.ts"],"names":[],"mappings":";;;AAEA,6DAAkE;AAClE,qDAAwD;AAG3C,QAAA,YAAY,GAAkB;IAC1C,OAAO,EAAE,0BAAgE;IACzE,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;YACjC,MAAM,cAAc,GAAG,IAAA,6BAAiB,EAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAClE,IAAI,cAAc,GAAG,CAAC,EAAE;gBACvB,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,CAAC,GAAG,cAAc,GAAG,IAAI,EACzB,CAAC,GAAG,cAAc,GAAG,IAAI,EACzB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getMagnetizations } from '../../../simulation/magnetize';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const UtilityDrone: EndOfTurnCard = {\r\n\tcardIds: [CardIds.UtilityDrone_BG26_152, CardIds.UtilityDrone_BG26_152_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.UtilityDrone_BG26_152_G ? 2 : 1;\r\n\t\tfor (const target of input.board) {\r\n\t\t\tconst magnetizations = getMagnetizations(target, input.gameState);\r\n\t\t\tif (magnetizations > 0) {\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\t3 * magnetizations * mult,\r\n\t\t\t\t\t3 * magnetizations * mult,\r\n\t\t\t\t\tinput.board,\r\n\t\t\t\t\tinput.hero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -6,7 +6,7 @@ exports.WhirlingLassOMatic = {
|
|
|
6
6
|
cardIds: ["BG28_635", "BG28_635_G"],
|
|
7
7
|
rally: (minion, input) => {
|
|
8
8
|
const numberOfCardsToAdd = input.attacker.cardId === "BG28_635_G" ? 2 : 1;
|
|
9
|
-
const cardsToAdd = Array.from({ length: numberOfCardsToAdd }).map(() => null);
|
|
9
|
+
const cardsToAdd = Array.from({ length: numberOfCardsToAdd }).map(() => { var _a; return input.gameState.cardsData.getRandomTavernSpell({ maxTavernTier: (_a = input.attackingHero.tavernTier) !== null && _a !== void 0 ? _a : 6 }); });
|
|
10
10
|
(0, cards_in_hand_1.addCardsInHand)(input.attackingHero, input.attackingBoard, cardsToAdd, input.gameState);
|
|
11
11
|
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
12
12
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whirling-lass-o-matic.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/whirling-lass-o-matic.ts"],"names":[],"mappings":";;;AAEA,qEAAmE;AAItD,QAAA,kBAAkB,GAAc;IAC5C,OAAO,EAAE,0BAA4E;IACrF,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACpD,MAAM,kBAAkB,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,iBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"whirling-lass-o-matic.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/whirling-lass-o-matic.ts"],"names":[],"mappings":";;;AAEA,qEAAmE;AAItD,QAAA,kBAAkB,GAAc;IAC5C,OAAO,EAAE,0BAA4E;IACrF,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACpD,MAAM,kBAAkB,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,iBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,WACtE,OAAA,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,aAAa,EAAE,MAAA,KAAK,CAAC,aAAa,CAAC,UAAU,mCAAI,CAAC,EAAE,CAAC,CAAA,EAAA,CACtG,CAAC;QACF,IAAA,8BAAc,EAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACvF,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\nexport const WhirlingLassOMatic: RallyCard = {\r\n\tcardIds: [CardIds.WhirlingLassOMatic_BG28_635, CardIds.WhirlingLassOMatic_BG28_635_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tconst numberOfCardsToAdd = input.attacker.cardId === CardIds.WhirlingLassOMatic_BG28_635_G ? 2 : 1;\r\n\t\tconst cardsToAdd = Array.from({ length: numberOfCardsToAdd }).map(() =>\r\n\t\t\tinput.gameState.cardsData.getRandomTavernSpell({ maxTavernTier: input.attackingHero.tavernTier ?? 6 }),\r\n\t\t);\r\n\t\taddCardsInHand(input.attackingHero, input.attackingBoard, cardsToAdd, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SepulchralSergeant = void 0;
|
|
4
|
-
const
|
|
4
|
+
const stats_1 = require("../../../simulation/stats");
|
|
5
5
|
exports.SepulchralSergeant = {
|
|
6
6
|
cardIds: ["BG34_111", "BG34_111_G"],
|
|
7
7
|
deathrattleSpawn: (minion, input) => {
|
|
8
8
|
const mult = minion.cardId === "BG34_111_G" ? 2 : 1;
|
|
9
9
|
const base = 1 + (minion.scriptDataNum1 || 1);
|
|
10
10
|
const buff = base * mult;
|
|
11
|
-
|
|
11
|
+
const targets = input.boardWithDeadEntity.filter((e) => e != minion && e.health > 0 && !e.definitelyDead);
|
|
12
|
+
for (const target of targets) {
|
|
13
|
+
(0, stats_1.modifyStats)(target, minion, 0, buff, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.gameState);
|
|
14
|
+
}
|
|
12
15
|
return [];
|
|
13
16
|
},
|
|
14
17
|
onStatsChanged: (minion, input) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sepulchral-sergent.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/sepulchral-sergent.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sepulchral-sergent.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/sepulchral-sergent.ts"],"names":[],"mappings":";;;AAGA,qDAA6E;AAGhE,QAAA,kBAAkB,GAA8C;IAC5E,OAAO,EAAE,0BAA4E;IACrF,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7E,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAC1G,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,CAAC,EACD,IAAI,EACJ,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,EAAE,CAAC;IACX,CAAC;IACD,cAAc,EAAE,CAAC,MAAmB,EAAE,KAA0B,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE;YACtD,MAAM,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACzD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { modifyStats, OnStatsChangedInput } from '../../../simulation/stats';\r\nimport { DeathrattleSpawnCard, OnStatsChangedCard } from '../../card.interface';\r\n\r\nexport const SepulchralSergeant: DeathrattleSpawnCard & OnStatsChangedCard = {\r\n\tcardIds: [CardIds.SepulchralSergeant_BG34_111, CardIds.SepulchralSergeant_BG34_111_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.SepulchralSergeant_BG34_111_G ? 2 : 1;\r\n\t\t// Not sure about that +1\r\n\t\tconst base = 1 + (minion.scriptDataNum1 || 1);\r\n\t\tconst buff = base * mult;\r\n\t\tconst targets = input.boardWithDeadEntity.filter((e) => e != minion && e.health > 0 && !e.definitelyDead);\r\n\t\tfor (const target of targets) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\ttarget,\r\n\t\t\t\tminion,\r\n\t\t\t\t0,\r\n\t\t\t\tbuff,\r\n\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n\tonStatsChanged: (minion: BoardEntity, input: OnStatsChangedInput) => {\r\n\t\tif (input.target === minion && input.attackAmount > 0) {\r\n\t\t\tminion.scriptDataNum1 = (minion.scriptDataNum1 || 2) + 1;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
package/dist/input-sanitation.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildFinalInput = void 0;
|
|
4
|
-
const reference_data_1 = require("@firestone-hs/reference-data");
|
|
5
4
|
const auras_1 = require("./simulation/auras");
|
|
6
5
|
const enchantments_1 = require("./simulation/enchantments");
|
|
7
6
|
const utils_1 = require("./utils");
|
|
8
7
|
const buildFinalInput = (battleInput, cards, cardsData) => {
|
|
8
|
+
var _a, _b;
|
|
9
9
|
const entityIdContainer = { entityId: 999999999 };
|
|
10
10
|
const { board: playerBoard, hand: playerHand, player: playerEntity, } = buildFinalInputForPlayer(battleInput.playerBoard, true, battleInput.gameState.anomalies, cards, cardsData, entityIdContainer);
|
|
11
11
|
const { board: playerTeammateBoard, hand: playerTeammateHand, player: playerTeammateEntity, } = buildFinalInputForPlayer(battleInput.playerTeammateBoard, true, battleInput.gameState.anomalies, cards, cardsData, entityIdContainer);
|
|
@@ -44,7 +44,10 @@ const buildFinalInput = (battleInput, cards, cardsData) => {
|
|
|
44
44
|
},
|
|
45
45
|
}
|
|
46
46
|
: null,
|
|
47
|
-
gameState:
|
|
47
|
+
gameState: {
|
|
48
|
+
...battleInput.gameState,
|
|
49
|
+
anomalies: (_b = (_a = battleInput.gameState.anomalies) === null || _a === void 0 ? void 0 : _a.filter((a) => !!a)) !== null && _b !== void 0 ? _b : [],
|
|
50
|
+
},
|
|
48
51
|
};
|
|
49
52
|
return inputReady;
|
|
50
53
|
};
|
|
@@ -79,14 +82,6 @@ const buildFinalInputForPlayer = (playerInfo, isPlayer, anomalies, cards, cardsD
|
|
|
79
82
|
return { board, hand, player: playerInfo.player };
|
|
80
83
|
};
|
|
81
84
|
const sanitizeHeroPower = (hp, index, player, cards) => {
|
|
82
|
-
var _a, _b, _c, _d, _e;
|
|
83
|
-
if (index !== 0) {
|
|
84
|
-
return hp;
|
|
85
|
-
}
|
|
86
|
-
hp.cardId =
|
|
87
|
-
(_e = (_b = (_a = player.trinkets.find((t) => t.scriptDataNum6 === 3)) === null || _a === void 0 ? void 0 : _a.cardId) !== null && _b !== void 0 ? _b : ((0, reference_data_1.normalizeHeroCardId)(player.cardId, cards) === "BG24_HERO_100"
|
|
88
|
-
? (_d = (_c = player.questRewardEntities) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.cardId
|
|
89
|
-
: null)) !== null && _e !== void 0 ? _e : hp.cardId;
|
|
90
85
|
return hp;
|
|
91
86
|
};
|
|
92
87
|
const buildFinalInputBoard = (playerInfo, isPlayer, cardsData, cards) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-sanitation.js","sourceRoot":"","sources":["../src/input-sanitation.ts"],"names":[],"mappings":"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","sourcesContent":["import { AllCardsService, normalizeHeroCardId } from '@firestone-hs/reference-data';\r\nimport { BgsBattleInfo } from './bgs-battle-info';\r\nimport { BgsBoardInfo } from './bgs-board-info';\r\nimport { BgsHeroPower, BgsPlayerEntity } from './bgs-player-entity';\r\nimport { BoardEntity } from './board-entity';\r\nimport { CardsData } from './cards/cards-data';\r\nimport { CardIds } from './services/card-ids';\r\nimport { setImplicitDataHero, setMissingAuras } from './simulation/auras';\r\nimport { fixEnchantments } from './simulation/enchantments';\r\nimport { addImpliedMechanics } from './utils';\r\n\r\nexport const buildFinalInput = (\r\n\tbattleInput: BgsBattleInfo,\r\n\tcards: AllCardsService,\r\n\tcardsData: CardsData,\r\n): BgsBattleInfo => {\r\n\tconst entityIdContainer = { entityId: 999_999_999 };\r\n\r\n\tconst {\r\n\t\tboard: playerBoard,\r\n\t\thand: playerHand,\r\n\t\tplayer: playerEntity,\r\n\t} = buildFinalInputForPlayer(\r\n\t\tbattleInput.playerBoard,\r\n\t\ttrue,\r\n\t\tbattleInput.gameState.anomalies,\r\n\t\tcards,\r\n\t\tcardsData,\r\n\t\tentityIdContainer,\r\n\t);\r\n\tconst {\r\n\t\tboard: playerTeammateBoard,\r\n\t\thand: playerTeammateHand,\r\n\t\tplayer: playerTeammateEntity,\r\n\t} = buildFinalInputForPlayer(\r\n\t\tbattleInput.playerTeammateBoard,\r\n\t\ttrue,\r\n\t\tbattleInput.gameState.anomalies,\r\n\t\tcards,\r\n\t\tcardsData,\r\n\t\tentityIdContainer,\r\n\t);\r\n\r\n\tconst {\r\n\t\tboard: opponentBoard,\r\n\t\thand: opponentHand,\r\n\t\tplayer: opponentEntity,\r\n\t} = buildFinalInputForPlayer(\r\n\t\tbattleInput.opponentBoard,\r\n\t\tfalse,\r\n\t\tbattleInput.gameState.anomalies,\r\n\t\tcards,\r\n\t\tcardsData,\r\n\t\tentityIdContainer,\r\n\t);\r\n\tconst {\r\n\t\tboard: opponentTeammateBoard,\r\n\t\thand: opponentTeammateHand,\r\n\t\tplayer: opponentTeammateEntity,\r\n\t} = buildFinalInputForPlayer(\r\n\t\tbattleInput.opponentTeammateBoard,\r\n\t\tfalse,\r\n\t\tbattleInput.gameState.anomalies,\r\n\t\tcards,\r\n\t\tcardsData,\r\n\t\tentityIdContainer,\r\n\t);\r\n\r\n\t// We do this so that we can have mutated objects inside the simulation and still\r\n\t// be able to start from a fresh copy for each simulation\r\n\tconst inputReady: BgsBattleInfo = {\r\n\t\tplayerBoard: {\r\n\t\t\tboard: playerBoard,\r\n\t\t\tplayer: {\r\n\t\t\t\t...playerEntity,\r\n\t\t\t\thand: playerHand,\r\n\t\t\t},\r\n\t\t},\r\n\t\tplayerTeammateBoard: !!playerTeammateEntity\r\n\t\t\t? {\r\n\t\t\t\t\tboard: playerTeammateBoard,\r\n\t\t\t\t\tplayer: {\r\n\t\t\t\t\t\t...playerTeammateEntity,\r\n\t\t\t\t\t\thand: playerTeammateHand,\r\n\t\t\t\t\t},\r\n\t\t\t }\r\n\t\t\t: null,\r\n\t\topponentBoard: {\r\n\t\t\tboard: opponentBoard,\r\n\t\t\tplayer: {\r\n\t\t\t\t...opponentEntity,\r\n\t\t\t\thand: opponentHand,\r\n\t\t\t},\r\n\t\t},\r\n\t\topponentTeammateBoard: !!opponentTeammateEntity\r\n\t\t\t? {\r\n\t\t\t\t\tboard: opponentTeammateBoard,\r\n\t\t\t\t\tplayer: {\r\n\t\t\t\t\t\t...opponentTeammateEntity,\r\n\t\t\t\t\t\thand: opponentTeammateHand,\r\n\t\t\t\t\t},\r\n\t\t\t }\r\n\t\t\t: null,\r\n\t\tgameState: battleInput.gameState,\r\n\t} as BgsBattleInfo;\r\n\treturn inputReady;\r\n};\r\n\r\nconst buildFinalInputForPlayer = (\r\n\tplayerInfo: BgsBoardInfo,\r\n\tisPlayer: boolean,\r\n\tanomalies: readonly string[],\r\n\tcards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tentityIdContainer: { entityId: number },\r\n): { board: BoardEntity[]; hand: BoardEntity[]; player: BgsPlayerEntity } => {\r\n\tif (!playerInfo) {\r\n\t\treturn { board: [], hand: [], player: null };\r\n\t}\r\n\r\n\tconst { board, hand } = buildFinalInputBoard(playerInfo, isPlayer, cardsData, cards);\r\n\tconst isGhost = playerInfo.player?.hpLeft != null && playerInfo.player.hpLeft <= 0;\r\n\tplayerInfo.player.secrets = (playerInfo.player.secrets ?? playerInfo.secrets)?.filter((e) => !!e?.cardId) ?? [];\r\n\t// Add the scriptDataNum1 only on the start of combat phase, so that it doesn't trigger too soon\r\n\t// Don't do this, as secrets like Fleeting Vigor use this info to tell how much buff it will apply\r\n\t// playerInfo.player.secrets.forEach((secret) => (secret.scriptDataNum1 = 0));\r\n\t// Trinkets don't seem to trigger when facing the ghost\r\n\t// http://replays.firestoneapp.com/?reviewId=4ad32e03-2620-4fb1-8b43-cad55afd30fc&turn=27&action=2\r\n\t// One of the trinkets is Blood Golem Sticker, and no Blood Golem is summoned\r\n\t// Looks like that's not always the case:\r\n\t// http://replays.firestoneapp.com/?reviewId=9958e8d3-4388-4e6f-9b36-35f3a08be2f6&turn=25&action=4\r\n\t// playerInfo.player.trinkets = isGhost ? [] : playerInfo.player.trinkets?.filter((e) => !!e?.cardId) ?? [];\r\n\tplayerInfo.player.trinkets = (playerInfo.player.trinkets?.filter((e) => !!e?.cardId) ?? []).sort(\r\n\t\t(a, b) => a.entityId - b.entityId,\r\n\t);\r\n\tplayerInfo.player.friendly = isPlayer;\r\n\tplayerInfo.player.globalInfo = playerInfo.player.globalInfo ?? {};\r\n\tplayerInfo.player.globalInfo.PirateAttackBonus = playerInfo.player.globalInfo.PirateAttackBonus ?? 0;\r\n\tplayerInfo.player.heroPowers = playerInfo.player.heroPowers?.length\r\n\t\t? playerInfo.player.heroPowers.map((hp, index) => sanitizeHeroPower(hp, index, playerInfo.player, cards))\r\n\t\t: [\r\n\t\t\t\t{\r\n\t\t\t\t\tcardId: playerInfo.player.heroPowerId,\r\n\t\t\t\t\tentityId: playerInfo.player.heroPowerEntityId,\r\n\t\t\t\t\tused: playerInfo.player.heroPowerUsed,\r\n\t\t\t\t\tinfo: playerInfo.player.heroPowerInfo,\r\n\t\t\t\t\tinfo2: playerInfo.player.heroPowerInfo2,\r\n\t\t\t\t} as BgsHeroPower,\r\n\t\t ];\r\n\t// playerInfo.player.heroPowerId =\r\n\t// \tplayerInfo.player.trinkets.find((t) => t.scriptDataNum6 === 3)?.cardId ??\r\n\t// \t(normalizeHeroCardId(playerInfo.player.cardId, cards) === CardIds.SireDenathrius_BG24_HERO_100\r\n\t// \t\t? playerInfo.player.questRewardEntities?.[0]?.cardId\r\n\t// \t\t: null) ??\r\n\t// \tplayerInfo.player.heroPowerId;\r\n\tplayerInfo.player.cardId = isGhost ? CardIds.Kelthuzad_TB_BaconShop_HERO_KelThuzad : playerInfo.player.cardId;\r\n\tplayerInfo.player.hpLeft = Math.max(1, playerInfo.player.hpLeft);\r\n\t// When using the simulator, the aura is not applied when receiving the board state.\r\n\tsetMissingAuras(board, playerInfo.player, anomalies, cards);\r\n\t// Avenge, maxHealth, etc.\r\n\t// setImplicitData(playerBoard, cardsData);\r\n\t// setImplicitData(opponentBoard, cardsData);\r\n\t// Avenge, globalInfo\r\n\tsetImplicitDataHero(playerInfo.player, cardsData, isPlayer, entityIdContainer);\r\n\treturn { board, hand, player: playerInfo.player };\r\n};\r\n\r\nconst sanitizeHeroPower = (\r\n\thp: BgsHeroPower,\r\n\tindex: number,\r\n\tplayer: BgsPlayerEntity,\r\n\tcards: AllCardsService,\r\n): BgsHeroPower => {\r\n\tif (index !== 0) {\r\n\t\treturn hp;\r\n\t}\r\n\r\n\thp.cardId =\r\n\t\tplayer.trinkets.find((t) => t.scriptDataNum6 === 3)?.cardId ??\r\n\t\t(normalizeHeroCardId(player.cardId, cards) === CardIds.SireDenathrius_BG24_HERO_100\r\n\t\t\t? player.questRewardEntities?.[0]?.cardId\r\n\t\t\t: null) ??\r\n\t\thp.cardId;\r\n\treturn hp;\r\n};\r\n\r\nconst buildFinalInputBoard = (\r\n\tplayerInfo: BgsBoardInfo,\r\n\tisPlayer: boolean,\r\n\tcardsData: CardsData,\r\n\tcards: AllCardsService,\r\n): { board: BoardEntity[]; hand: BoardEntity[] } => {\r\n\tconst board = playerInfo.board\r\n\t\t.map((entity) => fixEnchantments(entity, cards))\r\n\t\t.map((entity) => ({\r\n\t\t\t...entity,\r\n\t\t\tinInitialState: true,\r\n\t\t\tscriptDataNum1: cardsData.defaultScriptDataNum(entity.cardId) || entity.scriptDataNum1,\r\n\t\t}))\r\n\t\t.map((entity) => ({ ...addImpliedMechanics(entity, cardsData), friendly: isPlayer } as BoardEntity));\r\n\tconst hand =\r\n\t\tplayerInfo.player.hand\r\n\t\t\t?.map((entity) => ({ ...entity, inInitialState: true }))\r\n\t\t\t.map((entity) => fixEnchantments(entity, cards))\r\n\t\t\t.map((entity) => ({ ...addImpliedMechanics(entity, cardsData), friendly: isPlayer } as BoardEntity)) ?? [];\r\n\r\n\treturn { board, hand };\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"input-sanitation.js","sourceRoot":"","sources":["../src/input-sanitation.ts"],"names":[],"mappings":"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","sourcesContent":["import { AllCardsService } from '@firestone-hs/reference-data';\r\nimport { BgsBattleInfo } from './bgs-battle-info';\r\nimport { BgsBoardInfo } from './bgs-board-info';\r\nimport { BgsHeroPower, BgsPlayerEntity } from './bgs-player-entity';\r\nimport { BoardEntity } from './board-entity';\r\nimport { CardsData } from './cards/cards-data';\r\nimport { CardIds } from './services/card-ids';\r\nimport { setImplicitDataHero, setMissingAuras } from './simulation/auras';\r\nimport { fixEnchantments } from './simulation/enchantments';\r\nimport { addImpliedMechanics } from './utils';\r\n\r\nexport const buildFinalInput = (\r\n\tbattleInput: BgsBattleInfo,\r\n\tcards: AllCardsService,\r\n\tcardsData: CardsData,\r\n): BgsBattleInfo => {\r\n\tconst entityIdContainer = { entityId: 999_999_999 };\r\n\r\n\tconst {\r\n\t\tboard: playerBoard,\r\n\t\thand: playerHand,\r\n\t\tplayer: playerEntity,\r\n\t} = buildFinalInputForPlayer(\r\n\t\tbattleInput.playerBoard,\r\n\t\ttrue,\r\n\t\tbattleInput.gameState.anomalies,\r\n\t\tcards,\r\n\t\tcardsData,\r\n\t\tentityIdContainer,\r\n\t);\r\n\tconst {\r\n\t\tboard: playerTeammateBoard,\r\n\t\thand: playerTeammateHand,\r\n\t\tplayer: playerTeammateEntity,\r\n\t} = buildFinalInputForPlayer(\r\n\t\tbattleInput.playerTeammateBoard,\r\n\t\ttrue,\r\n\t\tbattleInput.gameState.anomalies,\r\n\t\tcards,\r\n\t\tcardsData,\r\n\t\tentityIdContainer,\r\n\t);\r\n\r\n\tconst {\r\n\t\tboard: opponentBoard,\r\n\t\thand: opponentHand,\r\n\t\tplayer: opponentEntity,\r\n\t} = buildFinalInputForPlayer(\r\n\t\tbattleInput.opponentBoard,\r\n\t\tfalse,\r\n\t\tbattleInput.gameState.anomalies,\r\n\t\tcards,\r\n\t\tcardsData,\r\n\t\tentityIdContainer,\r\n\t);\r\n\tconst {\r\n\t\tboard: opponentTeammateBoard,\r\n\t\thand: opponentTeammateHand,\r\n\t\tplayer: opponentTeammateEntity,\r\n\t} = buildFinalInputForPlayer(\r\n\t\tbattleInput.opponentTeammateBoard,\r\n\t\tfalse,\r\n\t\tbattleInput.gameState.anomalies,\r\n\t\tcards,\r\n\t\tcardsData,\r\n\t\tentityIdContainer,\r\n\t);\r\n\r\n\t// We do this so that we can have mutated objects inside the simulation and still\r\n\t// be able to start from a fresh copy for each simulation\r\n\tconst inputReady: BgsBattleInfo = {\r\n\t\tplayerBoard: {\r\n\t\t\tboard: playerBoard,\r\n\t\t\tplayer: {\r\n\t\t\t\t...playerEntity,\r\n\t\t\t\thand: playerHand,\r\n\t\t\t},\r\n\t\t},\r\n\t\tplayerTeammateBoard: !!playerTeammateEntity\r\n\t\t\t? {\r\n\t\t\t\t\tboard: playerTeammateBoard,\r\n\t\t\t\t\tplayer: {\r\n\t\t\t\t\t\t...playerTeammateEntity,\r\n\t\t\t\t\t\thand: playerTeammateHand,\r\n\t\t\t\t\t},\r\n\t\t\t }\r\n\t\t\t: null,\r\n\t\topponentBoard: {\r\n\t\t\tboard: opponentBoard,\r\n\t\t\tplayer: {\r\n\t\t\t\t...opponentEntity,\r\n\t\t\t\thand: opponentHand,\r\n\t\t\t},\r\n\t\t},\r\n\t\topponentTeammateBoard: !!opponentTeammateEntity\r\n\t\t\t? {\r\n\t\t\t\t\tboard: opponentTeammateBoard,\r\n\t\t\t\t\tplayer: {\r\n\t\t\t\t\t\t...opponentTeammateEntity,\r\n\t\t\t\t\t\thand: opponentTeammateHand,\r\n\t\t\t\t\t},\r\n\t\t\t }\r\n\t\t\t: null,\r\n\t\tgameState: {\r\n\t\t\t...battleInput.gameState,\r\n\t\t\tanomalies: battleInput.gameState.anomalies?.filter((a) => !!a) ?? ([] as readonly string[]),\r\n\t\t},\r\n\t} as BgsBattleInfo;\r\n\treturn inputReady;\r\n};\r\n\r\nconst buildFinalInputForPlayer = (\r\n\tplayerInfo: BgsBoardInfo,\r\n\tisPlayer: boolean,\r\n\tanomalies: readonly string[],\r\n\tcards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tentityIdContainer: { entityId: number },\r\n): { board: BoardEntity[]; hand: BoardEntity[]; player: BgsPlayerEntity } => {\r\n\tif (!playerInfo) {\r\n\t\treturn { board: [], hand: [], player: null };\r\n\t}\r\n\r\n\tconst { board, hand } = buildFinalInputBoard(playerInfo, isPlayer, cardsData, cards);\r\n\tconst isGhost = playerInfo.player?.hpLeft != null && playerInfo.player.hpLeft <= 0;\r\n\tplayerInfo.player.secrets = (playerInfo.player.secrets ?? playerInfo.secrets)?.filter((e) => !!e?.cardId) ?? [];\r\n\t// Add the scriptDataNum1 only on the start of combat phase, so that it doesn't trigger too soon\r\n\t// Don't do this, as secrets like Fleeting Vigor use this info to tell how much buff it will apply\r\n\t// playerInfo.player.secrets.forEach((secret) => (secret.scriptDataNum1 = 0));\r\n\t// Trinkets don't seem to trigger when facing the ghost\r\n\t// http://replays.firestoneapp.com/?reviewId=4ad32e03-2620-4fb1-8b43-cad55afd30fc&turn=27&action=2\r\n\t// One of the trinkets is Blood Golem Sticker, and no Blood Golem is summoned\r\n\t// Looks like that's not always the case:\r\n\t// http://replays.firestoneapp.com/?reviewId=9958e8d3-4388-4e6f-9b36-35f3a08be2f6&turn=25&action=4\r\n\t// playerInfo.player.trinkets = isGhost ? [] : playerInfo.player.trinkets?.filter((e) => !!e?.cardId) ?? [];\r\n\tplayerInfo.player.trinkets = (playerInfo.player.trinkets?.filter((e) => !!e?.cardId) ?? []).sort(\r\n\t\t(a, b) => a.entityId - b.entityId,\r\n\t);\r\n\tplayerInfo.player.friendly = isPlayer;\r\n\tplayerInfo.player.globalInfo = playerInfo.player.globalInfo ?? {};\r\n\tplayerInfo.player.globalInfo.PirateAttackBonus = playerInfo.player.globalInfo.PirateAttackBonus ?? 0;\r\n\tplayerInfo.player.heroPowers = playerInfo.player.heroPowers?.length\r\n\t\t? playerInfo.player.heroPowers.map((hp, index) => sanitizeHeroPower(hp, index, playerInfo.player, cards))\r\n\t\t: [\r\n\t\t\t\t{\r\n\t\t\t\t\tcardId: playerInfo.player.heroPowerId,\r\n\t\t\t\t\tentityId: playerInfo.player.heroPowerEntityId,\r\n\t\t\t\t\tused: playerInfo.player.heroPowerUsed,\r\n\t\t\t\t\tinfo: playerInfo.player.heroPowerInfo,\r\n\t\t\t\t\tinfo2: playerInfo.player.heroPowerInfo2,\r\n\t\t\t\t} as BgsHeroPower,\r\n\t\t ];\r\n\t// playerInfo.player.heroPowerId =\r\n\t// \tplayerInfo.player.trinkets.find((t) => t.scriptDataNum6 === 3)?.cardId ??\r\n\t// \t(normalizeHeroCardId(playerInfo.player.cardId, cards) === CardIds.SireDenathrius_BG24_HERO_100\r\n\t// \t\t? playerInfo.player.questRewardEntities?.[0]?.cardId\r\n\t// \t\t: null) ??\r\n\t// \tplayerInfo.player.heroPowerId;\r\n\tplayerInfo.player.cardId = isGhost ? CardIds.Kelthuzad_TB_BaconShop_HERO_KelThuzad : playerInfo.player.cardId;\r\n\tplayerInfo.player.hpLeft = Math.max(1, playerInfo.player.hpLeft);\r\n\t// When using the simulator, the aura is not applied when receiving the board state.\r\n\tsetMissingAuras(board, playerInfo.player, anomalies, cards);\r\n\t// Avenge, maxHealth, etc.\r\n\t// setImplicitData(playerBoard, cardsData);\r\n\t// setImplicitData(opponentBoard, cardsData);\r\n\t// Avenge, globalInfo\r\n\tsetImplicitDataHero(playerInfo.player, cardsData, isPlayer, entityIdContainer);\r\n\treturn { board, hand, player: playerInfo.player };\r\n};\r\n\r\nconst sanitizeHeroPower = (\r\n\thp: BgsHeroPower,\r\n\tindex: number,\r\n\tplayer: BgsPlayerEntity,\r\n\tcards: AllCardsService,\r\n): BgsHeroPower => {\r\n\treturn hp;\r\n\t// FIXME: fix this when the situation presents itself. At the moment, we already have trinkets / hero powers / quest rewards\r\n\t// handled separately, so maybe there is no need to map a quest reward to one of Sire D.'s hero power\r\n\t// if (index !== 0) {\r\n\t// \treturn hp;\r\n\t// }\r\n\r\n\t// hp.cardId =\r\n\t// \tplayer.trinkets.find((t) => t.scriptDataNum6 === 3)?.cardId ??\r\n\t// \t(normalizeHeroCardId(player.cardId, cards) === CardIds.SireDenathrius_BG24_HERO_100\r\n\t// \t\t? player.questRewardEntities?.[0]?.cardId\r\n\t// \t\t: null) ??\r\n\t// \thp.cardId;\r\n\t// return hp;\r\n};\r\n\r\nconst buildFinalInputBoard = (\r\n\tplayerInfo: BgsBoardInfo,\r\n\tisPlayer: boolean,\r\n\tcardsData: CardsData,\r\n\tcards: AllCardsService,\r\n): { board: BoardEntity[]; hand: BoardEntity[] } => {\r\n\tconst board = playerInfo.board\r\n\t\t.map((entity) => fixEnchantments(entity, cards))\r\n\t\t.map((entity) => ({\r\n\t\t\t...entity,\r\n\t\t\tinInitialState: true,\r\n\t\t\tscriptDataNum1: cardsData.defaultScriptDataNum(entity.cardId) || entity.scriptDataNum1,\r\n\t\t}))\r\n\t\t.map((entity) => ({ ...addImpliedMechanics(entity, cardsData), friendly: isPlayer } as BoardEntity));\r\n\tconst hand =\r\n\t\tplayerInfo.player.hand\r\n\t\t\t?.map((entity) => ({ ...entity, inInitialState: true }))\r\n\t\t\t.map((entity) => fixEnchantments(entity, cards))\r\n\t\t\t.map((entity) => ({ ...addImpliedMechanics(entity, cardsData), friendly: isPlayer } as BoardEntity)) ?? [];\r\n\r\n\treturn { board, hand };\r\n};\r\n"]}
|