Aloyzo's Arsenal #26 has this restriction: This guide is an attempt to at least list what those building blocks are. One of things that makes collectible card games popular is that the cards themselves can modify the rules, or even create new rules. Which is very exciting for players, especially when cards interact with each other. But it also makes the game complicated to implement, since the programmers don't want to have to hardcode every single card. So they try to factor out common features, and have each card say which features it uses and with what settings and modifiers. In Card Hunter the features are called Components and the modifiers are Parameters ("Params"). I do not have access to the actual code, but we do have access to the master card database which is a HUGE spreadsheet (833 rows by 54 columns) that tells the game everything about what a card does and what it looks like. Each card can have up to five components and multiple parameters for each (not sure if there's a limit) and general parameters that apply to the whole card. Fun fact: two cards do not have any components at all! One is available to players, the other one ... well, I suspect the programmers looked at the card text and said "No." I'm going to start with looking at those general parameters, which are mostly things like if/when the card can be played, is it part of a card pool, and does it count towards hand size. The others are things I would have expected to be linked to specific components instead. Card parameters (column AK "Params"): alliedOccupantsOnly (Cleansing Presence) cantrip dontProvokeTurn (Target won't turn to face you. Used by bashes, team moves, whirls, etc.) enemyOccupantsOnly (Laser Barrage) hideOnResolve ignoreHalt (Warp Run) ignoreStun (Shrug It Off) endRoundCount=0 (Free Card) form (will be detached when another form is attached) mandatoryAction meal (Morsel, maybe they wanted multiple types of meals?) noActionPoint (Free Action) overload (laser malfunction card pool) playerRelative (terrain that distinguishes between allies and enemies) spirit (form card pool) terrainOnly (I think this means the trigger is only active when attached to a square) trait (does not include card draw) unblockable unplayable (like blocks and armors) vampire (form card pool) werewolf (form card pool) zombie (form card pool)
Card components start in column AA for Component1 and end in column AJ for Params5. This list includes components from all five slots, in alphabetical order, in the following format: component name, "text of example card", example card (note) + parameter (note) + parameter (example card) Note that some components just select targets for later components. Most parameters are optional. And I haven't yet researched how exactly it decides when to activate the different triggers. A: AcidLeakComponent, "When you play an Acid card, create and attach an Acid Blast card to a random occupied square.", Acid Leak + attachedOnly + cardName=_____ + damageType=_____ (that triggers the effect) ActivateTriggerComponent, "Trigger all start of round effects within 5 squares.", Accelerate Time + includeTerrain + includeInHand + hideOnResolve + keyword=_______ + range=N + selfControlled (Instant Burn) AdaptComponent, "When you take damage, create a new card that grants you Immunity to that damage type and attach it to yourself.", Adaptable + inHand AddTargetComponent, "When you play a Magic card with a duration that targets a single character, that card also targets the two closest allies of that target.", Contagion + addNumber=N (number of extra targets) + attackType=____ + hasDuration (only triggers on cards that create attachments) + targetAlly + targetEnemy AdjacentEndMoveComponent (follows a MoveComponent) + adjacentDiscard (Elven Trickery) + attachToSelf (Prowl) + damageForEnemies=N (Dangerous Maneuver) + discardCardType=_____ + discardNumber=N (these two from Elven Trickery) + drawsPerEnemy=N (Positioning Move) + enemiesOnly + movePoints=N + slide (these two from Muscle Through) AffectAdjacentComponent, "Do 2 Crushing Melee damage to every enemy adjacent to you at the start of this Move.", Smashing Spin + enemiesOnly + includeInstigator (Warp Run) + range=N (Radioactive Pulse) + unordered (Battery Explosion) AffectAdjacentTargetComponent, "Target character and each adjacent character.", Spreading Laser AffectRandomComponent, "Attach to Binwin if possible. If not, attach to a random ally.", Friendly Fire + targetName=_____ (will target named char) + alliesOnly + excludeSelf Roulette has no parameters. AffectRandomSquareComponent, "Target a random square in range and sight.", Attack The Darkness + burst=N AlliesComponent, "Heal 5 to your ally with the least health. Ties are resolved in favour of the closest.", Help The Weak + adjacentToEnemy (Retreat) + excludeGroup=true (both kinds of "Team" cards) + includeInstigator + includeInstigator=true + lowestHealth AnvilStrikeComponent, "If the target is adjacent to blocking terrain, this Attack does 5 fewer points of damage", Wild Spark + extraDamage=N (N can be negative) AttachedCardCountDamageComponet, "At the start of each round, take 3 Psychic Magic damage for each Attack card in your hand.", Blind Rage + attackTypeToInflict=_____ + blockedByArmor=false + cardType=_____ (count these cards) + damagePerCard=N + damageTypeToInflict=______ + excludeCardType=______ (count every card except these) + triggerID=N AttachedDamageComponent (Burning and other attachment damage) + ageCount=N (Doom) + attachedOnly (Friendly Fire) + blockedByArmor=false (used when damage type is Poison) + damage=N + damageType=______ + formDamage=N (Flaring Torch) + kill (Doom) AttachedDamageOccupantComponent (terrain) + damage=N + damageType=____ + enemiesOnly (Laser Beacon) + radius=N + triggerID=N + zoomTrigger (????) AttachedDamageOnDeathComponent, "When any other character dies, deal 5 Crushing Melee damage to all adjacent characters.", Mindless Battlerage + attackType=_____ + damage=N + damageType=_____ + radius=N + selfTrigger (Festering Guts) AttachedDestoyOccupantArmorComponent, "At the start of each round, occupant discards all armor cards", Acid Blast + cardType=_____ AttachedDiscardComponent, "At the start of each round discard one card", Holy Insight + discardNumber=N AttachedDiscardOnDeathComponent, "When any other character dies, you must discard your hand.", Superstitious AttachedDiscardOnPlayComponent, "Each time target plays a damaging Attack, Frenzy 3 and they discard their oldest card.", Savage Curse + cardType=None (!!) + triggerID=N + triggerID2=N AttachedDrawComponent, "At the start of each round, target draws a card.", Accelerated Thought + drawNumber=N + triggerID=N AttachedDrawOnDamagedComponent, "Whenever target takes damage from an enemy card, target character draws a card.", Martyr Blessing + attached + copy (Retaliatory Mutation) + drawNumber=N + enemyControlledCard AttachedDrawOnPlayComponent, "When you play a Holy card targeting an ally other than yourself, draw a card.", Altruism + damageTypes=_____ + discardOnExactRoll + targetOtherAllies AttachedDrawRandomAtStartComponent, "At the start of each round, create a random Spirit card in your hand.", Medium's Garb + altTrigger + param=______ (form name, may also work with types or keywords) AttachedDrawTypeOnDamagedComponent, "When you take damage from an enemy card, draw a card. Discard that card unless it is a Move card. Repeat until you have drawn a Move card or drawn two cards.", Elven Maneuvers + attached + cardType=_____ + count=N + enemyControlledCard + limit=N AttachedExtraDamageComponent, "Whenever a <u>Burning</u> card you control burns, it does 1 additional damage.", Kindler + damageTypes=_____ + extraDamage=N + penetrating (Hot Flames) + srcAttachedToTarget + srcControlledCards AttachedHealComponent, "Attach to target. At the start of each round, Heal 3.", Healing Blessing + attachedOnly + healAmount=N AttachedHealOccupantComponent, "at the start of each round Heal 5 all characters within 1 square", Healing Beacon + healAmount=N + radius=N + triggerID=N AttachedHealOnDeathComponent, "When you die, all allies within three squares Heal 8.", Death Meld + healAmount=N + includeAllies + selfTrigger AttachedImmuneToTerrainComponent, "<u>You are not affected by terrain attachments other than blocking terrain.", Hover AttachedModifyTriggerComponent, "Whenever target rolls a die, subtract one from it", Bad Luck + triggerPenalty=N AttachedMoveAllyComponent, "When you play a Move card, also Push 1 your nearest ally.", Vanguard + attachedOnly + movePoints=N AttachedOccupantAttachRandomComponent, "at the start of each round do 2 Radiation damage and attach a random Handicap card to each character within 1 square", Radioactive Goo + cardType=______ + triggerID=N AttachedOccupantCantBlockComponent, "Target may not block while in Mud", Mud Pit AttachedOccupantDrawComponent, "at the start of each round, occupant Heals 2 and draws a card", Bless + drawNumber=N AttachedPresenceComponent, "At the start of each round, discard all cards attached to adjacent allies then Heal 1 those allies.", Holy Presence + alliesOnly + destroyAttachments + healAmount=N + radius=N AttachedRandomMoveComponent, "whenever an enemy within 1 square moves under their own control, make that move randomly", Hypnotic Beacon + radius=N AttachRandomComponent, "Create a random Handicap card and attach it to the target.", Radiation Bolt + cardType=____ + count=N (Genetic Engineering) + param=_____ (Walpurgis Night) AttachToGroupComponent, "Attach this card to yourself and a copy to every ally in your group.", Mass Invisibility AttachToRandomSquareComponent, "Target square and 2 random squares within 3 become Irradiated terrain", Radioactive Spray + copies=N + distance=N AttachToSelfComponent, "Attach this card to yourself.", Force Field AttachToSquareComponent + enemiesOnly (Illusory Barrier) + entryCost=N (-1 for Difficult, 1 for Open, Beacons don't use) AttachToTargetComponent + cardName=____ (when different card, Spark Of Undeath) + hideOnResolve
B: BleedingComponent, "Target may not gain health.", Open Wound BlightComponent, "At the start of each round, create and attach a random Handicap card to each adjacent enemy.", Blight + attachedOnly + cardType=_____ + enemiesOnly BlockComponent + additionalEffectDamageMax=N (Subtle Parry) + additionalEffectFilterTypes=____ (attack types) + additionalEffectKeyword=_____ (Pushback Parry) + additionalEffectsUntargeted (Auto Block) + allAround (Eyes Everywhere) + attachRandomForm (Shifting Block) + attachToInstigator (Icy Block) + attachToSelf (Hit The Deck) + attackerDiscard (Perfect Block) + attackTypes=_____ + cardType=_____ (Cause Fumble) + damageMax=N (Flimsy Block) + damageMin=N (Desperate Block) + damageSelf=N (Jarring Block) + defendOther + defendRange=N + drawBlocked (Defender's Block) + drawSelf (Barrior Of Hate) + healSelf=N (Absorbing Block) + modifyKeep=0 (Auto Block) + moveAttacker=N (Pushback Parry) + moveSelf=N (Acrobatic Flip) + onlyWhenFatal (Lifesaving Block) + pickUpCard (Duck) + randomDraw1AttackType=______ + randomDraw1FilterAttackTypes=______ + randomDraw1DamageType=_____ + randomDraw2AttackType=______ + randomDraw2FilterAttackTypes=______ + randomDraw2DamageType=_____ (all six of these are from Laser Block) + reflect (Reflect Missile) + selfDamageType=_____ (Jarring Block) BlockLOSTerrainComponent, (Illusion and Smoke terrain) + enemiesOnly + LOSOnly + throughOnly BlockModAddComponent, "Subtract 3 from Block rolls against Arcane cards you play.", Spark Generator + damageType=_____ + blockMod=N (negative to make Hard to Block) BlockTerrainComponent, "Target square becomes Wall Terrain (Wall Terrain is blocked).", Pillar Of Stone BurstComponent + radius=N (required) C: CancelWhenPlayedComponent + attackType=______ + cardType=______ + blockTerrainTrigger (Large Weapon) + enemyTriggerDistance=N (Defensiveness) ClumsyComponent, "You cannot turn to face your target when playing cards, and you do not turn to face attackers.", Clumsy ConeComponent + dontPickFacing (Charged Laser Barrage) + noLOS (Thunderblast) ControlMoveComponent, "When an enemy within 5 spaces plays a Move card, you control the destination of that Move. Discard this card.", Maze Of The Mind + discardRoll=N (I guess in case they wanted a version with partial Keep) + range=N CopyTerrainComponent, "Attach a copy of each terrain attachment to every adjacent square that does not already have a terrain attachment.", Blooming Ground (This follows an EverySquareAttachmentComponent, so it may be possible to Bloom a single tile.) D: DamageAddComponent + add=N (extra damage, can be negative) + addPenetration (Frenzy Aura) + addUnblockable (Surestrike Blessing) + altTrigger + attachedOnly + attackTypes=_____ + damage=N (Fiery Fists) + damageType=_____ + hasComponentParam=_____ (Impaler) + nameFilter=_____ (Strong Chop) + negateForEnemies (Word Of God) DamageAfterMoveComponent, "Target takes 2 Slashing damage for each square they move.", Path Of Knives + attached + damagePerSquare=N + damageType=______ DamageAtStartComponent, "At the start of each round, take 1 point of Arcane damage.", Arcane Feedback + damage=N + damageType=____ DamageComponent + AttachToTargetComponent (Numbing Blowdart, might be a bug) + attackType=_____ (Smashing Spin) + damage=N (Jim's Magic Missile) + damagePerAttachment=N (Inquisitor's Strike) + damagePerCard=N (Impetuous Blast) + damageType=____ + enemiesOnly (Four-Headed Bite) DamageMultiplyComponent, "Double the damage of any Melee Attack you play.", All Out Attack + attackType=_____ + cardType=_____ + multiplier=N DamageOnMoveComponent, "When you play a Move card, take 4 Arcane damage.", Unstable Bolt + damage=N + inflictDamageType=_____ DamageSelfComponent + actorDistance=N (Loner) + actorName=____ (Birthday Present) + attackType=_____ + blockedByArmor=false (Dreadfully Ill) + damage=N + damagePerActor=N (Loner) + damageType=_____ + unpreventable=true (Demonic Revenge) DamageToHealComponent, "When another card would damage you, Heal that amount instead.", Negative Energy Being + attachedOnly DamageWhenBlockedComponent + damageType=_____ (used by Flaring Laser but not Pulverizings) + instigatorDamage=N (Predictable Stab) + targetDamage=N DaylightComponent, "If a character in those squares has a Form card attached, they take 4 unpreventable damage. Otherwise, they Heal 4.", Daylight + attackType=_____ + damage=N + damageType=_____ + healAmount=N + unpreventable DecreaseAgeComponent, "Add one to the duration of all terrain attachments.", Everlasting Ground + extension=N DestroyAttachmentsComponent, "Discard all cards attached to target character.", Purging Strike DestroyEnemyAttachmentsComponent, "Discard all attached cards belonging to other players.", Disenchant DestroyTerrainAttachmentsComponent, "Discard terrain attachments in your square and all adjacent squares.", Cleansing Presence + drawOnDestroy=N (Cleansing Ray) DetachOnControllerDeathComponent, Taunt DiscardAtStartComponent, "At the start of each round, discard your oldest card other than this.", Arcane Curse + discardNumber=N DiscardByTypeComponent + attackType=_____ (Forgetfulness) + cardType=_____ + number=N (if absent, discards all matching cards) DiscardComponent, "then they discard their oldest card.", Vampire's Kiss DiscardImmediateByTypeComponent, "Target Immediately discards their oldest Armor card.", Melt Armor + cardType=______ + discardNumber=N DiscardImmediateComponent, "Immediately discard the oldest revealed card in target's hand.", Small Pseudopod Strike (discards revealed cards only) + discardNumber=N DiscardRandomlyComponent, "Target discards a random card.", Perplexing Ray + discardNumber=N (not used by radiation attacks) DiscardRevealedComponent, "Targets discards the two oldest revealed cards in their hand.", Mind Drain + discardNumber=N + unrevealed (Memory Loss) DiscardThenDrawComponent, "All other allies may discard up to two cards and then draw the same number.", Leadership + freeDraw + maxDiscards=N DiscardToOpponentComponent, "A random opponent shuffles this card into their deck.", Traveling Curse DiscardTypeWhenDamagedComponent, "Whenever you take damage, you discard your oldest Magic card.", Mind Leak + attached + attackType=______ + number=N DiscardWhenBlockedComponent, "If this Attack is blocked, discard your oldest card.", Clumsy Chop DisacrdWhenDamagedComponent, "Whenever target takes damage, discard their oldest card.", Dastardly Curse + attached + discardNumber=N DiscardWhenPlayedComponent, "Discard your 4 oldest cards.", Resurrect + discardNumber=N + optional (Controlled Overswing) DrawCardTypeEffectComponent + attackType=____ (Spell Skill) + cardType=_____ (Inspiring Presence) + count=N (number of cards to keep) + discardType (Totem Charge) + limit=N (how deep to search, not used by Pathfinding) + reshuffle DrawCardTypeTriggerComponent, "At the start of each round, draw a card. If that card isn't a Magic card discard it. Repeat until you have drawn a Magic card or 6 cards.", Wizard's Hat + attackType=_____ + count=N + limit=N + reshuffle + altTrigger DrawComponent + drawNumber=N DrawOnResolveComponent (basically every Trait) + notVsGM (Obvious Maneuver) DrawOnTargetedComponent, "Whenever an enemy in front of you plays a Magic or Projectile card affecting you, draw a card.", Quick Reactions + attackTypes=____ + cardTypes=_____ + enemiesOnly (all existing cards have this) + restoreActionPoints (Simian Reflexes) DrawRandomComponent, "Create a random Magic Laser Attack and put it in your hand.", Pull The Trigger + attackType=____ + cardType=____ + damageType=____ + param=_____ (Howl) DrawTempComponent, "Create a Block card (Block any, 4+) and put it in target's hand.", Block, Soldier! + cardName=______ DrawTempOnMoveComponent, "When you play a non-Step Move card or attack with a Step Attack, create an Unreliable Block card in your hand.", Wind Dancer + attachedOnly + cardName=______
E: EdibleComponent, "When you die, the nearest enemy eats you (create a Morsel card in their hand).", Edible + enemiesOnly (I can't help wondering what happens if you leave this off) EncumberComponent + altTrigger + attachedOnly (Icy Block) + encumber=N EnlargeComponent, "When you play a Magic card that targets a single character or square add Burst 1 to it (or add 1 to existing Burst).", Enlarge + attackType=______ EveryActorComponent + alliesFirst (Elvish Scamper) + excludeAllies (Brainhook) + excludeEnemies (Scatter!) + excludeSelf (Redecorate) + hasLOS (Flash Of Agony) + hideOnResolve + notRace=____ (Elvish Insight) + race=____ (Dwarven Battle Cry) + within=N (Firestorm) EveryActorsSquareComponent, "All squares occupied by characters become Lava Terrain", Volcano + filter=allies (Bless) EverySquareAttachmentComponent, "Add one to the duration of all terrain attachments.", Everlasting Ground EverySquareComponent, "Add one to the duration of all attachments.", Time Snap F: FixedLinearComponent, "Linear Diagonal.", Bishop Blast + diagonal + orthogonal (Queen Blast!) G: GroupComponent, "All other allied groups draw a card.", Raise The Alarm + excludeOwnGroup=true + includeAllies=true H: HaltComponent + altTrigger (Hit The Deck) HealAddComponent, "Add 1 to the amount initially healed when you play an Assist with Heal.", Healing Spirit + add=N + hasComponent=______ HealComponent + healAmount=N (required) HealOnAllyDamageComponent, "When an ally takes damage from an enemy card, you Heal 2.", Investigate + enemyControlledCard + healAmount=N HealOnDamageComponent (vamp attacks) + damagePerHeal=N + healAllies (Avenging Touch) + healPerDamage=N (Vampire's Kiss) HealToDamageComponent, "When another card would Heal you, take that much damage instead.", Negative Energy Being + attached HealWhenDiscardedComponent, "If this card is discarded, Heal 2.", Toughened Hide Strips + healAmount=N I: ImmobileComponent, "You cannot be moved or placed in a new location by enemy cards.", Immovable ImpassableTerrainComponent, "Target three unocccupied adjacent squares become Water Terrain (Water Terrain is impassable).", Flash Flood InvisibleComponent, "You may not be targeted.", Invisibility L: LinearComponent Deadly Spark M: ModifyBlockInHandComponent, "When this card is in hand, you may not Block.", Battleaxe Chop ModifyBlockRollComponent (modifies attempts to block this card) + mod=N (Hard to Block uses negative numbers, Reaching Swing uses 3) ModifyCardRetentionComponent, "You retain one more card at the end of each round.", Forward Thinking + modify=N (extra cards, can be negative) ModifyTriggerInHandComponent + minHealthPercent=N (Bloodied Block) + selfTrigger (Wounded Block) + triggerBonus=N + triggerPenalty=N (Massive Chop) + triggeringCardType=______ (Chain Harness) MoveAtStartComponent, "At the start of each round, you Move 1", Dimensional Traveller + freeMove + ignoreEncumber (Slippery) + teleport MoveBoostComponent + altTrigger + attachedOnly (Wings Of Faith) + fly + excludeSteps + moveBoost=N (extra distance) + teleport MoveComponent + charge + fly + endAdjacentToBlocking (Cautious Sneak) + flankingMove + freeMove + manualFacing (Leap) + postMoveRandom=N (Telepod Jaunt) + teleport MoveDamageComponent (charges) + adjacent (Rumbling Charge) + damagePerUnit=N MoveHealSelfComponent, "At the end of this Move, Heal 1 for every square you are distant from your starting square.", Healing Dash + healPerUnit MoveOnTargetedComponent + cardTypes=____ (all examples use Attack) + discardRoll=N (Skip) + enemiesOnly + movePoints=N (distance, required) + mustMoveBack (Jump Back) + teleport + triggerRoll=N (Skip) MoveRandomlyComponent, "Place all characters on a random unoccupied square.", Hurricane + facing (set random too) + hideOnResolve + range=N (Maze) MoveTargetComponent + audioKey=______ (Violent Spin) + fly (Telekinesis) + freeMove (Scuttle, Team!) + ignoreEncumber + movePoints=N (distance) + mustMoveAway (attacker doesn't control) + ownerControls (Elvish Scamper) + slide (don't change facing, I think) + targetInstigates + teleport (Teleport Other) MoveWhenDamagedComponent, "When you take damage from an enemy card, you Move 2.", Vengeance + altTrigger + enemyControlledCard + inHand + movePoints=N (distance) N: NearbyTargetedDamageComponent + distance=N (between targets) + numberTargets=N + penetrating (Jump Spark) O: OverloadComponent (mostly Erratic Damage) + overload=N (Minor = 3, Major = 6) + overloadMove (Rocket Dash) P: PickUpWhenBlockedComponent, "If this Attack is blocked, take it back into your hand instead of discarding it.", Unstoppable Chop PivotComponent, "Change your facing.", Spin Around + anticlockwise (Reverse Rotate) + clockwise (Scan) ProhibitAttachmentsComponent, "If a card would be attached to you, discard that card instead.", Arrogant Armor + altTrigger + enemiesOnly + reflect (Mystical Wyrmhide) R: RandomMoveTargetComponent, "Move target two squares randomly then set its facing randomly.", Ooze Maze + movePoints=N ReplaceAttachmentsComponent, "Discard each card attached to target then attach an equal number of random Handicap cards.", Destructive Purge + cardType=______ + replaceCardType=_____ (Gene Therapy) + hideOnResolve ReplaceDrawComponent, "Whenever you would draw a card from your deck, instead create a random Zombie card in your hand.", Zombie Form + altTrigger + attached + param=_____ (which Form) RestrictPlayComponent, "You may not play Attack cards.", Fright + attackTypes=_____ (I'm Here About The Job) + cardTypes=_____ ResurrectComponent (Mass Reanimate has this component twice) + initialHealth=N + noScore (Reanimate) ReturnOnKillComponent, "If this Attack kills the target, return it to your hand.", Laser Cutdown ReturnToHandTriggerComponent, "When you play a Magic card, put a copy of that card in your hand.", Memorisation + attackType=________ RevealHandAndDamageComponent + affectsInstigator + attackType=_____ (Brain Burn) + attackTypeToApply=_____ + cardType=______ (Ouch!) + damagePerCard=N + damageTypeToApply=______ RevealHandComponet, "Reveal the target's hand.", Inquisition Bolt + selfReveal (Obvious Maneuver)
S: ScanComponent, "If any enemies are affected by this Attack, every other allied group draws a card and every other ally turns to face the affected enemies and may act again this round.", Scan SelfDestroyAttachmentsComponent, "Discard all cards attached to you.", Shrug It Off + encumber (Pathfinding) + handicap (Lateral Thinking) SelfDiscardByTypeComponent + cardTypes=____ (Dropped Guard) + damageTypes=______ (Drained Battery) SelfDiscardOldestComponent, "Discard your oldest card.", Fumble + discardNumber=1 SelfDrawAdjacentEnemyComponent, "If an enemy is adjacent to you when you start this Move, draw a card.", Escaping Run + drawNumber=N SelfDrawComponent, "Draw a card.", Lateral Thinking + drawNumber=N SelfDrawDiscardComponent, "Draw three cards. Discard one and keep the others.", Inspirational Thinking + discardNumber=N + drawNumber=N SelfMoveComponent, "then you Move 1.", Pressing Bash + movePoints=N SelfTargetComponent Howl SelfTargetSquareComponent Daylight + radius=N (burst) SetActionPointsComponent, "Target may act again this round.", Energize SpawnComponent (Spawn Elementals has this component twice) + fullHealthOnly (Spawn Elemental) + groupName=____ (required) SpawnOnDamageComponent, "When you take damage, spawn a Slice Beast in a random unoccupied adjacent square. (Max 5 Slice Beasts at a time.)", Made Of Cake + altTrigger + groupName=_______ + inHand SqueamishComponent, "When you play a card, you may not target a character whose health is less than or equal to the base damage of that card.", Squeamish StepComponent + fly (Nimble Strike) + movePoints=N (required) StunComponent + attachedOnly (Too Horrible) SwapComponent, "Choose two target characters; exchange their positions.", Swap SwapFigureComponent, (Forms) + figure=_____ (Galvanic/Ethereal/Lycanthropic/Vampiric) T: TalentedHealerComponent, "Whenever you play a Heal card add <u>Cantrip</u> to that card and Heal 2 yourself.", Talented Healer + keyword=_____ + healAmount=N (heal bonus) TargetActorComponent (basically any Assist, Utility, or Attack that does not deal damage) + alliesOnly (Battlefield Training) + allowInstigatorTarget (Purge) + behindOnly (Boo!) + disallowInstigatorTarget (Martyr Blessing) + exactTargetCount (Redistribute) + numberTargets=N (Healing Rays) + uniqueTargets=false (Jim's Magic Missile) + uniquetargets=true (Redistribute) TargetedDamageComponent + acidSquaresPerDamage=N (Hex Of Dissolution) + behindOnly (Backstab) + damageFromBehind=N (Sneaky Bloodsuck, just the extra damage) + damagePerAlly=N (Mob Attack) + damagePerAttackerCard=N (Totem Blast) + damagePerCard=N (Punishing Bolt) + damagePerDiscard=N (Ancient Grudge) + damagePerRevealedCard=N (Devastating Blow) + disallowInstigatorTarget (Spark Of Undeath) + discardThreshold=N (Ancient Grudge) + forceArmorDiscard (Sundering Strike) + formDamage=N (Flaring Torch) + maxDistance=N (used with damagePerAlly) + numberTargets=N (Gusts Of War) + penetrating + reduceDamagePerCard=n (Psychic Blast) + uniqueTargets=false (Double Axe To The Face) + uniqueTargets=true (unneccessary?) TargetSquareComponent + distance=N (between target squares, all existing cards are 1 except Dual Laser Beacon which doesn't have this parameter) + numberSquares=N + unoccupied (Flash Flood) TauntComponent, "That character may only target the character or group who played this card.", Taunt ThreeSixtyComponent, "Damages every adjacent character.", Impetuous Slash + forward (Crushing Sweep) TransferAttachmentsComponent, "Attach all cards attached to target character to another target character.", Redistribute TransferCardComponent, "Remove a random card from target's hand and place it in your hand.", Steal + fromBehind (Pickpocket) TransferSelectedCardComponent, "Target an ally. Select a card and give that card to target.", Battlefield Training + dontReveal + mayDecline=true (Advanced Battlefield Training, second use of component) TrapDamageComponent, "When an enemy moves next to you, do 6 Melee Slashing damage to them.", Ready To Strike + attackType=______ + damage=N + damageType=______ + enemiesOnly TriggeredArmorComponent + age (Force Field) + alliesHealAmount=N (Holy Armor) + altTrigger + attachedOnly (Adapted To Acid) + attackTypes=________ (Shimmering Aura) + capDamage=N (Cushioning Armor) + closestAllyDrawNumber=N (Inspiring Armor) + damageAttacker=N + damageAttackerAttackTypes=_______ + damageAttackerDamageType=_______ (these three used by Spiked Mail) + damageAttackerPenetrating (Barbed Platemail) + damageReduction=N (most invulnerable affects have this set to 0) + damageTypes=______ (only used by Amorphous Body which also has invulnerableDamageTypes) + destroyAttachments + destroyAttackerAttachments (these two used by Antimagic Skin) + discardRoll=N (Arcane Aura) + drawTempAttackTypes=_______ + drawTempName=______ (name of card drawn) + drawTemp2AttackTypes=_______ + drawTemp2Name=______ (name of card drawn, these four parameters used by Mimetic cards) + enemyControlledCard (Sacred Shroud) + excludeDamageTypes (Monstrous Hide) + invulnerable (Leathery Hide) + invulnerableDamageType=_____ (Resistant Hide) + moveOnArmor + mustMoveBack (these two on Crude Plates) + selfDrawNumber=N (Toughness) + untargeted (component only triggers on untargeted damage) + weakBehind (Weakened Armor) TriggeredDamageAttackerComponent, "Attacker takes 5 Crushing damage.", Feedback Blast + damage=N + damageType=_____ + triggerID=N TriggeredExtraDamageComponent, "When you take damage, take an additional 2 points of damage.", Unfortunate Surge + attachedOnly (Vulnerable) + damageAdd=N + damageTypes=_____ TriggeredHealComponent, "If you take damage, Heal yourself 3.", Boosted Heal + attachedOnly + excludeDamageTypes=______ (Troll Regeneration) + healAmount=N + inHandOnly TripComponent, "If an adjacent enemy plays a Move card, cancel that move.", Reactive Trip Okay, that's everything, you can comment now.
Now for some bad news.. Cards that are hardcoded (component is named after the card and has no parameters): Adaptable * Clumsy * Blooming Ground * Immovable * Invisibility Maze Of The Mind/Mind Muddle (only range and keep chance can be modified) Reactive Trip * Redistribute * Scan/Reverse Scan * Squeamish Swap * Taunt * Starred cards have a separate component to determine which chars/squares are affected. You can still change stuff that appears outside the card text box. Spoiler: Swap and Taunt variants Short Swap Silver, Rare, Utility Magic Arcane Range 2 Choose two target characters; exchange their positions. Seduce Silver, Rare, Attack Melee Sonic Range 1, Damage -- Attach to target. That character may only target the character or group who played this card. Duration 2. Did you know that Elvish does not have a word for "underwear"?
This is awesome, thanks Kalin. For the record, some of these parameters are less flexible than they might seem at a glance. I don't have a specific example in mind, but I am pretty sure some have hard-coded switches—so they'll do one thing if the parameter is set to X, and a different thing if it's set to Y, and then they'll break if it's set to anything else.
Yeah, Erratic Damage seems to only accept 3 or 6 for its parameter, and you probably shouldn't try to use anything other than a Form with ReplaceDrawComponent ("overload" might work if you wanted someone to draw nothing but malfunctions). Some things that probably would work, if you didn't care about balance: Spoiler: Acid Leak and Talented Healer variants Beacon Factory Trait. Attach this card to yourself. Duration 2. When you play an Electrical card, create and attach a Laser Beacon card to a random occupied square. (The "random occupied square" is hardcoded, unfortunately.) Vampire Assassin Trait. Attach this card to yourself. Duration 3. Whenever you play a Penetrating card add Cantrip to that card and Heal 2 yourself.
Now that we've seen what the building blocks are, let's look at specific cards to see how they combine to make a complete card. I'm going to start with Blocks because in a way they're the simplest type of card: there's only one block component, every Block uses it, and they don't use any other components (hybrid Blocks have other components for the non-Block features). On the other hand, this component is the most complicated because it needs lots of parameters to do everything Blocks do in this game. Parameters with "___Type" are generally filters that determine when it triggers, and anything that sounds like an action will only happen if the trigger roll succeeds. Spoiler: Acrobatic Flip Component1 BlockComponent Params1 attackTypes=Melee moveSelf=1 moveAttacker=1 ----------- So there's our BlockComponent, with three parameters. The first one limits this Block to just Melee attacks, the second lets the defender move themself when successful, and the the third lets the defender move the attacker when successful. Spoiler: Laser Block Component1 BlockComponent Params1 randomDraw1FilterAttackTypes=Melee randomDraw1DamageType=Laser randomDraw1AttackType=Melee randomDraw2FilterAttackTypes=Magic,Projectile randomDraw2DamageType=Laser randomDraw2AttackType=Magic -------------------- It took six parameters, but we managed to do everything with just one component. We have two random card creation effects here: if you block a Melee attack create a Melee Laser card, if you block Magic or Projectile create a Magic Laser card. (I don't know if the order of parameters makes any difference.) Spoiler: Pushback Parry Component1 BlockComponent Params1 attackTypes=Melee moveAttacker=2 additionalEffectKeyword=Step -------------------------- Even though there are only three parameters, this manages to be rather complex. First, the Block only triggers on Melee attacks. If it blocks an attack with the keyword "Step" then it also lets the defender move the attacker 2. BlockComponent is one of the few components that can see keywords, though many other components can see card type, attack type, and/or damage type. Spoiler: Auto Block Component1 BlockComponent Params1 additionalEffectsUntargeted modifyKeep=0 ---------------------- There's no keyword for "untargeted" so they needed a special parameter for it. And "Keep" is actually implemented as a roll: cards you aren't supposed to keep need a roll of 8. (One of these days I'm going to test if stacking harnesses will let me keep a Rusty Armor.) Spoiler: Defender's Block Component1 BlockComponent Params1 defendOther defendRange=3 drawBlocked ----------------- Not as complicated as you might expect: you can block for other allies, within range 3, and the target of the attack draws a card if the block is successful. So.. what about hybrids? Spoiler: Surging Shield Block Component1 BlockComponent Params1 moveSelf=2 Component2 MoveComponent Params2 ------------------------ There's the "moveSelf" parameter again, and this card has a second component so it can be played as a Move card. Spoiler: Counterspell Component1 TargetActorComponent Params1 Component2 DiscardByTypeComponent Params2 attackType=Magic number=2 Component3 BlockComponent Params3 attackTypes=Magic ---------------------- I mentioned above that Blocks are simple because they only need one component. Attack, Assist, and Utility cards need a targeting component to say which characters/squares are affected. The first component says we're targeting a single character (range specified elsewhere, normal LOS rules), second component says to discard 2 cards that have the attack type Magic (discard effects always discard oldest unless they say "random"). Then finally a Block limited to Magic. (Note that hybrid cards always list their types in alphabetical order: Block before Move, Attack before Block.)