From 2a39589dd3bbceeac6663d2f3fe3bcd072fc8f91 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Fri, 19 Jul 2024 12:21:37 -0400 Subject: [PATCH] [BLC] Implement Octomancer --- Mage.Sets/src/mage/cards/o/Octomancer.java | 62 +++++++++++++++++++ .../src/mage/sets/BloomburrowCommander.java | 1 + .../main/java/mage/constants/GiftType.java | 5 ++ 3 files changed, 68 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/o/Octomancer.java diff --git a/Mage.Sets/src/mage/cards/o/Octomancer.java b/Mage.Sets/src/mage/cards/o/Octomancer.java new file mode 100644 index 00000000000..c23c5e50ee3 --- /dev/null +++ b/Mage.Sets/src/mage/cards/o/Octomancer.java @@ -0,0 +1,62 @@ +package mage.cards.o; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.BeginningOfEndStepTriggeredAbility; +import mage.abilities.effects.common.CreateTokenCopyTargetEffect; +import mage.abilities.keyword.GiftAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.GiftType; +import mage.constants.SubType; +import mage.constants.TargetController; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.EnteredThisTurnPredicate; +import mage.filter.predicate.permanent.TokenPredicate; +import mage.target.TargetPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class Octomancer extends CardImpl { + + private static final FilterPermanent filter + = new FilterCreaturePermanent("creature token that entered the battlefield this turn"); + + static { + filter.add(TokenPredicate.TRUE); + filter.add(EnteredThisTurnPredicate.instance); + } + + public Octomancer(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{U}"); + + this.subtype.add(SubType.FROG); + this.subtype.add(SubType.DRUID); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Gift an Octopus + this.addAbility(new GiftAbility(this, GiftType.OCTOPUS)); + + // At the beginning of each end step, create a token that's a copy of target creature token that entered the battlefield this turn. + Ability ability = new BeginningOfEndStepTriggeredAbility( + new CreateTokenCopyTargetEffect(), TargetController.YOU, false + ); + ability.addTarget(new TargetPermanent(filter)); + this.addAbility(ability); + } + + private Octomancer(final Octomancer card) { + super(card); + } + + @Override + public Octomancer copy() { + return new Octomancer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/BloomburrowCommander.java b/Mage.Sets/src/mage/sets/BloomburrowCommander.java index b7a25d74f00..a2ab07a753b 100644 --- a/Mage.Sets/src/mage/sets/BloomburrowCommander.java +++ b/Mage.Sets/src/mage/sets/BloomburrowCommander.java @@ -59,6 +59,7 @@ public final class BloomburrowCommander extends ExpansionSet { cards.add(new SetCardInfo("Martial Impetus", 108, Rarity.UNCOMMON, mage.cards.m.MartialImpetus.class)); cards.add(new SetCardInfo("Narset, Parter of Veils", 76, Rarity.RARE, mage.cards.n.NarsetParterOfVeils.class)); cards.add(new SetCardInfo("Nissa, Who Shakes the World", 84, Rarity.RARE, mage.cards.n.NissaWhoShakesTheWorld.class)); + cards.add(new SetCardInfo("Octomancer", 37, Rarity.RARE, mage.cards.o.Octomancer.class)); cards.add(new SetCardInfo("Perch Protection", 11, Rarity.RARE, mage.cards.p.PerchProtection.class)); cards.add(new SetCardInfo("Pollywog Prodigy", 15, Rarity.RARE, mage.cards.p.PollywogProdigy.class)); cards.add(new SetCardInfo("Prosperous Innkeeper", 121, Rarity.UNCOMMON, mage.cards.p.ProsperousInnkeeper.class)); diff --git a/Mage/src/main/java/mage/constants/GiftType.java b/Mage/src/main/java/mage/constants/GiftType.java index 14a32e8c014..59804cc2680 100644 --- a/Mage/src/main/java/mage/constants/GiftType.java +++ b/Mage/src/main/java/mage/constants/GiftType.java @@ -4,6 +4,7 @@ import mage.abilities.Ability; import mage.game.Game; import mage.game.permanent.token.FishNoAbilityToken; import mage.game.permanent.token.FoodToken; +import mage.game.permanent.token.OctopusToken; import mage.game.permanent.token.TreasureToken; import mage.game.turn.TurnMod; import mage.players.Player; @@ -28,6 +29,10 @@ public enum GiftType { "a tapped Fish", "create a tapped 1/1 blue Fish creature token", (p, g, s) -> new FishNoAbilityToken().putOntoBattlefield(1, g, s, p.getId(), true, false) ), + OCTOPUS( + "an Octopus", "they create an 8/8 blue Octopus creature token", + (p, g, s) -> new OctopusToken().putOntoBattlefield(1, g, s, p.getId()) + ), EXTRA_TURN( "an extra turn", "take an extra turn after this one", (p, g, s) -> g.getState().getTurnMods().add(new TurnMod(p.getId()).withExtraTurn())