From 2e254d524d986747c10ea35e1f52689ebce5505c Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Wed, 30 Jun 2021 22:46:58 -0400 Subject: [PATCH] [AFR] Implemented Icingdeath, Frost Tyrant --- Mage.Sets/src/mage/cards/d/DrizztDoUrden.java | 3 +- .../mage/cards/i/IcingdeathFrostTyrant.java | 48 +++++++++++++++++ .../sets/AdventuresInTheForgottenRealms.java | 1 + .../effects/common/CreateTokenEffect.java | 3 ++ .../token/IcingdeathFrostTongueToken.java | 53 +++++++++++++++++++ 5 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/i/IcingdeathFrostTyrant.java create mode 100644 Mage/src/main/java/mage/game/permanent/token/IcingdeathFrostTongueToken.java diff --git a/Mage.Sets/src/mage/cards/d/DrizztDoUrden.java b/Mage.Sets/src/mage/cards/d/DrizztDoUrden.java index 4406ee2fe97..fc7001fb4d2 100644 --- a/Mage.Sets/src/mage/cards/d/DrizztDoUrden.java +++ b/Mage.Sets/src/mage/cards/d/DrizztDoUrden.java @@ -40,8 +40,7 @@ public final class DrizztDoUrden extends CardImpl { this.addAbility(DoubleStrikeAbility.getInstance()); // Whenever Drizzt Do'Urden enters the battlefield, create Guenhwyvar, a legendary 4/1 green Cat creature token with trample. - this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GuenhwyvarToken()) - .setText("create Guenhwyvar, a legendary 4/1 green Cat creature token with trample"))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GuenhwyvarToken()))); // Whenever a creature dies, if it had power greater than Drizzt's power, put a number of +1/+1 counters on Drizzt equal to the difference. this.addAbility(new ConditionalInterveningIfTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/i/IcingdeathFrostTyrant.java b/Mage.Sets/src/mage/cards/i/IcingdeathFrostTyrant.java new file mode 100644 index 00000000000..52f59c4f400 --- /dev/null +++ b/Mage.Sets/src/mage/cards/i/IcingdeathFrostTyrant.java @@ -0,0 +1,48 @@ +package mage.cards.i; + +import mage.MageInt; +import mage.abilities.common.DiesSourceTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.VigilanceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.game.permanent.token.IcingdeathFrostTongueToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class IcingdeathFrostTyrant extends CardImpl { + + public IcingdeathFrostTyrant(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.DRAGON); + this.power = new MageInt(4); + this.toughness = new MageInt(3); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Vigilance + this.addAbility(VigilanceAbility.getInstance()); + + // When Icingdeath, Frost Tyrant dies, create Icingdeath, Frost Tongue, a legendary white Equipment artifact token with "Equipped creature gets +2/+0", "Whenever equipped creature attacks, tap target creature defending player controls," and equip {2}. + this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new IcingdeathFrostTongueToken()))); + } + + private IcingdeathFrostTyrant(final IcingdeathFrostTyrant card) { + super(card); + } + + @Override + public IcingdeathFrostTyrant copy() { + return new IcingdeathFrostTyrant(this); + } +} diff --git a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java index bdfed3eceab..6c74a2fc32b 100644 --- a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java +++ b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java @@ -54,6 +54,7 @@ public final class AdventuresInTheForgottenRealms extends ExpansionSet { cards.add(new SetCardInfo("Guild Thief", 61, Rarity.UNCOMMON, mage.cards.g.GuildThief.class)); cards.add(new SetCardInfo("Hive of the Eye Tyrant", 258, Rarity.RARE, mage.cards.h.HiveOfTheEyeTyrant.class)); cards.add(new SetCardInfo("Hobgoblin Captain", 148, Rarity.COMMON, mage.cards.h.HobgoblinCaptain.class)); + cards.add(new SetCardInfo("Icingdeath, Frost Tyrant", 20, Rarity.MYTHIC, mage.cards.i.IcingdeathFrostTyrant.class)); cards.add(new SetCardInfo("Inspiring Bard", 189, Rarity.COMMON, mage.cards.i.InspiringBard.class)); cards.add(new SetCardInfo("Intrepid Outlander", 191, Rarity.UNCOMMON, mage.cards.i.IntrepidOutlander.class)); cards.add(new SetCardInfo("Island", 266, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java index 6260447ec98..08fb6d71a46 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenEffect.java @@ -112,6 +112,9 @@ public class CreateTokenEffect extends OneShotEffect { } private void setText() { + if (token.getDescription().contains(", a legendary")) { + staticText = "create " + token.getDescription(); + } StringBuilder sb = new StringBuilder("create "); if (amount.toString().equals("1")) { sb.append("a "); diff --git a/Mage/src/main/java/mage/game/permanent/token/IcingdeathFrostTongueToken.java b/Mage/src/main/java/mage/game/permanent/token/IcingdeathFrostTongueToken.java new file mode 100644 index 00000000000..48aee3717f0 --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/IcingdeathFrostTongueToken.java @@ -0,0 +1,53 @@ +package mage.game.permanent.token; + +import mage.abilities.Ability; +import mage.abilities.common.AttacksAttachedTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.TapTargetEffect; +import mage.abilities.effects.common.continuous.BoostEquippedEffect; +import mage.abilities.keyword.EquipAbility; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.DefendingPlayerControlsPredicate; +import mage.target.TargetPermanent; + +/** + * @author TheElk801 + */ +public class IcingdeathFrostTongueToken extends TokenImpl { + + private static final FilterPermanent filter + = new FilterCreaturePermanent("creature defending player controls"); + + static { + filter.add(DefendingPlayerControlsPredicate.instance); + } + + public IcingdeathFrostTongueToken() { + super("Icingdeath, Frost Tongue", "Icingdeath, Frost Tongue, a legendary white " + + "Equipment artifact token with \"Equipped creature gets +2/+0\", " + + "\"Whenever equipped creature attacks, tap target creature " + + "defending player controls,\" and equip {2}"); + supertype.add(SuperType.LEGENDARY); + cardType.add(CardType.ARTIFACT); + color.setWhite(true); + subtype.add(SubType.EQUIPMENT); + this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(2, 0))); + Ability ability = new AttacksAttachedTriggeredAbility(new TapTargetEffect(), false); + ability.addTarget(new TargetPermanent(filter)); + this.addAbility(ability); + this.addAbility(new EquipAbility(2)); + } + + private IcingdeathFrostTongueToken(final IcingdeathFrostTongueToken token) { + super(token); + } + + @Override + public IcingdeathFrostTongueToken copy() { + return new IcingdeathFrostTongueToken(this); + } +}