Fix Zenith Chronicler draw on first multicolored spell (fixes #4829) - #4851
Conversation
Map mtgish Other(Trigger_ThatPlayer) to AllExcept TriggeringPlayer, rewrite any-player spell-cast triggers that say each other player, and parse multicolored as an Nth-spell qualifier filter. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
matthewevans
left a comment
There was a problem hiding this comment.
Thanks for the focused Zenith Chronicler fix. I’m holding this for two changes.
-
type_only_filterhand-builds themulticoloredColorCountfilter with a direct string equality branch. This parser already hasoracle_nom::filter::parse_color_property, which is the existing combinator forcolorless/monocolored/multicolored. Please route this through that building block instead of adding another hand-rolled color-property construction path. -
Please add discriminating coverage for the negative side of the bug: a player casting their first monocolored spell should not trigger Zenith Chronicler. The current runtime test proves the positive multicolored case and the “each other player” scope, but it would not catch a filter that accepts the wrong spell class. The parser test should also assert the exact
ColorCount { comparator: GE, count: 2 }filter rather than onlyfilter.is_some().
Parse changes introduced by this PR · 3 card(s), 4 signature(s) (baseline: main
|
Route bare multicolored spell qualifiers through parse_color_property with Card typing, assert the exact ColorCount filter in the parser test, and add a monocolored negative runtime case. Co-authored-by: Cursor <cursoragent@cursor.com>
# Conflicts: # crates/engine/tests/integration/main.rs
matthewevans
left a comment
There was a problem hiding this comment.
Reviewed the updated head after the requested changes. The multicolored qualifier now goes through the existing parse_color_property building block, the trigger scope rewrite handles the “a player ... each other player” case as AllExcept { TriggeringPlayer }, and the tests cover parser shape plus positive/negative runtime behavior. I also resolved the current main.rs integration-test mod-line conflict and verified formatting/parser-gate during the merge-forward commit; CI can finish under merge-when-ready.
# Conflicts: # crates/engine/tests/integration/main.rs
Summary
Players::Other(Trigger_ThatPlayer)toPlayerFilter::AllExcept { TriggeringPlayer }in mtgish import so "each other player" excludes the caster.Opponentscope.NthSpellThisTurnqualifier filter.Test plan
cargo test -p engine --test integration zenith_chroniclercargo test -p mtgish-import --lib each_other_playerMade with Cursor