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.
Files changed (269) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +28 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +201 -0
  5. data/SUPPORTED.md +387 -0
  6. data/docs/ARCHITECTURE.md +141 -0
  7. data/docs/DESIGN.md +139 -0
  8. data/docs/MECHANICS_COVERAGE.md +670 -0
  9. data/docs/guides/adding-a-mechanic.md +60 -0
  10. data/docs/guides/api.md +614 -0
  11. data/docs/guides/card-data-format.md +1472 -0
  12. data/docs/guides/deck-builder.md +157 -0
  13. data/docs/plans/standard.md +371 -0
  14. data/docs/reference/abilities.md +1680 -0
  15. data/docs/reference/costs.md +339 -0
  16. data/docs/reference/counters.md +121 -0
  17. data/docs/reference/decisions.md +102 -0
  18. data/docs/reference/effects.md +2340 -0
  19. data/docs/reference/filters.md +172 -0
  20. data/docs/reference/keywords.md +647 -0
  21. data/docs/reference/subtypes.md +169 -0
  22. data/docs/reference/supertypes.md +31 -0
  23. data/docs/reference/triggers.md +797 -0
  24. data/docs/reference/types.md +216 -0
  25. data/exe/enjine +7 -0
  26. data/lib/enjine/actions/activate_mana_ability.rb +24 -0
  27. data/lib/enjine/actions/cast.rb +57 -0
  28. data/lib/enjine/actions/pass.rb +18 -0
  29. data/lib/enjine/actions/play_land.rb +52 -0
  30. data/lib/enjine/actions/special_action.rb +37 -0
  31. data/lib/enjine/actions.rb +20 -0
  32. data/lib/enjine/agents/busy.rb +27 -0
  33. data/lib/enjine/agents/random.rb +28 -0
  34. data/lib/enjine/card_definition.rb +433 -0
  35. data/lib/enjine/card_faces.rb +116 -0
  36. data/lib/enjine/catalog.rb +56 -0
  37. data/lib/enjine/characteristics.rb +39 -0
  38. data/lib/enjine/cli/text.rb +295 -0
  39. data/lib/enjine/cli.rb +312 -0
  40. data/lib/enjine/decisions/bottom.rb +29 -0
  41. data/lib/enjine/decisions/casting.rb +188 -0
  42. data/lib/enjine/decisions/combat.rb +75 -0
  43. data/lib/enjine/decisions/discard.rb +29 -0
  44. data/lib/enjine/decisions/effect_choice.rb +21 -0
  45. data/lib/enjine/decisions/enter_choice.rb +26 -0
  46. data/lib/enjine/decisions/legend_rule.rb +21 -0
  47. data/lib/enjine/decisions/mulligan.rb +26 -0
  48. data/lib/enjine/decisions/order_triggers.rb +21 -0
  49. data/lib/enjine/decisions/play_or_draw.rb +19 -0
  50. data/lib/enjine/decisions/priority.rb +22 -0
  51. data/lib/enjine/decisions/untap_choice.rb +35 -0
  52. data/lib/enjine/decisions.rb +22 -0
  53. data/lib/enjine/deck.rb +151 -0
  54. data/lib/enjine/deck_builder.rb +454 -0
  55. data/lib/enjine/docs.rb +90 -0
  56. data/lib/enjine/engine/ability_layers.rb +118 -0
  57. data/lib/enjine/engine/attachments.rb +86 -0
  58. data/lib/enjine/engine/casting/alt_casting.rb +254 -0
  59. data/lib/enjine/engine/casting/cast_choices.rb +292 -0
  60. data/lib/enjine/engine/casting/casting.rb +326 -0
  61. data/lib/enjine/engine/casting/cost_options.rb +99 -0
  62. data/lib/enjine/engine/casting/costs.rb +117 -0
  63. data/lib/enjine/engine/casting/payment.rb +353 -0
  64. data/lib/enjine/engine/casting/permissions.rb +412 -0
  65. data/lib/enjine/engine/casting/target_counts.rb +113 -0
  66. data/lib/enjine/engine/casting/waterbend.rb +90 -0
  67. data/lib/enjine/engine/characteristics.rb +379 -0
  68. data/lib/enjine/engine/class_levels.rb +25 -0
  69. data/lib/enjine/engine/combat.rb +315 -0
  70. data/lib/enjine/engine/copies.rb +208 -0
  71. data/lib/enjine/engine/damage.rb +196 -0
  72. data/lib/enjine/engine/designations.rb +46 -0
  73. data/lib/enjine/engine/emblems.rb +37 -0
  74. data/lib/enjine/engine/entering.rb +156 -0
  75. data/lib/enjine/engine/face_down.rb +30 -0
  76. data/lib/enjine/engine/faces.rb +222 -0
  77. data/lib/enjine/engine/follow_ups.rb +27 -0
  78. data/lib/enjine/engine/mana_sources.rb +230 -0
  79. data/lib/enjine/engine/phasing.rb +74 -0
  80. data/lib/enjine/engine/pregame.rb +95 -0
  81. data/lib/enjine/engine/priority.rb +47 -0
  82. data/lib/enjine/engine/resolution.rb +168 -0
  83. data/lib/enjine/engine/rules.rb +287 -0
  84. data/lib/enjine/engine/sagas.rb +41 -0
  85. data/lib/enjine/engine/speed.rb +104 -0
  86. data/lib/enjine/engine/spell_grants.rb +46 -0
  87. data/lib/enjine/engine/state_based_actions.rb +157 -0
  88. data/lib/enjine/engine/triggers.rb +364 -0
  89. data/lib/enjine/engine/turn_history.rb +240 -0
  90. data/lib/enjine/engine/turn_structure.rb +224 -0
  91. data/lib/enjine/engine/zones.rb +278 -0
  92. data/lib/enjine/engine.rb +55 -0
  93. data/lib/enjine/errors.rb +62 -0
  94. data/lib/enjine/events.rb +161 -0
  95. data/lib/enjine/frames.rb +84 -0
  96. data/lib/enjine/fuzz.rb +112 -0
  97. data/lib/enjine/game.rb +204 -0
  98. data/lib/enjine/history.rb +26 -0
  99. data/lib/enjine/mana.rb +142 -0
  100. data/lib/enjine/mechanics/abilities/additional_triggers.rb +86 -0
  101. data/lib/enjine/mechanics/abilities/chosen_values.rb +213 -0
  102. data/lib/enjine/mechanics/abilities/cost_changes.rb +154 -0
  103. data/lib/enjine/mechanics/abilities/damage_replacements.rb +569 -0
  104. data/lib/enjine/mechanics/abilities/double_counters.rb +71 -0
  105. data/lib/enjine/mechanics/abilities/entering_choices.rb +91 -0
  106. data/lib/enjine/mechanics/abilities/entering_copy.rb +69 -0
  107. data/lib/enjine/mechanics/abilities/enters_tapped.rb +159 -0
  108. data/lib/enjine/mechanics/abilities/enters_with_counters.rb +116 -0
  109. data/lib/enjine/mechanics/abilities/mana_ability.rb +209 -0
  110. data/lib/enjine/mechanics/abilities/play_permissions.rb +527 -0
  111. data/lib/enjine/mechanics/abilities/player_rules.rb +169 -0
  112. data/lib/enjine/mechanics/abilities/replacement_effects.rb +368 -0
  113. data/lib/enjine/mechanics/abilities/restrictions.rb +144 -0
  114. data/lib/enjine/mechanics/abilities/spell_keywords.rb +55 -0
  115. data/lib/enjine/mechanics/abilities/stack_abilities.rb +542 -0
  116. data/lib/enjine/mechanics/abilities/static.rb +365 -0
  117. data/lib/enjine/mechanics/abilities/tapping_power.rb +71 -0
  118. data/lib/enjine/mechanics/abilities/turn_rules.rb +49 -0
  119. data/lib/enjine/mechanics/card_spec.rb +177 -0
  120. data/lib/enjine/mechanics/copy_except.rb +73 -0
  121. data/lib/enjine/mechanics/costs/base.rb +115 -0
  122. data/lib/enjine/mechanics/costs/behold.rb +76 -0
  123. data/lib/enjine/mechanics/costs/discard.rb +65 -0
  124. data/lib/enjine/mechanics/costs/exert.rb +29 -0
  125. data/lib/enjine/mechanics/costs/exile_cards.rb +39 -0
  126. data/lib/enjine/mechanics/costs/from_graveyard.rb +45 -0
  127. data/lib/enjine/mechanics/costs/get_counters.rb +39 -0
  128. data/lib/enjine/mechanics/costs/mana.rb +37 -0
  129. data/lib/enjine/mechanics/costs/one_of.rb +49 -0
  130. data/lib/enjine/mechanics/costs/pay_life.rb +50 -0
  131. data/lib/enjine/mechanics/costs/remove_counters.rb +51 -0
  132. data/lib/enjine/mechanics/costs/sacrifice.rb +59 -0
  133. data/lib/enjine/mechanics/costs/tap.rb +56 -0
  134. data/lib/enjine/mechanics/costs/waterbend.rb +29 -0
  135. data/lib/enjine/mechanics/counters/kinds.rb +190 -0
  136. data/lib/enjine/mechanics/effects/add_subtypes.rb +30 -0
  137. data/lib/enjine/mechanics/effects/airbend.rb +41 -0
  138. data/lib/enjine/mechanics/effects/amass.rb +124 -0
  139. data/lib/enjine/mechanics/effects/assimilate.rb +72 -0
  140. data/lib/enjine/mechanics/effects/base.rb +148 -0
  141. data/lib/enjine/mechanics/effects/become.rb +182 -0
  142. data/lib/enjine/mechanics/effects/behold.rb +48 -0
  143. data/lib/enjine/mechanics/effects/blight.rb +94 -0
  144. data/lib/enjine/mechanics/effects/choose_cards.rb +168 -0
  145. data/lib/enjine/mechanics/effects/copy.rb +370 -0
  146. data/lib/enjine/mechanics/effects/counter_spell.rb +21 -0
  147. data/lib/enjine/mechanics/effects/counters.rb +161 -0
  148. data/lib/enjine/mechanics/effects/damage.rb +72 -0
  149. data/lib/enjine/mechanics/effects/delayed_triggers.rb +112 -0
  150. data/lib/enjine/mechanics/effects/destroy.rb +22 -0
  151. data/lib/enjine/mechanics/effects/discard.rb +86 -0
  152. data/lib/enjine/mechanics/effects/draw.rb +16 -0
  153. data/lib/enjine/mechanics/effects/earthbend.rb +70 -0
  154. data/lib/enjine/mechanics/effects/emblem.rb +52 -0
  155. data/lib/enjine/mechanics/effects/endure.rb +63 -0
  156. data/lib/enjine/mechanics/effects/exile.rb +49 -0
  157. data/lib/enjine/mechanics/effects/extra_turn.rb +122 -0
  158. data/lib/enjine/mechanics/effects/faces.rb +115 -0
  159. data/lib/enjine/mechanics/effects/fight.rb +76 -0
  160. data/lib/enjine/mechanics/effects/flip_coins.rb +97 -0
  161. data/lib/enjine/mechanics/effects/gain_control.rb +94 -0
  162. data/lib/enjine/mechanics/effects/game_end.rb +42 -0
  163. data/lib/enjine/mechanics/effects/library.rb +327 -0
  164. data/lib/enjine/mechanics/effects/life.rb +83 -0
  165. data/lib/enjine/mechanics/effects/look_at_hand.rb +17 -0
  166. data/lib/enjine/mechanics/effects/loot.rb +118 -0
  167. data/lib/enjine/mechanics/effects/mana.rb +96 -0
  168. data/lib/enjine/mechanics/effects/may.rb +82 -0
  169. data/lib/enjine/mechanics/effects/meld.rb +77 -0
  170. data/lib/enjine/mechanics/effects/mill.rb +22 -0
  171. data/lib/enjine/mechanics/effects/pay.rb +231 -0
  172. data/lib/enjine/mechanics/effects/phasing.rb +51 -0
  173. data/lib/enjine/mechanics/effects/proliferate.rb +72 -0
  174. data/lib/enjine/mechanics/effects/pump.rb +60 -0
  175. data/lib/enjine/mechanics/effects/put_in_library.rb +98 -0
  176. data/lib/enjine/mechanics/effects/return_choice.rb +29 -0
  177. data/lib/enjine/mechanics/effects/return_to_battlefield.rb +80 -0
  178. data/lib/enjine/mechanics/effects/return_to_hand.rb +20 -0
  179. data/lib/enjine/mechanics/effects/roll_dice.rb +45 -0
  180. data/lib/enjine/mechanics/effects/sacrifice.rb +118 -0
  181. data/lib/enjine/mechanics/effects/scry_and_surveil.rb +74 -0
  182. data/lib/enjine/mechanics/effects/search.rb +156 -0
  183. data/lib/enjine/mechanics/effects/tap_untap.rb +23 -0
  184. data/lib/enjine/mechanics/effects/tokens.rb +76 -0
  185. data/lib/enjine/mechanics/filters/any_target.rb +15 -0
  186. data/lib/enjine/mechanics/filters/base.rb +386 -0
  187. data/lib/enjine/mechanics/filters/graveyard.rb +23 -0
  188. data/lib/enjine/mechanics/filters/one_of.rb +55 -0
  189. data/lib/enjine/mechanics/filters/permanents.rb +52 -0
  190. data/lib/enjine/mechanics/filters/players.rb +20 -0
  191. data/lib/enjine/mechanics/filters/stack.rb +97 -0
  192. data/lib/enjine/mechanics/follow_up.rb +46 -0
  193. data/lib/enjine/mechanics/keywords/alternative_costs.rb +361 -0
  194. data/lib/enjine/mechanics/keywords/beam_me_up.rb +78 -0
  195. data/lib/enjine/mechanics/keywords/changeling.rb +58 -0
  196. data/lib/enjine/mechanics/keywords/convoke.rb +77 -0
  197. data/lib/enjine/mechanics/keywords/crew.rb +155 -0
  198. data/lib/enjine/mechanics/keywords/cycling.rb +58 -0
  199. data/lib/enjine/mechanics/keywords/decayed.rb +25 -0
  200. data/lib/enjine/mechanics/keywords/devour.rb +61 -0
  201. data/lib/enjine/mechanics/keywords/evergreen.rb +54 -0
  202. data/lib/enjine/mechanics/keywords/extort.rb +26 -0
  203. data/lib/enjine/mechanics/keywords/flags.rb +46 -0
  204. data/lib/enjine/mechanics/keywords/foretell.rb +45 -0
  205. data/lib/enjine/mechanics/keywords/gift.rb +50 -0
  206. data/lib/enjine/mechanics/keywords/hideaway.rb +28 -0
  207. data/lib/enjine/mechanics/keywords/increment.rb +31 -0
  208. data/lib/enjine/mechanics/keywords/job_select.rb +29 -0
  209. data/lib/enjine/mechanics/keywords/kicker.rb +92 -0
  210. data/lib/enjine/mechanics/keywords/mobilize_and_firebending.rb +84 -0
  211. data/lib/enjine/mechanics/keywords/paradigm.rb +91 -0
  212. data/lib/enjine/mechanics/keywords/power_up.rb +48 -0
  213. data/lib/enjine/mechanics/keywords/protection.rb +111 -0
  214. data/lib/enjine/mechanics/keywords/prowess.rb +30 -0
  215. data/lib/enjine/mechanics/keywords/riot.rb +35 -0
  216. data/lib/enjine/mechanics/keywords/saddle.rb +115 -0
  217. data/lib/enjine/mechanics/keywords/speed.rb +89 -0
  218. data/lib/enjine/mechanics/keywords/station.rb +163 -0
  219. data/lib/enjine/mechanics/keywords/storied.rb +41 -0
  220. data/lib/enjine/mechanics/keywords/storm_and_cascade.rb +86 -0
  221. data/lib/enjine/mechanics/keywords/sunburst.rb +29 -0
  222. data/lib/enjine/mechanics/keywords/suspend.rb +191 -0
  223. data/lib/enjine/mechanics/keywords/teamwork.rb +45 -0
  224. data/lib/enjine/mechanics/keywords/ward.rb +67 -0
  225. data/lib/enjine/mechanics/linked.rb +67 -0
  226. data/lib/enjine/mechanics/mana_spent.rb +99 -0
  227. data/lib/enjine/mechanics/selector.rb +207 -0
  228. data/lib/enjine/mechanics/subtypes/auras_and_equipment.rb +176 -0
  229. data/lib/enjine/mechanics/subtypes/basic_land_types.rb +36 -0
  230. data/lib/enjine/mechanics/subtypes/class_levels.rb +102 -0
  231. data/lib/enjine/mechanics/subtypes/saga.rb +89 -0
  232. data/lib/enjine/mechanics/supertypes/basic.rb +17 -0
  233. data/lib/enjine/mechanics/supertypes/legendary.rb +18 -0
  234. data/lib/enjine/mechanics/triggers/ability_triggers.rb +51 -0
  235. data/lib/enjine/mechanics/triggers/any_of.rb +43 -0
  236. data/lib/enjine/mechanics/triggers/base.rb +228 -0
  237. data/lib/enjine/mechanics/triggers/casting.rb +219 -0
  238. data/lib/enjine/mechanics/triggers/combat.rb +123 -0
  239. data/lib/enjine/mechanics/triggers/damage.rb +130 -0
  240. data/lib/enjine/mechanics/triggers/dilemma.rb +37 -0
  241. data/lib/enjine/mechanics/triggers/draw_and_discard.rb +85 -0
  242. data/lib/enjine/mechanics/triggers/keyword_actions.rb +55 -0
  243. data/lib/enjine/mechanics/triggers/life.rb +35 -0
  244. data/lib/enjine/mechanics/triggers/steps.rb +39 -0
  245. data/lib/enjine/mechanics/triggers/tap_and_counters.rb +111 -0
  246. data/lib/enjine/mechanics/triggers/zone_changes.rb +249 -0
  247. data/lib/enjine/mechanics/types/kindred.rb +30 -0
  248. data/lib/enjine/mechanics/types/land.rb +24 -0
  249. data/lib/enjine/mechanics/types/permanent_types.rb +67 -0
  250. data/lib/enjine/mechanics/types/spell_types.rb +38 -0
  251. data/lib/enjine/mechanics/values.rb +675 -0
  252. data/lib/enjine/mechanics.rb +74 -0
  253. data/lib/enjine/player.rb +30 -0
  254. data/lib/enjine/primitive.rb +61 -0
  255. data/lib/enjine/replacements.rb +191 -0
  256. data/lib/enjine/rng.rb +57 -0
  257. data/lib/enjine/rules_monitor.rb +404 -0
  258. data/lib/enjine/setup.rb +45 -0
  259. data/lib/enjine/snapshot/player_checks.rb +86 -0
  260. data/lib/enjine/snapshot/turn_checks.rb +91 -0
  261. data/lib/enjine/snapshot.rb +307 -0
  262. data/lib/enjine/state.rb +173 -0
  263. data/lib/enjine/steps.rb +117 -0
  264. data/lib/enjine/tokens.rb +25 -0
  265. data/lib/enjine/verify.rb +233 -0
  266. data/lib/enjine/version.rb +7 -0
  267. data/lib/enjine/view.rb +162 -0
  268. data/lib/enjine.rb +46 -0
  269. 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
+ ```