- Deleted the deck directories (they were causing trouble for me - not sure why), I had to manually delete them after every update.

- Some minor fixes (can't remember exactly).
- Compactified and removed suppressed warnings from CardListUtil.java, also added "sort by keyword" functionality.
- Added cards Triadasoul submitted: Daru Encampment, Skarrg, the Rage Pits, Goblin Burrows, Urza's Factory, Hedron Crab, Mind Funeral, Traumatize, Haunting Echoes, Path to Exile, Millstone, Wood Elves, Assembly-Worker, Lhurgoyf, Noijen, Heart of Progress, Shizo, Death's Storehouse, Spawning Pool.
This commit is contained in:
jendave
2011-08-06 02:53:33 +00:00
parent f7f3692572
commit 5ec063f052
57 changed files with 1350 additions and 1526 deletions

48
.gitattributes vendored
View File

@@ -10,54 +10,6 @@ res/booster-decks -text svneol=unset#unset
res/card-pictures.txt -text svneol=native#text/plain
res/cards.txt -text svneol=native#text/plain
res/common.txt -text svneol=native#text/plain
res/decks/draft-1.bdk/0.dck -text
res/decks/draft-1.bdk/1.dck -text
res/decks/draft-1.bdk/2.dck -text
res/decks/draft-1.bdk/3.dck -text
res/decks/draft-1.bdk/4.dck -text
res/decks/draft-1.bdk/5.dck -text
res/decks/draft-1.bdk/6.dck -text
res/decks/draft-1.bdk/7.dck -text
res/decks/draft-2.bdk/0.dck -text
res/decks/draft-2.bdk/1.dck -text
res/decks/draft-2.bdk/2.dck -text
res/decks/draft-2.bdk/3.dck -text
res/decks/draft-2.bdk/4.dck -text
res/decks/draft-2.bdk/5.dck -text
res/decks/draft-2.bdk/6.dck -text
res/decks/draft-2.bdk/7.dck -text
res/decks/llll.bdk/0.dck -text
res/decks/llll.bdk/1.dck -text
res/decks/llll.bdk/2.dck -text
res/decks/llll.bdk/3.dck -text
res/decks/llll.bdk/4.dck -text
res/decks/llll.bdk/5.dck -text
res/decks/llll.bdk/6.dck -text
res/decks/llll.bdk/7.dck -text
res/decks/now.bdk/0.dck -text
res/decks/now.bdk/1.dck -text
res/decks/now.bdk/2.dck -text
res/decks/now.bdk/3.dck -text
res/decks/now.bdk/4.dck -text
res/decks/now.bdk/5.dck -text
res/decks/now.bdk/6.dck -text
res/decks/now.bdk/7.dck -text
res/decks/now3.bdk/0.dck -text
res/decks/now3.bdk/1.dck -text
res/decks/now3.bdk/2.dck -text
res/decks/now3.bdk/3.dck -text
res/decks/now3.bdk/4.dck -text
res/decks/now3.bdk/5.dck -text
res/decks/now3.bdk/6.dck -text
res/decks/now3.bdk/7.dck -text
res/decks/now99.bdk/0.dck -text
res/decks/now99.bdk/1.dck -text
res/decks/now99.bdk/2.dck -text
res/decks/now99.bdk/3.dck -text
res/decks/now99.bdk/4.dck -text
res/decks/now99.bdk/5.dck -text
res/decks/now99.bdk/6.dck -text
res/decks/now99.bdk/7.dck -text
res/gui/display_layout.xml svneol=native#text/xml
res/gui/gui.properties svneol=native#text/plain
res/lang/de.properties svneol=native#text/plain

View File

@@ -18,18 +18,34 @@ forest.jpg http://resources.wizards.com/magic/cards/unh/en-us/card73946.jpg
forest1.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=2748
forest2.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=587
forest3.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=586
haunting_echoes.jpg http://www.wizards.com/global/images/magic/general/haunting_echoes.jpg
hedron_crab.jpg http://www.wizards.com/global/images/magic/general/hedron_crab.jpg
daru_encampment.jpg http://www.wizards.com/global/images/magic/general/Daru_Encampment.jpg
skarrg_the_rage_pits.jpg http://www.wizards.com/global/images/magic/general/skarrg_the_rage_pits.jpg
goblin_burrows.jpg http://www.wizards.com/global/images/magic/general/goblin_burrows.jpg
urzas_factory.jpg http://www.wizards.com/global/images/magic/general/urzas_factory.jpg
mind_funeral.jpg http://www.wizards.com/global/images/magic/general/mind_funeral.jpg
traumatize.jpg http://www.wizards.com/global/images/magic/general/traumatize.jpg
path_to_exile.jpg http://www.wizards.com/global/images/magic/general/path_to_exile.jpg
millstone.jpg http://www.wizards.com/global/images/magic/general/millstone.jpg
wood_elves.jpg http://www.wizards.com/global/images/magic/general/wood_elves.jpg
assembly_worker.jpg http://www.wizards.com/global/images/magic/general/assembly_worker.jpg
shizo_deaths_storehouse.jpg http://www.wizards.com/global/images/magic/general/Shizo_Deaths_Storehouse.jpg
novijen_heart_of_progress.jpg http://www.wizards.com/global/images/magic/general/novijen_heart_of_progress.jpg
lhurgoyf.jpg http://www.wizards.com/global/images/magic/general/Lhurgoyf.jpg
spawning_pool.jpg http://www.wizards.com/global/images/magic/general/spawning_pool.jpg
boggart_birth_rite.jpg http://www.wizards.com/global/images/magic/general/boggart_birth_rite.jpg
deaths_duet.jpg http://www.wizards.com/global/images/magic/general/deaths_duet.jpg
urborg_uprising.jpg http://www.wizards.com/global/images/magic/general/urborg_uprising.jpg
sarkhan_vol.jpg http://www.wizards.com/global/images/magic/general/sarkhan_vol.jpg
deaths_duet.jpg http://www.wizards.com/global/images/magic/general/deaths_duet.jpg
urborg_uprising.jpg http://www.wizards.com/global/images/magic/general/urborg_uprising.jpg
sarkhan_vol.jpg http://www.wizards.com/global/images/magic/general/sarkhan_vol.jpg
tezzeret_the_seeker.jpg http://www.wizards.com/global/images/magic/general/tezzeret_the_seeker.jpg
archivist.jpg http://www.wizards.com/global/images/magic/general/archivist.jpg
fire_bowman.jpg http://www.wizards.com/global/images/magic/general/fire_bowman.jpg
archivist.jpg http://www.wizards.com/global/images/magic/general/archivist.jpg
fire_bowman.jpg http://www.wizards.com/global/images/magic/general/fire_bowman.jpg
riding_the_dilu_horse.jpg http://www.wizards.com/global/images/magic/general/riding_the_dilu_horse.jpg
magus_of_the_coffers.jpg http://www.wizards.com/global/images/magic/general/magus_of_the_coffers.jpg
cabal_coffers.jpg http://www.wizards.com/global/images/magic/general/cabal_coffers.jpg
cabal_coffers.jpg http://www.wizards.com/global/images/magic/general/cabal_coffers.jpg
xiahou_dun_the_one_eyed.jpg http://www.wizards.com/global/images/magic/general/xiahou_dun_the_one_eyed.jpg
loyal_retainers.jpg http://www.wizards.com/global/images/magic/general/loyal_retainers.jpg
loyal_retainers.jpg http://www.wizards.com/global/images/magic/general/loyal_retainers.jpg
kor_cartographer.jpg http://www.wizards.com/global/images/magic/general/kor_cartographer.jpg
celestial_purge.jpg http://www.wizards.com/global/images/magic/general/celestial_purge.jpg
door_to_nothingness.jpg http://www.wizards.com/global/images/magic/general/door_to_nothingness.jpg

View File

@@ -1,3 +1,96 @@
Haunting Echoes
3 B B
Sorcery
Remove all cards in target player's graveyard other than basic land cards from the game. Search that player's library for all cards with the same name as cards removed this way, and remove them from the game. Then that player shuffles his or her library.
Daru Encampment
no cost
Land
no text
tap: add 1
Skarrg, the Rage Pits
no cost
Land
no text
tap: add 1
Goblin Burrows
no cost
Land
no text
tap: add 1
Urza's Factory
no cost
Land Urza's
no text
tap: add 1
Hedron Crab
U
Creature Crab
Landfall - Whenever a land enters the battlefield under your control, target player puts the top three cards of his or her library into his or her graveyard.
0/2
Landfall
Mind Funeral
1 U B
Sorcery
Target opponent reveals cards from the top of his or her library until four land cards are revealed. That player puts all cards revealed this way into his or her graveyard.
Traumatize
3 U U
Sorcery
Target player puts the top half of his or her library, rounded down, into his or her graveyard.
Path to Exile
W
Instant
Exile target creature. Its controller may search his or her library for a basic land card, put that card onto the battlefield tapped, then shuffle his or her library.
Millstone
2
Artifact
no text
Wood Elves
2 G
Creature Elf Scout
When Wood Elves comes into play, search your library for a Forest card and put that card into play. Then shuffle your library.
1/1
Assembly-Worker
3
Artifact Creature Assembly-Worker
no text
2/2
Lhurgoyf
2 G G
Creature Lhurgoyf
Lhurgoyf's power is equal to the number of creature cards in all graveyards and its toughness is equal to that number plus 1.
0/1
Novijen, Heart of Progress
no cost
Land
no text
tap: add 1
Shizo, Death's Storehouse
no cost
Legendary Land
no text
tap: add B
Spawning Pool
no cost
Land
no text
Comes into play tapped.
tap: add B
Laquatus's Champion
4 B B
Creature Nightmare Horror

View File

@@ -1,54 +0,0 @@
draft-1
[general]
draft
[main]
1 Phantom Warrior
1 Keiga, the Tide Star
1 Remove Soul
1 Ghost Ship
1 Primal Clay
1 Mox Emerald
1 Blind Phantasm
1 Opt
1 Concentrate
1 Air Elemental
1 Nevinyrral's Disk
1 Killer Whale
1 Phantom Monster
15 Island
1 Fighting Drake
3 Serendib Efreet
1 Allied Strategies
1 Peel from Reality
1 Cloud of Faeries
1 Coastal Hornclaw
1 Wayward Soul
1 Mox Jet
1 Psionic Blast
1 Whiptongue Frog
[sideboard]
1 Armageddon
25 Island
1 Kabuto Moth
1 Godless Shrine
1 Gaea's Anthem
1 Fomori Nomad
1 Darksteel Gargoyle
1 Ashes to Ashes
1 Royal Assassin
40 Swamp
1 Wall of Kelp
1 Kokusho, the Evening Star
40 Plains
1 That Which Was Taken
1 Hammerfist Giant
1 Bottle Gnomes
1 Blinkmoth Nexus
1 Caller of the Claw
1 Wit's End
40 Forest
1 Cloudseeker
1 Phyrexian Hulk
1 Take Possession
1 Might of Oaks
40 Mountain

View File

@@ -1,25 +0,0 @@
[general]
draft
[main]
1 Pongify
1 Peregrine Drake
1 Snapping Drake
1 Air Elemental
1 Wall of Kelp
1 Balduvian Barbarians
2 Spark Spray
3 Goblin Sky Raider
1 Tarox Bladewing
2 Wonder
9 Island
1 Kiki-Jiki, Mirror Breaker
1 Threaten
1 Feral Lightning
1 Storm Crow
1 Frostling
1 Brute Force
9 Mountain
1 Man-o'-War
1 Horned Turtle
[sideboard]

View File

@@ -1,27 +0,0 @@
[general]
draft
[main]
1 Whirlpool Rider
1 Vedalken Mastermind
1 Goldmeadow Lookout
1 Ghost Ship
1 Lightning Angel
9 Plains
2 Raise the Alarm
1 Killer Whale
1 Leonin Skyhunter
1 Phantom Monster
1 Wonder
1 Spotted Griffin
9 Island
1 Floating-Dream Zubera
1 Wrath of God
1 Angel of Mercy
1 Ghost-Lit Redeemer
1 Saltblast
1 Foot Soldiers
2 Breath of Life
1 Sky Swallower
1 Azure Drake
[sideboard]

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Spitting Spider
1 Ember-Fist Zubera
1 Llanowar Mentor
1 Commune with Nature
1 Jugan, the Rising Star
1 Wildsize
1 Hill Giant
1 Giant Growth
1 Kiki-Jiki, Mirror Breaker
1 Arashi, the Sky Asunder
1 Penumbra Kavu
9 Forest
1 Prodigal Pyromancer
2 Spined Wurm
1 Needle Storm
1 Pulse of the Tangle
1 Ryusei, the Falling Star
1 Fomori Nomad
1 Wrap in Vigor
1 Transluminant
1 Llanowar Behemoth
1 Sakura-Tribe Elder
9 Mountain
[sideboard]

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Angelic Blessing
9 Plains
1 Worldly Tutor
1 Veteran Armorer
1 Ashcoat Bear
1 Groundbreaker
9 Forest
1 Wrath of God
1 Torii Watchward
1 Gift of Estates
1 Primal Boost
1 Lantern Kami
1 Giant Dustwasp
2 Redwood Treefolk
1 Weathered Wayfarer
1 Eager Cadet
1 Serra Avenger
1 Ghost Warden
1 Wrap in Vigor
1 Troll Ascetic
1 Kami of Old Stone
1 Sakura-Tribe Elder
1 Elvish Piper
[sideboard]

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Needlespeak Spider
1 Jackal Pup
9 Plains
1 Silent-Chant Zubera
1 Char
1 Goretusk Firebeast
2 Tremor
1 Kabuto Moth
1 Torii Watchward
1 Gift of Estates
1 Lay Waste
1 Weathered Wayfarer
1 Disciple of Kangee
1 Eager Cadet
1 Courier Hawk
1 Fomori Nomad
1 Pyroclasm
1 Shinka Gatekeeper
1 Diving Griffin
1 Kami of Old Stone
1 Skyknight Legionnaire
9 Mountain
1 Wojek Embermage
[sideboard]

View File

@@ -1,25 +0,0 @@
[general]
draft
[main]
1 Royal Assassin
9 Swamp
2 Helldozer
1 Giant Cockroach
1 Terror
1 Villainous Ogre
9 Island
2 Daggerclaw Imp
1 Foul Imp
1 Hand of Cruelty
1 Visara the Dreadful
1 Peel from Reality
2 Cackling Imp
2 Phyrexian Rager
1 Regress
1 Kemuri-Onna
1 Amnesia
1 Drudge Skeletons
1 Ashes to Ashes
1 Infest
[sideboard]

View File

@@ -1,26 +0,0 @@
[general]
draft
[main]
9 Swamp
1 Gluttonous Zombie
1 Serpent Warrior
1 Commune with Nature
1 Utopia Tree
2 Juzam Djinn
1 Caller of the Claw
1 Giant Growth
1 Watchwolf
1 Groundbreaker
9 Forest
1 Kodama's Reach
1 Wild Mongrel
2 Hand of Cruelty
1 Visara the Dreadful
1 Slaughterhouse Bouncer
1 Cackling Imp
1 Fledgling Djinn
1 Cao Cao, Lord of Wei
1 Elvish Fury
2 Wandering Stream
[sideboard]

View File

@@ -1,51 +0,0 @@
draft-2
[general]
draft
[main]
1 Needlespeak Spider
1 Tortuga
1 Shivan Dragon
1 Steel Wall
1 Char
2 Flamebreak
1 Dragon Roost
2 Kiki-Jiki, Mirror Breaker
2 Orcish Artillery
2 Feral Lightning
1 Mox Ruby
1 Goblin Piker
1 Frost Ogre
1 Mox Pearl
1 Shock
1 Raging Minotaur
1 Rorix Bladewing
1 Greater Forgeling
1 Brute Force
1 Dancing Scimitar
1 Skirk Shaman
15 Mountain
[sideboard]
1 Royal Assassin
1 Lava Spike
40 Swamp
40 Plains
1 Remand
1 Kavu Climber
1 Tribal Flames
40 Island
1 Groundbreaker
1 Molten Rain
1 Path of Anger's Flame
40 Forest
1 Archangel
1 Erratic Explosion
1 Lay Waste
1 Take Possession
2 Firebolt
1 Malach of the Dawn
1 Undying Beast
1 Pestilence
1 Dusk Imp
1 Darksteel Gargoyle
1 Infernal Kirin
25 Mountain

View File

@@ -1,29 +0,0 @@
[general]
draft
[main]
1 Mogg Fanatic
1 Strangling Soot
1 Lightning Elemental
1 Ember-Fist Zubera
9 Swamp
1 Funeral Charm
1 Scathe Zombies
1 Will-o'-the-Wisp
1 Hand of Cruelty
1 Raging Goblin
1 Sengir Vampire
1 Ashen-Skin Zubera
1 Cao Cao, Lord of Wei
1 Fire Imp
1 Fomori Nomad
1 Firebolt
1 Undying Beast
1 Beacon of Destruction
1 Vulshok Sorcerer
1 Kemuri-Onna
1 Ashes to Ashes
9 Mountain
1 Infest
1 Skirk Shaman
[sideboard]

View File

@@ -1,26 +0,0 @@
[general]
draft
[main]
1 Do or Die
2 Goldmeadow Lookout
1 Armageddon
9 Swamp
1 Helldozer
9 Plains
1 Raise the Alarm
1 Revered Dead
1 Douse in Gloom
2 Stern Judge
1 Foul Imp
1 Kabuto Moth
1 Archangel
1 Visara the Dreadful
1 March of Souls
1 Cao Cao, Lord of Wei
2 Foot Soldiers
1 Courier Hawk
1 Mistral Charger
1 Raise Dead
1 Phyrexian Rager
[sideboard]

View File

@@ -1,29 +0,0 @@
[general]
draft
[main]
1 Evacuation
1 Vedalken Mastermind
1 Primal Plasma
1 Ghost Ship
1 Opt
1 Mawcor
1 Impulse
1 Wall of Kelp
1 Caller of the Claw
1 Frostweb Spider
1 Symbiotic Elf
1 Giant Growth
1 Wonder
9 Island
9 Forest
1 Giant Dustwasp
1 Aven Fisher
1 Trained Armodon
1 Nessian Courser
1 Regrowth
1 Wrap in Vigor
1 Sky Swallower
1 Azure Drake
1 Man-o'-War
[sideboard]

View File

@@ -1,27 +0,0 @@
[general]
draft
[main]
1 Phantom Warrior
1 Keiga, the Tide Star
1 Lava Spike
1 Vodalian Merchant
1 Impulse
1 Bonded Fetch
1 Sarcomite Myr
2 Goblin Sky Raider
1 Hidetsugu's Second Rite
9 Island
1 Anarchist
1 Erratic Explosion
1 Furnace Spirit
1 Raging Minotaur
1 Fomori Nomad
1 Mahamoti Djinn
1 Firebolt
1 Pyroclasm
1 Vulshok Sorcerer
9 Mountain
1 Wojek Embermage
2 Horned Turtle
[sideboard]

View File

@@ -1,24 +0,0 @@
[general]
draft
[main]
1 Isamaru, Hound of Konda
1 White Shield Crusader
1 Ghost Ship
1 Armageddon
9 Plains
1 Impulse
1 Wall of Kelp
2 Savannah Lions
2 Sarcomite Myr
1 Bonded Fetch
1 Thought Courier
9 Island
2 Angel of Mercy
1 Repulse
1 Renewed Faith
1 Take Possession
1 Life Burst
2 Coastal Hornclaw
2 Skyknight Legionnaire
[sideboard]

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Aggressive Urge
1 Birds of Paradise
1 Imperiosaur
1 Tromp the Domains
1 Elvish Warrior
1 Jokulhaups
1 Penumbra Bobcat
1 Hammerfist Giant
1 Hunted Troll
1 Anger
9 Forest
1 Sprout Swarm
1 Primal Boost
1 Frost Ogre
1 Ancient Silverback
2 Trained Armodon
1 Timberwatch Elf
1 Grizzly Bears
1 Llanowar Behemoth
1 Cackling Flames
1 Elvish Piper
9 Mountain
1 Wojek Embermage
[sideboard]

View File

@@ -1,27 +0,0 @@
[general]
draft
[main]
1 Ifh-Biff Efreet
9 Plains
1 Jugan, the Rising Star
1 Penumbra Bobcat
1 Wildsize
2 Veteran Armorer
9 Forest
1 Saltblast
1 Primal Boost
1 Spined Wurm
1 Order of the Sacred Bell
1 Needle Storm
1 Redwood Treefolk
2 Nessian Courser
1 Regrowth
1 Foot Soldiers
1 Serra Avenger
1 Dripping-Tongue Zubera
1 Glory Seeker
1 Malach of the Dawn
1 Squall Drifter
1 Might of Oaks
[sideboard]

View File

@@ -1,46 +0,0 @@
llll
[general]
draft
[main]
[sideboard]
1 Lava Spike
2 Dark Banishing
1 Counsel of the Soratami
1 Terramorphic Expanse
1 Blind Phantasm
1 Bonded Fetch
40 Island
1 Avian Changeling
1 Castle Raptors
1 Goblin Skycutter
1 Crazed Skirge
1 Erratic Explosion
2 Feudkiller's Verdict
1 Courier Hawk
1 Fomori Nomad
1 Life Burst
2 Changeling Sentinel
1 Defiant Elf
1 Essence Warden
1 Assault Zeppelid
40 Swamp
40 Plains
1 Goretusk Firebeast
1 Bottle Gnomes
2 Leaf Glider
1 Anger
2 Dross Prowler
1 Foul Imp
1 Echoing Truth
40 Forest
1 Kodama's Reach
1 Cackling Imp
1 Repulse
1 Lignify
3 Ambassador Oak
1 Cloudcrown Oak
1 Coastal Hornclaw
3 Bitterblossom
1 Lucent Liminid
1 Azure Drake
40 Mountain

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Indomitable Ancients
9 Plains
1 Balduvian Barbarians
1 Veteran Armorer
1 Tremor
1 Castle Raptors
1 Anarchist
1 Anger
1 Goblin Ringleader
1 Spark Elemental
1 Lightning Bolt
1 Orcish Artillery
2 Feudkiller's Verdict
1 Raging Minotaur
1 Marble Titan
1 Firebolt
1 Malach of the Dawn
1 Squall Drifter
1 Changeling Sentinel
1 Shinka Gatekeeper
1 Brute Force
9 Mountain
1 Wojek Embermage
[sideboard]

View File

@@ -1,25 +0,0 @@
[general]
draft
[main]
1 Whirlpool Rider
1 Remove Soul
1 Ghost Ship
1 Mad Auntie
1 Korlash, Heir to Blackblade
1 Nightmare
9 Swamp
1 Shriekmaw
1 Killer Whale
1 Scathe Zombies
1 Villainous Ogre
9 Island
1 Floating-Dream Zubera
2 Echoing Truth
1 Highway Robber
2 Hand of Cruelty
2 Mulldrifter
2 Coercion
1 Raise Dead
1 Azure Drake
[sideboard]

View File

@@ -1,27 +0,0 @@
[general]
draft
[main]
2 Reach of Branches
1 Assault Zeppelid
1 Gnarled Mass
2 Giant Warthog
9 Swamp
1 Keening Banshee
1 Immaculate Magistrate
1 Oakgnarl Warrior
1 Funeral Charm
1 Dross Prowler
1 Night's Whisper
9 Forest
1 Wild Mongrel
1 Spined Wurm
1 Dripping-Tongue Zubera
1 Transluminant
1 Vine Trellis
1 Elvish Fury
1 Llanowar Elves
1 Imperious Perfect
1 Defiant Elf
1 Wandering Stream
[sideboard]

View File

@@ -1,29 +0,0 @@
[general]
draft
[main]
1 Lightning Elemental
1 Mad Auntie
1 Nameless Inversion
9 Swamp
1 Gluttonous Zombie
1 Spark Spray
1 Drekavac
1 Scathe Zombies
1 Will-o'-the-Wisp
1 Anarchist
1 Dross Prowler
1 Spark Elemental
1 Visara the Dreadful
1 Goblin Piker
1 Axegrinder Giant
1 Fledgling Djinn
1 Sparkspitter
1 Fomori Nomad
1 Raise Dead
1 Dusk Imp
1 Cackling Flames
1 Ashes to Ashes
9 Mountain
1 Infest
[sideboard]

View File

@@ -1,26 +0,0 @@
[general]
draft
[main]
1 Cranial Extraction
1 Veteran Cavalier
1 Mad Auntie
1 Korlash, Heir to Blackblade
1 Kjeldoran War Cry
9 Swamp
1 Devour in Shadow
9 Plains
1 Revered Dead
2 Prickly Boggart
1 Villainous Ogre
1 Castle Raptors
1 Ghost-Lit Redeemer
2 Hand of Cruelty
1 Raise Dead
1 Sunlance
1 Changeling Sentinel
1 Magus of the Disk
1 Lucent Liminid
2 Meadowboon
1 Inspirit
[sideboard]

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Reach of Branches
1 Eternal Witness
1 Tromp the Domains
1 Vodalian Merchant
2 Immaculate Magistrate
1 Worldly Tutor
1 Oakgnarl Warrior
1 Caller of the Claw
1 Lumengrid Warden
1 Leaf Glider
1 Rootbreaker Wurm
9 Island
1 Floating-Dream Zubera
9 Forest
1 Words of Wisdom
1 Mulldrifter
1 Needle Storm
1 Bribery
1 Prodigal Sorcerer
1 Coastal Hornclaw
1 Imperious Perfect
1 Llanowar Elves
1 Horned Turtle
[sideboard]

View File

@@ -1,27 +0,0 @@
[general]
draft
[main]
1 Mogg Fanatic
1 Pongify
1 Vedalken Mastermind
1 Blind Phantasm
1 Balduvian Barbarians
1 Wall of Kelp
1 Spark Spray
2 Hill Giant
1 Phantom Monster
9 Island
1 Goblin Ringleader
1 Raging Goblin
1 Axegrinder Giant
1 Furnace Spirit
1 Puppeteer
1 Counterspell
1 Coastal Hornclaw
1 Firebolt
1 Wayward Soul
2 Regress
1 Manta Riders
9 Mountain
[sideboard]

View File

@@ -1,46 +0,0 @@
now
[general]
draft
[main]
1 Blade of the Sixth Pride
1 Briarhorn
9 Plains
1 Veteran Armorer
1 Bottle Gnomes
2 Garruk Wildspeaker
1 Angel of Mercy
1 Wrath of God
8 Forest
2 Swords to Plowshares
2 Scryb Sprites
1 Disciple of Kangee
2 Serra Angel
1 Lignify
1 Malach of the Dawn
1 Mistral Charger
1 Kodama of the North Tree
1 Troll Ascetic
1 Epic Proportions
2 Crib Swap
[sideboard]
1 Aggressive Urge
1 Phantom Warrior
3 Chandra Nalaar
40 Swamp
1 Sliversmith
31 Plains
1 Shriekmaw
1 Damnation
1 Timetwister
2 Sower of Temptation
40 Island
1 Fighting Drake
32 Forest
1 Visara the Dreadful
1 Spined Wurm
1 Howling Mine
1 Take Possession
3 Lignify
2 The Hive
1 Amnesia
40 Mountain

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 White Shield Crusader
1 Serra Sphinx
9 Plains
1 Wall of Kelp
1 Silent-Chant Zubera
1 Savannah Lions
1 Blinding Light
1 Control Magic
1 Thought Courier
1 Wings of Velis Vel
1 Turtleshell Changeling
1 Stern Judge
9 Island
2 Resurrection
1 Torii Watchward
1 Gift of Estates
1 Horseshoe Crab
1 Mulldrifter
1 Disciple of Kangee
1 Marble Titan
1 Kami of Old Stone
1 Horned Turtle
1 Man-o'-War
[sideboard]

View File

@@ -1,27 +0,0 @@
[general]
draft
[main]
1 Carnassid
1 Briarhorn
1 Goblin Chariot
1 Enormous Baloth
1 Utopia Tree
2 Char
1 Penumbra Bobcat
1 Goretusk Firebeast
2 Tarox Bladewing
1 Tribal Flames
1 Kiki-Jiki, Mirror Breaker
1 Molten Rain
9 Forest
1 Frost Ogre
1 Scryb Sprites
1 Animate Land
1 Troll Ascetic
1 Brute Force
1 Reckless Wurm
1 Goblin Balloon Brigade
9 Mountain
1 Essence Warden
[sideboard]

View File

@@ -1,27 +0,0 @@
[general]
draft
[main]
1 Blade of the Sixth Pride
2 White Shield Crusader
1 Briarhorn
1 Eternal Witness
1 Llanowar Mentor
9 Plains
1 Ice Storm
1 Stern Judge
1 Castle Raptors
9 Forest
1 Resurrection
1 Timberwatch Elf
1 Giant Dustwasp
1 March of Souls
1 Regrowth
1 Malach of the Dawn
1 Transluminant
1 Sunlance
1 Magus of the Disk
1 Wirewood Elf
2 Llanowar Behemoth
1 Elvish Fury
[sideboard]

View File

@@ -1,25 +0,0 @@
[general]
draft
[main]
1 Angelfire Crusader
1 Needlespeak Spider
9 Plains
1 Balduvian Barbarians
1 Goretusk Firebeast
1 Molten Rain
1 Goblin Ringleader
1 Archangel
2 Inner-Flame Acolyte
1 Spark Elemental
1 Lay Waste
2 Axegrinder Giant
2 Mudbutton Torchrunner
1 Ryusei, the Falling Star
2 Stone Rain
1 Serra Avenger
1 Beacon of Destruction
1 Cackling Flames
1 Lucent Liminid
9 Mountain
[sideboard]

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Blind Phantasm
9 Swamp
1 Devour in Shadow
2 Kokusho, the Evening Star
1 Damnation
1 Nantuko Shade
1 Expunge
1 Chittering Rats
1 Lumengrid Warden
9 Island
1 Echoing Truth
1 Night's Whisper
1 Foul Imp
1 Highway Robber
1 Hex
1 Hand of Cruelty
1 Slaughterhouse Bouncer
1 Coral Eel
1 Gravedigger
1 Prodigal Sorcerer
1 Kemuri-Onna
1 Infernal Kirin
1 Drudge Skeletons
[sideboard]

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Plague Wind
1 Nameless Inversion
1 Briarhorn
1 Nightmare
9 Swamp
1 Llanowar Mentor
1 Kokusho, the Evening Star
1 Sinkhole
2 Scathe Zombies
1 Watchwolf
1 Dross Prowler
9 Forest
1 Highway Robber
1 Animate Dead
1 Scryb Sprites
1 Ashen-Skin Zubera
1 Demonic Tutor
1 Gravedigger
1 Lignify
1 Llanowar Behemoth
1 Drudge Skeletons
1 Mass of Ghouls
1 Essence Warden
[sideboard]

View File

@@ -1,29 +0,0 @@
[general]
draft
[main]
1 Minions' Murmurs
1 Lightning Elemental
1 Ember-Fist Zubera
1 Blistering Firecat
1 Strangling Soot
1 Needlespeak Spider
1 Flametongue Kavu
9 Swamp
1 Gluttonous Zombie
1 Ball Lightning
1 Tribal Flames
1 Goblin Ringleader
1 Inner-Flame Acolyte
1 Tendrils of Corruption
1 Goblin Piker
1 Mudbutton Torchrunner
1 Cackling Imp
1 Minotaur Explorer
1 Coercion
1 Bog Imp
1 Dusk Imp
1 Cackling Flames
9 Mountain
1 Wojek Embermage
[sideboard]

View File

@@ -1,53 +0,0 @@
now3
[general]
draft
[main]
1 Blade of the Sixth Pride
1 Needlespeak Spider
1 Kjeldoran War Cry
1 Haunted Angel
10 Plains
1 Tarox Bladewing
1 Leonin Skyhunter
1 Spotted Griffin
1 Tribal Flames
1 Kabuto Moth
1 Angel of Mercy
1 Wrath of God
2 Skyhunter Prowler
1 Goblin Skycutter
1 Swords to Plowshares
1 Saltblast
1 Lantern Kami
1 Sparksmith
2 Fire Imp
1 Sunlance
1 Cackling Flames
1 Diving Griffin
7 Mountain
[sideboard]
1 Nightmare
40 Island
1 Lightning Bolt
1 Orcish Artillery
1 Venerable Monk
1 Dripping-Tongue Zubera
1 Glory Seeker
1 Darksteel Gargoyle
1 Ashes to Ashes
1 Spitting Spider
1 Wind Drake
1 Angelic Blessing
40 Swamp
30 Plains
1 Ichor Slick
40 Forest
2 Wild Mongrel
1 Goblin Piker
2 Animate Dead
1 Vine Trellis
1 Karplusan Strider
1 Kemuri-Onna
1 Vulshok Sorcerer
1 Azure Drake
33 Mountain

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Isamaru, Hound of Konda
1 Peregrine Drake
1 Snapping Drake
1 Goldmeadow Lookout
1 Primal Plasma
1 Blind Phantasm
9 Plains
1 Thought Courier
9 Island
1 Ancestral Recall
1 Floating-Dream Zubera
1 Angel of Mercy
1 Skyhunter Prowler
1 Saltblast
2 Peel from Reality
1 Cloudseeker
1 Tithe
1 Coral Eel
1 Repulse
1 Serra Avenger
1 Puppeteer
1 Mistral Charger
1 Diving Griffin
[sideboard]

View File

@@ -1,27 +0,0 @@
[general]
draft
[main]
1 Ember-Fist Zubera
1 Worldly Tutor
1 Goblin Chariot
1 Tarox Bladewing
1 Frostweb Spider
1 Boil
1 Harmonize
1 Baru, Fist of Krosa
1 Path of Anger's Flame
1 Goblin Ringleader
9 Forest
1 Goblin Skycutter
1 Lay Waste
1 Sparksmith
1 Magus of the Library
1 Vine Trellis
1 Karplusan Strider
2 Wirewood Elf
1 Elvish Fury
1 Goblin Balloon Brigade
9 Mountain
2 Essence Warden
[sideboard]

View File

@@ -1,26 +0,0 @@
[general]
draft
[main]
1 Spitting Spider
1 Goldmeadow Lookout
1 Craw Wurm
1 Kjeldoran War Cry
9 Plains
1 Commune with Nature
1 Savannah Lions
1 Veteran Armorer
2 Giant Growth
1 Arashi, the Sky Asunder
1 Baru, Fist of Krosa
9 Forest
1 Archangel
1 Order of the Sacred Bell
2 Tithe
2 Nessian Courser
1 Mistral Charger
1 Transluminant
1 Wirewood Elf
1 Magus of the Disk
1 Essence Warden
[sideboard]

View File

@@ -1,25 +0,0 @@
[general]
draft
[main]
1 Blade of the Sixth Pride
1 Mogg Fanatic
9 Plains
1 Balduvian Barbarians
1 Spark Spray
1 Goblin Chariot
1 Leonin Skyhunter
1 Kiki-Jiki, Mirror Breaker
1 Boil
2 Goblin Skycutter
1 Prodigal Pyromancer
1 Torii Watchward
1 Goblin Piker
2 Erratic Explosion
2 Fomori Nomad
2 Beacon of Destruction
1 Magus of the Disk
1 Goblin Balloon Brigade
1 Lucent Liminid
9 Mountain
[sideboard]

View File

@@ -1,27 +0,0 @@
[general]
draft
[main]
1 Minions' Murmurs
1 Counsel of the Soratami
1 Strangling Soot
1 Faceless Butcher
1 Korlash, Heir to Blackblade
2 Nightmare
9 Swamp
1 Devour in Shadow
1 Keening Banshee
1 Concentrate
2 Chittering Rats
1 Wonder
1 Villainous Ogre
9 Island
1 Echoing Truth
1 Giant Octopus
1 Foul Imp
1 Visara the Dreadful
1 Fledgling Djinn
1 Aven Fisher
1 Coastal Hornclaw
1 Mass of Ghouls
[sideboard]

View File

@@ -1,24 +0,0 @@
[general]
draft
[main]
1 Sengir Autocrat
3 Nightmare
1 Zombify
9 Swamp
1 Keening Banshee
1 Kavu Climber
1 Arashi, the Sky Asunder
1 Daggerclaw Imp
2 Night's Whisper
9 Forest
1 Sorceress Queen
2 Highway Robber
1 Tendrils of Corruption
1 Animate Dead
1 Cackling Imp
1 Ashen-Skin Zubera
2 Transluminant
1 Raise Dead
1 Sakura-Tribe Elder
[sideboard]

View File

@@ -1,22 +0,0 @@
[general]
draft
[main]
1 Sengir Autocrat
1 Needlespeak Spider
1 Korlash, Heir to Blackblade
1 Nightmare
9 Swamp
1 Hammerfist Giant
3 Hill Giant
1 Chittering Rats
2 Funeral Charm
3 Path of Anger's Flame
3 Highway Robber
1 Sorceress Queen
1 Ashen-Skin Zubera
1 Fire Imp
1 Cackling Flames
9 Mountain
1 Skirk Shaman
[sideboard]

View File

@@ -1,51 +0,0 @@
now99
[general]
draft
[main]
1 Royal Assassin
2 Dark Banishing
1 Mox Emerald
1 Steel Wall
1 Keening Banshee
16 Swamp
1 Damnation
1 Douse in Gloom
1 Dross Prowler
2 Daggerclaw Imp
2 Tendrils of Corruption
1 Sengir Vampire
1 Urborg Syphon-Mage
2 Animate Dead
1 Mox Pearl
1 Liliana Vess
1 Ashen-Skin Zubera
1 Seizan, Perverter of Truth
1 Pestilence
1 Phyrexian Rager
1 Dusk Imp
[sideboard]
1 Snapping Drake
1 Ghost Ship
1 The Unspeakable
1 Air Elemental
1 Tanglebloom
1 Tarox Bladewing
40 Island
1 Garruk Wildspeaker
1 Ancestral Recall
1 Goblin Skycutter
1 Liliana Vess
1 Darksteel Gargoyle
1 Dancing Scimitar
2 Primal Clay
24 Swamp
40 Plains
1 That Which Was Taken
1 Char
1 Lumengrid Warden
1 Blinkmoth Nexus
1 Serendib Efreet
40 Forest
1 Raise Dead
1 Whiptongue Frog
40 Mountain

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Assault Zeppelid
1 Lightning Elemental
1 Giant Warthog
1 Flametongue Kavu
1 Worldly Tutor
1 Akki Drillmaster
1 Spark Spray
1 Goblin Sky Raider
1 Goretusk Firebeast
1 Sliver Legion
1 Hill Giant
2 Hidetsugu's Second Rite
9 Forest
1 Barkhide Mauler
1 Wild Mongrel
1 Feral Lightning
1 Wild Elephant
1 Frost Ogre
1 Magus of the Library
1 Brute Force
1 Llanowar Behemoth
1 Elvish Piper
9 Mountain
[sideboard]

View File

@@ -1,27 +0,0 @@
[general]
draft
[main]
1 Goldmeadow Lookout
1 Angelfire Crusader
2 Carnassid
1 Reviving Dose
9 Plains
1 Suntail Hawk
1 Caller of the Claw
1 Hunted Troll
1 Stern Judge
1 Harmonize
9 Forest
1 Swords to Plowshares
1 Lantern Kami
1 Wild Elephant
1 Courier Hawk
1 Animate Land
1 Wrap in Vigor
1 Squall Drifter
1 Mistral Charger
2 Karplusan Strider
1 Kami of Old Stone
1 Inspirit
[sideboard]

View File

@@ -1,26 +0,0 @@
[general]
draft
[main]
1 Goldmeadow Lookout
2 Lightning Elemental
9 Plains
1 Savannah Lions
1 Hammerfist Giant
1 Leonin Skyhunter
1 Hidetsugu's Second Rite
1 Tribal Flames
1 Tremor
1 Boil
2 Intrepid Hero
2 Goblin Ringleader
1 Feral Lightning
1 Soul Warden
1 Frost Ogre
1 Ryusei, the Falling Star
1 Serra Angel
1 Minotaur Explorer
1 Pyroclasm
1 Kami of Old Stone
9 Mountain
[sideboard]

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Ghost Ship
1 Primal Plasma
1 Blind Phantasm
1 Zombify
9 Swamp
1 Mawcor
1 Hymn to Tourach
1 Giant Cockroach
1 Drekavac
1 Killer Whale
1 Thought Courier
9 Island
1 Will-o'-the-Wisp
1 Night's Whisper
1 Sengir Vampire
1 Peel from Reality
1 Coral Eel
2 Cackling Imp
1 Puppeteer
1 Counterspell
1 Amnesia
1 Drudge Skeletons
1 Azure Drake
[sideboard]

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Wellwisher
1 Plague Wind
1 Giant Warthog
9 Swamp
1 Elvish Warrior
1 Llanowar Mentor
1 Sylvan Messenger
1 Giant Cockroach
1 Filthy Cur
1 Sliver Legion
1 Caller of the Claw
1 Daggerclaw Imp
9 Forest
1 Sprout Swarm
1 Tendrils of Corruption
1 Wild Elephant
1 Sengir Vampire
2 Needle Storm
1 Giant Dustwasp
1 Cao Cao, Lord of Wei
1 Phyrexian Rager
1 Karplusan Strider
1 Ashes to Ashes
[sideboard]

View File

@@ -1,28 +0,0 @@
[general]
draft
[main]
1 Mogg Fanatic
1 Faceless Butcher
9 Swamp
1 Helldozer
1 Drekavac
1 Goretusk Firebeast
1 Juzam Djinn
1 Flamebreak
1 Chittering Rats
1 Scathe Zombies
1 Kiki-Jiki, Mirror Breaker
1 Boil
1 Night's Whisper
1 Foul Imp
1 Sengir Vampire
2 Animate Dead
1 Urborg Syphon-Mage
1 Sparkspitter
1 Greater Forgeling
1 Dusk Imp
1 Vulshok Sorcerer
1 Ashes to Ashes
9 Mountain
[sideboard]

View File

@@ -1,25 +0,0 @@
[general]
draft
[main]
1 Radiant, Archangel
1 Angelfire Crusader
2 Armageddon
9 Swamp
1 Lightning Angel
9 Plains
1 Veteran Armorer
1 Chittering Rats
1 Foul Imp
3 Angel of Mercy
1 Tendrils of Corruption
2 Swords to Plowshares
1 Sengir Vampire
1 Soul Warden
1 Venerable Monk
1 Gravedigger
1 Squall Drifter
1 Phyrexian Rager
1 Sunlance
1 Infernal Kirin
[sideboard]

View File

@@ -1,6 +1,6 @@
program/mail=mtgerror@yahoo.com
program/forum=http://www.slightlymagic.net/forum/viewforum.php?f=26
program/version=MTG Forge -- official beta: 09/11/25, SVN revision: 119
program/version=MTG Forge -- official beta: 09/11/25, SVN revision: 122
tokens--file=AllTokens.txt

View File

@@ -12510,17 +12510,21 @@ public class CardFactory implements NewConstants {
}
if(nonCreatureCards.size() == 0)
return;
if(cards.size() == 0)
return;
//human chooses
if(card.getController().equals(Constant.Player.Human))
{
AllZone.Display.getChoice("Revealing hand", cards.toArray());
if(nonCreatureCards.size() == 0)
return;
choice = (Card) AllZone.Display.getChoice("Choose", nonCreatureCards.toArray());
}
else//computer chooses
{
if(nonCreatureCards.size() == 0)
return;
choice = CardUtil.getRandom(nonCreatureCards.toArray());
}
@@ -12581,20 +12585,23 @@ public class CardFactory implements NewConstants {
//System.out.println("ostracize: " + cards.get(i).getType());
creatureCards.add(cards.get(i));
}
}
if(creatureCards.size() == 0)
if(cards.size() == 0)
return;
//human chooses
if(card.getController().equals(Constant.Player.Human))
{
AllZone.Display.getChoice("Revealing hand", cards.toArray());
if(creatureCards.size() == 0)
return;
choice = (Card) AllZone.Display.getChoice("Choose", creatureCards.toArray());
}
else//computer chooses
{
if(creatureCards.size() == 0)
return;
choice = CardUtil.getRandom(creatureCards.toArray());
}
@@ -17209,6 +17216,279 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if (cardName.equals("Millstone"))
{
Ability_Tap ab1 = new Ability_Tap(card, "2")
{
private static final long serialVersionUID = 42470566751344693L;
public boolean canPlayAI()
{
String player = getTargetPlayer();
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
CardList libList = new CardList(lib.getCards());
return libList.size() > 0;
}
public void resolve()
{
String player = getTargetPlayer();
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, player);
CardList libList = new CardList(lib.getCards());
int max = 2;
if (libList.size() < 2)
max = libList.size();
for (int i=0;i<max;i++)
{
Card c = libList.get(i);
lib.remove(c);
grave.add(c);
}
}
};
ab1.setChooseTargetAI(CardFactoryUtil.AI_targetHuman());
ab1.setBeforePayMana(CardFactoryUtil.input_targetPlayer(ab1));
ab1.setDescription("2, tap: Target player puts the top two cards of his or her library into his or her graveyard.");
card.addSpellAbility(ab1);
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Path to Exile"))
{
SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = 4752934806606319269L;
public void resolve()
{
if(AllZone.GameAction.isCardInPlay(getTargetCard()) && CardFactoryUtil.canTarget(card, getTargetCard()) )
{
//add life
String player = getTargetCard().getController();
// PlayerLife life = AllZone.GameAction.getPlayerLife(player);
// life.addLife(getTargetCard().getNetAttack());
PlayerZone lib = AllZone.getZone(Constant.Zone.Library,
player);
CardList lands = new CardList(lib.getCards());
lands = lands.getType("Basic");
if (player.equals("Human") && lands.size() > 0)
{
String[] choices =
{ "Yes", "No" };
Object choice = AllZone.Display.getChoice(
"Search fo Basic Land?", choices);
if (choice.equals("Yes"))
{
Object o = AllZone.Display
.getChoiceOptional(
"Pick a basic land card to put into play",
lands.toArray());
if (o != null)
{
Card card = (Card) o;
lib.remove(card);
AllZone.Human_Play.add(card);
card.tap();
lands.remove(card);
AllZone.GameAction.shuffle(player);
}
}// if choice yes
} // player equals human
else if (player.equals("Computer") && lands.size() > 0)
{
Card card = lands.get(0);
lib.remove(card);
// hand.add(card);
AllZone.Computer_Play.add(card);
card.tap();
lands.remove(card);
AllZone.GameAction.shuffle(player);
}
//remove card from play
AllZone.GameAction.removeFromGame(getTargetCard());
}
}//resolve()
public boolean canPlayAI()
{
CardList creature = new CardList(AllZone.Human_Play.getCards());
creature = creature.getType("Creature");
creature = creature.filter(new CardListFilter()
{
public boolean addCard(Card c) {
return CardFactoryUtil.canTarget(card,c);
}
});
return creature.size() != 0 && (AllZone.Phase.getTurn() > 4);
}
public void chooseTargetAI()
{
CardList play = new CardList(AllZone.Human_Play.getCards());
Card target = CardFactoryUtil.AI_getBestCreature(play, card);
setTargetCard(target);
}
};
spell.setBeforePayMana(CardFactoryUtil.input_targetCreature(spell));
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START **************************
if (cardName.equals("Traumatize"))
{
final SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = 42470566751344693L;
public boolean canPlayAI()
{
String player = getTargetPlayer();
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
CardList libList = new CardList(lib.getCards());
return libList.size() > 0;
}
public void resolve()
{
String player = getTargetPlayer();
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, player);
CardList libList = new CardList(lib.getCards());
int max = libList.size()/2 ;
for (int i=0;i<max;i++)
{
Card c = libList.get(i);
lib.remove(c);
grave.add(c);
}
}
};//SpellAbility
spell.setBeforePayMana(CardFactoryUtil.input_targetPlayer(spell));
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START **************************
if (cardName.equals("Mind Funeral"))
{
final SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = 42470566751344693L;
public boolean canPlayAI()
{
String player = getTargetPlayer();
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
CardList libList = new CardList(lib.getCards());
return libList.size() > 0;
}
public void resolve()
{
String player = getTargetPlayer();
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, player);
CardList libList = new CardList(lib.getCards());
int max = libList.size();
int prev = 0 ;
int count = 0;
int total =0;
int once = 0;
for (int i=0;i<max;i++)
{
Card c = libList.get(i);
if (c.getType().contains("Land"))
{
if (prev == 1) count= count + 1;
else count = 1;
prev=1;
}
else prev=0;
if (count == 4) once = once +1;
if (once == 1 && count == 4) total=i;
}
for (int i=0;i<total+1;i++)
{
Card c = libList.get(i);
lib.remove(c);
grave.add(c);
}
}
};//SpellAbility
spell.setBeforePayMana(CardFactoryUtil.input_targetPlayer(spell));
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START **************************
if (cardName.equals("Haunting Echoes"))
{
final SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = 42470566751344693L;
public boolean canPlayAI()
{
String player = getTargetPlayer();
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
CardList libList = new CardList(lib.getCards());
return libList.size() > 0;
}
public void resolve()
{
String player = getTargetPlayer();
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, player);
PlayerZone exiled = AllZone.getZone(Constant.Zone.Removed_From_Play, player);
CardList libList = new CardList(lib.getCards());
CardList grvList = new CardList(grave.getCards());
int max = libList.size();
int grv = grvList.size();
for (int j=0;j < grv;j++)
{
Card g = grvList.get(j);
for (int i=0;i<max;i++)
{
Card c = libList.get(i);
if ( c.getName().equals(g.getName()) && ! g.getType().contains("Basic") )
{ lib.remove(c);
exiled.add(c);
}
}
if ( ! g.getType().contains("Basic") ) {grave.remove(g);
exiled.add(g);}
}
}
};//SpellAbility
spell.setBeforePayMana(CardFactoryUtil.input_targetPlayer(spell));
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
// Cards with Cycling abilities
// -1 means keyword "Cycling" not found
if (hasKeyword(card, "Cycling") != -1)

