From 790f47b2ca0988d32691d8d0cfa1831d3d6cc725 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 18:14:54 +0000 Subject: [PATCH] - Convert Thrummingbird to Trigger - Removed unused Proliferate functions - Switching Proliferate to use the Cancel button so you don't accidentally space through your Proliferate --- res/cardsfolder/thrummingbird.txt | 3 +- src/forge/AbilityFactory_Counters.java | 4 +- src/forge/GameAction.java | 174 ------------------------- src/forge/GameActionUtil.java | 3 - src/forge/MagicStack.java | 3 - 5 files changed, 4 insertions(+), 183 deletions(-) diff --git a/res/cardsfolder/thrummingbird.txt b/res/cardsfolder/thrummingbird.txt index 29b7aa4bb27..93a6606d06c 100644 --- a/res/cardsfolder/thrummingbird.txt +++ b/res/cardsfolder/thrummingbird.txt @@ -4,7 +4,8 @@ Types:Creature Bird Horror Text:no text PT:1/1 K:Flying -K:Whenever CARDNAME deals combat damage to a player, proliferate. +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigProliferate | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, proliferate. +SVar:TrigProliferate:AB$Proliferate | Cost$ 0 SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/thrummingbird.jpg SetInfo:SOM|Uncommon|http://magiccards.info/scans/en/som/47.jpg diff --git a/src/forge/AbilityFactory_Counters.java b/src/forge/AbilityFactory_Counters.java index abe2f161b71..c82b6508742 100644 --- a/src/forge/AbilityFactory_Counters.java +++ b/src/forge/AbilityFactory_Counters.java @@ -907,12 +907,12 @@ public class AbilityFactory_Counters { @Override public void showMessage() { + ButtonUtil.enableOnlyCancel(); AllZone.Display.showMessage("Proliferate: Choose permanents and/or players"); - ButtonUtil.enableOnlyOK(); } @Override - public void selectButtonOK() { + public void selectButtonCancel() { stop(); } diff --git a/src/forge/GameAction.java b/src/forge/GameAction.java index bed153db3cc..78588cfeb42 100644 --- a/src/forge/GameAction.java +++ b/src/forge/GameAction.java @@ -3494,180 +3494,6 @@ public class GameAction { } } - public void proliferate(final Card c, String cost) - { - Ability p = getProliferateAbility(c, cost); - AllZone.Stack.add(p); - } - - public Ability getProliferateAbility(final Card c, final String cost) - { - final Ability ability = new Ability(c, cost) - { - public void resolve() - { - CardList hperms = AllZoneUtil.getPlayerCardsInPlay(AllZone.HumanPlayer); - hperms = hperms.filter(new CardListFilter(){ - public boolean addCard(Card crd) - { - return !crd.getName().equals("Mana Pool") /*&& crd.hasCounters()*/; - } - }); - - CardList cperms = AllZoneUtil.getPlayerCardsInPlay(AllZone.ComputerPlayer); - cperms = cperms.filter(new CardListFilter(){ - public boolean addCard(Card crd) - { - return !crd.getName().equals("Mana Pool") /*&& crd.hasCounters()*/; - } - }); - - if (c.getController().equals(AllZone.HumanPlayer)) - { - cperms.addAll(hperms.toArray()); - final CardList unchosen = cperms; - AllZone.InputControl.setInput(new Input() { - private static final long serialVersionUID = -1779224307654698954L; - - @Override - public void showMessage() { - AllZone.Display.showMessage("Choose permanents and/or players"); - ButtonUtil.enableOnlyOK(); - } - - @Override - public void selectButtonOK() { - stop(); - } - - @Override - public void selectCard(Card card, PlayerZone zone) - { - if(!unchosen.contains(card)) return; - unchosen.remove(card); - ArrayList choices = new ArrayList(); - for(Counters c_1:Counters.values()) - if(card.getCounters(c_1) != 0) choices.add(c_1.getName()); - if (choices.size() > 0) - card.addCounter(Counters.getType((choices.size() == 1 ? choices.get(0) : GuiUtils.getChoice("Select counter type", choices.toArray()).toString())), 1); - } - boolean selComputer = false; - boolean selHuman = false; - @Override - public void selectPlayer(Player player){ - if (player.equals(AllZone.HumanPlayer) && selHuman == false) - { - selHuman = true; - if (AllZone.HumanPlayer.getPoisonCounters() > 0) - AllZone.HumanPlayer.addPoisonCounters(1); - } - if (player.equals(AllZone.ComputerPlayer) && selComputer == false) - { - selComputer = true; - if (AllZone.ComputerPlayer.getPoisonCounters() > 0) - AllZone.ComputerPlayer.addPoisonCounters(1); - } - } - }); - } - else //comp - { - cperms = cperms.filter(new CardListFilter(){ - public boolean addCard(Card crd) - { - int pos = 0; - int neg = 0; - for(Counters c_1:Counters.values()) { - if(crd.getCounters(c_1) != 0) - { - if (CardFactoryUtil.isNegativeCounter(c_1)) - neg++; - else - pos++; - } - } - return pos > neg; - } - }); - - hperms = hperms.filter(new CardListFilter(){ - public boolean addCard(Card crd) - { - int pos = 0; - int neg = 0; - for(Counters c_1:Counters.values()) { - if(crd.getCounters(c_1) != 0) - { - if (CardFactoryUtil.isNegativeCounter(c_1)) - neg++; - else - pos++; - } - } - return pos < neg; - } - }); - - StringBuilder sb = new StringBuilder(); - sb.append("Proliferate:
Computer selects "); - if (cperms.size() == 0 && hperms.size() == 0 && AllZone.HumanPlayer.getPoisonCounters() == 0) - sb.append("nothing."); - else - { - if (cperms.size()>0) { - sb.append("
From Computer's permanents:
"); - for (Card c:cperms) - { - sb.append(c); - sb.append(" "); - } - sb.append("
"); - } - if (hperms.size()>0) { - sb.append("
From Human's permanents:
"); - for (Card c:cperms) - { - sb.append(c); - sb.append(" "); - } - sb.append("
"); - } - if (AllZone.HumanPlayer.getPoisonCounters() > 0) - sb.append("Human Player."); - }//else - sb.append(""); - - - //add a counter for each counter type, if it would benefit the computer - for (Card c:cperms) - { - for(Counters c_1:Counters.values()) - if(c.getCounters(c_1) != 0) c.addCounter(c_1, 1); - } - - //add a counter for each counter type, if it would screw over the player - for (Card c:hperms) - { - for(Counters c_1:Counters.values()) - if(c.getCounters(c_1) != 0) c.addCounter(c_1, 1); - } - - //give human a poison counter, if he has one - if (AllZone.HumanPlayer.getPoisonCounters() > 0) - AllZone.HumanPlayer.addPoisonCounters(1); - - } //comp - } - }; - - StringBuilder sb = new StringBuilder(); - sb.append(c).append(" - Proliferate (You choose any number of permanents and/or players with "); - sb.append("counters on them, then give each another counter of a kind already there.)"); - ability.setStackDescription(sb.toString()); - - return ability; - } - public static void main(String[] args) { GameAction gameAction = new GameAction(); GenerateConstructedDeck gen = new GenerateConstructedDeck(); diff --git a/src/forge/GameActionUtil.java b/src/forge/GameActionUtil.java index f742c0b165a..7ad66220c46 100644 --- a/src/forge/GameActionUtil.java +++ b/src/forge/GameActionUtil.java @@ -4675,9 +4675,6 @@ public class GameActionUtil { } } - if (c.getKeyword().contains("Whenever CARDNAME deals combat damage to a player, proliferate.")) - AllZone.GameAction.proliferate(c, "0"); - if(CardFactoryUtil.hasNumberEquipments(c, "Mask of Riddles") > 0 && c.getNetAttack() > 0) { for(int k = 0; k < CardFactoryUtil.hasNumberEquipments(c, "Mask of Riddles"); k++) { playerCombatDamage_May_draw(c); diff --git a/src/forge/MagicStack.java b/src/forge/MagicStack.java index fbaf81d6905..ac8456e0c44 100644 --- a/src/forge/MagicStack.java +++ b/src/forge/MagicStack.java @@ -671,9 +671,6 @@ public class MagicStack extends MyObservable { if (sa.getSourceCard().getKeyword().contains("Draw a card at the beginning of the next turn's upkeep.")) sa.getSourceCard().getController().addSlowtripList(sa.getSourceCard()); - if (sa.getSourceCard().getKeyword().contains("Proliferate")) - AllZone.GameAction.getProliferateAbility(sa.getSourceCard(), "0").resolve(); - for (int i = 0; i < sa.getSourceCard().getKeyword().size(); i++) { String k = sa.getSourceCard().getKeyword().get(i); if (k.startsWith("Scry")) {