From 4b0ae51c07a16ac0b160a205d415524497584809 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 19 Jul 2015 19:28:46 +0200 Subject: [PATCH] * Omniscience - Workaround to be able to use Omniscience alternate casting cost for fused spells. --- .../src/mage/sets/magic2013/Omniscience.java | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/Mage.Sets/src/mage/sets/magic2013/Omniscience.java b/Mage.Sets/src/mage/sets/magic2013/Omniscience.java index 6c9b7cf9322..1b2f082a670 100644 --- a/Mage.Sets/src/mage/sets/magic2013/Omniscience.java +++ b/Mage.Sets/src/mage/sets/magic2013/Omniscience.java @@ -28,7 +28,6 @@ package mage.sets.magic2013; import java.util.UUID; - import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -39,6 +38,7 @@ import mage.abilities.costs.AlternativeCostSourceAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.cards.Card; import mage.cards.CardImpl; +import mage.cards.SplitCardHalf; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Layer; @@ -61,7 +61,6 @@ public class Omniscience extends CardImpl { super(ownerId, 63, "Omniscience", Rarity.MYTHIC, new CardType[]{CardType.ENCHANTMENT}, "{7}{U}{U}{U}"); this.expansionSetCode = "M13"; - // You may cast nonland cards from your hand without paying their mana costs. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new OmniscienceCastingEffect())); } @@ -116,19 +115,18 @@ class OmniscienceCastingEffect extends ContinuousEffectImpl { class IsBeingCastFromHandCondition implements Condition { - @Override - public boolean apply(Game game, Ability source) { + @Override + public boolean apply(Game game, Ability source) { MageObject object = game.getObject(source.getSourceId()); - if(object instanceof Spell) { - Spell spell = (Spell) object; - return spell != null && spell.getFromZone() == Zone.HAND; - } - if(object instanceof Card) { - Card card = (Card)object; - return game.getPlayer(card.getOwnerId()).getHand().get(card.getId(), game) != null; - } - - return false; - } + if (object instanceof SplitCardHalf) { + UUID splitCardId = ((Card) object).getMainCard().getId(); + object = game.getObject(splitCardId); + } + if (object instanceof Spell) { + Spell spell = (Spell) object; + return spell.getFromZone() == Zone.HAND; + } + return false; + } }