@firestone-hs/simulate-bgs-battle 1.1.747 → 1.1.749
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/card.interface.d.ts +19 -1
- package/dist/cards/card.interface.js +12 -2
- package/dist/cards/card.interface.js.map +1 -1
- package/dist/cards/impl/_card-mappings.js +8 -2
- package/dist/cards/impl/_card-mappings.js.map +1 -1
- package/dist/cards/impl/bg-spell/mighty-dragonbreath.js +3 -1
- package/dist/cards/impl/bg-spell/mighty-dragonbreath.js.map +1 -1
- package/dist/cards/impl/enchantments/deaths-embrace.d.ts +2 -2
- package/dist/cards/impl/enchantments/deaths-embrace.js +35 -6
- package/dist/cards/impl/enchantments/deaths-embrace.js.map +1 -1
- package/dist/cards/impl/enchantments/spell-siphon.d.ts +2 -0
- package/dist/cards/impl/enchantments/spell-siphon.js +22 -0
- package/dist/cards/impl/enchantments/spell-siphon.js.map +1 -0
- package/dist/cards/impl/minion/captain-cookie.d.ts +2 -0
- package/dist/cards/impl/minion/captain-cookie.js +14 -0
- package/dist/cards/impl/minion/captain-cookie.js.map +1 -0
- package/dist/cards/impl/minion/devout-hellcaller.js +1 -1
- package/dist/cards/impl/minion/devout-hellcaller.js.map +1 -1
- package/dist/cards/impl/minion/diremuck-forager.js +4 -1
- package/dist/cards/impl/minion/diremuck-forager.js.map +1 -1
- package/dist/cards/impl/minion/drustfallen-butcher.js +1 -1
- package/dist/cards/impl/minion/drustfallen-butcher.js.map +1 -1
- package/dist/cards/impl/minion/eredar-escapist.js +5 -21
- package/dist/cards/impl/minion/eredar-escapist.js.map +1 -1
- package/dist/cards/impl/minion/expert-aviator.js +1 -1
- package/dist/cards/impl/minion/expert-aviator.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/goldrinn-the-great-wolf.js +1 -1
- package/dist/cards/impl/minion/goldrinn-the-great-wolf.js.map +1 -1
- package/dist/cards/impl/minion/jailbird-juggernaut.js +1 -4
- package/dist/cards/impl/minion/jailbird-juggernaut.js.map +1 -1
- package/dist/cards/impl/minion/sanguine-champion.d.ts +2 -0
- package/dist/cards/impl/minion/sanguine-champion.js +21 -0
- package/dist/cards/impl/minion/sanguine-champion.js.map +1 -0
- package/dist/cards/impl/minion/sanguine-refiner.js +1 -1
- package/dist/cards/impl/minion/sanguine-refiner.js.map +1 -1
- package/dist/cards/impl/minion/showy-cyclist.d.ts +2 -2
- package/dist/cards/impl/minion/showy-cyclist.js +9 -3
- package/dist/cards/impl/minion/showy-cyclist.js.map +1 -1
- package/dist/cards/impl/minion/soul-rewinder.js +3 -2
- package/dist/cards/impl/minion/soul-rewinder.js.map +1 -1
- package/dist/cards/impl/minion/tasty-lobster.d.ts +2 -0
- package/dist/cards/impl/minion/tasty-lobster.js +5 -3
- package/dist/cards/impl/minion/tasty-lobster.js.map +1 -1
- package/dist/cards/impl/minion/tichondrius.js +1 -1
- package/dist/cards/impl/minion/tichondrius.js.map +1 -1
- package/dist/cards/impl/minion/utility-drone.js +1 -1
- package/dist/cards/impl/minion/utility-drone.js.map +1 -1
- package/dist/cards/impl/minion/wildfire-elemental.js +8 -3
- package/dist/cards/impl/minion/wildfire-elemental.js.map +1 -1
- package/dist/cards/impl/trinket/all-purpose-kibble.js +3 -2
- package/dist/cards/impl/trinket/all-purpose-kibble.js.map +1 -1
- package/dist/cards/impl/trinket/archaic-scroll.js +1 -1
- package/dist/cards/impl/trinket/archaic-scroll.js.map +1 -1
- package/dist/cards/impl/trinket/bubble-crown.js +1 -1
- package/dist/cards/impl/trinket/bubble-crown.js.map +1 -1
- package/dist/cards/impl/trinket/lionfish-portrait.js +3 -2
- package/dist/cards/impl/trinket/lionfish-portrait.js.map +1 -1
- package/dist/cards/impl/trinket/miniature-ship.js +1 -1
- package/dist/cards/impl/trinket/miniature-ship.js.map +1 -1
- package/dist/cards/impl/trinket/stormcoil-sticker.js +2 -1
- package/dist/cards/impl/trinket/stormcoil-sticker.js.map +1 -1
- package/dist/cards/impl/trinket/training-certificate.js +1 -1
- package/dist/cards/impl/trinket/training-certificate.js.map +1 -1
- package/dist/cards/impl/trinket/trusty-crowbar.js +1 -1
- package/dist/cards/impl/trinket/trusty-crowbar.js.map +1 -1
- package/dist/simulation/add-minion-to-board.js +34 -10
- package/dist/simulation/add-minion-to-board.js.map +1 -1
- package/dist/simulation/attack.d.ts +1 -0
- package/dist/simulation/attack.js +12 -8
- package/dist/simulation/attack.js.map +1 -1
- package/dist/simulation/auras.js +4 -1
- package/dist/simulation/auras.js.map +1 -1
- package/dist/simulation/battlecries.js +0 -6
- package/dist/simulation/battlecries.js.map +1 -1
- package/dist/simulation/deathrattle-spawns.js +0 -6
- package/dist/simulation/deathrattle-spawns.js.map +1 -1
- package/dist/simulation/global-info-helpers.js +11 -0
- package/dist/simulation/global-info-helpers.js.map +1 -1
- package/dist/simulation/minion-kill.d.ts +1 -1
- package/dist/simulation/minion-kill.js +2 -1
- package/dist/simulation/minion-kill.js.map +1 -1
- package/dist/simulation/remove-minion-from-board.js +12 -0
- package/dist/simulation/remove-minion-from-board.js.map +1 -1
- package/dist/simulation/utils/golden.d.ts +9 -0
- package/dist/simulation/utils/golden.js +14 -0
- package/dist/simulation/utils/golden.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CaptainCookie = void 0;
|
|
4
|
+
const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
|
|
5
|
+
exports.CaptainCookie = {
|
|
6
|
+
cardIds: ["BG36_760", "BG36_760_G"],
|
|
7
|
+
deathrattleSpawn: (minion, input) => {
|
|
8
|
+
const mult = minion.cardId === "BG36_760_G" ? 2 : 1;
|
|
9
|
+
const cardsToAdd = Array(mult).fill("BG28_518");
|
|
10
|
+
(0, cards_in_hand_1.addCardsInHand)(input.boardWithDeadEntityHero, input.boardWithDeadEntity, cardsToAdd, input.gameState);
|
|
11
|
+
return [];
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=captain-cookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captain-cookie.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/captain-cookie.ts"],"names":[],"mappings":";;;AAEA,qEAAmE;AAItD,QAAA,aAAa,GAAyB;IAClD,OAAO,EAAE,0BAAkE;IAC3E,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,YAA8B,CAAC;QAClE,IAAA,8BAAc,EAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,mBAAmB,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACtG,OAAO,EAAE,CAAC;IACX,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 { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const CaptainCookie: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.CaptainCookie_BG36_760, CardIds.CaptainCookie_BG36_760_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.CaptainCookie_BG36_760_G ? 2 : 1;\r\n\t\tconst cardsToAdd = Array(mult).fill(CardIds.ChefsChoice_BG28_518);\r\n\t\taddCardsInHand(input.boardWithDeadEntityHero, input.boardWithDeadEntity, cardsToAdd, input.gameState);\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
|
|
@@ -15,7 +15,7 @@ exports.DevoutHellcaller = {
|
|
|
15
15
|
'attack' in input.damageDealer &&
|
|
16
16
|
'health' in input.damageDealer &&
|
|
17
17
|
(0, utils_1.hasCorrectTribe)(input.damageDealer, input.hero, reference_data_1.Race.DEMON, input.gameState.anomalies, input.gameState.allCards)) {
|
|
18
|
-
(0, stats_1.modifyStats)(minion, minion,
|
|
18
|
+
(0, stats_1.modifyStats)(minion, minion, 2 * mult, 2 * mult, input.board, input.hero, input.gameState);
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devout-hellcaller.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/devout-hellcaller.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"devout-hellcaller.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/devout-hellcaller.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,gBAAgB,GAAwB;IACpD,OAAO,EAAE,0BAAwE;IACjF,eAAe,EAAE,CAAC,MAAmB,EAAE,KAA2B,EAAE,EAAE;QAErE,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,YAAY,CAAC,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,YAAY,EAAE;YACrF,OAAO;SACP;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IACC,KAAK,CAAC,YAAY,IAAI,MAAM;YAC5B,QAAQ,IAAI,KAAK,CAAC,YAAY;YAC9B,QAAQ,IAAI,KAAK,CAAC,YAAY;YAC9B,IAAA,uBAAe,EACd,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,IAAI,EACV,qBAAI,CAAC,KAAK,EACV,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,EACA;YACD,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,CAAC;SAC1F;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 { AfterDealDamageInput } from '../../../simulation/damage-effects';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { AfterDealDamageCard } from '../../card.interface';\r\n\r\nexport const DevoutHellcaller: AfterDealDamageCard = {\r\n\tcardIds: [CardIds.DevoutHellcaller_BG33_155, CardIds.DevoutHellcaller_BG33_155_G],\r\n\tafterDealDamage: (minion: BoardEntity, input: AfterDealDamageInput) => {\r\n\t\t// Only other friendly minions trigger this\r\n\t\tif (minion.friendly !== input.damageDealer.friendly || minion === input.damageDealer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst mult = minion.cardId === CardIds.DevoutHellcaller_BG33_155_G ? 2 : 1;\r\n\t\tif (\r\n\t\t\tinput.damageDealer != minion &&\r\n\t\t\t'attack' in input.damageDealer &&\r\n\t\t\t'health' in input.damageDealer &&\r\n\t\t\thasCorrectTribe(\r\n\t\t\t\tinput.damageDealer,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tRace.DEMON,\r\n\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tmodifyStats(minion, minion, 2 * mult, 2 * mult, input.board, input.hero, input.gameState);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -59,7 +59,10 @@ exports.DiremuckForager = {
|
|
|
59
59
|
...((_a = input.playerEntity.globalInfo.DiremuckPendingSummons) !== null && _a !== void 0 ? _a : []),
|
|
60
60
|
{ foragerEntityId: minion.entityId, remaining: totalWanted, spawnRight },
|
|
61
61
|
];
|
|
62
|
-
return
|
|
62
|
+
return {
|
|
63
|
+
hasTriggered: true,
|
|
64
|
+
shouldRecomputeCurrentAttacker: !spawnRight,
|
|
65
|
+
};
|
|
63
66
|
},
|
|
64
67
|
};
|
|
65
68
|
//# sourceMappingURL=diremuck-forager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diremuck-forager.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/diremuck-forager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"diremuck-forager.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/diremuck-forager.ts"],"names":[],"mappings":";;;AAOA,iEAAoD;AAIpD,iFAA4G;AAC5G,+EAAuE;AAEvE,uDAAiE;AAEjE,0CAAiD;AAGjD,MAAM,mBAAmB,GAAG,CAAC,QAAmC,EAAE,EAAE,CAAC,CAAC,CAAc,EAAE,EAAE,CACvF,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,IAAA,4CAAqB,EAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,CAAA,EAAA,CAAC,CAAC;AAG7F,MAAM,4BAA4B,GAAG,CACpC,OAA2B,EAC3B,UAAuB,EACvB,UAAmB,EACnB,WAA0B,EAC1B,YAA6B,EAC7B,aAA4B,EAC5B,cAA+B,EAC/B,SAAwB,EACjB,EAAE;;IACT,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,YAAY,CAAC,QAAQ,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAA,kCAAa,EAC/B,UAAU,CAAC,MAAM,EACjB,CAAC,EACD,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,SAAS,EACT,QAAQ,EACR,KAAK,EACL,KAAK,EACL,IAAI,EACJ,EAAE,GAAG,UAAU,EAAiB,CAChC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;QAC3B,CAAC,CAAC,gBAAgB,GAAG,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;KACvD;IACD,MAAM,WAAW,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,YAAY,CAAC;IAM5C,MAAM,cAAc,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,IAAA,4BAAmB,EAClB,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,SAAS,CACT,CAAC;AACH,CAAC,CAAC;AAGK,MAAM,4BAA4B,GAAG,CAC3C,WAA0B,EAC1B,YAA6B,EAC7B,aAA4B,EAC5B,cAA+B,EAC/B,SAAwB,EACjB,EAAE;;IACT,MAAM,GAAG,GAAG,MAAA,YAAY,CAAC,UAAU,0CAAE,sBAAsB,CAAC;IAC5D,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAA,EAAE;QACjB,OAAO;KACP;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;IACpC,MAAM,SAAS,GAA0E,EAAE,CAAC;IAE5F,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE;QACxB,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAChC,MAAM,OAAO,GAAG,MAAA,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,eAAe,CAAC,mCAAI,IAAI,CAAC;QACtF,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE;YAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,IAAA,uBAAe,EAAC,CAAC,EAAE,YAAY,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CACtF,CAAC;YACF,MAAM,OAAO,GAAG,IAAA,kDAA2B,EAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpG,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA,IAAI,UAAU,CAAC,MAAM,EAAE;gBAC7C,MAAM;aACN;YACD,4BAA4B,CAC3B,OAAO,EACP,UAAU,EACV,KAAK,CAAC,UAAU,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,SAAS,CACT,CAAC;YACF,SAAS,EAAE,CAAC;SACZ;QACD,IAAI,SAAS,GAAG,CAAC,EAAE;YAClB,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;SACpG;KACD;IACD,YAAY,CAAC,UAAU,CAAC,sBAAsB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3F,CAAC,CAAC;AA3CW,QAAA,4BAA4B,gCA2CvC;AAEW,QAAA,eAAe,GAAsB;IACjD,OAAO,EAAE,0BAAsE;IAC/E,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QAIvD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAGjF,MAAM,UAAU,GACf,KAAK,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC;YAC7B,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QAC5F,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,sBAAsB,GAAG;YACtD,GAAG,CAAC,MAAA,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,sBAAsB,mCAAI,EAAE,CAAC;YAC/D,EAAE,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE;SACxE,CAAC;QACF,OAAO;YACN,YAAY,EAAE,IAAI;YAClB,8BAA8B,EAAE,CAAC,UAAU;SAC3C,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Diremuck Forager (Tier 4, 5/6)\r\n * Start of Combat: When you have space, summon the highest-Attack minion from your hand for this combat only.\r\n *\r\n * Golden Diremuck Forager (Tier 4, 10/12)\r\n * Start of Combat: When you have space, summon the two highest-Attack minions from your hand for this combat only.\r\n */\r\nimport { Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getHighestAttackHandMinions, isHandMinionCandidate } from '../../../services/hand-minion-priority';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { FullGameState } from '../../../simulation/internal-game-state';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nconst handMinionPredicate = (allCards: FullGameState['allCards']) => (e: BoardEntity) =>\r\n\t!!e.maxHealth && isHandMinionCandidate(e, (id) => allCards.getCard(id).type?.toUpperCase());\r\n\r\n/** If the Forager died after SOC, pass `null` — summons still resolve (spawn source = hero, index from right = 0). */\r\nconst summonHandMinionFromDiremuck = (\r\n\tforager: BoardEntity | null,\r\n\thandTarget: BoardEntity,\r\n\tspawnRight: boolean,\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\thandTarget.locked = true;\r\n\tconst friendly = forager?.friendly ?? playerEntity.friendly;\r\n\tconst newMinions = spawnEntities(\r\n\t\thandTarget.cardId,\r\n\t\t1,\r\n\t\tplayerBoard,\r\n\t\tplayerEntity,\r\n\t\topponentBoard,\r\n\t\topponentEntity,\r\n\t\tgameState,\r\n\t\tfriendly,\r\n\t\tfalse,\r\n\t\tfalse,\r\n\t\ttrue,\r\n\t\t{ ...handTarget } as BoardEntity,\r\n\t);\r\n\tfor (const s of newMinions) {\r\n\t\ts.onCanceledSummon = () => (handTarget.locked = false);\r\n\t}\r\n\tconst spawnSource = forager ?? playerEntity;\r\n\t// Current theory:\r\n\t// - spawns next to the Forager, if the board isn't full at start of combat\r\n\t// https://replays.firestoneapp.com/?reviewId=1d34f5b4-7e04-4b17-bcc0-353698abaed3&turn=25&action=1\r\n\t// - spawns to the right, if the board is full at start of combat\r\n\t// https://replays.firestoneapp.com/?reviewId=b498d69f-bf1b-4bc0-8902-3643434394d5&turn=23&action=3\r\n\tconst indexFromRight = !spawnRight ? playerBoard.length - (playerBoard.indexOf(forager) + 1) : 0;\r\n\tperformEntitySpawns(\r\n\t\tnewMinions,\r\n\t\tplayerBoard,\r\n\t\tplayerEntity,\r\n\t\tspawnSource,\r\n\t\tindexFromRight,\r\n\t\topponentBoard,\r\n\t\topponentEntity,\r\n\t\tgameState,\r\n\t);\r\n};\r\n\r\n/** Called from `summon-when-space` when board space opens during start-of-combat. */\r\nexport const handleDiremuckPendingSummons = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tconst raw = playerEntity.globalInfo?.DiremuckPendingSummons;\r\n\tif (!raw?.length) {\r\n\t\treturn;\r\n\t}\r\n\tconst allCards = gameState.allCards;\r\n\tconst nextQueue: { foragerEntityId: number; remaining: number; spawnRight: boolean }[] = [];\r\n\r\n\tfor (const entry of raw) {\r\n\t\tlet remaining = entry.remaining;\r\n\t\tconst forager = playerBoard.find((e) => e.entityId === entry.foragerEntityId) ?? null;\r\n\t\twhile (playerBoard.length < 7 && remaining > 0) {\r\n\t\t\tconst candidates = playerEntity.hand.filter((e) =>\r\n\t\t\t\thasCorrectTribe(e, playerEntity, Race.MURLOC, gameState.anomalies, gameState.allCards),\r\n\t\t\t);\r\n\t\t\tconst targets = getHighestAttackHandMinions(candidates, 1, (e) => handMinionPredicate(allCards)(e));\r\n\t\t\tconst handTarget = targets[0];\r\n\t\t\tif (!handTarget?.cardId || handTarget.locked) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tsummonHandMinionFromDiremuck(\r\n\t\t\t\tforager,\r\n\t\t\t\thandTarget,\r\n\t\t\t\tentry.spawnRight,\r\n\t\t\t\tplayerBoard,\r\n\t\t\t\tplayerEntity,\r\n\t\t\t\topponentBoard,\r\n\t\t\t\topponentEntity,\r\n\t\t\t\tgameState,\r\n\t\t\t);\r\n\t\t\tremaining--;\r\n\t\t}\r\n\t\tif (remaining > 0) {\r\n\t\t\tnextQueue.push({ foragerEntityId: entry.foragerEntityId, remaining, spawnRight: entry.spawnRight });\r\n\t\t}\r\n\t}\r\n\tplayerEntity.globalInfo.DiremuckPendingSummons = nextQueue.length ? nextQueue : undefined;\r\n};\r\n\r\nexport const DiremuckForager: StartOfCombatCard = {\r\n\tcardIds: [CardIds.DiremuckForager_BG27_556, CardIds.DiremuckForager_BG27_556_G],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\t// Don't clear the info, as multiple Diremuck Foragers can be on the board at the same time,\r\n\t\t// and they stack\r\n\t\t// input.playerEntity.globalInfo.DiremuckPendingSummons = undefined;\r\n\t\tconst totalWanted = minion.cardId === CardIds.DiremuckForager_BG27_556_G ? 2 : 1;\r\n\t\t// Not sure this is the right rule, but so far it looks like that if it can't spawn during start of combat,\r\n\t\t// then it will spawn to the right side of the board\r\n\t\tconst spawnRight =\r\n\t\t\tinput.playerBoard.length >= 7 ||\r\n\t\t\tinput.playerEntity.hand.filter(handMinionPredicate(input.gameState.allCards)).length === 0;\r\n\t\tinput.playerEntity.globalInfo.DiremuckPendingSummons = [\r\n\t\t\t...(input.playerEntity.globalInfo.DiremuckPendingSummons ?? []),\r\n\t\t\t{ foragerEntityId: minion.entityId, remaining: totalWanted, spawnRight },\r\n\t\t];\r\n\t\treturn {\r\n\t\t\thasTriggered: true,\r\n\t\t\tshouldRecomputeCurrentAttacker: !spawnRight,\r\n\t\t};\r\n\t},\r\n};\r\n"]}
|
|
@@ -4,7 +4,7 @@ exports.DrustfallenButcher = void 0;
|
|
|
4
4
|
const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
|
|
5
5
|
exports.DrustfallenButcher = {
|
|
6
6
|
cardIds: ["BG32_324", "BG32_324_G"],
|
|
7
|
-
baseAvengeValue: (cardId) =>
|
|
7
|
+
baseAvengeValue: (cardId) => 3,
|
|
8
8
|
avenge: (minion, input) => {
|
|
9
9
|
const mult = minion.cardId === "BG32_324_G" ? 2 : 1;
|
|
10
10
|
const cardsToAdd = Array(mult).fill("BG28_604");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drustfallen-butcher.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/drustfallen-butcher.ts"],"names":[],"mappings":";;;AAUA,qEAAmE;AAGtD,QAAA,kBAAkB,GAAe;IAC7C,OAAO,EAAE,0BAA4E;IACrF,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,YAA6B,CAAC;QACjE,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Drustfallen Butcher\r\n * Avenge (4): Get a Butchering.\r\n *\r\n * Golden Drustfallen Butcher\r\n * Avenge (4): Get 2 Butcherings.\r\n */\r\nimport { 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 DrustfallenButcher: AvengeCard = {\r\n\tcardIds: [CardIds.DrustfallenButcher_BG32_324, CardIds.DrustfallenButcher_BG32_324_G],\r\n\tbaseAvengeValue: (cardId: string) =>
|
|
1
|
+
{"version":3,"file":"drustfallen-butcher.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/drustfallen-butcher.ts"],"names":[],"mappings":";;;AAUA,qEAAmE;AAGtD,QAAA,kBAAkB,GAAe;IAC7C,OAAO,EAAE,0BAA4E;IACrF,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,YAA6B,CAAC;QACjE,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Drustfallen Butcher\r\n * Avenge (4): Get a Butchering.\r\n *\r\n * Golden Drustfallen Butcher\r\n * Avenge (4): Get 2 Butcherings.\r\n */\r\nimport { 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 DrustfallenButcher: AvengeCard = {\r\n\tcardIds: [CardIds.DrustfallenButcher_BG32_324, CardIds.DrustfallenButcher_BG32_324_G],\r\n\tbaseAvengeValue: (cardId: string) => 3,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.DrustfallenButcher_BG32_324_G ? 2 : 1;\r\n\t\tconst cardsToAdd = Array(mult).fill(CardIds.Butchering_BG28_604);\r\n\t\taddCardsInHand(input.hero, input.board, cardsToAdd, input.gameState);\r\n\t},\r\n};\r\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EredarEscapist = void 0;
|
|
4
|
-
const
|
|
5
|
-
const damageThreshold =
|
|
4
|
+
const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
|
|
5
|
+
const damageThreshold = 4;
|
|
6
6
|
exports.EredarEscapist = {
|
|
7
7
|
cardIds: ["BG36_733", "BG36_733_G"],
|
|
8
8
|
afterHeroDamaged: (minion, input) => {
|
|
@@ -11,26 +11,10 @@ exports.EredarEscapist = {
|
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
13
13
|
minion.scriptDataNum1 = ((_a = minion.scriptDataNum1) !== null && _a !== void 0 ? _a : damageThreshold) - input.damage;
|
|
14
|
-
const
|
|
15
|
-
const otherHero = input.gameState.gameState.player.player === input.hero
|
|
16
|
-
? input.gameState.gameState.opponent.player
|
|
17
|
-
: input.gameState.gameState.player.player;
|
|
18
|
-
const otherBoard = input.gameState.gameState.player.player === input.hero
|
|
19
|
-
? input.gameState.gameState.opponent.board
|
|
20
|
-
: input.gameState.gameState.player.board;
|
|
14
|
+
const mult = minion.cardId === "BG36_733_G" ? 2 : 1;
|
|
21
15
|
while (minion.scriptDataNum1 <= 0) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
spellCardId: "BG28_168",
|
|
25
|
-
source: input.hero,
|
|
26
|
-
target: null,
|
|
27
|
-
board: input.board,
|
|
28
|
-
hero: input.hero,
|
|
29
|
-
otherBoard: otherBoard,
|
|
30
|
-
otherHero: otherHero,
|
|
31
|
-
gameState: input.gameState,
|
|
32
|
-
});
|
|
33
|
-
}
|
|
16
|
+
const cardsToAdd = Array.from({ length: mult }, () => "BG28_607");
|
|
17
|
+
(0, cards_in_hand_1.addCardsInHand)(input.hero, input.board, cardsToAdd, input.gameState);
|
|
34
18
|
minion.scriptDataNum1 += damageThreshold;
|
|
35
19
|
}
|
|
36
20
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eredar-escapist.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/eredar-escapist.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"eredar-escapist.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/eredar-escapist.ts"],"names":[],"mappings":";;;AAWA,qEAAmE;AAInE,MAAM,eAAe,GAAG,CAAC,CAAC;AAEb,QAAA,cAAc,GAAyB;IACnD,OAAO,EAAE,0BAAoE;IAC7E,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAA4B,EAAE,EAAE;;QACvE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YACtB,OAAO;SACP;QAED,MAAM,CAAC,cAAc,GAAG,CAAC,MAAA,MAAM,CAAC,cAAc,mCAAI,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QAClF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,cAAc,IAAI,CAAC,EAAE;YAClC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,WAAmC,CAAC,CAAC;YAC1F,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACrE,MAAM,CAAC,cAAc,IAAI,eAAe,CAAC;SACzC;IACF,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Eredar Escapist (Tier 6, 6/6)\r\n * After your hero takes 3 damage, cast Shiny Ring.\r\n *\r\n * Golden Eredar Escapist (Tier 6, 12/12)\r\n * After your hero takes 3 damage, cast Shiny Ring twice.\r\n *\r\n * Remaining damage lives on `scriptDataNum1` (default 3).\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { AfterHeroDamagedInput } from '../../../simulation/damage-to-hero';\r\nimport { AfterHeroDamagedCard } from '../../card.interface';\r\n\r\nconst damageThreshold = 4;\r\n\r\nexport const EredarEscapist: AfterHeroDamagedCard = {\r\n\tcardIds: [CardIds.EredarEscapist_BG36_733, CardIds.EredarEscapist_BG36_733_G],\r\n\tafterHeroDamaged: (minion: BoardEntity, input: AfterHeroDamagedInput) => {\r\n\t\tif (input.damage <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tminion.scriptDataNum1 = (minion.scriptDataNum1 ?? damageThreshold) - input.damage;\r\n\t\tconst mult = minion.cardId === CardIds.EredarEscapist_BG36_733_G ? 2 : 1;\r\n\t\twhile (minion.scriptDataNum1 <= 0) {\r\n\t\t\tconst cardsToAdd = Array.from({ length: mult }, () => CardIds.CorruptedCupcakes_BG28_607);\r\n\t\t\taddCardsInHand(input.hero, input.board, cardsToAdd, input.gameState);\r\n\t\t\tminion.scriptDataNum1 += damageThreshold;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -29,7 +29,7 @@ exports.ExpertAviator = {
|
|
|
29
29
|
for (const s of spawns) {
|
|
30
30
|
s.onCanceledSummon = () => (target.locked = false);
|
|
31
31
|
}
|
|
32
|
-
(0, spawns_1.performEntitySpawns)(spawns, spawnInput.boardWithDeadEntity, spawnInput.boardWithDeadEntityHero, minion, input.attackingBoard.length - input.attackingBoard.indexOf(minion) - 1, spawnInput.otherBoard, spawnInput.otherBoardHero, input.gameState);
|
|
32
|
+
(0, spawns_1.performEntitySpawns)(spawns, spawnInput.boardWithDeadEntity, spawnInput.boardWithDeadEntityHero, minion, input.attackingBoard.length - input.attackingBoard.indexOf(minion) - 1, spawnInput.otherBoard, spawnInput.otherBoardHero, input.gameState, false);
|
|
33
33
|
}
|
|
34
34
|
return {
|
|
35
35
|
dmgDoneByAttacker: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expert-aviator.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/expert-aviator.ts"],"names":[],"mappings":";;;AASA,iFAA4G;AAE5G,+EAAiF;AAEjF,uDAAiE;AACjE,0CAA4C;AAG/B,QAAA,aAAa,GAAc;IACvC,OAAO,EAAE,0BAAkE;IAC3E,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAA4D,EAAE;QAC9G,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAA,kDAA2B,EAC1C,KAAK,CAAC,aAAa,CAAC,IAAI,EACxB,IAAI,EACJ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,IAAA,4CAAqB,EAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,CAAA,EAAA,CAAC,CAClG,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAI,MAAM,CAAC,MAAM,EAAE;gBAClB,SAAS;aACT;YACD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;YACjC,MAAM,UAAU,GAA8B;gBAC7C,mBAAmB,EAAE,KAAK,CAAC,cAAc;gBACzC,uBAAuB,EAAE,KAAK,CAAC,aAAa;gBAC5C,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,MAAM;gBAClB,UAAU,EAAE,KAAK,CAAC,cAAc;gBAChC,cAAc,EAAE,KAAK,CAAC,aAAa;aACnC,CAAC;YACF,MAAM,MAAM,GAAG,IAAA,4CAAuB,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YAC3E,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;gBACvB,CAAC,CAAC,gBAAgB,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;aACnD;YAID,IAAA,4BAAmB,EAClB,MAAM,EACN,UAAU,CAAC,mBAAmB,EAC9B,UAAU,CAAC,uBAAuB,EAClC,MAAM,EACN,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EACtE,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,cAAc,EACzB,KAAK,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"expert-aviator.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/expert-aviator.ts"],"names":[],"mappings":";;;AASA,iFAA4G;AAE5G,+EAAiF;AAEjF,uDAAiE;AACjE,0CAA4C;AAG/B,QAAA,aAAa,GAAc;IACvC,OAAO,EAAE,0BAAkE;IAC3E,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAA4D,EAAE;QAC9G,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAA,kDAA2B,EAC1C,KAAK,CAAC,aAAa,CAAC,IAAI,EACxB,IAAI,EACJ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,IAAA,4CAAqB,EAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,CAAA,EAAA,CAAC,CAClG,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAI,MAAM,CAAC,MAAM,EAAE;gBAClB,SAAS;aACT;YACD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;YACjC,MAAM,UAAU,GAA8B;gBAC7C,mBAAmB,EAAE,KAAK,CAAC,cAAc;gBACzC,uBAAuB,EAAE,KAAK,CAAC,aAAa;gBAC5C,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,MAAM;gBAClB,UAAU,EAAE,KAAK,CAAC,cAAc;gBAChC,cAAc,EAAE,KAAK,CAAC,aAAa;aACnC,CAAC;YACF,MAAM,MAAM,GAAG,IAAA,4CAAuB,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YAC3E,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;gBACvB,CAAC,CAAC,gBAAgB,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;aACnD;YAID,IAAA,4BAAmB,EAClB,MAAM,EACN,UAAU,CAAC,mBAAmB,EAC9B,UAAU,CAAC,uBAAuB,EAClC,MAAM,EACN,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EACtE,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,cAAc,EACzB,KAAK,CAAC,SAAS,EACf,KAAK,CACL,CAAC;SACF;QACD,OAAO;YACN,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EAAE,CAAC;SACpB,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Expert Aviator (Tier 2, 3/4)\r\n * Rally: Summon the highest-Attack minion from your hand for this combat only.\r\n *\r\n * Golden Expert Aviator (Tier 2, 6/8)\r\n * Rally: Summon the two highest-Attack minions from your hand for this combat only.\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getHighestAttackHandMinions, isHandMinionCandidate } from '../../../services/hand-minion-priority';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { copyEntity } from '../../../utils';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\nexport const ExpertAviator: RallyCard = {\r\n\tcardIds: [CardIds.ExpertAviator_BG34_140, CardIds.ExpertAviator_BG34_140_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tconst mult = minion.cardId === CardIds.ExpertAviator_BG34_140_G ? 2 : 1;\r\n\t\tconst allCards = input.gameState.allCards;\r\n\t\tconst targets = getHighestAttackHandMinions(\r\n\t\t\tinput.attackingHero.hand,\r\n\t\t\tmult,\r\n\t\t\t(e) => !!e.maxHealth && isHandMinionCandidate(e, (id) => allCards.getCard(id).type?.toUpperCase()),\r\n\t\t);\r\n\t\tfor (const target of targets) {\r\n\t\t\tif (target.locked) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\ttarget.locked = true;\r\n\t\t\tconst clone = copyEntity(target);\r\n\t\t\tconst spawnInput: DeathrattleTriggeredInput = {\r\n\t\t\t\tboardWithDeadEntity: input.attackingBoard,\r\n\t\t\t\tboardWithDeadEntityHero: input.attackingHero,\r\n\t\t\t\tgameState: input.gameState,\r\n\t\t\t\tdeadEntity: minion,\r\n\t\t\t\totherBoard: input.defendingBoard,\r\n\t\t\t\totherBoardHero: input.defendingHero,\r\n\t\t\t};\r\n\t\t\tconst spawns = simplifiedSpawnEntities(clone.cardId, 1, spawnInput, clone);\r\n\t\t\tfor (const s of spawns) {\r\n\t\t\t\ts.onCanceledSummon = () => (target.locked = false);\r\n\t\t\t}\r\n\t\t\t// Here we need to apply the auras from the board, but not re-apply the auras that are inherent to the minion itself\r\n\t\t\t// (like Automaton)\r\n\t\t\t// I think I should rework the aura, see TODO.md\r\n\t\t\tperformEntitySpawns(\r\n\t\t\t\tspawns,\r\n\t\t\t\tspawnInput.boardWithDeadEntity,\r\n\t\t\t\tspawnInput.boardWithDeadEntityHero,\r\n\t\t\t\tminion,\r\n\t\t\t\tinput.attackingBoard.length - input.attackingBoard.indexOf(minion) - 1,\r\n\t\t\t\tspawnInput.otherBoard,\r\n\t\t\t\tspawnInput.otherBoardHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t\tfalse,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tdmgDoneByAttacker: 0,\r\n\t\t\tdmgDoneByDefender: 0,\r\n\t\t};\r\n\t},\r\n};\r\n"]}
|
|
@@ -21,7 +21,7 @@ exports.FireForgedEvoker = {
|
|
|
21
21
|
if (value.type === 'TavernSpellsCastThisGame') {
|
|
22
22
|
const delta = value.newValue - value.oldValue;
|
|
23
23
|
entity.scriptDataNum1 += mult * delta * 2;
|
|
24
|
-
entity.scriptDataNum2 += mult * delta *
|
|
24
|
+
entity.scriptDataNum2 += mult * delta * 2;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fire-forged-evoker.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/fire-forged-evoker.ts"],"names":[],"mappings":";;;AAQA,iEAAoD;AAKpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,gBAAgB,GAAgD;IAC5E,OAAO,EAAE,0BAAwE;IACjF,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QAOvD,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;QACrC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAClD,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CACxG,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE;YACjC,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACjG;QACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;IACD,mBAAmB,EAAE,CAAC,MAAmB,EAAE,KAA+B,EAAE,EAAE;QAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;YACjC,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE;gBAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC9C,MAAM,CAAC,cAAc,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;gBAC1C,MAAM,CAAC,cAAc,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;aAC1C;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Fire-forged Evoker (Tier 6, 8/5)\r\n * Start of Combat: Give your Dragons +1/+1. Improves permanently after you cast a Tavern spell.\r\n * (Spells during combat should count — see REVIEW_QUEUE_BG_35_2.md if any spell path skips SpellsCastThisGame.)\r\n *\r\n * Golden Fire-forged Evoker (Tier 6, 16/10)\r\n * Start of Combat: Give your Dragons +2/+2. Improves permanently after you cast a Tavern spell.\r\n */\r\nimport { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnGlobalInfoUpdatedInput } from '../../../mechanics/player-global-effects';\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 { hasCorrectTribe } from '../../../utils';\r\nimport { OnGlobalInfoUpdatedCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const FireForgedEvoker: StartOfCombatCard & OnGlobalInfoUpdatedCard = {\r\n\tcardIds: [CardIds.FireForgedEvoker_BG32_822, CardIds.FireForgedEvoker_BG32_822_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\t// We want to use the global info, because otherwise if another Start of Combat effect casts a spell\r\n\t\t// (like Runic Arcanist), we will miss it\r\n\t\t// const mult = minion.cardId === CardIds.FireForgedEvoker_BG32_822_G ? 2 : 1;\r\n\t\t// const spells = input.playerEntity.globalInfo.TavernSpellsCastThisGame ?? 0;\r\n\t\t// UPDATE: this doesn't work, as the buff can be a mix of several values from non-golden Fire-forged Evoker\r\n\t\t// if it is golden. So we need to use the scriptDataNum1/2 instead and update it when a tavern spell is cast\r\n\t\tconst atk = minion.scriptDataNum1;\r\n\t\tconst health = minion.scriptDataNum2;\r\n\t\tconst targetBoard = input.playerBoard.filter((e) =>\r\n\t\t\thasCorrectTribe(e, input.playerEntity, Race.DRAGON, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t);\r\n\t\tfor (const target of targetBoard) {\r\n\t\t\tmodifyStats(target, minion, atk, health, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t}\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: false };\r\n\t},\r\n\tonGlobalInfoUpdated: (entity: BoardEntity, input: OnGlobalInfoUpdatedInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.FireForgedEvoker_BG32_822_G ? 2 : 1;\r\n\t\tfor (const value of input.values) {\r\n\t\t\tif (value.type === 'TavernSpellsCastThisGame') {\r\n\t\t\t\tconst delta = value.newValue - value.oldValue;\r\n\t\t\t\tentity.scriptDataNum1 += mult * delta * 2;\r\n\t\t\t\tentity.scriptDataNum2 += mult * delta *
|
|
1
|
+
{"version":3,"file":"fire-forged-evoker.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/fire-forged-evoker.ts"],"names":[],"mappings":";;;AAQA,iEAAoD;AAKpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,gBAAgB,GAAgD;IAC5E,OAAO,EAAE,0BAAwE;IACjF,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QAOvD,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;QACrC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAClD,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CACxG,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE;YACjC,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACjG;QACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;IACD,mBAAmB,EAAE,CAAC,MAAmB,EAAE,KAA+B,EAAE,EAAE;QAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;YACjC,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE;gBAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC9C,MAAM,CAAC,cAAc,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;gBAC1C,MAAM,CAAC,cAAc,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;aAC1C;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Fire-forged Evoker (Tier 6, 8/5)\r\n * Start of Combat: Give your Dragons +1/+1. Improves permanently after you cast a Tavern spell.\r\n * (Spells during combat should count — see REVIEW_QUEUE_BG_35_2.md if any spell path skips SpellsCastThisGame.)\r\n *\r\n * Golden Fire-forged Evoker (Tier 6, 16/10)\r\n * Start of Combat: Give your Dragons +2/+2. Improves permanently after you cast a Tavern spell.\r\n */\r\nimport { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnGlobalInfoUpdatedInput } from '../../../mechanics/player-global-effects';\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 { hasCorrectTribe } from '../../../utils';\r\nimport { OnGlobalInfoUpdatedCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const FireForgedEvoker: StartOfCombatCard & OnGlobalInfoUpdatedCard = {\r\n\tcardIds: [CardIds.FireForgedEvoker_BG32_822, CardIds.FireForgedEvoker_BG32_822_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\t// We want to use the global info, because otherwise if another Start of Combat effect casts a spell\r\n\t\t// (like Runic Arcanist), we will miss it\r\n\t\t// const mult = minion.cardId === CardIds.FireForgedEvoker_BG32_822_G ? 2 : 1;\r\n\t\t// const spells = input.playerEntity.globalInfo.TavernSpellsCastThisGame ?? 0;\r\n\t\t// UPDATE: this doesn't work, as the buff can be a mix of several values from non-golden Fire-forged Evoker\r\n\t\t// if it is golden. So we need to use the scriptDataNum1/2 instead and update it when a tavern spell is cast\r\n\t\tconst atk = minion.scriptDataNum1;\r\n\t\tconst health = minion.scriptDataNum2;\r\n\t\tconst targetBoard = input.playerBoard.filter((e) =>\r\n\t\t\thasCorrectTribe(e, input.playerEntity, Race.DRAGON, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t);\r\n\t\tfor (const target of targetBoard) {\r\n\t\t\tmodifyStats(target, minion, atk, health, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t}\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: false };\r\n\t},\r\n\tonGlobalInfoUpdated: (entity: BoardEntity, input: OnGlobalInfoUpdatedInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.FireForgedEvoker_BG32_822_G ? 2 : 1;\r\n\t\tfor (const value of input.values) {\r\n\t\t\tif (value.type === 'TavernSpellsCastThisGame') {\r\n\t\t\t\tconst delta = value.newValue - value.oldValue;\r\n\t\t\t\tentity.scriptDataNum1 += mult * delta * 2;\r\n\t\t\t\tentity.scriptDataNum2 += mult * delta * 2;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -9,7 +9,7 @@ exports.ForsakenWeaver = {
|
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
const mult = entity.cardId === "BG34_692_G" ? 2 : 1;
|
|
12
|
-
(0, global_info_helpers_1.increaseUndeadAttackBonus)(input.hero, input.board, input.hero,
|
|
12
|
+
(0, global_info_helpers_1.increaseUndeadAttackBonus)(input.hero, input.board, input.hero, 3 * mult, input.gameState);
|
|
13
13
|
},
|
|
14
14
|
};
|
|
15
15
|
//# sourceMappingURL=forsaken-weaver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forsaken-weaver.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/forsaken-weaver.ts"],"names":[],"mappings":";;;AAUA,iFAAoF;AAGvE,QAAA,cAAc,GAA6B;IACvD,OAAO,EAAE,0BAAoE;IAC7E,oBAAoB,EAAE,CAAC,MAAkC,EAAE,KAAqB,EAAE,EAAE;QACnF,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE;YAChC,OAAO;SACP;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAA,+CAAyB,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3F,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Forsaken Weaver (Tier 6, 3/8)\r\n * After you cast a Tavern spell, your Undead have +1 Attack this game (wherever they are).\r\n *\r\n * Golden Forsaken Weaver (Tier 6, 6/16)\r\n * After you cast a Tavern spell, your Undead have +2 Attack this game (wherever they are).\r\n */\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { increaseUndeadAttackBonus } from '../../../simulation/global-info-helpers';\r\nimport { AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nexport const ForsakenWeaver: AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.ForsakenWeaver_BG34_692, CardIds.ForsakenWeaver_BG34_692_G],\r\n\tafterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = entity.cardId === CardIds.ForsakenWeaver_BG34_692_G ? 2 : 1;\r\n\t\tincreaseUndeadAttackBonus(input.hero, input.board, input.hero,
|
|
1
|
+
{"version":3,"file":"forsaken-weaver.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/forsaken-weaver.ts"],"names":[],"mappings":";;;AAUA,iFAAoF;AAGvE,QAAA,cAAc,GAA6B;IACvD,OAAO,EAAE,0BAAoE;IAC7E,oBAAoB,EAAE,CAAC,MAAkC,EAAE,KAAqB,EAAE,EAAE;QACnF,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE;YAChC,OAAO;SACP;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAA,+CAAyB,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3F,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Forsaken Weaver (Tier 6, 3/8)\r\n * After you cast a Tavern spell, your Undead have +1 Attack this game (wherever they are).\r\n *\r\n * Golden Forsaken Weaver (Tier 6, 6/16)\r\n * After you cast a Tavern spell, your Undead have +2 Attack this game (wherever they are).\r\n */\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { increaseUndeadAttackBonus } from '../../../simulation/global-info-helpers';\r\nimport { AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nexport const ForsakenWeaver: AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.ForsakenWeaver_BG34_692, CardIds.ForsakenWeaver_BG34_692_G],\r\n\tafterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = entity.cardId === CardIds.ForsakenWeaver_BG34_692_G ? 2 : 1;\r\n\t\tincreaseUndeadAttackBonus(input.hero, input.board, input.hero, 3 * mult, input.gameState);\r\n\t},\r\n};\r\n"]}
|
|
@@ -6,7 +6,7 @@ exports.GoldrinnTheGreatWolf = {
|
|
|
6
6
|
cardIds: ["BGS_018", "TB_BaconUps_085"],
|
|
7
7
|
deathrattleSpawn: (minion, input) => {
|
|
8
8
|
const mult = minion.cardId === "TB_BaconUps_085" ? 2 : 1;
|
|
9
|
-
const goldrinnBuff =
|
|
9
|
+
const goldrinnBuff = 7 * mult;
|
|
10
10
|
(0, global_info_helpers_1.increaseGoldrinnBuff)(minion, input.boardWithDeadEntity, input.boardWithDeadEntityHero, goldrinnBuff, goldrinnBuff, input.gameState);
|
|
11
11
|
return [];
|
|
12
12
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goldrinn-the-great-wolf.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/goldrinn-the-great-wolf.ts"],"names":[],"mappings":";;;AAGA,iFAA+E;AAGlE,QAAA,oBAAoB,GAAyB;IACzD,OAAO,EAAE,8BAAoF;IAC7F,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,sBAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC;QAC9B,IAAA,0CAAoB,EACnB,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,YAAY,EACZ,YAAY,EACZ,KAAK,CAAC,SAAS,CACf,CAAC;QACF,OAAO,EAAE,CAAC;IACX,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 { increaseGoldrinnBuff } from '../../../simulation/global-info-helpers';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const GoldrinnTheGreatWolf: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.GoldrinnTheGreatWolf_BGS_018, CardIds.GoldrinnTheGreatWolf_TB_BaconUps_085],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.GoldrinnTheGreatWolf_TB_BaconUps_085 ? 2 : 1;\r\n\t\tconst goldrinnBuff =
|
|
1
|
+
{"version":3,"file":"goldrinn-the-great-wolf.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/goldrinn-the-great-wolf.ts"],"names":[],"mappings":";;;AAGA,iFAA+E;AAGlE,QAAA,oBAAoB,GAAyB;IACzD,OAAO,EAAE,8BAAoF;IAC7F,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,sBAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC;QAC9B,IAAA,0CAAoB,EACnB,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,YAAY,EACZ,YAAY,EACZ,KAAK,CAAC,SAAS,CACf,CAAC;QACF,OAAO,EAAE,CAAC;IACX,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 { increaseGoldrinnBuff } from '../../../simulation/global-info-helpers';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const GoldrinnTheGreatWolf: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.GoldrinnTheGreatWolf_BGS_018, CardIds.GoldrinnTheGreatWolf_TB_BaconUps_085],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.GoldrinnTheGreatWolf_TB_BaconUps_085 ? 2 : 1;\r\n\t\tconst goldrinnBuff = 7 * mult;\r\n\t\tincreaseGoldrinnBuff(\r\n\t\t\tminion,\r\n\t\t\tinput.boardWithDeadEntity,\r\n\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\tgoldrinnBuff,\r\n\t\t\tgoldrinnBuff,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
|
|
@@ -18,10 +18,7 @@ exports.JailbirdJuggernaut = {
|
|
|
18
18
|
if (!input.defendingEntity) {
|
|
19
19
|
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
20
20
|
}
|
|
21
|
-
const { attack, health } =
|
|
22
|
-
if (health <= 0) {
|
|
23
|
-
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
24
|
-
}
|
|
21
|
+
const { attack, health } = { attack: input.attacker.maxAttack, health: input.attacker.maxHealth };
|
|
25
22
|
const mult = minion.cardId === "BG36_333_G" ? 2 : 1;
|
|
26
23
|
const spawnInput = {
|
|
27
24
|
boardWithDeadEntity: input.attackingBoard,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jailbird-juggernaut.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/jailbird-juggernaut.ts"],"names":[],"mappings":";;;AAaA,+EAAiF;AAEjF,uDAAiE;AAIjE,MAAM,sBAAsB,GAAa,2BAA6E,CAAC;AAEvH,MAAM,gBAAgB,GAAG,CAAC,MAAmB,EAAsC,EAAE;;IACpF,MAAM,YAAY,GAAG,CAAC,MAAA,MAAM,CAAC,YAAY,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1G,OAAO;QACN,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,iBAAiB,mCAAI,CAAC,CAAA,EAAA,CAAC,CAAC;QACzE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,iBAAiB,mCAAI,CAAC,CAAA,EAAA,CAAC,CAAC;KACzE,CAAC;AACH,CAAC,CAAC;AAEW,QAAA,kBAAkB,GAAc;IAC5C,OAAO,EAAE,0BAA4E;IACrF,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACpD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;YAC3B,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"jailbird-juggernaut.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/jailbird-juggernaut.ts"],"names":[],"mappings":";;;AAaA,+EAAiF;AAEjF,uDAAiE;AAIjE,MAAM,sBAAsB,GAAa,2BAA6E,CAAC;AAEvH,MAAM,gBAAgB,GAAG,CAAC,MAAmB,EAAsC,EAAE;;IACpF,MAAM,YAAY,GAAG,CAAC,MAAA,MAAM,CAAC,YAAY,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1G,OAAO;QACN,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,iBAAiB,mCAAI,CAAC,CAAA,EAAA,CAAC,CAAC;QACzE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,iBAAiB,mCAAI,CAAC,CAAA,EAAA,CAAC,CAAC;KACzE,CAAC;AACH,CAAC,CAAC;AAEW,QAAA,kBAAkB,GAAc;IAC5C,OAAO,EAAE,0BAA4E;IACrF,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACpD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;YAC3B,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAClG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,UAAU,GAA8B;YAC7C,mBAAmB,EAAE,KAAK,CAAC,cAAc;YACzC,uBAAuB,EAAE,KAAK,CAAC,aAAa;YAC5C,UAAU,EAAE,KAAK,CAAC,QAAQ;YAC1B,UAAU,EAAE,KAAK,CAAC,cAAc;YAChC,cAAc,EAAE,KAAK,CAAC,aAAa;YACnC,SAAS,EAAE,KAAK,CAAC,SAAS;SAC1B,CAAC;QACF,MAAM,MAAM,GAAG,IAAA,4CAAuB,yBAErC,CAAC,EACD,UAAU,CACV,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;YAC7B,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;YAChC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;YAC7B,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;YAChC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,4BAAmB,EAClC,MAAM,EACN,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC9E,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,EACf,IAAI,EACJ,KAAK,CAAC,eAAe,CACrB,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Jailbird Juggernaut (Tier 5, 2/7)\r\n * Rally: Summon a Golem with stats equal to this minion's Blood Gems to attack the target first.\r\n *\r\n * Golden Jailbird Juggernaut (Tier 5, 4/14)\r\n * Rally: Summon two Golems with stats equal to this minion's Blood Gems to attack the target first.\r\n *\r\n * The Blood Gem totals are tracked on the Blood Gem enchantments, which hold the accumulated attack\r\n * and health granted to the minion.\r\n */\r\nimport { 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 { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\n// The two enchantments mirror each other, so we take the highest rather than the sum\r\nconst BLOOD_GEM_ENCHANTMENTS: string[] = [CardIds.BloodGem_BloodGemEnchantment, CardIds.BloodGem_BloodGemsEnchantment];\r\n\r\nconst getBloodGemStats = (minion: BoardEntity): { attack: number; health: number } => {\r\n\tconst enchantments = (minion.enchantments ?? []).filter((e) => BLOOD_GEM_ENCHANTMENTS.includes(e.cardId));\r\n\treturn {\r\n\t\tattack: Math.max(0, ...enchantments.map((e) => e.tagScriptDataNum1 ?? 0)),\r\n\t\thealth: Math.max(0, ...enchantments.map((e) => e.tagScriptDataNum2 ?? 0)),\r\n\t};\r\n};\r\n\r\nexport const JailbirdJuggernaut: RallyCard = {\r\n\tcardIds: [CardIds.JailbirdJuggernaut_BG36_333, CardIds.JailbirdJuggernaut_BG36_333_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tif (!input.defendingEntity) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\r\n\t\tconst { attack, health } = { attack: input.attacker.maxAttack, health: input.attacker.maxHealth };\r\n\t\tconst mult = minion.cardId === CardIds.JailbirdJuggernaut_BG36_333_G ? 2 : 1;\r\n\t\tconst spawnInput: DeathrattleTriggeredInput = {\r\n\t\t\tboardWithDeadEntity: input.attackingBoard,\r\n\t\t\tboardWithDeadEntityHero: input.attackingHero,\r\n\t\t\tdeadEntity: input.attacker,\r\n\t\t\totherBoard: input.defendingBoard,\r\n\t\t\totherBoardHero: input.defendingHero,\r\n\t\t\tgameState: input.gameState,\r\n\t\t};\r\n\t\tconst spawns = simplifiedSpawnEntities(\r\n\t\t\tCardIds.BloodGolemSticker_BloodGolemToken_BG30_MagicItem_442t,\r\n\t\t\t1,\r\n\t\t\tspawnInput,\r\n\t\t);\r\n\t\tspawns.forEach((spawn) => {\r\n\t\t\tspawn.attack = attack * mult;\r\n\t\t\tspawn.maxAttack = attack * mult;\r\n\t\t\tspawn.health = health * mult;\r\n\t\t\tspawn.maxHealth = health * mult;\r\n\t\t\tspawn.attackImmediately = true;\r\n\t\t});\r\n\t\tconst spawned = performEntitySpawns(\r\n\t\t\tspawns,\r\n\t\t\tinput.attackingBoard,\r\n\t\t\tinput.attackingHero,\r\n\t\t\tinput.attacker,\r\n\t\t\tinput.attackingBoard.length - input.attackingBoard.indexOf(input.attacker) - 1,\r\n\t\t\tinput.defendingBoard,\r\n\t\t\tinput.defendingHero,\r\n\t\t\tinput.gameState,\r\n\t\t\ttrue,\r\n\t\t\tinput.defendingEntity,\r\n\t\t);\r\n\t\tspawned.forEach((e) => {\r\n\t\t\te.hasAttacked = undefined;\r\n\t\t});\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SanguineChampion = void 0;
|
|
4
|
+
const attackBuff = 2;
|
|
5
|
+
const healthBuff = 1;
|
|
6
|
+
exports.SanguineChampion = {
|
|
7
|
+
cardIds: ["BG23_017", "BG23_017_G"],
|
|
8
|
+
battlecry: (minion, input) => {
|
|
9
|
+
const mult = minion.cardId === "BG23_017_G" ? 2 : 1;
|
|
10
|
+
input.hero.globalInfo.BloodGemAttackBonus += attackBuff * mult;
|
|
11
|
+
input.hero.globalInfo.BloodGemHealthBonus += healthBuff * mult;
|
|
12
|
+
return true;
|
|
13
|
+
},
|
|
14
|
+
deathrattleSpawn: (minion, input) => {
|
|
15
|
+
const mult = minion.cardId === "BG23_017_G" ? 2 : 1;
|
|
16
|
+
input.boardWithDeadEntityHero.globalInfo.BloodGemAttackBonus += attackBuff * mult;
|
|
17
|
+
input.boardWithDeadEntityHero.globalInfo.BloodGemHealthBonus += healthBuff * mult;
|
|
18
|
+
return [];
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=sanguine-champion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanguine-champion.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/sanguine-champion.ts"],"names":[],"mappings":";;;AAMA,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,UAAU,GAAG,CAAC,CAAC;AAER,QAAA,gBAAgB,GAAyC;IACrE,OAAO,EAAE,0BAAwE;IACjF,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,IAAI,UAAU,GAAG,IAAI,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,IAAI,UAAU,GAAG,IAAI,CAAC;QAC/D,OAAO,IAAI,CAAC;IACb,CAAC;IACD,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,mBAAmB,IAAI,UAAU,GAAG,IAAI,CAAC;QAClF,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,mBAAmB,IAAI,UAAU,GAAG,IAAI,CAAC;QAClF,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { BattlecryInput } from '../../../simulation/battlecries';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { BattlecryCard, DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nconst attackBuff = 2;\r\nconst healthBuff = 1;\r\n\r\nexport const SanguineChampion: BattlecryCard & DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.SanguineChampion_BG23_017, CardIds.SanguineChampion_BG23_017_G],\r\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.SanguineChampion_BG23_017_G ? 2 : 1;\r\n\t\tinput.hero.globalInfo.BloodGemAttackBonus += attackBuff * mult;\r\n\t\tinput.hero.globalInfo.BloodGemHealthBonus += healthBuff * mult;\r\n\t\treturn true;\r\n\t},\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.SanguineChampion_BG23_017_G ? 2 : 1;\r\n\t\tinput.boardWithDeadEntityHero.globalInfo.BloodGemAttackBonus += attackBuff * mult;\r\n\t\tinput.boardWithDeadEntityHero.globalInfo.BloodGemHealthBonus += healthBuff * mult;\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
|
|
@@ -6,7 +6,7 @@ exports.SanguineRefiner = {
|
|
|
6
6
|
rally: (minion, input) => {
|
|
7
7
|
const mult = minion.cardId === "BG33_885_G" ? 2 : 1;
|
|
8
8
|
input.attackingHero.globalInfo.BloodGemAttackBonus += 1 * mult;
|
|
9
|
-
input.attackingHero.globalInfo.BloodGemHealthBonus +=
|
|
9
|
+
input.attackingHero.globalInfo.BloodGemHealthBonus += 2 * mult;
|
|
10
10
|
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
11
11
|
},
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanguine-refiner.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/sanguine-refiner.ts"],"names":[],"mappings":";;;AAMa,QAAA,eAAe,GAAc;IACzC,OAAO,EAAE,0BAAsE;IAC/E,KAAK,EAAE,CAAC,MAAqD,EAAE,KAAoB,EAAE,EAAE;QACtF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,mBAAmB,IAAI,CAAC,GAAG,IAAI,CAAC;QAC/D,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,mBAAmB,IAAI,CAAC,GAAG,IAAI,CAAC;QAC/D,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEnchantment, BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\nexport const SanguineRefiner: RallyCard = {\r\n\tcardIds: [CardIds.SanguineRefiner_BG33_885, CardIds.SanguineRefiner_BG33_885_G],\r\n\trally: (minion: BoardEntity | BoardTrinket | BoardEnchantment, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.SanguineRefiner_BG33_885_G ? 2 : 1;\r\n\t\tinput.attackingHero.globalInfo.BloodGemAttackBonus += 1 * mult;\r\n\t\tinput.attackingHero.globalInfo.BloodGemHealthBonus +=
|
|
1
|
+
{"version":3,"file":"sanguine-refiner.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/sanguine-refiner.ts"],"names":[],"mappings":";;;AAMa,QAAA,eAAe,GAAc;IACzC,OAAO,EAAE,0BAAsE;IAC/E,KAAK,EAAE,CAAC,MAAqD,EAAE,KAAoB,EAAE,EAAE;QACtF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,mBAAmB,IAAI,CAAC,GAAG,IAAI,CAAC;QAC/D,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,mBAAmB,IAAI,CAAC,GAAG,IAAI,CAAC;QAC/D,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEnchantment, BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\nexport const SanguineRefiner: RallyCard = {\r\n\tcardIds: [CardIds.SanguineRefiner_BG33_885, CardIds.SanguineRefiner_BG33_885_G],\r\n\trally: (minion: BoardEntity | BoardTrinket | BoardEnchantment, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.SanguineRefiner_BG33_885_G ? 2 : 1;\r\n\t\tinput.attackingHero.globalInfo.BloodGemAttackBonus += 1 * mult;\r\n\t\tinput.attackingHero.globalInfo.BloodGemHealthBonus += 2 * mult;\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { DeathrattleSpawnCard, RebornSelfAttributeTransferCard } from '../../card.interface';
|
|
2
|
-
export declare const ShowyCyclist: DeathrattleSpawnCard & RebornSelfAttributeTransferCard;
|
|
1
|
+
import { DeathrattleSpawnCard, OnGildedCard, RebornSelfAttributeTransferCard } from '../../card.interface';
|
|
2
|
+
export declare const ShowyCyclist: DeathrattleSpawnCard & RebornSelfAttributeTransferCard & OnGildedCard;
|
|
@@ -3,17 +3,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ShowyCyclist = void 0;
|
|
4
4
|
const reference_data_1 = require("@firestone-hs/reference-data");
|
|
5
5
|
const utils_1 = require("../../../utils");
|
|
6
|
+
const baseAttack = 2;
|
|
7
|
+
const baseHealth = 1;
|
|
6
8
|
exports.ShowyCyclist = {
|
|
7
9
|
cardIds: ["BG31_925", "BG31_925_G"],
|
|
8
10
|
rebornSelfAttributeTransfer: ['scriptDataNum2', 'scriptDataNum4'],
|
|
9
11
|
deathrattleSpawn: (minion, input) => {
|
|
10
|
-
const
|
|
11
|
-
const defaultAtk =
|
|
12
|
-
const defaultHp =
|
|
12
|
+
const mult = minion.cardId === "BG31_925_G" ? 2 : 1;
|
|
13
|
+
const defaultAtk = baseAttack * mult;
|
|
14
|
+
const defaultHp = baseHealth * mult;
|
|
13
15
|
const atk = minion.scriptDataNum2 || defaultAtk;
|
|
14
16
|
const hp = minion.scriptDataNum4 || defaultHp;
|
|
15
17
|
(0, utils_1.addStatsToBoard)(minion, input.boardWithDeadEntity, input.boardWithDeadEntityHero, atk, hp, input.gameState, reference_data_1.Race[reference_data_1.Race.NAGA]);
|
|
16
18
|
return [];
|
|
17
19
|
},
|
|
20
|
+
onGilded: (minion, input) => {
|
|
21
|
+
minion.scriptDataNum2 = 2 * (minion.scriptDataNum2 || baseAttack);
|
|
22
|
+
minion.scriptDataNum4 = 2 * (minion.scriptDataNum4 || baseHealth);
|
|
23
|
+
},
|
|
18
24
|
};
|
|
19
25
|
//# sourceMappingURL=showy-cyclist.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showy-cyclist.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/showy-cyclist.ts"],"names":[],"mappings":";;;AAWA,iEAAoD;
|
|
1
|
+
{"version":3,"file":"showy-cyclist.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/showy-cyclist.ts"],"names":[],"mappings":";;;AAWA,iEAAoD;AAKpD,0CAAiD;AAGjD,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,UAAU,GAAG,CAAC,CAAC;AAER,QAAA,YAAY,GAA0E;IAClG,OAAO,EAAE,0BAAgE;IAEzE,2BAA2B,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACjE,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;QACrC,MAAM,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC;QACpC,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,IAAI,UAAU,CAAC;QAChD,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,IAAI,SAAS,CAAC;QAC9C,IAAA,uBAAe,EACd,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,GAAG,EACH,EAAE,EACF,KAAK,CAAC,SAAS,EACf,qBAAI,CAAC,qBAAI,CAAC,IAAI,CAAC,CACf,CAAC;QACF,OAAO,EAAE,CAAC;IACX,CAAC;IACD,QAAQ,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACvD,MAAM,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,UAAU,CAAC,CAAC;QAClE,MAAM,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,UAAU,CAAC,CAAC;IACnE,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Showy Cyclist\r\n * Deathrattle: Give all your Naga +2/+1. (Improved by every 3 spells you've cast this game!)\r\n *\r\n * Golden Showy Cyclist\r\n * Deathrattle: Give all your Naga +4/+2. (Improved by every 3 spells you've cast this game!)\r\n *\r\n * Current buff is usually on `scriptDataNum1` (attack) and `scriptDataNum2` (health).\r\n * If the client still sends a single combined value in `scriptDataNum2`, that is treated as\r\n * attack and health is half of it.\r\n */\r\nimport { 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 { OnGildedInput } from '../../../simulation/utils/golden';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { DeathrattleSpawnCard, OnGildedCard, RebornSelfAttributeTransferCard } from '../../card.interface';\r\n\r\nconst baseAttack = 2;\r\nconst baseHealth = 1;\r\n\r\nexport const ShowyCyclist: DeathrattleSpawnCard & RebornSelfAttributeTransferCard & OnGildedCard = {\r\n\tcardIds: [CardIds.ShowyCyclist_BG31_925, CardIds.ShowyCyclist_BG31_925_G],\r\n\t// https://replays.firestoneapp.com/?reviewId=58840660-bc38-41f3-8aee-9986e145c1aa&turn=23&action=14\r\n\trebornSelfAttributeTransfer: ['scriptDataNum2', 'scriptDataNum4'],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.ShowyCyclist_BG31_925_G ? 2 : 1;\r\n\t\tconst defaultAtk = baseAttack * mult;\r\n\t\tconst defaultHp = baseHealth * mult;\r\n\t\tconst atk = minion.scriptDataNum2 || defaultAtk;\r\n\t\tconst hp = minion.scriptDataNum4 || defaultHp;\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\tatk,\r\n\t\t\thp,\r\n\t\t\tinput.gameState,\r\n\t\t\tRace[Race.NAGA],\r\n\t\t);\r\n\t\treturn [];\r\n\t},\r\n\tonGilded: (minion: BoardEntity, input: OnGildedInput) => {\r\n\t\tminion.scriptDataNum2 = 2 * (minion.scriptDataNum2 || baseAttack);\r\n\t\tminion.scriptDataNum4 = 2 * (minion.scriptDataNum4 || baseHealth);\r\n\t},\r\n};\r\n"]}
|
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SoulRewinder = void 0;
|
|
4
4
|
const stats_1 = require("../../../simulation/stats");
|
|
5
|
+
const healthBuff = 2;
|
|
5
6
|
exports.SoulRewinder = {
|
|
6
7
|
cardIds: ["BG26_174", "BG26_174_G"],
|
|
7
8
|
afterHeroDamaged: (minion, input) => {
|
|
8
9
|
var _a;
|
|
9
10
|
input.hero.hpLeft = input.hero.hpLeft + input.damage;
|
|
10
11
|
const mult = minion.cardId === "BG26_174_G" ? 2 : 1;
|
|
11
|
-
(0, stats_1.modifyStats)(minion, minion, 0,
|
|
12
|
+
(0, stats_1.modifyStats)(minion, minion, 0, healthBuff * mult, input.board, input.hero, input.gameState);
|
|
12
13
|
if ((_a = input.hero.trinkets) === null || _a === void 0 ? void 0 : _a.some((t) => t.cardId === "BG30_MagicItem_868")) {
|
|
13
|
-
(0, stats_1.modifyStats)(minion, minion,
|
|
14
|
+
(0, stats_1.modifyStats)(minion, minion, healthBuff * mult, 0, input.board, input.hero, input.gameState);
|
|
14
15
|
}
|
|
15
16
|
},
|
|
16
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"soul-rewinder.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/soul-rewinder.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;
|
|
1
|
+
{"version":3,"file":"soul-rewinder.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/soul-rewinder.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAGxD,MAAM,UAAU,GAAG,CAAC,CAAC;AAER,QAAA,YAAY,GAAyB;IACjD,OAAO,EAAE,0BAAgE;IACzE,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAA4B,EAAE,EAAE;;QACvE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5F,IAAI,MAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAAgD,CAAC,EAAE;YAC/F,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SAC5F;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AfterHeroDamagedInput } from '../../../simulation/damage-to-hero';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { AfterHeroDamagedCard } from '../../card.interface';\r\n\r\nconst healthBuff = 2;\r\n\r\nexport const SoulRewinder: AfterHeroDamagedCard = {\r\n\tcardIds: [CardIds.SoulRewinder_BG26_174, CardIds.SoulRewinder_BG26_174_G],\r\n\tafterHeroDamaged: (minion: BoardEntity, input: AfterHeroDamagedInput) => {\r\n\t\tinput.hero.hpLeft = input.hero.hpLeft + input.damage;\r\n\t\tconst mult = minion.cardId === CardIds.SoulRewinder_BG26_174_G ? 2 : 1;\r\n\t\tmodifyStats(minion, minion, 0, healthBuff * mult, input.board, input.hero, input.gameState);\r\n\t\tif (input.hero.trinkets?.some((t) => t.cardId === CardIds.RewinderPortrait_BG30_MagicItem_868)) {\r\n\t\t\tmodifyStats(minion, minion, healthBuff * mult, 0, input.board, input.hero, input.gameState);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TastyLobster = void 0;
|
|
3
|
+
exports.TastyLobster = exports.lobsterBaseHealthBuff = exports.lobsterBaseAttackBuff = void 0;
|
|
4
4
|
const reference_data_1 = require("@firestone-hs/reference-data");
|
|
5
5
|
const utils_1 = require("../../../services/utils");
|
|
6
6
|
const stats_1 = require("../../../simulation/stats");
|
|
7
7
|
const utils_2 = require("../../../utils");
|
|
8
8
|
const numberOfTargets = 1;
|
|
9
|
+
exports.lobsterBaseAttackBuff = 2;
|
|
10
|
+
exports.lobsterBaseHealthBuff = 1;
|
|
9
11
|
exports.TastyLobster = {
|
|
10
12
|
cardIds: ["BG36_202", "BG36_202_G"],
|
|
11
13
|
deathrattleEffect: (minion, input) => {
|
|
12
14
|
const base = minion.cardId === "BG36_202_G" ? 2 : 1;
|
|
13
|
-
const atkBuff = base * (1 + input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff);
|
|
14
|
-
const healthBuff = base * (1 + input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff);
|
|
15
|
+
const atkBuff = base * exports.lobsterBaseAttackBuff * (1 + input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff);
|
|
16
|
+
const healthBuff = base * exports.lobsterBaseHealthBuff * (1 + input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff);
|
|
15
17
|
const candidates = input.boardWithDeadEntity.filter((e) => (0, utils_2.hasCorrectTribe)(e, input.boardWithDeadEntityHero, reference_data_1.Race.BEAST, input.gameState.anomalies, input.gameState.allCards));
|
|
16
18
|
const targets = (0, utils_1.pickMultipleRandomAlive)(candidates, numberOfTargets);
|
|
17
19
|
for (const target of targets) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasty-lobster.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/tasty-lobster.ts"],"names":[],"mappings":";;;AAQA,iEAAoD;AAGpD,mDAAkE;AAElE,qDAAwD;AACxD,0CAAiD;AAGjD,MAAM,eAAe,GAAG,CAAC,CAAC;AAEb,QAAA,YAAY,GAA0B;IAClD,OAAO,EAAE,0BAAgE;IACzE,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAGvE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tasty-lobster.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/tasty-lobster.ts"],"names":[],"mappings":";;;AAQA,iEAAoD;AAGpD,mDAAkE;AAElE,qDAAwD;AACxD,0CAAiD;AAGjD,MAAM,eAAe,GAAG,CAAC,CAAC;AAEb,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAC1B,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAE1B,QAAA,YAAY,GAA0B;IAClD,OAAO,EAAE,0BAAgE;IACzE,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAGvE,MAAM,OAAO,GAAG,IAAI,GAAG,6BAAqB,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAChH,MAAM,UAAU,GACf,IAAI,GAAG,6BAAqB,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACjG,MAAM,UAAU,GAAG,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzD,IAAA,uBAAe,EACd,CAAC,EACD,KAAK,CAAC,uBAAuB,EAC7B,qBAAI,CAAC,KAAK,EACV,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACD,CAAC;QACF,MAAM,OAAO,GAAG,IAAA,+BAAuB,EAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACrE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAC7E,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB;YACzD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IACtF,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Tasty Lobster (Tier 3, 1/1)\r\n * Deathrattle: Give a random friendly Beast +1/+1. Improve your future Tasty Lobsters.\r\n *\r\n * Golden Tasty Lobster (Tier 3, 2/2)\r\n * Deathrattle: Give a random friendly Beast +2/+2. Improve your future Tasty Lobsters.\r\n *\r\n */\r\nimport { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickMultipleRandomAlive } from '../../../services/utils';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { DeathrattleEffectCard } from '../../card.interface';\r\n\r\nconst numberOfTargets = 1;\r\n\r\nexport const lobsterBaseAttackBuff = 2;\r\nexport const lobsterBaseHealthBuff = 1;\r\n\r\nexport const TastyLobster: DeathrattleEffectCard = {\r\n\tcardIds: [CardIds.TastyLobster_BG36_202, CardIds.TastyLobster_BG36_202_G],\r\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst base = minion.cardId === CardIds.TastyLobster_BG36_202_G ? 2 : 1;\r\n\t\t// Don't use a fallback to the scriptDataNum1, as it's too cumbersome to manage\r\n\t\t// If for some reason the globalInfo is not set, understand why!\r\n\t\tconst atkBuff = base * lobsterBaseAttackBuff * (1 + input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff);\r\n\t\tconst healthBuff =\r\n\t\t\tbase * lobsterBaseHealthBuff * (1 + input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff);\r\n\t\tconst candidates = input.boardWithDeadEntity.filter((e) =>\r\n\t\t\thasCorrectTribe(\r\n\t\t\t\te,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tRace.BEAST,\r\n\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t),\r\n\t\t);\r\n\t\tconst targets = pickMultipleRandomAlive(candidates, numberOfTargets);\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\tatkBuff,\r\n\t\t\t\thealthBuff,\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\tconst priorBuff = input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff;\r\n\t\tinput.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff =\r\n\t\t\tMath.max(input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff, priorBuff) + 1;\r\n\t},\r\n};\r\n"]}
|
|
@@ -7,7 +7,7 @@ exports.Tichondrius = {
|
|
|
7
7
|
cardIds: ["BG26_523", "BG26_523_G"],
|
|
8
8
|
afterHeroDamaged: (minion, input) => {
|
|
9
9
|
const mult = minion.cardId === "BG26_523_G" ? 2 : 1;
|
|
10
|
-
(0, utils_1.addStatsToBoard)(minion, input.board, input.hero,
|
|
10
|
+
(0, utils_1.addStatsToBoard)(minion, input.board, input.hero, 4 * mult, 4 * mult, input.gameState, reference_data_1.Race[reference_data_1.Race.DEMON]);
|
|
11
11
|
},
|
|
12
12
|
};
|
|
13
13
|
//# sourceMappingURL=tichondrius.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tichondrius.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/tichondrius.ts"],"names":[],"mappings":";;;AAOA,iEAAoD;AAIpD,0CAAiD;AAGpC,QAAA,WAAW,GAAyB;IAChD,OAAO,EAAE,0BAA8D;IACvE,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAA4B,EAAE,EAAE;QACvE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAA,uBAAe,
|
|
1
|
+
{"version":3,"file":"tichondrius.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/tichondrius.ts"],"names":[],"mappings":";;;AAOA,iEAAoD;AAIpD,0CAAiD;AAGpC,QAAA,WAAW,GAAyB;IAChD,OAAO,EAAE,0BAA8D;IACvE,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAA4B,EAAE,EAAE;QACvE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,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,KAAK,CAAC,CAAC,CAAC;IACzG,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Tichondrius (Tier 5, 3/3)\r\n * After your hero takes damage, give your Demons +3/+3.\r\n *\r\n * Golden Tichondrius (Tier 5, 6/6)\r\n * After your hero takes damage, give your Demons +6/+6.\r\n */\r\nimport { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AfterHeroDamagedInput } from '../../../simulation/damage-to-hero';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { AfterHeroDamagedCard } from '../../card.interface';\r\n\r\nexport const Tichondrius: AfterHeroDamagedCard = {\r\n\tcardIds: [CardIds.Tichondrius_BG26_523, CardIds.Tichondrius_BG26_523_G],\r\n\tafterHeroDamaged: (minion: BoardEntity, input: AfterHeroDamagedInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.Tichondrius_BG26_523_G ? 2 : 1;\r\n\t\taddStatsToBoard(minion, input.board, input.hero, 4 * mult, 4 * mult, input.gameState, Race[Race.DEMON]);\r\n\t},\r\n};\r\n"]}
|
|
@@ -10,7 +10,7 @@ exports.UtilityDrone = {
|
|
|
10
10
|
for (const target of input.board) {
|
|
11
11
|
const magnetizations = (0, magnetize_1.getMagnetizations)(target, input.gameState);
|
|
12
12
|
if (magnetizations > 0) {
|
|
13
|
-
(0, stats_1.modifyStats)(target, minion, 4 * magnetizations * mult,
|
|
13
|
+
(0, stats_1.modifyStats)(target, minion, 4 * magnetizations * mult, 5 * magnetizations * mult, input.board, input.hero, input.gameState);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
},
|