mirror of
https://github.com/correl/mage.git
synced 2024-11-15 03:00:16 +00:00
- Fixed #6803
This commit is contained in:
parent
4c34210d64
commit
5be6e9398a
1 changed files with 20 additions and 11 deletions
|
@ -1,5 +1,6 @@
|
|||
package mage.cards.t;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import mage.MageObjectReference;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
|
@ -12,17 +13,17 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.NamePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.stack.Spell;
|
||||
import mage.players.Player;
|
||||
import mage.watchers.common.SpellsCastWatcher;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
import mage.filter.common.FilterNonlandCard;
|
||||
import mage.filter.predicate.mageobject.NamePredicate;
|
||||
import mage.target.TargetCard;
|
||||
|
||||
/**
|
||||
|
@ -72,8 +73,7 @@ class TwinningGlassEffect extends OneShotEffect {
|
|||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
FilterCard filterCard = new FilterCard();
|
||||
filterCard.add(Predicates.not(CardType.LAND.getPredicate()));
|
||||
List<Spell> spells = new ArrayList<>();
|
||||
Permanent twinningGlass = game.getPermanent(source.getSourceId());
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
SpellsCastWatcher watcher = game.getState().getWatcher(SpellsCastWatcher.class);
|
||||
|
@ -84,19 +84,28 @@ class TwinningGlassEffect extends OneShotEffect {
|
|||
&& controller != null
|
||||
&& watcher != null) {
|
||||
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
|
||||
List<Spell> spells = watcher.getSpellsCastThisTurn(playerId);
|
||||
if (spells != null
|
||||
&& !spells.isEmpty()) {
|
||||
for (Spell spell : spells) {
|
||||
filterCard.add(new NamePredicate(spell.getName()));
|
||||
if (watcher.getSpellsCastThisTurn(playerId) != null) {
|
||||
for (Spell spell : watcher.getSpellsCastThisTurn(playerId)) {
|
||||
spells.add(spell);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (spells.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
List<NamePredicate> predicates = spells.stream()
|
||||
.map(Spell::getName)
|
||||
.filter(s -> !"".equals(s))
|
||||
.map(NamePredicate::new)
|
||||
.collect(Collectors.toList());
|
||||
FilterNonlandCard filterCard = new FilterNonlandCard("nonland card that was cast this turn");
|
||||
filterCard.add(Predicates.or(predicates));
|
||||
TargetCard target = new TargetCard(0, 1, Zone.HAND, filterCard);
|
||||
if (controller.choose(Outcome.PlayForFree, controller.getHand(), target, game)) {
|
||||
Card chosenCard = game.getCard(target.getFirstTarget());
|
||||
if (chosenCard != null) {
|
||||
if (controller.chooseUse(Outcome.PlayForFree, "Cast the card without paying mana cost?", source, game)) {
|
||||
if (controller.chooseUse(Outcome.PlayForFree, "Cast "
|
||||
+ chosenCard.getName() + " without paying its mana cost?", source, game)) {
|
||||
game.getState().setValue("PlayFromNotOwnHandZone" + chosenCard.getId(), Boolean.TRUE);
|
||||
Boolean cardWasCast = controller.cast(controller.chooseAbilityForCast(chosenCard, game, true),
|
||||
game, true, new MageObjectReference(source.getSourceObject(game), game));
|
||||
|
|
Loading…
Reference in a new issue