@firestone-hs/simulate-bgs-battle 1.1.530 → 1.1.531
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bgs-player-entity.d.ts +1 -0
- package/dist/bgs-player-entity.js.map +1 -1
- package/dist/board-entity.d.ts +1 -0
- package/dist/board-entity.js.map +1 -1
- package/dist/cards/card.interface.d.ts +9 -2
- package/dist/cards/card.interface.js +3 -1
- package/dist/cards/card.interface.js.map +1 -1
- package/dist/cards/cards-data.d.ts +1 -0
- package/dist/cards/cards-data.js +8 -0
- package/dist/cards/cards-data.js.map +1 -1
- package/dist/cards/impl/_card-mappings.js +36 -0
- package/dist/cards/impl/_card-mappings.js.map +1 -1
- package/dist/cards/impl/bg-spell/sharing-is-caring.d.ts +2 -0
- package/dist/cards/impl/bg-spell/sharing-is-caring.js +26 -0
- package/dist/cards/impl/bg-spell/sharing-is-caring.js.map +1 -0
- package/dist/cards/impl/minion/baneling.d.ts +2 -0
- package/dist/cards/impl/minion/baneling.js +16 -0
- package/dist/cards/impl/minion/baneling.js.map +1 -0
- package/dist/cards/impl/minion/bellowing-tyrant.d.ts +2 -0
- package/dist/cards/impl/minion/bellowing-tyrant.js +25 -0
- package/dist/cards/impl/minion/bellowing-tyrant.js.map +1 -0
- package/dist/cards/impl/minion/captain-bonerender.d.ts +2 -0
- package/dist/cards/impl/minion/captain-bonerender.js +27 -0
- package/dist/cards/impl/minion/captain-bonerender.js.map +1 -0
- package/dist/cards/impl/minion/carrier.d.ts +2 -0
- package/dist/cards/impl/minion/carrier.js +25 -0
- package/dist/cards/impl/minion/carrier.js.map +1 -0
- package/dist/cards/impl/minion/colossus.d.ts +2 -0
- package/dist/cards/impl/minion/colossus.js +21 -0
- package/dist/cards/impl/minion/colossus.js.map +1 -0
- package/dist/cards/impl/minion/corrupted-myrmidon.js +1 -1
- package/dist/cards/impl/minion/corrupted-myrmidon.js.map +1 -1
- package/dist/cards/impl/minion/gentle-stag.d.ts +2 -0
- package/dist/cards/impl/minion/gentle-stag.js +14 -0
- package/dist/cards/impl/minion/gentle-stag.js.map +1 -0
- package/dist/cards/impl/minion/hydralisk.d.ts +2 -0
- package/dist/cards/impl/minion/hydralisk.js +16 -0
- package/dist/cards/impl/minion/hydralisk.js.map +1 -0
- package/dist/cards/impl/minion/immortal.d.ts +2 -0
- package/dist/cards/impl/minion/immortal.js +18 -0
- package/dist/cards/impl/minion/immortal.js.map +1 -0
- package/dist/cards/impl/minion/karmic-chameleon.js +1 -1
- package/dist/cards/impl/minion/karmic-chameleon.js.map +1 -1
- package/dist/cards/impl/minion/lurker.d.ts +2 -0
- package/dist/cards/impl/minion/lurker.js +12 -0
- package/dist/cards/impl/minion/lurker.js.map +1 -0
- package/dist/cards/impl/minion/mothership.d.ts +2 -0
- package/dist/cards/impl/minion/mothership.js +14 -0
- package/dist/cards/impl/minion/mothership.js.map +1 -0
- package/dist/cards/impl/minion/mutalisk.d.ts +2 -0
- package/dist/cards/impl/minion/mutalisk.js +12 -0
- package/dist/cards/impl/minion/mutalisk.js.map +1 -0
- package/dist/cards/impl/minion/mythrax.d.ts +2 -0
- package/dist/cards/impl/minion/mythrax.js +18 -0
- package/dist/cards/impl/minion/mythrax.js.map +1 -0
- package/dist/cards/impl/minion/sandy.js +1 -1
- package/dist/cards/impl/minion/sandy.js.map +1 -1
- package/dist/cards/impl/minion/stitched-salvager.d.ts +2 -0
- package/dist/cards/impl/minion/stitched-salvager.js +31 -0
- package/dist/cards/impl/minion/stitched-salvager.js.map +1 -0
- package/dist/cards/impl/minion/ultralisk.d.ts +2 -0
- package/dist/cards/impl/minion/ultralisk.js +14 -0
- package/dist/cards/impl/minion/ultralisk.js.map +1 -0
- package/dist/cards/impl/minion/void-ray.d.ts +2 -0
- package/dist/cards/impl/minion/void-ray.js +14 -0
- package/dist/cards/impl/minion/void-ray.js.map +1 -0
- package/dist/cards/impl/minion/wildfire-elemental.d.ts +2 -0
- package/dist/cards/impl/minion/wildfire-elemental.js +24 -0
- package/dist/cards/impl/minion/wildfire-elemental.js.map +1 -0
- package/dist/cards/impl/minion/yulon-fortune-granter.js +1 -1
- package/dist/cards/impl/minion/yulon-fortune-granter.js.map +1 -1
- package/dist/cards/impl/minion/zergling.d.ts +2 -0
- package/dist/cards/impl/minion/zergling.js +23 -0
- package/dist/cards/impl/minion/zergling.js.map +1 -0
- package/dist/cards/impl/quest-reward/stolen-gold.js +2 -2
- package/dist/cards/impl/quest-reward/stolen-gold.js.map +1 -1
- package/dist/simulation/add-minion-to-board.d.ts +4 -3
- package/dist/simulation/add-minion-to-board.js +15 -12
- package/dist/simulation/add-minion-to-board.js.map +1 -1
- package/dist/simulation/attack.d.ts +10 -0
- package/dist/simulation/attack.js +10 -20
- package/dist/simulation/attack.js.map +1 -1
- package/dist/simulation/auras.js +17 -15
- package/dist/simulation/auras.js.map +1 -1
- package/dist/simulation/avenge.js +2 -2
- package/dist/simulation/avenge.js.map +1 -1
- package/dist/simulation/battlecries.js +1 -1
- package/dist/simulation/battlecries.js.map +1 -1
- package/dist/simulation/deathrattle-effects.js +4 -2
- package/dist/simulation/deathrattle-effects.js.map +1 -1
- package/dist/simulation/minion-kill.d.ts +4 -1
- package/dist/simulation/minion-kill.js +25 -2
- package/dist/simulation/minion-kill.js.map +1 -1
- package/dist/simulation/spawns.js +1 -1
- package/dist/simulation/spawns.js.map +1 -1
- package/dist/simulation/utils/golden.d.ts +1 -1
- package/dist/simulation/utils/golden.js +2 -2
- package/dist/simulation/utils/golden.js.map +1 -1
- package/dist/temp-card-ids.d.ts +35 -0
- package/dist/temp-card-ids.js.map +1 -1
- package/dist/utils.js +12 -2
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CaptainBonerender = void 0;
|
|
4
|
+
const add_minion_to_board_1 = require("../../../simulation/add-minion-to-board");
|
|
5
|
+
const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
|
|
6
|
+
const spawns_1 = require("../../../simulation/spawns");
|
|
7
|
+
const utils_1 = require("../../../utils");
|
|
8
|
+
exports.CaptainBonerender = {
|
|
9
|
+
cardIds: ["CaptainBonerender", "CaptainBonerender_G"],
|
|
10
|
+
afterOtherSpawned: (minion, input) => {
|
|
11
|
+
if (exports.CaptainBonerender.cardIds.includes(input.spawned.cardId)) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const mult = minion.cardId === "CaptainBonerender" ? 1 : 2;
|
|
15
|
+
for (let i = 0; i < mult; i++) {
|
|
16
|
+
if (input.board.length >= 7) {
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
const copy = (0, utils_1.copyEntity)(input.spawned);
|
|
20
|
+
(0, add_minion_to_board_1.removeAurasFromSelf)(copy, input.board, input.hero, input.gameState);
|
|
21
|
+
const newMinions = (0, deathrattle_spawns_1.spawnEntities)(copy.cardId, 1, input.board, input.hero, input.otherBoard, input.otherHero, input.gameState.allCards, input.gameState.cardsData, input.gameState.sharedState, input.gameState.spectator, input.hero.friendly, false, false, false, copy);
|
|
22
|
+
const indexFromRight = input.board.length - input.board.indexOf(minion) - 1;
|
|
23
|
+
const spawns = (0, spawns_1.performEntitySpawns)(newMinions, input.board, input.hero, minion, indexFromRight, input.otherBoard, input.otherHero, input.gameState);
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=captain-bonerender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captain-bonerender.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/captain-bonerender.ts"],"names":[],"mappings":";;;AACA,iFAAiG;AACjG,+EAAuE;AACvE,uDAAiE;AAEjE,0CAA4C;AAG/B,QAAA,iBAAiB,GAA0B;IACvD,OAAO,EAAE,4CAAgE;IACzE,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QACpE,IAAI,yBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAqB,CAAC,EAAE;YAC5E,OAAO;SACP;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,wBAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5B,MAAM;aACN;YACD,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,IAAA,yCAAmB,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,IAAA,kCAAa,EAC/B,IAAI,CAAC,MAAM,EACX,CAAC,EACD,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,WAAW,EAC3B,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,IAAI,CAAC,QAAQ,EACnB,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,CACJ,CAAC;YACF,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,IAAA,4BAAmB,EACjC,UAAU,EACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,MAAM,EACN,cAAc,EACd,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnOtherSpawnInput, removeAurasFromSelf } from '../../../simulation/add-minion-to-board';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { copyEntity } from '../../../utils';\r\nimport { AfterOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const CaptainBonerender: AfterOtherSpawnedCard = {\r\n\tcardIds: [TempCardIds.CaptainBonerender, TempCardIds.CaptainBonerender_G],\r\n\tafterOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tif (CaptainBonerender.cardIds.includes(input.spawned.cardId as TempCardIds)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = minion.cardId === TempCardIds.CaptainBonerender ? 1 : 2;\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tif (input.board.length >= 7) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst copy = copyEntity(input.spawned);\r\n\t\t\tremoveAurasFromSelf(copy, input.board, input.hero, input.gameState);\r\n\t\t\tconst newMinions = spawnEntities(\r\n\t\t\t\tcopy.cardId,\r\n\t\t\t\t1,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.otherHero,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t\tinput.gameState.sharedState,\r\n\t\t\t\tinput.gameState.spectator,\r\n\t\t\t\tinput.hero.friendly,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tcopy,\r\n\t\t\t);\r\n\t\t\tconst indexFromRight = input.board.length - input.board.indexOf(minion) - 1;\r\n\t\t\tconst spawns = performEntitySpawns(\r\n\t\t\t\tnewMinions,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tminion,\r\n\t\t\t\tindexFromRight,\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.otherHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Carrier = void 0;
|
|
4
|
+
const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
|
|
5
|
+
const stats_1 = require("../../../simulation/stats");
|
|
6
|
+
exports.Carrier = {
|
|
7
|
+
cardIds: ["Carrier", "Carrier_G"],
|
|
8
|
+
baseAvengeValue: (cardId) => 4,
|
|
9
|
+
avenge: (minion, input) => {
|
|
10
|
+
const spawnInput = {
|
|
11
|
+
boardWithDeadEntity: input.board,
|
|
12
|
+
boardWithDeadEntityHero: input.hero,
|
|
13
|
+
gameState: input.gameState,
|
|
14
|
+
deadEntity: minion,
|
|
15
|
+
otherBoard: input.otherBoard,
|
|
16
|
+
otherBoardHero: input.otherHero,
|
|
17
|
+
};
|
|
18
|
+
const statBuff = minion.scriptDataNum1;
|
|
19
|
+
const spawned = (0, deathrattle_spawns_1.simplifiedSpawnEntities)("Interceptor_BG", 1, spawnInput);
|
|
20
|
+
spawned.forEach((e) => {
|
|
21
|
+
(0, stats_1.modifyStats)(e, statBuff, statBuff, input.board, input.hero, input.gameState);
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=carrier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carrier.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/carrier.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AACjF,qDAAwD;AAI3C,QAAA,OAAO,GAAe;IAClC,OAAO,EAAE,wBAA4C;IACrD,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAQ,EAAE;QACzD,MAAM,UAAU,GAA8B;YAC7C,mBAAmB,EAAE,KAAK,CAAC,KAAK;YAChC,uBAAuB,EAAE,KAAK,CAAC,IAAI;YACnC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,MAAM;YAClB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,cAAc,EAAE,KAAK,CAAC,SAAS;SAC/B,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;QACvC,MAAM,OAAO,GAAG,IAAA,4CAAuB,oBAA6B,CAAC,EAAE,UAAU,CAAC,CAAC;QACnF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,IAAA,mBAAW,EAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACJ,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const Carrier: AvengeCard = {\r\n\tcardIds: [TempCardIds.Carrier, TempCardIds.Carrier_G],\r\n\tbaseAvengeValue: (cardId: string) => 4,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput): void => {\r\n\t\tconst spawnInput: DeathrattleTriggeredInput = {\r\n\t\t\tboardWithDeadEntity: input.board,\r\n\t\t\tboardWithDeadEntityHero: input.hero,\r\n\t\t\tgameState: input.gameState,\r\n\t\t\tdeadEntity: minion, // weird\r\n\t\t\totherBoard: input.otherBoard,\r\n\t\t\totherBoardHero: input.otherHero,\r\n\t\t};\r\n\t\tconst statBuff = minion.scriptDataNum1;\r\n\t\tconst spawned = simplifiedSpawnEntities(TempCardIds.Interceptor_BG, 1, spawnInput);\r\n\t\tspawned.forEach((e) => {\r\n\t\t\tmodifyStats(e, statBuff, statBuff, input.board, input.hero, input.gameState);\r\n\t\t});\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Colossus = void 0;
|
|
4
|
+
const attack_1 = require("../../../simulation/attack");
|
|
5
|
+
exports.Colossus = {
|
|
6
|
+
cardIds: ["Colossus", "Colossus_G"],
|
|
7
|
+
onAttack: (minion, input) => {
|
|
8
|
+
if (minion !== input.attacker) {
|
|
9
|
+
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
10
|
+
}
|
|
11
|
+
let dmgDoneByAttacker = 0;
|
|
12
|
+
const neighbours = (0, attack_1.getNeighbours)(input.defendingBoard, input.defendingEntity);
|
|
13
|
+
const damage = minion.scriptDataNum1 || 1;
|
|
14
|
+
for (const target of neighbours) {
|
|
15
|
+
const dmg = (0, attack_1.dealDamageToMinion)(target, input.defendingBoard, input.defendingHero, minion, damage, input.attackingBoard, input.attackingHero, input.gameState);
|
|
16
|
+
dmgDoneByAttacker += dmg;
|
|
17
|
+
}
|
|
18
|
+
return { dmgDoneByAttacker, dmgDoneByDefender: 0 };
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=colossus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colossus.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/colossus.ts"],"names":[],"mappings":";;;AACA,uDAA+E;AAKlE,QAAA,QAAQ,GAAiB;IACrC,OAAO,EAAE,0BAA8C;IACvD,QAAQ,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAA4D,EAAE;QACjH,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE;YAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QAED,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;YAChC,MAAM,GAAG,GAAG,IAAA,2BAAkB,EAC7B,MAAM,EACN,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,MAAM,EACN,MAAM,EACN,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,iBAAiB,IAAI,GAAG,CAAC;SACzB;QACD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { dealDamageToMinion, getNeighbours } from '../../../simulation/attack';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { OnAttackCard } from '../../card.interface';\r\n\r\nexport const Colossus: OnAttackCard = {\r\n\tcardIds: [TempCardIds.Colossus, TempCardIds.Colossus_G],\r\n\tonAttack: (minion: BoardEntity, input: OnAttackInput): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tif (minion !== input.attacker) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\r\n\t\tlet dmgDoneByAttacker = 0;\r\n\t\tconst neighbours = getNeighbours(input.defendingBoard, input.defendingEntity);\r\n\t\tconst damage = minion.scriptDataNum1 || 1;\r\n\t\tfor (const target of neighbours) {\r\n\t\t\tconst dmg = dealDamageToMinion(\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.defendingBoard,\r\n\t\t\t\tinput.defendingHero,\r\n\t\t\t\tminion,\r\n\t\t\t\tdamage,\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\tdmgDoneByAttacker += dmg;\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -5,7 +5,7 @@ const stats_1 = require("../../../simulation/stats");
|
|
|
5
5
|
exports.CorruptedMyrmidon = {
|
|
6
6
|
cardIds: ["BG23_012", "BG23_012_G"],
|
|
7
7
|
startOfCombat: (minion, input) => {
|
|
8
|
-
const multiplier = minion.cardId === "BG23_012_G" ?
|
|
8
|
+
const multiplier = minion.cardId === "BG23_012_G" ? 3 : 2;
|
|
9
9
|
(0, stats_1.modifyStats)(minion, multiplier * minion.attack, multiplier * minion.health, input.playerBoard, input.playerEntity, input.gameState);
|
|
10
10
|
input.gameState.spectator.registerPowerTarget(minion, minion, input.playerBoard, input.playerEntity, input.opponentEntity);
|
|
11
11
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"corrupted-myrmidon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/corrupted-myrmidon.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,iBAAiB,GAAsB;IACnD,OAAO,EAAE,0BAA0E;IACnF,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,IAAA,mBAAW,EACV,MAAM,EACN,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const CorruptedMyrmidon: StartOfCombatCard = {\r\n\tcardIds: [CardIds.CorruptedMyrmidon_BG23_012, CardIds.CorruptedMyrmidon_BG23_012_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst multiplier = minion.cardId === CardIds.CorruptedMyrmidon_BG23_012_G ?
|
|
1
|
+
{"version":3,"file":"corrupted-myrmidon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/corrupted-myrmidon.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,iBAAiB,GAAsB;IACnD,OAAO,EAAE,0BAA0E;IACnF,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,IAAA,mBAAW,EACV,MAAM,EACN,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const CorruptedMyrmidon: StartOfCombatCard = {\r\n\tcardIds: [CardIds.CorruptedMyrmidon_BG23_012, CardIds.CorruptedMyrmidon_BG23_012_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst multiplier = minion.cardId === CardIds.CorruptedMyrmidon_BG23_012_G ? 3 : 2;\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tmultiplier * minion.attack,\r\n\t\t\tmultiplier * minion.health,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.opponentEntity,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GentleStag = void 0;
|
|
4
|
+
const stats_1 = require("../../../simulation/stats");
|
|
5
|
+
exports.GentleStag = {
|
|
6
|
+
cardIds: ["GentleStag", "GentleStag_G"],
|
|
7
|
+
onOtherSpawned: (minion, input) => {
|
|
8
|
+
const mult = minion.cardId === "GentleStag_G" ? 2 : 1;
|
|
9
|
+
const target = input.board[input.board.length - 1];
|
|
10
|
+
(0, stats_1.modifyStats)(target, mult * 1, mult * 1, input.board, input.hero, input.gameState);
|
|
11
|
+
input.gameState.spectator.registerPowerTarget(minion, target, input.board, input.hero, input.otherHero);
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=gentle-stag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gentle-stag.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/gentle-stag.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,UAAU,GAAuB;IAC7C,OAAO,EAAE,8BAAkD;IAC3D,cAAc,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,mBAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnD,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACzG,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { OnOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const GentleStag: OnOtherSpawnedCard = {\r\n\tcardIds: [TempCardIds.GentleStag, TempCardIds.GentleStag_G],\r\n\tonOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tconst mult = minion.cardId === TempCardIds.GentleStag_G ? 2 : 1;\r\n\t\tconst target = input.board[input.board.length - 1];\r\n\t\tmodifyStats(target, mult * 1, mult * 1, input.board, input.hero, input.gameState);\r\n\t\tinput.gameState.spectator.registerPowerTarget(minion, target, input.board, input.hero, input.otherHero);\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Hydralisk = void 0;
|
|
4
|
+
const stats_1 = require("../../../simulation/stats");
|
|
5
|
+
exports.Hydralisk = {
|
|
6
|
+
cardIds: ["Hydralisk", "Hydralisk_G"],
|
|
7
|
+
onAttack: (minion, input) => {
|
|
8
|
+
if (minion !== input.attacker) {
|
|
9
|
+
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
10
|
+
}
|
|
11
|
+
const buff = input.attackingHero.tavernTier;
|
|
12
|
+
(0, stats_1.modifyStats)(minion, buff, 0, input.attackingBoard, input.attackingHero, input.gameState);
|
|
13
|
+
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=hydralisk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydralisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/hydralisk.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,SAAS,GAAiB;IACtC,OAAO,EAAE,4BAAgD;IACzD,QAAQ,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACvD,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE;YAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;QAC5C,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACzF,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { OnAttackCard } from '../../card.interface';\r\n\r\nexport const Hydralisk: OnAttackCard = {\r\n\tcardIds: [TempCardIds.Hydralisk, TempCardIds.Hydralisk_G],\r\n\tonAttack: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tif (minion !== input.attacker) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\t\tconst buff = input.attackingHero.tavernTier;\r\n\t\tmodifyStats(minion, buff, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Immortal = void 0;
|
|
4
|
+
const attack_1 = require("../../../simulation/attack");
|
|
5
|
+
const stats_1 = require("../../../simulation/stats");
|
|
6
|
+
exports.Immortal = {
|
|
7
|
+
cardIds: ["Immortal", "Immortal_G"],
|
|
8
|
+
startOfCombat: (minion, input) => {
|
|
9
|
+
const multiplier = minion.cardId === "Immortal_G" ? 2 : 1;
|
|
10
|
+
const neighbours = (0, attack_1.getNeighbours)(input.playerBoard, minion);
|
|
11
|
+
const neighboursAttack = neighbours.map((entity) => entity.attack).reduce((a, b) => a + b, 0);
|
|
12
|
+
const neighboursHealth = neighbours.map((entity) => entity.health).reduce((a, b) => a + b, 0);
|
|
13
|
+
(0, stats_1.modifyStats)(minion, multiplier * neighboursAttack, multiplier * neighboursHealth, input.playerBoard, input.playerEntity, input.gameState);
|
|
14
|
+
input.gameState.spectator.registerPowerTarget(minion, minion, input.playerBoard, input.playerEntity, input.opponentEntity);
|
|
15
|
+
return true;
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=immortal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"immortal.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/immortal.ts"],"names":[],"mappings":";;;AACA,uDAA2D;AAE3D,qDAAwD;AAI3C,QAAA,QAAQ,GAAsB;IAC1C,OAAO,EAAE,0BAA8C;IACvD,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,IAAA,mBAAW,EACV,MAAM,EACN,UAAU,GAAG,gBAAgB,EAC7B,UAAU,GAAG,gBAAgB,EAC7B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Immortal: StartOfCombatCard = {\r\n\tcardIds: [TempCardIds.Immortal, TempCardIds.Immortal_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst multiplier = minion.cardId === TempCardIds.Immortal_G ? 2 : 1;\r\n\t\tconst neighbours = getNeighbours(input.playerBoard, minion);\r\n\t\tconst neighboursAttack = neighbours.map((entity) => entity.attack).reduce((a, b) => a + b, 0);\r\n\t\tconst neighboursHealth = neighbours.map((entity) => entity.health).reduce((a, b) => a + b, 0);\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tmultiplier * neighboursAttack,\r\n\t\t\tmultiplier * neighboursHealth,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.opponentEntity,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
|
|
@@ -18,7 +18,7 @@ exports.KarmicChameleon = {
|
|
|
18
18
|
attackImmediately: false,
|
|
19
19
|
}, input.gameState.cardsData);
|
|
20
20
|
if (minion.cardId === "BG31_802_G") {
|
|
21
|
-
(0, golden_1.makeMinionGolden)(clone, minion, input.board, input.hero, input.otherHero, input.gameState);
|
|
21
|
+
(0, golden_1.makeMinionGolden)(clone, minion, input.board, input.hero, input.otherBoard, input.otherHero, input.gameState);
|
|
22
22
|
}
|
|
23
23
|
input.gameState.spectator.registerPowerTarget(minion, minionToTheLeft, input.board, input.hero, input.otherHero);
|
|
24
24
|
input.board.splice(chameleonIndex, 1, clone);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"karmic-chameleon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/karmic-chameleon.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"karmic-chameleon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/karmic-chameleon.ts"],"names":[],"mappings":";;;AAGA,6DAAoE;AACpE,0CAAqD;AAGxC,QAAA,eAAe,GAAe;IAC1C,OAAO,EAAE,0BAAsE;IAC/E,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9F,IAAI,cAAc,GAAG,CAAC,EAAE;YACvB,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;YACxD,MAAM,KAAK,GAAgB,IAAA,2BAAmB,EAC7C;gBACC,GAAG,eAAe;gBAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;gBACvD,oBAAoB,EAAE,IAAI;gBAC1B,cAAc,EAAE,KAAK;gBACrB,iBAAiB,EAAE,KAAK;aACxB,EACD,KAAK,CAAC,SAAS,CAAC,SAAS,CACzB,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,iBAAuC,EAAE;gBACzD,IAAA,yBAAgB,EACf,KAAK,EACL,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CACf,CAAC;aACF;YACD,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,eAAe,EACf,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;YACF,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAC7C;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { makeMinionGolden } from '../../../simulation/utils/golden';\r\nimport { addImpliedMechanics } from '../../../utils';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const KarmicChameleon: AvengeCard = {\r\n\tcardIds: [CardIds.KarmicChameleon_BG31_802, CardIds.KarmicChameleon_BG31_802_G],\r\n\tbaseAvengeValue: (cardId: string) => 5,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tconst chameleonIndex = input.board.findIndex((entity) => entity.entityId === minion.entityId);\r\n\t\tif (chameleonIndex > 0) {\r\n\t\t\tconst minionToTheLeft = input.board[chameleonIndex - 1];\r\n\t\t\tconst clone: BoardEntity = addImpliedMechanics(\r\n\t\t\t\t{\r\n\t\t\t\t\t...minionToTheLeft,\r\n\t\t\t\t\tentityId: input.gameState.sharedState.currentEntityId++,\r\n\t\t\t\t\tlastAffectedByEntity: null,\r\n\t\t\t\t\tdefinitelyDead: false,\r\n\t\t\t\t\tattackImmediately: false,\r\n\t\t\t\t},\r\n\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t);\r\n\t\t\tif (minion.cardId === CardIds.KarmicChameleon_BG31_802_G) {\r\n\t\t\t\tmakeMinionGolden(\r\n\t\t\t\t\tclone,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tinput.board,\r\n\t\t\t\t\tinput.hero,\r\n\t\t\t\t\tinput.otherBoard,\r\n\t\t\t\t\tinput.otherHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tminion,\r\n\t\t\t\tminionToTheLeft,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.otherHero,\r\n\t\t\t);\r\n\t\t\tinput.board.splice(chameleonIndex, 1, clone);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Lurker = void 0;
|
|
4
|
+
const stats_1 = require("../../../simulation/stats");
|
|
5
|
+
exports.Lurker = {
|
|
6
|
+
cardIds: ["Lurker", "Lurker_G"],
|
|
7
|
+
baseAvengeValue: (cardId) => 2,
|
|
8
|
+
avenge: (minion, input) => {
|
|
9
|
+
(0, stats_1.modifyStats)(minion, 1, 1, input.board, input.hero, input.gameState);
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=lurker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lurker.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/lurker.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,MAAM,GAAe;IACjC,OAAO,EAAE,sBAA0C;IACnD,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAQ,EAAE;QACzD,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const Lurker: AvengeCard = {\r\n\tcardIds: [TempCardIds.Lurker, TempCardIds.Lurker_G],\r\n\tbaseAvengeValue: (cardId: string) => 2,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput): void => {\r\n\t\tmodifyStats(minion, 1, 1, input.board, input.hero, input.gameState);\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Mothership = void 0;
|
|
4
|
+
const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
|
|
5
|
+
exports.Mothership = {
|
|
6
|
+
cardIds: ["Mothership", "Mothership_G"],
|
|
7
|
+
baseAvengeValue: (cardId) => 5,
|
|
8
|
+
avenge: (minion, input) => {
|
|
9
|
+
const cards = minion.cardId === "Mothership_G" ? 2 : 1;
|
|
10
|
+
const cardsAdded = Array(cards).map(() => input.gameState.cardsData.getRandomProtossMinion(input.hero.tavernTier));
|
|
11
|
+
(0, cards_in_hand_1.addCardsInHand)(input.hero, input.board, cardsAdded, input.gameState);
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=mothership.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mothership.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mothership.ts"],"names":[],"mappings":";;;AAEA,qEAAmE;AAItD,QAAA,UAAU,GAAe;IACrC,OAAO,EAAE,8BAAkD;IAC3D,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAQ,EAAE;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,mBAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CACxC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CACvE,CAAC;QACF,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const Mothership: AvengeCard = {\r\n\tcardIds: [TempCardIds.Mothership, TempCardIds.Mothership_G],\r\n\tbaseAvengeValue: (cardId: string) => 5,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput): void => {\r\n\t\tconst cards = minion.cardId === TempCardIds.Mothership_G ? 2 : 1;\r\n\t\tconst cardsAdded = Array(cards).map(() =>\r\n\t\t\tinput.gameState.cardsData.getRandomProtossMinion(input.hero.tavernTier),\r\n\t\t);\r\n\t\taddCardsInHand(input.hero, input.board, cardsAdded, input.gameState);\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Mutalisk = void 0;
|
|
4
|
+
const stats_1 = require("../../../simulation/stats");
|
|
5
|
+
exports.Mutalisk = {
|
|
6
|
+
cardIds: ["Mutalisk", "Mutalisk_G"],
|
|
7
|
+
onMinionKilled: (minion, input) => {
|
|
8
|
+
(0, stats_1.modifyStats)(minion, 4, 4, input.attackingBoard, input.attackingHero, input.gameState);
|
|
9
|
+
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=mutalisk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutalisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mutalisk.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,QAAQ,GAAuB;IAC3C,OAAO,EAAE,0BAA8C;IACvD,cAAc,EAAE,CACf,MAAmB,EACnB,KAA0B,EACiC,EAAE;QAC7D,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACtF,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnMinionKilledInput } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { OnMinionKilledCard } from '../../card.interface';\r\n\r\nexport const Mutalisk: OnMinionKilledCard = {\r\n\tcardIds: [TempCardIds.Mutalisk, TempCardIds.Mutalisk_G],\r\n\tonMinionKilled: (\r\n\t\tminion: BoardEntity,\r\n\t\tinput: OnMinionKilledInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tmodifyStats(minion, 4, 4, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MythraxTheUnraveler = void 0;
|
|
4
|
+
const stats_1 = require("../../../simulation/stats");
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
6
|
+
exports.MythraxTheUnraveler = {
|
|
7
|
+
cardIds: ["BGS_202", "TB_BaconUps_258"],
|
|
8
|
+
endOfTurn: (minion, input) => {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
const differentTypes = (_b = (_a = (0, utils_1.getMinionsOfDifferentTypes)(input.board, input.hero, input.gameState)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
|
|
11
|
+
if (differentTypes) {
|
|
12
|
+
const mult = minion.cardId === "TB_BaconUps_258" ? 2 : 1;
|
|
13
|
+
(0, stats_1.modifyStats)(minion, mult * 2 * differentTypes, mult * 1 * differentTypes, input.board, input.hero, input.gameState);
|
|
14
|
+
input.gameState.spectator.registerPowerTarget(minion, minion, input.board, input.hero, input.otherHero);
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=mythrax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mythrax.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mythrax.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AACxD,0CAA4D;AAG/C,QAAA,mBAAmB,GAAkB;IACjD,OAAO,EAAE,8BAAkF;IAC3F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;;QACzD,MAAM,cAAc,GAAG,MAAA,MAAA,IAAA,kCAA0B,EAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,0CAAE,MAAM,mCAAI,CAAC,CAAC;QACzG,IAAI,cAAc,EAAE;YACnB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,sBAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,IAAA,mBAAW,EACV,MAAM,EACN,IAAI,GAAG,CAAC,GAAG,cAAc,EACzB,IAAI,GAAG,CAAC,GAAG,cAAc,EACzB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;YACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACxG;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getMinionsOfDifferentTypes } from '../../../utils';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const MythraxTheUnraveler: EndOfTurnCard = {\r\n\tcardIds: [CardIds.MythraxTheUnraveler_BGS_202, CardIds.MythraxTheUnraveler_TB_BaconUps_258],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst differentTypes = getMinionsOfDifferentTypes(input.board, input.hero, input.gameState)?.length ?? 0;\r\n\t\tif (differentTypes) {\r\n\t\t\tconst mult = minion.cardId === CardIds.MythraxTheUnraveler_TB_BaconUps_258 ? 2 : 1;\r\n\t\t\tmodifyStats(\r\n\t\t\t\tminion,\r\n\t\t\t\tmult * 2 * differentTypes,\r\n\t\t\t\tmult * 1 * differentTypes,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(minion, minion, input.board, input.hero, input.otherHero);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
|
|
@@ -14,7 +14,7 @@ exports.Sandy = {
|
|
|
14
14
|
const attackerIndex = input.playerBoard.indexOf(minion);
|
|
15
15
|
input.playerBoard.splice(attackerIndex, 0, copy);
|
|
16
16
|
if (isGolden) {
|
|
17
|
-
(0, golden_1.makeMinionGolden)(copy, copy, input.playerBoard, input.playerEntity, input.opponentEntity, input.gameState);
|
|
17
|
+
(0, golden_1.makeMinionGolden)(copy, copy, input.playerBoard, input.playerEntity, input.opponentBoard, input.opponentEntity, input.gameState);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandy.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/sandy.ts"],"names":[],"mappings":";;;AAGA,6DAAoE;AACpE,0CAA2F;AAE9E,QAAA,KAAK,GAAG;IACpB,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QACvD,MAAM,aAAa,GAAG,IAAA,+BAAuB,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7F,IAAI,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,0CAAE,MAAM,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,kBAA8B,CAAC;YAC7D,MAAM,YAAY,GAAG,IAAA,wCAAgC,EAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3E,MAAM,IAAI,GAAgB,EAAE,GAAG,YAAY,EAAE,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5F,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAExD,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACjD,IAAI,QAAQ,EAAE;gBACb,IAAA,yBAAgB,EACf,IAAI,EACJ,IAAI,EACJ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { makeMinionGolden } from '../../../simulation/utils/golden';\r\nimport { getRandomMinionWithHighestHealth, getTeammateInitialState } from '../../../utils';\r\n\r\nexport const Sandy = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst teammateState = getTeammateInitialState(input.gameState.gameState, input.playerEntity);\r\n\t\tif (teammateState?.board?.length) {\r\n\t\t\tconst isGolden = minion.cardId === CardIds.Sandy_BGDUO_125_G;\r\n\t\t\tconst minionToCopy = getRandomMinionWithHighestHealth(teammateState.board);\r\n\t\t\tconst copy: BoardEntity = { ...minionToCopy, enchantments: [...minionToCopy.enchantments] };\r\n\t\t\tconst attackerIndex = input.playerBoard.indexOf(minion);\r\n\t\t\t// Insert the copy in its place\r\n\t\t\tinput.playerBoard.splice(attackerIndex, 0, copy);\r\n\t\t\tif (isGolden) {\r\n\t\t\t\tmakeMinionGolden(\r\n\t\t\t\t\tcopy,\r\n\t\t\t\t\tcopy,\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\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"sandy.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/sandy.ts"],"names":[],"mappings":";;;AAGA,6DAAoE;AACpE,0CAA2F;AAE9E,QAAA,KAAK,GAAG;IACpB,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QACvD,MAAM,aAAa,GAAG,IAAA,+BAAuB,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7F,IAAI,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,0CAAE,MAAM,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,kBAA8B,CAAC;YAC7D,MAAM,YAAY,GAAG,IAAA,wCAAgC,EAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3E,MAAM,IAAI,GAAgB,EAAE,GAAG,YAAY,EAAE,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5F,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAExD,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACjD,IAAI,QAAQ,EAAE;gBACb,IAAA,yBAAgB,EACf,IAAI,EACJ,IAAI,EACJ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { makeMinionGolden } from '../../../simulation/utils/golden';\r\nimport { getRandomMinionWithHighestHealth, getTeammateInitialState } from '../../../utils';\r\n\r\nexport const Sandy = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst teammateState = getTeammateInitialState(input.gameState.gameState, input.playerEntity);\r\n\t\tif (teammateState?.board?.length) {\r\n\t\t\tconst isGolden = minion.cardId === CardIds.Sandy_BGDUO_125_G;\r\n\t\t\tconst minionToCopy = getRandomMinionWithHighestHealth(teammateState.board);\r\n\t\t\tconst copy: BoardEntity = { ...minionToCopy, enchantments: [...minionToCopy.enchantments] };\r\n\t\t\tconst attackerIndex = input.playerBoard.indexOf(minion);\r\n\t\t\t// Insert the copy in its place\r\n\t\t\tinput.playerBoard.splice(attackerIndex, 0, copy);\r\n\t\t\tif (isGolden) {\r\n\t\t\t\tmakeMinionGolden(\r\n\t\t\t\t\tcopy,\r\n\t\t\t\t\tcopy,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\tinput.opponentEntity,\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 true;\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StitchedSalvager = void 0;
|
|
4
|
+
const utils_1 = require("../../../utils");
|
|
5
|
+
exports.StitchedSalvager = {
|
|
6
|
+
cardIds: ["StitchedSalvager", "StitchedSalvager_G"],
|
|
7
|
+
startOfCombat: (minion, input) => {
|
|
8
|
+
const minionIndex = input.playerBoard.indexOf(minion);
|
|
9
|
+
const targets = [];
|
|
10
|
+
if (minionIndex > 0) {
|
|
11
|
+
targets.push(input.playerBoard[minionIndex - 1]);
|
|
12
|
+
}
|
|
13
|
+
if (minion.cardId === "StitchedSalvager_G" && minionIndex < input.playerBoard.length - 1) {
|
|
14
|
+
targets.push(input.playerBoard[minionIndex + 1]);
|
|
15
|
+
}
|
|
16
|
+
if (!targets.length) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
minion.memory = targets.map((t) => (0, utils_1.copyEntity)(t));
|
|
20
|
+
for (const target of targets) {
|
|
21
|
+
target.definitelyDead = true;
|
|
22
|
+
input.gameState.spectator.registerPowerTarget(input.playerEntity, target, input.playerBoard, input.playerEntity, input.opponentEntity);
|
|
23
|
+
}
|
|
24
|
+
return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
|
|
25
|
+
},
|
|
26
|
+
deathrattleSpawn: (minion, input) => {
|
|
27
|
+
var _a;
|
|
28
|
+
return ((_a = minion.memory) !== null && _a !== void 0 ? _a : []);
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=stitched-salvager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stitched-salvager.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/stitched-salvager.ts"],"names":[],"mappings":";;;AAIA,0CAA4C;AAG/B,QAAA,gBAAgB,GAA6C;IACzE,OAAO,EAAE,0CAA8D;IACvE,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,WAAW,GAAG,CAAC,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;SACjD;QACD,IAAI,MAAM,CAAC,MAAM,yBAAmC,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACnG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACpB,OAAO;SACP;QAED,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,CAA2B,CAAC;QAC5E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;YAC7B,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,YAAY,EAClB,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;SACF;QACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC;IACD,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;;QACnG,OAAO,CAAC,MAAA,MAAM,CAAC,MAAM,mCAAI,EAAE,CAAkB,CAAC;IAC/C,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { copyEntity } from '../../../utils';\r\nimport { DeathrattleSpawnCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const StitchedSalvager: StartOfCombatCard & DeathrattleSpawnCard = {\r\n\tcardIds: [TempCardIds.StitchedSalvager, TempCardIds.StitchedSalvager_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst minionIndex = input.playerBoard.indexOf(minion);\r\n\t\tconst targets = [];\r\n\t\tif (minionIndex > 0) {\r\n\t\t\ttargets.push(input.playerBoard[minionIndex - 1]);\r\n\t\t}\r\n\t\tif (minion.cardId === TempCardIds.StitchedSalvager_G && minionIndex < input.playerBoard.length - 1) {\r\n\t\t\ttargets.push(input.playerBoard[minionIndex + 1]);\r\n\t\t}\r\n\t\tif (!targets.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tminion.memory = targets.map((t) => copyEntity(t)) as readonly BoardEntity[];\r\n\t\tfor (const target of targets) {\r\n\t\t\ttarget.definitelyDead = true;\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t},\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\treturn (minion.memory ?? []) as BoardEntity[];\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Ultralisk = void 0;
|
|
4
|
+
const stats_1 = require("../../../simulation/stats");
|
|
5
|
+
exports.Ultralisk = {
|
|
6
|
+
cardIds: ["Ultralisk", "Ultralisk_G"],
|
|
7
|
+
startOfCombat: (minion, input) => {
|
|
8
|
+
const multiplier = minion.cardId === "Ultralisk_G" ? 3 : 2;
|
|
9
|
+
(0, stats_1.modifyStats)(minion, multiplier * minion.attack, multiplier * minion.health, input.playerBoard, input.playerEntity, input.gameState);
|
|
10
|
+
input.gameState.spectator.registerPowerTarget(minion, minion, input.playerBoard, input.playerEntity, input.opponentEntity);
|
|
11
|
+
return true;
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=ultralisk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ultralisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/ultralisk.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,SAAS,GAAsB;IAC3C,OAAO,EAAE,4BAAgD;IACzD,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAW,EAAE;QAChE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,kBAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAA,mBAAW,EACV,MAAM,EACN,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Ultralisk: StartOfCombatCard = {\r\n\tcardIds: [TempCardIds.Ultralisk, TempCardIds.Ultralisk_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput): boolean => {\r\n\t\tconst multiplier = minion.cardId === TempCardIds.Ultralisk_G ? 3 : 2;\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tmultiplier * minion.attack,\r\n\t\t\tmultiplier * minion.health,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.opponentEntity,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VoidRay = void 0;
|
|
4
|
+
const stats_1 = require("../../../simulation/stats");
|
|
5
|
+
exports.VoidRay = {
|
|
6
|
+
cardIds: ["VoidRay", "VoidRay_G"],
|
|
7
|
+
onAttack: (minion, input) => {
|
|
8
|
+
const mult = minion.cardId === "VoidRay_G" ? 2 : 1;
|
|
9
|
+
(0, stats_1.modifyStats)(input.attacker, 5 * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);
|
|
10
|
+
(0, stats_1.modifyStats)(minion, 5 * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);
|
|
11
|
+
return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=void-ray.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"void-ray.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/void-ray.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,OAAO,GAAiB;IACpC,OAAO,EAAE,wBAA4C;IACrD,QAAQ,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,gBAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAA,mBAAW,EAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACrG,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7F,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { OnAttackCard } from '../../card.interface';\r\n\r\nexport const VoidRay: OnAttackCard = {\r\n\tcardIds: [TempCardIds.VoidRay, TempCardIds.VoidRay_G],\r\n\tonAttack: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === TempCardIds.VoidRay_G ? 2 : 1;\r\n\t\tmodifyStats(input.attacker, 5 * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\tmodifyStats(minion, 5 * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WildfireElemental = void 0;
|
|
4
|
+
const attack_1 = require("../../../simulation/attack");
|
|
5
|
+
exports.WildfireElemental = {
|
|
6
|
+
cardIds: ["BGS_126", "TB_BaconUps_166"],
|
|
7
|
+
onMinionKilled: (minion, input) => {
|
|
8
|
+
const excessDamage = -input.minionKilled.health;
|
|
9
|
+
let damageDoneByAttacker = 0;
|
|
10
|
+
if (input.defenderNeighbours.length > 0) {
|
|
11
|
+
if (minion.cardId === "BGS_126") {
|
|
12
|
+
const randomTarget = input.defenderNeighbours[Math.floor(Math.random() * input.defenderNeighbours.length)];
|
|
13
|
+
damageDoneByAttacker += (0, attack_1.dealDamageToMinion)(randomTarget, input.defendingBoard, input.defendingHero, input.minionKilled.lastAffectedByEntity, excessDamage, input.attackingBoard, input.attackingHero, input.gameState);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
damageDoneByAttacker += input.defenderNeighbours
|
|
17
|
+
.map((neighbour) => (0, attack_1.dealDamageToMinion)(neighbour, input.defendingBoard, input.defendingHero, input.minionKilled.lastAffectedByEntity, excessDamage, input.attackingBoard, input.attackingHero, input.gameState))
|
|
18
|
+
.reduce((a, b) => a + b, 0);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return { dmgDoneByAttacker: damageDoneByAttacker, dmgDoneByDefender: 0 };
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=wildfire-elemental.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wildfire-elemental.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/wildfire-elemental.ts"],"names":[],"mappings":";;;AAEA,uDAAqF;AAGxE,QAAA,iBAAiB,GAAuB;IACpD,OAAO,EAAE,8BAA8E;IACvF,cAAc,EAAE,CACf,MAAmB,EACnB,KAA0B,EACiC,EAAE;QAC7D,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;QAChD,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAE7B,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACxC,IAAI,MAAM,CAAC,MAAM,cAAsC,EAAE;gBACxD,MAAM,YAAY,GACjB,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvF,oBAAoB,IAAI,IAAA,2BAAkB,EACzC,YAAY,EACZ,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CAAC,oBAAoB,EACvC,YAAY,EACZ,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;aACF;iBAAM;gBACN,oBAAoB,IAAI,KAAK,CAAC,kBAAkB;qBAC9C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAClB,IAAA,2BAAkB,EACjB,SAAS,EACT,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CAAC,oBAAoB,EACvC,YAAY,EACZ,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CACD;qBACA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7B;SACD;QACD,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IAC1E,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { dealDamageToMinion, OnMinionKilledInput } from '../../../simulation/attack';\r\nimport { OnMinionKilledCard } from '../../card.interface';\r\n\r\nexport const WildfireElemental: OnMinionKilledCard = {\r\n\tcardIds: [CardIds.WildfireElemental_BGS_126, CardIds.WildfireElemental_TB_BaconUps_166],\r\n\tonMinionKilled: (\r\n\t\tminion: BoardEntity,\r\n\t\tinput: OnMinionKilledInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tconst excessDamage = -input.minionKilled.health;\r\n\t\tlet damageDoneByAttacker = 0;\r\n\t\t// console.log('neighbours', stringifySimple(neighbours, allCards));\r\n\t\tif (input.defenderNeighbours.length > 0) {\r\n\t\t\tif (minion.cardId === CardIds.WildfireElemental_BGS_126) {\r\n\t\t\t\tconst randomTarget =\r\n\t\t\t\t\tinput.defenderNeighbours[Math.floor(Math.random() * input.defenderNeighbours.length)];\r\n\t\t\t\tdamageDoneByAttacker += dealDamageToMinion(\r\n\t\t\t\t\trandomTarget,\r\n\t\t\t\t\tinput.defendingBoard,\r\n\t\t\t\t\tinput.defendingHero,\r\n\t\t\t\t\tinput.minionKilled.lastAffectedByEntity,\r\n\t\t\t\t\texcessDamage,\r\n\t\t\t\t\tinput.attackingBoard,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tdamageDoneByAttacker += input.defenderNeighbours\r\n\t\t\t\t\t.map((neighbour) =>\r\n\t\t\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\t\t\tneighbour,\r\n\t\t\t\t\t\t\tinput.defendingBoard,\r\n\t\t\t\t\t\t\tinput.defendingHero,\r\n\t\t\t\t\t\t\tinput.minionKilled.lastAffectedByEntity,\r\n\t\t\t\t\t\t\texcessDamage,\r\n\t\t\t\t\t\t\tinput.attackingBoard,\r\n\t\t\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.reduce((a, b) => a + b, 0);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: damageDoneByAttacker, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -17,7 +17,7 @@ exports.YulonFortuneGranter = {
|
|
|
17
17
|
input.gameState.cardsData.getTavernLevel(b.cardId));
|
|
18
18
|
const target = candidates[0];
|
|
19
19
|
if (!!target) {
|
|
20
|
-
(0, golden_1.makeMinionGolden)(target, minion, input.playerBoard, input.playerEntity, input.opponentEntity, input.gameState);
|
|
20
|
+
(0, golden_1.makeMinionGolden)(target, minion, input.playerBoard, input.playerEntity, input.opponentBoard, input.opponentEntity, input.gameState);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yulon-fortune-granter.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/yulon-fortune-granter.ts"],"names":[],"mappings":";;;AAEA,mDAAuD;AAEvD,6DAAoE;AACpE,0CAA0C;AAE7B,QAAA,mBAAmB,GAAG;IAClC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,iBAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW;iBACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;iBAC5D,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAAyC;gBACjD,CAAC,CAAC,MAAM,iBAA2C,CACpD,CAAC;YAEH,MAAM,WAAW,GAAG,IAAA,oBAAY,EAAC,cAAc,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;gBAClD,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CACnD,CAAC;YACF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,CAAC,MAAM,EAAE;gBACb,IAAA,yBAAgB,EACf,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { shuffleArray } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { makeMinionGolden } from '../../../simulation/utils/golden';\r\nimport { isGolden } from '../../../utils';\r\n\r\nexport const YulonFortuneGranter = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst loops = minion.cardId === CardIds.YulonFortuneGranter_BG29_811_G ? 2 : 1;\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\tconst candidateBoard = input.playerBoard\r\n\t\t\t\t.filter((e) => !isGolden(e.cardId, input.gameState.allCards))\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\te.cardId !== CardIds.YulonFortuneGranter_BG29_811 &&\r\n\t\t\t\t\t\te.cardId !== CardIds.YulonFortuneGranter_BG29_811_G,\r\n\t\t\t\t);\r\n\t\t\t// Because we pick one at random from all the ones that have the lowest tier\r\n\t\t\tconst randomBoard = shuffleArray(candidateBoard);\r\n\t\t\tconst candidates = randomBoard.sort(\r\n\t\t\t\t(a, b) =>\r\n\t\t\t\t\tinput.gameState.cardsData.getTavernLevel(a.cardId) -\r\n\t\t\t\t\tinput.gameState.cardsData.getTavernLevel(b.cardId),\r\n\t\t\t);\r\n\t\t\tconst target = candidates[0];\r\n\t\t\tif (!!target) {\r\n\t\t\t\tmakeMinionGolden(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tminion,\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\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"yulon-fortune-granter.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/yulon-fortune-granter.ts"],"names":[],"mappings":";;;AAEA,mDAAuD;AAEvD,6DAAoE;AACpE,0CAA0C;AAE7B,QAAA,mBAAmB,GAAG;IAClC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,iBAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW;iBACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;iBAC5D,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAAyC;gBACjD,CAAC,CAAC,MAAM,iBAA2C,CACpD,CAAC;YAEH,MAAM,WAAW,GAAG,IAAA,oBAAY,EAAC,cAAc,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;gBAClD,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CACnD,CAAC;YACF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,CAAC,MAAM,EAAE;gBACb,IAAA,yBAAgB,EACf,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { shuffleArray } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { makeMinionGolden } from '../../../simulation/utils/golden';\r\nimport { isGolden } from '../../../utils';\r\n\r\nexport const YulonFortuneGranter = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst loops = minion.cardId === CardIds.YulonFortuneGranter_BG29_811_G ? 2 : 1;\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\tconst candidateBoard = input.playerBoard\r\n\t\t\t\t.filter((e) => !isGolden(e.cardId, input.gameState.allCards))\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\te.cardId !== CardIds.YulonFortuneGranter_BG29_811 &&\r\n\t\t\t\t\t\te.cardId !== CardIds.YulonFortuneGranter_BG29_811_G,\r\n\t\t\t\t);\r\n\t\t\t// Because we pick one at random from all the ones that have the lowest tier\r\n\t\t\tconst randomBoard = shuffleArray(candidateBoard);\r\n\t\t\tconst candidates = randomBoard.sort(\r\n\t\t\t\t(a, b) =>\r\n\t\t\t\t\tinput.gameState.cardsData.getTavernLevel(a.cardId) -\r\n\t\t\t\t\tinput.gameState.cardsData.getTavernLevel(b.cardId),\r\n\t\t\t);\r\n\t\t\tconst target = candidates[0];\r\n\t\t\tif (!!target) {\r\n\t\t\t\tmakeMinionGolden(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\tinput.opponentEntity,\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 true;\r\n\t},\r\n};\r\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Zergling = void 0;
|
|
4
|
+
const add_minion_to_board_1 = require("../../../simulation/add-minion-to-board");
|
|
5
|
+
const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
|
|
6
|
+
const spawns_1 = require("../../../simulation/spawns");
|
|
7
|
+
const utils_1 = require("../../../utils");
|
|
8
|
+
exports.Zergling = {
|
|
9
|
+
cardIds: ["Zergling", "Zergling_G"],
|
|
10
|
+
startOfCombat: (minion, input) => {
|
|
11
|
+
let hasTriggered = false;
|
|
12
|
+
if (input.playerBoard.length < 7) {
|
|
13
|
+
const copy = (0, utils_1.copyEntity)(minion);
|
|
14
|
+
(0, add_minion_to_board_1.removeAurasFromSelf)(copy, input.playerBoard, input.playerEntity, input.gameState);
|
|
15
|
+
const newMinions = (0, deathrattle_spawns_1.spawnEntities)(copy.cardId, 1, input.playerBoard, input.playerEntity, input.opponentBoard, input.opponentEntity, input.gameState.allCards, input.gameState.cardsData, input.gameState.sharedState, input.gameState.spectator, input.playerEntity.friendly, false, false, false, copy);
|
|
16
|
+
const indexFromRight = input.playerBoard.length - input.playerBoard.indexOf(minion) - 1;
|
|
17
|
+
const spawns = (0, spawns_1.performEntitySpawns)(newMinions, input.playerBoard, input.playerEntity, input.playerEntity, indexFromRight, input.opponentBoard, input.opponentEntity, input.gameState);
|
|
18
|
+
hasTriggered = true;
|
|
19
|
+
}
|
|
20
|
+
return { hasTriggered: hasTriggered, shouldRecomputeCurrentAttacker: hasTriggered };
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=zergling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zergling.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/zergling.ts"],"names":[],"mappings":";;;AACA,iFAA8E;AAC9E,+EAAuE;AACvE,uDAAiE;AAGjE,0CAA4C;AAG/B,QAAA,QAAQ,GAAsB;IAC1C,OAAO,EAAE,0BAA8C;IACvD,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;YAChC,IAAA,yCAAmB,EAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAClF,MAAM,UAAU,GAAG,IAAA,kCAAa,EAC/B,IAAI,CAAC,MAAM,EACX,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,WAAW,EAC3B,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,YAAY,CAAC,QAAQ,EAC3B,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,CACJ,CAAC;YACF,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxF,MAAM,MAAM,GAAG,IAAA,4BAAmB,EACjC,UAAU,EACV,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,YAAY,EAClB,cAAc,EACd,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,YAAY,GAAG,IAAI,CAAC;SACpB;QACD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,8BAA8B,EAAE,YAAY,EAAE,CAAC;IACrF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { removeAurasFromSelf } from '../../../simulation/add-minion-to-board';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { copyEntity } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Zergling: StartOfCombatCard = {\r\n\tcardIds: [TempCardIds.Zergling, TempCardIds.Zergling_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tlet hasTriggered = false;\r\n\t\tif (input.playerBoard.length < 7) {\r\n\t\t\tconst copy = copyEntity(minion);\r\n\t\t\tremoveAurasFromSelf(copy, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t\tconst newMinions = spawnEntities(\r\n\t\t\t\tcopy.cardId,\r\n\t\t\t\t1,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t\tinput.gameState.sharedState,\r\n\t\t\t\tinput.gameState.spectator,\r\n\t\t\t\tinput.playerEntity.friendly,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tcopy,\r\n\t\t\t);\r\n\t\t\tconst indexFromRight = input.playerBoard.length - input.playerBoard.indexOf(minion) - 1;\r\n\t\t\tconst spawns = performEntitySpawns(\r\n\t\t\t\tnewMinions,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tindexFromRight,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\thasTriggered = true;\r\n\t\t}\r\n\t\treturn { hasTriggered: hasTriggered, shouldRecomputeCurrentAttacker: hasTriggered };\r\n\t},\r\n};\r\n"]}
|