* Simplified flip handling. Flip continiuous effect has now time stamp of time the card flipped so it works with copied cards.

This commit is contained in:
LevelX2 2014-03-06 21:46:33 +01:00
parent 948449ee13
commit 85e90881c1
14 changed files with 33 additions and 112 deletions

View file

@ -32,14 +32,10 @@ import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.OnEventTriggeredAbility; import mage.abilities.common.OnEventTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.condition.common.SourceHasCounterCondition; import mage.abilities.condition.common.SourceHasCounterCondition;
import mage.abilities.costs.common.RemoveCountersSourceCost; import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.abilities.effects.common.continious.BoostTargetEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
@ -80,13 +76,9 @@ public class BudokaPupil extends CardImpl<BudokaPupil> {
// At the beginning of the end step, if there are two or more ki counters on Budoka Pupil, you may flip it. // At the beginning of the end step, if there are two or more ki counters on Budoka Pupil, you may flip it.
this.addAbility(new ConditionalTriggeredAbility( this.addAbility(new ConditionalTriggeredAbility(
new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect()), new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect(new IchigaWhoTopplesOaks())),
new SourceHasCounterCondition(CounterType.KI, 2, Integer.MAX_VALUE), new SourceHasCounterCondition(CounterType.KI, 2, Integer.MAX_VALUE),
"At the beginning of the end step, if there are two or more ki counters on {this}, you may flip it.", true)); "At the beginning of the end step, if there are two or more ki counters on {this}, you may flip it.", true));
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new IchigaWhoTopplesOaks()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }
public BudokaPupil(final BudokaPupil card) { public BudokaPupil(final BudokaPupil card) {

View file

@ -32,15 +32,11 @@ import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.OnEventTriggeredAbility; import mage.abilities.common.OnEventTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.condition.common.SourceHasCounterCondition; import mage.abilities.condition.common.SourceHasCounterCondition;
import mage.abilities.costs.common.RemoveCountersSourceCost; import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.CounterUnlessPaysEffect; import mage.abilities.effects.common.CounterUnlessPaysEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
@ -79,13 +75,9 @@ public class CallowJushi extends CardImpl<CallowJushi> {
// At the beginning of the end step, if there are two or more ki counters on Callow Jushi, you may flip it. // At the beginning of the end step, if there are two or more ki counters on Callow Jushi, you may flip it.
this.addAbility(new ConditionalTriggeredAbility( this.addAbility(new ConditionalTriggeredAbility(
new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect()), new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect(new JarakuTheInterloper())),
new SourceHasCounterCondition(CounterType.KI, 2, Integer.MAX_VALUE), new SourceHasCounterCondition(CounterType.KI, 2, Integer.MAX_VALUE),
"At the beginning of the end step, if there are two or more ki counters on {this}, you may flip it.", true)); "At the beginning of the end step, if there are two or more ki counters on {this}, you may flip it.", true));
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new JarakuTheInterloper()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }
public CallowJushi(final CallowJushi card) { public CallowJushi(final CallowJushi card) {

View file

@ -32,14 +32,10 @@ import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.OnEventTriggeredAbility; import mage.abilities.common.OnEventTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.condition.common.SourceHasCounterCondition; import mage.abilities.condition.common.SourceHasCounterCondition;
import mage.abilities.costs.common.RemoveCountersSourceCost; import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.abilities.effects.common.continious.GainControlTargetEffect; import mage.abilities.effects.common.continious.GainControlTargetEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
@ -79,13 +75,9 @@ public class CunningBandit extends CardImpl<CunningBandit> {
// At the beginning of the end step, if there are two or more ki counters on Cunning Bandit, you may flip it. // At the beginning of the end step, if there are two or more ki counters on Cunning Bandit, you may flip it.
this.addAbility(new ConditionalTriggeredAbility( this.addAbility(new ConditionalTriggeredAbility(
new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect()), new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect(new AzamukiTreacheryIncarnate())),
new SourceHasCounterCondition(CounterType.KI, 2, Integer.MAX_VALUE), new SourceHasCounterCondition(CounterType.KI, 2, Integer.MAX_VALUE),
"At the beginning of the end step, if there are two or more ki counters on {this}, you may flip it.", true)); "At the beginning of the end step, if there are two or more ki counters on {this}, you may flip it.", true));
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new AzamukiTreacheryIncarnate()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }
public CunningBandit(final CunningBandit card) { public CunningBandit(final CunningBandit card) {

View file

@ -37,12 +37,9 @@ import mage.constants.Zone;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.*; import mage.abilities.common.*;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.condition.common.SourceHasCounterCondition; import mage.abilities.condition.common.SourceHasCounterCondition;
import mage.abilities.costs.common.RemoveCountersSourceCost; import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.abilities.effects.common.PreventDamageTargetEffect; import mage.abilities.effects.common.PreventDamageTargetEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
@ -80,13 +77,10 @@ public class FaithfulSquire extends CardImpl<FaithfulSquire> {
// At the beginning of the end step, if there are two or more ki counters on Faithful Squire, you may flip it // At the beginning of the end step, if there are two or more ki counters on Faithful Squire, you may flip it
this.addAbility(new ConditionalTriggeredAbility( this.addAbility(new ConditionalTriggeredAbility(
new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect()), new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect(new KaisoMemoryOfLoyalty())),
new SourceHasCounterCondition(CounterType.KI, 2, Integer.MAX_VALUE), new SourceHasCounterCondition(CounterType.KI, 2, Integer.MAX_VALUE),
"At the beginning of the end step, if there are two or more ki counters on {this}, you may flip it.", true)); "At the beginning of the end step, if there are two or more ki counters on {this}, you may flip it.", true));
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new KaisoMemoryOfLoyalty()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }
public FaithfulSquire(final FaithfulSquire card) { public FaithfulSquire(final FaithfulSquire card) {

View file

@ -32,17 +32,12 @@ import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.OnEventTriggeredAbility; import mage.abilities.common.OnEventTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.condition.common.SourceHasCounterCondition; import mage.abilities.condition.common.SourceHasCounterCondition;
import mage.abilities.costs.common.RemoveCountersSourceCost; import mage.abilities.costs.common.RemoveCountersSourceCost;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.effects.common.continious.GainAbilityTargetEffect;
import mage.abilities.effects.common.continious.GainControlTargetEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.FearAbility; import mage.abilities.keyword.FearAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -81,14 +76,9 @@ public class HiredMuscle extends CardImpl<HiredMuscle> {
// At the beginning of the end step, if there are two or more ki counters on Hired Muscle, you may flip it. // At the beginning of the end step, if there are two or more ki counters on Hired Muscle, you may flip it.
this.addAbility(new ConditionalTriggeredAbility( this.addAbility(new ConditionalTriggeredAbility(
new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect()), new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect(new Scarmaker())),
new SourceHasCounterCondition(CounterType.KI, 2, Integer.MAX_VALUE), new SourceHasCounterCondition(CounterType.KI, 2, Integer.MAX_VALUE),
"At the beginning of the end step, if there are two or more ki counters on {this}, you may flip it.", true)); "At the beginning of the end step, if there are two or more ki counters on {this}, you may flip it.", true));
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new Scarmaker()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }
public HiredMuscle(final HiredMuscle card) { public HiredMuscle(final HiredMuscle card) {

View file

@ -5,10 +5,7 @@ import mage.ObjectColor;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.ReplacementEffectImpl;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.ProtectionAbility;
@ -39,11 +36,11 @@ public class AkkiLavarunner extends CardImpl<AkkiLavarunner> {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
this.flipCard = true; this.flipCard = true;
this.flipCardName = "Tok-Tok, Volcano Born"; this.flipCardName = "Tok-Tok, Volcano Born";
// Haste
this.addAbility(HasteAbility.getInstance()); this.addAbility(HasteAbility.getInstance());
// Whenever Akki Lavarunner deals damage to an opponent, flip it.
this.addAbility(new AkkiLavarunnerAbility()); this.addAbility(new AkkiLavarunnerAbility());
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new TokTokVolcanoBorn()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }
public AkkiLavarunner(final AkkiLavarunner card) { public AkkiLavarunner(final AkkiLavarunner card) {
@ -59,7 +56,7 @@ public class AkkiLavarunner extends CardImpl<AkkiLavarunner> {
class AkkiLavarunnerAbility extends TriggeredAbilityImpl<AkkiLavarunnerAbility> { class AkkiLavarunnerAbility extends TriggeredAbilityImpl<AkkiLavarunnerAbility> {
public AkkiLavarunnerAbility() { public AkkiLavarunnerAbility() {
super(Zone.BATTLEFIELD, new FlipSourceEffect()); super(Zone.BATTLEFIELD, new FlipSourceEffect(new TokTokVolcanoBorn()));
} }
public AkkiLavarunnerAbility(final AkkiLavarunnerAbility ability) { public AkkiLavarunnerAbility(final AkkiLavarunnerAbility ability) {

View file

@ -34,11 +34,7 @@ import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility; import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -79,10 +75,7 @@ public class InitiateOfBlood extends CardImpl<InitiateOfBlood> {
this.addAbility(ability); this.addAbility(ability);
// When that creature is put into a graveyard this turn, flip Initiate of Blood. // When that creature is put into a graveyard this turn, flip Initiate of Blood.
this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new FlipSourceEffect())); this.addAbility(new DiesAndDealtDamageThisTurnTriggeredAbility(new FlipSourceEffect(new GokaTheUnjust())));
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new GokaTheUnjust()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }

View file

@ -34,16 +34,12 @@ import mage.constants.Zone;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.CardsInHandCondition; import mage.abilities.condition.common.CardsInHandCondition;
import mage.abilities.condition.common.CardsInHandCondition.CountType; import mage.abilities.condition.common.CardsInHandCondition.CountType;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardsInControllerHandCount; import mage.abilities.dynamicvalue.common.CardsInControllerHandCount;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.DrawCardControllerEffect; import mage.abilities.effects.common.DrawCardControllerEffect;
import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.DrawCardTargetEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
@ -72,12 +68,9 @@ public class JushiApprentice extends CardImpl<JushiApprentice> {
// {2}{U}, {tap}: Draw a card. If you have nine or more cards in hand, flip Jushi Apprentice. // {2}{U}, {tap}: Draw a card. If you have nine or more cards in hand, flip Jushi Apprentice.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardControllerEffect(1), new ManaCostsImpl("{2}{U}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardControllerEffect(1), new ManaCostsImpl("{2}{U}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addEffect(new ConditionalOneShotEffect(new FlipSourceEffect(), new CardsInHandCondition(CountType.MORE_THAN, 8), ability.addEffect(new ConditionalOneShotEffect(new FlipSourceEffect(new TomoyaTheRevealer()), new CardsInHandCondition(CountType.MORE_THAN, 8),
"If you have nine or more cards in hand, flip {this}")); "If you have nine or more cards in hand, flip {this}"));
this.addAbility(ability); this.addAbility(ability);
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new TomoyaTheRevealer()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }
public JushiApprentice(final JushiApprentice card) { public JushiApprentice(final JushiApprentice card) {

View file

@ -76,12 +76,9 @@ public class KitsuneMystic extends CardImpl<KitsuneMystic> {
// At the beginning of the end step, if Kitsune Mystic is enchanted by two or more Auras, flip it. // At the beginning of the end step, if Kitsune Mystic is enchanted by two or more Auras, flip it.
this.addAbility(new ConditionalTriggeredAbility( this.addAbility(new ConditionalTriggeredAbility(
new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect()), new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of the end step", true, new FlipSourceEffect(new AutumnTailKitsuneSage())),
new EnchantedCondition(2),"At the beginning of the end step, if {this} is enchanted by two or more Auras, flip it.", false new EnchantedCondition(2),"At the beginning of the end step, if {this} is enchanted by two or more Auras, flip it.", false
)); ));
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new AutumnTailKitsuneSage()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }
public KitsuneMystic(final KitsuneMystic card) { public KitsuneMystic(final KitsuneMystic card) {

View file

@ -37,15 +37,11 @@ import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition; import mage.abilities.condition.Condition;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.DiscardTargetEffect; import mage.abilities.effects.common.DiscardTargetEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -77,13 +73,10 @@ public class NezumiShortfang extends CardImpl<NezumiShortfang> {
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addTarget(new TargetOpponent()); ability.addTarget(new TargetOpponent());
ability.addEffect(new ConditionalOneShotEffect( ability.addEffect(new ConditionalOneShotEffect(
new FlipSourceEffect(), new FlipSourceEffect(new StabwhiskerTheOdious()),
new CardsInTargetOpponentHandCondition(CardsInTargetOpponentHandCondition.CountType.FEWER_THAN, 1), new CardsInTargetOpponentHandCondition(CardsInTargetOpponentHandCondition.CountType.FEWER_THAN, 1),
"Then if that player has no cards in hand, flip {this}")); "Then if that player has no cards in hand, flip {this}"));
this.addAbility(ability); this.addAbility(ability);
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new StabwhiskerTheOdious()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }
public NezumiShortfang(final NezumiShortfang card) { public NezumiShortfang(final NezumiShortfang card) {

View file

@ -37,15 +37,11 @@ import mage.constants.Zone;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.ControlsPermanentCondition; import mage.abilities.condition.common.ControlsPermanentCondition;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.abilities.effects.common.continious.BoostTargetEffect;
@ -78,13 +74,9 @@ public class OrochiEggwatcher extends CardImpl<OrochiEggwatcher> {
Ability ability; Ability ability;
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new SnakeToken()),new ManaCostsImpl("{2}{G}")); ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new SnakeToken()),new ManaCostsImpl("{2}{G}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addEffect(new ConditionalOneShotEffect(new FlipSourceEffect(), ability.addEffect(new ConditionalOneShotEffect(new FlipSourceEffect(new ShidakoBroodmistress()),
new ControlsPermanentCondition(new FilterControlledCreaturePermanent(),ControlsPermanentCondition.CountType.MORE_THAN, 9),"If you control ten or more creatures, flip {this}")); new ControlsPermanentCondition(new FilterControlledCreaturePermanent(),ControlsPermanentCondition.CountType.MORE_THAN, 9),"If you control ten or more creatures, flip {this}"));
this.addAbility(ability); this.addAbility(ability);
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new ShidakoBroodmistress()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }
public OrochiEggwatcher(final OrochiEggwatcher card) { public OrochiEggwatcher(final OrochiEggwatcher card) {

View file

@ -29,12 +29,8 @@ package mage.sets.championsofkamigawa;
import java.util.UUID; import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.StateTriggeredAbility; import mage.abilities.StateTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
@ -69,11 +65,6 @@ public class StudentOfElements extends CardImpl<StudentOfElements> {
// When Student of Elements has flying, flip it. // When Student of Elements has flying, flip it.
this.addAbility(new StudentOfElementsHasFlyingAbility()); this.addAbility(new StudentOfElementsHasFlyingAbility());
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new TobitaMasterOfWinds()), FlippedCondition.getInstance(), ""));
ability.setRuleVisible(false);
this.addAbility(ability);
} }
public StudentOfElements(final StudentOfElements card) { public StudentOfElements(final StudentOfElements card) {
@ -89,7 +80,7 @@ public class StudentOfElements extends CardImpl<StudentOfElements> {
class StudentOfElementsHasFlyingAbility extends StateTriggeredAbility<StudentOfElementsHasFlyingAbility> { class StudentOfElementsHasFlyingAbility extends StateTriggeredAbility<StudentOfElementsHasFlyingAbility> {
public StudentOfElementsHasFlyingAbility() { public StudentOfElementsHasFlyingAbility() {
super(Zone.BATTLEFIELD, new FlipSourceEffect()); super(Zone.BATTLEFIELD, new FlipSourceEffect(new TobitaMasterOfWinds()));
} }
public StudentOfElementsHasFlyingAbility(final StudentOfElementsHasFlyingAbility ability) { public StudentOfElementsHasFlyingAbility(final StudentOfElementsHasFlyingAbility ability) {

View file

@ -34,10 +34,7 @@ import mage.abilities.common.CantBlockAbility;
import mage.abilities.common.DiesTriggeredAbility; import mage.abilities.common.DiesTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.effects.common.CopyTokenEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.BoostControlledEffect;
import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.BoostSourceEffect;
@ -73,11 +70,7 @@ public class HomuraHumanAscendant extends CardImpl<HomuraHumanAscendant> {
// Homura, Human Ascendant can't block. // Homura, Human Ascendant can't block.
this.addAbility(new CantBlockAbility()); this.addAbility(new CantBlockAbility());
// When Homura dies, return it to the battlefield flipped. // When Homura dies, return it to the battlefield flipped.
this.addAbility(new DiesTriggeredAbility(new FlipSourceEffect())); this.addAbility(new DiesTriggeredAbility(new FlipSourceEffect(new HomurasEssence2())));
Ability flipAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new CopyTokenEffect(new HomurasEssence2()), FlippedCondition.getInstance(), "{this} becomes Homura's Essence"));
flipAbility.setRuleVisible(false);
this.addAbility(flipAbility);
} }
public HomuraHumanAscendant(final HomuraHumanAscendant card) { public HomuraHumanAscendant(final HomuraHumanAscendant card) {

View file

@ -1,10 +1,14 @@
package mage.abilities.effects.common; package mage.abilities.effects.common;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.condition.common.FlippedCondition;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.Token;
/** /**
@ -12,20 +16,28 @@ import mage.game.permanent.Permanent;
*/ */
public class FlipSourceEffect extends OneShotEffect<FlipSourceEffect> { public class FlipSourceEffect extends OneShotEffect<FlipSourceEffect> {
public FlipSourceEffect() { private final Token flipToken;
public FlipSourceEffect(Token flipToken) {
super(Outcome.BecomeCreature); super(Outcome.BecomeCreature);
this.flipToken = flipToken;
staticText = "flip it"; staticText = "flip it";
} }
public FlipSourceEffect(final FlipSourceEffect effect) { public FlipSourceEffect(final FlipSourceEffect effect) {
super(effect); super(effect);
this.flipToken = effect.flipToken;
} }
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Permanent p = game.getPermanent(source.getSourceId()); Permanent permanent = game.getPermanent(source.getSourceId());
if (p != null) { if (permanent != null) {
return p.flip(game); if (permanent.flip(game)) {
ContinuousEffect effect = new ConditionalContinousEffect(new CopyTokenEffect(flipToken), FlippedCondition.getInstance(), "");
game.addEffect(effect, source);
return true;
}
} }
return false; return false;
} }