[CMB1] Implement Evil Boros Charm (#11142)

This commit is contained in:
Susucre 2023-09-15 23:55:54 +02:00 committed by GitHub
parent 58fdbc9345
commit ecf4b11d2e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 94 additions and 0 deletions

View file

@ -0,0 +1,60 @@
package mage.cards.e;
import mage.abilities.Mode;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.AttackingPredicate;
import mage.filter.predicate.permanent.UnblockedPredicate;
import mage.game.permanent.token.SpiritEvilBorosCharmToken;
import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/**
* @author Susucr
*/
public final class EvilBorosCharm extends CardImpl {
private static final FilterCreaturePermanent filter
= new FilterCreaturePermanent("unblocked attacking creatures");
static {
filter.add(AttackingPredicate.instance);
filter.add(UnblockedPredicate.instance);
}
public EvilBorosCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B/R}{W/B}");
// Choose one
// Evil Boros Charm deals 2 damage to any target and you gain 2 life.
this.getSpellAbility().addTarget(new TargetAnyTarget());
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
this.getSpellAbility().addEffect(new GainLifeEffect(2).concatBy("and"));
// Unblocked attacking creatures get +1/+0 until end of turn.
Mode mode = new Mode(new BoostAllEffect(1, 0, Duration.EndOfTurn, filter, false));
this.getSpellAbility().addMode(mode);
// Create a 1/1 colorless Spirit creature token with lifelink and haste.
mode = new Mode(new CreateTokenEffect(new SpiritEvilBorosCharmToken()));
this.getSpellAbility().addMode(mode);
}
private EvilBorosCharm(final EvilBorosCharm card) {
super(card);
}
@Override
public EvilBorosCharm copy() {
return new EvilBorosCharm(this);
}
}

View file

@ -24,6 +24,7 @@ public class MysteryBoosterPlaytest extends ExpansionSet {
this.hasBasicLands = false;
cards.add(new SetCardInfo("Banding Sliver", 2, Rarity.RARE, mage.cards.b.BandingSliver.class));
cards.add(new SetCardInfo("Evil Boros Charm", 90, Rarity.RARE, mage.cards.e.EvilBorosCharm.class));
cards.add(new SetCardInfo("Frogkin Kidnapper", 42, Rarity.RARE, mage.cards.f.FrogkinKidnapper.class));
cards.add(new SetCardInfo("How to Keep an Izzet Mage Busy", 93, Rarity.RARE, mage.cards.h.HowToKeepAnIzzetMageBusy.class));
cards.add(new SetCardInfo("Recycla-bird", 28, Rarity.RARE, mage.cards.r.RecyclaBird.class));

View file

@ -0,0 +1,33 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.constants.CardType;
import mage.constants.SubType;
/**
* @author Susucr
*/
public class SpiritEvilBorosCharmToken extends TokenImpl {
public SpiritEvilBorosCharmToken() {
super("Spirit Token", "1/1 colorless Spirit creature token with lifelink and haste");
cardType.add(CardType.CREATURE);
subtype.add(SubType.SPIRIT);
power = new MageInt(1);
toughness = new MageInt(1);
addAbility(LifelinkAbility.getInstance());
addAbility(HasteAbility.getInstance());
}
private SpiritEvilBorosCharmToken(final SpiritEvilBorosCharmToken token) {
super(token);
}
@Override
public SpiritEvilBorosCharmToken copy() {
return new SpiritEvilBorosCharmToken(this);
}
}