diff --git a/res/token-images.txt b/res/token-images.txt index df1b53b6a64..f4f3d18629a 100644 --- a/res/token-images.txt +++ b/res/token-images.txt @@ -48,6 +48,7 @@ c_1_1_shapeshifter.jpg http://www.cardforge.org/fpics/tokens/c_1 c_1_1_sliver.jpg http://www.cardforge.org/fpics/tokens/c_1_1_sliver.jpg c_1_1_snake.jpg http://www.cardforge.org/fpics/tokens/c_1_1_snake.jpg c_1_1_spirit.jpg http://www.cardforge.org/fpics/tokens/c_1_1_spirit.jpg +c_1_1_tetravite.jpg http://www.cardforge.org/fpics/tokens/c_1_1_tetravite.jpg c_1_1_thopter.jpg http://www.cardforge.org/fpics/tokens/c_1_1_thopter.jpg c_1_1_triskelavite.jpg http://www.cardforge.org/fpics/tokens/c_1_1_triskelavite.jpg c_1_1_wasp.jpg http://www.cardforge.org/fpics/tokens/c_1_1_wasp.jpg @@ -194,10 +195,9 @@ sorin_lord_of_innistrad_emblem.jpg http://www.cardforge.org/fpics/effects/so morph.jpg http://www.cardforge.org/fpics/effects/morph.jpg # //These tokens are not currently used by any cards in Forge, but links provided should they be scripted so the correct name is used: -# //c_1_1_tetravite.jpg http://www.cardforge.org/fpics/tokens/c_1_1_tetravite.jpg [ATQ/4ED] Tetravus # //c_4_4_kaldra.jpg http://www.cardforge.org/fpics/tokens/c_4_4_kaldra.jpg [5DN] Helm of Kaldra # //g_1_1_wolves_of_the_hunt.jpg http://www.cardforge.org/fpics/tokens/g_1_1_wolves_of_the_hunt.jpg [LEG] Master of the Hunt -# //r_1_1_warrior.jpg http://www.cardforge.org/fpics/tokens/r_1_1_warrior.jpg [SOK] Rally the Hoard +# //r_1_1_warrior.jpg http://www.cardforge.org/fpics/tokens/r_1_1_warrior.jpg [SOK] Rally the Horde # //rg_1_1_goblin_warrior.jpg http://www.cardforge.org/fpics/tokens/rg_1_1_goblin_warrior.jpg [SHM] Wort, the Raidmother # //rg_4_4_giant_warrior.jpg http://www.cardforge.org/fpics/tokens/rg_4_4_giant_warrior.jpg [SHM] Giantbaiting # //u_1_1_merfolk.jpg http://www.cardforge.org/fpics/tokens/u_1_1_merfolk.jpg [ZEN] Lullmage Mentor diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index f84ffeef0a5..64f353ad100 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -470,7 +470,7 @@ public class Card extends GameEntity implements Comparable { private final ArrayList untapCommandList = new ArrayList(); private final ArrayList changeControllerCommandList = new ArrayList(); - private static String[] storableSVars = { "ChosenX" }; + private static String[] storableSVars = { "ChosenX", "ChosenY" }; private final ArrayList hauntedBy = new ArrayList(); private Card haunting = null; diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactory.java b/src/main/java/forge/card/abilityfactory/AbilityFactory.java index 8e495a6a9b6..798dc32f0f0 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactory.java @@ -760,9 +760,9 @@ public class AbilityFactory { spellAbility = AbilityFactoryEffect.createDrawbackEffect(this); } } - + else if (this.api.equals("EndTurn")) { - if(this.isAb) { + if (this.isAb) { spellAbility = AbilityFactoryTurns.createAbilityEndTurn(this); } else if (this.isSp) { spellAbility = AbilityFactoryTurns.createSpellEndTurn(this); @@ -1673,7 +1673,7 @@ public class AbilityFactory { return 0; } } - if (amount.equals("ChosenX")) { + if (amount.equals("ChosenX") || amount.equals("ChosenY")) { // isn't made yet return 0; } diff --git a/src/main/java/forge/card/cost/CostExile.java b/src/main/java/forge/card/cost/CostExile.java index 72f2ba50f39..88b1d4331ba 100644 --- a/src/main/java/forge/card/cost/CostExile.java +++ b/src/main/java/forge/card/cost/CostExile.java @@ -189,7 +189,11 @@ public class CostExile extends CostPartWithList { // Generalize this if (sVar.equals("XChoice")) { c = CostUtil.chooseXValue(source, list.size()); - } else { + } + if (sVar.equals("YChoice")) { + c = CostUtil.chooseYValue(source, list.size()); + } + else { c = AbilityFactory.calculateAmount(source, amount, ability); } } @@ -226,6 +230,10 @@ public class CostExile extends CostPartWithList { return false; } + if (sVar.equals("YChoice")) { + return false; + } + c = AbilityFactory.calculateAmount(source, this.getAmount(), ability); } diff --git a/src/main/java/forge/card/cost/CostUtil.java b/src/main/java/forge/card/cost/CostUtil.java index 008c561c18d..c6b2daca975 100644 --- a/src/main/java/forge/card/cost/CostUtil.java +++ b/src/main/java/forge/card/cost/CostUtil.java @@ -248,6 +248,8 @@ public class CostUtil { // Generalize this if (sVar.equals("XChoice")) { c = CostUtil.chooseXValue(source, maxChoice); + } if (sVar.equals("YChoice")) { + c = CostUtil.chooseYValue(source, maxChoice); } else { c = AbilityFactory.calculateAmount(source, amount, ability); } @@ -281,6 +283,32 @@ public class CostUtil { return chosenX; } + /** + * Choose x value (for ChosenY). + * + * @param card + * the card + * @param maxValue + * the max value + * @return the int + */ + public static int chooseYValue(final Card card, final int maxValue) { + final String chosen = card.getSVar("ChosenY"); + if (chosen.length() > 0) { + return AbilityFactory.calculateAmount(card, "ChosenY", null); + } + + final Integer[] choiceArray = new Integer[maxValue + 1]; + for (int i = 0; i < choiceArray.length; i++) { + choiceArray[i] = i; + } + final Object o = GuiUtils.getChoice(card.toString() + " - Choose a Value for Y", choiceArray); + final int chosenY = (Integer) o; + card.setSVar("ChosenY", "Number$" + Integer.toString(chosenY)); + + return chosenY; + } + /** *

* setInput.