@firestone-hs/simulate-bgs-battle 1.1.702 → 1.1.704
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/board-entity.d.ts +1 -0
- package/dist/board-entity.js.map +1 -1
- package/dist/cards/impl/minion/abyssal-bruiser.js +14 -6
- package/dist/cards/impl/minion/abyssal-bruiser.js.map +1 -1
- package/dist/cards/impl/minion/banana-slamma.js +1 -1
- package/dist/cards/impl/minion/banana-slamma.js.map +1 -1
- package/dist/cards/impl/minion/beetle.js +7 -3
- package/dist/cards/impl/minion/beetle.js.map +1 -1
- package/dist/cards/impl/minion/bellowing-tyrant.js +7 -3
- package/dist/cards/impl/minion/bellowing-tyrant.js.map +1 -1
- package/dist/cards/impl/minion/diremuck-forager.js +5 -2
- package/dist/cards/impl/minion/diremuck-forager.js.map +1 -1
- package/dist/cards/impl/minion/falling-sky-golem.js +14 -6
- package/dist/cards/impl/minion/falling-sky-golem.js.map +1 -1
- package/dist/cards/impl/minion/karmic-chameleon.js +2 -0
- package/dist/cards/impl/minion/karmic-chameleon.js.map +1 -1
- package/dist/cards/impl/minion/malorne.js +12 -4
- package/dist/cards/impl/minion/malorne.js.map +1 -1
- package/dist/cards/impl/minion/raptor-elder.js +12 -4
- package/dist/cards/impl/minion/raptor-elder.js.map +1 -1
- package/dist/cards/impl/minion/reckless-cliffdiver.js +6 -2
- package/dist/cards/impl/minion/reckless-cliffdiver.js.map +1 -1
- package/dist/cards/impl/minion/ride-or-die.js +6 -2
- package/dist/cards/impl/minion/ride-or-die.js.map +1 -1
- package/dist/cards/impl/minion/ruthless-queensguard.js +1 -8
- package/dist/cards/impl/minion/ruthless-queensguard.js.map +1 -1
- package/dist/cards/impl/minion/sanlayn-scribe.js +1 -1
- package/dist/cards/impl/minion/sanlayn-scribe.js.map +1 -1
- package/dist/cards/impl/minion/scarlet-survivor.js +11 -7
- package/dist/cards/impl/minion/scarlet-survivor.js.map +1 -1
- package/dist/cards/impl/minion/spellbound-soul.js +12 -4
- package/dist/cards/impl/minion/spellbound-soul.js.map +1 -1
- package/dist/cards/impl/minion/stomping-stegodon-enchantment.js +2 -2
- package/dist/cards/impl/minion/stomping-stegodon-enchantment.js.map +1 -1
- package/dist/cards/impl/minion/stomping-stegodon.js +2 -1
- package/dist/cards/impl/minion/stomping-stegodon.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-chameleon.js +2 -0
- package/dist/cards/impl/minion/timewarped-chameleon.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-magnanimoose.js +5 -2
- package/dist/cards/impl/minion/timewarped-magnanimoose.js.map +1 -1
- package/dist/cards/impl/trinket/slamma-sticker.js +1 -1
- package/dist/cards/impl/trinket/slamma-sticker.js.map +1 -1
- package/dist/simulation/add-minion-to-board.d.ts +10 -2
- package/dist/simulation/add-minion-to-board.js +231 -81
- package/dist/simulation/add-minion-to-board.js.map +1 -1
- package/dist/simulation/after-attack.js +2 -0
- package/dist/simulation/after-attack.js.map +1 -1
- package/dist/simulation/attack.js +2 -0
- package/dist/simulation/attack.js.map +1 -1
- package/dist/simulation/pending-effects.d.ts +4 -0
- package/dist/simulation/pending-effects.js +23 -0
- package/dist/simulation/pending-effects.js.map +1 -0
- package/dist/simulation/remove-minion-from-board.d.ts +1 -1
- package/dist/simulation/remove-minion-from-board.js +5 -3
- package/dist/simulation/remove-minion-from-board.js.map +1 -1
- package/dist/simulation/simulator.js +2 -0
- package/dist/simulation/simulator.js.map +1 -1
- package/dist/simulation/start-of-combat/start-of-combat.js +2 -0
- package/dist/simulation/start-of-combat/start-of-combat.js.map +1 -1
- package/dist/simulation/stats.d.ts +1 -1
- package/dist/simulation/stats.js +3 -3
- package/dist/simulation/stats.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanlayn-scribe.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/sanlayn-scribe.ts"],"names":[],"mappings":";;;AAIA,qDAAwD;AACxD,0CAAsD;AAGzC,QAAA,aAAa,GAAgC;IACzD,OAAO,EAAE,gCAAwE;IACjF,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAmB,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,kBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC;QAC3E,IAAA,mBAAW,
|
|
1
|
+
{"version":3,"file":"sanlayn-scribe.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/sanlayn-scribe.ts"],"names":[],"mappings":";;;AAIA,qDAAwD;AACxD,0CAAsD;AAGzC,QAAA,aAAa,GAAgC;IACzD,OAAO,EAAE,gCAAwE;IACjF,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAmB,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,kBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC;QAC3E,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,EAC3C,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,EAC3C,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,MAAmB,EAAE,KAAmB,EAAE,EAAE;QACrD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,GAAG,CAAC,CAAC;QACxG,KAAK,CAAC,KAAK;aACT,MAAM,CACN,CAAC,MAAM,EAAE,EAAE,CACV,MAAM,CAAC,MAAM,kBAAsC;YACnD,MAAM,CAAC,MAAM,oBAAwC,CACtD;aACA,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACnB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,kBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,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;QAC3F,CAAC,CAAC,CAAC;QAEJ,IAAA,4BAAoB,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5E,IAAI,CAAC,KAAK;iBACR,MAAM,CACN,CAAC,MAAM,EAAE,EAAE,CACV,MAAM,CAAC,MAAM,kBAAsC;gBACnD,MAAM,CAAC,MAAM,oBAAwC,CACtD;iBACA,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACnB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,kBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;gBAC1B,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;gBAC1B,MAAM,CAAC,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC;gBAC7B,MAAM,CAAC,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACJ,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { OnDeathInput } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getTeamInitialStates } from '../../../utils';\r\nimport { OnDeathCard, OnSpawnedCard } from '../../card.interface';\r\n\r\nexport const SanlaynScribe: OnSpawnedCard & OnDeathCard = {\r\n\tcardIds: [CardIds.SanlaynScribe_BGDUO31_208, CardIds.SanlaynScribe_BGDUO31_208_G],\r\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.SanlaynScribe_BGDUO31_208 ? 1 : 2;\r\n\t\tconst statsBonus = mult * input.hero.globalInfo.SanlaynScribesDeadThisGame;\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tinput.applyAttackAuras ? 4 * statsBonus : 0,\r\n\t\t\tinput.applyHealthAuras ? 4 * statsBonus : 0,\r\n\t\t\tinput.board,\r\n\t\t\tinput.hero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t},\r\n\tonDeath: (minion: BoardEntity, input: OnDeathInput) => {\r\n\t\tinput.hero.globalInfo.SanlaynScribesDeadThisGame = input.hero.globalInfo.SanlaynScribesDeadThisGame + 1;\r\n\t\tinput.board\r\n\t\t\t.filter(\r\n\t\t\t\t(entity) =>\r\n\t\t\t\t\tentity.cardId === CardIds.SanlaynScribe_BGDUO31_208 ||\r\n\t\t\t\t\tentity.cardId === CardIds.SanlaynScribe_BGDUO31_208_G,\r\n\t\t\t)\r\n\t\t\t.forEach((entity) => {\r\n\t\t\t\tconst mult = entity.cardId === CardIds.SanlaynScribe_BGDUO31_208 ? 1 : 2;\r\n\t\t\t\tmodifyStats(entity, minion, 4 * mult, 4 * mult, input.board, input.hero, input.gameState);\r\n\t\t\t});\r\n\t\t// Update the initial states to work with sandy\r\n\t\tgetTeamInitialStates(input.gameState.gameState, input.hero).forEach((team) => {\r\n\t\t\tteam.board\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(entity) =>\r\n\t\t\t\t\t\tentity.cardId === CardIds.SanlaynScribe_BGDUO31_208 ||\r\n\t\t\t\t\t\tentity.cardId === CardIds.SanlaynScribe_BGDUO31_208_G,\r\n\t\t\t\t)\r\n\t\t\t\t.forEach((entity) => {\r\n\t\t\t\t\tconst mult = entity.cardId === CardIds.SanlaynScribe_BGDUO31_208 ? 1 : 2;\r\n\t\t\t\t\tentity.attack += 4 * mult;\r\n\t\t\t\t\tentity.health += 4 * mult;\r\n\t\t\t\t\tentity.maxHealth += 4 * mult;\r\n\t\t\t\t\tentity.maxAttack += 4 * mult;\r\n\t\t\t\t});\r\n\t\t});\r\n\t},\r\n};\r\n"]}
|
|
@@ -4,19 +4,23 @@ exports.ScarletSurvivor = void 0;
|
|
|
4
4
|
const divine_shield_1 = require("../../../keywords/divine-shield");
|
|
5
5
|
const THRESHOLD = 6;
|
|
6
6
|
const tryGrantDivineShieldOnce = (minion, board, hero, otherHero, gameState) => {
|
|
7
|
+
var _a;
|
|
7
8
|
if (minion.abiityChargesLeft <= 0 ||
|
|
8
9
|
minion.attack < THRESHOLD ||
|
|
9
10
|
minion.enchantments.some((e) => e.cardId === "BG35_814e")) {
|
|
10
11
|
return;
|
|
11
12
|
}
|
|
12
13
|
minion.abiityChargesLeft = 0;
|
|
13
|
-
(
|
|
14
|
-
minion.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
minion.onResolve = (_a = minion.onResolve) !== null && _a !== void 0 ? _a : [];
|
|
15
|
+
minion.onResolve.push(() => {
|
|
16
|
+
(0, divine_shield_1.updateDivineShield)(minion, board, hero, otherHero, true, gameState);
|
|
17
|
+
minion.enchantments.push({
|
|
18
|
+
cardId: "BG35_814e",
|
|
19
|
+
originEntityId: minion.entityId,
|
|
20
|
+
timing: gameState.sharedState.currentEntityId++,
|
|
21
|
+
tagScriptDataNum1: -1,
|
|
22
|
+
tagScriptDataNum2: -1,
|
|
23
|
+
});
|
|
20
24
|
});
|
|
21
25
|
};
|
|
22
26
|
exports.ScarletSurvivor = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scarlet-survivor.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/scarlet-survivor.ts"],"names":[],"mappings":";;;AAEA,mEAAqE;AAOrE,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,wBAAwB,GAAG,CAChC,MAAmB,EACnB,KAAoB,EACpB,IAAqB,EACrB,SAA0B,EAC1B,SAAwB,EACjB,EAAE
|
|
1
|
+
{"version":3,"file":"scarlet-survivor.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/scarlet-survivor.ts"],"names":[],"mappings":";;;AAEA,mEAAqE;AAOrE,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,wBAAwB,GAAG,CAChC,MAAmB,EACnB,KAAoB,EACpB,IAAqB,EACrB,SAA0B,EAC1B,SAAwB,EACjB,EAAE;;IACT,IACC,MAAM,CAAC,iBAAiB,IAAI,CAAC;QAC7B,MAAM,CAAC,MAAM,GAAG,SAAS;QACzB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,gBAA0D,CAAC,EAClG;QACD,OAAO;KACP;IACD,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAE7B,MAAM,CAAC,SAAS,GAAG,MAAA,MAAM,CAAC,SAAS,mCAAI,EAAE,CAAC;IAC1C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;QAC1B,IAAA,kCAAkB,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACpE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;YACxB,MAAM,aAAuD;YAC7D,cAAc,EAAE,MAAM,CAAC,QAAQ;YAC/B,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;YAC/C,iBAAiB,EAAE,CAAC,CAAC;YACrB,iBAAiB,EAAE,CAAC,CAAC;SACrB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,eAAe,GAA4D;IACvF,OAAO,EAAE,0BAAsE;IAC/E,cAAc,EAAE,CAAC,MAAmB,EAAE,EAAE,CAAC,CAAC;IAC1C,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAmB,EAAE,EAAE;QACvD,MAAM,SAAS,GACd,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI;YACrD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM;YAC3C,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;IACD,cAAc,EAAE,CAAC,MAAmB,EAAE,KAA0B,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;YAC9C,OAAO;SACP;QACD,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7F,CAAC;CACD,CAAC","sourcesContent":["import { BgsPlayerEntity } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { updateDivineShield } from '../../../keywords/divine-shield';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { FullGameState } from '../../../simulation/internal-game-state';\r\nimport { OnStatsChangedInput } from '../../../simulation/stats';\r\nimport { DefaultChargesCard, OnSpawnedCard, OnStatsChangedCard } from '../../card.interface';\r\n\r\nconst THRESHOLD = 6;\r\n\r\nconst tryGrantDivineShieldOnce = (\r\n\tminion: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tif (\r\n\t\tminion.abiityChargesLeft <= 0 ||\r\n\t\tminion.attack < THRESHOLD ||\r\n\t\tminion.enchantments.some((e) => e.cardId === CardIds.ScarletSurvivor_SurvivedEnchantment_BG35_814e)\r\n\t) {\r\n\t\treturn;\r\n\t}\r\n\tminion.abiityChargesLeft = 0;\r\n\r\n\tminion.onResolve = minion.onResolve ?? [];\r\n\tminion.onResolve.push(() => {\r\n\t\tupdateDivineShield(minion, board, hero, otherHero, true, gameState);\r\n\t\tminion.enchantments.push({\r\n\t\t\tcardId: CardIds.ScarletSurvivor_SurvivedEnchantment_BG35_814e,\r\n\t\t\toriginEntityId: minion.entityId,\r\n\t\t\ttiming: gameState.sharedState.currentEntityId++,\r\n\t\t\ttagScriptDataNum1: -1,\r\n\t\t\ttagScriptDataNum2: -1,\r\n\t\t});\r\n\t});\r\n};\r\n\r\nexport const ScarletSurvivor: OnSpawnedCard & OnStatsChangedCard & DefaultChargesCard = {\r\n\tcardIds: [CardIds.ScarletSurvivor_BG35_814, CardIds.ScarletSurvivor_BG35_814_G],\r\n\tdefaultCharges: (entity: BoardEntity) => 1,\r\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => {\r\n\t\tconst otherHero =\r\n\t\t\tinput.gameState.gameState.player.player === input.hero\r\n\t\t\t\t? input.gameState.gameState.opponent.player\r\n\t\t\t\t: input.gameState.gameState.player.player;\r\n\t\ttryGrantDivineShieldOnce(minion, input.board, input.hero, otherHero, input.gameState);\r\n\t},\r\n\tonStatsChanged: (minion: BoardEntity, input: OnStatsChangedInput) => {\r\n\t\tif (input.target.entityId !== minion.entityId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttryGrantDivineShieldOnce(minion, input.board, input.hero, input.otherHero, input.gameState);\r\n\t},\r\n};\r\n"]}
|
|
@@ -6,14 +6,22 @@ exports.SpellboundSoul = {
|
|
|
6
6
|
onSpawned: (minion, input) => {
|
|
7
7
|
const mult = minion.cardId === "BG34_110_G" ? 2 : 1;
|
|
8
8
|
const totalSpellsCast = input.hero.globalInfo.TavernSpellsCastThisGame;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
if (input.applyAttackAuras) {
|
|
10
|
+
minion.attack += 2 * totalSpellsCast * mult;
|
|
11
|
+
}
|
|
12
|
+
if (input.applyHealthAuras) {
|
|
13
|
+
minion.health += 1 * totalSpellsCast * mult;
|
|
14
|
+
}
|
|
11
15
|
},
|
|
12
16
|
onDespawned: (minion, input) => {
|
|
13
17
|
const mult = minion.cardId === "BG34_110_G" ? 2 : 1;
|
|
14
18
|
const totalSpellsCast = input.hero.globalInfo.TavernSpellsCastThisGame;
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
if (input.applyAttackAuras) {
|
|
20
|
+
minion.attack = Math.max(0, minion.attack - 2 * totalSpellsCast * mult);
|
|
21
|
+
}
|
|
22
|
+
if (input.applyHealthAuras) {
|
|
23
|
+
minion.health = Math.max(1, minion.health - 1 * totalSpellsCast * mult);
|
|
24
|
+
}
|
|
17
25
|
},
|
|
18
26
|
};
|
|
19
27
|
//# sourceMappingURL=spellbound-soul.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spellbound-soul.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/spellbound-soul.ts"],"names":[],"mappings":";;;AAKa,QAAA,cAAc,GAAoC;IAC9D,OAAO,EAAE,0BAAoE;IAC7E,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAmB,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;QACvE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,eAAe,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"spellbound-soul.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/spellbound-soul.ts"],"names":[],"mappings":";;;AAKa,QAAA,cAAc,GAAoC;IAC9D,OAAO,EAAE,0BAAoE;IAC7E,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAmB,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;QACvE,IAAI,KAAK,CAAC,gBAAgB,EAAE;YAC3B,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,eAAe,GAAG,IAAI,CAAC;SAC5C;QACD,IAAI,KAAK,CAAC,gBAAgB,EAAE;YAC3B,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,eAAe,GAAG,IAAI,CAAC;SAC5C;IACF,CAAC;IACD,WAAW,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;QACvE,IAAI,KAAK,CAAC,gBAAgB,EAAE;YAC3B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,eAAe,GAAG,IAAI,CAAC,CAAC;SACxE;QACD,IAAI,KAAK,CAAC,gBAAgB,EAAE;YAC3B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,eAAe,GAAG,IAAI,CAAC,CAAC;SACxE;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnDespawnInput, OnSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { OnDespawnedCard, OnSpawnedCard } from '../../card.interface';\r\n\r\nexport const SpellboundSoul: OnDespawnedCard & OnSpawnedCard = {\r\n\tcardIds: [CardIds.SpellboundSoul_BG34_110, CardIds.SpellboundSoul_BG34_110_G],\r\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.SpellboundSoul_BG34_110_G ? 2 : 1;\r\n\t\tconst totalSpellsCast = input.hero.globalInfo.TavernSpellsCastThisGame;\r\n\t\tif (input.applyAttackAuras) {\r\n\t\t\tminion.attack += 2 * totalSpellsCast * mult;\r\n\t\t}\r\n\t\tif (input.applyHealthAuras) {\r\n\t\t\tminion.health += 1 * totalSpellsCast * mult;\r\n\t\t}\r\n\t},\r\n\tonDespawned: (minion: BoardEntity, input: OnDespawnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.SpellboundSoul_BG34_110_G ? 2 : 1;\r\n\t\tconst totalSpellsCast = input.hero.globalInfo.TavernSpellsCastThisGame;\r\n\t\tif (input.applyAttackAuras) {\r\n\t\t\tminion.attack = Math.max(0, minion.attack - 2 * totalSpellsCast * mult);\r\n\t\t}\r\n\t\tif (input.applyHealthAuras) {\r\n\t\t\tminion.health = Math.max(1, minion.health - 1 * totalSpellsCast * mult);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -11,7 +11,7 @@ exports.StompingStegodonEnchantment = {
|
|
|
11
11
|
"BG33_840_Ge2",
|
|
12
12
|
],
|
|
13
13
|
rally: (enchantment, input) => {
|
|
14
|
-
var _a;
|
|
14
|
+
var _a, _b;
|
|
15
15
|
const mult = enchantment.cardId === "BG33_840_Ge2" ? 2 : 1;
|
|
16
16
|
const nbOfTriggers = (_a = enchantment.repeats) !== null && _a !== void 0 ? _a : 1;
|
|
17
17
|
const enchantmentCardIdToAdd = enchantment.cardId === "BG33_840_Ge2"
|
|
@@ -31,7 +31,7 @@ exports.StompingStegodonEnchantment = {
|
|
|
31
31
|
};
|
|
32
32
|
candidate.enchantments.push(existingEnchantment);
|
|
33
33
|
}
|
|
34
|
-
existingEnchantment.repeats
|
|
34
|
+
existingEnchantment.repeats = ((_b = existingEnchantment.repeats) !== null && _b !== void 0 ? _b : 0) + nbOfTriggers;
|
|
35
35
|
}
|
|
36
36
|
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
37
37
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stomping-stegodon-enchantment.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/stomping-stegodon-enchantment.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"stomping-stegodon-enchantment.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/stomping-stegodon-enchantment.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAEjD,2DAAqF;AAExE,QAAA,2BAA2B,GAAc;IACrD,OAAO,EAAE;;;KAGR;IACD,KAAK,EAAE,CAAC,WAA6B,EAAE,KAAoB,EAAE,EAAE;;QAC9D,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,mBAA8D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtG,MAAM,YAAY,GAAG,MAAA,WAAW,CAAC,OAAO,mCAAI,CAAC,CAAC;QAC9C,MAAM,sBAAsB,GAC3B,WAAW,CAAC,MAAM,mBAA8D;YAC/E,CAAC;YACD,CAAC,aAAwD,CAAC;QAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,KAAK,KAAK,CAAC,QAAQ;YACpB,IAAA,uBAAe,EACd,CAAC,EACD,KAAK,CAAC,aAAa,EACnB,qBAAI,CAAC,KAAK,EACV,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACF,CAAC;QACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YACnC,IAAA,mBAAW,EACV,SAAS,EACT,KAAK,CAAC,QAAQ,EACd,0CAAsB,GAAG,YAAY,GAAG,IAAI,EAC5C,0CAAsB,GAAG,YAAY,GAAG,IAAI,EAC5C,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,IAAI,mBAAmB,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,sBAAsB,CAAC,CAAC;YAClG,IAAI,CAAC,mBAAmB,EAAE;gBACzB,mBAAmB,GAAG;oBACrB,MAAM,EAAE,sBAAsB;oBAC9B,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;oBACvC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;oBACrD,OAAO,EAAE,CAAC;iBACV,CAAC;gBACF,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aACjD;YACD,mBAAmB,CAAC,OAAO,GAAG,CAAC,MAAA,mBAAmB,CAAC,OAAO,mCAAI,CAAC,CAAC,GAAG,YAAY,CAAC;SAChF;QAED,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEnchantment } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { RallyCard } from '../../card.interface';\r\nimport { stompingStegodonAttack, stompingStegodonHealth } from './stomping-stegodon';\r\n\r\nexport const StompingStegodonEnchantment: RallyCard = {\r\n\tcardIds: [\r\n\t\tCardIds.StompingStegodon_StompingEnchantment_BG33_840e2,\r\n\t\tCardIds.StompingStegodon_StompingEnchantment_BG33_840_Ge2,\r\n\t],\r\n\trally: (enchantment: BoardEnchantment, input: OnAttackInput) => {\r\n\t\tconst mult = enchantment.cardId === CardIds.StompingStegodon_StompingEnchantment_BG33_840_Ge2 ? 2 : 1;\r\n\t\tconst nbOfTriggers = enchantment.repeats ?? 1;\r\n\t\tconst enchantmentCardIdToAdd =\r\n\t\t\tenchantment.cardId === CardIds.StompingStegodon_StompingEnchantment_BG33_840_Ge2\r\n\t\t\t\t? CardIds.StompingStegodon_StompingEnchantment_BG33_840_Ge2\r\n\t\t\t\t: CardIds.StompingStegodon_StompingEnchantment_BG33_840e2;\r\n\t\tconst candidates = input.attackingBoard.filter(\r\n\t\t\t(e) =>\r\n\t\t\t\te !== input.attacker &&\r\n\t\t\t\thasCorrectTribe(\r\n\t\t\t\t\te,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tRace.BEAST,\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);\r\n\t\tfor (const candidate of candidates) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tcandidate,\r\n\t\t\t\tinput.attacker,\r\n\t\t\t\tstompingStegodonAttack * nbOfTriggers * mult,\r\n\t\t\t\tstompingStegodonHealth * nbOfTriggers * mult,\r\n\t\t\t\tinput.attackingBoard,\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tlet existingEnchantment = candidate.enchantments.find((e) => e.cardId === enchantmentCardIdToAdd);\r\n\t\t\tif (!existingEnchantment) {\r\n\t\t\t\texistingEnchantment = {\r\n\t\t\t\t\tcardId: enchantmentCardIdToAdd,\r\n\t\t\t\t\toriginEntityId: input.attacker.entityId,\r\n\t\t\t\t\ttiming: input.gameState.sharedState.currentEntityId++,\r\n\t\t\t\t\trepeats: 0,\r\n\t\t\t\t};\r\n\t\t\t\tcandidate.enchantments.push(existingEnchantment);\r\n\t\t\t}\r\n\t\t\texistingEnchantment.repeats = (existingEnchantment.repeats ?? 0) + nbOfTriggers;\r\n\t\t}\r\n\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -9,6 +9,7 @@ exports.stompingStegodonHealth = 0;
|
|
|
9
9
|
exports.StompingStegodon = {
|
|
10
10
|
cardIds: ["BG33_840", "BG33_840_G"],
|
|
11
11
|
rally: (minion, input) => {
|
|
12
|
+
var _a;
|
|
12
13
|
const mult = minion.cardId === "BG33_840_G" ? 2 : 1;
|
|
13
14
|
const candidates = input.attackingBoard.filter((e) => e !== input.attacker &&
|
|
14
15
|
(0, utils_1.hasCorrectTribe)(e, input.attackingHero, reference_data_1.Race.BEAST, input.gameState.anomalies, input.gameState.allCards));
|
|
@@ -27,7 +28,7 @@ exports.StompingStegodon = {
|
|
|
27
28
|
};
|
|
28
29
|
candidate.enchantments.push(existingEnchantment);
|
|
29
30
|
}
|
|
30
|
-
existingEnchantment.repeats
|
|
31
|
+
existingEnchantment.repeats = ((_a = existingEnchantment.repeats) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
31
32
|
}
|
|
32
33
|
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
33
34
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stomping-stegodon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/stomping-stegodon.ts"],"names":[],"mappings":";;;AAOA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAC3B,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAE3B,QAAA,gBAAgB,GAAc;IAC1C,OAAO,EAAE,0BAAwE;IACjF,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"stomping-stegodon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/stomping-stegodon.ts"],"names":[],"mappings":";;;AAOA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAC3B,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAE3B,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,KAAK,CAAC,cAAc,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,KAAK,KAAK,CAAC,QAAQ;YACpB,IAAA,uBAAe,EACd,CAAC,EACD,KAAK,CAAC,aAAa,EACnB,qBAAI,CAAC,KAAK,EACV,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACF,CAAC;QACF,MAAM,sBAAsB,GAC3B,MAAM,CAAC,MAAM,iBAAwC;YACpD,CAAC;YACD,CAAC,aAAwD,CAAC;QAC5D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YACnC,IAAA,mBAAW,EACV,SAAS,EACT,KAAK,CAAC,QAAQ,EACd,8BAAsB,GAAG,IAAI,EAC7B,8BAAsB,GAAG,IAAI,EAC7B,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;YAEF,IAAI,mBAAmB,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,sBAAsB,CAAC,CAAC;YAClG,IAAI,CAAC,mBAAmB,EAAE;gBACzB,mBAAmB,GAAG;oBACrB,MAAM,EAAE,sBAAsB;oBAC9B,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;oBACvC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;oBACrD,OAAO,EAAE,CAAC;iBACV,CAAC;gBACF,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aACjD;YACD,mBAAmB,CAAC,OAAO,GAAG,CAAC,MAAA,mBAAmB,CAAC,OAAO,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACrE;QAED,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Stomping Stegodon (Tier 4, 4/3)\r\n * Rally: Give your other Beasts +4 Attack and this Rally.\r\n *\r\n * Golden Stomping Stegodon (Tier 4, 8/6)\r\n * Rally: Give your other Beasts +8 Attack and this Rally.\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 { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\nexport const stompingStegodonAttack = 4;\r\nexport const stompingStegodonHealth = 0;\r\n\r\nexport const StompingStegodon: RallyCard = {\r\n\tcardIds: [CardIds.StompingStegodon_BG33_840, CardIds.StompingStegodon_BG33_840_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.StompingStegodon_BG33_840_G ? 2 : 1;\r\n\t\tconst candidates = input.attackingBoard.filter(\r\n\t\t\t(e) =>\r\n\t\t\t\te !== input.attacker &&\r\n\t\t\t\thasCorrectTribe(\r\n\t\t\t\t\te,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tRace.BEAST,\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);\r\n\t\tconst enchantmentCardIdToAdd =\r\n\t\t\tminion.cardId === CardIds.StompingStegodon_BG33_840_G\r\n\t\t\t\t? CardIds.StompingStegodon_StompingEnchantment_BG33_840_Ge2\r\n\t\t\t\t: CardIds.StompingStegodon_StompingEnchantment_BG33_840e2;\r\n\t\tfor (const candidate of candidates) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tcandidate,\r\n\t\t\t\tinput.attacker,\r\n\t\t\t\tstompingStegodonAttack * mult,\r\n\t\t\t\tstompingStegodonHealth * mult,\r\n\t\t\t\tinput.attackingBoard,\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\r\n\t\t\tlet existingEnchantment = candidate.enchantments.find((e) => e.cardId === enchantmentCardIdToAdd);\r\n\t\t\tif (!existingEnchantment) {\r\n\t\t\t\texistingEnchantment = {\r\n\t\t\t\t\tcardId: enchantmentCardIdToAdd,\r\n\t\t\t\t\toriginEntityId: input.attacker.entityId,\r\n\t\t\t\t\ttiming: input.gameState.sharedState.currentEntityId++,\r\n\t\t\t\t\trepeats: 0,\r\n\t\t\t\t};\r\n\t\t\t\tcandidate.enchantments.push(existingEnchantment);\r\n\t\t\t}\r\n\t\t\texistingEnchantment.repeats = (existingEnchantment.repeats ?? 0) + 1;\r\n\t\t}\r\n\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-chameleon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-chameleon.ts"],"names":[],"mappings":";;;AAGA,6DAAoE;AACpE,0CAA4C;AAC5C,yDAAuE;AACvE,sDAAiD;AAEpC,QAAA,mBAAmB,GAAsB;IACrD,OAAO,EAAE,sCAA0F;IACnG,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACjF,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpG,IAAI,cAAc,GAAG,CAAC,EAAE;YACvB,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,CAAC,eAAe,EAAE;gBACtB,MAAM,KAAK,GAAgB;oBAC1B,GAAG,IAAA,kBAAU,EAAC,eAAe,CAAC;oBAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;iBACvD,CAAC;gBACF,IAAI,MAAM,CAAC,MAAM,uBAAiD,EAAE;oBACnE,IAAA,yBAAgB,EACf,KAAK,EACL,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;iBACF;gBACD,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBACnD,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,eAAe,EACf,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;gBAEF,MAAM,aAAa,GAAG,6BAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjD,IAAI,IAAA,6BAAY,EAAC,aAAa,CAAC,EAAE;oBAChC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE;wBAC9B,IAAI,EAAE,KAAK,CAAC,YAAY;wBACxB,KAAK,EAAE,KAAK;wBACZ,SAAS,EAAE,KAAK,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"timewarped-chameleon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-chameleon.ts"],"names":[],"mappings":";;;AAGA,6DAAoE;AACpE,0CAA4C;AAC5C,yDAAuE;AACvE,sDAAiD;AAEpC,QAAA,mBAAmB,GAAsB;IACrD,OAAO,EAAE,sCAA0F;IACnG,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACjF,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpG,IAAI,cAAc,GAAG,CAAC,EAAE;YACvB,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,CAAC,eAAe,EAAE;gBACtB,MAAM,KAAK,GAAgB;oBAC1B,GAAG,IAAA,kBAAU,EAAC,eAAe,CAAC;oBAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;iBACvD,CAAC;gBACF,IAAI,MAAM,CAAC,MAAM,uBAAiD,EAAE;oBACnE,IAAA,yBAAgB,EACf,KAAK,EACL,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;iBACF;gBACD,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBACnD,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,eAAe,EACf,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;gBAEF,MAAM,aAAa,GAAG,6BAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjD,IAAI,IAAA,6BAAY,EAAC,aAAa,CAAC,EAAE;oBAChC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE;wBAC9B,IAAI,EAAE,KAAK,CAAC,YAAY;wBACxB,KAAK,EAAE,KAAK;wBACZ,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,gBAAgB,EAAE,IAAI;wBACtB,gBAAgB,EAAE,IAAI;qBACtB,CAAC,CAAC;iBACH;gBACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC;aACrE;SACD;QACD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC;IACvE,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 { makeMinionGolden } from '../../../simulation/utils/golden';\r\nimport { copyEntity } from '../../../utils';\r\nimport { hasOnSpawned, StartOfCombatCard } from '../../card.interface';\r\nimport { cardMappings } from '../_card-mappings';\r\n\r\nexport const TimewarpedChameleon: StartOfCombatCard = {\r\n\tcardIds: [CardIds.TimewarpedChameleon_BG34_Giant_042, CardIds.TimewarpedChameleon_BG34_Giant_042_G],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst board = input.playerBoard.filter((e) => e.health > 0 && !e.definitelyDead);\r\n\t\tconst chameleonIndex = input.playerBoard.findIndex((entity) => entity.entityId === minion.entityId);\r\n\t\tif (chameleonIndex > 0) {\r\n\t\t\tconst minionToTheLeft = board[chameleonIndex - 1];\r\n\t\t\tif (!!minionToTheLeft) {\r\n\t\t\t\tconst clone: BoardEntity = {\r\n\t\t\t\t\t...copyEntity(minionToTheLeft),\r\n\t\t\t\t\tentityId: input.gameState.sharedState.currentEntityId++,\r\n\t\t\t\t};\r\n\t\t\t\tif (minion.cardId === CardIds.TimewarpedChameleon_BG34_Giant_042_G) {\r\n\t\t\t\t\tmakeMinionGolden(\r\n\t\t\t\t\t\tclone,\r\n\t\t\t\t\t\tminion,\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.opponentBoard,\r\n\t\t\t\t\t\tinput.opponentEntity,\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\tinput.playerBoard.splice(chameleonIndex, 1, clone);\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tminionToTheLeft,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t);\r\n\t\t\t\t// Also need to apply the aura, if it has one\r\n\t\t\t\tconst onSpawnedImpl = cardMappings[clone.cardId];\r\n\t\t\t\tif (hasOnSpawned(onSpawnedImpl)) {\r\n\t\t\t\t\tonSpawnedImpl.onSpawned(clone, {\r\n\t\t\t\t\t\thero: input.playerEntity,\r\n\t\t\t\t\t\tboard: board,\r\n\t\t\t\t\t\tgameState: input.gameState,\r\n\t\t\t\t\t\tapplyAttackAuras: true,\r\n\t\t\t\t\t\tapplyHealthAuras: true,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: false };\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { hasTriggered: false, shouldRecomputeCurrentAttacker: false };\r\n\t},\r\n};\r\n"]}
|
|
@@ -7,11 +7,14 @@ const utils_2 = require("../../../utils");
|
|
|
7
7
|
exports.TimewarpedMagnanimoose = {
|
|
8
8
|
cardIds: ["BG34_Giant_619", "BG34_Giant_619_G"],
|
|
9
9
|
deathrattleSpawn: (minion, input) => {
|
|
10
|
-
|
|
10
|
+
var _a;
|
|
11
11
|
const loops = minion.cardId === "BG34_Giant_619_G" ? 2 : 1;
|
|
12
12
|
const spawned = [];
|
|
13
13
|
for (let i = 0; i < loops; i++) {
|
|
14
|
-
const randomMinion = (0, utils_1.pickRandom)(
|
|
14
|
+
const randomMinion = (_a = (0, utils_1.pickRandom)(input.gameState.gameState.playerInitial.board)) !== null && _a !== void 0 ? _a : (0, utils_1.pickRandom)(input.gameState.gameState.opponentInitial.board);
|
|
15
|
+
if (!randomMinion) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
15
18
|
const clone = (0, utils_2.copyEntity)(randomMinion);
|
|
16
19
|
spawned.push(...(0, deathrattle_spawns_1.simplifiedSpawnEntities)(clone.cardId, 1, input, clone));
|
|
17
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timewarped-magnanimoose.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-magnanimoose.ts"],"names":[],"mappings":";;;AAEA,mDAAqD;AAErD,+EAAiF;AACjF,0CAA4C;AAG/B,QAAA,sBAAsB,GAAyB;IAC3D,OAAO,EAAE,sCAAgG;IACzG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"timewarped-magnanimoose.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-magnanimoose.ts"],"names":[],"mappings":";;;AAEA,mDAAqD;AAErD,+EAAiF;AACjF,0CAA4C;AAG/B,QAAA,sBAAsB,GAAyB;IAC3D,OAAO,EAAE,sCAAgG;IACzG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;;QAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,uBAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAE/B,MAAM,YAAY,GACjB,MAAA,IAAA,kBAAU,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,mCACzD,IAAA,kBAAU,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,EAAE;gBAClB,OAAO,EAAE,CAAC;aACV;YACD,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,YAAY,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAA,4CAAuB,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SACxE;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { copyEntity } from '../../../utils';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const TimewarpedMagnanimoose: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.TimewarpedMagnanimoose_BG34_Giant_619, CardIds.TimewarpedMagnanimoose_BG34_Giant_619_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst loops = minion.cardId === CardIds.TimewarpedMagnanimoose_BG34_Giant_619_G ? 2 : 1;\r\n\t\tconst spawned = [];\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\t// We don't know the opponents warbands, so we pick something from our own warband instead, as a proxy\r\n\t\t\tconst randomMinion =\r\n\t\t\t\tpickRandom(input.gameState.gameState.playerInitial.board) ??\r\n\t\t\t\tpickRandom(input.gameState.gameState.opponentInitial.board);\r\n\t\t\tif (!randomMinion) {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t\tconst clone = copyEntity(randomMinion);\r\n\t\t\tspawned.push(...simplifiedSpawnEntities(clone.cardId, 1, input, clone));\r\n\t\t}\r\n\t\treturn spawned;\r\n\t},\r\n};\r\n"]}
|
|
@@ -11,7 +11,7 @@ exports.SlammaSticker = {
|
|
|
11
11
|
if (!(0, utils_1.hasCorrectTribe)(spawned, hero, reference_data_1.Race.BEAST, gameState.anomalies, gameState.allCards)) {
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
|
-
(0, stats_1.setEntityStats)(spawned, spawned.attack * 2,
|
|
14
|
+
(0, stats_1.setEntityStats)(spawned, spawned.attack * 2, spawned.health, board, hero, gameState, true, false);
|
|
15
15
|
gameState.spectator.registerPowerTarget(hero, spawned, board, null, null);
|
|
16
16
|
},
|
|
17
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slamma-sticker.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/slamma-sticker.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAA2D;AAC3D,0CAAiD;AAGpC,QAAA,aAAa,GAA0B;IACnD,OAAO,EAAE,sBAA0C;IACnD,iBAAiB,EAAE,CAAC,QAAsB,EAAE,KAAwB,EAAE,EAAE;QACvE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAClD,IAAI,CAAC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;YACzF,OAAO;SACP;QACD,IAAA,sBAAc,EAAC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"slamma-sticker.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/slamma-sticker.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAA2D;AAC3D,0CAAiD;AAGpC,QAAA,aAAa,GAA0B;IACnD,OAAO,EAAE,sBAA0C;IACnD,iBAAiB,EAAE,CAAC,QAAsB,EAAE,KAAwB,EAAE,EAAE;QACvE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAClD,IAAI,CAAC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;YACzF,OAAO;SACP;QACD,IAAA,sBAAc,EAAC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACjG,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { setEntityStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { AfterOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const SlammaSticker: AfterOtherSpawnedCard = {\r\n\tcardIds: [CardIds.SlammaSticker_BG30_MagicItem_540],\r\n\tafterOtherSpawned: (_trinket: BoardTrinket, input: OnOtherSpawnInput) => {\r\n\t\tconst { spawned, board, hero, gameState } = input;\r\n\t\tif (!hasCorrectTribe(spawned, hero, Race.BEAST, gameState.anomalies, gameState.allCards)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetEntityStats(spawned, spawned.attack * 2, spawned.health, board, hero, gameState, true, false);\r\n\t\tgameState.spectator.registerPowerTarget(hero, spawned, board, null, null);\r\n\t},\r\n};\r\n"]}
|
|
@@ -3,14 +3,16 @@ import { BoardEntity } from '../board-entity';
|
|
|
3
3
|
import { FullGameState } from './internal-game-state';
|
|
4
4
|
export declare const addMinionToBoard: (board: BoardEntity[], boardHero: BgsPlayerEntity, otherBoard: BoardEntity[], otherHero: BgsPlayerEntity, index: number, minionToAdd: BoardEntity, gameState: FullGameState, applySelfAuras?: boolean) => void;
|
|
5
5
|
export declare const handleAddedMinionAuraEffect: (board: BoardEntity[], boardHero: BgsPlayerEntity, otherBoard: BoardEntity[], otherHero: BgsPlayerEntity, spawned: BoardEntity, gameState: FullGameState, applySelfAuras?: boolean, isActuallySpawned?: boolean) => void;
|
|
6
|
-
export declare const applyAurasToSelf: (spawned: BoardEntity, board: BoardEntity[], boardHero: BgsPlayerEntity, gameState: FullGameState) => void;
|
|
7
|
-
export declare const removeAurasFromSelf: (entity: BoardEntity, board: BoardEntity[], boardHero: BgsPlayerEntity, gameState: FullGameState) => void;
|
|
6
|
+
export declare const applyAurasToSelf: (spawned: BoardEntity, board: BoardEntity[], boardHero: BgsPlayerEntity, gameState: FullGameState, applyAttackAuras?: boolean, applyHealthAuras?: boolean) => void;
|
|
7
|
+
export declare const removeAurasFromSelf: (entity: BoardEntity, board: BoardEntity[], boardHero: BgsPlayerEntity, gameState: FullGameState, applyAttackAuras?: boolean, applyHealthAuras?: boolean) => void;
|
|
8
8
|
export declare const handleAfterSpawnEffects: (board: BoardEntity[], hero: BgsPlayerEntity, otherBoard: BoardEntity[], otherHero: BgsPlayerEntity, allSpawned: readonly BoardEntity[], gameState: FullGameState) => void;
|
|
9
9
|
export declare const onMinionSummoned: (hero: BgsPlayerEntity, board: BoardEntity[], gameState: FullGameState) => void;
|
|
10
10
|
export interface OnSpawnInput {
|
|
11
11
|
hero: BgsPlayerEntity;
|
|
12
12
|
board: BoardEntity[];
|
|
13
13
|
gameState: FullGameState;
|
|
14
|
+
applyAttackAuras: boolean;
|
|
15
|
+
applyHealthAuras: boolean;
|
|
14
16
|
}
|
|
15
17
|
export interface OnOtherSpawnInput {
|
|
16
18
|
spawned: BoardEntity;
|
|
@@ -19,6 +21,8 @@ export interface OnOtherSpawnInput {
|
|
|
19
21
|
otherHero: BgsPlayerEntity;
|
|
20
22
|
otherBoard: BoardEntity[];
|
|
21
23
|
gameState: FullGameState;
|
|
24
|
+
applyAttackAuras: boolean;
|
|
25
|
+
applyHealthAuras: boolean;
|
|
22
26
|
applySelfAuras: boolean;
|
|
23
27
|
}
|
|
24
28
|
export interface OnOtherSpawnAuraInput {
|
|
@@ -26,11 +30,15 @@ export interface OnOtherSpawnAuraInput {
|
|
|
26
30
|
hero: BgsPlayerEntity;
|
|
27
31
|
board: BoardEntity[];
|
|
28
32
|
gameState: FullGameState;
|
|
33
|
+
applyAttackAuras: boolean;
|
|
34
|
+
applyHealthAuras: boolean;
|
|
29
35
|
}
|
|
30
36
|
export interface OnDespawnInput {
|
|
31
37
|
hero: BgsPlayerEntity;
|
|
32
38
|
board: BoardEntity[];
|
|
33
39
|
gameState: FullGameState;
|
|
40
|
+
applyAttackAuras: boolean;
|
|
41
|
+
applyHealthAuras: boolean;
|
|
34
42
|
}
|
|
35
43
|
export interface OnFriendlyMinionSummonedTrinketInput {
|
|
36
44
|
spawned: BoardEntity;
|