127 lines
5.3 KiB
Markdown
127 lines
5.3 KiB
Markdown
# 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
|
|
- `rewardOnKill`: gain bonus reward screens when the card kills
|
|
- `randomTargetEachHit`: choose a random alive enemy for each hit
|
|
- `repeatOnKill`: repeat the attack when it kills at least one enemy
|
|
- `firstCardDamageBonus`: bonus damage for the first card played this turn
|
|
- `drawDamage`: damage dealt when a card is drawn
|
|
- `blockPerDamageDealtThisTurn`: gain block equal to damage dealt this turn
|
|
- `shivDamageBonus`: bonus damage for all Shivs
|
|
- `firstShivDamageBonus`: bonus damage for the first Shiv each turn
|
|
- `attackDamageVsWeakMultiplier`: multiplier when the attack hits Weak targets
|
|
- `useAllEnergy`: treat the card as spending all available energy
|
|
- `xDamagePerEnergy`: scale attack damage by energy spent
|
|
- `xWeakPerEnergy`: scale Weak applied by energy spent
|
|
|
|
## 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
|
|
- `handCostZeroThisTurn`: make hand cards cost 0 this turn
|
|
- `drawDisabledThisTurn`: disable draw for the rest of the turn
|
|
- `heal`: heal immediately
|
|
- `gainEnergy`: gain energy immediately
|
|
- `strength`: gain Strength
|
|
- `dex`: gain Dexterity
|
|
- `thorns`: gain Thorns
|
|
- `selfVuln`: apply Vulnerable to self
|
|
- `extraPoisonTicks`: add extra poison ticks at enemy turn start
|
|
|
|
## Status
|
|
|
|
- `weak`: apply Weak
|
|
- `vuln`: apply Vulnerable
|
|
- `poison`: apply Poison
|
|
- `poisonHits`: apply poison multiple times
|
|
- `poisonRandomTargets`: spread poison applications across random alive enemies
|
|
- `poisonIfTargetPoisoned`: apply poison only if the target is already poisoned
|
|
- `poisonApplicationBurstEvery`: trigger a burst every N poison applications
|
|
- `poisonApplicationBurstDamage`: burst damage when the poison application threshold is reached
|
|
- `skillSlyOnPlay`: make a played Skill card count as sly when it is later discarded
|
|
- `turnHandSlyCount`: mark up to N other Skill cards in hand as sly for this turn
|
|
- `attackPoison`: apply poison when attack damage is dealt
|
|
- `intangible`: reduce incoming damage to 1 for the duration
|
|
- `endTurnDexLoss`: lose Dexterity at end of turn
|
|
- `combatCostReductionOnPlay`: reduce this card's cost each time it is played this combat
|
|
- `enemyStrengthLossThisTurn`: reduce enemy Strength for the rest of the turn
|
|
- `affectsAllEnemies`: apply the card's debuffs to every alive enemy
|
|
- `removeEnemyBlock`: clear enemy block when the card resolves
|
|
- `removeEnemyArtifact`: consume enemy Artifact when the card resolves
|
|
|
|
`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.
|