mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
ci changes from trunk
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -13670,7 +13670,6 @@ src/main/java/forge/card/cardfactory/CardFactory.java svneol=native#text/plain
|
|||||||
src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java -text
|
src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java -text
|
||||||
src/main/java/forge/card/cardfactory/CardFactoryCreatures.java svneol=native#text/plain
|
src/main/java/forge/card/cardfactory/CardFactoryCreatures.java svneol=native#text/plain
|
||||||
src/main/java/forge/card/cardfactory/CardFactoryLands.java svneol=native#text/plain
|
src/main/java/forge/card/cardfactory/CardFactoryLands.java svneol=native#text/plain
|
||||||
src/main/java/forge/card/cardfactory/CardFactoryPlaneswalkers.java svneol=native#text/plain
|
|
||||||
src/main/java/forge/card/cardfactory/CardFactorySorceries.java svneol=native#text/plain
|
src/main/java/forge/card/cardfactory/CardFactorySorceries.java svneol=native#text/plain
|
||||||
src/main/java/forge/card/cardfactory/CardFactoryUtil.java svneol=native#text/plain
|
src/main/java/forge/card/cardfactory/CardFactoryUtil.java svneol=native#text/plain
|
||||||
src/main/java/forge/card/cardfactory/CardStorageReader.java svneol=native#text/plain
|
src/main/java/forge/card/cardfactory/CardStorageReader.java svneol=native#text/plain
|
||||||
|
|||||||
12
CHANGES.txt
12
CHANGES.txt
@@ -48,6 +48,10 @@ The display of clones and copied cards is now a matter of user preference. A use
|
|||||||
Flippable cards -- cards that have an alternate card printed upside-down at the bottom -- will now flip their appearance on the battlefield when in a flipped state. They are now also flippable in the card viewer by clicking on the card image, just like double-sided "transform" cards have been. When flipped this way, the details of the flipped side can be examined in the Card Details oracle text.
|
Flippable cards -- cards that have an alternate card printed upside-down at the bottom -- will now flip their appearance on the battlefield when in a flipped state. They are now also flippable in the card viewer by clicking on the card image, just like double-sided "transform" cards have been. When flipped this way, the details of the flipped side can be examined in the Card Details oracle text.
|
||||||
|
|
||||||
|
|
||||||
|
- High Quality Booster Pictures -
|
||||||
|
Forge will now download high quality booster pictures. If you are interested in these high quality booster pictures, then you should delete the pictures that are found in your <cacheDir>/pics/boosters/ directory. Then download the new pictures by using the Home View -> Game Settings -> Content Downloaders -> Download Quest Images button.
|
||||||
|
|
||||||
|
|
||||||
---------
|
---------
|
||||||
New Cards
|
New Cards
|
||||||
---------
|
---------
|
||||||
@@ -70,9 +74,15 @@ Thieves' Auction
|
|||||||
Infinite Reflection
|
Infinite Reflection
|
||||||
Laccolith Rig
|
Laccolith Rig
|
||||||
Paroxysm
|
Paroxysm
|
||||||
|
Essence Leak
|
||||||
|
Mistform Warchief
|
||||||
|
Whipkeeper
|
||||||
|
Sanctum Guardian
|
||||||
|
|
||||||
|
|
||||||
New Planes:
|
----------
|
||||||
|
New Planes
|
||||||
|
----------
|
||||||
|
|
||||||
Bant
|
Bant
|
||||||
Turri Island
|
Turri Island
|
||||||
|
|||||||
@@ -5,10 +5,6 @@ T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command |
|
|||||||
SVar:AcademicDraw:AB$ Draw | Cost$ 0 | Defined$ You | NumCards$ 7
|
SVar:AcademicDraw:AB$ Draw | Cost$ 0 | Defined$ You | NumCards$ 7
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, discard your hand.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, discard your hand.
|
||||||
SVar:RolledChaos:AB$ Discard | Cost$ 0 | Mode$ Hand | Defined$ You
|
SVar:RolledChaos:AB$ Discard | Cost$ 0 | Mode$ Hand | Defined$ You
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/academy_at_tolaria_west.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/academy_at_tolaria_west.jpg
|
||||||
Oracle:At the beginning of your end step, if you have no cards in hand, draw seven cards.\nWhenever you roll {C}, discard your hand.
|
Oracle:At the beginning of your end step, if you have no cards in hand, draw seven cards.\nWhenever you roll {C}, discard your hand.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -10,10 +10,6 @@ T:Mode$ Always | TriggerZones$ Command | CheckSVar$ NumScrolls | SVarCompare$ GE
|
|||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, put a scroll counter on CARDNAME, then draw cards equal to the number of scroll counters on it.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, put a scroll counter on CARDNAME, then draw cards equal to the number of scroll counters on it.
|
||||||
SVar:RolledChaos:AB$ PutCounter | Cost$ 0 | Defined$ Self | CounterType$ SCROLL | CounterNum$ 1 | SubAbility$ ScrollsOfKnowledge
|
SVar:RolledChaos:AB$ PutCounter | Cost$ 0 | Defined$ Self | CounterType$ SCROLL | CounterNum$ 1 | SubAbility$ ScrollsOfKnowledge
|
||||||
SVar:ScrollsOfKnowledge:DB$ Draw | Defined$ You | NumCards$ NumScrolls | References$ NumScrolls
|
SVar:ScrollsOfKnowledge:DB$ Draw | Defined$ You | NumCards$ NumScrolls | References$ NumScrolls
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/aretopolis.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/aretopolis.jpg
|
||||||
Oracle:When you planeswalk to Aretopolis or at the beginning of your upkeep, put a scroll counter on Aretopolis, then you gain life equal to the number of scroll counters on it.\nWhen Aretopolis has ten or more scroll counters on it, planeswalk.\nWhenever you roll {C}, put a scroll counter on Aretopolis, then draw cards equal to the number of scroll counters on it.
|
Oracle:When you planeswalk to Aretopolis or at the beginning of your upkeep, put a scroll counter on Aretopolis, then you gain life equal to the number of scroll counters on it.\nWhen Aretopolis has ten or more scroll counters on it, planeswalk.\nWhenever you roll {C}, put a scroll counter on Aretopolis, then draw cards equal to the number of scroll counters on it.
|
||||||
SetInfo:PC2 Common
|
SetInfo:PC2 Common
|
||||||
@@ -6,10 +6,6 @@ T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChao
|
|||||||
SVar:RolledChaos:AB$ PutCounter | Cost$ 0 | ValidTgts$ Creature.Green,Creature.White,Creature.Blue | CounterType$ DIVINITY | CounterNum$ 1 | SubAbility$ DivineCharacter
|
SVar:RolledChaos:AB$ PutCounter | Cost$ 0 | ValidTgts$ Creature.Green,Creature.White,Creature.Blue | CounterType$ DIVINITY | CounterNum$ 1 | SubAbility$ DivineCharacter
|
||||||
SVar:DivineCharacter:DB$ Animate | Defined$ Targeted | staticAbilities$ IndestructibleAspect | Permanent$ True
|
SVar:DivineCharacter:DB$ Animate | Defined$ Targeted | staticAbilities$ IndestructibleAspect | Permanent$ True
|
||||||
SVar:IndestructibleAspect:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self+counters_GE1_DIVINITY | AddHiddenKeyword$ Indestructible
|
SVar:IndestructibleAspect:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self+counters_GE1_DIVINITY | AddHiddenKeyword$ Indestructible
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/bant.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/bant.jpg
|
||||||
Oracle:All creatures have exalted. (Whenever a creature attacks alone, it gets +1/+1 until end of turn for each instance of exalted among permanents its controller controls.)\nWhenever you roll {C}, put a divinity counter on target green, white, or blue creature. That creature is indestructible as long as it has a divinity counter on it.
|
Oracle:All creatures have exalted. (Whenever a creature attacks alone, it gets +1/+1 until end of turn for each instance of exalted among permanents its controller controls.)\nWhenever you roll {C}, put a divinity counter on target green, white, or blue creature. That creature is indestructible as long as it has a divinity counter on it.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -4,12 +4,8 @@ Types:Plane Muraganda
|
|||||||
S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.Green | Type$ Spell | Amount$ 1 | Description$ Green spells cost 1 less to cast.
|
S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.Green | Type$ Spell | Amount$ 1 | Description$ Green spells cost 1 less to cast.
|
||||||
S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.Red | Type$ Spell | Amount$ 1 | Description$ Red spells cost 1 less to cast.
|
S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.Red | Type$ Spell | Amount$ 1 | Description$ Red spells cost 1 less to cast.
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBPutCounter | TriggerDescription$ Whenever you roll Chaos, put X +1/+1 counters on target creature, where X is that creature's converted mana cost.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBPutCounter | TriggerDescription$ Whenever you roll Chaos, put X +1/+1 counters on target creature, where X is that creature's converted mana cost.
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:DBPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ Y
|
SVar:DBPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ Y
|
||||||
SVar:Y:Targeted$CardManaCost
|
SVar:Y:Targeted$CardManaCost
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/feeding_grounds.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/feeding_grounds.jpg
|
||||||
Oracle:Red spells cost {1} less to cast.\nGreen spells cost {1} less to cast.\nWhenever you roll {C}, put X +1/+1 counters on target creature, where X is that creature's converted mana cost.
|
Oracle:Red spells cost {1} less to cast.\nGreen spells cost {1} less to cast.\nWhenever you roll {C}, put X +1/+1 counters on target creature, where X is that creature's converted mana cost.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -5,10 +5,6 @@ T:Mode$ SpellCast | OptionalDecider$ TriggeredPlayer | TriggerZones$ Command | E
|
|||||||
SVar:LifeSummer:AB$ GainLife | Cost$ 0 | Defined$ TriggeredPlayer | LifeAmount$ 2
|
SVar:LifeSummer:AB$ GainLife | Cost$ 0 | Defined$ TriggeredPlayer | LifeAmount$ 2
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you may gain 10 life.
|
T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you may gain 10 life.
|
||||||
SVar:RolledChaos:AB$ GainLife | Cost$ 0 | LifeAmount$ 10 | Defined$ You
|
SVar:RolledChaos:AB$ GainLife | Cost$ 0 | LifeAmount$ 10 | Defined$ You
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up.
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/fields_of_summer.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/fields_of_summer.jpg
|
||||||
Oracle:Whenever a player casts a spell, that player may gain 2 life.\nWhenever you roll {C}, you may gain 10 life.
|
Oracle:Whenever a player casts a spell, that player may gain 2 life.\nWhenever you roll {C}, you may gain 10 life.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -5,10 +5,6 @@ T:Mode$ ChangesZone | ValidCard$ Land | Destination$ Battlefield | Execute$ Trip
|
|||||||
SVar:TripleGoat:AB$ Token | Cost$ 0 | TokenName$ Goat | TokenTypes$ Creature,Goat | TokenPower$ 0 | TokenToughness$ 1 | TokenColors$ White | TokenOwner$ TriggeredCardController | TokenImage$ W 0 1 Goat | TokenAmount$ 3
|
SVar:TripleGoat:AB$ Token | Cost$ 0 | TokenName$ Goat | TokenTypes$ Creature,Goat | TokenPower$ 0 | TokenToughness$ 1 | TokenColors$ White | TokenOwner$ TriggeredCardController | TokenImage$ W 0 1 Goat | TokenAmount$ 3
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, put a 0/1 white Goat creature token onto the battlefield.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, put a 0/1 white Goat creature token onto the battlefield.
|
||||||
SVar:RolledChaos:AB$ Token | Cost$ 0 | TokenName$ Goat | TokenTypes$ Creature,Goat | TokenPower$ 0 | TokenToughness$ 1 | TokenColors$ White | TokenOwner$ TriggeredPlayer | TokenImage$ W 0 1 Goat | TokenAmount$ 1
|
SVar:RolledChaos:AB$ Token | Cost$ 0 | TokenName$ Goat | TokenTypes$ Creature,Goat | TokenPower$ 0 | TokenToughness$ 1 | TokenColors$ White | TokenOwner$ TriggeredPlayer | TokenImage$ W 0 1 Goat | TokenAmount$ 1
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/goldmeadow.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/goldmeadow.jpg
|
||||||
Oracle:Whenever a land enters the battlefield, that land's controller puts three 0/1 white Goat creature tokens onto the battlefield.\nWhenever you roll {C}, put a 0/1 white Goat creature token onto the battlefield.
|
Oracle:Whenever a land enters the battlefield, that land's controller puts three 0/1 white Goat creature tokens onto the battlefield.\nWhenever you roll {C}, put a 0/1 white Goat creature token onto the battlefield.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -3,11 +3,7 @@ ManaCost:no cost
|
|||||||
Types:Plane Pyrulea
|
Types:Plane Pyrulea
|
||||||
S:Mode$ Continuous | EffectZone$ Command | Affected$ Permanent | AddHiddenKeyword$ CARDNAME untaps during each other player's untap step. | Description$ All permanents untap during each player's untap step.
|
S:Mode$ Continuous | EffectZone$ Command | Affected$ Permanent | AddHiddenKeyword$ CARDNAME untaps during each other player's untap step. | Description$ All permanents untap during each player's untap step.
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBFetch | TriggerDescription$ Whenever you roll Chaos, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBFetch | TriggerDescription$ Whenever you roll Chaos, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:DBFetch:DB$ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 3
|
SVar:DBFetch:DB$ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 3
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.cardforge.org/fpics/lq_planes_promos/horizon_boughs.jpg
|
SVar:Picture:http://www.cardforge.org/fpics/lq_planes_promos/horizon_boughs.jpg
|
||||||
Oracle:All permanents untap during each player's untap step.\nWhenever you roll {C}, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
Oracle:All permanents untap during each player's untap step.\nWhenever you roll {C}, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle your library.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -4,10 +4,6 @@ Types:Plane Dominaria
|
|||||||
S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ 2 | AddPower$ 2 | Description$ All Creatures get +2/+2.
|
S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ 2 | AddPower$ 2 | Description$ All Creatures get +2/+2.
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you may add W U B R G to your mana pool.
|
T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you may add W U B R G to your mana pool.
|
||||||
SVar:RolledChaos:AB$ Mana | Cost$ 0 | Produced$ W U B R G
|
SVar:RolledChaos:AB$ Mana | Cost$ 0 | Produced$ W U B R G
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up.
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/krosa.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/krosa.jpg
|
||||||
Oracle:All creatures get +2/+2.\nWhenever you roll {C}, you may add {W}{U}{B}{R}{G} to your mana pool.
|
Oracle:All creatures get +2/+2.\nWhenever you roll {C}, you may add {W}{U}{B}{R}{G} to your mana pool.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -3,7 +3,7 @@ ManaCost:3 G
|
|||||||
Types:Creature Drake
|
Types:Creature Drake
|
||||||
PT:2/2
|
PT:2/2
|
||||||
K:Flying
|
K:Flying
|
||||||
A:AB$ Pump | Cost$ G | NumAtt$ +1 | ActivationLimit$ 1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. Activate this ability only once each turn.
|
A:AB$ Pump | Cost$ G | NumDef$ +1 | ActivationLimit$ 1 | SpellDescription$ CARDNAME gets +0/+1 until end of turn. Activate this ability only once each turn.
|
||||||
A:AB$ ChangeZone | Cost$ Sac<1/CARDNAME> Sac<1/Creature.namedSpitting Drake/creature named Spitting Drake> | Origin$ Library | Destination$ Battlefield | ChangeType$ Card.namedViashivan Dragon | ChangeNum$ 1 | SpellDescription$ Search your library for a card named Viashivan Dragon and put that card onto the battlefield. Then shuffle your library.
|
A:AB$ ChangeZone | Cost$ Sac<1/CARDNAME> Sac<1/Creature.namedSpitting Drake/creature named Spitting Drake> | Origin$ Library | Destination$ Battlefield | ChangeType$ Card.namedViashivan Dragon | ChangeNum$ 1 | SpellDescription$ Search your library for a card named Viashivan Dragon and put that card onto the battlefield. Then shuffle your library.
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/kyscu_drake.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/kyscu_drake.jpg
|
||||||
Oracle:Flying\n{G}: Kyscu Drake gets +0/+1 until end of turn. Activate this ability only once each turn.\nSacrifice Kyscu Drake and a creature named Spitting Drake: Search your library for a card named Viashivan Dragon and put that card onto the battlefield. Then shuffle your library.
|
Oracle:Flying\n{G}: Kyscu Drake gets +0/+1 until end of turn. Activate this ability only once each turn.\nSacrifice Kyscu Drake and a creature named Spitting Drake: Search your library for a card named Viashivan Dragon and put that card onto the battlefield. Then shuffle your library.
|
||||||
|
|||||||
@@ -5,10 +5,6 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execu
|
|||||||
SVar:LetheMill:AB$ Mill | Cost$ 0 | Defined$ You | NumCards$ 10
|
SVar:LetheMill:AB$ Mill | Cost$ 0 | Defined$ You | NumCards$ 10
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, target player puts the top 10 cards of his or her library into his or her graveyard.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, target player puts the top 10 cards of his or her library into his or her graveyard.
|
||||||
SVar:RolledChaos:AB$ Mill | Cost$ 0 | ValidTgts$ Player | TgtPrompt$ Choose target player to mill. | NumCards$ 10
|
SVar:RolledChaos:AB$ Mill | Cost$ 0 | ValidTgts$ Player | TgtPrompt$ Choose target player to mill. | NumCards$ 10
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/lethe_lake.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/lethe_lake.jpg
|
||||||
Oracle:At the beginning of your upkeep, put the top ten cards of your library into your graveyard.\nWhenever you roll {C}, target player puts the top ten cards of his or her library into his or her graveyard.
|
Oracle:At the beginning of your upkeep, put the top ten cards of your library into your graveyard.\nWhenever you roll {C}, target player puts the top ten cards of his or her library into his or her graveyard.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -5,10 +5,6 @@ S:Mode$ Continuous | Affected$ Creature | EffectZone$ Command | AddAbility$ Llan
|
|||||||
SVar:LlanowarAb:AB$ Mana | Cost$ T | Amount$ 2 | Produced$ G | SpellDescription$ Add G G to your mana pool.
|
SVar:LlanowarAb:AB$ Mana | Cost$ T | Amount$ 2 | Produced$ G | SpellDescription$ Add G G to your mana pool.
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, untap all creatures you control.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, untap all creatures you control.
|
||||||
SVar:RolledChaos:AB$ UntapAll | Cost$ 0 | ValidCards$ Creature.YouCtrl
|
SVar:RolledChaos:AB$ UntapAll | Cost$ 0 | ValidCards$ Creature.YouCtrl
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/llanowar.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/llanowar.jpg
|
||||||
Oracle:All creatures have "{T}: Add {G}{G} to your mana pool."\nWhenever you roll {C}, untap all creatures you control.
|
Oracle:All creatures have "{T}: Add {G}{G} to your mana pool."\nWhenever you roll {C}, untap all creatures you control.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -5,10 +5,6 @@ T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | TriggerZones$ Command | Execute$
|
|||||||
T:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | Execute$ PanopticonDraw | TriggerDescription$ At the beginning of your draw step, draw an additional card.
|
T:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | Execute$ PanopticonDraw | TriggerDescription$ At the beginning of your draw step, draw an additional card.
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ PanopticonDraw | TriggerDescription$ Whenever you roll Chaos, draw a card.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ PanopticonDraw | TriggerDescription$ Whenever you roll Chaos, draw a card.
|
||||||
SVar:PanopticonDraw:AB$ Draw | Cost$ 0 | Defined$ You | NumCards$ 1
|
SVar:PanopticonDraw:AB$ Draw | Cost$ 0 | Defined$ You | NumCards$ 1
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/panopticon.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/panopticon.jpg
|
||||||
Oracle:When you planeswalk to Panopticon, draw a card.\nAt the beginning of your draw step, draw an additional card.\nWhenever you roll {C}, draw a card.
|
Oracle:When you planeswalk to Panopticon, draw a card.\nAt the beginning of your draw step, draw an additional card.\nWhenever you roll {C}, draw a card.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -7,10 +7,6 @@ SVar:RolledChaos1:AB$ PutCounter | Cost$ 0 | ValidTgts$ Creature | CounterType$
|
|||||||
SVar:RolledChaos2:DB$ PutCounter | ValidTgts$ Creature.IsNotRemembered | CounterType$ M1M1 | CounterNum$ 2 | RememberTargets$ True | SubAbility$ RolledChaos3
|
SVar:RolledChaos2:DB$ PutCounter | ValidTgts$ Creature.IsNotRemembered | CounterType$ M1M1 | CounterNum$ 2 | RememberTargets$ True | SubAbility$ RolledChaos3
|
||||||
SVar:RolledChaos3:DB$ PutCounter | ValidTgts$ Creature.IsNotRemembered | CounterType$ M1M1 | CounterNum$ 3 | SubAbility$ RolledChaosCleanup
|
SVar:RolledChaos3:DB$ PutCounter | ValidTgts$ Creature.IsNotRemembered | CounterType$ M1M1 | CounterNum$ 3 | SubAbility$ RolledChaosCleanup
|
||||||
SVar:RolledChaosCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:RolledChaosCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up.
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.cardforge.org/fpics/lq_planes_promos/ravens_run.jpg
|
SVar:Picture:http://www.cardforge.org/fpics/lq_planes_promos/ravens_run.jpg
|
||||||
Oracle:All creatures have wither. (They deal damage to creatures in the form of -1/-1 counters.)\nWhenever you roll {C}, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature.
|
Oracle:All creatures have wither. (They deal damage to creatures in the form of -1/-1 counters.)\nWhenever you roll {C}, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -5,10 +5,6 @@ T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creatu
|
|||||||
SVar:TakenumaDraw:AB$ Draw | Cost$ 0 | Defined$ TriggeredCardController | NumCards$ 1
|
SVar:TakenumaDraw:AB$ Draw | Cost$ 0 | Defined$ TriggeredCardController | NumCards$ 1
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, return target creature you control to its owner's hand.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, return target creature you control to its owner's hand.
|
||||||
SVar:RolledChaos:AB$ ChangeZone | Cost$ 0 | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature to return to your hand | Origin$ Battlefield | Destination$ Hand
|
SVar:RolledChaos:AB$ ChangeZone | Cost$ 0 | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature to return to your hand | Origin$ Battlefield | Destination$ Hand
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/takenuma.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/takenuma.jpg
|
||||||
Oracle:Whenever a creature leaves the battlefield, its controller draws a card.\nWhenever you roll {C}, return target creature you control to its owner's hand.
|
Oracle:Whenever a creature leaves the battlefield, its controller draws a card.\nWhenever you roll {C}, return target creature you control to its owner's hand.
|
||||||
SetInfo:PC2 Common
|
SetInfo:PC2 Common
|
||||||
@@ -9,10 +9,6 @@ SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|||||||
SVar:GateX:Remembered$CardManaCost
|
SVar:GateX:Remembered$CardManaCost
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, remove two time counters from each suspended card you own.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, remove two time counters from each suspended card you own.
|
||||||
SVar:RolledChaos:AB$ RemoveCounterAll | Cost$ 0 | ValidCards$ Card.suspended+YouOwn | CounterType$ TIME | CounterNum$ 2 | ValidZone$ Exile
|
SVar:RolledChaos:AB$ RemoveCounterAll | Cost$ 0 | ValidCards$ Card.suspended+YouOwn | CounterType$ TIME | CounterNum$ 2 | ValidZone$ Exile
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/talon_gates.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/talon_gates.jpg
|
||||||
Oracle:Any time you could cast a sorcery, you may exile a nonland card from your hand with X time counters on it, where X is its converted mana cost. If the exiled card doesn't have suspend, it gains suspend. (At the beginning of its owner's upkeep, he or she removes a time counter. When the last is removed, the player casts it without paying its mana cost. If it's a creature, it has haste.)\nWhenever you roll {C}, remove two time counters from each suspended card you own.
|
Oracle:Any time you could cast a sorcery, you may exile a nonland card from your hand with X time counters on it, where X is its converted mana cost. If the exiled card doesn't have suspend, it gains suspend. (At the beginning of its owner's upkeep, he or she removes a time counter. When the last is removed, the player casts it without paying its mana cost. If it's a creature, it has haste.)\nWhenever you roll {C}, remove two time counters from each suspended card you own.
|
||||||
SetInfo:PC2 Common
|
SetInfo:PC2 Common
|
||||||
@@ -8,10 +8,6 @@ SVar:FluesDig:DB$ DigUntil | Valid$ Creature | ValidDescription$ creature | Foun
|
|||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you may put a creature card from your hand onto the battlefield.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you may put a creature card from your hand onto the battlefield.
|
||||||
SVar:RolledChaos:AB$ ChangeZone | Cost$ 0 | ChangeType$ Creature | ChangeNum$ 1 | Origin$ Hand | Destination$ Battlefield
|
SVar:RolledChaos:AB$ ChangeZone | Cost$ 0 | ChangeType$ Creature | ChangeNum$ 1 | Origin$ Hand | Destination$ Battlefield
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/the_aether_flues.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/the_aether_flues.jpg
|
||||||
Oracle:When you planeswalk to The AEther Flues or at the beginning of your upkeep, you may sacrifice a creature. If you do, reveal cards from the top of your library until you reveal a creature card, put that card onto the battlefield, then shuffle all other cards revealed this way into your library.\nWhenever you roll {C}, you may put a creature card from your hand onto the battlefield.
|
Oracle:When you planeswalk to The AEther Flues or at the beginning of your upkeep, you may sacrifice a creature. If you do, reveal cards from the top of your library until you reveal a creature card, put that card onto the battlefield, then shuffle all other cards revealed this way into your library.\nWhenever you roll {C}, you may put a creature card from your hand onto the battlefield.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -5,10 +5,6 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execu
|
|||||||
SVar:FourthSac:AB$ Sacrifice | Cost$ 0 | Defined$ You | SacValid$ Creature.nonBlack
|
SVar:FourthSac:AB$ Sacrifice | Cost$ 0 | Defined$ You | SacValid$ Creature.nonBlack
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, put a 2/2 black zombie token onto the battlefield.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, put a 2/2 black zombie token onto the battlefield.
|
||||||
SVar:RolledChaos:AB$Token | Cost$ 0 | TokenImage$ B 2 2 Zombie | TokenName$ Zombie | TokenColors$ Black | TokenTypes$ Creature,Zombie | TokenPower$ 2 | TokenToughness$ 2 | TokenOwner$ You | TokenAmount$ 2
|
SVar:RolledChaos:AB$Token | Cost$ 0 | TokenImage$ B 2 2 Zombie | TokenName$ Zombie | TokenColors$ Black | TokenTypes$ Creature,Zombie | TokenPower$ 2 | TokenToughness$ 2 | TokenOwner$ You | TokenAmount$ 2
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/the_fourth_sphere.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/the_fourth_sphere.jpg
|
||||||
Oracle:At the beginning of your upkeep, sacrifice a nonblack creature.\nWhenever you roll {C}, put a 2/2 black Zombie creature token onto the battlefield.
|
Oracle:At the beginning of your upkeep, sacrifice a nonblack creature.\nWhenever you roll {C}, put a 2/2 black Zombie creature token onto the battlefield.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -4,10 +4,6 @@ Types:Plane Lorwyn
|
|||||||
S:Mode$ Continuous | EffectZone$ Command | GlobalRule$ Each creature assigns combat damage equal to its toughness rather than its power. | Description$ Each creature assigns combat damage equal to its toughness rather than its power.
|
S:Mode$ Continuous | EffectZone$ Command | GlobalRule$ Each creature assigns combat damage equal to its toughness rather than its power. | Description$ Each creature assigns combat damage equal to its toughness rather than its power.
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos,creatures you control get +0/+2 and gain trample until end of turn.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos,creatures you control get +0/+2 and gain trample until end of turn.
|
||||||
SVar:RolledChaos:AB$ PumpAll | Cost$ 0 | ValidCards$ Creature.ActivePlayerCtrl | NumDef$ 2 | KW$ Trample
|
SVar:RolledChaos:AB$ PumpAll | Cost$ 0 | ValidCards$ Creature.ActivePlayerCtrl | NumDef$ 2 | KW$ Trample
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/the_great_forest.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/the_great_forest.jpg
|
||||||
Oracle:Each creature assigns combat damage equal to its toughness rather than its power.\nWhenever you roll {C}, creatures you control get +0/+2 and gain trample until end of turn.
|
Oracle:Each creature assigns combat damage equal to its toughness rather than its power.\nWhenever you roll {C}, creatures you control get +0/+2 and gain trample until end of turn.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -5,10 +5,6 @@ S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ -5 | D
|
|||||||
T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you may destroy target creature if it's power is 0 or less.
|
T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you may destroy target creature if it's power is 0 or less.
|
||||||
SVar:RolledChaos:AB$ Destroy | Cost$ 0 | ValidTgts$ Creature | ConditionCheckSVar$ TgtPow | ConditionCompareSVar$ EQ1 | AITgts$ Creature.OpponentCtrl+powerLE0
|
SVar:RolledChaos:AB$ Destroy | Cost$ 0 | ValidTgts$ Creature | ConditionCheckSVar$ TgtPow | ConditionCompareSVar$ EQ1 | AITgts$ Creature.OpponentCtrl+powerLE0
|
||||||
SVar:TgtPow:Targeted$Valid Creature.powerLE0
|
SVar:TgtPow:Targeted$Valid Creature.powerLE0
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up.
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/the_hippodrome.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/the_hippodrome.jpg
|
||||||
Oracle:All creatures get -5/-0.\nWhenever you roll {C}, you may destroy target creature if its power is 0 or less.
|
Oracle:All creatures get -5/-0.\nWhenever you roll {C}, you may destroy target creature if its power is 0 or less.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -4,10 +4,6 @@ Types:Plane Vryn
|
|||||||
S:Mode$ Continuous | AddKeyword$ Rebound | Affected$ Instant,Sorcery | AffectedZone$ Stack | EffectZone$ Command | Description$ Instant and sorcery spells have rebound. (The spell's controller exiles the spell as it resolves if he or she cast it from his or her hand. At the beginning of that player's next upkeep, he or she may cast that card from exile without paying its mana cost.)
|
S:Mode$ Continuous | AddKeyword$ Rebound | Affected$ Instant,Sorcery | AffectedZone$ Stack | EffectZone$ Command | Description$ Instant and sorcery spells have rebound. (The spell's controller exiles the spell as it resolves if he or she cast it from his or her hand. At the beginning of that player's next upkeep, he or she may cast that card from exile without paying its mana cost.)
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle your library.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle your library.
|
||||||
SVar:RolledChaos:AB$ ChangeZone | Cost$ 0 | Origin$ Library | Destination$ Hand | ChangeType$ Instant,Sorcery | ChangeNum$ 1
|
SVar:RolledChaos:AB$ ChangeZone | Cost$ 0 | Origin$ Library | Destination$ Hand | ChangeType$ Instant,Sorcery | ChangeNum$ 1
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/trail_of_the_mage_rings.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/trail_of_the_mage_rings.jpg
|
||||||
Oracle:Instant and sorcery spells have rebound. (The spell's controller exiles the spell as it resolves if he or she cast it from his or her hand. At the beginning of that player's next upkeep, he or she may cast that card from exile without paying its mana cost.)\nWhenever you roll {C}, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle your library.
|
Oracle:Instant and sorcery spells have rebound. (The spell's controller exiles the spell as it resolves if he or she cast it from his or her hand. At the beginning of that player's next upkeep, he or she may cast that card from exile without paying its mana cost.)\nWhenever you roll {C}, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle your library.
|
||||||
SetInfo:PC2 Common
|
SetInfo:PC2 Common
|
||||||
@@ -5,10 +5,6 @@ S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$
|
|||||||
SVar:AnyMana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color to your mana pool.
|
SVar:AnyMana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color to your mana pool.
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order.
|
||||||
SVar:RolledChaos:DB$ Dig | DigNum$ 3 | Reveal$ True | ChangeNum$ All | ChangeValid$ Land
|
SVar:RolledChaos:DB$ Dig | DigNum$ 3 | Reveal$ True | ChangeNum$ All | ChangeValid$ Land
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/truga_jungle.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/truga_jungle.jpg
|
||||||
Oracle:All lands have "{T}: Add one mana of any color to your mana pool."\nWhenever you roll {C}, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order.
|
Oracle:All lands have "{T}: Add one mana of any color to your mana pool."\nWhenever you roll {C}, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order.
|
||||||
SetInfo:PC2 Common
|
SetInfo:PC2 Common
|
||||||
@@ -4,10 +4,6 @@ Types:Plane Ir
|
|||||||
S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Creature | Type$ Spell | Amount$ 2 | Description$ Creature spells cost 2 less to cast.
|
S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Creature | Type$ Spell | Amount$ 2 | Description$ Creature spells cost 2 less to cast.
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard.
|
||||||
SVar:RolledChaos:AB$ Dig | Cost$ 0 | DigNum$ 3 | Reveal$ True | ChangeNum$ All | ChangeValid$ Creature | DestinationZone2$ Graveyard
|
SVar:RolledChaos:AB$ Dig | Cost$ 0 | DigNum$ 3 | Reveal$ True | ChangeNum$ All | ChangeValid$ Creature | DestinationZone2$ Graveyard
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/turri_island.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/turri_island.jpg
|
||||||
Oracle:Creature spells cost {2} less to cast.\nWhenever you roll {C}, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard.
|
Oracle:Creature spells cost {2} less to cast.\nWhenever you roll {C}, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -6,10 +6,6 @@ SVar:TrigDraw:AB$ Draw | Cost$ 0 | Defined$ TriggeredSourceController | NumCards
|
|||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you have no maximum hand size for the rest of the game.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, you have no maximum hand size for the rest of the game.
|
||||||
SVar:RolledChaos:AB$ Effect | Cost$ 0 | Effect | Name$ Undercity Reaches Effect | StaticAbilities$ STHandSize | Duration$ Permanent
|
SVar:RolledChaos:AB$ Effect | Cost$ 0 | Effect | Name$ Undercity Reaches Effect | StaticAbilities$ STHandSize | Duration$ Permanent
|
||||||
SVar:STHandSize:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ Unlimited | Description$ You have no maximum hand size.
|
SVar:STHandSize:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ Unlimited | Description$ You have no maximum hand size.
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up.
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/undercity_reaches.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/undercity_reaches.jpg
|
||||||
Oracle:Whenever a creature deals combat damage to a player, its controller may draw a card.\nWhenever you roll {C}, you have no maximum hand size for the rest of the game.
|
Oracle:Whenever a creature deals combat damage to a player, its controller may draw a card.\nWhenever you roll {C}, you have no maximum hand size for the rest of the game.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
Name:Undiscovered Paradise
|
Name:Undiscovered Paradise
|
||||||
ManaCost:no cost
|
ManaCost:no cost
|
||||||
Types:Land
|
Types:Land
|
||||||
A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color to your mana pool | SubAbility$ DBReturn
|
A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color to your mana pool. During your next untap step, as you untap your permanents, return Undiscovered Paradise to its owner's hand. | SubAbility$ DBReturn
|
||||||
SVar:DBReturn:DB$ Pump | Defined$ Self | KW$ HIDDEN During your next untap step, as you untap your permanents, return CARDNAME to its owner's hand. | Permanent$ True
|
SVar:DBReturn:DB$ Pump | Defined$ Self | KW$ HIDDEN During your next untap step, as you untap your permanents, return CARDNAME to its owner's hand. | Permanent$ True
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/undiscovered_paradise.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/undiscovered_paradise.jpg
|
||||||
Oracle:{T}: Add one mana of any color to your mana pool. During your next untap step, as you untap your permanents, return Undiscovered Paradise to its owner's hand.
|
Oracle:{T}: Add one mana of any color to your mana pool. During your next untap step, as you untap your permanents, return Undiscovered Paradise to its owner's hand.
|
||||||
|
|||||||
@@ -5,10 +5,6 @@ S:Mode$ Continuous | Affected$ Creature | AddPower$ AffectedX | AddToughness$ Af
|
|||||||
SVar:AffectedX:Count$Valid Creature.sharesCreatureTypeWith+Other
|
SVar:AffectedX:Count$Valid Creature.sharesCreatureTypeWith+Other
|
||||||
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, target creature gains all creature types until end of turn.
|
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, target creature gains all creature types until end of turn.
|
||||||
SVar:RolledChaos:AB$ Animate | Cost$ 0 | ValidTgts$ Creature | TgtPrompt$ Select target creature | Types$ AllCreatureTypes
|
SVar:RolledChaos:AB$ Animate | Cost$ 0 | ValidTgts$ Creature | TgtPrompt$ Select target creature | Types$ AllCreatureTypes
|
||||||
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
|
|
||||||
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
|
|
||||||
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
|
|
||||||
SVar:X:Count$RolledThisTurn
|
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/velis_vel.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/velis_vel.jpg
|
||||||
Oracle:Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Elemental Shamans and an Elemental Spirit are on the battlefield, each gets +2/+2.)\nWhenever you roll {C}, target creature gains all creature types until end of turn.
|
Oracle:Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Elemental Shamans and an Elemental Spirit are on the battlefield, each gets +2/+2.)\nWhenever you roll {C}, target creature gains all creature types until end of turn.
|
||||||
SetInfo:HOP Common
|
SetInfo:HOP Common
|
||||||
@@ -18,8 +18,10 @@
|
|||||||
package forge;
|
package forge;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.IOException;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
@@ -70,22 +72,30 @@ public class ImageCache {
|
|||||||
public static final String PRECON_PREFIX = "p:";
|
public static final String PRECON_PREFIX = "p:";
|
||||||
public static final String TOURNAMENTPACK_PREFIX = "o:";
|
public static final String TOURNAMENTPACK_PREFIX = "o:";
|
||||||
|
|
||||||
static private final LoadingCache<String, BufferedImage> CACHE = CacheBuilder.newBuilder().softValues().build(new ImageLoader());
|
private static final Set<String> _missingIconKeys = new HashSet<String>();
|
||||||
private static final BufferedImage emptyImage = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB);
|
private static final LoadingCache<String, BufferedImage> _CACHE = CacheBuilder.newBuilder().softValues().build(new ImageLoader());
|
||||||
private static BufferedImage defaultImage = emptyImage;
|
private static final BufferedImage _defaultImage;
|
||||||
static {
|
static {
|
||||||
|
BufferedImage defImage = null;
|
||||||
try {
|
try {
|
||||||
ClassLoader cl = Thread.currentThread().getContextClassLoader();
|
ClassLoader cl = Thread.currentThread().getContextClassLoader();
|
||||||
InputStream isNoCardJpg = cl.getResourceAsStream("no_card.jpg");
|
InputStream isNoCardJpg = cl.getResourceAsStream("no_card.jpg");
|
||||||
defaultImage = ImageIO.read(isNoCardJpg);
|
defImage = ImageIO.read(isNoCardJpg);
|
||||||
} catch (IOException e) {
|
} catch (Exception e) {
|
||||||
// TODO Auto-generated catch block ignores the exception, but sends it to System.err and probably forge.log.
|
// resource not found; perhaps we're running straight from source
|
||||||
e.printStackTrace();
|
try {
|
||||||
|
defImage = ImageIO.read(new File("src/main/resources/no_card.jpg"));
|
||||||
|
} catch (Exception ex) {
|
||||||
|
System.err.println("could not load default card image");
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
_defaultImage = (null == defImage) ? new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB) : defImage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void clear() {
|
public static void clear() {
|
||||||
CACHE.invalidateAll();
|
_CACHE.invalidateAll();
|
||||||
|
_missingIconKeys.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,7 +109,7 @@ public class ImageCache {
|
|||||||
} else {
|
} else {
|
||||||
key = card.getImageKey();
|
key = card.getImageKey();
|
||||||
}
|
}
|
||||||
return scaleImage(key, width, height);
|
return scaleImage(key, width, height, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -107,7 +117,7 @@ public class ImageCache {
|
|||||||
* and cannot be loaded from disk. pass -1 for width and/or height to avoid resizing in that dimension.
|
* and cannot be loaded from disk. pass -1 for width and/or height to avoid resizing in that dimension.
|
||||||
*/
|
*/
|
||||||
public static BufferedImage getImage(InventoryItem ii, int width, int height) {
|
public static BufferedImage getImage(InventoryItem ii, int width, int height) {
|
||||||
return scaleImage(getImageKey(ii, false), width, height);
|
return scaleImage(getImageKey(ii, false), width, height, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -115,40 +125,42 @@ public class ImageCache {
|
|||||||
* in the cache and cannot be loaded from disk.
|
* in the cache and cannot be loaded from disk.
|
||||||
*/
|
*/
|
||||||
public static ImageIcon getIcon(IHasIcon ihi) {
|
public static ImageIcon getIcon(IHasIcon ihi) {
|
||||||
BufferedImage i = scaleImage(ihi.getIconImageKey(), -1, -1);
|
String imageKey = ihi.getIconImageKey();
|
||||||
if (null == i) {
|
final BufferedImage i;
|
||||||
|
if (_missingIconKeys.contains(imageKey) ||
|
||||||
|
null == (i = scaleImage(ihi.getIconImageKey(), -1, -1, false))) {
|
||||||
|
_missingIconKeys.add(imageKey);
|
||||||
return FSkin.getIcon(FSkin.InterfaceIcons.ICO_UNKNOWN);
|
return FSkin.getIcon(FSkin.InterfaceIcons.ICO_UNKNOWN);
|
||||||
}
|
}
|
||||||
return new ImageIcon(i);
|
return new ImageIcon(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static BufferedImage scaleImage(String key, final int width, final int height) {
|
private static BufferedImage scaleImage(String key, final int width, final int height, boolean useDefaultImage) {
|
||||||
if (StringUtils.isEmpty(key) || (3 > width && -1 != width) || (3 > height && -1 != height)) {
|
if (StringUtils.isEmpty(key) || (3 > width && -1 != width) || (3 > height && -1 != height)) {
|
||||||
// picture too small or key not defined; return a blank
|
// picture too small or key not defined; return a blank
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder rsKey = new StringBuilder(key);
|
String resizedKey = String.format("%s#%dx%d", key, width, height);
|
||||||
rsKey.append("#").append(width).append('x').append(height);
|
|
||||||
String resizedKey = rsKey.toString();
|
|
||||||
|
|
||||||
final BufferedImage cached = CACHE.getIfPresent(resizedKey);
|
final BufferedImage cached = _CACHE.getIfPresent(resizedKey);
|
||||||
if (null != cached) {
|
if (null != cached) {
|
||||||
|
//System.out.println("found cached image: " + resizedKey);
|
||||||
return cached;
|
return cached;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean mayEnlarge = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_SCALE_LARGER);
|
|
||||||
BufferedImage original = getImage(key);
|
BufferedImage original = getImage(key);
|
||||||
|
|
||||||
if (null == original) {
|
if (null == original) {
|
||||||
original = defaultImage;
|
if (!useDefaultImage) {
|
||||||
CACHE.put(key, defaultImage); // This instructs cache to give up finding a picture if it was not found once
|
|
||||||
}
|
|
||||||
|
|
||||||
if (original == emptyImage) { // the found image is a placeholder for missing picture?
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// henceforth use a default picture for this key if image not found
|
||||||
|
original = _defaultImage;
|
||||||
|
_CACHE.put(key, _defaultImage);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean mayEnlarge = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_SCALE_LARGER);
|
||||||
double scale = Math.min(
|
double scale = Math.min(
|
||||||
-1 == width ? 1 : (double)width / original.getWidth(),
|
-1 == width ? 1 : (double)width / original.getWidth(),
|
||||||
-1 == height? 1 : (double)height / original.getHeight());
|
-1 == height? 1 : (double)height / original.getHeight());
|
||||||
@@ -162,12 +174,22 @@ public class ImageCache {
|
|||||||
} else {
|
} else {
|
||||||
int destWidth = (int)(original.getWidth() * scale);
|
int destWidth = (int)(original.getWidth() * scale);
|
||||||
int destHeight = (int)(original.getHeight() * scale);
|
int destHeight = (int)(original.getHeight() * scale);
|
||||||
ResampleOp resampler = new ResampleOp(destWidth, destHeight);
|
|
||||||
|
|
||||||
|
// if this scale has been used before, get the cached version instead of rescaling
|
||||||
|
String effectiveResizedKey = String.format("%s#%dx%d", key, destWidth, destHeight);
|
||||||
|
result = _CACHE.getIfPresent(effectiveResizedKey);
|
||||||
|
if (null == result) {
|
||||||
|
ResampleOp resampler = new ResampleOp(destWidth, destHeight);
|
||||||
result = resampler.filter(original, null);
|
result = resampler.filter(original, null);
|
||||||
CACHE.put(resizedKey, result);
|
//System.out.println("caching resized image: " + effectiveResizedKey);
|
||||||
|
_CACHE.put(effectiveResizedKey, result);
|
||||||
|
//} else {
|
||||||
|
// System.out.println("retrieved resized image: " + effectiveResizedKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//System.out.println("caching image: " + resizedKey);
|
||||||
|
_CACHE.put(resizedKey, result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,7 +198,7 @@ public class ImageCache {
|
|||||||
*/
|
*/
|
||||||
private static BufferedImage getImage(final String key) {
|
private static BufferedImage getImage(final String key) {
|
||||||
try {
|
try {
|
||||||
return ImageCache.CACHE.get(key);
|
return ImageCache._CACHE.get(key);
|
||||||
} catch (final ExecutionException ex) {
|
} catch (final ExecutionException ex) {
|
||||||
if (ex.getCause() instanceof NullPointerException) {
|
if (ex.getCause() instanceof NullPointerException) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -148,6 +148,9 @@ public class RegenerateAi extends SpellAbilityAi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (tgt.getTargets().isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return chance;
|
return chance;
|
||||||
|
|||||||
@@ -27,11 +27,14 @@ import forge.CardCharacteristicName;
|
|||||||
import forge.CardColor;
|
import forge.CardColor;
|
||||||
import forge.CardUtil;
|
import forge.CardUtil;
|
||||||
import forge.Color;
|
import forge.Color;
|
||||||
|
import forge.Command;
|
||||||
|
import forge.CounterType;
|
||||||
import forge.ImageCache;
|
import forge.ImageCache;
|
||||||
import forge.card.CardCharacteristics;
|
import forge.card.CardCharacteristics;
|
||||||
import forge.card.CardRules;
|
import forge.card.CardRules;
|
||||||
import forge.card.CardSplitType;
|
import forge.card.CardSplitType;
|
||||||
import forge.card.ICardFace;
|
import forge.card.ICardFace;
|
||||||
|
import forge.card.ability.AbilityFactory;
|
||||||
import forge.card.cost.Cost;
|
import forge.card.cost.Cost;
|
||||||
import forge.card.mana.ManaCost;
|
import forge.card.mana.ManaCost;
|
||||||
import forge.card.replacement.ReplacementHandler;
|
import forge.card.replacement.ReplacementHandler;
|
||||||
@@ -40,6 +43,7 @@ import forge.card.spellability.AbilitySub;
|
|||||||
import forge.card.spellability.SpellAbility;
|
import forge.card.spellability.SpellAbility;
|
||||||
import forge.card.spellability.SpellPermanent;
|
import forge.card.spellability.SpellPermanent;
|
||||||
import forge.card.spellability.Target;
|
import forge.card.spellability.Target;
|
||||||
|
import forge.card.trigger.Trigger;
|
||||||
import forge.card.trigger.TriggerHandler;
|
import forge.card.trigger.TriggerHandler;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.item.CardDb;
|
import forge.item.CardDb;
|
||||||
@@ -296,19 +300,55 @@ public class CardFactory {
|
|||||||
if (card.isCreature()) {
|
if (card.isCreature()) {
|
||||||
CardFactoryCreatures.buildCard(card, cardName);
|
CardFactoryCreatures.buildCard(card, cardName);
|
||||||
} else if (card.isPlaneswalker()) {
|
} else if (card.isPlaneswalker()) {
|
||||||
CardFactoryPlaneswalkers.buildCard(card);
|
buildPlaneswalkerAbilities(card);
|
||||||
} else if (card.isLand()) {
|
} else if (card.isLand()) {
|
||||||
CardFactoryLands.buildCard(card, cardName);
|
CardFactoryLands.buildCard(card, cardName);
|
||||||
} else if (card.isSorcery()) {
|
} else if (card.isSorcery()) {
|
||||||
CardFactorySorceries.buildCard(card, cardName);
|
CardFactorySorceries.buildCard(card, cardName);
|
||||||
} else if (card.isArtifact()) {
|
} else if (card.isArtifact()) {
|
||||||
CardFactoryArtifacts.buildCard(card, cardName);
|
CardFactoryArtifacts.buildCard(card, cardName);
|
||||||
|
} else if (card.isType("Plane")) {
|
||||||
|
buildPlaneAbilities(card);
|
||||||
}
|
}
|
||||||
|
|
||||||
CardFactoryUtil.setupKeywordedAbilities(card);
|
CardFactoryUtil.setupKeywordedAbilities(card);
|
||||||
} // getCard2
|
} // getCard2
|
||||||
|
|
||||||
|
private static void buildPlaneAbilities(Card card) {
|
||||||
|
StringBuilder triggerSB = new StringBuilder();
|
||||||
|
triggerSB.append("Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | ");
|
||||||
|
triggerSB.append("Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the ");
|
||||||
|
triggerSB.append("bottom of its owner's planar deck face down, then move the top card of your planar deck off ");
|
||||||
|
triggerSB.append("that planar deck and turn it face up");
|
||||||
|
|
||||||
|
StringBuilder saSB = new StringBuilder();
|
||||||
|
saSB.append("AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | AnyPlayer$ True | ActivationZone$ Command | ");
|
||||||
|
saSB.append("SpellDescription$ Roll the planar dice. X is equal to the amount of times the planar die has been rolled this turn.");
|
||||||
|
|
||||||
|
card.setSVar("RolledWalk", "DB$ Planeswalk | Cost$ 0");
|
||||||
|
Trigger planesWalkTrigger = TriggerHandler.parseTrigger(triggerSB.toString(), card, true);
|
||||||
|
card.addTrigger(planesWalkTrigger);
|
||||||
|
|
||||||
|
card.setSVar("X", "Count$RolledThisTurn");
|
||||||
|
SpellAbility planarRoll = AbilityFactory.getAbility(saSB.toString(), card);
|
||||||
|
card.addSpellAbility(planarRoll);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void buildPlaneswalkerAbilities(Card card) {
|
||||||
|
if (card.getBaseLoyalty() > 0) {
|
||||||
|
Command cmd = CardFactoryUtil.entersBattleFieldWithCounters(card, CounterType.LOYALTY, card.getBaseLoyalty());
|
||||||
|
card.addComesIntoPlayCommand(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Planeswalker damage redirection
|
||||||
|
card.addReplacementEffect(ReplacementHandler.parseReplacement("Event$ DamageDone | ActiveZones$ Battlefield | IsCombat$ False | ValidSource$ Card.YouDontCtrl"
|
||||||
|
+ " | ValidTarget$ You | Optional$ True | OptionalDecider$ Opponent | ReplaceWith$ DamagePW | Secondary$ True"
|
||||||
|
+ " | AICheckSVar$ DamagePWAI | AISVarCompare$ GT4 | Description$ Redirect damage to " + card.toString(), card));
|
||||||
|
card.setSVar("DamagePW", "AB$DealDamage | Cost$ 0 | Defined$ Self | NumDmg$ DamagePWX | DamageSource$ ReplacedSource | References$ DamagePWX,DamagePWAI");
|
||||||
|
card.setSVar("DamagePWX", "ReplaceCount$DamageAmount");
|
||||||
|
card.setSVar("DamagePWAI", "ReplaceCount$DamageAmount/NMinus.DamagePWY");
|
||||||
|
card.setSVar("DamagePWY", "Count$YourLifeTotal");
|
||||||
|
}
|
||||||
|
|
||||||
private static Card readCard(final CardRules rules) {
|
private static Card readCard(final CardRules rules) {
|
||||||
|
|
||||||
|
|||||||
@@ -1,61 +0,0 @@
|
|||||||
/*
|
|
||||||
* Forge: Play Magic: the Gathering.
|
|
||||||
* Copyright (C) 2011 Forge Team
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package forge.card.cardfactory;
|
|
||||||
|
|
||||||
import forge.Card;
|
|
||||||
import forge.Command;
|
|
||||||
import forge.CounterType;
|
|
||||||
import forge.card.replacement.ReplacementHandler;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* CardFactory_Planeswalkers class.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author Forge
|
|
||||||
* @version $Id$
|
|
||||||
*/
|
|
||||||
public class CardFactoryPlaneswalkers {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* getCard.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param card
|
|
||||||
* a {@link forge.Card} object.
|
|
||||||
* @return a {@link forge.Card} object.
|
|
||||||
*/
|
|
||||||
public static void buildCard(final Card card) {
|
|
||||||
// All Planeswalkers set their loyality in the beginning
|
|
||||||
if (card.getBaseLoyalty() > 0) {
|
|
||||||
Command cmd = CardFactoryUtil.entersBattleFieldWithCounters(card, CounterType.LOYALTY, card.getBaseLoyalty());
|
|
||||||
card.addComesIntoPlayCommand(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Planeswalker damage redirection
|
|
||||||
card.addReplacementEffect(ReplacementHandler.parseReplacement("Event$ DamageDone | ActiveZones$ Battlefield | IsCombat$ False | ValidSource$ Card.YouDontCtrl"
|
|
||||||
+ " | ValidTarget$ You | Optional$ True | OptionalDecider$ Opponent | ReplaceWith$ DamagePW | Secondary$ True"
|
|
||||||
+ " | AICheckSVar$ DamagePWAI | AISVarCompare$ GT4 | Description$ Redirect damage to " + card.toString(), card));
|
|
||||||
card.setSVar("DamagePW", "AB$DealDamage | Cost$ 0 | Defined$ Self | NumDmg$ DamagePWX | DamageSource$ ReplacedSource | References$ DamagePWX,DamagePWAI");
|
|
||||||
card.setSVar("DamagePWX", "ReplaceCount$DamageAmount");
|
|
||||||
card.setSVar("DamagePWAI", "ReplaceCount$DamageAmount/NMinus.DamagePWY");
|
|
||||||
card.setSVar("DamagePWY", "Count$YourLifeTotal");
|
|
||||||
}
|
|
||||||
|
|
||||||
} // end class CardFactoryPlaneswalkers
|
|
||||||
@@ -40,9 +40,22 @@ import forge.game.zone.ZoneType;
|
|||||||
public class Target {
|
public class Target {
|
||||||
// Target has two things happening:
|
// Target has two things happening:
|
||||||
// Targeting restrictions (Creature, Min/Maxm etc) which are true for this
|
// Targeting restrictions (Creature, Min/Maxm etc) which are true for this
|
||||||
// whole Target
|
|
||||||
// Target Choices (which is specific for the StackInstance)
|
// Target Choices (which is specific for the StackInstance)
|
||||||
private Card srcCard;
|
private Card srcCard;
|
||||||
|
// What this Object is restricted to targeting
|
||||||
|
private boolean tgtValid = false;
|
||||||
|
private String[] validTgts;
|
||||||
|
private String vtSelection = "";
|
||||||
|
private List<ZoneType> tgtZone = Arrays.asList(ZoneType.Battlefield);
|
||||||
|
|
||||||
|
//SpellAbility Restrictions
|
||||||
|
// Comma-separated <Spell,Activated,Triggered>
|
||||||
|
private String targetSpellAbilityType = null;
|
||||||
|
// The target SA of this SA must be targeting a Valid X
|
||||||
|
private String saValidTargeting = null;
|
||||||
|
|
||||||
|
// Additional restrictions that may not fit into Valid
|
||||||
private boolean uniqueTargets = false;
|
private boolean uniqueTargets = false;
|
||||||
private boolean singleZone = false;
|
private boolean singleZone = false;
|
||||||
private boolean differentZone = false;
|
private boolean differentZone = false;
|
||||||
@@ -50,11 +63,108 @@ public class Target {
|
|||||||
private boolean sameController = false;
|
private boolean sameController = false;
|
||||||
private boolean withoutSameCreatureType = false;
|
private boolean withoutSameCreatureType = false;
|
||||||
private String definedController = null;
|
private String definedController = null;
|
||||||
|
|
||||||
|
// How many can be targeted?
|
||||||
|
private String minTargets;
|
||||||
|
private String maxTargets;
|
||||||
|
|
||||||
|
// What Choices are actually made for targeting
|
||||||
private TargetChoices choice = null;
|
private TargetChoices choice = null;
|
||||||
|
|
||||||
|
// For "Divided" cards. Is this better in TargetChoices?
|
||||||
private boolean dividedAsYouChoose = false;
|
private boolean dividedAsYouChoose = false;
|
||||||
private HashMap<Object, Integer> dividedMap = new HashMap<Object, Integer>();
|
private HashMap<Object, Integer> dividedMap = new HashMap<Object, Integer>();
|
||||||
private int stillToDivide = 0;
|
private int stillToDivide = 0;
|
||||||
|
|
||||||
|
// Not sure what's up with Mandatory? Why wouldn't targeting be mandatory?
|
||||||
|
private boolean bMandatory = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Copy Constructor for Target.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param target
|
||||||
|
* a {@link forge.card.spellability.Target} object.
|
||||||
|
*/
|
||||||
|
public Target(final Target target) {
|
||||||
|
this.tgtValid = true;
|
||||||
|
this.srcCard = target.getSourceCard();
|
||||||
|
this.vtSelection = target.getVTSelection();
|
||||||
|
this.validTgts = target.getValidTgts();
|
||||||
|
this.minTargets = target.getMinTargets();
|
||||||
|
this.maxTargets = target.getMaxTargets();
|
||||||
|
this.tgtZone = target.getZone();
|
||||||
|
this.targetSpellAbilityType = target.getTargetSpellAbilityType();
|
||||||
|
this.saValidTargeting = target.getSAValidTargeting();
|
||||||
|
this.dividedAsYouChoose = target.isDividedAsYouChoose();
|
||||||
|
this.uniqueTargets = target.isUniqueTargets();
|
||||||
|
this.singleZone = target.isSingleZone();
|
||||||
|
this.differentControllers = target.isDifferentControllers();
|
||||||
|
this.differentZone = target.isDifferentZone();
|
||||||
|
this.sameController = target.isSameController();
|
||||||
|
this.withoutSameCreatureType = target.isWithoutSameCreatureType();
|
||||||
|
this.definedController = target.getDefinedController();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Constructor for Target.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param src
|
||||||
|
* a {@link forge.Card} object.
|
||||||
|
* @param select
|
||||||
|
* a {@link java.lang.String} object.
|
||||||
|
* @param valid
|
||||||
|
* an array of {@link java.lang.String} objects.
|
||||||
|
*/
|
||||||
|
public Target(final Card src, final String select, final String[] valid) {
|
||||||
|
this(src, select, valid, "1", "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Constructor for Target.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param src
|
||||||
|
* a {@link forge.Card} object.
|
||||||
|
* @param select
|
||||||
|
* a {@link java.lang.String} object.
|
||||||
|
* @param valid
|
||||||
|
* a {@link java.lang.String} object.
|
||||||
|
*/
|
||||||
|
public Target(final Card src, final String select, final String valid) {
|
||||||
|
this(src, select, valid.split(","), "1", "1");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Constructor for Target.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param src
|
||||||
|
* a {@link forge.Card} object.
|
||||||
|
* @param select
|
||||||
|
* a {@link java.lang.String} object.
|
||||||
|
* @param valid
|
||||||
|
* an array of {@link java.lang.String} objects.
|
||||||
|
* @param min
|
||||||
|
* a {@link java.lang.String} object.
|
||||||
|
* @param max
|
||||||
|
* a {@link java.lang.String} object.
|
||||||
|
*/
|
||||||
|
public Target(final Card src, final String select, final String[] valid, final String min, final String max) {
|
||||||
|
this.srcCard = src;
|
||||||
|
this.tgtValid = true;
|
||||||
|
this.vtSelection = select;
|
||||||
|
this.validTgts = valid;
|
||||||
|
|
||||||
|
this.minTargets = min;
|
||||||
|
this.maxTargets = max;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* getSourceCard.
|
* getSourceCard.
|
||||||
@@ -101,8 +211,6 @@ public class Target {
|
|||||||
this.choice = tc;
|
this.choice = tc;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean bMandatory = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* getMandatory.
|
* getMandatory.
|
||||||
@@ -126,10 +234,6 @@ public class Target {
|
|||||||
this.bMandatory = m;
|
this.bMandatory = m;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean tgtValid = false;
|
|
||||||
private String[] validTgts;
|
|
||||||
private String vtSelection = "";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* doesTarget.
|
* doesTarget.
|
||||||
@@ -163,9 +267,6 @@ public class Target {
|
|||||||
return this.vtSelection;
|
return this.vtSelection;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String minTargets;
|
|
||||||
private String maxTargets;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the min targets.
|
* Gets the min targets.
|
||||||
*
|
*
|
||||||
@@ -247,8 +348,6 @@ public class Target {
|
|||||||
return (this.choice != null) && (this.getMinTargets(c, sa) <= this.choice.getNumTargeted());
|
return (this.choice != null) && (this.getMinTargets(c, sa) <= this.choice.getNumTargeted());
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ZoneType> tgtZone = Arrays.asList(ZoneType.Battlefield);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* setZone.
|
* setZone.
|
||||||
@@ -282,10 +381,6 @@ public class Target {
|
|||||||
return this.tgtZone;
|
return this.tgtZone;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used for Counters. Currently, Spell,Activated,Triggered can be
|
|
||||||
// Comma-separated
|
|
||||||
private String targetSpellAbilityType = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Setter for the field <code>targetSpellAbilityType</code>.
|
* Setter for the field <code>targetSpellAbilityType</code>.
|
||||||
@@ -309,9 +404,6 @@ public class Target {
|
|||||||
return this.targetSpellAbilityType;
|
return this.targetSpellAbilityType;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used for Counters. The target SA of this SA must be targeting a Valid X
|
|
||||||
private String saValidTargeting = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* setSAValidTargeting.
|
* setSAValidTargeting.
|
||||||
@@ -448,141 +540,6 @@ public class Target {
|
|||||||
this.choice = null;
|
this.choice = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Constructor for Target.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param target
|
|
||||||
* a {@link forge.card.spellability.Target} object.
|
|
||||||
*/
|
|
||||||
public Target(final Target target) {
|
|
||||||
|
|
||||||
this.tgtValid = true;
|
|
||||||
this.srcCard = target.getSourceCard();
|
|
||||||
this.vtSelection = target.getVTSelection();
|
|
||||||
this.validTgts = target.getValidTgts();
|
|
||||||
this.minTargets = target.getMinTargets();
|
|
||||||
this.maxTargets = target.getMaxTargets();
|
|
||||||
this.tgtZone = target.getZone();
|
|
||||||
this.targetSpellAbilityType = target.getTargetSpellAbilityType();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Constructor for Target.
|
|
||||||
* </p>
|
|
||||||
* DEPRECATED!!! This will be removed after 1.3.5 is released
|
|
||||||
*
|
|
||||||
* @param src
|
|
||||||
* a {@link forge.Card} object.
|
|
||||||
* @param parse
|
|
||||||
* a {@link java.lang.String} object.
|
|
||||||
* @param min
|
|
||||||
* a {@link java.lang.String} object.
|
|
||||||
* @param max
|
|
||||||
* a {@link java.lang.String} object.
|
|
||||||
*/
|
|
||||||
// @Deprecated
|
|
||||||
// public Target(final Card src, String parse, final String min, final String max) {
|
|
||||||
// // parse=Tgt{C}{P} - Primarily used for Pump or Damage
|
|
||||||
// // C = Creature P=Player/Planeswalker
|
|
||||||
// // CP = All three
|
|
||||||
//
|
|
||||||
// this.tgtValid = true;
|
|
||||||
// this.srcCard = src;
|
|
||||||
//
|
|
||||||
// if (parse.contains("Tgt")) {
|
|
||||||
// parse = parse.replace("Tgt", "");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// String valid;
|
|
||||||
// String prompt;
|
|
||||||
// final StringBuilder sb = new StringBuilder();
|
|
||||||
//
|
|
||||||
// if (parse.equals("CP")) {
|
|
||||||
// valid = "Creature,Player";
|
|
||||||
// prompt = "Select target creature or player";
|
|
||||||
// } else if (parse.equals("C")) {
|
|
||||||
// valid = "Creature";
|
|
||||||
// prompt = "Select target creature";
|
|
||||||
// } else if (parse.equals("P")) {
|
|
||||||
// valid = "Player";
|
|
||||||
// prompt = "Select player";
|
|
||||||
// } else {
|
|
||||||
// System.out.println("Bad Parsing in Target(parse, min, max): " + parse);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (src != null) {
|
|
||||||
// sb.append(src + " - ");
|
|
||||||
// }
|
|
||||||
// sb.append(prompt);
|
|
||||||
// this.vtSelection = sb.toString();
|
|
||||||
// this.validTgts = valid.split(",");
|
|
||||||
//
|
|
||||||
// this.minTargets = min;
|
|
||||||
// this.maxTargets = max;
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Constructor for Target.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param src
|
|
||||||
* a {@link forge.Card} object.
|
|
||||||
* @param select
|
|
||||||
* a {@link java.lang.String} object.
|
|
||||||
* @param valid
|
|
||||||
* an array of {@link java.lang.String} objects.
|
|
||||||
*/
|
|
||||||
public Target(final Card src, final String select, final String[] valid) {
|
|
||||||
this(src, select, valid, "1", "1");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Constructor for Target.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param src
|
|
||||||
* a {@link forge.Card} object.
|
|
||||||
* @param select
|
|
||||||
* a {@link java.lang.String} object.
|
|
||||||
* @param valid
|
|
||||||
* a {@link java.lang.String} object.
|
|
||||||
*/
|
|
||||||
public Target(final Card src, final String select, final String valid) {
|
|
||||||
this(src, select, valid.split(","), "1", "1");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Constructor for Target.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param src
|
|
||||||
* a {@link forge.Card} object.
|
|
||||||
* @param select
|
|
||||||
* a {@link java.lang.String} object.
|
|
||||||
* @param valid
|
|
||||||
* an array of {@link java.lang.String} objects.
|
|
||||||
* @param min
|
|
||||||
* a {@link java.lang.String} object.
|
|
||||||
* @param max
|
|
||||||
* a {@link java.lang.String} object.
|
|
||||||
*/
|
|
||||||
public Target(final Card src, final String select, final String[] valid, final String min, final String max) {
|
|
||||||
this.srcCard = src;
|
|
||||||
this.tgtValid = true;
|
|
||||||
this.vtSelection = select;
|
|
||||||
this.validTgts = valid;
|
|
||||||
|
|
||||||
this.minTargets = min;
|
|
||||||
this.maxTargets = max;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* getTargetedString.
|
* getTargetedString.
|
||||||
|
|||||||
Reference in New Issue
Block a user