From 1c4b35baa888a8ace48984d7e7c3643f93515d35 Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Thu, 26 Oct 2023 12:50:39 +0200 Subject: [PATCH] [LCI] Implement Vito, Fanatic of Aclazotz --- .../mage/cards/v/VitoFanaticOfAclazotz.java | 69 +++++++++++++++++++ .../src/mage/sets/TheLostCavernsOfIxalan.java | 1 + .../permanent/token/VampireDemonToken.java | 34 +++++++++ 3 files changed, 104 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/v/VitoFanaticOfAclazotz.java create mode 100644 Mage/src/main/java/mage/game/permanent/token/VampireDemonToken.java diff --git a/Mage.Sets/src/mage/cards/v/VitoFanaticOfAclazotz.java b/Mage.Sets/src/mage/cards/v/VitoFanaticOfAclazotz.java new file mode 100644 index 00000000000..602f5b141ec --- /dev/null +++ b/Mage.Sets/src/mage/cards/v/VitoFanaticOfAclazotz.java @@ -0,0 +1,69 @@ +package mage.cards.v; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SacrificePermanentTriggeredAbility; +import mage.abilities.effects.common.*; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.game.permanent.token.VampireDemonToken; +import mage.watchers.common.AbilityResolvedWatcher; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class VitoFanaticOfAclazotz extends CardImpl { + + private static final FilterPermanent filter = new FilterPermanent("another permanent"); + + static { + filter.add(AnotherPredicate.instance); + } + + public VitoFanaticOfAclazotz(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{B}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.VAMPIRE); + this.subtype.add(SubType.DEMON); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Whenever you sacrifice another permanent, you gain 2 life if this is the first time this ability has resolved this turn. If it's the second time, each opponent loses 2 life. If it's the third time, create a 4/3 white and black Vampire Demon creature token with flying. + Ability ability = new SacrificePermanentTriggeredAbility( + new IfAbilityHasResolvedXTimesEffect( + Outcome.GainLife, 1, new GainLifeEffect(2) + ).setText("you gain 2 life if this is the first time this ability has resolved this turn"), + filter + ); + ability.addEffect( + new IfAbilityHasResolvedXTimesEffect( + Outcome.Damage, 2, new LoseLifeOpponentsEffect(2) + ).setText("If it's the second time, each opponent loses 2 life") + ); + ability.addEffect( + new IfAbilityHasResolvedXTimesEffect( + Outcome.PutCreatureInPlay, 3, new CreateTokenEffect(new VampireDemonToken()) + ).setText("If it's the third time, create a 4/3 white and black Vampire Demon creature token with flying") + ); + this.addAbility(ability, new AbilityResolvedWatcher()); + } + + private VitoFanaticOfAclazotz(final VitoFanaticOfAclazotz card) { + super(card); + } + + @Override + public VitoFanaticOfAclazotz copy() { + return new VitoFanaticOfAclazotz(this); + } +} diff --git a/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java b/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java index db0f6ee7f08..e0fbbba717b 100644 --- a/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java +++ b/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java @@ -63,6 +63,7 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Thrashing Brontodon", 216, Rarity.UNCOMMON, mage.cards.t.ThrashingBrontodon.class)); cards.add(new SetCardInfo("Treasure Cove", 261, Rarity.RARE, mage.cards.t.TreasureCove.class)); cards.add(new SetCardInfo("Treasure Map", 261, Rarity.RARE, mage.cards.t.TreasureMap.class)); + cards.add(new SetCardInfo("Vito, Fanatic of Aclazotz", 243, Rarity.MYTHIC, mage.cards.v.VitoFanaticOfAclazotz.class)); cards.add(new SetCardInfo("Waterwind Scout", 84, Rarity.COMMON, mage.cards.w.WaterwindScout.class)); } } diff --git a/Mage/src/main/java/mage/game/permanent/token/VampireDemonToken.java b/Mage/src/main/java/mage/game/permanent/token/VampireDemonToken.java new file mode 100644 index 00000000000..add78e800ef --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/VampireDemonToken.java @@ -0,0 +1,34 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.abilities.keyword.FlyingAbility; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author Susucr + */ +public final class VampireDemonToken extends TokenImpl { + + public VampireDemonToken() { + super("Vampire Demon Token", "4/3 white and black Vampire Demon creature token with flying"); + cardType.add(CardType.CREATURE); + color.setWhite(true); + color.setBlack(true); + subtype.add(SubType.VAMPIRE); + subtype.add(SubType.DEMON); + power = new MageInt(4); + toughness = new MageInt(3); + + addAbility(FlyingAbility.getInstance()); + } + + protected VampireDemonToken(final VampireDemonToken token) { + super(token); + } + + @Override + public VampireDemonToken copy() { + return new VampireDemonToken(this); + } +}