From 45aedd602750e645096763631e2bc3314f19d4dd Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sun, 3 Jun 2018 11:27:47 -0400 Subject: [PATCH 1/2] Implemented Shimmering Efreet --- .../src/mage/cards/s/ShimmeringEfreet.java | 49 +++++++++++++++++++ Mage.Sets/src/mage/cards/w/WarpingWurm.java | 39 +-------------- Mage.Sets/src/mage/sets/Visions.java | 1 + .../common/PhaseInTriggeredAbility.java | 42 ++++++++++++++++ 4 files changed, 94 insertions(+), 37 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/s/ShimmeringEfreet.java create mode 100644 Mage/src/main/java/mage/abilities/common/PhaseInTriggeredAbility.java diff --git a/Mage.Sets/src/mage/cards/s/ShimmeringEfreet.java b/Mage.Sets/src/mage/cards/s/ShimmeringEfreet.java new file mode 100644 index 00000000000..13d071f4750 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/ShimmeringEfreet.java @@ -0,0 +1,49 @@ +package mage.cards.s; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.PhaseInTriggeredAbility; +import mage.abilities.effects.common.PhaseOutTargetEffect; +import mage.constants.SubType; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.PhasingAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author TheElk801 + */ +public final class ShimmeringEfreet extends CardImpl { + + public ShimmeringEfreet(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}"); + + this.subtype.add(SubType.EFREET); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Phasing + this.addAbility(PhasingAbility.getInstance()); + + // Whenever Shimmering Efreet phases in, target creature phases out. + Ability ability = new PhaseInTriggeredAbility(new PhaseOutTargetEffect(), false); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + } + + public ShimmeringEfreet(final ShimmeringEfreet card) { + super(card); + } + + @Override + public ShimmeringEfreet copy() { + return new ShimmeringEfreet(this); + } +} diff --git a/Mage.Sets/src/mage/cards/w/WarpingWurm.java b/Mage.Sets/src/mage/cards/w/WarpingWurm.java index 06d4628bd30..ff75847c641 100644 --- a/Mage.Sets/src/mage/cards/w/WarpingWurm.java +++ b/Mage.Sets/src/mage/cards/w/WarpingWurm.java @@ -1,10 +1,9 @@ - package mage.cards.w; import java.util.UUID; import mage.MageInt; -import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.common.PhaseInTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DoUnlessControllerPaysEffect; import mage.abilities.effects.common.PhaseOutSourceEffect; @@ -15,10 +14,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; -import mage.constants.Zone; import mage.counters.CounterType; -import mage.game.Game; -import mage.game.events.GameEvent; /** * @@ -46,7 +42,7 @@ public final class WarpingWurm extends CardImpl { )); // When Warping Wurm phases in, put a +1/+1 counter on it. - this.addAbility(new WarpingWurmTriggeredAbility()); + this.addAbility(new PhaseInTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); } public WarpingWurm(final WarpingWurm card) { @@ -58,34 +54,3 @@ public final class WarpingWurm extends CardImpl { return new WarpingWurm(this); } } - -class WarpingWurmTriggeredAbility extends TriggeredAbilityImpl { - - WarpingWurmTriggeredAbility() { - super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance())); - } - - WarpingWurmTriggeredAbility(final WarpingWurmTriggeredAbility ability) { - super(ability); - } - - @Override - public WarpingWurmTriggeredAbility copy() { - return new WarpingWurmTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.PHASED_IN; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - return getSourceId().equals(event.getTargetId()); - } - - @Override - public String getRule() { - return "When {this} phases in, put a +1/+1 counter on it"; - } -} diff --git a/Mage.Sets/src/mage/sets/Visions.java b/Mage.Sets/src/mage/sets/Visions.java index 02d5b91a4d3..e58c373ae8b 100644 --- a/Mage.Sets/src/mage/sets/Visions.java +++ b/Mage.Sets/src/mage/sets/Visions.java @@ -134,6 +134,7 @@ public final class Visions extends ExpansionSet { cards.add(new SetCardInfo("Rowen", 119, Rarity.RARE, mage.cards.r.Rowen.class)); cards.add(new SetCardInfo("Sands of Time", 153, Rarity.RARE, mage.cards.s.SandsOfTime.class)); cards.add(new SetCardInfo("Scalebane's Elite", 135, Rarity.UNCOMMON, mage.cards.s.ScalebanesElite.class)); + cards.add(new SetCardInfo("Shimmering Efreet", 42, Rarity.UNCOMMON, mage.cards.s.ShimmeringEfreet.class)); cards.add(new SetCardInfo("Shrieking Drake", 43, Rarity.COMMON, mage.cards.s.ShriekingDrake.class)); cards.add(new SetCardInfo("Simoon", 136, Rarity.UNCOMMON, mage.cards.s.Simoon.class)); cards.add(new SetCardInfo("Sisay's Ring", 154, Rarity.COMMON, mage.cards.s.SisaysRing.class)); diff --git a/Mage/src/main/java/mage/abilities/common/PhaseInTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/PhaseInTriggeredAbility.java new file mode 100644 index 00000000000..90c4b26ac18 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/common/PhaseInTriggeredAbility.java @@ -0,0 +1,42 @@ +package mage.abilities.common; + +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.Effect; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.events.GameEvent; + +/** + * + * @author TheElk801 + */ +public class PhaseInTriggeredAbility extends TriggeredAbilityImpl { + + public PhaseInTriggeredAbility(Effect effect, boolean optional) { + super(Zone.BATTLEFIELD, effect, optional); + } + + public PhaseInTriggeredAbility(final PhaseInTriggeredAbility ability) { + super(ability); + } + + @Override + public PhaseInTriggeredAbility copy() { + return new PhaseInTriggeredAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.PHASED_IN; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + return getSourceId().equals(event.getTargetId()); + } + + @Override + public String getRule() { + return "When {this} phases in, " + super.getRule(); + } +} From a10fa3827e949dc582fc0e46beb58efdd0779cad Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sun, 3 Jun 2018 11:28:06 -0400 Subject: [PATCH 2/2] updated card templates to remove unnecessary line at top --- Utils/cardClass.tmpl | 1 - Utils/cardExtendedClass.tmpl | 1 - Utils/cardExtendedLandClass.tmpl | 1 - Utils/cardSplitClass.tmpl | 1 - 4 files changed, 4 deletions(-) diff --git a/Utils/cardClass.tmpl b/Utils/cardClass.tmpl index 9edb23398bf..d7351b9c033 100644 --- a/Utils/cardClass.tmpl +++ b/Utils/cardClass.tmpl @@ -1,4 +1,3 @@ - package mage.cards.[=$cardNameFirstLetter=]; import java.util.UUID;[= diff --git a/Utils/cardExtendedClass.tmpl b/Utils/cardExtendedClass.tmpl index 3bcb344747f..79d978519b8 100644 --- a/Utils/cardExtendedClass.tmpl +++ b/Utils/cardExtendedClass.tmpl @@ -1,4 +1,3 @@ - package mage.sets.[=$set=]; import java.util.UUID;[= if ($rarityExtended) {$OUT .= "\nimport mage.constants.Rarity;"}=] diff --git a/Utils/cardExtendedLandClass.tmpl b/Utils/cardExtendedLandClass.tmpl index 43797dad99e..00b9cac234a 100644 --- a/Utils/cardExtendedLandClass.tmpl +++ b/Utils/cardExtendedLandClass.tmpl @@ -1,4 +1,3 @@ - package mage.sets.[=$set=]; import java.util.UUID; diff --git a/Utils/cardSplitClass.tmpl b/Utils/cardSplitClass.tmpl index dc76a273901..b836f087a88 100644 --- a/Utils/cardSplitClass.tmpl +++ b/Utils/cardSplitClass.tmpl @@ -1,4 +1,3 @@ - package mage.cards.[=$cardNameFirstLetter=]; import java.util.UUID;