[ANB] added 5 new cards (#11872)

Baloth Packhunter
Compound Fracture
Hallowed Priest
Mardu Outrider
Tin Street Cadet
This commit is contained in:
tiera3 2024-03-02 03:49:35 +10:00 committed by GitHub
parent c1b1af1572
commit 5c07b2e422
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 226 additions and 7 deletions

View file

@ -0,0 +1,56 @@
package mage.cards.b;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersAllEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.NamePredicate;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID;
/**
* @author tiera3 - modified from CharmedStray
*/
public final class BalothPackhunter extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("other creature you control named Baloth Packhunter");
static {
filter.add(new NamePredicate("Baloth Packhunter"));
filter.add(AnotherPredicate.instance);
}
public BalothPackhunter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.subtype.add(SubType.BEAST);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// Trample
this.addAbility(TrampleAbility.getInstance());
// Whenever Baloth Packhunter enters the battlefield, put two +1/+1 counters on each other creature you control named Baloth Packhunter.
this.addAbility(new EntersBattlefieldTriggeredAbility(
new AddCountersAllEffect(CounterType.P1P1.createInstance(2), filter)
));
}
private BalothPackhunter(final BalothPackhunter card) {
super(card);
}
@Override
public BalothPackhunter copy() {
return new BalothPackhunter(this);
}
}

View file

@ -0,0 +1,46 @@
package mage.cards.c;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.filter.FilterCard;
import mage.filter.predicate.mageobject.NamePredicate;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author tiera3 - modified from Growth Cycle
*/
public final class CompoundFracture extends CardImpl {
private static final FilterCard filter = new FilterCard("card named Compound Fracture");
static {
filter.add(new NamePredicate("Compound Fracture"));
}
private static final DynamicValue xValue = new CardsInControllerGraveyardCount(filter, -1);
private static final String rule = "It gets an additional -1/-1 until end of turn for each " + xValue.getMessage();
public CompoundFracture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
// Target creature gets -1/-1 until end of turn.
this.getSpellAbility().addEffect(new BoostTargetEffect(-1, -1, Duration.EndOfTurn));
// It gets an additional -1/-1 until end of turn for each card named Compound Fracture in your graveyard.
this.getSpellAbility().addEffect(new BoostTargetEffect(xValue, xValue, Duration.EndOfTurn).setText(rule));
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
private CompoundFracture(final CompoundFracture card) {
super(card);
}
@Override
public CompoundFracture copy() {
return new CompoundFracture(this);
}
}

View file

@ -0,0 +1,42 @@
package mage.cards.h;
import mage.MageInt;
import mage.abilities.common.GainLifeControllerTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
import java.util.UUID;
/**
* @author tiera3 - modified from AjanisPridemate
*/
public final class HallowedPriest extends CardImpl {
public HallowedPriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.CLERIC);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// Whenever you gain life, put a +1/+1 counter on Hallowed Priest.
this.addAbility(new GainLifeControllerTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false
));
}
private HallowedPriest(final HallowedPriest card) {
super(card);
}
@Override
public HallowedPriest copy() {
return new HallowedPriest(this);
}
}

View file

@ -0,0 +1,38 @@
package mage.cards.m;
import mage.MageInt;
import mage.abilities.Ability; // not sure about this line - think it is not needed
import mage.abilities.costs.common.DiscardCardCost;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.UUID;
/**
* @author tiera3 - modified from LesserMasticore
*/
public final class MarduOutrider extends CardImpl {
public MarduOutrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
this.subtype.add(SubType.ORC);
this.subtype.add(SubType.WARRIOR);
this.power = new MageInt(5);
this.toughness = new MageInt(5);
// As an additional cost to cast this spell, discard a card.
this.getSpellAbility().addCost(new DiscardCardCost());
}
private MarduOutrider(final MarduOutrider card) {
super(card);
}
@Override
public MarduOutrider copy() {
return new MarduOutrider(this);
}
}

View file

@ -0,0 +1,39 @@
package mage.cards.t;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.BecomesBlockedSourceTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.game.permanent.token.GoblinToken;
/**
*
* @author tiera3 - modified from GoblinInstigator
*/
public final class TinStreetCadet extends CardImpl {
public TinStreetCadet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
this.subtype.add(SubType.GOBLIN);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// Whenever Tin Street Cadet becomes blocked, create a 1/1 red Goblin creature token.
this.addAbility(new BecomesBlockedSourceTriggeredAbility(new CreateTokenEffect(new GoblinToken()), false));
}
private TinStreetCadet(final TinStreetCadet card) {
super(card);
}
@Override
public TinStreetCadet copy() {
return new TinStreetCadet(this);
}
}

View file

