[MSH] Implement Captain America, Super-Soldier

This commit is contained in:
theelk801 2025-12-09 16:55:22 -05:00
parent 892214dc5c
commit 908cee28d5
2 changed files with 74 additions and 0 deletions

View file

@ -0,0 +1,72 @@
package mage.cards.c;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.SourceHasCounterCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControllerEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.HexproofAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class CaptainAmericaSuperSoldier extends CardImpl {
private static final Condition condition = new SourceHasCounterCondition(CounterType.SHIELD);
private static final FilterPermanent filter = new FilterPermanent(SubType.HERO, "Heroes");
public CaptainAmericaSuperSoldier(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.SOLDIER);
this.subtype.add(SubType.HERO);
this.power = new MageInt(3);
this.toughness = new MageInt(2);
// First strike
this.addAbility(FirstStrikeAbility.getInstance());
// Captain America enters with a shield counter on him.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.SHIELD.createInstance()),
"with a shield counter on him"
));
// As long as Captain America has a shield counter on him, you and other Heroes you control have hexproof.
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilityControllerEffect(HexproofAbility.getInstance()),
condition, "as long as {this} has a shield counter on him, you"
));
ability.addEffect(new ConditionalContinuousEffect(new GainAbilityControlledEffect(
HexproofAbility.getInstance(), Duration.WhileOnBattlefield, filter, true
), condition, null).concatBy("and"));
this.addAbility(ability);
}
private CaptainAmericaSuperSoldier(final CaptainAmericaSuperSoldier card) {
super(card);
}
@Override
public CaptainAmericaSuperSoldier copy() {
return new CaptainAmericaSuperSoldier(this);
}
}

View file

@ -20,6 +20,8 @@ public final class MarvelSuperHeroes extends ExpansionSet {
this.blockName = "Marvel Super Heroes"; // for sorting in GUI
this.hasBasicLands = false; // temporary
cards.add(new SetCardInfo("Captain America, Super-Soldier", 387, Rarity.MYTHIC, mage.cards.c.CaptainAmericaSuperSoldier.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Captain America, Super-Soldier", 9, Rarity.MYTHIC, mage.cards.c.CaptainAmericaSuperSoldier.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Moon Girl and Devil Dinosaur", 223, Rarity.RARE, mage.cards.m.MoonGirlAndDevilDinosaur.class));
cards.add(new SetCardInfo("Quicksilver, Brash Blur", 148, Rarity.RARE, mage.cards.q.QuicksilverBrashBlur.class));
cards.add(new SetCardInfo("Super-Skrull", 115, Rarity.RARE, mage.cards.s.SuperSkrull.class));