@firestone-hs/simulate-bgs-battle 1.1.742 → 1.1.744
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cards/impl/minion/amber-guardian.js +1 -1
- package/dist/cards/impl/minion/amber-guardian.js.map +1 -1
- package/dist/cards/impl/minion/boom-in-a-box.js +5 -3
- package/dist/cards/impl/minion/boom-in-a-box.js.map +1 -1
- package/dist/cards/impl/minion/flittering-bat.js +2 -4
- package/dist/cards/impl/minion/flittering-bat.js.map +1 -1
- package/dist/cards/impl/minion/mummifier.js +1 -1
- package/dist/cards/impl/minion/mummifier.js.map +1 -1
- package/dist/cards/impl/minion/showy-cyclist.js +3 -7
- package/dist/cards/impl/minion/showy-cyclist.js.map +1 -1
- package/dist/cards/impl/minion/tasty-lobster.js +2 -2
- package/dist/cards/impl/minion/tasty-lobster.js.map +1 -1
- package/package.json +1 -1
|
@@ -15,7 +15,7 @@ exports.AmberGuardian = {
|
|
|
15
15
|
const loops = minion.cardId === "BG24_500_G" ? 2 : 1;
|
|
16
16
|
const dragonsToConsider = otherDragons;
|
|
17
17
|
for (let i = 0; i < loops; i++) {
|
|
18
|
-
const otherDragon = (_a = (0, utils_1.pickRandom)(dragonsToConsider.filter((e) => !e.divineShield))) !== null && _a !== void 0 ? _a : (0, utils_1.pickRandom)(dragonsToConsider);
|
|
18
|
+
const otherDragon = (_a = (0, utils_1.pickRandom)(dragonsToConsider.filter((e) => !e.divineShield), minion)) !== null && _a !== void 0 ? _a : (0, utils_1.pickRandom)(dragonsToConsider, minion);
|
|
19
19
|
if (otherDragon) {
|
|
20
20
|
if (!otherDragon.divineShield) {
|
|
21
21
|
(0, divine_shield_1.updateDivineShield)(otherDragon, input.playerBoard, input.playerEntity, input.opponentEntity, true, input.gameState);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amber-guardian.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/amber-guardian.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"amber-guardian.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/amber-guardian.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAEpD,mEAAqE;AAErE,mDAAqD;AAErD,qDAAwD;AACxD,0CAAiD;AAEpC,QAAA,aAAa,GAAG;IAC5B,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QAEvD,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,IAAA,uBAAe,EACd,CAAC,EACD,KAAK,CAAC,YAAY,EAClB,qBAAI,CAAC,MAAM,EACX,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACD;aACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,iBAAiB,GAAG,YAAY,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,WAAW,GAChB,MAAA,IAAA,kBAAU,EACT,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAChD,MAAM,CACN,mCAAI,IAAA,kBAAU,EAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC5C,IAAI,WAAW,EAAE;gBAChB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;oBAC9B,IAAA,kCAAkB,EACjB,WAAW,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,EACpB,IAAI,EACJ,KAAK,CAAC,SAAS,CACf,CAAC;iBACF;gBACD,IAAA,mBAAW,EAAC,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC/F,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,WAAW,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;gBACF,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;aACpE;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { updateDivineShield } from '../../../keywords/divine-shield';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\n\r\nexport const AmberGuardian = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\t// First try to get a target without divine shield, and if none is available, pick one with divine shield\r\n\t\tconst otherDragons = input.playerBoard\r\n\t\t\t.filter((e) =>\r\n\t\t\t\thasCorrectTribe(\r\n\t\t\t\t\te,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tRace.DRAGON,\r\n\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t),\r\n\t\t\t)\r\n\t\t\t.filter((e) => e.entityId !== minion.entityId);\r\n\t\tconst loops = minion.cardId === CardIds.AmberGuardian_BG24_500_G ? 2 : 1;\r\n\t\tconst dragonsToConsider = otherDragons;\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\tconst otherDragon =\r\n\t\t\t\tpickRandom(\r\n\t\t\t\t\tdragonsToConsider.filter((e) => !e.divineShield),\r\n\t\t\t\t\tminion,\r\n\t\t\t\t) ?? pickRandom(dragonsToConsider, minion);\r\n\t\t\tif (otherDragon) {\r\n\t\t\t\tif (!otherDragon.divineShield) {\r\n\t\t\t\t\tupdateDivineShield(\r\n\t\t\t\t\t\totherDragon,\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.opponentEntity,\r\n\t\t\t\t\t\ttrue,\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\tmodifyStats(otherDragon, minion, 2, 2, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\totherDragon,\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\tdragonsToConsider.splice(dragonsToConsider.indexOf(otherDragon), 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
|
|
@@ -9,9 +9,11 @@ exports.BoomInABox = {
|
|
|
9
9
|
startOfCombat: (minion, input) => {
|
|
10
10
|
const mult = minion.cardId === "BG36_620_G" ? 2 : 1;
|
|
11
11
|
const targets = [...input.playerBoard, ...input.opponentBoard].filter((e) => e !== minion);
|
|
12
|
-
for (
|
|
13
|
-
const
|
|
14
|
-
|
|
12
|
+
for (let i = 0; i < mult; i++) {
|
|
13
|
+
for (const target of targets) {
|
|
14
|
+
const isSameSide = target.friendly === minion.friendly;
|
|
15
|
+
(0, attack_1.dealDamageToMinion)(target, isSameSide ? input.playerBoard : input.opponentBoard, isSameSide ? input.playerEntity : input.opponentEntity, minion, damage, isSameSide ? input.opponentBoard : input.playerBoard, isSameSide ? input.opponentEntity : input.playerEntity, input.gameState);
|
|
16
|
+
}
|
|
15
17
|
}
|
|
16
18
|
return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
|
|
17
19
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boom-in-a-box.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/boom-in-a-box.ts"],"names":[],"mappings":";;;AASA,uDAAgE;AAIhE,MAAM,MAAM,GAAG,CAAC,CAAC;AAEJ,QAAA,UAAU,GAAsB;IAC5C,OAAO,EAAE,0BAA4D;IACrE,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QAC3F,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"boom-in-a-box.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/boom-in-a-box.ts"],"names":[],"mappings":";;;AASA,uDAAgE;AAIhE,MAAM,MAAM,GAAG,CAAC,CAAC;AAEJ,QAAA,UAAU,GAAsB;IAC5C,OAAO,EAAE,0BAA4D;IACrE,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QAC3F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;gBACvD,IAAA,2BAAkB,EACjB,MAAM,EACN,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,EACpD,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EACtD,MAAM,EACN,MAAM,EACN,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EACpD,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EACtD,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Boom-in-a-Box (Tier 4, 5/10)\r\n * Taunt. Start of Combat: Deal 3 damage to all other minions.\r\n *\r\n * Golden Boom-in-a-Box (Tier 4, 10/20)\r\n * Taunt. Start of Combat: Deal 6 damage to all other minions.\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nconst damage = 3;\r\n\r\nexport const BoomInABox: StartOfCombatCard = {\r\n\tcardIds: [CardIds.BoomInABox_BG36_620, CardIds.BoomInABox_BG36_620_G],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.BoomInABox_BG36_620_G ? 2 : 1;\r\n\t\tconst targets = [...input.playerBoard, ...input.opponentBoard].filter((e) => e !== minion);\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tfor (const target of targets) {\r\n\t\t\t\tconst isSameSide = target.friendly === minion.friendly;\r\n\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tisSameSide ? input.playerBoard : input.opponentBoard,\r\n\t\t\t\t\tisSameSide ? input.playerEntity : input.opponentEntity,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tdamage,\r\n\t\t\t\t\tisSameSide ? input.opponentBoard : input.playerBoard,\r\n\t\t\t\t\tisSameSide ? input.opponentEntity : input.playerEntity,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t},\r\n};\r\n"]}
|
|
@@ -6,7 +6,7 @@ const spawns_1 = require("../../../simulation/spawns");
|
|
|
6
6
|
exports.FlitteringBat = {
|
|
7
7
|
cardIds: ["BG36_200", "BG36_200_G"],
|
|
8
8
|
rally: (minion, input) => {
|
|
9
|
-
const
|
|
9
|
+
const mult = minion.cardId === "BG36_200_G" ? 2 : 1;
|
|
10
10
|
const spawnInput = {
|
|
11
11
|
boardWithDeadEntity: input.attackingBoard,
|
|
12
12
|
boardWithDeadEntityHero: input.attackingHero,
|
|
@@ -15,9 +15,7 @@ exports.FlitteringBat = {
|
|
|
15
15
|
otherBoardHero: input.defendingHero,
|
|
16
16
|
gameState: input.gameState,
|
|
17
17
|
};
|
|
18
|
-
const spawns = (0, deathrattle_spawns_1.simplifiedSpawnEntities)(
|
|
19
|
-
? "BG36_200_Gt"
|
|
20
|
-
: "BG36_200t", 1, spawnInput);
|
|
18
|
+
const spawns = (0, deathrattle_spawns_1.simplifiedSpawnEntities)("BG36_200t", mult, spawnInput);
|
|
21
19
|
(0, spawns_1.performEntitySpawns)(spawns, input.attackingBoard, input.attackingHero, input.attacker, input.attackingBoard.length - input.attackingBoard.indexOf(input.attacker) - 1, input.defendingBoard, input.defendingHero, input.gameState);
|
|
22
20
|
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
23
21
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flittering-bat.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/flittering-bat.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"flittering-bat.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/flittering-bat.ts"],"names":[],"mappings":";;;AAUA,+EAAiF;AAEjF,uDAAiE;AAGpD,QAAA,aAAa,GAAc;IACvC,OAAO,EAAE,0BAAkE;IAC3E,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,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,eAAmD,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3G,IAAA,4BAAmB,EAClB,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,CACf,CAAC;QACF,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Flittering Bat (Tier 1, 1/3)\r\n * Rally: Summon a 1/1 Beast.\r\n *\r\n * Golden Flittering Bat (Tier 1, 2/6)\r\n * Rally: Summon a 2/2 Beast.\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\nexport const FlitteringBat: RallyCard = {\r\n\tcardIds: [CardIds.FlitteringBat_BG36_200, CardIds.FlitteringBat_BG36_200_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.FlitteringBat_BG36_200_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(CardIds.FlitteringBat_ForagingBatToken_BG36_200t, mult, spawnInput);\r\n\t\tperformEntitySpawns(\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);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -12,7 +12,7 @@ exports.Mummifier = {
|
|
|
12
12
|
for (let j = 0; j < mummifierBuff; j++) {
|
|
13
13
|
const targets = input.boardWithDeadEntity
|
|
14
14
|
.filter((e) => e.cardId !== "BG28_309" && e.cardId !== "BG28_309_G")
|
|
15
|
-
.filter((e) => !e.reborn)
|
|
15
|
+
.filter((e) => !e.reborn && e.health > 0 && !e.definitelyDead)
|
|
16
16
|
.filter((e) => (0, utils_2.hasCorrectTribe)(e, input.boardWithDeadEntityHero, reference_data_1.Race.UNDEAD, input.gameState.anomalies, input.gameState.allCards));
|
|
17
17
|
const target = (0, utils_1.pickRandom)(targets, minion);
|
|
18
18
|
if (target) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mummifier.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mummifier.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAEpD,qDAAwD;AAExD,mDAAqD;AAErD,0CAAiD;AAGpC,QAAA,SAAS,GAAyB;IAC9C,OAAO,EAAE,0BAA0D;IACnE,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,iBAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,KAAK,CAAC,mBAAmB;iBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,eAA+B,IAAI,CAAC,CAAC,MAAM,iBAAiC,CAAC;iBACnG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"mummifier.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mummifier.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAEpD,qDAAwD;AAExD,mDAAqD;AAErD,0CAAiD;AAGpC,QAAA,SAAS,GAAyB;IAC9C,OAAO,EAAE,0BAA0D;IACnE,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,iBAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,KAAK,CAAC,mBAAmB;iBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,eAA+B,IAAI,CAAC,CAAC,MAAM,iBAAiC,CAAC;iBACnG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;iBAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,IAAA,uBAAe,EACd,CAAC,EACD,KAAK,CAAC,uBAAuB,EAC7B,qBAAI,CAAC,MAAM,EACX,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACD,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3C,IAAI,MAAM,EAAE;gBACX,IAAA,qBAAY,EACX,MAAM,EACN,IAAI,EACJ,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;gBACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,cAAc,CACpB,CAAC;aACF;SACD;QACD,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { updateReborn } from '../../../keywords/reborn';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const Mummifier: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.Mummifier_BG28_309, CardIds.Mummifier_BG28_309_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mummifierBuff = minion.cardId === CardIds.Mummifier_BG28_309_G ? 2 : 1;\r\n\t\tfor (let j = 0; j < mummifierBuff; j++) {\r\n\t\t\tconst targets = input.boardWithDeadEntity\r\n\t\t\t\t.filter((e) => e.cardId !== CardIds.Mummifier_BG28_309 && e.cardId !== CardIds.Mummifier_BG28_309_G)\r\n\t\t\t\t.filter((e) => !e.reborn && e.health > 0 && !e.definitelyDead)\r\n\t\t\t\t.filter((e) =>\r\n\t\t\t\t\thasCorrectTribe(\r\n\t\t\t\t\t\te,\r\n\t\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\t\tRace.UNDEAD,\r\n\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\tconst target = pickRandom(targets, minion);\r\n\t\t\tif (target) {\r\n\t\t\t\tupdateReborn(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
|
|
@@ -5,17 +5,13 @@ const reference_data_1 = require("@firestone-hs/reference-data");
|
|
|
5
5
|
const utils_1 = require("../../../utils");
|
|
6
6
|
exports.ShowyCyclist = {
|
|
7
7
|
cardIds: ["BG31_925", "BG31_925_G"],
|
|
8
|
-
rebornSelfAttributeTransfer: ['
|
|
8
|
+
rebornSelfAttributeTransfer: ['scriptDataNum2', 'scriptDataNum4'],
|
|
9
9
|
deathrattleSpawn: (minion, input) => {
|
|
10
|
-
var _a, _b, _c;
|
|
11
10
|
const golden = minion.cardId === "BG31_925_G";
|
|
12
11
|
const defaultAtk = golden ? 4 : 2;
|
|
13
12
|
const defaultHp = golden ? 2 : 1;
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const hp = hasSplitAtk
|
|
17
|
-
? ((_b = minion.scriptDataNum2) !== null && _b !== void 0 ? _b : defaultHp)
|
|
18
|
-
: Math.max(defaultHp, Math.floor(((_c = minion.scriptDataNum2) !== null && _c !== void 0 ? _c : defaultAtk) / 2));
|
|
13
|
+
const atk = minion.scriptDataNum2 || defaultAtk;
|
|
14
|
+
const hp = minion.scriptDataNum4 || defaultHp;
|
|
19
15
|
(0, utils_1.addStatsToBoard)(minion, input.boardWithDeadEntity, input.boardWithDeadEntityHero, atk, hp, input.gameState, reference_data_1.Race[reference_data_1.Race.NAGA]);
|
|
20
16
|
return [];
|
|
21
17
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showy-cyclist.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/showy-cyclist.ts"],"names":[],"mappings":";;;AAWA,iEAAoD;AAIpD,0CAAiD;AAGpC,QAAA,YAAY,GAA2D;IACnF,OAAO,EAAE,0BAAgE;IAEzE,2BAA2B,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACjE,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"showy-cyclist.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/showy-cyclist.ts"],"names":[],"mappings":";;;AAWA,iEAAoD;AAIpD,0CAAiD;AAGpC,QAAA,YAAY,GAA2D;IACnF,OAAO,EAAE,0BAAgE;IAEzE,2BAA2B,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACjE,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC;QACjE,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,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;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 { addStatsToBoard } from '../../../utils';\r\nimport { DeathrattleSpawnCard, RebornSelfAttributeTransferCard } from '../../card.interface';\r\n\r\nexport const ShowyCyclist: DeathrattleSpawnCard & RebornSelfAttributeTransferCard = {\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 golden = minion.cardId === CardIds.ShowyCyclist_BG31_925_G;\r\n\t\tconst defaultAtk = golden ? 4 : 2;\r\n\t\tconst defaultHp = golden ? 2 : 1;\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};\r\n"]}
|
|
@@ -11,8 +11,8 @@ exports.TastyLobster = {
|
|
|
11
11
|
deathrattleEffect: (minion, input) => {
|
|
12
12
|
var _a, _b, _c, _d;
|
|
13
13
|
const base = minion.cardId === "BG36_202_G" ? 2 : 1;
|
|
14
|
-
const atkBuff = base * (
|
|
15
|
-
const healthBuff = base * (
|
|
14
|
+
const atkBuff = base * ((_a = input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff) !== null && _a !== void 0 ? _a : 0);
|
|
15
|
+
const healthBuff = base * ((_b = input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff) !== null && _b !== void 0 ? _b : 0);
|
|
16
16
|
const candidates = input.boardWithDeadEntity.filter((e) => (0, utils_2.hasCorrectTribe)(e, input.boardWithDeadEntityHero, reference_data_1.Race.BEAST, input.gameState.anomalies, input.gameState.allCards));
|
|
17
17
|
const targets = (0, utils_1.pickMultipleRandomAlive)(candidates, numberOfTargets);
|
|
18
18
|
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,
|
|
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,MAAA,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,mCAAI,CAAC,CAAC,CAAC;QACzF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAA,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,mCAAI,CAAC,CAAC,CAAC;QAC5F,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,MAAA,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,mCAAI,CAAC,CAAC;QAClF,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB;YACzD,IAAI,CAAC,GAAG,CAAC,MAAA,KAAK,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,mCAAI,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3F,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 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 * (input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff ?? 0);\r\n\t\tconst healthBuff = base * (input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff ?? 0);\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 ?? 0;\r\n\t\tinput.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff =\r\n\t\t\tMath.max(input.boardWithDeadEntityHero.globalInfo.TastyLobstersBuff ?? 0, priorBuff) + 1;\r\n\t},\r\n};\r\n"]}
|