From ffbbcb2502468810ebb5b5197327c85b77e86fb3 Mon Sep 17 00:00:00 2001 From: slapshot5 Date: Wed, 31 Aug 2011 06:09:48 +0000 Subject: [PATCH] add Mystic Compass (from Alliances) --- .gitattributes | 1 + res/cardsfolder/m/mystic_compass.txt | 13 +++ src/main/java/forge/CardUtil.java | 12 +++ src/main/java/forge/Constant.java | 101 +++++++++--------- .../AbilityFactory_Animate.java | 31 +++--- .../abilityFactory/AbilityFactory_Choose.java | 20 ++++ 6 files changed, 112 insertions(+), 66 deletions(-) create mode 100644 res/cardsfolder/m/mystic_compass.txt diff --git a/.gitattributes b/.gitattributes index ceb2f2cf5f6..825102d80f8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5022,6 +5022,7 @@ res/cardsfolder/m/myr_sire.txt svneol=native#text/plain res/cardsfolder/m/myr_turbine.txt svneol=native#text/plain res/cardsfolder/m/myrsmith.txt svneol=native#text/plain res/cardsfolder/m/mysteries_of_the_deep.txt svneol=native#text/plain +res/cardsfolder/m/mystic_compass.txt -text res/cardsfolder/m/mystic_crusader.txt svneol=native#text/plain res/cardsfolder/m/mystic_denial.txt svneol=native#text/plain res/cardsfolder/m/mystic_enforcer.txt svneol=native#text/plain diff --git a/res/cardsfolder/m/mystic_compass.txt b/res/cardsfolder/m/mystic_compass.txt new file mode 100644 index 00000000000..9e631cd06c9 --- /dev/null +++ b/res/cardsfolder/m/mystic_compass.txt @@ -0,0 +1,13 @@ +Name:Mystic Compass +ManaCost:2 +Types:Artifact +Text:no text +A:AB$ ChooseType | Cost$ 1 T | Defined$ You | Type$ Basic Land | SubAbility$ SVar=DBAnimate | SpellDescription$ Target land becomes the basic land type of your choice until end of turn. +SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:RemAIDeck:True +SVar:Rarity:Uncommon +SVar:Picture:http://www.wizards.com/global/images/magic/general/mystic_compass.jpg +SetInfo:6ED|Uncommon|http://magiccards.info/scans/en/6e/302.jpg +SetInfo:ALL|Uncommon|http://magiccards.info/scans/en/ai/166.jpg +Oracle:{1}, {T}: Target land becomes the basic land type of your choice until end of turn. +End \ No newline at end of file diff --git a/src/main/java/forge/CardUtil.java b/src/main/java/forge/CardUtil.java index 24f6524b2c2..d010e0a9e15 100644 --- a/src/main/java/forge/CardUtil.java +++ b/src/main/java/forge/CardUtil.java @@ -411,7 +411,19 @@ public final class CardUtil { return types; } + /** + *

getCardTypes.

