mirror of
https://github.com/magefree/mage.git
synced 2026-01-26 21:29:17 -08:00
[ECC] Implement Puca's Covenant
This commit is contained in:
parent
b5d751cb51
commit
a28eba0ca2
2 changed files with 73 additions and 0 deletions
71
Mage.Sets/src/mage/cards/p/PucasCovenant.java
Normal file
71
Mage.Sets/src/mage/cards/p/PucasCovenant.java
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
package mage.cards.p;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DiesCreatureTriggeredAbility;
|
||||
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.FilterCard;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterPermanentCard;
|
||||
import mage.filter.predicate.ObjectSourcePlayer;
|
||||
import mage.filter.predicate.ObjectSourcePlayerPredicate;
|
||||
import mage.filter.predicate.permanent.CounterAnyPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class PucasCovenant extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a creature you control with a counter on it");
|
||||
private static final FilterCard filter2 = new FilterPermanentCard("another target permanent card " +
|
||||
"with mana value less than or equal to the number of counters on that creature from your graveyard");
|
||||
|
||||
static {
|
||||
filter.add(CounterAnyPredicate.instance);
|
||||
filter2.add(PucasCovenantPredicate.instance);
|
||||
}
|
||||
|
||||
public PucasCovenant(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
|
||||
|
||||
// Whenever a creature you control with a counter on it dies, you may return another target permanent card with mana value less than or equal to the number of counters on that creature from your graveyard to your hand. Do this only once each turn.
|
||||
Ability ability = new DiesCreatureTriggeredAbility(
|
||||
new ReturnFromGraveyardToHandTargetEffect(), true, filter
|
||||
).setDoOnlyOnceEachTurn(true);
|
||||
ability.addTarget(new TargetCardInYourGraveyard(filter2));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private PucasCovenant(final PucasCovenant card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PucasCovenant copy() {
|
||||
return new PucasCovenant(this);
|
||||
}
|
||||
}
|
||||
|
||||
enum PucasCovenantPredicate implements ObjectSourcePlayerPredicate<Card> {
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public boolean apply(ObjectSourcePlayer<Card> input, Game game) {
|
||||
return CardUtil
|
||||
.getEffectValueFromAbility(input.getSource(), "creatureDied", Permanent.class)
|
||||
.filter(permanent -> !input.getObject().getId().equals(permanent.getId()))
|
||||
.map(permanent -> permanent.getCounters(game).getTotalCount())
|
||||
.filter(count -> input.getObject().getManaValue() <= count)
|
||||
.isPresent();
|
||||
}
|
||||
}
|
||||
|
|
@ -134,6 +134,8 @@ public final class LorwynEclipsedCommander extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Path to Exile", 65, Rarity.UNCOMMON, mage.cards.p.PathToExile.class));
|
||||
cards.add(new SetCardInfo("Persist", 83, Rarity.RARE, mage.cards.p.Persist.class));
|
||||
cards.add(new SetCardInfo("Primal Beyond", 159, Rarity.RARE, mage.cards.p.PrimalBeyond.class));
|
||||
cards.add(new SetCardInfo("Puca's Covenant", 18, Rarity.RARE, mage.cards.p.PucasCovenant.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Puca's Covenant", 38, Rarity.RARE, mage.cards.p.PucasCovenant.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Puppeteer Clique", 84, Rarity.RARE, mage.cards.p.PuppeteerClique.class));
|
||||
cards.add(new SetCardInfo("Putrefy", 131, Rarity.UNCOMMON, mage.cards.p.Putrefy.class));
|
||||
cards.add(new SetCardInfo("Raging Ravine", 160, Rarity.RARE, mage.cards.r.RagingRavine.class));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue