mirror of
https://github.com/correl/mage.git
synced 2024-12-30 19:10:36 +00:00
[MOC] Implement Mirror-Style Master
This commit is contained in:
parent
771c291d78
commit
203defa56d
2 changed files with 105 additions and 0 deletions
104
Mage.Sets/src/mage/cards/m/MirrorStyleMaster.java
Normal file
104
Mage.Sets/src/mage/cards/m/MirrorStyleMaster.java
Normal file
|
@ -0,0 +1,104 @@
|
|||
package mage.cards.m;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
|
||||
import mage.abilities.effects.common.ExileTargetEffect;
|
||||
import mage.abilities.keyword.BackupAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AttackingPredicate;
|
||||
import mage.filter.predicate.permanent.ModifiedPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.targetpointer.FixedTargets;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class MirrorStyleMaster extends CardImpl {
|
||||
|
||||
public MirrorStyleMaster(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}{R}");
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WARRIOR);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Backup 1
|
||||
BackupAbility backupAbility = new BackupAbility(this, 1);
|
||||
this.addAbility(backupAbility);
|
||||
|
||||
// Whenever this creature attacks, for each attacking modified creature you control, create a tapped and attacking token that's a copy of that creature. Exile those tokens at end of combat.
|
||||
backupAbility.addAbility(new AttacksTriggeredAbility(new MirrorStyleMasterEffect())
|
||||
.setTriggerPhrase("Whenever this creature attacks, "));
|
||||
}
|
||||
|
||||
private MirrorStyleMaster(final MirrorStyleMaster card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MirrorStyleMaster copy() {
|
||||
return new MirrorStyleMaster(this);
|
||||
}
|
||||
}
|
||||
|
||||
class MirrorStyleMasterEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
|
||||
|
||||
static {
|
||||
filter.add(AttackingPredicate.instance);
|
||||
filter.add(ModifiedPredicate.instance);
|
||||
}
|
||||
|
||||
MirrorStyleMasterEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "for each attacking modified creature you control, create a tapped and attacking token " +
|
||||
"that's a copy of that creature. Exile those tokens at end of combat";
|
||||
}
|
||||
|
||||
private MirrorStyleMasterEffect(final MirrorStyleMasterEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MirrorStyleMasterEffect copy() {
|
||||
return new MirrorStyleMasterEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
List<Permanent> permanents = new ArrayList<>();
|
||||
for (Permanent permanent : game.getBattlefield().getActivePermanents(
|
||||
filter, source.getControllerId(), source, game
|
||||
)) {
|
||||
CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(
|
||||
null, null, false, 1, true, true
|
||||
);
|
||||
effect.setSavedPermanent(permanent);
|
||||
effect.apply(game, source);
|
||||
permanents.addAll(effect.getAddedPermanents());
|
||||
}
|
||||
game.addDelayedTriggeredAbility(new AtTheEndOfCombatDelayedTriggeredAbility(
|
||||
new ExileTargetEffect()
|
||||
.setTargetPointer(new FixedTargets(permanents, game))
|
||||
.setText("exile those tokens")
|
||||
), source);
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -197,6 +197,7 @@ public final class MarchOfTheMachineCommander extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Mikaeus, the Lunarch", 197, Rarity.RARE, mage.cards.m.MikaeusTheLunarch.class));
|
||||
cards.add(new SetCardInfo("Mind Stone", 364, Rarity.UNCOMMON, mage.cards.m.MindStone.class));
|
||||
cards.add(new SetCardInfo("Mindless Automaton", 365, Rarity.UNCOMMON, mage.cards.m.MindlessAutomaton.class));
|
||||
cards.add(new SetCardInfo("Mirror-Style Master", 32, Rarity.RARE, mage.cards.m.MirrorStyleMaster.class));
|
||||
cards.add(new SetCardInfo("Mortify", 337, Rarity.UNCOMMON, mage.cards.m.Mortify.class));
|
||||
cards.add(new SetCardInfo("Mossfire Valley", 414, Rarity.RARE, mage.cards.m.MossfireValley.class));
|
||||
cards.add(new SetCardInfo("Mosswort Bridge", 415, Rarity.RARE, mage.cards.m.MosswortBridge.class));
|
||||
|
|
Loading…
Reference in a new issue