* Jeweled Lotus - fixed that mana can't be used to cast commanders without normal mana (#7272);

This commit is contained in:
Oleg Agafonov 2020-12-22 23:22:41 +04:00
parent 736901efcf
commit 347a3b1e1a
5 changed files with 104 additions and 9 deletions

View file

@ -16,6 +16,7 @@ import mage.abilities.mana.builder.ConditionalManaBuilder;
import mage.cards.Card;
import mage.filter.FilterSpell;
import mage.game.Game;
import mage.game.command.Commander;
import mage.game.stack.Spell;
import mage.game.stack.StackObject;
@ -65,13 +66,20 @@ class SpellCastManaCondition extends ManaCondition implements Condition {
public boolean apply(Game game, Ability source) {
if (source instanceof SpellAbility) {
MageObject object = game.getObject(source.getSourceId());
if (game.inCheckPlayableState() && object instanceof Card) {
Spell spell = new Spell((Card) object, (SpellAbility) source, source.getControllerId(), game.getState().getZone(source.getSourceId()), game);
return filter.match(spell, source.getSourceId(), source.getControllerId(), game);
}
if ((object instanceof StackObject)) {
return filter.match((StackObject) object, source.getSourceId(), source.getControllerId(), game);
}
// checking mana without real cast
if (game.inCheckPlayableState()) {
Spell spell = null;
if (object instanceof Card) {
spell = new Spell((Card) object, (SpellAbility) source, source.getControllerId(), game.getState().getZone(source.getSourceId()), game);
} else if (object instanceof Commander) {
spell = new Spell(((Commander) object).getSourceObject(), (SpellAbility) source, source.getControllerId(), game.getState().getZone(source.getSourceId()), game);
}
return spell != null && filter.match(spell, source.getSourceId(), source.getControllerId(), game);
}
}
return false;
}