From 732130ea85bf05f133205e1264693974d89a32cd Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Wed, 1 Jun 2022 09:00:07 -0400 Subject: [PATCH] [CLB] Implemented Seasoned Dungeoneer --- .../src/mage/cards/s/SeasonedDungeoneer.java | 71 +++++++++++++++++++ .../CommanderLegendsBattleForBaldursGate.java | 1 + 2 files changed, 72 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/s/SeasonedDungeoneer.java diff --git a/Mage.Sets/src/mage/cards/s/SeasonedDungeoneer.java b/Mage.Sets/src/mage/cards/s/SeasonedDungeoneer.java new file mode 100644 index 00000000000..299a1b74334 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SeasonedDungeoneer.java @@ -0,0 +1,71 @@ +package mage.cards.s; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksWithCreaturesTriggeredAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.TakeTheInitiativeEffect; +import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; +import mage.abilities.effects.keyword.ExploreTargetEffect; +import mage.abilities.keyword.ProtectionAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterCard; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterAttackingCreature; +import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.Predicates; +import mage.target.TargetPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class SeasonedDungeoneer extends CardImpl { + + private static final FilterCard filter + = new FilterCreatureCard("creatures"); + private static final FilterPermanent filter2 + = new FilterAttackingCreature("attacking Cleric, Rogue, Warrior, or Wizard"); + + static { + filter2.add(Predicates.or( + SubType.CLERIC.getPredicate(), + SubType.ROGUE.getPredicate(), + SubType.WARRIOR.getPredicate(), + SubType.WIZARD.getPredicate() + )); + } + + public SeasonedDungeoneer(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.WARRIOR); + this.power = new MageInt(3); + this.toughness = new MageInt(4); + + // When Seasoned Dungeoneer enters the battlefield, you take the initiative. + this.addAbility(new EntersBattlefieldTriggeredAbility(new TakeTheInitiativeEffect())); + + // Whenever you attack, target attacking Cleric, Rogue, Warrior, or Wizard gains protection from creatures until end of turn. It explores. + Ability ability = new AttacksWithCreaturesTriggeredAbility( + new GainAbilityTargetEffect(new ProtectionAbility(filter)), 1 + ); + ability.addEffect(new ExploreTargetEffect().setText("It explores")); + ability.addTarget(new TargetPermanent(filter2)); + this.addAbility(ability); + } + + private SeasonedDungeoneer(final SeasonedDungeoneer card) { + super(card); + } + + @Override + public SeasonedDungeoneer copy() { + return new SeasonedDungeoneer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java index 525881c5548..3c796a7f086 100644 --- a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java +++ b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java @@ -259,6 +259,7 @@ public final class CommanderLegendsBattleForBaldursGate extends ExpansionSet { cards.add(new SetCardInfo("Sea Gate", 359, Rarity.COMMON, mage.cards.s.SeaGate.class)); cards.add(new SetCardInfo("Sea Hag", 95, Rarity.COMMON, mage.cards.s.SeaHag.class)); cards.add(new SetCardInfo("Sea of Clouds", 360, Rarity.RARE, mage.cards.s.SeaOfClouds.class)); + cards.add(new SetCardInfo("Seasoned Dungeoneer", 660, Rarity.RARE, mage.cards.s.SeasonedDungeoneer.class)); cards.add(new SetCardInfo("Sewer Nemesis", 777, Rarity.RARE, mage.cards.s.SewerNemesis.class)); cards.add(new SetCardInfo("Shadowheart, Dark Justiciar", 146, Rarity.RARE, mage.cards.s.ShadowheartDarkJusticiar.class)); cards.add(new SetCardInfo("Shameless Charlatan", 96, Rarity.RARE, mage.cards.s.ShamelessCharlatan.class));