mirror of
https://github.com/magefree/mage.git
synced 2026-01-24 12:19:59 -08:00
[ECL] Implement Unbury (#14200)
This commit is contained in:
parent
c9b82e7742
commit
679334dca0
2 changed files with 111 additions and 0 deletions
110
Mage.Sets/src/mage/cards/u/Unbury.java
Normal file
110
Mage.Sets/src/mage/cards/u/Unbury.java
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
package mage.cards.u;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.Mode;
|
||||
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author muz
|
||||
*/
|
||||
public final class Unbury extends CardImpl {
|
||||
|
||||
public Unbury(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
|
||||
|
||||
// Choose one --
|
||||
// * Return target creature card from your graveyard to your hand.
|
||||
this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
|
||||
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
|
||||
|
||||
// * Return two target creature cards that share a creature type from your graveyard to your hand.
|
||||
Mode mode = new Mode(new ReturnFromGraveyardToHandTargetEffect());
|
||||
mode.addTarget(new UnburyTarget());
|
||||
this.getSpellAbility().addMode(mode);
|
||||
}
|
||||
|
||||
private Unbury(final Unbury card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Unbury copy() {
|
||||
return new Unbury(this);
|
||||
}
|
||||
}
|
||||
|
||||
class UnburyTarget extends TargetCardInYourGraveyard {
|
||||
|
||||
UnburyTarget() {
|
||||
super(2, 2, StaticFilters.FILTER_CARD_CREATURE, false);
|
||||
targetName = "creature cards that share a creature type from your graveyard";
|
||||
}
|
||||
|
||||
private UnburyTarget(final UnburyTarget target) {
|
||||
super(target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTarget(UUID playerId, UUID id, Ability source, Game game) {
|
||||
if (!super.canTarget(playerId, id, source, game)) {
|
||||
return false;
|
||||
}
|
||||
if (getTargets().isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
Card targetOne = game.getCard(getTargets().get(0));
|
||||
Card targetTwo = game.getCard(id);
|
||||
if (targetOne == null || targetTwo == null) {
|
||||
return false;
|
||||
}
|
||||
return targetOne.shareCreatureTypes(game, targetTwo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canChoose(UUID sourceControllerId, Ability source, Game game) {
|
||||
MageObject targetSource = game.getObject(source);
|
||||
Player player = game.getPlayer(sourceControllerId);
|
||||
if (player == null) {
|
||||
return false;
|
||||
}
|
||||
if (targetSource == null) {
|
||||
return false;
|
||||
}
|
||||
List<Card> cards = player.getGraveyard().getCards(
|
||||
filter, sourceControllerId, source, game
|
||||
).stream().collect(Collectors.toList());
|
||||
if (cards.size() < 2) {
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < cards.size(); i++) {
|
||||
for (int j = 0; j < cards.size(); j++) {
|
||||
if (i <= j) {
|
||||
continue;
|
||||
}
|
||||
if (cards.get(i).shareCreatureTypes(game, cards.get(j))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UnburyTarget copy() {
|
||||
return new UnburyTarget(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -251,6 +251,7 @@ public final class LorwynEclipsed extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Trystan, Callous Cultivator", 199, Rarity.RARE, mage.cards.t.TrystanCallousCultivator.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Trystan, Callous Cultivator", 291, Rarity.RARE, mage.cards.t.TrystanCallousCultivator.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Tweeze", 162, Rarity.COMMON, mage.cards.t.Tweeze.class));
|
||||
cards.add(new SetCardInfo("Unbury", 123, Rarity.UNCOMMON, mage.cards.u.Unbury.class));
|
||||
cards.add(new SetCardInfo("Unexpected Assistance", 80, Rarity.COMMON, mage.cards.u.UnexpectedAssistance.class));
|
||||
cards.add(new SetCardInfo("Unforgiving Aim", 200, Rarity.COMMON, mage.cards.u.UnforgivingAim.class));
|
||||
cards.add(new SetCardInfo("Unwelcome Sprite", 81, Rarity.UNCOMMON, mage.cards.u.UnwelcomeSprite.class));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue