From 48631a3487aa4bda9261cc98d7d13ffe9e769645 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Wed, 10 Dec 2025 11:12:37 -0500 Subject: [PATCH] [MSH] Implement Bruce Banner / The Incredible Hulk --- Mage.Sets/src/mage/cards/b/BruceBanner.java | 82 +++++++++++++++++++ .../src/mage/sets/MarvelSuperHeroes.java | 2 + .../src/main/java/mage/constants/SubType.java | 1 + 3 files changed, 85 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/b/BruceBanner.java diff --git a/Mage.Sets/src/mage/cards/b/BruceBanner.java b/Mage.Sets/src/mage/cards/b/BruceBanner.java new file mode 100644 index 00000000000..406068aa95e --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BruceBanner.java @@ -0,0 +1,82 @@ +package mage.cards.b; + +import mage.abilities.Ability; +import mage.abilities.common.ActivateAsSorceryActivatedAbility; +import mage.abilities.common.DealtDamageToSourceTriggeredAbility; +import mage.abilities.condition.common.SourceAttackingCondition; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.GetXValue; +import mage.abilities.effects.common.AdditionalCombatPhaseEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.TransformSourceEffect; +import mage.abilities.effects.common.UntapSourceEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.keyword.ReachAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardSetInfo; +import mage.cards.ModalDoubleFacedCard; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.counters.CounterType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class BruceBanner extends ModalDoubleFacedCard { + + public BruceBanner(UUID ownerId, CardSetInfo setInfo) { + super( + ownerId, setInfo, + new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.HUMAN, SubType.SCIENTIST, SubType.HERO}, "{U}", + "The Incredible Hulk", + new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.GAMMA, SubType.BERSERKER, SubType.HERO}, "{2}{R}{R}{G}{G}" + ); + this.getLeftHalfCard().setPT(1, 1); + this.getRightHalfCard().setPT(8, 8); + + // {X}{X}, {T}: Draw X cards. Activate only as a sorcery. + Ability ability = new ActivateAsSorceryActivatedAbility( + new DrawCardSourceControllerEffect(GetXValue.instance), new ManaCostsImpl<>("{X}{X}") + ); + ability.addCost(new TapSourceCost()); + this.getLeftHalfCard().addAbility(ability); + + // {2}{R}{R}{G}{G}: Transform Bruce Banner. Activate only as a sorcery. + this.getLeftHalfCard().addAbility(new ActivateAsSorceryActivatedAbility( + new TransformSourceEffect(), new ManaCostsImpl<>("{2}{R}{R}{G}{G}") + )); + + // The Incredible Hulk + // Reach + this.getRightHalfCard().addAbility(ReachAbility.getInstance()); + + // Trample + this.getRightHalfCard().addAbility(TrampleAbility.getInstance()); + + // Enrage -- Whenever The Incredible Hulk is dealt damage, put a +1/+1 counter on him. If he's attacking, untap him and there is an additional combat phase after this phase. + ability = new DealtDamageToSourceTriggeredAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance()) + .setText("put a +1/+1 counter on him"), + false, true + ); + ability.addEffect(new ConditionalOneShotEffect( + new UntapSourceEffect(), SourceAttackingCondition.instance, "If he's attacking, " + + "untap him and there is an additional combat phase after this phase" + ).addEffect(new AdditionalCombatPhaseEffect())); + this.getRightHalfCard().addAbility(ability); + } + + private BruceBanner(final BruceBanner card) { + super(card); + } + + @Override + public BruceBanner copy() { + return new BruceBanner(this); + } +} diff --git a/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java b/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java index 99e5fdc20ea..56f63e1640a 100644 --- a/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java +++ b/Mage.Sets/src/mage/sets/MarvelSuperHeroes.java @@ -21,6 +21,8 @@ public final class MarvelSuperHeroes extends ExpansionSet { this.hasBasicLands = false; // temporary cards.add(new SetCardInfo("Attuma, Atlantean Warlord", 47, Rarity.UNCOMMON, mage.cards.a.AttumaAtlanteanWarlord.class)); + cards.add(new SetCardInfo("Bruce Banner", 390, Rarity.MYTHIC, mage.cards.b.BruceBanner.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Bruce Banner", 49, Rarity.MYTHIC, mage.cards.b.BruceBanner.class, NON_FULL_USE_VARIOUS)); 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)); diff --git a/Mage/src/main/java/mage/constants/SubType.java b/Mage/src/main/java/mage/constants/SubType.java index 7217602b84d..e565b4b9d04 100644 --- a/Mage/src/main/java/mage/constants/SubType.java +++ b/Mage/src/main/java/mage/constants/SubType.java @@ -193,6 +193,7 @@ public enum SubType { FUNGUS("Fungus", SubTypeSet.CreatureType), // G GAMER("Gamer", SubTypeSet.CreatureType), + GAMMA("Gamma", SubTypeSet.CreatureType), GAMORREAN("Gamorrean", SubTypeSet.CreatureType, true), // Star Wars GAND("Gand", SubTypeSet.CreatureType, true), // Star Wars GARGOYLE("Gargoyle", SubTypeSet.CreatureType),