View File

@@ -17342,6 +17342,162 @@ public class CardFactory_Creatures {
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Assembly-Worker"))
{
final SpellAbility[] a2 = new SpellAbility[1];
final Command eot2 = new Command()
{
private static final long serialVersionUID = 6180724472470740160L;
public void execute()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c))
{
c.addTempAttackBoost(-1);
c.addTempDefenseBoost(-1);
}
}
};
a2[0] = new Ability_Tap(card)
{
private static final long serialVersionUID = 3561450525225198222L;
public boolean canPlayAI()
{
return getAttacker() != null;
}
public void chooseTargetAI()
{
setTargetCard(getAttacker());
}
public Card getAttacker()
{
//target creature that is going to attack
Combat c = ComputerUtil.getAttackers();
CardList att = new CardList(c.getAttackers());
att.remove(card);
att.shuffle();
if(att.size() != 0)
return att.get(0);
else
return null;
}//getAttacker()
public void resolve()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card,c) )
{
c.addTempAttackBoost(1);
c.addTempDefenseBoost(1);
AllZone.EndOfTurn.addUntil(eot2);
}
}//resolve()
};//SpellAbility
card.addSpellAbility(a2[0]);
a2[0].setDescription("tap: Target Assembly-Worker creature gets +1/+1 until end of turn.");
@SuppressWarnings("unused") // target unused
final Input target = new Input()
{
private static final long serialVersionUID = 8913477363141356082L;
public void showMessage()
{
ButtonUtil.enableOnlyCancel();
AllZone.Display.showMessage("Select Assembly-Worker to get +1/+1");
}
public void selectCard(Card c, PlayerZone zone)
{
if(!CardFactoryUtil.canTarget(card, c)){
AllZone.Display.showMessage("Cannot target this card (Shroud? Protection?).");
}
else if(c.isCreature() && c.getType().contains("Assembly-Worker"))
{
card.tap();
AllZone.Human_Play.updateObservers();
a2[0].setTargetCard(c);//since setTargetCard() changes stack description
a2[0].setStackDescription(c +" gets +1/+1 until EOT");
AllZone.InputControl.resetInput();
AllZone.Stack.add(a2[0]);
}
}//selectCard()
public void selectButtonCancel()
{
card.untap();
stop();
}
};//Input target
a2[0].setBeforePayMana(CardFactoryUtil.input_targetType(a2[0], "Assembly-Worker"));
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Wood Elves"))
{
final SpellAbility ability = new Ability(card, "0")
{
public void resolve()
{
Card c = card;
String player = c.getController();
//PlayerLife life = AllZone.GameAction.getPlayerLife(c.getController());
//life.addLife(2);
PlayerZone lib = AllZone.getZone(Constant.Zone.Library,
player);
CardList lands = new CardList(lib.getCards());
lands = lands.getType("Forest");
if (player.equals("Human") && lands.size() > 0)
{
Object o = AllZone.Display
.getChoiceOptional(
"Pick a forest card to put into play",
lands.toArray());
if (o != null)
{
Card card = (Card) o;
lib.remove(card);
AllZone.Human_Play.add(card);
// card.tap();
lands.remove(card);
AllZone.GameAction.shuffle(player);
}
} // player equals human
else if (player.equals("Computer") && lands.size() > 0)
{
Card card = lands.get(0);
lib.remove(card);
// hand.add(card);
AllZone.Computer_Play.add(card);
// card.tap();
lands.remove(card);
AllZone.GameAction.shuffle(player);
}
}
};
Command intoPlay = new Command()
{
private static final long serialVersionUID = 1832932499373431651L;
public void execute()
{
ability.setStackDescription(card.getController() +" searches his library for a Forest card to put that card into play.");
AllZone.Stack.add(ability);
}
};
card.addComesIntoPlayCommand(intoPlay);
}//*************** END ************ END **************************
// Cards with Cycling abilities
// -1 means keyword "Cycling" not found
if (shouldCycle(card) != -1)

