Skip to content

Commit

Permalink
TargetAmount refactors (#13128)
Browse files Browse the repository at this point in the history
* Add minimum and maximum target counts as parameters for TargetAmount and its subclasses; update/add several rules comments (and one actual text) for clarity; remove unused imports

* Get amount+description from target instead of parameters for DistributeCountersEffect and DamageMultiEffect; additions to TargetImpl.getDescription to accommodate

* Create separate method to check if "any number" phrasing should be used, override it in TargetAmount

* Check instanceof TargetAmount before casting

* Add new constructors to chain off of for TargetCreaturePermanentAmount & TargetCreatureOrPlaneswalkerAmount

* Fix text for Storm the Seedcore

* Use Integer.MAX_VALUE instead of 0 to represent no maximum targets

* Add comment about getUseAnyNumber()

* Use amount-only constructors in some TargetAmount subclasses, add clarifying documentation

* Fix a few calls

* Require more specific filters
  • Loading branch information
Cguy7777 authored Dec 18, 2024
1 parent 960c26a commit 73b63d1
Show file tree
Hide file tree
Showing 123 changed files with 442 additions and 363 deletions.
3 changes: 1 addition & 2 deletions Mage.Sets/src/mage/cards/a/AbzanCharm.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCreaturePermanent;
Expand Down Expand Up @@ -43,7 +42,7 @@ public AbzanCharm(UUID ownerId, CardSetInfo setInfo) {
this.getSpellAbility().addMode(mode);

// *Distribute two +1/+1 counters among one or two target creatures.
mode = new Mode(new DistributeCountersEffect(2, "one or two target creatures"));
mode = new Mode(new DistributeCountersEffect());
mode.addTarget(new TargetCreaturePermanentAmount(2));
this.getSpellAbility().addMode(mode);

Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/a/AerialVolley.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public AerialVolley(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}");

// Aerial Volley deals 3 damage divided as you choose among one, two, or three target creatures with flying.
this.getSpellAbility().addEffect(new DamageMultiEffect(3));
this.getSpellAbility().addEffect(new DamageMultiEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(3, filter));
}

Expand Down
3 changes: 1 addition & 2 deletions Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.FilterCard;
import mage.filter.StaticFilters;
import mage.filter.predicate.Predicates;
Expand Down Expand Up @@ -38,7 +37,7 @@ public AjaniMentorOfHeroes(UUID ownerId, CardSetInfo setInfo) {
this.setStartingLoyalty(4);

// +1: Distribute three +1/+1 counters among one, two, or three target creatures you control
Ability ability = new LoyaltyAbility(new DistributeCountersEffect(3, "one, two, or three target creatures you control"), 1);
Ability ability = new LoyaltyAbility(new DistributeCountersEffect(), 1);
ability.addTarget(new TargetCreaturePermanentAmount(3, StaticFilters.FILTER_CONTROLLED_CREATURES));
this.addAbility(ability);

Expand Down
10 changes: 3 additions & 7 deletions Mage.Sets/src/mage/cards/a/AjaniSleeperAgent.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,9 @@
import mage.abilities.keyword.CompleatedAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.command.emblems.AjaniSleeperAgentEmblem;
import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetCreaturePermanentAmount;

/**
Expand All @@ -42,12 +40,10 @@ public AjaniSleeperAgent(UUID ownerId, CardSetInfo setInfo) {
this.addAbility(new LoyaltyAbility(new AjaniSleeperAgentEffect(), 1));

// −3: Distribute three +1/+1 counters among up to three target creatures. They gain vigilance until end of turn.
Ability ability = new LoyaltyAbility(new DistributeCountersEffect(3, "up to three target creatures"), -3);
Ability ability = new LoyaltyAbility(new DistributeCountersEffect()
.setText("distribute three +1/+1 counters among up to three target creatures"), -3);
ability.addEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance()).setText("They gain vigilance until end of turn"));
Target target = new TargetCreaturePermanentAmount(3);
target.setMinNumberOfTargets(0);
target.setMaxNumberOfTargets(3);
ability.addTarget(target);
ability.addTarget(new TargetCreaturePermanentAmount(3, 0, 3));
this.addAbility(ability);

// −6: You get an emblem with "Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters."
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/a/AmethystDragon.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public AmethystDragon(UUID ownerId, CardSetInfo setInfo) {

// Explosive Crystal
// Explosive Crystal deals 4 damage divided as you choose among any number of targets.
this.getSpellCard().getSpellAbility().addEffect(new DamageMultiEffect(4));
this.getSpellCard().getSpellAbility().addEffect(new DamageMultiEffect());
this.getSpellCard().getSpellAbility().addTarget(new TargetAnyTargetAmount(4));

this.finalizeAdventure();
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/a/AngelOfSalvation.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public AngelOfSalvation(UUID ownerId, CardSetInfo setInfo) {
this.addAbility(new ConvokeAbility());
// Flying
this.addAbility(FlyingAbility.getInstance());
// When Angel of Salvation enters the battlefield, prevent the next 5 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose.
// When Angel of Salvation enters, prevent the next 5 damage that would be dealt this turn to any number of targets, divided as you choose.
Ability ability = new EntersBattlefieldTriggeredAbility(new PreventDamageToTargetMultiAmountEffect(Duration.EndOfTurn, 5));
ability.addTarget(new TargetAnyTargetAmount(5));
this.addAbility(ability);
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/a/ArcLightning.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public ArcLightning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");

// Arc Lightning deals 3 damage divided as you choose among one, two, or three targets.
this.getSpellAbility().addEffect(new DamageMultiEffect(3));
this.getSpellAbility().addEffect(new DamageMultiEffect());
this.getSpellAbility().addTarget(new TargetAnyTargetAmount(3));
}

Expand Down
3 changes: 1 addition & 2 deletions Mage.Sets/src/mage/cards/a/ArcMage.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.target.common.TargetAnyTargetAmount;

/**
Expand All @@ -29,7 +28,7 @@ public ArcMage(UUID ownerId, CardSetInfo setInfo) {
this.toughness = new MageInt(2);

// {2}{R}, {tap}, Discard a card: Arc Mage deals 2 damage divided as you choose among one or two targets.
Ability ability = new SimpleActivatedAbility(new DamageMultiEffect(2), new ManaCostsImpl<>("{2}{R}"));
Ability ability = new SimpleActivatedAbility(new DamageMultiEffect(), new ManaCostsImpl<>("{2}{R}"));
ability.addCost(new TapSourceCost());
ability.addCost(new DiscardCardCost());
ability.addTarget(new TargetAnyTargetAmount(2));
Expand Down
3 changes: 1 addition & 2 deletions Mage.Sets/src/mage/cards/a/ArmamentCorps.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.target.common.TargetCreaturePermanentAmount;

Expand All @@ -28,7 +27,7 @@ public ArmamentCorps(UUID ownerId, CardSetInfo setInfo) {
this.toughness = new MageInt(4);

// When Armament Corps enters the battlefield, distribute two +1/+1 counters among one or two target creatures you control.
Ability ability = new EntersBattlefieldTriggeredAbility(new DistributeCountersEffect(2, "one or two target creatures you control"), false);
Ability ability = new EntersBattlefieldTriggeredAbility(new DistributeCountersEffect(), false);
ability.addTarget(new TargetCreaturePermanentAmount(2, StaticFilters.FILTER_CONTROLLED_CREATURES));
this.addAbility(ability);
}
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/a/ArrowVolleyTrap.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public ArrowVolleyTrap(UUID ownerId, CardSetInfo setInfo) {
this.addAbility(new AlternativeCostSourceAbility(new ManaCostsImpl<>("{1}{W}"), ArrowVolleyTrapCondition.instance));

// Arrow Volley Trap deals 5 damage divided as you choose among any number of target attacking creatures.
this.getSpellAbility().addEffect(new DamageMultiEffect(5));
this.getSpellAbility().addEffect(new DamageMultiEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(5, StaticFilters.FILTER_ATTACKING_CREATURES));
}

Expand Down
4 changes: 2 additions & 2 deletions Mage.Sets/src/mage/cards/a/AureliasFury.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,10 @@ public AureliasFury(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{R}{W}");


// Aurelia's Fury deals X damage divided as you choose among any number of target creatures and/or players.
// Aurelia's Fury deals X damage divided as you choose among any number of targets.
// Tap each creature dealt damage this way. Players dealt damage this way can't cast noncreature spells this turn.
DynamicValue xValue = GetXValue.instance;
this.getSpellAbility().addEffect(new DamageMultiEffect(xValue));
this.getSpellAbility().addEffect(new DamageMultiEffect());
this.getSpellAbility().addEffect(new AureliasFuryEffect());
this.getSpellAbility().addTarget(new TargetAnyTargetAmount(xValue));
this.getSpellAbility().addWatcher(new AureliasFuryDamagedByWatcher());
Expand Down
4 changes: 2 additions & 2 deletions Mage.Sets/src/mage/cards/a/AvacynsJudgment.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ public AvacynsJudgment(UUID ownerId, CardSetInfo setInfo) {
ability.setRuleAtTheTop(true);
this.addAbility(ability);

// Avacyn's Judgment deals 2 damage divided as you choose among any number of target creatures and/or players. If Avacyn's Judgment's madness cost was paid, it deals X damage divided as you choose among those creatures and/or players instead.
// Avacyn's Judgment deals 2 damage divided as you choose among any number of targets. If this spell's madness cost was paid, it deals X damage divided as you choose among those creatures and/or players instead.
DynamicValue xValue = new AvacynsJudgmentManacostVariableValue();
Effect effect = new DamageMultiEffect(xValue);
Effect effect = new DamageMultiEffect();
effect.setText("{this} deals 2 damage divided as you choose among any number of targets. If this spell's madness cost was paid, it deals X damage divided as you choose among those permanents and/or players instead.");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addTarget(new TargetAnyTargetAmount(xValue));
Expand Down
2 changes: 0 additions & 2 deletions Mage.Sets/src/mage/cards/a/AwakenTheMaelstrom.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,6 @@ private void distributeCounters(Player player, Game game, Ability source) {
return;
}
TargetPermanentAmount target = new TargetCreaturePermanentAmount(3, StaticFilters.FILTER_CONTROLLED_CREATURE);
target.setMinNumberOfTargets(1);
target.setMaxNumberOfTargets(3);
target.withNotTarget(true);
target.withChooseHint("to distribute counters");
target.chooseTarget(outcome, player.getId(), source, game);
Expand Down
5 changes: 1 addition & 4 deletions Mage.Sets/src/mage/cards/b/BiogenicUpgrade.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@ public BiogenicUpgrade(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}{G}");

// Distribute three +1/+1 counters among one, two, or three target creatures, then double the number of +1/+1 counters on each of those creatures.
this.getSpellAbility().addEffect(new DistributeCountersEffect(
3,
"one, two, or three target creatures"
));
this.getSpellAbility().addEffect(new DistributeCountersEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(3));
this.getSpellAbility().addEffect(new BiogenicUpgradeEffect());
}
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/b/BlasterHulk.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public BlasterHulk(UUID ownerId, CardSetInfo setInfo) {

// Whenever Blaster Hulk attacks, you get {E}{E}, then you may pay eight {E}. When you do, Blaster Hulk deals 8 damage divided as you choose among up to eight targets.
Ability ability = new AttacksTriggeredAbility(new GetEnergyCountersControllerEffect(2));
ReflexiveTriggeredAbility reflexiveAbility = new ReflexiveTriggeredAbility(new DamageMultiEffect(8)
ReflexiveTriggeredAbility reflexiveAbility = new ReflexiveTriggeredAbility(new DamageMultiEffect()
.setText("{this} deals 8 damage divided as you choose among up to eight targets"), false);
reflexiveAbility.addTarget(new TargetAnyTargetAmount(8));
ability.addEffect(new DoWhenCostPaid(reflexiveAbility, new PayEnergyCost(8),
Expand Down
3 changes: 1 addition & 2 deletions Mage.Sets/src/mage/cards/b/BlessingOfFrost.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,7 @@ public boolean apply(Game game, Ability source) {
int snow = ManaPaidSourceWatcher.getSnowPaid(source.getId(), game);
int potentialTarget = game.getBattlefield().count(StaticFilters.FILTER_CONTROLLED_CREATURE, player.getId(), source, game);
if (snow > 0 && potentialTarget > 0) {
TargetAmount target = new TargetCreaturePermanentAmount(snow, StaticFilters.FILTER_CONTROLLED_CREATURE);
target.setMinNumberOfTargets(1);
TargetAmount target = new TargetCreaturePermanentAmount(snow, 0, snow, StaticFilters.FILTER_CONTROLLED_CREATURE);
target.withNotTarget(true);
target.chooseTarget(outcome, player.getId(), source, game);
for (UUID targetId : target.getTargets()) {
Expand Down
3 changes: 1 addition & 2 deletions Mage.Sets/src/mage/cards/b/BlessingsOfNature.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.counters.CounterType;
import mage.target.common.TargetCreaturePermanentAmount;

import java.util.UUID;
Expand All @@ -19,7 +18,7 @@ public BlessingsOfNature(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}");

// Distribute four +1/+1 counters among any number of target creatures.
this.getSpellAbility().addEffect(new DistributeCountersEffect(4, "any number of target creatures"));
this.getSpellAbility().addEffect(new DistributeCountersEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(4));

this.addAbility(new MiracleAbility("{G}"));
Expand Down
7 changes: 6 additions & 1 deletion Mage.Sets/src/mage/cards/b/BogardanHellkite.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,14 @@ public BogardanHellkite(UUID ownerId, CardSetInfo setInfo) {
this.power = new MageInt(5);
this.toughness = new MageInt(5);

// Flash
this.addAbility(FlashAbility.getInstance());

// Flying
this.addAbility(FlyingAbility.getInstance());
Ability ability = new EntersBattlefieldTriggeredAbility(new DamageMultiEffect(5, "it"), false);

// When Bogardan Hellkite enters, it deals 5 damage divided as you choose among any number of targets.
Ability ability = new EntersBattlefieldTriggeredAbility(new DamageMultiEffect("it"), false);
ability.addTarget(new TargetAnyTargetAmount(5));
this.addAbility(ability);
}
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/b/Boulderfall.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public Boulderfall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{6}{R}{R}");

// Boulderfall deals 5 damage divided as you choose among any number of targets.
this.getSpellAbility().addEffect(new DamageMultiEffect(5));
this.getSpellAbility().addEffect(new DamageMultiEffect());
this.getSpellAbility().addTarget(new TargetAnyTargetAmount(5));
}

Expand Down
6 changes: 1 addition & 5 deletions Mage.Sets/src/mage/cards/b/BountyOfTheHunt.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.counters.CounterType;
import mage.filter.common.FilterOwnedCard;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.target.common.TargetCardInHand;
Expand All @@ -34,10 +33,7 @@ public BountyOfTheHunt(UUID ownerId, CardSetInfo setInfo) {
this.addAbility(new AlternativeCostSourceAbility(new ExileFromHandCost(new TargetCardInHand(filter))));

// Distribute three +1/+1 counters among one, two, or three target creatures. For each +1/+1 counter you put on a creature this way, remove a +1/+1 counter from that creature at the beginning of the next cleanup step.
this.getSpellAbility().addEffect(new DistributeCountersEffect(
3,
"one, two, or three target creatures"
).withRemoveAtEndOfTurn());
this.getSpellAbility().addEffect(new DistributeCountersEffect().withRemoveAtEndOfTurn());
this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(3));
}

Expand Down
4 changes: 2 additions & 2 deletions Mage.Sets/src/mage/cards/b/Broodlord.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.Target;
import mage.target.common.TargetPermanentAmount;
import mage.target.common.TargetCreaturePermanentAmount;

import java.util.UUID;

Expand All @@ -37,7 +37,7 @@ public Broodlord(UUID ownerId, CardSetInfo setInfo) {

// Brood Telepathy -- When Broodlord enters the battlefield, distribute X +1/+1 counters among any number of other target creatures you control.
Ability ability = new EntersBattlefieldTriggeredAbility(new BroodlordEffect());
ability.addTarget(new TargetPermanentAmount(GetXValue.instance, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE));
ability.addTarget(new TargetCreaturePermanentAmount(GetXValue.instance, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE));
this.addAbility(ability.withFlavorWord("Brood Telepathy"));
}

Expand Down
4 changes: 2 additions & 2 deletions Mage.Sets/src/mage/cards/c/CaptainAmericaFirstAvenger.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,11 @@ public CaptainAmericaFirstAvenger(UUID ownerId, CardSetInfo setInfo) {

// Throw ... — {3}, Unattach an Equipment from Captain America: He deals damage equal to that Equipment’s mana value divided as you choose among one, two, or three targets.
Ability ability = new SimpleActivatedAbility(
new DamageMultiEffect(CaptainAmericaFirstAvengerValue.instance).setText(
new DamageMultiEffect().setText(
"he deals damage equal to that Equipment's mana value divided as you choose among one, two, or three targets."),
new GenericManaCost(3));
ability.addCost(new CaptainAmericaFirstAvengerUnattachCost());
ability.addTarget(new TargetAnyTargetAmount(CaptainAmericaFirstAvengerValue.instance, 3));
ability.addTarget(new TargetAnyTargetAmount(CaptainAmericaFirstAvengerValue.instance, 1, 3));
this.addAbility(ability.withFlavorWord("Throw ..."));

// ... Catch — At the beginning of combat on your turn, attach up to one target Equipment you control to Captain America.
Expand Down
9 changes: 3 additions & 6 deletions Mage.Sets/src/mage/cards/c/CaseOfTheTrampledGarden.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetAttackingCreature;
import mage.target.common.TargetPermanentAmount;
import mage.target.common.TargetCreaturePermanentAmount;

/**
*
Expand All @@ -40,11 +40,8 @@ public CaseOfTheTrampledGarden(UUID ownerId, CardSetInfo setInfo) {
this.subtype.add(SubType.CASE);

// When this Case enters the battlefield, distribute two +1/+1 counters among one or two target creatures you control.
Ability initialAbility = new EntersBattlefieldTriggeredAbility(new DistributeCountersEffect(2,
"one or two target creatures you control"));
TargetPermanentAmount target = new TargetPermanentAmount(2, StaticFilters.FILTER_CONTROLLED_CREATURES);
target.setMinNumberOfTargets(1);
initialAbility.addTarget(target);
Ability initialAbility = new EntersBattlefieldTriggeredAbility(new DistributeCountersEffect());
initialAbility.addTarget(new TargetCreaturePermanentAmount(2, StaticFilters.FILTER_CONTROLLED_CREATURES));
// To solve -- Creatures you control have total power 8 or greater.
// Solved -- Whenever you attack, put a +1/+1 counter on target attacking creature. It gains trample until end of turn.
Ability solvedAbility = new ConditionalTriggeredAbility(
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/c/ChandraFlameshaper.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ TargetController.NEXT, new SacrificeSourceEffect(), false

// -4: Chandra deals 8 damage divided as you choose among any number of target creatures and/or planeswalkers.
Ability minusFourAbility = new LoyaltyAbility(
new DamageMultiEffect(8, "{this}"), -4
new DamageMultiEffect(), -4
);
minusFourAbility.addTarget(new TargetCreatureOrPlaneswalkerAmount(8));
this.addAbility(minusFourAbility);
Expand Down
2 changes: 1 addition & 1 deletion Mage.Sets/src/mage/cards/c/ChandrasPyrohelix.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public ChandrasPyrohelix(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");

// Chandra's Pyrohelix deals 2 damage divided as you choose among one or two targets.
this.getSpellAbility().addEffect(new DamageMultiEffect(2));
this.getSpellAbility().addEffect(new DamageMultiEffect());
this.getSpellAbility().addTarget(new TargetAnyTargetAmount(2));
}

Expand Down
Loading

0 comments on commit 73b63d1

Please sign in to comment.