From c780838d29d9618b72619774a812a536d28690b9 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sat, 13 Apr 2019 13:15:39 -0400 Subject: [PATCH] Implemented God-Eternal Rhonas --- .../src/mage/cards/g/GodEternalBontu.java | 4 +- .../src/mage/cards/g/GodEternalRhonas.java | 102 ++++++++++++++++++ Mage.Sets/src/mage/sets/WarOfTheSpark.java | 1 + ...va => GodEternalDiesTriggeredAbility.java} | 10 +- 4 files changed, 110 insertions(+), 7 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/g/GodEternalRhonas.java rename Mage/src/main/java/mage/abilities/common/{GodEternalTriggeredAbility.java => GodEternalDiesTriggeredAbility.java} (88%) diff --git a/Mage.Sets/src/mage/cards/g/GodEternalBontu.java b/Mage.Sets/src/mage/cards/g/GodEternalBontu.java index 540e03d9865..ab116887243 100644 --- a/Mage.Sets/src/mage/cards/g/GodEternalBontu.java +++ b/Mage.Sets/src/mage/cards/g/GodEternalBontu.java @@ -3,7 +3,7 @@ package mage.cards.g; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.common.GodEternalTriggeredAbility; +import mage.abilities.common.GodEternalDiesTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.MenaceAbility; import mage.cards.CardImpl; @@ -44,7 +44,7 @@ public final class GodEternalBontu extends CardImpl { this.addAbility(new EntersBattlefieldTriggeredAbility(new GodEternalBontuEffect())); // When God-Eternal Bontu dies or is put into exile from the battlefield, you may put it into its owner's library third from the top. - this.addAbility(new GodEternalTriggeredAbility()); + this.addAbility(new GodEternalDiesTriggeredAbility()); } private GodEternalBontu(final GodEternalBontu card) { diff --git a/Mage.Sets/src/mage/cards/g/GodEternalRhonas.java b/Mage.Sets/src/mage/cards/g/GodEternalRhonas.java new file mode 100644 index 00000000000..4dbc80a81db --- /dev/null +++ b/Mage.Sets/src/mage/cards/g/GodEternalRhonas.java @@ -0,0 +1,102 @@ +package mage.cards.g; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.GodEternalDiesTriggeredAbility; +import mage.abilities.effects.ContinuousEffect; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.continuous.BoostTargetEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.keyword.DeathtouchAbility; +import mage.abilities.keyword.VigilanceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.permanent.AnotherPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.targetpointer.FixedTarget; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class GodEternalRhonas extends CardImpl { + + public GodEternalRhonas(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.ZOMBIE); + this.subtype.add(SubType.GOD); + this.power = new MageInt(5); + this.toughness = new MageInt(5); + + // Deathtouch + this.addAbility(DeathtouchAbility.getInstance()); + + // When God-Eternal Rhonas enters the battlefield, double the power of each other creature you control until end of turn. Those creatures gain vigilance until end of turn. + this.addAbility(new EntersBattlefieldTriggeredAbility(new GodEternalRhonasEffect())); + + // When God-Eternal Rhonas dies or is put into exile from the battlefield, you may put it into its owner's library third from the top. + this.addAbility(new GodEternalDiesTriggeredAbility()); + } + + private GodEternalRhonas(final GodEternalRhonas card) { + super(card); + } + + @Override + public GodEternalRhonas copy() { + return new GodEternalRhonas(this); + } +} + +class GodEternalRhonasEffect extends OneShotEffect { + + private static final FilterPermanent filter = new FilterControlledCreaturePermanent(); + + static { + filter.add(AnotherPredicate.instance); + } + + GodEternalRhonasEffect() { + super(Outcome.Benefit); + staticText = "double the power of each other creature you control until end of turn. " + + "Those creatures gain vigilance until end of turn."; + } + + private GodEternalRhonasEffect(final GodEternalRhonasEffect effect) { + super(effect); + } + + @Override + public GodEternalRhonasEffect copy() { + return new GodEternalRhonasEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { + if (permanent == null) { + continue; + } + ContinuousEffect effect = new BoostTargetEffect( + permanent.getPower().getValue(), + permanent.getToughness().getValue(), + Duration.EndOfTurn + ); + effect.setTargetPointer(new FixedTarget(permanent, game)); + game.addEffect(effect, source); + } + game.addEffect(new GainAbilityControlledEffect( + VigilanceAbility.getInstance(), + Duration.EndOfTurn, filter + ), source); + return true; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/WarOfTheSpark.java b/Mage.Sets/src/mage/sets/WarOfTheSpark.java index 3abfc88546a..77afb7f443e 100644 --- a/Mage.Sets/src/mage/sets/WarOfTheSpark.java +++ b/Mage.Sets/src/mage/sets/WarOfTheSpark.java @@ -86,6 +86,7 @@ public final class WarOfTheSpark extends ExpansionSet { cards.add(new SetCardInfo("Goblin Assailant", 128, Rarity.COMMON, mage.cards.g.GoblinAssailant.class)); cards.add(new SetCardInfo("Goblin Assault Team", 129, Rarity.COMMON, mage.cards.g.GoblinAssaultTeam.class)); cards.add(new SetCardInfo("God-Eternal Bontu", 92, Rarity.MYTHIC, mage.cards.g.GodEternalBontu.class)); + cards.add(new SetCardInfo("God-Eternal Rhonas", 163, Rarity.MYTHIC, mage.cards.g.GodEternalRhonas.class)); cards.add(new SetCardInfo("God-Pharaoh's Statue", 238, Rarity.UNCOMMON, mage.cards.g.GodPharaohsStatue.class)); cards.add(new SetCardInfo("Grateful Apparition", 17, Rarity.UNCOMMON, mage.cards.g.GratefulApparition.class)); cards.add(new SetCardInfo("Grim Initiate", 130, Rarity.COMMON, mage.cards.g.GrimInitiate.class)); diff --git a/Mage/src/main/java/mage/abilities/common/GodEternalTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/GodEternalDiesTriggeredAbility.java similarity index 88% rename from Mage/src/main/java/mage/abilities/common/GodEternalTriggeredAbility.java rename to Mage/src/main/java/mage/abilities/common/GodEternalDiesTriggeredAbility.java index 0e31a05de81..aa41b774536 100644 --- a/Mage/src/main/java/mage/abilities/common/GodEternalTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/GodEternalDiesTriggeredAbility.java @@ -16,13 +16,13 @@ import mage.players.Player; /** * @author TheElk801 */ -public class GodEternalTriggeredAbility extends TriggeredAbilityImpl { +public class GodEternalDiesTriggeredAbility extends TriggeredAbilityImpl { - public GodEternalTriggeredAbility() { + public GodEternalDiesTriggeredAbility() { super(Zone.ALL, null, true); } - private GodEternalTriggeredAbility(GodEternalTriggeredAbility ability) { + private GodEternalDiesTriggeredAbility(GodEternalDiesTriggeredAbility ability) { super(ability); } @@ -46,8 +46,8 @@ public class GodEternalTriggeredAbility extends TriggeredAbilityImpl { } @Override - public GodEternalTriggeredAbility copy() { - return new GodEternalTriggeredAbility(this); + public GodEternalDiesTriggeredAbility copy() { + return new GodEternalDiesTriggeredAbility(this); } @Override