diff --git a/Mage.Sets/src/mage/cards/t/TriplicateTitan.java b/Mage.Sets/src/mage/cards/t/TriplicateTitan.java new file mode 100644 index 0000000000..67127ce597 --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TriplicateTitan.java @@ -0,0 +1,58 @@ +package mage.cards.t; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DiesSourceTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.abilities.keyword.VigilanceAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.game.permanent.token.GolemFlyingToken; +import mage.game.permanent.token.GolemTrampleToken; +import mage.game.permanent.token.GolemVigilanceToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class TriplicateTitan extends CardImpl { + + public TriplicateTitan(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{9}"); + + this.subtype.add(SubType.GOLEM); + this.power = new MageInt(9); + this.toughness = new MageInt(9); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Vigilance + this.addAbility(VigilanceAbility.getInstance()); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // When Triplicate Titan dies, create a 3/3 colorless Golem artifact creature token with flying, a 3/3 colorless Golem artifact creature token with vigilance, and a 3/3 colorless Golem artifact creature token with trample. + Ability ability = new DiesSourceTriggeredAbility(new CreateTokenEffect(new GolemFlyingToken())); + ability.addEffect(new CreateTokenEffect(new GolemVigilanceToken()) + .setText(", a 3/3 colorless Golem artifact creature token with vigilance")); + ability.addEffect(new CreateTokenEffect(new GolemTrampleToken()) + .setText(", and a 3/3 colorless Golem artifact creature token with trample")); + this.addAbility(ability); + } + + private TriplicateTitan(final TriplicateTitan card) { + super(card); + } + + @Override + public TriplicateTitan copy() { + return new TriplicateTitan(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Commander2021Edition.java b/Mage.Sets/src/mage/sets/Commander2021Edition.java index 9c0e07b8a9..11c0c0b587 100644 --- a/Mage.Sets/src/mage/sets/Commander2021Edition.java +++ b/Mage.Sets/src/mage/sets/Commander2021Edition.java @@ -230,6 +230,7 @@ public final class Commander2021Edition extends ExpansionSet { cards.add(new SetCardInfo("Tranquil Thicket", 408, Rarity.COMMON, mage.cards.t.TranquilThicket.class)); cards.add(new SetCardInfo("Traumatic Visions", 132, Rarity.COMMON, mage.cards.t.TraumaticVisions.class)); cards.add(new SetCardInfo("Treasure Cruise", 133, Rarity.COMMON, mage.cards.t.TreasureCruise.class)); + cards.add(new SetCardInfo("Triplicate Titan", 79, Rarity.RARE, mage.cards.t.TriplicateTitan.class)); cards.add(new SetCardInfo("Trudge Garden", 69, Rarity.RARE, mage.cards.t.TrudgeGarden.class)); cards.add(new SetCardInfo("Trygon Predator", 231, Rarity.UNCOMMON, mage.cards.t.TrygonPredator.class)); cards.add(new SetCardInfo("Unstable Obelisk", 272, Rarity.UNCOMMON, mage.cards.u.UnstableObelisk.class)); diff --git a/Mage/src/main/java/mage/game/permanent/token/GolemFlyingToken.java b/Mage/src/main/java/mage/game/permanent/token/GolemFlyingToken.java new file mode 100644 index 0000000000..61574d3fae --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/GolemFlyingToken.java @@ -0,0 +1,30 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.abilities.keyword.FlyingAbility; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author TheElk801 + */ +public final class GolemFlyingToken extends TokenImpl { + + public GolemFlyingToken() { + super("Golem", "3/3 colorless Golem artifact creature token with flying"); + cardType.add(CardType.ARTIFACT); + cardType.add(CardType.CREATURE); + subtype.add(SubType.GOLEM); + power = new MageInt(3); + toughness = new MageInt(3); + addAbility(FlyingAbility.getInstance()); + } + + private GolemFlyingToken(final GolemFlyingToken token) { + super(token); + } + + public GolemFlyingToken copy() { + return new GolemFlyingToken(this); + } +} diff --git a/Mage/src/main/java/mage/game/permanent/token/GolemTrampleToken.java b/Mage/src/main/java/mage/game/permanent/token/GolemTrampleToken.java new file mode 100644 index 0000000000..30ff351e52 --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/GolemTrampleToken.java @@ -0,0 +1,30 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.abilities.keyword.TrampleAbility; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author TheElk801 + */ +public final class GolemTrampleToken extends TokenImpl { + + public GolemTrampleToken() { + super("Golem", "3/3 colorless Golem artifact creature token with trample"); + cardType.add(CardType.ARTIFACT); + cardType.add(CardType.CREATURE); + subtype.add(SubType.GOLEM); + power = new MageInt(3); + toughness = new MageInt(3); + addAbility(TrampleAbility.getInstance()); + } + + private GolemTrampleToken(final GolemTrampleToken token) { + super(token); + } + + public GolemTrampleToken copy() { + return new GolemTrampleToken(this); + } +} diff --git a/Mage/src/main/java/mage/game/permanent/token/GolemVigilanceToken.java b/Mage/src/main/java/mage/game/permanent/token/GolemVigilanceToken.java new file mode 100644 index 0000000000..50285e1e22 --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/GolemVigilanceToken.java @@ -0,0 +1,30 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.abilities.keyword.VigilanceAbility; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author TheElk801 + */ +public final class GolemVigilanceToken extends TokenImpl { + + public GolemVigilanceToken() { + super("Golem", "3/3 colorless Golem artifact creature token with vigilance"); + cardType.add(CardType.ARTIFACT); + cardType.add(CardType.CREATURE); + subtype.add(SubType.GOLEM); + power = new MageInt(3); + toughness = new MageInt(3); + addAbility(VigilanceAbility.getInstance()); + } + + private GolemVigilanceToken(final GolemVigilanceToken token) { + super(token); + } + + public GolemVigilanceToken copy() { + return new GolemVigilanceToken(this); + } +}