mirror of
https://github.com/correl/mage.git
synced 2024-11-15 03:00:16 +00:00
* 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:
parent
e5b4790d20
commit
65f4b4c2d7
1 changed files with 60 additions and 7 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue