From e5307752e0ccbf74b5ff0f6efbf1124f34f11398 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Fri, 4 Jan 2019 15:44:09 -0500 Subject: [PATCH 1/2] Implemented Humongulus --- Mage.Sets/src/mage/cards/h/Humongulus.java | 36 +++++++++++++++++++ .../src/mage/sets/RavnicaAllegiance.java | 1 + 2 files changed, 37 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/h/Humongulus.java diff --git a/Mage.Sets/src/mage/cards/h/Humongulus.java b/Mage.Sets/src/mage/cards/h/Humongulus.java new file mode 100644 index 00000000000..63ffdadc366 --- /dev/null +++ b/Mage.Sets/src/mage/cards/h/Humongulus.java @@ -0,0 +1,36 @@ +package mage.cards.h; + +import mage.MageInt; +import mage.abilities.keyword.HexproofAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class Humongulus extends CardImpl { + + public Humongulus(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}"); + + this.subtype.add(SubType.HOMUNCULUS); + this.power = new MageInt(2); + this.toughness = new MageInt(5); + + // Hexproof + this.addAbility(HexproofAbility.getInstance()); + } + + private Humongulus(final Humongulus card) { + super(card); + } + + @Override + public Humongulus copy() { + return new Humongulus(this); + } +} diff --git a/Mage.Sets/src/mage/sets/RavnicaAllegiance.java b/Mage.Sets/src/mage/sets/RavnicaAllegiance.java index 02a18566392..f7e62ce64c8 100644 --- a/Mage.Sets/src/mage/sets/RavnicaAllegiance.java +++ b/Mage.Sets/src/mage/sets/RavnicaAllegiance.java @@ -69,6 +69,7 @@ public final class RavnicaAllegiance extends ExpansionSet { cards.add(new SetCardInfo("Gutterbones", 76, Rarity.RARE, mage.cards.g.Gutterbones.class)); cards.add(new SetCardInfo("Hallowed Fountain", 251, Rarity.RARE, mage.cards.h.HallowedFountain.class)); cards.add(new SetCardInfo("High Alert", 182, Rarity.UNCOMMON, mage.cards.h.HighAlert.class)); + cards.add(new SetCardInfo("Humongulus", 41, Rarity.COMMON, mage.cards.h.Humongulus.class)); cards.add(new SetCardInfo("Hydroid Krasis", 183, Rarity.MYTHIC, mage.cards.h.HydroidKrasis.class)); cards.add(new SetCardInfo("Imperious Oligarch", 184, Rarity.COMMON, mage.cards.i.ImperiousOligarch.class)); cards.add(new SetCardInfo("Incubation // Incongruity", 226, Rarity.UNCOMMON, mage.cards.i.IncubationIncongruity.class)); From bff2f3fc58b9d8d0d1359e7d132b7698a2374bf1 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Fri, 4 Jan 2019 16:08:34 -0500 Subject: [PATCH 2/2] Implemented Angelic Exaltation --- .../src/mage/cards/a/AngelicExaltation.java | 84 +++++++++++++++++++ .../src/mage/sets/RavnicaAllegiance.java | 1 + 2 files changed, 85 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/a/AngelicExaltation.java diff --git a/Mage.Sets/src/mage/cards/a/AngelicExaltation.java b/Mage.Sets/src/mage/cards/a/AngelicExaltation.java new file mode 100644 index 00000000000..a85f1acfe43 --- /dev/null +++ b/Mage.Sets/src/mage/cards/a/AngelicExaltation.java @@ -0,0 +1,84 @@ +package mage.cards.a; + +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continuous.BoostTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Zone; +import mage.filter.StaticFilters; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.target.targetpointer.FixedTarget; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class AngelicExaltation extends CardImpl { + + public AngelicExaltation(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}"); + + // Whenever a creature you control attacks alone, it gets +X/+X until end of turn, where X is the number of creatures you control. + this.addAbility(new AngelicExaltationAbility()); + } + + private AngelicExaltation(final AngelicExaltation card) { + super(card); + } + + @Override + public AngelicExaltation copy() { + return new AngelicExaltation(this); + } +} + +class AngelicExaltationAbility extends TriggeredAbilityImpl { + + private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE); + + public AngelicExaltationAbility() { + super(Zone.BATTLEFIELD, new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn, true), false); + } + + public AngelicExaltationAbility(final AngelicExaltationAbility ability) { + super(ability); + } + + @Override + public AngelicExaltationAbility copy() { + return new AngelicExaltationAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.DECLARED_ATTACKERS; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (game.isActivePlayer(this.controllerId)) { + if (game.getCombat().attacksAlone()) { + for (Effect effect : this.getEffects()) { + effect.setTargetPointer(new FixedTarget(game.getCombat().getAttackers().get(0))); + } + return true; + } + } + return false; + } + + @Override + public String getRule() { + return "Whenever a creature you control attacks alone, " + + "it gets +X/+X until end of turn, " + + "where X is the number of creatures you control."; + } + +} diff --git a/Mage.Sets/src/mage/sets/RavnicaAllegiance.java b/Mage.Sets/src/mage/sets/RavnicaAllegiance.java index f7e62ce64c8..b8120ac8332 100644 --- a/Mage.Sets/src/mage/sets/RavnicaAllegiance.java +++ b/Mage.Sets/src/mage/sets/RavnicaAllegiance.java @@ -35,6 +35,7 @@ public final class RavnicaAllegiance extends ExpansionSet { cards.add(new SetCardInfo("Absorb", 151, Rarity.RARE, mage.cards.a.Absorb.class)); cards.add(new SetCardInfo("Aeromunculus", 152, Rarity.COMMON, mage.cards.a.Aeromunculus.class)); cards.add(new SetCardInfo("Amplifire", 92, Rarity.RARE, mage.cards.a.Amplifire.class)); + cards.add(new SetCardInfo("Angelic Exaltation", 2, Rarity.UNCOMMON, mage.cards.a.AngelicExaltation.class)); cards.add(new SetCardInfo("Azorius Guildgate", 243, Rarity.COMMON, mage.cards.a.AzoriusGuildgate.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Azorius Guildgate", 244, Rarity.COMMON, mage.cards.a.AzoriusGuildgate.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Azorius Locket", 231, Rarity.COMMON, mage.cards.a.AzoriusLocket.class));