@firestone-hs/simulate-bgs-battle 1.1.725 → 1.1.727
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/bgs-battle-info.d.ts +1 -0
- package/dist/bgs-battle-info.js.map +1 -1
- package/dist/bgs-battle-options.d.ts +1 -0
- package/dist/bgs-battle-options.js.map +1 -1
- package/dist/cards/impl/_card-mappings.js +58 -0
- package/dist/cards/impl/_card-mappings.js.map +1 -1
- package/dist/cards/impl/bg-spell/misplaced-tea-set.js +5 -8
- package/dist/cards/impl/bg-spell/misplaced-tea-set.js.map +1 -1
- package/dist/cards/impl/bg-spell/weapons-forge.d.ts +2 -0
- package/dist/cards/impl/bg-spell/weapons-forge.js +12 -0
- package/dist/cards/impl/bg-spell/weapons-forge.js.map +1 -0
- package/dist/cards/impl/enchantments/charisma.d.ts +2 -0
- package/dist/cards/impl/enchantments/charisma.js +44 -0
- package/dist/cards/impl/enchantments/charisma.js.map +1 -0
- package/dist/cards/impl/enchantments/consanguinity.d.ts +2 -0
- package/dist/cards/impl/enchantments/consanguinity.js +13 -0
- package/dist/cards/impl/enchantments/consanguinity.js.map +1 -0
- package/dist/cards/impl/enchantments/mystic-essence.d.ts +2 -0
- package/dist/cards/impl/enchantments/mystic-essence.js +13 -0
- package/dist/cards/impl/enchantments/mystic-essence.js.map +1 -0
- package/dist/cards/impl/hero-power/die-insects.d.ts +2 -0
- package/dist/cards/impl/hero-power/die-insects.js +21 -0
- package/dist/cards/impl/hero-power/die-insects.js.map +1 -0
- package/dist/cards/impl/hero-power/fire-the-cannons.d.ts +2 -0
- package/dist/cards/impl/hero-power/fire-the-cannons.js +21 -0
- package/dist/cards/impl/hero-power/fire-the-cannons.js.map +1 -0
- package/dist/cards/impl/hero-power/murloc-king-enchantment.d.ts +2 -0
- package/dist/cards/impl/hero-power/murloc-king-enchantment.js +9 -0
- package/dist/cards/impl/hero-power/murloc-king-enchantment.js.map +1 -0
- package/dist/cards/impl/hero-power/murloc-king.d.ts +2 -0
- package/dist/cards/impl/hero-power/murloc-king.js +24 -0
- package/dist/cards/impl/hero-power/murloc-king.js.map +1 -0
- package/dist/cards/impl/hero-power/nefarious-fire.d.ts +2 -0
- package/dist/cards/impl/hero-power/nefarious-fire.js +19 -0
- package/dist/cards/impl/hero-power/nefarious-fire.js.map +1 -0
- package/dist/cards/impl/hero-power/wax-warband.js +5 -1
- package/dist/cards/impl/hero-power/wax-warband.js.map +1 -1
- package/dist/cards/impl/minion/arfus.d.ts +2 -0
- package/dist/cards/impl/minion/arfus.js +17 -0
- package/dist/cards/impl/minion/arfus.js.map +1 -0
- package/dist/cards/impl/minion/bramble-tunneler.d.ts +2 -0
- package/dist/cards/impl/minion/bramble-tunneler.js +14 -0
- package/dist/cards/impl/minion/bramble-tunneler.js.map +1 -0
- package/dist/cards/impl/minion/branns-epic-egg.d.ts +2 -0
- package/dist/cards/impl/minion/branns-epic-egg.js +23 -0
- package/dist/cards/impl/minion/branns-epic-egg.js.map +1 -0
- package/dist/cards/impl/minion/bronze-timewalker.d.ts +2 -0
- package/dist/cards/impl/minion/bronze-timewalker.js +22 -0
- package/dist/cards/impl/minion/bronze-timewalker.js.map +1 -0
- package/dist/cards/impl/minion/choral-mrrrglr.js +15 -5
- package/dist/cards/impl/minion/choral-mrrrglr.js.map +1 -1
- package/dist/cards/impl/minion/elder-taggawag.d.ts +2 -5
- package/dist/cards/impl/minion/elder-taggawag.js +1 -0
- package/dist/cards/impl/minion/elder-taggawag.js.map +1 -1
- package/dist/cards/impl/minion/elementium-squirrel-bomb.d.ts +2 -0
- package/dist/cards/impl/minion/elementium-squirrel-bomb.js +22 -0
- package/dist/cards/impl/minion/elementium-squirrel-bomb.js.map +1 -0
- package/dist/cards/impl/minion/fleeing-fugitive.js +1 -1
- package/dist/cards/impl/minion/fleeing-fugitive.js.map +1 -1
- package/dist/cards/impl/minion/gatekeeper-amalgam.js +2 -7
- package/dist/cards/impl/minion/gatekeeper-amalgam.js.map +1 -1
- package/dist/cards/impl/minion/glambot.js +2 -1
- package/dist/cards/impl/minion/glambot.js.map +1 -1
- package/dist/cards/impl/minion/headhunter-gryphon.d.ts +2 -0
- package/dist/cards/impl/minion/headhunter-gryphon.js +19 -0
- package/dist/cards/impl/minion/headhunter-gryphon.js.map +1 -0
- package/dist/cards/impl/minion/imp-lusionist.d.ts +2 -0
- package/dist/cards/impl/minion/imp-lusionist.js +14 -0
- package/dist/cards/impl/minion/imp-lusionist.js.map +1 -0
- package/dist/cards/impl/minion/kilrek.d.ts +2 -0
- package/dist/cards/impl/minion/kilrek.js +18 -0
- package/dist/cards/impl/minion/kilrek.js.map +1 -0
- package/dist/cards/impl/minion/lady-sinestra.d.ts +2 -0
- package/dist/cards/impl/minion/lady-sinestra.js +14 -0
- package/dist/cards/impl/minion/lady-sinestra.js.map +1 -0
- package/dist/cards/impl/minion/loyal-henchman.d.ts +2 -0
- package/dist/cards/impl/minion/loyal-henchman.js +21 -0
- package/dist/cards/impl/minion/loyal-henchman.js.map +1 -0
- package/dist/cards/impl/minion/mawsworn-soulkeeper.d.ts +2 -0
- package/dist/cards/impl/minion/mawsworn-soulkeeper.js +21 -0
- package/dist/cards/impl/minion/mawsworn-soulkeeper.js.map +1 -0
- package/dist/cards/impl/minion/probius.d.ts +2 -0
- package/dist/cards/impl/minion/probius.js +16 -0
- package/dist/cards/impl/minion/probius.js.map +1 -0
- package/dist/cards/impl/minion/rescue-bot.d.ts +2 -0
- package/dist/cards/impl/minion/rescue-bot.js +14 -0
- package/dist/cards/impl/minion/rescue-bot.js.map +1 -0
- package/dist/cards/impl/minion/shamanic-tidecaller.js +2 -1
- package/dist/cards/impl/minion/shamanic-tidecaller.js.map +1 -1
- package/dist/cards/impl/minion/sr-tomb-diver.d.ts +2 -0
- package/dist/cards/impl/minion/sr-tomb-diver.js +18 -0
- package/dist/cards/impl/minion/sr-tomb-diver.js.map +1 -0
- package/dist/cards/impl/minion/stalwart-kodo.js +3 -1
- package/dist/cards/impl/minion/stalwart-kodo.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-mrrrglr.js +11 -5
- package/dist/cards/impl/minion/timewarped-mrrrglr.js.map +1 -1
- package/dist/cards/impl/minion/torrential-ruiner.js +2 -1
- package/dist/cards/impl/minion/torrential-ruiner.js.map +1 -1
- package/dist/cards/impl/minion/tuskarr-raider.d.ts +2 -0
- package/dist/cards/impl/minion/tuskarr-raider.js +36 -0
- package/dist/cards/impl/minion/tuskarr-raider.js.map +1 -0
- package/dist/cards/impl/minion/twilight-hatchling.js +1 -4
- package/dist/cards/impl/minion/twilight-hatchling.js.map +1 -1
- package/dist/cards/impl/minion/twilight-tidehunter.js +1 -1
- package/dist/cards/impl/minion/twilight-tidehunter.js.map +1 -1
- package/dist/cards/impl/minion/unearthed-underling.d.ts +2 -0
- package/dist/cards/impl/minion/unearthed-underling.js +14 -0
- package/dist/cards/impl/minion/unearthed-underling.js.map +1 -0
- package/dist/cards/impl/minion/vigilant-bristlemane.js +1 -1
- package/dist/cards/impl/minion/vigilant-bristlemane.js.map +1 -1
- package/dist/cards/impl/spell/fleeting-vigor.js +6 -1
- package/dist/cards/impl/spell/fleeting-vigor.js.map +1 -1
- package/dist/cards/impl/spellcraft/floating-candle-set.d.ts +2 -0
- package/dist/cards/impl/spellcraft/floating-candle-set.js +21 -0
- package/dist/cards/impl/spellcraft/floating-candle-set.js.map +1 -0
- package/dist/cards/impl/trinket/flighty-portrait.d.ts +2 -0
- package/dist/cards/impl/trinket/flighty-portrait.js +21 -0
- package/dist/cards/impl/trinket/flighty-portrait.js.map +1 -0
- package/dist/input-clone.js +5 -1
- package/dist/input-clone.js.map +1 -1
- package/dist/input-sanitation.js +3 -0
- package/dist/input-sanitation.js.map +1 -1
- package/dist/services/rng.d.ts +8 -0
- package/dist/services/rng.js +40 -0
- package/dist/services/rng.js.map +1 -0
- package/dist/services/utils.js +3 -2
- package/dist/services/utils.js.map +1 -1
- package/dist/simulate-bgs-battle.d.ts +10 -0
- package/dist/simulate-bgs-battle.js +119 -77
- package/dist/simulate-bgs-battle.js.map +1 -1
- package/dist/simulation/add-minion-to-board.js +8 -6
- package/dist/simulation/add-minion-to-board.js.map +1 -1
- package/dist/simulation/auras.js +42 -41
- package/dist/simulation/auras.js.map +1 -1
- package/dist/simulation/damage-cap.d.ts +2 -0
- package/dist/simulation/damage-cap.js +28 -0
- package/dist/simulation/damage-cap.js.map +1 -0
- package/dist/simulation/deathrattle-spawns.js +0 -57
- package/dist/simulation/deathrattle-spawns.js.map +1 -1
- package/dist/simulation/internal-game-state.d.ts +2 -0
- package/dist/simulation/internal-game-state.js.map +1 -1
- package/dist/simulation/reborn.js +0 -13
- package/dist/simulation/reborn.js.map +1 -1
- package/dist/simulation/shared-state.d.ts +3 -1
- package/dist/simulation/shared-state.js +4 -1
- package/dist/simulation/shared-state.js.map +1 -1
- package/dist/simulation/simulator.d.ts +1 -0
- package/dist/simulation/simulator.js +13 -4
- package/dist/simulation/simulator.js.map +1 -1
- package/dist/simulation/spawns.js +1 -1
- package/dist/simulation/spawns.js.map +1 -1
- package/dist/simulation/start-of-combat/soc-action-processor.js +12 -0
- package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
- package/dist/simulation/stats.js +41 -24
- package/dist/simulation/stats.js.map +1 -1
- package/dist/utils.js +4 -4
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mystic-essence.js","sourceRoot":"","sources":["../../../../src/cards/impl/enchantments/mystic-essence.ts"],"names":[],"mappings":";;;AAKA,qEAAmE;AAKtD,QAAA,aAAa,GAAoC;IAC7D,OAAO,EAAE,4BAA+D;IACxE,iCAAiC,EAAE,CAClC,YAA8B,EAC9B,OAAoB,EACpB,KAAgC,EAC/B,EAAE;QACH,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;QACjE,IAAA,8BAAc,EAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACrG,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Mystic Essence (Dark Gift)\r\n * Deathrattle: Get a random Tavern spell.\r\n */\r\nimport { BoardEnchantment, BoardEntity } from '../../../board-entity';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { DeathrattleSpawnEnchantmentCard } from '../../card.interface';\r\nimport { CardIds } from '../../../services/card-ids';\r\n\r\nexport const MysticEssence: DeathrattleSpawnEnchantmentCard = {\r\n\tcardIds: [CardIds.DarkGifts_MysticEssenceToken_BG36_MidGameEffect_000t5],\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\t_enchantment: BoardEnchantment,\r\n\t\t_minion: BoardEntity,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t) => {\r\n\t\tconst spellId = input.gameState.cardsData.getRandomTavernSpell();\r\n\t\taddCardsInHand(input.boardWithDeadEntityHero, input.boardWithDeadEntity, [spellId], input.gameState);\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DieInsects = void 0;
|
|
4
|
+
const utils_1 = require("../../../services/utils");
|
|
5
|
+
const attack_1 = require("../../../simulation/attack");
|
|
6
|
+
exports.DieInsects = {
|
|
7
|
+
startOfCombatTiming: 'start-of-combat',
|
|
8
|
+
cardIds: ["TB_BaconShop_HP_019"],
|
|
9
|
+
startOfCombat: (trinket, input) => {
|
|
10
|
+
for (const heroPower of input.playerEntity.heroPowers) {
|
|
11
|
+
if (exports.DieInsects.cardIds.includes(heroPower.cardId) && heroPower.used) {
|
|
12
|
+
const targets = (0, utils_1.pickMultipleRandomDifferent)(input.opponentBoard, 2);
|
|
13
|
+
for (const target of targets) {
|
|
14
|
+
(0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, input.playerEntity, 8, input.playerBoard, input.playerEntity, input.gameState);
|
|
15
|
+
}
|
|
16
|
+
return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=die-insects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"die-insects.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/die-insects.ts"],"names":[],"mappings":";;;AAIA,mDAAsE;AACtE,uDAAgE;AAInD,QAAA,UAAU,GAAsB;IAC5C,mBAAmB,EAAE,iBAAiB;IACtC,OAAO,EAAE,uBAAwC;IACjD,aAAa,EAAE,CAAC,OAAmE,EAAE,KAAe,EAAE,EAAE;QACvG,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,kBAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBACpE,MAAM,OAAO,GAAG,IAAA,mCAA2B,EAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;gBACpE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;oBAC7B,IAAA,2BAAkB,EACjB,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,YAAY,EAClB,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;iBACF;gBACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;aACpE;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BgsPlayerEntity, BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { BoardSecret } from '../../../board-secret';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickMultipleRandomDifferent } 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 DieInsects: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tcardIds: [CardIds.DieInsects_TB_BaconShop_HP_019],\r\n\tstartOfCombat: (trinket: BoardTrinket | BoardEntity | BgsPlayerEntity | BoardSecret, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (DieInsects.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tconst targets = pickMultipleRandomDifferent(input.opponentBoard, 2);\r\n\t\t\t\tfor (const target of targets) {\r\n\t\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t8,\r\n\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FireTheCannons = void 0;
|
|
4
|
+
const utils_1 = require("../../../services/utils");
|
|
5
|
+
const attack_1 = require("../../../simulation/attack");
|
|
6
|
+
exports.FireTheCannons = {
|
|
7
|
+
startOfCombatTiming: 'start-of-combat',
|
|
8
|
+
cardIds: ["TB_BaconShop_HP_027"],
|
|
9
|
+
startOfCombat: (trinket, input) => {
|
|
10
|
+
for (const heroPower of input.playerEntity.heroPowers) {
|
|
11
|
+
if (exports.FireTheCannons.cardIds.includes(heroPower.cardId) && heroPower.used) {
|
|
12
|
+
const targets = (0, utils_1.pickMultipleRandomDifferent)(input.opponentBoard, 2);
|
|
13
|
+
for (const target of targets) {
|
|
14
|
+
(0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, input.playerEntity, 4, input.playerBoard, input.playerEntity, input.gameState);
|
|
15
|
+
}
|
|
16
|
+
return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=fire-the-cannons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fire-the-cannons.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/fire-the-cannons.ts"],"names":[],"mappings":";;;AAIA,mDAAsE;AACtE,uDAAgE;AAInD,QAAA,cAAc,GAAsB;IAChD,mBAAmB,EAAE,iBAAiB;IACtC,OAAO,EAAE,uBAAwB;IACjC,aAAa,EAAE,CAAC,OAAmE,EAAE,KAAe,EAAE,EAAE;QACvG,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,sBAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBACxE,MAAM,OAAO,GAAG,IAAA,mCAA2B,EAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;gBACpE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;oBAC7B,IAAA,2BAAkB,EACjB,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,YAAY,EAClB,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;iBACF;gBACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;aACpE;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BgsPlayerEntity, BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { BoardSecret } from '../../../board-secret';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickMultipleRandomDifferent } 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 FireTheCannons: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tcardIds: [CardIds.FireTheCannons],\r\n\tstartOfCombat: (trinket: BoardTrinket | BoardEntity | BgsPlayerEntity | BoardSecret, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (FireTheCannons.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tconst targets = pickMultipleRandomDifferent(input.opponentBoard, 2);\r\n\t\t\t\tfor (const target of targets) {\r\n\t\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t4,\r\n\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MurlocKingEnchantment = void 0;
|
|
4
|
+
const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
|
|
5
|
+
exports.MurlocKingEnchantment = {
|
|
6
|
+
cardIds: ["TB_BaconShop_HP_017e"],
|
|
7
|
+
deathrattleSpawnEnchantmentEffect: (_enchantment, _minion, input) => (0, deathrattle_spawns_1.simplifiedSpawnEntities)("EX1_506a", 1, input),
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=murloc-king-enchantment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"murloc-king-enchantment.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/murloc-king-enchantment.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAGpE,QAAA,qBAAqB,GAAoC;IACrE,OAAO,EAAE,wBAA0C;IACnD,iCAAiC,EAAE,CAClC,YAA8B,EAC9B,OAAoB,EACpB,KAAgC,EAC/B,EAAE,CAAC,IAAA,4CAAuB,cAA6C,CAAC,EAAE,KAAK,CAAC;CAClF,CAAC","sourcesContent":["import { BoardEnchantment, BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnEnchantmentCard } from '../../card.interface';\r\n\r\nexport const MurlocKingEnchantment: DeathrattleSpawnEnchantmentCard = {\r\n\tcardIds: [CardIds.MurlocKing_MurlocKingEnchantment],\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\t_enchantment: BoardEnchantment,\r\n\t\t_minion: BoardEntity,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t) => simplifiedSpawnEntities(CardIds.MurlocTidehunter_MurlocScoutLegacy, 1, input),\r\n};\r\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MurlocKing = void 0;
|
|
4
|
+
exports.MurlocKing = {
|
|
5
|
+
startOfCombatTiming: 'start-of-combat',
|
|
6
|
+
cardIds: ["TB_BaconShop_HP_017"],
|
|
7
|
+
startOfCombat: (trinket, input) => {
|
|
8
|
+
var _a;
|
|
9
|
+
for (const heroPower of input.playerEntity.heroPowers) {
|
|
10
|
+
if (exports.MurlocKing.cardIds.includes(heroPower.cardId) && heroPower.used) {
|
|
11
|
+
for (const minion of input.playerBoard) {
|
|
12
|
+
minion.enchantments = (_a = minion.enchantments) !== null && _a !== void 0 ? _a : [];
|
|
13
|
+
minion.enchantments.push({
|
|
14
|
+
cardId: "TB_BaconShop_HP_017e",
|
|
15
|
+
originEntityId: input.playerEntity.entityId,
|
|
16
|
+
timing: input.gameState.sharedState.currentEntityId++,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=murloc-king.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"murloc-king.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/murloc-king.ts"],"names":[],"mappings":";;;AAOa,QAAA,UAAU,GAAsB;IAC5C,mBAAmB,EAAE,iBAAiB;IACtC,OAAO,EAAE,uBAAoB;IAC7B,aAAa,EAAE,CAAC,OAAmE,EAAE,KAAe,EAAE,EAAE;;QACvG,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,kBAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBACpE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE;oBACvC,MAAM,CAAC,YAAY,GAAG,MAAA,MAAM,CAAC,YAAY,mCAAI,EAAE,CAAC;oBAChD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;wBACxB,MAAM,wBAA0C;wBAChD,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ;wBAC3C,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;qBACrD,CAAC,CAAC;iBACH;gBACD,OAAO,IAAI,CAAC;aACZ;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BgsPlayerEntity, BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { BoardSecret } from '../../../board-secret';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const MurlocKing: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tcardIds: [CardIds.MurlocKing],\r\n\tstartOfCombat: (trinket: BoardTrinket | BoardEntity | BgsPlayerEntity | BoardSecret, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (MurlocKing.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tfor (const minion of input.playerBoard) {\r\n\t\t\t\t\tminion.enchantments = minion.enchantments ?? [];\r\n\t\t\t\t\tminion.enchantments.push({\r\n\t\t\t\t\t\tcardId: CardIds.MurlocKing_MurlocKingEnchantment,\r\n\t\t\t\t\t\toriginEntityId: input.playerEntity.entityId,\r\n\t\t\t\t\t\ttiming: input.gameState.sharedState.currentEntityId++,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NefariousFire = void 0;
|
|
4
|
+
const attack_1 = require("../../../simulation/attack");
|
|
5
|
+
exports.NefariousFire = {
|
|
6
|
+
startOfCombatTiming: 'start-of-combat',
|
|
7
|
+
cardIds: ["TB_BaconShop_HP_043"],
|
|
8
|
+
startOfCombat: (trinket, input) => {
|
|
9
|
+
for (const heroPower of input.playerEntity.heroPowers) {
|
|
10
|
+
if (exports.NefariousFire.cardIds.includes(heroPower.cardId) && heroPower.used) {
|
|
11
|
+
for (const target of [...input.opponentBoard]) {
|
|
12
|
+
(0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, input.playerEntity, 1, input.playerBoard, input.playerEntity, input.gameState);
|
|
13
|
+
}
|
|
14
|
+
return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=nefarious-fire.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nefarious-fire.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/nefarious-fire.ts"],"names":[],"mappings":";;;AAIA,uDAAgE;AAInD,QAAA,aAAa,GAAsB;IAC/C,mBAAmB,EAAE,iBAAiB;IACtC,OAAO,EAAE,uBAAuB;IAChC,aAAa,EAAE,CAAC,OAAmE,EAAE,KAAe,EAAE,EAAE;QACvG,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,qBAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBACvE,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE;oBAC9C,IAAA,2BAAkB,EACjB,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,YAAY,EAClB,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;iBACF;gBACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;aACpE;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BgsPlayerEntity, BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { BoardSecret } from '../../../board-secret';\r\nimport { CardIds } from '../../../services/card-ids';\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 NefariousFire: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tcardIds: [CardIds.NefariousFire],\r\n\tstartOfCombat: (trinket: BoardTrinket | BoardEntity | BgsPlayerEntity | BoardSecret, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (NefariousFire.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tfor (const target of [...input.opponentBoard]) {\r\n\t\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -26,7 +26,11 @@ exports.WaxWarband = {
|
|
|
26
26
|
}),
|
|
27
27
|
];
|
|
28
28
|
allMinions.forEach((e) => {
|
|
29
|
-
|
|
29
|
+
var _a, _b, _c;
|
|
30
|
+
const buff = typeof heroPower.info3 === 'number' && heroPower.info3 > 0
|
|
31
|
+
? heroPower.info3
|
|
32
|
+
: (_c = (_b = (_a = input.gameState.allCards.getCard(heroPower.cardId)) === null || _a === void 0 ? void 0 : _a.tags) === null || _b === void 0 ? void 0 : _b['TAG_SCRIPT_DATA_NUM_3']) !== null && _c !== void 0 ? _c : 1;
|
|
33
|
+
(0, stats_1.modifyStats)(e, trinket, +buff, +buff, input.playerBoard, input.playerEntity, input.gameState);
|
|
30
34
|
});
|
|
31
35
|
return true;
|
|
32
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wax-warband.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/wax-warband.ts"],"names":[],"mappings":";;;AAAA,iEAAmF;AAInF,mDAAuD;AAEvD,qDAAwD;AACxD,0CAA6D;AAGhD,QAAA,UAAU,GAAsB;IAC5C,mBAAmB,EAAE,YAAY;IACjC,OAAO,EAAE,wBAAoB;IAC7B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,kBAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBACpE,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAC/C,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,IAAA,mCAA2B,EAC5B,CAAC,EACD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CAAC,MAAM,CACT,CAAC;oBACF,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE;;wBACL,OAAA,CAAC,CAAA,MAAA,IAAA,mCAA2B,EAC3B,CAAC,EACD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,0CAAE,QAAQ,CAAC,qBAAI,CAAC,GAAG,CAAC,CAAA,CAAA;qBAAA,CACtB,CAAC;oBACF,MAAM,eAAe,GAAG,IAAA,qBAAa,EAAC,eAAe,EAAE,6BAAY,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAC/F,MAAM,UAAU,GAAG;wBAClB,GAAG,eAAe;wBAClB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;;4BAC/B,OAAA,MAAA,IAAA,mCAA2B,EAC1B,CAAC,EACD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,0CAAE,QAAQ,CAAC,qBAAI,CAAC,GAAG,CAAC,CAAA;yBAAA,CACrB;qBACD,CAAC;oBACF,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"wax-warband.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/wax-warband.ts"],"names":[],"mappings":";;;AAAA,iEAAmF;AAInF,mDAAuD;AAEvD,qDAAwD;AACxD,0CAA6D;AAGhD,QAAA,UAAU,GAAsB;IAC5C,mBAAmB,EAAE,YAAY;IACjC,OAAO,EAAE,wBAAoB;IAC7B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,kBAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBACpE,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAC/C,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,IAAA,mCAA2B,EAC5B,CAAC,EACD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CAAC,MAAM,CACT,CAAC;oBACF,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE;;wBACL,OAAA,CAAC,CAAA,MAAA,IAAA,mCAA2B,EAC3B,CAAC,EACD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,0CAAE,QAAQ,CAAC,qBAAI,CAAC,GAAG,CAAC,CAAA,CAAA;qBAAA,CACtB,CAAC;oBACF,MAAM,eAAe,GAAG,IAAA,qBAAa,EAAC,eAAe,EAAE,6BAAY,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAC/F,MAAM,UAAU,GAAG;wBAClB,GAAG,eAAe;wBAClB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;;4BAC/B,OAAA,MAAA,IAAA,mCAA2B,EAC1B,CAAC,EACD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,0CAAE,QAAQ,CAAC,qBAAI,CAAC,GAAG,CAAC,CAAA;yBAAA,CACrB;qBACD,CAAC;oBACF,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;wBAExB,MAAM,IAAI,GACT,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC;4BACzD,CAAC,CAAC,SAAS,CAAC,KAAK;4BACjB,CAAC,CAAC,MAAA,MAAA,MAAA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,0CAAE,IAAI,0CACxD,uBAAuB,CACtB,mCAAI,CAAC,CAAC;wBACX,IAAA,mBAAW,EACV,CAAC,EACD,OAAO,EACP,CAAC,IAAI,EACL,CAAC,IAAI,EACL,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;oBACH,CAAC,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC;iBACZ;aACD;SACD;IACF,CAAC;CACD,CAAC;AAGK,MAAM,aAAa,GAAG,CAAC,OAAsB,EAAE,MAAc,EAAE,QAAyB,EAAiB,EAAE;;IAEjH,MAAM,cAAc,GAAuC,EAAE,CAAC;IAC9D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC7B,KAAK,MAAM,KAAK,IAAI,MAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,mCAAI,EAAE,EAAE;YAChE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBAC3B,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;aAC3B;YACD,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACnC;KACD;IACD,KAAK,MAAM,KAAK,IAAI,6BAAY,EAAE;QACjC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAA,oBAAY,EAAC,MAAA,cAAc,CAAC,qBAAI,CAAC,KAAK,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAC;KACxE;IAED,MAAM,eAAe,GAAkB,EAAE,CAAC;IAG1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC3B,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;YAC1B,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAC3F,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;gBAC3C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBACtC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7B,MAAM;iBACN;aACD;SACD;KACD;IAGD,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAlCW,QAAA,aAAa,iBAkCxB","sourcesContent":["import { ALL_BG_RACES, AllCardsService, Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { shuffleArray } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getEffectiveTribesForEntity } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const WaxWarband: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tcardIds: [CardIds.WaxWarband],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (WaxWarband.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tif (input.playerBoard.length > 0) {\r\n\t\t\t\t\tconst boardWithTribes = input.playerBoard.filter(\r\n\t\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t\t!!getEffectiveTribesForEntity(\r\n\t\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t\t).length,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst boardWithoutAll = boardWithTribes.filter(\r\n\t\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t\t!getEffectiveTribesForEntity(\r\n\t\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t\t)?.includes(Race.ALL),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst selectedMinions = selectMinions(boardWithoutAll, ALL_BG_RACES, input.gameState.allCards);\r\n\t\t\t\t\tconst allMinions = [\r\n\t\t\t\t\t\t...selectedMinions,\r\n\t\t\t\t\t\t...boardWithTribes.filter((e) =>\r\n\t\t\t\t\t\t\tgetEffectiveTribesForEntity(\r\n\t\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t\t)?.includes(Race.ALL),\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t];\r\n\t\t\t\t\tallMinions.forEach((e) => {\r\n\t\t\t\t\t\t// Entity often omits TAG_SCRIPT_DATA_NUM_3 while still at the card default (1).\r\n\t\t\t\t\t\tconst buff =\r\n\t\t\t\t\t\t\ttypeof heroPower.info3 === 'number' && heroPower.info3 > 0\r\n\t\t\t\t\t\t\t\t? heroPower.info3\r\n\t\t\t\t\t\t\t\t: input.gameState.allCards.getCard(heroPower.cardId)?.tags?.[\r\n\t\t\t\t\t\t\t\t\t\t'TAG_SCRIPT_DATA_NUM_3'\r\n\t\t\t\t\t\t\t\t ] ?? 1;\r\n\t\t\t\t\t\tmodifyStats(\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\ttrinket,\r\n\t\t\t\t\t\t\t+buff,\r\n\t\t\t\t\t\t\t+buff,\r\n\t\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n\r\n// Not perfect, as I don't think this solves the issue where some cards are mutually exclusive\r\nexport const selectMinions = (minions: BoardEntity[], tribes: Race[], allCards: AllCardsService): BoardEntity[] => {\r\n\t// Step 1\r\n\tconst minionsByTribe: { [tribe: string]: BoardEntity[] } = {};\r\n\tfor (const minion of minions) {\r\n\t\tfor (const tribe of allCards.getCard(minion.cardId).races ?? []) {\r\n\t\t\tif (!minionsByTribe[tribe]) {\r\n\t\t\t\tminionsByTribe[tribe] = [];\r\n\t\t\t}\r\n\t\t\tminionsByTribe[tribe].push(minion);\r\n\t\t}\r\n\t}\r\n\tfor (const tribe of ALL_BG_RACES) {\r\n\t\tminionsByTribe[tribe] = shuffleArray(minionsByTribe[Race[tribe]] ?? []);\r\n\t}\r\n\r\n\tconst selectedMinions: BoardEntity[] = [];\r\n\r\n\t// Step 3\r\n\tfor (const tribe of tribes) {\r\n\t\tif (minionsByTribe[tribe]) {\r\n\t\t\tminionsByTribe[tribe].sort(\r\n\t\t\t\t(a, b) => allCards.getCard(a.cardId).races.length - allCards.getCard(b.cardId).races.length,\r\n\t\t\t);\r\n\t\t\tfor (const minion of minionsByTribe[tribe]) {\r\n\t\t\t\tif (!selectedMinions.includes(minion)) {\r\n\t\t\t\t\tselectedMinions.push(minion);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 4\r\n\treturn selectedMinions;\r\n};\r\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Arfus = void 0;
|
|
4
|
+
const stats_1 = require("../../../simulation/stats");
|
|
5
|
+
exports.Arfus = {
|
|
6
|
+
cardIds: ["TB_BaconShop_HERO_22_Buddy", "TB_BaconShop_HERO_22_Buddy_G"],
|
|
7
|
+
afterReborn: (minion, input) => {
|
|
8
|
+
if (input.rebornEntity.entityId === minion.entityId ||
|
|
9
|
+
input.rebornEntity.rebornFromEntityId === minion.entityId) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const multiplier = minion.cardId === "TB_BaconShop_HERO_22_Buddy_G" ? 2 : 1;
|
|
13
|
+
const attackBonus = minion.attack * multiplier;
|
|
14
|
+
(0, stats_1.modifyStats)(input.rebornEntity, minion, attackBonus, 0, input.boardWithKilledMinion, input.boardWithKilledMinionHero, input.gameState);
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=arfus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arfus.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/arfus.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,KAAK,GAAoB;IACrC,OAAO,EAAE,8DAAsF;IAC/F,WAAW,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QAE9D,IACC,KAAK,CAAC,YAAY,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;YAC/C,KAAK,CAAC,YAAY,CAAC,kBAAkB,KAAK,MAAM,CAAC,QAAQ,EACxD;YACD,OAAO;SACP;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,mCAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;QAC/C,IAAA,mBAAW,EACV,KAAK,CAAC,YAAY,EAClB,MAAM,EACN,WAAW,EACX,CAAC,EACD,KAAK,CAAC,qBAAqB,EAC3B,KAAK,CAAC,yBAAyB,EAC/B,KAAK,CAAC,SAAS,CACf,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { RebornEffectInput } from '../../../simulation/reborn';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { AfterRebornCard } from '../../card.interface';\r\n\r\nexport const Arfus: AfterRebornCard = {\r\n\tcardIds: [CardIds.Arfus_TB_BaconShop_HERO_22_Buddy, CardIds.Arfus_TB_BaconShop_HERO_22_Buddy_G],\r\n\tafterReborn: (minion: BoardEntity, input: RebornEffectInput) => {\r\n\t\t// Don't buff Arfus' own Reborn spawn, nor Arfus itself\r\n\t\tif (\r\n\t\t\tinput.rebornEntity.entityId === minion.entityId ||\r\n\t\t\tinput.rebornEntity.rebornFromEntityId === minion.entityId\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst multiplier = minion.cardId === CardIds.Arfus_TB_BaconShop_HERO_22_Buddy_G ? 2 : 1;\r\n\t\tconst attackBonus = minion.attack * multiplier;\r\n\t\tmodifyStats(\r\n\t\t\tinput.rebornEntity,\r\n\t\t\tminion,\r\n\t\t\tattackBonus,\r\n\t\t\t0,\r\n\t\t\tinput.boardWithKilledMinion,\r\n\t\t\tinput.boardWithKilledMinionHero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BrambleTunneler = void 0;
|
|
4
|
+
const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
|
|
5
|
+
exports.BrambleTunneler = {
|
|
6
|
+
cardIds: ["BG36_331", "BG36_331_G"],
|
|
7
|
+
rally: (minion, input) => {
|
|
8
|
+
const mult = minion.cardId === "BG36_331_G" ? 2 : 1;
|
|
9
|
+
const cardsToAdd = Array(mult).fill(null);
|
|
10
|
+
(0, cards_in_hand_1.addCardsInHand)(input.attackingHero, input.attackingBoard, cardsToAdd, input.gameState);
|
|
11
|
+
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=bramble-tunneler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bramble-tunneler.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/bramble-tunneler.ts"],"names":[],"mappings":";;;AAUA,qEAAmE;AAKtD,QAAA,eAAe,GAAc;IACzC,OAAO,EAAE,0BAAsE;IAC/E,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,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":["/**\r\n * Bramble Tunneler (Tier 4, 3/6)\r\n * Rally: Get a random Choose One card.\r\n *\r\n * Golden Bramble Tunneler (Tier 4, 6/12)\r\n * Rally: Get 2 random Choose One cards.\r\n *\r\n * Choose One cards themselves are tavern-only; the combat impact is the cards-in-hand trigger.\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { RallyCard } from '../../card.interface';\r\nimport { CardIds } from '../../../services/card-ids';\r\n\r\nexport const BrambleTunneler: RallyCard = {\r\n\tcardIds: [CardIds.BrambleTunneler_BG36_331, CardIds.BrambleTunneler_BG36_331_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.BrambleTunneler_BG36_331_G ? 2 : 1;\r\n\t\tconst cardsToAdd = Array(mult).fill(null);\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"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BrannsEpicEgg = void 0;
|
|
4
|
+
const utils_1 = require("../../../services/utils");
|
|
5
|
+
const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
|
|
6
|
+
const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
|
|
7
|
+
exports.BrannsEpicEgg = {
|
|
8
|
+
cardIds: ["TB_BaconShop_HERO_43_Buddy", "TB_BaconShop_HERO_43_Buddy_G"],
|
|
9
|
+
deathrattleSpawn: (minion, input) => {
|
|
10
|
+
const mult = minion.cardId === "TB_BaconShop_HERO_43_Buddy_G" ? 2 : 1;
|
|
11
|
+
const spawns = [];
|
|
12
|
+
for (let i = 0; i < mult; i++) {
|
|
13
|
+
spawns.push((0, utils_1.pickRandom)(input.gameState.cardsData.battlecryMinions));
|
|
14
|
+
}
|
|
15
|
+
const spawnedEntities = [];
|
|
16
|
+
for (const spawn of spawns) {
|
|
17
|
+
spawnedEntities.push(...(0, deathrattle_spawns_1.spawnEntities)(spawn, 1, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.otherBoard, input.otherBoardHero, input.gameState, input.deadEntity.friendly, false));
|
|
18
|
+
}
|
|
19
|
+
(0, cards_in_hand_1.addCardsInHand)(input.boardWithDeadEntityHero, input.boardWithDeadEntity, spawns, input.gameState);
|
|
20
|
+
return spawnedEntities;
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=branns-epic-egg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branns-epic-egg.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/branns-epic-egg.ts"],"names":[],"mappings":";;;AAEA,mDAAqD;AACrD,qEAAmE;AAEnE,+EAAuE;AAG1D,QAAA,aAAa,GAAyB;IAClD,OAAO,EAAE,8DAAsG;IAC/G,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,mCAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;SACpE;QACD,MAAM,eAAe,GAAkB,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC3B,eAAe,CAAC,IAAI,CACnB,GAAG,IAAA,kCAAa,EACf,KAAK,EACL,CAAC,EACD,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,UAAU,CAAC,QAAQ,EACzB,KAAK,CACL,CACD,CAAC;SACF;QACD,IAAA,8BAAc,EAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClG,OAAO,eAAe,CAAC;IACxB,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const BrannsEpicEgg: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.BrannsEpicEgg_TB_BaconShop_HERO_43_Buddy, CardIds.BrannsEpicEgg_TB_BaconShop_HERO_43_Buddy_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.BrannsEpicEgg_TB_BaconShop_HERO_43_Buddy_G ? 2 : 1;\r\n\t\tconst spawns: string[] = [];\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tspawns.push(pickRandom(input.gameState.cardsData.battlecryMinions));\r\n\t\t}\r\n\t\tconst spawnedEntities: BoardEntity[] = [];\r\n\t\tfor (const spawn of spawns) {\r\n\t\t\tspawnedEntities.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tspawn,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.otherBoard,\r\n\t\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\tinput.deadEntity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t}\r\n\t\taddCardsInHand(input.boardWithDeadEntityHero, input.boardWithDeadEntity, spawns, input.gameState);\r\n\t\treturn spawnedEntities;\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BronzeTimewalker = void 0;
|
|
4
|
+
const utils_1 = require("../../../services/utils");
|
|
5
|
+
const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
|
|
6
|
+
const chromadrake_pool_1 = require("./chromadrake-pool");
|
|
7
|
+
exports.BronzeTimewalker = {
|
|
8
|
+
cardIds: ["BG36_242", "BG36_242_G"],
|
|
9
|
+
rally: (minion, input) => {
|
|
10
|
+
const mult = minion.cardId === "BG36_242_G" ? 2 : 1;
|
|
11
|
+
const cardsToAdd = [];
|
|
12
|
+
for (let i = 0; i < mult; i++) {
|
|
13
|
+
const id = (0, utils_1.pickRandom)(chromadrake_pool_1.chromadrakeCardIds);
|
|
14
|
+
if (id) {
|
|
15
|
+
cardsToAdd.push(id);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
(0, cards_in_hand_1.addCardsInHand)(input.attackingHero, input.attackingBoard, cardsToAdd, input.gameState);
|
|
19
|
+
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=bronze-timewalker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bronze-timewalker.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/bronze-timewalker.ts"],"names":[],"mappings":";;;AAQA,mDAAqD;AACrD,qEAAmE;AAInE,yDAAwD;AAE3C,QAAA,gBAAgB,GAAc;IAC1C,OAAO,EAAE,0BAAwE;IACjF,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,EAAE,GAAG,IAAA,kBAAU,EAAC,qCAAkB,CAAC,CAAC;YAC1C,IAAI,EAAE,EAAE;gBACP,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACpB;SACD;QACD,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":["/**\r\n * Bronze Timewalker (Tier 4, 2/9)\r\n * Rally: Get a random Chromadrake.\r\n *\r\n * Golden Bronze Timewalker (Tier 4, 4/18)\r\n * Rally: Get 2 random Chromadrakes.\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { RallyCard } from '../../card.interface';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { chromadrakeCardIds } from './chromadrake-pool';\r\n\r\nexport const BronzeTimewalker: RallyCard = {\r\n\tcardIds: [CardIds.BronzeTimewalker_BG36_242, CardIds.BronzeTimewalker_BG36_242_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.BronzeTimewalker_BG36_242_G ? 2 : 1;\r\n\t\tconst cardsToAdd = [];\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tconst id = pickRandom(chromadrakeCardIds);\r\n\t\t\tif (id) {\r\n\t\t\t\tcardsToAdd.push(id);\r\n\t\t\t}\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"]}
|
|
@@ -6,14 +6,24 @@ exports.ChoralMrrrglr = {
|
|
|
6
6
|
cardIds: ["BG26_354", "BG26_354_G"],
|
|
7
7
|
startOfCombatTiming: 'start-of-combat',
|
|
8
8
|
startOfCombat: (minion, input) => {
|
|
9
|
-
var _a, _b
|
|
9
|
+
var _a, _b;
|
|
10
10
|
const multiplier = minion.cardId === "BG26_354_G" ? 2 : 1;
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const realHand = ((_a = input.playerEntity.hand) !== null && _a !== void 0 ? _a : []).filter((e) => { var _a; return !((_a = e.enchantments) === null || _a === void 0 ? void 0 : _a.some((ench) => ench.cardId === 'TB_BaconShopBadsongE')); });
|
|
12
|
+
const totalAttackInHand = realHand.map((e) => { var _a; return (_a = e.attack) !== null && _a !== void 0 ? _a : 0; }).reduce((a, b) => a + b, 0);
|
|
13
|
+
const totalHealthInHand = realHand.map((e) => { var _a; return (_a = e.health) !== null && _a !== void 0 ? _a : 0; }).reduce((a, b) => a + b, 0);
|
|
14
|
+
const hasChorusEnchant = !!((_b = minion.enchantments) === null || _b === void 0 ? void 0 : _b.some((e) => e.cardId === "BG26_354e"));
|
|
13
15
|
const attackBuff = multiplier *
|
|
14
|
-
(totalAttackInHand ||
|
|
16
|
+
(totalAttackInHand ||
|
|
17
|
+
(hasChorusEnchant || minion.gildedInCombat
|
|
18
|
+
? 0
|
|
19
|
+
: input.playerEntity.globalInfo.ChoralAttackBuff) ||
|
|
20
|
+
0);
|
|
15
21
|
const healthBuff = multiplier *
|
|
16
|
-
(totalHealthInHand ||
|
|
22
|
+
(totalHealthInHand ||
|
|
23
|
+
(hasChorusEnchant || minion.gildedInCombat
|
|
24
|
+
? 0
|
|
25
|
+
: input.playerEntity.globalInfo.ChoralHealthBuff) ||
|
|
26
|
+
0);
|
|
17
27
|
(0, stats_1.modifyStats)(minion, minion, attackBuff, healthBuff, input.playerBoard, input.playerEntity, input.gameState);
|
|
18
28
|
return true;
|
|
19
29
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"choral-mrrrglr.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/choral-mrrrglr.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,aAAa,GAAsB;IAC/C,OAAO,EAAE,0BAAkE;IAC3E,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QAEvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"choral-mrrrglr.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/choral-mrrrglr.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,aAAa,GAAsB;IAC/C,OAAO,EAAE,0BAAkE;IAC3E,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QAEvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAG9E,MAAM,QAAQ,GAAG,CAAC,MAAA,KAAK,CAAC,YAAY,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAC,CAAA,MAAA,CAAC,CAAC,YAAY,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,sBAAsB,CAAC,CAAA,CAAA,EAAA,CAC9E,CAAC;QACF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,MAAM,mCAAI,CAAC,CAAA,EAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,MAAM,mCAAI,CAAC,CAAA,EAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAKxF,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAA,MAAA,MAAM,CAAC,YAAY,0CAAE,IAAI,CACnD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,gBAA4C,CAC3D,CAAA,CAAC;QACF,MAAM,UAAU,GACf,UAAU;YACV,CAAC,iBAAiB;gBACjB,CAAC,gBAAgB,IAAI,MAAM,CAAC,cAAc;oBACzC,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBAClD,CAAC,CAAC,CAAC;QACL,MAAM,UAAU,GACf,UAAU;YACV,CAAC,iBAAiB;gBACjB,CAAC,gBAAgB,IAAI,MAAM,CAAC,cAAc;oBACzC,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBAClD,CAAC,CAAC,CAAC;QACL,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5G,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\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 { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const ChoralMrrrglr: StartOfCombatCard = {\r\n\tcardIds: [CardIds.ChoralMrrrglr_BG26_354, CardIds.ChoralMrrrglr_BG26_354_G],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\t// Multiplier not needed if relying on global info?\r\n\t\tconst multiplier = minion.cardId === CardIds.ChoralMrrrglr_BG26_354_G ? 2 : 1;\r\n\t\t// When it's summoned by Y'Shaarj hero power, the info isn't set.\r\n\t\t// Ignore Badsong-revealed hand cards — they are not real combat hand.\r\n\t\tconst realHand = (input.playerEntity.hand ?? []).filter(\r\n\t\t\t(e) => !e.enchantments?.some((ench) => ench.cardId === 'TB_BaconShopBadsongE'),\r\n\t\t);\r\n\t\tconst totalAttackInHand = realHand.map((e) => e.attack ?? 0).reduce((a, b) => a + b, 0);\r\n\t\tconst totalHealthInHand = realHand.map((e) => e.health ?? 0).reduce((a, b) => a + b, 0);\r\n\t\t// Chorus enchantment script-data (and thus Choral*Buff globalInfo) mirrors buffs already\r\n\t\t// baked into ATK/HP from prior SoCs. Re-applying that fallback when hand is empty\r\n\t\t// (common for opponent extracts) double-counts. Only use globalInfo for fresh summons\r\n\t\t// that do not yet carry the enchantment (e.g. Y'Shaarj).\r\n\t\tconst hasChorusEnchant = !!minion.enchantments?.some(\r\n\t\t\t(e) => e.cardId === CardIds.ChoralMrrrglr_ChorusEnchantment,\r\n\t\t);\r\n\t\tconst attackBuff =\r\n\t\t\tmultiplier *\r\n\t\t\t(totalAttackInHand ||\r\n\t\t\t\t(hasChorusEnchant || minion.gildedInCombat\r\n\t\t\t\t\t? 0\r\n\t\t\t\t\t: input.playerEntity.globalInfo.ChoralAttackBuff) ||\r\n\t\t\t\t0);\r\n\t\tconst healthBuff =\r\n\t\t\tmultiplier *\r\n\t\t\t(totalHealthInHand ||\r\n\t\t\t\t(hasChorusEnchant || minion.gildedInCombat\r\n\t\t\t\t\t? 0\r\n\t\t\t\t\t: input.playerEntity.globalInfo.ChoralHealthBuff) ||\r\n\t\t\t\t0);\r\n\t\tmodifyStats(minion, minion, attackBuff, healthBuff, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare const ElderTaggawag: {
|
|
4
|
-
startOfCombat: (minion: BoardEntity, input: SoCInput) => boolean;
|
|
5
|
-
};
|
|
1
|
+
import { StartOfCombatCard } from '../../card.interface';
|
|
2
|
+
export declare const ElderTaggawag: StartOfCombatCard;
|
|
@@ -4,6 +4,7 @@ exports.ElderTaggawag = void 0;
|
|
|
4
4
|
const stats_1 = require("../../../simulation/stats");
|
|
5
5
|
const utils_1 = require("../../../utils");
|
|
6
6
|
exports.ElderTaggawag = {
|
|
7
|
+
cardIds: ["TB_BaconShop_HERO_14_Buddy", "TB_BaconShop_HERO_14_Buddy_G"],
|
|
7
8
|
startOfCombat: (minion, input) => {
|
|
8
9
|
const minionsOfDifferentTypes = (0, utils_1.getMinionsOfDifferentTypes)(input.playerBoard, input.playerEntity, input.gameState);
|
|
9
10
|
if (minionsOfDifferentTypes.length >= 4) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elder-taggawag.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/elder-taggawag.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AACxD,0CAA4D;
|
|
1
|
+
{"version":3,"file":"elder-taggawag.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/elder-taggawag.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AACxD,0CAA4D;AAG/C,QAAA,aAAa,GAAsB;IAC/C,OAAO,EAAE,8DAAsG;IAC/G,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,uBAAuB,GAAG,IAAA,kCAA0B,EACzD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,IAAI,uBAAuB,CAAC,MAAM,IAAI,CAAC,EAAE;YACxC,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3F,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3F,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,mCAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChG,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,oBAAoB,GAAG,UAAU,EACjC,oBAAoB,GAAG,UAAU,EACjC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '../../../services/card-ids';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getMinionsOfDifferentTypes } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const ElderTaggawag: StartOfCombatCard = {\r\n\tcardIds: [CardIds.ElderTaggawag_TB_BaconShop_HERO_14_Buddy, CardIds.ElderTaggawag_TB_BaconShop_HERO_14_Buddy_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst minionsOfDifferentTypes = getMinionsOfDifferentTypes(\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\tif (minionsOfDifferentTypes.length >= 4) {\r\n\t\t\tconst highestAttackOnBoard = Math.max(...input.playerBoard.map((entity) => entity.attack));\r\n\t\t\tconst highestHealthOnBoard = Math.max(...input.playerBoard.map((entity) => entity.health));\r\n\t\t\tconst multiplier = minion.cardId === CardIds.ElderTaggawag_TB_BaconShop_HERO_14_Buddy_G ? 2 : 1;\r\n\t\t\tmodifyStats(\r\n\t\t\t\tminion,\r\n\t\t\t\tminion,\r\n\t\t\t\thighestAttackOnBoard * multiplier,\r\n\t\t\t\thighestHealthOnBoard * multiplier,\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 true;\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ElementiumSquirrelBomb = void 0;
|
|
4
|
+
const reference_data_1 = require("@firestone-hs/reference-data");
|
|
5
|
+
const attack_1 = require("../../../simulation/attack");
|
|
6
|
+
const utils_1 = require("../../../utils");
|
|
7
|
+
exports.ElementiumSquirrelBomb = {
|
|
8
|
+
cardIds: [
|
|
9
|
+
"TB_BaconShop_HERO_17_Buddy",
|
|
10
|
+
"TB_BaconShop_HERO_17_Buddy_G",
|
|
11
|
+
],
|
|
12
|
+
deathrattleEffect: (minion, input) => {
|
|
13
|
+
const damage = minion.cardId === "TB_BaconShop_HERO_17_Buddy_G" ? 8 : 4;
|
|
14
|
+
const numberOfDeadMechsThisCombat = input.gameState.sharedState.deaths
|
|
15
|
+
.filter((entity) => entity.friendly === minion.friendly)
|
|
16
|
+
.filter((entity) => (0, utils_1.hasCorrectTribe)(entity, input.boardWithDeadEntityHero, reference_data_1.Race.MECH, input.gameState.anomalies, input.gameState.allCards)).length;
|
|
17
|
+
for (let i = 0; i < numberOfDeadMechsThisCombat; i++) {
|
|
18
|
+
(0, attack_1.dealDamageToRandomEnemy)(input.otherBoard, input.otherBoardHero, minion, damage, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.gameState);
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=elementium-squirrel-bomb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elementium-squirrel-bomb.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/elementium-squirrel-bomb.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,uDAAqE;AAErE,0CAAiD;AAGpC,QAAA,sBAAsB,GAA0B;IAC5D,OAAO,EAAE;;;KAGR;IACD,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,mCAAgE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAGrG,MAAM,2BAA2B,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM;aACpE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;aACvD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAClB,IAAA,uBAAe,EACd,MAAM,EACN,KAAK,CAAC,uBAAuB,EAC7B,qBAAI,CAAC,IAAI,EACT,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACD,CAAC,MAAM,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,EAAE,CAAC,EAAE,EAAE;YACrD,IAAA,gCAAuB,EACtB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,cAAc,EACpB,MAAM,EACN,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;SACF;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 { dealDamageToRandomEnemy } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { DeathrattleEffectCard } from '../../card.interface';\r\n\r\nexport const ElementiumSquirrelBomb: DeathrattleEffectCard = {\r\n\tcardIds: [\r\n\t\tCardIds.ElementiumSquirrelBomb_TB_BaconShop_HERO_17_Buddy,\r\n\t\tCardIds.ElementiumSquirrelBomb_TB_BaconShop_HERO_17_Buddy_G,\r\n\t],\r\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst damage = minion.cardId === CardIds.ElementiumSquirrelBomb_TB_BaconShop_HERO_17_Buddy_G ? 8 : 4;\r\n\t\t// FIXME: this doesn't account for the fact that some mechs could still die from deathrattles\r\n\t\t// spawned after this point in the same combat, but it's good enough for now\r\n\t\tconst numberOfDeadMechsThisCombat = input.gameState.sharedState.deaths\r\n\t\t\t.filter((entity) => entity.friendly === minion.friendly)\r\n\t\t\t.filter((entity) =>\r\n\t\t\t\thasCorrectTribe(\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tRace.MECH,\r\n\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t),\r\n\t\t\t).length;\r\n\t\tfor (let i = 0; i < numberOfDeadMechsThisCombat; i++) {\r\n\t\t\tdealDamageToRandomEnemy(\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\tminion,\r\n\t\t\t\tdamage,\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},\r\n};\r\n"]}
|
|
@@ -5,7 +5,7 @@ const stats_1 = require("../../../simulation/stats");
|
|
|
5
5
|
exports.FleeingFugitive = {
|
|
6
6
|
cardIds: ["BG36_921", "BG36_921_G"],
|
|
7
7
|
onTavernSpellCast: (entity, input) => {
|
|
8
|
-
if (input.target !== entity) {
|
|
8
|
+
if (input.source !== input.hero || input.target !== entity) {
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
const mult = entity.cardId === "BG36_921_G" ? 2 : 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleeing-fugitive.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/fleeing-fugitive.ts"],"names":[],"mappings":";;;AAQA,qDAAwD;AAI3C,QAAA,eAAe,GAA0B;IACrD,OAAO,EAAE,0BAAsE;IAC/E,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACjE,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"fleeing-fugitive.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/fleeing-fugitive.ts"],"names":[],"mappings":";;;AAQA,qDAAwD;AAI3C,QAAA,eAAe,GAA0B;IACrD,OAAO,EAAE,0BAAsE;IAC/E,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACjE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;YAC3D,OAAO;SACP;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChF,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Fleeing Fugitive (Tier 1, 3/2)\r\n * Whenever you cast a spell on this, gain +1 Health.\r\n *\r\n * Golden Fleeing Fugitive (Tier 1, 6/4)\r\n * Whenever you cast a spell on this, gain +2 Health.\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\nimport { CardIds } from '../../../services/card-ids';\r\n\r\nexport const FleeingFugitive: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.FleeingFugitive_BG36_921, CardIds.FleeingFugitive_BG36_921_G],\r\n\tonTavernSpellCast: (entity: BoardEntity, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero || input.target !== entity) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst mult = entity.cardId === CardIds.FleeingFugitive_BG36_921_G ? 2 : 1;\r\n\t\tmodifyStats(entity, entity, 0, mult, input.board, input.hero, input.gameState);\r\n\t},\r\n};\r\n"]}
|
|
@@ -2,24 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GatekeeperAmalgam = void 0;
|
|
4
4
|
const cast_tavern_spell_1 = require("../../../mechanics/cast-tavern-spell");
|
|
5
|
-
const utils_1 = require("../../../services/utils");
|
|
6
5
|
exports.GatekeeperAmalgam = {
|
|
7
6
|
cardIds: ["BG36_640", "BG36_640_G"],
|
|
8
7
|
onTavernSpellCast: (entity, input) => {
|
|
9
|
-
if (input.target !== entity) {
|
|
8
|
+
if (input.source !== input.hero || input.target !== entity) {
|
|
10
9
|
return;
|
|
11
10
|
}
|
|
12
11
|
const loops = entity.cardId === "BG36_640_G" ? 2 : 1;
|
|
13
12
|
for (let i = 0; i < loops; i++) {
|
|
14
|
-
const teaSetTarget = (0, utils_1.pickRandomAlive)(input.board);
|
|
15
|
-
if (!teaSetTarget) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
13
|
(0, cast_tavern_spell_1.castTavernSpell)("BG28_888", {
|
|
19
14
|
...input,
|
|
20
15
|
spellCardId: "BG28_888",
|
|
21
16
|
source: entity,
|
|
22
|
-
target:
|
|
17
|
+
target: null,
|
|
23
18
|
});
|
|
24
19
|
}
|
|
25
20
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gatekeeper-amalgam.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/gatekeeper-amalgam.ts"],"names":[],"mappings":";;;AAWA,4EAAuE;
|
|
1
|
+
{"version":3,"file":"gatekeeper-amalgam.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/gatekeeper-amalgam.ts"],"names":[],"mappings":";;;AAWA,4EAAuE;AAI1D,QAAA,iBAAiB,GAA0B;IACvD,OAAO,EAAE,0BAA0E;IACnF,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACjE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;YAC3D,OAAO;SACP;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,iBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAA,mCAAe,cAAmC;gBACjD,GAAG,KAAK;gBACR,WAAW,YAAkC;gBAC7C,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,IAAI;aACZ,CAAC,CAAC;SACH;IACF,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Gatekeeper Amalgam (Tier 6, 6/6, all minion types)\r\n * Whenever you cast a spell on this, it casts Misplaced Tea Set.\r\n *\r\n * Golden Gatekeeper Amalgam (Tier 6, 12/12, all minion types)\r\n * Whenever you cast a spell on this, it casts Misplaced Tea Set twice.\r\n *\r\n * \"It casts\" means the Amalgam is the source, so the nested cast does not count as one of your own\r\n * spells and does not re-trigger the \"whenever you cast\" effects.\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { castTavernSpell } from '../../../mechanics/cast-tavern-spell';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const GatekeeperAmalgam: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.GatekeeperAmalgam_BG36_640, CardIds.GatekeeperAmalgam_BG36_640_G],\r\n\tonTavernSpellCast: (entity: BoardEntity, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero || input.target !== entity) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst loops = entity.cardId === CardIds.GatekeeperAmalgam_BG36_640_G ? 2 : 1;\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\tcastTavernSpell(CardIds.MisplacedTeaSet_BG28_888, {\r\n\t\t\t\t...input,\r\n\t\t\t\tspellCardId: CardIds.MisplacedTeaSet_BG28_888,\r\n\t\t\t\tsource: entity,\r\n\t\t\t\ttarget: null,\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -9,7 +9,8 @@ exports.Glambot = {
|
|
|
9
9
|
cardIds: ["BG36_853", "BG36_853_G"],
|
|
10
10
|
onTavernSpellCast: (entity, input) => {
|
|
11
11
|
const target = input.target;
|
|
12
|
-
if (
|
|
12
|
+
if (input.source !== input.hero ||
|
|
13
|
+
!target ||
|
|
13
14
|
!(0, utils_1.hasCorrectTribe)(target, input.hero, reference_data_1.Race.MECH, input.gameState.anomalies, input.gameState.allCards)) {
|
|
14
15
|
return;
|
|
15
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glambot.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/glambot.ts"],"names":[],"mappings":";;;AAOA,iEAAmE;AAEnE,6DAAkE;AAClE,0CAAiD;AAIjD,MAAM,cAAc,GAAG,CAAC,CAAC;AAEZ,QAAA,OAAO,GAA0B;IAC7C,OAAO,EAAE,0BAAsD;IAC/D,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACjE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IACC,CAAC,MAAM;YACP,CAAC,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EACnG;YACD,OAAO;SACP;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,iBAA+B,CAAC;QAC5D,MAAM,eAAe,GAAG,MAAM;YAC7B,CAAC;YACD,CAAC,YAA8D,CAAC;QAEjE,MAAM,SAAS,GAAkB;YAChC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC;YACpD,EAAE,EAAE,eAAe;YACnB,MAAM,EAAE,cAAc,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,EAAE,cAAc,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACzC,CAAC;QACF,IAAA,6BAAiB,EAChB,CAAC,MAAM,CAAC,EACR,MAAM,EACN,CAAC,SAAS,CAAC,EACX,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CACf,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Glambot (Tier 5, 6/6)\r\n * Whenever you cast a spell on a Mech, Magnetize a 6/6 Satellite to it.\r\n *\r\n * Golden Glambot (Tier 5, 12/12)\r\n * Whenever you cast a spell on a Mech, Magnetize a 12/12 Satellite to it.\r\n */\r\nimport { Race, ReferenceCard } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { magnetizeToTarget } from '../../../simulation/magnetize';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\nimport { CardIds } from '../../../services/card-ids';\r\n\r\nconst satelliteStats = 6;\r\n\r\nexport const Glambot: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.Glambot_BG36_853, CardIds.Glambot_BG36_853_G],\r\n\tonTavernSpellCast: (entity: BoardEntity, input: CastSpellInput) => {\r\n\t\tconst target = input.target;\r\n\t\tif (\r\n\t\t\t!target ||\r\n\t\t\t!hasCorrectTribe(target, input.hero, Race.MECH, 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 golden = entity.cardId === CardIds.Glambot_BG36_853_G;\r\n\t\tconst satelliteCardId = golden\r\n\t\t\t? CardIds.MoonsteelJuggernaut_MoonsteelSatelliteToken_BG31_171_Gt\r\n\t\t\t: CardIds.MoonsteelJuggernaut_MoonsteelSatelliteToken_BG31_171t;\r\n\t\t// The stats are part of the card text rather than of the token, so we set them explicitly\r\n\t\tconst satellite: ReferenceCard = {\r\n\t\t\t...input.gameState.allCards.getCard(satelliteCardId),\r\n\t\t\tid: satelliteCardId,\r\n\t\t\tattack: satelliteStats * (golden ? 2 : 1),\r\n\t\t\thealth: satelliteStats * (golden ? 2 : 1),\r\n\t\t};\r\n\t\tmagnetizeToTarget(\r\n\t\t\t[target],\r\n\t\t\tentity,\r\n\t\t\t[satellite],\r\n\t\t\tinput.board,\r\n\t\t\tinput.hero,\r\n\t\t\tinput.otherBoard,\r\n\t\t\tinput.otherHero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t},\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"glambot.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/glambot.ts"],"names":[],"mappings":";;;AAOA,iEAAmE;AAEnE,6DAAkE;AAClE,0CAAiD;AAIjD,MAAM,cAAc,GAAG,CAAC,CAAC;AAEZ,QAAA,OAAO,GAA0B;IAC7C,OAAO,EAAE,0BAAsD;IAC/D,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACjE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IACC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI;YAC3B,CAAC,MAAM;YACP,CAAC,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EACnG;YACD,OAAO;SACP;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,iBAA+B,CAAC;QAC5D,MAAM,eAAe,GAAG,MAAM;YAC7B,CAAC;YACD,CAAC,YAA8D,CAAC;QAEjE,MAAM,SAAS,GAAkB;YAChC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC;YACpD,EAAE,EAAE,eAAe;YACnB,MAAM,EAAE,cAAc,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,EAAE,cAAc,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACzC,CAAC;QACF,IAAA,6BAAiB,EAChB,CAAC,MAAM,CAAC,EACR,MAAM,EACN,CAAC,SAAS,CAAC,EACX,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CACf,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Glambot (Tier 5, 6/6)\r\n * Whenever you cast a spell on a Mech, Magnetize a 6/6 Satellite to it.\r\n *\r\n * Golden Glambot (Tier 5, 12/12)\r\n * Whenever you cast a spell on a Mech, Magnetize a 12/12 Satellite to it.\r\n */\r\nimport { Race, ReferenceCard } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { magnetizeToTarget } from '../../../simulation/magnetize';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\nimport { CardIds } from '../../../services/card-ids';\r\n\r\nconst satelliteStats = 6;\r\n\r\nexport const Glambot: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.Glambot_BG36_853, CardIds.Glambot_BG36_853_G],\r\n\tonTavernSpellCast: (entity: BoardEntity, input: CastSpellInput) => {\r\n\t\tconst target = input.target;\r\n\t\tif (\r\n\t\t\tinput.source !== input.hero ||\r\n\t\t\t!target ||\r\n\t\t\t!hasCorrectTribe(target, input.hero, Race.MECH, 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 golden = entity.cardId === CardIds.Glambot_BG36_853_G;\r\n\t\tconst satelliteCardId = golden\r\n\t\t\t? CardIds.MoonsteelJuggernaut_MoonsteelSatelliteToken_BG31_171_Gt\r\n\t\t\t: CardIds.MoonsteelJuggernaut_MoonsteelSatelliteToken_BG31_171t;\r\n\t\t// The stats are part of the card text rather than of the token, so we set them explicitly\r\n\t\tconst satellite: ReferenceCard = {\r\n\t\t\t...input.gameState.allCards.getCard(satelliteCardId),\r\n\t\t\tid: satelliteCardId,\r\n\t\t\tattack: satelliteStats * (golden ? 2 : 1),\r\n\t\t\thealth: satelliteStats * (golden ? 2 : 1),\r\n\t\t};\r\n\t\tmagnetizeToTarget(\r\n\t\t\t[target],\r\n\t\t\tentity,\r\n\t\t\t[satellite],\r\n\t\t\tinput.board,\r\n\t\t\tinput.hero,\r\n\t\t\tinput.otherBoard,\r\n\t\t\tinput.otherHero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t},\r\n};\r\n"]}
|