From 8021e917b9908dd7a77789e545ad41dc2a9c66cc Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 08:51:47 +0000 Subject: [PATCH] add new Keyword: abUntapTgt --- src/forge/CardFactory.java | 96 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index 8397cc12e13..ae61d6b2ecd 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -5911,6 +5911,102 @@ public class CardFactory implements NewConstants { card.addSpellAbility(AbTapAll); card.setSVar("PlayMain1", "TRUE"); }//End abTapAll + + // Generic untap target ___ activated ability + //abUntapTgt {Ability_Cost}:{Valid Targets}:{Description} + if (hasKeyword(card, "abUntapTgt") != -1) + { + int n = hasKeyword(card, "abUntapTgt"); + + String parse = card.getKeyword().get(n).toString(); + card.removeIntrinsicKeyword(parse); + + String k[] = parse.split(":"); + + String tmpCost = k[0].substring(10); + final Ability_Cost abCost = new Ability_Cost(tmpCost, card.getName(), true); + + final Target untapTargets = new Target("TgtV"); + final String Tgts[] = k[1].split(","); + untapTargets.setValidTgts(Tgts); + final String abDesc[] = {"none"}; + abDesc[0] = k[2]; + + String tmpDesc = abDesc[0].substring(13); + int i = tmpDesc.indexOf("."); + tmpDesc = tmpDesc.substring(0, i); + untapTargets.setVTSelection("Select target " + tmpDesc + " to untap."); + + abDesc[0] = abCost.toString() + abDesc[0]; + + final SpellAbility AbUntapTgt = new Ability_Activated(card, abCost, untapTargets) { + private static final long serialVersionUID = 6286367744794697322L; + + @Override + public boolean canPlayAI() { + if (!ComputerUtil.canPayCost(this)) + return false; + + CardList hCards = getTargets(); + + Random r = new Random(); + boolean rr = false; + if (r.nextFloat() <= Math.pow(.6667, card.getAbilityUsed())) + rr = true; + + if(hCards.size() > 0) { + Card c = null; + CardList dChoices = new CardList(); + + for(int i = 0; i < Tgts.length; i++) { + if (Tgts[i].startsWith("Creature")) { + c = CardFactoryUtil.AI_getBestCreature(hCards); + if (c != null) + dChoices.add(c); + } + + CardListUtil.sortByTextLen(hCards); + dChoices.add(hCards.get(0)); + + CardListUtil.sortCMC(hCards); + dChoices.add(hCards.get(0)); + } + + c = dChoices.get(CardUtil.getRandomIndex(dChoices)); + setTargetCard(c); + + return rr; + } + + return false; + } + + CardList getTargets() { + CardList tmpList = AllZoneUtil.getPlayerCardsInPlay(Constant.Player.Human); + tmpList = tmpList.getValidCards(Tgts); + tmpList = tmpList.getTargetableCards(card); + return tmpList; + } + + @Override + public boolean canPlay() { + Cost_Payment pay = new Cost_Payment(abCost, this); + return (pay.canPayAdditionalCosts() && CardFactoryUtil.canUseAbility(card) && super.canPlay()); + } + + @Override + public void resolve() { + Card tgtC = getTargetCard(); + if(AllZone.GameAction.isCardInPlay(tgtC) + && CardFactoryUtil.canTarget(card, tgtC)) { + tgtC.untap(); + } + } + }; //AbTapTgt + + AbUntapTgt.setDescription(abDesc[0]); + card.addSpellAbility(AbUntapTgt); + }//End abUntapTgt //****************************************************************** //************** Link to different CardFactories *******************