+ * + * @return a {@link java.util.ArrayList} object. + * @since 1.1.3 + */ + public static ArrayList getBasicTypes() { + ArrayList types = new ArrayList(); + types.addAll(Constant.CardTypes.basicTypes[0].list); + + return types; + } /** *

isASuperType.

diff --git a/src/main/java/forge/Constant.java b/src/main/java/forge/Constant.java index d0145a86d64..44282a7c214 100644 --- a/src/main/java/forge/Constant.java +++ b/src/main/java/forge/Constant.java @@ -63,8 +63,8 @@ public interface Constant { //} public interface Ability { - public static final String Triggered = "Triggered"; - public static final String Activated = "Activated"; + String Triggered = "Triggered"; + String Activated = "Activated"; } public interface Phase { @@ -90,81 +90,76 @@ public interface Constant { } public interface Zone { - public static final String Hand = "Hand"; - public static final String Library = "Library"; - public static final String Graveyard = "Graveyard"; - public static final String Battlefield = "Battlefield"; - public static final String Exile = "Exile"; - public static final String Command = "Command"; - public static final String Stack = "Stack"; + String Hand = "Hand"; + String Library = "Library"; + String Graveyard = "Graveyard"; + String Battlefield = "Battlefield"; + String Exile = "Exile"; + String Command = "Command"; + String Stack = "Stack"; } public interface Color { - public static final String Black = "black"; - public static final String Blue = "blue"; - public static final String Green = "green"; - public static final String Red = "red"; - public static final String White = "white"; + String Black = "black"; + String Blue = "blue"; + String Green = "green"; + String Red = "red"; + String White = "white"; - public static final String Colorless = "colorless"; + String Colorless = "colorless"; //color order "wubrg" - public static final String Colors[] = {White, Blue, Black, Red, Green, Colorless}; - public static final String onlyColors[] = {White, Blue, Black, Red, Green}; + String[] Colors = {White, Blue, Black, Red, Green, Colorless}; + String[] onlyColors = {White, Blue, Black, Red, Green}; - public static final String Snow = "snow"; - public static final String ManaColors[] = {White, Blue, Black, Red, Green, Colorless, Snow}; + String Snow = "snow"; + String[] ManaColors = {White, Blue, Black, Red, Green, Colorless, Snow}; - public static final boolean loaded[] = {false}; + boolean[] loaded = {false}; //public static final Constant_StringHashMap[] LandColor = new Constant_StringHashMap[1]; - public static final String BasicLands[] = {"Plains", "Island", "Swamp", "Mountain", "Forest"}; + String[] BasicLands = {"Plains", "Island", "Swamp", "Mountain", "Forest"}; } public interface Rarity { - public static final String Common = "Common"; - public static final String Uncommon = "Uncommon"; - public static final String Rare = "Rare"; - public static final String Mythic = "Mythic"; - public static final String Land = "Land"; + String Common = "Common"; + String Uncommon = "Uncommon"; + String Rare = "Rare"; + String Mythic = "Mythic"; + String Land = "Land"; } public interface Quest { - public static final boolean[] fantasyQuest = new boolean[1]; + boolean[] fantasyQuest = new boolean[1]; //public static final Quest_Assignment[] qa = new Quest_Assignment[1]; - public static final CardList[] humanList = new CardList[1]; - public static final CardList[] computerList = new CardList[1]; + CardList[] humanList = new CardList[1]; + CardList[] computerList = new CardList[1]; - public static final int[] humanLife = new int[1]; - public static final int[] computerLife = new int[1]; + int[] humanLife = new int[1]; + int[] computerLife = new int[1]; - public static final String[] oppIconName = new String[1]; + String[] oppIconName = new String[1]; } - + public interface CardTypes { - public static final boolean loaded[] = {false}; - public static final Constant_StringArrayList cardTypes[] = new Constant_StringArrayList[1]; - public static final Constant_StringArrayList superTypes[] = new Constant_StringArrayList[1]; - public static final Constant_StringArrayList basicTypes[] = new Constant_StringArrayList[1]; - public static final Constant_StringArrayList landTypes[] = new Constant_StringArrayList[1]; - public static final Constant_StringArrayList creatureTypes[] = new Constant_StringArrayList[1]; - public static final Constant_StringArrayList instantTypes[] = new Constant_StringArrayList[1]; - public static final Constant_StringArrayList sorceryTypes[] = new Constant_StringArrayList[1]; - public static final Constant_StringArrayList enchantmentTypes[] = new Constant_StringArrayList[1]; - public static final Constant_StringArrayList artifactTypes[] = new Constant_StringArrayList[1]; - public static final Constant_StringArrayList walkerTypes[] = new Constant_StringArrayList[1]; + boolean[] loaded = {false}; + Constant_StringArrayList[] cardTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] superTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] basicTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] landTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] creatureTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] instantTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] sorceryTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] enchantmentTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] artifactTypes = new Constant_StringArrayList[1]; + Constant_StringArrayList[] walkerTypes = new Constant_StringArrayList[1]; } - + public interface Keywords { - public static final boolean loaded[] = {false}; - public static final Constant_StringArrayList NonStackingList[] = new Constant_StringArrayList[1]; + boolean[] loaded = {false}; + Constant_StringArrayList[] NonStackingList = new Constant_StringArrayList[1]; } - - - - - -}//Constant +} //Constant diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Animate.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Animate.java index a25d3acab53..7b4a989a6cb 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Animate.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Animate.java @@ -138,7 +138,7 @@ public class AbilityFactory_Animate { toughness = AbilityFactory.calculateAmount(host, params.get("Toughness"), sa); } - boolean permanent = params.containsKey("Permanent") ? true : false; + boolean permanent = params.containsKey("Permanent"); final ArrayList types = new ArrayList(); if (params.containsKey("Types")) { types.addAll(Arrays.asList(params.get("Types").split(","))); @@ -197,17 +197,22 @@ public class AbilityFactory_Animate { sb.append("color of that player's choice"); } else { - for (int i = 0; i < colors.size(); i++) { - sb.append(colors.get(i)); - if (i < (colors.size() - 1)) { - sb.append(" and "); - } - } + for (int i = 0; i < colors.size(); i++) { + sb.append(colors.get(i)); + if (i < (colors.size() - 1)) { + sb.append(" and "); + } + } } sb.append(" "); - for (int i = types.size() - 1; i >= 0; i--) { - sb.append(types.get(i)); - sb.append(" "); + if (types.contains("ChosenType")) { + sb.append("type of player's choice "); + } + else { + for (int i = types.size() - 1; i >= 0; i--) { + sb.append(types.get(i)); + sb.append(" "); + } } if (keywords.size() > 0) { sb.append("with "); @@ -272,8 +277,8 @@ public class AbilityFactory_Animate { //don't use instant speed animate abilities outside humans Combat_Declare_Attackers_InstantAbility step if ((!AllZone.getPhase().is(Constant.Phase.Combat_Declare_Attackers_InstantAbility) - || AllZone.getCombat().getAttackers().length == 0) - && AllZone.getPhase().isPlayerTurn(AllZone.getHumanPlayer())) + || AllZone.getCombat().getAttackers().length == 0) + && AllZone.getPhase().isPlayerTurn(AllZone.getHumanPlayer())) { return false; } @@ -300,7 +305,7 @@ public class AbilityFactory_Animate { toughness = AbilityFactory.calculateAmount(source, params.get("Toughness"), sa); } if (power + toughness > c.getCurrentPower() + c.getCurrentToughness()) { - bFlag = true; + bFlag = true; } } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Choose.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Choose.java index c8b8709f4d4..078c1634ef1 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Choose.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Choose.java @@ -306,6 +306,26 @@ public class AbilityFactory_Choose { } } } + else if (type.equals("Basic Land")) { + boolean valid = false; + while (!valid) { + if (sa.getActivatingPlayer().isHuman()) { + Object o = GuiUtils.getChoice("Choose a basic land type", + CardUtil.getBasicTypes().toArray()); + if (null == o) { + return; + } + String choice = (String) o; + if (CardUtil.isABasicLandType(choice) && !invalidTypes.contains(choice)) { + valid = true; + card.setChosenType(choice); + } + } else { + //TODO + //computer will need to choose a type + } + } + } //end if-else if } } }