Card(s): Spire Mechcycle (hit in play); also Kumena, Tyrant of Orazca · Meanders Guide · Radiant, Serra Archangel · Shadow Stinger · Sure-Footed Infiltrator · Tyvar, the Pummeler · Veteran Warleader
Game mode: AI
Actual behavior
Spire Mechcycle's exhaust cost reads "Tap another untapped Mount or Vehicle you control", but the parsed cost carries no self-exclusion, so the Mechcycle itself is an eligible payment for its own ability.
Parsed cost, taken from a live game state (object 39):
{"type":"TapCreatures","requirement":{"requirement":"count","count":1},
"filter":{"type":"Or","filters":[
{"type":"Typed","type_filters":[{"Subtype":"Mount"}],"controller":"You","properties":[]},
{"type":"Typed","type_filters":[{"Subtype":"Vehicle"}],"controller":"You","properties":[]}]}}
properties is empty on both branches, and Spire Mechcycle is a Vehicle you control, so it matches its own cost filter.
Expected behavior
"Another" should reach the cost filter, so the source is not an eligible payment.
The runtime is not the bug. has_enough_tap_creatures (crates/engine/src/game/cost_payability.rs:752) skips the source only when exclude_source is set, and cost_payability.rs:1112 documents that deliberately — "CR 601.2b: Standalone TapCreatures (no {T}) includes the source itself". That is correct for a plain "Tap N untapped creatures you control" cost. FilterProp::Another already exists for exactly this exclusion (3200 occurrences in card-data.json).
Class measured
Over all 35,795 cards in card-data.json: 150 cards carry a TapCreatures ability cost; 8 of them say "another"/"other" in the oracle text; 0 of the 8 carry FilterProp::Another in the parsed cost filter.
| Card |
abilities affected |
| Kumena, Tyrant of Orazca |
3 |
| Meanders Guide |
1 (triggered) |
| Radiant, Serra Archangel |
1 |
| Shadow Stinger |
1 |
| Spire Mechcycle |
1 |
| Sure-Footed Infiltrator |
1 |
| Tyvar, the Pummeler |
1 |
| Veteran Warleader |
1 |
Each one matches its own cost filter (Kumena is a Merfolk, Radiant has flying, Spire Mechcycle is a Vehicle, and so on), so all 8 can pay with the source.
Crew and Saddle use the same "other" wording, but they are keywords with their own handling — this report is only about the parsed TapCreatures ability cost.
Not verified
I confirmed the parsed data and read the payability code; I did not play out all 8 cards to watch the picker offer the source. Spire Mechcycle is the one I hit in an actual game. The measurement ran on a local card-data.json dated 2026-08-12; the Spire Mechcycle cost in a live 2026-08-17 game state is identical.
Card(s): Spire Mechcycle (hit in play); also Kumena, Tyrant of Orazca · Meanders Guide · Radiant, Serra Archangel · Shadow Stinger · Sure-Footed Infiltrator · Tyvar, the Pummeler · Veteran Warleader
Game mode: AI
Actual behavior
Spire Mechcycle's exhaust cost reads "Tap another untapped Mount or Vehicle you control", but the parsed cost carries no self-exclusion, so the Mechcycle itself is an eligible payment for its own ability.
Parsed cost, taken from a live game state (object 39):
{"type":"TapCreatures","requirement":{"requirement":"count","count":1}, "filter":{"type":"Or","filters":[ {"type":"Typed","type_filters":[{"Subtype":"Mount"}],"controller":"You","properties":[]}, {"type":"Typed","type_filters":[{"Subtype":"Vehicle"}],"controller":"You","properties":[]}]}}propertiesis empty on both branches, and Spire Mechcycle is a Vehicle you control, so it matches its own cost filter.Expected behavior
"Another" should reach the cost filter, so the source is not an eligible payment.
The runtime is not the bug.
has_enough_tap_creatures(crates/engine/src/game/cost_payability.rs:752) skips the source only whenexclude_sourceis set, andcost_payability.rs:1112documents that deliberately — "CR 601.2b: Standalone TapCreatures (no{T}) includes the source itself". That is correct for a plain "Tap N untapped creatures you control" cost.FilterProp::Anotheralready exists for exactly this exclusion (3200 occurrences incard-data.json).Class measured
Over all 35,795 cards in
card-data.json: 150 cards carry aTapCreaturesability cost; 8 of them say "another"/"other" in the oracle text; 0 of the 8 carryFilterProp::Anotherin the parsed cost filter.Each one matches its own cost filter (Kumena is a Merfolk, Radiant has flying, Spire Mechcycle is a Vehicle, and so on), so all 8 can pay with the source.
Crew and Saddle use the same "other" wording, but they are keywords with their own handling — this report is only about the parsed
TapCreaturesability cost.Not verified
I confirmed the parsed data and read the payability code; I did not play out all 8 cards to watch the picker offer the source. Spire Mechcycle is the one I hit in an actual game. The measurement ran on a local
card-data.jsondated 2026-08-12; the Spire Mechcycle cost in a live 2026-08-17 game state is identical.