mage icon indicating copy to clipboard operation
mage copied to clipboard

Vivien, Monster's Advocate takes top of deck Precedence to Bolas Citadel, not allowing for life-paid creature casting

Open dashosa opened this issue 3 years ago • 6 comments

Vivien, Monster's Advocate take top of deck Precedence to Bolas CItadel, not allowing for life-paid creature casting

dashosa avatar Jan 22 '22 21:01 dashosa

[[Vivien, Monsters' Advocate]] [[Bolas's Citadel]]

Alex-Vasile avatar Jan 23 '22 22:01 Alex-Vasile

Vivien, Monsters' Advocate - (Gatherer) (Scryfall) (EDHREC)

{3}{G}{G} Legendary Planeswalker — Vivien 3 You may look at the top card of your library any time. You may cast creature spells from the top of your library. +1: Create a 3/3 green Beast creature token. Put your choice of a vigilance counter, a reach counter, or a trample counter on it. −2: When you cast your next creature spell this turn, search your library for a creature card with lesser mana value, put it onto the battlefield, then shuffle.

Bolas's Citadel - (Gatherer) (Scryfall) (EDHREC)

{3}{B}{B}{B} Legendary Artifact You may look at the top card of your library any time. You may play lands and cast spells from the top of your library. If you cast a spell this way, pay life equal to its mana value rather than pay its mana cost. {T}, Sacrifice ten nonland permanents: Each opponent loses 10 life.

github-actions[bot] avatar Jan 23 '22 22:01 github-actions[bot]

Was Vivien played after Bola's? If so, isn't Vivien's effect supposed to override Bolas'?

Alex-Vasile avatar Jan 23 '22 22:01 Alex-Vasile

If multiple effects allow you to cast a spell, you have to choose which effect you are using. Therefore with those two cards on the battlefield, you may either cast a creature from the top of your library normally with Vivien, or pay life with Bolas's Citadel.

emerald000 avatar Jan 23 '22 22:01 emerald000

Alright, so I think the issue is with getPlayableFromObjectSingle or asThough (depending on the intent of the code).

getPlayableFromObjectSingle is calling asThough to find if anything is allowing the card to be played. https://github.com/magefree/mage/blob/13baf726e914c42ccc585b1cc3d8a642f53413fc/Mage/src/main/java/mage/players/PlayerImpl.java#L3839

asThough is returning the first AsThoughEffect that allows a a given spell to be cast. https://github.com/magefree/mage/blob/26a2e0a5edf47bbb1a03a650f29f9d712adf7722/Mage/src/main/java/mage/abilities/effects/ContinuousEffects.java#L511

I've tested this, and if you play Bolas first then you can use it's ability, but if you play Vivien first you will only be able to use her's.

It should probably be returning a list of all approving objects and the player picks which ability to use. The choice probably doesn't matter in most cases, so the choice should probably be made automatically if it doesn't matter (but I don't know where to start on figure out "if the choice doesn't matter").

Alex-Vasile avatar Jan 25 '22 00:01 Alex-Vasile

I think this is the same underlying issue as #2087

Alex-Vasile avatar Feb 03 '22 04:02 Alex-Vasile