From 70d888282a7d7a94711419a3d7b7fc72671f5e18 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 07:20:11 +0000 Subject: [PATCH] - Changed SubCounter to be consistent with other abCosts - Changed Discard to be consistent with other abCosts - Discard second parameter is now: Hand, Random, Any, or a - Added Skyshroud Vampire --- .gitattributes | 1 + res/cardsfolder/deathbringer_thoctar.txt | 2 +- res/cardsfolder/kris_mage.txt | 2 +- res/cardsfolder/skyshroud_vampire.txt | 10 +++++++++ res/cardsfolder/stormbind.txt | 2 +- res/cardsfolder/triskelion.txt | 2 +- src/forge/Ability_Cost.java | 18 +++++++-------- src/forge/CardFactory.java | 2 +- src/forge/ComputerUtil.java | 5 ++--- src/forge/Cost_Payment.java | 28 ++++++++++++------------ 10 files changed, 41 insertions(+), 31 deletions(-) create mode 100644 res/cardsfolder/skyshroud_vampire.txt diff --git a/.gitattributes b/.gitattributes index 21241438313..6925033e35d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3188,6 +3188,7 @@ res/cardsfolder/skyshroud_forest.txt -text svneol=native#text/plain res/cardsfolder/skyshroud_sentinel.txt -text svneol=native#text/plain res/cardsfolder/skyshroud_troll.txt -text svneol=native#text/plain res/cardsfolder/skyshroud_troopers.txt -text svneol=native#text/plain +res/cardsfolder/skyshroud_vampire.txt -text svneol=native#text/plain res/cardsfolder/skywatcher_adept.txt -text svneol=native#text/plain res/cardsfolder/slagwurm_armor.txt -text svneol=native#text/plain res/cardsfolder/slate_of_ancestry.txt -text svneol=native#text/plain diff --git a/res/cardsfolder/deathbringer_thoctar.txt b/res/cardsfolder/deathbringer_thoctar.txt index e252d2b43ee..177c0cf3784 100644 --- a/res/cardsfolder/deathbringer_thoctar.txt +++ b/res/cardsfolder/deathbringer_thoctar.txt @@ -4,7 +4,7 @@ Types:Creature Zombie Beast Text:no text PT:3/3 K:WheneverKeyword:PermanentIntoGraveyard:Type/Creature:Play:+1+1 Counters/1:Self:ASAP:Yes_No:Initiator - Other than Self:Whenever another creature is put into a graveyard from the battlefield, you may put a +1/+1 counter on Deathbringer Thoctar. -K:abDamageTgtCP 0 SubCounter:1 +K:abDamageTgtCP SubCounter<1/P1P1>:1 K:SVar:Rarity:Rare K:SVar:Picture:http://www.wizards.com/global/images/magic/general/deathbringer_thoctar.jpg End diff --git a/res/cardsfolder/kris_mage.txt b/res/cardsfolder/kris_mage.txt index 56a0c927a43..ea3529c6315 100644 --- a/res/cardsfolder/kris_mage.txt +++ b/res/cardsfolder/kris_mage.txt @@ -3,7 +3,7 @@ ManaCost:R Types:Creature Human Spellshaper Text:no text PT:1/1 -K:abDamageTgtCP R T Discard<1,Any>:1 +K:abDamageTgtCP R T Discard<1/Any>:1 K:SVar:Rarity:Common K:SVar:Picture:http://www.wizards.com/global/images/magic/general/kris_mage.jpg K:SVar:RemAIDeck:True diff --git a/res/cardsfolder/skyshroud_vampire.txt b/res/cardsfolder/skyshroud_vampire.txt new file mode 100644 index 00000000000..17b776f113f --- /dev/null +++ b/res/cardsfolder/skyshroud_vampire.txt @@ -0,0 +1,10 @@ +Name:Skyshroud Vampire +ManaCost:3 B B +Types:Creature Vampire +Text:no text +PT:3/3 +K:Flying +K:abPump Discard<1/Creature>:+2/+2 +K:SVar:Rarity:Uncommon +K:SVar:Picture:http://www.wizards.com/global/images/magic/general/skyshroud_vampire.jpg +End diff --git a/res/cardsfolder/stormbind.txt b/res/cardsfolder/stormbind.txt index 3022df7a2a1..6923f88ef73 100644 --- a/res/cardsfolder/stormbind.txt +++ b/res/cardsfolder/stormbind.txt @@ -2,7 +2,7 @@ Name:Stormbind ManaCost:1 R G Types:Enchantment Text:no text -K:abDamageTgtCP 2 Discard<1,Random>:2 +K:abDamageTgtCP 2 Discard<1/Random>:2 K:SVar:Rarity:Rare K:SVar:Picture:http://www.wizards.com/global/images/magic/general/stormbind.jpg K:SVar:RemAIDeck:True diff --git a/res/cardsfolder/triskelion.txt b/res/cardsfolder/triskelion.txt index 6cc431843b7..67caf74dde9 100644 --- a/res/cardsfolder/triskelion.txt +++ b/res/cardsfolder/triskelion.txt @@ -4,7 +4,7 @@ Types:Artifact Creature Construct Text:no text PT:1/1 K:etbCounter:P1P1:3 -K:abDamageTgtCP 0 SubCounter:1 +K:abDamageTgtCP SubCounter<1/P1P1>:1 K:SVar:RemAIDeck:True K:SVar:Rarity:Rare K:SVar:Picture:http://www.wizards.com/global/images/magic/general/triskelion.jpg diff --git a/src/forge/Ability_Cost.java b/src/forge/Ability_Cost.java index e686be2d120..db3b7606966 100644 --- a/src/forge/Ability_Cost.java +++ b/src/forge/Ability_Cost.java @@ -53,7 +53,7 @@ public class Ability_Cost { name = cardName; if(parse.contains("SubCounter<")) { - // SubCounter + // SubCounter subtractCounterCost = true; int counterPos = parse.indexOf("SubCounter<"); int endPos = parse.indexOf(">", counterPos); @@ -63,9 +63,9 @@ public class Ability_Cost { str = str.replace("SubCounter<", ""); str = str.replace(">", ""); String[] strSplit = str.split("/"); - // convert strSplit[0] to Counter.something - counterType = Counters.valueOf(strSplit[0]); - counterAmount = Integer.parseInt(strSplit[1]); + + counterAmount = Integer.parseInt(strSplit[0]); + counterType = Counters.valueOf(strSplit[1]); } if(parse.contains("PayLife<")) { @@ -83,7 +83,7 @@ public class Ability_Cost { } if (parse.contains("Discard<")){ - // Discard + // Discard discardCost = true; int startPos = parse.indexOf("Discard<"); int endPos = parse.indexOf(">", startPos); @@ -93,7 +93,7 @@ public class Ability_Cost { str = str.replace("Discard<", ""); str = str.replace(">", ""); - String[] splitStr = str.split(","); + String[] splitStr = str.split("/", 2); discardAmount = Integer.parseInt(splitStr[0]); discardType = splitStr[1]; @@ -258,9 +258,9 @@ public class Ability_Cost { } else{ cost.append(discardAmount); - int type = discardType.indexOf("/"); - if (type != -1) - cost.append(discardType.substring(type + 1)).append(" "); + if (!discardType.equals("Any") && !discardType.equals("Random")){ + cost.append(" ").append(discardType); + } cost.append(" card"); if (discardAmount > 1) cost.append("s"); diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index 2724cfe447f..4fe8f7af071 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -4753,7 +4753,7 @@ public class CardFactory implements NewConstants { String parse = card.getKeyword().get(spike).toString(); card.removeIntrinsicKeyword(parse); - final Ability_Cost cost = new Ability_Cost("2 SubCounter", card.getName(), true); + final Ability_Cost cost = new Ability_Cost("2 SubCounter<1/P1P1>", card.getName(), true); final Target tgt = new Target("TgtC"); final int m = Integer.parseInt(parse.substring(6)); diff --git a/src/forge/ComputerUtil.java b/src/forge/ComputerUtil.java index f0be44edb50..930f6a3ad39 100644 --- a/src/forge/ComputerUtil.java +++ b/src/forge/ComputerUtil.java @@ -253,9 +253,8 @@ public class ComputerUtil // this will always work } else{ - int type = discType.indexOf("/"); - if (type != -1){ - String validType[] = discType.substring(type+1).split(","); + if (!discType.equals("Any") && !discType.equals("Random")){ + String validType[] = discType.split(","); handList = handList.getValidCards(validType); } if (discAmount > handList.size()){ diff --git a/src/forge/Cost_Payment.java b/src/forge/Cost_Payment.java index c2f5882d6e9..9758c950aa6 100644 --- a/src/forge/Cost_Payment.java +++ b/src/forge/Cost_Payment.java @@ -78,9 +78,8 @@ public class Cost_Payment { // this will always work } else{ - int type = discType.indexOf("/"); - if (type != -1){ - String validType[] = discType.substring(type+1).split(","); + if (!discType.equals("Any") && !discType.equals("Random")){ + String validType[] = discType.split(","); handList = handList.getValidCards(validType); } if (discAmount > handList.size()){ @@ -186,12 +185,11 @@ public class Cost_Payment { payDiscard = true; } else{ - int type = discType.indexOf("/"); - if (type != -1){ - String validType[] = discType.substring(type+1).split(","); + if (!discType.equals("Any")){ + String validType[] = discType.split(","); handList = handList.getValidCards(validType); } - changeInput.stopSetNext(input_discardCost(discAmount, handList, ability, this)); + changeInput.stopSetNext(input_discardCost(discAmount, discType, handList, ability, this)); return false; } } @@ -298,13 +296,12 @@ public class Cost_Payment { AllZone.GameAction.discardRandom(card.getController(), discAmount, ability); } else{ - int type = discType.indexOf("/"); - if (type != -1){ - String validType[] = discType.substring(type+1).split(","); + if (!discType.equals("Any")){ + String validType[] = discType.split(","); AllZone.GameAction.AI_discardNumType(discAmount, validType, ability); } else{ - AllZone.GameAction.AI_discardNumUnless(discAmount, ability); + AllZone.GameAction.AI_discardNum(discAmount, ability); } } } @@ -316,7 +313,7 @@ public class Cost_Payment { AllZone.Stack.add(ability); } - public static Input input_discardCost(final int nCards, final CardList handList, SpellAbility sa, final Cost_Payment payment) { + public static Input input_discardCost(final int nCards, final String discType, final CardList handList, SpellAbility sa, final Cost_Payment payment) { final SpellAbility sp = sa; Input target = new Input() { private static final long serialVersionUID = -329993322080934435L; @@ -326,8 +323,11 @@ public class Cost_Payment { @Override public void showMessage() { if (AllZone.Human_Hand.getCards().length == 0) stop(); - - AllZone.Display.showMessage("Select a card to discard"); + StringBuilder type = new StringBuilder(""); + if (!discType.equals("Any")){ + type.append(" ").append(discType); + } + AllZone.Display.showMessage("Select a"+ type.toString() + " card to discard"); ButtonUtil.enableOnlyCancel(); }