[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.SuperType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.Skeleton41Token;
import mage.game.permanent.token.SkeletonMenaceToken;
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.
this.addAbility(new AttacksWithCreaturesTriggeredAbility(new DoIfCostPaid(
new CreateTokenEffect(
new Skeleton41Token(), 1, true, true
new SkeletonMenaceToken(), 1, true, true
), new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_ARTIFACT_OR_OTHER_CREATURE)
), 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 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("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("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));

View file

@ -23,7 +23,7 @@ import mage.game.command.Dungeon;
import mage.game.command.DungeonRoom;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.TreasureToken;
import mage.game.permanent.token.Skeleton41Token;
import mage.game.permanent.token.SkeletonMenaceToken;
import mage.players.Player;
import mage.target.TargetPlayer;
import mage.target.common.TargetCardInLibrary;
@ -65,7 +65,7 @@ public class UndercityDungeon extends Dungeon {
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());

View file

@ -10,9 +10,9 @@ import java.util.Arrays;
/**
* @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");
cardType.add(CardType.CREATURE);
this.subtype.add(SubType.SKELETON);
@ -25,11 +25,11 @@ public final class Skeleton41Token extends TokenImpl {
availableImageSetCodes = Arrays.asList("CLB");
}
public Skeleton41Token(final Skeleton41Token token) {
public SkeletonMenaceToken(final SkeletonMenaceToken token) {
super(token);
}
public Skeleton41Token copy() {
return new Skeleton41Token(this);
public SkeletonMenaceToken copy() {
return new SkeletonMenaceToken(this);
}
}