[AFR] Implemented Trickster's Talisman

This commit is contained in:
Evan Kranzler 2021-07-16 08:18:25 -04:00
parent a47af7a5a9
commit 25dc141caa
2 changed files with 78 additions and 0 deletions

View file

@ -0,0 +1,77 @@
package mage.cards.t;
import mage.abilities.Ability;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.SacrificeAttachmentCost;
import mage.abilities.effects.CreateTokenCopySourceEffect;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.effects.common.continuous.GainAbilityWithAttachmentEffect;
import mage.abilities.keyword.EquipAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.Game;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class TrickstersTalisman extends CardImpl {
public TrickstersTalisman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{U}");
this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +1/+1 and has "Whenever this creature deals combat damage to a player, you may sacrifice Trickster's Talisman. If you do, create a token that's a copy of this creature."
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(1, 1));
ability.addEffect(new TrickstersTalismanEffect());
// Equip {2}
this.addAbility(new EquipAbility(2));
}
private TrickstersTalisman(final TrickstersTalisman card) {
super(card);
}
@Override
public TrickstersTalisman copy() {
return new TrickstersTalisman(this);
}
}
class TrickstersTalismanEffect extends GainAbilityWithAttachmentEffect {
TrickstersTalismanEffect() {
super("and has \"Whenever this creature deals combat damage to a player, " +
"you may sacrifice {this}. If you do, create a token that's a copy of this creature.\"",
(Effect) null, null, new SacrificeAttachmentCost(), null);
}
private TrickstersTalismanEffect(final TrickstersTalismanEffect effect) {
super(effect);
}
@Override
public TrickstersTalismanEffect copy() {
return new TrickstersTalismanEffect(this);
}
@Override
protected Ability makeAbility(Game game, Ability source) {
if (game == null || source == null) {
return null;
}
return new DealsCombatDamageToAPlayerTriggeredAbility(new DoIfCostPaid(
new CreateTokenCopySourceEffect(), useAttachedCost.setMageObjectReference(source, game)
), false, "Whenever this creature deals combat damage to a player, you may sacrifice "
+ source.getSourcePermanentIfItStillExists(game).getName()
+ ". If you do, create a token that's a copy of this creature.", false);
}
}

View file

@ -239,6 +239,7 @@ public final class AdventuresInTheForgottenRealms extends ExpansionSet {
cards.add(new SetCardInfo("Treasure Chest", 252, Rarity.RARE, mage.cards.t.TreasureChest.class));
cards.add(new SetCardInfo("Treasure Vault", 261, Rarity.RARE, mage.cards.t.TreasureVault.class));
cards.add(new SetCardInfo("Trelasarra, Moon Dancer", 236, Rarity.UNCOMMON, mage.cards.t.TrelasarraMoonDancer.class));
cards.add(new SetCardInfo("Trickster's Talisman", 79, Rarity.UNCOMMON, mage.cards.t.TrickstersTalisman.class));
cards.add(new SetCardInfo("Triumphant Adventurer", 237, Rarity.RARE, mage.cards.t.TriumphantAdventurer.class));
cards.add(new SetCardInfo("True Polymorph", 80, Rarity.RARE, mage.cards.t.TruePolymorph.class));
cards.add(new SetCardInfo("Underdark Basilisk", 208, Rarity.COMMON, mage.cards.u.UnderdarkBasilisk.class));