From acf5b94c73a11807db2573b023f259155687a2b6 Mon Sep 17 00:00:00 2001 From: tiera3 <87589219+tiera3@users.noreply.github.com> Date: Tue, 27 Aug 2024 14:16:24 +1000 Subject: [PATCH 1/4] Unfinity Set File add Xenosquirrels --- Mage.Sets/src/mage/sets/Unfinity.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Mage.Sets/src/mage/sets/Unfinity.java b/Mage.Sets/src/mage/sets/Unfinity.java index 86bf7616201..f1e52afd0dc 100644 --- a/Mage.Sets/src/mage/sets/Unfinity.java +++ b/Mage.Sets/src/mage/sets/Unfinity.java @@ -21,6 +21,7 @@ public final class Unfinity extends ExpansionSet { this.hasBoosters = false; // not likely to be able to drafts at any point cards.add(new SetCardInfo("\"Name Sticker\" Goblin", "107m", Rarity.COMMON, mage.cards.n.NameStickerGoblin.class)); + cards.add(new SetCardInfo("Atomwheel Acrobats", 130, Rarity.COMMON, mage.cards.a.AtomwheelAcrobats.class)); cards.add(new SetCardInfo("Attempted Murder", 66, Rarity.UNCOMMON, mage.cards.a.AttemptedMurder.class)); cards.add(new SetCardInfo("Blood Crypt", 279, Rarity.RARE, mage.cards.b.BloodCrypt.class)); cards.add(new SetCardInfo("Boing!", 40, Rarity.COMMON, mage.cards.b.Boing.class)); @@ -51,6 +52,7 @@ public final class Unfinity extends ExpansionSet { cards.add(new SetCardInfo("Plains", 240, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_UST_VARIOUS)); cards.add(new SetCardInfo("Sacred Foundry", 285, Rarity.RARE, mage.cards.s.SacredFoundry.class)); cards.add(new SetCardInfo("Saw in Half", 88, Rarity.RARE, mage.cards.s.SawInHalf.class)); + cards.add(new SetCardInfo("Six-Sided Die", 92, Rarity.COMMON, mage.cards.s.SixSidedDie.class)); cards.add(new SetCardInfo("Slight Malfunction", 123, Rarity.COMMON, mage.cards.s.SlightMalfunction.class)); cards.add(new SetCardInfo("Starlight Spectacular", 28, Rarity.RARE, mage.cards.s.StarlightSpectacular.class)); cards.add(new SetCardInfo("Steam Vents", 283, Rarity.RARE, mage.cards.s.SteamVents.class)); @@ -61,5 +63,6 @@ public final class Unfinity extends ExpansionSet { cards.add(new SetCardInfo("The Space Family Goblinson", 179, Rarity.UNCOMMON, mage.cards.t.TheSpaceFamilyGoblinson.class)); cards.add(new SetCardInfo("Vegetation Abomination", 160, Rarity.COMMON, mage.cards.v.VegetationAbomination.class)); cards.add(new SetCardInfo("Watery Grave", 278, Rarity.RARE, mage.cards.w.WateryGrave.class)); + cards.add(new SetCardInfo("Xenosquirrels", 96, Rarity.COMMON, mage.cards.x.Xenosquirrels.class)); } } From 579a125345b9c0bc708f03da36d8d38029b409f5 Mon Sep 17 00:00:00 2001 From: tiera3 <87589219+tiera3@users.noreply.github.com> Date: Tue, 27 Aug 2024 14:18:50 +1000 Subject: [PATCH 2/4] Xenosquirrels --- Mage.Sets/src/mage/cards/x/Xenosquirrels.java | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/x/Xenosquirrels.java diff --git a/Mage.Sets/src/mage/cards/x/Xenosquirrels.java b/Mage.Sets/src/mage/cards/x/Xenosquirrels.java new file mode 100644 index 00000000000..40bc1fd4cd4 --- /dev/null +++ b/Mage.Sets/src/mage/cards/x/Xenosquirrels.java @@ -0,0 +1,91 @@ +package mage.cards.x; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.ReplacementEffectImpl; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.common.counter.RemoveCounterSourceEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.RollDieEvent; +import mage.game.permanent.Permanent; +import mage.players.Player; + +import java.util.UUID; + +/** + * @author tiera3 - based on SnickeringSquirrel.java, Magmasaur.java, JinnieFayJetmirsSecond.java + */ +public final class Xenosquirrels extends CardImpl { + + public Xenosquirrels(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}"); + this.subtype.add(SubType.ALIEN, SubType.SQUIRREL); + this.power = new MageInt(0); + this.toughness = new MageInt(0); + + // Xenosquirrels enters with two +1/+1 counters on it. + this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect( + CounterType.P1P1.createInstance(2), true + ), "with two +1/+1 counters on it")); + + // After you roll a die, you may remove a +1/+1 counter from Xenosquirrels. If you do, increase or decrease the result by 1. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new XenosquirrelsEffect())); + } + + private Xenosquirrels(final Xenosquirrels card) { + super(card); + } + + @Override + public Xenosquirrels copy() { + return new Xenosquirrels(this); + } +} + +class XenosquirrelsEffect extends ReplacementEffectImpl { + + XenosquirrelsEffect() { + super(Duration.WhileOnBattlefield, Outcome.Benefit); + staticText = "After you roll a die, you may remove a +1/+1 counter from Xenosquirrels. If you do, increase or decrease the result by 1."; + } + + private XenosquirrelsEffect(final XenosquirrelsEffect effect) { + super(effect); + } + + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + Player controller = game.getPlayer(source.getControllerId()); + Player dieRoller = game.getPlayer(event.getPlayerId()); + if (controller == null || dieRoller == null || controller != dieRoller) { + return false; + } + Permanent permanent = game.getPermanent(source.getSourceId()); + if (permanent == null || 0 == permanent.getCounters(game).getCount(CounterType.P1P1) ) { + return false; + } + if (controller.chooseUse(outcome, "Remove a +1/+1 counter from " + permanent.getLogName() + " to increase or decrease the result of a die (" + + event.getAmount() + ") by 1?", source, game)) { + permanent.removeCounters(CounterType.P1P1.getName(), 1, source, game); + ((RollDieEvent) event).incResultModifier( player.chooseUse( + outcome, "Increase or Decrease " + event.getAmount() + " by 1", null, + "Increase", "Decrease", source, game ) ? 1 : -1 ); + } + return false; + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + return source.isControlledBy(event.getPlayerId()); + } + + @Override + public XenosquirrelsEffect copy() { + return new XenosquirrelsEffect(this); + } +} From 76f7b46f46c5f021747e974c22441002e3fe1b42 Mon Sep 17 00:00:00 2001 From: tiera3 <87589219+tiera3@users.noreply.github.com> Date: Tue, 27 Aug 2024 14:41:09 +1000 Subject: [PATCH 3/4] Add files via upload --- Mage.Sets/src/mage/cards/x/Xenosquirrels.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Mage.Sets/src/mage/cards/x/Xenosquirrels.java b/Mage.Sets/src/mage/cards/x/Xenosquirrels.java index 40bc1fd4cd4..544967b739b 100644 --- a/Mage.Sets/src/mage/cards/x/Xenosquirrels.java +++ b/Mage.Sets/src/mage/cards/x/Xenosquirrels.java @@ -10,6 +10,7 @@ import mage.abilities.effects.common.counter.RemoveCounterSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; +import mage.counters.CounterType; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.RollDieEvent; From 8ec88bfe009d311a5cdba78c0160484cf49473f8 Mon Sep 17 00:00:00 2001 From: tiera3 <87589219+tiera3@users.noreply.github.com> Date: Tue, 27 Aug 2024 14:51:02 +1000 Subject: [PATCH 4/4] Add files via upload --- Mage.Sets/src/mage/cards/x/Xenosquirrels.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Mage.Sets/src/mage/cards/x/Xenosquirrels.java b/Mage.Sets/src/mage/cards/x/Xenosquirrels.java index 544967b739b..b7a1ea870f4 100644 --- a/Mage.Sets/src/mage/cards/x/Xenosquirrels.java +++ b/Mage.Sets/src/mage/cards/x/Xenosquirrels.java @@ -80,6 +80,12 @@ class XenosquirrelsEffect extends ReplacementEffectImpl { return false; } + @Override + public boolean checksEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ROLL_DIE + && ((RollDieEvent) event).getRollDieType() == RollDieType.NUMERICAL; + } + @Override public boolean applies(GameEvent event, Ability source, Game game) { return source.isControlledBy(event.getPlayerId());