Added [YDMU] Alchemy: Dominaria set. Implemented Vinesoul Spider, Slimefoot, Thallid Transplant. (#12157)

This commit is contained in:
karapuzz14 2024-05-05 00:34:25 +03:00 committed by GitHub
parent 017e3eb62a
commit bb783a318e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 266 additions and 1 deletions

View file

@ -0,0 +1,64 @@
package mage.abilities.effects.common;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.game.Game;
import mage.players.Player;
import mage.util.RandomUtil;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author karapuzz14
*/
public class PutRandomCardFromLibraryIntoGraveyardEffect extends OneShotEffect {
private FilterCard filter;
/**
* @param filter for selecting a card
*/
public PutRandomCardFromLibraryIntoGraveyardEffect(FilterCard filter) {
super(Outcome.Discard);
this.filter = filter;
this.staticText = "put a random " + filter.getMessage() + " from your library into your graveyard";
}
private PutRandomCardFromLibraryIntoGraveyardEffect(final PutRandomCardFromLibraryIntoGraveyardEffect effect) {
super(effect);
this.filter = effect.filter;
}
@Override
public PutRandomCardFromLibraryIntoGraveyardEffect copy() {
return new PutRandomCardFromLibraryIntoGraveyardEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller == null) {
return false;
}
Set<Card> cards = controller.getLibrary()
.getCards(game)
.stream()
.filter(card -> filter.match(card, getId(), source, game))
.collect(Collectors.toSet());
Card card = RandomUtil.randomFromCollection(cards);
if (card == null) {
return false;
}
game.informPlayers(controller.getLogName() + " puts a random " + filter.getMessage() + " from their library into their graveyard.");
controller.moveCards(card, Zone.GRAVEYARD, source, game);
return true;
}
}