[CLB] Implemented Altar of Bhaal

This commit is contained in:
Evan Kranzler 2022-05-27 06:30:37 -04:00
parent 062e38a08f
commit 1cf297a15c
5 changed files with 60 additions and 9 deletions

View file

@ -0,0 +1,50 @@
package mage.cards.a;
import mage.abilities.Ability;
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.costs.common.ExileTargetCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.cards.AdventureCard;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.SkeletonMenaceToken;
import mage.target.common.TargetCardInYourGraveyard;
import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class AltarOfBhaal extends AdventureCard {
public AltarOfBhaal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, new CardType[]{CardType.SORCERY}, "{1}{B}", "Bone Offering", "{2}{B}");
// {2}{B}, {T}, Exile a creature you control: Return target creature card from your graveyard to the battlefield. Activate only as a sorcery.
Ability ability = new ActivateAsSorceryActivatedAbility(
new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl<>("{2}{B}")
);
ability.addCost(new TapSourceCost());
ability.addCost(new ExileTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT)));
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
this.addAbility(ability);
// Bone Offering
// Create a tapped 4/1 black Skeleton creature token with menace.
this.getSpellCard().getSpellAbility().addEffect(new CreateTokenEffect(new SkeletonMenaceToken(), 1, true, false));
}
private AltarOfBhaal(final AltarOfBhaal card) {
super(card);
}
@Override
public AltarOfBhaal copy() {
return new AltarOfBhaal(this);
}
}

View file

@ -12,7 +12,7 @@ import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.permanent.token.Skeleton41Token; import mage.game.permanent.token.SkeletonMenaceToken;
import java.util.UUID; import java.util.UUID;
@ -33,7 +33,7 @@ public final class GutTrueSoulZealot extends CardImpl {
// Whenever you attack, you may sacrifice another creature or an artifact. If you do, create a 4/1 black Skeleton creature token with menace that's tapped and attacking. // Whenever you attack, you may sacrifice another creature or an artifact. If you do, create a 4/1 black Skeleton creature token with menace that's tapped and attacking.
this.addAbility(new AttacksWithCreaturesTriggeredAbility(new DoIfCostPaid( this.addAbility(new AttacksWithCreaturesTriggeredAbility(new DoIfCostPaid(
new CreateTokenEffect( new CreateTokenEffect(
new Skeleton41Token(), 1, true, true new SkeletonMenaceToken(), 1, true, true
), new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ARTIFACT_OR_OTHER_CREATURE) ), new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ARTIFACT_OR_OTHER_CREATURE)
), 1)); ), 1));

View file

@ -25,6 +25,7 @@ public final class CommanderLegendsBattleForBaldursGate extends ExpansionSet {
cards.add(new SetCardInfo("Agent of the Iron Throne", 107, Rarity.UNCOMMON, mage.cards.a.AgentOfTheIronThrone.class)); cards.add(new SetCardInfo("Agent of the Iron Throne", 107, Rarity.UNCOMMON, mage.cards.a.AgentOfTheIronThrone.class));
cards.add(new SetCardInfo("Agent of the Shadow Thieves", 108, Rarity.UNCOMMON, mage.cards.a.AgentOfTheShadowThieves.class)); cards.add(new SetCardInfo("Agent of the Shadow Thieves", 108, Rarity.UNCOMMON, mage.cards.a.AgentOfTheShadowThieves.class));
cards.add(new SetCardInfo("Alora, Merry Thief", 55, Rarity.UNCOMMON, mage.cards.a.AloraMerryThief.class)); cards.add(new SetCardInfo("Alora, Merry Thief", 55, Rarity.UNCOMMON, mage.cards.a.AloraMerryThief.class));
cards.add(new SetCardInfo("Altar of Bhaal", 109, Rarity.RARE, mage.cards.a.AltarOfBhaal.class));
cards.add(new SetCardInfo("Amber Gristle O'Maul", 159, Rarity.UNCOMMON, mage.cards.a.AmberGristleOMaul.class)); cards.add(new SetCardInfo("Amber Gristle O'Maul", 159, Rarity.UNCOMMON, mage.cards.a.AmberGristleOMaul.class));
cards.add(new SetCardInfo("Ambition's Cost", 110, Rarity.UNCOMMON, mage.cards.a.AmbitionsCost.class)); cards.add(new SetCardInfo("Ambition's Cost", 110, Rarity.UNCOMMON, mage.cards.a.AmbitionsCost.class));
cards.add(new SetCardInfo("Amethyst Dragon", 160, Rarity.UNCOMMON, mage.cards.a.AmethystDragon.class)); cards.add(new SetCardInfo("Amethyst Dragon", 160, Rarity.UNCOMMON, mage.cards.a.AmethystDragon.class));

View file

@ -23,7 +23,7 @@ import mage.game.command.Dungeon;
import mage.game.command.DungeonRoom; import mage.game.command.DungeonRoom;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.TreasureToken; import mage.game.permanent.token.TreasureToken;
import mage.game.permanent.token.Skeleton41Token; import mage.game.permanent.token.SkeletonMenaceToken;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCardInLibrary;
@ -65,7 +65,7 @@ public class UndercityDungeon extends Dungeon {
DungeonRoom archives = new DungeonRoom("Archives", new DrawCardSourceControllerEffect(1)); DungeonRoom archives = new DungeonRoom("Archives", new DrawCardSourceControllerEffect(1));
DungeonRoom catacombs = new DungeonRoom("Catacombs", new CreateTokenEffect(new Skeleton41Token())); DungeonRoom catacombs = new DungeonRoom("Catacombs", new CreateTokenEffect(new SkeletonMenaceToken()));
DungeonRoom throneOfTheDeadThree = new DungeonRoom("Throne of the Dead Three", new ThroneOfTheDeadThreeEffect()); DungeonRoom throneOfTheDeadThree = new DungeonRoom("Throne of the Dead Three", new ThroneOfTheDeadThreeEffect());

View file

@ -10,9 +10,9 @@ import java.util.Arrays;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class Skeleton41Token extends TokenImpl { public final class SkeletonMenaceToken extends TokenImpl {
public Skeleton41Token() { public SkeletonMenaceToken() {
super("Skeleton Token", "4/1 black Skeleton creature token with menace"); super("Skeleton Token", "4/1 black Skeleton creature token with menace");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
this.subtype.add(SubType.SKELETON); this.subtype.add(SubType.SKELETON);
@ -25,11 +25,11 @@ public final class Skeleton41Token extends TokenImpl {
availableImageSetCodes = Arrays.asList("CLB"); availableImageSetCodes = Arrays.asList("CLB");
} }
public Skeleton41Token(final Skeleton41Token token) { public SkeletonMenaceToken(final SkeletonMenaceToken token) {
super(token); super(token);
} }
public Skeleton41Token copy() { public SkeletonMenaceToken copy() {
return new Skeleton41Token(this); return new SkeletonMenaceToken(this);
} }
} }