From fd52e98c18a01fc2cdd7301c7d48d9670b05b11d Mon Sep 17 00:00:00 2001 From: Hellfish Date: Sun, 12 May 2013 13:08:41 +0000 Subject: [PATCH] *Converted Planar deck and Scheme deck to zones. --- .gitattributes | 1 + res/cardsfolder/o/orzhova.txt | 12 ++++++ .../forge/card/trigger/TriggerHandler.java | 12 ++++-- src/main/java/forge/game/GameNew.java | 16 +++++++- src/main/java/forge/game/GameState.java | 41 ------------------- src/main/java/forge/game/player/Player.java | 20 ++++----- src/main/java/forge/game/zone/Zone.java | 4 ++ src/main/java/forge/game/zone/ZoneType.java | 4 +- 8 files changed, 49 insertions(+), 61 deletions(-) create mode 100644 res/cardsfolder/o/orzhova.txt diff --git a/.gitattributes b/.gitattributes index ceba2dc8951..5d8b40526f0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7669,6 +7669,7 @@ res/cardsfolder/o/orzhov_guildmage.txt svneol=native#text/plain res/cardsfolder/o/orzhov_keyrune.txt -text res/cardsfolder/o/orzhov_pontiff.txt -text res/cardsfolder/o/orzhov_signet.txt svneol=native#text/plain +res/cardsfolder/o/orzhova.txt -text res/cardsfolder/o/orzhova_the_church_of_deals.txt svneol=native#text/plain res/cardsfolder/o/osai_vultures.txt -text svneol=unset#text/plain res/cardsfolder/o/ostiary_thrull.txt svneol=native#text/plain diff --git a/res/cardsfolder/o/orzhova.txt b/res/cardsfolder/o/orzhova.txt new file mode 100644 index 00000000000..8b091df34e4 --- /dev/null +++ b/res/cardsfolder/o/orzhova.txt @@ -0,0 +1,12 @@ +Name:Orzhova +ManaCost:no cost +Types:Plane Ravnica +Text:no text +T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ OrzhovaDeal | TriggerDescription$ When you planeswalk away from CARDNAME, each player returns all creature cards from his or her graveyard to the battlefield. +SVar:OrzhovaDeal:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, for each opponent, exile up to one target creature card from that player's graveyard. +SVar:RolledChaos:AB$ ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature each opponent controls. | TargetMin$ 0 | TargetMax$ OneEach | References$ OneEach | TargetsWithDifferentControllers$ True +SVar:OneEach:PlayerCountOpponents$Amount +SVar:Picture:http://www.wizards.com/global/images/magic/general/orzhova.jpg +SetInfo:PC2 Common +Oracle:When you planeswalk away from Orzhova, each player returns all creature cards from his or her graveyard to the battlefield.\nWhenever you roll {C}, for each opponent, exile up to one target creature card from that player's graveyard. \ No newline at end of file diff --git a/src/main/java/forge/card/trigger/TriggerHandler.java b/src/main/java/forge/card/trigger/TriggerHandler.java index c28b6723abe..7bf274344f0 100644 --- a/src/main/java/forge/card/trigger/TriggerHandler.java +++ b/src/main/java/forge/card/trigger/TriggerHandler.java @@ -211,8 +211,12 @@ public class TriggerHandler { // This is done to allow the list of triggers to be modified while // triggers are running. final ArrayList delayedTriggersWorkingCopy = new ArrayList(this.delayedTriggers); - List allCards = game.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES); - allCards.addAll(game.getCardsIn(ZoneType.Stack)); + List allCards = new ArrayList(); + for(Player p : game.getPlayers()) + { + allCards.addAll(p.getAllCards()); + } + //allCards.addAll(game.getCardsIn(ZoneType.Stack)); boolean checkStatics = false; // Static triggers @@ -233,7 +237,7 @@ public class TriggerHandler { } // AP - allCards = playerAP.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES); + allCards = playerAP.getAllCards(); allCards.addAll(CardLists.filterControlledBy(game.getCardsIn(ZoneType.Stack), playerAP)); // add cards that move to hidden zones if (runParams.containsKey("Destination") && runParams.containsKey("Card")) { @@ -266,7 +270,7 @@ public class TriggerHandler { continue; } - allCards = nap.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES); + allCards = nap.getAllCards(); allCards.addAll(CardLists.filterControlledBy(game.getCardsIn(ZoneType.Stack), nap)); // add cards that move to hidden zones if (runParams.containsKey("Destination") && runParams.containsKey("Card")) { diff --git a/src/main/java/forge/game/GameNew.java b/src/main/java/forge/game/GameNew.java index 577f65b5bd7..f9d91ce8774 100644 --- a/src/main/java/forge/game/GameNew.java +++ b/src/main/java/forge/game/GameNew.java @@ -73,12 +73,24 @@ public class GameNew { // Schemes List sd = new ArrayList(); for(IPaperCard cp : psc.getSchemes(player)) sd.add(cp.toForgeCard(player)); - if ( !sd.isEmpty()) player.setSchemeDeck(sd); + if ( !sd.isEmpty()) { + for(Card c : sd) { + player.getZone(ZoneType.SchemeDeck).add(c); + } + player.getZone(ZoneType.SchemeDeck).shuffle(); + } + // Planes List l = new ArrayList(); for(IPaperCard cp : psc.getPlanes(player)) l.add(cp.toForgeCard(player)); - if ( !l.isEmpty() ) player.setPlanarDeck(l); + if ( !l.isEmpty() ) { + for(Card c : l) { + player.getZone(ZoneType.PlanarDeck).add(c); + } + player.getZone(ZoneType.PlanarDeck).shuffle(); + } + } private static Set getRemovedAnteCards(Deck toUse) { diff --git a/src/main/java/forge/game/GameState.java b/src/main/java/forge/game/GameState.java index 2fdf3406165..fa502f5d14a 100644 --- a/src/main/java/forge/game/GameState.java +++ b/src/main/java/forge/game/GameState.java @@ -571,47 +571,6 @@ public class GameState { public void setActivePlane(Card activePlane0) { this.activePlane = activePlane0; } - - /** - * - * Currently unused. Base for the Single Planar deck option. (Rule 901.15) - */ - public void setCommunalPlaneDeck(List deck) { - communalPlanarDeck.clear(); - communalPlanarDeck.addAll(deck); - CardLists.shuffle(communalPlanarDeck); - - for(Player p : roIngamePlayers) - { - p.setPlanarDeck(communalPlanarDeck); - } - } - - /** - * - * Currently unused. Base for the Single Planar deck option. (Rule 901.15) - */ - public void initCommunalPlane() - { - getTriggerHandler().suppressMode(TriggerType.PlaneswalkedTo); - Card firstPlane = null; - while(true) - { - firstPlane = communalPlanarDeck.get(0); - communalPlanarDeck.remove(0); - if(firstPlane.getType().contains("Phenomenon")) - { - communalPlanarDeck.add(firstPlane); - } - else - { - this.getPhaseHandler().getPlayerTurn().getZone(ZoneType.Command).add(firstPlane); - break; - } - } - - getTriggerHandler().clearSuppression(TriggerType.PlaneswalkedTo); - } public void archenemy904_10() { //904.10. If a non-ongoing scheme card is face up in the diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index 2acf030254a..03c9a0d24b8 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -172,7 +172,7 @@ public class Player extends GameEntity implements Comparable { /** The Constant ALL_ZONES. */ public static final List ALL_ZONES = Collections.unmodifiableList(Arrays.asList(ZoneType.Battlefield, ZoneType.Library, ZoneType.Graveyard, ZoneType.Hand, ZoneType.Exile, ZoneType.Command, ZoneType.Ante, - ZoneType.Sideboard)); + ZoneType.Sideboard, ZoneType.PlanarDeck,ZoneType.SchemeDeck)); protected final GameState game; @@ -2968,9 +2968,9 @@ public class Player extends GameEntity implements Comparable { public void planeswalk() { - currentPlane = planarDeck.get(0); + currentPlane = getZone(ZoneType.PlanarDeck).get(0); - planarDeck.remove(0); + getZone(ZoneType.PlanarDeck).remove(currentPlane); getZone(ZoneType.Command).add(currentPlane); game.setActivePlane(currentPlane); @@ -2996,17 +2996,11 @@ public class Player extends GameEntity implements Comparable { Zone com = game.getZoneOf(currentPlane); com.remove(currentPlane); currentPlane.clearControllers(); - planarDeck.add(currentPlane); + getZone(ZoneType.PlanarDeck).add(currentPlane); currentPlane = null; } } - public void setPlanarDeck(List pd) - { - planarDeck = pd; - Collections.shuffle(planarDeck); - } - /** * * Sets up the first plane of a round. @@ -3016,11 +3010,11 @@ public class Player extends GameEntity implements Comparable { Card firstPlane = null; while(true) { - firstPlane = planarDeck.get(0); - planarDeck.remove(0); + firstPlane = getZone(ZoneType.PlanarDeck).get(0); + getZone(ZoneType.PlanarDeck).remove(firstPlane); if(firstPlane.getType().contains("Phenomenon")) { - planarDeck.add(firstPlane); + getZone(ZoneType.PlanarDeck).add(firstPlane); } else { diff --git a/src/main/java/forge/game/zone/Zone.java b/src/main/java/forge/game/zone/Zone.java index 21aaf49c67b..cdfccb39635 100644 --- a/src/main/java/forge/game/zone/Zone.java +++ b/src/main/java/forge/game/zone/Zone.java @@ -372,4 +372,8 @@ public class Zone extends MyObservable implements IZone, Observer, java.io.Seria public void updateLabelObservers() { } + public void shuffle() + { + Collections.shuffle(cardList); + } } diff --git a/src/main/java/forge/game/zone/ZoneType.java b/src/main/java/forge/game/zone/ZoneType.java index fdce2f38509..76ae0f7c905 100644 --- a/src/main/java/forge/game/zone/ZoneType.java +++ b/src/main/java/forge/game/zone/ZoneType.java @@ -16,7 +16,9 @@ public enum ZoneType { Command(false), Stack(false), Sideboard(true), - Ante(false); + Ante(false), + SchemeDeck(true), + PlanarDeck(true); public static final List STATIC_ABILITIES_SOURCE_ZONES = Arrays.asList(new ZoneType[]{Battlefield, Graveyard, Exile, Command/*, Hand*/});