@firestone-hs/simulate-bgs-battle 1.1.728 → 1.1.730
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bgs-player-entity.d.ts +1 -0
- package/dist/bgs-player-entity.js.map +1 -1
- package/dist/cards/card.interface.d.ts +59 -56
- package/dist/cards/card.interface.js.map +1 -1
- package/dist/cards/impl/enchantments/admiration.js +1 -1
- package/dist/cards/impl/enchantments/admiration.js.map +1 -1
- package/dist/cards/impl/enchantments/charisma.js +1 -1
- package/dist/cards/impl/enchantments/charisma.js.map +1 -1
- package/dist/cards/impl/enchantments/consanguinity.js +1 -1
- package/dist/cards/impl/enchantments/consanguinity.js.map +1 -1
- package/dist/cards/impl/enchantments/defensive-sacrifice.js +1 -1
- package/dist/cards/impl/enchantments/defensive-sacrifice.js.map +1 -1
- package/dist/cards/impl/enchantments/golemancy.js +1 -1
- package/dist/cards/impl/enchantments/golemancy.js.map +1 -1
- package/dist/cards/impl/enchantments/hostility.js +1 -1
- package/dist/cards/impl/enchantments/hostility.js.map +1 -1
- package/dist/cards/impl/enchantments/invulnerability.js +1 -1
- package/dist/cards/impl/enchantments/invulnerability.js.map +1 -1
- package/dist/cards/impl/enchantments/jaws-of-death.js +1 -1
- package/dist/cards/impl/enchantments/jaws-of-death.js.map +1 -1
- package/dist/cards/impl/enchantments/mystic-essence.js +1 -1
- package/dist/cards/impl/enchantments/mystic-essence.js.map +1 -1
- package/dist/cards/impl/enchantments/offensive-sacrifice.js +1 -1
- package/dist/cards/impl/enchantments/offensive-sacrifice.js.map +1 -1
- package/dist/cards/impl/enchantments/persisting-horror.js +4 -1
- package/dist/cards/impl/enchantments/persisting-horror.js.map +1 -1
- package/dist/cards/impl/enchantments/resistance.js +1 -1
- package/dist/cards/impl/enchantments/resistance.js.map +1 -1
- package/dist/cards/impl/enchantments/toreths-blessing.js +1 -1
- package/dist/cards/impl/enchantments/toreths-blessing.js.map +1 -1
- package/dist/cards/impl/enchantments/transcendence.js +1 -1
- package/dist/cards/impl/enchantments/transcendence.js.map +1 -1
- package/dist/cards/impl/minion/bonker.js +1 -1
- package/dist/cards/impl/minion/bonker.js.map +1 -1
- package/dist/cards/impl/minion/prodigious-tusker.js +2 -6
- package/dist/cards/impl/minion/prodigious-tusker.js.map +1 -1
- package/dist/cards/impl/minion/tasty-lobster.js +4 -2
- package/dist/cards/impl/minion/tasty-lobster.js.map +1 -1
- package/dist/simulation/auras.js +7 -6
- package/dist/simulation/auras.js.map +1 -1
- package/dist/simulation/summon-when-space.js +1 -1
- package/dist/simulation/summon-when-space.js.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -102,6 +102,7 @@ export interface BgsPlayerGlobalInfo {
|
|
|
102
102
|
WhelpAttackBuff?: number;
|
|
103
103
|
WhelpHealthBuff?: number;
|
|
104
104
|
DeepBluesPlayed?: number;
|
|
105
|
+
TastyLobstersBuff?: number;
|
|
105
106
|
MutatedLasherAttackBuff?: number;
|
|
106
107
|
MutatedLasherHealthBuff?: number;
|
|
107
108
|
BattlecriesTriggeredThisGame?: number;
|
|
@@ -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\t// Flat buff carried over between combats, from Eternal Portrait. Unlike EternalKnightsDeadThisGame,\r\n\t// this is not doubled for golden Eternal Knights\r\n\tEternalKnightAttackBuff?: number;\r\n\tEternalKnightHealthBuff?: 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"]}
|
|
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\t// Flat buff carried over between combats, from Eternal Portrait. Unlike EternalKnightsDeadThisGame,\r\n\t// this is not doubled for golden Eternal Knights\r\n\tEternalKnightAttackBuff?: number;\r\n\tEternalKnightHealthBuff?: 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\tTastyLobstersBuff?: 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"]}
|
|
@@ -26,18 +26,21 @@ import { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';
|
|
|
26
26
|
import { OnStatsChangedInput } from '../simulation/stats';
|
|
27
27
|
export interface Card {
|
|
28
28
|
cardIds?: readonly string[];
|
|
29
|
-
startOfCombat
|
|
29
|
+
startOfCombat?(trinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret, input: SoCInput): boolean | {
|
|
30
30
|
hasTriggered: boolean;
|
|
31
31
|
shouldRecomputeCurrentAttacker: boolean;
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
export interface DefaultChargesCard extends Card {
|
|
35
|
-
defaultCharges
|
|
35
|
+
defaultCharges(entity: BoardEntity): number;
|
|
36
36
|
}
|
|
37
37
|
export declare const hasDefaultCharges: (card: Card) => card is DefaultChargesCard;
|
|
38
38
|
export interface StartOfCombatCard extends Card {
|
|
39
39
|
startOfCombatTiming?: StartOfCombatTiming;
|
|
40
|
-
startOfCombat:
|
|
40
|
+
startOfCombat(trinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret, input: SoCInput): boolean | {
|
|
41
|
+
hasTriggered: boolean;
|
|
42
|
+
shouldRecomputeCurrentAttacker: boolean;
|
|
43
|
+
};
|
|
41
44
|
}
|
|
42
45
|
export declare const hasStartOfCombat: (card: Card) => card is StartOfCombatCard;
|
|
43
46
|
export interface StartOfCombatFromHandCard extends StartOfCombatCard {
|
|
@@ -46,226 +49,226 @@ export interface StartOfCombatFromHandCard extends StartOfCombatCard {
|
|
|
46
49
|
export declare const hasStartOfCombatFromHand: (card: Card) => card is StartOfCombatFromHandCard;
|
|
47
50
|
export type StartOfCombatTiming = 'start-of-combat' | 'pre-combat' | 'illidan';
|
|
48
51
|
export interface TavernSpellCard extends Card {
|
|
49
|
-
castTavernSpell
|
|
52
|
+
castTavernSpell(spellCardId: string, input: CastSpellInput): void;
|
|
50
53
|
}
|
|
51
54
|
export declare const hasCastTavernSpell: (card: Card) => card is TavernSpellCard;
|
|
52
55
|
export interface OnTavernSpellCastCard extends Card {
|
|
53
|
-
onTavernSpellCast
|
|
56
|
+
onTavernSpellCast(entity: BoardEntity | BoardTrinket, input: CastSpellInput): void;
|
|
54
57
|
}
|
|
55
58
|
export declare const hasOnTavernSpellCast: (card: Card) => card is OnTavernSpellCastCard;
|
|
56
59
|
export interface OnBeforeTavernSpellCastCard extends Card {
|
|
57
|
-
onBeforeTavernSpellCast
|
|
60
|
+
onBeforeTavernSpellCast(entity: BoardEntity | BoardTrinket, input: CastSpellInput): void;
|
|
58
61
|
}
|
|
59
62
|
export declare const hasOnBeforeTavernSpellCast: (card: Card) => card is OnBeforeTavernSpellCastCard;
|
|
60
63
|
export interface AfterTavernSpellCastCard extends Card {
|
|
61
|
-
afterTavernSpellCast
|
|
64
|
+
afterTavernSpellCast(entity: BoardEntity | BoardTrinket, input: CastSpellInput): void;
|
|
62
65
|
}
|
|
63
66
|
export declare const hasAfterTavernSpellCast: (card: Card) => card is AfterTavernSpellCastCard;
|
|
64
67
|
export interface RallyCard extends Card {
|
|
65
|
-
rally
|
|
68
|
+
rally(minion: BoardEntity | BoardTrinket | BoardEnchantment, input: OnAttackInput): {
|
|
66
69
|
dmgDoneByAttacker: number;
|
|
67
70
|
dmgDoneByDefender: number;
|
|
68
71
|
};
|
|
69
72
|
}
|
|
70
73
|
export declare const hasRally: (card: Card) => card is RallyCard;
|
|
71
74
|
export interface OnWheneverAnotherMinionAttacksCard extends Card {
|
|
72
|
-
onWheneverAnotherMinionAttacks
|
|
75
|
+
onWheneverAnotherMinionAttacks(minion: BoardEntity | BoardTrinket | BoardEnchantment, input: OnAttackInput): {
|
|
73
76
|
dmgDoneByAttacker: number;
|
|
74
77
|
dmgDoneByDefender: number;
|
|
75
78
|
};
|
|
76
79
|
}
|
|
77
80
|
export declare const hasOnWheneverAnotherMinionAttacks: (card: Card) => card is OnWheneverAnotherMinionAttacksCard;
|
|
78
81
|
export interface AfterAnotherMinionAttacksCard extends Card {
|
|
79
|
-
afterAnotherMinionAttacks
|
|
82
|
+
afterAnotherMinionAttacks(minion: BoardEntity | BoardTrinket | BoardEnchantment, input: OnAttackInput): {
|
|
80
83
|
dmgDoneByAttacker: number;
|
|
81
84
|
dmgDoneByDefender: number;
|
|
82
85
|
};
|
|
83
86
|
}
|
|
84
87
|
export declare const hasAfterAnotherMinionAttacks: (card: Card) => card is AfterAnotherMinionAttacksCard;
|
|
85
88
|
export interface OnMinionAttackedCard extends Card {
|
|
86
|
-
onAttacked
|
|
89
|
+
onAttacked(minion: BoardEntity, input: OnMinionAttackedInput): void;
|
|
87
90
|
}
|
|
88
91
|
export declare const hasOnMinionAttacked: (card: Card) => card is OnMinionAttackedCard;
|
|
89
92
|
export interface OnSpawnedCard extends Card {
|
|
90
|
-
onSpawned
|
|
93
|
+
onSpawned(minion: BoardEntity, input: OnSpawnInput): void;
|
|
91
94
|
}
|
|
92
95
|
export declare const hasOnSpawned: (card: Card) => card is OnSpawnedCard;
|
|
93
96
|
export interface OnOtherSpawnedAuraCard extends Card {
|
|
94
|
-
onOtherSpawnedAura
|
|
97
|
+
onOtherSpawnedAura(minion: BoardEntity, input: OnOtherSpawnAuraInput): void;
|
|
95
98
|
}
|
|
96
99
|
export declare const hasOnOtherAuraSpawned: (card: Card) => card is OnOtherSpawnedAuraCard;
|
|
97
100
|
export interface OnOtherSpawnedCard extends Card {
|
|
98
|
-
onOtherSpawned
|
|
101
|
+
onOtherSpawned(minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput): void;
|
|
99
102
|
}
|
|
100
103
|
export declare const hasOnOtherSpawned: (card: Card) => card is OnOtherSpawnedCard;
|
|
101
104
|
export interface AfterOtherSpawnedCard extends Card {
|
|
102
|
-
afterOtherSpawned
|
|
105
|
+
afterOtherSpawned(minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput): void;
|
|
103
106
|
}
|
|
104
107
|
export declare const hasAfterOtherSpawned: (card: Card) => card is AfterOtherSpawnedCard;
|
|
105
108
|
export interface OnFriendlyMinionSummonedTrinketCard extends Card {
|
|
106
|
-
onFriendlyMinionSummoned
|
|
109
|
+
onFriendlyMinionSummoned(trinket: BoardTrinket, input: OnFriendlyMinionSummonedTrinketInput): void;
|
|
107
110
|
}
|
|
108
111
|
export declare const hasOnFriendlyMinionSummonedTrinket: (card: Card) => card is OnFriendlyMinionSummonedTrinketCard;
|
|
109
112
|
export interface OnDespawnedCard extends Card {
|
|
110
|
-
onDespawned
|
|
113
|
+
onDespawned(minion: BoardEntity, input: OnDespawnInput): void;
|
|
111
114
|
}
|
|
112
115
|
export declare const hasOnDespawned: (card: Card) => card is OnDespawnedCard;
|
|
113
116
|
export interface DeathrattleSpawnCard extends Card {
|
|
114
|
-
deathrattleSpawn
|
|
117
|
+
deathrattleSpawn(minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[];
|
|
115
118
|
}
|
|
116
119
|
export declare const hasDeathrattleSpawn: (card: Card) => card is DeathrattleSpawnCard;
|
|
117
120
|
export interface DeathrattleEffectCard extends Card {
|
|
118
|
-
deathrattleEffect
|
|
121
|
+
deathrattleEffect(minion: BoardEntity, input: DeathrattleTriggeredInput): void;
|
|
119
122
|
}
|
|
120
123
|
export declare const hasDeathrattleEffect: (card: Card) => card is DeathrattleEffectCard;
|
|
121
124
|
export interface BattlecryCard extends Card {
|
|
122
|
-
battlecry
|
|
125
|
+
battlecry(minion: BoardEntity, input: BattlecryInput): boolean;
|
|
123
126
|
}
|
|
124
127
|
export declare const hasBattlecry: (card: Card) => card is BattlecryCard;
|
|
125
128
|
export interface RebornEffectCard extends Card {
|
|
126
|
-
rebornEffect
|
|
129
|
+
rebornEffect(minion: BoardEntity | BoardTrinket, input: RebornEffectInput): void;
|
|
127
130
|
}
|
|
128
131
|
export declare const hasRebornEffect: (card: Card) => card is RebornEffectCard;
|
|
129
132
|
export interface RebornSelfEffectCard extends Card {
|
|
130
|
-
rebornSelfEffect
|
|
133
|
+
rebornSelfEffect(minion: BoardEntity, input: RebornEffectInput): void;
|
|
131
134
|
}
|
|
132
135
|
export declare const hasRebornSelfEffect: (card: Card) => card is RebornSelfEffectCard;
|
|
133
136
|
export interface BeforeRebornSelfEffectCard extends Card {
|
|
134
|
-
beforeRebornSelfEffect
|
|
137
|
+
beforeRebornSelfEffect(minion: BoardEntity, input: RebornEffectInput): void;
|
|
135
138
|
}
|
|
136
139
|
export declare const hasBeforeRebornSelfEffect: (card: Card) => card is BeforeRebornSelfEffectCard;
|
|
137
140
|
export interface AfterRebornCard extends Card {
|
|
138
|
-
afterReborn
|
|
141
|
+
afterReborn(minion: BoardEntity | BoardTrinket, input: RebornEffectInput): void;
|
|
139
142
|
}
|
|
140
143
|
export declare const hasAfterReborn: (card: Card) => card is AfterRebornCard;
|
|
141
144
|
export interface OnBattlecryTriggeredCard extends Card {
|
|
142
|
-
onBattlecryTriggered
|
|
145
|
+
onBattlecryTriggered(minion: BoardEntity | BoardTrinket, input: OnBattlecryTriggeredInput): void;
|
|
143
146
|
}
|
|
144
147
|
export declare const hasOnBattlecryTriggered: (card: Card) => card is OnBattlecryTriggeredCard;
|
|
145
148
|
export interface AvengeCard extends Card {
|
|
146
|
-
avenge
|
|
147
|
-
baseAvengeValue
|
|
149
|
+
avenge(minion: BoardEntity | BoardTrinket, input: AvengeInput): void | readonly BoardEntity[];
|
|
150
|
+
baseAvengeValue(cardId: string): number;
|
|
148
151
|
}
|
|
149
152
|
export declare const hasAvenge: (card: Card) => card is AvengeCard;
|
|
150
153
|
export interface DefaultScriptDataNumCard extends Card {
|
|
151
|
-
defaultScriptDataNum
|
|
154
|
+
defaultScriptDataNum(cardId: string): number;
|
|
152
155
|
}
|
|
153
156
|
export declare const hasDefaultScriptDataNum: (card: Card) => card is DefaultScriptDataNumCard;
|
|
154
157
|
export interface DeathrattleTriggeredCard extends Card {
|
|
155
|
-
onDeathrattleTriggered
|
|
158
|
+
onDeathrattleTriggered(minion: BoardEntity | BoardTrinket, input: DeathrattleTriggeredInput): void;
|
|
156
159
|
}
|
|
157
160
|
export declare const hasOnDeathrattleTriggered: (card: Card) => card is DeathrattleTriggeredCard;
|
|
158
161
|
export interface DeathrattleSpawnEnchantmentCard extends Card {
|
|
159
|
-
deathrattleSpawnEnchantmentEffect
|
|
162
|
+
deathrattleSpawnEnchantmentEffect(enchantment: BoardEnchantment, minion: BoardEntity | null | undefined, input: DeathrattleTriggeredInput): readonly BoardEntity[];
|
|
160
163
|
cardIds: readonly string[];
|
|
161
164
|
}
|
|
162
165
|
export declare const hasDeathrattleSpawnEnchantment: (card: Card) => card is DeathrattleSpawnEnchantmentCard;
|
|
163
166
|
export interface OnCardAddedToHandCard extends Card {
|
|
164
|
-
onCardAddedToHand
|
|
167
|
+
onCardAddedToHand(entity: BoardEntity | BgsQuestEntity | BoardTrinket, input: OnCardAddedToHandInput): void;
|
|
165
168
|
}
|
|
166
169
|
export declare const hasOnCardAddedToHand: (card: Card) => card is OnCardAddedToHandCard;
|
|
167
170
|
export interface EndOfTurnCard extends Card {
|
|
168
|
-
endOfTurn
|
|
171
|
+
endOfTurn(entity: BoardEntity, input: EndOfTurnInput): void;
|
|
169
172
|
}
|
|
170
173
|
export declare const hasEndOfTurn: (card: Card) => card is EndOfTurnCard;
|
|
171
174
|
export type EndOfTurnInput = BattlecryInput;
|
|
172
175
|
export interface OnDivineShieldUpdatedCard extends Card {
|
|
173
|
-
onDivineShieldUpdated
|
|
176
|
+
onDivineShieldUpdated(entity: BoardEntity | BoardTrinket, input: OnDivineShieldUpdatedInput): void;
|
|
174
177
|
}
|
|
175
178
|
export declare const hasOnDivineShieldUpdated: (card: Card) => card is OnDivineShieldUpdatedCard;
|
|
176
179
|
export interface OnTauntUpdatedCard extends Card {
|
|
177
|
-
onTauntUpdated
|
|
180
|
+
onTauntUpdated(entity: BoardEntity, impactedEntity: BoardEntity, previousValue: boolean, input: OnTauntUpdatedInput): void;
|
|
178
181
|
}
|
|
179
182
|
export declare const hasOnTauntUpdated: (card: Card) => card is OnTauntUpdatedCard;
|
|
180
183
|
export interface OnRebornUpdatedCard extends Card {
|
|
181
|
-
onRebornUpdated
|
|
184
|
+
onRebornUpdated(entity: BoardEntity, impactedEntity: BoardEntity, previousValue: boolean, input: OnRebornUpdatedInput): void;
|
|
182
185
|
}
|
|
183
186
|
export declare const hasOnRebornUpdated: (card: Card) => card is OnRebornUpdatedCard;
|
|
184
187
|
export interface OnStealthUpdatedCard extends Card {
|
|
185
|
-
onStealthUpdated
|
|
188
|
+
onStealthUpdated(entity: BoardEntity, impactedEntity: BoardEntity, previousValue: boolean, input: OnStealthUpdatedInput): void;
|
|
186
189
|
}
|
|
187
190
|
export declare const hasOnStealthUpdated: (card: Card) => card is OnStealthUpdatedCard;
|
|
188
191
|
export interface OnVenomousUpdatedCard extends Card {
|
|
189
|
-
onVenomousUpdated
|
|
192
|
+
onVenomousUpdated(entity: BoardEntity, impactedEntity: BoardEntity, previousValue: boolean, input: OnVenomousUpdatedInput): void;
|
|
190
193
|
}
|
|
191
194
|
export declare const hasOnVenomousUpdated: (card: Card) => card is OnVenomousUpdatedCard;
|
|
192
195
|
export interface OnWindfuryUpdatedCard extends Card {
|
|
193
|
-
onWindfuryUpdated
|
|
196
|
+
onWindfuryUpdated(entity: BoardEntity, impactedEntity: BoardEntity, previousValue: boolean, input: OnWindfuryUpdatedInput): void;
|
|
194
197
|
}
|
|
195
198
|
export declare const hasOnWindfuryUpdated: (card: Card) => card is OnWindfuryUpdatedCard;
|
|
196
199
|
export interface OnStatsChangedCard extends Card {
|
|
197
|
-
onStatsChanged
|
|
200
|
+
onStatsChanged(entity: BoardEntity, input: OnStatsChangedInput): void;
|
|
198
201
|
}
|
|
199
202
|
export declare const hasOnStatsChanged: (card: Card) => card is OnStatsChangedCard;
|
|
200
203
|
export interface AfterHeroDamagedCard extends Card {
|
|
201
|
-
afterHeroDamaged
|
|
204
|
+
afterHeroDamaged(entity: BoardEntity | BoardTrinket, input: AfterHeroDamagedInput): void;
|
|
202
205
|
}
|
|
203
206
|
export declare const hasAfterHeroDamaged: (card: Card) => card is AfterHeroDamagedCard;
|
|
204
207
|
export interface OnDamagedCard extends Card {
|
|
205
|
-
onDamaged
|
|
208
|
+
onDamaged(entity: BoardEntity, input: OnDamagedInput): void;
|
|
206
209
|
}
|
|
207
210
|
export declare const hasOnDamaged: (card: Card) => card is OnDamagedCard;
|
|
208
211
|
export interface AfterDealDamageCard extends Card {
|
|
209
|
-
afterDealDamage
|
|
212
|
+
afterDealDamage(entity: BoardEntity, input: AfterDealDamageInput): void;
|
|
210
213
|
}
|
|
211
214
|
export declare const hasAfterDealDamage: (card: Card) => card is AfterDealDamageCard;
|
|
212
215
|
export interface AfterFriendlyMinionDamagedTrinketCard extends Card {
|
|
213
|
-
afterFriendlyMinionDamaged
|
|
216
|
+
afterFriendlyMinionDamaged(trinket: BoardTrinket, input: AfterFriendlyMinionDamagedInput): void;
|
|
214
217
|
}
|
|
215
218
|
export declare const hasAfterFriendlyMinionDamagedTrinket: (card: Card) => card is AfterFriendlyMinionDamagedTrinketCard;
|
|
216
219
|
export interface OnDeathCard extends Card {
|
|
217
|
-
onDeath
|
|
220
|
+
onDeath(entity: BoardEntity, input: OnDeathInput): void;
|
|
218
221
|
}
|
|
219
222
|
export declare const hasOnDeath: (card: Card) => card is OnDeathCard;
|
|
220
223
|
export interface OnAfterDeathCard extends Card {
|
|
221
|
-
onAfterDeath
|
|
224
|
+
onAfterDeath(entity: BoardEntity | BoardTrinket, input: OnAfterDeathInput): void;
|
|
222
225
|
}
|
|
223
226
|
export declare const hasOnAfterDeath: (card: Card) => card is OnAfterDeathCard;
|
|
224
227
|
export interface OnAfterFriendlyMinionDeathCard extends Card {
|
|
225
|
-
onAfterFriendlyMinionDeath
|
|
228
|
+
onAfterFriendlyMinionDeath(listener: BoardEntity | BoardTrinket, input: OnAfterFriendlyMinionDeathInput): void;
|
|
226
229
|
}
|
|
227
230
|
export declare const hasOnAfterFriendlyMinionDeath: (card: Card) => card is OnAfterFriendlyMinionDeathCard;
|
|
228
231
|
export interface OnMinionKilledCard extends Card {
|
|
229
|
-
onMinionKilled
|
|
232
|
+
onMinionKilled(entity: BoardEntity, input: OnMinionKilledInput): {
|
|
230
233
|
dmgDoneByAttacker: number;
|
|
231
234
|
dmgDoneByDefender: number;
|
|
232
235
|
};
|
|
233
236
|
}
|
|
234
237
|
export declare const hasOnMinionKilled: (card: Card) => card is OnMinionKilledCard;
|
|
235
238
|
export interface OnBeforeMagnetizeCard extends Card {
|
|
236
|
-
onBeforeMagnetize
|
|
239
|
+
onBeforeMagnetize(entity: BoardEntity | BoardTrinket, input: OnBeforeMagnetizeInput): void;
|
|
237
240
|
}
|
|
238
241
|
export declare const hasOnBeforeMagnetize: (card: Card) => card is OnBeforeMagnetizeCard;
|
|
239
242
|
export interface OnBeforeMagnetizeSelfCard extends Card {
|
|
240
|
-
onBeforeMagnetizeSelf
|
|
243
|
+
onBeforeMagnetizeSelf(entity: BoardEntity, input: OnBeforeMagnetizeSelfInput): void;
|
|
241
244
|
}
|
|
242
245
|
export declare const hasOnBeforeMagnetizeSelf: (card: Card) => card is OnBeforeMagnetizeSelfCard;
|
|
243
246
|
export interface OnAfterMagnetizeToSelfCard extends Card {
|
|
244
|
-
onAfterMagnetizeToSelf
|
|
247
|
+
onAfterMagnetizeToSelf(entity: BoardEntity, input: OnAfterMagnetizeSelfInput): void;
|
|
245
248
|
}
|
|
246
249
|
export declare const hasOnAfterMagnetizeToSelf: (card: Card) => card is OnAfterMagnetizeToSelfCard;
|
|
247
250
|
export interface OnAfterMagnetizeSelfCard extends Card {
|
|
248
|
-
onAfterMagnetizeSelf
|
|
251
|
+
onAfterMagnetizeSelf(entity: BoardEntity, input: OnAfterMagnetizeInput): void;
|
|
249
252
|
}
|
|
250
253
|
export declare const hasOnAfterMagnetizeSelf: (card: Card) => card is OnAfterMagnetizeSelfCard;
|
|
251
254
|
export interface OnAfterMagnetizeCard extends Card {
|
|
252
|
-
onAfterMagnetize
|
|
255
|
+
onAfterMagnetize(entity: BoardEntity | BoardTrinket, input: OnAfterMagnetizeInput): void;
|
|
253
256
|
}
|
|
254
257
|
export declare const hasOnAfterMagnetize: (card: Card) => card is OnAfterMagnetizeCard;
|
|
255
258
|
export interface OnSpawnFailCard extends Card {
|
|
256
|
-
onSpawnFail
|
|
259
|
+
onSpawnFail(entity: BoardEntity, input: OnSpawnFailInput): void;
|
|
257
260
|
}
|
|
258
261
|
export declare const hasOnSpawnFail: (card: Card) => card is OnSpawnFailCard;
|
|
259
262
|
export interface PlayedBloodGemsOnMeCard extends Card {
|
|
260
|
-
playedBloodGemsOnMe
|
|
263
|
+
playedBloodGemsOnMe(entity: BoardEntity, input: PlayedBloodGemsOnMeInput): void;
|
|
261
264
|
}
|
|
262
265
|
export declare const hasPlayedBloodGemsOnMe: (card: Card) => card is PlayedBloodGemsOnMeCard;
|
|
263
266
|
export interface PlayedBloodGemsOnAnyCard extends Card {
|
|
264
|
-
playedBloodGemsOnAny
|
|
267
|
+
playedBloodGemsOnAny(entity: BoardEntity, input: PlayedBloodGemsOnAnyInput): void;
|
|
265
268
|
}
|
|
266
269
|
export declare const hasPlayedBloodGemsOnAny: (card: Card) => card is PlayedBloodGemsOnAnyCard;
|
|
267
270
|
export interface OnGlobalInfoUpdatedCard<T extends keyof BgsPlayerGlobalInfo> extends Card {
|
|
268
|
-
onGlobalInfoUpdated
|
|
271
|
+
onGlobalInfoUpdated(entity: BoardEntity, input: OnGlobalInfoUpdatedInput<T>): void;
|
|
269
272
|
}
|
|
270
273
|
export declare const hasOnGlobalInfoUpdated: <T extends keyof BgsPlayerGlobalInfo>(card: Card) => card is OnGlobalInfoUpdatedCard<T>;
|
|
271
274
|
export interface OnSpawnFailInput {
|
|
@@ -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';\r\nimport { BoardEnchantment, BoardEntity } from '../board-entity';\r\nimport { BoardSecret } from '../board-secret';\r\nimport { OnDivineShieldUpdatedInput } from '../keywords/divine-shield';\r\nimport { OnRebornUpdatedInput } from '../keywords/reborn';\r\nimport { OnStealthUpdatedInput } from '../keywords/stealth';\r\nimport { OnTauntUpdatedInput } from '../keywords/taunt';\r\nimport { OnVenomousUpdatedInput } from '../keywords/venomous';\r\nimport { OnWindfuryUpdatedInput } from '../keywords/windfury';\r\nimport { OnGlobalInfoUpdatedInput } from '../mechanics/player-global-effects';\r\nimport {\r\n\tOnDespawnInput,\r\n\tOnFriendlyMinionSummonedTrinketInput,\r\n\tOnOtherSpawnAuraInput,\r\n\tOnOtherSpawnInput,\r\n\tOnSpawnInput,\r\n} from '../simulation/add-minion-to-board';\r\nimport {\r\n\tOnAfterDeathInput,\r\n\tOnAfterFriendlyMinionDeathInput,\r\n\tOnDeathInput,\r\n\tOnMinionKilledInput,\r\n} from '../simulation/attack';\r\nimport { AvengeInput } from '../simulation/avenge';\r\nimport { BattlecryInput, OnBattlecryTriggeredInput } from '../simulation/battlecries';\r\nimport { PlayedBloodGemsOnAnyInput, PlayedBloodGemsOnMeInput } from '../simulation/blood-gems';\r\nimport { OnCardAddedToHandInput } from '../simulation/cards-in-hand';\r\nimport { AfterDealDamageInput, AfterFriendlyMinionDamagedInput } from '../simulation/damage-effects';\r\nimport { AfterHeroDamagedInput } from '../simulation/damage-to-hero';\r\nimport { DeathrattleTriggeredInput } from '../simulation/deathrattle-on-trigger';\r\nimport { FullGameState } from '../simulation/internal-game-state';\r\nimport {\r\n\tOnAfterMagnetizeInput,\r\n\tOnAfterMagnetizeSelfInput,\r\n\tOnBeforeMagnetizeInput,\r\n\tOnBeforeMagnetizeSelfInput,\r\n} from '../simulation/magnetize';\r\nimport { OnAttackInput } from '../simulation/on-attack';\r\nimport { OnMinionAttackedInput } from '../simulation/on-being-attacked';\r\nimport { RebornEffectInput } from '../simulation/reborn';\r\nimport { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';\r\nimport { OnStatsChangedInput } from '../simulation/stats';\r\n\r\nexport interface Card {\r\n\t// Maybe should make this mandatory\r\n\tcardIds?: readonly string[];\r\n\tstartOfCombat?: (\r\n\t\ttrinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret,\r\n\t\tinput: SoCInput,\r\n\t) => boolean | { hasTriggered: boolean; shouldRecomputeCurrentAttacker: boolean };\r\n}\r\n\r\nexport interface DefaultChargesCard extends Card {\r\n\tdefaultCharges: (entity: BoardEntity) => number;\r\n}\r\nexport const hasDefaultCharges = (card: Card): card is DefaultChargesCard =>\r\n\t(card as DefaultChargesCard)?.defaultCharges !== undefined;\r\n\r\nexport interface StartOfCombatCard extends Card {\r\n\tstartOfCombatTiming?: StartOfCombatTiming;\r\n\tstartOfCombat: NonNullable<Card['startOfCombat']>;\r\n}\r\nexport const hasStartOfCombat = (card: Card): card is StartOfCombatCard =>\r\n\t(card as StartOfCombatCard)?.startOfCombat !== undefined;\r\nexport interface StartOfCombatFromHandCard extends StartOfCombatCard {\r\n\tstartOfCombatFromHand: true;\r\n}\r\nexport const hasStartOfCombatFromHand = (card: Card): card is StartOfCombatFromHandCard =>\r\n\t(card as StartOfCombatFromHandCard)?.startOfCombatFromHand !== undefined;\r\nexport type StartOfCombatTiming = 'start-of-combat' | 'pre-combat' | 'illidan';\r\n\r\nexport interface TavernSpellCard extends Card {\r\n\tcastTavernSpell: (spellCardId: string, input: CastSpellInput) => void;\r\n}\r\nexport const hasCastTavernSpell = (card: Card): card is TavernSpellCard =>\r\n\t(card as TavernSpellCard)?.castTavernSpell !== undefined;\r\n\r\nexport interface OnTavernSpellCastCard extends Card {\r\n\tonTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\r\n}\r\nexport const hasOnTavernSpellCast = (card: Card): card is OnTavernSpellCastCard =>\r\n\t(card as OnTavernSpellCastCard)?.onTavernSpellCast !== undefined;\r\n\r\nexport interface OnBeforeTavernSpellCastCard extends Card {\r\n\tonBeforeTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\r\n}\r\nexport const hasOnBeforeTavernSpellCast = (card: Card): card is OnBeforeTavernSpellCastCard =>\r\n\t(card as OnBeforeTavernSpellCastCard)?.onBeforeTavernSpellCast !== undefined;\r\n\r\nexport interface AfterTavernSpellCastCard extends Card {\r\n\tafterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\r\n}\r\nexport const hasAfterTavernSpellCast = (card: Card): card is AfterTavernSpellCastCard =>\r\n\t(card as AfterTavernSpellCastCard)?.afterTavernSpellCast !== undefined;\r\n\r\n// Whenever this attacks\r\nexport interface RallyCard extends Card {\r\n\trally: (\r\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\r\n\t\tinput: OnAttackInput,\r\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasRally = (card: Card): card is RallyCard => (card as RallyCard)?.rally !== undefined;\r\n\r\nexport interface OnWheneverAnotherMinionAttacksCard extends Card {\r\n\tonWheneverAnotherMinionAttacks: (\r\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\r\n\t\tinput: OnAttackInput,\r\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasOnWheneverAnotherMinionAttacks = (card: Card): card is OnWheneverAnotherMinionAttacksCard =>\r\n\t(card as OnWheneverAnotherMinionAttacksCard)?.onWheneverAnotherMinionAttacks !== undefined;\r\n\r\nexport interface AfterAnotherMinionAttacksCard extends Card {\r\n\tafterAnotherMinionAttacks: (\r\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\r\n\t\tinput: OnAttackInput,\r\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasAfterAnotherMinionAttacks = (card: Card): card is AfterAnotherMinionAttacksCard =>\r\n\t(card as AfterAnotherMinionAttacksCard)?.afterAnotherMinionAttacks !== undefined;\r\n\r\nexport interface OnMinionAttackedCard extends Card {\r\n\tonAttacked: (minion: BoardEntity, input: OnMinionAttackedInput) => void;\r\n}\r\nexport const hasOnMinionAttacked = (card: Card): card is OnMinionAttackedCard =>\r\n\t(card as OnMinionAttackedCard)?.onAttacked !== undefined;\r\n\r\nexport interface OnSpawnedCard extends Card {\r\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => void;\r\n}\r\nexport const hasOnSpawned = (card: Card): card is OnSpawnedCard => (card as OnSpawnedCard)?.onSpawned !== undefined;\r\n\r\nexport interface OnOtherSpawnedAuraCard extends Card {\r\n\tonOtherSpawnedAura: (minion: BoardEntity, input: OnOtherSpawnAuraInput) => void;\r\n}\r\nexport const hasOnOtherAuraSpawned = (card: Card): card is OnOtherSpawnedAuraCard =>\r\n\t(card as OnOtherSpawnedAuraCard)?.onOtherSpawnedAura !== undefined;\r\n\r\nexport interface OnOtherSpawnedCard extends Card {\r\n\tonOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\r\n}\r\nexport const hasOnOtherSpawned = (card: Card): card is OnOtherSpawnedCard =>\r\n\t(card as OnOtherSpawnedCard)?.onOtherSpawned !== undefined;\r\n\r\nexport interface AfterOtherSpawnedCard extends Card {\r\n\tafterOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\r\n}\r\nexport const hasAfterOtherSpawned = (card: Card): card is AfterOtherSpawnedCard =>\r\n\t(card as AfterOtherSpawnedCard)?.afterOtherSpawned !== undefined;\r\n\r\nexport interface OnFriendlyMinionSummonedTrinketCard extends Card {\r\n\tonFriendlyMinionSummoned: (trinket: BoardTrinket, input: OnFriendlyMinionSummonedTrinketInput) => void;\r\n}\r\nexport const hasOnFriendlyMinionSummonedTrinket = (card: Card): card is OnFriendlyMinionSummonedTrinketCard =>\r\n\t(card as OnFriendlyMinionSummonedTrinketCard)?.onFriendlyMinionSummoned !== undefined;\r\n\r\nexport interface OnDespawnedCard extends Card {\r\n\tonDespawned: (minion: BoardEntity, input: OnDespawnInput) => void;\r\n}\r\nexport const hasOnDespawned = (card: Card): card is OnDespawnedCard =>\r\n\t(card as OnDespawnedCard)?.onDespawned !== undefined;\r\n\r\nexport interface DeathrattleSpawnCard extends Card {\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => readonly BoardEntity[];\r\n}\r\nexport const hasDeathrattleSpawn = (card: Card): card is DeathrattleSpawnCard =>\r\n\t(card as DeathrattleSpawnCard)?.deathrattleSpawn !== undefined;\r\n\r\n/** Deathrattle that does not return board spawns (hand buffs, stat grants, etc.). */\r\nexport interface DeathrattleEffectCard extends Card {\r\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => void;\r\n}\r\nexport const hasDeathrattleEffect = (card: Card): card is DeathrattleEffectCard =>\r\n\t(card as DeathrattleEffectCard)?.deathrattleEffect !== undefined;\r\n\r\nexport interface BattlecryCard extends Card {\r\n\t// boolean return type is used only for conditional battlecries (eg cards that only work as battlecries if a specific trinket\r\n\t// is in game)\r\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => boolean;\r\n}\r\nexport const hasBattlecry = (card: Card): card is BattlecryCard => (card as BattlecryCard)?.battlecry !== undefined;\r\n\r\nexport interface RebornEffectCard extends Card {\r\n\trebornEffect: (minion: BoardEntity | BoardTrinket, input: RebornEffectInput) => void;\r\n}\r\nexport const hasRebornEffect = (card: Card): card is RebornEffectCard =>\r\n\t(card as RebornEffectCard)?.rebornEffect !== undefined;\r\n\r\nexport interface RebornSelfEffectCard extends Card {\r\n\trebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\r\n}\r\nexport const hasRebornSelfEffect = (card: Card): card is RebornSelfEffectCard =>\r\n\t(card as RebornSelfEffectCard)?.rebornSelfEffect !== undefined;\r\n\r\nexport interface BeforeRebornSelfEffectCard extends Card {\r\n\tbeforeRebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\r\n}\r\nexport const hasBeforeRebornSelfEffect = (card: Card): card is BeforeRebornSelfEffectCard =>\r\n\t(card as BeforeRebornSelfEffectCard)?.beforeRebornSelfEffect !== undefined;\r\n\r\nexport interface AfterRebornCard extends Card {\r\n\tafterReborn: (minion: BoardEntity | BoardTrinket, input: RebornEffectInput) => void;\r\n}\r\nexport const hasAfterReborn = (card: Card): card is AfterRebornCard =>\r\n\t(card as AfterRebornCard)?.afterReborn !== undefined;\r\n\r\nexport interface OnBattlecryTriggeredCard extends Card {\r\n\tonBattlecryTriggered: (minion: BoardEntity | BoardTrinket, input: OnBattlecryTriggeredInput) => void;\r\n}\r\nexport const hasOnBattlecryTriggered = (card: Card): card is OnBattlecryTriggeredCard =>\r\n\t(card as OnBattlecryTriggeredCard)?.onBattlecryTriggered !== undefined;\r\n\r\nexport interface AvengeCard extends Card {\r\n\tavenge: (minion: BoardEntity | BoardTrinket, input: AvengeInput) => void | readonly BoardEntity[];\r\n\tbaseAvengeValue: (cardId: string) => number;\r\n}\r\nexport const hasAvenge = (card: Card): card is AvengeCard => (card as AvengeCard)?.avenge !== undefined;\r\n\r\nexport interface DefaultScriptDataNumCard extends Card {\r\n\tdefaultScriptDataNum: (cardId: string) => number;\r\n}\r\nexport const hasDefaultScriptDataNum = (card: Card): card is DefaultScriptDataNumCard =>\r\n\t(card as DefaultScriptDataNumCard)?.defaultScriptDataNum !== undefined;\r\n\r\n/** To use when another deathrattle is triggered */\r\nexport interface DeathrattleTriggeredCard extends Card {\r\n\tonDeathrattleTriggered: (minion: BoardEntity | BoardTrinket, input: DeathrattleTriggeredInput) => void;\r\n}\r\nexport const hasOnDeathrattleTriggered = (card: Card): card is DeathrattleTriggeredCard =>\r\n\t(card as DeathrattleTriggeredCard)?.onDeathrattleTriggered !== undefined;\r\n\r\n// export interface DeathrattleEnchantmentEffectCard extends Card {\r\n// \tdeathrattleEffectEnchantmentEffect: (\r\n// \t\tminion: { cardId: string; originEntityId?: number; repeats?: number },\r\n// \t\tinput: DeathrattleTriggeredInput,\r\n// \t) => void;\r\n// \tcardIds: readonly string[];\r\n// }\r\n// export const hasDeathrattleEnchantmentEffect = (card: Card): card is DeathrattleEnchantmentEffectCard =>\r\n// \t(card as DeathrattleEnchantmentEffectCard)?.deathrattleEffectEnchantmentEffect !== undefined;\r\n\r\n/** Despite the name, this covers all deathrattle effects on an enchantment, not just the spawning ones */\r\nexport interface DeathrattleSpawnEnchantmentCard extends Card {\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\tenchantment: BoardEnchantment,\r\n\t\tminion: BoardEntity | null | undefined,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t) => readonly BoardEntity[];\r\n\tcardIds: readonly string[];\r\n}\r\nexport const hasDeathrattleSpawnEnchantment = (card: Card): card is DeathrattleSpawnEnchantmentCard =>\r\n\t(card as DeathrattleSpawnEnchantmentCard)?.deathrattleSpawnEnchantmentEffect !== undefined;\r\n\r\nexport interface OnCardAddedToHandCard extends Card {\r\n\tonCardAddedToHand: (entity: BoardEntity | BgsQuestEntity | BoardTrinket, input: OnCardAddedToHandInput) => void;\r\n}\r\nexport const hasOnCardAddedToHand = (card: Card): card is OnCardAddedToHandCard =>\r\n\t(card as OnCardAddedToHandCard)?.onCardAddedToHand !== undefined;\r\n\r\nexport interface EndOfTurnCard extends Card {\r\n\t// Use BattlecryInput because it's the only way end of turn effects are triggered\r\n\tendOfTurn: (entity: BoardEntity, input: EndOfTurnInput) => void;\r\n}\r\nexport const hasEndOfTurn = (card: Card): card is EndOfTurnCard => (card as EndOfTurnCard)?.endOfTurn !== undefined;\r\nexport type EndOfTurnInput = BattlecryInput;\r\n\r\nexport interface OnDivineShieldUpdatedCard extends Card {\r\n\tonDivineShieldUpdated: (entity: BoardEntity | BoardTrinket, input: OnDivineShieldUpdatedInput) => void;\r\n}\r\nexport const hasOnDivineShieldUpdated = (card: Card): card is OnDivineShieldUpdatedCard =>\r\n\t(card as OnDivineShieldUpdatedCard)?.onDivineShieldUpdated !== undefined;\r\n\r\nexport interface OnTauntUpdatedCard extends Card {\r\n\tonTauntUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnTauntUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnTauntUpdated = (card: Card): card is OnTauntUpdatedCard =>\r\n\t(card as OnTauntUpdatedCard)?.onTauntUpdated !== undefined;\r\n\r\nexport interface OnRebornUpdatedCard extends Card {\r\n\tonRebornUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnRebornUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnRebornUpdated = (card: Card): card is OnRebornUpdatedCard =>\r\n\t(card as OnRebornUpdatedCard)?.onRebornUpdated !== undefined;\r\n\r\nexport interface OnStealthUpdatedCard extends Card {\r\n\tonStealthUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnStealthUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnStealthUpdated = (card: Card): card is OnStealthUpdatedCard =>\r\n\t(card as OnStealthUpdatedCard)?.onStealthUpdated !== undefined;\r\n\r\nexport interface OnVenomousUpdatedCard extends Card {\r\n\tonVenomousUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnVenomousUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnVenomousUpdated = (card: Card): card is OnVenomousUpdatedCard =>\r\n\t(card as OnVenomousUpdatedCard)?.onVenomousUpdated !== undefined;\r\n\r\nexport interface OnWindfuryUpdatedCard extends Card {\r\n\tonWindfuryUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnWindfuryUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnWindfuryUpdated = (card: Card): card is OnWindfuryUpdatedCard =>\r\n\t(card as OnWindfuryUpdatedCard)?.onWindfuryUpdated !== undefined;\r\n\r\nexport interface OnStatsChangedCard extends Card {\r\n\tonStatsChanged: (entity: BoardEntity, input: OnStatsChangedInput) => void;\r\n}\r\nexport const hasOnStatsChanged = (card: Card): card is OnStatsChangedCard =>\r\n\t(card as OnStatsChangedCard)?.onStatsChanged !== undefined;\r\n\r\nexport interface AfterHeroDamagedCard extends Card {\r\n\tafterHeroDamaged: (entity: BoardEntity | BoardTrinket, input: AfterHeroDamagedInput) => void;\r\n}\r\nexport const hasAfterHeroDamaged = (card: Card): card is AfterHeroDamagedCard =>\r\n\t(card as AfterHeroDamagedCard)?.afterHeroDamaged !== undefined;\r\n\r\nexport interface OnDamagedCard extends Card {\r\n\tonDamaged: (entity: BoardEntity, input: OnDamagedInput) => void;\r\n}\r\nexport const hasOnDamaged = (card: Card): card is OnDamagedCard => (card as OnDamagedCard)?.onDamaged !== undefined;\r\n\r\nexport interface AfterDealDamageCard extends Card {\r\n\t// Called whenever damage is dealt, both on the friendly and enemy side\r\n\t// So you need to check the \"friendly\" flag\r\n\t// TODO: the \"after\" here waits for spawns, eg reborn / deathrattle\r\n\t// eg https://replays.firestoneapp.com/?reviewId=05860f41-1ea4-41f8-9c55-b6c854fa5f5a&turn=17&action=10\r\n\t// The reborn Rylak is buffed by Lord of the Ruins\r\n\tafterDealDamage: (entity: BoardEntity, input: AfterDealDamageInput) => void;\r\n}\r\nexport const hasAfterDealDamage = (card: Card): card is AfterDealDamageCard =>\r\n\t(card as AfterDealDamageCard)?.afterDealDamage !== undefined;\r\n\r\nexport interface AfterFriendlyMinionDamagedTrinketCard extends Card {\r\n\tafterFriendlyMinionDamaged: (trinket: BoardTrinket, input: AfterFriendlyMinionDamagedInput) => void;\r\n}\r\nexport const hasAfterFriendlyMinionDamagedTrinket = (card: Card): card is AfterFriendlyMinionDamagedTrinketCard =>\r\n\t(card as AfterFriendlyMinionDamagedTrinketCard)?.afterFriendlyMinionDamaged !== undefined;\r\n\r\nexport interface OnDeathCard extends Card {\r\n\tonDeath: (entity: BoardEntity, input: OnDeathInput) => void;\r\n}\r\nexport const hasOnDeath = (card: Card): card is OnDeathCard => (card as OnDeathCard)?.onDeath !== undefined;\r\n\r\nexport interface OnAfterDeathCard extends Card {\r\n\tonAfterDeath: (entity: BoardEntity | BoardTrinket, input: OnAfterDeathInput) => void;\r\n}\r\nexport const hasOnAfterDeath = (card: Card): card is OnAfterDeathCard =>\r\n\t(card as OnAfterDeathCard)?.onAfterDeath !== undefined;\r\n\r\n/**\r\n * After any friendly board minion dies (during `applyWheneverMinionDiesEffect`). Filter in the card\r\n * (e.g. only if `input.deadEntity.taunt`). Board minions and trinkets that implement this are dispatched\r\n * from `deathrattle-effects`.\r\n */\r\nexport interface OnAfterFriendlyMinionDeathCard extends Card {\r\n\tonAfterFriendlyMinionDeath: (listener: BoardEntity | BoardTrinket, input: OnAfterFriendlyMinionDeathInput) => void;\r\n}\r\nexport const hasOnAfterFriendlyMinionDeath = (card: Card): card is OnAfterFriendlyMinionDeathCard =>\r\n\t(card as OnAfterFriendlyMinionDeathCard)?.onAfterFriendlyMinionDeath !== undefined;\r\n\r\nexport interface OnMinionKilledCard extends Card {\r\n\tonMinionKilled: (\r\n\t\tentity: BoardEntity,\r\n\t\tinput: OnMinionKilledInput,\r\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasOnMinionKilled = (card: Card): card is OnMinionKilledCard =>\r\n\t(card as OnMinionKilledCard)?.onMinionKilled !== undefined;\r\n\r\nexport interface OnBeforeMagnetizeCard extends Card {\r\n\tonBeforeMagnetize: (entity: BoardEntity | BoardTrinket, input: OnBeforeMagnetizeInput) => void;\r\n}\r\nexport const hasOnBeforeMagnetize = (card: Card): card is OnBeforeMagnetizeCard =>\r\n\t(card as OnBeforeMagnetizeCard)?.onBeforeMagnetize !== undefined;\r\n\r\nexport interface OnBeforeMagnetizeSelfCard extends Card {\r\n\tonBeforeMagnetizeSelf: (entity: BoardEntity, input: OnBeforeMagnetizeSelfInput) => void;\r\n}\r\nexport const hasOnBeforeMagnetizeSelf = (card: Card): card is OnBeforeMagnetizeSelfCard =>\r\n\t(card as OnBeforeMagnetizeSelfCard)?.onBeforeMagnetizeSelf !== undefined;\r\n\r\nexport interface OnAfterMagnetizeToSelfCard extends Card {\r\n\tonAfterMagnetizeToSelf: (entity: BoardEntity, input: OnAfterMagnetizeSelfInput) => void;\r\n}\r\nexport const hasOnAfterMagnetizeToSelf = (card: Card): card is OnAfterMagnetizeToSelfCard =>\r\n\t(card as OnAfterMagnetizeToSelfCard)?.onAfterMagnetizeToSelf !== undefined;\r\n\r\nexport interface OnAfterMagnetizeSelfCard extends Card {\r\n\tonAfterMagnetizeSelf: (entity: BoardEntity, input: OnAfterMagnetizeInput) => void;\r\n}\r\nexport const hasOnAfterMagnetizeSelf = (card: Card): card is OnAfterMagnetizeSelfCard =>\r\n\t(card as OnAfterMagnetizeSelfCard)?.onAfterMagnetizeSelf !== undefined;\r\n\r\nexport interface OnAfterMagnetizeCard extends Card {\r\n\tonAfterMagnetize: (entity: BoardEntity | BoardTrinket, input: OnAfterMagnetizeInput) => void;\r\n}\r\nexport const hasOnAfterMagnetize = (card: Card): card is OnAfterMagnetizeCard =>\r\n\t(card as OnAfterMagnetizeCard)?.onAfterMagnetize !== undefined;\r\n\r\nexport interface OnSpawnFailCard extends Card {\r\n\tonSpawnFail: (entity: BoardEntity, input: OnSpawnFailInput) => void;\r\n}\r\nexport const hasOnSpawnFail = (card: Card): card is OnSpawnFailCard =>\r\n\t(card as OnSpawnFailCard)?.onSpawnFail !== undefined;\r\n\r\nexport interface PlayedBloodGemsOnMeCard extends Card {\r\n\tplayedBloodGemsOnMe: (entity: BoardEntity, input: PlayedBloodGemsOnMeInput) => void;\r\n}\r\nexport const hasPlayedBloodGemsOnMe = (card: Card): card is PlayedBloodGemsOnMeCard =>\r\n\t(card as PlayedBloodGemsOnMeCard)?.playedBloodGemsOnMe !== undefined;\r\n\r\nexport interface PlayedBloodGemsOnAnyCard extends Card {\r\n\tplayedBloodGemsOnAny: (entity: BoardEntity, input: PlayedBloodGemsOnAnyInput) => void;\r\n}\r\nexport const hasPlayedBloodGemsOnAny = (card: Card): card is PlayedBloodGemsOnAnyCard =>\r\n\t(card as PlayedBloodGemsOnAnyCard)?.playedBloodGemsOnAny !== undefined;\r\n\r\nexport interface OnGlobalInfoUpdatedCard<T extends keyof BgsPlayerGlobalInfo> extends Card {\r\n\tonGlobalInfoUpdated: (entity: BoardEntity, input: OnGlobalInfoUpdatedInput<T>) => void;\r\n}\r\nexport const hasOnGlobalInfoUpdated = <T extends keyof BgsPlayerGlobalInfo>(\r\n\tcard: Card,\r\n): card is OnGlobalInfoUpdatedCard<T> => (card as OnGlobalInfoUpdatedCard<T>)?.onGlobalInfoUpdated !== undefined;\r\n\r\nexport interface OnSpawnFailInput {\r\n\tfailedSpawn: BoardEntity;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n\r\nexport interface CastSpellInput {\r\n\tspellCardId: string;\r\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity;\r\n\ttarget: BoardEntity;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherBoard: BoardEntity[];\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\nexport interface OnDamagedInput {\r\n\tdamagedEntity: BoardEntity;\r\n\tdamageDealer: BoardEntity | BgsPlayerEntity;\r\n\tdamage: number;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\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';\r\nimport { BoardEnchantment, BoardEntity } from '../board-entity';\r\nimport { BoardSecret } from '../board-secret';\r\nimport { OnDivineShieldUpdatedInput } from '../keywords/divine-shield';\r\nimport { OnRebornUpdatedInput } from '../keywords/reborn';\r\nimport { OnStealthUpdatedInput } from '../keywords/stealth';\r\nimport { OnTauntUpdatedInput } from '../keywords/taunt';\r\nimport { OnVenomousUpdatedInput } from '../keywords/venomous';\r\nimport { OnWindfuryUpdatedInput } from '../keywords/windfury';\r\nimport { OnGlobalInfoUpdatedInput } from '../mechanics/player-global-effects';\r\nimport {\r\n\tOnDespawnInput,\r\n\tOnFriendlyMinionSummonedTrinketInput,\r\n\tOnOtherSpawnAuraInput,\r\n\tOnOtherSpawnInput,\r\n\tOnSpawnInput,\r\n} from '../simulation/add-minion-to-board';\r\nimport {\r\n\tOnAfterDeathInput,\r\n\tOnAfterFriendlyMinionDeathInput,\r\n\tOnDeathInput,\r\n\tOnMinionKilledInput,\r\n} from '../simulation/attack';\r\nimport { AvengeInput } from '../simulation/avenge';\r\nimport { BattlecryInput, OnBattlecryTriggeredInput } from '../simulation/battlecries';\r\nimport { PlayedBloodGemsOnAnyInput, PlayedBloodGemsOnMeInput } from '../simulation/blood-gems';\r\nimport { OnCardAddedToHandInput } from '../simulation/cards-in-hand';\r\nimport { AfterDealDamageInput, AfterFriendlyMinionDamagedInput } from '../simulation/damage-effects';\r\nimport { AfterHeroDamagedInput } from '../simulation/damage-to-hero';\r\nimport { DeathrattleTriggeredInput } from '../simulation/deathrattle-on-trigger';\r\nimport { FullGameState } from '../simulation/internal-game-state';\r\nimport {\r\n\tOnAfterMagnetizeInput,\r\n\tOnAfterMagnetizeSelfInput,\r\n\tOnBeforeMagnetizeInput,\r\n\tOnBeforeMagnetizeSelfInput,\r\n} from '../simulation/magnetize';\r\nimport { OnAttackInput } from '../simulation/on-attack';\r\nimport { OnMinionAttackedInput } from '../simulation/on-being-attacked';\r\nimport { RebornEffectInput } from '../simulation/reborn';\r\nimport { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';\r\nimport { OnStatsChangedInput } from '../simulation/stats';\r\n\r\nexport interface Card {\r\n\t// Maybe should make this mandatory\r\n\tcardIds?: readonly string[];\r\n\t// Method syntax keeps parameters bivariant so implementations can narrow (e.g. BoardEntity).\r\n\tstartOfCombat?(\r\n\t\ttrinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret,\r\n\t\tinput: SoCInput,\r\n\t): boolean | { hasTriggered: boolean; shouldRecomputeCurrentAttacker: boolean };\r\n}\r\n\r\nexport interface DefaultChargesCard extends Card {\r\n\tdefaultCharges(entity: BoardEntity): number;\r\n}\r\nexport const hasDefaultCharges = (card: Card): card is DefaultChargesCard =>\r\n\t(card as DefaultChargesCard)?.defaultCharges !== undefined;\r\n\r\nexport interface StartOfCombatCard extends Card {\r\n\tstartOfCombatTiming?: StartOfCombatTiming;\r\n\tstartOfCombat(\r\n\t\ttrinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret,\r\n\t\tinput: SoCInput,\r\n\t): boolean | { hasTriggered: boolean; shouldRecomputeCurrentAttacker: boolean };\r\n}\r\nexport const hasStartOfCombat = (card: Card): card is StartOfCombatCard =>\r\n\t(card as StartOfCombatCard)?.startOfCombat !== undefined;\r\nexport interface StartOfCombatFromHandCard extends StartOfCombatCard {\r\n\tstartOfCombatFromHand: true;\r\n}\r\nexport const hasStartOfCombatFromHand = (card: Card): card is StartOfCombatFromHandCard =>\r\n\t(card as StartOfCombatFromHandCard)?.startOfCombatFromHand !== undefined;\r\nexport type StartOfCombatTiming = 'start-of-combat' | 'pre-combat' | 'illidan';\r\n\r\nexport interface TavernSpellCard extends Card {\r\n\tcastTavernSpell(spellCardId: string, input: CastSpellInput): void;\r\n}\r\nexport const hasCastTavernSpell = (card: Card): card is TavernSpellCard =>\r\n\t(card as TavernSpellCard)?.castTavernSpell !== undefined;\r\n\r\nexport interface OnTavernSpellCastCard extends Card {\r\n\tonTavernSpellCast(entity: BoardEntity | BoardTrinket, input: CastSpellInput): void;\r\n}\r\nexport const hasOnTavernSpellCast = (card: Card): card is OnTavernSpellCastCard =>\r\n\t(card as OnTavernSpellCastCard)?.onTavernSpellCast !== undefined;\r\n\r\nexport interface OnBeforeTavernSpellCastCard extends Card {\r\n\tonBeforeTavernSpellCast(entity: BoardEntity | BoardTrinket, input: CastSpellInput): void;\r\n}\r\nexport const hasOnBeforeTavernSpellCast = (card: Card): card is OnBeforeTavernSpellCastCard =>\r\n\t(card as OnBeforeTavernSpellCastCard)?.onBeforeTavernSpellCast !== undefined;\r\n\r\nexport interface AfterTavernSpellCastCard extends Card {\r\n\tafterTavernSpellCast(entity: BoardEntity | BoardTrinket, input: CastSpellInput): void;\r\n}\r\nexport const hasAfterTavernSpellCast = (card: Card): card is AfterTavernSpellCastCard =>\r\n\t(card as AfterTavernSpellCastCard)?.afterTavernSpellCast !== undefined;\r\n\r\n// Whenever this attacks\r\nexport interface RallyCard extends Card {\r\n\trally(\r\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\r\n\t\tinput: OnAttackInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasRally = (card: Card): card is RallyCard => (card as RallyCard)?.rally !== undefined;\r\n\r\nexport interface OnWheneverAnotherMinionAttacksCard extends Card {\r\n\tonWheneverAnotherMinionAttacks(\r\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\r\n\t\tinput: OnAttackInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasOnWheneverAnotherMinionAttacks = (card: Card): card is OnWheneverAnotherMinionAttacksCard =>\r\n\t(card as OnWheneverAnotherMinionAttacksCard)?.onWheneverAnotherMinionAttacks !== undefined;\r\n\r\nexport interface AfterAnotherMinionAttacksCard extends Card {\r\n\tafterAnotherMinionAttacks(\r\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\r\n\t\tinput: OnAttackInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasAfterAnotherMinionAttacks = (card: Card): card is AfterAnotherMinionAttacksCard =>\r\n\t(card as AfterAnotherMinionAttacksCard)?.afterAnotherMinionAttacks !== undefined;\r\n\r\nexport interface OnMinionAttackedCard extends Card {\r\n\tonAttacked(minion: BoardEntity, input: OnMinionAttackedInput): void;\r\n}\r\nexport const hasOnMinionAttacked = (card: Card): card is OnMinionAttackedCard =>\r\n\t(card as OnMinionAttackedCard)?.onAttacked !== undefined;\r\n\r\nexport interface OnSpawnedCard extends Card {\r\n\tonSpawned(minion: BoardEntity, input: OnSpawnInput): void;\r\n}\r\nexport const hasOnSpawned = (card: Card): card is OnSpawnedCard => (card as OnSpawnedCard)?.onSpawned !== undefined;\r\n\r\nexport interface OnOtherSpawnedAuraCard extends Card {\r\n\tonOtherSpawnedAura(minion: BoardEntity, input: OnOtherSpawnAuraInput): void;\r\n}\r\nexport const hasOnOtherAuraSpawned = (card: Card): card is OnOtherSpawnedAuraCard =>\r\n\t(card as OnOtherSpawnedAuraCard)?.onOtherSpawnedAura !== undefined;\r\n\r\nexport interface OnOtherSpawnedCard extends Card {\r\n\tonOtherSpawned(minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput): void;\r\n}\r\nexport const hasOnOtherSpawned = (card: Card): card is OnOtherSpawnedCard =>\r\n\t(card as OnOtherSpawnedCard)?.onOtherSpawned !== undefined;\r\n\r\nexport interface AfterOtherSpawnedCard extends Card {\r\n\tafterOtherSpawned(minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput): void;\r\n}\r\nexport const hasAfterOtherSpawned = (card: Card): card is AfterOtherSpawnedCard =>\r\n\t(card as AfterOtherSpawnedCard)?.afterOtherSpawned !== undefined;\r\n\r\nexport interface OnFriendlyMinionSummonedTrinketCard extends Card {\r\n\tonFriendlyMinionSummoned(trinket: BoardTrinket, input: OnFriendlyMinionSummonedTrinketInput): void;\r\n}\r\nexport const hasOnFriendlyMinionSummonedTrinket = (card: Card): card is OnFriendlyMinionSummonedTrinketCard =>\r\n\t(card as OnFriendlyMinionSummonedTrinketCard)?.onFriendlyMinionSummoned !== undefined;\r\n\r\nexport interface OnDespawnedCard extends Card {\r\n\tonDespawned(minion: BoardEntity, input: OnDespawnInput): void;\r\n}\r\nexport const hasOnDespawned = (card: Card): card is OnDespawnedCard =>\r\n\t(card as OnDespawnedCard)?.onDespawned !== undefined;\r\n\r\nexport interface DeathrattleSpawnCard extends Card {\r\n\tdeathrattleSpawn(minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[];\r\n}\r\nexport const hasDeathrattleSpawn = (card: Card): card is DeathrattleSpawnCard =>\r\n\t(card as DeathrattleSpawnCard)?.deathrattleSpawn !== undefined;\r\n\r\n/** Deathrattle that does not return board spawns (hand buffs, stat grants, etc.). */\r\nexport interface DeathrattleEffectCard extends Card {\r\n\tdeathrattleEffect(minion: BoardEntity, input: DeathrattleTriggeredInput): void;\r\n}\r\nexport const hasDeathrattleEffect = (card: Card): card is DeathrattleEffectCard =>\r\n\t(card as DeathrattleEffectCard)?.deathrattleEffect !== undefined;\r\n\r\nexport interface BattlecryCard extends Card {\r\n\t// boolean return type is used only for conditional battlecries (eg cards that only work as battlecries if a specific trinket\r\n\t// is in game)\r\n\tbattlecry(minion: BoardEntity, input: BattlecryInput): boolean;\r\n}\r\nexport const hasBattlecry = (card: Card): card is BattlecryCard => (card as BattlecryCard)?.battlecry !== undefined;\r\n\r\nexport interface RebornEffectCard extends Card {\r\n\trebornEffect(minion: BoardEntity | BoardTrinket, input: RebornEffectInput): void;\r\n}\r\nexport const hasRebornEffect = (card: Card): card is RebornEffectCard =>\r\n\t(card as RebornEffectCard)?.rebornEffect !== undefined;\r\n\r\nexport interface RebornSelfEffectCard extends Card {\r\n\trebornSelfEffect(minion: BoardEntity, input: RebornEffectInput): void;\r\n}\r\nexport const hasRebornSelfEffect = (card: Card): card is RebornSelfEffectCard =>\r\n\t(card as RebornSelfEffectCard)?.rebornSelfEffect !== undefined;\r\n\r\nexport interface BeforeRebornSelfEffectCard extends Card {\r\n\tbeforeRebornSelfEffect(minion: BoardEntity, input: RebornEffectInput): void;\r\n}\r\nexport const hasBeforeRebornSelfEffect = (card: Card): card is BeforeRebornSelfEffectCard =>\r\n\t(card as BeforeRebornSelfEffectCard)?.beforeRebornSelfEffect !== undefined;\r\n\r\nexport interface AfterRebornCard extends Card {\r\n\tafterReborn(minion: BoardEntity | BoardTrinket, input: RebornEffectInput): void;\r\n}\r\nexport const hasAfterReborn = (card: Card): card is AfterRebornCard =>\r\n\t(card as AfterRebornCard)?.afterReborn !== undefined;\r\n\r\nexport interface OnBattlecryTriggeredCard extends Card {\r\n\tonBattlecryTriggered(minion: BoardEntity | BoardTrinket, input: OnBattlecryTriggeredInput): void;\r\n}\r\nexport const hasOnBattlecryTriggered = (card: Card): card is OnBattlecryTriggeredCard =>\r\n\t(card as OnBattlecryTriggeredCard)?.onBattlecryTriggered !== undefined;\r\n\r\nexport interface AvengeCard extends Card {\r\n\tavenge(minion: BoardEntity | BoardTrinket, input: AvengeInput): void | readonly BoardEntity[];\r\n\tbaseAvengeValue(cardId: string): number;\r\n}\r\nexport const hasAvenge = (card: Card): card is AvengeCard => (card as AvengeCard)?.avenge !== undefined;\r\n\r\nexport interface DefaultScriptDataNumCard extends Card {\r\n\tdefaultScriptDataNum(cardId: string): number;\r\n}\r\nexport const hasDefaultScriptDataNum = (card: Card): card is DefaultScriptDataNumCard =>\r\n\t(card as DefaultScriptDataNumCard)?.defaultScriptDataNum !== undefined;\r\n\r\n/** To use when another deathrattle is triggered */\r\nexport interface DeathrattleTriggeredCard extends Card {\r\n\tonDeathrattleTriggered(minion: BoardEntity | BoardTrinket, input: DeathrattleTriggeredInput): void;\r\n}\r\nexport const hasOnDeathrattleTriggered = (card: Card): card is DeathrattleTriggeredCard =>\r\n\t(card as DeathrattleTriggeredCard)?.onDeathrattleTriggered !== undefined;\r\n\r\n// export interface DeathrattleEnchantmentEffectCard extends Card {\r\n// \tdeathrattleEffectEnchantmentEffect: (\r\n// \t\tminion: { cardId: string; originEntityId?: number; repeats?: number },\r\n// \t\tinput: DeathrattleTriggeredInput,\r\n// \t) => void;\r\n// \tcardIds: readonly string[];\r\n// }\r\n// export const hasDeathrattleEnchantmentEffect = (card: Card): card is DeathrattleEnchantmentEffectCard =>\r\n// \t(card as DeathrattleEnchantmentEffectCard)?.deathrattleEffectEnchantmentEffect !== undefined;\r\n\r\n/** Despite the name, this covers all deathrattle effects on an enchantment, not just the spawning ones */\r\nexport interface DeathrattleSpawnEnchantmentCard extends Card {\r\n\tdeathrattleSpawnEnchantmentEffect(\r\n\t\tenchantment: BoardEnchantment,\r\n\t\tminion: BoardEntity | null | undefined,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t): readonly BoardEntity[];\r\n\tcardIds: readonly string[];\r\n}\r\nexport const hasDeathrattleSpawnEnchantment = (card: Card): card is DeathrattleSpawnEnchantmentCard =>\r\n\t(card as DeathrattleSpawnEnchantmentCard)?.deathrattleSpawnEnchantmentEffect !== undefined;\r\n\r\nexport interface OnCardAddedToHandCard extends Card {\r\n\tonCardAddedToHand(entity: BoardEntity | BgsQuestEntity | BoardTrinket, input: OnCardAddedToHandInput): void;\r\n}\r\nexport const hasOnCardAddedToHand = (card: Card): card is OnCardAddedToHandCard =>\r\n\t(card as OnCardAddedToHandCard)?.onCardAddedToHand !== undefined;\r\n\r\nexport interface EndOfTurnCard extends Card {\r\n\t// Use BattlecryInput because it's the only way end of turn effects are triggered\r\n\tendOfTurn(entity: BoardEntity, input: EndOfTurnInput): void;\r\n}\r\nexport const hasEndOfTurn = (card: Card): card is EndOfTurnCard => (card as EndOfTurnCard)?.endOfTurn !== undefined;\r\nexport type EndOfTurnInput = BattlecryInput;\r\n\r\nexport interface OnDivineShieldUpdatedCard extends Card {\r\n\tonDivineShieldUpdated(entity: BoardEntity | BoardTrinket, input: OnDivineShieldUpdatedInput): void;\r\n}\r\nexport const hasOnDivineShieldUpdated = (card: Card): card is OnDivineShieldUpdatedCard =>\r\n\t(card as OnDivineShieldUpdatedCard)?.onDivineShieldUpdated !== undefined;\r\n\r\nexport interface OnTauntUpdatedCard extends Card {\r\n\tonTauntUpdated(\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnTauntUpdatedInput,\r\n\t): void;\r\n}\r\nexport const hasOnTauntUpdated = (card: Card): card is OnTauntUpdatedCard =>\r\n\t(card as OnTauntUpdatedCard)?.onTauntUpdated !== undefined;\r\n\r\nexport interface OnRebornUpdatedCard extends Card {\r\n\tonRebornUpdated(\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnRebornUpdatedInput,\r\n\t): void;\r\n}\r\nexport const hasOnRebornUpdated = (card: Card): card is OnRebornUpdatedCard =>\r\n\t(card as OnRebornUpdatedCard)?.onRebornUpdated !== undefined;\r\n\r\nexport interface OnStealthUpdatedCard extends Card {\r\n\tonStealthUpdated(\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnStealthUpdatedInput,\r\n\t): void;\r\n}\r\nexport const hasOnStealthUpdated = (card: Card): card is OnStealthUpdatedCard =>\r\n\t(card as OnStealthUpdatedCard)?.onStealthUpdated !== undefined;\r\n\r\nexport interface OnVenomousUpdatedCard extends Card {\r\n\tonVenomousUpdated(\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnVenomousUpdatedInput,\r\n\t): void;\r\n}\r\nexport const hasOnVenomousUpdated = (card: Card): card is OnVenomousUpdatedCard =>\r\n\t(card as OnVenomousUpdatedCard)?.onVenomousUpdated !== undefined;\r\n\r\nexport interface OnWindfuryUpdatedCard extends Card {\r\n\tonWindfuryUpdated(\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnWindfuryUpdatedInput,\r\n\t): void;\r\n}\r\nexport const hasOnWindfuryUpdated = (card: Card): card is OnWindfuryUpdatedCard =>\r\n\t(card as OnWindfuryUpdatedCard)?.onWindfuryUpdated !== undefined;\r\n\r\nexport interface OnStatsChangedCard extends Card {\r\n\tonStatsChanged(entity: BoardEntity, input: OnStatsChangedInput): void;\r\n}\r\nexport const hasOnStatsChanged = (card: Card): card is OnStatsChangedCard =>\r\n\t(card as OnStatsChangedCard)?.onStatsChanged !== undefined;\r\n\r\nexport interface AfterHeroDamagedCard extends Card {\r\n\tafterHeroDamaged(entity: BoardEntity | BoardTrinket, input: AfterHeroDamagedInput): void;\r\n}\r\nexport const hasAfterHeroDamaged = (card: Card): card is AfterHeroDamagedCard =>\r\n\t(card as AfterHeroDamagedCard)?.afterHeroDamaged !== undefined;\r\n\r\nexport interface OnDamagedCard extends Card {\r\n\tonDamaged(entity: BoardEntity, input: OnDamagedInput): void;\r\n}\r\nexport const hasOnDamaged = (card: Card): card is OnDamagedCard => (card as OnDamagedCard)?.onDamaged !== undefined;\r\n\r\nexport interface AfterDealDamageCard extends Card {\r\n\t// Called whenever damage is dealt, both on the friendly and enemy side\r\n\t// So you need to check the \"friendly\" flag\r\n\t// TODO: the \"after\" here waits for spawns, eg reborn / deathrattle\r\n\t// eg https://replays.firestoneapp.com/?reviewId=05860f41-1ea4-41f8-9c55-b6c854fa5f5a&turn=17&action=10\r\n\t// The reborn Rylak is buffed by Lord of the Ruins\r\n\tafterDealDamage(entity: BoardEntity, input: AfterDealDamageInput): void;\r\n}\r\nexport const hasAfterDealDamage = (card: Card): card is AfterDealDamageCard =>\r\n\t(card as AfterDealDamageCard)?.afterDealDamage !== undefined;\r\n\r\nexport interface AfterFriendlyMinionDamagedTrinketCard extends Card {\r\n\tafterFriendlyMinionDamaged(trinket: BoardTrinket, input: AfterFriendlyMinionDamagedInput): void;\r\n}\r\nexport const hasAfterFriendlyMinionDamagedTrinket = (card: Card): card is AfterFriendlyMinionDamagedTrinketCard =>\r\n\t(card as AfterFriendlyMinionDamagedTrinketCard)?.afterFriendlyMinionDamaged !== undefined;\r\n\r\nexport interface OnDeathCard extends Card {\r\n\tonDeath(entity: BoardEntity, input: OnDeathInput): void;\r\n}\r\nexport const hasOnDeath = (card: Card): card is OnDeathCard => (card as OnDeathCard)?.onDeath !== undefined;\r\n\r\nexport interface OnAfterDeathCard extends Card {\r\n\tonAfterDeath(entity: BoardEntity | BoardTrinket, input: OnAfterDeathInput): void;\r\n}\r\nexport const hasOnAfterDeath = (card: Card): card is OnAfterDeathCard =>\r\n\t(card as OnAfterDeathCard)?.onAfterDeath !== undefined;\r\n\r\n/**\r\n * After any friendly board minion dies (during `applyWheneverMinionDiesEffect`). Filter in the card\r\n * (e.g. only if `input.deadEntity.taunt`). Board minions and trinkets that implement this are dispatched\r\n * from `deathrattle-effects`.\r\n */\r\nexport interface OnAfterFriendlyMinionDeathCard extends Card {\r\n\tonAfterFriendlyMinionDeath(listener: BoardEntity | BoardTrinket, input: OnAfterFriendlyMinionDeathInput): void;\r\n}\r\nexport const hasOnAfterFriendlyMinionDeath = (card: Card): card is OnAfterFriendlyMinionDeathCard =>\r\n\t(card as OnAfterFriendlyMinionDeathCard)?.onAfterFriendlyMinionDeath !== undefined;\r\n\r\nexport interface OnMinionKilledCard extends Card {\r\n\tonMinionKilled(\r\n\t\tentity: BoardEntity,\r\n\t\tinput: OnMinionKilledInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasOnMinionKilled = (card: Card): card is OnMinionKilledCard =>\r\n\t(card as OnMinionKilledCard)?.onMinionKilled !== undefined;\r\n\r\nexport interface OnBeforeMagnetizeCard extends Card {\r\n\tonBeforeMagnetize(entity: BoardEntity | BoardTrinket, input: OnBeforeMagnetizeInput): void;\r\n}\r\nexport const hasOnBeforeMagnetize = (card: Card): card is OnBeforeMagnetizeCard =>\r\n\t(card as OnBeforeMagnetizeCard)?.onBeforeMagnetize !== undefined;\r\n\r\nexport interface OnBeforeMagnetizeSelfCard extends Card {\r\n\tonBeforeMagnetizeSelf(entity: BoardEntity, input: OnBeforeMagnetizeSelfInput): void;\r\n}\r\nexport const hasOnBeforeMagnetizeSelf = (card: Card): card is OnBeforeMagnetizeSelfCard =>\r\n\t(card as OnBeforeMagnetizeSelfCard)?.onBeforeMagnetizeSelf !== undefined;\r\n\r\nexport interface OnAfterMagnetizeToSelfCard extends Card {\r\n\tonAfterMagnetizeToSelf(entity: BoardEntity, input: OnAfterMagnetizeSelfInput): void;\r\n}\r\nexport const hasOnAfterMagnetizeToSelf = (card: Card): card is OnAfterMagnetizeToSelfCard =>\r\n\t(card as OnAfterMagnetizeToSelfCard)?.onAfterMagnetizeToSelf !== undefined;\r\n\r\nexport interface OnAfterMagnetizeSelfCard extends Card {\r\n\tonAfterMagnetizeSelf(entity: BoardEntity, input: OnAfterMagnetizeInput): void;\r\n}\r\nexport const hasOnAfterMagnetizeSelf = (card: Card): card is OnAfterMagnetizeSelfCard =>\r\n\t(card as OnAfterMagnetizeSelfCard)?.onAfterMagnetizeSelf !== undefined;\r\n\r\nexport interface OnAfterMagnetizeCard extends Card {\r\n\tonAfterMagnetize(entity: BoardEntity | BoardTrinket, input: OnAfterMagnetizeInput): void;\r\n}\r\nexport const hasOnAfterMagnetize = (card: Card): card is OnAfterMagnetizeCard =>\r\n\t(card as OnAfterMagnetizeCard)?.onAfterMagnetize !== undefined;\r\n\r\nexport interface OnSpawnFailCard extends Card {\r\n\tonSpawnFail(entity: BoardEntity, input: OnSpawnFailInput): void;\r\n}\r\nexport const hasOnSpawnFail = (card: Card): card is OnSpawnFailCard =>\r\n\t(card as OnSpawnFailCard)?.onSpawnFail !== undefined;\r\n\r\nexport interface PlayedBloodGemsOnMeCard extends Card {\r\n\tplayedBloodGemsOnMe(entity: BoardEntity, input: PlayedBloodGemsOnMeInput): void;\r\n}\r\nexport const hasPlayedBloodGemsOnMe = (card: Card): card is PlayedBloodGemsOnMeCard =>\r\n\t(card as PlayedBloodGemsOnMeCard)?.playedBloodGemsOnMe !== undefined;\r\n\r\nexport interface PlayedBloodGemsOnAnyCard extends Card {\r\n\tplayedBloodGemsOnAny(entity: BoardEntity, input: PlayedBloodGemsOnAnyInput): void;\r\n}\r\nexport const hasPlayedBloodGemsOnAny = (card: Card): card is PlayedBloodGemsOnAnyCard =>\r\n\t(card as PlayedBloodGemsOnAnyCard)?.playedBloodGemsOnAny !== undefined;\r\n\r\nexport interface OnGlobalInfoUpdatedCard<T extends keyof BgsPlayerGlobalInfo> extends Card {\r\n\tonGlobalInfoUpdated(entity: BoardEntity, input: OnGlobalInfoUpdatedInput<T>): void;\r\n}\r\nexport const hasOnGlobalInfoUpdated = <T extends keyof BgsPlayerGlobalInfo>(\r\n\tcard: Card,\r\n): card is OnGlobalInfoUpdatedCard<T> => (card as OnGlobalInfoUpdatedCard<T>)?.onGlobalInfoUpdated !== undefined;\r\n\r\nexport interface OnSpawnFailInput {\r\n\tfailedSpawn: BoardEntity;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n\r\nexport interface CastSpellInput {\r\n\tspellCardId: string;\r\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity;\r\n\ttarget: BoardEntity;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherBoard: BoardEntity[];\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\nexport interface OnDamagedInput {\r\n\tdamagedEntity: BoardEntity;\r\n\tdamageDealer: BoardEntity | BgsPlayerEntity;\r\n\tdamage: number;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Admiration = void 0;
|
|
4
4
|
const stats_1 = require("../../../simulation/stats");
|
|
5
5
|
exports.Admiration = {
|
|
6
|
-
cardIds: ["
|
|
6
|
+
cardIds: ["BG36_MidGameEffect_000t9e2"],
|
|
7
7
|
startOfCombat: (minion, input) => {
|
|
8
8
|
const index = input.playerBoard.indexOf(minion);
|
|
9
9
|
const neighbour = index > 0 ? input.playerBoard[index - 1] : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admiration.js","sourceRoot":"","sources":["../../../../src/cards/impl/enchantments/admiration.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"admiration.js","sourceRoot":"","sources":["../../../../src/cards/impl/enchantments/admiration.ts"],"names":[],"mappings":";;;AAOA,qDAAwD;AAG3C,QAAA,UAAU,GAAsB;IAC5C,OAAO,EAAE,8BAAqE;IAC9E,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,IAAI,CAAC,SAAS,EAAE;YACf,OAAO,KAAK,CAAC;SACb;QAED,IAAA,mBAAW,EACV,MAAM,EACN,SAAS,EACT,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,MAAM,EAChB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Admiration (Dark Gift)\r\n * Start of Combat: Gain the stats of the minion to the left.\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Admiration: StartOfCombatCard = {\r\n\tcardIds: [CardIds.Admiration_AdmirationEnchantment_BG36_MidGameEffect_000t9e2],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst index = input.playerBoard.indexOf(minion);\r\n\t\tconst neighbour = index > 0 ? input.playerBoard[index - 1] : null;\r\n\t\tif (!neighbour) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tneighbour,\r\n\t\t\tneighbour.attack,\r\n\t\t\tneighbour.health,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
|
|
@@ -5,7 +5,7 @@ const reference_data_1 = require("@firestone-hs/reference-data");
|
|
|
5
5
|
const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
|
|
6
6
|
const utils_1 = require("../../../utils");
|
|
7
7
|
exports.Charisma = {
|
|
8
|
-
cardIds: ["
|
|
8
|
+
cardIds: ["BG36_MidGameEffect_000t3e2"],
|
|
9
9
|
rally: (_enchantment, input) => {
|
|
10
10
|
var _a, _b, _c;
|
|
11
11
|
const tribeCounts = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charisma.js","sourceRoot":"","sources":["../../../../src/cards/impl/enchantments/charisma.ts"],"names":[],"mappings":";;;AAIA,iEAAkE;
|
|
1
|
+
{"version":3,"file":"charisma.js","sourceRoot":"","sources":["../../../../src/cards/impl/enchantments/charisma.ts"],"names":[],"mappings":";;;AAIA,iEAAkE;AAGlE,qEAAmE;AAEnE,0CAA6D;AAGhD,QAAA,QAAQ,GAAc;IAClC,OAAO,EAAE,8BAAiE;IAC1E,KAAK,EAAE,CAAC,YAA8B,EAAE,KAAoB,EAAE,EAAE;;QAC/D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAgB,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,EAAE;YAC1C,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc;gBAAE,SAAS;YAC1D,MAAM,MAAM,GAAG,IAAA,mCAA2B,EACzC,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC3B,IAAI,KAAK,KAAK,qBAAI,CAAC,GAAG,EAAE;oBACvB,KAAK,MAAM,MAAM,IAAI,6BAAY,EAAE;wBAClC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAA,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC5D;iBACD;qBAAM;oBACN,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAA,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC1D;aACD;SACD;QACD,IAAI,eAAe,GAAgB,IAAI,CAAC;QACxC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,WAAW,EAAE;YACzC,IAAI,KAAK,GAAG,QAAQ,EAAE;gBACrB,QAAQ,GAAG,KAAK,CAAC;gBACjB,eAAe,GAAG,KAAK,CAAC;aACxB;SACD;QACD,IAAI,eAAe,IAAI,IAAI,EAAE;YAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,uBAAuB,CAC/D,eAAe,EACf,MAAA,KAAK,CAAC,aAAa,CAAC,UAAU,mCAAI,CAAC,CACnC,CAAC;YACF,IAAI,MAAM,EAAE;gBACX,IAAA,8BAAc,EAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aACrF;SACD;QACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Charisma (Dark Gift)\r\n * Rally: Get a random minion of your most common type.\r\n */\r\nimport { ALL_BG_RACES, Race } from '@firestone-hs/reference-data';\r\nimport { BoardEnchantment } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { getEffectiveTribesForEntity } from '../../../utils';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\nexport const Charisma: RallyCard = {\r\n\tcardIds: [CardIds.Charisma_CharismaEnchantment_BG36_MidGameEffect_000t3e2],\r\n\trally: (_enchantment: BoardEnchantment, input: OnAttackInput) => {\r\n\t\tconst tribeCounts = new Map<Race, number>();\r\n\t\tfor (const entity of input.attackingBoard) {\r\n\t\t\tif (entity.health <= 0 || entity.definitelyDead) continue;\r\n\t\t\tconst tribes = getEffectiveTribesForEntity(\r\n\t\t\t\tentity,\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t);\r\n\t\t\tfor (const tribe of tribes) {\r\n\t\t\t\tif (tribe === Race.ALL) {\r\n\t\t\t\t\tfor (const bgRace of ALL_BG_RACES) {\r\n\t\t\t\t\t\ttribeCounts.set(bgRace, (tribeCounts.get(bgRace) ?? 0) + 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttribeCounts.set(tribe, (tribeCounts.get(tribe) ?? 0) + 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet mostCommonTribe: Race | null = null;\r\n\t\tlet maxCount = 0;\r\n\t\tfor (const [tribe, count] of tribeCounts) {\r\n\t\t\tif (count > maxCount) {\r\n\t\t\t\tmaxCount = count;\r\n\t\t\t\tmostCommonTribe = tribe;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (mostCommonTribe != null) {\r\n\t\t\tconst cardId = input.gameState.cardsData.getRandomMinionForTribe(\r\n\t\t\t\tmostCommonTribe,\r\n\t\t\t\tinput.attackingHero.tavernTier ?? 6,\r\n\t\t\t);\r\n\t\t\tif (cardId) {\r\n\t\t\t\taddCardsInHand(input.attackingHero, input.attackingBoard, [cardId], input.gameState);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Consanguinity = void 0;
|
|
4
4
|
const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
|
|
5
5
|
exports.Consanguinity = {
|
|
6
|
-
cardIds: ["
|
|
6
|
+
cardIds: ["BG36_MidGameEffect_000t80e"],
|
|
7
7
|
rally: (_enchantment, input) => {
|
|
8
8
|
const cardsToAdd = Array(2).fill("BG20_GEM");
|
|
9
9
|
(0, cards_in_hand_1.addCardsInHand)(input.attackingHero, input.attackingBoard, cardsToAdd, input.gameState);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consanguinity.js","sourceRoot":"","sources":["../../../../src/cards/impl/enchantments/consanguinity.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"consanguinity.js","sourceRoot":"","sources":["../../../../src/cards/impl/enchantments/consanguinity.ts"],"names":[],"mappings":";;;AAMA,qEAAmE;AAItD,QAAA,aAAa,GAAc;IACvC,OAAO,EAAE,8BAA2E;IACpF,KAAK,EAAE,CAAC,YAA8B,EAAE,KAAoB,EAAE,EAAE;QAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,YAAkB,CAAC;QACnD,IAAA,8BAAc,EAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACvF,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Consanguinity (Dark Gift)\r\n * Rally: Get 2 Blood Gems.\r\n */\r\nimport { BoardEnchantment } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\nexport const Consanguinity: RallyCard = {\r\n\tcardIds: [CardIds.Consanguinity_ConsanguinityEnchantment_BG36_MidGameEffect_000t80e],\r\n\trally: (_enchantment: BoardEnchantment, input: OnAttackInput) => {\r\n\t\tconst cardsToAdd = Array(2).fill(CardIds.BloodGem);\r\n\t\taddCardsInHand(input.attackingHero, input.attackingBoard, cardsToAdd, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
|
|
@@ -4,7 +4,7 @@ exports.DefensiveSacrifice = void 0;
|
|
|
4
4
|
const utils_1 = require("../../../services/utils");
|
|
5
5
|
const stats_1 = require("../../../simulation/stats");
|
|
6
6
|
exports.DefensiveSacrifice = {
|
|
7
|
-
cardIds: ["
|
|
7
|
+
cardIds: ["BG36_MidGameEffect_000t2e2"],
|
|
8
8
|
deathrattleSpawnEnchantmentEffect: (enchantment, minion, input) => {
|
|
9
9
|
const buff = minion.maxHealth;
|
|
10
10
|
const target = buff > 0 ? (0, utils_1.pickRandomAlive)(input.boardWithDeadEntity.filter((e) => e !== minion)) : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defensive-sacrifice.js","sourceRoot":"","sources":["../../../../src/cards/impl/enchantments/defensive-sacrifice.ts"],"names":[],"mappings":";;;AAKA,mDAA0D;AAE1D,qDAAwD;AAI3C,QAAA,kBAAkB,GAAoC;IAClE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"defensive-sacrifice.js","sourceRoot":"","sources":["../../../../src/cards/impl/enchantments/defensive-sacrifice.ts"],"names":[],"mappings":";;;AAKA,mDAA0D;AAE1D,qDAAwD;AAI3C,QAAA,kBAAkB,GAAoC;IAClE,OAAO,EAAE,8BAAqF;IAC9F,iCAAiC,EAAE,CAClC,WAA6B,EAC7B,MAAmB,EACnB,KAAgC,EAC/B,EAAE;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,uBAAe,EAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxG,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,CAAC,EACD,IAAI,EACJ,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Defensive Sacrifice (Dark Gift)\r\n * Deathrattle: Give this minion's max Health to another friendly minion.\r\n */\r\nimport { BoardEnchantment, BoardEntity } from '../../../board-entity';\r\nimport { pickRandomAlive } from '../../../services/utils';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { DeathrattleSpawnEnchantmentCard } from '../../card.interface';\r\nimport { CardIds } from '../../../services/card-ids';\r\n\r\nexport const DefensiveSacrifice: DeathrattleSpawnEnchantmentCard = {\r\n\tcardIds: [CardIds.DefensiveSacrifice_DefensiveSacrificeEnchantment_BG36_MidGameEffect_000t2e2],\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\tenchantment: BoardEnchantment,\r\n\t\tminion: BoardEntity,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t) => {\r\n\t\tconst buff = minion.maxHealth;\r\n\t\tconst target = buff > 0 ? pickRandomAlive(input.boardWithDeadEntity.filter((e) => e !== minion)) : null;\r\n\t\tif (!!target) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\ttarget,\r\n\t\t\t\tminion,\r\n\t\t\t\t0,\r\n\t\t\t\tbuff,\r\n\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Golemancy = void 0;
|
|
4
4
|
const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
|
|
5
5
|
exports.Golemancy = {
|
|
6
|
-
cardIds: ["
|
|
6
|
+
cardIds: ["BG36_MidGameEffect_000t61e"],
|
|
7
7
|
deathrattleSpawnEnchantmentEffect: (enchantment, minion, input) => {
|
|
8
8
|
const spawns = (0, deathrattle_spawns_1.simplifiedSpawnEntities)("BG30_MagicItem_442t", 1, input);
|
|
9
9
|
spawns.forEach((spawn) => {
|