View File

@@ -567,6 +567,100 @@ class CardFactory_Lands {
};
a1.setBeforePayMana(new Input_PayManaCost_Ability(a1.getManaCost(), paid1));
final SpellAbility[] a2 = new SpellAbility[1];
final Command eot2 = new Command()
{
private static final long serialVersionUID = 6180724472470740160L;
public void execute()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c))
{
c.addTempAttackBoost(-1);
c.addTempDefenseBoost(-1);
}
}
};
a2[0] = new Ability_Tap(card)
{
private static final long serialVersionUID = 3561450520225198222L;
public boolean canPlayAI()
{
return getAttacker() != null;
}
public void chooseTargetAI()
{
setTargetCard(getAttacker());
}
public Card getAttacker()
{
//target creature that is going to attack
Combat c = ComputerUtil.getAttackers();
CardList att = new CardList(c.getAttackers());
att.remove(card);
att.shuffle();
if(att.size() != 0)
return att.get(0);
else
return null;
}//getAttacker()
public void resolve()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card,c) )
{
c.addTempAttackBoost(1);
c.addTempDefenseBoost(1);
AllZone.EndOfTurn.addUntil(eot2);
}
}//resolve()
};//SpellAbility
card.addSpellAbility(a2[0]);
a2[0].setDescription("tap: Target Assembly-Worker gets +1/+1 until end of turn.");
@SuppressWarnings("unused") // target unused
final Input target = new Input()
{
private static final long serialVersionUID = 8913477363141356082L;
public void showMessage()
{
ButtonUtil.enableOnlyCancel();
AllZone.Display.showMessage("Select Assembly-Worker to get +1/+1");
}
public void selectCard(Card c, PlayerZone zone)
{
if(!CardFactoryUtil.canTarget(card, c)){
AllZone.Display.showMessage("Cannot target this card (Shroud? Protection?).");
}
else if(c.isCreature() && c.getType().contains("Assembly-Worker"))
{
card.tap();
AllZone.Human_Play.updateObservers();
a2[0].setTargetCard(c);//since setTargetCard() changes stack description
a2[0].setStackDescription(c +" gets +1/+1 until EOT");
AllZone.InputControl.resetInput();
AllZone.Stack.add(a2[0]);
}
}//selectCard()
public void selectButtonCancel()
{
card.untap();
stop();
}
};//Input target
a2[0].setBeforePayMana(CardFactoryUtil.input_targetType(a2[0], "Assembly-Worker"));
}//*************** END ************ END **************************
//*************** START *********** START **************************
@@ -1947,6 +2041,584 @@ class CardFactory_Lands {
return card;
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Spawning Pool"))
{
final Command untilEOT = new Command()
{
private static final long serialVersionUID = -451839437837081897L;
public void execute()
{
card.setShield(0);
}
};
final SpellAbility a2 = new Ability(card, "B")
{
public boolean canPlayAI() {return false;}
public void resolve()
{
card.addShield();
AllZone.EndOfTurn.addUntil(untilEOT);
}
};//SpellAbility
a2.setDescription("B: Regenerate Spawning Pool.");
a2.setStackDescription("Regenerate Spawning Pool");
a2.setBeforePayMana(new Input_PayManaCost(a2));
final Command eot1 = new Command()
{
private static final long serialVersionUID = -8535770979347971863L;
public void execute()
{
Card c = card;
c.setBaseAttack(0);
c.setBaseDefense(0);
c.removeType("Creature");
c.removeType("Skeleton");
c.setManaCost("");
c.removeSpellAbility(a2);
}
};
final SpellAbility a1 = new Ability(card, "1 B")
{
public boolean canPlayAI()
{
return ! card.getType().contains("Creature");
}
public void resolve()
{
Card c = card;
c.setBaseAttack(1);
c.setBaseDefense(1);
c.setManaCost("B");
//to prevent like duplication like "Creature Creature"
boolean hasRegen = false;
SpellAbility[] sas = card.getSpellAbility();
for (SpellAbility sa : sas)
{
if(sa.toString().equals("B: Regenerate Spawning Pool.")) //this is essentially ".getDescription()"
hasRegen = true;
}
if (!hasRegen){ card.addSpellAbility(a2);
}
if(!c.getType().contains("Creature"))
c.addType("Creature");
if(!c.getType().contains("Skeleton"))
c.addType("Skeleton");
AllZone.EndOfTurn.addUntil(eot1);
}
};//SpellAbility
card.clearSpellKeepManaAbility();
card.addSpellAbility(a1);
a1.setStackDescription(card +" becomes a 1/1 skeleton creature with B: regenerate this creature until EOT");
a1.setDescription("1B: Spawning Pool becomes a 1/1 skeleton creature with B: regenerate this creature until end of the turn. It's still a land.");
Command paid1 = new Command() {
private static final long serialVersionUID = -6800983290478844750L;
public void execute() {AllZone.Stack.add(a1);}
};
a1.setBeforePayMana(new Input_PayManaCost_Ability(a1.getManaCost(), paid1));
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Shizo, Death's Storehouse"))
{
final SpellAbility[] a2 = new SpellAbility[1];
final Command eot2 = new Command()
{
private static final long serialVersionUID = 6180724472470740160L;
public void execute()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c))
{
c.removeIntrinsicKeyword("Fear");
}
}
};
a2[0] = new Ability_Tap(card, "B")
{
private static final long serialVersionUID = 3561450520225198222L;
public boolean canPlayAI()
{
return getAttacker() != null;
}
public void chooseTargetAI()
{
setTargetCard(getAttacker());
}
public Card getAttacker()
{
//target creature that is going to attack
Combat c = ComputerUtil.getAttackers();
CardList att = new CardList(c.getAttackers());
att.remove(card);
att.shuffle();
if(att.size() != 0)
return att.get(0);
else
return null;
}//getAttacker()
public void resolve()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card,c) )
{
if(!c.getIntrinsicKeyword().contains("Fear"))
c.addIntrinsicKeyword("Fear");
AllZone.EndOfTurn.addUntil(eot2);
}
}//resolve()
};//SpellAbility
card.addSpellAbility(a2[0]);
a2[0].setDescription("B, tap: Target legendary creature gains fear until end of turn.");
@SuppressWarnings("unused") // target unused
final Input target = new Input()
{
private static final long serialVersionUID = 8913477363141356082L;
public void showMessage()
{
ButtonUtil.enableOnlyCancel();
AllZone.Display.showMessage("Select egendary creature to get fear");
}
public void selectCard(Card c, PlayerZone zone)
{
if(!CardFactoryUtil.canTarget(card, c)){
AllZone.Display.showMessage("Cannot target this card (Shroud? Protection?).");
}
else if(c.isCreature() && c.getType().contains("Legendary"))
{
card.tap();
AllZone.Human_Play.updateObservers();
a2[0].setTargetCard(c);//since setTargetCard() changes stack description
a2[0].setStackDescription(c +" gets fear until EOT");
AllZone.InputControl.resetInput();
AllZone.Stack.add(a2[0]);
}
}//selectCard()
public void selectButtonCancel()
{
card.untap();
stop();
}
};//Input target
a2[0].setBeforePayMana(CardFactoryUtil.input_targetType(a2[0], "Legendary"));
}//*************** END ************ END **************************
//*************** START *********** START **************************
if(cardName.equals("Novijen, Heart of Progress"))
{
card.clearSpellKeepManaAbility();
final CardListFilter targets = new CardListFilter()
{
public boolean addCard(Card c) {
return AllZone.GameAction.isCardInPlay(c) && c.isCreature()
&& c.getTurnInZone() == AllZone.Phase.getTurn();
}
};
Ability_Tap ability = new Ability_Tap(card,"G U")
{
private static final long serialVersionUID = 1416258136308898492L;
CardList inPlay = new CardList();
public boolean canPlayAI()
{
if(!(AllZone.Phase.getPhase().equals(Constant.Phase.Main1)
&& AllZone.Phase.getActivePlayer().equals(Constant.Player.Computer)))
return false;
inPlay.clear();
inPlay.addAll(AllZone.Computer_Play.getCards());
return (inPlay.filter(targets).size() > 1);
}
public void resolve() {
inPlay.clear();
inPlay.addAll(AllZone.Human_Play.getCards());
inPlay.addAll(AllZone.Computer_Play.getCards());
for(Card targ : inPlay.filter(targets))
targ.addCounter(Counters.P1P1, 1);
}
};
ability.setDescription("tap: Put a +1/+1 counter on each creature that entered the battlefield this turn.");
ability.setStackDescription("Put a +1/+1 counter on each creature that entered the battlefield this turn.");
card.addSpellAbility(ability);
}
//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Urza's Factory"))
{
final Ability_Tap ability = new Ability_Tap(card, "7")
{
private static final long serialVersionUID = 1781653158406511188L;
public boolean canPlay()
{
if (AllZone.GameAction.isCardInPlay(card))
return true;
else
return false;
}
public void resolve()
{
String player = card.getController();
PlayerZone play = AllZone.getZone(Constant.Zone.Play, player);
//make token
Card c = new Card();
c.setOwner(card.getController());
c.setController(card.getController());
c.setName("Assembly-Worker");
c.setImageName("c 2 2 Assembly-Worker");
c.setManaCost("");
c.setToken(true);
c.addType("Artifact");
c.addType("Creature");
c.addType("Assembly-Worker");
c.setBaseAttack(2);
c.setBaseDefense(2);
play.add(c);
}
};
ability.setDescription("7, tap: Put a 2/2 colorless Assembly-Worker artifact creature token onto the battlefield.");
ability.setStackDescription(card.getName() + " - Put a 2/2 colorless Assembly-Worker artifact creature token onto the battlefield.");
card.addSpellAbility(ability);
//not sure what's going on here, maybe because it's a land it doesn't add the ability to the text?
//anyway, this does the trick:
//card.removeIntrinsicKeyword("tap: add 1");
card.setText(card.getSpellText() + "\r\n Put a 2/2 colorless Assembly-Worker artifact creature token onto the battlefield.");
//card.addIntrinsicKeyword("tap: add 1");
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Goblin Burrows"))
{
final SpellAbility[] a2 = new SpellAbility[1];
final Command eot2 = new Command()
{
private static final long serialVersionUID = 6180724472470740160L;
public void execute()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c))
{
c.addTempAttackBoost(-2);
}
}
};
a2[0] = new Ability_Tap(card, "1 R")
{
private static final long serialVersionUID = 3561450520225198222L;
public boolean canPlayAI()
{
return getAttacker() != null;
}
public void chooseTargetAI()
{
setTargetCard(getAttacker());
}
public Card getAttacker()
{
//target creature that is going to attack
Combat c = ComputerUtil.getAttackers();
CardList att = new CardList(c.getAttackers());
att.remove(card);
att.shuffle();
if(att.size() != 0)
return att.get(0);
else
return null;
}//getAttacker()
public void resolve()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card,c) )
{
c.addTempAttackBoost(2);
AllZone.EndOfTurn.addUntil(eot2);
}
}//resolve()
};//SpellAbility
card.addSpellAbility(a2[0]);
a2[0].setDescription("1 R, tap: Target Goblin gets +2/+0 until end of turn.");
@SuppressWarnings("unused") // target unused
final Input target = new Input()
{
private static final long serialVersionUID = 8913477363141356082L;
public void showMessage()
{
ButtonUtil.enableOnlyCancel();
AllZone.Display.showMessage("Select Goblin to get +2/+0");
}
public void selectCard(Card c, PlayerZone zone)
{
if(!CardFactoryUtil.canTarget(card, c)){
AllZone.Display.showMessage("Cannot target this card (Shroud? Protection?).");
}
else if(c.isCreature() && c.getType().contains("Goblin"))
{
card.tap();
AllZone.Human_Play.updateObservers();
a2[0].setTargetCard(c);//since setTargetCard() changes stack description
a2[0].setStackDescription(c +" gets +2/+0 until EOT");
AllZone.InputControl.resetInput();
AllZone.Stack.add(a2[0]);
}
}//selectCard()
public void selectButtonCancel()
{
card.untap();
stop();
}
};//Input target
a2[0].setBeforePayMana(CardFactoryUtil.input_targetType(a2[0], "Goblin"));
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Skarrg, the Rage Pits"))
{
final SpellAbility[] a2 = new SpellAbility[1];
final Command eot2 = new Command()
{
private static final long serialVersionUID = 6180724472470740160L;
public void execute()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c))
{
c.addTempAttackBoost(-1);
c.addTempDefenseBoost(-1);
c.removeIntrinsicKeyword("Trample");
}
}
};
a2[0] = new Ability_Tap(card, "G R")
{
private static final long serialVersionUID = 3561450520225198222L;
public boolean canPlayAI()
{
return getAttacker() != null;
}
public void chooseTargetAI()
{
setTargetCard(getAttacker());
}
public Card getAttacker()
{
//target creature that is going to attack
Combat c = ComputerUtil.getAttackers();
CardList att = new CardList(c.getAttackers());
att.remove(card);
att.shuffle();
if(att.size() != 0)
return att.get(0);
else
return null;
}//getAttacker()
public void resolve()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card,c) )
{
c.addTempAttackBoost(1);
c.addTempDefenseBoost(1);
c.addIntrinsicKeyword("Trample");
AllZone.EndOfTurn.addUntil(eot2);
}
}//resolve()
};//SpellAbility
card.addSpellAbility(a2[0]);
a2[0].setDescription("G R, tap: Target creature gets +1/+1 and gains trample until end of turn.");
@SuppressWarnings("unused") // target unused
final Input target = new Input()
{
private static final long serialVersionUID = 8913477363141356082L;
public void showMessage()
{
ButtonUtil.enableOnlyCancel();
AllZone.Display.showMessage("Select Creature to get +1/+1 and trample");
}
public void selectCard(Card c, PlayerZone zone)
{
if(!CardFactoryUtil.canTarget(card, c)){
AllZone.Display.showMessage("Cannot target this card (Shroud? Protection?).");
}
else if(c.isCreature())
{
card.tap();
AllZone.Human_Play.updateObservers();
a2[0].setTargetCard(c);//since setTargetCard() changes stack description
a2[0].setStackDescription(c +" gets +1/+1 and trample until EOT");
AllZone.InputControl.resetInput();
AllZone.Stack.add(a2[0]);
}
}//selectCard()
public void selectButtonCancel()
{
card.untap();
stop();
}
};//Input target
a2[0].setBeforePayMana(CardFactoryUtil.input_targetType(a2[0], "Creature"));
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Daru Encampment"))
{
final SpellAbility[] a2 = new SpellAbility[1];
final Command eot2 = new Command()
{
private static final long serialVersionUID = 6180724472470740160L;
public void execute()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c))
{
c.addTempAttackBoost(-1);
c.addTempDefenseBoost(-1);
}
}
};
a2[0] = new Ability_Tap(card, "W")
{
private static final long serialVersionUID = 3561450520225198222L;
public boolean canPlayAI()
{
return getAttacker() != null;
}
public void chooseTargetAI()
{
setTargetCard(getAttacker());
}
public Card getAttacker()
{
//target creature that is going to attack
Combat c = ComputerUtil.getAttackers();
CardList att = new CardList(c.getAttackers());
att.remove(card);
att.shuffle();
if(att.size() != 0)
return att.get(0);
else
return null;
}//getAttacker()
public void resolve()
{
Card c = a2[0].getTargetCard();
if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card,c) )
{
c.addTempAttackBoost(1);
c.addTempDefenseBoost(1);
AllZone.EndOfTurn.addUntil(eot2);
}
}//resolve()
};//SpellAbility
card.addSpellAbility(a2[0]);
a2[0].setDescription("W, tap: Target Soldier gets +1/+1 until end of turn.");
@SuppressWarnings("unused") // target unused
final Input target = new Input()
{
private static final long serialVersionUID = 8913477363141356082L;
public void showMessage()
{
ButtonUtil.enableOnlyCancel();
AllZone.Display.showMessage("Select Soldier to get +1/+1");
}
public void selectCard(Card c, PlayerZone zone)
{
if(!CardFactoryUtil.canTarget(card, c)){
AllZone.Display.showMessage("Cannot target this card (Shroud? Protection?).");
}
else if(c.isCreature() && c.getType().contains("Soldier"))
{
card.tap();
AllZone.Human_Play.updateObservers();
a2[0].setTargetCard(c);//since setTargetCard() changes stack description
a2[0].setStackDescription(c +" gets +1/+1 until EOT");
AllZone.InputControl.resetInput();
AllZone.Stack.add(a2[0]);
}
}//selectCard()
public void selectButtonCancel()
{
card.untap();
stop();
}
};//Input target
a2[0].setBeforePayMana(CardFactoryUtil.input_targetType(a2[0], "Soldier"));
}//*************** END ************ END **************************
return card;
}

