mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 02:38:02 +00:00
- Fixed targeting issue with copySpellontoStack (part 1).
This commit is contained in:
@@ -906,7 +906,7 @@ public class MagicStack extends MyObservable {
|
|||||||
this.finishResolving(sa, true);
|
this.finishResolving(sa, true);
|
||||||
} else if (sa.getAbilityFactory() != null) {
|
} else if (sa.getAbilityFactory() != null) {
|
||||||
AllZone.getGameLog().add("ResolveStack", sa.getStackDescription(), 2);
|
AllZone.getGameLog().add("ResolveStack", sa.getStackDescription(), 2);
|
||||||
AbilityFactory.handleRemembering(sa.getAbilityFactory());
|
AbilityFactory.handleRemembering(sa, sa.getAbilityFactory());
|
||||||
AbilityFactory.resolve(sa, true);
|
AbilityFactory.resolve(sa, true);
|
||||||
} else {
|
} else {
|
||||||
AllZone.getGameLog().add("ResolveStack", sa.getStackDescription(), 2);
|
AllZone.getGameLog().add("ResolveStack", sa.getStackDescription(), 2);
|
||||||
|
|||||||
@@ -53,6 +53,37 @@ public class AbilityFactory {
|
|||||||
|
|
||||||
private Card hostC = null;
|
private Card hostC = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Constructor for AbilityFactory.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
public AbilityFactory() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Constructor for AbilityFactory.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param af
|
||||||
|
* a AbilityFactory object.
|
||||||
|
*/
|
||||||
|
public AbilityFactory(final AbilityFactory af) {
|
||||||
|
this.abCost = af.getAbCost();
|
||||||
|
this.abTgt = af.getAbTgt();
|
||||||
|
this.api = af.getAPI();
|
||||||
|
this.hasSpDesc = af.hasSpDescription();
|
||||||
|
this.hasSubAb = af.hasSubAbility();
|
||||||
|
this.hasValid = af.hasValid();
|
||||||
|
this.hostC = af.getHostCard();
|
||||||
|
this.isAb = af.isAbility();
|
||||||
|
this.isDb = af.isDrawback();
|
||||||
|
this.isSp = af.isSpell();
|
||||||
|
this.isTargeted = af.isTargeted();
|
||||||
|
this.mapParams = af.getMapParams();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* getHostCard.
|
* getHostCard.
|
||||||
@@ -64,6 +95,16 @@ public class AbilityFactory {
|
|||||||
return this.hostC;
|
return this.hostC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* setHostCard.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public final void setHostCard(Card host) {
|
||||||
|
this.hostC = host;
|
||||||
|
}
|
||||||
|
|
||||||
private HashMap<String, String> mapParams = new HashMap<String, String>();
|
private HashMap<String, String> mapParams = new HashMap<String, String>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -164,6 +205,17 @@ public class AbilityFactory {
|
|||||||
return this.abTgt;
|
return this.abTgt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Setter for the field <code>abTgt</code>.
|
||||||
|
* </p>
|
||||||
|
* @param target
|
||||||
|
* a target object.
|
||||||
|
*/
|
||||||
|
public final void setAbTgt(Target target) {
|
||||||
|
this.abTgt = target;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* isCurse.
|
* isCurse.
|
||||||
@@ -2290,10 +2342,12 @@ public class AbilityFactory {
|
|||||||
* handleRemembering.
|
* handleRemembering.
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
|
* @param sa
|
||||||
|
* a SpellAbility object.
|
||||||
* @param af
|
* @param af
|
||||||
* a {@link forge.card.abilityfactory.AbilityFactory} object.
|
* a {@link forge.card.abilityfactory.AbilityFactory} object.
|
||||||
*/
|
*/
|
||||||
public static void handleRemembering(final AbilityFactory af) {
|
public static void handleRemembering(final SpellAbility sa, final AbilityFactory af) {
|
||||||
final HashMap<String, String> params = af.getMapParams();
|
final HashMap<String, String> params = af.getMapParams();
|
||||||
Card host;
|
Card host;
|
||||||
|
|
||||||
@@ -2307,7 +2361,7 @@ public class AbilityFactory {
|
|||||||
host.clearRemembered();
|
host.clearRemembered();
|
||||||
}
|
}
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
|
|
||||||
if (params.containsKey("RememberTargets")) {
|
if (params.containsKey("RememberTargets")) {
|
||||||
final ArrayList<Object> tgts = (tgt == null) ? new ArrayList<Object>() : tgt.getTargets();
|
final ArrayList<Object> tgts = (tgt == null) ? new ArrayList<Object>() : tgt.getTargets();
|
||||||
|
|||||||
@@ -226,7 +226,7 @@ public class AbilityFactoryAlterLife {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -422,7 +422,7 @@ public class AbilityFactoryAlterLife {
|
|||||||
final int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa);
|
final int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa);
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if ((tgt != null) && !params.containsKey("Defined")) {
|
if ((tgt != null) && !params.containsKey("Defined")) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -613,7 +613,7 @@ public class AbilityFactoryAlterLife {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -819,7 +819,7 @@ public class AbilityFactoryAlterLife {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1024,7 +1024,7 @@ public class AbilityFactoryAlterLife {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1067,7 +1067,7 @@ public class AbilityFactoryAlterLife {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1315,7 +1315,7 @@ public class AbilityFactoryAlterLife {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1514,7 +1514,7 @@ public class AbilityFactoryAlterLife {
|
|||||||
final int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa);
|
final int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa);
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if ((tgt != null) && !params.containsKey("Defined")) {
|
if ((tgt != null) && !params.containsKey("Defined")) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1667,7 +1667,7 @@ public class AbilityFactoryAlterLife {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1780,7 +1780,7 @@ public class AbilityFactoryAlterLife {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if ((tgt != null) && !params.containsKey("Defined")) {
|
if ((tgt != null) && !params.containsKey("Defined")) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ public final class AbilityFactoryAnimate {
|
|||||||
sb.append(sa.getSourceCard().getName()).append(" - ");
|
sb.append(sa.getSourceCard().getName()).append(" - ");
|
||||||
}
|
}
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
ArrayList<Card> tgts;
|
ArrayList<Card> tgts;
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgts = tgt.getTargetCards();
|
tgts = tgt.getTargetCards();
|
||||||
@@ -309,7 +309,7 @@ public final class AbilityFactoryAnimate {
|
|||||||
private static boolean animateCanPlayAI(final AbilityFactory af, final SpellAbility sa) {
|
private static boolean animateCanPlayAI(final AbilityFactory af, final SpellAbility sa) {
|
||||||
|
|
||||||
final HashMap<String, String> params = af.getMapParams();
|
final HashMap<String, String> params = af.getMapParams();
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
final Card source = sa.getSourceCard();
|
final Card source = sa.getSourceCard();
|
||||||
|
|
||||||
boolean useAbility = true;
|
boolean useAbility = true;
|
||||||
@@ -565,7 +565,7 @@ public final class AbilityFactoryAnimate {
|
|||||||
sVars.addAll(Arrays.asList(params.get("sVars").split(",")));
|
sVars.addAll(Arrays.asList(params.get("sVars").split(",")));
|
||||||
}
|
}
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
ArrayList<Card> tgts;
|
ArrayList<Card> tgts;
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgts = tgt.getTargetCards();
|
tgts = tgt.getTargetCards();
|
||||||
@@ -1174,7 +1174,7 @@ public final class AbilityFactoryAnimate {
|
|||||||
CardList list;
|
CardList list;
|
||||||
ArrayList<Player> tgtPlayers = null;
|
ArrayList<Player> tgtPlayers = null;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else if (params.containsKey("Defined")) {
|
} else if (params.containsKey("Defined")) {
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ public class AbilityFactoryAttach {
|
|||||||
ArrayList<Object> targets;
|
ArrayList<Object> targets;
|
||||||
|
|
||||||
// Should never allow more than one Attachment per card
|
// Should never allow more than one Attachment per card
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
targets = tgt.getTargets();
|
targets = tgt.getTargets();
|
||||||
} else {
|
} else {
|
||||||
@@ -956,7 +956,7 @@ public class AbilityFactoryAttach {
|
|||||||
|
|
||||||
// Check if there are any valid targets
|
// Check if there are any valid targets
|
||||||
ArrayList<Object> targets = new ArrayList<Object>();
|
ArrayList<Object> targets = new ArrayList<Object>();
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt == null) {
|
if (tgt == null) {
|
||||||
targets = AbilityFactory.getDefinedObjects(sa.getSourceCard(), params.get("Defined"), sa);
|
targets = AbilityFactory.getDefinedObjects(sa.getSourceCard(), params.get("Defined"), sa);
|
||||||
}
|
}
|
||||||
@@ -1000,7 +1000,7 @@ public class AbilityFactoryAttach {
|
|||||||
|
|
||||||
ArrayList<Object> targets;
|
ArrayList<Object> targets;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
targets = tgt.getTargets();
|
targets = tgt.getTargets();
|
||||||
// TODO Remove invalid targets (although more likely this will just
|
// TODO Remove invalid targets (although more likely this will just
|
||||||
|
|||||||
@@ -217,11 +217,11 @@ public final class AbilityFactoryChangeZone {
|
|||||||
final HashMap<String, String> params = af.getMapParams();
|
final HashMap<String, String> params = af.getMapParams();
|
||||||
final List<Constant.Zone> origin = Constant.Zone.listValueOf(params.get("Origin"));
|
final List<Constant.Zone> origin = Constant.Zone.listValueOf(params.get("Origin"));
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
|
|
||||||
// Don't set the zone if it targets a player
|
// Don't set the zone if it targets a player
|
||||||
if ((tgt != null) && !tgt.canTgtPlayer()) {
|
if ((tgt != null) && !tgt.canTgtPlayer()) {
|
||||||
af.getAbTgt().setZone(origin);
|
sa.getTarget().setZone(origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(sa instanceof AbilitySub)) {
|
if (!(sa instanceof AbilitySub)) {
|
||||||
@@ -402,7 +402,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
|
|
||||||
ArrayList<Player> pDefined = new ArrayList<Player>();
|
ArrayList<Player> pDefined = new ArrayList<Player>();
|
||||||
pDefined.add(source.getController());
|
pDefined.add(source.getController());
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if ((tgt != null) && tgt.canTgtPlayer()) {
|
if ((tgt != null) && tgt.canTgtPlayer()) {
|
||||||
if (af.isCurse()) {
|
if (af.isCurse()) {
|
||||||
tgt.addTarget(AllZone.getHumanPlayer());
|
tgt.addTarget(AllZone.getHumanPlayer());
|
||||||
@@ -471,7 +471,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
private static boolean changeHiddenOriginPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) {
|
private static boolean changeHiddenOriginPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) {
|
||||||
// if putting cards from hand to library and parent is drawing cards
|
// if putting cards from hand to library and parent is drawing cards
|
||||||
// make sure this will actually do something:
|
// make sure this will actually do something:
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if ((tgt != null) && tgt.canTgtPlayer()) {
|
if ((tgt != null) && tgt.canTgtPlayer()) {
|
||||||
if (af.isCurse()) {
|
if (af.isCurse()) {
|
||||||
tgt.addTarget(AllZone.getHumanPlayer());
|
tgt.addTarget(AllZone.getHumanPlayer());
|
||||||
@@ -515,7 +515,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<Player> pDefined;
|
ArrayList<Player> pDefined;
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if ((tgt != null) && tgt.canTgtPlayer()) {
|
if ((tgt != null) && tgt.canTgtPlayer()) {
|
||||||
if (af.isCurse()) {
|
if (af.isCurse()) {
|
||||||
if (AllZone.getHumanPlayer().canBeTargetedBy(sa)) {
|
if (AllZone.getHumanPlayer().canBeTargetedBy(sa)) {
|
||||||
@@ -707,8 +707,8 @@ public final class AbilityFactoryChangeZone {
|
|||||||
Player chooser = null;
|
Player chooser = null;
|
||||||
if (params.containsKey("Chooser")) {
|
if (params.containsKey("Chooser")) {
|
||||||
final String choose = params.get("Chooser");
|
final String choose = params.get("Chooser");
|
||||||
if (choose.equals("Targeted") && (af.getAbTgt().getTargetPlayers() != null)) {
|
if (choose.equals("Targeted") && (sa.getTarget().getTargetPlayers() != null)) {
|
||||||
chooser = af.getAbTgt().getTargetPlayers().get(0);
|
chooser = sa.getTarget().getTargetPlayers().get(0);
|
||||||
} else {
|
} else {
|
||||||
chooser = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), choose, sa).get(0);
|
chooser = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), choose, sa).get(0);
|
||||||
}
|
}
|
||||||
@@ -744,7 +744,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
final Card card = sa.getSourceCard();
|
final Card card = sa.getSourceCard();
|
||||||
final boolean defined = params.containsKey("Defined");
|
final boolean defined = params.containsKey("Defined");
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
final ArrayList<Player> players = tgt.getTargetPlayers();
|
final ArrayList<Player> players = tgt.getTargetPlayers();
|
||||||
player = players.get(0);
|
player = players.get(0);
|
||||||
@@ -926,8 +926,8 @@ public final class AbilityFactoryChangeZone {
|
|||||||
*/
|
*/
|
||||||
private static void changeHiddenOriginResolveAI(final AbilityFactory af, final SpellAbility sa, Player player) {
|
private static void changeHiddenOriginResolveAI(final AbilityFactory af, final SpellAbility sa, Player player) {
|
||||||
final HashMap<String, String> params = af.getMapParams();
|
final HashMap<String, String> params = af.getMapParams();
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
final Card card = af.getHostCard();
|
final Card card = sa.getSourceCard();
|
||||||
final boolean defined = params.containsKey("Defined");
|
final boolean defined = params.containsKey("Defined");
|
||||||
|
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
@@ -1233,7 +1233,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
// prevent run-away activations - first time will always return true
|
// prevent run-away activations - first time will always return true
|
||||||
boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getRestrictions().getNumberTurnActivations());
|
boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getRestrictions().getNumberTurnActivations());
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
if (!AbilityFactoryChangeZone.changeKnownPreferredTarget(af, sa, false)) {
|
if (!AbilityFactoryChangeZone.changeKnownPreferredTarget(af, sa, false)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -1331,7 +1331,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
final Card source = sa.getSourceCard();
|
final Card source = sa.getSourceCard();
|
||||||
final Zone origin = Zone.smartValueOf(params.get("Origin"));
|
final Zone origin = Zone.smartValueOf(params.get("Origin"));
|
||||||
final Zone destination = Zone.smartValueOf(params.get("Destination"));
|
final Zone destination = Zone.smartValueOf(params.get("Destination"));
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
|
|
||||||
final AbilitySub abSub = sa.getSubAbility();
|
final AbilitySub abSub = sa.getSubAbility();
|
||||||
String subAPI = "";
|
String subAPI = "";
|
||||||
@@ -1536,7 +1536,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
final Card source = sa.getSourceCard();
|
final Card source = sa.getSourceCard();
|
||||||
final Zone origin = Zone.smartValueOf(params.get("Origin"));
|
final Zone origin = Zone.smartValueOf(params.get("Origin"));
|
||||||
final Zone destination = Zone.smartValueOf(params.get("Destination"));
|
final Zone destination = Zone.smartValueOf(params.get("Destination"));
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
|
|
||||||
CardList list = AllZoneUtil.getCardsIn(origin);
|
CardList list = AllZoneUtil.getCardsIn(origin);
|
||||||
list = list.getValidCards(tgt.getValidTgts(), AllZone.getComputerPlayer(), source);
|
list = list.getValidCards(tgt.getValidTgts(), AllZone.getComputerPlayer(), source);
|
||||||
@@ -1664,8 +1664,8 @@ public final class AbilityFactoryChangeZone {
|
|||||||
final StringBuilder sbTargets = new StringBuilder();
|
final StringBuilder sbTargets = new StringBuilder();
|
||||||
|
|
||||||
ArrayList<Card> tgts;
|
ArrayList<Card> tgts;
|
||||||
if (af.getAbTgt() != null) {
|
if (sa.getTarget() != null) {
|
||||||
tgts = af.getAbTgt().getTargetCards();
|
tgts = sa.getTarget().getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
// otherwise add self to list and go from there
|
// otherwise add self to list and go from there
|
||||||
tgts = new ArrayList<Card>();
|
tgts = new ArrayList<Card>();
|
||||||
@@ -1675,7 +1675,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (final Card c : tgts) {
|
for (final Card c : tgts) {
|
||||||
sbTargets.append(" ").append(c.getName());
|
sbTargets.append(" ").append(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
final String targetname = sbTargets.toString();
|
final String targetname = sbTargets.toString();
|
||||||
@@ -1776,7 +1776,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
private static void changeKnownOriginResolve(final AbilityFactory af, final SpellAbility sa) {
|
private static void changeKnownOriginResolve(final AbilityFactory af, final SpellAbility sa) {
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
final HashMap<String, String> params = af.getMapParams();
|
final HashMap<String, String> params = af.getMapParams();
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
final Player player = sa.getActivatingPlayer();
|
final Player player = sa.getActivatingPlayer();
|
||||||
final Card hostCard = af.getHostCard();
|
final Card hostCard = af.getHostCard();
|
||||||
|
|
||||||
@@ -2081,7 +2081,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
// TODO improve restrictions on when the AI would want to use this
|
// TODO improve restrictions on when the AI would want to use this
|
||||||
// spBounceAll has some AI we can compare to.
|
// spBounceAll has some AI we can compare to.
|
||||||
if (origin.equals(Zone.Hand) || origin.equals(Zone.Library)) {
|
if (origin.equals(Zone.Hand) || origin.equals(Zone.Library)) {
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
if (AllZone.getHumanPlayer().getCardsIn(Zone.Hand).isEmpty()
|
if (AllZone.getHumanPlayer().getCardsIn(Zone.Hand).isEmpty()
|
||||||
|| !AllZone.getHumanPlayer().canBeTargetedBy(sa)) {
|
|| !AllZone.getHumanPlayer().canBeTargetedBy(sa)) {
|
||||||
@@ -2114,7 +2114,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (origin.equals(Zone.Graveyard)) {
|
} else if (origin.equals(Zone.Graveyard)) {
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
if (AllZone.getHumanPlayer().getCardsIn(Zone.Graveyard).isEmpty()
|
if (AllZone.getHumanPlayer().getCardsIn(Zone.Graveyard).isEmpty()
|
||||||
|| !AllZone.getHumanPlayer().canBeTargetedBy(sa)) {
|
|| !AllZone.getHumanPlayer().canBeTargetedBy(sa)) {
|
||||||
@@ -2247,7 +2247,7 @@ public final class AbilityFactoryChangeZone {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers = null;
|
ArrayList<Player> tgtPlayers = null;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else if (params.containsKey("Defined")) {
|
} else if (params.containsKey("Defined")) {
|
||||||
|
|||||||
@@ -195,7 +195,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -291,7 +291,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -557,7 +557,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -636,7 +636,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -840,7 +840,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -919,7 +919,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1089,7 +1089,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1157,7 +1157,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1327,7 +1327,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1415,7 +1415,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1632,7 +1632,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -1700,7 +1700,7 @@ public final class AbilityFactoryChoose {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -171,8 +171,7 @@ public final class AbilityFactoryClash {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean clashCanPlayAI(final SpellAbility sa) {
|
private static boolean clashCanPlayAI(final SpellAbility sa) {
|
||||||
final AbilityFactory af = sa.getAbilityFactory();
|
final Target tgt = sa.getTarget();
|
||||||
final Target tgt = af.getAbTgt();
|
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
if (!AllZone.getHumanPlayer().canBeTargetedBy(sa)) {
|
if (!AllZone.getHumanPlayer().canBeTargetedBy(sa)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -578,7 +577,7 @@ public final class AbilityFactoryClash {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -624,7 +623,7 @@ public final class AbilityFactoryClash {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -435,7 +435,7 @@ public final class AbilityFactoryCombat {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -508,7 +508,7 @@ public final class AbilityFactoryCombat {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers;
|
ArrayList<Player> tgtPlayers;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if ((tgt != null) && !params.containsKey("Defined")) {
|
if ((tgt != null) && !params.containsKey("Defined")) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else {
|
} else {
|
||||||
@@ -651,7 +651,7 @@ public final class AbilityFactoryCombat {
|
|||||||
|
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtCards = tgt.getTargetCards();
|
tgtCards = tgt.getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
@@ -721,7 +721,7 @@ public final class AbilityFactoryCombat {
|
|||||||
|
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if ((tgt != null) && !params.containsKey("Defined")) {
|
if ((tgt != null) && !params.containsKey("Defined")) {
|
||||||
tgtCards = tgt.getTargetCards();
|
tgtCards = tgt.getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
@@ -866,7 +866,7 @@ public final class AbilityFactoryCombat {
|
|||||||
|
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtCards = tgt.getTargetCards();
|
tgtCards = tgt.getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
@@ -998,7 +998,7 @@ public final class AbilityFactoryCombat {
|
|||||||
|
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtCards = tgt.getTargetCards();
|
tgtCards = tgt.getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ public final class AbilityFactoryCopy {
|
|||||||
|
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtCards = tgt.getTargetCards();
|
tgtCards = tgt.getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
@@ -349,7 +349,7 @@ public final class AbilityFactoryCopy {
|
|||||||
|
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtCards = tgt.getTargetCards();
|
tgtCards = tgt.getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
@@ -617,7 +617,7 @@ public final class AbilityFactoryCopy {
|
|||||||
|
|
||||||
ArrayList<SpellAbility> tgtSpells;
|
ArrayList<SpellAbility> tgtSpells;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtSpells = tgt.getTargetSAs();
|
tgtSpells = tgt.getTargetSAs();
|
||||||
} else {
|
} else {
|
||||||
@@ -713,7 +713,7 @@ public final class AbilityFactoryCopy {
|
|||||||
|
|
||||||
ArrayList<SpellAbility> tgtSpells;
|
ArrayList<SpellAbility> tgtSpells;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtSpells = tgt.getTargetSAs();
|
tgtSpells = tgt.getTargetSAs();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
sb.append(params.get("UntapType")).append("s");
|
sb.append(params.get("UntapType")).append("s");
|
||||||
} else {
|
} else {
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtCards = tgt.getTargetCards();
|
tgtCards = tgt.getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
@@ -321,7 +321,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
*/
|
*/
|
||||||
private static boolean untapPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) {
|
private static boolean untapPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) {
|
||||||
// AI cannot use this properly until he can use SAs during Humans turn
|
// AI cannot use this properly until he can use SAs during Humans turn
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
|
|
||||||
boolean randomReturn = true;
|
boolean randomReturn = true;
|
||||||
|
|
||||||
@@ -555,7 +555,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
private static void untapResolve(final AbilityFactory af, final SpellAbility sa) {
|
private static void untapResolve(final AbilityFactory af, final SpellAbility sa) {
|
||||||
final HashMap<String, String> params = af.getMapParams();
|
final HashMap<String, String> params = af.getMapParams();
|
||||||
final Card card = sa.getSourceCard();
|
final Card card = sa.getSourceCard();
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
ArrayList<Card> tgtCards = null;
|
ArrayList<Card> tgtCards = null;
|
||||||
|
|
||||||
if (params.containsKey("UntapUpTo")) {
|
if (params.containsKey("UntapUpTo")) {
|
||||||
@@ -752,7 +752,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
sb.append("Tap ");
|
sb.append("Tap ");
|
||||||
|
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtCards = tgt.getTargetCards();
|
tgtCards = tgt.getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
@@ -792,7 +792,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
// AI cannot use this properly until he can use SAs during Humans turn
|
// AI cannot use this properly until he can use SAs during Humans turn
|
||||||
|
|
||||||
final HashMap<String, String> params = af.getMapParams();
|
final HashMap<String, String> params = af.getMapParams();
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
final Card source = sa.getSourceCard();
|
final Card source = sa.getSourceCard();
|
||||||
|
|
||||||
final Random r = MyRandom.getRandom();
|
final Random r = MyRandom.getRandom();
|
||||||
@@ -891,7 +891,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
*/
|
*/
|
||||||
private static boolean tapPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) {
|
private static boolean tapPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) {
|
||||||
// AI cannot use this properly until he can use SAs during Humans turn
|
// AI cannot use this properly until he can use SAs during Humans turn
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
final Card source = sa.getSourceCard();
|
final Card source = sa.getSourceCard();
|
||||||
|
|
||||||
boolean randomReturn = true;
|
boolean randomReturn = true;
|
||||||
@@ -1125,7 +1125,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
final Card card = sa.getSourceCard();
|
final Card card = sa.getSourceCard();
|
||||||
|
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtCards = tgt.getTargetCards();
|
tgtCards = tgt.getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
@@ -1286,7 +1286,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
valid = params.get("ValidCards");
|
valid = params.get("ValidCards");
|
||||||
}
|
}
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else if (params.containsKey("Defined")) {
|
} else if (params.containsKey("Defined")) {
|
||||||
@@ -1506,7 +1506,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
|
|
||||||
ArrayList<Player> tgtPlayers = null;
|
ArrayList<Player> tgtPlayers = null;
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtPlayers = tgt.getTargetPlayers();
|
tgtPlayers = tgt.getTargetPlayers();
|
||||||
} else if (params.containsKey("Defined")) {
|
} else if (params.containsKey("Defined")) {
|
||||||
@@ -1671,7 +1671,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
|
|
||||||
CardList validTappables = AbilityFactoryPermanentState.getTapAllTargets(valid, source);
|
CardList validTappables = AbilityFactoryPermanentState.getTapAllTargets(valid, source);
|
||||||
|
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
|
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgt.resetTargets();
|
tgt.resetTargets();
|
||||||
@@ -1861,7 +1861,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
sb.append("Tap or untap ");
|
sb.append("Tap or untap ");
|
||||||
|
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtCards = tgt.getTargetCards();
|
tgtCards = tgt.getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
@@ -1901,7 +1901,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
// AI cannot use this properly until he can use SAs during Humans turn
|
// AI cannot use this properly until he can use SAs during Humans turn
|
||||||
|
|
||||||
final HashMap<String, String> params = af.getMapParams();
|
final HashMap<String, String> params = af.getMapParams();
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
final Card source = sa.getSourceCard();
|
final Card source = sa.getSourceCard();
|
||||||
|
|
||||||
final Random r = MyRandom.getRandom();
|
final Random r = MyRandom.getRandom();
|
||||||
@@ -1990,7 +1990,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
*/
|
*/
|
||||||
private static boolean tapOrUntapPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) {
|
private static boolean tapOrUntapPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) {
|
||||||
// AI cannot use this properly until he can use SAs during Humans turn
|
// AI cannot use this properly until he can use SAs during Humans turn
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
final Card source = sa.getSourceCard();
|
final Card source = sa.getSourceCard();
|
||||||
|
|
||||||
boolean randomReturn = true;
|
boolean randomReturn = true;
|
||||||
@@ -2194,7 +2194,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<Card> tgtCards;
|
ArrayList<Card> tgtCards;
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
if (tgt != null) {
|
if (tgt != null) {
|
||||||
tgtCards = tgt.getTargetCards();
|
tgtCards = tgt.getTargetCards();
|
||||||
} else {
|
} else {
|
||||||
@@ -2311,7 +2311,7 @@ public class AbilityFactoryPermanentState {
|
|||||||
*/
|
*/
|
||||||
private static boolean phasesPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) {
|
private static boolean phasesPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) {
|
||||||
// AI cannot use this properly until he can use SAs during Humans turn
|
// AI cannot use this properly until he can use SAs during Humans turn
|
||||||
final Target tgt = af.getAbTgt();
|
final Target tgt = sa.getTarget();
|
||||||
|
|
||||||
boolean randomReturn = true;
|
boolean randomReturn = true;
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import forge.Counters;
|
|||||||
import forge.GameActionUtil;
|
import forge.GameActionUtil;
|
||||||
import forge.Player;
|
import forge.Player;
|
||||||
import forge.PlayerZone;
|
import forge.PlayerZone;
|
||||||
|
import forge.card.abilityfactory.AbilityFactory;
|
||||||
import forge.card.cost.Cost;
|
import forge.card.cost.Cost;
|
||||||
import forge.card.spellability.Ability;
|
import forge.card.spellability.Ability;
|
||||||
import forge.card.spellability.AbilityActivated;
|
import forge.card.spellability.AbilityActivated;
|
||||||
@@ -264,6 +265,17 @@ public abstract class AbstractCardFactory implements CardFactoryInterface {
|
|||||||
c.setCopiedSpell(true);
|
c.setCopiedSpell(true);
|
||||||
|
|
||||||
final SpellAbility copySA = sa.copy();
|
final SpellAbility copySA = sa.copy();
|
||||||
|
if (sa.getTarget() != null) {
|
||||||
|
Target target = new Target(sa.getTarget());
|
||||||
|
target.setSourceCard(c);
|
||||||
|
copySA.setTarget(target);
|
||||||
|
/*if (copySA.getAbilityFactory() != null) {
|
||||||
|
AbilityFactory af = new AbilityFactory(sa.getAbilityFactory());
|
||||||
|
af.setAbTgt(target);
|
||||||
|
af.setHostCard(source);
|
||||||
|
copySA.setAbilityFactory(af);
|
||||||
|
}*/
|
||||||
|
}
|
||||||
copySA.setSourceCard(c);
|
copySA.setSourceCard(c);
|
||||||
|
|
||||||
if (bCopyDetails) {
|
if (bCopyDetails) {
|
||||||
|
|||||||
@@ -45,6 +45,29 @@ public class Target {
|
|||||||
private boolean singleZone = false;
|
private boolean singleZone = false;
|
||||||
private TargetChoices choice = null;
|
private TargetChoices choice = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* getSourceCard.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @return a Card object.
|
||||||
|
*/
|
||||||
|
public final Card getSourceCard() {
|
||||||
|
return this.srcCard;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* setSourceCard.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param source
|
||||||
|
* a Card object.
|
||||||
|
*/
|
||||||
|
public final void setSourceCard(final Card source) {
|
||||||
|
this.srcCard = source;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* getTargetChoices.
|
* getTargetChoices.
|
||||||
@@ -133,6 +156,14 @@ public class Target {
|
|||||||
private String minTargets;
|
private String minTargets;
|
||||||
private String maxTargets;
|
private String maxTargets;
|
||||||
|
|
||||||
|
public final String getMinTargets() {
|
||||||
|
return this.minTargets;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final String getMaxTargets() {
|
||||||
|
return this.maxTargets;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Getter for the field <code>minTargets</code>.
|
* Getter for the field <code>minTargets</code>.
|
||||||
@@ -397,6 +428,25 @@ public class Target {
|
|||||||
this.choice = null;
|
this.choice = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Constructor for Target.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param target
|
||||||
|
*/
|
||||||
|
public Target(final Target target) {
|
||||||
|
|
||||||
|
this.tgtValid = true;
|
||||||
|
this.srcCard = target.getSourceCard();
|
||||||
|
this.vtSelection = target.getVTSelection();
|
||||||
|
this.validTgts = target.getValidTgts();
|
||||||
|
this.minTargets = target.getMinTargets();
|
||||||
|
this.maxTargets = target.getMaxTargets();
|
||||||
|
this.tgtZone = target.getZone();
|
||||||
|
this.targetSpellAbilityType = target.getTargetSpellAbilityType();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Constructor for Target.
|
* Constructor for Target.
|
||||||
@@ -690,4 +740,21 @@ public class Target {
|
|||||||
public final void setSingleZone(final boolean single) {
|
public final void setSingleZone(final boolean single) {
|
||||||
this.singleZone = single;
|
this.singleZone = single;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* copy.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @return a {@link forge.card.spellability.Target} object.
|
||||||
|
*/
|
||||||
|
public Target copy() {
|
||||||
|
Target clone = null;
|
||||||
|
try {
|
||||||
|
clone = (Target) this.clone();
|
||||||
|
} catch (final CloneNotSupportedException e) {
|
||||||
|
System.err.println(e);
|
||||||
|
}
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user