mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 10:40:06 -08:00
implement [MH3] Etherium Pteramander
This commit is contained in:
parent
1e11b1a60f
commit
3097681b8e
3 changed files with 95 additions and 7 deletions
87
Mage.Sets/src/mage/cards/e/EtheriumPteramander.java
Normal file
87
Mage.Sets/src/mage/cards/e/EtheriumPteramander.java
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
package mage.cards.e;
|
||||||
|
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.CanBlockOnlyFlyingAbility;
|
||||||
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.CostAdjuster;
|
||||||
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
import mage.abilities.dynamicvalue.DynamicValue;
|
||||||
|
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||||
|
import mage.abilities.effects.keyword.AdaptEffect;
|
||||||
|
import mage.abilities.hint.Hint;
|
||||||
|
import mage.abilities.hint.ValueHint;
|
||||||
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.common.FilterControlledArtifactPermanent;
|
||||||
|
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.util.CardUtil;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Susucr
|
||||||
|
*/
|
||||||
|
public final class EtheriumPteramander extends CardImpl {
|
||||||
|
|
||||||
|
public EtheriumPteramander(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{B}");
|
||||||
|
|
||||||
|
this.subtype.add(SubType.SALAMANDER);
|
||||||
|
this.subtype.add(SubType.DRAKE);
|
||||||
|
this.power = new MageInt(1);
|
||||||
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
|
// Flying
|
||||||
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
|
// Etherium Pteramander can block only creatures with flying.
|
||||||
|
this.addAbility(new CanBlockOnlyFlyingAbility());
|
||||||
|
|
||||||
|
// {6}{B}: Adapt 4. This ability costs {1} less to activate for each other artifact you control.
|
||||||
|
Ability ability = new SimpleActivatedAbility(
|
||||||
|
new AdaptEffect(4)
|
||||||
|
.setText("Adapt 4. This ability costs {1} less to activate for each other artifact you control."),
|
||||||
|
new ManaCostsImpl<>("{6}{B}")
|
||||||
|
);
|
||||||
|
ability.setCostAdjuster(EtheriumPteramanderAdjuster.instance);
|
||||||
|
this.addAbility(ability.addHint(EtheriumPteramanderAdjuster.getHint()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private EtheriumPteramander(final EtheriumPteramander card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EtheriumPteramander copy() {
|
||||||
|
return new EtheriumPteramander(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum EtheriumPteramanderAdjuster implements CostAdjuster {
|
||||||
|
instance;
|
||||||
|
|
||||||
|
private static final FilterPermanent filter = new FilterControlledArtifactPermanent();
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(AnotherPredicate.instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final DynamicValue artifactCount = new PermanentsOnBattlefieldCount(filter);
|
||||||
|
private static final Hint hint = new ValueHint("Other Artifacts you control", artifactCount);
|
||||||
|
|
||||||
|
static Hint getHint() {
|
||||||
|
return hint;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void adjustCosts(Ability ability, Game game) {
|
||||||
|
int count = artifactCount.calculate(game, ability, null);
|
||||||
|
CardUtil.reduceCost(ability, count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,7 +17,6 @@ import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
|
||||||
import mage.util.CardUtil;
|
import mage.util.CardUtil;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -39,7 +38,11 @@ public final class Pteramander extends CardImpl {
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// {7}{U}: Adapt 4. This ability costs {1} less to activate for each instant and sorcery card in your graveyard.
|
// {7}{U}: Adapt 4. This ability costs {1} less to activate for each instant and sorcery card in your graveyard.
|
||||||
Ability ability = new SimpleActivatedAbility(new AdaptEffect(4).setText("Adapt 4. This ability costs {1} less to activate for each instant and sorcery card in your graveyard."), new ManaCostsImpl<>("{7}{U}"));
|
Ability ability = new SimpleActivatedAbility(
|
||||||
|
new AdaptEffect(4)
|
||||||
|
.setText("Adapt 4. This ability costs {1} less to activate for each instant and sorcery card in your graveyard."),
|
||||||
|
new ManaCostsImpl<>("{7}{U}")
|
||||||
|
);
|
||||||
ability.setCostAdjuster(PteramanderAdjuster.instance);
|
ability.setCostAdjuster(PteramanderAdjuster.instance);
|
||||||
this.addAbility(ability.addHint(PteramanderAdjuster.getHint()));
|
this.addAbility(ability.addHint(PteramanderAdjuster.getHint()));
|
||||||
}
|
}
|
||||||
|
|
@ -68,10 +71,7 @@ enum PteramanderAdjuster implements CostAdjuster {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void adjustCosts(Ability ability, Game game) {
|
public void adjustCosts(Ability ability, Game game) {
|
||||||
Player controller = game.getPlayer(ability.getControllerId());
|
|
||||||
if (controller != null) {
|
|
||||||
int count = cardsCount.calculate(game, ability, null);
|
int count = cardsCount.calculate(game, ability, null);
|
||||||
CardUtil.reduceCost(ability, count);
|
CardUtil.reduceCost(ability, count);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,7 @@ public final class ModernHorizons3 extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Emrakul, the World Anew", 6, Rarity.MYTHIC, mage.cards.e.EmrakulTheWorldAnew.class));
|
cards.add(new SetCardInfo("Emrakul, the World Anew", 6, Rarity.MYTHIC, mage.cards.e.EmrakulTheWorldAnew.class));
|
||||||
cards.add(new SetCardInfo("Envoy of the Ancestors", 23, Rarity.UNCOMMON, mage.cards.e.EnvoyOfTheAncestors.class));
|
cards.add(new SetCardInfo("Envoy of the Ancestors", 23, Rarity.UNCOMMON, mage.cards.e.EnvoyOfTheAncestors.class));
|
||||||
cards.add(new SetCardInfo("Estrid's Invocation", 269, Rarity.RARE, mage.cards.e.EstridsInvocation.class));
|
cards.add(new SetCardInfo("Estrid's Invocation", 269, Rarity.RARE, mage.cards.e.EstridsInvocation.class));
|
||||||
|
cards.add(new SetCardInfo("Etherium Pteramander", 92, Rarity.UNCOMMON, mage.cards.e.EtheriumPteramander.class));
|
||||||
cards.add(new SetCardInfo("Eviscerator's Insight", 93, Rarity.COMMON, mage.cards.e.EvisceratorsInsight.class));
|
cards.add(new SetCardInfo("Eviscerator's Insight", 93, Rarity.COMMON, mage.cards.e.EvisceratorsInsight.class));
|
||||||
cards.add(new SetCardInfo("Evolution Witness", 151, Rarity.COMMON, mage.cards.e.EvolutionWitness.class));
|
cards.add(new SetCardInfo("Evolution Witness", 151, Rarity.COMMON, mage.cards.e.EvolutionWitness.class));
|
||||||
cards.add(new SetCardInfo("Expanding Ooze", 184, Rarity.COMMON, mage.cards.e.ExpandingOoze.class));
|
cards.add(new SetCardInfo("Expanding Ooze", 184, Rarity.COMMON, mage.cards.e.ExpandingOoze.class));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue