enjine 0.1.0
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +28 -0
- data/LICENSE.txt +21 -0
- data/README.md +201 -0
- data/SUPPORTED.md +387 -0
- data/docs/ARCHITECTURE.md +141 -0
- data/docs/DESIGN.md +139 -0
- data/docs/MECHANICS_COVERAGE.md +670 -0
- data/docs/guides/adding-a-mechanic.md +60 -0
- data/docs/guides/api.md +614 -0
- data/docs/guides/card-data-format.md +1472 -0
- data/docs/guides/deck-builder.md +157 -0
- data/docs/plans/standard.md +371 -0
- data/docs/reference/abilities.md +1680 -0
- data/docs/reference/costs.md +339 -0
- data/docs/reference/counters.md +121 -0
- data/docs/reference/decisions.md +102 -0
- data/docs/reference/effects.md +2340 -0
- data/docs/reference/filters.md +172 -0
- data/docs/reference/keywords.md +647 -0
- data/docs/reference/subtypes.md +169 -0
- data/docs/reference/supertypes.md +31 -0
- data/docs/reference/triggers.md +797 -0
- data/docs/reference/types.md +216 -0
- data/exe/enjine +7 -0
- data/lib/enjine/actions/activate_mana_ability.rb +24 -0
- data/lib/enjine/actions/cast.rb +57 -0
- data/lib/enjine/actions/pass.rb +18 -0
- data/lib/enjine/actions/play_land.rb +52 -0
- data/lib/enjine/actions/special_action.rb +37 -0
- data/lib/enjine/actions.rb +20 -0
- data/lib/enjine/agents/busy.rb +27 -0
- data/lib/enjine/agents/random.rb +28 -0
- data/lib/enjine/card_definition.rb +433 -0
- data/lib/enjine/card_faces.rb +116 -0
- data/lib/enjine/catalog.rb +56 -0
- data/lib/enjine/characteristics.rb +39 -0
- data/lib/enjine/cli/text.rb +295 -0
- data/lib/enjine/cli.rb +312 -0
- data/lib/enjine/decisions/bottom.rb +29 -0
- data/lib/enjine/decisions/casting.rb +188 -0
- data/lib/enjine/decisions/combat.rb +75 -0
- data/lib/enjine/decisions/discard.rb +29 -0
- data/lib/enjine/decisions/effect_choice.rb +21 -0
- data/lib/enjine/decisions/enter_choice.rb +26 -0
- data/lib/enjine/decisions/legend_rule.rb +21 -0
- data/lib/enjine/decisions/mulligan.rb +26 -0
- data/lib/enjine/decisions/order_triggers.rb +21 -0
- data/lib/enjine/decisions/play_or_draw.rb +19 -0
- data/lib/enjine/decisions/priority.rb +22 -0
- data/lib/enjine/decisions/untap_choice.rb +35 -0
- data/lib/enjine/decisions.rb +22 -0
- data/lib/enjine/deck.rb +151 -0
- data/lib/enjine/deck_builder.rb +454 -0
- data/lib/enjine/docs.rb +90 -0
- data/lib/enjine/engine/ability_layers.rb +118 -0
- data/lib/enjine/engine/attachments.rb +86 -0
- data/lib/enjine/engine/casting/alt_casting.rb +254 -0
- data/lib/enjine/engine/casting/cast_choices.rb +292 -0
- data/lib/enjine/engine/casting/casting.rb +326 -0
- data/lib/enjine/engine/casting/cost_options.rb +99 -0
- data/lib/enjine/engine/casting/costs.rb +117 -0
- data/lib/enjine/engine/casting/payment.rb +353 -0
- data/lib/enjine/engine/casting/permissions.rb +412 -0
- data/lib/enjine/engine/casting/target_counts.rb +113 -0
- data/lib/enjine/engine/casting/waterbend.rb +90 -0
- data/lib/enjine/engine/characteristics.rb +379 -0
- data/lib/enjine/engine/class_levels.rb +25 -0
- data/lib/enjine/engine/combat.rb +315 -0
- data/lib/enjine/engine/copies.rb +208 -0
- data/lib/enjine/engine/damage.rb +196 -0
- data/lib/enjine/engine/designations.rb +46 -0
- data/lib/enjine/engine/emblems.rb +37 -0
- data/lib/enjine/engine/entering.rb +156 -0
- data/lib/enjine/engine/face_down.rb +30 -0
- data/lib/enjine/engine/faces.rb +222 -0
- data/lib/enjine/engine/follow_ups.rb +27 -0
- data/lib/enjine/engine/mana_sources.rb +230 -0
- data/lib/enjine/engine/phasing.rb +74 -0
- data/lib/enjine/engine/pregame.rb +95 -0
- data/lib/enjine/engine/priority.rb +47 -0
- data/lib/enjine/engine/resolution.rb +168 -0
- data/lib/enjine/engine/rules.rb +287 -0
- data/lib/enjine/engine/sagas.rb +41 -0
- data/lib/enjine/engine/speed.rb +104 -0
- data/lib/enjine/engine/spell_grants.rb +46 -0
- data/lib/enjine/engine/state_based_actions.rb +157 -0
- data/lib/enjine/engine/triggers.rb +364 -0
- data/lib/enjine/engine/turn_history.rb +240 -0
- data/lib/enjine/engine/turn_structure.rb +224 -0
- data/lib/enjine/engine/zones.rb +278 -0
- data/lib/enjine/engine.rb +55 -0
- data/lib/enjine/errors.rb +62 -0
- data/lib/enjine/events.rb +161 -0
- data/lib/enjine/frames.rb +84 -0
- data/lib/enjine/fuzz.rb +112 -0
- data/lib/enjine/game.rb +204 -0
- data/lib/enjine/history.rb +26 -0
- data/lib/enjine/mana.rb +142 -0
- data/lib/enjine/mechanics/abilities/additional_triggers.rb +86 -0
- data/lib/enjine/mechanics/abilities/chosen_values.rb +213 -0
- data/lib/enjine/mechanics/abilities/cost_changes.rb +154 -0
- data/lib/enjine/mechanics/abilities/damage_replacements.rb +569 -0
- data/lib/enjine/mechanics/abilities/double_counters.rb +71 -0
- data/lib/enjine/mechanics/abilities/entering_choices.rb +91 -0
- data/lib/enjine/mechanics/abilities/entering_copy.rb +69 -0
- data/lib/enjine/mechanics/abilities/enters_tapped.rb +159 -0
- data/lib/enjine/mechanics/abilities/enters_with_counters.rb +116 -0
- data/lib/enjine/mechanics/abilities/mana_ability.rb +209 -0
- data/lib/enjine/mechanics/abilities/play_permissions.rb +527 -0
- data/lib/enjine/mechanics/abilities/player_rules.rb +169 -0
- data/lib/enjine/mechanics/abilities/replacement_effects.rb +368 -0
- data/lib/enjine/mechanics/abilities/restrictions.rb +144 -0
- data/lib/enjine/mechanics/abilities/spell_keywords.rb +55 -0
- data/lib/enjine/mechanics/abilities/stack_abilities.rb +542 -0
- data/lib/enjine/mechanics/abilities/static.rb +365 -0
- data/lib/enjine/mechanics/abilities/tapping_power.rb +71 -0
- data/lib/enjine/mechanics/abilities/turn_rules.rb +49 -0
- data/lib/enjine/mechanics/card_spec.rb +177 -0
- data/lib/enjine/mechanics/copy_except.rb +73 -0
- data/lib/enjine/mechanics/costs/base.rb +115 -0
- data/lib/enjine/mechanics/costs/behold.rb +76 -0
- data/lib/enjine/mechanics/costs/discard.rb +65 -0
- data/lib/enjine/mechanics/costs/exert.rb +29 -0
- data/lib/enjine/mechanics/costs/exile_cards.rb +39 -0
- data/lib/enjine/mechanics/costs/from_graveyard.rb +45 -0
- data/lib/enjine/mechanics/costs/get_counters.rb +39 -0
- data/lib/enjine/mechanics/costs/mana.rb +37 -0
- data/lib/enjine/mechanics/costs/one_of.rb +49 -0
- data/lib/enjine/mechanics/costs/pay_life.rb +50 -0
- data/lib/enjine/mechanics/costs/remove_counters.rb +51 -0
- data/lib/enjine/mechanics/costs/sacrifice.rb +59 -0
- data/lib/enjine/mechanics/costs/tap.rb +56 -0
- data/lib/enjine/mechanics/costs/waterbend.rb +29 -0
- data/lib/enjine/mechanics/counters/kinds.rb +190 -0
- data/lib/enjine/mechanics/effects/add_subtypes.rb +30 -0
- data/lib/enjine/mechanics/effects/airbend.rb +41 -0
- data/lib/enjine/mechanics/effects/amass.rb +124 -0
- data/lib/enjine/mechanics/effects/assimilate.rb +72 -0
- data/lib/enjine/mechanics/effects/base.rb +148 -0
- data/lib/enjine/mechanics/effects/become.rb +182 -0
- data/lib/enjine/mechanics/effects/behold.rb +48 -0
- data/lib/enjine/mechanics/effects/blight.rb +94 -0
- data/lib/enjine/mechanics/effects/choose_cards.rb +168 -0
- data/lib/enjine/mechanics/effects/copy.rb +370 -0
- data/lib/enjine/mechanics/effects/counter_spell.rb +21 -0
- data/lib/enjine/mechanics/effects/counters.rb +161 -0
- data/lib/enjine/mechanics/effects/damage.rb +72 -0
- data/lib/enjine/mechanics/effects/delayed_triggers.rb +112 -0
- data/lib/enjine/mechanics/effects/destroy.rb +22 -0
- data/lib/enjine/mechanics/effects/discard.rb +86 -0
- data/lib/enjine/mechanics/effects/draw.rb +16 -0
- data/lib/enjine/mechanics/effects/earthbend.rb +70 -0
- data/lib/enjine/mechanics/effects/emblem.rb +52 -0
- data/lib/enjine/mechanics/effects/endure.rb +63 -0
- data/lib/enjine/mechanics/effects/exile.rb +49 -0
- data/lib/enjine/mechanics/effects/extra_turn.rb +122 -0
- data/lib/enjine/mechanics/effects/faces.rb +115 -0
- data/lib/enjine/mechanics/effects/fight.rb +76 -0
- data/lib/enjine/mechanics/effects/flip_coins.rb +97 -0
- data/lib/enjine/mechanics/effects/gain_control.rb +94 -0
- data/lib/enjine/mechanics/effects/game_end.rb +42 -0
- data/lib/enjine/mechanics/effects/library.rb +327 -0
- data/lib/enjine/mechanics/effects/life.rb +83 -0
- data/lib/enjine/mechanics/effects/look_at_hand.rb +17 -0
- data/lib/enjine/mechanics/effects/loot.rb +118 -0
- data/lib/enjine/mechanics/effects/mana.rb +96 -0
- data/lib/enjine/mechanics/effects/may.rb +82 -0
- data/lib/enjine/mechanics/effects/meld.rb +77 -0
- data/lib/enjine/mechanics/effects/mill.rb +22 -0
- data/lib/enjine/mechanics/effects/pay.rb +231 -0
- data/lib/enjine/mechanics/effects/phasing.rb +51 -0
- data/lib/enjine/mechanics/effects/proliferate.rb +72 -0
- data/lib/enjine/mechanics/effects/pump.rb +60 -0
- data/lib/enjine/mechanics/effects/put_in_library.rb +98 -0
- data/lib/enjine/mechanics/effects/return_choice.rb +29 -0
- data/lib/enjine/mechanics/effects/return_to_battlefield.rb +80 -0
- data/lib/enjine/mechanics/effects/return_to_hand.rb +20 -0
- data/lib/enjine/mechanics/effects/roll_dice.rb +45 -0
- data/lib/enjine/mechanics/effects/sacrifice.rb +118 -0
- data/lib/enjine/mechanics/effects/scry_and_surveil.rb +74 -0
- data/lib/enjine/mechanics/effects/search.rb +156 -0
- data/lib/enjine/mechanics/effects/tap_untap.rb +23 -0
- data/lib/enjine/mechanics/effects/tokens.rb +76 -0
- data/lib/enjine/mechanics/filters/any_target.rb +15 -0
- data/lib/enjine/mechanics/filters/base.rb +386 -0
- data/lib/enjine/mechanics/filters/graveyard.rb +23 -0
- data/lib/enjine/mechanics/filters/one_of.rb +55 -0
- data/lib/enjine/mechanics/filters/permanents.rb +52 -0
- data/lib/enjine/mechanics/filters/players.rb +20 -0
- data/lib/enjine/mechanics/filters/stack.rb +97 -0
- data/lib/enjine/mechanics/follow_up.rb +46 -0
- data/lib/enjine/mechanics/keywords/alternative_costs.rb +361 -0
- data/lib/enjine/mechanics/keywords/beam_me_up.rb +78 -0
- data/lib/enjine/mechanics/keywords/changeling.rb +58 -0
- data/lib/enjine/mechanics/keywords/convoke.rb +77 -0
- data/lib/enjine/mechanics/keywords/crew.rb +155 -0
- data/lib/enjine/mechanics/keywords/cycling.rb +58 -0
- data/lib/enjine/mechanics/keywords/decayed.rb +25 -0
- data/lib/enjine/mechanics/keywords/devour.rb +61 -0
- data/lib/enjine/mechanics/keywords/evergreen.rb +54 -0
- data/lib/enjine/mechanics/keywords/extort.rb +26 -0
- data/lib/enjine/mechanics/keywords/flags.rb +46 -0
- data/lib/enjine/mechanics/keywords/foretell.rb +45 -0
- data/lib/enjine/mechanics/keywords/gift.rb +50 -0
- data/lib/enjine/mechanics/keywords/hideaway.rb +28 -0
- data/lib/enjine/mechanics/keywords/increment.rb +31 -0
- data/lib/enjine/mechanics/keywords/job_select.rb +29 -0
- data/lib/enjine/mechanics/keywords/kicker.rb +92 -0
- data/lib/enjine/mechanics/keywords/mobilize_and_firebending.rb +84 -0
- data/lib/enjine/mechanics/keywords/paradigm.rb +91 -0
- data/lib/enjine/mechanics/keywords/power_up.rb +48 -0
- data/lib/enjine/mechanics/keywords/protection.rb +111 -0
- data/lib/enjine/mechanics/keywords/prowess.rb +30 -0
- data/lib/enjine/mechanics/keywords/riot.rb +35 -0
- data/lib/enjine/mechanics/keywords/saddle.rb +115 -0
- data/lib/enjine/mechanics/keywords/speed.rb +89 -0
- data/lib/enjine/mechanics/keywords/station.rb +163 -0
- data/lib/enjine/mechanics/keywords/storied.rb +41 -0
- data/lib/enjine/mechanics/keywords/storm_and_cascade.rb +86 -0
- data/lib/enjine/mechanics/keywords/sunburst.rb +29 -0
- data/lib/enjine/mechanics/keywords/suspend.rb +191 -0
- data/lib/enjine/mechanics/keywords/teamwork.rb +45 -0
- data/lib/enjine/mechanics/keywords/ward.rb +67 -0
- data/lib/enjine/mechanics/linked.rb +67 -0
- data/lib/enjine/mechanics/mana_spent.rb +99 -0
- data/lib/enjine/mechanics/selector.rb +207 -0
- data/lib/enjine/mechanics/subtypes/auras_and_equipment.rb +176 -0
- data/lib/enjine/mechanics/subtypes/basic_land_types.rb +36 -0
- data/lib/enjine/mechanics/subtypes/class_levels.rb +102 -0
- data/lib/enjine/mechanics/subtypes/saga.rb +89 -0
- data/lib/enjine/mechanics/supertypes/basic.rb +17 -0
- data/lib/enjine/mechanics/supertypes/legendary.rb +18 -0
- data/lib/enjine/mechanics/triggers/ability_triggers.rb +51 -0
- data/lib/enjine/mechanics/triggers/any_of.rb +43 -0
- data/lib/enjine/mechanics/triggers/base.rb +228 -0
- data/lib/enjine/mechanics/triggers/casting.rb +219 -0
- data/lib/enjine/mechanics/triggers/combat.rb +123 -0
- data/lib/enjine/mechanics/triggers/damage.rb +130 -0
- data/lib/enjine/mechanics/triggers/dilemma.rb +37 -0
- data/lib/enjine/mechanics/triggers/draw_and_discard.rb +85 -0
- data/lib/enjine/mechanics/triggers/keyword_actions.rb +55 -0
- data/lib/enjine/mechanics/triggers/life.rb +35 -0
- data/lib/enjine/mechanics/triggers/steps.rb +39 -0
- data/lib/enjine/mechanics/triggers/tap_and_counters.rb +111 -0
- data/lib/enjine/mechanics/triggers/zone_changes.rb +249 -0
- data/lib/enjine/mechanics/types/kindred.rb +30 -0
- data/lib/enjine/mechanics/types/land.rb +24 -0
- data/lib/enjine/mechanics/types/permanent_types.rb +67 -0
- data/lib/enjine/mechanics/types/spell_types.rb +38 -0
- data/lib/enjine/mechanics/values.rb +675 -0
- data/lib/enjine/mechanics.rb +74 -0
- data/lib/enjine/player.rb +30 -0
- data/lib/enjine/primitive.rb +61 -0
- data/lib/enjine/replacements.rb +191 -0
- data/lib/enjine/rng.rb +57 -0
- data/lib/enjine/rules_monitor.rb +404 -0
- data/lib/enjine/setup.rb +45 -0
- data/lib/enjine/snapshot/player_checks.rb +86 -0
- data/lib/enjine/snapshot/turn_checks.rb +91 -0
- data/lib/enjine/snapshot.rb +307 -0
- data/lib/enjine/state.rb +173 -0
- data/lib/enjine/steps.rb +117 -0
- data/lib/enjine/tokens.rb +25 -0
- data/lib/enjine/verify.rb +233 -0
- data/lib/enjine/version.rb +7 -0
- data/lib/enjine/view.rb +162 -0
- data/lib/enjine.rb +46 -0
- metadata +315 -0
|
@@ -0,0 +1,2340 @@
|
|
|
1
|
+
# Effects
|
|
2
|
+
|
|
3
|
+
<!-- Generated by `rake docs` from the primitive registry. Do not edit. -->
|
|
4
|
+
|
|
5
|
+
## add_counters
|
|
6
|
+
|
|
7
|
+
Put `amount` counters named `counter` on each referenced permanent or player. Any counter name works (+1/+1, -1/-1, loyalty, stun, shield, oil, a keyword, ...; on a player poison, experience, ...); see docs/reference/counters.md for the ones with rules. A player with ten or more poison counters loses the game.
|
|
8
|
+
|
|
9
|
+
Rules: CR 122.1, CR 122.1f, CR 122.6, CR 613.4c, CR 704.5c
|
|
10
|
+
|
|
11
|
+
| Parameter | Description |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| `counter` | counter name (+X/+Y, -X/-Y or a lowercase word) |
|
|
14
|
+
| `amount` | integer |
|
|
15
|
+
| `to` | selector |
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"add_counters": {
|
|
20
|
+
"counter": "+1/+1",
|
|
21
|
+
"amount": 1,
|
|
22
|
+
"to": {
|
|
23
|
+
"each": "creature",
|
|
24
|
+
"controller": "you"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## add_mana
|
|
31
|
+
|
|
32
|
+
You add mana to your mana pool: the fixed mana in `produce`, or `amount` mana of a color you choose as it resolves (`color: "any_one"`: all of one color; `color: "any"`: each mana's color chosen separately, "in any combination of colors"; `"chosen"`: of the color chosen for its source or by it, CR 607.2d). `colors` limits the choice ("add {R} or {G}"). `spend_only` restricts how the mana can be spent (CR 106.6). `until: "end_of_combat"`: you don't lose this mana as steps end until end of combat (CR 702.189a).
|
|
33
|
+
|
|
34
|
+
Rules: CR 106.1a, CR 106.4, CR 608.2d, CR 605.1a, CR 106.6, CR 500.5, CR 607.2d
|
|
35
|
+
|
|
36
|
+
| Parameter | Description |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| `produce` | mana symbols, e.g. "{R}{R}" |
|
|
39
|
+
| `amount` | amount (default 1; with produce: how many times) |
|
|
40
|
+
| `color` | any_one | any | chosen |
|
|
41
|
+
| `colors` | list of colors to choose from (default all five) |
|
|
42
|
+
| `spend_only` | {"spells": card spec, "abilities": card spec} |
|
|
43
|
+
| `until` | "end_of_combat" (optional) |
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"add_mana": {
|
|
48
|
+
"amount": 2,
|
|
49
|
+
"color": "any_one"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## add_subtypes
|
|
55
|
+
|
|
56
|
+
Each referenced permanent gets the `subtypes` in addition to its other types until end of turn (layer 4).
|
|
57
|
+
|
|
58
|
+
Rules: CR 613.1d, CR 205.1b, CR 611.2a, CR 611.2c
|
|
59
|
+
|
|
60
|
+
| Parameter | Description |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| `subtypes` | list of lowercase subtypes |
|
|
63
|
+
| `to` | selector |
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"add_subtypes": {
|
|
68
|
+
"subtypes": [
|
|
69
|
+
"warrior"
|
|
70
|
+
],
|
|
71
|
+
"to": {
|
|
72
|
+
"target": 0
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## additional_phases
|
|
79
|
+
|
|
80
|
+
Adds `phases` (in order; each "combat" or "main") directly after the current phase of this turn. Phases added after the same phase come most recently created first. An added main phase is a postcombat main phase. `attackers`: only creatures matching this filter can attack during the (first) added combat phase.
|
|
81
|
+
|
|
82
|
+
Rules: CR 500.8, CR 505.1, CR 508.1c
|
|
83
|
+
|
|
84
|
+
| Parameter | Description |
|
|
85
|
+
| --- | --- |
|
|
86
|
+
| `phases` | list of "combat" | "main" |
|
|
87
|
+
| `attackers` | creature filter |
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"additional_phases": {
|
|
92
|
+
"phases": [
|
|
93
|
+
"combat",
|
|
94
|
+
"main"
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## additional_triggers
|
|
101
|
+
|
|
102
|
+
For `duration` (while_source_tapped: for as long as the source remains tapped), each triggered ability of each referenced permanent triggers an additional time.
|
|
103
|
+
|
|
104
|
+
Rules: CR 603.2d, CR 611.2b, CR 611.2c
|
|
105
|
+
|
|
106
|
+
| Parameter | Description |
|
|
107
|
+
| --- | --- |
|
|
108
|
+
| `to` | selector |
|
|
109
|
+
| `duration` | while_source_tapped |
|
|
110
|
+
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"additional_triggers": {
|
|
114
|
+
"to": {
|
|
115
|
+
"target": 0
|
|
116
|
+
},
|
|
117
|
+
"duration": "while_source_tapped"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## airbend
|
|
123
|
+
|
|
124
|
+
Airbend: exile each referenced permanent or spell; for as long as each card stays exiled, its owner may cast it by paying {2} rather than its mana cost (cast option `via: "effect:<n>"`). The exiled cards are the effect's results.
|
|
125
|
+
|
|
126
|
+
Rules: CR 701.65a, CR 701.65b, CR 118.9, CR 601.2f
|
|
127
|
+
|
|
128
|
+
| Parameter | Description |
|
|
129
|
+
| --- | --- |
|
|
130
|
+
| `to` | selector of permanents and/or spells |
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"airbend": {
|
|
135
|
+
"to": {
|
|
136
|
+
"target": 0
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## amass
|
|
143
|
+
|
|
144
|
+
Amass `subtype` `amount`: if you control no Army creature, create a 0/0 black [subtype] Army creature token; then put `amount` +1/+1 counters on an Army creature you control (chosen if there are several), which becomes a [subtype] too.
|
|
145
|
+
|
|
146
|
+
Rules: CR 701.47a, CR 701.47b, CR 701.47c, CR 613.1d
|
|
147
|
+
|
|
148
|
+
| Parameter | Description |
|
|
149
|
+
| --- | --- |
|
|
150
|
+
| `subtype` | lowercase creature type, e.g. "orc" |
|
|
151
|
+
| `amount` | amount |
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"amass": {
|
|
156
|
+
"subtype": "orc",
|
|
157
|
+
"amount": 2
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## another_counter
|
|
163
|
+
|
|
164
|
+
For each referenced permanent, the controller chooses a kind of counter already on it (asked only when there are several kinds) and puts one more counter of that kind on it.
|
|
165
|
+
|
|
166
|
+
Rules: CR 122.1, CR 122.6
|
|
167
|
+
|
|
168
|
+
| Parameter | Description |
|
|
169
|
+
| --- | --- |
|
|
170
|
+
| `to` | selector |
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"another_counter": {
|
|
175
|
+
"to": {
|
|
176
|
+
"target": 0
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## assimilate
|
|
183
|
+
|
|
184
|
+
Assimilate each referenced permanent or permanent card: you gain control of it (or put it onto the battlefield under your control) with a +1/+1 counter, and it becomes a Borg artifact creature while it stays on the battlefield. `for`: only cards matching a card spec; `choose: true`: you choose one of them.
|
|
185
|
+
|
|
186
|
+
Rules: CR 701.72a, CR 701.72b, CR 701.72c, CR 607.2a, CR 205.1b, CR 613.1b, CR 613.1d, CR 614.12a
|
|
187
|
+
|
|
188
|
+
| Parameter | Description |
|
|
189
|
+
| --- | --- |
|
|
190
|
+
| `to` | selector (permanents, or a target card in a graveyard, or "exiled_with") |
|
|
191
|
+
| `for` | card spec (default: any) |
|
|
192
|
+
| `choose` | boolean |
|
|
193
|
+
|
|
194
|
+
```json
|
|
195
|
+
{
|
|
196
|
+
"assimilate": {
|
|
197
|
+
"to": {
|
|
198
|
+
"target": 0
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## attach
|
|
205
|
+
|
|
206
|
+
Attach this Aura or Equipment (the ability's source), or the `attachment` (e.g. a token an earlier effect created, {"result": n}), to the referenced permanent. Nothing happens if it can't legally be attached to it, if it's already attached to it, or if the attachment has left the battlefield.
|
|
207
|
+
|
|
208
|
+
Rules: CR 701.3a, CR 701.3b, CR 701.3c, CR 301.5c
|
|
209
|
+
|
|
210
|
+
| Parameter | Description |
|
|
211
|
+
| --- | --- |
|
|
212
|
+
| `to` | selector naming one permanent: {"target": n}, "self" or {"result": n} |
|
|
213
|
+
| `attachment` | selector (default: the source) |
|
|
214
|
+
|
|
215
|
+
```json
|
|
216
|
+
{
|
|
217
|
+
"attach": {
|
|
218
|
+
"to": {
|
|
219
|
+
"target": 0
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## become
|
|
226
|
+
|
|
227
|
+
Each referenced permanent becomes what the parameters say, for `duration` (end_of_turn, default; indefinite: as long as it stays on the battlefield; while_source_on_battlefield: for as long as this effect's source remains on the battlefield; while_you_control_source: for as long as you control it): it has the card `types`, `supertypes` and `subtypes` in addition to its other types (layer 4, "becomes an artifact creature"), its creature types are exactly `creature_types` (layer 4), its colors are `colors` (layer 5), with `loses_abilities: true` it loses all the abilities it had (layer 6; abilities granted later, keyword counters put on it later and this effect's own `keywords` and `abilities` stay, CR 613.7), it has the `keywords` and `abilities` (layer 6: triggered, activated, mana, play_from or additional_land_plays abilities) and its base power and toughness are `base_power_toughness` (layer 7b). A permanent that becomes a creature has its printed power and toughness (a Vehicle's), or 0/0.
|
|
228
|
+
|
|
229
|
+
Rules: CR 611.2a, CR 611.2b, CR 611.2c, CR 613.1d, CR 613.1e, CR 613.1f, CR 613.4b, CR 613.7b, CR 205.1a, CR 205.1b, CR 301.7b, CR 514.2
|
|
230
|
+
|
|
231
|
+
| Parameter | Description |
|
|
232
|
+
| --- | --- |
|
|
233
|
+
| `types` | card types it also has: artifact, creature, enchantment, land |
|
|
234
|
+
| `supertypes` | supertypes it also has ("legendary") |
|
|
235
|
+
| `subtypes` | subtypes it also has ("in addition to its other types") |
|
|
236
|
+
| `creature_types` | list of creature types (replaces the others) |
|
|
237
|
+
| `colors` | list of W, U, B, R, G (replaces its colors) |
|
|
238
|
+
| `loses_abilities` | true: it loses all abilities ("loses all abilities") |
|
|
239
|
+
| `keywords` | list of keywords it gains |
|
|
240
|
+
| `base_power_toughness` | {"power": n, "toughness": n} |
|
|
241
|
+
| `abilities` | list of abilities it gains |
|
|
242
|
+
| `duration` | end_of_turn | indefinite | while_source_on_battlefield | while_you_control_source |
|
|
243
|
+
| `to` | selector |
|
|
244
|
+
|
|
245
|
+
```json
|
|
246
|
+
{
|
|
247
|
+
"become": {
|
|
248
|
+
"types": [
|
|
249
|
+
"creature"
|
|
250
|
+
],
|
|
251
|
+
"creature_types": [
|
|
252
|
+
"elemental"
|
|
253
|
+
],
|
|
254
|
+
"colors": [
|
|
255
|
+
"R"
|
|
256
|
+
],
|
|
257
|
+
"base_power_toughness": {
|
|
258
|
+
"power": 3,
|
|
259
|
+
"toughness": 3
|
|
260
|
+
},
|
|
261
|
+
"keywords": [
|
|
262
|
+
"haste"
|
|
263
|
+
],
|
|
264
|
+
"to": "self"
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## become_copy
|
|
270
|
+
|
|
271
|
+
Each referenced permanent becomes a copy of the (first) object `of` refers to, with the `except` modifications, until end of turn (default) or for as long as it stays on the battlefield (`duration: "permanent"`). It keeps its counters, status and other effects; nothing enters or leaves, so no enter or leave abilities trigger. Several copy effects apply in timestamp order.
|
|
272
|
+
|
|
273
|
+
Rules: CR 707.2, CR 707.4, CR 613.2a, CR 613.7, CR 611.2a, CR 514.2
|
|
274
|
+
|
|
275
|
+
| Parameter | Description |
|
|
276
|
+
| --- | --- |
|
|
277
|
+
| `to` | selector (the permanents that become copies) |
|
|
278
|
+
| `of` | selector (what they copy) |
|
|
279
|
+
| `except` | {"legendary": false, "keywords": [...], "types": [...], "subtypes": [...], "supertypes": [...], "name": ..., "power": n, "toughness": n, "colors": [...]} |
|
|
280
|
+
| `duration` | end_of_turn | permanent |
|
|
281
|
+
|
|
282
|
+
```json
|
|
283
|
+
{
|
|
284
|
+
"become_copy": {
|
|
285
|
+
"to": "self",
|
|
286
|
+
"of": {
|
|
287
|
+
"target": 0
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## become_saddled
|
|
294
|
+
|
|
295
|
+
Each referenced permanent (default: this one) becomes saddled until end of turn (filters: `"saddled": true`).
|
|
296
|
+
|
|
297
|
+
Rules: CR 702.171a, CR 702.171b
|
|
298
|
+
|
|
299
|
+
| Parameter | Description |
|
|
300
|
+
| --- | --- |
|
|
301
|
+
| `to` | selector of permanents (default self) |
|
|
302
|
+
|
|
303
|
+
```json
|
|
304
|
+
{
|
|
305
|
+
"become_saddled": {
|
|
306
|
+
"to": {
|
|
307
|
+
"target": 0
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
## behold
|
|
314
|
+
|
|
315
|
+
You behold an object matching the card spec `card`: reveal such a card from your hand or choose such a permanent you control. Under `may`, "yes" is offered only when there is one.
|
|
316
|
+
|
|
317
|
+
Rules: CR 701.4a, CR 701.4b, CR 118.3
|
|
318
|
+
|
|
319
|
+
| Parameter | Description |
|
|
320
|
+
| --- | --- |
|
|
321
|
+
| `card` | card spec (required), e.g. {"subtypes": ["dragon"]} |
|
|
322
|
+
|
|
323
|
+
```json
|
|
324
|
+
{
|
|
325
|
+
"may": {
|
|
326
|
+
"effects": [
|
|
327
|
+
{
|
|
328
|
+
"behold": {
|
|
329
|
+
"card": {
|
|
330
|
+
"subtypes": [
|
|
331
|
+
"dragon"
|
|
332
|
+
]
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
],
|
|
337
|
+
"then": [
|
|
338
|
+
{
|
|
339
|
+
"create_token": {
|
|
340
|
+
"token": "Treasure"
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
]
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
## bite
|
|
349
|
+
|
|
350
|
+
Each creature referenced by `from` deals damage equal to its power to each creature, planeswalker or player referenced by `to` (one damage event per source; not combat damage, and nothing is dealt back).
|
|
351
|
+
|
|
352
|
+
Rules: CR 120.3, CR 120.4, CR 608.2b
|
|
353
|
+
|
|
354
|
+
| Parameter | Description |
|
|
355
|
+
| --- | --- |
|
|
356
|
+
| `from` | selector (the creatures dealing damage) |
|
|
357
|
+
| `to` | selector |
|
|
358
|
+
|
|
359
|
+
```json
|
|
360
|
+
{
|
|
361
|
+
"bite": {
|
|
362
|
+
"from": {
|
|
363
|
+
"target": 0
|
|
364
|
+
},
|
|
365
|
+
"to": {
|
|
366
|
+
"target": 1
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
## blight
|
|
373
|
+
|
|
374
|
+
Each referenced player (default: you) blights `amount`: puts that many -1/-1 counters on a creature they control, chosen as it resolves (one `effect_choice` each, in turn order). The blighted creatures are its results.
|
|
375
|
+
|
|
376
|
+
Rules: CR 701.68a, CR 701.68b, CR 701.68c
|
|
377
|
+
|
|
378
|
+
| Parameter | Description |
|
|
379
|
+
| --- | --- |
|
|
380
|
+
| `amount` | amount |
|
|
381
|
+
| `to` | player selector (default you) |
|
|
382
|
+
|
|
383
|
+
```json
|
|
384
|
+
{
|
|
385
|
+
"blight": {
|
|
386
|
+
"amount": 2
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
## cast
|
|
392
|
+
|
|
393
|
+
The controller may cast referenced cards (or card copies) now, while this resolves, paying their costs; timing restrictions don't apply. `to`, `for`, `not_types`, `max_mana_value`, `count`, `exile_instead` and `any_mana_type` work as for `cast_free`.
|
|
394
|
+
|
|
395
|
+
Rules: CR 608.2g, CR 707.12, CR 707.12a, CR 601.2a, CR 601.2f
|
|
396
|
+
|
|
397
|
+
| Parameter | Description |
|
|
398
|
+
| --- | --- |
|
|
399
|
+
| `to` | selector |
|
|
400
|
+
| `for` | card spec |
|
|
401
|
+
| `not_types` | list of card types |
|
|
402
|
+
| `max_mana_value` | amount |
|
|
403
|
+
| `count` | 1 or "any" |
|
|
404
|
+
| `exile_instead` | true or a card spec (as for cast_free) |
|
|
405
|
+
| `any_mana_type` | boolean: mana of any type can be spent to cast it (CR 609.4b) |
|
|
406
|
+
|
|
407
|
+
```json
|
|
408
|
+
{
|
|
409
|
+
"cast": {
|
|
410
|
+
"to": {
|
|
411
|
+
"result": 0
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
## cast_free
|
|
418
|
+
|
|
419
|
+
The controller may cast referenced cards without paying their mana costs while this resolves. `to` names the cards ({"result": n}), or a player for the cards in their hand (default: your hand). Only cards matching `for`/`not_types` with mana value up to `max_mana_value` (optional amount) that could be cast now (legal targets). `count`: 1 (default) or "any" (any number, one at a time). X is 0 (CR 107.3b). `play: true` ("you may play"): a land among them may be played, on your turn with a land play left (`{type: "play_land"}`). A face-down card is judged face up.
|
|
420
|
+
|
|
421
|
+
Rules: CR 608.2g, CR 118.9, CR 601.2a, CR 107.3b, CR 118.6a, CR 305.2a, CR 305.3, CR 406.3a
|
|
422
|
+
|
|
423
|
+
| Parameter | Description |
|
|
424
|
+
| --- | --- |
|
|
425
|
+
| `to` | selector |
|
|
426
|
+
| `for` | card spec |
|
|
427
|
+
| `not_types` | list of card types |
|
|
428
|
+
| `max_mana_value` | amount |
|
|
429
|
+
| `count` | 1 or "any" |
|
|
430
|
+
| `play` | boolean |
|
|
431
|
+
| `exile_instead` | true or a card spec: if a spell cast this way (matching it) would be put into a graveyard, it's exiled instead (CR 614.1a) |
|
|
432
|
+
| `any_mana_type` | boolean: mana of any type can be spent to cast it (CR 609.4b) |
|
|
433
|
+
|
|
434
|
+
```json
|
|
435
|
+
{
|
|
436
|
+
"cast_free": {
|
|
437
|
+
"to": {
|
|
438
|
+
"result": 0
|
|
439
|
+
},
|
|
440
|
+
"max_mana_value": 3,
|
|
441
|
+
"count": "any"
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
## choose_card_type
|
|
447
|
+
|
|
448
|
+
The player (`to`, default you) chooses a card type; later effects of this spell or ability read it with "types": "chosen".
|
|
449
|
+
|
|
450
|
+
Rules: CR 205.2a, CR 607.2d, CR 608.2c
|
|
451
|
+
|
|
452
|
+
| Parameter | Description |
|
|
453
|
+
| --- | --- |
|
|
454
|
+
| `to` | player selector (default you) |
|
|
455
|
+
|
|
456
|
+
```json
|
|
457
|
+
{
|
|
458
|
+
"choose_card_type": {}
|
|
459
|
+
}
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
## choose_cards
|
|
463
|
+
|
|
464
|
+
You choose `count` (default 1; "any": any number) cards matching `for` from `from`: a selector (e.g. {"result": 0}, the cards an earlier effect milled) or a player's zone, {"hand": selector} / {"graveyard": selector}. `optional`: you may choose fewer. Then they are put into `put` (`tapped` onto the battlefield, under your control; exiled cards `link`ed to the source). `look`: you look at the whole zone first; `reveal`: "chosen" reveals what you chose, "all" the whole set. `then` runs if a card was chosen, `otherwise` if none was ("if you can't"). `random: true`: the cards are picked at random (the game's random number generator) instead of chosen.
|
|
465
|
+
|
|
466
|
+
Rules: CR 701.20a, CR 701.20e, CR 400.7j, CR 608.2c, CR 607.2a, CR 118.12, CR 701.9b
|
|
467
|
+
|
|
468
|
+
| Parameter | Description |
|
|
469
|
+
| --- | --- |
|
|
470
|
+
| `from` | selector or {"hand"|"graveyard": player selector} |
|
|
471
|
+
| `for` | card spec |
|
|
472
|
+
| `count` | integer or "any" |
|
|
473
|
+
| `optional` | boolean |
|
|
474
|
+
| `put` | hand | graveyard | exile | battlefield | library_top | library_bottom |
|
|
475
|
+
| `tapped` | boolean |
|
|
476
|
+
| `link` | boolean |
|
|
477
|
+
| `look` | boolean |
|
|
478
|
+
| `random` | boolean |
|
|
479
|
+
| `reveal` | chosen | all |
|
|
480
|
+
| `then` | list of effects |
|
|
481
|
+
| `otherwise` | list of effects |
|
|
482
|
+
|
|
483
|
+
```json
|
|
484
|
+
{
|
|
485
|
+
"choose_cards": {
|
|
486
|
+
"from": {
|
|
487
|
+
"result": 0
|
|
488
|
+
},
|
|
489
|
+
"for": {
|
|
490
|
+
"permanent": true
|
|
491
|
+
},
|
|
492
|
+
"optional": true,
|
|
493
|
+
"put": "hand"
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
## choose_color
|
|
499
|
+
|
|
500
|
+
The player (`to`, default you) chooses a color; later effects of this spell or ability read it with "colors": "chosen".
|
|
501
|
+
|
|
502
|
+
Rules: CR 105.4, CR 607.2d, CR 608.2c
|
|
503
|
+
|
|
504
|
+
| Parameter | Description |
|
|
505
|
+
| --- | --- |
|
|
506
|
+
| `to` | player selector (default you) |
|
|
507
|
+
|
|
508
|
+
```json
|
|
509
|
+
{
|
|
510
|
+
"choose_color": {}
|
|
511
|
+
}
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
## choose_creature_type
|
|
515
|
+
|
|
516
|
+
The player (`to`, default you) chooses a creature type; later effects of this spell or ability read it with "subtypes": "chosen".
|
|
517
|
+
|
|
518
|
+
Rules: CR 205.3m, CR 607.2d, CR 608.2c
|
|
519
|
+
|
|
520
|
+
| Parameter | Description |
|
|
521
|
+
| --- | --- |
|
|
522
|
+
| `to` | player selector (default you) |
|
|
523
|
+
|
|
524
|
+
```json
|
|
525
|
+
{
|
|
526
|
+
"choose_creature_type": {}
|
|
527
|
+
}
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
## choose_new_targets
|
|
531
|
+
|
|
532
|
+
You may choose new targets for each spell or ability on the stack `of` refers to (e.g. {"triggering": "object"}: "that spell"): for each target, keep it or pick another legal target for that spell.
|
|
533
|
+
|
|
534
|
+
Rules: CR 115.7, CR 115.7d, CR 115.7e
|
|
535
|
+
|
|
536
|
+
| Parameter | Description |
|
|
537
|
+
| --- | --- |
|
|
538
|
+
| `of` | selector (spells or abilities on the stack) |
|
|
539
|
+
|
|
540
|
+
```json
|
|
541
|
+
{
|
|
542
|
+
"choose_new_targets": {
|
|
543
|
+
"of": {
|
|
544
|
+
"triggering": "object"
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
## choose_option
|
|
551
|
+
|
|
552
|
+
The player (`to`, default you) chooses one of the `options` (words); later effects of this spell or ability check it with the condition {"chosen": word}.
|
|
553
|
+
|
|
554
|
+
Rules: CR 607.2f, CR 608.2c
|
|
555
|
+
|
|
556
|
+
| Parameter | Description |
|
|
557
|
+
| --- | --- |
|
|
558
|
+
| `options` | list of two or more lowercase words |
|
|
559
|
+
| `to` | player selector (default you) |
|
|
560
|
+
|
|
561
|
+
```json
|
|
562
|
+
{
|
|
563
|
+
"choose_option": {
|
|
564
|
+
"options": [
|
|
565
|
+
"odd",
|
|
566
|
+
"even"
|
|
567
|
+
]
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
## connive
|
|
573
|
+
|
|
574
|
+
Each referenced permanent (default: this one) connives `amount` (default 1): its controller draws that many cards, then discards that many, then it gets a +1/+1 counter for each nonland card discarded.
|
|
575
|
+
|
|
576
|
+
Rules: CR 701.50a, CR 701.50b, CR 701.50d, CR 701.50e
|
|
577
|
+
|
|
578
|
+
| Parameter | Description |
|
|
579
|
+
| --- | --- |
|
|
580
|
+
| `amount` | amount (default 1) |
|
|
581
|
+
| `to` | selector of permanents (default self) |
|
|
582
|
+
|
|
583
|
+
```json
|
|
584
|
+
{
|
|
585
|
+
"connive": {
|
|
586
|
+
"to": "self"
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
## copy_card
|
|
592
|
+
|
|
593
|
+
Create `amount` copies of each card `of` refers to ("self": the source card), in the zone that card is in, owned by you. They are the effect's result, e.g. for `cast_free` or `cast`. A card copy ceases to exist if it is anywhere but the stack or the battlefield (so one that isn't cast now is gone at the next state-based-action check).
|
|
594
|
+
|
|
595
|
+
Rules: CR 707.12, CR 707.12a, CR 707.10a, CR 704.5d
|
|
596
|
+
|
|
597
|
+
| Parameter | Description |
|
|
598
|
+
| --- | --- |
|
|
599
|
+
| `of` | selector (cards) |
|
|
600
|
+
| `amount` | amount (default 1) |
|
|
601
|
+
|
|
602
|
+
```json
|
|
603
|
+
{
|
|
604
|
+
"copy_card": {
|
|
605
|
+
"of": {
|
|
606
|
+
"result": 0
|
|
607
|
+
},
|
|
608
|
+
"amount": 2
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
## copy_spell
|
|
614
|
+
|
|
615
|
+
Copy each spell or ability on the stack `of` refers to ("self": the spell this ability or spell belongs to; a `stack_ability` target: an activated or triggered ability) `amount` times. The copies are put on the stack under the referenced player's control (default: you) with the same modes, X, kicker and targets; they aren't cast or activated, and an ability's copy has the same source. With `new_targets: true` the controller may choose new targets for each copy. A copy of a permanent spell becomes a token as it resolves. `except`: the copies have these differences (e.g. {"keywords": ["wither"]}: "the copy gains wither").
|
|
616
|
+
|
|
617
|
+
Rules: CR 707.10, CR 707.10a, CR 707.10b, CR 707.10c, CR 707.10f, CR 608.3f
|
|
618
|
+
|
|
619
|
+
| Parameter | Description |
|
|
620
|
+
| --- | --- |
|
|
621
|
+
| `of` | selector (spells or abilities on the stack) |
|
|
622
|
+
| `amount` | amount (default 1) |
|
|
623
|
+
| `new_targets` | boolean |
|
|
624
|
+
| `to` | selector (default "you") |
|
|
625
|
+
| `except` | {"legendary": false, "keywords": [...], "types": [...], "subtypes": [...], "supertypes": [...], "name": ..., "power": n, "toughness": n, "colors": [...]} |
|
|
626
|
+
|
|
627
|
+
```json
|
|
628
|
+
{
|
|
629
|
+
"copy_spell": {
|
|
630
|
+
"of": "self"
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
## counter
|
|
636
|
+
|
|
637
|
+
Counter each referenced spell or ability: a spell leaves the stack for its owner's graveyard without resolving, an ability ceases to exist. A spell that can't be countered stays.
|
|
638
|
+
|
|
639
|
+
Rules: CR 701.6a, CR 701.6b, CR 101.2
|
|
640
|
+
|
|
641
|
+
| Parameter | Description |
|
|
642
|
+
| --- | --- |
|
|
643
|
+
| `to` | selector |
|
|
644
|
+
|
|
645
|
+
```json
|
|
646
|
+
{
|
|
647
|
+
"counter": {
|
|
648
|
+
"to": {
|
|
649
|
+
"target": 0
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
## counter_bonus
|
|
656
|
+
|
|
657
|
+
Until end of turn, whenever one or more counters would be put on a permanent the controller controls (including counters it enters with), that many plus `amount` of each of those kinds are put on it instead.
|
|
658
|
+
|
|
659
|
+
Rules: CR 614.1a, CR 614.16, CR 611.2a, CR 122.6, CR 616.1
|
|
660
|
+
|
|
661
|
+
| Parameter | Description |
|
|
662
|
+
| --- | --- |
|
|
663
|
+
| `amount` | integer (default 1) |
|
|
664
|
+
|
|
665
|
+
```json
|
|
666
|
+
{
|
|
667
|
+
"counter_bonus": {
|
|
668
|
+
"amount": 1
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
## counter_unless_pays
|
|
674
|
+
|
|
675
|
+
Counter each referenced spell or ability unless its controller pays `mana` (or `waterbend`s that cost, CR 701.67a, or pays the list of costs `cost`) as this resolves (they choose, and pay like any cost; mana abilities allowed).
|
|
676
|
+
|
|
677
|
+
Rules: CR 701.6a, CR 118.12a, CR 605.3a, CR 701.67a
|
|
678
|
+
|
|
679
|
+
| Parameter | Description |
|
|
680
|
+
| --- | --- |
|
|
681
|
+
| `mana` | mana cost string |
|
|
682
|
+
| `waterbend` | mana cost string, instead of mana |
|
|
683
|
+
| `cost` | list of costs, instead of mana |
|
|
684
|
+
| `to` | selector (usually {"target": 0}) |
|
|
685
|
+
|
|
686
|
+
```json
|
|
687
|
+
{
|
|
688
|
+
"counter_unless_pays": {
|
|
689
|
+
"mana": "{3}",
|
|
690
|
+
"to": {
|
|
691
|
+
"target": 0
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
## create_emblem
|
|
698
|
+
|
|
699
|
+
Each referenced player (default you) gets an emblem with the `abilities` (triggered, static or player_rule abilities). An emblem is in the command zone for the rest of the game; its abilities work there, and "this emblem" is the source of what they do.
|
|
700
|
+
|
|
701
|
+
Rules: CR 114.1, CR 114.2, CR 114.3, CR 114.4, CR 113.6p
|
|
702
|
+
|
|
703
|
+
| Parameter | Description |
|
|
704
|
+
| --- | --- |
|
|
705
|
+
| `abilities` | list of triggered, static or player_rule abilities |
|
|
706
|
+
| `to` | selector |
|
|
707
|
+
|
|
708
|
+
```json
|
|
709
|
+
{
|
|
710
|
+
"create_emblem": {
|
|
711
|
+
"abilities": [
|
|
712
|
+
{
|
|
713
|
+
"static": {
|
|
714
|
+
"affects": {
|
|
715
|
+
"each": "creature",
|
|
716
|
+
"controller": "you"
|
|
717
|
+
},
|
|
718
|
+
"pump": {
|
|
719
|
+
"power": 2,
|
|
720
|
+
"toughness": 2
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
]
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
## create_token
|
|
730
|
+
|
|
731
|
+
Create `amount` tokens under the referenced player's control (default: you). `token` is a predefined token name (Treasure, Clue, Food) or an inline card definition. `tapped: true` creates them tapped; `attacking: true` attacking (only for the attacking player during combat, CR 506.3b).
|
|
732
|
+
|
|
733
|
+
Rules: CR 111.1, CR 111.10, CR 701.7a, CR 704.5d, CR 508.4, CR 506.3b
|
|
734
|
+
|
|
735
|
+
| Parameter | Description |
|
|
736
|
+
| --- | --- |
|
|
737
|
+
| `token` | "Treasure" | "Clue" | "Food" | {card data} |
|
|
738
|
+
| `amount` | integer (default 1) |
|
|
739
|
+
| `tapped` | boolean |
|
|
740
|
+
| `attacking` | boolean |
|
|
741
|
+
| `to` | selector (default "you") |
|
|
742
|
+
|
|
743
|
+
```json
|
|
744
|
+
{
|
|
745
|
+
"create_token": {
|
|
746
|
+
"token": {
|
|
747
|
+
"name": "Soldier",
|
|
748
|
+
"types": [
|
|
749
|
+
"creature"
|
|
750
|
+
],
|
|
751
|
+
"subtypes": [
|
|
752
|
+
"soldier"
|
|
753
|
+
],
|
|
754
|
+
"power": 1,
|
|
755
|
+
"toughness": 1
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
```
|
|
760
|
+
|
|
761
|
+
## create_token_copy
|
|
762
|
+
|
|
763
|
+
For each object `of` refers to (a permanent, a card in any zone, or the source with "self"), the referenced players (default: you) each create `amount` tokens that are copies of it: its copiable values (its card as modified by other copy effects, not counters, status or other effects), with the `except` modifications. The tokens are the effect's result, for later effects such as granting haste or a delayed sacrifice.
|
|
764
|
+
|
|
765
|
+
Rules: CR 707.2, CR 707.8, CR 707.9a, CR 707.9b, CR 111.1, CR 614.1c
|
|
766
|
+
|
|
767
|
+
| Parameter | Description |
|
|
768
|
+
| --- | --- |
|
|
769
|
+
| `of` | selector (what to copy) |
|
|
770
|
+
| `amount` | amount (default 1) |
|
|
771
|
+
| `tapped` | boolean |
|
|
772
|
+
| `except` | {"legendary": false, "keywords": [...], "types": [...], "subtypes": [...], "supertypes": [...], "name": ..., "power": n, "toughness": n, "colors": [...]} |
|
|
773
|
+
| `to` | selector (default "you") |
|
|
774
|
+
|
|
775
|
+
```json
|
|
776
|
+
{
|
|
777
|
+
"create_token_copy": {
|
|
778
|
+
"of": {
|
|
779
|
+
"target": 0
|
|
780
|
+
},
|
|
781
|
+
"except": {
|
|
782
|
+
"legendary": false
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
```
|
|
787
|
+
|
|
788
|
+
## damage_replacement
|
|
789
|
+
|
|
790
|
+
For the `duration` (end_of_turn by default, or until_your_next_turn), damage that would be dealt to the referenced players and permanents (`to`, fixed as it resolves; with `permanents: true` also the permanents a referenced player controls as the damage is dealt) is changed: `multiply` (2 = "double that damage") or `plus` an amount (computed as it resolves). `combat`: combat | noncombat only. Doubling applies before adding.
|
|
791
|
+
|
|
792
|
+
Rules: CR 614.1a, CR 611.2a, CR 611.2c, CR 616.1
|
|
793
|
+
|
|
794
|
+
| Parameter | Description |
|
|
795
|
+
| --- | --- |
|
|
796
|
+
| `to` | selector |
|
|
797
|
+
| `permanents` | boolean |
|
|
798
|
+
| `combat` | combat | noncombat |
|
|
799
|
+
| `multiply` | integer >= 2 |
|
|
800
|
+
| `plus` | amount |
|
|
801
|
+
| `duration` | end_of_turn | until_your_next_turn |
|
|
802
|
+
|
|
803
|
+
```json
|
|
804
|
+
{
|
|
805
|
+
"damage_replacement": {
|
|
806
|
+
"to": {
|
|
807
|
+
"triggering": "player"
|
|
808
|
+
},
|
|
809
|
+
"permanents": true,
|
|
810
|
+
"multiply": 2,
|
|
811
|
+
"duration": "until_your_next_turn"
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
```
|
|
815
|
+
|
|
816
|
+
## damage_unpreventable
|
|
817
|
+
|
|
818
|
+
Until end of turn, damage (`combat`: combat | noncombat only) can't be prevented.
|
|
819
|
+
|
|
820
|
+
Rules: CR 615.12, CR 611.2a
|
|
821
|
+
|
|
822
|
+
| Parameter | Description |
|
|
823
|
+
| --- | --- |
|
|
824
|
+
| `combat` | combat | noncombat |
|
|
825
|
+
|
|
826
|
+
```json
|
|
827
|
+
"damage_unpreventable"
|
|
828
|
+
```
|
|
829
|
+
|
|
830
|
+
## deal_damage
|
|
831
|
+
|
|
832
|
+
Deal `amount` damage to each referenced creature, planeswalker or player. Damage to a player causes life loss; to a planeswalker removes loyalty counters; to a creature is marked until cleanup. {"this_way": n} naming it is the excess damage it dealt (beyond lethal damage, or a planeswalker's loyalty).
|
|
833
|
+
|
|
834
|
+
Rules: CR 120.3a, CR 120.3c, CR 120.3e, CR 120.6, CR 120.4a, CR 120.10
|
|
835
|
+
|
|
836
|
+
| Parameter | Description |
|
|
837
|
+
| --- | --- |
|
|
838
|
+
| `amount` | integer |
|
|
839
|
+
| `to` | selector |
|
|
840
|
+
|
|
841
|
+
```json
|
|
842
|
+
{
|
|
843
|
+
"deal_damage": {
|
|
844
|
+
"amount": 3,
|
|
845
|
+
"to": {
|
|
846
|
+
"target": 0
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
```
|
|
851
|
+
|
|
852
|
+
## delayed_trigger
|
|
853
|
+
|
|
854
|
+
Creates a delayed triggered ability with the controller and source of the resolving spell or ability. It triggers only once, the next time `when` happens (e.g. {"step_begins": {"step": "end", "whose": "each"}} for the next end step). Its `effects` may use {"result": n} for what earlier effects of the creating list moved or created; those objects are affected only if they are still where they were put.
|
|
855
|
+
|
|
856
|
+
Rules: CR 603.7a, CR 603.7b, CR 603.7c, CR 603.7d, CR 603.7e
|
|
857
|
+
|
|
858
|
+
| Parameter | Description |
|
|
859
|
+
| --- | --- |
|
|
860
|
+
| `when` | a trigger condition |
|
|
861
|
+
| `effects` | list of effects |
|
|
862
|
+
| `watch` | selector resolved now (e.g. {"target": 0}): the objects its trigger subject "watched" and its effects' selector "watched" mean ("when that creature dies") |
|
|
863
|
+
| `this_turn` | true: it lasts until the end of this turn and triggers each time ("whenever ... this turn", CR 603.7b); "once": only the next time this turn ("at the beginning of the next combat this turn") |
|
|
864
|
+
|
|
865
|
+
```json
|
|
866
|
+
{
|
|
867
|
+
"delayed_trigger": {
|
|
868
|
+
"when": {
|
|
869
|
+
"step_begins": {
|
|
870
|
+
"step": "end",
|
|
871
|
+
"whose": "each"
|
|
872
|
+
}
|
|
873
|
+
},
|
|
874
|
+
"effects": [
|
|
875
|
+
{
|
|
876
|
+
"sacrifice": {
|
|
877
|
+
"to": {
|
|
878
|
+
"result": 0
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
]
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
```
|
|
886
|
+
|
|
887
|
+
## destroy
|
|
888
|
+
|
|
889
|
+
Destroy each referenced permanent (it goes to its owner's graveyard).
|
|
890
|
+
|
|
891
|
+
Rules: CR 701.8a
|
|
892
|
+
|
|
893
|
+
| Parameter | Description |
|
|
894
|
+
| --- | --- |
|
|
895
|
+
| `to` | selector |
|
|
896
|
+
|
|
897
|
+
```json
|
|
898
|
+
{
|
|
899
|
+
"destroy": {
|
|
900
|
+
"to": {
|
|
901
|
+
"target": 0
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
```
|
|
906
|
+
|
|
907
|
+
## dig
|
|
908
|
+
|
|
909
|
+
Look at the top `amount` cards of your library (`reveal: "all"`: reveal them). Take `count` (default 1; "all": every matching card, no choice; "any": any number) cards matching `for` and put them into `put` (`tapped` onto the battlefield); `optional`: you may take fewer. `reveal: "chosen"` reveals the cards taken. The rest go to `rest`: "bottom_random" (default), "bottom_any" (in an order you choose) or "graveyard". `put: "exile"` takes `face_down: true` (only you may look at them) and `link: true` (exiled with the source, CR 607.2a: hideaway).
|
|
910
|
+
|
|
911
|
+
Rules: CR 701.20a, CR 701.20e, CR 401.4, CR 400.7j, CR 406.3, CR 607.2a
|
|
912
|
+
|
|
913
|
+
| Parameter | Description |
|
|
914
|
+
| --- | --- |
|
|
915
|
+
| `amount` | amount (how many cards) |
|
|
916
|
+
| `for` | card spec (default any card) |
|
|
917
|
+
| `count` | integer, "all" or "any" |
|
|
918
|
+
| `optional` | boolean |
|
|
919
|
+
| `put` | hand | battlefield | graveyard | exile |
|
|
920
|
+
| `tapped` | boolean |
|
|
921
|
+
| `reveal` | none | chosen | all |
|
|
922
|
+
| `rest` | bottom_random | bottom_any | graveyard |
|
|
923
|
+
| `face_down` | boolean (put exile) |
|
|
924
|
+
| `link` | boolean (put exile) |
|
|
925
|
+
|
|
926
|
+
```json
|
|
927
|
+
{
|
|
928
|
+
"dig": {
|
|
929
|
+
"amount": 6,
|
|
930
|
+
"for": {
|
|
931
|
+
"types": [
|
|
932
|
+
"artifact"
|
|
933
|
+
]
|
|
934
|
+
},
|
|
935
|
+
"optional": true,
|
|
936
|
+
"reveal": "chosen",
|
|
937
|
+
"put": "hand"
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
```
|
|
941
|
+
|
|
942
|
+
## discard
|
|
943
|
+
|
|
944
|
+
Each referenced player discards `amount` cards of their choice (default: you). `random: true`: the cards are chosen at random (the game's random number generator), with no decision. `hand: true`: each discards their whole hand at once ("discard your hand"; how many is its amount {"this_way": n}).
|
|
945
|
+
|
|
946
|
+
Rules: CR 701.9a, CR 701.9b
|
|
947
|
+
|
|
948
|
+
| Parameter | Description |
|
|
949
|
+
| --- | --- |
|
|
950
|
+
| `amount` | integer |
|
|
951
|
+
| `to` | selector |
|
|
952
|
+
| `random` | boolean |
|
|
953
|
+
| `hand` | true: the whole hand |
|
|
954
|
+
|
|
955
|
+
```json
|
|
956
|
+
{
|
|
957
|
+
"discard": {
|
|
958
|
+
"amount": 1,
|
|
959
|
+
"to": "each_opponent"
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
## discover
|
|
965
|
+
|
|
966
|
+
Discover `amount`: exile cards from the top of your library until you exile a nonland card with mana value `amount` or less. You may cast it without paying its mana cost; if you don't, it goes into your hand. The other exiled cards go on the bottom of your library in a random order.
|
|
967
|
+
|
|
968
|
+
Rules: CR 701.57a, CR 701.57b, CR 701.57c, CR 608.2g, CR 118.9
|
|
969
|
+
|
|
970
|
+
| Parameter | Description |
|
|
971
|
+
| --- | --- |
|
|
972
|
+
| `amount` | amount |
|
|
973
|
+
|
|
974
|
+
```json
|
|
975
|
+
{
|
|
976
|
+
"discover": {
|
|
977
|
+
"amount": 5
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
```
|
|
981
|
+
|
|
982
|
+
## distribute_counters
|
|
983
|
+
|
|
984
|
+
Put on each legal target the number of `counter` counters assigned to it as the spell or ability was cast (its `divide` amount, at least one per target).
|
|
985
|
+
|
|
986
|
+
Rules: CR 601.2d, CR 608.2b, CR 122.1
|
|
987
|
+
|
|
988
|
+
| Parameter | Description |
|
|
989
|
+
| --- | --- |
|
|
990
|
+
| `counter` | counter name |
|
|
991
|
+
|
|
992
|
+
```json
|
|
993
|
+
{
|
|
994
|
+
"distribute_counters": {
|
|
995
|
+
"counter": "+1/+1"
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
```
|
|
999
|
+
|
|
1000
|
+
## distribute_damage
|
|
1001
|
+
|
|
1002
|
+
Deal each legal target the damage assigned to it as the spell or ability was cast or put on the stack (its `divide` amount, at least one per target). {"this_way": n} naming it is the excess damage dealt.
|
|
1003
|
+
|
|
1004
|
+
Rules: CR 601.2d, CR 608.2b, CR 120.3, CR 120.4a
|
|
1005
|
+
|
|
1006
|
+
```json
|
|
1007
|
+
{
|
|
1008
|
+
"distribute_damage": {}
|
|
1009
|
+
}
|
|
1010
|
+
```
|
|
1011
|
+
|
|
1012
|
+
## draw
|
|
1013
|
+
|
|
1014
|
+
Each referenced player draws `amount` cards (default: you).
|
|
1015
|
+
|
|
1016
|
+
Rules: CR 121.1, CR 121.2
|
|
1017
|
+
|
|
1018
|
+
| Parameter | Description |
|
|
1019
|
+
| --- | --- |
|
|
1020
|
+
| `amount` | integer |
|
|
1021
|
+
| `to` | selector |
|
|
1022
|
+
|
|
1023
|
+
```json
|
|
1024
|
+
{
|
|
1025
|
+
"draw": {
|
|
1026
|
+
"amount": 2
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
```
|
|
1030
|
+
|
|
1031
|
+
## earthbend
|
|
1032
|
+
|
|
1033
|
+
Earthbend `amount`: each referenced land (the target, `to`) becomes a 0/0 creature with haste that's still a land, gets `amount` +1/+1 counters, and when it dies or is put into exile it returns to the battlefield tapped under your control. The land is the effect's result.
|
|
1034
|
+
|
|
1035
|
+
Rules: CR 701.66a, CR 701.66b, CR 603.7c, CR 611.2a, CR 613.1d, CR 613.4b
|
|
1036
|
+
|
|
1037
|
+
| Parameter | Description |
|
|
1038
|
+
| --- | --- |
|
|
1039
|
+
| `amount` | amount |
|
|
1040
|
+
| `to` | selector (the target land, e.g. {"target": 0}) |
|
|
1041
|
+
|
|
1042
|
+
```json
|
|
1043
|
+
{
|
|
1044
|
+
"earthbend": {
|
|
1045
|
+
"amount": 2,
|
|
1046
|
+
"to": {
|
|
1047
|
+
"target": 0
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
```
|
|
1052
|
+
|
|
1053
|
+
## empower_jace
|
|
1054
|
+
|
|
1055
|
+
Empower Jace `amount`: if you control no Jace planeswalker token, create a blue Jace planeswalker token (0 loyalty; -1: surveil 1; -3: draw a card); then put `amount` loyalty counters on a Jace planeswalker token you control.
|
|
1056
|
+
|
|
1057
|
+
Rules: CR 701.71a, CR 704.3
|
|
1058
|
+
|
|
1059
|
+
| Parameter | Description |
|
|
1060
|
+
| --- | --- |
|
|
1061
|
+
| `amount` | amount |
|
|
1062
|
+
|
|
1063
|
+
```json
|
|
1064
|
+
{
|
|
1065
|
+
"empower_jace": {
|
|
1066
|
+
"amount": 2
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
1069
|
+
```
|
|
1070
|
+
|
|
1071
|
+
## end_the_turn
|
|
1072
|
+
|
|
1073
|
+
Ends the turn: triggered abilities not yet on the stack cease to exist, every object on the stack is exiled (this spell too, so its later effects don't happen), state-based actions are checked, combat ends and the game skips to the cleanup step. Abilities that trigger meanwhile go on the stack during cleanup, followed by another cleanup step.
|
|
1074
|
+
|
|
1075
|
+
Rules: CR 725.1, CR 725.1a, CR 725.1b, CR 725.1c, CR 725.1d, CR 725.1e, CR 725.1f, CR 514.3a
|
|
1076
|
+
|
|
1077
|
+
```json
|
|
1078
|
+
"end_the_turn"
|
|
1079
|
+
```
|
|
1080
|
+
|
|
1081
|
+
## endure
|
|
1082
|
+
|
|
1083
|
+
Each referenced permanent (default: this one) endures `amount`: its controller puts that many +1/+1 counters on it, or creates an N/N white Spirit creature token.
|
|
1084
|
+
|
|
1085
|
+
Rules: CR 701.63a, CR 701.63b, CR 707.2, CR 111.4
|
|
1086
|
+
|
|
1087
|
+
| Parameter | Description |
|
|
1088
|
+
| --- | --- |
|
|
1089
|
+
| `amount` | amount (2, "x", {"counters": ...}) |
|
|
1090
|
+
| `to` | selector of permanents (default self) |
|
|
1091
|
+
|
|
1092
|
+
```json
|
|
1093
|
+
{
|
|
1094
|
+
"endure": {
|
|
1095
|
+
"amount": 2
|
|
1096
|
+
}
|
|
1097
|
+
}
|
|
1098
|
+
```
|
|
1099
|
+
|
|
1100
|
+
## exchange_control
|
|
1101
|
+
|
|
1102
|
+
The permanent `to` references and the one `with` references exchange controllers. If either is gone or both have the same controller, nothing happens.
|
|
1103
|
+
|
|
1104
|
+
Rules: CR 701.12a, CR 701.12b, CR 613.1b
|
|
1105
|
+
|
|
1106
|
+
| Parameter | Description |
|
|
1107
|
+
| --- | --- |
|
|
1108
|
+
| `to` | selector (a permanent) |
|
|
1109
|
+
| `with` | selector (a permanent) |
|
|
1110
|
+
|
|
1111
|
+
```json
|
|
1112
|
+
{
|
|
1113
|
+
"exchange_control": {
|
|
1114
|
+
"to": {
|
|
1115
|
+
"target": 0
|
|
1116
|
+
},
|
|
1117
|
+
"with": {
|
|
1118
|
+
"target": 1
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
}
|
|
1122
|
+
```
|
|
1123
|
+
|
|
1124
|
+
## exchange_life_totals
|
|
1125
|
+
|
|
1126
|
+
The player `to` references (default you) and the one `with` references exchange life totals: each gains or loses the difference. If either can't gain life and would, no exchange happens. The life the first player lost this way is recorded for {"this_way": n}.
|
|
1127
|
+
|
|
1128
|
+
Rules: CR 701.12a, CR 701.12c, CR 119.7
|
|
1129
|
+
|
|
1130
|
+
| Parameter | Description |
|
|
1131
|
+
| --- | --- |
|
|
1132
|
+
| `to` | selector (a player, default you) |
|
|
1133
|
+
| `with` | selector (a player) |
|
|
1134
|
+
|
|
1135
|
+
```json
|
|
1136
|
+
{
|
|
1137
|
+
"exchange_life_totals": {
|
|
1138
|
+
"with": {
|
|
1139
|
+
"target": 0
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
```
|
|
1144
|
+
|
|
1145
|
+
## exile
|
|
1146
|
+
|
|
1147
|
+
Exile each referenced permanent, spell, or card in a graveyard or hand. `link: true`: the cards are exiled with the source, for its "exiled with" abilities (the `exiled_with` selector). `until_source_leaves: true`: they return to the battlefield under their owners' control when the source leaves the battlefield; if it already has, nothing is exiled.
|
|
1148
|
+
|
|
1149
|
+
Rules: CR 406.1, CR 701.13a, CR 607.2a, CR 406.6, CR 610.3, CR 610.3a, CR 610.3b, CR 610.3c
|
|
1150
|
+
|
|
1151
|
+
| Parameter | Description |
|
|
1152
|
+
| --- | --- |
|
|
1153
|
+
| `to` | selector |
|
|
1154
|
+
| `link` | boolean |
|
|
1155
|
+
| `until_source_leaves` | boolean |
|
|
1156
|
+
|
|
1157
|
+
```json
|
|
1158
|
+
{
|
|
1159
|
+
"exile": {
|
|
1160
|
+
"to": {
|
|
1161
|
+
"target": 0
|
|
1162
|
+
}
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
```
|
|
1166
|
+
|
|
1167
|
+
## exile_if_dies
|
|
1168
|
+
|
|
1169
|
+
Until end of turn, if a referenced permanent would be put into a graveyard from the battlefield, it is exiled instead.
|
|
1170
|
+
|
|
1171
|
+
Rules: CR 614.1a, CR 700.4, CR 611.2a, CR 611.2c
|
|
1172
|
+
|
|
1173
|
+
| Parameter | Description |
|
|
1174
|
+
| --- | --- |
|
|
1175
|
+
| `to` | selector |
|
|
1176
|
+
|
|
1177
|
+
```json
|
|
1178
|
+
{
|
|
1179
|
+
"exile_if_dies": {
|
|
1180
|
+
"to": {
|
|
1181
|
+
"target": 0
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
```
|
|
1186
|
+
|
|
1187
|
+
## exile_this_spell
|
|
1188
|
+
|
|
1189
|
+
The resolving spell is exiled instead of being put into its owner's graveyard as it finishes resolving.
|
|
1190
|
+
|
|
1191
|
+
Rules: CR 608.2n, CR 406.1
|
|
1192
|
+
|
|
1193
|
+
```json
|
|
1194
|
+
"exile_this_spell"
|
|
1195
|
+
```
|
|
1196
|
+
|
|
1197
|
+
## exile_top
|
|
1198
|
+
|
|
1199
|
+
Each referenced player (default: you) exiles the top `amount` cards of their library (face up). Later effects name them with {"result": n}; `link: true` exiles them with the source. `face_down: true` exiles them face down: only the `looker` players (default: you) may look at them.
|
|
1200
|
+
|
|
1201
|
+
Rules: CR 406.1, CR 400.7j, CR 607.2a, CR 406.3, CR 406.3a
|
|
1202
|
+
|
|
1203
|
+
| Parameter | Description |
|
|
1204
|
+
| --- | --- |
|
|
1205
|
+
| `amount` | amount |
|
|
1206
|
+
| `to` | selector of players |
|
|
1207
|
+
| `link` | boolean |
|
|
1208
|
+
| `face_down` | boolean |
|
|
1209
|
+
| `looker` | selector of players who may look (default "you") |
|
|
1210
|
+
|
|
1211
|
+
```json
|
|
1212
|
+
{
|
|
1213
|
+
"exile_top": {
|
|
1214
|
+
"amount": 4
|
|
1215
|
+
}
|
|
1216
|
+
}
|
|
1217
|
+
```
|
|
1218
|
+
|
|
1219
|
+
## exile_until
|
|
1220
|
+
|
|
1221
|
+
Each referenced player exiles cards from the top of their library until they exile a card matching `until` (or the library is empty). All exiled cards are the result.
|
|
1222
|
+
|
|
1223
|
+
Rules: CR 406.1, CR 701.13a, CR 400.7j
|
|
1224
|
+
|
|
1225
|
+
| Parameter | Description |
|
|
1226
|
+
| --- | --- |
|
|
1227
|
+
| `until` | nonland |
|
|
1228
|
+
| `to` | selector |
|
|
1229
|
+
|
|
1230
|
+
```json
|
|
1231
|
+
{
|
|
1232
|
+
"exile_until": {
|
|
1233
|
+
"until": "nonland",
|
|
1234
|
+
"to": {
|
|
1235
|
+
"target": 0
|
|
1236
|
+
}
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
```
|
|
1240
|
+
|
|
1241
|
+
## explore
|
|
1242
|
+
|
|
1243
|
+
Each referenced permanent explores: its controller reveals the top card of their library. A land card goes to their hand; otherwise the permanent gets a +1/+1 counter (if it's still on the battlefield) and they may put the card into their graveyard.
|
|
1244
|
+
|
|
1245
|
+
Rules: CR 701.44a, CR 701.44b, CR 701.44c
|
|
1246
|
+
|
|
1247
|
+
| Parameter | Description |
|
|
1248
|
+
| --- | --- |
|
|
1249
|
+
| `to` | selector of permanents |
|
|
1250
|
+
|
|
1251
|
+
```json
|
|
1252
|
+
{
|
|
1253
|
+
"explore": {
|
|
1254
|
+
"to": "self"
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
```
|
|
1258
|
+
|
|
1259
|
+
## extra_turn
|
|
1260
|
+
|
|
1261
|
+
Each referenced player (default you) takes an extra turn after this one. Extra turns are taken most recently created first.
|
|
1262
|
+
|
|
1263
|
+
Rules: CR 500.7
|
|
1264
|
+
|
|
1265
|
+
| Parameter | Description |
|
|
1266
|
+
| --- | --- |
|
|
1267
|
+
| `to` | selector |
|
|
1268
|
+
|
|
1269
|
+
```json
|
|
1270
|
+
{
|
|
1271
|
+
"extra_turn": {
|
|
1272
|
+
"if": {
|
|
1273
|
+
"began_extra_turn": false
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
1277
|
+
```
|
|
1278
|
+
|
|
1279
|
+
## fight
|
|
1280
|
+
|
|
1281
|
+
The creature referenced by `to` fights the one referenced by `with`: each deals damage equal to its power to the other at the same time (not combat damage). If either is gone, no longer a creature or an illegal target, neither deals damage. {"this_way": n} naming it is the excess damage dealt to the `with` creature.
|
|
1282
|
+
|
|
1283
|
+
Rules: CR 701.14a, CR 701.14b, CR 701.14c, CR 701.14d, CR 120.4a
|
|
1284
|
+
|
|
1285
|
+
| Parameter | Description |
|
|
1286
|
+
| --- | --- |
|
|
1287
|
+
| `to` | selector (one creature) |
|
|
1288
|
+
| `with` | selector (one creature) |
|
|
1289
|
+
|
|
1290
|
+
```json
|
|
1291
|
+
{
|
|
1292
|
+
"fight": {
|
|
1293
|
+
"to": {
|
|
1294
|
+
"target": 0
|
|
1295
|
+
},
|
|
1296
|
+
"with": {
|
|
1297
|
+
"target": 1
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
```
|
|
1302
|
+
|
|
1303
|
+
## flip_coins
|
|
1304
|
+
|
|
1305
|
+
You flip `amount` coins (default 1), each coming up heads or tails at random (the game's random number generator). `count`: "wins" (default; you call each flip and win it if the call matches) or "heads" (no one wins or loses). How many were counted is this effect's amount: {"this_way": n} in later effects and conditions.
|
|
1306
|
+
|
|
1307
|
+
Rules: CR 705.1, CR 705.2, CR 705.3, CR 608.2c
|
|
1308
|
+
|
|
1309
|
+
| Parameter | Description |
|
|
1310
|
+
| --- | --- |
|
|
1311
|
+
| `amount` | amount (default 1) |
|
|
1312
|
+
| `count` | wins | heads |
|
|
1313
|
+
|
|
1314
|
+
```json
|
|
1315
|
+
{
|
|
1316
|
+
"flip_coins": {}
|
|
1317
|
+
}
|
|
1318
|
+
```
|
|
1319
|
+
|
|
1320
|
+
## gain_control
|
|
1321
|
+
|
|
1322
|
+
The player referenced by `gains` (default you) gains control of each referenced permanent: indefinitely (`duration: "permanent"`, default), until end of turn, or for as long as this effect's source remains on the battlefield / tapped / under your control (it does nothing if that is already over). A permanent that changes control leaves combat and is newly under its controller's control (it can't attack or {T} without haste).
|
|
1323
|
+
|
|
1324
|
+
Rules: CR 613.1b, CR 108.4, CR 506.4, CR 302.6, CR 514.2, CR 611.2b
|
|
1325
|
+
|
|
1326
|
+
| Parameter | Description |
|
|
1327
|
+
| --- | --- |
|
|
1328
|
+
| `to` | selector (permanents) |
|
|
1329
|
+
| `gains` | selector (a player; default "you") |
|
|
1330
|
+
| `duration` | permanent | end_of_turn | while_source_on_battlefield | while_source_tapped | while_you_control_source |
|
|
1331
|
+
|
|
1332
|
+
```json
|
|
1333
|
+
{
|
|
1334
|
+
"gain_control": {
|
|
1335
|
+
"to": {
|
|
1336
|
+
"target": 0
|
|
1337
|
+
},
|
|
1338
|
+
"duration": "end_of_turn"
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1341
|
+
```
|
|
1342
|
+
|
|
1343
|
+
## gain_life
|
|
1344
|
+
|
|
1345
|
+
Each referenced player gains `amount` life (default: you).
|
|
1346
|
+
|
|
1347
|
+
Rules: CR 119.3
|
|
1348
|
+
|
|
1349
|
+
| Parameter | Description |
|
|
1350
|
+
| --- | --- |
|
|
1351
|
+
| `amount` | integer |
|
|
1352
|
+
| `to` | selector |
|
|
1353
|
+
|
|
1354
|
+
```json
|
|
1355
|
+
{
|
|
1356
|
+
"gain_life": {
|
|
1357
|
+
"amount": 3
|
|
1358
|
+
}
|
|
1359
|
+
}
|
|
1360
|
+
```
|
|
1361
|
+
|
|
1362
|
+
## grant
|
|
1363
|
+
|
|
1364
|
+
Each referenced permanent (or spell on the stack) gains the `keywords` until end of turn.
|
|
1365
|
+
|
|
1366
|
+
Rules: CR 611.2a, CR 611.2c, CR 613.1f, CR 514.2
|
|
1367
|
+
|
|
1368
|
+
| Parameter | Description |
|
|
1369
|
+
| --- | --- |
|
|
1370
|
+
| `keywords` | list of keywords |
|
|
1371
|
+
| `to` | selector |
|
|
1372
|
+
|
|
1373
|
+
```json
|
|
1374
|
+
{
|
|
1375
|
+
"grant": {
|
|
1376
|
+
"keywords": [
|
|
1377
|
+
"flying"
|
|
1378
|
+
],
|
|
1379
|
+
"to": {
|
|
1380
|
+
"target": 0
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
```
|
|
1385
|
+
|
|
1386
|
+
## grant_ability
|
|
1387
|
+
|
|
1388
|
+
Each referenced object (a permanent, or a card in any zone, e.g. an exiled card) gains `ability` (any ability entry) for as long as it stays in its zone (default) or until end of turn. `for` (a card spec) keeps only matching objects ("that nonland card"). An activated ability with `zone` works from that zone ("activate only if this card is exiled").
|
|
1389
|
+
|
|
1390
|
+
Rules: CR 113.6b, CR 611.2a, CR 613.1f
|
|
1391
|
+
|
|
1392
|
+
| Parameter | Description |
|
|
1393
|
+
| --- | --- |
|
|
1394
|
+
| `ability` | an ability |
|
|
1395
|
+
| `to` | selector |
|
|
1396
|
+
| `for` | card spec |
|
|
1397
|
+
| `duration` | permanent | end_of_turn |
|
|
1398
|
+
|
|
1399
|
+
```json
|
|
1400
|
+
{
|
|
1401
|
+
"grant_ability": {
|
|
1402
|
+
"to": {
|
|
1403
|
+
"result": 0
|
|
1404
|
+
},
|
|
1405
|
+
"ability": {
|
|
1406
|
+
"activated": {
|
|
1407
|
+
"cost": [
|
|
1408
|
+
{
|
|
1409
|
+
"mana": "{1}"
|
|
1410
|
+
}
|
|
1411
|
+
],
|
|
1412
|
+
"zone": "exile",
|
|
1413
|
+
"effects": [
|
|
1414
|
+
{
|
|
1415
|
+
"draw": {
|
|
1416
|
+
"amount": 1
|
|
1417
|
+
}
|
|
1418
|
+
}
|
|
1419
|
+
]
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1424
|
+
```
|
|
1425
|
+
|
|
1426
|
+
## look_at_hand
|
|
1427
|
+
|
|
1428
|
+
You look at each referenced player's hand (other players don't see the cards).
|
|
1429
|
+
|
|
1430
|
+
Rules: CR 701.20e
|
|
1431
|
+
|
|
1432
|
+
| Parameter | Description |
|
|
1433
|
+
| --- | --- |
|
|
1434
|
+
| `to` | selector of players |
|
|
1435
|
+
|
|
1436
|
+
```json
|
|
1437
|
+
{
|
|
1438
|
+
"look_at_hand": {
|
|
1439
|
+
"to": {
|
|
1440
|
+
"target": 0
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
}
|
|
1444
|
+
```
|
|
1445
|
+
|
|
1446
|
+
## lose_game
|
|
1447
|
+
|
|
1448
|
+
Each referenced player (default you) loses the game.
|
|
1449
|
+
|
|
1450
|
+
Rules: CR 104.3e, CR 104.4a
|
|
1451
|
+
|
|
1452
|
+
| Parameter | Description |
|
|
1453
|
+
| --- | --- |
|
|
1454
|
+
| `to` | selector |
|
|
1455
|
+
|
|
1456
|
+
```json
|
|
1457
|
+
"lose_game"
|
|
1458
|
+
```
|
|
1459
|
+
|
|
1460
|
+
## lose_life
|
|
1461
|
+
|
|
1462
|
+
Each referenced player loses `amount` life. The life lost is recorded for {"this_way": n}.
|
|
1463
|
+
|
|
1464
|
+
Rules: CR 119.3
|
|
1465
|
+
|
|
1466
|
+
| Parameter | Description |
|
|
1467
|
+
| --- | --- |
|
|
1468
|
+
| `amount` | integer |
|
|
1469
|
+
| `to` | selector |
|
|
1470
|
+
|
|
1471
|
+
```json
|
|
1472
|
+
{
|
|
1473
|
+
"lose_life": {
|
|
1474
|
+
"amount": 2,
|
|
1475
|
+
"to": "each_opponent"
|
|
1476
|
+
}
|
|
1477
|
+
}
|
|
1478
|
+
```
|
|
1479
|
+
|
|
1480
|
+
## may
|
|
1481
|
+
|
|
1482
|
+
An optional effect. The controller chooses yes or no as it resolves; yes is offered only if every effect in `effects` can be done fully. On yes, `effects` then `then` ("if you do") happen; on no, `otherwise` ("if you don't"). Nested effects may name the results of earlier effects of the enclosing list.
|
|
1483
|
+
|
|
1484
|
+
Rules: CR 118.12, CR 118.3, CR 608.2d, CR 608.2e
|
|
1485
|
+
|
|
1486
|
+
| Parameter | Description |
|
|
1487
|
+
| --- | --- |
|
|
1488
|
+
| `effects` | list of effects (the optional part) |
|
|
1489
|
+
| `then` | list of effects |
|
|
1490
|
+
| `otherwise` | list of effects |
|
|
1491
|
+
| `chooser` | who decides (default: the controller): a selector naming a player, or a permanent whose controller decides (e.g. {"target": 0}), or "active_player" |
|
|
1492
|
+
|
|
1493
|
+
```json
|
|
1494
|
+
{
|
|
1495
|
+
"may": {
|
|
1496
|
+
"effects": [
|
|
1497
|
+
{
|
|
1498
|
+
"discard": {
|
|
1499
|
+
"amount": 1
|
|
1500
|
+
}
|
|
1501
|
+
}
|
|
1502
|
+
],
|
|
1503
|
+
"then": [
|
|
1504
|
+
{
|
|
1505
|
+
"draw": {
|
|
1506
|
+
"amount": 1
|
|
1507
|
+
}
|
|
1508
|
+
}
|
|
1509
|
+
]
|
|
1510
|
+
}
|
|
1511
|
+
}
|
|
1512
|
+
```
|
|
1513
|
+
|
|
1514
|
+
## meld
|
|
1515
|
+
|
|
1516
|
+
Exile this permanent and a creature named `with` that you both own and control, then meld them: a meld pair (cards with layout "meld" sharing a back face) enters the battlefield as one permanent with that back face up. When it leaves the battlefield, both cards go to the new zone.
|
|
1517
|
+
|
|
1518
|
+
Rules: CR 701.42a, CR 701.42b, CR 701.42c, CR 713.1a, CR 713.6, CR 713.8
|
|
1519
|
+
|
|
1520
|
+
| Parameter | Description |
|
|
1521
|
+
| --- | --- |
|
|
1522
|
+
| `with` | the name of the other card of the pair |
|
|
1523
|
+
|
|
1524
|
+
```json
|
|
1525
|
+
{
|
|
1526
|
+
"meld": {
|
|
1527
|
+
"with": "Fang, Fearless l'Cie"
|
|
1528
|
+
}
|
|
1529
|
+
}
|
|
1530
|
+
```
|
|
1531
|
+
|
|
1532
|
+
## mill
|
|
1533
|
+
|
|
1534
|
+
Each referenced player puts the top `amount` cards of their library into their graveyard (default: you).
|
|
1535
|
+
|
|
1536
|
+
Rules: CR 701.17a
|
|
1537
|
+
|
|
1538
|
+
| Parameter | Description |
|
|
1539
|
+
| --- | --- |
|
|
1540
|
+
| `amount` | integer |
|
|
1541
|
+
| `to` | selector |
|
|
1542
|
+
|
|
1543
|
+
```json
|
|
1544
|
+
{
|
|
1545
|
+
"mill": {
|
|
1546
|
+
"amount": 2,
|
|
1547
|
+
"to": "each_opponent"
|
|
1548
|
+
}
|
|
1549
|
+
}
|
|
1550
|
+
```
|
|
1551
|
+
|
|
1552
|
+
## pay
|
|
1553
|
+
|
|
1554
|
+
You may pay `cost` (a list of costs: mana, life, discarding, sacrificing, a `one_of` choice, ...) as it resolves; `mana`, `life` and `waterbend` are shorthands for one cost. If you do, `then` happens; if you don't, `otherwise`. Paying mana works like paying a spell's cost (mana abilities may be activated; a `waterbend` cost may also be paid by tapping artifacts and creatures, CR 701.67a); a cost that can't be paid can't be chosen (CR 118.3). For another player paying, see `counter_unless_pays`.
|
|
1555
|
+
|
|
1556
|
+
Rules: CR 118.12, CR 118.12a, CR 118.3, CR 119.4, CR 605.3a, CR 701.67a, CR 701.67c
|
|
1557
|
+
|
|
1558
|
+
| Parameter | Description |
|
|
1559
|
+
| --- | --- |
|
|
1560
|
+
| `cost` | list of costs, e.g. [{"one_of": [{"sacrifice_permanent": {"filter": "artifact"}}, {"discard": {}}]}] |
|
|
1561
|
+
| `mana` | mana cost string, e.g. "{1}" |
|
|
1562
|
+
| `life` | integer |
|
|
1563
|
+
| `waterbend` | mana cost string: "unless you waterbend {2}" |
|
|
1564
|
+
| `then` | list of effects |
|
|
1565
|
+
| `otherwise` | list of effects |
|
|
1566
|
+
|
|
1567
|
+
```json
|
|
1568
|
+
{
|
|
1569
|
+
"pay": {
|
|
1570
|
+
"mana": "{1}",
|
|
1571
|
+
"then": [
|
|
1572
|
+
{
|
|
1573
|
+
"draw": {
|
|
1574
|
+
"amount": 1
|
|
1575
|
+
}
|
|
1576
|
+
}
|
|
1577
|
+
]
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
```
|
|
1581
|
+
|
|
1582
|
+
## phase_out
|
|
1583
|
+
|
|
1584
|
+
Each referenced permanent phases out, with the Auras and Equipment attached to it (indirectly). It phases in during the untap step of the player who controlled it as it phased out. Phasing isn't a zone change: no enters or leaves triggers.
|
|
1585
|
+
|
|
1586
|
+
Rules: CR 702.26a, CR 702.26b, CR 702.26d, CR 702.26g, CR 702.26h, CR 502.1, CR 506.4
|
|
1587
|
+
|
|
1588
|
+
| Parameter | Description |
|
|
1589
|
+
| --- | --- |
|
|
1590
|
+
| `to` | selector |
|
|
1591
|
+
|
|
1592
|
+
```json
|
|
1593
|
+
{
|
|
1594
|
+
"phase_out": {
|
|
1595
|
+
"to": {
|
|
1596
|
+
"each": {
|
|
1597
|
+
"permanent": {
|
|
1598
|
+
"any_of": [
|
|
1599
|
+
"artifact",
|
|
1600
|
+
"creature"
|
|
1601
|
+
]
|
|
1602
|
+
}
|
|
1603
|
+
}
|
|
1604
|
+
}
|
|
1605
|
+
}
|
|
1606
|
+
}
|
|
1607
|
+
```
|
|
1608
|
+
|
|
1609
|
+
## play_permission
|
|
1610
|
+
|
|
1611
|
+
A player may play (`play: "play"`, default) or cast (`"cast"`) each referenced exiled card matching `for`/`not_types`, paying its costs and following timing rules, for `duration`: end_of_turn (default), end_of_your_next_turn or while_exiled. With `choose: "one_per_owner"` only one chosen card per owner. `to_player`: who may play it, "controller" (default, the effect's controller), "owner" (the card's owner) or a player selector (a face-down card: only someone who may look at it). `cost_increase`: spells cast this way cost that much generic mana more. `any_mana_type: true`: mana of any type can be spent to cast those spells.
|
|
1612
|
+
|
|
1613
|
+
Rules: CR 611.2a, CR 601.3, CR 305.1, CR 400.7, CR 514.2, CR 601.2f, CR 108.3, CR 406.3b, CR 609.4b
|
|
1614
|
+
|
|
1615
|
+
| Parameter | Description |
|
|
1616
|
+
| --- | --- |
|
|
1617
|
+
| `to` | selector (usually {"result": n}) |
|
|
1618
|
+
| `duration` | end_of_turn | end_of_your_next_turn | while_exiled |
|
|
1619
|
+
| `play` | play | cast |
|
|
1620
|
+
| `for` | card spec |
|
|
1621
|
+
| `not_types` | list of card types |
|
|
1622
|
+
| `choose` | one_per_owner |
|
|
1623
|
+
| `to_player` | controller | owner | player selector |
|
|
1624
|
+
| `cost_increase` | integer >= 1 |
|
|
1625
|
+
| `any_mana_type` | boolean |
|
|
1626
|
+
| `exile_instead` | true or a card spec: if a spell cast this way (matching it) would be put into a graveyard, it's exiled instead (CR 614.1a) |
|
|
1627
|
+
|
|
1628
|
+
```json
|
|
1629
|
+
{
|
|
1630
|
+
"play_permission": {
|
|
1631
|
+
"to": {
|
|
1632
|
+
"result": 0
|
|
1633
|
+
},
|
|
1634
|
+
"duration": "end_of_your_next_turn"
|
|
1635
|
+
}
|
|
1636
|
+
}
|
|
1637
|
+
```
|
|
1638
|
+
|
|
1639
|
+
## player_rule
|
|
1640
|
+
|
|
1641
|
+
Each referenced player (default you) gets `rule` for the `duration`: end_of_turn (default) or until_your_next_turn (until the controller's next turn begins). Rules: hexproof, cant_attack, no_max_hand_size, prevent_all_damage, cant_lose_for_life, cant_cast, cant_cast_except_from_hand, spells_cant_be_countered, abilities_cant_be_countered, cant_gain_life, cant_activate, damage_cant_be_prevented, combat_damage_cant_be_prevented, protection_from_opponents.
|
|
1642
|
+
|
|
1643
|
+
Rules: CR 702.11c, CR 115.4, CR 508.1c, CR 402.2, CR 514.1, CR 615.1, CR 615.1a, CR 704.5a, CR 104.3b, CR 701.21a, CR 614.17b, CR 101.2, CR 601.3, CR 701.6a, CR 119.7, CR 602.5, CR 615.12, CR 702.16b, CR 702.16e, CR 702.16k, CR 611.2a, CR 514.2
|
|
1644
|
+
|
|
1645
|
+
| Parameter | Description |
|
|
1646
|
+
| --- | --- |
|
|
1647
|
+
| `rule` | hexproof | cant_attack | no_max_hand_size | prevent_all_damage | cant_lose_for_life | cant_cast | cant_cast_except_from_hand | spells_cant_be_countered | abilities_cant_be_countered | cant_gain_life | cant_activate | damage_cant_be_prevented | combat_damage_cant_be_prevented | protection_from_opponents |
|
|
1648
|
+
| `to` | selector |
|
|
1649
|
+
| `duration` | end_of_turn | until_your_next_turn |
|
|
1650
|
+
|
|
1651
|
+
```json
|
|
1652
|
+
{
|
|
1653
|
+
"player_rule": {
|
|
1654
|
+
"rule": "no_max_hand_size",
|
|
1655
|
+
"duration": "until_your_next_turn"
|
|
1656
|
+
}
|
|
1657
|
+
}
|
|
1658
|
+
```
|
|
1659
|
+
|
|
1660
|
+
## prepare
|
|
1661
|
+
|
|
1662
|
+
Each referenced permanent (default: this one) becomes prepared, if it has a prepare spell and isn't prepared already: its controller creates a copy of the prepare spell in exile and may cast that copy while the permanent stays prepared. Casting it unprepares the permanent.
|
|
1663
|
+
|
|
1664
|
+
Rules: CR 723.3a, CR 723.3c
|
|
1665
|
+
|
|
1666
|
+
| Parameter | Description |
|
|
1667
|
+
| --- | --- |
|
|
1668
|
+
| `to` | selector (default "self") |
|
|
1669
|
+
|
|
1670
|
+
```json
|
|
1671
|
+
{
|
|
1672
|
+
"prepare": {
|
|
1673
|
+
"to": "self"
|
|
1674
|
+
}
|
|
1675
|
+
}
|
|
1676
|
+
```
|
|
1677
|
+
|
|
1678
|
+
## prevent_damage
|
|
1679
|
+
|
|
1680
|
+
For the `duration` (end_of_turn by default, until_your_next_turn, or while_source_on_battlefield: for as long as this effect's source remains on the battlefield), damage that would be dealt to the referenced players and permanents (`to`, fixed as it resolves) or to those matching `to_each` as the damage is dealt (a damage scope seen from the controller, e.g. {"each": "creature", "controller": "you"}), and/or by the referenced sources (`by`; "chosen_source": a source the controller chooses as it resolves) is prevented (`combat`: combat | noncombat only). With `next`, it is a shield that prevents only the next that much damage; with `next_time: true` it prevents only the next damage event it applies to. `then`: effects right after it prevents damage, reading {"triggering": "amount"} (the damage prevented), "object" (the source) and "player" (its controller).
|
|
1681
|
+
|
|
1682
|
+
Rules: CR 615.1, CR 615.3, CR 615.5, CR 615.7, CR 615.8, CR 609.7a, CR 611.2a, CR 611.2b, CR 611.2c
|
|
1683
|
+
|
|
1684
|
+
| Parameter | Description |
|
|
1685
|
+
| --- | --- |
|
|
1686
|
+
| `to` | selector (recipients) |
|
|
1687
|
+
| `to_each` | damage scope (recipients, as damage is dealt) |
|
|
1688
|
+
| `by` | selector (sources) | "chosen_source" |
|
|
1689
|
+
| `combat` | combat | noncombat |
|
|
1690
|
+
| `next` | amount (a shield) |
|
|
1691
|
+
| `next_time` | boolean |
|
|
1692
|
+
| `duration` | end_of_turn | until_your_next_turn | while_source_on_battlefield |
|
|
1693
|
+
| `then` | list of effects |
|
|
1694
|
+
|
|
1695
|
+
```json
|
|
1696
|
+
{
|
|
1697
|
+
"prevent_damage": {
|
|
1698
|
+
"to": {
|
|
1699
|
+
"target": 0
|
|
1700
|
+
},
|
|
1701
|
+
"combat": "combat"
|
|
1702
|
+
}
|
|
1703
|
+
}
|
|
1704
|
+
```
|
|
1705
|
+
|
|
1706
|
+
## proliferate
|
|
1707
|
+
|
|
1708
|
+
You choose any number of permanents and/or players that have counters (one at a time, then done); each gets one more counter of each kind already on it. `amount` (default 1): how many times to proliferate.
|
|
1709
|
+
|
|
1710
|
+
Rules: CR 701.34a, CR 122.1, CR 122.6
|
|
1711
|
+
|
|
1712
|
+
| Parameter | Description |
|
|
1713
|
+
| --- | --- |
|
|
1714
|
+
| `amount` | amount (default 1) |
|
|
1715
|
+
|
|
1716
|
+
```json
|
|
1717
|
+
{
|
|
1718
|
+
"proliferate": {}
|
|
1719
|
+
}
|
|
1720
|
+
```
|
|
1721
|
+
|
|
1722
|
+
## pump
|
|
1723
|
+
|
|
1724
|
+
Each referenced creature gets +power/+toughness until end of turn (`duration: "until_your_next_turn"`: until its controller's next turn begins). The set of affected creatures is locked in when the effect starts.
|
|
1725
|
+
|
|
1726
|
+
Rules: CR 611.2a, CR 611.2c, CR 613.4c, CR 514.2, CR 500.1
|
|
1727
|
+
|
|
1728
|
+
| Parameter | Description |
|
|
1729
|
+
| --- | --- |
|
|
1730
|
+
| `power` | amount (may be negative, e.g. {"times": ["x", -1]} for -X) |
|
|
1731
|
+
| `toughness` | amount (may be negative) |
|
|
1732
|
+
| `to` | selector |
|
|
1733
|
+
| `duration` | end_of_turn | until_your_next_turn |
|
|
1734
|
+
|
|
1735
|
+
```json
|
|
1736
|
+
{
|
|
1737
|
+
"pump": {
|
|
1738
|
+
"power": 3,
|
|
1739
|
+
"toughness": 3,
|
|
1740
|
+
"to": {
|
|
1741
|
+
"target": 0
|
|
1742
|
+
}
|
|
1743
|
+
}
|
|
1744
|
+
}
|
|
1745
|
+
```
|
|
1746
|
+
|
|
1747
|
+
## put_in_library
|
|
1748
|
+
|
|
1749
|
+
Put each referenced permanent, or card in a graveyard or exile, into its owner's library: on the `top` or `bottom`, or (`owner_choice`) where its owner chooses.
|
|
1750
|
+
|
|
1751
|
+
Rules: CR 401.4, CR 400.7, CR 608.2b
|
|
1752
|
+
|
|
1753
|
+
| Parameter | Description |
|
|
1754
|
+
| --- | --- |
|
|
1755
|
+
| `to` | selector |
|
|
1756
|
+
| `position` | top | bottom | owner_choice |
|
|
1757
|
+
|
|
1758
|
+
```json
|
|
1759
|
+
{
|
|
1760
|
+
"put_in_library": {
|
|
1761
|
+
"to": {
|
|
1762
|
+
"target": 0
|
|
1763
|
+
},
|
|
1764
|
+
"position": "bottom"
|
|
1765
|
+
}
|
|
1766
|
+
}
|
|
1767
|
+
```
|
|
1768
|
+
|
|
1769
|
+
## recruit
|
|
1770
|
+
|
|
1771
|
+
Each referenced player (default: you) recruits: draws a card, then discards a card; if a nonland card was discarded, they create a 1/1 white Human Soldier creature token.
|
|
1772
|
+
|
|
1773
|
+
Rules: CR 701.70a
|
|
1774
|
+
|
|
1775
|
+
| Parameter | Description |
|
|
1776
|
+
| --- | --- |
|
|
1777
|
+
| `to` | player selector (default you) |
|
|
1778
|
+
|
|
1779
|
+
```json
|
|
1780
|
+
{
|
|
1781
|
+
"recruit": {}
|
|
1782
|
+
}
|
|
1783
|
+
```
|
|
1784
|
+
|
|
1785
|
+
## reflexive_trigger
|
|
1786
|
+
|
|
1787
|
+
Creates a reflexive triggered ability ("when you do, ...") that triggers immediately, with the controller and source of the resolving spell or ability. Its `targets` are chosen as it's put on the stack; its `effects` may name the results of earlier effects of the creating list. With `if`, it triggers only when the condition holds ("when excess damage is dealt this way").
|
|
1788
|
+
|
|
1789
|
+
Rules: CR 603.12, CR 603.12a, CR 603.7d, CR 603.7e, CR 603.3d
|
|
1790
|
+
|
|
1791
|
+
| Parameter | Description |
|
|
1792
|
+
| --- | --- |
|
|
1793
|
+
| `targets` | list of target filters |
|
|
1794
|
+
| `effects` | list of effects |
|
|
1795
|
+
| `if` | condition |
|
|
1796
|
+
| `divide` | amount divided among the targets as it's put on the stack (CR 601.2d) |
|
|
1797
|
+
|
|
1798
|
+
```json
|
|
1799
|
+
{
|
|
1800
|
+
"reflexive_trigger": {
|
|
1801
|
+
"targets": [
|
|
1802
|
+
"any_target"
|
|
1803
|
+
],
|
|
1804
|
+
"effects": [
|
|
1805
|
+
{
|
|
1806
|
+
"deal_damage": {
|
|
1807
|
+
"amount": 2,
|
|
1808
|
+
"to": {
|
|
1809
|
+
"target": 0
|
|
1810
|
+
}
|
|
1811
|
+
}
|
|
1812
|
+
}
|
|
1813
|
+
]
|
|
1814
|
+
}
|
|
1815
|
+
}
|
|
1816
|
+
```
|
|
1817
|
+
|
|
1818
|
+
## remove_all_counters
|
|
1819
|
+
|
|
1820
|
+
Remove every counter named `counter` (every counter, if no `counter` is given) from each referenced permanent.
|
|
1821
|
+
|
|
1822
|
+
Rules: CR 122.8
|
|
1823
|
+
|
|
1824
|
+
| Parameter | Description |
|
|
1825
|
+
| --- | --- |
|
|
1826
|
+
| `counter` | optional counter name |
|
|
1827
|
+
| `to` | selector |
|
|
1828
|
+
|
|
1829
|
+
```json
|
|
1830
|
+
{
|
|
1831
|
+
"remove_all_counters": {
|
|
1832
|
+
"counter": "+1/+1",
|
|
1833
|
+
"to": {
|
|
1834
|
+
"target": 0
|
|
1835
|
+
}
|
|
1836
|
+
}
|
|
1837
|
+
}
|
|
1838
|
+
```
|
|
1839
|
+
|
|
1840
|
+
## remove_counters
|
|
1841
|
+
|
|
1842
|
+
Remove up to `amount` counters named `counter` from each referenced permanent.
|
|
1843
|
+
|
|
1844
|
+
Rules: CR 122.8
|
|
1845
|
+
|
|
1846
|
+
| Parameter | Description |
|
|
1847
|
+
| --- | --- |
|
|
1848
|
+
| `counter` | counter name |
|
|
1849
|
+
| `amount` | amount |
|
|
1850
|
+
| `to` | selector |
|
|
1851
|
+
|
|
1852
|
+
```json
|
|
1853
|
+
{
|
|
1854
|
+
"remove_counters": {
|
|
1855
|
+
"counter": "+1/+1",
|
|
1856
|
+
"amount": 2,
|
|
1857
|
+
"to": {
|
|
1858
|
+
"target": 0
|
|
1859
|
+
}
|
|
1860
|
+
}
|
|
1861
|
+
}
|
|
1862
|
+
```
|
|
1863
|
+
|
|
1864
|
+
## remove_damage
|
|
1865
|
+
|
|
1866
|
+
Remove all damage marked on each referenced permanent.
|
|
1867
|
+
|
|
1868
|
+
Rules: CR 120.6, CR 514.2
|
|
1869
|
+
|
|
1870
|
+
| Parameter | Description |
|
|
1871
|
+
| --- | --- |
|
|
1872
|
+
| `to` | selector |
|
|
1873
|
+
|
|
1874
|
+
```json
|
|
1875
|
+
{
|
|
1876
|
+
"remove_damage": {
|
|
1877
|
+
"to": {
|
|
1878
|
+
"target": 0
|
|
1879
|
+
}
|
|
1880
|
+
}
|
|
1881
|
+
}
|
|
1882
|
+
```
|
|
1883
|
+
|
|
1884
|
+
## return_choice
|
|
1885
|
+
|
|
1886
|
+
Each referenced player (default: you) returns `count` (default 1; "any": any number) permanents they control matching `filter` to their owners' hands, chosen by them in turn order starting with the active player (not targeted); all move at once.
|
|
1887
|
+
|
|
1888
|
+
Rules: CR 101.4, CR 400.7, CR 608.2c
|
|
1889
|
+
|
|
1890
|
+
| Parameter | Description |
|
|
1891
|
+
| --- | --- |
|
|
1892
|
+
| `filter` | a filter, e.g. "land" |
|
|
1893
|
+
| `count` | integer or "any" |
|
|
1894
|
+
| `to` | selector of players |
|
|
1895
|
+
|
|
1896
|
+
```json
|
|
1897
|
+
{
|
|
1898
|
+
"return_choice": {
|
|
1899
|
+
"filter": "land"
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
```
|
|
1903
|
+
|
|
1904
|
+
## return_to_battlefield
|
|
1905
|
+
|
|
1906
|
+
Put each referenced card that is in exile or a graveyard onto the battlefield under its owner's control (`under: "you"`: under the controller's), tapped if `tapped: true`. A card that is no longer in the zone it was expected in, or isn't a permanent card, stays where it is. `transformed: true`: it enters with its back face up; a card that isn't double-faced, or whose back face isn't a permanent, stays where it is.
|
|
1907
|
+
|
|
1908
|
+
Rules: CR 400.7, CR 400.4a, CR 110.2, CR 111.8, CR 603.7c, CR 614.1c, CR 122.6, CR 712.11a, CR 712.11b
|
|
1909
|
+
|
|
1910
|
+
| Parameter | Description |
|
|
1911
|
+
| --- | --- |
|
|
1912
|
+
| `to` | selector (usually {"result": n}) |
|
|
1913
|
+
| `tapped` | boolean |
|
|
1914
|
+
| `transformed` | boolean |
|
|
1915
|
+
| `under` | owner | you |
|
|
1916
|
+
| `counters` | {counter name: n}: it enters with these counters ("with a +1/+1 counter on it") |
|
|
1917
|
+
|
|
1918
|
+
```json
|
|
1919
|
+
{
|
|
1920
|
+
"return_to_battlefield": {
|
|
1921
|
+
"to": {
|
|
1922
|
+
"result": 0
|
|
1923
|
+
}
|
|
1924
|
+
}
|
|
1925
|
+
}
|
|
1926
|
+
```
|
|
1927
|
+
|
|
1928
|
+
## return_to_hand
|
|
1929
|
+
|
|
1930
|
+
Return each referenced permanent, spell ("return target spell to its owner's hand"), or card in a graveyard or exile ("target creature card from your graveyard"), to its owner's hand.
|
|
1931
|
+
|
|
1932
|
+
Rules: CR 400.6, CR 404.1, CR 608.2b
|
|
1933
|
+
|
|
1934
|
+
| Parameter | Description |
|
|
1935
|
+
| --- | --- |
|
|
1936
|
+
| `to` | selector |
|
|
1937
|
+
|
|
1938
|
+
```json
|
|
1939
|
+
{
|
|
1940
|
+
"return_to_hand": {
|
|
1941
|
+
"to": {
|
|
1942
|
+
"target": 0
|
|
1943
|
+
}
|
|
1944
|
+
}
|
|
1945
|
+
}
|
|
1946
|
+
```
|
|
1947
|
+
|
|
1948
|
+
## reveal_until
|
|
1949
|
+
|
|
1950
|
+
Reveal cards from the top of your library until `count` (an amount, default 1) cards matching `for` are revealed (or the library runs out). Put those into `put` (`tapped` onto the battlefield, under your control) and the rest to `rest` (default the bottom in a random order).
|
|
1951
|
+
|
|
1952
|
+
Rules: CR 701.20a, CR 401.4, CR 400.7j
|
|
1953
|
+
|
|
1954
|
+
| Parameter | Description |
|
|
1955
|
+
| --- | --- |
|
|
1956
|
+
| `for` | card spec |
|
|
1957
|
+
| `count` | amount |
|
|
1958
|
+
| `put` | hand | battlefield |
|
|
1959
|
+
| `tapped` | boolean |
|
|
1960
|
+
| `rest` | bottom_random | bottom_any | graveyard |
|
|
1961
|
+
|
|
1962
|
+
```json
|
|
1963
|
+
{
|
|
1964
|
+
"reveal_until": {
|
|
1965
|
+
"for": {
|
|
1966
|
+
"types": [
|
|
1967
|
+
"land"
|
|
1968
|
+
]
|
|
1969
|
+
},
|
|
1970
|
+
"count": 2,
|
|
1971
|
+
"put": "battlefield",
|
|
1972
|
+
"tapped": true
|
|
1973
|
+
}
|
|
1974
|
+
}
|
|
1975
|
+
```
|
|
1976
|
+
|
|
1977
|
+
## roll_dice
|
|
1978
|
+
|
|
1979
|
+
You roll `amount` dice (default 1) with `sides` sides (default 6). The total of the results is this effect's amount: {"this_way": n} in later effects and conditions (a results table is effects with an `if` on it).
|
|
1980
|
+
|
|
1981
|
+
Rules: CR 706.1, CR 706.1a, CR 706.2, CR 706.3a, CR 608.2c
|
|
1982
|
+
|
|
1983
|
+
| Parameter | Description |
|
|
1984
|
+
| --- | --- |
|
|
1985
|
+
| `sides` | integer >= 2 (default 6) |
|
|
1986
|
+
| `amount` | amount (default 1) |
|
|
1987
|
+
|
|
1988
|
+
```json
|
|
1989
|
+
{
|
|
1990
|
+
"roll_dice": {
|
|
1991
|
+
"sides": 20
|
|
1992
|
+
}
|
|
1993
|
+
}
|
|
1994
|
+
```
|
|
1995
|
+
|
|
1996
|
+
## sacrifice
|
|
1997
|
+
|
|
1998
|
+
The controller sacrifices each referenced permanent they control (it goes to its owner's graveyard; it isn't destroyed, so indestructible doesn't stop it).
|
|
1999
|
+
|
|
2000
|
+
Rules: CR 701.21a
|
|
2001
|
+
|
|
2002
|
+
| Parameter | Description |
|
|
2003
|
+
| --- | --- |
|
|
2004
|
+
| `to` | selector |
|
|
2005
|
+
|
|
2006
|
+
```json
|
|
2007
|
+
{
|
|
2008
|
+
"sacrifice": {
|
|
2009
|
+
"to": {
|
|
2010
|
+
"result": 0
|
|
2011
|
+
}
|
|
2012
|
+
}
|
|
2013
|
+
}
|
|
2014
|
+
```
|
|
2015
|
+
|
|
2016
|
+
## sacrifice_choice
|
|
2017
|
+
|
|
2018
|
+
Each referenced player (default: you) sacrifices `count` (default 1; "any": any number) permanents they control matching `filter`, chosen by them in turn order starting with the active player; all are sacrificed at once. The `filter`'s `controller` and `other` restrictions are relative to the effect's controller and source.
|
|
2019
|
+
|
|
2020
|
+
Rules: CR 701.21a, CR 101.4, CR 118.3
|
|
2021
|
+
|
|
2022
|
+
| Parameter | Description |
|
|
2023
|
+
| --- | --- |
|
|
2024
|
+
| `filter` | a filter, e.g. {"creature": {"token": false}} |
|
|
2025
|
+
| `count` | integer or "any" |
|
|
2026
|
+
| `to` | selector of players |
|
|
2027
|
+
|
|
2028
|
+
```json
|
|
2029
|
+
{
|
|
2030
|
+
"sacrifice_choice": {
|
|
2031
|
+
"filter": "creature",
|
|
2032
|
+
"to": "each_opponent"
|
|
2033
|
+
}
|
|
2034
|
+
}
|
|
2035
|
+
```
|
|
2036
|
+
|
|
2037
|
+
## scry
|
|
2038
|
+
|
|
2039
|
+
Look at the top `amount` cards of your library; put any number on the bottom and the rest on top in any order.
|
|
2040
|
+
|
|
2041
|
+
Rules: CR 701.22a
|
|
2042
|
+
|
|
2043
|
+
| Parameter | Description |
|
|
2044
|
+
| --- | --- |
|
|
2045
|
+
| `amount` | integer |
|
|
2046
|
+
|
|
2047
|
+
```json
|
|
2048
|
+
{
|
|
2049
|
+
"scry": {
|
|
2050
|
+
"amount": 2
|
|
2051
|
+
}
|
|
2052
|
+
}
|
|
2053
|
+
```
|
|
2054
|
+
|
|
2055
|
+
## search_library
|
|
2056
|
+
|
|
2057
|
+
Search your library for up to `count` cards matching `for`, then put them into your hand (or onto the battlefield, tapped if `tapped`, with `counters`) and shuffle. With a stated quality you may find fewer (or none); a search for just "a card" must find one if it can. `reveal` shows the found cards to every player. `searcher` names another player who searches their own library (e.g. {"controller_of": {"target": 0}}); `may: true` lets the searcher decline (then nothing is shuffled). `different_names: true`: the cards found must all have different names ("basic land cards with different names").
|
|
2058
|
+
|
|
2059
|
+
Rules: CR 701.23a, CR 701.23b, CR 701.23d, CR 701.23e, CR 701.20a, CR 701.24a, CR 701.24b, CR 118.12, CR 110.2a
|
|
2060
|
+
|
|
2061
|
+
| Parameter | Description |
|
|
2062
|
+
| --- | --- |
|
|
2063
|
+
| `for` | card spec: "card" (default), {"types"|"subtypes"|"supertypes": [...], "name": "..."} or {"any_of": [spec, ...]} |
|
|
2064
|
+
| `count` | integer (default 1), "any" (any number), "x" or an amount ("up to that many") |
|
|
2065
|
+
| `put` | "hand" (default) or "battlefield" |
|
|
2066
|
+
| `tapped` | true: the cards enter tapped (with put: battlefield) |
|
|
2067
|
+
| `counters` | {counter name: n}: the cards enter with these counters (with put: battlefield) |
|
|
2068
|
+
| `reveal` | true: reveal the found cards |
|
|
2069
|
+
| `searcher` | selector of the searching player (default "you") |
|
|
2070
|
+
| `may` | true: the searcher may choose not to search |
|
|
2071
|
+
| `different_names` | true: each card found has a different name |
|
|
2072
|
+
|
|
2073
|
+
```json
|
|
2074
|
+
{
|
|
2075
|
+
"search_library": {
|
|
2076
|
+
"for": {
|
|
2077
|
+
"supertypes": [
|
|
2078
|
+
"basic"
|
|
2079
|
+
],
|
|
2080
|
+
"types": [
|
|
2081
|
+
"land"
|
|
2082
|
+
]
|
|
2083
|
+
},
|
|
2084
|
+
"reveal": true
|
|
2085
|
+
}
|
|
2086
|
+
}
|
|
2087
|
+
```
|
|
2088
|
+
|
|
2089
|
+
## set_base_power_toughness
|
|
2090
|
+
|
|
2091
|
+
Each referenced creature's base power and toughness become `power`/`toughness` (layer 7b; counters and pumps still apply), until end of turn or, with `duration: "indefinite"`, for as long as it stays on the battlefield.
|
|
2092
|
+
|
|
2093
|
+
Rules: CR 613.4b, CR 611.2a, CR 611.2b, CR 611.2c
|
|
2094
|
+
|
|
2095
|
+
| Parameter | Description |
|
|
2096
|
+
| --- | --- |
|
|
2097
|
+
| `power` | integer |
|
|
2098
|
+
| `toughness` | integer |
|
|
2099
|
+
| `duration` | end_of_turn | indefinite |
|
|
2100
|
+
| `to` | selector |
|
|
2101
|
+
|
|
2102
|
+
```json
|
|
2103
|
+
{
|
|
2104
|
+
"set_base_power_toughness": {
|
|
2105
|
+
"power": 7,
|
|
2106
|
+
"toughness": 9,
|
|
2107
|
+
"duration": "indefinite",
|
|
2108
|
+
"to": "self"
|
|
2109
|
+
}
|
|
2110
|
+
}
|
|
2111
|
+
```
|
|
2112
|
+
|
|
2113
|
+
## set_creature_types
|
|
2114
|
+
|
|
2115
|
+
Until end of turn, each referenced creature's creature types are exactly `types` (its other subtypes, such as artifact types, stay). The affected set is locked in.
|
|
2116
|
+
|
|
2117
|
+
Rules: CR 205.1a, CR 613.1d, CR 611.2c, CR 514.2
|
|
2118
|
+
|
|
2119
|
+
| Parameter | Description |
|
|
2120
|
+
| --- | --- |
|
|
2121
|
+
| `types` | list of creature types |
|
|
2122
|
+
| `to` | selector |
|
|
2123
|
+
|
|
2124
|
+
```json
|
|
2125
|
+
{
|
|
2126
|
+
"set_creature_types": {
|
|
2127
|
+
"types": [
|
|
2128
|
+
"doctor"
|
|
2129
|
+
],
|
|
2130
|
+
"to": {
|
|
2131
|
+
"target": 0
|
|
2132
|
+
}
|
|
2133
|
+
}
|
|
2134
|
+
}
|
|
2135
|
+
```
|
|
2136
|
+
|
|
2137
|
+
## set_life
|
|
2138
|
+
|
|
2139
|
+
Each referenced player's life total becomes `amount` (default: you): they gain or lose the difference (so "can't gain life" and life-gain triggers apply).
|
|
2140
|
+
|
|
2141
|
+
Rules: CR 119.5, CR 119.7
|
|
2142
|
+
|
|
2143
|
+
| Parameter | Description |
|
|
2144
|
+
| --- | --- |
|
|
2145
|
+
| `amount` | amount |
|
|
2146
|
+
| `to` | selector |
|
|
2147
|
+
|
|
2148
|
+
```json
|
|
2149
|
+
{
|
|
2150
|
+
"set_life": {
|
|
2151
|
+
"amount": 10
|
|
2152
|
+
}
|
|
2153
|
+
}
|
|
2154
|
+
```
|
|
2155
|
+
|
|
2156
|
+
## shuffle_into_library
|
|
2157
|
+
|
|
2158
|
+
Put each referenced card (in a graveyard or exile) or permanent into its owner's library; each of those owners shuffles their library.
|
|
2159
|
+
|
|
2160
|
+
Rules: CR 701.24a, CR 701.24c
|
|
2161
|
+
|
|
2162
|
+
| Parameter | Description |
|
|
2163
|
+
| --- | --- |
|
|
2164
|
+
| `to` | selector |
|
|
2165
|
+
|
|
2166
|
+
```json
|
|
2167
|
+
{
|
|
2168
|
+
"shuffle_into_library": {
|
|
2169
|
+
"to": {
|
|
2170
|
+
"target": 0
|
|
2171
|
+
}
|
|
2172
|
+
}
|
|
2173
|
+
}
|
|
2174
|
+
```
|
|
2175
|
+
|
|
2176
|
+
## shuffle_library
|
|
2177
|
+
|
|
2178
|
+
Each referenced player shuffles their library (default: you).
|
|
2179
|
+
|
|
2180
|
+
Rules: CR 701.24a
|
|
2181
|
+
|
|
2182
|
+
| Parameter | Description |
|
|
2183
|
+
| --- | --- |
|
|
2184
|
+
| `to` | selector |
|
|
2185
|
+
|
|
2186
|
+
```json
|
|
2187
|
+
{
|
|
2188
|
+
"shuffle_library": {}
|
|
2189
|
+
}
|
|
2190
|
+
```
|
|
2191
|
+
|
|
2192
|
+
## skip_turns
|
|
2193
|
+
|
|
2194
|
+
Each referenced player skips their next `amount` turns (extra turns included): each of those turns doesn't happen, and the next player in turn order takes theirs. Several skips add up.
|
|
2195
|
+
|
|
2196
|
+
Rules: CR 614.1b, CR 614.10, CR 614.10a
|
|
2197
|
+
|
|
2198
|
+
| Parameter | Description |
|
|
2199
|
+
| --- | --- |
|
|
2200
|
+
| `amount` | amount |
|
|
2201
|
+
| `to` | selector |
|
|
2202
|
+
|
|
2203
|
+
```json
|
|
2204
|
+
{
|
|
2205
|
+
"skip_turns": {
|
|
2206
|
+
"amount": 1,
|
|
2207
|
+
"to": {
|
|
2208
|
+
"target": 0
|
|
2209
|
+
}
|
|
2210
|
+
}
|
|
2211
|
+
}
|
|
2212
|
+
```
|
|
2213
|
+
|
|
2214
|
+
## surveil
|
|
2215
|
+
|
|
2216
|
+
Look at the top `amount` cards of your library; put any number into your graveyard and the rest on top in any order.
|
|
2217
|
+
|
|
2218
|
+
Rules: CR 701.25a
|
|
2219
|
+
|
|
2220
|
+
| Parameter | Description |
|
|
2221
|
+
| --- | --- |
|
|
2222
|
+
| `amount` | integer |
|
|
2223
|
+
|
|
2224
|
+
```json
|
|
2225
|
+
{
|
|
2226
|
+
"surveil": {
|
|
2227
|
+
"amount": 2
|
|
2228
|
+
}
|
|
2229
|
+
}
|
|
2230
|
+
```
|
|
2231
|
+
|
|
2232
|
+
## suspend
|
|
2233
|
+
|
|
2234
|
+
Exile each referenced card or spell with `amount` time counters on it; if it doesn't have suspend, it gains suspend (keyword `suspend`) while it stays exiled.
|
|
2235
|
+
|
|
2236
|
+
Rules: CR 702.62a, CR 702.62b, CR 406.1
|
|
2237
|
+
|
|
2238
|
+
| Parameter | Description |
|
|
2239
|
+
| --- | --- |
|
|
2240
|
+
| `amount` | amount (time counters) |
|
|
2241
|
+
| `to` | selector (a spell, a card or a permanent) |
|
|
2242
|
+
|
|
2243
|
+
```json
|
|
2244
|
+
{
|
|
2245
|
+
"suspend": {
|
|
2246
|
+
"to": {
|
|
2247
|
+
"triggering": "object"
|
|
2248
|
+
},
|
|
2249
|
+
"amount": 4
|
|
2250
|
+
}
|
|
2251
|
+
}
|
|
2252
|
+
```
|
|
2253
|
+
|
|
2254
|
+
## tap
|
|
2255
|
+
|
|
2256
|
+
Tap each referenced permanent.
|
|
2257
|
+
|
|
2258
|
+
Rules: CR 701.26a
|
|
2259
|
+
|
|
2260
|
+
| Parameter | Description |
|
|
2261
|
+
| --- | --- |
|
|
2262
|
+
| `to` | selector |
|
|
2263
|
+
|
|
2264
|
+
```json
|
|
2265
|
+
{
|
|
2266
|
+
"tap": {
|
|
2267
|
+
"to": {
|
|
2268
|
+
"target": 0
|
|
2269
|
+
}
|
|
2270
|
+
}
|
|
2271
|
+
}
|
|
2272
|
+
```
|
|
2273
|
+
|
|
2274
|
+
## transform
|
|
2275
|
+
|
|
2276
|
+
Transform each referenced permanent (default: this one): turn it over so its other face is up. It stays the same object, and effects on it keep applying. Nothing happens to a permanent that isn't a double-faced card or token, or whose other face is an instant or sorcery. An ability of the permanent transforms it only if it hasn't transformed since the ability was put on the stack.
|
|
2277
|
+
|
|
2278
|
+
Rules: CR 701.27a, CR 701.27c, CR 701.27d, CR 701.27e, CR 701.27g, CR 712.15
|
|
2279
|
+
|
|
2280
|
+
| Parameter | Description |
|
|
2281
|
+
| --- | --- |
|
|
2282
|
+
| `to` | selector (default "self") |
|
|
2283
|
+
|
|
2284
|
+
```json
|
|
2285
|
+
{
|
|
2286
|
+
"transform": {
|
|
2287
|
+
"to": "self"
|
|
2288
|
+
}
|
|
2289
|
+
}
|
|
2290
|
+
```
|
|
2291
|
+
|
|
2292
|
+
## unprepare
|
|
2293
|
+
|
|
2294
|
+
Each referenced permanent (default: this one) loses the prepared designation; the copy of its prepare spell in exile ceases to exist.
|
|
2295
|
+
|
|
2296
|
+
Rules: CR 723.3b, CR 723.3c
|
|
2297
|
+
|
|
2298
|
+
| Parameter | Description |
|
|
2299
|
+
| --- | --- |
|
|
2300
|
+
| `to` | selector (default "self") |
|
|
2301
|
+
|
|
2302
|
+
```json
|
|
2303
|
+
{
|
|
2304
|
+
"unprepare": {
|
|
2305
|
+
"to": "self"
|
|
2306
|
+
}
|
|
2307
|
+
}
|
|
2308
|
+
```
|
|
2309
|
+
|
|
2310
|
+
## untap
|
|
2311
|
+
|
|
2312
|
+
Untap each referenced permanent.
|
|
2313
|
+
|
|
2314
|
+
Rules: CR 701.26b
|
|
2315
|
+
|
|
2316
|
+
| Parameter | Description |
|
|
2317
|
+
| --- | --- |
|
|
2318
|
+
| `to` | selector |
|
|
2319
|
+
|
|
2320
|
+
```json
|
|
2321
|
+
{
|
|
2322
|
+
"untap": {
|
|
2323
|
+
"to": "self"
|
|
2324
|
+
}
|
|
2325
|
+
}
|
|
2326
|
+
```
|
|
2327
|
+
|
|
2328
|
+
## win_game
|
|
2329
|
+
|
|
2330
|
+
Each referenced player (default you) wins the game: every opponent loses it.
|
|
2331
|
+
|
|
2332
|
+
Rules: CR 104.2a, CR 104.2b, CR 104.3f
|
|
2333
|
+
|
|
2334
|
+
| Parameter | Description |
|
|
2335
|
+
| --- | --- |
|
|
2336
|
+
| `to` | selector |
|
|
2337
|
+
|
|
2338
|
+
```json
|
|
2339
|
+
"win_game"
|
|
2340
|
+
```
|