* Homura, Human Ascendant - Fixed return flipped ability. Fixed that some of the Enchantment abilities were applied to all permanents instad of only creatures.

This commit is contained in:
LevelX2 2015-12-04 00:44:04 +01:00
parent e5b4790d20
commit 65f4b4c2d7

View file

@ -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);
}
}