[J25] Implement Evereth, Viceroy of Plunder.

This commit is contained in:
Grath 2025-01-28 16:07:30 -05:00
parent a0a19a6a20
commit f7e22cb85b
2 changed files with 106 additions and 1 deletions

View file

@ -0,0 +1,105 @@
package mage.cards.e;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
import mage.abilities.condition.Condition;
import mage.abilities.costs.Cost;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.SourcePermanentPowerValue;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.DoWhenCostPaid;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.LifelinkAbility;
import mage.constants.*;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
/**
*
* @author Grath
*/
public final class EverethViceroyOfPlunder extends CardImpl {
public EverethViceroyOfPlunder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.VAMPIRE);
this.subtype.add(SubType.SOLDIER);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Sacrifice another creature or artifact: Put a +1/+1 counter on Evereth, Viceroy of Plunder. If the sacrificed permanent was a Treasure, Evereth gains lifelink until end of turn. Activate only as a sorcery.
Ability ability = new ActivateAsSorceryActivatedAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()),
new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE_OR_ARTIFACT)
);
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn),
EverethViceroyOfPlunderCondition.instance,
"If the sacrificed permanent was a Treasure, Evereth gains lifelink until end of turn."
));
this.addAbility(ability);
// When Evereth dies, you may pay {1}{B/R}. When you do, Evereth deals damage equal to its power to each opponent.
this.addAbility(new DiesSourceTriggeredAbility(
new DoWhenCostPaid(new ReflexiveTriggeredAbility(
new DamagePlayersEffect(SourcePermanentPowerValue.NOT_NEGATIVE, TargetController.OPPONENT),
false, "{this} deals damage equal to its power to each opponent"
), new ManaCostsImpl<>("{1}{B/R}"), "Pay {1}{B/R}?")
));
}
private EverethViceroyOfPlunder(final EverethViceroyOfPlunder card) {
super(card);
}
@Override
public EverethViceroyOfPlunder copy() {
return new EverethViceroyOfPlunder(this);
}
}
enum EverethViceroyOfPlunderCondition implements Condition {
instance;
private static final FilterPermanent filter = new FilterPermanent("a treasure");
static {
filter.add(SubType.TREASURE.getPredicate());
}
@Override
public boolean apply(Game game, Ability source) {
for (Cost cost : source.getCosts()) {
if (cost instanceof SacrificeTargetCost) {
for (Permanent permanent : ((SacrificeTargetCost) cost).getPermanents()) {
if (filter.match(permanent, source.getControllerId(), source, game)) {
return true;
}
}
}
}
return false;
}
@Override
public String toString() {
return "the sacrificed permanent was a Treasure";
}
}

View file

@ -234,7 +234,7 @@ public final class FoundationsJumpstart extends ExpansionSet {
cards.add(new SetCardInfo("Entomber Exarch", 434, Rarity.UNCOMMON, mage.cards.e.EntomberExarch.class));
cards.add(new SetCardInfo("Epicure of Blood", 435, Rarity.COMMON, mage.cards.e.EpicureOfBlood.class));
cards.add(new SetCardInfo("Eternal Taskmaster", 117, Rarity.UNCOMMON, mage.cards.e.EternalTaskmaster.class));
//cards.add(new SetCardInfo("Evereth, Viceroy of Plunder", 41, Rarity.RARE, mage.cards.e.EverethViceroyOfPlunder.class));
cards.add(new SetCardInfo("Evereth, Viceroy of Plunder", 41, Rarity.RARE, mage.cards.e.EverethViceroyOfPlunder.class));
cards.add(new SetCardInfo("Evolving Wilds", 765, Rarity.COMMON, mage.cards.e.EvolvingWilds.class));
cards.add(new SetCardInfo("Exclusion Mage", 306, Rarity.UNCOMMON, mage.cards.e.ExclusionMage.class));
cards.add(new SetCardInfo("Expedition Champion", 541, Rarity.COMMON, mage.cards.e.ExpeditionChampion.class));