# Card Effect Fields This file tracks the shared data fields used by `data/cards.json`. The goal is to keep card behavior reusable instead of hardcoding one-off card names. ## Damage - `damage`: base attack damage - `damagePerOtherHandCard`: bonus damage per other card in hand - `damagePerAttackPlayedThisTurn`: bonus damage per attack played this turn - `damagePerDiscardedThisTurn`: bonus damage per card discarded this turn - `damagePerSkillInHand`: bonus damage per skill card in hand - `damagePerCardDrawnThisCombat`: bonus damage per card drawn this combat - `damagePerTurn`: damage applied at turn start - `cardPlayedDamage`: damage when the card is played - `cardPlayedRandomDamage`: random damage when the card is played - `drawDamage`: damage dealt when a card is drawn - `shivDamageBonus`: bonus damage for all Shivs - `firstShivDamageBonus`: bonus damage for the first Shiv each turn - `attackDamageVsWeakMultiplier`: multiplier when the attack hits Weak targets ## Block and utility - `block`: gain block - `cardPlayedBlock`: gain block whenever a card is played - `blockGainMultiplier`: multiplier for block gained this turn - `hits`: multi-hit count - `aoe`: hit all enemies - `pierce`: ignore block - `draw`: draw cards immediately - `drawUntilHandSize`: draw until hand reaches a target size - `drawSkillBlock`: gain block for each Skill drawn - `drawPoison`: apply poison when a card is drawn - `heal`: heal immediately - `gainEnergy`: gain energy immediately - `strength`: gain Strength - `dex`: gain Dexterity - `thorns`: gain Thorns - `selfVuln`: apply Vulnerable to self ## Status - `weak`: apply Weak - `vuln`: apply Vulnerable - `poison`: apply Poison - `poisonHits`: apply poison multiple times - `poisonRandomTargets`: spread poison applications across random alive enemies `poison` deals damage at enemy turn start and then decreases by 1. ## Shivs and discard - `discard`: discard a chosen number of cards from hand - `discardAll`: discard the whole hand - `drawPerDiscarded`: draw one extra card per discarded card - `addShiv`: create Shiv cards - `addShivPerDiscard`: create one Shiv per discarded card - `shivRetain`: Shiv cards are retained at end of turn - `shivAoe`: Shiv cards hit all enemies for the turn - `sly`: trigger on discard - `retain`: keep the card at end of turn ## Powers and turn effects - `powerEffect: "strengthPerTurn"` - `powerEffect: "energyPerTurn"` - `powerEffect: "blockPerTurn"` - `powerEffect: "poisonPerTurn"` - `powerEffect: "damagePerTurn"` - `powerEffect: "retainOne"` - `turnStartShiv`: create Shivs at turn start - `turnStartDraw`: draw cards at turn start - `turnStartDiscard`: discard cards at turn start ## Next turn planning - `nextTurnBlock`: gain block next turn - `nextTurnDraw`: draw extra cards next turn - `nextTurnKeepBlock`: keep block next turn - `nextTurnAttackMultiplier`: attack multiplier next turn - `nextTurnCopies`: copy a chosen card next turn - `nextTurnSelectHandCard`: choose a card from the current hand for next turn copies - `nextTurnSelectPrompt`: prompt text for selection UI - `nextSkillRepeatCount`: repeat the next Skill's effect - `nextSkillCostZero`: make the next Skill cost 0 - `skillCostReductionThisTurn`: reduce Skill costs this turn ## Misc - `innate`: place the card in the opening hand - `playableWhenDrawPileEmpty`: only playable when the draw pile is empty - `exhaust`: exhaust after use - `unplayable`: cannot be played - `curse`: curse card - `token`: token card - `endTurnDamage`: damage if the card remains in hand at end of turn ## Rules - Prefer shared fields over card-specific branches. - Reuse the same field name for the same behavior. - Add a new shared field before adding more special-case card logic.