enjine 0.1.0 → 0.2.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 +4 -4
- data/CHANGELOG.md +30 -1
- data/SUPPORTED.md +12 -9
- data/docs/MECHANICS_COVERAGE.md +1 -1
- data/docs/guides/card-data-format.md +23 -4
- data/docs/plans/dsl-gaps.md +606 -0
- data/docs/plans/standard.md +3 -0
- data/docs/reference/abilities.md +33 -7
- data/docs/reference/costs.md +11 -1
- data/docs/reference/decisions.md +1 -1
- data/docs/reference/effects.md +30 -9
- data/docs/reference/triggers.md +3 -2
- data/lib/enjine/actions/special_action.rb +4 -2
- data/lib/enjine/engine/casting/alt_casting.rb +18 -2
- data/lib/enjine/engine/casting/casting.rb +3 -3
- data/lib/enjine/engine/casting/costs.rb +5 -1
- data/lib/enjine/engine/casting/permissions.rb +1 -1
- data/lib/enjine/engine/characteristics.rb +0 -13
- data/lib/enjine/engine/defined_power_toughness.rb +30 -0
- data/lib/enjine/engine/mana_sources.rb +8 -1
- data/lib/enjine/engine/resolution.rb +1 -0
- data/lib/enjine/engine/triggers.rb +1 -0
- data/lib/enjine/engine/turn_history.rb +25 -1
- data/lib/enjine/engine/zones.rb +16 -6
- data/lib/enjine/mechanics/abilities/additional_triggers.rb +23 -11
- data/lib/enjine/mechanics/abilities/cost_changes.rb +20 -7
- data/lib/enjine/mechanics/abilities/mana_ability.rb +21 -6
- data/lib/enjine/mechanics/abilities/stack_abilities.rb +13 -9
- data/lib/enjine/mechanics/abilities/static.rb +13 -7
- data/lib/enjine/mechanics/costs/sacrifice.rb +28 -2
- data/lib/enjine/mechanics/effects/become.rb +8 -4
- data/lib/enjine/mechanics/effects/choose_cards.rb +9 -7
- data/lib/enjine/mechanics/effects/delayed_triggers.rb +2 -1
- data/lib/enjine/mechanics/effects/search.rb +15 -8
- data/lib/enjine/mechanics/keywords/plot.rb +79 -0
- data/lib/enjine/mechanics/triggers/casting.rb +8 -6
- data/lib/enjine/mechanics/values.rb +82 -14
- data/lib/enjine/version.rb +1 -1
- metadata +4 -1
|
@@ -0,0 +1,606 @@
|
|
|
1
|
+
# DSL gaps: mechanics missing for FAIL and PARTIAL cards
|
|
2
|
+
|
|
3
|
+
Snapshot of 2026-11-11, taken from deckfinder through its MCP connection (`dsl_status scope: all`).
|
|
4
|
+
Of 1,025 cards in scope (the user's collection, decks and imported opponent decklists), 192 are
|
|
5
|
+
DSL FAIL (no script possible yet) and 87 are DSL PARTIAL (a best-effort script that leaves something out).
|
|
6
|
+
The reasons come from deckfinder's `db/card_scripts/**`, written against enjine 0.1.0.
|
|
7
|
+
|
|
8
|
+
Clusters are grouped by hand from each card's reason. A card can appear in more than one cluster.
|
|
9
|
+
Card names are real cards and appear here only to point at the gap; per
|
|
10
|
+
[the Standard program](standard.md), each mechanic is implemented and tested with **invented** cards.
|
|
11
|
+
|
|
12
|
+
## Quick wins (high impact, small effort)
|
|
13
|
+
|
|
14
|
+
Effort comes from a skim of `lib/` on 2026-11-11 (S: extend an existing primitive; M: a new decision or
|
|
15
|
+
rules plumbing). "Unblocks" counts live cards whose reason names only this gap; check each card's
|
|
16
|
+
full text when writing it.
|
|
17
|
+
|
|
18
|
+
| # | Change | Effort | Unblocks | Cards | Status |
|
|
19
|
+
|---|---|---|---|---|---|
|
|
20
|
+
| 1 | New amounts in `Mechanics::Amount` (`values.rb`, same pattern as `distinct_colors`): `library_size`, `card_types` (distinct card types among cards; kindred and battle nameable in filters), `greatest_mana_value` | S | 9 | Tarmogoyf, Fear of Missing Out, Keen-Eyed Curator, Kitsune's Technique; PARTIAL to exact: Patchwork Beastie, Violent Urge, Wildfire Wickerfolk, Singularity Rupture, Ill-Timed Explosion | Done (Unreleased): `card_types`, `greatest_mana_value`, `library_size` |
|
|
21
|
+
| 2 | Last-known `mana_value` and power for destroyed or sacrificed permanents: add `mana_value` to `TurnHistory#last_known_memory` and read LKI through `{result}` / sacrificed objects | S-M | 5 | Feed the Swarm, Seedship Impact, Tainted Treats, Bolg of the North, Rhovanion Rampager, Repurposing Bay | Done (Unreleased): LKI mana value/power for destroyed targets and `{result}` of sacrifices; `{"sacrificed": ...}` for costs. Reflexive triggers now carry it too (Unreleased); Bolg still needs excess-damage amass |
|
|
22
|
+
| 3 | `discard` with `chooser: you` (reveal, then the caster picks the card, with a filter) | M | 6 | Duress, Deceit, Down Down to Goblin-town, Solve for Disappointment; PARTIAL to exact: Oildeep Gearhulk, Thought-Stalker Warlock | Done (Unreleased): `choose_cards` `put: discard` (with `from: {"hand": …}`, `reveal: "all"`) |
|
|
23
|
+
| 4 | `search_library` `put: graveyard` and `put: library_top` (after the shuffle) | S | 4 | Carnivorous Cultivator // Enroot, Loyal Tutor, Old Thrush; PARTIAL to exact: Insatiable Avarice | Done (Unreleased): `put: graveyard`, `put: library_top`; computed `for` bounds now work |
|
|
24
|
+
| 5 | `limit: once_each_turn` on `mana_ability` (reuse `LIMITS` from `stack_abilities.rb`) | S | 2 | Abzan Devotee, Barrels of Blasting Jelly | Done (Unreleased): `mana` `limit: "once_each_turn"` |
|
|
25
|
+
| 6 | `cost_modifier` `spells` filter by subtype and color | S | 2 | Dragonlord's Servant, The Fire Crystal | Done (Unreleased): `spells` takes `subtypes` and `colors` |
|
|
26
|
+
| 7 | `until_your_next_turn` duration on `become` and keyword grants (already on `pump`, player rules, damage replacements) | S | 2 | Elspeth, Storm Slayer; PARTIAL to exact: Hydro-Man | Done (Unreleased): `grant` and `become` `duration: "until_your_next_turn"` |
|
|
27
|
+
| 8 | Exile-this-permanent cost | S | 2 | Sapling Nursery; PARTIAL to exact: The Echoverse Fulcrum | Done (Unreleased): cost `"exile_self"` |
|
|
28
|
+
| 9 | `additional_triggers` with an `of` filter for any cause (CAUSES is only `you_gain_life`) | S | 1-3 | Katara; partly Roaming Throne, Wizard's Staff | Done (Unreleased): `of` filter (with `other`, `"subtypes": "chosen"`); `cause` optional |
|
|
29
|
+
|
|
30
|
+
Larger but high impact, next in line: **plot** (7 cards, M; done, Unreleased: ability and effect `plot`; Doc Aurlock's
|
|
31
|
+
"plotting costs {2} less" is still open), a **static that grants loyalty abilities** (about 5, M; done, Unreleased, with `"-X"` loyalty costs and
|
|
32
|
+
`activates_ability` `loyalty: true`; instant-speed loyalty and the 0-loyalty rule are still open),
|
|
33
|
+
and the **play-permission** extensions (19 cards, but a mix of separate gaps, L).
|
|
34
|
+
|
|
35
|
+
## Ranking
|
|
36
|
+
|
|
37
|
+
| # | Missing mechanic | Cards | FAIL | PARTIAL |
|
|
38
|
+
|---|---|---|---|---|
|
|
39
|
+
| 1 | [Unimplemented keyword mechanics](#1) | 36 | 18 | 18 |
|
|
40
|
+
| 2 | [Cast/play permissions](#2) | 19 | 15 | 4 |
|
|
41
|
+
| 3 | [Cost modifiers](#3) | 15 | 12 | 3 |
|
|
42
|
+
| 4 | [Last-known information](#4) | 15 | 13 | 2 |
|
|
43
|
+
| 5 | [Zone-move destinations (search/dig/reveal/return)](#5) | 15 | 11 | 4 |
|
|
44
|
+
| 6 | [Mana](#6) | 14 | 10 | 4 |
|
|
45
|
+
| 7 | [Counters](#7) | 12 | 7 | 5 |
|
|
46
|
+
| 8 | [Costs & activation limits](#8) | 12 | 6 | 6 |
|
|
47
|
+
| 9 | [Set types / name (become, return as)](#9) | 11 | 8 | 3 |
|
|
48
|
+
| 10 | [Trigger gaps (extra triggers, Torpor, batched, other events)](#10) | 11 | 10 | 1 |
|
|
49
|
+
| 11 | [Selectors / static filters](#11) | 11 | 10 | 1 |
|
|
50
|
+
| 12 | [Replacement effects](#12) | 10 | 7 | 3 |
|
|
51
|
+
| 13 | [Loyalty abilities](#13) | 9 | 6 | 3 |
|
|
52
|
+
| 14 | [Conditions on an earlier effect's result](#14) | 9 | 7 | 2 |
|
|
53
|
+
| 15 | [Combat](#15) | 9 | 8 | 1 |
|
|
54
|
+
| 16 | [Chosen / filtered discard](#16) | 8 | 5 | 3 |
|
|
55
|
+
| 17 | [Card names](#17) | 8 | 6 | 2 |
|
|
56
|
+
| 18 | [Simultaneous moves](#18) | 8 | 5 | 3 |
|
|
57
|
+
| 19 | [Other-player / non-targeted choices](#19) | 7 | 7 | 0 |
|
|
58
|
+
| 20 | [Card-type counting (delirium, Goyf)](#20) | 7 | 4 | 3 |
|
|
59
|
+
| 21 | [Amounts (library size, greatest MV)](#21) | 7 | 4 | 3 |
|
|
60
|
+
| 22 | [Durations (until your next turn / next end step)](#22) | 6 | 4 | 2 |
|
|
61
|
+
| 23 | [Turn-history conditions](#23) | 5 | 5 | 0 |
|
|
62
|
+
| 24 | [Owner filters](#24) | 5 | 3 | 2 |
|
|
63
|
+
| 25 | [Copy exceptions](#25) | 5 | 4 | 1 |
|
|
64
|
+
| 26 | [Modal (per-turn, up to X, repeat)](#26) | 4 | 3 | 1 |
|
|
65
|
+
| 27 | [Forced retarget](#27) | 4 | 4 | 0 |
|
|
66
|
+
| 28 | [Outside the game](#28) | 3 | 3 | 0 |
|
|
67
|
+
| 29 | [Player rules](#29) | 2 | 1 | 1 |
|
|
68
|
+
|
|
69
|
+
Keyword breakdown: plot 7, craft 4, Case / suspect 3, leyline / opening hand 3, offspring 2, descend 2, impending 2, collect evidence 2, commit a crime 2, harness 2, ninjutsu / sneak 2, Room 1, manifest dread 1, bargain 1, split second 1, pawprint 1.
|
|
70
|
+
|
|
71
|
+
<a id="1"></a>
|
|
72
|
+
## 1. Unimplemented keyword mechanics (36)
|
|
73
|
+
|
|
74
|
+
**Needs:** Set keywords and keyword actions with no primitive.
|
|
75
|
+
|
|
76
|
+
| Card | State | Reason |
|
|
77
|
+
|---|---|---|
|
|
78
|
+
| Aven Interrupter | FAIL | plot (exile target spell, it becomes plotted) not supported |
|
|
79
|
+
| Braided Net // Braided Quipu | FAIL | Craft with artifact (exile this and another artifact / artifact card from graveyard, return transformed) is not supported; also 'its activated abilities can't be activated for as long as it remains tapped' and putting itself third from the top |
|
|
80
|
+
| Case of the Ransacked Lab | FAIL | Case enchantment (To solve / Solved) mechanic not supported |
|
|
81
|
+
| Case of the Stashed Skeleton | PARTIAL | Suspect and solving a Case aren't primitives. The token is created with menace and can't block, which is what suspecting it gives. 'You control no suspected Skeletons' is read as 'no Skeleton you control has can't-block', and being solved is a 'solved' counter put on the Case at the beginning of your end step. |
|
|
82
|
+
| Case of the Uneaten Feast | FAIL | Case mechanic (To solve / Solved, CR 719) not supported; also granting 'you may cast this card from your graveyard' to graveyard cards until end of turn |
|
|
83
|
+
| Clay-Fired Bricks // Cosmium Kiln | FAIL | Craft with artifact (exile this and another artifact / artifact card from graveyard, return transformed) is not supported |
|
|
84
|
+
| Corpses of the Lost | PARTIAL | The end-step trigger ('if you descended this turn, you may pay 1 life; if you do, return this to its owner's hand') is left out: no condition for descend (a permanent card put into your graveyard this turn). |
|
|
85
|
+
| Deadly Cover-Up | FAIL | Collect evidence (CR 701.59) not supported; also searching graveyard/hand/library for cards with that name |
|
|
86
|
+
| Doc Aurlock, Grizzled Genius | PARTIAL | 'Plotting cards from your hand costs {2} less' is left out: Enjine has no plot. |
|
|
87
|
+
| Dust Animus | PARTIAL | Plot {1}{W} is left out (no plot in Enjine). 'Enters with two +1/+1 counters and a lifelink counter if you control five or more untapped lands' is an ETB trigger that checks the same condition, because enters_with_counters takes no condition. |
|
|
88
|
+
| Forsaken Miner | PARTIAL | the 'Whenever you commit a crime, you may pay {B}. If you do, return this card from your graveyard to the battlefield' ability: Enjine has no commit-a-crime trigger |
|
|
89
|
+
| Iridescent Vinelasher | PARTIAL | Offspring {2} is modelled as kicker {2} plus 'when this enters, if it was kicked, create a 1/1 token copy of it' (Enjine has no offspring primitive; it counts as kicked for kicker-matters effects) |
|
|
90
|
+
| Kaito, Bane of Nightmares | FAIL | Ninjutsu (CR 702.49) not supported |
|
|
91
|
+
| Kellan Joins Up | PARTIAL | plot: the exiled card can't become plotted, so it is cast without paying its mana cost at the beginning of your next precombat main phase (a delayed trigger, you may decline) instead of on any later turn at sorcery speed |
|
|
92
|
+
| Leyline of Resonance | PARTIAL | the Leyline opening-hand clause (begin the game with it on the battlefield) has no primitive; it must be cast for {2}{R}{R} |
|
|
93
|
+
| Leyline of the Void | PARTIAL | the opening-hand clause, and the replacement covers only opponents' creatures dying (exile_if_dies) instead of every card going to an opponent's graveyard from anywhere |
|
|
94
|
+
| Magda, the Hoardmaster | FAIL | 'Whenever you commit a crime' trigger not supported |
|
|
95
|
+
| Molten Collapse | FAIL | Descend condition 'if you descended this turn' (no turn-history amount/condition for permanent cards put into your graveyard) |
|
|
96
|
+
| Ninja Teen | FAIL | Level 3: granting sneak {3}{B} to creature cards in your graveyard and casting them from the graveyard using sneak: no primitive grants sneak / alternative costs to graveyard cards |
|
|
97
|
+
| Outcaster Trailblazer | PARTIAL | Plot {2}{G} (no plot keyword) |
|
|
98
|
+
| Overlord of the Balemurk | FAIL | Impending (CR 702.176) not supported |
|
|
99
|
+
| Overlord of the Floodpits | PARTIAL | Impending 4—{1}{U}{U} (no impending: it can only be cast as the 5-mana creature) |
|
|
100
|
+
| Pillage the Bog | PARTIAL | Plot {1}{B}{G} (exile from hand, cast later without paying its mana cost): Enjine has no plot |
|
|
101
|
+
| Quicksilver, Brash Blur | PARTIAL | 'If Quicksilver is in your opening hand, you may begin the game with him on the battlefield': Enjine has no opening-hand (leyline) action |
|
|
102
|
+
| Samut, Tyrant of Naktamun | FAIL | split second (CR 702.61) has no keyword, and no ability grants it to instant and sorcery spells you control |
|
|
103
|
+
| Season of the Burrow | FAIL | pawprint modes ({P} budget of up to five, CR 700.2i) and choosing the same mode more than once: modal spells take only a min/max count of distinct modes |
|
|
104
|
+
| Slickshot Show-Off | FAIL | Plot (CR 702.170) not supported |
|
|
105
|
+
| Spring-Loaded Sawblades // Bladewheel Chariot | FAIL | Craft with artifact (exile this and another artifact / artifact card from graveyard, return transformed) is not supported (card appears twice in the input; listed once) |
|
|
106
|
+
| Starscape Cleric | FAIL | approximation: offspring written as kicker - rejected, exact only |
|
|
107
|
+
| The Enigma Jewel // Locus of Enlightenment | PARTIAL | Craft with four or more nonlands with activated abilities {8}{U} is left out (no craft), so it never transforms; the back face Locus of Enlightenment has none of its abilities (gaining the exiled cards' activated abilities, copying non-mana abilities) |
|
|
108
|
+
| The Mind Stone | FAIL | Harness / ∞ (Infinity Stone) abilities that become active once harnessed are not supported |
|
|
109
|
+
| The Soul Stone | PARTIAL | harness cost 'Exile a creature you control' is paid by sacrificing a creature instead (no exile-a-permanent cost); harnessing is modelled as the Stone gaining the ∞ upkeep trigger for as long as it stays on the battlefield, with the harness ability limited to once (re-harnessing does nothing on the real card) |
|
|
110
|
+
| Torch the Tower | FAIL | Bargain (CR 702.166) not a primitive; and 'if a permanent dealt damage by this spell would die this turn, exile it' needs a replacement conditional on the damage actually being dealt (exile_if_dies on the target ignores prevented damage) |
|
|
111
|
+
| Turn Inside Out | PARTIAL | 'When it dies this turn, manifest dread' is left out (no manifest / face-down 2/2 creatures) |
|
|
112
|
+
| Unholy Annex // Ritual Chamber | PARTIAL | Room layout isn't supported: written as the Unholy Annex half plus a once-only sorcery-speed {3}{B}{B} 'unlock' ability for Ritual Chamber; Ritual Chamber can't be cast on its own and the mana value is always 3 |
|
|
113
|
+
| Urgent Necropsy | PARTIAL | the additional cost 'collect evidence X, where X is the total mana value of the permanents this spell targets' (collect evidence has no primitive), so it is cheaper than printed |
|
|
114
|
+
|
|
115
|
+
<a id="2"></a>
|
|
116
|
+
## 2. Cast/play permissions (19)
|
|
117
|
+
|
|
118
|
+
**Needs:** `play_permission` from the graveyard, with a condition, while you control the source, for one card, with alternative costs (life, waterbend); free-cast and flash-granting statics; `until_your_next_end_step`.
|
|
119
|
+
|
|
120
|
+
| Card | State | Reason |
|
|
121
|
+
|---|---|---|
|
|
122
|
+
| Bard's Company | FAIL | 'You may cast this spell as though it had flash if you control a Human': no conditional flash / cast-timing permission |
|
|
123
|
+
| Case of the Uneaten Feast | FAIL | Case mechanic (To solve / Solved, CR 719) not supported; also granting 'you may cast this card from your graveyard' to graveyard cards until end of turn |
|
|
124
|
+
| Dracogenesis | FAIL | no standing permission 'You may cast Dragon spells without paying their mana costs' |
|
|
125
|
+
| Dragonhawk, Fate's Tempest | FAIL | 'until your next end step' play duration and a delayed amount 'each of those cards that are still exiled' not supported |
|
|
126
|
+
| Flashback | FAIL | Granting flashback to a graveyard card with a cost equal to that card's mana cost (flashback cost must be a fixed string) |
|
|
127
|
+
| Hama, the Bloodbender | FAIL | permission to cast the exiled card during your turn for as long as you control Hama by waterbending {X} (X = its mana value) instead of its mana cost: play_permission has no while-you-control duration, your-turn restriction or alternative waterbend cost |
|
|
128
|
+
| Haste Magic | PARTIAL | 'You may play it until your next end step' is modelled as until end of this turn (Enjine has no 'until your next end step' duration); differs only when cast on an opponent's turn |
|
|
129
|
+
| Inside Information | FAIL | play permission with an alternative cost 'pay life equal to its mana value rather than pay its mana cost' (play_permission has no life-for-mana-cost alternative) |
|
|
130
|
+
| Inti, Seneschal of the Sun | FAIL | Play permission 'until your next end step' (only end_of_turn / end_of_your_next_turn / while_exiled durations) |
|
|
131
|
+
| Leonardo, Sewer Samurai | FAIL | play_from card spec can't filter by power/toughness ('creature spells with power or toughness 1 or less') and play_from has no 'during your turn' restriction |
|
|
132
|
+
| Mosswood Dreadknight // Dread Whispers | PARTIAL | Dread Whispers recast: 'When this creature dies, you may cast it from your graveyard as an Adventure until the end of your next turn' (no casting an Adventure face from outside the hand) |
|
|
133
|
+
| Ninja Teen | FAIL | Level 3: granting sneak {3}{B} to creature cards in your graveyard and casting them from the graveyard using sneak: no primitive grants sneak / alternative costs to graveyard cards |
|
|
134
|
+
| Null Summoner | FAIL | Conditional ongoing permission ('as long as threshold, you may cast the exiled card') not expressible: play_permission has no condition |
|
|
135
|
+
| Omniscience | FAIL | 'You may cast spells from your hand without paying their mana costs' as a static permission: no free-cast static ability (cast_free only works while an effect resolves) |
|
|
136
|
+
| Radagast of Rhosgobel | FAIL | 'The first creature spell you cast each turn costs {2} less and can be cast as though it had flash': cost_modifier has no first-spell-each-turn limit and there is no flash-granting permission for spells |
|
|
137
|
+
| Raphael, Most Attitude | FAIL | 'you may play a card exiled with Raphael' (a single card) — play_permission can't limit the permission to one card among the exiled ones |
|
|
138
|
+
| Tablet of Discovery | FAIL | "You may play that card this turn" for a milled card: play_permission only works for cards in exile, not the graveyard |
|
|
139
|
+
| Timeline Culler | PARTIAL | 'You may cast this card from your graveyard using its warp ability' is left out: warp works from the hand only |
|
|
140
|
+
| Tinybones, Bauble Burglar | PARTIAL | the play permission for stash cards isn't limited to your turn and doesn't end when Tinybones leaves (play_permission while_exiled per card, not a static ability of Tinybones) |
|
|
141
|
+
|
|
142
|
+
<a id="3"></a>
|
|
143
|
+
## 3. Cost modifiers (15)
|
|
144
|
+
|
|
145
|
+
**Needs:** `cost_modifier` spell filters by subtype and color; cost increases (self, for targeting this); first-spell-each-turn limit; one-shot "next spell" grants; equip cost reduction; conditions.
|
|
146
|
+
|
|
147
|
+
| Card | State | Reason |
|
|
148
|
+
|---|---|---|
|
|
149
|
+
| Arachne, Psionic Weaver | PARTIAL | 'As Arachne enters, look at an opponent's hand, then choose a card type other than creature. Spells of the chosen type cost {1} more to cast.' is left out: cost_modifier can't take a chosen card type (its spells filter only lists fixed types) |
|
|
150
|
+
| Don & Raph, Hard Science | FAIL | 'The next noncreature spell you cast this turn has affinity for artifacts': no one-shot effect granting a cost reduction to your next matching spell |
|
|
151
|
+
| Dragon's Prey | FAIL | 'This spell costs {2} more to cast if it targets a Dragon': no self cost-increase primitive (cost_reduction only reduces) |
|
|
152
|
+
| Dragonlord's Servant | FAIL | cost_modifier spells filter takes card types only; no subtype ('Dragon spells') |
|
|
153
|
+
| Dwarven Mauler | FAIL | 'Equip abilities you activate that target this creature cost {2} less': no cost reduction for other permanents' activated abilities conditioned on their target |
|
|
154
|
+
| Eluge, the Shoreless Sea | PARTIAL | The cost reduction only takes off generic mana ('{U} (or {1})' becomes {1} per flood land), so it does nothing for a spell with no generic cost. 'The first instant or sorcery each turn' is an amount that becomes 0 once you've cast an instant or sorcery this turn. (Written as reduce = flood lands x (1 - min(1, instants/sorceries you've cast this turn)), where the min is floor((n+99)/100), because divisors must be fixed integers.) Also, a flood land is an Island only while Eluge is on the battlefield (a static on Eluge), not for as long as the counter stays. |
|
|
155
|
+
| Hearth Elemental // Stoke Genius | FAIL | cost reduction counts graveyard cards that 'have an Adventure': no card filter for Adventure cards |
|
|
156
|
+
| Mistrise Village | FAIL | "The next spell you cast this turn can't be countered": no one-shot uncounterable effect for the next spell |
|
|
157
|
+
| Momo, Friendly Flier | FAIL | cost reduction for only the first non-Lemur creature spell with flying cast each turn |
|
|
158
|
+
| Radagast of Rhosgobel | FAIL | 'The first creature spell you cast each turn costs {2} less and can be cast as though it had flash': cost_modifier has no first-spell-each-turn limit and there is no flash-granting permission for spells |
|
|
159
|
+
| Sunderflock | FAIL | Cost reduction by "the greatest mana value among Elementals you control": no greatest-mana-value amount |
|
|
160
|
+
| Temur Battlecrier | PARTIAL | the 'During your turn' limit: the cost reduction also applies to spells cast on the opponent's turn (cost_modifier takes no condition) |
|
|
161
|
+
| Terror of the Peaks | FAIL | no cost-increase primitive for opponents' spells that target this permanent (additional life payment) |
|
|
162
|
+
| The Fire Crystal | FAIL | cost_modifier can't filter spells by color ("Red spells you cast cost {1} less") |
|
|
163
|
+
| Warrior's Blades | FAIL | Equip cost reduction ('This ability costs {1} less to activate for each +1/+1 counter on the creature it targets'): the equip ability takes only `cost`, no cost_reduction |
|
|
164
|
+
|
|
165
|
+
<a id="4"></a>
|
|
166
|
+
## 4. Last-known information (15)
|
|
167
|
+
|
|
168
|
+
**Needs:** Read power, mana value, counters, attachments and token status of an object after it left the battlefield (destroyed, sacrificed as a cost, died).
|
|
169
|
+
|
|
170
|
+
| Card | State | Reason |
|
|
171
|
+
|---|---|---|
|
|
172
|
+
| Azog, Moria's Ruin | FAIL | 'Its controller amasses Goblins X': amass always acts for the ability's controller (no player parameter); also X = destroyed creature's last-known power |
|
|
173
|
+
| Bolg of the North | FAIL | damage equal to the sacrificed creature's power: no last-known power of a sacrificed creature (a {result} of the sacrifice is the graveyard card, a token ceases to exist) |
|
|
174
|
+
| Donatello, Mutant Mechanic | FAIL | 'put those counters' (every kind of counter the dead artifact had, as it last existed) on a target: add_counters takes one counter kind and counters of the triggering object have no last-known information |
|
|
175
|
+
| Feed the Swarm | FAIL | 'You lose life equal to that permanent's mana value' after destroying it: last known information of a destroyed permanent has no mana value (the amount reads 0, scenario-tested; same gap as Seedship Impact). Writing lose_life before destroy validates and gives the same result, but reorders the printed effects |
|
|
176
|
+
| Graft Surgeon | FAIL | 'put its counters on up to one target creature': moving all (last known) counters of every kind; add_counters needs one named counter kind (same gap as Zack Fair) |
|
|
177
|
+
| Repurposing Bay | FAIL | no amount for the sacrificed artifact's mana value (search for MV = 1 + sacrificed artifact's MV) |
|
|
178
|
+
| Rhovanion Rampager | FAIL | 'counters equal to the sacrificed creature's power': no amount for the last-known power of a creature sacrificed by a cost/effect |
|
|
179
|
+
| Seedship Impact | FAIL | 'If its mana value was 2 or less' after destroying it: last known information of a destroyed permanent doesn't include mana value (amount reads 0) |
|
|
180
|
+
| Sphinx of False Conclusions | FAIL | "When this creature dies, if it isn't a token": no condition can check that the dying source itself wasn't a token (Source condition needs it on the battlefield; triggering-is reads the catalog card, not token status) |
|
|
181
|
+
| Tainted Treats | FAIL | 'If its mana value was 4 or less, create a Food' after destroying it: last known information of a destroyed permanent has no mana value (same gap as Seedship Impact); creating the Food before the destroy would change the order |
|
|
182
|
+
| The Ooze | FAIL | 'For each +1/+1 counter on it' of a creature that left the battlefield: counters amount of the triggering object has no last-known information |
|
|
183
|
+
| Uneasy Alliance | FAIL | '{5}, Sacrifice this Aura: Exile enchanted creature': the `attached` selector finds nothing once the Aura is sacrificed as a cost (no last-known attachment; tested) |
|
|
184
|
+
| Unstoppable Slasher | PARTIAL | 'if it had no counters' reads last-known counters, which Enjine may not remember (could return every time) |
|
|
185
|
+
| Ygra, Eater of All | PARTIAL | the Food dies trigger relies on last-known types granted by its static (unverified) |
|
|
186
|
+
| Zack Fair | FAIL | moving all of its (last known) counters and the Equipment that was attached to it onto the target |
|
|
187
|
+
|
|
188
|
+
<a id="5"></a>
|
|
189
|
+
## 5. Zone-move destinations (search/dig/reveal/return) (15)
|
|
190
|
+
|
|
191
|
+
**Needs:** `search_library` to graveyard, top of library or exile; `dig`/`reveal_until` with conditional or tapped-and-attacking destinations; return attached to a chosen object.
|
|
192
|
+
|
|
193
|
+
| Card | State | Reason |
|
|
194
|
+
|---|---|---|
|
|
195
|
+
| Beseech the Mirror | PARTIAL | the found card goes to your hand instead of exile face down, and when bargained it's cast from your hand (not from exile) without paying its mana cost; otherwise it stays in your hand, as the card says |
|
|
196
|
+
| Carnivorous Cultivator // Enroot | FAIL | Enroot: search_library can't put the found card into the graveyard (put supports only hand/battlefield) |
|
|
197
|
+
| Deep-Cavern Bat | FAIL | Exile a card from an opponent's hand 'until this creature leaves the battlefield' (until_source_leaves returns cards to the battlefield, not to the owner's hand) |
|
|
198
|
+
| Eagle's Rescue | FAIL | return an Aura from the graveyard to the battlefield attached to a target creature: return_to_battlefield has no 'attached to' option (an Aura entering by an effect needs its object chosen, CR 303.4f) |
|
|
199
|
+
| Esper Origins // Summon: Esper Maduin | FAIL | Chapter I 'reveal the top card; if it's a permanent card, put it into your hand' (otherwise it stays on top): dig has no rest=top option |
|
|
200
|
+
| Insatiable Avarice | PARTIAL | Spree mode 1 'put that card on top' is done as search to hand, then put it on top of the library (search_library can't put onto the library) |
|
|
201
|
+
| Lively Dirge | FAIL | Spree with non-targeted 'up to two creature cards with total mana value 4 or less' (no total-mana-value constraint on choose_cards) and search_library putting a card into the graveyard (search_library only puts into hand/battlefield) |
|
|
202
|
+
| Loyal Tutor | FAIL | search_library can only put the found card into hand or onto the battlefield; 'shuffle and put that card on top' of the library has no primitive |
|
|
203
|
+
| Michelangelo's Technique | PARTIAL | puts at most one creature card with mana value 6 or less onto the battlefield instead of up to two with total mana value 6 or less (dig has no total-mana-value limit) |
|
|
204
|
+
| Old Thrush | FAIL | search_library can only put the found card into hand or onto the battlefield; 'shuffle and put that card on top' of the library has no primitive |
|
|
205
|
+
| Part in Friendship | FAIL | reveal_until has a fixed destination (put: hand/battlefield); no way to put the revealed creature onto the battlefield or into hand depending on its mana value vs. lands you control |
|
|
206
|
+
| Pinnacle Starcage | FAIL | "Put each card exiled with this into its owner's graveyard" (all of them) and count them for Robot tokens: no exile->graveyard move-all effect |
|
|
207
|
+
| Raph & Mikey, Troublemakers | FAIL | reveal_until can't put the card onto the battlefield tapped and attacking |
|
|
208
|
+
| Shark Shredder, Killer Clone | FAIL | return_to_battlefield can't put the card onto the battlefield tapped and attacking (that player); also no filter for 'that player's graveyard' beyond controller opponent |
|
|
209
|
+
| Ugin, Eye of the Storms | PARTIAL | the -11 casts the found cards immediately while the ability resolves (cast_free) instead of at any time until end of turn; the found cards pass through the hand before being exiled (search_library can't exile) |
|
|
210
|
+
|
|
211
|
+
<a id="6"></a>
|
|
212
|
+
## 6. Mana (14)
|
|
213
|
+
|
|
214
|
+
**Needs:** Once-per-turn limits and choice costs on mana abilities; tapped-for-mana triggers; spend riders (uncounterable, haste); tracking the source of mana; keeping unspent mana.
|
|
215
|
+
|
|
216
|
+
| Card | State | Reason |
|
|
217
|
+
|---|---|---|
|
|
218
|
+
| Abzan Devotee | FAIL | mana ability with 'Activate only once each turn': mana abilities take no limit (only only_if) |
|
|
219
|
+
| Barrels of Blasting Jelly | FAIL | mana ability with 'Activate only once each turn': mana abilities take no limit (only only_if) |
|
|
220
|
+
| Carnelian Orb of Dragonkind | FAIL | mana-spend rider ('if that mana is spent on a Dragon creature spell, it gains haste') not supported |
|
|
221
|
+
| Cavern of Souls | FAIL | mana that makes the spell it's spent on uncounterable (spend_only has no such rider) |
|
|
222
|
+
| Gene Pollinator | FAIL | Mana ability with a chosen additional cost ('Tap an untapped permanent you control'): mana abilities can't have costs needing a choice |
|
|
223
|
+
| Groundchuck & Dirtbag | FAIL | mana trigger 'Whenever you tap a land for mana, add {G}' (no tapped-for-mana trigger) |
|
|
224
|
+
| Lavaleaper | PARTIAL | 'Whenever a player taps a basic land for mana, that player adds one mana of any type that land produced' (no mana-tapping trigger in Enjine) |
|
|
225
|
+
| Pit of Offerings | PARTIAL | '{T}: Add one mana of any of the exiled cards' colors': no mana ability whose colors come from the cards exiled with it (left out; the land only taps for {C}) |
|
|
226
|
+
| Pyre Rhymer // Molten Tide | FAIL | Molten Tide: 'whenever you tap a Mountain for mana, add an additional {R}' — no tapped-for-mana trigger / mana-adding replacement |
|
|
227
|
+
| Raphael, Ninja Destroyer | FAIL | mana that isn't lost as steps and phases end until end of turn (add_mana `until` supports only end_of_combat) |
|
|
228
|
+
| Scene of the Crime | PARTIAL | '{T}, Tap an untapped creature you control: Add one mana of any color': a mana ability's cost can't need a choice (left out) |
|
|
229
|
+
| Secluded Courtyard | PARTIAL | the chosen creature type: the colored mana can be spent on any creature spell or ability of a creature source, not only of the chosen type (card specs can't read a chosen creature type), so the 'choose a creature type' is dropped |
|
|
230
|
+
| Springleaf Drum | FAIL | mana ability cost with a choice (tap an untapped creature) is rejected by validation |
|
|
231
|
+
| The Last Agni Kai | FAIL | no effect for keeping unspent red mana as steps and phases end until end of turn |
|
|
232
|
+
|
|
233
|
+
<a id="7"></a>
|
|
234
|
+
## 7. Counters (12)
|
|
235
|
+
|
|
236
|
+
**Needs:** `counters_placed` restricted to counters you put; conditional or computed `enters_with_counters`; static +1 counter replacement; counter doubling; removing a counter of any kind; hone counters.
|
|
237
|
+
|
|
238
|
+
| Card | State | Reason |
|
|
239
|
+
|---|---|---|
|
|
240
|
+
| Bristly Bill, Spine Sower | PARTIAL | '{3}{G}{G}: Double the number of +1/+1 counters on each creature you control' is left out: add_counters has no per-creature amount ('its own counters') |
|
|
241
|
+
| Drake Hatcher | PARTIAL | 'Remove three incubation counters from this creature': the remove_counters cost can't be limited to this creature, so it may take incubation counters from any creature you control that has them. |
|
|
242
|
+
| Dust Animus | PARTIAL | Plot {1}{W} is left out (no plot in Enjine). 'Enters with two +1/+1 counters and a lifelink counter if you control five or more untapped lands' is an ETB trigger that checks the same condition, because enters_with_counters takes no condition. |
|
|
243
|
+
| Gev, Scaled Scorch | PARTIAL | 'Other creatures you control enter with an additional +1/+1 counter for each opponent who lost life this turn' is written as a trigger (whenever another creature you control enters, if the opponent lost life this turn, put a +1/+1 counter on it): enters_with_counters with `affects` takes no condition or computed count, so the counter arrives after it enters instead of as it enters |
|
|
244
|
+
| Leatherhead, Swamp Stalker | FAIL | 'Remove a counter from her' of any kind (remove_counters effect requires a counter name; the remove_counters cost isn't restricted to self) |
|
|
245
|
+
| Michelangelo, Weirdness to 11 | FAIL | counter replacement 'that many plus one +1/+1 counters are put on it instead' (for counters put by any player on creatures you control): only double_counters exists (doubling, controller-only) |
|
|
246
|
+
| Miles Morales // Ultimate Spider-Man | PARTIAL | Ultimate Spider-Man's 'Whenever you attack, double the number of each kind of counter on each Spider and legendary creature you control' (no counter-doubling effect) |
|
|
247
|
+
| Myojin of Night's Reach | FAIL | conditional 'enters with a divinity counter if you cast it from your hand' (enters_with_counters has no condition) and cost 'remove a counter from this permanent' (remove_counters cost chooses among permanents you control) |
|
|
248
|
+
| Putrid Pals | FAIL | Disappear: conditional 'enters with two +1/+1 counters if a permanent left the battlefield under your control this turn' — enters_with_counters has no condition (and amounts can't clamp to 0/2) |
|
|
249
|
+
| Sting, Bilbo's Sword | FAIL | hone counters (each grants +1/+0 to the equipped creature) aren't a counter kind Enjine knows; a static reading the counters would emulate the counter's rule |
|
|
250
|
+
| The Great Goblin | FAIL | counters_placed can't be restricted to counters *you* put ('Whenever you put one or more counters on a Goblin, Orc, or Army you control') |
|
|
251
|
+
| Yoshimaru, Beloved Companion | FAIL | static 'If one or more +1/+1 counters would be put on a creature you control, that many plus one ... instead': counter_bonus exists only as an until-end-of-turn effect covering all counters on all your permanents; no static plus-one counter replacement limited to +1/+1 counters on creatures |
|
|
252
|
+
|
|
253
|
+
<a id="8"></a>
|
|
254
|
+
## 8. Costs & activation limits (12)
|
|
255
|
+
|
|
256
|
+
**Needs:** Exile-this and exile-a-permanent costs; counters as costs; computed life payment; variable sacrifice; activation limit on equip.
|
|
257
|
+
|
|
258
|
+
| Card | State | Reason |
|
|
259
|
+
|---|---|---|
|
|
260
|
+
| Dark Knight's Greatsword | PARTIAL | The 'Activate only once each turn' limit on its equip ability: equip takes no limit. |
|
|
261
|
+
| Key to the Side-Door | FAIL | cost 'Discard a legendary card with the same name as a legendary permanent you control' (card spec can't compare names with permanents you control) |
|
|
262
|
+
| Madame Null, Power Broker | FAIL | 'you may pay life equal to its power': pay / pay_life take only a fixed integer or announced X, not a computed amount (lose_life would not be a cost and ignores CR 119.4) |
|
|
263
|
+
| Mazemind Tome | PARTIAL | 'Put a page counter on this artifact' is paid as the first effect of each ability instead of as a cost; the state trigger 'when there are four or more page counters' is a trigger when a page counter is put on it while it has four or more |
|
|
264
|
+
| My Precious // Allure of Power | FAIL | equip with a life-payment cost isn't supported by the guide and was never exercised |
|
|
265
|
+
| Myojin of Night's Reach | FAIL | conditional 'enters with a divinity counter if you cast it from your hand' (enters_with_counters has no condition) and cost 'remove a counter from this permanent' (remove_counters cost chooses among permanents you control) |
|
|
266
|
+
| Rottenmouth Viper | PARTIAL | the optional additional cost 'sacrifice any number of nonland permanents; costs {1} less for each' (no variable-count sacrifice cost); the blight-counter punishment repeats at most 8 times (once per counter up to 8) because effects can't loop over an amount |
|
|
267
|
+
| Sapling Nursery | FAIL | Activated-ability cost 'Exile this enchantment' from the battlefield (no exile-self cost) |
|
|
268
|
+
| Shredder's Armor | FAIL | Equip—Sacrifice another nonland permanent with 'Activate only once each turn': the equip ability takes no limit (writing it as a plain activated ability would stop it being an equip ability) |
|
|
269
|
+
| The Echoverse Fulcrum | PARTIAL | the activated ability's cost 'Exile The Echoverse Fulcrum' is paid by sacrificing it instead (no exile-this-permanent cost) |
|
|
270
|
+
| The Soul Stone | PARTIAL | harness cost 'Exile a creature you control' is paid by sacrificing a creature instead (no exile-a-permanent cost); harnessing is modelled as the Stone gaining the ∞ upkeep trigger for as long as it stays on the battlefield, with the harness ability limited to once (re-harnessing does nothing on the real card) |
|
|
271
|
+
| Urban Retreat | PARTIAL | the '{2}, Return a tapped creature you control to its owner's hand: Put this card from your hand onto the battlefield' ability (no return-a-creature cost, no hand-to-battlefield move of the card itself) |
|
|
272
|
+
|
|
273
|
+
<a id="9"></a>
|
|
274
|
+
## 9. Set types / name (become, return as) (11)
|
|
275
|
+
|
|
276
|
+
**Needs:** `become` / return-to-battlefield that sets (not only adds) card types and subtypes, sets a name, or gives all creature types.
|
|
277
|
+
|
|
278
|
+
| Card | State | Reason |
|
|
279
|
+
|---|---|---|
|
|
280
|
+
| Ardyn, the Usurper | FAIL | token copy 'except it's a 5/5 black Demon' must replace creature types; copy `except.subtypes` only adds subtypes |
|
|
281
|
+
| Brilliance Unleashed | FAIL | Return a noncreature artifact card and 'it's a 3/3 Robot artifact creature with flying' as it enters: return_to_battlefield can't make it enter as a creature (become only applies after it entered, so creature-enters triggers would miss it) |
|
|
282
|
+
| Enduring Curiosity | FAIL | Return to the battlefield as a non-creature ('It's an enchantment') needs removing the creature type indefinitely; become has no set_types |
|
|
283
|
+
| Ghost Vacuum | FAIL | no selector for only the creature cards among exiled_with cards (+ enter with flying counter and become 1/1 Spirit) |
|
|
284
|
+
| Kitesail Larcenist | FAIL | become effect cannot set card types ('become Treasure artifacts' loses creature type; no set_types on become); per-player target choice |
|
|
285
|
+
| Nameless Inversion | PARTIAL | 'loses all creature types until end of turn' is left out (set_creature_types and become need at least one creature type) |
|
|
286
|
+
| Oko, Lorwyn Liege // Oko, Shadowmoor Scion | PARTIAL | the -6 ('Choose a creature type. You get an emblem with "Creatures you control of the chosen type get +3/+3 and have vigilance and hexproof"') is left out: an emblem can't remember the chosen type; the +2 gives changeling for 'gains all creature types' |
|
|
287
|
+
| Soulstone Sanctuary | FAIL | 'becomes a 3/3 creature with all creature types' (permanent, layer-4 type setting): become has no 'all creature types' form; granting the changeling keyword is an ability, not the same (lost by loses-all-abilities) |
|
|
288
|
+
| Supper for Spiders | FAIL | no graveyard-card filter for 'put there from the battlefield this turn', and no way to return cards as Food artifacts that lose all other card types/subtypes (become/return_to_battlefield can't set types) |
|
|
289
|
+
| The Irencrag | FAIL | becoming an Equipment with a new name (Everflame) and gaining equip {3}: `become` can't set a name and can't grant an equip ability |
|
|
290
|
+
| Zhao, the Moon Slayer | PARTIAL | 'Nonbasic lands enter tapped' (no enters-tapped replacement for other permanents) and the conqueror-counter static making nonbasic lands Mountains that lose their other land types and abilities (no land-type-setting static) |
|
|
291
|
+
|
|
292
|
+
<a id="10"></a>
|
|
293
|
+
## 10. Trigger gaps (extra triggers, Torpor, batched, other events) (11)
|
|
294
|
+
|
|
295
|
+
**Needs:** `additional_triggers` beyond `you_gain_life`; Torpor-style trigger suppression; batched "one or more" triggers; opponent-searches, spell-becomes-target and discard-this-card triggers.
|
|
296
|
+
|
|
297
|
+
| Card | State | Reason |
|
|
298
|
+
|---|---|---|
|
|
299
|
+
| Codie, Ravenous Codex | FAIL | No spell filter for a 'prepared spell' (a prepare-spell copy cast from exile) for the cast trigger |
|
|
300
|
+
| Doorkeeper Thrull | FAIL | 'Artifacts and creatures entering don't cause abilities to trigger' (trigger suppression, Torpor Orb style) not supported |
|
|
301
|
+
| Great Fierce Bee | FAIL | 'Whenever one or more other creatures die': dies trigger has no batched form; put_into graveyard can't exclude this creature (no 'other') and isn't a leaves-the-battlefield look-back |
|
|
302
|
+
| Karn, Argent Defender | FAIL | Torpor-style static 'artifacts and creatures entering don't cause abilities to trigger' has no primitive; the card is otherwise a vanilla 1/3 |
|
|
303
|
+
| Katara, the Fearless | FAIL | additional_triggers supports only cause you_gain_life; no 'triggered abilities of Allies you control trigger an additional time' (subject filter); the card is otherwise a vanilla 3/3 |
|
|
304
|
+
| Roaming Throne | PARTIAL | 'If a triggered ability of another creature you control of the chosen type triggers, it triggers an additional time': additional_triggers only supports cause you_gain_life |
|
|
305
|
+
| Spiritcall Enthusiast // Scrollboost | FAIL | 'one or more tokens enter' written as one trigger per token (approximation) |
|
|
306
|
+
| Super Intelligence | FAIL | trigger 'at the beginning of the upkeep of enchanted creature's controller' (step_begins whose is relative to the Aura's controller; no condition comparing the active player with the enchanted creature's controller) |
|
|
307
|
+
| Surrak, Elusive Hunter | FAIL | becomes_target trigger for 'a creature spell you control' (becomes_target only watches permanents on the battlefield) |
|
|
308
|
+
| Torpor Orb | FAIL | "Creatures entering don't cause abilities to trigger": no trigger-suppression static |
|
|
309
|
+
| Wan Shi Tong, Librarian | FAIL | No trigger for 'whenever an opponent searches their library' |
|
|
310
|
+
|
|
311
|
+
<a id="11"></a>
|
|
312
|
+
## 11. Selectors / static filters (11)
|
|
313
|
+
|
|
314
|
+
**Needs:** `each` scoped to a targeted player; "all other" creatures; attacking and tapped filters in statics; every card in a hand.
|
|
315
|
+
|
|
316
|
+
| Card | State | Reason |
|
|
317
|
+
|---|---|---|
|
|
318
|
+
| Avatar's Wrath | FAIL | no selector for 'all other creatures' (each creature except the chosen target) for airbend |
|
|
319
|
+
| Dark Leo & Shredder | FAIL | static 'Attacking Ninjas you control have deathtouch': the attacking filter can't be used in a static ability yet |
|
|
320
|
+
| Face Yourself | FAIL | token copies 'except it has haste and "At the beginning of the end step, if you don't control a planeswalker, sacrifice this creature"': create_token_copy except can't add a triggered ability; also no selector for 'each creature target player controls' |
|
|
321
|
+
| Gnashing of Teeth | FAIL | mode 2 'Creatures target player controls get -1/-1': selector `each` can't be scoped to a targeted player (same gap as Practiced Offense) |
|
|
322
|
+
| Hex Magic | FAIL | 'Exile all the cards from your hand': no selector for every card in a hand (choose_cards 'any' is optional, not all) |
|
|
323
|
+
| Lost in the Maze | PARTIAL | 'Tapped creatures you control have hexproof' is left out (a static ability can't filter on tapped yet); 'X target creatures' may only be creatures an opponent controls (the card can also tap your own creatures, which then get no stun counter): an effect can't put counters on only the targets you don't control |
|
|
324
|
+
| Practiced Offense | FAIL | no selector for 'each creature target player controls' |
|
|
325
|
+
| Settle the Wreckage | FAIL | "all attacking creatures target player controls": selector `each` can't be scoped to a targeted player |
|
|
326
|
+
| Tishana's Tidebinder | FAIL | Selector for the source permanent of a countered (targeted) ability, to make it lose all abilities, does not exist |
|
|
327
|
+
| Turtle Van | FAIL | no target filter for 'creature that crewed it this turn' (and doubling the +1/+1 counters on it) |
|
|
328
|
+
| Twisted Fates | FAIL | no selector for 'each creature target player controls' (each-selector can't be scoped to a targeted player) |
|
|
329
|
+
|
|
330
|
+
<a id="12"></a>
|
|
331
|
+
## 12. Replacement effects (10)
|
|
332
|
+
|
|
333
|
+
**Needs:** Life-gain replacement; others enter tapped; Rest in Peace; filtered token replacement and tripling; draw +1; set or heal damage; exile a countered spell.
|
|
334
|
+
|
|
335
|
+
| Card | State | Reason |
|
|
336
|
+
|---|---|---|
|
|
337
|
+
| Angel of Vitality | FAIL | life-gain replacement ('If you would gain life, you gain that much life plus 1 instead') has no primitive |
|
|
338
|
+
| Authority of the Consuls | FAIL | 'Creatures your opponents control enter tapped' (enters-tapped replacement for other permanents) has no primitive; enters_tapped is self only |
|
|
339
|
+
| Bloodletter of Aclazotz | PARTIAL | the life-loss doubling is approximated: at the beginning of your upkeep (and when it enters during your turn) damage dealt to an opponent is doubled until end of turn. Non-damage life loss isn't doubled, and the doubling lasts the rest of the turn even if Bloodletter leaves |
|
|
340
|
+
| Draconic Visitor | FAIL | token_replacement replaces every token; no filter for only artifact tokens ('If one or more artifact tokens would be created') |
|
|
341
|
+
| Leyline of the Void | PARTIAL | the opening-hand clause, and the replacement covers only opponents' creatures dying (exile_if_dies) instead of every card going to an opponent's graveyard from anywhere |
|
|
342
|
+
| No More Lies | FAIL | counter_unless_pays can't exile the countered spell instead of putting it into the graveyard |
|
|
343
|
+
| Quantum Riddler | FAIL | conditional draw replacement 'draw that many plus one' (draw_replacement only multiplies per card, no condition) |
|
|
344
|
+
| Rest in Peace | FAIL | Replacement 'if a card or token would be put into a graveyard from anywhere, exile it instead' (exile_if_dies covers only permanents dying) |
|
|
345
|
+
| Wolverine, Fierce Fighter | FAIL | Damage replacement 'that damage is dealt, but all other damage already dealt to him is healed' (damage_replacement has no heal-prior-damage option) |
|
|
346
|
+
| Zhao, the Moon Slayer | PARTIAL | 'Nonbasic lands enter tapped' (no enters-tapped replacement for other permanents) and the conqueror-counter static making nonbasic lands Mountains that lose their other land types and abilities (no land-type-setting static) |
|
|
347
|
+
|
|
348
|
+
<a id="13"></a>
|
|
349
|
+
## 13. Loyalty abilities (9)
|
|
350
|
+
|
|
351
|
+
**Needs:** Statics granting loyalty abilities; loyalty-ability activation triggers; instant-speed loyalty; -X loyalty costs.
|
|
352
|
+
|
|
353
|
+
| Card | State | Reason |
|
|
354
|
+
|---|---|---|
|
|
355
|
+
| Avatar of Burgeoning Echoes | FAIL | static ability cannot grant loyalty abilities ('Planeswalkers you control have [-10]: ...') |
|
|
356
|
+
| Chandra, Chill of Compliance | PARTIAL | Loyalty costs can't be −X, so −X is written as six fixed abilities, 0 (only taps) and −1 to −5 (tap, then put that many stun counters). X ≥ 6 is missing. |
|
|
357
|
+
| Gideon the Oathless | FAIL | 'Whenever an opponent activates a loyalty ability': activates_ability has no loyalty-ability-only discriminator (a planeswalker source filter would also match its non-loyalty activated abilities) |
|
|
358
|
+
| Jace's Machinations | FAIL | Loyalty abilities activated at instant speed / on any player's turn: no rule-changing effect for loyalty-ability timing |
|
|
359
|
+
| Kiora of Salt and Sand | FAIL | static ability granting a loyalty ability to planeswalkers you control ('Planeswalkers you control have [-8]: ...') is not supported |
|
|
360
|
+
| Sanctum Lurker | PARTIAL | 'Planeswalkers you control aren't put into their owners' graveyards for having 0 loyalty' and 'Planeswalkers you control have [+2]: ...' (a static can't change the 0-loyalty rule or grant loyalty abilities) |
|
|
361
|
+
| Way of the Deathbringer | FAIL | static ability cannot grant loyalty abilities ('Planeswalkers you control have [-2]: ...'), same gap as Avatar of Burgeoning Echoes |
|
|
362
|
+
| Way of the Healer | FAIL | static ability cannot grant loyalty abilities ('Planeswalkers you control have [-2]: ...'), same gap as Avatar of Burgeoning Echoes |
|
|
363
|
+
| Way of the Pyromancer | PARTIAL | 'Planeswalkers you control have "[+1]: Add {R}."' (a static can't grant loyalty abilities) |
|
|
364
|
+
|
|
365
|
+
<a id="14"></a>
|
|
366
|
+
## 14. Conditions on an earlier effect's result (9)
|
|
367
|
+
|
|
368
|
+
**Needs:** Filtered result counts and qualities (type of card exiled/discarded this way, whether damage was dealt, whether a card was cast); `if` on delayed triggers.
|
|
369
|
+
|
|
370
|
+
| Card | State | Reason |
|
|
371
|
+
|---|---|---|
|
|
372
|
+
| Chandra, Torch of Defiance | FAIL | +1 'You may cast that card. If you don't, ...': cast effect can't report whether the card was cast, so the 'if you don't' branch isn't exact |
|
|
373
|
+
| Dalkovan Encampment | FAIL | nested delayed trigger can't name tokens created inside the outer 'whenever you attack this turn' delayed trigger (results_count of delayed effects), so 'sacrifice them' can't be expressed |
|
|
374
|
+
| Deadly Brew | FAIL | 'If you sacrificed a permanent this way' needs to know whether YOU (not each player) sacrificed via the shared sacrifice_choice, and 'another permanent card' must exclude the card you sacrificed: no per-player result count nor exclusion of an earlier result |
|
|
375
|
+
| Garruk, Veiled Butcher | PARTIAL | −2: you sacrifice first and then the opponent (one after the other instead of at once) so 'if you sacrificed a creature this way' can read your own sacrifice; −3: draws if the opponent discarded fewer than two cards, without checking that the discarded cards were nonland (no filtered result count) |
|
|
376
|
+
| Glamdring, Foe-hammer // Gleam of Death | FAIL | Gleam of Death: 'mill six, then put ALL instant and sorcery cards from among them into your hand' - no filtered {result: n} selector; choose_cards count 'any' lets you take fewer (not mandatory) and dig isn't a mill |
|
|
377
|
+
| Raven Eagle | PARTIAL | the Clue is created before the exile instead of after (order swapped so the creature-card condition can be read) |
|
|
378
|
+
| Seasoned Cryomancer | FAIL | Reflexive trigger needs the number of NONLAND cards discarded by an earlier discard effect (no filtered result count) |
|
|
379
|
+
| The Black Arrow | FAIL | 'If a Dragon is dealt damage this way, destroy it': nothing records whether damage was actually dealt (deal_damage's this_way is excess damage), so prevented damage can't be told apart |
|
|
380
|
+
| Town Greeter | FAIL | 'If you put a Town card into your hand this way' needs a condition on the quality of the card chosen by an earlier choose_cards effect |
|
|
381
|
+
|
|
382
|
+
<a id="15"></a>
|
|
383
|
+
## 15. Combat (9)
|
|
384
|
+
|
|
385
|
+
**Needs:** Attacks-alone triggers; defending-player conditions; attack/block taxes; can't be blocked by more than one; attack-count limits; can't be attacked.
|
|
386
|
+
|
|
387
|
+
| Card | State | Reason |
|
|
388
|
+
|---|---|---|
|
|
389
|
+
| Howlsquad Heavy | FAIL | 'That token attacks this combat if able': only attacks_each_combat exists, which granted until end of turn would also force attacks in additional combat phases (no per-combat requirement) |
|
|
390
|
+
| Jiang Yanggu, Alone | FAIL | trigger 'a creature you control attacks a player alone' (attacks trigger has no alone / defending-player-is-a-player restriction) |
|
|
391
|
+
| Loot, the Anomaly | FAIL | 'If his power is negative, he assigns combat damage as though his power were positive' has no primitive |
|
|
392
|
+
| Luke Cage, Power Man | FAIL | 'attacks alone' written as a player_attacks trigger, not an attack trigger of the creature (same gap as Spider-Man Noir) |
|
|
393
|
+
| Meltstrider's Resolve | FAIL | 'Can't be blocked by more than one creature' (no blocking-count restriction keyword/ability) |
|
|
394
|
+
| Preacher of the Schism | FAIL | Trigger condition on the attacked player ('attacks the player with the most life'): attacks trigger exposes no defending player |
|
|
395
|
+
| Spider-Man Noir | FAIL | 'Whenever a creature you control attacks alone' has no trigger: attacks triggers fire per creature as it is declared, so a 'only one attacker' check can't be made at declaration end, and player_attacks can't name 'it' |
|
|
396
|
+
| The Aetherspark | PARTIAL | 'As long as The Aetherspark is attached to a creature, The Aetherspark can't be attacked' is left out (no can't-be-attacked primitive) |
|
|
397
|
+
| Tomik, Orzhov Lawmage | FAIL | 'No more than one creature can attack this planeswalker each combat' (attack-count restriction) has no primitive |
|
|
398
|
+
|
|
399
|
+
<a id="16"></a>
|
|
400
|
+
## 16. Chosen / filtered discard (8)
|
|
401
|
+
|
|
402
|
+
**Needs:** Discard of a card chosen by another player; discard filters (nonland, keyword).
|
|
403
|
+
|
|
404
|
+
| Card | State | Reason |
|
|
405
|
+
|---|---|---|
|
|
406
|
+
| Bandit's Talent | PARTIAL | ETB 'each opponent discards two cards unless they discard a nonland card': the opponent may discard any one card (a land too) instead of two, since a discard effect can't require a nonland card |
|
|
407
|
+
| Deceit | FAIL | Second ETB: 'you choose a nonland card from it; that player discards that card' - chosen discard not supported |
|
|
408
|
+
| Down, Down to Goblin-town | FAIL | Chapter I: 'You choose a nonland card from it. That player discards that card' - discard chosen by another player is not supported (same gap as Duress) |
|
|
409
|
+
| Duress | FAIL | 'You choose a card from their hand; that player discards it' - discard effect has no chooser/card choice (choose_cards put graveyard is not a discard) |
|
|
410
|
+
| Oildeep Gearhulk | PARTIAL | the chosen card is put into the graveyard instead of discarded (no chosen-discard effect, so discard triggers don't see it) |
|
|
411
|
+
| Solve for Disappointment | FAIL | 'You choose a nonland permanent card from it. That player discards that card.': no chosen-discard primitive (choose_cards put graveyard isn't a discard; same gap as Duress) |
|
|
412
|
+
| Steamcore Scholar | FAIL | 'discard two unless you discard an instant/sorcery or a creature card with flying': card spec has no keyword filter |
|
|
413
|
+
| Thought-Stalker Warlock | PARTIAL | if the opponent lost life this turn, the nonland card you choose from their revealed hand is put into their graveyard rather than discarded (Enjine has no discard of a card chosen by another player), so discard triggers don't see it |
|
|
414
|
+
|
|
415
|
+
<a id="17"></a>
|
|
416
|
+
## 17. Card names (8)
|
|
417
|
+
|
|
418
|
+
**Needs:** Choosing a card name; same-name filters; searching graveyard, hand and library by name.
|
|
419
|
+
|
|
420
|
+
| Card | State | Reason |
|
|
421
|
+
|---|---|---|
|
|
422
|
+
| Ancestral Anger | PARTIAL | X counts only the base 1: no amount for 'the number of cards named Ancestral Anger in your graveyard' (graveyard filters take no name), so the target always gets +1/+0 |
|
|
423
|
+
| Ancient Vendetta | FAIL | Choose a card name; search an opponent's graveyard, hand and library for cards with that name |
|
|
424
|
+
| Deadly Cover-Up | FAIL | Collect evidence (CR 701.59) not supported; also searching graveyard/hand/library for cards with that name |
|
|
425
|
+
| Key to the Side-Door | FAIL | cost 'Discard a legendary card with the same name as a legendary permanent you control' (card spec can't compare names with permanents you control) |
|
|
426
|
+
| Maelstrom Pulse | PARTIAL | 'and all other permanents with the same name as that permanent': no same-name filter; only the target is destroyed |
|
|
427
|
+
| Petrified Hamlet | FAIL | Choose a land card name on an ETB trigger; grant mana ability / ban activation for sources with the chosen name (no name filter for chosen names) |
|
|
428
|
+
| Sorcerous Spyglass | FAIL | As-enters look at opponent's hand + choose any card name; ban activated abilities of sources with the chosen name (no name filter for cant_activate) |
|
|
429
|
+
| The End | FAIL | Search controller's graveyard, hand and library for same-name cards, then draw for each exiled from hand; also a life-total cost reduction |
|
|
430
|
+
|
|
431
|
+
<a id="18"></a>
|
|
432
|
+
## 18. Simultaneous moves (8)
|
|
433
|
+
|
|
434
|
+
**Needs:** Moving several objects at once (approximations with sequential moves are rejected as inexact).
|
|
435
|
+
|
|
436
|
+
| Card | State | Reason |
|
|
437
|
+
|---|---|---|
|
|
438
|
+
| Last Light of Durin's Day | FAIL | hand-and/or-library search split into hand-or-library (approximation) |
|
|
439
|
+
| Leonardo's Technique | FAIL | two creatures return one after another, not simultaneously (approximation) |
|
|
440
|
+
| Moment of Glory | FAIL | the graveyard branch puts counters on each creature you control, which misses an opponent's targeted creature (approximation) |
|
|
441
|
+
| Rush of Dread | PARTIAL | 'sacrifices half the creatures they control, rounded up' is done as one sacrifice at a time (each while they still control at least as many creatures as sacrifices so far +1, which gives the same number, at most 10) instead of all at once |
|
|
442
|
+
| Sandman, Shifting Scoundrel | PARTIAL | returns this card and the land card one after the other instead of at once |
|
|
443
|
+
| Sphinx's Approach | FAIL | the spell and the four graveyard cards are exiled at different moments, not simultaneously (approximation) |
|
|
444
|
+
| Tersa Lightshatter | PARTIAL | the two discards happen one at a time instead of together (a 'one or more cards' discard trigger could fire twice) |
|
|
445
|
+
| Troop of Ponies | FAIL | land goes library -> hand -> battlefield and the shuffle happens earlier (approximation of putting one onto the battlefield and one into hand) |
|
|
446
|
+
|
|
447
|
+
<a id="19"></a>
|
|
448
|
+
## 19. Other-player / non-targeted choices (7)
|
|
449
|
+
|
|
450
|
+
**Needs:** An opponent choosing what to exile; per-player APNAP choices (wheels); non-targeted choice of a permanent on resolution; attach to the triggering object.
|
|
451
|
+
|
|
452
|
+
| Card | State | Reason |
|
|
453
|
+
|---|---|---|
|
|
454
|
+
| Clash of Elements | FAIL | The permanent's OWNER decides (top of library or bottom) and is dealt the damage: no owner selector (controller_of differs for stolen permanents) and no follow-up conditioned on the owner's top/bottom choice |
|
|
455
|
+
| Quintessential Katana | FAIL | 'you may attach this Equipment to it' (the entering Ninja): attach.to only accepts {target}, self or {result}, not the triggering object |
|
|
456
|
+
| Raphael's Technique | FAIL | 'Each player may discard their hand and draw seven': choices in APNAP order then simultaneous discards/draws (CR 101.4); no per-player simultaneous may primitive |
|
|
457
|
+
| Strategic Betrayal | FAIL | 'Target opponent exiles a creature they control' (opponent-chosen exile of a permanent) has no primitive (only sacrifice_choice/return_choice) |
|
|
458
|
+
| Variable Chaser // Arc of Fortune | FAIL | Arc of Fortune: 'Each player may discard their hand and draw seven cards' needs per-player choices in APNAP order then simultaneous discard/draw (CR 101.4); no per-player simultaneous may primitive (same gap as Raphael's Technique) |
|
|
459
|
+
| Vow to Erebor | FAIL | 'you may attach an Equipment you control to it': attach has no non-targeted choice of one Equipment among those you control (attachment is a fixed selector) |
|
|
460
|
+
| Winnowing | FAIL | 'For each player, you choose a creature that player controls. Then each player sacrifices all other creatures they control that don't share a creature type with the chosen creature': no non-targeted per-player creature choice and no 'shares a creature type with' filter |
|
|
461
|
+
|
|
462
|
+
<a id="20"></a>
|
|
463
|
+
## 20. Card-type counting (delirium, Goyf) (7)
|
|
464
|
+
|
|
465
|
+
**Needs:** An amount for the number of card types among cards; kindred and battle nameable in filters.
|
|
466
|
+
|
|
467
|
+
| Card | State | Reason |
|
|
468
|
+
|---|---|---|
|
|
469
|
+
| April O'Neil, Hacktivist | FAIL | no amount for 'the number of card types among spells you've cast this turn'; spelling it as one conditional draw per type fails because kindred (and battle) can't be named in a spell filter |
|
|
470
|
+
| Fear of Missing Out | FAIL | Delirium: no condition/amount for the number of card types among cards in your graveyard |
|
|
471
|
+
| Keen-Eyed Curator | FAIL | 'Four or more card types among cards exiled with this creature' (distinct_types counts creature types, no card-type count amount) |
|
|
472
|
+
| Patchwork Beastie | PARTIAL | kindred and battle cards in the graveyard don't count toward delirium's card types (graveyard_card can't name them); delirium is spelled as 'any four of the seven other card types are present' |
|
|
473
|
+
| Tarmogoyf | FAIL | no amount for the number of card types among cards in all graveyards (distinct_types counts creature types only) |
|
|
474
|
+
| Violent Urge | PARTIAL | delirium counts only artifact, creature, enchantment, instant, land, planeswalker and sorcery (kindred and battle aren't counted: filters can't name them); written as 'any 4 of these 7 types in your graveyard' |
|
|
475
|
+
| Wildfire Wickerfolk | PARTIAL | delirium counts only artifact, creature, enchantment, instant, land, planeswalker and sorcery (kindred and battle aren't counted: filters can't name them) |
|
|
476
|
+
|
|
477
|
+
<a id="21"></a>
|
|
478
|
+
## 21. Amounts (library size, greatest MV) (7)
|
|
479
|
+
|
|
480
|
+
**Needs:** Library-size amount; greatest mana value among a selection.
|
|
481
|
+
|
|
482
|
+
| Card | State | Reason |
|
|
483
|
+
|---|---|---|
|
|
484
|
+
| Break Under Pressure | FAIL | "with the greatest mana value among creatures and planeswalkers they control": no greatest-mana-value amount for a sacrifice filter |
|
|
485
|
+
| Doomsday Excruciator | PARTIAL | The ETB 'if it was cast, each player exiles all but the bottom six cards of their library face down' is left out: there's no library-size amount. |
|
|
486
|
+
| Ill-Timed Explosion | PARTIAL | X is the total mana value of the two discarded cards instead of the greatest (Enjine has no 'greatest mana value' amount); identical whenever one discarded card has mana value 0 (e.g. a land) |
|
|
487
|
+
| Jace, Reality Sculptor | FAIL | 0: 'Exile all but the bottom card of each opponent's library' needs a library-size amount (none exists); also the activation condition 'twenty-five or more loyalty counters among Jaces you control' |
|
|
488
|
+
| Kitsune's Technique | FAIL | 'mills half their library, rounded up' needs a library-size amount (none exists) |
|
|
489
|
+
| Singularity Rupture | PARTIAL | the mill clause: 'then any number of target players each mill half their library, rounded down' is left out (Enjine has no library-size amount) |
|
|
490
|
+
| Sunderflock | FAIL | Cost reduction by "the greatest mana value among Elementals you control": no greatest-mana-value amount |
|
|
491
|
+
|
|
492
|
+
<a id="22"></a>
|
|
493
|
+
## 22. Durations (until your next turn / next end step) (6)
|
|
494
|
+
|
|
495
|
+
**Needs:** `until_your_next_turn` on `become` and keyword grants; `until_your_next_end_step` for play permissions.
|
|
496
|
+
|
|
497
|
+
| Card | State | Reason |
|
|
498
|
+
|---|---|---|
|
|
499
|
+
| Absorbing Man | FAIL | become_copy has no 'until your next turn' duration (only end_of_turn/permanent); also the copy exception 'legendary 4/4 Human Villain creature in addition to his other types' with a fixed name |
|
|
500
|
+
| Dragonhawk, Fate's Tempest | FAIL | 'until your next end step' play duration and a delayed amount 'each of those cards that are still exiled' not supported |
|
|
501
|
+
| Elspeth, Storm Slayer | FAIL | 0 ability: keyword grant 'gain flying until your next turn' (grant/become have no until_your_next_turn duration) |
|
|
502
|
+
| Haste Magic | PARTIAL | 'You may play it until your next end step' is modelled as until end of this turn (Enjine has no 'until your next end step' duration); differs only when cast on an opponent's turn |
|
|
503
|
+
| Hydro-Man, Fluid Felon | PARTIAL | 'At the beginning of your end step, untap him; until your next turn he becomes a land with {T}: Add {U}' is modelled as an end-step untap plus a static: during turns other than yours he is only a land (no creature type) with '{T}: Add {U}'; Enjine's become has no 'until your next turn' duration, so during your own end step and cleanup he is still a creature |
|
|
504
|
+
| Inti, Seneschal of the Sun | FAIL | Play permission 'until your next end step' (only end_of_turn / end_of_your_next_turn / while_exiled durations) |
|
|
505
|
+
|
|
506
|
+
<a id="23"></a>
|
|
507
|
+
## 23. Turn-history conditions (5)
|
|
508
|
+
|
|
509
|
+
**Needs:** Scried/surveilled, attacked, dealt damage or crewed this turn; "if it's your combat phase".
|
|
510
|
+
|
|
511
|
+
| Card | State | Reason |
|
|
512
|
+
|---|---|---|
|
|
513
|
+
| Desperate Futurescribe | FAIL | Condition 'if you've scried or surveilled this turn' has no turn-history amount/condition (no scry/surveil count) |
|
|
514
|
+
| Red Guardian, Super-Soldier | FAIL | target 'creature ... that dealt damage this turn': no filter for having dealt damage this turn |
|
|
515
|
+
| Supper for Spiders | FAIL | no graveyard-card filter for 'put there from the battlefield this turn', and no way to return cards as Food artifacts that lose all other card types/subtypes (become/return_to_battlefield can't set types) |
|
|
516
|
+
| Turtle Van | FAIL | no target filter for 'creature that crewed it this turn' (and doubling the +1/+1 counters on it) |
|
|
517
|
+
| Vren, the Relentless | FAIL | 'Creatures exiled under your opponents' control this turn' not countable exactly (exiled_this_turn counts cards exiled from any zone, incl. graveyards) |
|
|
518
|
+
|
|
519
|
+
<a id="24"></a>
|
|
520
|
+
## 24. Owner filters (5)
|
|
521
|
+
|
|
522
|
+
**Needs:** Filters and selectors for "you own" / the owner.
|
|
523
|
+
|
|
524
|
+
| Card | State | Reason |
|
|
525
|
+
|---|---|---|
|
|
526
|
+
| Boiling Rock Rioter | PARTIAL | 'Ally spell from among cards you own exiled with this creature': it can also cast an opponent-owned Ally card it exiled (no owner restriction on exiled_with) |
|
|
527
|
+
| Clash of Elements | FAIL | The permanent's OWNER decides (top of library or bottom) and is dealt the damage: no owner selector (controller_of differs for stolen permanents) and no follow-up conditioned on the owner's top/bottom choice |
|
|
528
|
+
| Get Out | FAIL | Ownership filter: 'target creatures and/or enchantments you own' (filters only support controller, no owner restriction) |
|
|
529
|
+
| Iroh, Tea Master | PARTIAL | the token enters with exactly one +1/+1 counter (for the permanent just given away; written as an enters-with-counters ability on the token) instead of one per permanent you own that your opponents control (no 'owner' filter) |
|
|
530
|
+
| Northampton Farm | FAIL | 'Exile target creature you own': filters have no owner restriction (controller only); also the split return (a creature card to the battlefield, each other exiled card to its owner's hand) |
|
|
531
|
+
|
|
532
|
+
<a id="25"></a>
|
|
533
|
+
## 25. Copy exceptions (5)
|
|
534
|
+
|
|
535
|
+
**Needs:** Copy `except` adding a triggered ability or keeping an ability; copying a card in a graveyard; copy durations.
|
|
536
|
+
|
|
537
|
+
| Card | State | Reason |
|
|
538
|
+
|---|---|---|
|
|
539
|
+
| Absorbing Man | FAIL | become_copy has no 'until your next turn' duration (only end_of_turn/permanent); also the copy exception 'legendary 4/4 Human Villain creature in addition to his other types' with a fixed name |
|
|
540
|
+
| Ardyn, the Usurper | FAIL | token copy 'except it's a 5/5 black Demon' must replace creature types; copy `except.subtypes` only adds subtypes |
|
|
541
|
+
| Face Yourself | FAIL | token copies 'except it has haste and "At the beginning of the end step, if you don't control a planeswalker, sacrifice this creature"': create_token_copy except can't add a triggered ability; also no selector for 'each creature target player controls' |
|
|
542
|
+
| Mockingbird | PARTIAL | it may copy only a creature with mana value 1 or less (as if cast for X=0): the 'mana value <= amount of mana spent to cast this creature' bound can't be computed while choosing the copy (the enter_as_copy filter has no source, so mana_spent reads 0) |
|
|
543
|
+
| Superior Spider-Man | FAIL | enter_as_copy only copies permanents on the battlefield, not a creature card in a graveyard (plus 'when you do, exile that card') |
|
|
544
|
+
|
|
545
|
+
<a id="26"></a>
|
|
546
|
+
## 26. Modal (per-turn, up to X, repeat) (4)
|
|
547
|
+
|
|
548
|
+
**Needs:** "Hasn't been chosen this turn"; "choose up to X"; pawprint budgets.
|
|
549
|
+
|
|
550
|
+
| Card | State | Reason |
|
|
551
|
+
|---|---|---|
|
|
552
|
+
| Lita, Little Orphan Amphibian | FAIL | modal trigger 'choose one that hasn't been chosen this turn' (`unchosen` remembers modes for the object's lifetime, not per turn) |
|
|
553
|
+
| Monument to Endurance | PARTIAL | each trigger may choose any mode: the 'that hasn't been chosen this turn' restriction is missing (unchosen remembers modes for the permanent's lifetime, not per turn) |
|
|
554
|
+
| Season of the Burrow | FAIL | pawprint modes ({P} budget of up to five, CR 700.2i) and choosing the same mode more than once: modal spells take only a min/max count of distinct modes |
|
|
555
|
+
| The Ruinous Wrecking Crew | FAIL | modal 'choose up to X' (min 0, max X announced): modal choose takes only fixed integers with min >= 1 |
|
|
556
|
+
|
|
557
|
+
<a id="27"></a>
|
|
558
|
+
## 27. Forced retarget (4)
|
|
559
|
+
|
|
560
|
+
**Needs:** Mandatory change of target of a spell or ability with a single target.
|
|
561
|
+
|
|
562
|
+
| Card | State | Reason |
|
|
563
|
+
|---|---|---|
|
|
564
|
+
| Bolt Bend | FAIL | 'change the target of target spell or ability with a single target' not supported (choose_new_targets is optional; no single-target filter) |
|
|
565
|
+
| Redirect Lightning | FAIL | 'Change the target of target spell or ability with a single target' (must-change retarget and single-target filter not supported; choose_new_targets is optional) |
|
|
566
|
+
| Return the Favor | FAIL | Spree mode 'change the target of target spell or ability with a single target' not supported |
|
|
567
|
+
| Untimely Malfunction | FAIL | 'change the target' (mandatory change) of a spell/ability with a single target: only optional choose_new_targets exists |
|
|
568
|
+
|
|
569
|
+
<a id="28"></a>
|
|
570
|
+
## 28. Outside the game (3)
|
|
571
|
+
|
|
572
|
+
**Needs:** Cards from outside the game.
|
|
573
|
+
|
|
574
|
+
| Card | State | Reason |
|
|
575
|
+
|---|---|---|
|
|
576
|
+
| Extrapolate the Impossible | FAIL | Reveal two cards from outside the game; opponent chooses one to put into your hand |
|
|
577
|
+
| North Wind Avatar | FAIL | Put a card you own from outside the game into your hand: no effect moves outside-the-game cards to hand |
|
|
578
|
+
| Turtles Forever | FAIL | search library and/or outside the game for four legendary creature cards with different names, opponent chooses two for your hand: no outside-game search or opponent-chosen split |
|
|
579
|
+
|
|
580
|
+
<a id="29"></a>
|
|
581
|
+
## 29. Player rules (2)
|
|
582
|
+
|
|
583
|
+
**Needs:** Player rules for "during combat" / "during your turn", turning off the legend rule, hexproof bypass.
|
|
584
|
+
|
|
585
|
+
| Card | State | Reason |
|
|
586
|
+
|---|---|---|
|
|
587
|
+
| Hall of Echoes | FAIL | 'The legend rule doesn't apply to permanents you control this turn': no primitive to turn off the legend rule |
|
|
588
|
+
| Nowhere to Run | PARTIAL | 'Creatures your opponents control can be the targets of spells and abilities as though they didn't have hexproof. Ward abilities of those creatures don't trigger' (no hexproof/ward bypass) |
|
|
589
|
+
|
|
590
|
+
## Unclustered (13)
|
|
591
|
+
|
|
592
|
+
| Card | State | Reason |
|
|
593
|
+
|---|---|---|
|
|
594
|
+
| Carnage, Crimson Chaos | PARTIAL | assumes 'self' in the trigger granted by become means the returned creature (untested) |
|
|
595
|
+
| Celestial Reunion | PARTIAL | The optional additional cost (choose a creature type and behold two creatures of that type), and putting the card onto the battlefield instead when that cost was paid and the card is of that type. The card always goes to your hand. |
|
|
596
|
+
| Compel Brutality | PARTIAL | Mode 2: the spell deals the damage (equal to the planeswalker's loyalty), not the planeswalker, because deal_damage has no source parameter. |
|
|
597
|
+
| Emrakul, the Exigent Doom | PARTIAL | Hand ability: exiling Emrakul is part of the effect, not the cost, and the land keeps '{T}: Add {C}{C}' after Emrakul is cast (it should end then). |
|
|
598
|
+
| Full Bore | PARTIAL | 'If that creature was cast for its warp cost, it also gains trample and haste until end of turn': cast_with only reads how the source itself was cast, not a targeted permanent, so the rider is left out |
|
|
599
|
+
| Garnet, Princess of Alexandria | PARTIAL | 'remove a lore counter from each of any number of Sagas you control' is all-or-none (you may remove one from every Saga with a lore counter, not choose a subset), and the +1/+1 counters are counted from those Sagas just before removing (remove_counters records no amount) |
|
|
600
|
+
| Gollum, Riddle Master | PARTIAL | 'mana value of the chosen quality' has no parity filter on the cast trigger: written as two triggers (if odd / if even was chosen) whose spell filter lists mana values 1-15 and 0-16, so an opponent's spell with mana value 17 or more never triggers it |
|
|
601
|
+
| Ingris Stingerquill | PARTIAL | the 1 damage to each opponent is dealt by Ingris instead of by the attacking creature (deal_damage has no source selector), so that creature's lifelink/deathtouch etc. don't apply |
|
|
602
|
+
| Royal Treatment | PARTIAL | the Role rule (if you control another Role on that creature, it is put into the graveyard): Enjine doesn't enforce one Role per controller per creature |
|
|
603
|
+
| Summon: Fenrir | PARTIAL | chapter II: the next creature spell cast this turn doesn't enter with the extra +1/+1 counter; instead, when the next creature you control enters this turn after that cast, it gets a +1/+1 counter (a trigger, and it can hit another creature entering first) |
|
|
604
|
+
| The Fire Nation Drill | PARTIAL | '{1}: Permanents your opponents control lose hexproof and indestructible until end of turn' is left out (no effect removes keywords) |
|
|
605
|
+
| Thranduil, the Elvenking | FAIL | 'has all activated abilities of all Elf cards in your graveyard' (gaining activated abilities of other cards) has no primitive |
|
|
606
|
+
| Uldaros Theorix | FAIL | Targets 'up to one nonland card of each card type' and casting copies with total mana value 6 or less not supported |
|