@firestone-hs/simulate-bgs-battle 1.1.714 → 1.1.715
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 +2 -1
- package/dist/bgs-player-entity.js.map +1 -1
- package/dist/cards/card.interface.d.ts +5 -1
- package/dist/cards/card.interface.js +4 -2
- package/dist/cards/card.interface.js.map +1 -1
- package/dist/cards/impl/_card-mappings.js +20 -0
- package/dist/cards/impl/_card-mappings.js.map +1 -1
- package/dist/cards/impl/minion/dead-sea-ravager.d.ts +2 -0
- package/dist/cards/impl/minion/dead-sea-ravager.js +21 -0
- package/dist/cards/impl/minion/dead-sea-ravager.js.map +1 -0
- package/dist/cards/impl/minion/ingenious-inventor.d.ts +2 -0
- package/dist/cards/impl/minion/ingenious-inventor.js +15 -0
- package/dist/cards/impl/minion/ingenious-inventor.js.map +1 -0
- package/dist/cards/impl/minion/vinespeaker.js +5 -0
- package/dist/cards/impl/minion/vinespeaker.js.map +1 -1
- package/dist/cards/impl/spellcraft/trudge-through-lava.d.ts +2 -0
- package/dist/cards/impl/spellcraft/trudge-through-lava.js +15 -0
- package/dist/cards/impl/spellcraft/trudge-through-lava.js.map +1 -0
- package/dist/cards/impl/spellcraft/use-supplies.d.ts +2 -0
- package/dist/cards/impl/spellcraft/use-supplies.js +15 -0
- package/dist/cards/impl/spellcraft/use-supplies.js.map +1 -0
- package/dist/cards/impl/spellcraft/volcanic-visitor.d.ts +2 -0
- package/dist/cards/impl/spellcraft/volcanic-visitor.js +17 -0
- package/dist/cards/impl/spellcraft/volcanic-visitor.js.map +1 -0
- package/dist/cards/impl/trinket/deathtouch-apple.d.ts +2 -0
- package/dist/cards/impl/trinket/deathtouch-apple.js +22 -0
- package/dist/cards/impl/trinket/deathtouch-apple.js.map +1 -0
- package/dist/cards/impl/trinket/rylak-portrait.d.ts +2 -0
- package/dist/cards/impl/trinket/rylak-portrait.js +19 -0
- package/dist/cards/impl/trinket/rylak-portrait.js.map +1 -0
- package/dist/cards/impl/trinket/sky-golem-portrait-enchantment.d.ts +2 -0
- package/dist/cards/impl/trinket/sky-golem-portrait-enchantment.js +17 -0
- package/dist/cards/impl/trinket/sky-golem-portrait-enchantment.js.map +1 -0
- package/dist/cards/impl/trinket/sky-golem-portrait.d.ts +2 -0
- package/dist/cards/impl/trinket/sky-golem-portrait.js +21 -0
- package/dist/cards/impl/trinket/sky-golem-portrait.js.map +1 -0
- package/dist/cards/impl/trinket/soul-fermenter.d.ts +2 -0
- package/dist/cards/impl/trinket/soul-fermenter.js +36 -0
- package/dist/cards/impl/trinket/soul-fermenter.js.map +1 -0
- package/dist/input-sanitation.js +3 -2
- package/dist/input-sanitation.js.map +1 -1
- package/dist/simulation/add-minion-to-board.js +11 -4
- package/dist/simulation/add-minion-to-board.js.map +1 -1
- package/dist/simulation/deathrattle-spawns.d.ts +2 -2
- package/dist/simulation/deathrattle-spawns.js.map +1 -1
- package/dist/simulation/global-info-helpers.d.ts +1 -0
- package/dist/simulation/global-info-helpers.js +7 -1
- package/dist/simulation/global-info-helpers.js.map +1 -1
- package/dist/simulation/reborn.js +28 -2
- package/dist/simulation/reborn.js.map +1 -1
- package/dist/simulation/summon-when-space.js +3 -3
- package/dist/simulation/summon-when-space.js.map +1 -1
- package/dist/temp-card-ids.d.ts +12 -1
- package/dist/temp-card-ids.js +12 -1
- package/dist/temp-card-ids.js.map +1 -1
- package/package.json +1 -1
|
@@ -82,6 +82,7 @@ export interface BgsPlayerGlobalInfo {
|
|
|
82
82
|
MagnetizedThisGame?: number;
|
|
83
83
|
PiratesSummonedThisGame?: number;
|
|
84
84
|
PirateAttackBonus?: number;
|
|
85
|
+
MechAttackBonus?: number;
|
|
85
86
|
AstralAutomatonsSummonedThisGame?: number;
|
|
86
87
|
ChoralAttackBuff?: number;
|
|
87
88
|
ChoralHealthBuff?: number;
|
|
@@ -126,7 +127,7 @@ export interface BoardTrinket {
|
|
|
126
127
|
tags?: {
|
|
127
128
|
[key in GameTag]?: number;
|
|
128
129
|
};
|
|
129
|
-
|
|
130
|
+
rememberedMinions?: BoardEntity[];
|
|
130
131
|
avengeDefault?: number;
|
|
131
132
|
avengeCurrent?: number;
|
|
132
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bgs-player-entity.js","sourceRoot":"","sources":["../src/bgs-player-entity.ts"],"names":[],"mappings":"","sourcesContent":["import { GameTag } from '@firestone-hs/reference-data';\r\nimport { BoardEnchantment, BoardEntity } from './board-entity';\r\nimport { BoardSecret } from './board-secret';\r\n\r\nexport interface BgsPlayerEntity {\r\n\tcardId: string;\r\n\t// readonly nonGhostCardId?: string;\r\n\thpLeft: number;\r\n\treadonly tavernTier: number;\r\n\theroPowers: readonly BgsHeroPower[];\r\n\r\n\t/** @deprecated */\r\n\theroPowerId?: string | undefined | null;\r\n\t/** @deprecated */\r\n\treadonly heroPowerEntityId?: number;\r\n\t/** @deprecated */\r\n\treadonly heroPowerUsed?: boolean;\r\n\t/** @deprecated */\r\n\treadonly heroPowerInfo?: number | string;\r\n\t/** @deprecated */\r\n\theroPowerInfo2?: number;\r\n\t/** @deprecated */\r\n\tavengeCurrent?: number;\r\n\t/** @deprecated */\r\n\tavengeDefault?: number;\r\n\t// For Ozumat\r\n\t/** @deprecated */\r\n\theroPowerActivated?: boolean;\r\n\r\n\tfriendly?: boolean;\r\n\tentityId?: number;\r\n\tquestEntities: BgsQuestEntity[];\r\n\tquestRewards?: string[];\r\n\tquestRewardEntities?: {\r\n\t\tcardId: string;\r\n\t\tentityId: number;\r\n\t\tavengeDefault?: number;\r\n\t\tavengeCurrent?: number;\r\n\t\tscriptDataNum1: number;\r\n\t}[];\r\n\thand?: BoardEntity[];\r\n\tsecrets?: BoardSecret[];\r\n\ttrinkets?: BoardTrinket[];\r\n\tglobalInfo?: BgsPlayerGlobalInfo;\r\n\tstartOfCombatDone?: boolean;\r\n\t// Not really used, but needed for compatibility with BoardEntity\r\n\tenchantments?: BoardEnchantment[];\r\n\r\n\tdeadEyeDamageDone?: number;\r\n\trapidReanimationMinion?: BoardEntity;\r\n\trapidReanimationIndexFromLeft?: number;\r\n\trapidReanimationIndexFromRight?: number;\r\n}\r\n\r\nexport interface BgsHeroPower {\r\n\tcardId: string;\r\n\tentityId: number;\r\n\tused: boolean;\r\n\tinfo: number | string | BoardEntity;\r\n\tinfo2: number;\r\n\tinfo3: number;\r\n\tinfo4: number;\r\n\tinfo5: number;\r\n\tinfo6: number;\r\n\tscoreValue1?: number;\r\n\tscoreValue2?: number;\r\n\tscoreValue3?: number;\r\n\tavengeCurrent?: number;\r\n\tavengeDefault?: number;\r\n\tlocked?: number;\r\n\t// Always false when coming from the input, we set it in the appropriate place\r\n\tready?: boolean;\r\n\t// For Ozumat's Tentacular\r\n\tactivated?: boolean;\r\n}\r\n\r\nexport interface BgsPlayerGlobalInfo {\r\n\tEternalKnightsDeadThisGame?: number;\r\n\tSanlaynScribesDeadThisGame?: number;\r\n\tUndeadAttackBonus?: number;\r\n\tUndeadHealthBonus?: number;\r\n\tHauntedCarapaceAttackBonus?: number;\r\n\tHauntedCarapaceHealthBonus?: number;\r\n\tFrostlingBonus?: number;\r\n\tBloodGemAttackBonus?: number;\r\n\tBloodGemHealthBonus?: number;\r\n\tGoldrinnBuffAtk?: number;\r\n\tGoldrinnBuffHealth?: number;\r\n\tSpellsCastThisGame?: number;\r\n\tTavernSpellsCastThisGame?: number;\r\n\t/** Resets each recruit turn (client or future sim hook). */\r\n\tTavernSpellsCastThisTurn?: number;\r\n\t/** Minions and tavern spells played this recruit turn (for Brazen Buccaneer, etc.). */\r\n\tCardsPlayedThisTurn?: number;\r\n\tElementalsPlayedThisTurn?: number;\r\n\tHighestTavernMinionAttack?: number;\r\n\tHighestTavernMinionHealth?: number;\r\n\tBackToBackCastThisGame?: number;\r\n\t/** Mama Mrrglton / Papa Mrrglton plays this game (both IDs count). */\r\n\tMrrgltonsPlayedThisGame?: number;\r\n\tPiratesPlayedThisGame?: number;\r\n\tBeastsSummonedThisGame?: number;\r\n\tBeastsSummonedThisCombat?: number;\r\n\tMagnetizedThisGame?: number;\r\n\tPiratesSummonedThisGame?: number;\r\n\tPirateAttackBonus?: number;\r\n\tAstralAutomatonsSummonedThisGame?: number;\r\n\tChoralAttackBuff?: number;\r\n\tChoralHealthBuff?: number;\r\n\tBeetleAttackBuff?: number;\r\n\tBeetleHealthBuff?: number;\r\n\t// There is some naming confusion. This is \"elementals grant more stats\", not \"elementals have more stats\"\r\n\tElementalAttackBuff?: number;\r\n\tElementalHealthBuff?: number;\r\n\t// Same for these pirates\r\n\tPirateAttackBuff?: number;\r\n\tPirateHealthBuff?: number;\r\n\tTavernSpellHealthBuff?: number;\r\n\tTavernSpellAttackBuff?: number;\r\n\tGoldSpentThisGame?: number;\r\n\tVolumizerHealthBuff?: number;\r\n\tVolumizerAttackBuff?: number;\r\n\tWhelpAttackBuff?: number;\r\n\tWhelpHealthBuff?: number;\r\n\tDeepBluesPlayed?: number;\r\n\r\n\tMutatedLasherAttackBuff?: number;\r\n\tMutatedLasherHealthBuff?: number;\r\n\tBattlecriesTriggeredThisGame?: number;\r\n\t/** Falling Sky Golem and similar; incremented when a deathrattle effect resolves for this hero's board. */\r\n\tDeathrattlesTriggeredThisGame?: number;\r\n\tFriendlyMinionsDeadLastCombat?: number;\r\n\tAdditionalAttack?: number;\r\n\r\n\t// --- BG 35.2 shop-adjacent (client may set; minion modules read where applicable) ---\r\n\t/** Cataclysmic Harbinger: last tavern spell card ID you cast (set in cast-tavern-spell). */\r\n\tLastTavernSpellCardId?: string;\r\n\t/** Diremuck Forager: how many hand summons are still owed when space opens (targets picked at resolve time). */\r\n\tDiremuckPendingSummons?: { foragerEntityId: number; remaining: number }[];\r\n}\r\n\r\nexport interface BgsQuestEntity {\r\n\tCardId: string;\r\n\tRewardDbfId: number;\r\n\tProgressCurrent: number;\r\n\tProgressTotal: number;\r\n}\r\n\r\nexport interface BoardTrinket {\r\n\tcardId: string;\r\n\tentityId: number;\r\n\tscriptDataNum1: number;\r\n\tscriptDataNum2?: number;\r\n\tscriptDataNum6?: number;\r\n\ttags?: {\r\n\t\t[key in GameTag]?: number;\r\n\t};\r\n\
|
|
1
|
+
{"version":3,"file":"bgs-player-entity.js","sourceRoot":"","sources":["../src/bgs-player-entity.ts"],"names":[],"mappings":"","sourcesContent":["import { GameTag } from '@firestone-hs/reference-data';\r\nimport { BoardEnchantment, BoardEntity } from './board-entity';\r\nimport { BoardSecret } from './board-secret';\r\n\r\nexport interface BgsPlayerEntity {\r\n\tcardId: string;\r\n\t// readonly nonGhostCardId?: string;\r\n\thpLeft: number;\r\n\treadonly tavernTier: number;\r\n\theroPowers: readonly BgsHeroPower[];\r\n\r\n\t/** @deprecated */\r\n\theroPowerId?: string | undefined | null;\r\n\t/** @deprecated */\r\n\treadonly heroPowerEntityId?: number;\r\n\t/** @deprecated */\r\n\treadonly heroPowerUsed?: boolean;\r\n\t/** @deprecated */\r\n\treadonly heroPowerInfo?: number | string;\r\n\t/** @deprecated */\r\n\theroPowerInfo2?: number;\r\n\t/** @deprecated */\r\n\tavengeCurrent?: number;\r\n\t/** @deprecated */\r\n\tavengeDefault?: number;\r\n\t// For Ozumat\r\n\t/** @deprecated */\r\n\theroPowerActivated?: boolean;\r\n\r\n\tfriendly?: boolean;\r\n\tentityId?: number;\r\n\tquestEntities: BgsQuestEntity[];\r\n\tquestRewards?: string[];\r\n\tquestRewardEntities?: {\r\n\t\tcardId: string;\r\n\t\tentityId: number;\r\n\t\tavengeDefault?: number;\r\n\t\tavengeCurrent?: number;\r\n\t\tscriptDataNum1: number;\r\n\t}[];\r\n\thand?: BoardEntity[];\r\n\tsecrets?: BoardSecret[];\r\n\ttrinkets?: BoardTrinket[];\r\n\tglobalInfo?: BgsPlayerGlobalInfo;\r\n\tstartOfCombatDone?: boolean;\r\n\t// Not really used, but needed for compatibility with BoardEntity\r\n\tenchantments?: BoardEnchantment[];\r\n\r\n\tdeadEyeDamageDone?: number;\r\n\trapidReanimationMinion?: BoardEntity;\r\n\trapidReanimationIndexFromLeft?: number;\r\n\trapidReanimationIndexFromRight?: number;\r\n}\r\n\r\nexport interface BgsHeroPower {\r\n\tcardId: string;\r\n\tentityId: number;\r\n\tused: boolean;\r\n\tinfo: number | string | BoardEntity;\r\n\tinfo2: number;\r\n\tinfo3: number;\r\n\tinfo4: number;\r\n\tinfo5: number;\r\n\tinfo6: number;\r\n\tscoreValue1?: number;\r\n\tscoreValue2?: number;\r\n\tscoreValue3?: number;\r\n\tavengeCurrent?: number;\r\n\tavengeDefault?: number;\r\n\tlocked?: number;\r\n\t// Always false when coming from the input, we set it in the appropriate place\r\n\tready?: boolean;\r\n\t// For Ozumat's Tentacular\r\n\tactivated?: boolean;\r\n}\r\n\r\nexport interface BgsPlayerGlobalInfo {\r\n\tEternalKnightsDeadThisGame?: number;\r\n\tSanlaynScribesDeadThisGame?: number;\r\n\tUndeadAttackBonus?: number;\r\n\tUndeadHealthBonus?: number;\r\n\tHauntedCarapaceAttackBonus?: number;\r\n\tHauntedCarapaceHealthBonus?: number;\r\n\tFrostlingBonus?: number;\r\n\tBloodGemAttackBonus?: number;\r\n\tBloodGemHealthBonus?: number;\r\n\tGoldrinnBuffAtk?: number;\r\n\tGoldrinnBuffHealth?: number;\r\n\tSpellsCastThisGame?: number;\r\n\tTavernSpellsCastThisGame?: number;\r\n\t/** Resets each recruit turn (client or future sim hook). */\r\n\tTavernSpellsCastThisTurn?: number;\r\n\t/** Minions and tavern spells played this recruit turn (for Brazen Buccaneer, etc.). */\r\n\tCardsPlayedThisTurn?: number;\r\n\tElementalsPlayedThisTurn?: number;\r\n\tHighestTavernMinionAttack?: number;\r\n\tHighestTavernMinionHealth?: number;\r\n\tBackToBackCastThisGame?: number;\r\n\t/** Mama Mrrglton / Papa Mrrglton plays this game (both IDs count). */\r\n\tMrrgltonsPlayedThisGame?: number;\r\n\tPiratesPlayedThisGame?: number;\r\n\tBeastsSummonedThisGame?: number;\r\n\tBeastsSummonedThisCombat?: number;\r\n\tMagnetizedThisGame?: number;\r\n\tPiratesSummonedThisGame?: number;\r\n\tPirateAttackBonus?: number;\r\n\tMechAttackBonus?: number;\r\n\tAstralAutomatonsSummonedThisGame?: number;\r\n\tChoralAttackBuff?: number;\r\n\tChoralHealthBuff?: number;\r\n\tBeetleAttackBuff?: number;\r\n\tBeetleHealthBuff?: number;\r\n\t// There is some naming confusion. This is \"elementals grant more stats\", not \"elementals have more stats\"\r\n\tElementalAttackBuff?: number;\r\n\tElementalHealthBuff?: number;\r\n\t// Same for these pirates\r\n\tPirateAttackBuff?: number;\r\n\tPirateHealthBuff?: number;\r\n\tTavernSpellHealthBuff?: number;\r\n\tTavernSpellAttackBuff?: number;\r\n\tGoldSpentThisGame?: number;\r\n\tVolumizerHealthBuff?: number;\r\n\tVolumizerAttackBuff?: number;\r\n\tWhelpAttackBuff?: number;\r\n\tWhelpHealthBuff?: number;\r\n\tDeepBluesPlayed?: number;\r\n\r\n\tMutatedLasherAttackBuff?: number;\r\n\tMutatedLasherHealthBuff?: number;\r\n\tBattlecriesTriggeredThisGame?: number;\r\n\t/** Falling Sky Golem and similar; incremented when a deathrattle effect resolves for this hero's board. */\r\n\tDeathrattlesTriggeredThisGame?: number;\r\n\tFriendlyMinionsDeadLastCombat?: number;\r\n\tAdditionalAttack?: number;\r\n\r\n\t// --- BG 35.2 shop-adjacent (client may set; minion modules read where applicable) ---\r\n\t/** Cataclysmic Harbinger: last tavern spell card ID you cast (set in cast-tavern-spell). */\r\n\tLastTavernSpellCardId?: string;\r\n\t/** Diremuck Forager: how many hand summons are still owed when space opens (targets picked at resolve time). */\r\n\tDiremuckPendingSummons?: { foragerEntityId: number; remaining: number }[];\r\n}\r\n\r\nexport interface BgsQuestEntity {\r\n\tCardId: string;\r\n\tRewardDbfId: number;\r\n\tProgressCurrent: number;\r\n\tProgressTotal: number;\r\n}\r\n\r\nexport interface BoardTrinket {\r\n\tcardId: string;\r\n\tentityId: number;\r\n\tscriptDataNum1: number;\r\n\tscriptDataNum2?: number;\r\n\tscriptDataNum6?: number;\r\n\ttags?: {\r\n\t\t[key in GameTag]?: number;\r\n\t};\r\n\trememberedMinions?: BoardEntity[];\r\n\tavengeDefault?: number;\r\n\tavengeCurrent?: number;\r\n}\r\n"]}
|
|
@@ -123,13 +123,17 @@ export interface BattlecryCard extends Card {
|
|
|
123
123
|
}
|
|
124
124
|
export declare const hasBattlecry: (card: Card) => card is BattlecryCard;
|
|
125
125
|
export interface RebornEffectCard extends Card {
|
|
126
|
-
rebornEffect: (minion: BoardEntity, input: RebornEffectInput) => void;
|
|
126
|
+
rebornEffect: (minion: BoardEntity | BoardTrinket, input: RebornEffectInput) => void;
|
|
127
127
|
}
|
|
128
128
|
export declare const hasRebornEffect: (card: Card) => card is RebornEffectCard;
|
|
129
129
|
export interface RebornSelfEffectCard extends Card {
|
|
130
130
|
rebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => void;
|
|
131
131
|
}
|
|
132
132
|
export declare const hasRebornSelfEffect: (card: Card) => card is RebornSelfEffectCard;
|
|
133
|
+
export interface AfterRebornCard extends Card {
|
|
134
|
+
afterReborn: (minion: BoardEntity | BoardTrinket, input: RebornEffectInput) => void;
|
|
135
|
+
}
|
|
136
|
+
export declare const hasAfterReborn: (card: Card) => card is AfterRebornCard;
|
|
133
137
|
export interface OnBattlecryTriggeredCard extends Card {
|
|
134
138
|
onBattlecryTriggered: (minion: BoardEntity, input: OnBattlecryTriggeredInput) => void;
|
|
135
139
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.hasOnGlobalInfoUpdated = exports.hasPlayedBloodGemsOnAny = exports.hasPlayedBloodGemsOnMe = void 0;
|
|
3
|
+
exports.hasOnAfterMagnetize = exports.hasOnAfterMagnetizeSelf = exports.hasOnAfterMagnetizeToSelf = exports.hasOnBeforeMagnetizeSelf = exports.hasOnBeforeMagnetize = exports.hasOnMinionKilled = exports.hasOnAfterFriendlyMinionDeath = exports.hasOnAfterDeath = exports.hasOnDeath = exports.hasAfterFriendlyMinionDamagedTrinket = exports.hasAfterDealDamage = exports.hasOnDamaged = exports.hasAfterHeroDamaged = exports.hasOnStatsChanged = exports.hasOnWindfuryUpdated = exports.hasOnVenomousUpdated = exports.hasOnStealthUpdated = exports.hasOnRebornUpdated = exports.hasOnTauntUpdated = exports.hasOnDivineShieldUpdated = exports.hasEndOfTurn = exports.hasOnCardAddedToHand = exports.hasDeathrattleSpawnEnchantment = exports.hasOnDeathrattleTriggered = exports.hasDefaultScriptDataNum = exports.hasAvenge = exports.hasOnBattlecryTriggered = exports.hasAfterReborn = exports.hasRebornSelfEffect = exports.hasRebornEffect = exports.hasBattlecry = exports.hasDeathrattleEffect = exports.hasDeathrattleSpawn = exports.hasOnDespawned = exports.hasOnFriendlyMinionSummonedTrinket = exports.hasAfterOtherSpawned = exports.hasOnOtherSpawned = exports.hasOnOtherAuraSpawned = exports.hasOnSpawned = exports.hasOnMinionAttacked = exports.hasAfterAnotherMinionAttacks = exports.hasOnWheneverAnotherMinionAttacks = exports.hasRally = exports.hasAfterTavernSpellCast = exports.hasOnBeforeTavernSpellCast = exports.hasOnTavernSpellCast = exports.hasCastTavernSpell = exports.hasStartOfCombatFromHand = exports.hasStartOfCombat = exports.hasDefaultCharges = void 0;
|
|
4
|
+
exports.hasOnGlobalInfoUpdated = exports.hasPlayedBloodGemsOnAny = exports.hasPlayedBloodGemsOnMe = exports.hasOnSpawnFail = void 0;
|
|
5
5
|
const hasDefaultCharges = (card) => (card === null || card === void 0 ? void 0 : card.defaultCharges) !== undefined;
|
|
6
6
|
exports.hasDefaultCharges = hasDefaultCharges;
|
|
7
7
|
const hasStartOfCombat = (card) => (card === null || card === void 0 ? void 0 : card.startOfCombat) !== undefined;
|
|
@@ -46,6 +46,8 @@ const hasRebornEffect = (card) => (card === null || card === void 0 ? void 0 : c
|
|
|
46
46
|
exports.hasRebornEffect = hasRebornEffect;
|
|
47
47
|
const hasRebornSelfEffect = (card) => (card === null || card === void 0 ? void 0 : card.rebornSelfEffect) !== undefined;
|
|
48
48
|
exports.hasRebornSelfEffect = hasRebornSelfEffect;
|
|
49
|
+
const hasAfterReborn = (card) => (card === null || card === void 0 ? void 0 : card.afterReborn) !== undefined;
|
|
50
|
+
exports.hasAfterReborn = hasAfterReborn;
|
|
49
51
|
const hasOnBattlecryTriggered = (card) => (card === null || card === void 0 ? void 0 : card.onBattlecryTriggered) !== undefined;
|
|
50
52
|
exports.hasOnBattlecryTriggered = hasOnBattlecryTriggered;
|
|
51
53
|
const hasAvenge = (card) => (card === null || card === void 0 ? void 0 : card.avenge) !== undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.interface.js","sourceRoot":"","sources":["../../src/cards/card.interface.ts"],"names":[],"mappings":"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","sourcesContent":["import { BgsPlayerEntity, BgsPlayerGlobalInfo, BgsQuestEntity, BoardTrinket } from '../bgs-player-entity';\nimport { BoardEnchantment, BoardEntity } from '../board-entity';\nimport { BoardSecret } from '../board-secret';\nimport { OnDivineShieldUpdatedInput } from '../keywords/divine-shield';\nimport { OnRebornUpdatedInput } from '../keywords/reborn';\nimport { OnStealthUpdatedInput } from '../keywords/stealth';\nimport { OnTauntUpdatedInput } from '../keywords/taunt';\nimport { OnVenomousUpdatedInput } from '../keywords/venomous';\nimport { OnWindfuryUpdatedInput } from '../keywords/windfury';\nimport { OnGlobalInfoUpdatedInput } from '../mechanics/player-global-effects';\nimport {\n\tOnDespawnInput,\n\tOnFriendlyMinionSummonedTrinketInput,\n\tOnOtherSpawnAuraInput,\n\tOnOtherSpawnInput,\n\tOnSpawnInput,\n} from '../simulation/add-minion-to-board';\nimport {\n\tOnAfterDeathInput,\n\tOnAfterFriendlyMinionDeathInput,\n\tOnDeathInput,\n\tOnMinionKilledInput,\n} from '../simulation/attack';\nimport { AvengeInput } from '../simulation/avenge';\nimport { BattlecryInput, OnBattlecryTriggeredInput } from '../simulation/battlecries';\nimport { PlayedBloodGemsOnAnyInput, PlayedBloodGemsOnMeInput } from '../simulation/blood-gems';\nimport { OnCardAddedToHandInput } from '../simulation/cards-in-hand';\nimport { AfterDealDamageInput, AfterFriendlyMinionDamagedInput } from '../simulation/damage-effects';\nimport { AfterHeroDamagedInput } from '../simulation/damage-to-hero';\nimport { DeathrattleTriggeredInput } from '../simulation/deathrattle-on-trigger';\nimport { FullGameState } from '../simulation/internal-game-state';\nimport {\n\tOnAfterMagnetizeInput,\n\tOnAfterMagnetizeSelfInput,\n\tOnBeforeMagnetizeInput,\n\tOnBeforeMagnetizeSelfInput,\n} from '../simulation/magnetize';\nimport { OnAttackInput } from '../simulation/on-attack';\nimport { OnMinionAttackedInput } from '../simulation/on-being-attacked';\nimport { RebornEffectInput } from '../simulation/reborn';\nimport { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';\nimport { OnStatsChangedInput } from '../simulation/stats';\n\nexport interface Card {\n\t// Maybe should make this mandatory\n\tcardIds?: readonly string[];\n\tstartOfCombat?: (\n\t\ttrinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret,\n\t\tinput: SoCInput,\n\t) => boolean | { hasTriggered: boolean; shouldRecomputeCurrentAttacker: boolean };\n}\n\nexport interface DefaultChargesCard extends Card {\n\tdefaultCharges: (entity: BoardEntity) => number;\n}\nexport const hasDefaultCharges = (card: Card): card is DefaultChargesCard =>\n\t(card as DefaultChargesCard)?.defaultCharges !== undefined;\n\nexport interface StartOfCombatCard extends Card {\n\tstartOfCombatTiming?: StartOfCombatTiming;\n\tstartOfCombat: NonNullable<Card['startOfCombat']>;\n}\nexport const hasStartOfCombat = (card: Card): card is StartOfCombatCard =>\n\t(card as StartOfCombatCard)?.startOfCombat !== undefined;\nexport interface StartOfCombatFromHandCard extends StartOfCombatCard {\n\tstartOfCombatFromHand: true;\n}\nexport const hasStartOfCombatFromHand = (card: Card): card is StartOfCombatFromHandCard =>\n\t(card as StartOfCombatFromHandCard)?.startOfCombatFromHand !== undefined;\nexport type StartOfCombatTiming = 'start-of-combat' | 'pre-combat' | 'illidan';\n\nexport interface TavernSpellCard extends Card {\n\tcastTavernSpell: (spellCardId: string, input: CastSpellInput) => void;\n}\nexport const hasCastTavernSpell = (card: Card): card is TavernSpellCard =>\n\t(card as TavernSpellCard)?.castTavernSpell !== undefined;\n\nexport interface OnTavernSpellCastCard extends Card {\n\tonTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasOnTavernSpellCast = (card: Card): card is OnTavernSpellCastCard =>\n\t(card as OnTavernSpellCastCard)?.onTavernSpellCast !== undefined;\n\nexport interface OnBeforeTavernSpellCastCard extends Card {\n\tonBeforeTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasOnBeforeTavernSpellCast = (card: Card): card is OnBeforeTavernSpellCastCard =>\n\t(card as OnBeforeTavernSpellCastCard)?.onBeforeTavernSpellCast !== undefined;\n\nexport interface AfterTavernSpellCastCard extends Card {\n\tafterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasAfterTavernSpellCast = (card: Card): card is AfterTavernSpellCastCard =>\n\t(card as AfterTavernSpellCastCard)?.afterTavernSpellCast !== undefined;\n\n// Whenever this attacks\nexport interface RallyCard extends Card {\n\trally: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasRally = (card: Card): card is RallyCard => (card as RallyCard)?.rally !== undefined;\n\nexport interface OnWheneverAnotherMinionAttacksCard extends Card {\n\tonWheneverAnotherMinionAttacks: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasOnWheneverAnotherMinionAttacks = (card: Card): card is OnWheneverAnotherMinionAttacksCard =>\n\t(card as OnWheneverAnotherMinionAttacksCard)?.onWheneverAnotherMinionAttacks !== undefined;\n\nexport interface AfterAnotherMinionAttacksCard extends Card {\n\tafterAnotherMinionAttacks: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasAfterAnotherMinionAttacks = (card: Card): card is AfterAnotherMinionAttacksCard =>\n\t(card as AfterAnotherMinionAttacksCard)?.afterAnotherMinionAttacks !== undefined;\n\nexport interface OnMinionAttackedCard extends Card {\n\tonAttacked: (minion: BoardEntity, input: OnMinionAttackedInput) => void;\n}\nexport const hasOnMinionAttacked = (card: Card): card is OnMinionAttackedCard =>\n\t(card as OnMinionAttackedCard)?.onAttacked !== undefined;\n\nexport interface OnSpawnedCard extends Card {\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => void;\n}\nexport const hasOnSpawned = (card: Card): card is OnSpawnedCard => (card as OnSpawnedCard)?.onSpawned !== undefined;\n\nexport interface OnOtherSpawnedAuraCard extends Card {\n\tonOtherSpawnedAura: (minion: BoardEntity, input: OnOtherSpawnAuraInput) => void;\n}\nexport const hasOnOtherAuraSpawned = (card: Card): card is OnOtherSpawnedAuraCard =>\n\t(card as OnOtherSpawnedAuraCard)?.onOtherSpawnedAura !== undefined;\n\nexport interface OnOtherSpawnedCard extends Card {\n\tonOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\n}\nexport const hasOnOtherSpawned = (card: Card): card is OnOtherSpawnedCard =>\n\t(card as OnOtherSpawnedCard)?.onOtherSpawned !== undefined;\n\nexport interface AfterOtherSpawnedCard extends Card {\n\tafterOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\n}\nexport const hasAfterOtherSpawned = (card: Card): card is AfterOtherSpawnedCard =>\n\t(card as AfterOtherSpawnedCard)?.afterOtherSpawned !== undefined;\n\nexport interface OnFriendlyMinionSummonedTrinketCard extends Card {\n\tonFriendlyMinionSummoned: (trinket: BoardTrinket, input: OnFriendlyMinionSummonedTrinketInput) => void;\n}\nexport const hasOnFriendlyMinionSummonedTrinket = (card: Card): card is OnFriendlyMinionSummonedTrinketCard =>\n\t(card as OnFriendlyMinionSummonedTrinketCard)?.onFriendlyMinionSummoned !== undefined;\n\nexport interface OnDespawnedCard extends Card {\n\tonDespawned: (minion: BoardEntity, input: OnDespawnInput) => void;\n}\nexport const hasOnDespawned = (card: Card): card is OnDespawnedCard =>\n\t(card as OnDespawnedCard)?.onDespawned !== undefined;\n\nexport interface DeathrattleSpawnCard extends Card {\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => readonly BoardEntity[];\n}\nexport const hasDeathrattleSpawn = (card: Card): card is DeathrattleSpawnCard =>\n\t(card as DeathrattleSpawnCard)?.deathrattleSpawn !== undefined;\n\n/** Deathrattle that does not return board spawns (hand buffs, stat grants, etc.). */\nexport interface DeathrattleEffectCard extends Card {\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => void;\n}\nexport const hasDeathrattleEffect = (card: Card): card is DeathrattleEffectCard =>\n\t(card as DeathrattleEffectCard)?.deathrattleEffect !== undefined;\n\nexport interface BattlecryCard extends Card {\n\t// boolean return type is used only for conditional battlecries (eg cards that only work as battlecries if a specific trinket\n\t// is in game)\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => boolean;\n}\nexport const hasBattlecry = (card: Card): card is BattlecryCard => (card as BattlecryCard)?.battlecry !== undefined;\n\nexport interface RebornEffectCard extends Card {\n\trebornEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\n}\nexport const hasRebornEffect = (card: Card): card is RebornEffectCard =>\n\t(card as RebornEffectCard)?.rebornEffect !== undefined;\n\nexport interface RebornSelfEffectCard extends Card {\n\trebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\n}\nexport const hasRebornSelfEffect = (card: Card): card is RebornSelfEffectCard =>\n\t(card as RebornSelfEffectCard)?.rebornSelfEffect !== undefined;\n\nexport interface OnBattlecryTriggeredCard extends Card {\n\tonBattlecryTriggered: (minion: BoardEntity, input: OnBattlecryTriggeredInput) => void;\n}\nexport const hasOnBattlecryTriggered = (card: Card): card is OnBattlecryTriggeredCard =>\n\t(card as OnBattlecryTriggeredCard)?.onBattlecryTriggered !== undefined;\n\nexport interface AvengeCard extends Card {\n\tavenge: (minion: BoardEntity | BoardTrinket, input: AvengeInput) => void | readonly BoardEntity[];\n\tbaseAvengeValue: (cardId: string) => number;\n}\nexport const hasAvenge = (card: Card): card is AvengeCard => (card as AvengeCard)?.avenge !== undefined;\n\nexport interface DefaultScriptDataNumCard extends Card {\n\tdefaultScriptDataNum: (cardId: string) => number;\n}\nexport const hasDefaultScriptDataNum = (card: Card): card is DefaultScriptDataNumCard =>\n\t(card as DefaultScriptDataNumCard)?.defaultScriptDataNum !== undefined;\n\n/** To use when another deathrattle is triggered */\nexport interface DeathrattleTriggeredCard extends Card {\n\tonDeathrattleTriggered: (minion: BoardEntity | BoardTrinket, input: DeathrattleTriggeredInput) => void;\n}\nexport const hasOnDeathrattleTriggered = (card: Card): card is DeathrattleTriggeredCard =>\n\t(card as DeathrattleTriggeredCard)?.onDeathrattleTriggered !== undefined;\n\n// export interface DeathrattleEnchantmentEffectCard extends Card {\n// \tdeathrattleEffectEnchantmentEffect: (\n// \t\tminion: { cardId: string; originEntityId?: number; repeats?: number },\n// \t\tinput: DeathrattleTriggeredInput,\n// \t) => void;\n// \tcardIds: readonly string[];\n// }\n// export const hasDeathrattleEnchantmentEffect = (card: Card): card is DeathrattleEnchantmentEffectCard =>\n// \t(card as DeathrattleEnchantmentEffectCard)?.deathrattleEffectEnchantmentEffect !== undefined;\n\nexport interface DeathrattleSpawnEnchantmentCard extends Card {\n\tdeathrattleSpawnEnchantmentEffect: (\n\t\tenchantment: BoardEnchantment,\n\t\tminion: BoardEntity | null | undefined,\n\t\tinput: DeathrattleTriggeredInput,\n\t) => readonly BoardEntity[];\n\tcardIds: readonly string[];\n}\nexport const hasDeathrattleSpawnEnchantment = (card: Card): card is DeathrattleSpawnEnchantmentCard =>\n\t(card as DeathrattleSpawnEnchantmentCard)?.deathrattleSpawnEnchantmentEffect !== undefined;\n\nexport interface OnCardAddedToHandCard extends Card {\n\tonCardAddedToHand: (entity: BoardEntity | BgsQuestEntity | BoardTrinket, input: OnCardAddedToHandInput) => void;\n}\nexport const hasOnCardAddedToHand = (card: Card): card is OnCardAddedToHandCard =>\n\t(card as OnCardAddedToHandCard)?.onCardAddedToHand !== undefined;\n\nexport interface EndOfTurnCard extends Card {\n\t// Use BattlecryInput because it's the only way end of turn effects are triggered\n\tendOfTurn: (entity: BoardEntity, input: EndOfTurnInput) => void;\n}\nexport const hasEndOfTurn = (card: Card): card is EndOfTurnCard => (card as EndOfTurnCard)?.endOfTurn !== undefined;\nexport type EndOfTurnInput = BattlecryInput;\n\nexport interface OnDivineShieldUpdatedCard extends Card {\n\tonDivineShieldUpdated: (entity: BoardEntity | BoardTrinket, input: OnDivineShieldUpdatedInput) => void;\n}\nexport const hasOnDivineShieldUpdated = (card: Card): card is OnDivineShieldUpdatedCard =>\n\t(card as OnDivineShieldUpdatedCard)?.onDivineShieldUpdated !== undefined;\n\nexport interface OnTauntUpdatedCard extends Card {\n\tonTauntUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnTauntUpdatedInput,\n\t) => void;\n}\nexport const hasOnTauntUpdated = (card: Card): card is OnTauntUpdatedCard =>\n\t(card as OnTauntUpdatedCard)?.onTauntUpdated !== undefined;\n\nexport interface OnRebornUpdatedCard extends Card {\n\tonRebornUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnRebornUpdatedInput,\n\t) => void;\n}\nexport const hasOnRebornUpdated = (card: Card): card is OnRebornUpdatedCard =>\n\t(card as OnRebornUpdatedCard)?.onRebornUpdated !== undefined;\n\nexport interface OnStealthUpdatedCard extends Card {\n\tonStealthUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnStealthUpdatedInput,\n\t) => void;\n}\nexport const hasOnStealthUpdated = (card: Card): card is OnStealthUpdatedCard =>\n\t(card as OnStealthUpdatedCard)?.onStealthUpdated !== undefined;\n\nexport interface OnVenomousUpdatedCard extends Card {\n\tonVenomousUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnVenomousUpdatedInput,\n\t) => void;\n}\nexport const hasOnVenomousUpdated = (card: Card): card is OnVenomousUpdatedCard =>\n\t(card as OnVenomousUpdatedCard)?.onVenomousUpdated !== undefined;\n\nexport interface OnWindfuryUpdatedCard extends Card {\n\tonWindfuryUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnWindfuryUpdatedInput,\n\t) => void;\n}\nexport const hasOnWindfuryUpdated = (card: Card): card is OnWindfuryUpdatedCard =>\n\t(card as OnWindfuryUpdatedCard)?.onWindfuryUpdated !== undefined;\n\nexport interface OnStatsChangedCard extends Card {\n\tonStatsChanged: (entity: BoardEntity, input: OnStatsChangedInput) => void;\n}\nexport const hasOnStatsChanged = (card: Card): card is OnStatsChangedCard =>\n\t(card as OnStatsChangedCard)?.onStatsChanged !== undefined;\n\nexport interface AfterHeroDamagedCard extends Card {\n\tafterHeroDamaged: (entity: BoardEntity | BoardTrinket, input: AfterHeroDamagedInput) => void;\n}\nexport const hasAfterHeroDamaged = (card: Card): card is AfterHeroDamagedCard =>\n\t(card as AfterHeroDamagedCard)?.afterHeroDamaged !== undefined;\n\nexport interface OnDamagedCard extends Card {\n\tonDamaged: (entity: BoardEntity, input: OnDamagedInput) => void;\n}\nexport const hasOnDamaged = (card: Card): card is OnDamagedCard => (card as OnDamagedCard)?.onDamaged !== undefined;\n\nexport interface AfterDealDamageCard extends Card {\n\t// Called whenever damage is dealt, both on the friendly and enemy side\n\t// So you need to check the \"friendly\" flag\n\tafterDealDamage: (entity: BoardEntity, input: AfterDealDamageInput) => void;\n}\nexport const hasAfterDealDamage = (card: Card): card is AfterDealDamageCard =>\n\t(card as AfterDealDamageCard)?.afterDealDamage !== undefined;\n\nexport interface AfterFriendlyMinionDamagedTrinketCard extends Card {\n\tafterFriendlyMinionDamaged: (trinket: BoardTrinket, input: AfterFriendlyMinionDamagedInput) => void;\n}\nexport const hasAfterFriendlyMinionDamagedTrinket = (card: Card): card is AfterFriendlyMinionDamagedTrinketCard =>\n\t(card as AfterFriendlyMinionDamagedTrinketCard)?.afterFriendlyMinionDamaged !== undefined;\n\nexport interface OnDeathCard extends Card {\n\tonDeath: (entity: BoardEntity, input: OnDeathInput) => void;\n}\nexport const hasOnDeath = (card: Card): card is OnDeathCard => (card as OnDeathCard)?.onDeath !== undefined;\n\nexport interface OnAfterDeathCard extends Card {\n\tonAfterDeath: (entity: BoardEntity | BoardTrinket, input: OnAfterDeathInput) => void;\n}\nexport const hasOnAfterDeath = (card: Card): card is OnAfterDeathCard =>\n\t(card as OnAfterDeathCard)?.onAfterDeath !== undefined;\n\n/**\n * After any friendly board minion dies (during `applyWheneverMinionDiesEffect`). Filter in the card\n * (e.g. only if `input.deadEntity.taunt`). Board minions and trinkets that implement this are dispatched\n * from `deathrattle-effects`.\n */\nexport interface OnAfterFriendlyMinionDeathCard extends Card {\n\tonAfterFriendlyMinionDeath: (listener: BoardEntity | BoardTrinket, input: OnAfterFriendlyMinionDeathInput) => void;\n}\nexport const hasOnAfterFriendlyMinionDeath = (card: Card): card is OnAfterFriendlyMinionDeathCard =>\n\t(card as OnAfterFriendlyMinionDeathCard)?.onAfterFriendlyMinionDeath !== undefined;\n\nexport interface OnMinionKilledCard extends Card {\n\tonMinionKilled: (\n\t\tentity: BoardEntity,\n\t\tinput: OnMinionKilledInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasOnMinionKilled = (card: Card): card is OnMinionKilledCard =>\n\t(card as OnMinionKilledCard)?.onMinionKilled !== undefined;\n\nexport interface OnBeforeMagnetizeCard extends Card {\n\tonBeforeMagnetize: (entity: BoardEntity | BoardTrinket, input: OnBeforeMagnetizeInput) => void;\n}\nexport const hasOnBeforeMagnetize = (card: Card): card is OnBeforeMagnetizeCard =>\n\t(card as OnBeforeMagnetizeCard)?.onBeforeMagnetize !== undefined;\n\nexport interface OnBeforeMagnetizeSelfCard extends Card {\n\tonBeforeMagnetizeSelf: (entity: BoardEntity, input: OnBeforeMagnetizeSelfInput) => void;\n}\nexport const hasOnBeforeMagnetizeSelf = (card: Card): card is OnBeforeMagnetizeSelfCard =>\n\t(card as OnBeforeMagnetizeSelfCard)?.onBeforeMagnetizeSelf !== undefined;\n\nexport interface OnAfterMagnetizeToSelfCard extends Card {\n\tonAfterMagnetizeToSelf: (entity: BoardEntity, input: OnAfterMagnetizeSelfInput) => void;\n}\nexport const hasOnAfterMagnetizeToSelf = (card: Card): card is OnAfterMagnetizeToSelfCard =>\n\t(card as OnAfterMagnetizeToSelfCard)?.onAfterMagnetizeToSelf !== undefined;\n\nexport interface OnAfterMagnetizeSelfCard extends Card {\n\tonAfterMagnetizeSelf: (entity: BoardEntity, input: OnAfterMagnetizeInput) => void;\n}\nexport const hasOnAfterMagnetizeSelf = (card: Card): card is OnAfterMagnetizeSelfCard =>\n\t(card as OnAfterMagnetizeSelfCard)?.onAfterMagnetizeSelf !== undefined;\n\nexport interface OnAfterMagnetizeCard extends Card {\n\tonAfterMagnetize: (entity: BoardEntity | BoardTrinket, input: OnAfterMagnetizeInput) => void;\n}\nexport const hasOnAfterMagnetize = (card: Card): card is OnAfterMagnetizeCard =>\n\t(card as OnAfterMagnetizeCard)?.onAfterMagnetize !== undefined;\n\nexport interface OnSpawnFailCard extends Card {\n\tonSpawnFail: (entity: BoardEntity, input: OnSpawnFailInput) => void;\n}\nexport const hasOnSpawnFail = (card: Card): card is OnSpawnFailCard =>\n\t(card as OnSpawnFailCard)?.onSpawnFail !== undefined;\n\nexport interface PlayedBloodGemsOnMeCard extends Card {\n\tplayedBloodGemsOnMe: (entity: BoardEntity, input: PlayedBloodGemsOnMeInput) => void;\n}\nexport const hasPlayedBloodGemsOnMe = (card: Card): card is PlayedBloodGemsOnMeCard =>\n\t(card as PlayedBloodGemsOnMeCard)?.playedBloodGemsOnMe !== undefined;\n\nexport interface PlayedBloodGemsOnAnyCard extends Card {\n\tplayedBloodGemsOnAny: (entity: BoardEntity, input: PlayedBloodGemsOnAnyInput) => void;\n}\nexport const hasPlayedBloodGemsOnAny = (card: Card): card is PlayedBloodGemsOnAnyCard =>\n\t(card as PlayedBloodGemsOnAnyCard)?.playedBloodGemsOnAny !== undefined;\n\nexport interface OnGlobalInfoUpdatedCard<T extends keyof BgsPlayerGlobalInfo> extends Card {\n\tonGlobalInfoUpdated: (entity: BoardEntity, input: OnGlobalInfoUpdatedInput<T>) => void;\n}\nexport const hasOnGlobalInfoUpdated = <T extends keyof BgsPlayerGlobalInfo>(\n\tcard: Card,\n): card is OnGlobalInfoUpdatedCard<T> => (card as OnGlobalInfoUpdatedCard<T>)?.onGlobalInfoUpdated !== undefined;\n\nexport interface OnSpawnFailInput {\n\tfailedSpawn: BoardEntity;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\n\nexport interface CastSpellInput {\n\tspellCardId: string;\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity;\n\ttarget: BoardEntity;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\totherBoard: BoardEntity[];\n\totherHero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\nexport interface OnDamagedInput {\n\tdamagedEntity: BoardEntity;\n\tdamageDealer: BoardEntity | BgsPlayerEntity;\n\tdamage: number;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\totherHero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"card.interface.js","sourceRoot":"","sources":["../../src/cards/card.interface.ts"],"names":[],"mappings":"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","sourcesContent":["import { BgsPlayerEntity, BgsPlayerGlobalInfo, BgsQuestEntity, BoardTrinket } from '../bgs-player-entity';\nimport { BoardEnchantment, BoardEntity } from '../board-entity';\nimport { BoardSecret } from '../board-secret';\nimport { OnDivineShieldUpdatedInput } from '../keywords/divine-shield';\nimport { OnRebornUpdatedInput } from '../keywords/reborn';\nimport { OnStealthUpdatedInput } from '../keywords/stealth';\nimport { OnTauntUpdatedInput } from '../keywords/taunt';\nimport { OnVenomousUpdatedInput } from '../keywords/venomous';\nimport { OnWindfuryUpdatedInput } from '../keywords/windfury';\nimport { OnGlobalInfoUpdatedInput } from '../mechanics/player-global-effects';\nimport {\n\tOnDespawnInput,\n\tOnFriendlyMinionSummonedTrinketInput,\n\tOnOtherSpawnAuraInput,\n\tOnOtherSpawnInput,\n\tOnSpawnInput,\n} from '../simulation/add-minion-to-board';\nimport {\n\tOnAfterDeathInput,\n\tOnAfterFriendlyMinionDeathInput,\n\tOnDeathInput,\n\tOnMinionKilledInput,\n} from '../simulation/attack';\nimport { AvengeInput } from '../simulation/avenge';\nimport { BattlecryInput, OnBattlecryTriggeredInput } from '../simulation/battlecries';\nimport { PlayedBloodGemsOnAnyInput, PlayedBloodGemsOnMeInput } from '../simulation/blood-gems';\nimport { OnCardAddedToHandInput } from '../simulation/cards-in-hand';\nimport { AfterDealDamageInput, AfterFriendlyMinionDamagedInput } from '../simulation/damage-effects';\nimport { AfterHeroDamagedInput } from '../simulation/damage-to-hero';\nimport { DeathrattleTriggeredInput } from '../simulation/deathrattle-on-trigger';\nimport { FullGameState } from '../simulation/internal-game-state';\nimport {\n\tOnAfterMagnetizeInput,\n\tOnAfterMagnetizeSelfInput,\n\tOnBeforeMagnetizeInput,\n\tOnBeforeMagnetizeSelfInput,\n} from '../simulation/magnetize';\nimport { OnAttackInput } from '../simulation/on-attack';\nimport { OnMinionAttackedInput } from '../simulation/on-being-attacked';\nimport { RebornEffectInput } from '../simulation/reborn';\nimport { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';\nimport { OnStatsChangedInput } from '../simulation/stats';\n\nexport interface Card {\n\t// Maybe should make this mandatory\n\tcardIds?: readonly string[];\n\tstartOfCombat?: (\n\t\ttrinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret,\n\t\tinput: SoCInput,\n\t) => boolean | { hasTriggered: boolean; shouldRecomputeCurrentAttacker: boolean };\n}\n\nexport interface DefaultChargesCard extends Card {\n\tdefaultCharges: (entity: BoardEntity) => number;\n}\nexport const hasDefaultCharges = (card: Card): card is DefaultChargesCard =>\n\t(card as DefaultChargesCard)?.defaultCharges !== undefined;\n\nexport interface StartOfCombatCard extends Card {\n\tstartOfCombatTiming?: StartOfCombatTiming;\n\tstartOfCombat: NonNullable<Card['startOfCombat']>;\n}\nexport const hasStartOfCombat = (card: Card): card is StartOfCombatCard =>\n\t(card as StartOfCombatCard)?.startOfCombat !== undefined;\nexport interface StartOfCombatFromHandCard extends StartOfCombatCard {\n\tstartOfCombatFromHand: true;\n}\nexport const hasStartOfCombatFromHand = (card: Card): card is StartOfCombatFromHandCard =>\n\t(card as StartOfCombatFromHandCard)?.startOfCombatFromHand !== undefined;\nexport type StartOfCombatTiming = 'start-of-combat' | 'pre-combat' | 'illidan';\n\nexport interface TavernSpellCard extends Card {\n\tcastTavernSpell: (spellCardId: string, input: CastSpellInput) => void;\n}\nexport const hasCastTavernSpell = (card: Card): card is TavernSpellCard =>\n\t(card as TavernSpellCard)?.castTavernSpell !== undefined;\n\nexport interface OnTavernSpellCastCard extends Card {\n\tonTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasOnTavernSpellCast = (card: Card): card is OnTavernSpellCastCard =>\n\t(card as OnTavernSpellCastCard)?.onTavernSpellCast !== undefined;\n\nexport interface OnBeforeTavernSpellCastCard extends Card {\n\tonBeforeTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasOnBeforeTavernSpellCast = (card: Card): card is OnBeforeTavernSpellCastCard =>\n\t(card as OnBeforeTavernSpellCastCard)?.onBeforeTavernSpellCast !== undefined;\n\nexport interface AfterTavernSpellCastCard extends Card {\n\tafterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasAfterTavernSpellCast = (card: Card): card is AfterTavernSpellCastCard =>\n\t(card as AfterTavernSpellCastCard)?.afterTavernSpellCast !== undefined;\n\n// Whenever this attacks\nexport interface RallyCard extends Card {\n\trally: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasRally = (card: Card): card is RallyCard => (card as RallyCard)?.rally !== undefined;\n\nexport interface OnWheneverAnotherMinionAttacksCard extends Card {\n\tonWheneverAnotherMinionAttacks: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasOnWheneverAnotherMinionAttacks = (card: Card): card is OnWheneverAnotherMinionAttacksCard =>\n\t(card as OnWheneverAnotherMinionAttacksCard)?.onWheneverAnotherMinionAttacks !== undefined;\n\nexport interface AfterAnotherMinionAttacksCard extends Card {\n\tafterAnotherMinionAttacks: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasAfterAnotherMinionAttacks = (card: Card): card is AfterAnotherMinionAttacksCard =>\n\t(card as AfterAnotherMinionAttacksCard)?.afterAnotherMinionAttacks !== undefined;\n\nexport interface OnMinionAttackedCard extends Card {\n\tonAttacked: (minion: BoardEntity, input: OnMinionAttackedInput) => void;\n}\nexport const hasOnMinionAttacked = (card: Card): card is OnMinionAttackedCard =>\n\t(card as OnMinionAttackedCard)?.onAttacked !== undefined;\n\nexport interface OnSpawnedCard extends Card {\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => void;\n}\nexport const hasOnSpawned = (card: Card): card is OnSpawnedCard => (card as OnSpawnedCard)?.onSpawned !== undefined;\n\nexport interface OnOtherSpawnedAuraCard extends Card {\n\tonOtherSpawnedAura: (minion: BoardEntity, input: OnOtherSpawnAuraInput) => void;\n}\nexport const hasOnOtherAuraSpawned = (card: Card): card is OnOtherSpawnedAuraCard =>\n\t(card as OnOtherSpawnedAuraCard)?.onOtherSpawnedAura !== undefined;\n\nexport interface OnOtherSpawnedCard extends Card {\n\tonOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\n}\nexport const hasOnOtherSpawned = (card: Card): card is OnOtherSpawnedCard =>\n\t(card as OnOtherSpawnedCard)?.onOtherSpawned !== undefined;\n\nexport interface AfterOtherSpawnedCard extends Card {\n\tafterOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\n}\nexport const hasAfterOtherSpawned = (card: Card): card is AfterOtherSpawnedCard =>\n\t(card as AfterOtherSpawnedCard)?.afterOtherSpawned !== undefined;\n\nexport interface OnFriendlyMinionSummonedTrinketCard extends Card {\n\tonFriendlyMinionSummoned: (trinket: BoardTrinket, input: OnFriendlyMinionSummonedTrinketInput) => void;\n}\nexport const hasOnFriendlyMinionSummonedTrinket = (card: Card): card is OnFriendlyMinionSummonedTrinketCard =>\n\t(card as OnFriendlyMinionSummonedTrinketCard)?.onFriendlyMinionSummoned !== undefined;\n\nexport interface OnDespawnedCard extends Card {\n\tonDespawned: (minion: BoardEntity, input: OnDespawnInput) => void;\n}\nexport const hasOnDespawned = (card: Card): card is OnDespawnedCard =>\n\t(card as OnDespawnedCard)?.onDespawned !== undefined;\n\nexport interface DeathrattleSpawnCard extends Card {\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => readonly BoardEntity[];\n}\nexport const hasDeathrattleSpawn = (card: Card): card is DeathrattleSpawnCard =>\n\t(card as DeathrattleSpawnCard)?.deathrattleSpawn !== undefined;\n\n/** Deathrattle that does not return board spawns (hand buffs, stat grants, etc.). */\nexport interface DeathrattleEffectCard extends Card {\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => void;\n}\nexport const hasDeathrattleEffect = (card: Card): card is DeathrattleEffectCard =>\n\t(card as DeathrattleEffectCard)?.deathrattleEffect !== undefined;\n\nexport interface BattlecryCard extends Card {\n\t// boolean return type is used only for conditional battlecries (eg cards that only work as battlecries if a specific trinket\n\t// is in game)\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => boolean;\n}\nexport const hasBattlecry = (card: Card): card is BattlecryCard => (card as BattlecryCard)?.battlecry !== undefined;\n\nexport interface RebornEffectCard extends Card {\n\trebornEffect: (minion: BoardEntity | BoardTrinket, input: RebornEffectInput) => void;\n}\nexport const hasRebornEffect = (card: Card): card is RebornEffectCard =>\n\t(card as RebornEffectCard)?.rebornEffect !== undefined;\n\nexport interface RebornSelfEffectCard extends Card {\n\trebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\n}\nexport const hasRebornSelfEffect = (card: Card): card is RebornSelfEffectCard =>\n\t(card as RebornSelfEffectCard)?.rebornSelfEffect !== undefined;\n\nexport interface AfterRebornCard extends Card {\n\tafterReborn: (minion: BoardEntity | BoardTrinket, input: RebornEffectInput) => void;\n}\nexport const hasAfterReborn = (card: Card): card is AfterRebornCard =>\n\t(card as AfterRebornCard)?.afterReborn !== undefined;\n\nexport interface OnBattlecryTriggeredCard extends Card {\n\tonBattlecryTriggered: (minion: BoardEntity, input: OnBattlecryTriggeredInput) => void;\n}\nexport const hasOnBattlecryTriggered = (card: Card): card is OnBattlecryTriggeredCard =>\n\t(card as OnBattlecryTriggeredCard)?.onBattlecryTriggered !== undefined;\n\nexport interface AvengeCard extends Card {\n\tavenge: (minion: BoardEntity | BoardTrinket, input: AvengeInput) => void | readonly BoardEntity[];\n\tbaseAvengeValue: (cardId: string) => number;\n}\nexport const hasAvenge = (card: Card): card is AvengeCard => (card as AvengeCard)?.avenge !== undefined;\n\nexport interface DefaultScriptDataNumCard extends Card {\n\tdefaultScriptDataNum: (cardId: string) => number;\n}\nexport const hasDefaultScriptDataNum = (card: Card): card is DefaultScriptDataNumCard =>\n\t(card as DefaultScriptDataNumCard)?.defaultScriptDataNum !== undefined;\n\n/** To use when another deathrattle is triggered */\nexport interface DeathrattleTriggeredCard extends Card {\n\tonDeathrattleTriggered: (minion: BoardEntity | BoardTrinket, input: DeathrattleTriggeredInput) => void;\n}\nexport const hasOnDeathrattleTriggered = (card: Card): card is DeathrattleTriggeredCard =>\n\t(card as DeathrattleTriggeredCard)?.onDeathrattleTriggered !== undefined;\n\n// export interface DeathrattleEnchantmentEffectCard extends Card {\n// \tdeathrattleEffectEnchantmentEffect: (\n// \t\tminion: { cardId: string; originEntityId?: number; repeats?: number },\n// \t\tinput: DeathrattleTriggeredInput,\n// \t) => void;\n// \tcardIds: readonly string[];\n// }\n// export const hasDeathrattleEnchantmentEffect = (card: Card): card is DeathrattleEnchantmentEffectCard =>\n// \t(card as DeathrattleEnchantmentEffectCard)?.deathrattleEffectEnchantmentEffect !== undefined;\n\nexport interface DeathrattleSpawnEnchantmentCard extends Card {\n\tdeathrattleSpawnEnchantmentEffect: (\n\t\tenchantment: BoardEnchantment,\n\t\tminion: BoardEntity | null | undefined,\n\t\tinput: DeathrattleTriggeredInput,\n\t) => readonly BoardEntity[];\n\tcardIds: readonly string[];\n}\nexport const hasDeathrattleSpawnEnchantment = (card: Card): card is DeathrattleSpawnEnchantmentCard =>\n\t(card as DeathrattleSpawnEnchantmentCard)?.deathrattleSpawnEnchantmentEffect !== undefined;\n\nexport interface OnCardAddedToHandCard extends Card {\n\tonCardAddedToHand: (entity: BoardEntity | BgsQuestEntity | BoardTrinket, input: OnCardAddedToHandInput) => void;\n}\nexport const hasOnCardAddedToHand = (card: Card): card is OnCardAddedToHandCard =>\n\t(card as OnCardAddedToHandCard)?.onCardAddedToHand !== undefined;\n\nexport interface EndOfTurnCard extends Card {\n\t// Use BattlecryInput because it's the only way end of turn effects are triggered\n\tendOfTurn: (entity: BoardEntity, input: EndOfTurnInput) => void;\n}\nexport const hasEndOfTurn = (card: Card): card is EndOfTurnCard => (card as EndOfTurnCard)?.endOfTurn !== undefined;\nexport type EndOfTurnInput = BattlecryInput;\n\nexport interface OnDivineShieldUpdatedCard extends Card {\n\tonDivineShieldUpdated: (entity: BoardEntity | BoardTrinket, input: OnDivineShieldUpdatedInput) => void;\n}\nexport const hasOnDivineShieldUpdated = (card: Card): card is OnDivineShieldUpdatedCard =>\n\t(card as OnDivineShieldUpdatedCard)?.onDivineShieldUpdated !== undefined;\n\nexport interface OnTauntUpdatedCard extends Card {\n\tonTauntUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnTauntUpdatedInput,\n\t) => void;\n}\nexport const hasOnTauntUpdated = (card: Card): card is OnTauntUpdatedCard =>\n\t(card as OnTauntUpdatedCard)?.onTauntUpdated !== undefined;\n\nexport interface OnRebornUpdatedCard extends Card {\n\tonRebornUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnRebornUpdatedInput,\n\t) => void;\n}\nexport const hasOnRebornUpdated = (card: Card): card is OnRebornUpdatedCard =>\n\t(card as OnRebornUpdatedCard)?.onRebornUpdated !== undefined;\n\nexport interface OnStealthUpdatedCard extends Card {\n\tonStealthUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnStealthUpdatedInput,\n\t) => void;\n}\nexport const hasOnStealthUpdated = (card: Card): card is OnStealthUpdatedCard =>\n\t(card as OnStealthUpdatedCard)?.onStealthUpdated !== undefined;\n\nexport interface OnVenomousUpdatedCard extends Card {\n\tonVenomousUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnVenomousUpdatedInput,\n\t) => void;\n}\nexport const hasOnVenomousUpdated = (card: Card): card is OnVenomousUpdatedCard =>\n\t(card as OnVenomousUpdatedCard)?.onVenomousUpdated !== undefined;\n\nexport interface OnWindfuryUpdatedCard extends Card {\n\tonWindfuryUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnWindfuryUpdatedInput,\n\t) => void;\n}\nexport const hasOnWindfuryUpdated = (card: Card): card is OnWindfuryUpdatedCard =>\n\t(card as OnWindfuryUpdatedCard)?.onWindfuryUpdated !== undefined;\n\nexport interface OnStatsChangedCard extends Card {\n\tonStatsChanged: (entity: BoardEntity, input: OnStatsChangedInput) => void;\n}\nexport const hasOnStatsChanged = (card: Card): card is OnStatsChangedCard =>\n\t(card as OnStatsChangedCard)?.onStatsChanged !== undefined;\n\nexport interface AfterHeroDamagedCard extends Card {\n\tafterHeroDamaged: (entity: BoardEntity | BoardTrinket, input: AfterHeroDamagedInput) => void;\n}\nexport const hasAfterHeroDamaged = (card: Card): card is AfterHeroDamagedCard =>\n\t(card as AfterHeroDamagedCard)?.afterHeroDamaged !== undefined;\n\nexport interface OnDamagedCard extends Card {\n\tonDamaged: (entity: BoardEntity, input: OnDamagedInput) => void;\n}\nexport const hasOnDamaged = (card: Card): card is OnDamagedCard => (card as OnDamagedCard)?.onDamaged !== undefined;\n\nexport interface AfterDealDamageCard extends Card {\n\t// Called whenever damage is dealt, both on the friendly and enemy side\n\t// So you need to check the \"friendly\" flag\n\tafterDealDamage: (entity: BoardEntity, input: AfterDealDamageInput) => void;\n}\nexport const hasAfterDealDamage = (card: Card): card is AfterDealDamageCard =>\n\t(card as AfterDealDamageCard)?.afterDealDamage !== undefined;\n\nexport interface AfterFriendlyMinionDamagedTrinketCard extends Card {\n\tafterFriendlyMinionDamaged: (trinket: BoardTrinket, input: AfterFriendlyMinionDamagedInput) => void;\n}\nexport const hasAfterFriendlyMinionDamagedTrinket = (card: Card): card is AfterFriendlyMinionDamagedTrinketCard =>\n\t(card as AfterFriendlyMinionDamagedTrinketCard)?.afterFriendlyMinionDamaged !== undefined;\n\nexport interface OnDeathCard extends Card {\n\tonDeath: (entity: BoardEntity, input: OnDeathInput) => void;\n}\nexport const hasOnDeath = (card: Card): card is OnDeathCard => (card as OnDeathCard)?.onDeath !== undefined;\n\nexport interface OnAfterDeathCard extends Card {\n\tonAfterDeath: (entity: BoardEntity | BoardTrinket, input: OnAfterDeathInput) => void;\n}\nexport const hasOnAfterDeath = (card: Card): card is OnAfterDeathCard =>\n\t(card as OnAfterDeathCard)?.onAfterDeath !== undefined;\n\n/**\n * After any friendly board minion dies (during `applyWheneverMinionDiesEffect`). Filter in the card\n * (e.g. only if `input.deadEntity.taunt`). Board minions and trinkets that implement this are dispatched\n * from `deathrattle-effects`.\n */\nexport interface OnAfterFriendlyMinionDeathCard extends Card {\n\tonAfterFriendlyMinionDeath: (listener: BoardEntity | BoardTrinket, input: OnAfterFriendlyMinionDeathInput) => void;\n}\nexport const hasOnAfterFriendlyMinionDeath = (card: Card): card is OnAfterFriendlyMinionDeathCard =>\n\t(card as OnAfterFriendlyMinionDeathCard)?.onAfterFriendlyMinionDeath !== undefined;\n\nexport interface OnMinionKilledCard extends Card {\n\tonMinionKilled: (\n\t\tentity: BoardEntity,\n\t\tinput: OnMinionKilledInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasOnMinionKilled = (card: Card): card is OnMinionKilledCard =>\n\t(card as OnMinionKilledCard)?.onMinionKilled !== undefined;\n\nexport interface OnBeforeMagnetizeCard extends Card {\n\tonBeforeMagnetize: (entity: BoardEntity | BoardTrinket, input: OnBeforeMagnetizeInput) => void;\n}\nexport const hasOnBeforeMagnetize = (card: Card): card is OnBeforeMagnetizeCard =>\n\t(card as OnBeforeMagnetizeCard)?.onBeforeMagnetize !== undefined;\n\nexport interface OnBeforeMagnetizeSelfCard extends Card {\n\tonBeforeMagnetizeSelf: (entity: BoardEntity, input: OnBeforeMagnetizeSelfInput) => void;\n}\nexport const hasOnBeforeMagnetizeSelf = (card: Card): card is OnBeforeMagnetizeSelfCard =>\n\t(card as OnBeforeMagnetizeSelfCard)?.onBeforeMagnetizeSelf !== undefined;\n\nexport interface OnAfterMagnetizeToSelfCard extends Card {\n\tonAfterMagnetizeToSelf: (entity: BoardEntity, input: OnAfterMagnetizeSelfInput) => void;\n}\nexport const hasOnAfterMagnetizeToSelf = (card: Card): card is OnAfterMagnetizeToSelfCard =>\n\t(card as OnAfterMagnetizeToSelfCard)?.onAfterMagnetizeToSelf !== undefined;\n\nexport interface OnAfterMagnetizeSelfCard extends Card {\n\tonAfterMagnetizeSelf: (entity: BoardEntity, input: OnAfterMagnetizeInput) => void;\n}\nexport const hasOnAfterMagnetizeSelf = (card: Card): card is OnAfterMagnetizeSelfCard =>\n\t(card as OnAfterMagnetizeSelfCard)?.onAfterMagnetizeSelf !== undefined;\n\nexport interface OnAfterMagnetizeCard extends Card {\n\tonAfterMagnetize: (entity: BoardEntity | BoardTrinket, input: OnAfterMagnetizeInput) => void;\n}\nexport const hasOnAfterMagnetize = (card: Card): card is OnAfterMagnetizeCard =>\n\t(card as OnAfterMagnetizeCard)?.onAfterMagnetize !== undefined;\n\nexport interface OnSpawnFailCard extends Card {\n\tonSpawnFail: (entity: BoardEntity, input: OnSpawnFailInput) => void;\n}\nexport const hasOnSpawnFail = (card: Card): card is OnSpawnFailCard =>\n\t(card as OnSpawnFailCard)?.onSpawnFail !== undefined;\n\nexport interface PlayedBloodGemsOnMeCard extends Card {\n\tplayedBloodGemsOnMe: (entity: BoardEntity, input: PlayedBloodGemsOnMeInput) => void;\n}\nexport const hasPlayedBloodGemsOnMe = (card: Card): card is PlayedBloodGemsOnMeCard =>\n\t(card as PlayedBloodGemsOnMeCard)?.playedBloodGemsOnMe !== undefined;\n\nexport interface PlayedBloodGemsOnAnyCard extends Card {\n\tplayedBloodGemsOnAny: (entity: BoardEntity, input: PlayedBloodGemsOnAnyInput) => void;\n}\nexport const hasPlayedBloodGemsOnAny = (card: Card): card is PlayedBloodGemsOnAnyCard =>\n\t(card as PlayedBloodGemsOnAnyCard)?.playedBloodGemsOnAny !== undefined;\n\nexport interface OnGlobalInfoUpdatedCard<T extends keyof BgsPlayerGlobalInfo> extends Card {\n\tonGlobalInfoUpdated: (entity: BoardEntity, input: OnGlobalInfoUpdatedInput<T>) => void;\n}\nexport const hasOnGlobalInfoUpdated = <T extends keyof BgsPlayerGlobalInfo>(\n\tcard: Card,\n): card is OnGlobalInfoUpdatedCard<T> => (card as OnGlobalInfoUpdatedCard<T>)?.onGlobalInfoUpdated !== undefined;\n\nexport interface OnSpawnFailInput {\n\tfailedSpawn: BoardEntity;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\n\nexport interface CastSpellInput {\n\tspellCardId: string;\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity;\n\ttarget: BoardEntity;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\totherBoard: BoardEntity[];\n\totherHero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\nexport interface OnDamagedInput {\n\tdamagedEntity: BoardEntity;\n\tdamageDealer: BoardEntity | BgsPlayerEntity;\n\tdamage: number;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\totherHero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\n"]}
|
|
@@ -129,6 +129,7 @@ const cruise_controller_1 = require("./minion/cruise-controller");
|
|
|
129
129
|
const crystal_infuser_enchantment_1 = require("./minion/crystal-infuser-enchantment");
|
|
130
130
|
const cupcake_peddler_1 = require("./minion/cupcake-peddler");
|
|
131
131
|
const dastardly_drust_1 = require("./minion/dastardly-drust");
|
|
132
|
+
const dead_sea_ravager_1 = require("./minion/dead-sea-ravager");
|
|
132
133
|
const deadstomper_1 = require("./minion/deadstomper");
|
|
133
134
|
const deathly_striker_1 = require("./minion/deathly-striker");
|
|
134
135
|
const deepwater_chieftain_1 = require("./minion/deepwater-chieftain");
|
|
@@ -220,6 +221,7 @@ const imposing_percussionist_1 = require("./minion/imposing-percussionist");
|
|
|
220
221
|
const impulsive_trickster_1 = require("./minion/impulsive-trickster");
|
|
221
222
|
const incubation_researcher_1 = require("./minion/incubation-researcher");
|
|
222
223
|
const indomitable_mount_1 = require("./minion/indomitable-mount");
|
|
224
|
+
const ingenious_inventor_1 = require("./minion/ingenious-inventor");
|
|
223
225
|
const inspiring_underdog_1 = require("./minion/inspiring-underdog");
|
|
224
226
|
const interrogator_whitemane_1 = require("./minion/interrogator-whitemane");
|
|
225
227
|
const irate_rooster_1 = require("./minion/irate-rooster");
|
|
@@ -564,8 +566,11 @@ const thaumaturgy_1 = require("./spellcraft/thaumaturgy");
|
|
|
564
566
|
const timewarped_crown_1 = require("./spellcraft/timewarped-crown");
|
|
565
567
|
const timewarped_eelectrify_1 = require("./spellcraft/timewarped-eelectrify");
|
|
566
568
|
const timewarped_shoal_1 = require("./spellcraft/timewarped-shoal");
|
|
569
|
+
const trudge_through_lava_1 = require("./spellcraft/trudge-through-lava");
|
|
567
570
|
const undersea_mount_1 = require("./spellcraft/undersea-mount");
|
|
571
|
+
const use_supplies_1 = require("./spellcraft/use-supplies");
|
|
568
572
|
const veterans_tactics_1 = require("./spellcraft/veterans-tactics");
|
|
573
|
+
const volcanic_visitor_1 = require("./spellcraft/volcanic-visitor");
|
|
569
574
|
const all_purpose_kibble_1 = require("./trinket/all-purpose-kibble");
|
|
570
575
|
const archaic_scroll_1 = require("./trinket/archaic-scroll");
|
|
571
576
|
const arm_of_the_empire_1 = require("./trinket/arm-of-the-empire");
|
|
@@ -588,6 +593,7 @@ const copper_coil_1 = require("./trinket/copper-coil");
|
|
|
588
593
|
const coral_spear_1 = require("./trinket/coral-spear");
|
|
589
594
|
const crocheted_sungill_1 = require("./trinket/crocheted-sungill");
|
|
590
595
|
const daggerspine_thrasher_1 = require("./trinket/daggerspine-thrasher");
|
|
596
|
+
const deathtouch_apple_1 = require("./trinket/deathtouch-apple");
|
|
591
597
|
const divine_signet_1 = require("./trinket/divine-signet");
|
|
592
598
|
const dramaloc_sticker_1 = require("./trinket/dramaloc-sticker");
|
|
593
599
|
const eclectic_shrine_1 = require("./trinket/eclectic-shrine");
|
|
@@ -612,10 +618,14 @@ const powder_keg_enchantment_1 = require("./trinket/powder-keg-enchantment");
|
|
|
612
618
|
const protective_ring_1 = require("./trinket/protective-ring");
|
|
613
619
|
const quilligraphy_set_1 = require("./trinket/quilligraphy-set");
|
|
614
620
|
const reinforced_shield_1 = require("./trinket/reinforced-shield");
|
|
621
|
+
const rylak_portrait_1 = require("./trinket/rylak-portrait");
|
|
615
622
|
const saltscale_honcho_1 = require("./trinket/saltscale-honcho");
|
|
616
623
|
const scrapsmith_portrait_1 = require("./trinket/scrapsmith-portrait");
|
|
617
624
|
const sepulchral_sergent_1 = require("./trinket/sepulchral-sergent");
|
|
625
|
+
const sky_golem_portrait_1 = require("./trinket/sky-golem-portrait");
|
|
626
|
+
const sky_golem_portrait_enchantment_1 = require("./trinket/sky-golem-portrait-enchantment");
|
|
618
627
|
const slamma_sticker_1 = require("./trinket/slamma-sticker");
|
|
628
|
+
const soul_fermenter_1 = require("./trinket/soul-fermenter");
|
|
619
629
|
const stegodon_portrait_1 = require("./trinket/stegodon-portrait");
|
|
620
630
|
const sthara_sticker_1 = require("./trinket/sthara-sticker");
|
|
621
631
|
const stormcoil_sticker_1 = require("./trinket/stormcoil-sticker");
|
|
@@ -938,8 +948,18 @@ const cards = [
|
|
|
938
948
|
timewarped_mythraw_1.TimewarpedMythrax,
|
|
939
949
|
timewarped_wargear_1.TimewarpedWargear,
|
|
940
950
|
timewarped_collector_1.TimewarpedCollector,
|
|
951
|
+
rylak_portrait_1.RylakPortrait,
|
|
952
|
+
sky_golem_portrait_1.SkyGolemPortrait,
|
|
953
|
+
sky_golem_portrait_enchantment_1.SkyGolemPortraitEnchantment,
|
|
954
|
+
deathtouch_apple_1.DeathtouchApple,
|
|
955
|
+
soul_fermenter_1.SoulFermenter,
|
|
941
956
|
timewarped_icky_imp_1.TimewarpedIckyImp,
|
|
942
957
|
undersea_mount_1.UnderseaMount,
|
|
958
|
+
ingenious_inventor_1.IngeniousInventor,
|
|
959
|
+
dead_sea_ravager_1.DeadSeaRavager,
|
|
960
|
+
trudge_through_lava_1.TrudgeThroughLava,
|
|
961
|
+
use_supplies_1.UseSupplies,
|
|
962
|
+
volcanic_visitor_1.VolcanicVisitor,
|
|
943
963
|
burgeoning_whelp_1.BurgeoningWhelp,
|
|
944
964
|
timewarped_traveler_1.TimewarpedTraveler,
|
|
945
965
|
sunken_advocate_1.SunkenAdvocate,
|