1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-13 09:11:06 -09:00

moved some target choices to CardImpl, they should be properly copiable now

This commit is contained in:
Evan Kranzler 2017-09-19 12:43:52 -04:00
parent 96a3f40891
commit e2a1fa50ea
15 changed files with 163 additions and 120 deletions

View file

@ -72,14 +72,14 @@ public class AlexiZephyrMage extends CardImpl {
this.addAbility(ability);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
ability.getTargets().clear();
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
// ability.getTargets().clear();
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
// }
// }
public AlexiZephyrMage(final AlexiZephyrMage card) {
super(card);

View file

@ -65,14 +65,14 @@ public class CandelabraOfTawnos extends CardImpl {
this.addAbility(ability);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
ability.getTargets().clear();
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
// ability.getTargets().clear();
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
// }
// }
public CandelabraOfTawnos(final CandelabraOfTawnos card) {
super(card);

View file

@ -37,6 +37,7 @@ import mage.abilities.effects.common.NameACardEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.TargetAdjustment;
import mage.constants.Zone;
import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.NamePredicate;
@ -49,11 +50,10 @@ import mage.target.TargetSpell;
*/
public class DeclarationOfNaught extends CardImpl {
private final UUID originalId;
static final private FilterSpell filter = new FilterSpell("spell with the chosen name");
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.
this.addAbility(new AsEntersBattlefieldAbility(new NameACardEffect(NameACardEffect.TypeOfName.ALL)));
@ -61,15 +61,15 @@ public class DeclarationOfNaught extends CardImpl {
//TODO: Make ability properly copiable
// {U}: Counter target spell with the chosen name.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new ManaCostsImpl("{U}"));
ability.setTargetAdjustment(TargetAdjustment.CHOSEN_NAME);
ability.addTarget(new TargetSpell(filter));
originalId = ability.getOriginalId();
this.addAbility(ability);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getOriginalId().equals(originalId)) {
if (ability.getTargetAdjustment() == TargetAdjustment.CHOSEN_NAME) {
ability.getTargets().clear();
FilterSpell filter2 = new FilterSpell("spell with the chosen name");
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) {
super(card);
this.originalId = card.originalId;
}
@Override

View file

@ -74,16 +74,16 @@ public class DeepfireElemental extends CardImpl {
this.addAbility(ability);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
int xValue = ability.getManaCostsToPay().getX();
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
ability.getTargets().clear();
ability.getTargets().add(new TargetPermanent(filter2));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
// int xValue = ability.getManaCostsToPay().getX();
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
// ability.getTargets().clear();
// ability.getTargets().add(new TargetPermanent(filter2));
// }
// }
public DeepfireElemental(final DeepfireElemental card) {
super(card);

View file

@ -63,14 +63,14 @@ public class FloodwaterDam extends CardImpl {
this.addAbility(ability);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
ability.getTargets().clear();
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
// ability.getTargets().clear();
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
// }
// }
public FloodwaterDam(final FloodwaterDam card) {
super(card);

View file

@ -75,19 +75,19 @@ public class GorillaShaman extends CardImpl {
this.addAbility(ability);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
int xValue = ability.getManaCostsToPay().getX();
TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0);
int minTargets = oldTarget.getMinNumberOfTargets();
int maxTargets = oldTarget.getMaxNumberOfTargets();
FilterPermanent filter2 = oldTarget.getFilter().copy();
filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
ability.getTargets().clear();
ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
// int xValue = ability.getManaCostsToPay().getX();
// TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0);
// int minTargets = oldTarget.getMinNumberOfTargets();
// int maxTargets = oldTarget.getMaxNumberOfTargets();
// FilterPermanent filter2 = oldTarget.getFilter().copy();
// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
// ability.getTargets().clear();
// ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false));
// }
// }
public GorillaShaman(final GorillaShaman card) {
super(card);

View file

@ -74,16 +74,16 @@ public class HearthKami extends CardImpl {
this.addAbility(ability);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
int xValue = ability.getManaCostsToPay().getX();
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
ability.getTargets().clear();
ability.getTargets().add(new TargetPermanent(filter2));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
// int xValue = ability.getManaCostsToPay().getX();
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
// ability.getTargets().clear();
// ability.getTargets().add(new TargetPermanent(filter2));
// }
// }
public HearthKami(final HearthKami card) {
super(card);

View file

@ -97,16 +97,16 @@ public class LinessaZephyrMage extends CardImpl {
super(card);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
int xValue = ability.getManaCostsToPay().getX();
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
ability.getTargets().clear();
ability.getTargets().add(new TargetPermanent(filter2));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
// int xValue = ability.getManaCostsToPay().getX();
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
// ability.getTargets().clear();
// ability.getTargets().add(new TargetPermanent(filter2));
// }
// }
@Override
public LinessaZephyrMage copy() {

View file

@ -71,14 +71,14 @@ public class MagusOfTheCandelabra extends CardImpl {
this.addAbility(ability);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
ability.getTargets().clear();
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
// ability.getTargets().clear();
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
// }
// }
public MagusOfTheCandelabra(final MagusOfTheCandelabra card) {
super(card);

View file

@ -79,19 +79,19 @@ public class MinamoSightbender extends CardImpl {
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_POWER_LEQ) {
int xValue = ability.getManaCostsToPay().getX();
TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0);
int minTargets = oldTarget.getMinNumberOfTargets();
int maxTargets = oldTarget.getMaxNumberOfTargets();
FilterPermanent filter2 = oldTarget.getFilter().copy();
filter2.add(new PowerPredicate(ComparisonType.FEWER_THAN, xValue + 1));
ability.getTargets().clear();
ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_POWER_LEQ) {
// int xValue = ability.getManaCostsToPay().getX();
// TargetPermanent oldTarget = (TargetPermanent) ability.getTargets().get(0);
// int minTargets = oldTarget.getMinNumberOfTargets();
// int maxTargets = oldTarget.getMaxNumberOfTargets();
// FilterPermanent filter2 = oldTarget.getFilter().copy();
// filter2.add(new PowerPredicate(ComparisonType.FEWER_THAN, xValue + 1));
// ability.getTargets().clear();
// ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, filter2, false));
// }
// }
public MinamoSightbender(final MinamoSightbender card) {
super(card);

View file

@ -63,14 +63,14 @@ public class MishrasHelix extends CardImpl {
this.addAbility(ability);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
ability.getTargets().clear();
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
// ability.getTargets().clear();
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
// }
// }
public MishrasHelix(final MishrasHelix card) {
super(card);

View file

@ -76,16 +76,16 @@ public class Plaguebearer extends CardImpl {
this.addAbility(ability);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
int xValue = ability.getManaCostsToPay().getX();
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
ability.getTargets().clear();
ability.getTargets().add(new TargetPermanent(filter2));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_CMC_EQUAL_PERM) {
// int xValue = ability.getManaCostsToPay().getX();
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter().copy();
// filter2.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
// ability.getTargets().clear();
// ability.getTargets().add(new TargetPermanent(filter2));
// }
// }
public Plaguebearer(final Plaguebearer card) {
super(card);

View file

@ -88,14 +88,14 @@ public class SynodArtificer extends CardImpl {
this.addAbility(untapAbility);
}
@Override
public void adjustTargets(Ability ability, Game game) {
if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
ability.getTargets().clear();
ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
}
}
// @Override
// public void adjustTargets(Ability ability, Game game) {
// if (ability.getTargetAdjustment() == TargetAdjustment.X_TARGETS) {
// FilterPermanent filter2 = ((TargetPermanent) ability.getTargets().get(0)).getFilter();
// ability.getTargets().clear();
// ability.addTarget(new TargetPermanent(ability.getManaCostsToPay().getX(), filter2));
// }
// }
public SynodArtificer(final SynodArtificer card) {
super(card);

View file

@ -42,12 +42,16 @@ import mage.cards.repository.PluginClassloaderRegistery;
import mage.constants.*;
import mage.counters.Counter;
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.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.Permanent;
import mage.game.stack.Spell;
import mage.game.stack.StackObject;
import mage.target.TargetPermanent;
import mage.util.GameLog;
import mage.util.SubTypeList;
import mage.watchers.Watcher;
@ -317,6 +321,46 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
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
public void setOwnerId(UUID ownerId) {
this.ownerId = ownerId;

View file

@ -6,5 +6,5 @@ package mage.constants;
*/
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
}