Those are false positives ("Cowards" and "Forward"). No remaining Ward Custom variants.
Batch 5 complete. Here's a summary:
Engine changes:
- Added
StaticEffect::Ward { cost: String } variant to the enum
- Added
StaticEffect::ward(cost) builder method
- Extended
static_effect_builders test with Ward variant checks
Cards fixed (7 across 3 sets):
- TDM (4): Aegis Sculptor, Ambling Stormshell, Dirgur Island Dragon, Scavenger Regent
- ECL (1): Bristlebane Battler
- FDN (2): Cackling Prowler, Tolarian Terror
What was done for each card:
- Replaced
StaticEffect::Custom("Ward {2}") / Custom("Ward -- Discard a card.") with typed StaticEffect::ward("{2}") / ward("Discard a card.")
- Added
KeywordAbilities::WARD to the keyword flags (5 cards were missing it)
- Tolarian Terror already had the WARD keyword flag but was missing the Ward static ability — added it
Note: Ward is now stored as structured data. The mechanical enforcement (counter-unless-pay during targeting) would require full targeting/stack interaction and is deferred. All 249 tests pass.