View File

@@ -14,16 +14,13 @@ public class CardListUtil
}
//the higher the defense the better
@SuppressWarnings("unchecked") // Comparator needs <type>
public static void sortDefense(CardList list)
{
Comparator com = new Comparator()
{
public int compare(Object a1, Object b1)
{
Card a = (Card)a1;
Card b = (Card)b1;
public static void sortDefense(CardList list)
{
Comparator<Card> com = new Comparator<Card>()
{
public int compare(Card a, Card b)
{
return b.getNetDefense() - a.getNetDefense();
}
};
@@ -31,15 +28,12 @@ public static void sortDefense(CardList list)
}//sortDefense()
//the higher the attack the better
@SuppressWarnings("unchecked") // Comparator needs type
public static void sortAttack(CardList list)
public static void sortAttack(CardList list)
{
Comparator com = new Comparator()
Comparator<Card> com = new Comparator<Card>()
{
public int compare(Object a1, Object b1)
public int compare(Card a, Card b)
{
Card a = (Card)a1;
Card b = (Card)b1;
if (CombatUtil.isDoranInPlay())
return b.getNetDefense() - a.getNetDefense();
@@ -52,16 +46,12 @@ public static void sortAttack(CardList list)
//the lower the attack the better
@SuppressWarnings("unchecked") // Comparator needs <type>
public static void sortAttackLowFirst(CardList list)
public static void sortAttackLowFirst(CardList list)
{
Comparator com = new Comparator()
Comparator<Card> com = new Comparator<Card>()
{
public int compare(Object a1, Object b1)
public int compare(Card a, Card b)
{
Card a = (Card)a1;
Card b = (Card)b1;
if (CombatUtil.isDoranInPlay())
return a.getNetDefense() - b.getNetDefense();
else
@@ -78,16 +68,12 @@ public static void sortAttackLowFirst(CardList list)
}//sortNonFlyingFirst
//the creature with flying are better
@SuppressWarnings("unchecked") // Comparator needs <type>
public static void sortFlying(CardList list)
public static void sortFlying(CardList list)
{
Comparator com = new Comparator()
Comparator<Card> com = new Comparator<Card>()
{
public int compare(Object a1, Object b1)
public int compare(Card a, Card b)
{
Card a = (Card)a1;
Card b = (Card)b1;
if(a.getKeyword().contains("Flying") && b.getKeyword().contains("Flying"))
return 0;
else if(a.getKeyword().contains("Flying"))
@@ -101,16 +87,33 @@ public static void sortFlying(CardList list)
list.sort(com);
}//sortFlying()
@SuppressWarnings("unchecked") // Comparator needs <type>
//sort by keyword
public static void sortByKeyword(CardList list, String kw)
{
final String keyword = kw;
Comparator<Card> com = new Comparator<Card>()
{
public int compare(Card a, Card b)
{
if(a.getKeyword().contains(keyword) && b.getKeyword().contains(keyword))
return 0;
else if(a.getKeyword().contains(keyword))
return -1;
else if(b.getKeyword().contains(keyword))
return 1;
return 0;
}
};
list.sort(com);
}//sortByKeyword()
public static void sortCMC(CardList list)
{
Comparator com = new Comparator()
Comparator<Card> com = new Comparator<Card>()
{
public int compare(Object a1, Object b1)
public int compare(Card a, Card b)
{
Card a = (Card)a1;
Card b = (Card)b1;
int cmcA = CardUtil.getConvertedManaCost(a.getManaCost());
int cmcB = CardUtil.getConvertedManaCost(b.getManaCost());

View File

@@ -1479,6 +1479,8 @@ public class GameActionUtil
landfall_Ior_Ruin_Expedition(c);
else if (c.getName().equals("Lotus Cobra"))
landfall_Lotus_Cobra(c);
else if (c.getName().equals("Hedron Crab"))
landfall_Hedron_Crab(c);
}
private static boolean showLandfallDialog(Card c)
@@ -1661,6 +1663,47 @@ public class GameActionUtil
}
private static void landfall_Hedron_Crab(Card c)
{
//final Card crd = c;
final Ability ability = new Ability(c, "0")
{
public void resolve()
{
String player = getTargetPlayer();
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, player);
CardList libList = new CardList(lib.getCards());
int max = 3;
if (libList.size() < 3)
max = libList.size();
for (int i=0;i<max;i++)
{
Card c = libList.get(i);
lib.remove(c);
grave.add(c);
}
}
};
//ability.setStackDescription(c.getName() + " - Landfall: " + c.getController() + " puts the top three cards of his or her library into his or her graveyard.");
//ability.setBeforePayMana(CardFactoryUtil.input_targetPlayer(ability));
if (c.getController().equals(Constant.Player.Human)) {
AllZone.InputControl.setInput(CardFactoryUtil.input_targetPlayer(ability));
//AllZone.Stack.add(ability);
}
else if (c.getController().equals(Constant.Player.Computer)) {
ability.setChooseTargetAI(CardFactoryUtil.AI_targetHuman());
AllZone.Stack.add(ability);
}
}//landfall_Hedron_Crab
public static void executeLifeLinkEffects(Card c)
{
final String player = c.getController();
@@ -10072,6 +10115,43 @@ public class GameActionUtil
}
};
public static Command Lhurgoyf = new Command()
{
private static final long serialVersionUID = -8778902687347191964L;
public void execute()
{
// get all creatures
CardList list = new CardList();
list.addAll(AllZone.Human_Play.getCards());
list.addAll(AllZone.Computer_Play.getCards());
list = list.getName("Lhurgoyf");
for (int i = 0; i < list.size(); i++)
{
Card c = list.get(i);
c.setBaseAttack(countCreatures());
c.setBaseDefense(c.getBaseAttack()+1);
}
}
private int countCreatures()
{
PlayerZone compGrave = AllZone.getZone(Constant.Zone.Graveyard, Constant.Player.Computer);
PlayerZone humGrave = AllZone.getZone(Constant.Zone.Graveyard, Constant.Player.Human);
CardList list = new CardList();
list.addAll(compGrave.getCards());
list.addAll(humGrave.getCards());
list = list.filter(new CardListFilter(){
public boolean addCard(Card c) {
return c.isCreature();
}
});
return list.size();
}
};//Lhurgoyf
public static Command Nightmare = new Command()
{
private static final long serialVersionUID = 1987511205573387864L;
@@ -11662,6 +11742,7 @@ public class GameActionUtil
commands.put("Uril", Uril);
commands.put("Rabid_Wombat", Rabid_Wombat);
commands.put("Kithkin_Rabble", Kithkin_Rabble);
commands.put("Lhurgoyf", Lhurgoyf);
commands.put("Nightmare", Nightmare);
commands.put("Aven_Trailblazer", Aven_Trailblazer);
commands.put("Rakdos_Pit_Dragon", Rakdos_Pit_Dragon);