From 44f7ffa4e61225eaecf465360f2db054f27fb876 Mon Sep 17 00:00:00 2001 From: PurpleCrowbar <26198472+PurpleCrowbar@users.noreply.github.com> Date: Tue, 14 Feb 2023 19:03:55 +0000 Subject: [PATCH] [ONC] Implement Tangleweave Armor --- .../src/mage/cards/t/TangleweaveArmor.java | 77 +++++++++++++++++++ .../sets/PhyrexiaAllWillBeOneCommander.java | 2 + 2 files changed, 79 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/t/TangleweaveArmor.java diff --git a/Mage.Sets/src/mage/cards/t/TangleweaveArmor.java b/Mage.Sets/src/mage/cards/t/TangleweaveArmor.java new file mode 100644 index 00000000000..b8676df6e2d --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TangleweaveArmor.java @@ -0,0 +1,77 @@ +package mage.cards.t; + +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continuous.BoostEquippedEffect; +import mage.abilities.keyword.EquipAbility; +import mage.abilities.keyword.LivingWeaponAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.game.Game; + +import java.util.UUID; + +/** + * @author PurpleCrowbar + */ +public final class TangleweaveArmor extends CardImpl { + + public TangleweaveArmor(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{G}{G}"); + this.subtype.add(SubType.EQUIPMENT); + + // Living weapon + this.addAbility(new LivingWeaponAbility()); + + // Equipped creature gets +X/+X, where X is the greatest mana value among your commanders + this.addAbility(new SimpleStaticAbility( + Zone.BATTLEFIELD, new BoostEquippedEffect(TangleweaveArmorDynamicValue.instance, TangleweaveArmorDynamicValue.instance) + )); + + // Equip {4} + this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(4), false)); + } + + private TangleweaveArmor(final TangleweaveArmor card) { + super(card); + } + + @Override + public TangleweaveArmor copy() { + return new TangleweaveArmor(this); + } +} + +enum TangleweaveArmorDynamicValue implements DynamicValue { + instance; + + @Override + public int calculate(Game game, Ability sourceAbility, Effect effect) { + return game.getCommanderCardsFromAnyZones( + game.getPlayer(sourceAbility.getControllerId()), CommanderCardType.ANY, Zone.ALL) + .stream() + .mapToInt(MageObject::getManaValue) + .max() + .orElse(0); + } + + @Override + public TangleweaveArmorDynamicValue copy() { + return this; + } + + @Override + public String toString() { + return "X"; + } + + @Override + public String getMessage() { + return "the greatest mana value among your commanders"; + } +} diff --git a/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOneCommander.java b/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOneCommander.java index ba6fcba3328..0407ca0e9e8 100644 --- a/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOneCommander.java +++ b/Mage.Sets/src/mage/sets/PhyrexiaAllWillBeOneCommander.java @@ -153,6 +153,8 @@ public final class PhyrexiaAllWillBeOneCommander extends ExpansionSet { cards.add(new SetCardInfo("Tainted Field", 167, Rarity.UNCOMMON, mage.cards.t.TaintedField.class)); cards.add(new SetCardInfo("Tainted Wood", 168, Rarity.UNCOMMON, mage.cards.t.TaintedWood.class)); cards.add(new SetCardInfo("Talisman of Conviction", 143, Rarity.UNCOMMON, mage.cards.t.TalismanOfConviction.class)); + cards.add(new SetCardInfo("Tangleweave Armor", 26, Rarity.RARE, mage.cards.t.TangleweaveArmor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Tangleweave Armor", 36, Rarity.RARE, mage.cards.t.TangleweaveArmor.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Temple of Malady", 169, Rarity.RARE, mage.cards.t.TempleOfMalady.class)); cards.add(new SetCardInfo("Temple of Plenty", 170, Rarity.RARE, mage.cards.t.TempleOfPlenty.class)); cards.add(new SetCardInfo("Temple of Silence", 171, Rarity.RARE, mage.cards.t.TempleOfSilence.class));