[FIN] Implement Diamond Weapon

This commit is contained in:
theelk801 2025-05-27 20:19:37 -04:00 committed by Failure
parent d43b2be0e9
commit 1cd5de4eab
4 changed files with 61 additions and 8 deletions

View file

@ -0,0 +1,56 @@
package mage.cards.c;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DescendCondition;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.StaticFilters;
import mage.target.common.TargetOpponentsCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class CloudOfDarkness extends CardImpl {
private static final DynamicValue xValue =
new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_PERMANENT, -1);
public CloudOfDarkness(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{G}{G}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.AVATAR);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Particle Beam -- When Cloud of Darkness enters, target creature an opponent controls gets -X/-X until end of turn, where X is the number of permanent cards in your graveyard.
Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(xValue, xValue)
.setText("target creature an opponent controls gets -X/-X until end of turn, " +
"where X is the number of permanent cards in your graveyard"));
ability.addTarget(new TargetOpponentsCreaturePermanent());
this.addAbility(ability.withFlavorWord("Particle Beam").addHint(DescendCondition.getHint()));
}
private CloudOfDarkness(final CloudOfDarkness card) {
super(card);
}
@Override
public CloudOfDarkness copy() {
return new CloudOfDarkness(this);
}
}

View file

@ -2,12 +2,11 @@ package mage.cards.d;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DescendCondition;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
import mage.abilities.effects.common.PreventCombatDamageToSourceEffect;
import mage.abilities.effects.common.cost.SpellCostReductionForEachSourceEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -22,7 +21,6 @@ import java.util.UUID;
public final class DiamondWeapon extends CardImpl {
private static final DynamicValue xValue = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_PERMANENT);
private static final Hint hint = new ValueHint("Permanent cards in your graveyard", xValue);
public DiamondWeapon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}{G}{G}");
@ -33,7 +31,7 @@ public final class DiamondWeapon extends CardImpl {
this.toughness = new MageInt(8);
// This spell costs {1} less to cast for each permanent card in your graveyard.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionForEachSourceEffect(1, xValue)).addHint(hint));
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SpellCostReductionForEachSourceEffect(1, xValue)).addHint(DescendCondition.getHint()));
// Reach
this.addAbility(ReachAbility.getInstance());

View file

@ -2,12 +2,11 @@ package mage.cards.g;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.DescendCondition;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -24,7 +23,6 @@ import java.util.UUID;
public final class GranPulseOchu extends CardImpl {
private static final DynamicValue xValue = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_PERMANENT);
private static final Hint hint = new ValueHint("Permanent cards in your graveyard", xValue);
public GranPulseOchu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
@ -42,7 +40,7 @@ public final class GranPulseOchu extends CardImpl {
new BoostSourceEffect(xValue, xValue, Duration.EndOfTurn)
.setText("until end of turn, this creature gets +1/+1 for each permanent card in your graveyard"),
new GenericManaCost(8)
).addHint(hint));
).addHint(DescendCondition.getHint()));
}
private GranPulseOchu(final GranPulseOchu card) {

View file

@ -132,6 +132,7 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Clive, Ifrit's Dominant", 385, Rarity.MYTHIC, mage.cards.c.CliveIfritsDominant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Clive, Ifrit's Dominant", 458, Rarity.MYTHIC, mage.cards.c.CliveIfritsDominant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Clive, Ifrit's Dominant", 530, Rarity.MYTHIC, mage.cards.c.CliveIfritsDominant.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cloud of Darkness", 217, Rarity.UNCOMMON, mage.cards.c.CloudOfDarkness.class));
cards.add(new SetCardInfo("Cloud, Midgar Mercenary", 10, Rarity.MYTHIC, mage.cards.c.CloudMidgarMercenary.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cloud, Midgar Mercenary", 375, Rarity.MYTHIC, mage.cards.c.CloudMidgarMercenary.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Cloud, Midgar Mercenary", 427, Rarity.MYTHIC, mage.cards.c.CloudMidgarMercenary.class, NON_FULL_USE_VARIOUS));