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,670 @@
|
|
|
1
|
+
# Mechanics coverage checklist
|
|
2
|
+
|
|
3
|
+
Rules version: Comprehensive Rules effective 2026-11-06.
|
|
4
|
+
|
|
5
|
+
A source-backed checklist of the game mechanics in the Comprehensive Rules,
|
|
6
|
+
organised by its section structure. Enjine targets **two-player Standard**: it
|
|
7
|
+
implements the core rules and every mechanic used by Standard-legal cards. The
|
|
8
|
+
rest of this list is reference, not a commitment; a mechanic found only outside
|
|
9
|
+
Standard is built when a Standard card needs it. Each line gives the rule number, a one-line
|
|
10
|
+
description and a suggested milestone. This is a planning document; it is not
|
|
11
|
+
generated, and it does not claim anything is implemented (see `SUPPORTED.md`
|
|
12
|
+
for that).
|
|
13
|
+
|
|
14
|
+
## Scope and coverage summary
|
|
15
|
+
|
|
16
|
+
Enjine targets **two-player Standard**. Coverage against the 2026-11-06
|
|
17
|
+
Comprehensive Rules (measured by the rule numbers the code implements and cites,
|
|
18
|
+
2026-11-11):
|
|
19
|
+
|
|
20
|
+
| Part of the rules | Coverage |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| Core game rules (CR 1–6: turns, priority, the stack, casting, combat, state-based actions, layers, replacement and prevention, copies) | essentially complete for two players |
|
|
23
|
+
| Mechanics on Standard-legal cards (14 sets, Foundations to Star Trek) | the goal; nearly all can be written today, with the remaining gaps listed per set in [plans/standard.md](plans/standard.md#mechanics-gaps) |
|
|
24
|
+
| Keyword actions (CR 701), all of Magic's history | about half (36 of 71), including every one used in Standard |
|
|
25
|
+
| Keyword abilities (CR 702), all of Magic's history | about a third (62 of 195), including every one used in Standard |
|
|
26
|
+
| Special card rules (CR 703–734) | those Standard uses: double-faced, meld, Sagas, Adventures, Classes, Omens, station, prepare, coin flips and dice, ending the turn |
|
|
27
|
+
|
|
28
|
+
**Not supported:**
|
|
29
|
+
- Mechanics found only on cards outside Standard, for example morph and other
|
|
30
|
+
face-down cards (CR 708), madness, delve, persist, undying, infect, toxic,
|
|
31
|
+
ninjutsu, cumulative upkeep, echo, bestow, mutate, split and flip cards,
|
|
32
|
+
levelers, Prototype, Cases, day/night, the monarch and the initiative.
|
|
33
|
+
- Battles and dungeons; multiplayer and casual variants (Commander, Planechase,
|
|
34
|
+
Archenemy, Conspiracy); ante; matches and sideboarding.
|
|
35
|
+
|
|
36
|
+
A card that uses an unsupported mechanic can't be written: validation rejects it
|
|
37
|
+
with an error naming the unknown key. Some older keywords can still be written
|
|
38
|
+
from existing primitives (investigate is "create a Clue token"). When a set enters
|
|
39
|
+
Standard its new mechanics are added; when a set rotates out, its mechanics stay.
|
|
40
|
+
|
|
41
|
+
## Priority: Standard first
|
|
42
|
+
|
|
43
|
+
The project builds mechanics in this order:
|
|
44
|
+
|
|
45
|
+
1. **Evergreen mechanics.** These are on cards in every Standard set: the ★ keywords
|
|
46
|
+
(flying, first strike, deathtouch, trample, lifelink, vigilance, reach, menace,
|
|
47
|
+
ward, hexproof, indestructible, defender, double strike), triggered abilities,
|
|
48
|
+
static abilities and layers, replacement effects, tokens, auras and equipment,
|
|
49
|
+
sacrifice, scry/surveil, mill, and X costs.
|
|
50
|
+
2. **Mechanics on cards currently legal in Standard.** Check a set's mechanics
|
|
51
|
+
against the current Standard rotation before scheduling it.
|
|
52
|
+
3. **Mechanics that exist only on cards no longer in Standard.** These are
|
|
53
|
+
low priority. They stay in this checklist for completeness, but they aren't
|
|
54
|
+
scheduled.
|
|
55
|
+
|
|
56
|
+
The ★ marks below are about how common a mechanic is. Within each milestone,
|
|
57
|
+
build ★ items that appear in current Standard first.
|
|
58
|
+
|
|
59
|
+
## Sources
|
|
60
|
+
|
|
61
|
+
All rule numbers below follow the **plain-text** CR effective 2026-11-06
|
|
62
|
+
(`https://media.wizards.com/2026/downloads/MagicCompRules%2020261106.txt`),
|
|
63
|
+
the version `Enjine::RULES_VERSION` names. The checklist was first written
|
|
64
|
+
against the 2026-09-25 CR
|
|
65
|
+
(`https://media.wizards.com/2026/downloads/MagicCompRules%2020260925.txt`) and
|
|
66
|
+
re-pinned on 2026-11-09; `bundle exec rake cr_citations` checks that every rule
|
|
67
|
+
number cited in the code and docs exists in the pinned CR.
|
|
68
|
+
|
|
69
|
+
### Renumbering: 2026-09-25 → 2026-11-06
|
|
70
|
+
|
|
71
|
+
The 2026-11-06 CR adds a section and renumbers the rest of section 7. Older
|
|
72
|
+
notes that use 2026-09-25 numbers translate like this (rows marked
|
|
73
|
+
`cr-citations: ignore` cite 2026-09-25 numbers on purpose):
|
|
74
|
+
|
|
75
|
+
| 2026-09-25 | 2026-11-06 |
|
|
76
|
+
| --- | --- |
|
|
77
|
+
| (none) | 713 Meld Cards (new section; meld rules moved out of 712) |
|
|
78
|
+
| 713 Substitute Cards … 722 Preparation Cards | 714 … 723 (each +1) |
|
|
79
|
+
| 723 Controlling Another Player … 733 Handling Illegal Actions | 724 … 734 (each +1) |
|
|
80
|
+
| 701.27c–g (transform) | 701.27d–h <!-- cr-citations: ignore --> |
|
|
81
|
+
| 701.28c–f (convert) | 701.28d–g <!-- cr-citations: ignore --> |
|
|
82
|
+
| 614.13b–c | merged into 614.13a; 614.13c is now 614.13b <!-- cr-citations: ignore --> |
|
|
83
|
+
| (none) | 700.17 Dilemmas |
|
|
84
|
+
| (none) | 701.72 Assimilate (new keyword action) |
|
|
85
|
+
| (none) | 702.196 Beam me up (new keyword ability) |
|
|
86
|
+
|
|
87
|
+
## Milestone tags
|
|
88
|
+
|
|
89
|
+
| Tag | Scope |
|
|
90
|
+
| --- | --- |
|
|
91
|
+
| **M1** | Skeleton: game setup, turns/steps, priority, lands, mana, SBAs, basic combat |
|
|
92
|
+
| **M2** | Stack: casting (601.2), targeting, activated and triggered abilities, resolution |
|
|
93
|
+
| **M3** | Continuous effects: layers, replacement and prevention, counters, Auras and Equipment, copy |
|
|
94
|
+
| **M4** | Keywords and planeswalkers |
|
|
95
|
+
| **M5** | Long tail: rare or old mechanics, unusual card frames |
|
|
96
|
+
| **OOS** | Out of scope for a two-player engine: multiplayer-only, casual variants, Un-/Attraction-only |
|
|
97
|
+
|
|
98
|
+
★ = **priority**, meaning one of the roughly 40 most common evergreen or
|
|
99
|
+
deciduous mechanics. Build these first within their milestone. The ★ marks
|
|
100
|
+
appear on the 701/702 keyword rows; the priority mechanics that have no keyword
|
|
101
|
+
number are listed under "Other priority mechanics" after the keyword tables.
|
|
102
|
+
The section 1–7 rules tables carry no ★, because everything tagged M1 or M2
|
|
103
|
+
there is on the critical path regardless.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Engine-architecture implications
|
|
108
|
+
|
|
109
|
+
These rules cut across every mechanic. All numbers follow the 2026-11-06 text.
|
|
110
|
+
|
|
111
|
+
1. **400.7: a zone change creates a new object** "with no memory of, or relation to, its previous existence" (the exceptions are listed in 400.7a–). Object identity has to be per-zone-instance, not per-card. Last-known information (LKI) is needed for 603.10 look-back triggers and for 704.8.
|
|
112
|
+
2. **110.5: permanent status** (tapped/untapped, flipped/unflipped, face up/face down, phased in/out). Status is not a characteristic (110.5a) and only permanents have it (110.5d).
|
|
113
|
+
3. **117.3–117.5: the priority loop.** Before any player would receive priority, the engine performs SBAs repeatedly as single simultaneous events, then puts triggered abilities on the stack, then repeats until stable (117.5). The active player gets priority after a resolution (117.3b). If all players pass in succession, the top of the stack resolves, or the step ends if the stack is empty (117.4). Mana in the pool is announced on a pass (117.3d).
|
|
114
|
+
4. **601.2a–i: casting is a transaction.** Propose: move the card to the stack, choose modes, splice, and alternative/additional costs (a–b), then targets (c), then division (d). Legality check (e). Determine the locked-in total cost (f). Activate mana abilities (g). Pay (h): costs with no random element and no library-to-public-zone movement go first, then the rest, and partial payments are not allowed. The spell becomes cast and cast-triggers fire (i). Activation (602.2) mirrors this.
|
|
115
|
+
5. **734.1 (not 733): illegal-action reversal.** "The entire action is reversed and any payments already made are canceled. No abilities trigger…" 601.2e points here. 733 is *Taking Shortcuts*. The engine needs snapshot/rollback around every cast, activation and attack/block declaration.
|
|
116
|
+
6. **605.1a: mana-ability classification (changed in Aug 2026).** An activated ability is a mana ability only if it has no target, could add mana, is not a loyalty ability, **and "its cost and effect don't move any card to or from a library."** Classification must apply this full test, not just "adds mana". 605.3a: mana abilities can be activated in the middle of casting or resolving.
|
|
117
|
+
7. **603.3b: trigger ordering in APNAP order.** Each player puts the triggers they control on the stack in the order they choose, in APNAP order (101.4). 603.10 lists the "look back in time" triggers (leaves-the-battlefield and similar). 603.7 covers delayed triggers. 603.4 covers intervening-"if" clauses, which are checked both on trigger and on resolution.
|
|
118
|
+
8. **608.2b: target re-check on resolution.** A spell or ability with no legal targets left doesn't resolve. If only some targets are illegal, it resolves and does nothing to the illegal ones.
|
|
119
|
+
9. **613: layers.** 613.1a–g give layers 1–7. 613.2 gives the layer-1 sublayers (1a copiable effects, including merges; 1b face-down characteristics). 613.3: within layers 2–6, characteristic-defining abilities (CDAs) apply first, then timestamp order. 613.4a–d give sublayers 7a–7d (CDA, set, modify including counters, switch). 613.6: an effect that starts applying keeps applying to the same set of objects. 613.7a–n are the timestamp rules (attachment, face-up, transform and stickers all refresh the timestamp). **613.8: dependency** overrides timestamp order, and dependency loops fall back to timestamp. Characteristics must be computed by a pure function over base values plus the active effects. Never mutate the base object.
|
|
120
|
+
10. **614/615/616: replacement and prevention.** These apply as events happen and are not locked in (614.1). 614.12 covers ETB-modifying replacements, which must be checked against the permanent as it would exist on the battlefield. **616.1**: the affected object's controller (or its owner, if it has no controller) or the affected player chooses the order, in a fixed priority: a self-replacement effect first (616.1a), then control-of-ETB effects (b), then copy-as-ETB effects (c), then back-face-up ETB effects (d), then any (e). The process repeats over the effects that still apply (616.1f). Each replacement effect applies at most once to a given event.
|
|
121
|
+
11. **703.4: turn-based actions** (phasing, day/night, untap, draw, lore counters, declarations, damage, cleanup). **703.4q / 500.5**: mana pools empty at the end of each step and phase.
|
|
122
|
+
12. **704.7 / 704.8: SBAs are simultaneous.** A single replacement effect replaces all identical simultaneous SBA results (704.7). LKI for permanents that leave through SBAs comes from before any of the simultaneous SBAs were performed (704.8).
|
|
123
|
+
13. **514.3a: the cleanup step repeats.** If SBAs happen or triggers are waiting during cleanup, players get priority and another cleanup step follows.
|
|
124
|
+
14. **116.2: special actions** don't use the stack and come in twelve kinds (see §1). The action model needs "play land", "turn face up" and so on as first-class actions alongside cast and activate.
|
|
125
|
+
15. **Designations and player-level state** (monarch 726, initiative 727, day/night 732, speed 702.179, city's blessing 702.131, Ring-bearer 701.54, enduring story 702.195, rad counters 729). These need a general per-player and per-game designation store, not ad-hoc flags.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 1. Game Concepts (100–123)
|
|
130
|
+
|
|
131
|
+
| Rule | Mechanic | Milestone |
|
|
132
|
+
| --- | --- | --- |
|
|
133
|
+
| 100 | General; two-player vs multiplayer (100.1a/b); deck construction minimums | M1 |
|
|
134
|
+
| 101 | Golden rules: a card's text overrides the rules; "can't" beats "can"; APNAP order (101.4) | M1 |
|
|
135
|
+
| 102 | Players, opponents, teammates | M1 |
|
|
136
|
+
| 103 | Starting the game: shuffle, choose who plays first, opening hand, mulligans, the first player skips their first draw | M1 |
|
|
137
|
+
| 104 | Ending the game: win, lose, draw, concede | M1 |
|
|
138
|
+
| 105 | Colors, colorless, multicolor | M1 |
|
|
139
|
+
| 106 | Mana: types, the mana pool, mana emptying, restrictions on mana use | M1 |
|
|
140
|
+
| 107 | Numbers and symbols: X, mana symbols (hybrid, Phyrexian, snow, {C}), {T}/{Q}, loyalty symbols, {E} energy, and others | M1–M3 |
|
|
141
|
+
| 108 | Cards: owner, oracle text | M1 |
|
|
142
|
+
| 109 | Objects: characteristics, controller | M1 |
|
|
143
|
+
| 110 | Permanents and status (110.5) | M1 |
|
|
144
|
+
| 111 | Tokens, including predefined tokens (Treasure, Clue, Food, Blood, Incubator and others, 111.10) | M2 |
|
|
145
|
+
| 112 | Spells | M2 |
|
|
146
|
+
| 113 | Abilities: spell, activated, triggered, static; where abilities function | M2 |
|
|
147
|
+
| 114 | Emblems | M4 |
|
|
148
|
+
| 115 | Targets: legal targets, changing targets, "any target" | M2 |
|
|
149
|
+
| 116 | Special actions (twelve, 116.2a–m): | |
|
|
150
|
+
| 116.2a | Play a land | M1 |
|
|
151
|
+
| 116.2b | Turn a face-down creature face up | M5 |
|
|
152
|
+
| 116.2c | Take a later action that an effect allows (ending an effect or stopping a delayed trigger) | M5 |
|
|
153
|
+
| 116.2d | Ignore a static ability's effect for a duration | M5 |
|
|
154
|
+
| 116.2e | Circling Vultures discard | M5 |
|
|
155
|
+
| 116.2f | Exile a card with suspend from hand | M5 |
|
|
156
|
+
| 116.2g | Pay {3} to put the companion into hand | M5 |
|
|
157
|
+
| 116.2h | Foretell (pay {2}, exile face down) | M5 |
|
|
158
|
+
| 116.2i | Roll the planar die (Planechase) | OOS |
|
|
159
|
+
| 116.2j | Turn a conspiracy face up | OOS |
|
|
160
|
+
| 116.2k | Plot (exile from hand) | M5 |
|
|
161
|
+
| 116.2m | Pay an unlock cost for a locked half of a split permanent (Rooms) | M5 |
|
|
162
|
+
| 117 | Timing and priority | M1 |
|
|
163
|
+
| 118 | Costs: mana, additional (118.8), alternative (118.9), cost increases and reductions, "if you do" (118.12) | M2 |
|
|
164
|
+
| 119 | Life: gain, loss, paying life | M1 |
|
|
165
|
+
| 120 | Damage: to players, creatures, planeswalkers and battles; combat vs noncombat; damage results | M1 |
|
|
166
|
+
| 121 | Drawing a card | M1 |
|
|
167
|
+
| 122 | Counters: +1/+1 and -1/-1 (122.1a), keyword counters (122.1b), shield (c), stun (d), loyalty (e), poison (f), defense (g), finality (h), rad (i), hone (j) | M3 |
|
|
168
|
+
| 123 | Stickers (Un-/Alchemy-adjacent) | OOS |
|
|
169
|
+
|
|
170
|
+
## 2. Parts of a Card (200–213)
|
|
171
|
+
|
|
172
|
+
| Rule | Mechanic | Milestone |
|
|
173
|
+
| --- | --- | --- |
|
|
174
|
+
| 201 | Name; "named" and same-name checks | M1 |
|
|
175
|
+
| 202 | Mana cost, mana value, color derived from cost | M1 |
|
|
176
|
+
| 203 | Illustration (no rules meaning) | n/a |
|
|
177
|
+
| 204 | Color indicator | M3 |
|
|
178
|
+
| 205 | Type line: card types (205.2a), subtypes (205.3), supertypes basic/legendary/ongoing/snow/world (205.4a) | M1 |
|
|
179
|
+
| 206 | Expansion symbol (rarely relevant) | n/a |
|
|
180
|
+
| 207 | Text box: rules text, ability words, flavor | M2 |
|
|
181
|
+
| 208 | Power/toughness, including `*` CDAs | M1 |
|
|
182
|
+
| 209 | Loyalty | M4 |
|
|
183
|
+
| 210 | Defense (battles) | M4 |
|
|
184
|
+
| 211 | Hand modifier (Vanguard) | OOS |
|
|
185
|
+
| 212 | Life modifier (Vanguard) | OOS |
|
|
186
|
+
| 213 | Information below the text box | n/a |
|
|
187
|
+
|
|
188
|
+
## 3. Card Types (300–315)
|
|
189
|
+
|
|
190
|
+
| Rule | Type | What the engine needs | Milestone |
|
|
191
|
+
| --- | --- | --- | --- |
|
|
192
|
+
| 300 | General | Multiple card types; type-changing effects | M1 |
|
|
193
|
+
| 301 | Artifact | Permanent cast at sorcery speed; Equipment (301.5), Fortification, Vehicle; predefined artifact tokens | M1 (Equipment M3) |
|
|
194
|
+
| 302 | Creature | P/T, combat, summoning sickness (302.6: no {T}/{Q} abilities and no attacking unless controlled continuously since the start of the controller's most recent turn) | M1 |
|
|
195
|
+
| 303 | Enchantment | Auras (303.4a–m: targeting, attachment legality, ETB without casting); Sagas, Classes, Cases, Roles, Rooms | M1 (Auras M3) |
|
|
196
|
+
| 304 | Instant | Cast any time you have priority | M2 |
|
|
197
|
+
| 305 | Land | Land play (305.2), basic land types granting mana abilities (305.6), land-type setting (305.7), land + other type can only be played as a land (305.9) | M1 |
|
|
198
|
+
| 306 | Planeswalker | Loyalty (306.5a–d), enters with loyalty counters (replacement effect), loyalty abilities (606), can be attacked, damage removes loyalty | M4 |
|
|
199
|
+
| 307 | Sorcery | Main phase, empty stack | M2 |
|
|
200
|
+
| 308 | Kindred | Has another card type; gets creature types | M5 |
|
|
201
|
+
| 309 | Dungeon | Command zone, venture marker, room abilities (via venture / initiative) | M5 |
|
|
202
|
+
| 310 | Battle | Defense (310.4), protector, Siege; attackable; SBAs 704.5v–y | M5 |
|
|
203
|
+
| 311 | Plane | Planechase | OOS |
|
|
204
|
+
| 312 | Phenomenon | Planechase | OOS |
|
|
205
|
+
| 313 | Vanguard | Vanguard | OOS |
|
|
206
|
+
| 314 | Scheme | Archenemy | OOS |
|
|
207
|
+
| 315 | Conspiracy | Conspiracy Draft | OOS |
|
|
208
|
+
|
|
209
|
+
## 4. Zones (400–408)
|
|
210
|
+
|
|
211
|
+
| Rule | Mechanic | Milestone |
|
|
212
|
+
| --- | --- | --- |
|
|
213
|
+
| 400 | General: public vs hidden zones; **400.7 new object on zone change**; owner's zones; simultaneous moves | M1 |
|
|
214
|
+
| 401 | Library: order, top/bottom, revealing, "draw from empty library" | M1 |
|
|
215
|
+
| 402 | Hand: hidden; maximum hand size | M1 |
|
|
216
|
+
| 403 | Battlefield | M1 |
|
|
217
|
+
| 404 | Graveyard: ordered, public | M1 |
|
|
218
|
+
| 405 | Stack: LIFO; what goes on it | M2 |
|
|
219
|
+
| 406 | Exile: face-up and face-down exile; "exiled with" links | M2 |
|
|
220
|
+
| 407 | Ante | OOS |
|
|
221
|
+
| 408 | Command zone: emblems, dungeons, (variant cards) | M4 |
|
|
222
|
+
|
|
223
|
+
## 5. Turn Structure (500–514)
|
|
224
|
+
|
|
225
|
+
| Rule | Mechanic | Milestone |
|
|
226
|
+
| --- | --- | --- |
|
|
227
|
+
| 500 | General: phases and steps; mana empties (500.5); extra turns, phases and steps; skipping | M1 (extra turns M5) |
|
|
228
|
+
| 501 | Beginning phase | M1 |
|
|
229
|
+
| 502 | Untap step: phasing, day/night check, untap; no priority | M1 |
|
|
230
|
+
| 503 | Upkeep step | M1 |
|
|
231
|
+
| 504 | Draw step | M1 |
|
|
232
|
+
| 505 | Main phases (precombat/postcombat); land play; lore counters (703.4f) | M1 |
|
|
233
|
+
| 506 | Combat phase: defending player, attacking/blocking, removed from combat; declare-blockers and damage steps skipped if there are no attackers | M1 |
|
|
234
|
+
| 507 | Beginning of combat step | M1 |
|
|
235
|
+
| 508 | Declare attackers: 508.1a–m (legality, choosing a player/planeswalker/battle, restrictions and requirements, banding, tapping, attack costs, triggers) | M1 |
|
|
236
|
+
| 509 | Declare blockers: 509.1a–i (restrictions and requirements, block costs, blocked/unblocked) | M1 |
|
|
237
|
+
| 510 | Combat damage: no damage assignment order; the controller of a blocked creature divides its damage among its blockers as they choose (510.1c), first strike/double strike creates a second damage step, simultaneous dealing | M1 |
|
|
238
|
+
| 511 | End of combat step | M1 |
|
|
239
|
+
| 512 | Ending phase | M1 |
|
|
240
|
+
| 513 | End step; "at the beginning of the next end step" delayed triggers | M1 |
|
|
241
|
+
| 514 | Cleanup: discard to hand size, remove damage, end "until end of turn" effects, repeat if needed (514.3a) | M1 |
|
|
242
|
+
|
|
243
|
+
## 6. Spells, Abilities, and Effects (600–616)
|
|
244
|
+
|
|
245
|
+
| Rule | Mechanic | Milestone |
|
|
246
|
+
| --- | --- | --- |
|
|
247
|
+
| 601.2a | Propose: move the card to the stack, apply characteristic-changing effects | M2 |
|
|
248
|
+
| 601.2b | Announce modes, splice, alternative/additional costs, X, hybrid/Phyrexian choices | M2 |
|
|
249
|
+
| 601.2c | Choose targets (including targets that depend on mode or kicker) | M2 |
|
|
250
|
+
| 601.2d | Divide/distribute among targets (at least 1 each) | M2 |
|
|
251
|
+
| 601.2e | Legality check, reversing via 734 if the spell is illegal | M2 |
|
|
252
|
+
| 601.2f | Determine the total cost (mana cost or alternative cost, plus additional costs, plus increases, minus reductions); locked in | M2 |
|
|
253
|
+
| 601.2g | Activate mana abilities | M2 |
|
|
254
|
+
| 601.2h | Pay costs in any order (costs with no random element and no library-to-public-zone movement first); no partial payment | M2 |
|
|
255
|
+
| 601.2i | The spell becomes cast; cast triggers; priority returns to the caster | M2 |
|
|
256
|
+
| 601.3 | Permission to cast (from hand by default; "may cast from X" effects) | M2 |
|
|
257
|
+
| 601.3 (impl.) | Implemented: `play_from` (own card or a permanent's static, graveyard/exile/library top, once each turn, enters-with rider), `play_permission` effect (impulse draw, durations), cast/play_land options with `via`, cancel returns to the origin zone | M2 |
|
|
258
|
+
| 608.2g (impl.) | Implemented: `cast_free` (cast during resolution without paying the mana cost, no priority in between) and `discover` (701.57) | M2 |
|
|
259
|
+
| 702.196 (impl.) | Implemented: `beam_me_up` ability, `grants_beam_me_up` static, `cant_be_beamed_up` flag; exiled when it leaves the stack | M2 |
|
|
260
|
+
| 602 | Activating activated abilities; {T}/{Q} plus summoning sickness (602.5a); "activate only once each turn"/as a sorcery/as an instant (602.5b–e) | M2 |
|
|
261
|
+
| 603 | Triggered abilities: trigger events, APNAP ordering (603.3b), intervening "if" (603.4), zone-change triggers (603.6), delayed triggers (603.7), look-back (603.10), state triggers, reflexive triggers | M2 |
|
|
262
|
+
| 603.2c–e, 603.7b–c, 603.12, 113.6k | Done: becomes tapped, counters put, becomes the target, leaves a graveyard (per card or "one or more" per event batch), activates an ability, "when you cast this spell", spell filters and chosen name / mana value on cast triggers; "only once each turn"; triggering an additional time (603.2d); "this turn" and object-watching delayed triggers; reflexive "when you do" triggers; triggers that function from a graveyard; the triggering object, player and amount as effect references. Not yet: "for the first time each turn" | M2 |
|
|
263
|
+
| 604 | Static abilities; characteristic-defining abilities (604.3) | M3 |
|
|
264
|
+
| 605 | Mana abilities: classification (605.1a/b, **includes the Aug 2026 library-movement exclusion**), no stack, activation mid-cast | M1 |
|
|
265
|
+
| 606 | Loyalty abilities: one per permanent per turn, sorcery timing (606.3) | M4 |
|
|
266
|
+
| 607 | Linked abilities ("exiled with", "the chosen X") | M3 |
|
|
267
|
+
| 608 | Resolving: target re-check (608.2b), following instructions in order, choices on resolution, a permanent spell becomes a permanent | M2 |
|
|
268
|
+
| 609 | Effects: general, "you may", "unless", undefined quantities | M2 |
|
|
269
|
+
| 610 | One-shot effects; effects that create delayed triggers or continuous effects | M2 |
|
|
270
|
+
| 611 | Continuous effects: from resolving spells (locked set) vs from static abilities (dynamic set); duration | M3 |
|
|
271
|
+
| 612 | Text-changing effects (layer 3) | M5 |
|
|
272
|
+
| 613 | Layers 1–7 with sublayers, CDAs first, timestamps (613.7), dependency (613.8) | M3 |
|
|
273
|
+
| 614 | Replacement effects: "instead" (614.1a), "skip" (b), "enters with/as" (c–d), "as turned face up" (e), self-replacement (614.15), ETB replacements (614.12) | M3 |
|
|
274
|
+
| 615 | Prevention effects: prevention shields, "prevent all", damage that can't be prevented | M3 |
|
|
275
|
+
| 616 | Ordering of replacement/prevention effects (616.1a–f) | M3 |
|
|
276
|
+
|
|
277
|
+
## 7. Additional Rules (700–734)
|
|
278
|
+
|
|
279
|
+
| Rule | Mechanic | Milestone |
|
|
280
|
+
| --- | --- | --- |
|
|
281
|
+
| 700 | General: modal spells (700.2), "choose one or more", "each", "you", "dies", "attacks alone", party, historic, "exactly" | M2 |
|
|
282
|
+
| 701 | Keyword actions (full list below) | — |
|
|
283
|
+
| 702 | Keyword abilities (full list below) | — |
|
|
284
|
+
| 703 | Turn-based actions (703.4a–q) | M1 |
|
|
285
|
+
| 704 | State-based actions (full list below) | M1 |
|
|
286
|
+
| 705 | Flipping a coin | M5 |
|
|
287
|
+
| 706 | Rolling a die | M5 |
|
|
288
|
+
| 707 | Copying objects: copiable values, copy-of-a-copy, "except" modifications, copying spells and choosing new targets, token copies | M3 |
|
|
289
|
+
| 708 | Face-down spells and permanents (morph, disguise, manifest, cloak, foretell exile); turning face up; revealing at end of game | M5 |
|
|
290
|
+
| 709 | Split cards (fuse, aftermath); **709.5 split permanents with locked/unlocked halves (Rooms)** | M5 |
|
|
291
|
+
| 710 | Flip cards | M5 |
|
|
292
|
+
| 711 | Leveler cards (level up) | M5 |
|
|
293
|
+
| 712 | Double-faced cards: transforming DFCs, modal DFCs; which face is up in each zone. Done (`layout`/`faces`, card-data-format 4.17). Not yet: day/night, cast transformed | M4 (transform/MDFC) |
|
|
294
|
+
| 713 | Meld cards: melding a pair into one permanent; which half is which (moved out of 712) | M5 |
|
|
295
|
+
| 714 | Substitute cards (checklist proxies for DFCs) | M5 |
|
|
296
|
+
| 715 | Saga cards: lore counters, chapter triggers, sacrifice SBA | M4 |
|
|
297
|
+
| 716 | Adventurer cards: cast as the Adventure, exile, cast the creature later. Done | M4 |
|
|
298
|
+
| 717 | Class cards: level bars | M5 |
|
|
299
|
+
| 718 | Attraction cards | OOS |
|
|
300
|
+
| 719 | Prototype cards | M5 |
|
|
301
|
+
| 720 | Case cards (solved) | M5 |
|
|
302
|
+
| 721 | Omen cards: two-part frame; cast normally or as an Omen; an Omen spell is shuffled into the library on resolution (721.3d). Done | M5 |
|
|
303
|
+
| 722 | Station cards: station symbols `{N+}` grant abilities/P/T at a charge-counter threshold | M5 |
|
|
304
|
+
| 723 | **Preparation cards** (new): inset "prepare spell"; prepared/unprepared designation; on becoming prepared, a copy is created in exile that may be cast (723.3a–c). Done | M5 |
|
|
305
|
+
| 724 | Controlling another player (Mindslaver) | M5 |
|
|
306
|
+
| 725 | Ending turns and phases (Time Stop, Sundial) | M5 |
|
|
307
|
+
| 726 | The monarch | M5 |
|
|
308
|
+
| 727 | The initiative (Undercity dungeon) | M5 |
|
|
309
|
+
| 728 | Restarting the game (Karn Liberated) | M5 |
|
|
310
|
+
| 729 | Rad counters (inherent player trigger) | M5 |
|
|
311
|
+
| 730 | Subgames (Shahrazad) | M5 |
|
|
312
|
+
| 731 | Merging with permanents (mutate) | M5 |
|
|
313
|
+
| 732 | Day and night | M5 |
|
|
314
|
+
| 733 | Taking shortcuts (loop shortcuts, conditional priority passes) | M2 (engine/UI policy) |
|
|
315
|
+
| 734 | Handling illegal actions: reversal and rollback (734.1) | M2 |
|
|
316
|
+
|
|
317
|
+
### State-based actions (704.5a–aa; the letters skip l and o)
|
|
318
|
+
|
|
319
|
+
| Rule | SBA | Milestone |
|
|
320
|
+
| --- | --- | --- |
|
|
321
|
+
| 704.5a | A player with 0 or less life loses | M1 |
|
|
322
|
+
| 704.5b | A player who drew from an empty library since the last check loses | M1 |
|
|
323
|
+
| 704.5c | 10+ poison counters: the player loses | M4 |
|
|
324
|
+
| 704.5d | A token in a zone other than the battlefield ceases to exist | M2 |
|
|
325
|
+
| 704.5e | A copy of a spell off the stack, or a copy of a card outside the stack/battlefield, ceases to exist | M3 |
|
|
326
|
+
| 704.5f | A creature with toughness 0 or less goes to the graveyard (can't be regenerated) | M1 |
|
|
327
|
+
| 704.5g | Lethal marked damage destroys the creature (can be regenerated) | M1 |
|
|
328
|
+
| 704.5h | Damage from a deathtouch source destroys the creature | M4 |
|
|
329
|
+
| 704.5i | A planeswalker with 0 loyalty goes to the graveyard | M4 |
|
|
330
|
+
| 704.5j | Legend rule | M1 |
|
|
331
|
+
| 704.5k | World rule | M5 |
|
|
332
|
+
| 704.5m | An Aura attached illegally or to nothing goes to the graveyard | M3 |
|
|
333
|
+
| 704.5n | Equipment/Fortification attached illegally becomes unattached | M3 |
|
|
334
|
+
| 704.5p | A battle/creature, or another non-Aura/Equipment/Fortification permanent, attached to something becomes unattached | M3 |
|
|
335
|
+
| 704.5q | +1/+1 and -1/-1 counters annihilate | M3 |
|
|
336
|
+
| 704.5r | "Can't have more than N counters" is enforced | M5 |
|
|
337
|
+
| 704.5s | A Saga at or past its final chapter (with no chapter ability pending) is sacrificed | M4 |
|
|
338
|
+
| 704.5t | A dungeon whose venture marker is on its bottom room (with no room ability pending) is removed | M5 |
|
|
339
|
+
| 704.5u | Space sculptor sector designations | OOS |
|
|
340
|
+
| 704.5v | A Siege battle with 0 defense (no pending trigger from it) goes to the graveyard | M5 |
|
|
341
|
+
| 704.5w | A non-Siege battle with 0 defense goes to the graveyard | M5 |
|
|
342
|
+
| 704.5x | A battle with no protector gets one chosen | M5 |
|
|
343
|
+
| 704.5y | A battle with an illegal protector is reassigned or goes to the graveyard | M5 |
|
|
344
|
+
| 704.5z | Multiple Roles from the same controller on one permanent: only the newest stays | M5 |
|
|
345
|
+
| 704.5aa | A controller of a start-your-engines! permanent who has no speed gets speed 1 | M5 |
|
|
346
|
+
| 704.6a–f | Variant SBAs (Two-Headed Giant, Commander, Archenemy, Planechase) | OOS |
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## Keyword actions (701.2–701.72)
|
|
351
|
+
|
|
352
|
+
701.1 is the general rule. Every numbered keyword action in the 2026-11-06 CR is listed.
|
|
353
|
+
|
|
354
|
+
| Rule | Action | Description | Milestone |
|
|
355
|
+
| --- | --- | --- | --- |
|
|
356
|
+
| 701.2 | Activate | Put an activated ability on the stack and pay its costs | M2 |
|
|
357
|
+
| 701.3 | Attach | Move an Aura/Equipment/Fortification onto an object or player | M3 ★ |
|
|
358
|
+
| 701.4 | Behold | Reveal a qualifying card from hand or choose a qualifying permanent | M5 |
|
|
359
|
+
| 701.5 | Cast | Take a spell to the stack and pay its costs | M2 |
|
|
360
|
+
| 701.6 | Counter | Remove a spell or ability from the stack without it resolving | M2 ★ |
|
|
361
|
+
| 701.7 | Create | Put tokens onto the battlefield | M2 ★ |
|
|
362
|
+
| 701.8 | Destroy | Move a permanent from the battlefield to its owner's graveyard (replaceable by regenerate/indestructible) | M1 ★ |
|
|
363
|
+
| 701.9 | Discard | Move a card from hand to the graveyard | M1 ★ |
|
|
364
|
+
| 701.10 | Double | Double P/T (a modify effect, layer 7c), life, counters, mana, or damage | M5 |
|
|
365
|
+
| 701.11 | Triple | As with double, ×3 | M5 |
|
|
366
|
+
| 701.12 | Exchange | Swap life totals, control, zones or values; all-or-nothing | M5 |
|
|
367
|
+
| 701.13 | Exile | Move an object to exile | M1 ★ |
|
|
368
|
+
| 701.14 | Fight | Each creature deals damage equal to its power to the other | M2 ★ |
|
|
369
|
+
| 701.15 | Goad | A goaded creature attacks each combat, and attacks a player other than the goader if able | M5 |
|
|
370
|
+
| 701.16 | Investigate | Create a Clue token | M2 ★ |
|
|
371
|
+
| 701.17 | Mill | Put the top N cards of the library into the graveyard | M2 ★ |
|
|
372
|
+
| 701.18 | Play | Play a land or cast a spell | M1 |
|
|
373
|
+
| 701.19 | Regenerate | Next-destruction replacement: tap, remove damage, remove from combat | M3 |
|
|
374
|
+
| 701.20 | Reveal | Show a card to all players | M2 |
|
|
375
|
+
| 701.21 | Sacrifice | The controller moves a permanent to its owner's graveyard (not destruction) | M1 ★ |
|
|
376
|
+
| 701.22 | Scry | Look at the top N; any number to the bottom, the rest on top in any order | M2 ★ |
|
|
377
|
+
| 701.23 | Search | Look through a zone for matching cards (may fail to find) | M2 ★ |
|
|
378
|
+
| 701.24 | Shuffle | Randomize a library or face-down pile | M1 |
|
|
379
|
+
| 701.25 | Surveil | Look at the top N; any number to the graveyard, the rest on top | M2 ★ |
|
|
380
|
+
| 701.26 | Tap and Untap | Turn sideways or upright | M1 |
|
|
381
|
+
| 701.27 | Transform | Turn a DFC permanent to its other face. Done | M4 ★ |
|
|
382
|
+
| 701.28 | Convert | Transform-equivalent wording for some DFCs (Transformers) | M5 |
|
|
383
|
+
| 701.29 | Fateseal | Scry an opponent's library | M5 |
|
|
384
|
+
| 701.30 | Clash | Reveal the top card, may bottom it, compare mana values | M5 |
|
|
385
|
+
| 701.31 | Planeswalk | Planechase only | OOS |
|
|
386
|
+
| 701.32 | Set in Motion | Archenemy only | OOS |
|
|
387
|
+
| 701.33 | Abandon | Archenemy only | OOS |
|
|
388
|
+
| 701.34 | Proliferate | Add one counter of each kind already present to any chosen permanents/players | M3 ★ |
|
|
389
|
+
| 701.35 | Detain | Until your next turn: can't attack/block, activated abilities can't be activated | M5 |
|
|
390
|
+
| 701.36 | Populate | Create a copy of a creature token you control | M5 |
|
|
391
|
+
| 701.37 | Monstrosity | If not monstrous, put N +1/+1 counters and become monstrous | M5 |
|
|
392
|
+
| 701.38 | Vote | Players vote among options (works in two-player) | M5 |
|
|
393
|
+
| 701.39 | Bolster | N +1/+1 counters on your creature with the least toughness | M5 |
|
|
394
|
+
| 701.40 | Manifest | Put a card onto the battlefield face down as a 2/2; turn face up if it's a creature | M5 |
|
|
395
|
+
| 701.41 | Support | +1/+1 counters on up to N other target creatures | M5 |
|
|
396
|
+
| 701.42 | Meld | Combine a meld pair into one oversized permanent | M5 |
|
|
397
|
+
| 701.43 | Exert | Doesn't untap during your next untap step | M5 |
|
|
398
|
+
| 701.44 | Explore | Reveal the top card; land → hand, otherwise a +1/+1 counter and the card may go to the graveyard | M4 |
|
|
399
|
+
| 701.45 | Assemble | Contraptions (Unstable; Steamflogger Boss) | OOS |
|
|
400
|
+
| 701.46 | Adapt | If no +1/+1 counters, put N | M5 |
|
|
401
|
+
| 701.47 | Amass | Create/grow an Army token with N +1/+1 counters | M5 |
|
|
402
|
+
| 701.48 | Learn | Rummage, or fetch a Lesson from outside the game | M5 |
|
|
403
|
+
| 701.49 | Venture into the Dungeon | Choose a dungeon from outside the game, move the venture marker, room trigger | M5 |
|
|
404
|
+
| 701.50 | Connive | Draw, discard; nonland discarded → +1/+1 counter | M5 |
|
|
405
|
+
| 701.51 | Open an Attraction | Attractions only | OOS |
|
|
406
|
+
| 701.52 | Roll to Visit Your Attractions | Attractions only | OOS |
|
|
407
|
+
| 701.53 | Incubate | Create an Incubator token with N +1/+1 counters | M5 |
|
|
408
|
+
| 701.54 | The Ring Tempts You | Choose a Ring-bearer; gain the next Ring ability level | M5 |
|
|
409
|
+
| 701.55 | Face a Villainous Choice | The player picks option A or B | M5 |
|
|
410
|
+
| 701.56 | Time Travel | Add/remove a time counter on each chosen permanent/suspended card | M5 |
|
|
411
|
+
| 701.57 | Discover | Exile until a nonland card with mana value ≤ N; cast it free or put it in hand | M5 |
|
|
412
|
+
| 701.58 | Cloak | Manifest with ward {2} | M5 |
|
|
413
|
+
| 701.59 | Collect Evidence | Exile graveyard cards with total mana value ≥ N (usually a cost) | M5 |
|
|
414
|
+
| 701.60 | Suspect | Designation: menace and can't block | M5 |
|
|
415
|
+
| 701.61 | Forage | Exile three cards from your graveyard or sacrifice a Food | M5 |
|
|
416
|
+
| 701.62 | Manifest Dread | Look at the top 2, manifest one, the other to the graveyard | M5 |
|
|
417
|
+
| 701.63 | Endure | Put N +1/+1 counters, or create an N/N Spirit token | M5 |
|
|
418
|
+
| 701.64 | Harness | Permanent becomes harnessed (enables ∞ abilities) | M5 |
|
|
419
|
+
| 701.65 | Airbend | Exile; the owner may cast it for {2} while exiled | M5 |
|
|
420
|
+
| 701.66 | Earthbend | Target land becomes a 0/0 haste creature with N +1/+1 counters and returns when it dies or is exiled | M5 |
|
|
421
|
+
| 701.67 | Waterbend | Pay a cost, tapping artifacts/creatures for generic mana | M5 |
|
|
422
|
+
| 701.68 | Blight | Put N -1/-1 counters on a creature you control | M5 |
|
|
423
|
+
| 701.69 | Heal | Remove damage marked on a permanent | M5 |
|
|
424
|
+
| 701.70 | Recruit | Draw, discard; nonland discarded → 1/1 Human Soldier token | M5 |
|
|
425
|
+
| 701.71 | Empower Jace | Create or choose a Jace planeswalker token and add N loyalty | M5 |
|
|
426
|
+
| 701.72 | Assimilate | Gain control, +1/+1 counter, becomes a Borg artifact creature | M5 |
|
|
427
|
+
|
|
428
|
+
## Keyword abilities (702.2–702.196)
|
|
429
|
+
|
|
430
|
+
702.1 is the general rule. Every numbered keyword ability in the 2026-11-06 CR is listed.
|
|
431
|
+
|
|
432
|
+
| Rule | Ability | Description | Milestone |
|
|
433
|
+
| --- | --- | --- | --- |
|
|
434
|
+
| 702.2 | Deathtouch | Any damage from it to a creature is lethal; 1 damage counts as lethal when assigning | M4 ★ |
|
|
435
|
+
| 702.3 | Defender | Can't attack | M4 ★ |
|
|
436
|
+
| 702.4 | Double Strike | Deals both first-strike and regular combat damage | M4 ★ |
|
|
437
|
+
| 702.5 | Enchant | Restricts an Aura's targets and what it can be attached to | M3 ★ |
|
|
438
|
+
| 702.6 | Equip | `[Cost]`: attach to target creature you control; sorcery speed | M3 ★ |
|
|
439
|
+
| 702.7 | First Strike | Deals combat damage in the first-strike damage step | M4 ★ |
|
|
440
|
+
| 702.8 | Flash | May be cast any time you could cast an instant | M4 ★ |
|
|
441
|
+
| 702.9 | Flying | Can be blocked only by flying/reach creatures | M4 ★ |
|
|
442
|
+
| 702.10 | Haste | Ignores summoning sickness | M4 ★ |
|
|
443
|
+
| 702.11 | Hexproof | Can't be targeted by opponents' spells/abilities; "hexproof from" variants | M4 ★ |
|
|
444
|
+
| 702.12 | Indestructible | Not destroyed by lethal damage or destroy effects | M4 ★ |
|
|
445
|
+
| 702.13 | Intimidate | Blockable only by artifact creatures or creatures sharing a color | M5 |
|
|
446
|
+
| 702.14 | Landwalk | Unblockable while the defender controls the named land type | M5 |
|
|
447
|
+
| 702.15 | Lifelink | Damage dealt also causes its controller to gain that much life | M4 ★ |
|
|
448
|
+
| 702.16 | Protection | DEBT: can't be Damaged, Enchanted/Equipped, Blocked, Targeted by the quality | M4 ★ |
|
|
449
|
+
| 702.17 | Reach | Can block flying creatures | M4 ★ |
|
|
450
|
+
| 702.18 | Shroud | Can't be the target of any spell or ability | M5 |
|
|
451
|
+
| 702.19 | Trample | Excess combat damage beyond lethal can go to the player/planeswalker/battle | M4 ★ |
|
|
452
|
+
| 702.20 | Vigilance | Doesn't tap to attack | M4 ★ |
|
|
453
|
+
| 702.21 | Ward | When targeted by an opponent, counter unless they pay the cost | M4 ★ |
|
|
454
|
+
| 702.22 | Banding | Combat bands; the defender's damage-assignment control flips | M5 |
|
|
455
|
+
| 702.23 | Rampage | +N/+N per blocker beyond the first | M5 |
|
|
456
|
+
| 702.24 | Cumulative Upkeep | Age counter each upkeep; pay the cost per counter or sacrifice | M5 |
|
|
457
|
+
| 702.25 | Flanking | Blockers without flanking get -1/-1 | M5 |
|
|
458
|
+
| 702.26 | Phasing | Phases in/out on the untap step; treated as nonexistent while phased out | M5 |
|
|
459
|
+
| 702.27 | Buyback | Optional additional cost; on resolution return to hand | M5 |
|
|
460
|
+
| 702.28 | Shadow | Blocks/blocked only by shadow creatures | M5 |
|
|
461
|
+
| 702.29 | Cycling | `[Cost]`, discard: draw a card; typecycling variants | M4 ★ |
|
|
462
|
+
| 702.30 | Echo | Pay the echo cost on your next upkeep or sacrifice | M5 |
|
|
463
|
+
| 702.31 | Horsemanship | Like flying, horsemanship only | M5 |
|
|
464
|
+
| 702.32 | Fading | Fade counters; remove one each upkeep or sacrifice | M5 |
|
|
465
|
+
| 702.33 | Kicker | Optional additional cost; "if kicked" (multikicker) | M4 ★ |
|
|
466
|
+
| 702.34 | Flashback | Cast from the graveyard for the flashback cost, then exile | M4 ★ |
|
|
467
|
+
| 702.35 | Madness | Discard into exile, then may cast for the madness cost | M5 |
|
|
468
|
+
| 702.36 | Fear | Blockable only by black or artifact creatures | M5 |
|
|
469
|
+
| 702.37 | Morph | Cast face down as a 2/2 for {3}; turn up for the morph cost (megamorph) | M5 |
|
|
470
|
+
| 702.38 | Amplify | Reveal cards sharing a creature type to enter with counters | M5 |
|
|
471
|
+
| 702.39 | Provoke | On attack, untap target creature and force it to block | M5 |
|
|
472
|
+
| 702.40 | Storm | Copy for each spell cast before it this turn | M5 |
|
|
473
|
+
| 702.41 | Affinity | Costs {1} less per [quality] you control | M5 |
|
|
474
|
+
| 702.42 | Entwine | Pay extra to choose all modes | M5 |
|
|
475
|
+
| 702.43 | Modular | Enter with N +1/+1 counters; on death move them to an artifact creature | M5 |
|
|
476
|
+
| 702.44 | Sunburst | Counters equal to the number of colors of mana spent | M5 |
|
|
477
|
+
| 702.45 | Bushido | +N/+N when blocking or blocked | M5 |
|
|
478
|
+
| 702.46 | Soulshift | On death return a Spirit with mana value ≤ N | M5 |
|
|
479
|
+
| 702.47 | Splice | Reveal from hand to add its text onto an Arcane spell | M5 |
|
|
480
|
+
| 702.48 | Offering | Sacrifice a [type] to cast at flash speed with a reduced cost | M5 |
|
|
481
|
+
| 702.49 | Ninjutsu | Return an unblocked attacker to swap in from hand, tapped and attacking | M5 |
|
|
482
|
+
| 702.50 | Epic | Can't cast spells for the rest of the game; copy each upkeep | M5 |
|
|
483
|
+
| 702.51 | Convoke | Tap creatures to help pay | M4 ★ |
|
|
484
|
+
| 702.52 | Dredge | Replace a draw with milling N to return this card | M5 |
|
|
485
|
+
| 702.53 | Transmute | Discard: tutor a card with the same mana value; sorcery speed | M5 |
|
|
486
|
+
| 702.54 | Bloodthirst | Enter with counters if an opponent was dealt damage this turn | M5 |
|
|
487
|
+
| 702.55 | Haunt | On death, exile haunting a creature; trigger again when that creature dies | M5 |
|
|
488
|
+
| 702.56 | Replicate | Pay any number of times; copy that many times | M5 |
|
|
489
|
+
| 702.57 | Forecast | Reveal from hand during upkeep to activate | M5 |
|
|
490
|
+
| 702.58 | Graft | Enter with counters; move one to another creature as it enters | M5 |
|
|
491
|
+
| 702.59 | Recover | When a creature goes to your graveyard, pay or exile | M5 |
|
|
492
|
+
| 702.60 | Ripple | Reveal the top N; cast same-name cards free | M5 |
|
|
493
|
+
| 702.61 | Split Second | While on the stack, players can't cast spells or activate non-mana abilities | M5 |
|
|
494
|
+
| 702.62 | Suspend | Exile with time counters; remove one each upkeep; cast free (with haste) | M5 |
|
|
495
|
+
| 702.63 | Vanishing | Time counters; remove one each upkeep; sacrifice at the last | M5 |
|
|
496
|
+
| 702.64 | Absorb | Prevent N of each damage to it | M5 |
|
|
497
|
+
| 702.65 | Aura Swap | Exchange with an Aura card in hand | M5 |
|
|
498
|
+
| 702.66 | Delve | Exile graveyard cards to pay generic mana | M5 |
|
|
499
|
+
| 702.67 | Fortify | Attach a Fortification to a land | M5 |
|
|
500
|
+
| 702.68 | Frenzy | +N/+0 if it attacks and isn't blocked | M5 |
|
|
501
|
+
| 702.69 | Gravestorm | Copy for each permanent put into a graveyard this turn | M5 |
|
|
502
|
+
| 702.70 | Poisonous | Combat damage to a player → N poison counters | M5 |
|
|
503
|
+
| 702.71 | Transfigure | Sacrifice: tutor a creature with the same mana value | M5 |
|
|
504
|
+
| 702.72 | Champion | Exile another [object] on ETB or sacrifice; return it when this leaves | M5 |
|
|
505
|
+
| 702.73 | Changeling | CDA: every creature type | M4 |
|
|
506
|
+
| 702.74 | Evoke | Alternative cost; sacrifice on ETB | M5 |
|
|
507
|
+
| 702.75 | Hideaway | Exile one of the top N face down; play it later | M5 |
|
|
508
|
+
| 702.76 | Prowl | Alternative cost if a Rogue dealt combat damage this turn | M5 |
|
|
509
|
+
| 702.77 | Reinforce | Discard: N +1/+1 counters on a target creature | M5 |
|
|
510
|
+
| 702.78 | Conspire | Tap two creatures sharing a color to copy | M5 |
|
|
511
|
+
| 702.79 | Persist | Return with a -1/-1 counter if it had none | M5 |
|
|
512
|
+
| 702.80 | Wither | Damage to creatures is dealt as -1/-1 counters | M5 |
|
|
513
|
+
| 702.81 | Retrace | Cast from the graveyard by discarding a land | M5 |
|
|
514
|
+
| 702.82 | Devour | Sacrifice creatures as it enters for N counters each | M5 |
|
|
515
|
+
| 702.83 | Exalted | +1/+1 to a creature attacking alone | M5 |
|
|
516
|
+
| 702.84 | Unearth | Return from the graveyard with haste; exile at end of turn or when it would leave | M5 |
|
|
517
|
+
| 702.85 | Cascade | Exile until a cheaper nonland card; cast it free | M5 |
|
|
518
|
+
| 702.86 | Annihilator | On attack, the defending player sacrifices N permanents | M5 |
|
|
519
|
+
| 702.87 | Level Up | Sorcery-speed level counters (leveler cards, 711) | M5 |
|
|
520
|
+
| 702.88 | Rebound | Exile on resolution if cast from hand; cast free next upkeep | M5 |
|
|
521
|
+
| 702.89 | Umbra Armor | If the enchanted permanent would be destroyed, remove damage and destroy the Aura instead | M5 |
|
|
522
|
+
| 702.90 | Infect | Damage to players as poison, to creatures as -1/-1 counters | M5 |
|
|
523
|
+
| 702.91 | Battle Cry | Other attackers get +1/+0 | M5 |
|
|
524
|
+
| 702.92 | Living Weapon | Create a 0/0 Germ and attach to it | M5 |
|
|
525
|
+
| 702.93 | Undying | Return with a +1/+1 counter if it had none | M5 |
|
|
526
|
+
| 702.94 | Miracle | Cast for the miracle cost when drawn as the first card this turn | M5 |
|
|
527
|
+
| 702.95 | Soulbond | Pair with another creature for a shared bonus | M5 |
|
|
528
|
+
| 702.96 | Overload | Alternative cost: "target" becomes "each" | M5 |
|
|
529
|
+
| 702.97 | Scavenge | Exile from the graveyard: counters equal to its power | M5 |
|
|
530
|
+
| 702.98 | Unleash | May enter with a +1/+1 counter; can't block while it has one | M5 |
|
|
531
|
+
| 702.99 | Cipher | Encode onto a creature; recast a copy on its combat damage | M5 |
|
|
532
|
+
| 702.100 | Evolve | +1/+1 counter when a bigger creature enters under your control | M5 |
|
|
533
|
+
| 702.101 | Extort | On cast, may pay {W/B} to drain 1 | M5 |
|
|
534
|
+
| 702.102 | Fuse | Cast both halves of a split card from hand | M5 |
|
|
535
|
+
| 702.103 | Bestow | Cast as an Aura; becomes a creature when unattached | M5 |
|
|
536
|
+
| 702.104 | Tribute | An opponent chooses counters or the "if tribute wasn't paid" effect | M5 |
|
|
537
|
+
| 702.105 | Dethrone | +1/+1 counter attacking the player with the most life (works in two-player) | M5 |
|
|
538
|
+
| 702.106 | Hidden Agenda | Conspiracy only | OOS |
|
|
539
|
+
| 702.107 | Outlast | `[Cost]`, {T}: +1/+1 counter; sorcery speed | M5 |
|
|
540
|
+
| 702.108 | Prowess | +1/+1 until end of turn when you cast a noncreature spell | M4 ★ |
|
|
541
|
+
| 702.109 | Dash | Alternative cost; haste; return to hand at end of turn | M5 |
|
|
542
|
+
| 702.110 | Exploit | May sacrifice a creature on ETB | M5 |
|
|
543
|
+
| 702.111 | Menace | Can't be blocked except by two or more creatures | M4 ★ |
|
|
544
|
+
| 702.112 | Renown | First combat damage to a player → counters and renowned | M5 |
|
|
545
|
+
| 702.113 | Awaken | Alternative cost: also make a land a 0/0 creature with counters | M5 |
|
|
546
|
+
| 702.114 | Devoid | CDA: colorless | M5 |
|
|
547
|
+
| 702.115 | Ingest | Combat damage → the player exiles their top card | M5 |
|
|
548
|
+
| 702.116 | Myriad | Token copies attacking each other opponent (no effect in two-player; parse-only) | OOS |
|
|
549
|
+
| 702.117 | Surge | Alternative cost if you or a teammate cast another spell this turn | M5 |
|
|
550
|
+
| 702.118 | Skulk | Can't be blocked by creatures with greater power | M5 |
|
|
551
|
+
| 702.119 | Emerge | Alternative cost: sacrifice a creature, reduced by its mana value | M5 |
|
|
552
|
+
| 702.120 | Escalate | Additional cost per extra mode | M5 |
|
|
553
|
+
| 702.121 | Melee | +1/+1 per opponent attacked this combat | M5 |
|
|
554
|
+
| 702.122 | Crew | Tap creatures with total power N: Vehicle becomes an artifact creature | M4 ★ |
|
|
555
|
+
| 702.123 | Fabricate | N +1/+1 counters or N Servo tokens | M5 |
|
|
556
|
+
| 702.124 | Partner | Commander deck construction | OOS |
|
|
557
|
+
| 702.125 | Undaunted | Costs {1} less per opponent | M5 |
|
|
558
|
+
| 702.126 | Improvise | Tap artifacts to pay generic mana | M5 |
|
|
559
|
+
| 702.127 | Aftermath | Cast the second half only from the graveyard | M5 |
|
|
560
|
+
| 702.128 | Embalm | Exile from the graveyard: white Zombie token copy | M5 |
|
|
561
|
+
| 702.129 | Eternalize | Exile from the graveyard: 4/4 black Zombie token copy | M5 |
|
|
562
|
+
| 702.130 | Afflict | When blocked, the defending player loses N life | M5 |
|
|
563
|
+
| 702.131 | Ascend | City's blessing at ten permanents | M5 |
|
|
564
|
+
| 702.132 | Assist | Another player may help pay generic costs (works in two-player) | M5 |
|
|
565
|
+
| 702.133 | Jump-Start | Cast from the graveyard by also discarding a card, then exile | M5 |
|
|
566
|
+
| 702.134 | Mentor | On attack, +1/+1 counter on an attacking creature with lesser power | M5 |
|
|
567
|
+
| 702.135 | Afterlife | On death, N 1/1 flying Spirit tokens | M5 |
|
|
568
|
+
| 702.136 | Riot | Choose a +1/+1 counter or haste | M5 |
|
|
569
|
+
| 702.137 | Spectacle | Alternative cost if an opponent lost life this turn | M5 |
|
|
570
|
+
| 702.138 | Escape | Cast from the graveyard by exiling other cards | M5 |
|
|
571
|
+
| 702.139 | Companion | Outside-the-game deckbuilding condition; {3} special action | M5 |
|
|
572
|
+
| 702.140 | Mutate | Merge onto a non-Human creature (731) | M5 |
|
|
573
|
+
| 702.141 | Encore | Exile from the graveyard: token copies attack each opponent | M5 |
|
|
574
|
+
| 702.142 | Boast | Activate only if it attacked this turn, once per turn | M5 |
|
|
575
|
+
| 702.143 | Foretell | Exile face down for {2}; cast later for the foretell cost | M5 |
|
|
576
|
+
| 702.144 | Demonstrate | On cast, may copy; then an opponent copies too | M5 |
|
|
577
|
+
| 702.145 | Daybound and Nightbound | DFC faces tied to day/night (732) | M5 |
|
|
578
|
+
| 702.146 | Disturb | Cast transformed from the graveyard | M5 |
|
|
579
|
+
| 702.147 | Decayed | Can't block; sacrifice at end of combat after attacking | M5 |
|
|
580
|
+
| 702.148 | Cleave | Alternative cost removes bracketed text | M5 |
|
|
581
|
+
| 702.149 | Training | +1/+1 counter when attacking with a creature of greater power | M5 |
|
|
582
|
+
| 702.150 | Compleated | Pay life for Phyrexian mana → fewer loyalty counters | M5 |
|
|
583
|
+
| 702.151 | Reconfigure | Attach/unattach as Equipment; not a creature while attached | M5 |
|
|
584
|
+
| 702.152 | Blitz | Alternative cost; haste, "draw on death"; sacrifice at end of turn | M5 |
|
|
585
|
+
| 702.153 | Casualty | Sacrifice a creature with power ≥ N to copy | M5 |
|
|
586
|
+
| 702.154 | Enlist | Tap a non-attacking creature to add its power | M5 |
|
|
587
|
+
| 702.155 | Read Ahead | Choose the starting Saga chapter | M5 |
|
|
588
|
+
| 702.156 | Ravenous | Enter with X counters; draw if X ≥ 5 | M5 |
|
|
589
|
+
| 702.157 | Squad | Pay additional costs to create token copies | M5 |
|
|
590
|
+
| 702.158 | Space Sculptor | Sector designations (Space Beleren, Un-set) | OOS |
|
|
591
|
+
| 702.159 | Visit | Attraction only | OOS |
|
|
592
|
+
| 702.160 | Prototype | Alternative smaller P/T and mana cost (719) | M5 |
|
|
593
|
+
| 702.161 | Living Metal | An artifact creature during your turn | M5 |
|
|
594
|
+
| 702.162 | More Than Meets the Eye | Cast converted (Transformers) | M5 |
|
|
595
|
+
| 702.163 | For Mirrodin! | Create a 2/2 Rebel and attach to it | M5 |
|
|
596
|
+
| 702.164 | Toxic | Combat damage to a player also gives N poison counters | M5 |
|
|
597
|
+
| 702.165 | Backup | ETB +1/+1 counters on a target; grants its abilities if another creature | M5 |
|
|
598
|
+
| 702.166 | Bargain | Optional sacrifice of an artifact/enchantment/token as an additional cost | M5 |
|
|
599
|
+
| 702.167 | Craft | Exile with materials: return transformed | M5 |
|
|
600
|
+
| 702.168 | Disguise | Face-down 2/2 with ward {2}; turn up for the disguise cost | M5 |
|
|
601
|
+
| 702.169 | Solved | Case abilities once solved (720) | M5 |
|
|
602
|
+
| 702.170 | Plot | Exile from hand (special action); cast free on a later turn at sorcery speed | M5 |
|
|
603
|
+
| 702.171 | Saddle | Tap creatures with total power N: becomes saddled; sorcery speed | M5 |
|
|
604
|
+
| 702.172 | Spree | Choose one or more modes, paying each mode's additional cost | M5 |
|
|
605
|
+
| 702.173 | Freerunning | Alternative cost if an Assassin/commander dealt combat damage | M5 |
|
|
606
|
+
| 702.174 | Gift | Optional "gift" to an opponent that enables a bonus | M5 |
|
|
607
|
+
| 702.175 | Offspring | Additional cost → 1/1 token copy on ETB | M5 |
|
|
608
|
+
| 702.176 | Impending | Alternative cost: enters with time counters, not a creature until they're gone | M5 |
|
|
609
|
+
| 702.177 | Exhaust | Activated ability: activate only once | M5 |
|
|
610
|
+
| 702.178 | Max Speed | Grants an ability while your speed is 4 | M5 |
|
|
611
|
+
| 702.179 | Start Your Engines! | Player speed 1–4; increases once per turn when opponents lose life on your turn | M5 |
|
|
612
|
+
| 702.180 | Harmonize | Cast from the graveyard, tapping a creature to reduce the cost | M5 |
|
|
613
|
+
| 702.181 | Mobilize | On attack, N 1/1 Warrior tokens tapped and attacking; sacrificed at end step | M5 |
|
|
614
|
+
| 702.182 | Job Select | Equipment ETB: 1/1 Hero token and attach | M5 |
|
|
615
|
+
| 702.183 | Tiered | Choose one mode and pay its additional cost | M5 |
|
|
616
|
+
| 702.184 | Station | Tap another creature: charge counters equal to its power; sorcery speed (722) | M5 |
|
|
617
|
+
| 702.185 | Warp | Cast from hand for the warp cost; exiled at the next end step and may be cast later | M5 |
|
|
618
|
+
| 702.186 | ∞ (Infinity) | Grants an ability while the permanent is harnessed | M5 |
|
|
619
|
+
| 702.187 | Mayhem | Cast from the graveyard for the mayhem cost if discarded this turn | M5 |
|
|
620
|
+
| 702.188 | Web-slinging | Alternative cost: pay and return a tapped creature you control | M5 |
|
|
621
|
+
| 702.189 | Firebending | On attack add N {R} that lasts until end of combat | M5 |
|
|
622
|
+
| 702.190 | Sneak | During the declare blockers step, alternative cost returning an unblocked creature | M5 |
|
|
623
|
+
| 702.191 | Increment | +1/+1 counter when you cast a spell with more mana spent than its power or toughness | M5 |
|
|
624
|
+
| 702.192 | Paradigm | After the first resolution, a copy in exile each precombat main phase that you may cast | M5 |
|
|
625
|
+
| 702.193 | Power-up | Activate once; cost reduced by its mana cost if it entered this turn | M5 |
|
|
626
|
+
| 702.194 | Teamwork | Optional additional cost: tap creatures with total power ≥ N | M5 |
|
|
627
|
+
| 702.195 | Storied | Enduring story once you control three or more artifacts/Sagas/legendaries | M5 |
|
|
628
|
+
| 702.196 | Beam me up | Graveyard-cast alternative cost involving returning a creature to hand | M5 |
|
|
629
|
+
|
|
630
|
+
### Other priority mechanics (not keywords)
|
|
631
|
+
|
|
632
|
+
Mechanics that are ★ priority but don't have a 701/702 number: mana abilities
|
|
633
|
+
(605), priority
|
|
634
|
+
(117), costs including X (107.3, 118), modal spells (700.2), +1/+1 counters
|
|
635
|
+
(122.1a), predefined tokens such as Treasure, Clue and Food (111.10), the
|
|
636
|
+
legend rule (704.5j), Auras (303.4), Equipment (301.5), planeswalker loyalty
|
|
637
|
+
(306/606), Sagas (715), DFCs/MDFCs (712), copy effects (707), layers (613),
|
|
638
|
+
replacement/prevention (614–616), "dies" and leaves-the-battlefield triggers
|
|
639
|
+
(603.6/603.10), and summoning sickness (302.6).
|
|
640
|
+
|
|
641
|
+
### Costs, payment and targets: where they are implemented
|
|
642
|
+
|
|
643
|
+
- 107.4e / 202.2d / 202.3f hybrid mana: `Mana::Cost#hybrid`; 601.2h payment `Engine::Payment`.
|
|
644
|
+
- 734.1 / 605.3 rewinding a cast: offered until an irreversible mana ability is activated.
|
|
645
|
+
- 601.2b-d kicker, additional costs, mode counts, optional and distinct targets, dividing: `Engine::CastChoices`.
|
|
646
|
+
- 601.2h / 602.2b chosen costs (sacrifice, tap N, remove counters, graveyard costs): `Mechanics::Costs`.
|
|
647
|
+
- 602.5b activation limits; 118.12 / 701.6a paying while resolving and countering abilities; 702.21 ward.
|
|
648
|
+
|
|
649
|
+
---
|
|
650
|
+
|
|
651
|
+
## Out of scope (listed for completeness)
|
|
652
|
+
|
|
653
|
+
- **Section 8, Multiplayer Rules (800–811)**: range of influence, attack multiple players, Two-Headed Giant, Emperor, and the other team variants.
|
|
654
|
+
- **Section 9, Casual Variants (900–905)**: Planechase, Vanguard, Commander, Archenemy, Conspiracy Draft.
|
|
655
|
+
- Variant-only card types (311–315), ante (407), stickers (123), Attractions (718, 701.51–52, 702.159), Contraptions (701.45), Space Sculptor (702.158, 704.5u), and the variant SBAs and turn-based actions (704.6, 703.4e, 703.4h).
|
|
656
|
+
- Mechanics that are legal in two-player games but rare (goad, vote, monarch, initiative, companion, dethrone) are kept as **M5**, not OOS.
|
|
657
|
+
|
|
658
|
+
## Verification notes
|
|
659
|
+
|
|
660
|
+
- Every 701/702 number and name comes from the TXT heading lines. Descriptions paraphrase each rule's "a" subrule, which was read for all entries.
|
|
661
|
+
- 704.5 letters a–aa, 116.2 a–m, 613.1/613.4/613.7, 616.1a–f, 601.2a–i, 605.1a, 703.4a–q and 734.1 were read in full or near-full.
|
|
662
|
+
- Descriptions of the section 1–6 rules marked n/a or M1 are paraphrases. Check the rule text before implementing; this document is a checklist, not a substitute.
|
|
663
|
+
- Subrule numbers that moved between 2026-09-25 and 2026-11-06 were found by matching rule text across both documents; the table under Sources lists them. Not verified: the exact date of the mana-ability (605.1a) change, and descriptions here were not re-read for wording changes.
|
|
664
|
+
|
|
665
|
+
## Implementation notes: amounts, history, statics and layers
|
|
666
|
+
|
|
667
|
+
- **613 layers.** The layer pass runs in three stages over the whole battlefield (layers 1–4, 5–6, 7), so a later layer sees earlier results: 7a characteristic-defining power/toughness (604.3, card data `"power": <amount>`), 7b setting effects (`set_base_power_toughness`, 613.4b), 7c counters, static bonuses (fixed or computed) and pumps. Layer 4 sets creature types (205.1a: `creature_types` statics, `set_creature_types` until end of turn). Layer 6 adds keywords and granted triggered/mana abilities (613.1f; refs `granted:<card>:<ref>`). Statics may be conditional (`if`, 604.2) and `affects: "self"`. 613.8 is enforced at build time: statics and characteristic-defining amounts can't read power, toughness or combat status.
|
|
668
|
+
- **"This turn" history.** Per-player turn and game logs (spells cast, permanents that entered/died/returned to hand, life gained/lost, dilemmas faced) and per-object "attacked" and "resolved N times" counts, recorded from events in one hook (a cancelled cast never counts, 601.2i).
|
|
669
|
+
- **608.2h last known information.** A source that leaves the battlefield is remembered by its abilities (power, toughness, counters, controller); "its controller" of a destroyed target uses the controller it last had.
|
|
670
|
+
- **202.2 / 204 colors.** Cards have colors from their mana cost or an explicit `colors` list (color indicator, token colors, 111.3); filters take `colors`.
|