mirror of
https://github.com/magefree/mage.git
synced 2025-12-22 11:32:00 -08:00
moved some target choices to CardImpl, they should be properly copiable now
This commit is contained in:
parent
96a3f40891
commit
e2a1fa50ea
15 changed files with 163 additions and 120 deletions
|
|
@ -72,14 +72,14 @@ public class AlexiZephyrMage extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
||||||
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public AlexiZephyrMage(final AlexiZephyrMage card) {
|
public AlexiZephyrMage(final AlexiZephyrMage card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
||||||
|
|
@ -65,14 +65,14 @@ public class CandelabraOfTawnos extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
||||||
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public CandelabraOfTawnos(final CandelabraOfTawnos card) {
|
public CandelabraOfTawnos(final CandelabraOfTawnos card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ import mage.abilities.effects.common.NameACardEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.TargetAdjustment;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.FilterSpell;
|
import mage.filter.FilterSpell;
|
||||||
import mage.filter.predicate.mageobject.NamePredicate;
|
import mage.filter.predicate.mageobject.NamePredicate;
|
||||||
|
|
@ -49,11 +50,10 @@ import mage.target.TargetSpell;
|
||||||
*/
|
*/
|
||||||
public class DeclarationOfNaught extends CardImpl {
|
public class DeclarationOfNaught extends CardImpl {
|
||||||
|
|
||||||
private final UUID originalId;
|
|
||||||
static final private FilterSpell filter = new FilterSpell("spell with the chosen name");
|
static final private FilterSpell filter = new FilterSpell("spell with the chosen name");
|
||||||
|
|
||||||
public DeclarationOfNaught(UUID ownerId, CardSetInfo setInfo) {
|
public DeclarationOfNaught(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}{U}");
|
||||||
|
|
||||||
// As Declaration of Naught enters the battlefield, name a card.
|
// As Declaration of Naught enters the battlefield, name a card.
|
||||||
this.addAbility(new AsEntersBattlefieldAbility(new NameACardEffect(NameACardEffect.TypeOfName.ALL)));
|
this.addAbility(new AsEntersBattlefieldAbility(new NameACardEffect(NameACardEffect.TypeOfName.ALL)));
|
||||||
|
|
@ -61,15 +61,15 @@ public class DeclarationOfNaught extends CardImpl {
|
||||||
//TODO: Make ability properly copiable
|
//TODO: Make ability properly copiable
|
||||||
// {U}: Counter target spell with the chosen name.
|
// {U}: Counter target spell with the chosen name.
|
||||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new ManaCostsImpl("{U}"));
|
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new ManaCostsImpl("{U}"));
|
||||||
|
ability.setTargetAdjustment(TargetAdjustment.CHOSEN_NAME);
|
||||||
ability.addTarget(new TargetSpell(filter));
|
ability.addTarget(new TargetSpell(filter));
|
||||||
originalId = ability.getOriginalId();
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getOriginalId().equals(originalId)) {
|
if (ability.getTargetAdjustment() == TargetAdjustment.CHOSEN_NAME) {
|
||||||
ability.getTargets().clear();
|
ability.getTargets().clear();
|
||||||
FilterSpell filter2 = new FilterSpell("spell with the chosen name");
|
FilterSpell filter2 = new FilterSpell("spell with the chosen name");
|
||||||
filter2.add(new NamePredicate((String) game.getState().getValue(ability.getSourceId().toString() + NameACardEffect.INFO_KEY)));
|
filter2.add(new NamePredicate((String) game.getState().getValue(ability.getSourceId().toString() + NameACardEffect.INFO_KEY)));
|
||||||
|
|
@ -80,7 +80,6 @@ public class DeclarationOfNaught extends CardImpl {
|
||||||
|
|
||||||
public DeclarationOfNaught(final DeclarationOfNaught card) {
|
public DeclarationOfNaught(final DeclarationOfNaught card) {
|
||||||
super(card);
|
super(card);
|
||||||
this.originalId = card.originalId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -74,16 +74,16 @@ public class DeepfireElemental extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
|
||||||
int xValue = ability.getManaCostsToPay().getX();
|
// int xValue = ability.getManaCostsToPay().getX();
|
||||||
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
|
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
|
||||||
filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.getTargets().add(new TargetPermanent(filter2));
|
// ability.getTargets().add(new TargetPermanent(filter2));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public DeepfireElemental(final DeepfireElemental card) {
|
public DeepfireElemental(final DeepfireElemental card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
||||||
|
|
@ -63,14 +63,14 @@ public class FloodwaterDam extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
||||||
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public FloodwaterDam(final FloodwaterDam card) {
|
public FloodwaterDam(final FloodwaterDam card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
||||||
|
|
@ -75,19 +75,19 @@ public class GorillaShaman extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
|
||||||
int xValue = ability.getManaCostsToPay().getX();
|
// int xValue = ability.getManaCostsToPay().getX();
|
||||||
TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0);
|
// TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0);
|
||||||
int minTargets = oldTarget.getMinNumberOfTargets();
|
// int minTargets = oldTarget.getMinNumberOfTargets();
|
||||||
int maxTargets = oldTarget.getMaxNumberOfTargets();
|
// int maxTargets = oldTarget.getMaxNumberOfTargets();
|
||||||
FilterPermanent filter2 = oldTarget.getFilter().copy();
|
// FilterPermanent filter2 = oldTarget.getFilter().copy();
|
||||||
filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false));
|
// ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public GorillaShaman(final GorillaShaman card) {
|
public GorillaShaman(final GorillaShaman card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
||||||
|
|
@ -74,16 +74,16 @@ public class HearthKami extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
|
||||||
int xValue = ability.getManaCostsToPay().getX();
|
// int xValue = ability.getManaCostsToPay().getX();
|
||||||
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
|
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
|
||||||
filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.getTargets().add(new TargetPermanent(filter2));
|
// ability.getTargets().add(new TargetPermanent(filter2));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public HearthKami(final HearthKami card) {
|
public HearthKami(final HearthKami card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
||||||
|
|
@ -97,16 +97,16 @@ public class LinessaZephyrMage extends CardImpl {
|
||||||
super(card);
|
super(card);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
|
||||||
int xValue = ability.getManaCostsToPay().getX();
|
// int xValue = ability.getManaCostsToPay().getX();
|
||||||
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
|
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
|
||||||
filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.getTargets().add(new TargetPermanent(filter2));
|
// ability.getTargets().add(new TargetPermanent(filter2));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LinessaZephyrMage copy() {
|
public LinessaZephyrMage copy() {
|
||||||
|
|
|
||||||
|
|
@ -71,14 +71,14 @@ public class MagusOfTheCandelabra extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
||||||
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public MagusOfTheCandelabra(final MagusOfTheCandelabra card) {
|
public MagusOfTheCandelabra(final MagusOfTheCandelabra card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
||||||
|
|
@ -79,19 +79,19 @@ public class MinamoSightbender extends CardImpl {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_POWER_LEQ) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_POWER_LEQ) {
|
||||||
int xValue = ability.getManaCostsToPay().getX();
|
// int xValue = ability.getManaCostsToPay().getX();
|
||||||
TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0);
|
// TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0);
|
||||||
int minTargets = oldTarget.getMinNumberOfTargets();
|
// int minTargets = oldTarget.getMinNumberOfTargets();
|
||||||
int maxTargets = oldTarget.getMaxNumberOfTargets();
|
// int maxTargets = oldTarget.getMaxNumberOfTargets();
|
||||||
FilterPermanent filter2 = oldTarget.getFilter().copy();
|
// FilterPermanent filter2 = oldTarget.getFilter().copy();
|
||||||
filter2.add(new PowerPredicate(ComparisonType.FEWER_THAN, xValue + 1));
|
// filter2.add(new PowerPredicate(ComparisonType.FEWER_THAN, xValue + 1));
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false));
|
// ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public MinamoSightbender(final MinamoSightbender card) {
|
public MinamoSightbender(final MinamoSightbender card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
||||||
|
|
@ -63,14 +63,14 @@ public class MishrasHelix extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
||||||
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public MishrasHelix(final MishrasHelix card) {
|
public MishrasHelix(final MishrasHelix card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
||||||
|
|
@ -76,16 +76,16 @@ public class Plaguebearer extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
|
||||||
int xValue = ability.getManaCostsToPay().getX();
|
// int xValue = ability.getManaCostsToPay().getX();
|
||||||
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
|
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
|
||||||
filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.getTargets().add(new TargetPermanent(filter2));
|
// ability.getTargets().add(new TargetPermanent(filter2));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public Plaguebearer(final Plaguebearer card) {
|
public Plaguebearer(final Plaguebearer card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
||||||
|
|
@ -88,14 +88,14 @@ public class SynodArtificer extends CardImpl {
|
||||||
this.addAbility(untapAbility);
|
this.addAbility(untapAbility);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void adjustTargets(Ability ability, Game game) {
|
// public void adjustTargets(Ability ability, Game game) {
|
||||||
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
|
||||||
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
||||||
ability.getTargets().clear();
|
// ability.getTargets().clear();
|
||||||
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
public SynodArtificer(final SynodArtificer card) {
|
public SynodArtificer(final SynodArtificer card) {
|
||||||
super(card);
|
super(card);
|
||||||
|
|
|
||||||
|
|
@ -42,12 +42,16 @@ import mage.cards.repository.PluginClassloaderRegistery;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.counters.Counter;
|
import mage.counters.Counter;
|
||||||
import mage.counters.Counters;
|
import mage.counters.Counters;
|
||||||
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||||
|
import mage.filter.predicate.mageobject.PowerPredicate;
|
||||||
import mage.game.*;
|
import mage.game.*;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.events.ZoneChangeEvent;
|
import mage.game.events.ZoneChangeEvent;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.game.stack.Spell;
|
import mage.game.stack.Spell;
|
||||||
import mage.game.stack.StackObject;
|
import mage.game.stack.StackObject;
|
||||||
|
import mage.target.TargetPermanent;
|
||||||
import mage.util.GameLog;
|
import mage.util.GameLog;
|
||||||
import mage.util.SubTypeList;
|
import mage.util.SubTypeList;
|
||||||
import mage.watchers.Watcher;
|
import mage.watchers.Watcher;
|
||||||
|
|
@ -317,6 +321,46 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
|
||||||
return spellAbility;
|
return spellAbility;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public void adjustCosts(Ability ability, Game game) {
|
||||||
|
// }
|
||||||
|
@Override
|
||||||
|
public void adjustTargets(Ability ability, Game game) {
|
||||||
|
int xValue;
|
||||||
|
TargetPermanent oldTargetPermanent;
|
||||||
|
int minTargets;
|
||||||
|
int maxTargets;
|
||||||
|
switch (ability.getTargetAdjustment()) {
|
||||||
|
case NONE:
|
||||||
|
break;
|
||||||
|
case X_CMC_EQUAL_PERM:
|
||||||
|
xValue = ability.getManaCostsToPay().getX();
|
||||||
|
oldTargetPermanent = (TargetPermanent) ability.getTargets().get(0);
|
||||||
|
minTargets = oldTargetPermanent.getMinNumberOfTargets();
|
||||||
|
maxTargets = oldTargetPermanent.getMaxNumberOfTargets();
|
||||||
|
FilterPermanent filter2 = oldTargetPermanent.getFilter().copy();
|
||||||
|
filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
||||||
|
ability.getTargets().clear();
|
||||||
|
ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false));
|
||||||
|
break;
|
||||||
|
case X_POWER_LEQ:
|
||||||
|
xValue = ability.getManaCostsToPay().getX();
|
||||||
|
oldTargetPermanent = (TargetPermanent) ability.getTargets().get(0);
|
||||||
|
minTargets = oldTargetPermanent.getMinNumberOfTargets();
|
||||||
|
maxTargets = oldTargetPermanent.getMaxNumberOfTargets();
|
||||||
|
filter2 = oldTargetPermanent.getFilter().copy();
|
||||||
|
filter2.add(new PowerPredicate(ComparisonType.FEWER_THAN, xValue + 1));
|
||||||
|
ability.getTargets().clear();
|
||||||
|
ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false));
|
||||||
|
break;
|
||||||
|
case X_TARGETS:
|
||||||
|
xValue = ability.getManaCostsToPay().getX();
|
||||||
|
filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
|
||||||
|
ability.getTargets().clear();
|
||||||
|
ability.addTarget(new TargetPermanent(xValue, filter2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setOwnerId(UUID ownerId) {
|
public void setOwnerId(UUID ownerId) {
|
||||||
this.ownerId = ownerId;
|
this.ownerId = ownerId;
|
||||||
|
|
|
||||||
|
|
@ -6,5 +6,5 @@ package mage.constants;
|
||||||
*/
|
*/
|
||||||
public enum TargetAdjustment {
|
public enum TargetAdjustment {
|
||||||
|
|
||||||
NONE, X_TARGETS, X_CMC_EQUAL_PERM, GETH, DEFENDING_PLAYER, X_POWER_LEQ,
|
NONE, X_TARGETS, X_CMC_EQUAL_PERM, GETH, DEFENDING_PLAYER, X_POWER_LEQ, CHOSEN_NAME
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue