@firestone-hs/simulate-bgs-battle 1.1.472 → 1.1.474
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/README.md +5 -6
- package/dist/bgs-player-entity.d.ts +1 -1
- package/dist/bgs-player-entity.js.map +1 -1
- package/dist/input-sanitation.js +12 -6
- package/dist/input-sanitation.js.map +1 -1
- package/dist/simulation/attack.js +1 -1
- package/dist/simulation/attack.js.map +1 -1
- package/dist/simulation/on-being-attacked.js +1 -1
- package/dist/simulation/on-being-attacked.js.map +1 -1
- package/dist/simulation/spectator/game-action.js +27 -13
- package/dist/simulation/spectator/game-action.js.map +1 -1
- package/dist/simulation/start-of-combat.js +5 -5
- package/dist/simulation/start-of-combat.js.map +1 -1
- package/dist/simulation/stats.js +5 -5
- package/dist/simulation/stats.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-being-attacked.js","sourceRoot":"","sources":["../../src/simulation/on-being-attacked.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { updateDivineShield } from '../divine-shield';\r\nimport { addStatsToBoard, updateVenomous } from '../utils';\r\nimport { getNeighbours } from './attack';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { handlePackTactics, handleSnakeTrap, handleSplittingImage, handleVenomstrikeTrap } from './secrets';\r\nimport { modifyStats, setEntityStats } from './stats';\r\n\r\nexport const applyOnBeingAttackedBuffs = (\r\n\tattackerEntity: BoardEntity,\r\n\tattackerBoard: BoardEntity[],\r\n\tattackerHero: BgsPlayerEntity,\r\n\tdefendingEntity: BoardEntity,\r\n\tdefendingBoard: BoardEntity[],\r\n\tdefendingPlayerEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\t// We need to respect the order of the secrets\r\n\tfor (const secret of (defendingPlayerEntity.secrets ?? []).filter((s) => !s.triggered)) {\r\n\t\tswitch (secret.cardId) {\r\n\t\t\tcase CardIds.AutodefenseMatrix_TB_Bacon_Secrets_07:\r\n\t\t\t\tif (!defendingEntity.divineShield) {\r\n\t\t\t\t\tsecret.triggered = true;\r\n\t\t\t\t\tupdateDivineShield(\r\n\t\t\t\t\t\tdefendingEntity,\r\n\t\t\t\t\t\tdefendingBoard,\r\n\t\t\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t\t\t\tattackerHero,\r\n\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SplittingImage_TB_Bacon_Secrets_04:\r\n\t\t\t\tif (defendingBoard.length < 7) {\r\n\t\t\t\t\tsecret.triggered = true;\r\n\t\t\t\t\thandleSplittingImage(\r\n\t\t\t\t\t\tdefendingEntity,\r\n\t\t\t\t\t\tdefendingBoard,\r\n\t\t\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t\t\t\tattackerBoard,\r\n\t\t\t\t\t\tattackerHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PackTactics_TB_Bacon_Secrets_15:\r\n\t\t\t\tif (defendingBoard.length < 7) {\r\n\t\t\t\t\tsecret.triggered = true;\r\n\t\t\t\t\thandlePackTactics(\r\n\t\t\t\t\t\tdefendingEntity,\r\n\t\t\t\t\t\tdefendingBoard,\r\n\t\t\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t\t\t\tattackerBoard,\r\n\t\t\t\t\t\tattackerHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SnakeTrap_TB_Bacon_Secrets_02:\r\n\t\t\t\tif (defendingBoard.length < 7) {\r\n\t\t\t\t\tsecret.triggered = true;\r\n\t\t\t\t\thandleSnakeTrap(\r\n\t\t\t\t\t\tdefendingEntity,\r\n\t\t\t\t\t\tdefendingBoard,\r\n\t\t\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t\t\t\tattackerBoard,\r\n\t\t\t\t\t\tattackerHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.VenomstrikeTrap_TB_Bacon_Secrets_01:\r\n\t\t\t\tif (defendingBoard.length < 7) {\r\n\t\t\t\t\tsecret.triggered = true;\r\n\t\t\t\t\thandleVenomstrikeTrap(\r\n\t\t\t\t\t\tdefendingEntity,\r\n\t\t\t\t\t\tdefendingBoard,\r\n\t\t\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t\t\t\tattackerBoard,\r\n\t\t\t\t\t\tattackerHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (defendingEntity.taunt) {\r\n\t\tconst champions = defendingBoard.filter((entity) => entity.cardId === CardIds.ChampionOfYshaarj_BGS_111);\r\n\t\tconst goldenChampions = defendingBoard.filter(\r\n\t\t\t(entity) => entity.cardId === CardIds.ChampionOfYshaarj_TB_BaconUps_301,\r\n\t\t);\r\n\t\tchampions.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 1, 2, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tentity,\r\n\t\t\t\tentity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\t\tgoldenChampions.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 2, 4, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tentity,\r\n\t\t\t\tentity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tconst arms = defendingBoard.filter((entity) => entity.cardId === CardIds.ArmOfTheEmpire_BGS_110);\r\n\t\tconst goldenArms = defendingBoard.filter((entity) => entity.cardId === CardIds.ArmOfTheEmpire_TB_BaconUps_302);\r\n\t\tarms.forEach((arm) => {\r\n\t\t\tmodifyStats(defendingEntity, 2, 0, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tarm,\r\n\t\t\t\tdefendingEntity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\t\tgoldenArms.forEach((arm) => {\r\n\t\t\tmodifyStats(defendingEntity, 4, 0, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tarm,\r\n\t\t\t\tdefendingEntity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tdefendingBoard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.WanderingTreant_TB_BaconShop_HERO_95_Buddy ||\r\n\t\t\t\t\te.cardId === CardIds.WanderingTreant_TB_BaconShop_HERO_95_Buddy_G,\r\n\t\t\t)\r\n\t\t\t.forEach((entity) => {\r\n\t\t\t\tconst buff = entity.cardId === CardIds.WanderingTreant_TB_BaconShop_HERO_95_Buddy ? 1 : 2;\r\n\t\t\t\taddStatsToBoard(entity, defendingBoard, defendingPlayerEntity, buff, 0, gameState);\r\n\t\t\t});\r\n\t}\r\n\r\n\t// Based on defending entity\r\n\tif (defendingEntity.cardId === CardIds.TormentedRitualist_BGS_201) {\r\n\t\tconst neighbours = getNeighbours(defendingBoard, defendingEntity);\r\n\t\tneighbours.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 1, 1, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tdefendingEntity,\r\n\t\t\t\tentity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\t} else if (defendingEntity.cardId === CardIds.TormentedRitualist_TB_BaconUps_257) {\r\n\t\tconst neighbours = getNeighbours(defendingBoard, defendingEntity);\r\n\t\tneighbours.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 2, 2, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tdefendingEntity,\r\n\t\t\t\tentity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\t} else if (\r\n\t\tdefendingEntity.cardId === CardIds.DozyWhelp_BG24_300 ||\r\n\t\tdefendingEntity.cardId === CardIds.DozyWhelp_BG24_300_G\r\n\t) {\r\n\t\tmodifyStats(\r\n\t\t\tdefendingEntity,\r\n\t\t\tdefendingEntity.cardId === CardIds.DozyWhelp_BG24_300_G ? 2 : 1,\r\n\t\t\t0,\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingPlayerEntity,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\tdefendingEntity,\r\n\t\t\tdefendingEntity,\r\n\t\t\tdefendingBoard,\r\n\t\t\tattackerHero,\r\n\t\t\tdefendingPlayerEntity,\r\n\t\t);\r\n\t} else if (\r\n\t\t[CardIds.AdaptableBarricade_BG27_022, CardIds.AdaptableBarricade_BG27_022_G].includes(\r\n\t\t\tdefendingEntity.cardId as CardIds,\r\n\t\t)\r\n\t) {\r\n\t\t// https://twitter.com/LoewenMitchell/status/1692225556559901031?s=20\r\n\t\tconst totalStats = defendingEntity.attack + defendingEntity.health;\r\n\t\tconst attackerAttack = attackerEntity.attack;\r\n\t\tif (defendingEntity.divineShield) {\r\n\t\t\tdefendingEntity.health = 1;\r\n\t\t\tdefendingEntity.attack = totalStats - defendingEntity.health;\r\n\t\t} else if (attackerEntity.venomous || attackerEntity.poisonous) {\r\n\t\t\t// Do nothing\r\n\t\t} else if (attackerAttack < totalStats) {\r\n\t\t\tdefendingEntity.health = attackerAttack + 1;\r\n\t\t\tdefendingEntity.attack = totalStats - defendingEntity.health;\r\n\t\t}\r\n\t} else if (\r\n\t\t[CardIds.GraniteGuardian_BG24_001, CardIds.GraniteGuardian_BG24_001_G].includes(\r\n\t\t\tdefendingEntity.cardId as CardIds,\r\n\t\t)\r\n\t) {\r\n\t\tattackerEntity.health = 1;\r\n\t} else if (\r\n\t\t[CardIds.WaywardGrimscale_BG28_406, CardIds.WaywardGrimscale_BG28_406_G].includes(\r\n\t\t\tdefendingEntity.cardId as CardIds,\r\n\t\t)\r\n\t) {\r\n\t\tupdateVenomous(defendingEntity, true, defendingBoard, defendingPlayerEntity, gameState);\r\n\t}\r\n\r\n\t// Based on attacking entity\r\n\tif (\r\n\t\tattackerEntity.cardId === CardIds.SindoreiStraightShot_BG25_016 ||\r\n\t\tattackerEntity.cardId === CardIds.SindoreiStraightShot_BG25_016_G\r\n\t) {\r\n\t\tdefendingEntity.taunt = false;\r\n\t\tdefendingEntity.reborn = false;\r\n\t} else if (\r\n\t\t[CardIds.TransmutedBramblewitch_BG27_013, CardIds.TransmutedBramblewitch_BG27_013_G].includes(\r\n\t\t\tattackerEntity.cardId as CardIds,\r\n\t\t) &&\r\n\t\tattackerEntity.abiityChargesLeft > 0\r\n\t) {\r\n\t\t// TODO: also modify all code that directly sets the stats of an entity\r\n\t\tsetEntityStats(defendingEntity, 3, 3, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\tattackerEntity.abiityChargesLeft--;\r\n\t}\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"on-being-attacked.js","sourceRoot":"","sources":["../../src/simulation/on-being-attacked.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { updateDivineShield } from '../divine-shield';\r\nimport { addStatsToBoard, updateVenomous } from '../utils';\r\nimport { getNeighbours } from './attack';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { handlePackTactics, handleSnakeTrap, handleSplittingImage, handleVenomstrikeTrap } from './secrets';\r\nimport { modifyStats, setEntityStats } from './stats';\r\n\r\nexport const applyOnBeingAttackedBuffs = (\r\n\tattackerEntity: BoardEntity,\r\n\tattackerBoard: BoardEntity[],\r\n\tattackerHero: BgsPlayerEntity,\r\n\tdefendingEntity: BoardEntity,\r\n\tdefendingBoard: BoardEntity[],\r\n\tdefendingPlayerEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\t// We need to respect the order of the secrets\r\n\tfor (const secret of (defendingPlayerEntity.secrets ?? []).filter((s) => !s.triggered)) {\r\n\t\tswitch (secret.cardId) {\r\n\t\t\tcase CardIds.AutodefenseMatrix_TB_Bacon_Secrets_07:\r\n\t\t\t\tif (!defendingEntity.divineShield) {\r\n\t\t\t\t\tsecret.triggered = true;\r\n\t\t\t\t\tupdateDivineShield(\r\n\t\t\t\t\t\tdefendingEntity,\r\n\t\t\t\t\t\tdefendingBoard,\r\n\t\t\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t\t\t\tattackerHero,\r\n\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SplittingImage_TB_Bacon_Secrets_04:\r\n\t\t\t\tif (defendingBoard.length < 7) {\r\n\t\t\t\t\tsecret.triggered = true;\r\n\t\t\t\t\thandleSplittingImage(\r\n\t\t\t\t\t\tdefendingEntity,\r\n\t\t\t\t\t\tdefendingBoard,\r\n\t\t\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t\t\t\tattackerBoard,\r\n\t\t\t\t\t\tattackerHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PackTactics_TB_Bacon_Secrets_15:\r\n\t\t\t\tif (defendingBoard.length < 7) {\r\n\t\t\t\t\tsecret.triggered = true;\r\n\t\t\t\t\thandlePackTactics(\r\n\t\t\t\t\t\tdefendingEntity,\r\n\t\t\t\t\t\tdefendingBoard,\r\n\t\t\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t\t\t\tattackerBoard,\r\n\t\t\t\t\t\tattackerHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SnakeTrap_TB_Bacon_Secrets_02:\r\n\t\t\t\tif (defendingBoard.length < 7) {\r\n\t\t\t\t\tsecret.triggered = true;\r\n\t\t\t\t\thandleSnakeTrap(\r\n\t\t\t\t\t\tdefendingEntity,\r\n\t\t\t\t\t\tdefendingBoard,\r\n\t\t\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t\t\t\tattackerBoard,\r\n\t\t\t\t\t\tattackerHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.VenomstrikeTrap_TB_Bacon_Secrets_01:\r\n\t\t\t\tif (defendingBoard.length < 7) {\r\n\t\t\t\t\tsecret.triggered = true;\r\n\t\t\t\t\thandleVenomstrikeTrap(\r\n\t\t\t\t\t\tdefendingEntity,\r\n\t\t\t\t\t\tdefendingBoard,\r\n\t\t\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t\t\t\tattackerBoard,\r\n\t\t\t\t\t\tattackerHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (defendingEntity.taunt) {\r\n\t\tconst champions = defendingBoard.filter((entity) => entity.cardId === CardIds.ChampionOfYshaarj_BGS_111);\r\n\t\tconst goldenChampions = defendingBoard.filter(\r\n\t\t\t(entity) => entity.cardId === CardIds.ChampionOfYshaarj_TB_BaconUps_301,\r\n\t\t);\r\n\t\tchampions.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 1, 2, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tentity,\r\n\t\t\t\tentity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\t\tgoldenChampions.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 2, 4, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tentity,\r\n\t\t\t\tentity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tconst arms = defendingBoard.filter((entity) => entity.cardId === CardIds.ArmOfTheEmpire_BGS_110);\r\n\t\tconst goldenArms = defendingBoard.filter((entity) => entity.cardId === CardIds.ArmOfTheEmpire_TB_BaconUps_302);\r\n\t\tarms.forEach((arm) => {\r\n\t\t\tmodifyStats(defendingEntity, 2, 0, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tarm,\r\n\t\t\t\tdefendingEntity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\t\tgoldenArms.forEach((arm) => {\r\n\t\t\tmodifyStats(defendingEntity, 4, 0, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tarm,\r\n\t\t\t\tdefendingEntity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\tdefendingBoard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.WanderingTreant_TB_BaconShop_HERO_95_Buddy ||\r\n\t\t\t\t\te.cardId === CardIds.WanderingTreant_TB_BaconShop_HERO_95_Buddy_G,\r\n\t\t\t)\r\n\t\t\t.forEach((entity) => {\r\n\t\t\t\tconst buff = entity.cardId === CardIds.WanderingTreant_TB_BaconShop_HERO_95_Buddy ? 1 : 2;\r\n\t\t\t\taddStatsToBoard(entity, defendingBoard, defendingPlayerEntity, buff, 0, gameState);\r\n\t\t\t});\r\n\t}\r\n\r\n\t// Based on defending entity\r\n\tif (defendingEntity.cardId === CardIds.TormentedRitualist_BGS_201) {\r\n\t\tconst neighbours = getNeighbours(defendingBoard, defendingEntity);\r\n\t\tneighbours.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 1, 1, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tdefendingEntity,\r\n\t\t\t\tentity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\t} else if (defendingEntity.cardId === CardIds.TormentedRitualist_TB_BaconUps_257) {\r\n\t\tconst neighbours = getNeighbours(defendingBoard, defendingEntity);\r\n\t\tneighbours.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 2, 2, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tdefendingEntity,\r\n\t\t\t\tentity,\r\n\t\t\t\tdefendingBoard,\r\n\t\t\t\tattackerHero,\r\n\t\t\t\tdefendingPlayerEntity,\r\n\t\t\t);\r\n\t\t});\r\n\t} else if (\r\n\t\tdefendingEntity.cardId === CardIds.DozyWhelp_BG24_300 ||\r\n\t\tdefendingEntity.cardId === CardIds.DozyWhelp_BG24_300_G\r\n\t) {\r\n\t\tmodifyStats(\r\n\t\t\tdefendingEntity,\r\n\t\t\tdefendingEntity.cardId === CardIds.DozyWhelp_BG24_300_G ? 2 : 1,\r\n\t\t\t0,\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingPlayerEntity,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\tdefendingEntity,\r\n\t\t\tdefendingEntity,\r\n\t\t\tdefendingBoard,\r\n\t\t\tattackerHero,\r\n\t\t\tdefendingPlayerEntity,\r\n\t\t);\r\n\t} else if (\r\n\t\t[CardIds.AdaptableBarricade_BG27_022, CardIds.AdaptableBarricade_BG27_022_G].includes(\r\n\t\t\tdefendingEntity.cardId as CardIds,\r\n\t\t)\r\n\t) {\r\n\t\t// https://twitter.com/LoewenMitchell/status/1692225556559901031?s=20\r\n\t\tconst totalStats = defendingEntity.attack + defendingEntity.health;\r\n\t\tconst attackerAttack = attackerEntity.attack;\r\n\t\tif (defendingEntity.divineShield) {\r\n\t\t\tdefendingEntity.health = 1;\r\n\t\t\tdefendingEntity.attack = totalStats - defendingEntity.health;\r\n\t\t} else if (attackerEntity.venomous || attackerEntity.poisonous) {\r\n\t\t\t// Do nothing\r\n\t\t} else if (attackerAttack < totalStats) {\r\n\t\t\tdefendingEntity.health = attackerAttack + 1;\r\n\t\t\tdefendingEntity.attack = totalStats - defendingEntity.health;\r\n\t\t}\r\n\t} else if (\r\n\t\t[CardIds.GraniteGuardian_BG24_001, CardIds.GraniteGuardian_BG24_001_G].includes(\r\n\t\t\tdefendingEntity.cardId as CardIds,\r\n\t\t)\r\n\t) {\r\n\t\tsetEntityStats(attackerEntity, attackerEntity.attack, 1, attackerBoard, attackerHero, gameState);\r\n\t\t// attackerEntity.health = 1;\r\n\t} else if (\r\n\t\t[CardIds.WaywardGrimscale_BG28_406, CardIds.WaywardGrimscale_BG28_406_G].includes(\r\n\t\t\tdefendingEntity.cardId as CardIds,\r\n\t\t)\r\n\t) {\r\n\t\tupdateVenomous(defendingEntity, true, defendingBoard, defendingPlayerEntity, gameState);\r\n\t}\r\n\r\n\t// Based on attacking entity\r\n\tif (\r\n\t\tattackerEntity.cardId === CardIds.SindoreiStraightShot_BG25_016 ||\r\n\t\tattackerEntity.cardId === CardIds.SindoreiStraightShot_BG25_016_G\r\n\t) {\r\n\t\tdefendingEntity.taunt = false;\r\n\t\tdefendingEntity.reborn = false;\r\n\t} else if (\r\n\t\t[CardIds.TransmutedBramblewitch_BG27_013, CardIds.TransmutedBramblewitch_BG27_013_G].includes(\r\n\t\t\tattackerEntity.cardId as CardIds,\r\n\t\t) &&\r\n\t\tattackerEntity.abiityChargesLeft > 0\r\n\t) {\r\n\t\t// TODO: also modify all code that directly sets the stats of an entity\r\n\t\tsetEntityStats(defendingEntity, 3, 3, defendingBoard, defendingPlayerEntity, gameState);\r\n\t\tattackerEntity.abiityChargesLeft--;\r\n\t}\r\n};\r\n"]}
|
|
@@ -2,28 +2,42 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildGameAction = void 0;
|
|
4
4
|
const buildGameAction = (playerHero, opponentHero, action) => {
|
|
5
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
5
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11;
|
|
6
|
+
const isPlayerSireD = (_a = playerHero === null || playerHero === void 0 ? void 0 : playerHero.cardId) === null || _a === void 0 ? void 0 : _a.startsWith("BG24_HERO_100");
|
|
7
|
+
const isOpponentSireD = (_b = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.cardId) === null || _b === void 0 ? void 0 : _b.startsWith("BG24_HERO_100");
|
|
6
8
|
const result = {
|
|
7
9
|
...action,
|
|
8
|
-
playerSecrets: ((
|
|
10
|
+
playerSecrets: ((_c = playerHero === null || playerHero === void 0 ? void 0 : playerHero.secrets) !== null && _c !== void 0 ? _c : []).filter((s) => !s.triggered),
|
|
9
11
|
playerCardId: playerHero === null || playerHero === void 0 ? void 0 : playerHero.cardId,
|
|
10
12
|
playerEntityId: playerHero === null || playerHero === void 0 ? void 0 : playerHero.entityId,
|
|
11
|
-
playerHeroPowerCardId: playerHero === null || playerHero === void 0 ? void 0 : playerHero.heroPowerId,
|
|
12
|
-
playerHeroPowerEntityId:
|
|
13
|
+
playerHeroPowerCardId: (_h = (_e = (_d = playerHero === null || playerHero === void 0 ? void 0 : playerHero.trinkets.find((t) => t.scriptDataNum6 === 3)) === null || _d === void 0 ? void 0 : _d.cardId) !== null && _e !== void 0 ? _e : (isPlayerSireD ? (_g = (_f = playerHero.questRewardEntities) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.cardId : null)) !== null && _h !== void 0 ? _h : playerHero === null || playerHero === void 0 ? void 0 : playerHero.heroPowerId,
|
|
14
|
+
playerHeroPowerEntityId: 100000002,
|
|
13
15
|
playerHeroPowerUsed: playerHero === null || playerHero === void 0 ? void 0 : playerHero.heroPowerUsed,
|
|
14
|
-
playerRewardCardId:
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
playerRewardCardId: isPlayerSireD && ((_j = playerHero === null || playerHero === void 0 ? void 0 : playerHero.questRewardEntities) === null || _j === void 0 ? void 0 : _j.length) < 2
|
|
17
|
+
? null
|
|
18
|
+
: (_m = (_l = (_k = playerHero === null || playerHero === void 0 ? void 0 : playerHero.questRewardEntities) === null || _k === void 0 ? void 0 : _k[1]) === null || _l === void 0 ? void 0 : _l.cardId) !== null && _m !== void 0 ? _m : (_o = playerHero === null || playerHero === void 0 ? void 0 : playerHero.questRewards) === null || _o === void 0 ? void 0 : _o[0],
|
|
19
|
+
playerRewardEntityId: isPlayerSireD && ((_p = playerHero === null || playerHero === void 0 ? void 0 : playerHero.questRewardEntities) === null || _p === void 0 ? void 0 : _p.length) < 2
|
|
20
|
+
? null
|
|
21
|
+
: (_r = (_q = playerHero === null || playerHero === void 0 ? void 0 : playerHero.questRewardEntities) === null || _q === void 0 ? void 0 : _q[1]) === null || _r === void 0 ? void 0 : _r.entityId,
|
|
22
|
+
playerRewardData: isPlayerSireD && ((_s = playerHero === null || playerHero === void 0 ? void 0 : playerHero.questRewardEntities) === null || _s === void 0 ? void 0 : _s.length) < 2
|
|
23
|
+
? null
|
|
24
|
+
: (_u = (_t = playerHero === null || playerHero === void 0 ? void 0 : playerHero.questRewardEntities) === null || _t === void 0 ? void 0 : _t[0]) === null || _u === void 0 ? void 0 : _u.scriptDataNum1,
|
|
17
25
|
playerTrinkets: playerHero === null || playerHero === void 0 ? void 0 : playerHero.trinkets,
|
|
18
|
-
opponentSecrets: ((
|
|
26
|
+
opponentSecrets: ((_v = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.secrets) !== null && _v !== void 0 ? _v : []).filter((s) => !s.triggered),
|
|
19
27
|
opponentCardId: opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.cardId,
|
|
20
28
|
opponentEntityId: opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.entityId,
|
|
21
|
-
opponentHeroPowerCardId: opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.heroPowerId,
|
|
22
|
-
opponentHeroPowerEntityId:
|
|
29
|
+
opponentHeroPowerCardId: (_0 = (_x = (_w = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.trinkets.find((t) => t.scriptDataNum6 === 3)) === null || _w === void 0 ? void 0 : _w.cardId) !== null && _x !== void 0 ? _x : (isOpponentSireD ? (_z = (_y = opponentHero.questRewardEntities) === null || _y === void 0 ? void 0 : _y[0]) === null || _z === void 0 ? void 0 : _z.cardId : null)) !== null && _0 !== void 0 ? _0 : opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.heroPowerId,
|
|
30
|
+
opponentHeroPowerEntityId: 200000002,
|
|
23
31
|
opponentHeroPowerUsed: opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.heroPowerUsed,
|
|
24
|
-
opponentRewardCardId:
|
|
25
|
-
|
|
26
|
-
|
|
32
|
+
opponentRewardCardId: isOpponentSireD && ((_1 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _1 === void 0 ? void 0 : _1.length) < 2
|
|
33
|
+
? null
|
|
34
|
+
: (_4 = (_3 = (_2 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _2 === void 0 ? void 0 : _2[1]) === null || _3 === void 0 ? void 0 : _3.cardId) !== null && _4 !== void 0 ? _4 : (_5 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewards) === null || _5 === void 0 ? void 0 : _5[0],
|
|
35
|
+
opponentRewardEntityId: isOpponentSireD && ((_6 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _6 === void 0 ? void 0 : _6.length) < 2
|
|
36
|
+
? null
|
|
37
|
+
: (_8 = (_7 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _7 === void 0 ? void 0 : _7[1]) === null || _8 === void 0 ? void 0 : _8.entityId,
|
|
38
|
+
opponentRewardData: isOpponentSireD && ((_9 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _9 === void 0 ? void 0 : _9.length) < 2
|
|
39
|
+
? null
|
|
40
|
+
: (_11 = (_10 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _10 === void 0 ? void 0 : _10[0]) === null || _11 === void 0 ? void 0 : _11.scriptDataNum1,
|
|
27
41
|
opponentTrinkets: opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.trinkets,
|
|
28
42
|
};
|
|
29
43
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game-action.js","sourceRoot":"","sources":["../../../src/simulation/spectator/game-action.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"game-action.js","sourceRoot":"","sources":["../../../src/simulation/spectator/game-action.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity, BoardTrinket } from '../../bgs-player-entity';\r\nimport { BoardEntity } from '../../board-entity';\r\nimport { BoardSecret } from '../../board-secret';\r\n\r\nexport interface GameAction {\r\n\ttype:\r\n\t\t| 'damage'\r\n\t\t| 'attack'\r\n\t\t| 'spawn'\r\n\t\t| 'minion-death'\r\n\t\t| 'power-target'\r\n\t\t| 'start-of-combat'\r\n\t\t| 'player-attack'\r\n\t\t| 'opponent-attack';\r\n\tplayerBoard: readonly BoardEntity[];\r\n\tplayerHand: readonly BoardEntity[];\r\n\tplayerSecrets: readonly BoardSecret[];\r\n\tplayerTrinkets: readonly BoardTrinket[];\r\n\topponentBoard: readonly BoardEntity[];\r\n\topponentHand: readonly BoardEntity[];\r\n\topponentSecrets: readonly BoardSecret[];\r\n\topponentTrinkets: readonly BoardTrinket[];\r\n\tplayerCardId: string;\r\n\tplayerEntityId: number;\r\n\tplayerHeroPowerCardId: string;\r\n\tplayerHeroPowerEntityId: number;\r\n\tplayerHeroPowerUsed: boolean;\r\n\topponentCardId: string;\r\n\topponentEntityId: number;\r\n\topponentHeroPowerCardId: string;\r\n\topponentHeroPowerEntityId: number;\r\n\topponentHeroPowerUsed: boolean;\r\n\tplayerRewardCardId: string;\r\n\tplayerRewardEntityId: number;\r\n\tplayerRewardData: number;\r\n\topponentRewardCardId: string;\r\n\topponentRewardEntityId: number;\r\n\topponentRewardData: number;\r\n\tsourceEntityId?: number;\r\n\t/** @deprecated */\r\n\ttargetEntityId?: number;\r\n\ttargetEntityIds?: number[];\r\n\r\n\tdamages?: Damage[];\r\n\tspawns?: readonly BoardEntity[];\r\n\tdeaths?: readonly BoardEntity[];\r\n\tdeadMinionsPositionsOnBoard?: readonly number[];\r\n}\r\n\r\nexport interface Damage {\r\n\treadonly sourceEntityId?: number;\r\n\treadonly targetEntityId?: number;\r\n\treadonly damage?: number;\r\n}\r\n\r\nexport const buildGameAction = (\r\n\tplayerHero: BgsPlayerEntity,\r\n\topponentHero: BgsPlayerEntity,\r\n\taction: Partial<GameAction>,\r\n): GameAction => {\r\n\tconst isPlayerSireD = playerHero?.cardId?.startsWith(CardIds.SireDenathrius_BG24_HERO_100);\r\n\tconst isOpponentSireD = opponentHero?.cardId?.startsWith(CardIds.SireDenathrius_BG24_HERO_100);\r\n\tconst result: GameAction = {\r\n\t\t...action,\r\n\r\n\t\tplayerSecrets: (playerHero?.secrets ?? []).filter((s) => !s.triggered),\r\n\t\tplayerCardId: playerHero?.cardId,\r\n\t\tplayerEntityId: playerHero?.entityId,\r\n\t\tplayerHeroPowerCardId:\r\n\t\t\tplayerHero?.trinkets.find((t) => t.scriptDataNum6 === 3)?.cardId ??\r\n\t\t\t(isPlayerSireD ? playerHero.questRewardEntities?.[0]?.cardId : null) ??\r\n\t\t\tplayerHero?.heroPowerId,\r\n\t\tplayerHeroPowerEntityId: 100000002,\r\n\t\tplayerHeroPowerUsed: playerHero?.heroPowerUsed,\r\n\t\tplayerRewardCardId:\r\n\t\t\tisPlayerSireD && playerHero?.questRewardEntities?.length < 2\r\n\t\t\t\t? null\r\n\t\t\t\t: playerHero?.questRewardEntities?.[1]?.cardId ?? playerHero?.questRewards?.[0],\r\n\t\tplayerRewardEntityId:\r\n\t\t\tisPlayerSireD && playerHero?.questRewardEntities?.length < 2\r\n\t\t\t\t? null\r\n\t\t\t\t: playerHero?.questRewardEntities?.[1]?.entityId,\r\n\t\tplayerRewardData:\r\n\t\t\tisPlayerSireD && playerHero?.questRewardEntities?.length < 2\r\n\t\t\t\t? null\r\n\t\t\t\t: playerHero?.questRewardEntities?.[0]?.scriptDataNum1,\r\n\t\tplayerTrinkets: playerHero?.trinkets,\r\n\r\n\t\topponentSecrets: (opponentHero?.secrets ?? []).filter((s) => !s.triggered),\r\n\t\topponentCardId: opponentHero?.cardId,\r\n\t\topponentEntityId: opponentHero?.entityId,\r\n\t\topponentHeroPowerCardId:\r\n\t\t\topponentHero?.trinkets.find((t) => t.scriptDataNum6 === 3)?.cardId ??\r\n\t\t\t(isOpponentSireD ? opponentHero.questRewardEntities?.[0]?.cardId : null) ??\r\n\t\t\topponentHero?.heroPowerId,\r\n\t\topponentHeroPowerEntityId: 200000002,\r\n\t\topponentHeroPowerUsed: opponentHero?.heroPowerUsed,\r\n\t\topponentRewardCardId:\r\n\t\t\tisOpponentSireD && opponentHero?.questRewardEntities?.length < 2\r\n\t\t\t\t? null\r\n\t\t\t\t: opponentHero?.questRewardEntities?.[1]?.cardId ?? opponentHero?.questRewards?.[0],\r\n\t\topponentRewardEntityId:\r\n\t\t\tisOpponentSireD && opponentHero?.questRewardEntities?.length < 2\r\n\t\t\t\t? null\r\n\t\t\t\t: opponentHero?.questRewardEntities?.[1]?.entityId,\r\n\t\topponentRewardData:\r\n\t\t\tisOpponentSireD && opponentHero?.questRewardEntities?.length < 2\r\n\t\t\t\t? null\r\n\t\t\t\t: opponentHero?.questRewardEntities?.[0]?.scriptDataNum1,\r\n\t\topponentTrinkets: opponentHero?.trinkets,\r\n\t} as GameAction;\r\n\treturn result;\r\n};\r\n"]}
|
|
@@ -16,7 +16,6 @@ const stats_1 = require("./stats");
|
|
|
16
16
|
const summon_when_space_1 = require("./summon-when-space");
|
|
17
17
|
const golden_1 = require("./utils/golden");
|
|
18
18
|
const handleStartOfCombat = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState) => {
|
|
19
|
-
(0, summon_when_space_1.handleSummonsWhenSpace)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
|
|
20
19
|
const shouldRecomputeCurrentAttacker = true;
|
|
21
20
|
if (shouldRecomputeCurrentAttacker) {
|
|
22
21
|
currentAttacker =
|
|
@@ -201,8 +200,8 @@ const handleStartOfCombatQuestRewardsForPlayer = (playerEntity, playerBoard, opp
|
|
|
201
200
|
(0, divine_shield_1.updateDivineShield)(playerBoard[0], playerBoard, playerEntity, opponentEntity, true, gameState);
|
|
202
201
|
gameState.spectator.registerPowerTarget(playerEntity, playerBoard[0], playerBoard, null, null);
|
|
203
202
|
if (playerBoard.length > 1) {
|
|
204
|
-
(0, divine_shield_1.updateDivineShield)(playerBoard[1], playerBoard, playerEntity, opponentEntity, true, gameState);
|
|
205
|
-
gameState.spectator.registerPowerTarget(playerEntity, playerBoard[1], playerBoard, null, null);
|
|
203
|
+
(0, divine_shield_1.updateDivineShield)(playerBoard[playerBoard.length - 1], playerBoard, playerEntity, opponentEntity, true, gameState);
|
|
204
|
+
gameState.spectator.registerPowerTarget(playerEntity, playerBoard[playerBoard.length - 1], playerBoard, null, null);
|
|
206
205
|
}
|
|
207
206
|
}
|
|
208
207
|
break;
|
|
@@ -427,7 +426,7 @@ const handleStartOfCombatQuestRewardsForPlayer = (playerEntity, playerBoard, opp
|
|
|
427
426
|
return currentAttacker;
|
|
428
427
|
};
|
|
429
428
|
const handleStartOfCombatSpellsForPlayer = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState) => {
|
|
430
|
-
var _a
|
|
429
|
+
var _a;
|
|
431
430
|
if (playerEntity.startOfCombatDone) {
|
|
432
431
|
return currentAttacker;
|
|
433
432
|
}
|
|
@@ -445,7 +444,7 @@ const handleStartOfCombatSpellsForPlayer = (playerEntity, playerBoard, opponentE
|
|
|
445
444
|
}
|
|
446
445
|
break;
|
|
447
446
|
case "BG28_603":
|
|
448
|
-
secret.scriptDataNum1 =
|
|
447
|
+
secret.scriptDataNum1 = 1;
|
|
449
448
|
break;
|
|
450
449
|
case "BG28_519":
|
|
451
450
|
(0, utils_2.addStatsToBoard)(secret, playerBoard, playerEntity, 2, 1, gameState);
|
|
@@ -1081,6 +1080,7 @@ const performStartOfCombatMinionsForPlayer = (attacker, attackingBoard, attackin
|
|
|
1081
1080
|
if (attackingBoard.length > 0 || defendingBoard.length > 0) {
|
|
1082
1081
|
const quantity = attacker.cardId === "BG30_101" ? 3 : 6;
|
|
1083
1082
|
(0, divine_shield_1.grantDivineShieldToLeftmostMinions)(attacker, attackingBoard, attackingBoardHero, quantity, defendingBoardHero, gameState);
|
|
1083
|
+
(0, divine_shield_1.grantDivineShieldToLeftmostMinions)(attacker, defendingBoard, defendingBoardHero, quantity, attackingBoardHero, gameState);
|
|
1084
1084
|
}
|
|
1085
1085
|
}
|
|
1086
1086
|
else if (attacker.cardId === "BG30_119" ||
|