Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

During target selection, you can cancel spells you shouldn't be able to #9532

Open
awjackson opened this issue Sep 17, 2022 · 3 comments
Open
Labels
bug Bugs and errors

Comments

@awjackson
Copy link
Contributor

If an effect tells you to cast a spell (e.g. suspend), and you splice one or more cards onto that spell as you cast it, xmage lets you cancel while you are selecting targets or paying costs for the spliced card(s). If you do cancel this way, it cancels the entire spell you are casting, even if the effect that told you to cast it was not optional. For example, you can cancel a card coming off suspend this way and the suspended card will just stay in exile forever, with no time counters on it.

@awjackson awjackson added the bug Bugs and errors label Sep 18, 2022
@awjackson awjackson changed the title Splicing lets you cancel spells you shouldn't be able to During target selection, you can cancel spells you shouldn't be able to Oct 14, 2022
@awjackson
Copy link
Contributor Author

Turns out it isn't just splice that's affected. You can start casting a [[Rift Bolt]] coming off of suspend (without any spliced cards), cancel during target selection, and the card will stay in exile forever.

This bug seems to be caused by dab481e

@JayDi85 , do you remember what the reason for that commit was?

@github-actions
Copy link

Rift Bolt - (Gatherer) (Scryfall) (EDHREC)

{2}{R}
Sorcery
Rift Bolt deals 3 damage to any target.
Suspend 1—{R} (Rather than cast this card from your hand, you may pay {R} and exile it with a time counter on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)

@awjackson
Copy link
Contributor Author

Never mind, I see now. The code for deciding whether a target is cancelable or required is layers and layers of nonsense upon nonsense (starting with the use of game.getObject in an attempt to get an Ability).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Bugs and errors
Projects
None yet
Development

No branches or pull requests

1 participant