From c4e185a7dea1454386ee74bbbc12f8cc2b6c6c57 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 25 Jan 2015 00:56:17 +0100 Subject: [PATCH] * Omen Machine - Some rework. --- .../mage/sets/newphyrexia/OmenMachine.java | 61 +++++-------------- 1 file changed, 15 insertions(+), 46 deletions(-) diff --git a/Mage.Sets/src/mage/sets/newphyrexia/OmenMachine.java b/Mage.Sets/src/mage/sets/newphyrexia/OmenMachine.java index 1d60feece4..e01002695d 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/OmenMachine.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/OmenMachine.java @@ -34,17 +34,17 @@ import mage.constants.Outcome; import mage.constants.Rarity; import mage.constants.Zone; import mage.abilities.Ability; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.BeginningOfDrawTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.ContinuousRuleModifiyingEffectImpl; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.ReplacementEffectImpl; import mage.cards.Card; import mage.cards.CardImpl; +import mage.constants.TargetController; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.players.Player; -import mage.target.targetpointer.FixedTarget; /** * @@ -60,7 +60,7 @@ public class OmenMachine extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new OmenMachineEffect())); // At the beginning of each player's draw step, that player exiles the top card of his or her library. If it's a land card, the player puts it onto the battlefield. Otherwise, the player casts it without paying its mana cost if able. - this.addAbility(new OmenMachineAbility()); + this.addAbility(new BeginningOfDrawTriggeredAbility(new OmenMachineEffect2(), TargetController.ANY, false)); } public OmenMachine(final OmenMachine card) { @@ -73,10 +73,10 @@ public class OmenMachine extends CardImpl { } } -class OmenMachineEffect extends ReplacementEffectImpl { +class OmenMachineEffect extends ContinuousRuleModifiyingEffectImpl { public OmenMachineEffect() { - super(Duration.WhileOnBattlefield, Outcome.Neutral); + super(Duration.WhileOnBattlefield, Outcome.Neutral, false, false); staticText = "Players can't draw cards"; } @@ -95,47 +95,13 @@ class OmenMachineEffect extends ReplacementEffectImpl { } @Override - public boolean replaceEvent(GameEvent event, Ability source, Game game) { - return true; + public boolean checksEventType(GameEvent event, Game game) { + return event.getType() == EventType.DRAW_CARD; } @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (event.getType() == EventType.DRAW_CARD) { - return true; - } - return false; - } - -} - -class OmenMachineAbility extends TriggeredAbilityImpl { - - public OmenMachineAbility() { - super(Zone.BATTLEFIELD, new OmenMachineEffect2()); - } - - public OmenMachineAbility(final OmenMachineAbility ability) { - super(ability); - } - - @Override - public OmenMachineAbility copy() { - return new OmenMachineAbility(this); - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getType() == EventType.DRAW_STEP_PRE) { - this.getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); - return true; - } - return false; - } - - @Override - public String getRule() { - return "At the beginning of each player's draw step, that player exiles the top card of his or her library. If it's a land card, the player puts it onto the battlefield. Otherwise, the player casts it without paying its mana cost if able."; + return true; } } @@ -144,6 +110,7 @@ class OmenMachineEffect2 extends OneShotEffect { public OmenMachineEffect2() { super(Outcome.PlayForFree); + staticText = "that player exiles the top card of his or her library. If it's a land card, the player puts it onto the battlefield. Otherwise, the player casts it without paying its mana cost if able"; } public OmenMachineEffect2(final OmenMachineEffect2 effect) { @@ -156,12 +123,14 @@ class OmenMachineEffect2 extends OneShotEffect { if (player != null) { Card card = player.getLibrary().removeFromTop(game); if (card != null) { - card.moveToExile(source.getSourceId(), "Omen Machine Exile", source.getSourceId(), game); + player.moveCardToExileWithInfo(card, null, "", source.getSourceId(), game, Zone.LIBRARY); if (card.getCardType().contains(CardType.LAND)) { - card.putOntoBattlefield(game, Zone.EXILED, source.getSourceId(), player.getId()); + player.putOntoBattlefieldWithInfo(card, game, Zone.EXILED, source.getSourceId()); } else { - player.cast(card.getSpellAbility(), game, true); + if (card.getSpellAbility().canChooseTarget(game)) { + player.cast(card.getSpellAbility(), game, true); + } } } return true;