From 65f4b4c2d71cde09141ef307c42a7aad5055c504 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 4 Dec 2015 00:44:04 +0100 Subject: [PATCH] * Homura, Human Ascendant - Fixed return flipped ability. Fixed that some of the Enchantment abilities were applied to all permanents instad of only creatures. --- .../HomuraHumanAscendant.java | 67 +++++++++++++++++-- 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/HomuraHumanAscendant.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/HomuraHumanAscendant.java index d1ae39ee11a..8eba889753d 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/HomuraHumanAscendant.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/HomuraHumanAscendant.java @@ -34,19 +34,29 @@ import mage.abilities.common.CantBlockAbility; import mage.abilities.common.DiesTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.common.FlippedCondition; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.FlipSourceEffect; +import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.effects.ContinuousEffect; +import mage.abilities.effects.Effect; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.CopyTokenEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.FlyingAbility; +import mage.cards.Card; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.Outcome; import mage.constants.Rarity; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; +import mage.game.Game; +import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; +import mage.players.Player; /** * @@ -69,7 +79,7 @@ public class HomuraHumanAscendant extends CardImpl { // Homura, Human Ascendant can't block. this.addAbility(new CantBlockAbility()); // When Homura dies, return it to the battlefield flipped. - this.addAbility(new DiesTriggeredAbility(new FlipSourceEffect(new HomurasEssence2()))); + this.addAbility(new DiesTriggeredAbility(new HomuraReturnFlippedSourceEffect(new HomurasEssence2()))); } public HomuraHumanAscendant(final HomuraHumanAscendant card) { @@ -82,8 +92,46 @@ public class HomuraHumanAscendant extends CardImpl { } } -class HomurasEssence2 extends Token { +class HomuraReturnFlippedSourceEffect extends OneShotEffect { + private final Token flipToken; + + public HomuraReturnFlippedSourceEffect(Token flipToken) { + super(Outcome.BecomeCreature); + this.flipToken = flipToken; + staticText = "return it to the battlefield flipped"; + } + + public HomuraReturnFlippedSourceEffect(final HomuraReturnFlippedSourceEffect effect) { + super(effect); + this.flipToken = effect.flipToken; + } + + @Override + public boolean apply(Game game, Ability source) { + Card sourceCard = game.getCard(source.getSourceId()); + Player controller = game.getPlayer(source.getControllerId()); + if (sourceCard != null && controller != null && game.getState().getZone(source.getSourceId()).equals(Zone.GRAVEYARD)) { + ContinuousEffect effect = new ConditionalContinuousEffect(new CopyTokenEffect(flipToken), FlippedCondition.getInstance(), ""); + game.addEffect(effect, source); + controller.moveCards(sourceCard, Zone.BATTLEFIELD, source, game); + Permanent permanent = game.getPermanent(source.getSourceId()); + if (permanent != null) { + permanent.flip(game); // not complete correct because it should enter the battlefield flipped + } + return true; + } + return false; + } + + @Override + public HomuraReturnFlippedSourceEffect copy() { + return new HomuraReturnFlippedSourceEffect(this); + } + +} + +class HomurasEssence2 extends Token { HomurasEssence2() { super("Homura's Essence", ""); @@ -91,10 +139,15 @@ class HomurasEssence2 extends Token { cardType.add(CardType.ENCHANTMENT); color.setRed(true); // Creatures you control get +2/+2 and have flying and "{R}: This creature gets +1/+0 until end of turn." - Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, new FilterCreaturePermanent(), false)); - ability.addEffect(new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield)); - Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1,0, Duration.EndOfTurn), new ManaCostsImpl("{R}")); - ability.addEffect(new GainAbilityControlledEffect(gainedAbility, Duration.WhileOnBattlefield)); + FilterCreaturePermanent filter = new FilterCreaturePermanent(); + Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, filter, false)); + Effect effect = new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield, filter); + effect.setText("and have flying"); + ability.addEffect(effect); + Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}")); + effect = new GainAbilityControlledEffect(gainedAbility, Duration.WhileOnBattlefield, filter); + effect.setText("and \"{R}: This creature gets +1/+0 until end of turn.\""); + ability.addEffect(effect); this.addAbility(ability); } }