@ -15,8 +15,6 @@ public class ArenaBeginnerSet extends ExpansionSet {
return instance;
}
// Missing cards - Baloth Packhunter , Compound Fracture , Hallowed Priest , Mardu Outrider , Tin Street Cadet
private ArenaBeginnerSet() {
super("Arena Beginner Set", "ANB", ExpansionSet.buildDate(2020, 8, 13), SetType.MAGIC_ONLINE);
this.hasBoosters = false;
@ -30,7 +28,7 @@ public class ArenaBeginnerSet extends ExpansionSet {
cards.add(new SetCardInfo("Arcane Signet", 117, Rarity.COMMON, mage.cards.a.ArcaneSignet.class));
cards.add(new SetCardInfo("Armored Whirl Turtle", 24, Rarity.COMMON, mage.cards.a.ArmoredWhirlTurtle.class));
cards.add(new SetCardInfo("Bad Deal", 45, Rarity.UNCOMMON, mage.cards.b.BadDeal.class));
// cards.add(new SetCardInfo("Baloth Packhunter", 90, Rarity.COMMON, mage.cards.b.BalothPackhunter.class));
cards.add(new SetCardInfo("Baloth Packhunter", 90, Rarity.COMMON, mage.cards.b.BalothPackhunter.class));
cards.add(new SetCardInfo("Bombard", 67, Rarity.COMMON, mage.cards.b.Bombard.class));
cards.add(new SetCardInfo("Bond of Discipline", 4, Rarity.UNCOMMON, mage.cards.b.BondOfDiscipline.class));
cards.add(new SetCardInfo("Burn Bright", 68, Rarity.COMMON, mage.cards.b.BurnBright.class));
@ -39,7 +37,7 @@ public class ArenaBeginnerSet extends ExpansionSet {
cards.add(new SetCardInfo("Cloudkin Seer", 25, Rarity.COMMON, mage.cards.c.CloudkinSeer.class));
cards.add(new SetCardInfo("Colossal Majesty", 92, Rarity.UNCOMMON, mage.cards.c.ColossalMajesty.class));
cards.add(new SetCardInfo("Command Tower", 118, Rarity.COMMON, mage.cards.c.CommandTower.class));
// cards.add(new SetCardInfo("Compound Fracture", 46, Rarity.COMMON, mage.cards.c.CompoundFracture.class));
cards.add(new SetCardInfo("Compound Fracture", 46, Rarity.COMMON, mage.cards.c.CompoundFracture.class));
cards.add(new SetCardInfo("Confront the Assault", 6, Rarity.UNCOMMON, mage.cards.c.ConfrontTheAssault.class));
cards.add(new SetCardInfo("Coral Merfolk", 26, Rarity.COMMON, mage.cards.c.CoralMerfolk.class));
cards.add(new SetCardInfo("Cruel Cut", 47, Rarity.COMMON, mage.cards.c.CruelCut.class));
@ -61,7 +59,7 @@ public class ArenaBeginnerSet extends ExpansionSet {
cards.add(new SetCardInfo("Goblin Tunneler", 73, Rarity.COMMON, mage.cards.g.GoblinTunneler.class));
cards.add(new SetCardInfo("Goring Ceratops", 8, Rarity.RARE, mage.cards.g.GoringCeratops.class));
cards.add(new SetCardInfo("Greenwood Sentinel", 97, Rarity.COMMON, mage.cards.g.GreenwoodSentinel.class));
// cards.add(new SetCardInfo("Hallowed Priest", 9, Rarity.UNCOMMON, mage.cards.h.HallowedPriest.class));
cards.add(new SetCardInfo("Hallowed Priest", 9, Rarity.UNCOMMON, mage.cards.h.HallowedPriest.class));
cards.add(new SetCardInfo("Hurloon Minotaur", 74, Rarity.COMMON, mage.cards.h.HurloonMinotaur.class));
cards.add(new SetCardInfo("Ilysian Caryatid", 98, Rarity.COMMON, mage.cards.i.IlysianCaryatid.class));
cards.add(new SetCardInfo("Immortal Phoenix", 75, Rarity.RARE, mage.cards.i.ImmortalPhoenix.class));
@ -76,7 +74,7 @@ public class ArenaBeginnerSet extends ExpansionSet {
cards.add(new SetCardInfo("Loxodon Line Breaker", 14, Rarity.COMMON, mage.cards.l.LoxodonLineBreaker.class));
cards.add(new SetCardInfo("Malakir Cullblade", 51, Rarity.UNCOMMON, mage.cards.m.MalakirCullblade.class));
cards.add(new SetCardInfo("Maniacal Rage", 77, Rarity.COMMON, mage.cards.m.ManiacalRage.class));
// cards.add(new SetCardInfo("Mardu Outrider", 52, Rarity.RARE, mage.cards.m.MarduOutrider.class));
cards.add(new SetCardInfo("Mardu Outrider", 52, Rarity.RARE, mage.cards.m.MarduOutrider.class));
cards.add(new SetCardInfo("Molten Ravager", 78, Rarity.COMMON, mage.cards.m.MoltenRavager.class));
cards.add(new SetCardInfo("Moorland Inquisitor", 15, Rarity.COMMON, mage.cards.m.MoorlandInquisitor.class));
cards.add(new SetCardInfo("Mountain", 114, Rarity.LAND, mage.cards.basiclands.Mountain.class));
@ -122,7 +120,7 @@ public class ArenaBeginnerSet extends ExpansionSet {
cards.add(new SetCardInfo("Swamp", 116, Rarity.LAND, mage.cards.basiclands.Swamp.class));
cards.add(new SetCardInfo("Sworn Guardian", 35, Rarity.COMMON, mage.cards.s.SwornGuardian.class));
cards.add(new SetCardInfo("Tactical Advantage", 22, Rarity.COMMON, mage.cards.t.TacticalAdvantage.class));
// cards.add(new SetCardInfo("Tin Street Cadet", 87, Rarity.COMMON, mage.cards.t.TinStreetCadet.class));
cards.add(new SetCardInfo("Tin Street Cadet", 87, Rarity.COMMON, mage.cards.t.TinStreetCadet.class));
cards.add(new SetCardInfo("Titanic Growth", 106, Rarity.COMMON, mage.cards.t.TitanicGrowth.class));
cards.add(new SetCardInfo("Treetop Warden", 107, Rarity.COMMON, mage.cards.t.TreetopWarden.class));
cards.add(new SetCardInfo("Typhoid Rats", 63, Rarity.COMMON, mage.cards.t.TyphoidRats.class));