[FIN] Implement Circle of Power

This commit is contained in:
theelk801 2025-05-14 10:37:30 -04:00
parent b5fe0610d9
commit 05ded6d1eb
3 changed files with 92 additions and 0 deletions

View file

@ -0,0 +1,53 @@
package mage.cards.c;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.permanent.token.BlackWizardToken;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class CircleOfPower extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.WIZARD, "");
private static final FilterPermanent filter2 = new FilterPermanent(SubType.WIZARD, "");
public CircleOfPower(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}");
// You draw two cards and you lose 2 life. Create a 0/1 black Wizard creature token with "Whenever you cast a noncreature spell, this token deals 1 damage to each opponent."
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2, true));
this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2).concatBy("and"));
this.getSpellAbility().addEffect(new CreateTokenEffect(new BlackWizardToken()));
// Wizards you control get +1/+0 and gain lifelink until end of turn.
this.getSpellAbility().addEffect(new BoostControlledEffect(
1, 0, Duration.EndOfTurn
).setText("Wizards you control get +1/+0").concatBy("<br>"));
this.getSpellAbility().addEffect(new GainAbilityControlledEffect(
LifelinkAbility.getInstance(), Duration.EndOfTurn, filter2
).setText("and gain lifelink until end of turn"));
}
private CircleOfPower(final CircleOfPower card) {
super(card);
}
@Override
public CircleOfPower copy() {
return new CircleOfPower(this);
}
}

View file

@ -59,6 +59,8 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Cid, Timeless Artificer", 419, Rarity.UNCOMMON, mage.cards.c.CidTimelessArtificer.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cid, Timeless Artificer", 420, Rarity.UNCOMMON, mage.cards.c.CidTimelessArtificer.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cid, Timeless Artificer", 480, Rarity.UNCOMMON, mage.cards.c.CidTimelessArtificer.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Circle of Power", 583, Rarity.UNCOMMON, mage.cards.c.CircleOfPower.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Circle of Power", 92, Rarity.UNCOMMON, mage.cards.c.CircleOfPower.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Clive, Ifrit's Dominant", 133, Rarity.MYTHIC, mage.cards.c.CliveIfritsDominant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Clive, Ifrit's Dominant", 318, Rarity.MYTHIC, mage.cards.c.CliveIfritsDominant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Clive, Ifrit's Dominant", 385, Rarity.MYTHIC, mage.cards.c.CliveIfritsDominant.class, NON_FULL_USE_VARIOUS));

View file

@ -0,0 +1,37 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.StaticFilters;
/**
* @author TheElk801
*/
public final class BlackWizardToken extends TokenImpl {
public BlackWizardToken() {
super("Wizard Token", "0/1 black Wizard creature token with \"Whenever you cast a noncreature spell, this token deals 1 damage to each opponent.\"");
cardType.add(CardType.CREATURE);
color.setBlack(true);
subtype.add(SubType.WIZARD);
power = new MageInt(0);
toughness = new MageInt(1);
addAbility(new SpellCastControllerTriggeredAbility(
new DamagePlayersEffect(1, TargetController.OPPONENT),
StaticFilters.FILTER_SPELL_A_NON_CREATURE, false
));
}
private BlackWizardToken(final BlackWizardToken token) {
super(token);
}
public BlackWizardToken copy() {
return new BlackWizardToken(this);
}
}