mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
[EOE] Implement Moxite Refinery
This commit is contained in:
parent
2b73fc9487
commit
2744bb00f4
4 changed files with 68 additions and 21 deletions
|
|
@ -1,12 +1,8 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.Mode;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
|
|
@ -15,6 +11,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.TimingRule;
|
||||
import mage.counters.Counter;
|
||||
import mage.counters.CounterType;
|
||||
import mage.game.Game;
|
||||
|
|
@ -22,6 +19,10 @@ import mage.game.permanent.Permanent;
|
|||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author sobiech
|
||||
*/
|
||||
|
|
@ -35,8 +36,9 @@ public final class AethericAmplifier extends CardImpl {
|
|||
|
||||
// {4}, {T}: Choose one. Activate only as a sorcery.
|
||||
// * Double the number of each kind of counter on target permanent.
|
||||
final Ability ability = new ActivateAsSorceryActivatedAbility(new AethericAmplifierDoublePermanentEffect(), new GenericManaCost(4))
|
||||
.withShowActivateText(false);
|
||||
Ability ability = new SimpleActivatedAbility(
|
||||
new AethericAmplifierDoublePermanentEffect(), new GenericManaCost(4)
|
||||
).setTiming(TimingRule.SORCERY);
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addTarget(new TargetPermanent());
|
||||
ability.getModes().setChooseText("choose one. Activate only as a sorcery.");
|
||||
|
|
@ -145,5 +147,3 @@ class AethericAmplifierDoubleControllerEffect extends OneShotEffect {
|
|||
return new AethericAmplifierDoubleControllerEffect(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
57
Mage.Sets/src/mage/cards/m/MoxiteRefinery.java
Normal file
57
Mage.Sets/src/mage/cards/m/MoxiteRefinery.java
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
package mage.cards.m;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.Mode;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.RemoveVariableCountersTargetCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.dynamicvalue.common.GetXValue;
|
||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.TimingRule;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.common.TargetArtifactPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class MoxiteRefinery extends CardImpl {
|
||||
|
||||
public MoxiteRefinery(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
||||
|
||||
// {2}, {T}, Remove X counters from an artifact or creature you control: Choose one. Activate only as a sorcery.
|
||||
// * Put X charge counters on target artifact.
|
||||
Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(
|
||||
CounterType.CHARGE.createInstance(), GetXValue.instance
|
||||
), new GenericManaCost(2)).setTiming(TimingRule.SORCERY);
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new RemoveVariableCountersTargetCost(
|
||||
StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_OR_CREATURE, CounterType.CHARGE
|
||||
));
|
||||
ability.addTarget(new TargetArtifactPermanent());
|
||||
ability.getModes().setChooseText("choose one. Activate only as a sorcery.");
|
||||
|
||||
// * Put X +1/+1 counters on target creature.
|
||||
ability.addMode(new Mode(new AddCountersTargetEffect(
|
||||
CounterType.P1P1.createInstance(), GetXValue.instance
|
||||
)).addTarget(new TargetCreaturePermanent()));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private MoxiteRefinery(final MoxiteRefinery card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MoxiteRefinery copy() {
|
||||
return new MoxiteRefinery(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -116,6 +116,8 @@ public final class EdgeOfEternitiesCommander extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Mindless Automaton", 142, Rarity.UNCOMMON, mage.cards.m.MindlessAutomaton.class));
|
||||
cards.add(new SetCardInfo("Moraug, Fury of Akoum", 89, Rarity.MYTHIC, mage.cards.m.MoraugFuryOfAkoum.class));
|
||||
cards.add(new SetCardInfo("Mountain Valley", 61, Rarity.UNCOMMON, mage.cards.m.MountainValley.class));
|
||||
cards.add(new SetCardInfo("Moxite Refinery", 17, Rarity.RARE, mage.cards.m.MoxiteRefinery.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Moxite Refinery", 37, Rarity.RARE, mage.cards.m.MoxiteRefinery.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Multani, Yavimaya's Avatar", 100, Rarity.MYTHIC, mage.cards.m.MultaniYavimayasAvatar.class));
|
||||
cards.add(new SetCardInfo("Myriad Landscape", 169, Rarity.UNCOMMON, mage.cards.m.MyriadLandscape.class));
|
||||
cards.add(new SetCardInfo("Mystic Monastery", 170, Rarity.UNCOMMON, mage.cards.m.MysticMonastery.class));
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ import mage.constants.Zone;
|
|||
|
||||
public class ActivateAsSorceryActivatedAbility extends ActivatedAbilityImpl {
|
||||
|
||||
private boolean showActivateText = true;
|
||||
|
||||
public ActivateAsSorceryActivatedAbility(Effect effect, Cost cost) {
|
||||
this(Zone.BATTLEFIELD, effect, cost);
|
||||
}
|
||||
|
|
@ -22,7 +20,6 @@ public class ActivateAsSorceryActivatedAbility extends ActivatedAbilityImpl {
|
|||
|
||||
protected ActivateAsSorceryActivatedAbility(final ActivateAsSorceryActivatedAbility ability) {
|
||||
super(ability);
|
||||
this.showActivateText = ability.showActivateText;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -30,18 +27,9 @@ public class ActivateAsSorceryActivatedAbility extends ActivatedAbilityImpl {
|
|||
return new ActivateAsSorceryActivatedAbility(this);
|
||||
}
|
||||
|
||||
public ActivateAsSorceryActivatedAbility withShowActivateText(boolean showActivateText) {
|
||||
this.showActivateText = showActivateText;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
String superRule = super.getRule();
|
||||
if (!showActivateText) {
|
||||
return superRule;
|
||||
}
|
||||
|
||||
String newText = (mayActivate == TargetController.OPPONENT
|
||||
? " Only your opponents may activate this ability and only as a sorcery."
|
||||
: " Activate only as a sorcery.");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue