diff --git a/.gitattributes b/.gitattributes index 0e307778140..a641f83201a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -407,6 +407,7 @@ res/cardsfolder/a/arcbound_fiend.txt -text res/cardsfolder/a/arcbound_hybrid.txt svneol=native#text/plain res/cardsfolder/a/arcbound_lancer.txt svneol=native#text/plain res/cardsfolder/a/arcbound_overseer.txt svneol=native#text/plain +res/cardsfolder/a/arcbound_overseer_avatar.txt -text res/cardsfolder/a/arcbound_ravager.txt svneol=native#text/plain res/cardsfolder/a/arcbound_reclaimer.txt svneol=native#text/plain res/cardsfolder/a/arcbound_slith.txt svneol=native#text/plain @@ -514,8 +515,10 @@ res/cardsfolder/a/ashenmoor_liege.txt svneol=native#text/plain res/cardsfolder/a/ashes_of_the_fallen.txt svneol=native#text/plain res/cardsfolder/a/ashes_to_ashes.txt svneol=native#text/plain res/cardsfolder/a/ashling_the_extinguisher.txt -text +res/cardsfolder/a/ashling_the_pilgrim_avatar.txt -text res/cardsfolder/a/ashlings_prerogative.txt -text res/cardsfolder/a/ashmouth_hound.txt -text +res/cardsfolder/a/ashnod.txt -text res/cardsfolder/a/ashnods_altar.txt svneol=native#text/plain res/cardsfolder/a/ashnods_battle_gear.txt svneol=native#text/plain res/cardsfolder/a/ashnods_cylix.txt -text @@ -750,6 +753,7 @@ res/cardsfolder/b/barren_glory.txt svneol=native#text/plain res/cardsfolder/b/barren_moor.txt svneol=native#text/plain res/cardsfolder/b/barrenton_cragtreads.txt svneol=native#text/plain res/cardsfolder/b/barrenton_medic.txt svneol=native#text/plain +res/cardsfolder/b/barrin.txt -text res/cardsfolder/b/barrin_master_wizard.txt svneol=native#text/plain res/cardsfolder/b/barrins_codex.txt svneol=native#text/plain res/cardsfolder/b/barrins_unmaking.txt -text @@ -882,6 +886,7 @@ res/cardsfolder/b/biorhythm.txt svneol=native#text/plain res/cardsfolder/b/birchlore_rangers.txt svneol=native#text/plain res/cardsfolder/b/bird_maiden.txt svneol=native#text/plain res/cardsfolder/b/birds_of_paradise.txt svneol=native#text/plain +res/cardsfolder/b/birds_of_paradise_avatar.txt -text res/cardsfolder/b/birthing_pod.txt -text res/cardsfolder/b/biting_tether.txt svneol=native#text/plain res/cardsfolder/b/bitter_ordeal.txt svneol=native#text/plain @@ -1641,6 +1646,7 @@ res/cardsfolder/c/chromescale_drake.txt svneol=native#text/plain res/cardsfolder/c/chromeshell_crab.txt -text res/cardsfolder/c/chromium.txt svneol=native#text/plain res/cardsfolder/c/chronatog.txt svneol=native#text/plain +res/cardsfolder/c/chronatog_avatar.txt -text res/cardsfolder/c/chronatog_totem.txt svneol=native#text/plain res/cardsfolder/c/chronic_flooding.txt -text res/cardsfolder/c/chronomantic_escape.txt -text @@ -2009,6 +2015,7 @@ res/cardsfolder/c/crossbow_infantry.txt svneol=native#text/plain res/cardsfolder/c/crosstown_courier.txt -text res/cardsfolder/c/crossway_vampire.txt -text res/cardsfolder/c/crosswinds.txt svneol=native#text/plain +res/cardsfolder/c/crovax.txt -text res/cardsfolder/c/crovax_ascendant_hero.txt svneol=native#text/plain res/cardsfolder/c/crovax_the_cursed.txt -text svneol=unset#text/plain res/cardsfolder/c/crowd_favorites.txt svneol=native#text/plain @@ -2213,6 +2220,7 @@ res/cardsfolder/d/daru_warchief.txt svneol=native#text/plain res/cardsfolder/d/daunting_defender.txt svneol=native#text/plain res/cardsfolder/d/dauntless_dourbark.txt svneol=native#text/plain res/cardsfolder/d/dauntless_escort.txt svneol=native#text/plain +res/cardsfolder/d/dauntless_escort_avatar.txt -text res/cardsfolder/d/dauthi_cutthroat.txt svneol=native#text/plain res/cardsfolder/d/dauthi_embrace.txt svneol=native#text/plain res/cardsfolder/d/dauthi_ghoul.txt svneol=native#text/plain @@ -2466,6 +2474,7 @@ res/cardsfolder/d/diabolic_servitude.txt -text svneol=unset#text/plain res/cardsfolder/d/diabolic_tutor.txt svneol=native#text/plain res/cardsfolder/d/diabolic_vision.txt svneol=native#text/plain res/cardsfolder/d/diamond_faerie.txt svneol=native#text/plain +res/cardsfolder/d/diamond_faerie_avatar.txt -text res/cardsfolder/d/diamond_kaleidoscope.txt svneol=native#text/plain res/cardsfolder/d/diamond_valley.txt svneol=native#text/plain res/cardsfolder/d/didgeridoo.txt svneol=native#text/plain @@ -2863,7 +2872,9 @@ res/cardsfolder/e/eiganjo_free_riders.txt svneol=native#text/plain res/cardsfolder/e/eightfold_maze.txt svneol=native#text/plain res/cardsfolder/e/ekundu_griffin.txt svneol=native#text/plain res/cardsfolder/e/el_hajjaj.txt svneol=native#text/plain +res/cardsfolder/e/eladamri.txt -text res/cardsfolder/e/eladamri_lord_of_leaves.txt svneol=native#text/plain +res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt -text res/cardsfolder/e/eladamris_call.txt svneol=native#text/plain res/cardsfolder/e/eladamris_vineyard.txt svneol=native#text/plain res/cardsfolder/e/eland_umbra.txt svneol=native#text/plain @@ -3062,12 +3073,14 @@ res/cardsfolder/e/erayo_soratami_ascendant_erayos_essence.txt -text res/cardsfolder/e/erdwal_ripper.txt -text res/cardsfolder/e/erg_raiders.txt svneol=native#text/plain res/cardsfolder/e/erhnam_djinn.txt svneol=native#text/plain +res/cardsfolder/e/erhnam_djinn_avatar.txt -text res/cardsfolder/e/eron_the_relentless.txt svneol=native#text/plain res/cardsfolder/e/errant_doomsayers.txt svneol=native#text/plain res/cardsfolder/e/errant_ephemeron.txt svneol=native#text/plain res/cardsfolder/e/errantry.txt -text res/cardsfolder/e/erratic_explosion.txt svneol=native#text/plain res/cardsfolder/e/erratic_portal.txt svneol=native#text/plain +res/cardsfolder/e/ertai.txt -text res/cardsfolder/e/ertai_the_corrupted.txt svneol=native#text/plain res/cardsfolder/e/ertai_wizard_adept.txt svneol=native#text/plain res/cardsfolder/e/ertais_trickery.txt svneol=native#text/plain @@ -3098,6 +3111,7 @@ res/cardsfolder/e/essence_warden.txt svneol=native#text/plain res/cardsfolder/e/etched_champion.txt svneol=native#text/plain res/cardsfolder/e/etched_monstrosity.txt svneol=native#text/plain res/cardsfolder/e/etched_oracle.txt svneol=native#text/plain +res/cardsfolder/e/etched_oracle_avatar.txt -text res/cardsfolder/e/eternal_dominion.txt -text res/cardsfolder/e/eternal_dragon.txt svneol=native#text/plain res/cardsfolder/e/eternal_flame.txt svneol=native#text/plain @@ -3230,6 +3244,7 @@ res/cardsfolder/f/falkenrath_noble.txt -text res/cardsfolder/f/falkenrath_torturer.txt -text res/cardsfolder/f/fall_of_the_gavel.txt -text res/cardsfolder/f/fallen_angel.txt svneol=native#text/plain +res/cardsfolder/f/fallen_angel_avatar.txt -text res/cardsfolder/f/fallen_askari.txt svneol=native#text/plain res/cardsfolder/f/fallen_cleric.txt svneol=native#text/plain res/cardsfolder/f/fallen_ferromancer.txt svneol=native#text/plain @@ -3810,6 +3825,7 @@ res/cardsfolder/g/geosurge.txt -text res/cardsfolder/g/geothermal_crevice.txt svneol=native#text/plain res/cardsfolder/g/geralfs_messenger.txt -text res/cardsfolder/g/geralfs_mindcrusher.txt -text +res/cardsfolder/g/gerrard.txt -text res/cardsfolder/g/gerrard_capashen.txt -text res/cardsfolder/g/gerrards_battle_cry.txt svneol=native#text/plain res/cardsfolder/g/gerrards_command.txt svneol=native#text/plain @@ -3912,6 +3928,7 @@ res/cardsfolder/g/gilt_leaf_seer.txt svneol=native#text/plain res/cardsfolder/g/giltspire_avenger.txt svneol=native#text/plain res/cardsfolder/g/gisela_blade_of_goldnight.txt -text res/cardsfolder/g/gitaxian_probe.txt svneol=native#text/plain +res/cardsfolder/g/gix.txt -text res/cardsfolder/g/glacial_chasm.txt -text res/cardsfolder/g/glacial_crevasses.txt svneol=native#text/plain res/cardsfolder/g/glacial_fortress.txt svneol=native#text/plain @@ -4246,6 +4263,7 @@ res/cardsfolder/g/greenhilt_trainee.txt svneol=native#text/plain res/cardsfolder/g/greenseeker.txt svneol=native#text/plain res/cardsfolder/g/greenweaver_druid.txt svneol=native#text/plain res/cardsfolder/g/gremlin_mine.txt svneol=native#text/plain +res/cardsfolder/g/greven_il_vec.txt -text res/cardsfolder/g/grid_monitor.txt -text res/cardsfolder/g/grief_tyrant.txt -text svneol=unset#text/plain res/cardsfolder/g/griffin_canyon.txt svneol=native#text/plain @@ -4271,6 +4289,7 @@ res/cardsfolder/g/grindclock.txt svneol=native#text/plain res/cardsfolder/g/grinding_station.txt svneol=native#text/plain res/cardsfolder/g/grindstone.txt svneol=native#text/plain res/cardsfolder/g/grinning_demon.txt svneol=native#text/plain +res/cardsfolder/g/grinning_demon_avatar.txt -text res/cardsfolder/g/grinning_ignus.txt svneol=native#text/plain res/cardsfolder/g/grip_of_amnesia.txt -text res/cardsfolder/g/griptide.txt -text @@ -4404,6 +4423,7 @@ res/cardsfolder/h/hand_of_honor.txt svneol=native#text/plain res/cardsfolder/h/hand_of_justice.txt svneol=native#text/plain res/cardsfolder/h/hand_of_the_praetors.txt svneol=native#text/plain res/cardsfolder/h/hand_to_hand.txt -text +res/cardsfolder/h/hanna.txt -text res/cardsfolder/h/hanna_ships_navigator.txt svneol=native#text/plain res/cardsfolder/h/hannas_custody.txt svneol=native#text/plain res/cardsfolder/h/hanweir_lancer.txt -text @@ -5207,6 +5227,7 @@ res/cardsfolder/k/karakas.txt svneol=native#text/plain res/cardsfolder/k/kargan_dragonlord.txt svneol=native#text/plain res/cardsfolder/k/karma.txt svneol=native#text/plain res/cardsfolder/k/karmic_guide.txt svneol=native#text/plain +res/cardsfolder/k/karn.txt -text res/cardsfolder/k/karn_liberated.txt -text res/cardsfolder/k/karn_silver_golem.txt svneol=native#text/plain res/cardsfolder/k/karns_touch.txt svneol=native#text/plain @@ -5843,6 +5864,7 @@ res/cardsfolder/l/lust_for_war.txt svneol=native#text/plain res/cardsfolder/l/lux_cannon.txt svneol=native#text/plain res/cardsfolder/l/lyev_skyknight.txt -text res/cardsfolder/l/lymph_sliver.txt svneol=native#text/plain +res/cardsfolder/l/lyna.txt -text res/cardsfolder/l/lynx.txt svneol=native#text/plain res/cardsfolder/l/lys_alana_bowmaster.txt svneol=native#text/plain res/cardsfolder/l/lys_alana_huntmaster.txt svneol=native#text/plain @@ -5974,6 +5996,7 @@ res/cardsfolder/m/mantis_engine.txt svneol=native#text/plain res/cardsfolder/m/mantle_of_leadership.txt svneol=native#text/plain res/cardsfolder/m/maralen_of_the_mornsong.txt -text res/cardsfolder/m/marauding_knight.txt svneol=native#text/plain +res/cardsfolder/m/maraxus.txt -text res/cardsfolder/m/maraxus_of_keld.txt svneol=native#text/plain res/cardsfolder/m/marble_chalice.txt svneol=native#text/plain res/cardsfolder/m/marble_diamond.txt svneol=native#text/plain @@ -6281,6 +6304,7 @@ res/cardsfolder/m/misers_cage.txt svneol=native#text/plain res/cardsfolder/m/misery_charm.txt svneol=native#text/plain res/cardsfolder/m/misfortunes_gain.txt svneol=native#text/plain res/cardsfolder/m/misguided_rage.txt svneol=native#text/plain +res/cardsfolder/m/mishra.txt -text res/cardsfolder/m/mishra_artificer_prodigy.txt svneol=native#text/plain res/cardsfolder/m/mishras_bauble.txt -text res/cardsfolder/m/mishras_factory.txt svneol=native#text/plain @@ -6481,6 +6505,7 @@ res/cardsfolder/m/mudhole.txt -text res/cardsfolder/m/mul_daya_channelers.txt svneol=native#text/plain res/cardsfolder/m/mulch.txt svneol=native#text/plain res/cardsfolder/m/mulldrifter.txt svneol=native#text/plain +res/cardsfolder/m/multani.txt -text res/cardsfolder/m/multani_maro_sorcerer.txt svneol=native#text/plain res/cardsfolder/m/multanis_acolyte.txt svneol=native#text/plain res/cardsfolder/m/multanis_decree.txt svneol=native#text/plain @@ -6936,6 +6961,7 @@ res/cardsfolder/o/opposition.txt svneol=native#text/plain res/cardsfolder/o/oppression.txt svneol=native#text/plain res/cardsfolder/o/oppressive_will.txt svneol=native#text/plain res/cardsfolder/o/opt.txt svneol=native#text/plain +res/cardsfolder/o/oracle.txt -text res/cardsfolder/o/oracle_of_mul_daya.txt svneol=native#text/plain res/cardsfolder/o/oracle_of_nectars.txt svneol=native#text/plain res/cardsfolder/o/oracles_attendants.txt -text @@ -6979,6 +7005,7 @@ res/cardsfolder/o/ore_gorger.txt svneol=native#text/plain res/cardsfolder/o/organ_grinder.txt svneol=native#text/plain res/cardsfolder/o/orgg.txt svneol=native#text/plain res/cardsfolder/o/origin_spellbomb.txt svneol=native#text/plain +res/cardsfolder/o/orim.txt -text res/cardsfolder/o/orim_samite_healer.txt svneol=native#text/plain res/cardsfolder/o/orims_chant.txt -text svneol=unset#text/plain res/cardsfolder/o/orims_cure.txt -text @@ -8148,6 +8175,7 @@ res/cardsfolder/r/rockslide_ambush.txt svneol=native#text/plain res/cardsfolder/r/rockslide_elemental.txt svneol=native#text/plain res/cardsfolder/r/rocky_tar_pit.txt svneol=native#text/plain res/cardsfolder/r/rod_of_ruin.txt svneol=native#text/plain +res/cardsfolder/r/rofellos.txt -text res/cardsfolder/r/rofellos_llanowar_emissary.txt svneol=native#text/plain res/cardsfolder/r/rofelloss_gift.txt -text res/cardsfolder/r/rogue_elephant.txt -text @@ -8617,6 +8645,7 @@ res/cardsfolder/s/sejiri_steppe.txt svneol=native#text/plain res/cardsfolder/s/sekki_seasons_guide.txt -text svneol=unset#text/plain res/cardsfolder/s/sekkuar_deathkeeper.txt svneol=native#text/plain res/cardsfolder/s/selective_memory.txt -text +res/cardsfolder/s/selenia.txt -text res/cardsfolder/s/selenia_dark_angel.txt svneol=native#text/plain res/cardsfolder/s/selesnya_charm.txt -text res/cardsfolder/s/selesnya_evangel.txt svneol=native#text/plain @@ -8664,6 +8693,7 @@ res/cardsfolder/s/serpent_warrior.txt svneol=native#text/plain res/cardsfolder/s/serpentine_basilisk.txt svneol=native#text/plain res/cardsfolder/s/serpentine_kavu.txt svneol=native#text/plain res/cardsfolder/s/serpents_gift.txt -text +res/cardsfolder/s/serra.txt -text res/cardsfolder/s/serra_advocate.txt svneol=native#text/plain res/cardsfolder/s/serra_angel.txt svneol=native#text/plain res/cardsfolder/s/serra_ascendant.txt svneol=native#text/plain @@ -8862,6 +8892,7 @@ res/cardsfolder/s/sickening_shoal.txt svneol=native#text/plain res/cardsfolder/s/sickle_ripper.txt svneol=native#text/plain res/cardsfolder/s/sickleslicer.txt svneol=native#text/plain res/cardsfolder/s/sidar_jabari.txt svneol=native#text/plain +res/cardsfolder/s/sidar_kondo.txt -text res/cardsfolder/s/sidewinder_sliver.txt svneol=native#text/plain res/cardsfolder/s/siege_gang_commander.txt svneol=native#text/plain res/cardsfolder/s/siege_mastodon.txt svneol=native#text/plain @@ -8946,6 +8977,7 @@ res/cardsfolder/s/sinstrikers_will.txt -text res/cardsfolder/s/sir_shandlar_of_eberyn.txt svneol=native#text/plain res/cardsfolder/s/sire_of_the_storm.txt svneol=native#text/plain res/cardsfolder/s/sirens_call.txt svneol=native#text/plain +res/cardsfolder/s/sisay.txt -text res/cardsfolder/s/sisays_ingenuity.txt -text svneol=unset#text/plain res/cardsfolder/s/sisays_ring.txt svneol=native#text/plain res/cardsfolder/s/sisters_of_stone_death.txt -text svneol=unset#text/plain @@ -9111,6 +9143,7 @@ res/cardsfolder/s/slithery_stalker.txt svneol=native#text/plain res/cardsfolder/s/sliver_legion.txt svneol=native#text/plain res/cardsfolder/s/sliver_overlord.txt svneol=native#text/plain res/cardsfolder/s/sliver_queen.txt svneol=native#text/plain +res/cardsfolder/s/sliver_queen_brood_mother.txt -text res/cardsfolder/s/sliversmith.txt svneol=native#text/plain res/cardsfolder/s/slobad_goblin_tinkerer.txt svneol=native#text/plain res/cardsfolder/s/slow_motion.txt svneol=native#text/plain @@ -9502,6 +9535,7 @@ res/cardsfolder/s/squandered_resources.txt svneol=native#text/plain res/cardsfolder/s/squeaking_pie_grubfellows.txt svneol=native#text/plain res/cardsfolder/s/squeaking_pie_sneak.txt -text res/cardsfolder/s/squealing_devil.txt -text +res/cardsfolder/s/squee.txt -text res/cardsfolder/s/squee_goblin_nabob.txt svneol=native#text/plain res/cardsfolder/s/squees_embrace.txt svneol=native#text/plain res/cardsfolder/s/squees_toy.txt svneol=native#text/plain @@ -9543,6 +9577,7 @@ res/cardsfolder/s/standing_troops.txt svneol=native#text/plain res/cardsfolder/s/standstill.txt svneol=native#text/plain res/cardsfolder/s/stangg.txt svneol=native#text/plain res/cardsfolder/s/star_compass.txt svneol=native#text/plain +res/cardsfolder/s/starke.txt -text res/cardsfolder/s/starke_of_rath.txt -text res/cardsfolder/s/starlight.txt svneol=native#text/plain res/cardsfolder/s/starlight_invoker.txt svneol=native#text/plain @@ -9915,6 +9950,7 @@ res/cardsfolder/s/syphon_soul.txt svneol=native#text/plain res/cardsfolder/s/szadek_lord_of_secrets.txt svneol=native#text/plain res/cardsfolder/t/tablet_of_epityr.txt svneol=native#text/plain res/cardsfolder/t/tablet_of_the_guilds.txt -text +res/cardsfolder/t/tahngarth.txt -text res/cardsfolder/t/tahngarth_talruum_hero.txt svneol=native#text/plain res/cardsfolder/t/tahngarths_rage.txt svneol=native#text/plain res/cardsfolder/t/taiga.txt svneol=native#text/plain @@ -9929,6 +9965,7 @@ res/cardsfolder/t/tainted_wood.txt svneol=native#text/plain res/cardsfolder/t/taj_nar_swordsmith.txt svneol=native#text/plain res/cardsfolder/t/tajuru_archer.txt svneol=native#text/plain res/cardsfolder/t/tajuru_preserver.txt -text +res/cardsfolder/t/takara.txt -text res/cardsfolder/t/take_possession.txt svneol=native#text/plain res/cardsfolder/t/takenos_cavalry.txt svneol=native#text/plain res/cardsfolder/t/takenuma_bleeder.txt svneol=native#text/plain @@ -9997,6 +10034,7 @@ res/cardsfolder/t/taunting_challenge.txt svneol=native#text/plain res/cardsfolder/t/taunting_elf.txt svneol=native#text/plain res/cardsfolder/t/taurean_mauler.txt svneol=native#text/plain res/cardsfolder/t/tavern_swindler.txt -text +res/cardsfolder/t/tawnos.txt -text res/cardsfolder/t/tawnoss_wand.txt svneol=native#text/plain res/cardsfolder/t/tawnoss_weaponry.txt svneol=native#text/plain res/cardsfolder/t/teardrop_kami.txt svneol=native#text/plain @@ -10312,6 +10350,7 @@ res/cardsfolder/t/tinker.txt svneol=native#text/plain res/cardsfolder/t/tireless_missionaries.txt svneol=native#text/plain res/cardsfolder/t/tireless_tribe.txt svneol=native#text/plain res/cardsfolder/t/titan_forge.txt svneol=native#text/plain +res/cardsfolder/t/titania.txt -text res/cardsfolder/t/titanias_boon.txt svneol=native#text/plain res/cardsfolder/t/titanias_chosen.txt svneol=native#text/plain res/cardsfolder/t/titanias_song.txt svneol=native#text/plain @@ -10709,6 +10748,7 @@ res/cardsfolder/u/urgent_exorcism.txt -text res/cardsfolder/u/uril_the_miststalker.txt svneol=native#text/plain res/cardsfolder/u/ursapine.txt svneol=native#text/plain res/cardsfolder/u/ursine_fylgja.txt svneol=native#text/plain +res/cardsfolder/u/urza.txt -text res/cardsfolder/u/urzas_armor.txt svneol=native#text/plain res/cardsfolder/u/urzas_bauble.txt -text res/cardsfolder/u/urzas_blueprints.txt svneol=native#text/plain @@ -11035,6 +11075,7 @@ res/cardsfolder/v/volcanic_submersion.txt svneol=native#text/plain res/cardsfolder/v/volcano_imp.txt svneol=native#text/plain res/cardsfolder/v/volition_reins.txt svneol=native#text/plain res/cardsfolder/v/volley_of_boulders.txt -text +res/cardsfolder/v/volrath.txt -text res/cardsfolder/v/volrath_the_fallen.txt svneol=native#text/plain res/cardsfolder/v/volraths_dungeon.txt svneol=native#text/plain res/cardsfolder/v/volraths_gardens.txt svneol=native#text/plain @@ -11525,6 +11566,7 @@ res/cardsfolder/w/wurmskin_forger.txt svneol=native#text/plain res/cardsfolder/w/wurmweaver_coil.txt svneol=native#text/plain res/cardsfolder/w/wydwen_the_biting_gale.txt svneol=native#text/plain res/cardsfolder/w/wyluli_wolf.txt svneol=native#text/plain +res/cardsfolder/x/xantcha.txt -text res/cardsfolder/x/xanthic_statue.txt svneol=native#text/plain res/cardsfolder/x/xantid_swarm.txt -text res/cardsfolder/x/xathrid_demon.txt -text @@ -13150,8 +13192,6 @@ src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletBuild.java -text src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletContests.java -text src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletLoad.java -text src/main/java/forge/gui/home/gauntlet/VSubmenuGauntletQuick.java -text -src/main/java/forge/gui/home/multiplayer/CSubmenuArchenemy.java -text -src/main/java/forge/gui/home/multiplayer/VSubmenuArchenemy.java -text src/main/java/forge/gui/home/package-info.java svneol=native#text/plain src/main/java/forge/gui/home/quest/CSubmenuChallenges.java -text src/main/java/forge/gui/home/quest/CSubmenuDuels.java -text @@ -13184,6 +13224,10 @@ src/main/java/forge/gui/home/settings/VSubmenuAvatars.java -text src/main/java/forge/gui/home/settings/VSubmenuDownloaders.java -text src/main/java/forge/gui/home/settings/VSubmenuPreferences.java -text src/main/java/forge/gui/home/settings/package-info.java svneol=native#text/plain +src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java -text +src/main/java/forge/gui/home/variant/CSubmenuVanguard.java -text +src/main/java/forge/gui/home/variant/VSubmenuArchenemy.java -text +src/main/java/forge/gui/home/variant/VSubmenuVanguard.java -text src/main/java/forge/gui/match/CMatchUI.java -text src/main/java/forge/gui/match/ControlWinLose.java -text src/main/java/forge/gui/match/GauntletWinLose.java -text @@ -13205,9 +13249,11 @@ src/main/java/forge/gui/match/controllers/CPicture.java -text src/main/java/forge/gui/match/controllers/CPlayers.java -text src/main/java/forge/gui/match/controllers/CStack.java -text src/main/java/forge/gui/match/controllers/package-info.java svneol=native#text/plain +src/main/java/forge/gui/match/nonsingleton/CCommand.java -text src/main/java/forge/gui/match/nonsingleton/CEmptyDoc.java -text src/main/java/forge/gui/match/nonsingleton/CField.java -text src/main/java/forge/gui/match/nonsingleton/CHand.java -text +src/main/java/forge/gui/match/nonsingleton/VCommand.java -text src/main/java/forge/gui/match/nonsingleton/VField.java -text src/main/java/forge/gui/match/nonsingleton/VHand.java -text src/main/java/forge/gui/match/nonsingleton/package-info.java svneol=native#text/plain diff --git a/res/blockdata/setdata.txt b/res/blockdata/setdata.txt index 9fea8949a29..0b1d29c14fc 100644 --- a/res/blockdata/setdata.txt +++ b/res/blockdata/setdata.txt @@ -89,4 +89,6 @@ Index:79|Code2:DKA|Code3:DKA|Name:Dark Ascension Index:80|Code2:AVR|Code3:AVR|Name:Avacyn Restored Index:81|Code2:PC2|Code3:PC2|Name:Planechase 2012 Edition Index:82|Code2:M13|Code3:M13|Name:Magic 2013 -Index:83|Code2:RTR|Code3:RTR|Name:Return to Ravnica \ No newline at end of file +Index:83|Code2:RTR|Code3:RTR|Name:Return to Ravnica + +Index:86|Code2:VAN|Code3:VAN|Name:Vanguard \ No newline at end of file diff --git a/res/cardsfolder/a/acidic_dagger.txt b/res/cardsfolder/a/acidic_dagger.txt index db02128ac45..2e7c76312e8 100644 --- a/res/cardsfolder/a/acidic_dagger.txt +++ b/res/cardsfolder/a/acidic_dagger.txt @@ -7,7 +7,7 @@ SVar:TrigDam:Mode$ DamageDone | ValidSource$ Creature.IsRemembered | ValidTarget SVar:TrigLeave:Mode$ ChangesZone | ValidCard$ Creature.IsRemembered | Origin$ Battlefield | Destination$ Any | Execute$ TrigSac | TriggerDescription$ When the targeted creature leaves the battlefield this turn, sacrifice Acidic Dagger. SVar:TrigDestroy:AB$ Destroy | Cost$ 0 | Defined$ TriggeredTarget SVar:TrigSac:DB$ SacrificeAll | Defined$ Imprinted | SubAbility$ ExileEffect -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/acidic_dagger.jpg diff --git a/res/cardsfolder/a/al_abaras_carpet.txt b/res/cardsfolder/a/al_abaras_carpet.txt index af1cecb2132..af8f3a28f12 100644 --- a/res/cardsfolder/a/al_abaras_carpet.txt +++ b/res/cardsfolder/a/al_abaras_carpet.txt @@ -3,7 +3,7 @@ ManaCost:5 Types:Artifact Text:no text A:AB$ Effect | Cost$ 5 T | Name$ Al-abara's Carpet Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt to you this turn by attacking creatures without flying. -SVar:STPrevent:Mode$ PreventDamage | Target$ You | Source$ Creature.attacking+withoutFlying | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures without flying. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ You | Source$ Creature.attacking+withoutFlying | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures without flying. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/al_abaras_carpet.jpg diff --git a/res/cardsfolder/a/alchemists_refuge.txt b/res/cardsfolder/a/alchemists_refuge.txt index 1bbeb2d7659..0b51a824329 100644 --- a/res/cardsfolder/a/alchemists_refuge.txt +++ b/res/cardsfolder/a/alchemists_refuge.txt @@ -4,7 +4,7 @@ Types:Land Text:no text A:AB$ Mana | Cost$ T | Produced$ 1 | SpellDescription$ Add 1 to your mana pool. A:AB$ Effect | Cost$ U G T | Name$ Refuge Effect | StaticAbilities$ QuickSpell | SpellDescription$ Until end of turn, you may cast nonland cards as though they had flash. -SVar:QuickSpell:Mode$ Continuous | Affected$ You | AddKeyword$ You may cast nonland cards as though they had flash. | Description$ You may cast nonland cards as though they had flash. +SVar:QuickSpell:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ You may cast nonland cards as though they had flash. | Description$ You may cast nonland cards as though they had flash. SVar:PlayMain1:TRUE SVar:RemRandomDeck:True SVar:RemAIDeck:True diff --git a/res/cardsfolder/a/angels_grace.txt b/res/cardsfolder/a/angels_grace.txt index b13f0e49c3f..8879ae3a270 100644 --- a/res/cardsfolder/a/angels_grace.txt +++ b/res/cardsfolder/a/angels_grace.txt @@ -4,8 +4,8 @@ Types:Instant Text:no text K:Split second A:SP$ Effect | Cost$ W | Name$ Angel's Grace Effect | Keywords$ AliFromCairo | StaticAbilities$ STCantLose,STOppsCantWin | AILogic$ Fog | SpellDescription$ You can't lose the game this turn and your opponents can't win the game this turn. Until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead. -SVar:STCantLose:Mode$ Continuous | Affected$ You | AddKeyword$ You can't lose the game. | Description$ You can't lose the game. -SVar:STOppsCantWin:Mode$ Continuous | Affected$ You | AddKeyword$ Your opponents can't win the game. | Description$ Your opponents can't win the game. +SVar:STCantLose:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ You can't lose the game. | Description$ You can't lose the game. +SVar:STOppsCantWin:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ Your opponents can't win the game. | Description$ Your opponents can't win the game. SVar:AliFromCairo:Damage that would reduce your life total to less than 1 reduces it to 1 instead. SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/angels_grace.jpg diff --git a/res/cardsfolder/a/aquitects_will.txt b/res/cardsfolder/a/aquitects_will.txt index ba3dd0b8a9d..3375c47903b 100644 --- a/res/cardsfolder/a/aquitects_will.txt +++ b/res/cardsfolder/a/aquitects_will.txt @@ -5,7 +5,7 @@ Text:no text A:SP$ Effect | Cost$ U | Name$ Flood Effect | StaticAbilities$ STFlood | Unique$ True | Duration$ Permanent | SubAbility$ TrigPutCounter | SpellDescription$ Put a flood counter on target land. That land is an island in addition to its other types for as long as it has a flood counter on it. If you control a Merfolk, draw a card. SVar:TrigPutCounter:DB$ PutCounter | Cost$ 0 | ValidTgts$ Land | CounterType$ FLOOD | CounterNum$ 1 | TgtPrompt$ Select target land | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | Cost$ 0 | NumCards$ 1 | ConditionPresent$ Merfolk.YouCtrl | ConditionCompare$ GE1 | ConditionDescription$ If you control a Merfolk, -SVar:STFlood:Mode$ Continuous | Affected$ Land.counters_GE1_FLOOD | AddType$ Island +SVar:STFlood:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Land.counters_GE1_FLOOD | AddType$ Island SVar:RemRandomDeck:True SVar:RemAIDeck:True SVar:Rarity:Common diff --git a/res/cardsfolder/a/arcbound_overseer_avatar.txt b/res/cardsfolder/a/arcbound_overseer_avatar.txt new file mode 100644 index 00000000000..3bea4f7eee2 --- /dev/null +++ b/res/cardsfolder/a/arcbound_overseer_avatar.txt @@ -0,0 +1,13 @@ +Name:Arcbound Overseer Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+0/+3 +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ BuildCounter | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may put a +1/+1 counter on target creature you control. +SVar:BuildCounter:AB$ PutCounter | Cost$ 0 | CounterType$ P1P1 | CounterNum$ 1 | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ ChargeCounter | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may put a charge counter on target permanent you control. +SVar:ChargeCounter:AB$ PutCounter | Cost$ 0 | CounterType$ CHARGE | CounterNum$ 1 | ValidTgts$ Permanent.YouCtrl | TgtPrompt$ Select target permanent you control +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182296&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo/arcbound-overseer.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/a/archangel_of_strife.txt b/res/cardsfolder/a/archangel_of_strife.txt index 5dd76df57ea..38f3a76f7f7 100644 --- a/res/cardsfolder/a/archangel_of_strife.txt +++ b/res/cardsfolder/a/archangel_of_strife.txt @@ -11,16 +11,16 @@ SVar:WarChoice:DB$ Effect | Name$ Archangel War Effect | ChoiceDescription$ War SVar:PeaceChoice:DB$ Effect | Name$ Archangel Peace Effect | ChoiceDescription$ Peace | Duration$ UntilHostLeavesPlay | RememberEffect$ True SVar:Attacking:DB$ Effect | Name$ Archangel War Effect | ChoiceDescription$ War | EffectOwner$ Opponent | Duration$ UntilHostLeavesPlay | RememberEffect$ True SVar:Defensive:DB$ Effect | Name$ Archangel Peace Effect | ChoiceDescription$ Peace | EffectOwner$ Opponent | Duration$ UntilHostLeavesPlay | RememberEffect$ True -S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddPower$ 3 | CheckSVar$ WarYou | SVarCompare$ GE1 | References$ WarYou -S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddToughness$ 3 | CheckSVar$ PeaceYou | SVarCompare$ GE1 | References$ PeaceYou -S:Mode$ Continuous | Affected$ Creature.YouDontCtrl | AddPower$ 3 | CheckSVar$ WarOpp | SVarCompare$ GE1 | References$ WarOpp -S:Mode$ Continuous | Affected$ Creature.YouDontCtrl | AddToughness$ 3 | CheckSVar$ PeaceOpp | SVarCompare$ GE1 | References$ PeaceOpp +S:Mode$ Continuous | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddPower$ 3 | CheckSVar$ WarYou | SVarCompare$ GE1 | References$ WarYou +S:Mode$ Continuous | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddToughness$ 3 | CheckSVar$ PeaceYou | SVarCompare$ GE1 | References$ PeaceYou +S:Mode$ Continuous | AffectedZone$ Battlefield | Affected$ Creature.YouDontCtrl | AddPower$ 3 | CheckSVar$ WarOpp | SVarCompare$ GE1 | References$ WarOpp +S:Mode$ Continuous | AffectedZone$ Battlefield | Affected$ Creature.YouDontCtrl | AddToughness$ 3 | CheckSVar$ PeaceOpp | SVarCompare$ GE1 | References$ PeaceOpp T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Self | Execute$ DBCleanup | Static$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:WarYou:Remembered$Valid Card.namedArchangel War Effect+YouCtrl -SVar:PeaceYou:Remembered$Valid Card.namedArchangel Peace Effect+YouCtrl -SVar:WarOpp:Remembered$Valid Card.namedArchangel War Effect+YouDontCtrl -SVar:PeaceOpp:Remembered$Valid Card.namedArchangel Peace Effect+YouDontCtrl +SVar:WarYou:Count$ValidCommand Card.namedArchangel War Effect+YouCtrl+IsRemembered +SVar:PeaceYou:Count$ValidCommand Card.namedArchangel Peace Effect+YouCtrl+IsRemembered +SVar:WarOpp:Count$ValidCommand Card.namedArchangel War Effect+YouDontCtrl+IsRemembered +SVar:PeaceOpp:Count$ValidCommand Card.namedArchangel Peace Effect+YouDontCtrl+IsRemembered SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/archangel_of_strife.jpg diff --git a/res/cardsfolder/a/ashling_the_pilgrim_avatar.txt b/res/cardsfolder/a/ashling_the_pilgrim_avatar.txt new file mode 100644 index 00000000000..09e2a7ade2f --- /dev/null +++ b/res/cardsfolder/a/ashling_the_pilgrim_avatar.txt @@ -0,0 +1,10 @@ +Name:Ashling the Pilgrim Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-1/+6 +A:AB$ DamageAll | ActivationZone$ Command | Cost$ 2 | NumDmg$ 1 | ValidCards$ Creature | ValidPlayers$ Each | ValidDescription$ each creature and each player. | SpellDescription$ CARDNAME deals 1 damage to each creature and each player. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182283&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo-2/ashling-the-extinguisher.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/a/ashnod.txt b/res/cardsfolder/a/ashnod.txt new file mode 100644 index 00000000000..5ff14ab6b70 --- /dev/null +++ b/res/cardsfolder/a/ashnod.txt @@ -0,0 +1,11 @@ +Name:Ashnod +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+1/-8 +T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ You | Execute$ TrigDestroy | TriggerZones$ Command | TriggerDescription$ Whenever a creature deals damage to you, destroy it. +SVar:TrigDestroy:AB$ Destroy | Cost$ 0 | Defined$ TriggeredSource +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12329&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/ashnod.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/a/aven_mimeomancer.txt b/res/cardsfolder/a/aven_mimeomancer.txt index b42c9bd1a02..09a2a072b0d 100644 --- a/res/cardsfolder/a/aven_mimeomancer.txt +++ b/res/cardsfolder/a/aven_mimeomancer.txt @@ -6,7 +6,7 @@ PT:3/1 K:Flying T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may put a feather counter on target creature. If you do, that creature is 3/1 and has flying for as long as it has a feather counter on it. SVar:TrigPutCounter:AB$ PutCounter | Cost$ 0 | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ FEATHER | CounterNum$ 1 | SubAbility$ DBAnimate -SVar:DBAnimate:DB$ Animate | Defined$ Targeted | staticAbilities$ MimeomancerStatic | Permanent$ True +SVar:DBAnimate:DB$ Animate | Defined$ Targeted | StaticAbilities$ MimeomancerStatic | Permanent$ True SVar:MimeomancerStatic:Mode$ Continuous | Affected$ Card.Self+counters_GE1_FEATHER | SetPower$ 3 | SetToughness$ 1 | AddKeyword$ Flying | Description$ CARDNAME is 3/1 and has flying for as long as it has a feather counter on it. SVar:RemAIDeck:True SVar:Rarity:Rare diff --git a/res/cardsfolder/a/awe_strike.txt b/res/cardsfolder/a/awe_strike.txt index 17e19d637f0..b511b58cf55 100644 --- a/res/cardsfolder/a/awe_strike.txt +++ b/res/cardsfolder/a/awe_strike.txt @@ -4,10 +4,10 @@ Types:Instant Text:no text A:SP$ Effect | Cost$ W | ValidTgts$ Creature | TgtPrompt$ Select target creature to entrance | Name$ Awe Struck | ReplacementEffects$ StrikeWithAwe | Triggers$ OutOfSight | SVars$ ExileEffect,GainLifeInstead,X | RememberObjects$ Targeted | AILogic$ Fog | SpellDescription$ The next time target creature would deal damage this turn, prevent that damage. You gain life equal to the damage prevented this way. SVar:StrikeWithAwe:Event$ DamageDone | ValidSource$ Card.IsRemembered | ReplaceWith$ GainLifeInstead | PreventionEffect$ True | Description$ The next time the targeted creature would deal damage this turn, prevent that damage. You gain life equal to the damage prevented this way. -SVar:GainLifeInstead:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X | SubAbility$ ExileEffect | References$ X +SVar:GainLifeInstead:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X | SubAbility$ ExileEffect | References$ X SVar:X:ReplaceCount$DamageAmount -SVar:OutOfSight:Mode$ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature.IsRemembered | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature.IsRemembered | Execute$ ExileEffect | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/awe_strike.jpg SetInfo:MRD|Common|http://magiccards.info/scans/en/mi/6.jpg diff --git a/res/cardsfolder/b/barrin.txt b/res/cardsfolder/b/barrin.txt new file mode 100644 index 00000000000..2408ebd0173 --- /dev/null +++ b/res/cardsfolder/b/barrin.txt @@ -0,0 +1,10 @@ +Name:Barrin +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+0/+6 +A:AB$ ChangeZone | ActivationZone$ Command | Cost$ Sac<1/Permanent> | ValidTgts$ Creature | TgtPrompt$ Select target Creature | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target creature to its owner's hand. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4957&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/barrin.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/b/birds_of_paradise_avatar.txt b/res/cardsfolder/b/birds_of_paradise_avatar.txt new file mode 100644 index 00000000000..8d8e5887e26 --- /dev/null +++ b/res/cardsfolder/b/birds_of_paradise_avatar.txt @@ -0,0 +1,11 @@ +Name:Birds of Paradise Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+0/-3 +S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Land.YouCtrl | AddAbility$ AnyMana | Description$ Lands you control have "Tap: 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. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182291&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo/birds-of-paradise.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/b/blinding_beam.txt b/res/cardsfolder/b/blinding_beam.txt index a86842baa3c..0d21d68de86 100644 --- a/res/cardsfolder/b/blinding_beam.txt +++ b/res/cardsfolder/b/blinding_beam.txt @@ -6,9 +6,9 @@ A:SP$ Tap | Cost$ 2 W | ValidTgts$ Creature | TargetMin$ 2 | TargetMax$ 2 | Tgt A:SP$ Effect | Cost$ 2 W | ValidTgts$ Player | TgtPrompt$ Select target player | IsCurse$ True | StaticAbilities$ DontUntap | Triggers$ RestoreSight | SVars$ ExileEffect | RememberObjects$ Targeted | Duration$ Permanent | SpellDescription$ or creatures don't untap during target player's next untap step. A:SP$ Effect | Cost$ 3 W | ValidTgts$ Player | TgtPrompt$ Select target player | IsCurse$ True | StaticAbilities$ DontUntap | Triggers$ RestoreSight | SVars$ ExileEffect | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | Duration$ Permanent | SubAbility$ BlindTheFoe | PrecostDesc$ Entwine | CostDesc$ 1 | NonBasicSpell$ True | SpellDescription$ (Choose both if you pay the entwine cost.) SVar:BlindTheFoe:DB$ Tap | ValidTgts$ Creature | TargetMin$ 2 | TargetMax$ 2 | TgtPrompt$ Select two target creatures -SVar:DontUntap:Mode$ Continuous | Affected$ Creature.RememberedPlayerCtrl | AddHiddenKeyword$ This card doesn't untap during your next untap step. +SVar:DontUntap:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.RememberedPlayerCtrl | AddHiddenKeyword$ This card doesn't untap during your next untap step. SVar:RestoreSight:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player.IsRemembered | TriggerZones$ Battlefield | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/blinding_beam.jpg diff --git a/res/cardsfolder/b/bone_mask.txt b/res/cardsfolder/b/bone_mask.txt index 049179faa08..748ac3d8288 100644 --- a/res/cardsfolder/b/bone_mask.txt +++ b/res/cardsfolder/b/bone_mask.txt @@ -6,7 +6,7 @@ A:AB$ ChooseSource | Cost$ 2 T | Choices$ Card | RememberChosen$ True | AILogic$ SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect,ExileFromLibInstead,X | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileFromLibInstead | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. SVar:ExileFromLibInstead:DB$ Mill | Defined$ You | Destination$ Exile | NumCards$ X | References$ X -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:X:ReplaceCount$DamageAmount SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True diff --git a/res/cardsfolder/b/brace_for_impact.txt b/res/cardsfolder/b/brace_for_impact.txt index f4318388d0f..6808069634c 100644 --- a/res/cardsfolder/b/brace_for_impact.txt +++ b/res/cardsfolder/b/brace_for_impact.txt @@ -4,10 +4,10 @@ Types:Instant Text:no text A:SP$ Effect | Cost$ 4 W | ValidTgts$ Creature.MultiColor | TgtPrompt$ Select target multicolored creature | Name$ Brace Effect | Triggers$ EndTrackingEffect | ReplacementEffects$ BraceReplace | SVars$ ImpactCounters,X,ExileEffect | RememberObjects$ Targeted | SpellDescription$ Prevent all damage that would be dealt to target multicolored creature this turn. For each 1 damage prevented this way, put a +1/+1 counter on that creature. SVar:BraceReplace:Event$ DamageDone | ValidTarget$ Card.IsRemembered | ReplaceWith$ ImpactCounters | PreventionEffect$ True | Description$ Prevent all damage that would be dealt to targeted multicolored creature this turn. For each 1 damage prevented this way, put a +1/+1 counter on that creature. -SVar:ImpactCounters:AB$PutCounter | Cost$ 0 | Defined$ ReplacedTarget | CounterType$ P1P1 | CounterNum$ X +SVar:ImpactCounters:AB$ PutCounter | Cost$ 0 | Defined$ ReplacedTarget | CounterType$ P1P1 | CounterNum$ X SVar:X:ReplaceCount$DamageAmount SVar:EndTrackingEffect:Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ Battlefield | Destination$ Any | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemAIDeck:True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/brace_for_impact.jpg diff --git a/res/cardsfolder/c/cease_fire.txt b/res/cardsfolder/c/cease_fire.txt index 1b0703bf2d3..f7a6f6d239c 100644 --- a/res/cardsfolder/c/cease_fire.txt +++ b/res/cardsfolder/c/cease_fire.txt @@ -3,7 +3,7 @@ ManaCost:2 W Types:Instant Text:no text A:SP$ Effect | Cost$ 2 W | ValidTgts$ Player | Name$ Cease-Fire Effect | StaticAbilities$ STCantBeCast | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SubAbility$ DBDraw | SpellDescription$ Target player can't cast creature spells this turn. -SVar:STCantBeCast:Mode$ CantBeCast | ValidCard$ Creature | Caster$ Player.IsRemembered | Description$ Target player can't cast creature spells this turn. +SVar:STCantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Creature | Caster$ Player.IsRemembered | Description$ Target player can't cast creature spells this turn. SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/cease_fire.jpg diff --git a/res/cardsfolder/c/chameleon_blur.txt b/res/cardsfolder/c/chameleon_blur.txt index f3e4a7cf81b..40a182b9c09 100644 --- a/res/cardsfolder/c/chameleon_blur.txt +++ b/res/cardsfolder/c/chameleon_blur.txt @@ -3,7 +3,7 @@ ManaCost:3 G Types:Instant Text:no text A:SP$ Effect | Cost$ 3 G | Name$ Chameleon Blur Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all damage that creatures would deal to players this turn. -SVar:STPrevent:Mode$ PreventDamage | Source$ Creature | Target$ Player | Description$ Prevent all damage that creatures would deal to players this turn. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature | Target$ Player | Description$ Prevent all damage that creatures would deal to players this turn. SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/chameleon_blur.jpg diff --git a/res/cardsfolder/c/channel.txt b/res/cardsfolder/c/channel.txt index a393c9ee0da..6d1361e796b 100644 --- a/res/cardsfolder/c/channel.txt +++ b/res/cardsfolder/c/channel.txt @@ -3,7 +3,7 @@ ManaCost:G G Types:Sorcery Text:no text A:SP$ Effect | Cost$ G G | Name$ Channel Effect | Abilities$ ABMana | SpellDescription$ Until end of turn, any time you could activate a mana ability, you may pay 1 life. If you do, add 1 to your mana pool. -SVar:ABMana:AB$Mana | Cost$ PayLife<1> | Produced$ 1 | Amount$ 1 | SpellDescription$ Add 1 to your mana pool. +SVar:ABMana:AB$Mana | Cost$ PayLife<1> | ActivationZone$ Command | Produced$ 1 | Amount$ 1 | SpellDescription$ Add 1 to your mana pool. SVar:RemAIDeck:True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/channel.jpg diff --git a/res/cardsfolder/c/cho_arrim_alchemist.txt b/res/cardsfolder/c/cho_arrim_alchemist.txt index e4a1dcb4626..6b4effb0f9e 100644 --- a/res/cardsfolder/c/cho_arrim_alchemist.txt +++ b/res/cardsfolder/c/cho_arrim_alchemist.txt @@ -7,7 +7,7 @@ A:AB$ ChooseSource | Cost$ 1 W W T Discard<1/Card> | Choices$ Card | RememberCho SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect,GainLifeInstead,X | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ GainLifeInstead | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. You gain life equal to the damage prevented this way. SVar:GainLifeInstead:DB$ GainLife | Defined$ You | LifeAmount$ X | SubAbility$ ExileEffect | References$ X -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:X:ReplaceCount$DamageAmount SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Rare diff --git a/res/cardsfolder/c/chronatog_avatar.txt b/res/cardsfolder/c/chronatog_avatar.txt new file mode 100644 index 00000000000..a2c774251bb --- /dev/null +++ b/res/cardsfolder/c/chronatog_avatar.txt @@ -0,0 +1,13 @@ +Name:Chronatog Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-1/+1 +S:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ -1 | Description$ You have no maximum hand size. +A:AB$ Draw | ActivationZone$ Command | Cost$ 0 | NumCards$ 3 | Defined$ You | ActivationLimit$ 1 | SubAbility$ DBSkipTurn | SpellDescription$ Draw three cards. You skip your next turn. Activate this ability only once each turn. +SVar:DBSkipTurn:DB$ AddTurn | NumTurns$ 1 | Defined$ Opponent +SVar:RemAIDeck:True +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=201898&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo/chronatog.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/c/chronomantic_escape.txt b/res/cardsfolder/c/chronomantic_escape.txt index 6f23965cad0..47adb046be5 100644 --- a/res/cardsfolder/c/chronomantic_escape.txt +++ b/res/cardsfolder/c/chronomantic_escape.txt @@ -4,7 +4,7 @@ Types:Sorcery Text:no text K:Suspend:3:2 W A:SP$ Effect | Cost$ 4 W W | Name$ Chronomantic Escape Effect | StaticAbilities$ STCantAttack | Duration$ UntilYourNextTurn | SubAbility$ DBChange | SpellDescription$ Until your next turn, creatures can't attack you. Exile CARDNAME with three time counters on it. -SVar:STCantAttack:Mode$ CantAttack | ValidCard$ Creature | Target$ You | Description$ Creatures can't attack you. +SVar:STCantAttack:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature | Target$ You | Description$ Creatures can't attack you. SVar:DBChange:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | RememberChanged$ True | SubAbility$ DBPutCounter SVar:DBPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ TIME | CounterNum$ 3 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/res/cardsfolder/c/circle_of_protection_artifacts.txt b/res/cardsfolder/c/circle_of_protection_artifacts.txt index 10fdf24c2b3..b99e16d9dce 100644 --- a/res/cardsfolder/c/circle_of_protection_artifacts.txt +++ b/res/cardsfolder/c/circle_of_protection_artifacts.txt @@ -5,7 +5,7 @@ Text:no text A:AB$ ChooseSource | Cost$ 2 | Choices$ Artifact | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time an artifact source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Uncommon SetInfo:5DN|Uncommon|http://magiccards.info/scans/en/5dn/8.jpg diff --git a/res/cardsfolder/c/circle_of_protection_black.txt b/res/cardsfolder/c/circle_of_protection_black.txt index 657e40304fe..fecfa61b9af 100644 --- a/res/cardsfolder/c/circle_of_protection_black.txt +++ b/res/cardsfolder/c/circle_of_protection_black.txt @@ -5,7 +5,7 @@ Text:no text A:AB$ ChooseSource | Cost$ 1 | Choices$ Card.Black | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a black source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemRandomDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/c/circle_of_protection_blue.txt b/res/cardsfolder/c/circle_of_protection_blue.txt index 9a9ae30cb7c..0bba7d04983 100644 --- a/res/cardsfolder/c/circle_of_protection_blue.txt +++ b/res/cardsfolder/c/circle_of_protection_blue.txt @@ -5,7 +5,7 @@ Text:no text A:AB$ ChooseSource | Cost$ 1 | Choices$ Card.Blue | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a blue source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemRandomDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/c/circle_of_protection_green.txt b/res/cardsfolder/c/circle_of_protection_green.txt index a5fd450a31b..dab76ed99cc 100644 --- a/res/cardsfolder/c/circle_of_protection_green.txt +++ b/res/cardsfolder/c/circle_of_protection_green.txt @@ -5,7 +5,7 @@ Text:no text A:AB$ ChooseSource | Cost$ 1 | Choices$ Card.Green | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a green source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemRandomDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/c/circle_of_protection_red.txt b/res/cardsfolder/c/circle_of_protection_red.txt index 37c71d3c6e1..72460153654 100644 --- a/res/cardsfolder/c/circle_of_protection_red.txt +++ b/res/cardsfolder/c/circle_of_protection_red.txt @@ -5,7 +5,7 @@ Text:no text A:AB$ ChooseSource | Cost$ 1 | Choices$ Card.Red | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a red source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemRandomDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/c/circle_of_protection_shadow.txt b/res/cardsfolder/c/circle_of_protection_shadow.txt index 18b5ae834be..068f256d391 100644 --- a/res/cardsfolder/c/circle_of_protection_shadow.txt +++ b/res/cardsfolder/c/circle_of_protection_shadow.txt @@ -5,7 +5,7 @@ Text:no text A:AB$ ChooseCard | Cost$ 1 | Choices$ Creature.withShadow | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SVars$ DBEffect,RPreventNextFromCreature,ExileEffect | SpellDescription$ The next time a creature of your choice with shadow would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromCreature | RememberObjects$ Remembered | SVars$ RPreventNextFromCreature,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromCreature:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time a creature of your choice with shadow would deal damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True SVar:Rarity:Common diff --git a/res/cardsfolder/c/circle_of_protection_white.txt b/res/cardsfolder/c/circle_of_protection_white.txt index cf67457cebd..2162fea8c5c 100644 --- a/res/cardsfolder/c/circle_of_protection_white.txt +++ b/res/cardsfolder/c/circle_of_protection_white.txt @@ -5,7 +5,7 @@ Text:no text A:AB$ ChooseSource | Cost$ 1 | Choices$ Card.White | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a white source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemRandomDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/c/circle_of_solace.txt b/res/cardsfolder/c/circle_of_solace.txt index 9848920e0e6..fee803f5ae5 100644 --- a/res/cardsfolder/c/circle_of_solace.txt +++ b/res/cardsfolder/c/circle_of_solace.txt @@ -7,7 +7,7 @@ SVar:ChooseCT:AB$ ChooseType | Cost$ 0 | Defined$ You | Type$ Creature | AILogic A:AB$ ChooseCard | Cost$ 1 W | Choices$ Creature.ChosenType | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SVars$ DBEffect,RPreventNextFromCreature,ExileEffect | SpellDescription$ The next time a creature of the chosen type would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromCreature | RememberObjects$ Remembered | SVars$ RPreventNextFromCreature,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromCreature:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time a creature of the chosen type would deal damage to you this turn, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True SVar:Rarity:Rare diff --git a/res/cardsfolder/c/crovax.txt b/res/cardsfolder/c/crovax.txt new file mode 100644 index 00000000000..374e714775b --- /dev/null +++ b/res/cardsfolder/c/crovax.txt @@ -0,0 +1,12 @@ +Name:Crovax +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+2/+0 +T:Mode$ DamageDone | ValidSource$ Creature+YouCtrl | ValidTarget$ Creature,Player | TriggerZones$ Command | Execute$ TrigGainLife | TriggerDescription$ Whenever a creature you control deals damage to a creature or player, you gain 1 life. +SVar:TrigGainLife:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ 1 +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4958&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/crovax.jpg +Oracle:Hand +2, life +0\nWhenever a creature you control deals damage to a creature or player, you gain 1 life. +End \ No newline at end of file diff --git a/res/cardsfolder/c/crypt_of_agadeem.txt b/res/cardsfolder/c/crypt_of_agadeem.txt index 63b57349321..b7887b95b2a 100644 --- a/res/cardsfolder/c/crypt_of_agadeem.txt +++ b/res/cardsfolder/c/crypt_of_agadeem.txt @@ -5,7 +5,7 @@ Text:no text K:CARDNAME enters the battlefield tapped. A:AB$ Mana | Cost$ T | Produced$ B | SpellDescription$ Add B to your mana pool. A:AB$ Mana | Cost$ 2 T | Produced$ B | Amount$ X | References$ X | SpellDescription$ Add B to your mana pool for each black creature card in your graveyard. -SVar:X:Count$ValidGrave Creature.Black+YouCtrl +SVar:X:Count$ValidGraveyard Creature.Black+YouCtrl SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/crypt_of_agadeem.jpg diff --git a/res/cardsfolder/d/dauntless_escort.txt b/res/cardsfolder/d/dauntless_escort.txt index 8ee99538652..7bd0df1d2a4 100644 --- a/res/cardsfolder/d/dauntless_escort.txt +++ b/res/cardsfolder/d/dauntless_escort.txt @@ -4,7 +4,7 @@ Types:Creature Rhino Soldier Text:no text PT:3/3 A:AB$ Effect | Cost$ Sac<1/CARDNAME> | Name$ Dauntless Escort Effect | StaticAbilities$ KWPump | SpellDescription$ Creatures you control are indestructible this turn. -SVar:KWPump:Mode$ Continuous | Affected$ Creature.YouCtrl | AddHiddenKeyword$ Indestructible | Description$ Creatures you control are indestructible this turn. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddHiddenKeyword$ Indestructible | Description$ Creatures you control are indestructible this turn. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/dauntless_escort.jpg diff --git a/res/cardsfolder/d/dauntless_escort_avatar.txt b/res/cardsfolder/d/dauntless_escort_avatar.txt new file mode 100644 index 00000000000..0bb89dc88be --- /dev/null +++ b/res/cardsfolder/d/dauntless_escort_avatar.txt @@ -0,0 +1,10 @@ +Name:Dauntless Escort Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+1/+1 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddKeyword$ Exalted | Description$ Creatures you control have exalted. (Whenever a creature you control attacks alone, it gets +1/+1 until end of turn for each instance of exalted among permanents you control.) +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=201898&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo-2/dauntless-escort.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/d/deep_wood.txt b/res/cardsfolder/d/deep_wood.txt index 779ddf759de..96310b0b151 100644 --- a/res/cardsfolder/d/deep_wood.txt +++ b/res/cardsfolder/d/deep_wood.txt @@ -3,7 +3,7 @@ ManaCost:1 G Types:Instant Text:no text A:SP$ Effect | Cost$ 1 G | Name$ Deep Wood Effect | StaticAbilities$ STPrevent | AILogic$ Fog | OpponentTurn$ True | ActivationPhases$ Declare Attackers - Play Instants and Abilities | SpellDescription$ Cast CARDNAME only during the declare attackers step and only if you've been attacked this step. Prevent all damage that would be dealt to you this turn by attacking creatures. -SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.attacking | Target$ You | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.attacking | Target$ You | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/deep_wood.jpg SetInfo:POR|Uncommon|http://magiccards.info/scans/en/po/86.jpg diff --git a/res/cardsfolder/d/delifs_cube.txt b/res/cardsfolder/d/delifs_cube.txt index 968ce779901..063d7ceecdc 100644 --- a/res/cardsfolder/d/delifs_cube.txt +++ b/res/cardsfolder/d/delifs_cube.txt @@ -7,7 +7,7 @@ SVar:TrigAttackerUnblocked:Mode$ AttackerUnblocked | ValidCard$ Card.IsRemembere SVar:DBPump:DB$Pump | Defined$ Remembered | KW$ HIDDEN CARDNAME assigns no combat damage | SubAbility$ PutCounter SVar:PutCounter:DB$PutCounter | Defined$ Imprinted | CounterType$ CUBE | CounterNum$ 1 | SubAbility$ ExileEffect SVar:TrigLeave:Mode$ ChangesZone | ValidCard$ Creature.IsRemembered | Origin$ Battlefield | Destination$ Any | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True A:AB$ Regenerate | Cost$ 2 SubCounter<1/CUBE> | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Regenerate target creature. SVar:RemAIDeck:True SVar:Rarity:Rare diff --git a/res/cardsfolder/d/demoralize.txt b/res/cardsfolder/d/demoralize.txt index 40c385e4749..2c9ba4e5de9 100644 --- a/res/cardsfolder/d/demoralize.txt +++ b/res/cardsfolder/d/demoralize.txt @@ -4,8 +4,8 @@ Types:Instant Text:no text A:SP$ Effect | Cost$ 2 R | Name$ Demoralize Effect | StaticAbilities$ KWPump | SubAbility$ DBEffect2 | SpellDescription$ Each creature can't be blocked this turn except by two or more creatures. SVar:DBEffect2:DB$ Effect | Name$ Demoralize Effect 2 | StaticAbilities$ KWPump2 | SpellDescription$ Threshold - If seven or more cards are in your graveyard, creatures can't block this turn. -SVar:KWPump:Mode$ Continuous | Affected$ Creature | AddKeyword$ CARDNAME can't be blocked except by two or more creatures. | Description$ Each creature can't be blocked this turn except by two or more creatures. -SVar:KWPump2:Mode$ Continuous | Affected$ Creature | AddKeyword$ CARDNAME can't block. | Condition$ Threshold | Description$ Threshold - If seven or more cards are in your graveyard, creatures can't block this turn. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddKeyword$ CARDNAME can't be blocked except by two or more creatures. | Description$ Each creature can't be blocked this turn except by two or more creatures. +SVar:KWPump2:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddKeyword$ CARDNAME can't block. | Threshold$ True | Description$ Threshold - If seven or more cards are in your graveyard, creatures can't block this turn. SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/demoralize.jpg diff --git a/res/cardsfolder/d/detritivore.txt b/res/cardsfolder/d/detritivore.txt index 52e1cebee52..d7124a85f6c 100644 --- a/res/cardsfolder/d/detritivore.txt +++ b/res/cardsfolder/d/detritivore.txt @@ -8,7 +8,7 @@ K:Suspend:X:XCantBe0 X 3 R T:Mode$ CounterRemoved | ValidCard$ Card.Self | TriggerZones$ Exile | CounterType$ TIME | Execute$ TrigDestroy | TriggerDescription$ Whenever a time counter is removed from CARDNAME while it's exiled, destroy target nonbasic land. SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Land.nonBasic | TgtPrompt$ Select a nonbasic land. SVar:X:Count$xPaid -SVar:Y:Count$ValidGrave Land.nonBasic+YouDontCtrl +SVar:Y:Count$ValidGraveyard Land.nonBasic+YouDontCtrl SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/detritivore.jpg diff --git a/res/cardsfolder/d/diamond_faerie_avatar.txt b/res/cardsfolder/d/diamond_faerie_avatar.txt new file mode 100644 index 00000000000..9c120fab789 --- /dev/null +++ b/res/cardsfolder/d/diamond_faerie_avatar.txt @@ -0,0 +1,10 @@ +Name:Diamond Faerie Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+0/+5 +A:AB$ Pump | ActivationZone$ Command | Cost$ S | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | NumAtt$ 1 | NumDef$ 1 | SpellDescription$ Target creature you control gets +1/+1 until end of turn. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182274&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo/diamond-faerie.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/d/divine_light.txt b/res/cardsfolder/d/divine_light.txt index 6397407c7d4..2188e278a44 100644 --- a/res/cardsfolder/d/divine_light.txt +++ b/res/cardsfolder/d/divine_light.txt @@ -3,7 +3,7 @@ ManaCost:W Types:Instant Text:no text A:SP$ Effect | Cost$ W | Name$ Divine Light Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt this turn to creatures you control. -SVar:STPrevent:Mode$ PreventDamage | Target$ Creature.YouCtrl | Description$ Prevent all damage that would be dealt this turn to creatures you control. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ Creature.YouCtrl | Description$ Prevent all damage that would be dealt this turn to creatures you control. SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/divine_light.jpg diff --git a/res/cardsfolder/d/druids_deliverance.txt b/res/cardsfolder/d/druids_deliverance.txt index 7a0615c8b1f..23ae96c8b55 100644 --- a/res/cardsfolder/d/druids_deliverance.txt +++ b/res/cardsfolder/d/druids_deliverance.txt @@ -3,7 +3,7 @@ ManaCost:1 G Types:Instant Text:no text A:SP$ Effect | Cost$ 1 G | Name$ Druid's Deliverance Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SubAbility$ DBChoose | SpellDescription$ Prevent all combat damage that would be dealt to you this turn. Populate. (Put a token onto the battlefield that's a copy of a creature token you control.) -SVar:STPrevent:Mode$ PreventDamage | CombatDamage$ True | Target$ You | Description$ Prevent all combat damage that would be dealt to you this turn. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | CombatDamage$ True | Target$ You | Description$ Prevent all combat damage that would be dealt to you this turn. SVar:DBChoose:DB$ ChooseCard | Cost$ 0 | Defined$ You | Amount$ 1 | Choices$ Creature.token+YouCtrl | SubAbility$ DBCopy | RememberChosen$ True SVar:DBCopy:DB$ CopyPermanent | Defined$ Remembered SVar:Rarity:Common diff --git a/res/cardsfolder/d/due_respect.txt b/res/cardsfolder/d/due_respect.txt index b28dd2e7835..d0db63f9eee 100644 --- a/res/cardsfolder/d/due_respect.txt +++ b/res/cardsfolder/d/due_respect.txt @@ -3,7 +3,7 @@ ManaCost:1 W Types:Instant Text:no text A:SP$ Effect | Cost$ 1 W | Name$ Due Respect Effect | StaticAbilities$ STETBTapped | SubAbility$ DBDraw | AILogic$ BeginningOfOppTurn | SpellDescription$ Permanents enter the battlefield tapped this turn. -SVar:STETBTapped:Mode$ ETBTapped | ValidCard$ Permanent | Description$ Permanents enter the battlefield tapped this turn. +SVar:STETBTapped:Mode$ ETBTapped | EffectZone$ Command | ValidCard$ Permanent | Description$ Permanents enter the battlefield tapped this turn. SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card. SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/due_respect.jpg diff --git a/res/cardsfolder/e/eladamri.txt b/res/cardsfolder/e/eladamri.txt new file mode 100644 index 00000000000..08e6153b715 --- /dev/null +++ b/res/cardsfolder/e/eladamri.txt @@ -0,0 +1,21 @@ +Name:Eladamri +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-1/+15 +A:AB$ Effect | ActivationZone$ Command | Cost$ 0 | ValidTgts$ Creature | TgtPrompt$ Select target creature to redirect damage from | ReplacementEffects$ SelflessCombat,SelflessNonCombat | Triggers$ OutOfSight | SVars$ CombatDmg,NonCombatDmg,RestDmgCombat,RestDmg,ExileEffect,X,Y | References$ SelflessCombat,SelflessNonCombat,OutOfSight,CombatDmg,NonCombatDmg,RestDmgCombat,RestDmg,ExileEffect,X,Y | RememberObjects$ Targeted | Duration$ Permanent | SpellDescription$ The next 1 damage that would be dealt to target creature you control is dealt to you instead. +SVar:SelflessCombat:Event$ DamageDone | ActiveZones$ Command | ValidTarget$ Card.IsRemembered | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ The next 1 damage that would be dealt to target creature you control is dealt to you instead. +SVar:SelflessNonCombat:Event$ DamageDone | ActiveZones$ Command | ValidTarget$ Card.IsRemembered | IsCombat$ False | ReplaceWith$ NonCombatDmg | Secondary$ True | Description$ The next 1 damage that would be dealt to target creature you control is dealt to you instead. +SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ You | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ You | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:RestDmgCombat:DB$DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect +SVar:RestDmg:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature.IsRemembered | Execute$ ExileEffect | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True +SVar:X:ReplaceCount$DamageAmount/Minus.1 +SVar:Y:ReplaceCount$DamageAmount +SVar:Rarity:Special +SVar:Picture:http://www.wizards.com/global/images/magic/general/eladamri.jpg +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/eladamri.jpg +Oracle:Hand -1, life +15\n{0}: The next 1 damage that would be dealt to target creature you control is dealt to you instead. +End \ No newline at end of file diff --git a/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt b/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt new file mode 100644 index 00000000000..16cae29f293 --- /dev/null +++ b/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt @@ -0,0 +1,11 @@ +Name:Eladamri, Lord of Leaves Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-1/+2 +T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ Player | TriggerZones$ Command | Execute$ TrigAddMana | TriggerDescription$ At the beginning of each player's precombat main phase, that player adds {G}{G} to his or her mana pool. +SVar:TrigAddMana:AB$ Mana | Cost$ 0 | Produced$ G | Amount$ 2 | Defined$ TriggeredPlayer +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=195137&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo-2/eladamri-lord-of-leaves.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/e/elspeth_knight_errant.txt b/res/cardsfolder/e/elspeth_knight_errant.txt index d475c962452..a7f2edba061 100644 --- a/res/cardsfolder/e/elspeth_knight_errant.txt +++ b/res/cardsfolder/e/elspeth_knight_errant.txt @@ -6,7 +6,7 @@ Loyalty:4 A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | TokenAmount$ 1 | TokenName$ Soldier | TokenColors$ White | TokenTypes$ Creature,Soldier | TokenOwner$ You | TokenPower$ 1 | TokenToughness$ 1 | Planeswalker$ True | SpellDescription$ Put a 1/1 white Soldier creature token onto the battlefield. A:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 3 | NumDef$ 3 | KW$ Flying | Planeswalker$ True | SpellDescription$ Target creature gets +3/+3 and gains flying until end of turn. A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Name$ Elspeth, Knight-Errant emblem | Image$ elspeth_knight_errant_emblem | StaticAbilities$ STIndestructible | Keywords$ Indestructible | Planeswalker$ True | Ultimate$ True | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Artifacts, creatures, enchantments, and lands you control are indestructible." -SVar:STIndestructible:Mode$ Continuous | Affected$ Artifact.YouCtrl,Creature.YouCtrl,Enchantment.YouCtrl,Land.YouCtrl | AffectedZone$ Battlefield | AddKeyword$ Indestructible +SVar:STIndestructible:Mode$ Continuous | EffectZone$ Command | Affected$ Artifact.YouCtrl,Creature.YouCtrl,Enchantment.YouCtrl,Land.YouCtrl | AffectedZone$ Battlefield | AddKeyword$ Indestructible SVar:Indestructible:Artifacts, creatures, enchantments, and lands you control are indestructible. SVar:Rarity:Mythic SVar:Picture:http://www.wizards.com/global/images/magic/general/elspeth_knight_errant.jpg diff --git a/res/cardsfolder/e/endure.txt b/res/cardsfolder/e/endure.txt index 3dd54efd78d..6631306de97 100644 --- a/res/cardsfolder/e/endure.txt +++ b/res/cardsfolder/e/endure.txt @@ -3,7 +3,7 @@ ManaCost:3 W W Types:Instant Text:no text A:SP$ Effect | Cost$ 3 W W | Name$ Endure Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all damage that would be dealt to you and permanents you control this turn. -SVar:STPrevent:Mode$ PreventDamage | Target$ You,Permanent.YouCtrl | Description$ Prevent all damage that would be dealt to you and permanents you control this turn. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ You,Permanent.YouCtrl | Description$ Prevent all damage that would be dealt to you and permanents you control this turn. SVar:RemAIDeck:True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/endure.jpg diff --git a/res/cardsfolder/e/erhnam_djinn_avatar.txt b/res/cardsfolder/e/erhnam_djinn_avatar.txt new file mode 100644 index 00000000000..76de2fb8194 --- /dev/null +++ b/res/cardsfolder/e/erhnam_djinn_avatar.txt @@ -0,0 +1,11 @@ +Name:Erhnam Djinn Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+0/+3 +T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | Execute$ DjinnisGift | TriggerZones$ Command | TriggerDescription$ Whenever you cast a creature spell, put a 1/1 green Saproling creature token onto the battlefield. +SVar:DjinnisGift:AB$ Token | Cost$ 0 | TokenAmount$ 1 | TokenName$ Saproling | TokenTypes$ Creature,Saproling | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182259&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo/erhnam-djinn.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/e/ertai.txt b/res/cardsfolder/e/ertai.txt new file mode 100644 index 00000000000..f94732b3b89 --- /dev/null +++ b/res/cardsfolder/e/ertai.txt @@ -0,0 +1,10 @@ +Name:Ertai +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-1/+4 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddKeyword$ Hexproof | Description$ Creatures you control have hexproof. (They can't be the targets of spells or abilities your opponents control.) +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4959&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/ertai.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/e/etched_oracle_avatar.txt b/res/cardsfolder/e/etched_oracle_avatar.txt new file mode 100644 index 00000000000..9ab42683883 --- /dev/null +++ b/res/cardsfolder/e/etched_oracle_avatar.txt @@ -0,0 +1,10 @@ +Name:Etched Oracle Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+1/-4 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Card.YouCtrl | AddHiddenKeyword$ HIDDEN Alternative Cost W U B R G | AffectedZone$ Hand,Graveyard,Exile,Library | Description$ You may pay W U B R G rather than pay the mana cost for spells that you cast. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182298&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo/etched-oracle.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/e/ethereal_haze.txt b/res/cardsfolder/e/ethereal_haze.txt index 3fd0b5b93f6..1f50757b0ab 100644 --- a/res/cardsfolder/e/ethereal_haze.txt +++ b/res/cardsfolder/e/ethereal_haze.txt @@ -3,7 +3,7 @@ ManaCost:W Types:Instant Text:no text A:SP$ Effect | Cost$ W | Name$ Ethereal Haze Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all damage that would be dealt by creatures this turn. -SVar:STPrevent:Mode$ PreventDamage | Source$ Creature | Description$ Prevent all damage that would be dealt by creatures this turn. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature | Description$ Prevent all damage that would be dealt by creatures this turn. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/ethereal_haze.jpg SetInfo:CHK|Common|http://magiccards.info/scans/en/chk/9.jpg diff --git a/res/cardsfolder/e/ethersworn_shieldmage.txt b/res/cardsfolder/e/ethersworn_shieldmage.txt index 4aa70f1943e..11aa5f1f3ac 100644 --- a/res/cardsfolder/e/ethersworn_shieldmage.txt +++ b/res/cardsfolder/e/ethersworn_shieldmage.txt @@ -6,7 +6,7 @@ PT:2/2 K:Flash T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ When CARDNAME enters the battlefield, prevent all damage that would be dealt to artifact creatures this turn. SVar:TrigEffect:DB$Effect | Name$ Ethersworn Shieldmage Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt to artifact creatures this turn. -SVar:STPrevent:Mode$ PreventDamage | Target$ Creature.Artifact | Description$ Prevent all damage that would be dealt to artifact creatures this turn. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ Creature.Artifact | Description$ Prevent all damage that would be dealt to artifact creatures this turn. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/ethersworn_shieldmage.jpg SetInfo:ARB|Common|http://magiccards.info/scans/en/arb/4.jpg diff --git a/res/cardsfolder/f/fallen_angel_avatar.txt b/res/cardsfolder/f/fallen_angel_avatar.txt new file mode 100644 index 00000000000..e9ff5248cba --- /dev/null +++ b/res/cardsfolder/f/fallen_angel_avatar.txt @@ -0,0 +1,12 @@ +Name:Fallen Angel Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+0/-5 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl | Execute$ TrigDrain | TriggerZones$ Command | TriggerDescription$ Whenever a creature you control dies, target opponent loses 1 life and you gain 1 life. +SVar:TrigDrain:AB$ LoseLife | Cost$ 0 | ValidTgts$ Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182303&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo/fallen-angel.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/f/falter.txt b/res/cardsfolder/f/falter.txt index c3105ba7ad1..c456d026cfe 100644 --- a/res/cardsfolder/f/falter.txt +++ b/res/cardsfolder/f/falter.txt @@ -3,7 +3,7 @@ ManaCost:1 R Types:Instant Text:no text A:SP$ Effect | Cost$ 1 R | Name$ Falter Effect | StaticAbilities$ KWPump | AILogic$ Evasion | SpellDescription$ Creatures without flying can't block this turn. -SVar:KWPump:Mode$ Continuous | Affected$ Creature.withoutFlying | AddHiddenKeyword$ CARDNAME can't block. | Description$ Creatures without flying can't block this turn. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.withoutFlying | AddHiddenKeyword$ CARDNAME can't block. | Description$ Creatures without flying can't block this turn. SVar:PlayMain1:TRUE SVar:RemAIDeck:True SVar:Rarity:Common diff --git a/res/cardsfolder/f/festival.txt b/res/cardsfolder/f/festival.txt index 77117b1825b..6c203c5cbef 100644 --- a/res/cardsfolder/f/festival.txt +++ b/res/cardsfolder/f/festival.txt @@ -3,7 +3,7 @@ ManaCost:W Types:Instant Text:Cast Festival only during an opponent's upkeep. A:SP$ Effect | Cost$ W | Name$ Festival Effect | StaticAbilities$ KWPump | OpponentTurn$ True | ActivationPhases$ Upkeep | SpellDescription$ Creatures can't attack this turn. -SVar:KWPump:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Creatures can't attack this turn. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Creatures can't attack this turn. SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/festival.jpg diff --git a/res/cardsfolder/f/flame_fusillade.txt b/res/cardsfolder/f/flame_fusillade.txt index 2ce66b30a15..c22bed3c845 100644 --- a/res/cardsfolder/f/flame_fusillade.txt +++ b/res/cardsfolder/f/flame_fusillade.txt @@ -3,7 +3,7 @@ ManaCost:3 R Types:Sorcery Text:no text A:SP$ Effect | Cost$ 3 R | Name$ Flame Fusillade Effect | StaticAbilities$ STDamage | SVars$ ABDamage | SpellDescription$ Until end of turn, permanents you control gain "Tap: This permanent deals 1 damage to target creature or player." -SVar:STDamage:Mode$ Continuous | Affected$ Permanent.YouCtrl | AddAbility$ ABDamage | Description$ Until end of turn, permanents you control gain "Tap: This permanent deals 1 damage to target creature or player." +SVar:STDamage:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Permanent.YouCtrl | AddAbility$ ABDamage | Description$ Until end of turn, permanents you control gain "Tap: This permanent deals 1 damage to target creature or player." SVar:ABDamage:AB$ DealDamage | Cost$ T | NumDmg$ 1 | Tgt$ TgtCP | SpellDescription$ CARDNAME deals 1 damage to target creature or player SVar:RemAIDeck:True SVar:Rarity:Rare diff --git a/res/cardsfolder/f/flaring_pain.txt b/res/cardsfolder/f/flaring_pain.txt index 6c81c706db2..5a5f686387f 100644 --- a/res/cardsfolder/f/flaring_pain.txt +++ b/res/cardsfolder/f/flaring_pain.txt @@ -4,7 +4,7 @@ Types:Instant Text:no text K:Flashback R A:SP$ Effect | Cost$ 1 R | Name$ Flaring Pain Effect | StaticAbilities$ STCantPrevent | SpellDescription$ Damage can't be prevented this turn. -SVar:STCantPrevent:Mode$ Continuous | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented. +SVar:STCantPrevent:Mode$ Continuous | EffectZone$ Command | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented. SVar:RemAIDeck:True SVar:RemRandomDeck:True SVar:Rarity:Common diff --git a/res/cardsfolder/f/forfend.txt b/res/cardsfolder/f/forfend.txt index f04de0b2110..dba5d21e62a 100644 --- a/res/cardsfolder/f/forfend.txt +++ b/res/cardsfolder/f/forfend.txt @@ -3,7 +3,7 @@ ManaCost:1 W Types:Instant Text:no text A:SP$ Effect | Cost$ 1 W | Name$ Forfend Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt to creatures this turn. -SVar:STPrevent:Mode$ PreventDamage | Target$ Creature | Description$ Prevent all damage that would be dealt to creatures this turn. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ Creature | Description$ Prevent all damage that would be dealt to creatures this turn. SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/forfend.jpg diff --git a/res/cardsfolder/g/generals_regalia.txt b/res/cardsfolder/g/generals_regalia.txt index 6928eb4034a..82d30cad306 100644 --- a/res/cardsfolder/g/generals_regalia.txt +++ b/res/cardsfolder/g/generals_regalia.txt @@ -9,7 +9,7 @@ SVar:SelflessNonCombat:Event$ DamageDone | ValidTarget$ You | ValidSource$ Card. SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:ReplaceCount$DamageAmount SVar:RemAIDeck:True diff --git a/res/cardsfolder/g/gerrard.txt b/res/cardsfolder/g/gerrard.txt new file mode 100644 index 00000000000..e9013af1c1f --- /dev/null +++ b/res/cardsfolder/g/gerrard.txt @@ -0,0 +1,11 @@ +Name:Gerrard +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-4/+0 +T:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ At the beginning of your draw step, draw an additional card. +SVar:TrigDraw:AB$ Draw | Cost$ 0 | NumCards$ 1 | Defined$ You +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4960&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/gerrard.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/g/gix.txt b/res/cardsfolder/g/gix.txt new file mode 100644 index 00000000000..a956f658a9f --- /dev/null +++ b/res/cardsfolder/g/gix.txt @@ -0,0 +1,10 @@ +Name:Gix +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-2/+18 +A:AB$ ChangeZone | Cost$ 3 | ActivationZone$ Command | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SpellDescription$ Return target creature card from your graveyard to your hand. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12330&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/gix.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/g/gorilla_war_cry.txt b/res/cardsfolder/g/gorilla_war_cry.txt index 59a124bd33f..f6963797c02 100644 --- a/res/cardsfolder/g/gorilla_war_cry.txt +++ b/res/cardsfolder/g/gorilla_war_cry.txt @@ -4,7 +4,7 @@ Types:Instant Text:no text A:SP$ Effect | Cost$ 1 R | Name$ Gorilla War Cry Effect | StaticAbilities$ Blocking | ActivationPhases$ BeginCombat->Declare Attackers - Play Instants and Abilities | AILogic$ Evasion | SubAbility$ DBDraw | SpellDescription$ Cast CARDNAME only during combat before blockers are declared. Creatures can't be blocked this turn except by two or more creatures. SVar:DBDraw:DB$Draw | NumCards$ 1 | NextUpkeep$ True | SpellDescription$ Draw a card at the beginning of the next upkeep. -SVar:Blocking:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ CARDNAME can't be blocked except by two or more creatures. | Description$ Creatures can't be blocked this turn except by two or more creatures. +SVar:Blocking:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddHiddenKeyword$ CARDNAME can't be blocked except by two or more creatures. | Description$ Creatures can't be blocked this turn except by two or more creatures. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/gorilla_war_cry.jpg SetInfo:ALL|Common|http://magiccards.info/scans/en/ai/108.jpg|2 diff --git a/res/cardsfolder/g/greater_realm_of_preservation.txt b/res/cardsfolder/g/greater_realm_of_preservation.txt index a9239bc8ba4..f8770ada4b6 100644 --- a/res/cardsfolder/g/greater_realm_of_preservation.txt +++ b/res/cardsfolder/g/greater_realm_of_preservation.txt @@ -5,7 +5,7 @@ Text:no text A:AB$ ChooseSource | Cost$ 1 W | Choices$ Card.Black,Card.Red | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a black or red source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemRandomDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/g/greven_il_vec.txt b/res/cardsfolder/g/greven_il_vec.txt new file mode 100644 index 00000000000..5cb2d6d0c61 --- /dev/null +++ b/res/cardsfolder/g/greven_il_vec.txt @@ -0,0 +1,11 @@ +Name:Greven il-Vec +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-1/+2 +T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Creature | TriggerZones$ Command | Execute$ TrigDestroy | TriggerDescription$ Whenever a creature you control deals damage to a creature, destroy the other creature. It can't be regenerated. +SVar:TrigDestroy:AB$ Destroy | Cost$ 0 | Defined$ TriggeredTarget | NoRegen$ True +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4961&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/greven-il-vec.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/g/grinning_demon_avatar.txt b/res/cardsfolder/g/grinning_demon_avatar.txt new file mode 100644 index 00000000000..335674e86f6 --- /dev/null +++ b/res/cardsfolder/g/grinning_demon_avatar.txt @@ -0,0 +1,11 @@ +Name:Grinning Demon Avatar +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-1/-2 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl+nonToken | TriggerZones$ Command | Execute$ GrinningDiscard | TriggerDescription$ Whenever a nontoken creature you control dies, target opponent discards a card. +SVar:GrinningDiscard:AB$ Discard | Cost$ 0 | ValidTgts$ Opponent | TgtPrompt$ Select an opponent to discard | NumCards$ 1 | Mode$ TgtChoose +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=182304&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard-mtgo/grinning-demon.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/g/guardian_angel.txt b/res/cardsfolder/g/guardian_angel.txt index 9bb5f2dc4e0..436829ad531 100644 --- a/res/cardsfolder/g/guardian_angel.txt +++ b/res/cardsfolder/g/guardian_angel.txt @@ -4,9 +4,9 @@ Types:Instant Text:no text A:SP$ PreventDamage | Cost$ X W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ X | References$ X | SubAbility$ GuardianEffect | SpellDescription$ Prevent the next X damage that would be dealt to target creature or player this turn. Until end of turn, you may pay 1 any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that creature or player this turn. SVar:GuardianEffect:DB$ Effect | Name$ Guardian Angel Effect | Abilities$ ABProtect | RememberObjects$ Targeted | Triggers$ OutOfSight | SVars$ ExileEffect -SVar:ABProtect:AB$ PreventDamage | Cost$ 1 | InstantSpeed$ True | Defined$ Remembered | Amount$ 1 | SpellDescription$ You may pay 1 any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that creature or player this turn. +SVar:ABProtect:AB$ PreventDamage | ActivationZone$ Command | Cost$ 1 | InstantSpeed$ True | Defined$ Remembered | Amount$ 1 | SpellDescription$ You may pay 1 any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that creature or player this turn. SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Remembered | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:RemAIDeck:True SVar:X:Count$xPaid SVar:Rarity:Common diff --git a/res/cardsfolder/h/haazda_shield_mate.txt b/res/cardsfolder/h/haazda_shield_mate.txt index 4bea651bcd2..6b520d1c2bd 100644 --- a/res/cardsfolder/h/haazda_shield_mate.txt +++ b/res/cardsfolder/h/haazda_shield_mate.txt @@ -7,7 +7,7 @@ K:At the beginning of your upkeep, sacrifice CARDNAME unless you pay W W A:AB$ ChooseSource | Cost$ W | Choices$ Card | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True SVar:Rarity:Rare diff --git a/res/cardsfolder/h/hanna.txt b/res/cardsfolder/h/hanna.txt new file mode 100644 index 00000000000..73e5863bb9c --- /dev/null +++ b/res/cardsfolder/h/hanna.txt @@ -0,0 +1,10 @@ +Name:Hanna +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+1/-5 +S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card | Type$ Spell | Activator$ You | Amount$ 1 | Description$ Spells you cast cost 1 less to cast. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4962&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/hanna.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/h/harmless_assault.txt b/res/cardsfolder/h/harmless_assault.txt index 7608b03e9a9..40ad6316586 100644 --- a/res/cardsfolder/h/harmless_assault.txt +++ b/res/cardsfolder/h/harmless_assault.txt @@ -3,7 +3,7 @@ ManaCost:2 W W Types:Instant Text:no text A:SP$ Effect | Cost$ 2 W W | Name$ Harmless Assault Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all combat damage that would be dealt this turn by attacking creatures. -SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.attacking | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by attacking creatures. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.attacking | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by attacking creatures. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/harmless_assault.jpg SetInfo:ROE|Common|http://magiccards.info/scans/en/roe/24.jpg diff --git a/res/cardsfolder/h/havengul_lich.txt b/res/cardsfolder/h/havengul_lich.txt index ecff39664e3..4e0522b8a49 100644 --- a/res/cardsfolder/h/havengul_lich.txt +++ b/res/cardsfolder/h/havengul_lich.txt @@ -9,7 +9,7 @@ SVar:PumpTheir:DB$Pump | Defined$ Remembered | ConditionCheckSVar$ SelectKW | Co SVar:FXCast:DB$Effect | Name$ Havengul Lich Delayed Trigger | Triggers$ DTCast | SVars$ StealAbs,STSteal,CleanupDT | RememberObjects$ Targeted SVar:DTCast:Mode$ SpellCast | ValidCard$ Card.IsRemembered | Execute$ StealAbs | TriggerDescription$ When you cast that card this turn, Havengul Lich gains all activated abilities of that card until end of turn. SVar:StealAbs:DB$Effect | Name$ Havengul Lich effect | RememberObjects$ TriggeredCard | StaticAbilities$ STSteal | SubAbility$ CleanupDT -SVar:STSteal:Mode$ Continuous | Affected$ EffectSource | EffectZone$ Battlefield | GainsAbilitiesOf$ Creature.IsRemembered | GainsAbilitiesOfZones$ Library,Hand,Stack,Battlefield,Graveyard,Exile,Command +SVar:STSteal:Mode$ Continuous | Affected$ EffectSource | EffectZone$ Command | GainsAbilitiesOf$ Creature.IsRemembered | GainsAbilitiesOfZones$ Library,Hand,Stack,Battlefield,Graveyard,Exile,Command T:Mode$ Phase | Phase$ Cleanup | Static$ True | Execute$ Cleanup | Secondary$ True | TriggerDescription$ A little behind the scenes. SVar:Cleanup:DB$Cleanup | ClearRemembered$ True SVar:CleanupDT:DB$ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile diff --git a/res/cardsfolder/h/heart_wolf.txt b/res/cardsfolder/h/heart_wolf.txt index eb797763ea5..bc6696d30c3 100644 --- a/res/cardsfolder/h/heart_wolf.txt +++ b/res/cardsfolder/h/heart_wolf.txt @@ -8,7 +8,7 @@ A:AB$ Pump | Cost$ T | NumAtt$ +2 | KW$ First Strike | ValidTgts$ Creature.Dwarf SVar:EliteGuardEffect:DB$ Effect | Name$ Heart Wolf Effect | Triggers$ LostTheGuarded | SVars$ ExileEffect,EliteDefence | References$ LostTheGuarded,ExileEffect,EliteDefence | RememberObjects$ Targeted | ImprintCards$ Self SVar:LostTheGuarded:Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ Battlefield | Destination$ Any | Execute$ EliteDefence | TriggerDescription$ When the targeted creature leaves the battlefield this turn, sacrifice Heart Wolf. SVar:EliteDefence:DB$ SacrificeAll | Defined$ Imprinted | SubAbility$ ExileEffect -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/heart_wolf.jpg diff --git a/res/cardsfolder/h/heavy_fog.txt b/res/cardsfolder/h/heavy_fog.txt index 833aacb4b13..9ae77a22105 100644 --- a/res/cardsfolder/h/heavy_fog.txt +++ b/res/cardsfolder/h/heavy_fog.txt @@ -3,7 +3,7 @@ ManaCost:1 G Types:Instant Text:no text A:SP$ Effect | Cost$ 1 G | Name$ Heavy Fog Effect | StaticAbilities$ STPrevent | AILogic$ Fog | OpponentTurn$ True | ActivationPhases$ Declare Attackers - Play Instants and Abilities | SpellDescription$ Cast CARDNAME only during the declare attackers step and only if you've been attacked this step. Prevent all damage that would be dealt to you this turn by attacking creatures. -SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.attacking | Target$ You | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.attacking | Target$ You | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/heavy_fog.jpg SetInfo:PTK|Uncommon|http://magiccards.info/scans/en/p3k/136.jpg diff --git a/res/cardsfolder/h/helm_of_obedience.txt b/res/cardsfolder/h/helm_of_obedience.txt index ef412e3c80d..bf91c6afe3b 100644 --- a/res/cardsfolder/h/helm_of_obedience.txt +++ b/res/cardsfolder/h/helm_of_obedience.txt @@ -15,8 +15,8 @@ SVar:DBResetCounter:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ Number | Expr SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:TargetedLibrary:TargetedPlayer$CardsInLibrary SVar:MaxRepeats:TargetedPlayer$CardsInLibrary/Plus.2 -SVar:MilledCreature:Count$ValidGrave Creature.IsRemembered -SVar:MilledCard:Count$ValidGrave Card.IsRemembered +SVar:MilledCreature:Count$ValidGraveyard Creature.IsRemembered +SVar:MilledCard:Count$ValidGraveyard Card.IsRemembered SVar:AccumlatedMilled:Number$0 SVar:X:Count$xPaid SVar:RemAIDeck:True diff --git a/res/cardsfolder/h/hero_of_oxid_ridge.txt b/res/cardsfolder/h/hero_of_oxid_ridge.txt index 1ced9a772fc..36ba6ec7f4a 100644 --- a/res/cardsfolder/h/hero_of_oxid_ridge.txt +++ b/res/cardsfolder/h/hero_of_oxid_ridge.txt @@ -8,7 +8,7 @@ T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ Tr T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigEffect | TriggerDescription$ When CARDNAME attacks, creatures with power 1 or less can't block this turn. SVar:TrigBattleCry:AB$PumpAll | Cost$ 0 | ValidCards$ Creature.attacking+Other | NumAtt$ 1 SVar:TrigEffect:AB$Effect | Cost$ 0 | Name$ Hero of Oxid Ridge Effect | StaticAbilities$ KWPump -SVar:KWPump:Mode$ Continuous | Affected$ Creature.powerLE1 | AddHiddenKeyword$ CARDNAME can't block. | Description$ Creatures with power 1 or less can't block this turn. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.powerLE1 | AddHiddenKeyword$ CARDNAME can't block. | Description$ Creatures with power 1 or less can't block this turn. SVar:Rarity:Mythic SVar:Picture:http://www.wizards.com/global/images/magic/general/hero_of_oxid_ridge.jpg SetInfo:MBS|Mythic|http://magiccards.info/scans/en/mbs/66.jpg diff --git a/res/cardsfolder/i/interdict.txt b/res/cardsfolder/i/interdict.txt index f1fc3f00d9e..8f10336e1c2 100644 --- a/res/cardsfolder/i/interdict.txt +++ b/res/cardsfolder/i/interdict.txt @@ -4,7 +4,7 @@ Types:Instant Text:no text A:SP$ Counter | Cost$ 1 U | TargetType$ Activated | TgtPrompt$ Select target activated ability from an artifact, creature, enchantment, or land. | RememberTargets$ True | ValidTgts$ Artifact,Creature,Enchantment,Land | SubAbility$ DBEffect | SpellDescription$ Counter target activated ability from an artifact, creature, enchantment, or land. That permanent's activated abilities can't be activated this turn. (Mana abilities can't be targeted.) SVar:DBEffect:DB$ Effect | Name$ Interdict Effect | StaticAbilities$ STCantBeActivated | RememberObjects$ Remembered | SubAbility$ DBDraw -SVar:STCantBeActivated:Mode$ CantBeActivated | ValidCard$ Permanent.IsRemembered +SVar:STCantBeActivated:Mode$ CantBeActivated | EffectZone$ Command | ValidCard$ Permanent.IsRemembered SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card. SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/interdict.jpg diff --git a/res/cardsfolder/i/intervention_pact.txt b/res/cardsfolder/i/intervention_pact.txt index 44d90213eb2..53e4a16522b 100644 --- a/res/cardsfolder/i/intervention_pact.txt +++ b/res/cardsfolder/i/intervention_pact.txt @@ -7,7 +7,7 @@ A:SP$ ChooseSource | Cost$ 0 | Choices$ Card | RememberChosen$ True | AILogic$ N SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect,GainLifeInstead,X | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ GainLifeInstead | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. You gain life equal to the damage prevented this way. SVar:GainLifeInstead:DB$ GainLife | Defined$ You | LifeAmount$ X | SubAbility$ ExileEffect | References$ X -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:X:ReplaceCount$DamageAmount SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBDelTrig SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigLoseGame | TriggerDescription$ At the beginning of your next upkeep, pay 1 W W. If you don't, you lose the game. diff --git a/res/cardsfolder/i/invulnerability.txt b/res/cardsfolder/i/invulnerability.txt index c4e0e4b8cc2..e4df29c5e1c 100644 --- a/res/cardsfolder/i/invulnerability.txt +++ b/res/cardsfolder/i/invulnerability.txt @@ -6,7 +6,7 @@ K:Buyback 3 A:SP$ ChooseSource | Cost$ 1 W | Choices$ Card | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/invulnerability.jpg diff --git a/res/cardsfolder/i/island_sanctuary.txt b/res/cardsfolder/i/island_sanctuary.txt index 9d25aa6ed6c..0ad61ab78f2 100644 --- a/res/cardsfolder/i/island_sanctuary.txt +++ b/res/cardsfolder/i/island_sanctuary.txt @@ -4,7 +4,7 @@ Types:Enchantment Text:no text R:Event$ Draw | ActiveZones$ Battlefield | ActivePhases$ Draw | PlayerTurn$ True | ValidPlayer$ You | Optional$ True | ReplaceWith$ SanctuaryEffect | Description$ If you would draw a card during your draw step, instead you may skip that draw. If you do, until your next turn, you can't be attacked except by creatures with flying and/or islandwalk. SVar:SanctuaryEffect:AB$ Effect | Cost$ 0 | Name$ Sanctuary Effect | StaticAbilities$ IslandRetreat | Duration$ UntilYourNextTurn -SVar:IslandRetreat:Mode$ CantAttack | ValidCard$ Creature.withoutFlying+withoutIslandwalk | Target$ You | Description$ Creatures without flying can't attack you. +SVar:IslandRetreat:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature.withoutFlying+withoutIslandwalk | Target$ You | Description$ Creatures without flying can't attack you. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/island_sanctuary.jpg diff --git a/res/cardsfolder/j/jade_monolith.txt b/res/cardsfolder/j/jade_monolith.txt index 675f7c48f9d..e59ee3317a5 100644 --- a/res/cardsfolder/j/jade_monolith.txt +++ b/res/cardsfolder/j/jade_monolith.txt @@ -9,7 +9,7 @@ SVar:SelflessNonCombat:Event$ DamageDone | ValidTarget$ Card.IsImprinted | Valid SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ You | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ You | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:ReplaceCount$DamageAmount SVar:RemAIDeck:True diff --git a/res/cardsfolder/k/karn.txt b/res/cardsfolder/k/karn.txt new file mode 100644 index 00000000000..e984e137df3 --- /dev/null +++ b/res/cardsfolder/k/karn.txt @@ -0,0 +1,11 @@ +Name:Karn +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+1/+6 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Artifact.nonCreature+YouCtrl | SetPower$ AffectedX | SetToughness$ AffectedX | AddType$ Creature | Description$ Each noncreature artifact you control is an artifact creature with power and toughness each equal to its converted mana cost. +SVar:AffectedX:Count$CardManaCost +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4963&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/karn.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/k/karonas_zealot.txt b/res/cardsfolder/k/karonas_zealot.txt index c4b4f0f4546..8b7c339432b 100644 --- a/res/cardsfolder/k/karonas_zealot.txt +++ b/res/cardsfolder/k/karonas_zealot.txt @@ -8,10 +8,10 @@ T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ KaronaEffect | TriggerDescr SVar:KaronaEffect:DB$ Effect | Name$ Karona's Zealot Effect | ValidTgts$ Creature | TgtPrompt$ Select target creature to redirect the damage to | ReplacementEffects$ ZealotCombat,ZealotNonCombat | Triggers$ OutOfSight | SVars$ ExileEffect,CombatDmg,NonCombatDmg,X | Duration$ HostLeavesOrEOT | RememberObjects$ Self | ImprintCards$ Targeted SVar:ZealotCombat:Event$ DamageDone | ValidTarget$ Creature.IsRemembered | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ All damage that would be dealt to Karona's Zealot this turn is dealt to target creature instead. SVar:ZealotNonCombat:Event$ DamageDone | ValidTarget$ Creature.IsRemembered | IsCombat$ False | ReplaceWith$ NonCombatDmg | Secondary$ True | Description$ All damage that would be dealt to Karona's Zealot this turn is dealt to target creature instead. -SVar:CombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | References$ X -SVar:NonCombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ X | References$ X -SVar:OutOfSight:Mode$ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | References$ X +SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ X | References$ X +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:X:ReplaceCount$DamageAmount SVar:RemAIDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/k/kjeldoran_elite_guard.txt b/res/cardsfolder/k/kjeldoran_elite_guard.txt index 0eeb634cb6a..f81f8b89c2c 100644 --- a/res/cardsfolder/k/kjeldoran_elite_guard.txt +++ b/res/cardsfolder/k/kjeldoran_elite_guard.txt @@ -7,7 +7,7 @@ A:AB$ Pump | Cost$ T | NumAtt$ +2 | NumDef$ +2 | ValidTgts$ Creature | TgtPrompt SVar:EliteGuardEffect:DB$ Effect | Name$ Elite Guard Escort | Triggers$ LostTheGuarded | SVars$ ExileEffect,EliteDefence | References$ LostTheGuarded,ExileEffect,EliteDefence | RememberObjects$ Targeted | ImprintCards$ Self SVar:LostTheGuarded:Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ Battlefield | Destination$ Any | Execute$ EliteDefence | TriggerDescription$ When the targeted creature leaves the battlefield this turn, sacrifice Kjeldoran Elite Guard. SVar:EliteDefence:DB$ SacrificeAll | Defined$ Imprinted | SubAbility$ ExileEffect -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemAIDeck:True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/kjeldoran_elite_guard.jpg diff --git a/res/cardsfolder/k/koth_of_the_hammer.txt b/res/cardsfolder/k/koth_of_the_hammer.txt index c98d40fbd48..f536b03719b 100644 --- a/res/cardsfolder/k/koth_of_the_hammer.txt +++ b/res/cardsfolder/k/koth_of_the_hammer.txt @@ -7,7 +7,7 @@ A:AB$ Untap | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Moun SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Power$ 4 | Toughness$ 4 | Types$ Creature,Elemental | Colors$ Red A:AB$ Mana | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | Produced$ R | Amount$ X | References$ X | SpellDescription$ Add R to your mana pool for each Mountain you control. A:AB$ Effect | Cost$ SubCounter<5/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Koth of the Hammer emblem | Image$ koth_of_the_hammer_emblem | StaticAbilities$ STDamage | SVars$ ABDealDamage | Stackable$ False | Keywords$ Damage | Duration$ Permanent | SpellDescription$ You get an emblem with "Mountains you control have '{T}: This land deals 1 damage to target creature or player." -SVar:STDamage:Mode$ Continuous | Affected$ Mountain.YouCtrl | AddAbility$ ABDealDamage | AffectedZone$ Battlefield +SVar:STDamage:Mode$ Continuous | EffectZone$ Command | Affected$ Mountain.YouCtrl | AddAbility$ ABDealDamage | AffectedZone$ Battlefield SVar:ABDealDamage:AB$ DealDamage | Cost$ T | Tgt$ TgtCP | NumDmg$ 1 | SpellDescription$ Deal 1 damage to target creature or player SVar:Damage:Mountains you control have '{T}: This land deals 1 damage to target creature or player. SVar:X:Count$Valid Mountain.YouCtrl diff --git a/res/cardsfolder/l/lancers_en_kor.txt b/res/cardsfolder/l/lancers_en_kor.txt index 307127653b9..2e9e340e3e5 100644 --- a/res/cardsfolder/l/lancers_en_kor.txt +++ b/res/cardsfolder/l/lancers_en_kor.txt @@ -7,12 +7,12 @@ K:Trample A:AB$ Effect | Cost$ 0 | Name$ en-Kor Redirection | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control to redirect the damage to | ReplacementEffects$ EnKorCombat,EnKorNonCombat | Triggers$ OutOfSight | SVars$ CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | References$ EnKorCombat,EnKorNonCombat,OutOfSight,CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | Duration$ HostLeavesOrEOT | RememberObjects$ Self | ImprintCards$ Targeted | SpellDescription$ The next 1 damage that would be dealt to CARDNAME this turn is dealt to target creature you control instead. SVar:EnKorCombat:Event$ DamageDone | ValidTarget$ Creature.IsRemembered | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ The next 1 damage that would be dealt to Lancers en-Kor this turn is dealt to target creature you control instead. SVar:EnKorNonCombat:Event$ DamageDone | ValidTarget$ Creature.IsRemembered | IsCombat$ False | ReplaceWith$ NonCombatDmg | Secondary$ True | Description$ The next 1 damage that would be dealt to Lancers en-Kor this turn is dealt to target creature you control instead. -SVar:CombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 | References$ Y -SVar:NonCombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 | References$ Y -SVar:RestDmgCombat:DB$DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect | References$ X -SVar:RestDmg:DB$DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect | References$ X -SVar:OutOfSight:Mode$ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 | References$ Y +SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 | References$ Y +SVar:RestDmgCombat:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect | References$ X +SVar:RestDmg:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect | References$ X +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:X:ReplaceCount$DamageAmount/Minus.1 SVar:Y:ReplaceCount$DamageAmount SVar:RemAIDeck:True diff --git a/res/cardsfolder/l/liege_of_the_tangle.txt b/res/cardsfolder/l/liege_of_the_tangle.txt index fbec1607da3..a4fa96d1310 100644 --- a/res/cardsfolder/l/liege_of_the_tangle.txt +++ b/res/cardsfolder/l/liege_of_the_tangle.txt @@ -9,7 +9,7 @@ T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage SVar:TrigPutCounter:AB$PutCounter | Cost$ 0 | ValidTgts$ Land.YouCtrl | OptionalDecider$ You | TargetMax$ X | TgtPrompt$ Select lands you control | CounterType$ AWAKENING | CounterNum$ 1 | SubAbility$ DBEffect | References$ X SVar:X:Count$Valid Land.YouCtrl SVar:DBEffect:DB$ Effect | Cost$ 0 | Name$ Awakening Effect | StaticAbilities$ KWAnimateAll | Unique$ True | Duration$ Permanent -SVar:KWAnimateAll:Mode$ Continuous | Affected$ Card.counters_GE1_AWAKENING | SetPower$ 8 | SetToughness$ 8 | AddType$ Creature & Elemental | SetColor$ Green | Description$ Each of those lands is an 8/8 green Elemental creature for as long as it has an awakening counter on it. They're still lands. +SVar:KWAnimateAll:Mode$ Continuous | EffectZone$ Command | Affected$ Card.counters_GE1_AWAKENING | SetPower$ 8 | SetToughness$ 8 | AddType$ Creature & Elemental | SetColor$ Green | Description$ Each of those lands is an 8/8 green Elemental creature for as long as it has an awakening counter on it. They're still lands. SVar:MustBeBlocked:True SVar:Rarity:Mythic SVar:Picture:http://www.wizards.com/global/images/magic/general/liege_of_the_tangle.jpg diff --git a/res/cardsfolder/l/liliana_of_the_dark_realms.txt b/res/cardsfolder/l/liliana_of_the_dark_realms.txt index 23da5a3bbce..598f24ee7b0 100644 --- a/res/cardsfolder/l/liliana_of_the_dark_realms.txt +++ b/res/cardsfolder/l/liliana_of_the_dark_realms.txt @@ -10,7 +10,7 @@ SVar:X:Count$Valid Swamp.YouCtrl SVar:ABChoice:DB$ GenericChoice | Defined$ You | Cost$ 0 | Choices$ ABPump1,ABPump2 SVar:ABPump1:DB$ Pump | Cost$ 0 | Defined$ Targeted | NumAtt$ +X | NumDef$ +X | References$ X | ChoiceDescription$ +X/+X SVar:ABPump2:DB$ Pump | Cost$ 0 | Defined$ Targeted | NumAtt$ -X | NumDef$ -X | References$ X | ChoiceDescription$ -X/-X -SVar:SwampBoost:Mode$ Continuous | Affected$ Swamp.YouCtrl | AddAbility$ BlackTap | Description$ Swamps you control have 'T:Add BBBB to your mana pool.' +SVar:SwampBoost:Mode$ Continuous | EffectZone$ Command | Affected$ Swamp.YouCtrl | AffectedZone$ Battlefield | AddAbility$ BlackTap | Description$ Swamps you control have 'T:Add BBBB to your mana pool.' SVar:BlackTap:AB$ Mana | Cost$ T | Produced$ B | Amount$ 4 | SpellDescription$ Add B B B B to your mana pool. SVar:Rarity:Mythic SVar:Picture:http://www.wizards.com/global/images/magic/general/liliana_of_the_dark_realms.jpg diff --git a/res/cardsfolder/l/luminesce.txt b/res/cardsfolder/l/luminesce.txt index ed27952e4ec..83e5bcd13a9 100644 --- a/res/cardsfolder/l/luminesce.txt +++ b/res/cardsfolder/l/luminesce.txt @@ -3,7 +3,7 @@ ManaCost:W Types:Instant Text:no text A:SP$ Effect | Cost$ W | Name$ Luminesce Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that black sources and red sources would deal this turn. -SVar:STPrevent:Mode$ PreventDamage | Source$ Card.Black,Card.Red | Description$ Prevent all damage that black sources and red sources would deal this turn. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Card.Black,Card.Red | Description$ Prevent all damage that black sources and red sources would deal this turn. SVar:RemAIDeck:True SVar:RemRandomDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/l/lyna.txt b/res/cardsfolder/l/lyna.txt new file mode 100644 index 00000000000..7df0364d995 --- /dev/null +++ b/res/cardsfolder/l/lyna.txt @@ -0,0 +1,10 @@ +Name:Lyna +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+2/-4 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddKeyword$ Shadow | Description$ Creatures you control have shadow. (They can block and be blocked only by creatures with shadow.) +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12142&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/lyna.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/m/maddening_imp.txt b/res/cardsfolder/m/maddening_imp.txt index eafb9b4ff75..d1e93aec2b3 100644 --- a/res/cardsfolder/m/maddening_imp.txt +++ b/res/cardsfolder/m/maddening_imp.txt @@ -5,7 +5,7 @@ Text:no text PT:1/1 K:Flying A:AB$ Effect | Cost$ T | Name$ Maddening Imp Effect | StaticAbilities$ KWPump | ActivationPhases$ Upkeep->Main1 | OpponentTurn$ True | SpellDescription$ Non-Wall creatures the active player controls attack this turn if able. At the beginning of the next end step, destroy each of those creatures that didn't attack this turn. Activate this ability only during an opponent's turn and only before combat. | SubAbility$ DestroyPacifist -SVar:KWPump:Mode$ Continuous | Affected$ Creature.ActivePlayerCtrl+nonWall | AddHiddenKeyword$ CARDNAME attacks each turn if able. | Description$ Non-Wall creatures the active player controls attack this turn if able. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.ActivePlayerCtrl+nonWall | AffectedZone$ Battlefield | AddHiddenKeyword$ CARDNAME attacks each turn if able. | Description$ Non-Wall creatures the active player controls attack this turn if able. SVar:DestroyPacifist:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigDestroy | TriggerDescription$ At the beginning of the next end step, destroy each of those creatures that didn't attack this turn. SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Creature.ActivePlayerCtrl+notAttackedThisTurn+nonWall SVar:RemAIDeck:True diff --git a/res/cardsfolder/m/maraxus.txt b/res/cardsfolder/m/maraxus.txt new file mode 100644 index 00000000000..747a62a5f17 --- /dev/null +++ b/res/cardsfolder/m/maraxus.txt @@ -0,0 +1,10 @@ +Name:Maraxus +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+1/+2 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddPower$ 1 | Description$ Creatures you control get +1/+0. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4964&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/maraxus.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/m/march_of_the_machines.txt b/res/cardsfolder/m/march_of_the_machines.txt index b85a833dc92..220e6f86f32 100644 --- a/res/cardsfolder/m/march_of_the_machines.txt +++ b/res/cardsfolder/m/march_of_the_machines.txt @@ -2,7 +2,7 @@ Name:March of the Machines ManaCost:3 U Types:Enchantment Text:no text -S:Mode$ Continuous | Affected$ Artifact.nonCreature | SetPower$ AffectedX | SetToughness$ AffectedX | References$ AffectedX | AddType$ Creature | Description$ Each noncreature artifact is an artifact creature with power and toughness each equal to its converted mana cost. (Equipment that's a creature can't equip a creature.) +S:Mode$ Continuous | Affected$ Artifact.nonCreature | SetPower$ AffectedX | SetToughness$ AffectedX | AddType$ Creature | Description$ Each noncreature artifact is an artifact creature with power and toughness each equal to its converted mana cost. (Equipment that's a creature can't equip a creature.) SVar:AffectedX:Count$CardManaCost SVar:PlayMain1:TRUE SVar:RemRandomDeck:True diff --git a/res/cardsfolder/m/mishra.txt b/res/cardsfolder/m/mishra.txt new file mode 100644 index 00000000000..74e696d4e56 --- /dev/null +++ b/res/cardsfolder/m/mishra.txt @@ -0,0 +1,14 @@ +Name:Mishra +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+0/-3 +R:Event$ DamageDone | ActiveZones$ Command | ValidSource$ Creature.YouCtrl | ReplaceWith$ DmgTimes2 | IsCombat$ False | Description$ If a creature you control would deal damage, it deals double that damage instead. +R:Event$ DamageDone | ActiveZones$ Command | ValidSource$ Creature.YouCtrl | ReplaceWith$ DmgTimes2Combat | IsCombat$ True | Secondary$ True | Description$ If a creature you control would deal damage, it deals double that damage instead. +SVar:DmgTimes2:AB$ DealDamage | Cost$ 0 | Defined$ ReplacedTarget | DamageSource$ ReplacedSource | NumDmg$ X | References$ X +SVar:DmgTimes2Combat:AB$ DealDamage | Cost$ 0 | CombatDamage$ True | Defined$ ReplacedTarget | DamageSource$ ReplacedSource | NumDmg$ X | References$ X +SVar:X:ReplaceCount$DamageAmount/Twice +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=12327 +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/mishra.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/m/moonhold.txt b/res/cardsfolder/m/moonhold.txt index ed69efbff1a..2957c85f96c 100644 --- a/res/cardsfolder/m/moonhold.txt +++ b/res/cardsfolder/m/moonhold.txt @@ -4,8 +4,8 @@ Types:Instant Text:no text A:SP$ Effect | Cost$ 2 RW | ValidTgts$ Player | IsCurse$ True | Name$ Moonhold Land Effect | StaticAbilities$ STCantPlayLand | EffectOwner$ Targeted | AILogic$ BeginningOfOppTurn | ConditionManaSpent$ R | SubAbility$ WPaid | SpellDescription$ Target player can't play land cards this turn if R was spent to cast CARDNAME and can't play creature cards this turn if W was spent to cast it. (Do both if R W was spent.) SVar:WPaid:DB$ Effect | Name$ Moonhold Creature Effect | IsCurse$ True | StaticAbilities$ STCantPlayCreats | EffectOwner$ Targeted | AILogic$ BeginningOfOppTurn | ConditionManaSpent$ W -SVar:STCantPlayLand:Mode$ CantPlayLand | Player$ You | Description$ You can't play land cards this turn. -SVar:STCantPlayCreats:Mode$ CantBeCast | ValidCard$ Creature | Caster$ You | Description$ You can't play creature cards this turn. +SVar:STCantPlayLand:Mode$ CantPlayLand | EffectZone$ Command | Player$ You | Description$ You can't play land cards this turn. +SVar:STCantPlayCreats:Mode$ CantBeCast | ValidCard$ Creature | EffectZone$ Command | Caster$ You | Description$ You can't play creature cards this turn. SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/moonhold.jpg SetInfo:EVE|Uncommon|http://magiccards.info/scans/en/eve/143.jpg diff --git a/res/cardsfolder/m/moonmist.txt b/res/cardsfolder/m/moonmist.txt index d3c12125135..dd137151a29 100644 --- a/res/cardsfolder/m/moonmist.txt +++ b/res/cardsfolder/m/moonmist.txt @@ -4,7 +4,7 @@ Types:Instant Text:no text A:SP$SetStateAll | Cost$ 1 G | ValidCards$ Creature.Human+DoubleFaced | Mode$ Transform | SubAbility$ DBCurseNonWolves | SpellDescription$ Transform all Humans. Prevent all combat damage that would be dealt this turn by creatures other than Werewolves and Wolves. (Only double-faced cards can be transformed.) SVar:DBCurseNonWolves:DB$Effect | Name$ Moonmist Effect. | StaticAbilities$ Curse -SVar:Curse:Mode$ PreventDamage | Source$ Creature.nonWerewolf+nonWolf | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by creatures other than Werewolves and Wolves. +SVar:Curse:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.nonWerewolf+nonWolf | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by creatures other than Werewolves and Wolves. SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/moonmist.jpg diff --git a/res/cardsfolder/m/multani.txt b/res/cardsfolder/m/multani.txt new file mode 100644 index 00000000000..b9263e0eb3b --- /dev/null +++ b/res/cardsfolder/m/multani.txt @@ -0,0 +1,11 @@ +Name:Multani +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-3/-2 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddPower$ X | References$ X | Description$ Creatures you control get +X/+0, where X is the number of cards in your hand. +SVar:X:Count$CardsInYourHand +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12146&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/multani.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/n/nameless_race.txt b/res/cardsfolder/n/nameless_race.txt index c572d9c284b..dff6b3be015 100644 --- a/res/cardsfolder/n/nameless_race.txt +++ b/res/cardsfolder/n/nameless_race.txt @@ -10,7 +10,7 @@ S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ SVar:X:XChoice/LimitMax.Limit SVar:Limit:SVar$Active/Plus.Buried SVar:Active:Count$Valid Permanent.White+nonToken+OppCtrl -SVar:Buried:Count$ValidGrave Card.White+OppCtrl +SVar:Buried:Count$ValidGraveyard Card.White+OppCtrl SVar:LifePaidOnETB:Number$0 SVar:RemAIDeck:True SVar:RemRandomDeck:True diff --git a/res/cardsfolder/n/nomads_en_kor.txt b/res/cardsfolder/n/nomads_en_kor.txt index 6a418b6a051..bc082dcf187 100644 --- a/res/cardsfolder/n/nomads_en_kor.txt +++ b/res/cardsfolder/n/nomads_en_kor.txt @@ -6,12 +6,12 @@ PT:1/1 A:AB$ Effect | Cost$ 0 | Name$ en-Kor Redirection | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control to redirect the damage to | ReplacementEffects$ EnKorCombat,EnKorNonCombat | Triggers$ OutOfSight | SVars$ CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | References$ EnKorCombat,EnKorNonCombat,OutOfSight,CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | Duration$ HostLeavesOrEOT | RememberObjects$ Self | ImprintCards$ Targeted | SpellDescription$ The next 1 damage that would be dealt to CARDNAME this turn is dealt to target creature you control instead. SVar:EnKorCombat:Event$ DamageDone | ValidTarget$ Creature.IsRemembered | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ The next 1 damage that would be dealt to Nomads en-Kor this turn is dealt to target creature you control instead. SVar:EnKorNonCombat:Event$ DamageDone | ValidTarget$ Creature.IsRemembered | IsCombat$ False | ReplaceWith$ NonCombatDmg | Secondary$ True | Description$ The next 1 damage that would be dealt to Nomads en-Kor this turn is dealt to target creature you control instead. -SVar:CombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:NonCombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:RestDmgCombat:DB$DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect -SVar:RestDmg:DB$DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect -SVar:OutOfSight:Mode$ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:RestDmgCombat:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect +SVar:RestDmg:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:X:ReplaceCount$DamageAmount/Minus.1 SVar:Y:ReplaceCount$DamageAmount SVar:RemAIDeck:True diff --git a/res/cardsfolder/o/oracle.txt b/res/cardsfolder/o/oracle.txt new file mode 100644 index 00000000000..f5cff872cb8 --- /dev/null +++ b/res/cardsfolder/o/oracle.txt @@ -0,0 +1,12 @@ +Name:Oracle +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+1/+9 +A:AB$ Untap | ActivationZone$ Command | Cost$ 0 | ValidTgts$ Creature.attacking+youCtrl | TgtPrompt$ Select target attacking creature you control | SubAbility$ Reconsider | SpellDescription$ Untap target attacking creature you control and remove it from combat. +SVar:Reconsider:DB$ RemoveFromCombat | Defined$ Targeted +SVar:RemAIDeck:True +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12141&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/oracle.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/o/oracles_attendants.txt b/res/cardsfolder/o/oracles_attendants.txt index c8da24a1ae1..dacd28418d1 100644 --- a/res/cardsfolder/o/oracles_attendants.txt +++ b/res/cardsfolder/o/oracles_attendants.txt @@ -3,7 +3,6 @@ ManaCost:3 W Types:Creature Human Soldier Text:no text PT:1/5 -{T}: All damage that would be dealt to target creature this turn by a source of your choice is dealt to CARDNAME instead. A:AB$ ChooseSource | Cost$ T | Choices$ Card | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ All damage that would be dealt to target creature this turn by a source of your choice is dealt to CARDNAME instead. SVar:DBEffect:DB$ Effect | ValidTgts$ Creature | TgtPrompt$ Select target creature to redirect the damage from | ReplacementEffects$ SelflessCombat,SelflessNonCombat | Triggers$ OutOfSight | SVars$ CombatDmg,NonCombatDmg,ExileEffect,X | References$ SelflessCombat,SelflessNonCombat,OutOfSight,CombatDmg,NonCombatDmg,ExileEffect,X | Duration$ HostLeavesOrEOT | RememberObjects$ Remembered | ImprintCards$ Targeted | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:SelflessCombat:Event$ DamageDone | ValidTarget$ Creature.IsImprinted | ValidSource$ Card.IsRemembered | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ All damage that would be dealt to target creature this turn by a source of your choice is dealt to Oracle's Attendants instead. @@ -11,7 +10,7 @@ SVar:SelflessNonCombat:Event$ DamageDone | ValidTarget$ Creature.IsImprinted | V SVar:ShamanCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ EffectSource | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X SVar:ShamanNonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ EffectSource | DamageSource$ ReplacedSource | NumDmg$ X SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:ReplaceCount$DamageAmount SVar:RemAIDeck:True diff --git a/res/cardsfolder/o/orim.txt b/res/cardsfolder/o/orim.txt new file mode 100644 index 00000000000..f953a4f050c --- /dev/null +++ b/res/cardsfolder/o/orim.txt @@ -0,0 +1,10 @@ +Name:Orim +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+0/+12 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddKeyword$ Reach | Description$ Creatures you control have reach. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4966&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/orim.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/o/orims_chant.txt b/res/cardsfolder/o/orims_chant.txt index 5c45051f7eb..dcdc0a1e65c 100644 --- a/res/cardsfolder/o/orims_chant.txt +++ b/res/cardsfolder/o/orims_chant.txt @@ -1,13 +1,13 @@ -Name:Orim's Chant -ManaCost:W -Types:Instant -Text:no text -A:SP$ Effect | Cost$ W | Name$ Orim's Chant Effect | IsCurse$ True | StaticAbilities$ CantBeCast | ValidTgts$ Player | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SpellDescription$ Target player can't cast spells this turn. If CARDNAME was kicked, creatures can't attack this turn. -SVar:CantBeCast:Mode$ CantBeCast | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Target player can't cast spells this turn. -A:SP$ Effect | Cost$ W W | SetAsKicked$ True | Name$ Orim's Chant Effect | IsCurse$ True | StaticAbilities$ CantBeCast,CantAttack | ValidTgts$ Player | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SpellDescription$ Kicker W W (You may pay an additional W W as you cast this spell.) -SVar:CantAttack:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Creatures can't attack this turn. -SVar:Rarity:Rare -SVar:Picture:http://www.wizards.com/global/images/magic/general/orims_chant.jpg -SetInfo:PLS|Rare|http://magiccards.info/scans/en/ps/11.jpg -Oracle:Kicker {W} (You may pay an additional {W} as you cast this spell.)\nTarget player can't cast spells this turn.\nIf Orim's Chant was kicked, creatures can't attack this turn. +Name:Orim's Chant +ManaCost:W +Types:Instant +Text:no text +A:SP$ Effect | Cost$ W | Name$ Orim's Chant Effect | IsCurse$ True | StaticAbilities$ CantBeCast | ValidTgts$ Player | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SpellDescription$ Target player can't cast spells this turn. If CARDNAME was kicked, creatures can't attack this turn. +SVar:CantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Target player can't cast spells this turn. +A:SP$ Effect | Cost$ W W | SetAsKicked$ True | Name$ Orim's Chant Effect | IsCurse$ True | StaticAbilities$ CantBeCast,CantAttack | ValidTgts$ Player | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SpellDescription$ Kicker W W (You may pay an additional W W as you cast this spell.) +SVar:CantAttack:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AffectedZone$ Battlefield | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Creatures can't attack this turn. +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/orims_chant.jpg +SetInfo:PLS|Rare|http://magiccards.info/scans/en/ps/11.jpg +Oracle:Kicker {W} (You may pay an additional {W} as you cast this spell.)\nTarget player can't cast spells this turn.\nIf Orim's Chant was kicked, creatures can't attack this turn. End \ No newline at end of file diff --git a/res/cardsfolder/o/oriss_samite_guardian.txt b/res/cardsfolder/o/oriss_samite_guardian.txt index c2382a16d09..ae10b9e4244 100644 --- a/res/cardsfolder/o/oriss_samite_guardian.txt +++ b/res/cardsfolder/o/oriss_samite_guardian.txt @@ -5,8 +5,8 @@ Text:no text PT:1/3 A:AB$ Pump | Cost$ T | KW$ HIDDEN Prevent all damage that would be dealt to CARDNAME. | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Prevent all damage that would be dealt to target creature this turn. A:AB$ Effect | Cost$ Discard<1/Card.namedOriss, Samite Guardian> | CostDesc$ Grandeur - Discard another card named CARDNAME:| Name$ Oriss Effect | IsCurse$ True | StaticAbilities$ CantBeCast,CantAttack | ValidTgts$ Player | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SpellDescription$ Target player can't cast spells this turn, and creatures that player controls can't attack this turn. -SVar:CantBeCast:Mode$ CantBeCast | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Targeted player can't cast spells this turn. -SVar:CantAttack:Mode$ Continuous | Affected$ Creature.RememberedPlayerCtrl | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Creatures targeted player controls can't attack this turn. +SVar:CantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Targeted player can't cast spells this turn. +SVar:CantAttack:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.RememberedPlayerCtrl | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Creatures targeted player controls can't attack this turn. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/oriss_samite_guardian.jpg diff --git a/res/cardsfolder/o/outrider_en_kor.txt b/res/cardsfolder/o/outrider_en_kor.txt index da3f52d6d90..fbb94037298 100644 --- a/res/cardsfolder/o/outrider_en_kor.txt +++ b/res/cardsfolder/o/outrider_en_kor.txt @@ -7,12 +7,12 @@ K:Flanking A:AB$ Effect | Cost$ 0 | Name$ en-Kor Redirection | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control to redirect the damage to | ReplacementEffects$ EnKorCombat,EnKorNonCombat | Triggers$ OutOfSight | SVars$ CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | References$ EnKorCombat,EnKorNonCombat,OutOfSight,CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | Duration$ HostLeavesOrEOT | RememberObjects$ Self | ImprintCards$ Targeted | SpellDescription$ The next 1 damage that would be dealt to CARDNAME this turn is dealt to target creature you control instead. SVar:EnKorCombat:Event$ DamageDone | ValidTarget$ Creature.IsRemembered | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ The next 1 damage that would be dealt to Outrider en-Kor this turn is dealt to target creature you control instead. SVar:EnKorNonCombat:Event$ DamageDone | ValidTarget$ Creature.IsRemembered | IsCombat$ False | ReplaceWith$ NonCombatDmg | Secondary$ True | Description$ The next 1 damage that would be dealt to Outrider en-Kor this turn is dealt to target creature you control instead. -SVar:CombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:NonCombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:RestDmgCombat:DB$DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect -SVar:RestDmg:DB$DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect -SVar:OutOfSight:Mode$ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:RestDmgCombat:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect +SVar:RestDmg:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:X:ReplaceCount$DamageAmount/Minus.1 SVar:Y:ReplaceCount$DamageAmount SVar:RemAIDeck:True diff --git a/res/cardsfolder/p/pardic_miner.txt b/res/cardsfolder/p/pardic_miner.txt index 84042c792cc..fade3a7e8ab 100644 --- a/res/cardsfolder/p/pardic_miner.txt +++ b/res/cardsfolder/p/pardic_miner.txt @@ -4,7 +4,7 @@ Types:Creature Dwarf Text:no text PT:1/1 A:AB$ Effect | Cost$ Sac<1/CARDNAME> | ValidTgts$ Player | Name$ Pardic Miner Effect | StaticAbilities$ STCantPlayLand | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SpellDescription$ Target player can't play lands this turn. -SVar:STCantPlayLand:Mode$ CantPlayLand | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn. +SVar:STCantPlayLand:Mode$ CantPlayLand | EffectZone$ Command | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/pardic_miner.jpg diff --git a/res/cardsfolder/p/pentagram_of_the_ages.txt b/res/cardsfolder/p/pentagram_of_the_ages.txt index 07262280afc..5df5be4ae94 100644 --- a/res/cardsfolder/p/pentagram_of_the_ages.txt +++ b/res/cardsfolder/p/pentagram_of_the_ages.txt @@ -5,7 +5,7 @@ Text:no text A:AB$ ChooseSource | Cost$ 4 T | Choices$ Card | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/pentagram_of_the_ages.jpg diff --git a/res/cardsfolder/p/pilgrim_of_justice.txt b/res/cardsfolder/p/pilgrim_of_justice.txt index 9e2e255cb15..b91fb85dcbc 100644 --- a/res/cardsfolder/p/pilgrim_of_justice.txt +++ b/res/cardsfolder/p/pilgrim_of_justice.txt @@ -7,7 +7,7 @@ K:Protection from red A:AB$ ChooseSource | Cost$ W Sac<1/CARDNAME> | Choices$ Card.Red | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a red source of your choice would deal damage this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemRandomDeck:True SVar:Rarity:Common diff --git a/res/cardsfolder/p/pilgrim_of_virtue.txt b/res/cardsfolder/p/pilgrim_of_virtue.txt index 9a16ab926d5..9c53cd64249 100644 --- a/res/cardsfolder/p/pilgrim_of_virtue.txt +++ b/res/cardsfolder/p/pilgrim_of_virtue.txt @@ -7,7 +7,7 @@ K:Protection from black A:AB$ ChooseSource | Cost$ W Sac<1/CARDNAME> | Choices$ Card.Black | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a black source of your choice would deal damage this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemRandomDeck:True SVar:Rarity:Common diff --git a/res/cardsfolder/p/praetors_counsel.txt b/res/cardsfolder/p/praetors_counsel.txt index ea0642cfa5b..db7392c51f2 100644 --- a/res/cardsfolder/p/praetors_counsel.txt +++ b/res/cardsfolder/p/praetors_counsel.txt @@ -5,7 +5,7 @@ Text:no text A:SP$ ChangeZoneAll | Cost$ 5 G G G | Origin$ Graveyard | Destination$ Hand | ChangeType$ Card.YouOwn | SubAbility$ DBChange | SpellDescription$ Return all cards from your graveyard to your hand. Exile CARDNAME. You have no maximum hand size for the rest of the game. SVar:DBChange:DB$ChangeZone | Origin$ Stack | Destination$ Exile | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | Name$ Praetor's Counsel Effect | StaticAbilities$ STHandSize | Duration$ Permanent -SVar:STHandSize:Mode$ Continuous | Affected$ You | SetMaxHandSize$ -1 | Description$ You have no maximum hand size. +SVar:STHandSize:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ -1 | Description$ You have no maximum hand size. SVar:Rarity:Mythic SVar:Picture:http://www.wizards.com/global/images/magic/general/praetors_counsel.jpg SetInfo:MBS|Mythic|http://magiccards.info/scans/en/mbs/88.jpg diff --git a/res/cardsfolder/p/predatory_focus.txt b/res/cardsfolder/p/predatory_focus.txt index 68843c4091e..5de6fd5af77 100644 --- a/res/cardsfolder/p/predatory_focus.txt +++ b/res/cardsfolder/p/predatory_focus.txt @@ -3,7 +3,7 @@ ManaCost:3 G G Types:Sorcery Text:no text A:SP$ Effect | Cost$ 3 G G | Name$ Predatory Focus Effect | StaticAbilities$ KWPump | AILogic$ Evasion | SpellDescription$ You may have creatures you control assign their combat damage this turn as though they weren't blocked. -SVar:KWPump:Mode$ Continuous | Affected$ Creature.YouCtrl | AddHiddenKeyword$ You may have CARDNAME assign its combat damage as though it weren't blocked. | Description$ You may have creatures you control assign their combat damage this turn as though they weren't blocked. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddHiddenKeyword$ You may have CARDNAME assign its combat damage as though it weren't blocked. | Description$ You may have creatures you control assign their combat damage this turn as though they weren't blocked. SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/predatory_focus.jpg SetInfo:GPT|Uncommon|http://magiccards.info/scans/en/gp/92.jpg diff --git a/res/cardsfolder/p/predatory_rampage.txt b/res/cardsfolder/p/predatory_rampage.txt index 971317b2335..f6583879976 100644 --- a/res/cardsfolder/p/predatory_rampage.txt +++ b/res/cardsfolder/p/predatory_rampage.txt @@ -4,7 +4,7 @@ Types:Sorcery Text:no text A:SP$ PumpAll | Cost$ 3 G G | ValidCards$ Creature.YouCtrl | NumAtt$ +3 | NumDef$ +3 | SubAbility$ OppBlock | SpellDescription$ Creatures you control get +3/+3 until end of turn. Each creature your opponents control blocks this turn if able. SVar:OppBlock:DB$ Effect | Name$ Predatory Rampage Effect | StaticAbilities$ KWPump -SVar:KWPump:Mode$ Continuous | Affected$ Creature.OppCtrl | AddHiddenKeyword$ CARDNAME blocks each turn if able. | Description$ Each creature your opponents control blocks this turn if able. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.OppCtrl | AddHiddenKeyword$ CARDNAME blocks each turn if able. | Description$ Each creature your opponents control blocks this turn if able. SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/predatory_rampage.jpg SetInfo:M13|Rare|http://magiccards.info/scans/en/m13/180.jpg diff --git a/res/cardsfolder/p/prismatic_circle.txt b/res/cardsfolder/p/prismatic_circle.txt index 92d021b6f8a..bd8eda611f9 100644 --- a/res/cardsfolder/p/prismatic_circle.txt +++ b/res/cardsfolder/p/prismatic_circle.txt @@ -8,7 +8,7 @@ SVar:ChooseColor:DB$ ChooseColor | Defined$ You | AILogic$ MostProminentInHumanD A:AB$ ChooseSource | Cost$ 1 | Choices$ Card.ChosenColor | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice of the chosen color would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True SVar:Rarity:Rare diff --git a/res/cardsfolder/p/prismatic_strands.txt b/res/cardsfolder/p/prismatic_strands.txt index 732624f7ddf..aab6ff31e53 100644 --- a/res/cardsfolder/p/prismatic_strands.txt +++ b/res/cardsfolder/p/prismatic_strands.txt @@ -5,7 +5,7 @@ Text:no text K:Flashback tapXType<1/Creature.White/white creature> A:SP$ ChooseColor | Cost$ 2 W | Defined$ You | AILogic$ MostProminentInHumanDeck | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | Name$ Prismatic Strands Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that sources of the color of your choice would deal this turn. -SVar:STPrevent:Mode$ PreventDamage | Target$ Creature,Player | Source$ Card.ChosenColor | Description$ Prevent all damage that sources of the chosen color would deal this turn. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ Creature,Player | Source$ Card.ChosenColor | Description$ Prevent all damage that sources of the chosen color would deal this turn. SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/prismatic_strands.jpg diff --git a/res/cardsfolder/p/psychic_trance.txt b/res/cardsfolder/p/psychic_trance.txt index cbaa5d1eed2..ea47fe32167 100644 --- a/res/cardsfolder/p/psychic_trance.txt +++ b/res/cardsfolder/p/psychic_trance.txt @@ -3,7 +3,7 @@ ManaCost:2 U U Types:Instant Text:no text A:SP$ Effect | Cost$ 2 U U | Name$ Psychic Trance Effect | StaticAbilities$ Static | SVars$ Counter | SpellDescription$ Until end of turn, Wizards you control gain "Tap: Counter target spell." -SVar:Static:Mode$ Continuous | Affected$ Card.Wizard+YouCtrl | AddAbility$ Counter | Description$ All Wizards you control have Tap: Counter target spell. +SVar:Static:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Card.Wizard+YouCtrl | AddAbility$ Counter | Description$ All Wizards you control have Tap: Counter target spell. SVar:Counter:AB$ Counter | Cost$ T | TargetType$ Spell | ValidTgts$ Card | SpellDescription$ Counter target spell SVar:RemRandomDeck:True SVar:RemAIDeck:True diff --git a/res/cardsfolder/q/quicken.txt b/res/cardsfolder/q/quicken.txt index d5c02843ce1..b75949b52f0 100644 --- a/res/cardsfolder/q/quicken.txt +++ b/res/cardsfolder/q/quicken.txt @@ -4,7 +4,7 @@ Types:Instant Text:no text A:SP$Effect | Cost$ U | Name$ Quicken effect | StaticAbilities$ QuickenStA | Triggers$ SpellCastTrig | SVars$ Quickened | SubAbility$ DBDraw | SpellDescription$ The next sorcery card you cast this turn can be cast as though it had flash. SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card. -SVar:QuickenStA:Mode$ Continuous | Affected$ Sorcery.YouCtrl | AffectedZone$ Hand,Graveyard,Exile | AddHiddenKeyword$ Flash +SVar:QuickenStA:Mode$ Continuous | EffectZone$ Command | Affected$ Sorcery.YouCtrl | AffectedZone$ Hand,Graveyard,Exile | AddHiddenKeyword$ Flash SVar:SpellCastTrig:Mode$ SpellCast | ValidCard$ Sorcery | ValidActivatingPlayer$ You | Execute$ Quickened | Static$ True | TriggerDescription$ The next sorcery card you cast this turn can be cast as though it had flash. SVar:Quickened:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Graveyard SVar:RemAIDeck:True diff --git a/res/cardsfolder/r/radiant_kavu.txt b/res/cardsfolder/r/radiant_kavu.txt index 754a614246a..d35373a836a 100644 --- a/res/cardsfolder/r/radiant_kavu.txt +++ b/res/cardsfolder/r/radiant_kavu.txt @@ -4,7 +4,7 @@ Types:Creature Kavu Text:no text PT:3/3 A:AB$ Effect | Cost$ R G W | Name$ Radiant Kavu Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all combat damage blue creatures and black creatures would deal this turn. -SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.Blue,Creature.Black | CombatDamage$ True | Description$ Prevent all combat damage blue creatures and black creatures would deal this turn. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.Blue,Creature.Black | CombatDamage$ True | Description$ Prevent all combat damage blue creatures and black creatures would deal this turn. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/radiant_kavu.jpg diff --git a/res/cardsfolder/r/reverse_damage.txt b/res/cardsfolder/r/reverse_damage.txt index 3d2ff5d39b8..24a1a47bab3 100644 --- a/res/cardsfolder/r/reverse_damage.txt +++ b/res/cardsfolder/r/reverse_damage.txt @@ -6,7 +6,7 @@ A:SP$ ChooseSource | Cost$ 1 W W | Choices$ Card | RememberChosen$ True | AILogi SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect,GainLifeInstead,X | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ GainLifeInstead | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. You gain life equal to the damage prevented this way. SVar:GainLifeInstead:DB$ GainLife | Defined$ You | LifeAmount$ X | SubAbility$ ExileEffect | References$ X -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:X:ReplaceCount$DamageAmount SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Rare diff --git a/res/cardsfolder/r/righteous_aura.txt b/res/cardsfolder/r/righteous_aura.txt index c2b512e8868..38d65f9682e 100644 --- a/res/cardsfolder/r/righteous_aura.txt +++ b/res/cardsfolder/r/righteous_aura.txt @@ -5,7 +5,7 @@ Text:no text A:AB$ ChooseSource | Cost$ W PayLife<2> | Choices$ Card | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/r/rofellos.txt b/res/cardsfolder/r/rofellos.txt new file mode 100644 index 00000000000..f807220b03a --- /dev/null +++ b/res/cardsfolder/r/rofellos.txt @@ -0,0 +1,11 @@ +Name:Rofellos +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-2/+4 +T:Mode$ ChangesZone | TriggerZones$ Command | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl | Execute$ TrigDraw | TriggerController$ TriggeredCardController | TriggerDescription$ Whenever a creature you control dies, draw a card. +SVar:TrigDraw:AB$ Draw | Cost$ 0 | NumCards$ 1 | Defined$ You +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=12145 +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/rofellos.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/r/rootborn_defenses.txt b/res/cardsfolder/r/rootborn_defenses.txt index 1c760f40a35..2575caa4a48 100644 --- a/res/cardsfolder/r/rootborn_defenses.txt +++ b/res/cardsfolder/r/rootborn_defenses.txt @@ -6,7 +6,7 @@ A:SP$ ChooseCard | Cost$ 2 W | Defined$ You | Amount$ 1 | Choices$ Creature.toke SVar:DBCopy:DB$ CopyPermanent | Defined$ Remembered | NumCopies$ 1 | SubAbility$ DBPumpAll SVar:DBPumpAll:DB$ Effect | Name$ Rootborn Defenses Effect | StaticAbilities$ KWPump | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:KWPump:Mode$ Continuous | Affected$ Creature.YouCtrl | AddHiddenKeyword$ Indestructible | Description$ Creatures you control are indestructible this turn. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddHiddenKeyword$ Indestructible | Description$ Creatures you control are indestructible this turn. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/rootborn_defenses.jpg SetInfo:RTR|Common|http://magiccards.info/scans/en/rtr/19.jpg diff --git a/res/cardsfolder/r/rune_of_protection_artifacts.txt b/res/cardsfolder/r/rune_of_protection_artifacts.txt index a08c258762d..0c1ea80bad9 100644 --- a/res/cardsfolder/r/rune_of_protection_artifacts.txt +++ b/res/cardsfolder/r/rune_of_protection_artifacts.txt @@ -6,7 +6,7 @@ A:AB$ ChooseSource | Cost$ W | Choices$ Card.Artifact | RememberChosen$ True | A K:Cycling:2 SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Uncommon SVar:RemAIDeck:True diff --git a/res/cardsfolder/r/rune_of_protection_black.txt b/res/cardsfolder/r/rune_of_protection_black.txt index 39fb34c8845..e8600e00744 100644 --- a/res/cardsfolder/r/rune_of_protection_black.txt +++ b/res/cardsfolder/r/rune_of_protection_black.txt @@ -6,7 +6,7 @@ A:AB$ ChooseSource | Cost$ W | Choices$ Card.Black | RememberChosen$ True | AILo K:Cycling:2 SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Common SVar:RemAIDeck:True diff --git a/res/cardsfolder/r/rune_of_protection_blue.txt b/res/cardsfolder/r/rune_of_protection_blue.txt index cb40debc72e..d0f63461d8e 100644 --- a/res/cardsfolder/r/rune_of_protection_blue.txt +++ b/res/cardsfolder/r/rune_of_protection_blue.txt @@ -6,7 +6,7 @@ A:AB$ ChooseSource | Cost$ W | Choices$ Card.Blue | RememberChosen$ True | AILog K:Cycling:2 SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Common SVar:RemAIDeck:True diff --git a/res/cardsfolder/r/rune_of_protection_green.txt b/res/cardsfolder/r/rune_of_protection_green.txt index 7b47529186c..e9b3513e763 100644 --- a/res/cardsfolder/r/rune_of_protection_green.txt +++ b/res/cardsfolder/r/rune_of_protection_green.txt @@ -6,7 +6,7 @@ A:AB$ ChooseSource | Cost$ W | Choices$ Card.Green | RememberChosen$ True | AILo K:Cycling:2 SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Common SVar:RemAIDeck:True diff --git a/res/cardsfolder/r/rune_of_protection_lands.txt b/res/cardsfolder/r/rune_of_protection_lands.txt index 9f19f002ac1..95ba7932988 100644 --- a/res/cardsfolder/r/rune_of_protection_lands.txt +++ b/res/cardsfolder/r/rune_of_protection_lands.txt @@ -6,7 +6,7 @@ A:AB$ ChooseSource | Cost$ W | Choices$ Land | RememberChosen$ True | AILogic$ N K:Cycling:2 SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Rare SVar:RemAIDeck:True diff --git a/res/cardsfolder/r/rune_of_protection_red.txt b/res/cardsfolder/r/rune_of_protection_red.txt index 9866b6a7657..6fd9bdaf9c9 100644 --- a/res/cardsfolder/r/rune_of_protection_red.txt +++ b/res/cardsfolder/r/rune_of_protection_red.txt @@ -6,7 +6,7 @@ A:AB$ ChooseSource | Cost$ W | Choices$ Card.Red | RememberChosen$ True | AILogi K:Cycling:2 SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Common SVar:RemAIDeck:True diff --git a/res/cardsfolder/r/rune_of_protection_white.txt b/res/cardsfolder/r/rune_of_protection_white.txt index 6413be5abc0..0eef6aec635 100644 --- a/res/cardsfolder/r/rune_of_protection_white.txt +++ b/res/cardsfolder/r/rune_of_protection_white.txt @@ -6,7 +6,7 @@ A:AB$ ChooseSource | Cost$ W | Choices$ Card.White | RememberChosen$ True | AILo K:Cycling:2 SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Common SVar:RemAIDeck:True diff --git a/res/cardsfolder/r/ruthless_invasion.txt b/res/cardsfolder/r/ruthless_invasion.txt index 1466c5aedc9..40f03a1f9c0 100644 --- a/res/cardsfolder/r/ruthless_invasion.txt +++ b/res/cardsfolder/r/ruthless_invasion.txt @@ -3,7 +3,7 @@ ManaCost:3 PR Types:Sorcery Text:no text A:SP$ Effect | Cost$ 3 PR | Name$ Ruthless Invasion Effect | StaticAbilities$ KWPump | AILogic$ Evasion | SpellDescription$ Nonartifact creatures can't block this turn. -SVar:KWPump:Mode$ Continuous | Affected$ Creature.nonArtifact | AddKeyword$ CARDNAME can't block. | Description$ Nonartifact creatures can't block this turn. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.nonArtifact | AddKeyword$ CARDNAME can't block. | Description$ Nonartifact creatures can't block this turn. SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/ruthless_invasion.jpg diff --git a/res/cardsfolder/s/safe_passage.txt b/res/cardsfolder/s/safe_passage.txt index ed9a0925bb2..ce297e8722d 100644 --- a/res/cardsfolder/s/safe_passage.txt +++ b/res/cardsfolder/s/safe_passage.txt @@ -3,7 +3,7 @@ ManaCost:2 W Types:Instant Text:no text A:SP$ Effect | Cost$ 2 W | Name$ Safe Passage Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all damage that would be dealt to you and creatures you control this turn. -SVar:STPrevent:Mode$ PreventDamage | Target$ You,Creature.YouCtrl | Description$ Prevent all damage that would be dealt to you and creatures you control this turn. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ You,Creature.YouCtrl | Description$ Prevent all damage that would be dealt to you and creatures you control this turn. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/safe_passage.jpg SetInfo:M11|Common|http://magiccards.info/scans/en/m11/26.jpg diff --git a/res/cardsfolder/s/sandals_of_abdallah.txt b/res/cardsfolder/s/sandals_of_abdallah.txt index 13489f68a4b..8aed4043272 100644 --- a/res/cardsfolder/s/sandals_of_abdallah.txt +++ b/res/cardsfolder/s/sandals_of_abdallah.txt @@ -6,7 +6,7 @@ A:AB$ Pump | Cost$ 2 T | KW$ Islandwalk | ValidTgts$ Creature | TgtPrompt$ Selec SVar:AbdallahsSandalsEffect:DB$ Effect | Name$ Sandals of Abdallah Effect | Triggers$ SandalWearerDied | SVars$ ExileEffect,SandalsDestroyed | References$ SandalWearerDied,ExileEffect,SandalsDestroyed | RememberObjects$ Targeted | ImprintCards$ Self SVar:SandalWearerDied:Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ Battlefield | Destination$ Graveyard | Execute$ SandalsDestroyed | TriggerDescription$ When the targeted creature dies this turn, destroy Sandals of Abdallah. SVar:SandalsDestroyed:DB$ Destroy | Defined$ Imprinted | SubAbility$ ExileEffect -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemRandomDeck:True SVar:RemAIDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/s/scarecrow.txt b/res/cardsfolder/s/scarecrow.txt index 311b38f5a26..c4a0323fa24 100644 --- a/res/cardsfolder/s/scarecrow.txt +++ b/res/cardsfolder/s/scarecrow.txt @@ -4,7 +4,7 @@ Types:Artifact Creature Scarecrow Text:no text PT:2/2 A:AB$ Effect | Cost$ 6 T | Name$ Scarecrow Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt to you this turn by creatures with flying. -SVar:STPrevent:Mode$ PreventDamage | Target$ You | Source$ Creature.withFlying | Description$ Prevent all damage that would be dealt to you this turn by creatures with flying. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ You | Source$ Creature.withFlying | Description$ Prevent all damage that would be dealt to you this turn by creatures with flying. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/scarecrow.jpg diff --git a/res/cardsfolder/s/scouts_warning.txt b/res/cardsfolder/s/scouts_warning.txt index 6209028adfd..b03a375cb19 100644 --- a/res/cardsfolder/s/scouts_warning.txt +++ b/res/cardsfolder/s/scouts_warning.txt @@ -4,7 +4,7 @@ Types:Instant Text:no text A:SP$Effect | Cost$ W | Name$ Scout's Warning effect | StaticAbilities$ ScoutFlash | Triggers$ SpellCastTrig | SVars$ WarningGiven | SubAbility$ DBDraw | SpellDescription$ The next creature card you play this turn can be played as though it had flash. SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card. -SVar:ScoutFlash:Mode$ Continuous | Affected$ Creature.YouCtrl | AffectedZone$ Hand,Graveyard,Exile | AddHiddenKeyword$ Flash +SVar:ScoutFlash:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Hand,Graveyard,Exile | AddHiddenKeyword$ Flash SVar:SpellCastTrig:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | Execute$ WarningGiven | Static$ True | TriggerDescription$ The next creature card you play this turn can be played as though it had flash. SVar:WarningGiven:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Graveyard SVar:RemAIDeck:True diff --git a/res/cardsfolder/s/seasoned_tactician.txt b/res/cardsfolder/s/seasoned_tactician.txt index 63efc3d3a5b..9ab84733941 100644 --- a/res/cardsfolder/s/seasoned_tactician.txt +++ b/res/cardsfolder/s/seasoned_tactician.txt @@ -6,7 +6,7 @@ PT:1/3 A:AB$ ChooseSource | Cost$ 3 ExileFromTop<4/Card> | Choices$ Card | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/seasoned_tactician.jpg diff --git a/res/cardsfolder/s/selenia.txt b/res/cardsfolder/s/selenia.txt new file mode 100644 index 00000000000..a347139071a --- /dev/null +++ b/res/cardsfolder/s/selenia.txt @@ -0,0 +1,10 @@ +Name:Selenia +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+1/+7 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddKeyword$ Vigilance | Description$ Creatures you control have vigilance. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4967&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/selenia.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/s/serra.txt b/res/cardsfolder/s/serra.txt new file mode 100644 index 00000000000..c43b68fa6cc --- /dev/null +++ b/res/cardsfolder/s/serra.txt @@ -0,0 +1,10 @@ +Name:Serra +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+1/+1 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddToughness$ 2 | Description$ Creatures you control get +0/+2. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12332&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/serra.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/s/shaman_en_kor.txt b/res/cardsfolder/s/shaman_en_kor.txt index caa8001a606..0d37bf439f4 100644 --- a/res/cardsfolder/s/shaman_en_kor.txt +++ b/res/cardsfolder/s/shaman_en_kor.txt @@ -11,7 +11,7 @@ SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ SVar:RestDmgCombat:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect SVar:RestDmg:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:X:ReplaceCount$DamageAmount/Minus.1 SVar:Y:ReplaceCount$DamageAmount A:AB$ ChooseSource | Cost$ 1 W | Choices$ Card | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to target creature this turn, that damage is dealt to CARDNAME instead. diff --git a/res/cardsfolder/s/shield_dancer.txt b/res/cardsfolder/s/shield_dancer.txt index 279a2bfcd4a..218c02d9751 100644 --- a/res/cardsfolder/s/shield_dancer.txt +++ b/res/cardsfolder/s/shield_dancer.txt @@ -5,10 +5,10 @@ Text:no text PT:1/3 A:AB$ Effect | Cost$ 2 W | ValidTgts$ Creature.attacking | TgtPrompt$ Select target attacking creature | Name$ Shield Dancing | IsCurse$ True | ReplacementEffects$ DamageShielded | Triggers$ OutOfSight | SVars$ ExileEffect,ReflectDmg,X | References$ DamageShielded,OutOfSight,ExileEffect,ReflectDmg,X | RememberObjects$ Targeted | ImprintCards$ Self | AILogic$ Fog | SpellDescription$ The next time target attacking creature would deal combat damage to CARDNAME this turn, that creature deals that damage to itself instead. SVar:DamageShielded:Event$ DamageDone | CombatDamage$ True | ValidSource$ Card.IsRemembered | ValidTarget$ Card.IsImprinted | ReplaceWith$ ReflectDmg | Description$ The next time the targeted attacking creature would deal combat damage to Shield Dancer this turn, that creature deals that damage to itself instead. -SVar:ReflectDmg:AB$DealDamage | Cost$ 0 | CombatDamage$ True | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect | References$ X +SVar:ReflectDmg:AB$ DealDamage | Cost$ 0 | CombatDamage$ True | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect | References$ X SVar:X:ReplaceCount$DamageAmount -SVar:OutOfSight:Mode$ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature.IsRemembered | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature.IsRemembered | Execute$ ExileEffect | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemAIDeck:True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/shield_dancer.jpg diff --git a/res/cardsfolder/s/sidar_kondo.txt b/res/cardsfolder/s/sidar_kondo.txt new file mode 100644 index 00000000000..d28545a710b --- /dev/null +++ b/res/cardsfolder/s/sidar_kondo.txt @@ -0,0 +1,10 @@ +Name:Sidar Kondo +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-1/+12 +A:AB$ Pump | ActivationZone$ Command | Cost$ 3 | Tgt$ TgtC | NumAtt$ 3 | NumDef$ 3 | SpellDescription$ Target creature gets +3/+3 until end of turn. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12147&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/sidar-kondo.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/s/silence.txt b/res/cardsfolder/s/silence.txt index 62ee70ff879..34a6fc6378b 100644 --- a/res/cardsfolder/s/silence.txt +++ b/res/cardsfolder/s/silence.txt @@ -3,7 +3,7 @@ ManaCost:W Types:Instant Text:no text A:SP$ Effect | Cost$ W | Name$ Silence Effect | StaticAbilities$ STCantBeCast | AILogic$ BeginningOfOppTurn | SpellDescription$ Your opponents can't cast spells this turn. (Spells cast before this resolves are unaffected.) -SVar:STCantBeCast:Mode$ CantBeCast | ValidCard$ Card | Caster$ Opponent | Description$ Your opponents can't cast spells. +SVar:STCantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ Opponent | Description$ Your opponents can't cast spells. SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/silence.jpg SetInfo:M11|Rare|http://magiccards.info/scans/en/m11/30.jpg diff --git a/res/cardsfolder/s/sirens_call.txt b/res/cardsfolder/s/sirens_call.txt index a68ce8d01c9..7766d5e1888 100644 --- a/res/cardsfolder/s/sirens_call.txt +++ b/res/cardsfolder/s/sirens_call.txt @@ -3,7 +3,7 @@ ManaCost:U Types:Instant Text:no text A:SP$ Effect | Cost$ U | Name$ Siren's Call Effect | StaticAbilities$ KWPump | ActivationPhases$ Upkeep->BeginCombat | OpponentTurn$ True | SpellDescription$ Cast CARDNAME only during an opponent's turn, before attackers are declared. Creatures the active player controls attack this turn if able. At the beginning of the next end step, destroy all non-Wall creatures that player controls that didn't attack this turn. Ignore this effect for each creature the player didn't control continuously since the beginning of the turn. | SubAbility$ DestroyPacifist -SVar:KWPump:Mode$ Continuous | Affected$ Creature.ActivePlayerCtrl | AddHiddenKeyword$ CARDNAME attacks each turn if able. | Description$ Creatures the active player controls attack this turn if able. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.ActivePlayerCtrl | AddHiddenKeyword$ CARDNAME attacks each turn if able. | Description$ Creatures the active player controls attack this turn if able. SVar:DestroyPacifist:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigDestroy | TriggerDescription$ At the beginning of the next end step, destroy all non-Wall creatures that player controls that didn't attack this turn. SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Creature.ActivePlayerCtrl+notAttackedThisTurn+nonWall+notFirstTurnControlled | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/res/cardsfolder/s/sisay.txt b/res/cardsfolder/s/sisay.txt new file mode 100644 index 00000000000..d7fa7e375a3 --- /dev/null +++ b/res/cardsfolder/s/sisay.txt @@ -0,0 +1,11 @@ +Name:Sisay +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-2/-3 +T:Mode$ TapsForMana | TriggerZones$ Command | ValidCard$ Land.YouCtrl | Execute$ TrigMana | TriggerZones$ Battlefield | Static$ True | TriggerDescription$ Whenever you tap a land for mana, add one mana to your mana pool of any type that land produced. +SVar:TrigMana:AB$ ManaReflected | Cost$ 0 | ColorOrType$ Type | Valid$ Defined.Triggered | ReflectProperty$ Produced | Defined$ TriggeredPlayer +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4968&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/sisay.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/s/sivvi's_valor.txt b/res/cardsfolder/s/sivvi's_valor.txt index 478479bdcd2..4fb9f6d6f44 100644 --- a/res/cardsfolder/s/sivvi's_valor.txt +++ b/res/cardsfolder/s/sivvi's_valor.txt @@ -9,7 +9,7 @@ SVar:SelflessNonCombat:Event$ DamageDone | ValidTarget$ Card.IsRemembered | IsCo SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ You | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ You | DamageSource$ ReplacedSource | NumDmg$ X SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature.IsRemembered | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:X:ReplaceCount$DamageAmount SVar:RemAIDeck:True SVar:Rarity:Rare diff --git a/res/cardsfolder/s/sivvis_ruse.txt b/res/cardsfolder/s/sivvis_ruse.txt index 1841087d90a..973502e36c4 100644 --- a/res/cardsfolder/s/sivvis_ruse.txt +++ b/res/cardsfolder/s/sivvis_ruse.txt @@ -4,7 +4,7 @@ Types:Instant Text:no text S:Mode$ Continuous | Affected$ Card.Self | EffectZone$ All | AddHiddenKeyword$ Alternative Cost 0 | CheckSVar$ X | CheckSecondSVar$ Y | Description$ If an opponent controls a Mountain and you control a Plains, you may cast CARDNAME without paying its mana cost. A:SP$ Effect | Cost$ 2 W W | Name$ Sivvi's Ruse Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt this turn to creatures you control. -SVar:STPrevent:Mode$ PreventDamage | Target$ Creature.YouCtrl | Description$ Prevent all damage that would be dealt this turn to creatures you control. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ Creature.YouCtrl | Description$ Prevent all damage that would be dealt this turn to creatures you control. SVar:X:Count$Valid Mountain.OppCtrl SVar:Y:Count$Valid Plains.YouCtrl SVar:RemAIDeck:True diff --git a/res/cardsfolder/s/sliver_queen_brood_mother.txt b/res/cardsfolder/s/sliver_queen_brood_mother.txt new file mode 100644 index 00000000000..333a92e0f57 --- /dev/null +++ b/res/cardsfolder/s/sliver_queen_brood_mother.txt @@ -0,0 +1,10 @@ +Name:Sliver Queen, Brood Mother +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+0/+8 +A:AB$ Token | ActivationZone$ Command | Cost$ 3 | TokenAmount$ 1 | TokenName$ Sliver | TokenTypes$ Creature,Sliver | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 1 | TokenToughness$ 1 | SpellDescription$ Put a 1/1 colorless Sliver creature token onto the battlefield. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12143&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/sliver-queen-brood-mother.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/s/snag.txt b/res/cardsfolder/s/snag.txt index 54db8208c50..2ac6c9ea2c1 100644 --- a/res/cardsfolder/s/snag.txt +++ b/res/cardsfolder/s/snag.txt @@ -4,7 +4,7 @@ Types:Instant Text:no text SVar:AltCost:Cost$ Discard<1/Forest> A:SP$ Effect | Cost$ 3 G | Name$ Snag Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all combat damage that would be dealt by unblocked creatures this turn. -SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.unblocked | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt by unblocked creatures this turn. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.unblocked | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt by unblocked creatures this turn. SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/snag.jpg SetInfo:PCY|Uncommon|http://magiccards.info/scans/en/pr/124.jpg diff --git a/res/cardsfolder/s/solfatara.txt b/res/cardsfolder/s/solfatara.txt index ce401b68950..c28035f5ced 100644 --- a/res/cardsfolder/s/solfatara.txt +++ b/res/cardsfolder/s/solfatara.txt @@ -3,7 +3,7 @@ ManaCost:2 R Types:Instant Text:no text A:SP$ Effect | Cost$ 2 R | ValidTgts$ Player | Name$ Solfatara Effect | StaticAbilities$ STCantPlayLand | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SubAbility$ DBDraw | SpellDescription$ Target player can't play land cards this turn. -SVar:STCantPlayLand:Mode$ CantPlayLand | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn. +SVar:STCantPlayLand:Mode$ CantPlayLand | EffectZone$ Command | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn. SVar:DBDraw:DB$Draw | NumCards$ 1 | NextUpkeep$ True | SpellDescription$ Draw a card at the beginning of the next upkeep. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/solfatara.jpg diff --git a/res/cardsfolder/s/sorin_lord_of_innistrad.txt b/res/cardsfolder/s/sorin_lord_of_innistrad.txt index ebaffdee094..d94f7eb92fb 100644 --- a/res/cardsfolder/s/sorin_lord_of_innistrad.txt +++ b/res/cardsfolder/s/sorin_lord_of_innistrad.txt @@ -5,7 +5,7 @@ Text:no text Loyalty:3 A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | TokenAmount$ 1 | TokenImage$ b 1 1 vampire dka | TokenName$ Vampire | TokenColors$ Black | TokenTypes$ Creature,Vampire | TokenOwner$ You | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Lifelink | Planeswalker$ True | SpellDescription$ Put a 1/1 black Vampire creature token with lifelink onto the battlefield. A:AB$ Effect | Cost$ SubCounter<2/LOYALTY> | Name$ Sorin, Lord of Innistrad emblem | Image$ sorin_lord_of_innistrad_emblem | StaticAbilities$ STPump | Planeswalker$ True | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Creatures you control get +1/+0." -SVar:STPump:Mode$ Continuous | Affected$ Creature.YouCtrl | AffectedZone$ Battlefield | AddPower$ 1 +SVar:STPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddPower$ 1 A:AB$ Destroy | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Creature,Planeswalker.Other | TargetMin$ 0 | TargetMax$ 3 | TgtPrompt$ Select target creatures or other planeswalkers | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ DBChangeZoneAll | SpellDescription$ Destroy up to 3 target creatures and/or other planeswalkers. Return each card put into a graveyard this way to the battlefield under your control. SVar:DBChangeZoneAll:DB$ ChangeZoneAll | Cost$ 0 | ChangeType$ Card.IsRemembered | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True diff --git a/res/cardsfolder/s/spirit_en_kor.txt b/res/cardsfolder/s/spirit_en_kor.txt index d0e5913beca..ba5338ac73b 100644 --- a/res/cardsfolder/s/spirit_en_kor.txt +++ b/res/cardsfolder/s/spirit_en_kor.txt @@ -12,7 +12,7 @@ SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ SVar:RestDmgCombat:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect SVar:RestDmg:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:X:ReplaceCount$DamageAmount/Minus.1 SVar:Y:ReplaceCount$DamageAmount SVar:RemAIDeck:True diff --git a/res/cardsfolder/s/spoils_of_evil.txt b/res/cardsfolder/s/spoils_of_evil.txt index f2cd9a90a94..265e4c5663a 100644 --- a/res/cardsfolder/s/spoils_of_evil.txt +++ b/res/cardsfolder/s/spoils_of_evil.txt @@ -4,7 +4,7 @@ Types:Instant Text:no text A:SP$ GainLife | Cost$ 2 B | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Defined$ You | LifeAmount$ X | References$ X | SubAbility$ DBMana | SpellDescription$ For each artifact or creature card in target opponent's graveyard, add {1} to your mana pool and you gain 1 life. SVar:DBMana:DB$ Mana | Produced$ 1 | Amount$ X | References$ X -SVar:X:Count$ValidGrave Creature.OppOwn,Artifact.OppOwn +SVar:X:Count$ValidGraveyard Creature.OppOwn,Artifact.OppOwn SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/spoils_of_evil.jpg diff --git a/res/cardsfolder/s/squee.txt b/res/cardsfolder/s/squee.txt new file mode 100644 index 00000000000..043d7a64e26 --- /dev/null +++ b/res/cardsfolder/s/squee.txt @@ -0,0 +1,11 @@ +Name:Squee +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+3/-4 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Opponent | AddKeyword$ Play with your hand revealed. | Description$ Your opponents play with their hands revealed. +SVar:RemAIDeck:True +SVar:Rarity:Special +SVar:Picture:http://www.wizards.com/global/images/magic/general/squee.jpg +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/squee.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/s/starke.txt b/res/cardsfolder/s/starke.txt new file mode 100644 index 00000000000..b7e208057f9 --- /dev/null +++ b/res/cardsfolder/s/starke.txt @@ -0,0 +1,12 @@ +Name:Starke +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+0/-2 +T:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | TriggerZones$ Command | Execute$ SituationalEthics | OptionalDecider$ You | TriggerDescription$ At the beginning of your draw step, you may draw an additional card. If you do, put a card from your hand on the bottom of your library. +SVar:SituationalEthics:AB$ Draw | Cost$ 0 | NumCards$ 1 | Defined$ You | SubAbility$ Switch +SVar:Switch:DB$ ChangeZone | Origin$ Hand | Destination$ Library | LibraryPosition$ -1 | ChangeNum$ 1 | Mandatory$ True +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=4970 +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/starke.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/s/stigma_lasher.txt b/res/cardsfolder/s/stigma_lasher.txt index b02d2ec4d30..8b048633efb 100644 --- a/res/cardsfolder/s/stigma_lasher.txt +++ b/res/cardsfolder/s/stigma_lasher.txt @@ -6,7 +6,7 @@ PT:2/2 K:Wither T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigEffect | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage to a player, that player can't gain life for the rest of the game. SVar:TrigEffect:AB$Effect | Cost$ 0 | Name$ Stigma Lasher Effect | StaticAbilities$ CantGainLife | Duration$ Permanent | RememberObjects$ TriggeredAffected -SVar:CantGainLife:Mode$ Continuous | Affected$ Player.isRemembered | AddKeyword$ You can't gain life. | Description$ The damaged player can't gain life for the rest of the game. +SVar:CantGainLife:Mode$ Continuous | EffectZone$ Command | Affected$ Player.isRemembered | AddKeyword$ You can't gain life. | Description$ The damaged player can't gain life for the rest of the game. SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/stigma_lasher.jpg SetInfo:EVE|Rare|http://magiccards.info/scans/en/eve/62.jpg diff --git a/res/cardsfolder/s/story_circle.txt b/res/cardsfolder/s/story_circle.txt index 8b817a78799..97f8d8384ce 100644 --- a/res/cardsfolder/s/story_circle.txt +++ b/res/cardsfolder/s/story_circle.txt @@ -7,7 +7,7 @@ SVar:ChooseColor:DB$ ChooseColor | Defined$ You | AILogic$ MostProminentInHumanD A:AB$ ChooseSource | Cost$ W | Choices$ Card.ChosenColor | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice of the chosen color would deal damage to you this turn, prevent that damage. SVar:DBEffect:DB$ Effect | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Remembered | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.IsRemembered | ValidTarget$ You | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to you, prevent that damage. -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/story_circle.jpg diff --git a/res/cardsfolder/s/suffer_the_past.txt b/res/cardsfolder/s/suffer_the_past.txt index 68c0803b915..9d1b23790f2 100644 --- a/res/cardsfolder/s/suffer_the_past.txt +++ b/res/cardsfolder/s/suffer_the_past.txt @@ -9,7 +9,7 @@ SVar:DBSyphonLife:DB$ LoseLife | Defined$ Targeted | LifeAmount$ Y | SubAbility$ SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ Y | References$ Y | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:TargetedObjects$Amount/Minus.1 -SVar:MaxTgts:Targeted$ValidGrave Card.TargetedPlayerOwn +SVar:MaxTgts:Targeted$ValidGraveyard Card.TargetedPlayerOwn SVar:Y:Remembered$Amount SVar:RemAIDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/t/tahngarth.txt b/res/cardsfolder/t/tahngarth.txt new file mode 100644 index 00000000000..0125a0735ef --- /dev/null +++ b/res/cardsfolder/t/tahngarth.txt @@ -0,0 +1,10 @@ +Name:Tahngarth +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-1/+7 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddKeyword$ Haste | Description$ Creatures you control have haste. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4971&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/tahngarth.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/t/takara.txt b/res/cardsfolder/t/takara.txt new file mode 100644 index 00000000000..528256cf232 --- /dev/null +++ b/res/cardsfolder/t/takara.txt @@ -0,0 +1,11 @@ +Name:Takara +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+3/-8 +A:AB$ DealDamage | ActivationZone$ Command | Cost$ Sac<1/Creature> | Tgt$ TgtCP | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +SVar:RemAIDeck:True +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12144&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/takara.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/t/tamiyo_the_moon_sage.txt b/res/cardsfolder/t/tamiyo_the_moon_sage.txt index 030e3a865eb..d24ce15c5a7 100644 --- a/res/cardsfolder/t/tamiyo_the_moon_sage.txt +++ b/res/cardsfolder/t/tamiyo_the_moon_sage.txt @@ -8,8 +8,8 @@ SVar:TamiyoPump:DB$Pump | Defined$ Targeted | Permanent$ True | KW$ HIDDEN This A:AB$ Draw | Cost$ SubCounter<2/LOYALTY> | ValidTgts$ Player | TgtPrompt$ Select target player | Defined$ You | NumCards$ X | References$ X | Planeswalker$ True | SpellDescription$ Draw a card for each tapped creature target player controls. SVar:X:Count$Valid Creature.tapped+TargetedPlayerCtrl A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Tamiyo, the Moon Sage emblem | Image$ tamiyo_the_moon_sage_emblem | StaticAbilities$ UnlimitedHand | Triggers$ TamiyoCardToGrave | SVars$ TamiyoReturn | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You have no maximum hand size" and "Whenever a card is put into your graveyard from anywhere, you may return it to your hand." -SVar:UnlimitedHand:Mode$ Continuous | Affected$ You | SetMaxHandSize$ -1 | Description$ You have no maximum hand size. -SVar:TamiyoCardToGrave:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Card.nonToken+YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TamiyoReturn | TriggerDescription$ Whenever a card is put into your graveyard from anywhere, you may return it to your hand. +SVar:UnlimitedHand:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ -1 | Description$ You have no maximum hand size. +SVar:TamiyoCardToGrave:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Card.nonToken+YouCtrl | OptionalDecider$ You | Execute$ TamiyoReturn | TriggerDescription$ Whenever a card is put into your graveyard from anywhere, you may return it to your hand. SVar:TamiyoReturn:AB$ChangeZone | Cost$ 0 | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Hand SVar:Rarity:Mythic SVar:Picture:http://www.wizards.com/global/images/magic/general/tamiyo_the_moon_sage.jpg diff --git a/res/cardsfolder/t/tanglesap.txt b/res/cardsfolder/t/tanglesap.txt index d4a18f5ea5f..c5704fbb4fd 100644 --- a/res/cardsfolder/t/tanglesap.txt +++ b/res/cardsfolder/t/tanglesap.txt @@ -3,7 +3,7 @@ ManaCost:1 G Types:Instant Text:no text A:SP$ Effect | Cost$ 1 G | Name$ Tanglesap Effect | StaticAbilities$ STPrevent | AILogic$ Fog | SpellDescription$ Prevent all combat damage that would be dealt this turn by creatures without trample. -SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.withoutTrample | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by creatures without trample. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.withoutTrample | CombatDamage$ True | Description$ Prevent all combat damage that would be dealt this turn by creatures without trample. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/tanglesap.jpg SetInfo:ZEN|Common|http://magiccards.info/scans/en/zen/186.jpg diff --git a/res/cardsfolder/t/tawnos.txt b/res/cardsfolder/t/tawnos.txt new file mode 100644 index 00000000000..57ff84e0b02 --- /dev/null +++ b/res/cardsfolder/t/tawnos.txt @@ -0,0 +1,10 @@ +Name:Tawnos +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+3/-4 +S:Mode$ Continuous | EffectZone$ Command | Affected$ Artifact.YouCtrl,Creature.YouCtrl,Enchantment.YouCtrl | AddHiddenKeyword$ HIDDEN Flash | AffectedZone$ Exile,Graveyard,Hand,Library | Description$ You may cast artifact, creature, and enchantment spells as though they had flash. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12328&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/tawnos.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/t/tectonic_rift.txt b/res/cardsfolder/t/tectonic_rift.txt index 337b4b2c0f5..3d9f2d57008 100644 --- a/res/cardsfolder/t/tectonic_rift.txt +++ b/res/cardsfolder/t/tectonic_rift.txt @@ -4,7 +4,7 @@ Types:Sorcery Text:no text A:SP$ Destroy | Cost$ 3 R | ValidTgts$ Land | TgtPrompt$ Select target land | SubAbility$ DBEffect | SpellDescription$ Destroy target land. Creatures without flying can't block this turn. SVar:DBEffect:DB$Effect | Name$ Tectonic Rift Effect | StaticAbilities$ KWPump -SVar:KWPump:Mode$ Continuous | Affected$ Creature.withoutFlying | AddHiddenKeyword$ HIDDEN CARDNAME can't block. | Description$ Creatures without flying can't block this turn. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withoutFlying | AddHiddenKeyword$ HIDDEN CARDNAME can't block. | Description$ Creatures without flying can't block this turn. SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/tectonic_rift.jpg SetInfo:M12|Uncommon|http://magiccards.info/scans/en/m12/157.jpg diff --git a/res/cardsfolder/t/terrifying_presence.txt b/res/cardsfolder/t/terrifying_presence.txt index f258c708f64..521a52d0d92 100644 --- a/res/cardsfolder/t/terrifying_presence.txt +++ b/res/cardsfolder/t/terrifying_presence.txt @@ -3,7 +3,7 @@ ManaCost:1 G Types:Instant Text:no text A:SP$ Effect | Cost$ 1 G | Name$ Terrifying Presence Effect | ValidTgts$ Creature | TgtPrompt$ Select target creature | StaticAbilities$ STPrevent | RememberObjects$ Targeted | SpellDescription$ Prevent all damage that would be dealt this turn by creatures other than target creature. -SVar:STPrevent:Mode$ PreventDamage | Source$ Creature.IsNotRemembered | CombatDamage$ True | Description$ Prevent all damage that would be dealt this turn by creatures other than target creature. +SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Source$ Creature.IsNotRemembered | CombatDamage$ True | Description$ Prevent all damage that would be dealt this turn by creatures other than target creature. SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/terrifying_presence.jpg diff --git a/res/cardsfolder/t/titania.txt b/res/cardsfolder/t/titania.txt new file mode 100644 index 00000000000..0b860bae232 --- /dev/null +++ b/res/cardsfolder/t/titania.txt @@ -0,0 +1,10 @@ +Name:Titania +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+2/-5 +S:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ AdjustLandPlays:1 | Description$ You may play an additional land on each of your turns. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12333&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/titania.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/t/titanias_song.txt b/res/cardsfolder/t/titanias_song.txt index f182f7b927b..37defe43903 100644 --- a/res/cardsfolder/t/titanias_song.txt +++ b/res/cardsfolder/t/titanias_song.txt @@ -5,7 +5,7 @@ Text:no text S:Mode$ Continuous | Affected$ Artifact.nonCreature | SetPower$ AffectedX | SetToughness$ AffectedX | AddType$ Creature | RemoveAllAbilities$ True | Description$ Each noncreature artifact is an artifact creature with power and toughness each equal to its converted mana cost. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigEffect | Static$ True | TriggerDescription$ If CARDNAME leaves the battlefield, this effect continues until end of turn. SVar:TrigEffect:AB$ Effect | Cost$ 0 | Name$ Titania's Song Effect | StaticAbilities$ KWAnimateAll | SVars$ AffectedX | References$ AffectedX -SVar:KWAnimateAll:Mode$ Continuous | Affected$ Artifact.nonCreature | SetPower$ AffectedX | SetToughness$ AffectedX | AddType$ Creature | RemoveAllAbilities$ True | Description$ Each noncreature artifact is an artifact creature with power and toughness each equal to its converted mana cost. +SVar:KWAnimateAll:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Artifact.nonCreature | SetPower$ AffectedX | SetToughness$ AffectedX | AddType$ Creature | RemoveAllAbilities$ True | Description$ Each noncreature artifact is an artifact creature with power and toughness each equal to its converted mana cost. SVar:AffectedX:Count$CardManaCost SVar:PlayMain1:TRUE SVar:RemRandomDeck:True diff --git a/res/cardsfolder/t/turf_wound.txt b/res/cardsfolder/t/turf_wound.txt index 174d506b769..4b7a1ac9925 100644 --- a/res/cardsfolder/t/turf_wound.txt +++ b/res/cardsfolder/t/turf_wound.txt @@ -3,7 +3,7 @@ ManaCost:2 R Types:Instant Text:no text A:SP$ Effect | Cost$ 2 R | ValidTgts$ Player | Name$ Turf Wound Effect | StaticAbilities$ STCantPlayLand | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SubAbility$ DBDraw | SpellDescription$ Target player can't play land cards this turn. -SVar:STCantPlayLand:Mode$ CantPlayLand | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn. +SVar:STCantPlayLand:Mode$ CantPlayLand | EffectZone$ Command | Player$ Player.IsRemembered | Description$ Target player can't play land cards this turn. SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/turf_wound.jpg diff --git a/res/cardsfolder/u/undergrowth.txt b/res/cardsfolder/u/undergrowth.txt index 7141f60470a..bbcecf2b777 100644 --- a/res/cardsfolder/u/undergrowth.txt +++ b/res/cardsfolder/u/undergrowth.txt @@ -4,7 +4,7 @@ Types:Instant Text:As an additional cost to cast Undergrowth, you may pay 2 R. A:SP$ Fog | Cost$ G | SpellDescription$ Prevent all combat damage that would be dealt this turn. A:SP$ Effect | Cost$ 2 R G | Name$ Undergrowth Effect | StaticAbilities$ KWPump | SpellDescription$ If its additional cost was paid, CARDNAME doesn't affect combat damage that would be dealt by red creatures. -SVar:KWPump:Mode$ Continuous | Affected$ Creature.nonRed | AddHiddenKeyword$ HIDDEN Prevent all combat damage that would be dealt by CARDNAME. | Description$ Prevent all combat damage this turn except that from red creatures. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.nonRed | AddHiddenKeyword$ HIDDEN Prevent all combat damage that would be dealt by CARDNAME. | Description$ Prevent all combat damage this turn except that from red creatures. SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/undergrowth.jpg diff --git a/res/cardsfolder/u/unstable_footing.txt b/res/cardsfolder/u/unstable_footing.txt index 758ca46b0c1..70cd04d1225 100644 --- a/res/cardsfolder/u/unstable_footing.txt +++ b/res/cardsfolder/u/unstable_footing.txt @@ -4,7 +4,7 @@ Types:Instant Text:no text K:Kicker 3 R A:SP$ Effect | Cost$ R | Name$ Unstable Footing | StaticAbilities$ STCantPrevent | SubAbility$ DBDamage | SpellDescription$ Damage can't be prevented this turn. If CARDNAME was kicked, it deals 5 damage to target player. -SVar:STCantPrevent:Mode$ Continuous | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented. +SVar:STCantPrevent:Mode$ Continuous | EffectZone$ Command | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented. SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select another target player | NumDmg$ 5 | NoPrevention$ True | Condition$ Kicked | ConditionDescription$ If it was kicked, SVar:RemAIDeck:True SVar:Rarity:Uncommon diff --git a/res/cardsfolder/u/urza.txt b/res/cardsfolder/u/urza.txt new file mode 100644 index 00000000000..3b1de543220 --- /dev/null +++ b/res/cardsfolder/u/urza.txt @@ -0,0 +1,10 @@ +Name:Urza +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:-1/+10 +A:AB$ DealDamage | ActivationZone$ Command | Cost$ 3 | Tgt$ TgtCP | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12326&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/urza.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/v/vassals_duty.txt b/res/cardsfolder/v/vassals_duty.txt index 961a9387fa3..2ea54f3c63a 100644 --- a/res/cardsfolder/v/vassals_duty.txt +++ b/res/cardsfolder/v/vassals_duty.txt @@ -10,7 +10,7 @@ SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ You | DamageSource$ Replac SVar:RestDmgCombat:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect SVar:RestDmg:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature.IsRemembered | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:X:ReplaceCount$DamageAmount/Minus.1 SVar:Y:ReplaceCount$DamageAmount SVar:RemAIDeck:True diff --git a/res/cardsfolder/v/veiling_oddity.txt b/res/cardsfolder/v/veiling_oddity.txt index 48229c6ae5c..0ee20cb7d75 100644 --- a/res/cardsfolder/v/veiling_oddity.txt +++ b/res/cardsfolder/v/veiling_oddity.txt @@ -6,7 +6,7 @@ PT:2/3 K:Suspend:4:1 U T:Mode$ CounterRemoved | ValidCard$ Card.Self | TriggerZones$ Exile | CounterType$ TIME | Execute$ TrigEffect | IsPresent$ Card.Self+counters_GE1_TIME | PresentZone$ Exile | PresentCompare$ EQ0 | TriggerDescription$ When the last time counter is removed from CARDNAME while it's exiled, creatures are unblockable this turn. SVar:TrigEffect:AB$ Effect | Cost$ 0 | Name$ Veiling Oddity Effect | StaticAbilities$ KWPump -SVar:KWPump:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ HIDDEN Unblockable | Description$ creatures are unblockable this turn. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddHiddenKeyword$ HIDDEN Unblockable | Description$ creatures are unblockable this turn. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/veiling_oddity.jpg SetInfo:PLC|Common|http://magiccards.info/scans/en/pc/51.jpg diff --git a/res/cardsfolder/v/veilstone_amulet.txt b/res/cardsfolder/v/veilstone_amulet.txt index 6d80f5ec0f5..b3208a3897d 100644 --- a/res/cardsfolder/v/veilstone_amulet.txt +++ b/res/cardsfolder/v/veilstone_amulet.txt @@ -4,7 +4,7 @@ Types:Artifact Text:no text T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigEffect | TriggerDescription$ Whenever you cast a spell, creatures you control can't be the targets of spells or abilities your opponents control this turn. SVar:TrigEffect:AB$Effect | Cost$ 0 | Name$ Veilstone Amulet Effect | StaticAbilities$ CantTarget -SVar:CantTarget:Mode$ CantTarget | ValidCard$ Creature.YouCtrl | Activator$ Opponent | Description$ Creatures you control can't be the targets of spells or abilities your opponents control +SVar:CantTarget:Mode$ CantTarget | EffectZone$ Command | ValidCard$ Creature.YouCtrl | Activator$ Opponent | Description$ Creatures you control can't be the targets of spells or abilities your opponents control SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/veilstone_amulet.jpg diff --git a/res/cardsfolder/v/venser_the_sojourner.txt b/res/cardsfolder/v/venser_the_sojourner.txt index 835b7001960..10adf620bf6 100644 --- a/res/cardsfolder/v/venser_the_sojourner.txt +++ b/res/cardsfolder/v/venser_the_sojourner.txt @@ -8,7 +8,7 @@ SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ Tr SVar:TrigReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ Remembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True A:AB$ Effect | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | Name$ Venser, the Sojourner Effect | Image$ venser_the_sojourner_emblem | StaticAbilities$ KWPump | SpellDescription$ Creatures are unblockable this turn. -SVar:KWPump:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ HIDDEN Unblockable | Description$ creatures are unblockable this turn. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature | AddHiddenKeyword$ HIDDEN Unblockable | Description$ creatures are unblockable this turn. A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Venser, the Sojourner emblem | Triggers$ TrigSpellCast | SVars$ EffSpellCast | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Whenever you cast a spell, exile target permanent." SVar:TrigSpellCast:Mode$ SpellCast | ValidActivatingPlayer$ You | Execute$ EffSpellCast | TriggerDescription$ Whenever you cast a spell, exile target permanent. SVar:EffSpellCast:AB$ChangeZone | Cost$ 0 | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Permanent diff --git a/res/cardsfolder/v/vigorous_charge.txt b/res/cardsfolder/v/vigorous_charge.txt index c5cd99773b1..07dd2a75a32 100644 --- a/res/cardsfolder/v/vigorous_charge.txt +++ b/res/cardsfolder/v/vigorous_charge.txt @@ -6,10 +6,10 @@ K:Kicker W A:SP$ Pump | Cost$ G | ValidTgts$ Creature | KW$ Trample | SubAbility$ VigorousPumping | SpellDescription$ Target creature gains trample until end of turn. Whenever that creature deals combat damage this turn, if CARDNAME was kicked, you gain life equal to that damage. SVar:VigorousPumping:DB$ Effect | TgtPrompt$ Select target creature | Triggers$ TrigDamage,EndTrackingEffect | SVars$ VigorousLife,X,ExileEffect | RememberObjects$ Targeted | Condition$ Kicked | ConditionDescription$ If Vigorous Charge was kicked, SVar:TrigDamage:Mode$ DamageDone | ValidSource$ Creature.IsRemembered | CombatDamage$ True | Execute$ VigorousLife | TriggerDescription$ Whenever the targeted creature deals combat damage this turn, you gain life equal to that damage. -SVar:VigorousLife:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X | References$ X +SVar:VigorousLife:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X | References$ X SVar:X:TriggerCount$DamageAmount SVar:EndTrackingEffect:Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ Battlefield | Destination$ Any | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemRandomDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/vigorous_charge.jpg diff --git a/res/cardsfolder/v/volrath.txt b/res/cardsfolder/v/volrath.txt new file mode 100644 index 00000000000..37ad7d47454 --- /dev/null +++ b/res/cardsfolder/v/volrath.txt @@ -0,0 +1,11 @@ +Name:Volrath +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+2/-3 +T:Mode$ ChangesZone | TriggerZones$ Command | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl+YouOwn | OptionalDecider$ You | Execute$ GetUp | TriggerController$ TriggeredCardController | TriggerDescription$ Whenever a creature you control is put into your graveyard from the battlefield, you may put it on top of your library. +SVar:GetUp:AB$ ChangeZone | Cost$ 0 | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Library +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=4972&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/volrath.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/w/ward_of_piety.txt b/res/cardsfolder/w/ward_of_piety.txt index db8f5430b5a..acde3cde764 100644 --- a/res/cardsfolder/w/ward_of_piety.txt +++ b/res/cardsfolder/w/ward_of_piety.txt @@ -7,12 +7,12 @@ A:SP$ Attach | Cost$ 1 W | ValidTgts$ Creature | AILogic$ Pump A:AB$ Effect | Cost$ 1 W | Name$ Redirection Ward | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to redirect the damage to | ReplacementEffects$ PietyCombat,PietyNonCombat | Triggers$ OutOfSight | SVars$ CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | References$ PietyCombat,PietyNonCombat,OutOfSight,CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | Duration$ HostLeavesOrEOT | ImprintCards$ Enchanted | RememberObjects$ Targeted | SpellDescription$ The next 1 damage that would be dealt to enchanted creature this turn is dealt to target creature or player instead. SVar:PietyCombat:Event$ DamageDone | ValidTarget$ Creature.IsImprinted | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ The next 1 damage that would be dealt to enchanted creature this turn is dealt to target creature or player instead. SVar:PietyNonCombat:Event$ DamageDone | ValidTarget$ Creature.IsImprinted | IsCombat$ False | ReplaceWith$ NonCombatDmg | Secondary$ True | Description$ The next 1 damage that would be dealt to enchanted creature this turn is dealt to target creature or player instead. -SVar:CombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:NonCombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:RestDmgCombat:DB$DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect -SVar:RestDmg:DB$DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect -SVar:OutOfSight:Mode$ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Remembered | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:RestDmgCombat:DB$ DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect +SVar:RestDmg:DB$ DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Remembered | Execute$ ExileEffect | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:X:ReplaceCount$DamageAmount/Minus.1 SVar:Y:ReplaceCount$DamageAmount SVar:RemAIDeck:TrueSVar:Rarity:Uncommon diff --git a/res/cardsfolder/w/warrior_en_kor.txt b/res/cardsfolder/w/warrior_en_kor.txt index 87ec8242213..8c83529519e 100644 --- a/res/cardsfolder/w/warrior_en_kor.txt +++ b/res/cardsfolder/w/warrior_en_kor.txt @@ -6,12 +6,12 @@ PT:2/2 A:AB$ Effect | Cost$ 0 | Name$ en-Kor Redirection | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control to redirect the damage to | ReplacementEffects$ EnKorCombat,EnKorNonCombat | Triggers$ OutOfSight | SVars$ CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | References$ EnKorCombat,EnKorNonCombat,OutOfSight,CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | Duration$ HostLeavesOrEOT | RememberObjects$ Self | ImprintCards$ Targeted | SpellDescription$ The next 1 damage that would be dealt to CARDNAME this turn is dealt to target creature you control instead. SVar:EnKorCombat:Event$ DamageDone | ValidTarget$ Creature.IsRemembered | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ The next 1 damage that would be dealt to Warrior en-Kor this turn is dealt to target creature you control instead. SVar:EnKorNonCombat:Event$ DamageDone | ValidTarget$ Creature.IsRemembered | IsCombat$ False | ReplaceWith$ NonCombatDmg | Secondary$ True | Description$ The next 1 damage that would be dealt to Warrior en-Kor this turn is dealt to target creature you control instead. -SVar:CombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:NonCombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:RestDmgCombat:DB$DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect -SVar:RestDmg:DB$DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect -SVar:OutOfSight:Mode$ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:RestDmgCombat:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect +SVar:RestDmg:DB$ DealDamage | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Imprinted | Execute$ ExileEffect | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:X:ReplaceCount$DamageAmount/Minus.1 SVar:Y:ReplaceCount$DamageAmount SVar:RemAIDeck:True diff --git a/res/cardsfolder/w/winding_canyons.txt b/res/cardsfolder/w/winding_canyons.txt index b5e29e40191..4bc765a3f2e 100644 --- a/res/cardsfolder/w/winding_canyons.txt +++ b/res/cardsfolder/w/winding_canyons.txt @@ -4,7 +4,7 @@ Types:Land Text:no text A:AB$ Mana | Cost$ T | Produced$ 1 | SpellDescription$ Add 1 to your mana pool. A:AB$ Effect | Cost$ 2 T | Name$ Winding Canyons Effect | StaticAbilities$ GiveFlash | SpellDescription$ Until end of turn, you may play creature cards as though they had flash. -SVar:GiveFlash:Mode$ Continuous | Affected$ Creature.YouCtrl | AddHiddenKeyword$ HIDDEN Flash | AffectedZone$ Exile,Graveyard,Hand,Library | Description$ Until end of turn, you may play creature cards as though they had flash. +SVar:GiveFlash:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AddHiddenKeyword$ HIDDEN Flash | AffectedZone$ Exile,Graveyard,Hand,Library | Description$ Until end of turn, you may play creature cards as though they had flash. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/winding_canyons.jpg diff --git a/res/cardsfolder/w/words_of_war.txt b/res/cardsfolder/w/words_of_war.txt index 2bbc2378bb1..eeb3fe5261e 100644 --- a/res/cardsfolder/w/words_of_war.txt +++ b/res/cardsfolder/w/words_of_war.txt @@ -4,8 +4,8 @@ Types:Enchantment Text:no text A:AB$ Effect | Cost$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Name$ Words of War Effect | RememberObjects$ Targeted | ImprintCards$ Self | ReplacementEffects$ DrawReplace | SVars$ ExileEffect,WarDamage | SpellDescription$ The next time you would draw a card this turn, CARDNAME deals 2 damage to target creature or player instead. SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ WarDamage | Description$ The next time you would draw a card this turn, Words of War deals 2 damage to target creature or player instead. -SVar:WarDamage:AB$DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ Imprinted | NumDmg$ 2 | SubAbility$ ExileEffect -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:WarDamage:AB$ DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ Imprinted | NumDmg$ 2 | SubAbility$ ExileEffect +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/words_of_war.jpg diff --git a/res/cardsfolder/w/words_of_waste.txt b/res/cardsfolder/w/words_of_waste.txt index 74374139b0e..9224145fb30 100644 --- a/res/cardsfolder/w/words_of_waste.txt +++ b/res/cardsfolder/w/words_of_waste.txt @@ -4,8 +4,8 @@ Types:Enchantment Text:no text A:AB$ Effect | Cost$ 1 | Name$ Words of Waste Effect | ReplacementEffects$ DrawReplace | SVars$ ExileEffect,WasteCard | SpellDescription$ The next time you would draw a card this turn, each opponent discards a card instead. SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ WasteCard | Description$ The next time you would draw a card this turn, each opponent discards a card instead. -SVar:WasteCard:AB$Discard | Cost$ 0 | Defined$ Opponent | NumCards$ 1 | Mode$ TgtChoose | SubAbility$ ExileEffect -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:WasteCard:AB$ Discard | Cost$ 0 | Defined$ Opponent | NumCards$ 1 | Mode$ TgtChoose | SubAbility$ ExileEffect +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/words_of_waste.jpg diff --git a/res/cardsfolder/w/words_of_wilding.txt b/res/cardsfolder/w/words_of_wilding.txt index e79e12bdb2f..80c0e303a7d 100644 --- a/res/cardsfolder/w/words_of_wilding.txt +++ b/res/cardsfolder/w/words_of_wilding.txt @@ -4,8 +4,8 @@ Types:Enchantment Text:no text A:AB$ Effect | Cost$ 1 | Name$ Words of Wilding Effect | ReplacementEffects$ DrawReplace | SVars$ ExileEffect,WildToken | SpellDescription$ The next time you would draw a card this turn, put a 2/2 green Bear creature token onto the battlefield instead. SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ WildToken | Description$ The next time you would draw a card this turn, put a 2/2 green Bear creature token onto the battlefield instead. -SVar:WildToken:AB$Token | Cost$ 0 | TokenAmount$ 1 | TokenOwner$ You | TokenName$ Bear | TokenTypes$ Creature,Bear | TokenColors$ Green | TokenPower$ 2 | TokenToughness$ 2 | SubAbility$ ExileEffect -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:WildToken:AB$ Token | Cost$ 0 | TokenAmount$ 1 | TokenOwner$ You | TokenName$ Bear | TokenTypes$ Creature,Bear | TokenColors$ Green | TokenPower$ 2 | TokenToughness$ 2 | SubAbility$ ExileEffect +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/words_of_wilding.jpg diff --git a/res/cardsfolder/w/words_of_wind.txt b/res/cardsfolder/w/words_of_wind.txt index 2b25be54581..89ea1173bf7 100644 --- a/res/cardsfolder/w/words_of_wind.txt +++ b/res/cardsfolder/w/words_of_wind.txt @@ -6,7 +6,7 @@ A:AB$ Effect | Cost$ 1 | Name$ Words of Wind Effect | ReplacementEffects$ DrawRe SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ BounceYou | Description$ The next time you would draw a card this turn, each player returns a permanent he or she controls to its owner's hand instead. SVar:BounceYou:AB$ ChangeZone | Cost$ 0 | Origin$ Battlefield | Destination$ Hand | ChangeType$ Permanent.YouCtrl | ChangeNum$ 1 | Hidden$ True | IsCurse$ True | SubAbility$ BounceOpp SVar:BounceOpp:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | DefinedPlayer$ Opponent | ChangeType$ Permanent.YouDontCtrl | ChangeNum$ 1 | Hidden$ True | IsCurse$ True | SubAbility$ ExileEffect -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/words_of_wind.jpg diff --git a/res/cardsfolder/w/words_of_worship.txt b/res/cardsfolder/w/words_of_worship.txt index d78f855d771..da5f9929efc 100644 --- a/res/cardsfolder/w/words_of_worship.txt +++ b/res/cardsfolder/w/words_of_worship.txt @@ -4,8 +4,8 @@ Types:Enchantment Text:no text A:AB$ Effect | Cost$ 1 | Name$ Words of Worship Effect | ReplacementEffects$ DrawReplace | SVars$ ExileEffect,WordLife | SpellDescription$ The next time you would draw a card this turn, you gain 5 life instead. SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ WordLife | Description$ The next time you would draw a card this turn, you gain 5 life instead. -SVar:WordLife:AB$GainLife | Cost$ 0 | LifeAmount$ 5 | SubAbility$ ExileEffect -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile +SVar:WordLife:AB$ GainLife | Cost$ 0 | LifeAmount$ 5 | SubAbility$ ExileEffect +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemRandomDeck:True SVar:RemAIDeck:True SVar:Rarity:Rare diff --git a/res/cardsfolder/x/xantcha.txt b/res/cardsfolder/x/xantcha.txt new file mode 100644 index 00000000000..0fb81b639b8 --- /dev/null +++ b/res/cardsfolder/x/xantcha.txt @@ -0,0 +1,11 @@ +Name:Xantcha +ManaCost:no cost +Types:Vanguard +Text:no text +HandLifeModifier:+1/+3 +A:AB$ Regenerate | ActivationZone$ Command | Cost$ Sac<1/Permanent> | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Regenerate target creature. +SVar:RemAIDeck:True +SVar:Rarity:Special +SVar:Picture:http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=12331&type=card +SetInfo:VAN|Special|http://magiccards.info/extras/other/vanguard/xantcha.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/x/xantid_swarm.txt b/res/cardsfolder/x/xantid_swarm.txt index b4bd793854d..7ecf4caea3e 100644 --- a/res/cardsfolder/x/xantid_swarm.txt +++ b/res/cardsfolder/x/xantid_swarm.txt @@ -6,7 +6,7 @@ PT:0/1 K:Flying T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigEffect | TriggerDescription$ When CARDNAME attacks, defending player can't cast spells this turn. SVar:TrigEffect:AB$ Effect | Cost$ 0 | Name$ Xantid Swarm Effect | StaticAbilities$ CantBeCast -SVar:CantBeCast:Mode$ CantBeCast | ValidCard$ Card | Caster$ DefendingPlayer | Description$ Defending player can't cast spells. +SVar:CantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ DefendingPlayer | Description$ Defending player can't cast spells. SVar:RemRandomDeck:True SVar:HasAttackEffect:TRUE SVar:Rarity:Rare diff --git a/res/cardsfolder/y/yawgmoths_will.txt b/res/cardsfolder/y/yawgmoths_will.txt index 9f9e8cded79..f8b07ae6e08 100644 --- a/res/cardsfolder/y/yawgmoths_will.txt +++ b/res/cardsfolder/y/yawgmoths_will.txt @@ -3,7 +3,7 @@ ManaCost:2 B Types:Sorcery Text:no text A:SP$ Effect | Cost$ 2 B | Name$ Yawgmoth's Will Effect | StaticAbilities$ STPlay | Keywords$ Exile | SpellDescription$ Until end of turn, you may play cards from your graveyard. If a card would be put into your graveyard from anywhere this turn, exile that card instead. -SVar:STPlay:Mode$ Continuous | Affected$ Card.YouCtrl | AffectedZone$ Graveyard | AddHiddenKeyword$ HIDDEN May be played | Description$ You may play cards from your graveyard. +SVar:STPlay:Mode$ Continuous | EffectZone$ Command | Affected$ Card.YouCtrl | AffectedZone$ Graveyard | AddHiddenKeyword$ HIDDEN May be played | Description$ You may play cards from your graveyard. SVar:Exile:If a card would be put into your graveyard from anywhere, exile it instead. SVar:RemAIDeck:True SVar:Rarity:Rare diff --git a/res/cardsfolder/z/zealous_inquisitor.txt b/res/cardsfolder/z/zealous_inquisitor.txt index f8a0c60fe06..dbbbaf1ea80 100644 --- a/res/cardsfolder/z/zealous_inquisitor.txt +++ b/res/cardsfolder/z/zealous_inquisitor.txt @@ -6,12 +6,12 @@ PT:2/2 A:AB$ Effect | Cost$ 1 W | Name$ Inquisitor Redirection | ValidTgts$ Creature | TgtPrompt$ Select target creature you control to redirect the damage to | ReplacementEffects$ InquisitorCombat,InquisitorNonCombat | Triggers$ OutOfSight | SVars$ CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | References$ InquisitorCombat,InquisitorNonCombat,OutOfSight,CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | Duration$ HostLeavesOrEOT | ImprintCards$ Self | RememberObjects$ Targeted | SpellDescription$ The next 1 damage that would be dealt to CARDNAME this turn is dealt to target creature instead. SVar:InquisitorCombat:Event$ DamageDone | ValidTarget$ Creature.IsImprinted | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ The next 1 damage that would be dealt to Zealous Inquisitor this turn is dealt to target creature instead. SVar:InquisitorNonCombat:Event$ DamageDone | ValidTarget$ Creature.IsImprinted | IsCombat$ False | ReplaceWith$ NonCombatDmg | Secondary$ True | Description$ The next 1 damage that would be dealt to Zealous Inquisitor this turn is dealt to target creature instead. -SVar:CombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:NonCombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:RestDmgCombat:DB$DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect -SVar:RestDmg:DB$DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect -SVar:OutOfSight:Mode$ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Remembered | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:RestDmgCombat:DB$ DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect +SVar:RestDmg:DB$ DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Remembered | Execute$ ExileEffect | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:X:ReplaceCount$DamageAmount/Minus.1 SVar:Y:ReplaceCount$DamageAmount SVar:RemAIDeck:True diff --git a/res/cardsfolder/z/zhalfirin_crusader.txt b/res/cardsfolder/z/zhalfirin_crusader.txt index 98cc4a4782b..c6a3b29a172 100644 --- a/res/cardsfolder/z/zhalfirin_crusader.txt +++ b/res/cardsfolder/z/zhalfirin_crusader.txt @@ -7,12 +7,12 @@ K:Flanking A:AB$ Effect | Cost$ 1 W | Name$ Zhalfirin Redirection | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to redirect the damage to | ReplacementEffects$ CrusaderCombat,CrusaderNonCombat | Triggers$ OutOfSight | SVars$ CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | References$ CrusaderCombat,CrusaderNonCombat,OutOfSight,CombatDmg,NonCombatDmg,ExileEffect,RestDmgCombat,RestDmg,X,Y | Duration$ HostLeavesOrEOT | ImprintCards$ Self | RememberObjects$ Targeted | SpellDescription$ The next 1 damage that would be dealt to CARDNAME this turn is dealt to target creature or player instead. SVar:CrusaderCombat:Event$ DamageDone | ValidTarget$ Creature.IsImprinted | IsCombat$ True | ReplaceWith$ CombatDmg | Description$ The next 1 damage that would be dealt to Zhalfirin Crusader this turn is dealt to target creature or player instead. SVar:CrusaderNonCombat:Event$ DamageDone | ValidTarget$ Creature.IsImprinted | IsCombat$ False | ReplaceWith$ NonCombatDmg | Secondary$ True | Description$ The next 1 damage that would be dealt to Zhalfirin Crusader this turn is dealt to target creature or player instead. -SVar:CombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:NonCombatDmg:AB$DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 -SVar:RestDmgCombat:DB$DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect -SVar:RestDmg:DB$DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect -SVar:OutOfSight:Mode$ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Remembered | Execute$ ExileEffect | Static$ True -SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | Static$ True +SVar:CombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ 1 | SubAbility$ RestDmgCombat | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:NonCombatDmg:AB$ DealDamage | Cost$ 0 | Defined$ Remembered | DamageSource$ ReplacedSource | NumDmg$ 1 | SubAbility$ RestDmg | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 +SVar:RestDmgCombat:DB$ DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | CombatDamage$ True | NumDmg$ X | SubAbility$ ExileEffect +SVar:RestDmg:DB$ DealDamage | Defined$ Imprinted | DamageSource$ ReplacedSource | NumDmg$ X | SubAbility$ ExileEffect +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Remembered | Execute$ ExileEffect | Static$ True +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:X:ReplaceCount$DamageAmount/Minus.1 SVar:Y:ReplaceCount$DamageAmount SVar:RemAIDeck:True diff --git a/res/layouts/home_default.xml b/res/layouts/home_default.xml index 2a661eed3dd..50c5ac0b7c6 100644 --- a/res/layouts/home_default.xml +++ b/res/layouts/home_default.xml @@ -21,5 +21,6 @@ HOME_CONSTRUCTED HOME_DRAFT HOME_SEALED + HOME_VANGUARD \ No newline at end of file diff --git a/res/layouts/match_default.xml b/res/layouts/match_default.xml index 95a9086682e..69ee7243866 100644 --- a/res/layouts/match_default.xml +++ b/res/layouts/match_default.xml @@ -14,6 +14,7 @@ FIELD_1 + COMMAND_1 HAND_0 @@ -23,6 +24,7 @@ FIELD_0 + COMMAND_0 CARD_PICTURE diff --git a/res/preferences/editor.preferences b/res/preferences/editor.preferences index 551bce40aff..f87aae94786 100644 --- a/res/preferences/editor.preferences +++ b/res/preferences/editor.preferences @@ -1,32 +1,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/preferences/main.properties b/res/preferences/main.properties index e7c30ab2c3f..2ae0ba5554a 100644 --- a/res/preferences/main.properties +++ b/res/preferences/main.properties @@ -69,4 +69,3 @@ pics/booster/images--file=../quest/booster-images.txt quest/opponent/icons--file=../quest/quest-opponent-icons.txt quest/pet/icons--file=../quest/quest-pet-shop-icons.txt quest/pet/tokens--file=../quest/quest-pet-token-images.txt - diff --git a/res/quest/world/worlds.txt b/res/quest/world/worlds.txt index ac3de71b800..5dd455ce6a8 100644 --- a/res/quest/world/worlds.txt +++ b/res/quest/world/worlds.txt @@ -1 +1 @@ -Index:1|Name:Shandalar|Dir:shandalar|Sets:2ED, ARN, ATQ, 3ED, LEG, DRK, 4ED|Banned:Chaos Orb; Falling Star \ No newline at end of file +Index:1|Name:Shandalar|Dir:shandalar|Sets:2ED, ARN, ATQ, 3ED, LEG, DRK, FEM, 4ED, ICE, CHR, HML, ALL|Banned:Chaos Orb; Falling Star \ No newline at end of file diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index b0254fc90bb..1cb5666bae4 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -64,6 +64,7 @@ import forge.game.player.ComputerUtil; import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.item.CardDb; +import forge.item.CardPrinted; import forge.util.Expressions; import forge.util.MyRandom; @@ -2003,6 +2004,16 @@ public class Card extends GameEntity implements Comparable { */ public String getText() { final StringBuilder sb = new StringBuilder(); + + // Vanguard Modifiers + if (this.isType("Vanguard")) { + final CardPrinted avatar = CardDb.instance().getCard(this); + sb.append("Hand Modifier: "); + sb.append(avatar.getCard().getHand()); + sb.append("\r\nLife Modifier: "); + sb.append(avatar.getCard().getLife()); + sb.append("\r\n\r\n"); + } sb.append(this.getAbilityText()); String nonAbilityText = this.getNonAbilityText(); @@ -4356,8 +4367,8 @@ public class Card extends GameEntity implements Comparable { * @return CardPowerToughness */ public final CardPowerToughness getLatestPT() { - CardPowerToughness latestPT = new CardPowerToughness(-1, -1, 0); - long max = 0; + CardPowerToughness latestPT = new CardPowerToughness(-1, -1, -2); + long max = -2; for (final CardPowerToughness pt : this.newPT) { if (pt.getTimestamp() >= max) { @@ -7938,7 +7949,7 @@ public class Card extends GameEntity implements Comparable { } // Prevent Damage static abilities - for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) { + for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { restDamage = stAb.applyAbility("PreventDamage", source, this, restDamage, isCombat); @@ -8725,7 +8736,7 @@ public class Card extends GameEntity implements Comparable { } // CantTarget static abilities - for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) { + for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { if (stAb.applyAbility("CantTarget", this, sa)) { diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java index 566ab620362..2986654a1c6 100644 --- a/src/main/java/forge/GameAction.java +++ b/src/main/java/forge/GameAction.java @@ -215,7 +215,8 @@ public class GameAction { } // Tokens outside the battlefield disappear immediately. - if (copied.isToken() && !zoneTo.is(ZoneType.Battlefield)) { + if ((copied.isToken() && !zoneTo.is(ZoneType.Battlefield) + && !((copied.isType("Emblem") || copied.isType("Effect")) && zoneTo.is(ZoneType.Command)))) { zoneTo.remove(copied); } @@ -781,6 +782,9 @@ public class GameAction { } else if (name.equals(ZoneType.Ante)) { final PlayerZone ante = c.getOwner().getZone(ZoneType.Ante); return this.moveTo(ante, c); + } else if (name.equals(ZoneType.Command)) { + final PlayerZone command = c.getOwner().getZone(ZoneType.Command); + return this.moveTo(command, c); } else { return this.moveToStack(c); } @@ -1899,6 +1903,7 @@ public class GameAction { List cardsOnBattlefield = Lists.newArrayList(game.getCardsIn(ZoneType.Battlefield)); cardsOnBattlefield.addAll(game.getCardsIn(ZoneType.Stack)); + cardsOnBattlefield.addAll(game.getCardsIn(ZoneType.Command)); if (!cardsOnBattlefield.contains(originalCard)) { cardsOnBattlefield.add(originalCard); } diff --git a/src/main/java/forge/card/BoosterGenerator.java b/src/main/java/forge/card/BoosterGenerator.java index 970614eb1ca..701413ae9f5 100644 --- a/src/main/java/forge/card/BoosterGenerator.java +++ b/src/main/java/forge/card/BoosterGenerator.java @@ -122,7 +122,7 @@ public class BoosterGenerator { public BoosterGenerator(Predicate filter) { this(); - for (final CardPrinted c : Iterables.filter(CardDb.instance().getAllCards(), filter)) { + for (final CardPrinted c : Iterables.filter(CardDb.instance().getAllTraditionalCards(), filter)) { this.addToRarity(c); // System.out.println(c); } diff --git a/src/main/java/forge/card/CardRules.java b/src/main/java/forge/card/CardRules.java index efbbfa7ed89..76825c622cf 100644 --- a/src/main/java/forge/card/CardRules.java +++ b/src/main/java/forge/card/CardRules.java @@ -46,6 +46,10 @@ public final class CardRules { private String toughness = null; private String loyalty = null; + + //Vanguard avatar modifiers + private Integer life = null; + private Integer hand = null; Map setsPrinted = null; @@ -256,6 +260,15 @@ public final class CardRules { this.iToughness = StringUtils.isNumeric(this.toughness) ? Integer.parseInt(this.toughness) : 0; } else if (this.getType().isPlaneswalker()) { this.loyalty = this.characteristics.getPtLine(); + } else if (this.getType().isVanguard()) { + String pt = this.characteristics.getPtLine(); + final int slashPos = this.characteristics.getPtLine() == null ? -1 : this.characteristics.getPtLine() + .indexOf('/'); + if (slashPos == -1) { + throw new RuntimeException(String.format("Vanguard '%s' has bad hand/life stats", this.getName())); + } + this.hand = Integer.parseInt(pt.substring(0,pt.indexOf('/')).replace("+", "")); + this.life = Integer.parseInt(pt.substring(pt.indexOf('/')+1).replace("+", "")); } if (this.characteristics.getSetsData().isEmpty()) { @@ -386,6 +399,22 @@ public final class CardRules { public List getKeywords() { return characteristics.getKeywords(); } + + /** + * @return the hand + */ + public Integer getHand() { + return hand; + } + + /** + * @return the life + */ + public Integer getLife() { + return life; + } + + } diff --git a/src/main/java/forge/card/CardRulesReader.java b/src/main/java/forge/card/CardRulesReader.java index 798cfb92fce..a342c935f7d 100644 --- a/src/main/java/forge/card/CardRulesReader.java +++ b/src/main/java/forge/card/CardRulesReader.java @@ -111,6 +111,12 @@ public class CardRulesReader { this.characteristics[this.curCharacteristics].setDeckNeeds(CardRulesReader.getValueAfterKey(line, "DeckNeeds:")); } break; + + case 'H': + if(line.startsWith("HandLifeModifier:")) { + this.characteristics[this.curCharacteristics].setPtLine(CardRulesReader.getValueAfterKey(line, "HandLifeModifier:")); + } + break; case 'K': if (line.startsWith("K:")) { diff --git a/src/main/java/forge/card/CardType.java b/src/main/java/forge/card/CardType.java index 387c0650dde..561b0281049 100644 --- a/src/main/java/forge/card/CardType.java +++ b/src/main/java/forge/card/CardType.java @@ -203,6 +203,15 @@ public final class CardType implements Comparable { public boolean isSorcery() { return this.coreType.contains(CardCoreType.Sorcery); } + + /** + * Checks if is vanguard. + * + * @return true if vanguard + */ + public boolean isVanguard() { + return this.coreType.contains(CardCoreType.Vanguard); + } /** * Checks if is enchantment. diff --git a/src/main/java/forge/card/MetaSet.java b/src/main/java/forge/card/MetaSet.java index a6f3ece64a3..22246eb50df 100644 --- a/src/main/java/forge/card/MetaSet.java +++ b/src/main/java/forge/card/MetaSet.java @@ -226,7 +226,7 @@ public class MetaSet { // NOTE: The following code is far from ideal in a number of ways. If someone can // think of a way to improve it, please do so. --BBU // ItemPool cardPool = new ItemPool(CardPrinted.class); - for (CardPrinted aCard : CardDb.instance().getAllCards()) { + for (CardPrinted aCard : CardDb.instance().getAllTraditionalCards()) { if (data.indexOf(aCard.getEdition()) > -1) { cardPool.add(aCard); // System.out.println("Added card" + aCard.getName()); @@ -293,7 +293,7 @@ public class MetaSet { if (mSet.type.equalsIgnoreCase("meta") || mSet.type.equalsIgnoreCase("booster") || mSet.type.equalsIgnoreCase("pack")) { final String mData = new String(mSet.data); - for (CardPrinted aCard : CardDb.instance().getAllCards()) { + for (CardPrinted aCard : CardDb.instance().getAllTraditionalCards()) { if (mData.indexOf(aCard.getEdition()) > -1) { if (!cardPool.contains(aCard)) { cardPool.add(aCard); diff --git a/src/main/java/forge/card/abilityfactory/effects/EffectEffect.java b/src/main/java/forge/card/abilityfactory/effects/EffectEffect.java index adb1e155c65..e60d3dbf76b 100644 --- a/src/main/java/forge/card/abilityfactory/effects/EffectEffect.java +++ b/src/main/java/forge/card/abilityfactory/effects/EffectEffect.java @@ -14,6 +14,7 @@ import forge.card.trigger.Trigger; import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerType; import forge.game.player.Player; +import forge.game.zone.ZoneType; public class EffectEffect extends SpellEffect { @@ -223,7 +224,7 @@ public class EffectEffect extends SpellEffect { // TODO: Add targeting to the effect so it knows who it's dealing with Singletons.getModel().getGame().getTriggerHandler().suppressMode(TriggerType.ChangesZone); - Singletons.getModel().getGame().getAction().moveToPlay(eff); + Singletons.getModel().getGame().getAction().moveTo(ZoneType.Command, eff); Singletons.getModel().getGame().getTriggerHandler().clearSuppression(TriggerType.ChangesZone); } diff --git a/src/main/java/forge/card/spellability/AbilityActivated.java b/src/main/java/forge/card/spellability/AbilityActivated.java index a1d1d7ebcea..9c48c631a4e 100644 --- a/src/main/java/forge/card/spellability/AbilityActivated.java +++ b/src/main/java/forge/card/spellability/AbilityActivated.java @@ -93,7 +93,7 @@ public abstract class AbilityActivated extends SpellAbility implements java.io.S } // CantBeActivated static abilities - for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) { + for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { if (stAb.applyAbility("CantBeActivated", c, this)) { diff --git a/src/main/java/forge/card/spellability/Spell.java b/src/main/java/forge/card/spellability/Spell.java index 98fac09ff09..40c17b35490 100644 --- a/src/main/java/forge/card/spellability/Spell.java +++ b/src/main/java/forge/card/spellability/Spell.java @@ -119,7 +119,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable } // CantBeCast static abilities - final List allp = new ArrayList(Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)); + final List allp = new ArrayList(Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))); allp.add(card); for (final Card ca : allp) { final ArrayList staticAbilities = ca.getStaticAbilities(); diff --git a/src/main/java/forge/deck/CardCollections.java b/src/main/java/forge/deck/CardCollections.java index c678322b208..e6407e3352b 100644 --- a/src/main/java/forge/deck/CardCollections.java +++ b/src/main/java/forge/deck/CardCollections.java @@ -34,6 +34,7 @@ public class CardCollections { private final IStorage draft; private final IStorage sealed; private final IStorage cube; + private final IStorage scheme; /** * TODO: Write javadoc for Constructor. @@ -45,8 +46,9 @@ public class CardCollections { this.draft = new StorageImmediatelySerialized(new DeckGroupSerializer(new File(file, "draft"))); this.sealed = new StorageImmediatelySerialized(new DeckGroupSerializer(new File(file, "sealed"))); this.cube = new StorageImmediatelySerialized(new DeckSerializer(new File(file, "cube"))); + this.scheme = new StorageImmediatelySerialized(new DeckSerializer(new File(file, "scheme"))); - System.out.printf("Read decks: %d constructed, %d sealed, %d draft, %d cubes.%n", constructed.getCount(), sealed.getCount(), draft.getCount(), cube.getCount()); + System.out.printf("Read decks: %d constructed, %d sealed, %d draft, %d cubes, %d scheme.%n", constructed.getCount(), sealed.getCount(), draft.getCount(), cube.getCount(), scheme.getCount()); // remove this after most people have been switched to new layout final OldDeckParser oldParser = new OldDeckParser(file, this.constructed, this.draft, this.sealed, this.cube); @@ -89,4 +91,12 @@ public class CardCollections { return this.sealed; } + /** + * TODO: Write javadoc for this method. + * @return + */ + public IStorage getScheme() { + return this.scheme; + } + } diff --git a/src/main/java/forge/deck/Deck.java b/src/main/java/forge/deck/Deck.java index 99459f1c37c..92422852d80 100644 --- a/src/main/java/forge/deck/Deck.java +++ b/src/main/java/forge/deck/Deck.java @@ -35,6 +35,7 @@ import com.google.common.base.Function; import forge.deck.io.DeckFileHeader; import forge.deck.io.DeckSerializer; import forge.gui.deckeditor.tables.TableSorter; +import forge.item.CardDb; import forge.item.CardPrinted; import forge.item.ItemPoolView; import forge.game.GameType; @@ -62,6 +63,9 @@ public class Deck extends DeckBase { private final DeckSection main; private final DeckSection sideboard; + private CardPrinted commander; + private final DeckSection planes; + private final DeckSection schemes; // gameType is from Constant.GameType, like GameType.Regular /** @@ -82,6 +86,9 @@ public class Deck extends DeckBase { super(name0); this.main = new DeckSection(); this.sideboard = new DeckSection(); + this.commander = null; + this.planes = new DeckSection(); + this.schemes = new DeckSection(); } /** @@ -197,7 +204,11 @@ public class Deck extends DeckBase { d.getMain().set(Deck.readCardList(sections.get("main"))); d.getSideboard().set(Deck.readCardList(sections.get("sideboard"))); - + List cmd = Deck.readCardList(sections.get("commander")); + String cmdName = cmd.isEmpty() ? null : cmd.get(0); + d.commander = CardDb.instance().isCardSupported(cmdName) ? CardDb.instance().getCard(cmdName) : null; + d.getPlanes().set(Deck.readCardList(sections.get("planes"))); + d.getSchemes().set(Deck.readCardList(sections.get("schemes"))); return d; } @@ -236,16 +247,20 @@ public class Deck extends DeckBase { Collections.sort(main2sort, TableSorter.BY_NAME_THEN_SET); final List out = new ArrayList(); for (final Entry e : main2sort) { - final CardPrinted card = e.getKey(); - final boolean hasBadSetInfo = "???".equals(card.getEdition()) || StringUtils.isBlank(card.getEdition()); - if (hasBadSetInfo) { - out.add(String.format("%d %s", e.getValue(), card.getName())); - } else { - out.add(String.format("%d %s|%s", e.getValue(), card.getName(), card.getEdition())); - } + out.add(serializeSingleCard(e.getKey(), e.getValue())); } return out; } + + private static String serializeSingleCard(CardPrinted card, Integer n) { + + final boolean hasBadSetInfo = "???".equals(card.getEdition()) || StringUtils.isBlank(card.getEdition()); + if (hasBadSetInfo) { + return String.format("%d %s", n, card.getName()); + } else { + return String.format("%d %s|%s", n, card.getName(), card.getEdition()); + } + } /** *

@@ -270,6 +285,17 @@ public class Deck extends DeckBase { out.add(String.format("%s", "[sideboard]")); out.addAll(Deck.writeCardPool(this.getSideboard())); + + if ( getCommander() != null ) { + out.add(String.format("%s", "[commander]")); + out.add(Deck.serializeSingleCard(getCommander(), 1)); + } + + out.add(String.format("%s", "[planes]")); + out.addAll(Deck.writeCardPool(this.getPlanes())); + + out.add(String.format("%s", "[schemes]")); + out.addAll(Deck.writeCardPool(this.getSchemes())); return out; } @@ -326,9 +352,70 @@ public class Deck extends DeckBase { return false; } + if(type == GameType.Commander) + {//Must contain exactly 1 legendary Commander and no sideboard. + //TODO:Enforce color identity + if ( null == getCommander()) + return false; + + if(!getCommander().getCard().getType().isLegendary()) + return false; + + //No sideboarding in Commander + if(!getSideboard().isEmpty()) + return false; + } + else if(type == GameType.Planechase) + {//Must contain at least 10 planes/phenomenons, but max 2 phenomenons. Singleton. + if(getPlanes().countAll() < 10) + return false; + int phenoms = 0; + for(CardPrinted cp : getPlanes().toFlatList()) + { + if(cp.getType().contains("Phenomenon")) + phenoms++; + if(getPlanes().count(cp) > 1) + return false; + } + if(phenoms > 2) + return false; + } + else if(type == GameType.Archenemy) + {//Must contain at least 20 schemes, max 2 of each. + if(getSchemes().countAll() < 20) + return false; + + for(CardPrinted cp : getSchemes().toFlatList()) + { + if(getSchemes().count(cp) > 2) + return false; + } + } + return true; } + /** + * @return the commander + */ + public CardPrinted getCommander() { + return commander; + } + + /** + * @return the planes + */ + public DeckSection getPlanes() { + return planes; + } + + /** + * @return the schemes + */ + public DeckSection getSchemes() { + return schemes; + } + public static final Function FN_NAME_SELECTOR = new Function() { @Override public String apply(Deck arg1) { diff --git a/src/main/java/forge/deck/DeckRecognizer.java b/src/main/java/forge/deck/DeckRecognizer.java index 6b236800db7..29c86a68a5b 100644 --- a/src/main/java/forge/deck/DeckRecognizer.java +++ b/src/main/java/forge/deck/DeckRecognizer.java @@ -245,6 +245,18 @@ public class DeckRecognizer { if (line.toLowerCase().contains("main")) { return true; } + if (line.toLowerCase().contains("commander")) { + return true; + } + if (line.toLowerCase().contains("planes")) { + return true; + } + if (line.toLowerCase().contains("schemes")) { + return true; + } + if (line.toLowerCase().contains("vanguard")) { + return true; + } return false; } diff --git a/src/main/java/forge/deck/generate/GenerateColoredDeckBase.java b/src/main/java/forge/deck/generate/GenerateColoredDeckBase.java index bb450bb3263..fd34e709d75 100644 --- a/src/main/java/forge/deck/generate/GenerateColoredDeckBase.java +++ b/src/main/java/forge/deck/generate/GenerateColoredDeckBase.java @@ -220,7 +220,7 @@ public abstract class GenerateColoredDeckBase { if (!Singletons.getModel().getPreferences().getPrefBoolean(FPref.DECKGEN_ARTIFACTS)) { hasColor = Predicates.or(hasColor, GenerateDeckUtil.COLORLESS_CARDS); } - return Iterables.filter(CardDb.instance().getAllCards(), Predicates.compose(Predicates.and(canPlay, hasColor), CardPrinted.FN_GET_RULES)); + return Iterables.filter(CardDb.instance().getAllTraditionalCards(), Predicates.compose(Predicates.and(canPlay, hasColor), CardPrinted.FN_GET_RULES)); } protected static Map countLands(ItemPool outList) { diff --git a/src/main/java/forge/game/GameNew.java b/src/main/java/forge/game/GameNew.java index b80590fa9c1..05b684573e8 100644 --- a/src/main/java/forge/game/GameNew.java +++ b/src/main/java/forge/game/GameNew.java @@ -20,6 +20,7 @@ import forge.CardPredicates; import forge.CardUtil; import forge.GameAction; import forge.Singletons; +import forge.card.cardfactory.CardFactoryUtil; import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerType; import forge.control.input.InputControl; @@ -33,6 +34,7 @@ import forge.game.player.Player; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; import forge.gui.match.views.VAntes; +import forge.item.CardDb; import forge.item.CardPrinted; import forge.properties.ForgePreferences.FPref; import forge.util.Aggregates; @@ -53,9 +55,9 @@ public class GameNew { for (int i = 0; i < stackOfCards.getValue(); i++) { final Card card = cardPrinted.toForgeCard(player); - + // apply random pictures for cards - if (player.isComputer()) { + if ( player.isComputer() ) { final int cntVariants = cardPrinted.getCard().getEditionInfo(cardPrinted.getEdition()).getCopiesCount(); if (cntVariants > 1) { card.setRandomPicture(generator.nextInt(cntVariants - 1) + 1); @@ -70,43 +72,41 @@ public class GameNew { } if (!useAnte && card.hasKeyword("Remove CARDNAME from your deck before playing if you're not playing for ante.")) { - if (!removedAnteCards.containsKey(player)) { + if(!removedAnteCards.containsKey(player)) removedAnteCards.put(player, new ArrayList()); - } removedAnteCards.get(player).add(card.getName()); } else { library.add(card); } - + // mark card as difficult for AI to play - if (player.isComputer() && card.getSVar("RemAIDeck").equals("True") && !rAICards.contains(card.getName())) { + if ( player.isComputer() && card.getSVar("RemAIDeck").equals("True") && !rAICards.contains(card.getName())) { rAICards.add(card.getName()); // get card picture so that it is in the image cache // ImageCache.getImage(card); } } - } - + } + // Shuffling - // Ai may cheat - if (player.isComputer() && Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_SMOOTH_LAND)) { + // Ai may cheat + if ( player.isComputer() && Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_SMOOTH_LAND) ) { // do this instead of shuffling Computer's deck final Iterable c1 = GameNew.smoothComputerManaCurve(player.getCardsIn(ZoneType.Library)); player.getZone(ZoneType.Library).setCards(c1); - } else { + } else player.shuffle(); - } } - - + + /** * Constructor for new game allowing card lists to be put into play * immediately, and life totals to be adjusted, for computer and human. * - * TODO: Accept something like match state as parameter. Match should be aware of players, - * their decks and other special starting conditions. + * TODO: Accept something like match state as parameter. Match should be aware of players, + * their decks and other special starting conditions. */ - public static void newGame(final Map playersConditions, final GameState game, final boolean canRandomFoil) { + public static void newGame(final Map playersConditions, final GameState game, final boolean canRandomFoil ) { Singletons.getModel().getMatch().getInput().clearInput(); Card.resetUniqueNumber(); @@ -120,15 +120,15 @@ public class GameNew { final Map> removedAnteCards = new HashMap>(); final List rAICards = new ArrayList(); - for (Entry p : playersConditions.entrySet()) { + for( Entry p : playersConditions.entrySet() ) { final Player player = p.getKey(); player.setStartingLife(p.getValue().getStartingLife()); + player.setMaxHandSize(p.getValue().getStartingHand()); // what if I call it for AI player? PlayerZone bf = player.getZone(ZoneType.Battlefield); - Iterable onTable = p.getValue().getCardsOnTable(); + Iterable onTable = p.getValue().getCardsOnBattlefield(); if (onTable != null) { for (final Card c : onTable) { - c.addController(player); c.setOwner(player); bf.add(c, false); c.setSickness(true); @@ -136,23 +136,36 @@ public class GameNew { c.refreshUniqueNumber(); } } - + + PlayerZone com = player.getZone(ZoneType.Command); + Iterable inCommand = p.getValue().getCardsInCommand(); + if (inCommand != null) { + for (final Card c : inCommand) { + c.setOwner(player); + com.add(c, false); + c.refreshUniqueNumber(); + } + } + prepareSingleLibrary(player, p.getValue().getDeck(), removedAnteCards, rAICards, canRandomFoil); player.updateObservers(); bf.updateObservers(); player.getZone(ZoneType.Hand).updateObservers(); + player.getZone(ZoneType.Command).updateObservers(); + player.getZone(ZoneType.Battlefield).updateObservers(); } - - + + + if (rAICards.size() > 0) { String message = buildFourColumnList("AI deck contains the following cards that it can't play or may be buggy:", rAICards); JOptionPane.showMessageDialog(null, message, "", JOptionPane.INFORMATION_MESSAGE); } - + if (!removedAnteCards.isEmpty()) { StringBuilder ante = new StringBuilder("The following ante cards were removed:\n\n"); - for (Entry> ants : removedAnteCards.entrySet()) { - ante.append(buildFourColumnList("From the " + ants.getKey().getName() + "'s deck:", ants.getValue())); + for(Entry> ants : removedAnteCards.entrySet() ) { + ante.append(buildFourColumnList( "From the " + ants.getKey().getName() + "'s deck:", ants.getValue())); } JOptionPane.showMessageDialog(null, ante.toString(), "", JOptionPane.INFORMATION_MESSAGE); } @@ -162,14 +175,14 @@ public class GameNew { public static void restartGame(final GameState game, final Player startingTurn, Map> playerLibraries) { MatchController match = Singletons.getModel().getMatch(); - + Map players = match.getPlayers(); Map playersConditions = new HashMap(); - + for (Player p : game.getPlayers()) { playersConditions.put(p, players.get(p.getLobbyPlayer())); } - + match.getInput().clearInput(); //Card.resetUniqueNumber(); @@ -180,18 +193,18 @@ public class GameNew { trigHandler.clearDelayedTrigger(); trigHandler.cleanUpTemporaryTriggers(); trigHandler.suppressMode(TriggerType.ChangesZone); - + game.getStack().reset(); GameAction action = game.getAction(); + - - for (Entry p : playersConditions.entrySet()) { + for( Entry p : playersConditions.entrySet() ) { final Player player = p.getKey(); player.setStartingLife(p.getValue().getStartingLife()); player.setNumLandsPlayed(0); // what if I call it for AI player? PlayerZone bf = player.getZone(ZoneType.Battlefield); - Iterable onTable = p.getValue().getCardsOnTable(); + Iterable onTable = p.getValue().getCardsOnBattlefield(); if (onTable != null) { for (final Card c : onTable) { c.addController(player); @@ -205,7 +218,7 @@ public class GameNew { PlayerZone library = player.getZone(ZoneType.Library); List newLibrary = playerLibraries.get(player); - for (Card c : newLibrary) { + for(Card c : newLibrary) { action.moveTo(library, c); } @@ -216,7 +229,7 @@ public class GameNew { } trigHandler.clearSuppression(TriggerType.ChangesZone); - + PhaseHandler phaseHandler = game.getPhaseHandler(); phaseHandler.setPlayerTurn(startingTurn); @@ -233,16 +246,17 @@ public class GameNew { */ private static void actuateGame(final GameState game, boolean isRestartedGame) { if (!isRestartedGame) { - // Deciding which cards go to ante + // Deciding which cards go to ante if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_ANTE)) { final String nl = System.getProperty("line.separator"); final StringBuilder msg = new StringBuilder(); for (final Player p : game.getPlayers()) { + final List lib = p.getCardsIn(ZoneType.Library); Predicate goodForAnte = Predicates.not(CardPredicates.Presets.BASIC_LANDS); Card ante = Aggregates.random(Iterables.filter(lib, goodForAnte)); if (ante == null) { - throw new RuntimeException(p + " library is empty."); + throw new RuntimeException(p + " library is empty."); } game.getGameLog().add("Ante", p + " anted " + ante, 0); VAntes.SINGLETON_INSTANCE.addAnteCard(p, ante); @@ -252,7 +266,7 @@ public class GameNew { JOptionPane.showMessageDialog(null, msg, "Ante", JOptionPane.INFORMATION_MESSAGE); } - GameOutcome lastGameOutcome = Singletons.getModel().getMatch().getLastGameOutcome(); + GameOutcome lastGameOutcome = Singletons.getModel().getMatch().getLastGameOutcome(); // Only cut/coin toss if it's the first game of the match if (lastGameOutcome == null) { GameNew.seeWhoPlaysFirstDice(); @@ -263,18 +277,17 @@ public class GameNew { } } - // Draw 7 cards + // Draw cards for (final Player p : game.getPlayers()) { - // Should this be p.getMaxHandSize() for Vanguard compatibility? - p.drawCards(7); + p.drawCards(p.getMaxHandSize()); } - + game.getPhaseHandler().setPhaseState(PhaseType.MULLIGAN); InputControl control = Singletons.getModel().getMatch().getInput(); control.setInput(new InputMulligan()); } // newGame() - - private static String buildFourColumnList(String firstLine, List cAnteRemoved) { + + private static String buildFourColumnList(String firstLine, List cAnteRemoved ) { StringBuilder sb = new StringBuilder(firstLine); sb.append("\n"); for (int i = 0; i < cAnteRemoved.size(); i++) { @@ -353,34 +366,33 @@ public class GameNew { private static void seeWhoPlaysFirstDice() { int playerDie = 0; int computerDie = 0; - + while (playerDie == computerDie) { playerDie = MyRandom.getRandom().nextInt(20); computerDie = MyRandom.getRandom().nextInt(20); } - + // Play the Flip Coin sound Singletons.getModel().getGame().getEvents().post(new FlipCoinEvent()); - + List allPlayers = Singletons.getModel().getGame().getPlayers(); setPlayersFirstTurn(allPlayers.get(MyRandom.getRandom().nextInt(allPlayers.size())), true); } - + private static void setPlayersFirstTurn(Player goesFirst, boolean firstGame) { StringBuilder sb = new StringBuilder(goesFirst.toString()); if (firstGame) { sb.append(" has won the coin toss."); } else { - sb.append(" lost the last game."); + sb.append(" lost the last game."); } - if (goesFirst.isHuman()) { - if (!humanPlayOrDraw(sb.toString())) { + if ( goesFirst.isHuman() ) { + if( !humanPlayOrDraw(sb.toString()) ) goesFirst = goesFirst.getOpponent(); - } } else { sb.append("\nComputer Going First"); - JOptionPane.showMessageDialog(null, sb.toString(), + JOptionPane.showMessageDialog(null, sb.toString(), "Play or Draw?", JOptionPane.INFORMATION_MESSAGE); } Singletons.getModel().getGame().getPhaseHandler().setPlayerTurn(goesFirst); @@ -388,11 +400,11 @@ public class GameNew { private static boolean humanPlayOrDraw(String message) { final String[] possibleValues = { "Play", "Draw" }; - - final Object playDraw = JOptionPane.showOptionDialog(null, message + "\n\nWould you like to play or draw?", - "Play or Draw?", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, + + final Object playDraw = JOptionPane.showOptionDialog(null, message + "\n\nWould you like to play or draw?", + "Play or Draw?", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]); - + return !playDraw.equals(1); } -} +} \ No newline at end of file diff --git a/src/main/java/forge/game/GameState.java b/src/main/java/forge/game/GameState.java index 7b26fe21c4c..c758e17e4c4 100644 --- a/src/main/java/forge/game/GameState.java +++ b/src/main/java/forge/game/GameState.java @@ -434,6 +434,7 @@ public class GameState { all.addAll(player.getZone(ZoneType.Library).getCards()); all.addAll(player.getZone(ZoneType.Battlefield).getCards(false)); all.addAll(player.getZone(ZoneType.Exile).getCards()); + all.addAll(player.getZone(ZoneType.Command).getCards()); } all.addAll(getStackZone().getCards()); return all; diff --git a/src/main/java/forge/game/GameType.java b/src/main/java/forge/game/GameType.java index 202fa4f6427..7454a3a4b4f 100644 --- a/src/main/java/forge/game/GameType.java +++ b/src/main/java/forge/game/GameType.java @@ -32,6 +32,12 @@ public enum GameType { Commander(false, 100, 100, true), /** The Quest. */ Quest(true, 40), + /** The Vanguard. */ + Vanguard(false, 60), + /** The Planechase. */ + Planechase(false, 60), + /** The Archenemy. */ + Archenemy(false, 60), /** */ Gauntlet(true, 40); diff --git a/src/main/java/forge/game/MatchStartHelper.java b/src/main/java/forge/game/MatchStartHelper.java index df075061a3d..df4947ad72a 100644 --- a/src/main/java/forge/game/MatchStartHelper.java +++ b/src/main/java/forge/game/MatchStartHelper.java @@ -1,10 +1,17 @@ package forge.game; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; +import com.google.common.base.Supplier; + +import forge.Card; +import forge.card.CardRules; import forge.deck.Deck; import forge.game.player.LobbyPlayer; +import forge.item.CardPrinted; /** * TODO: Write javadoc for this type. @@ -13,18 +20,39 @@ import forge.game.player.LobbyPlayer; public class MatchStartHelper { private final Map players = new HashMap(); - public void addPlayer(LobbyPlayer player, PlayerStartConditions c) { - players.put(player, c); + public void addPlayer(final LobbyPlayer player, final PlayerStartConditions c) { + players.put(player,c); } - - public void addPlayer(LobbyPlayer player, Deck deck) { - players.put(player, new PlayerStartConditions(deck)); + + public void addPlayer(final LobbyPlayer player, final Deck deck) { + PlayerStartConditions start = new PlayerStartConditions(deck); + players.put(player, start); } + + public void addVanguardPlayer(final LobbyPlayer player, final Deck deck, final CardPrinted avatar) + { + PlayerStartConditions start = new PlayerStartConditions(deck); + + start.setStartingLife(start.getStartingLife() + avatar.getCard().getLife()); + start.setStartingHand(start.getStartingHand() + avatar.getCard().getHand()); + + start.setCardsInCommand(new Supplier>() { - public Map getPlayerMap() { - + @Override + public Iterable get() { + List res = new ArrayList(); + res.add(avatar.toForgeCard()); + return res; + } + + }); + + players.put(player, start); + } + + public Map getPlayerMap() + { return players; } - } diff --git a/src/main/java/forge/game/PlayerStartConditions.java b/src/main/java/forge/game/PlayerStartConditions.java index ba9f330fef1..a7f225dea3e 100644 --- a/src/main/java/forge/game/PlayerStartConditions.java +++ b/src/main/java/forge/game/PlayerStartConditions.java @@ -3,13 +3,17 @@ package forge.game; import com.google.common.base.Supplier; import forge.Card; +import forge.card.CardRules; import forge.deck.Deck; +import forge.item.CardPrinted; public class PlayerStartConditions { private final Deck deck; private int startingLife = 20; - private Supplier> cardsOnTable = null; + private int startingHand = 7; + private Supplier> cardsOnBattlefield = null; + private Supplier> cardsInCommand = null; public PlayerStartConditions(Deck deck0) { deck = deck0; @@ -21,16 +25,44 @@ public class PlayerStartConditions { public final int getStartingLife() { return startingLife; } - public final Iterable getCardsOnTable() { - return cardsOnTable == null ? null : cardsOnTable.get(); + public final Iterable getCardsOnBattlefield() { + return cardsOnBattlefield == null ? null : cardsOnBattlefield.get(); } public final void setStartingLife(int startingLife) { this.startingLife = startingLife; } - public final void setCardsOnTable(Supplier> cardsOnTable) { - this.cardsOnTable = cardsOnTable; + public final void setCardsOnBattlefield(Supplier> cardsOnTable) { + this.cardsOnBattlefield = cardsOnTable; + } + + /** + * @return the startingHand + */ + public int getStartingHand() { + return startingHand; + } + + /** + * @param startingHand0 the startingHand to set + */ + public void setStartingHand(int startingHand0) { + this.startingHand = startingHand0; + } + + /** + * @return the cardsInCommand + */ + public Iterable getCardsInCommand() { + return cardsInCommand == null ? null : cardsInCommand.get(); + } + + /** + * @param cardsInCommand0 the cardsInCommand to set + */ + public void setCardsInCommand(Supplier> cardsInCommand0) { + this.cardsInCommand = cardsInCommand0; } diff --git a/src/main/java/forge/game/phase/CombatUtil.java b/src/main/java/forge/game/phase/CombatUtil.java index 254a772bcba..e1fd2b4507a 100644 --- a/src/main/java/forge/game/phase/CombatUtil.java +++ b/src/main/java/forge/game/phase/CombatUtil.java @@ -960,7 +960,7 @@ public class CombatUtil { } // CantBeActivated static abilities - for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) { + for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { if (stAb.applyAbility("CantAttack", c, defender)) { diff --git a/src/main/java/forge/game/player/ComputerAIGeneral.java b/src/main/java/forge/game/player/ComputerAIGeneral.java index 2f10983be59..a9bcff7234b 100644 --- a/src/main/java/forge/game/player/ComputerAIGeneral.java +++ b/src/main/java/forge/game/player/ComputerAIGeneral.java @@ -139,6 +139,7 @@ public class ComputerAIGeneral implements Computer { all.addAll(player.getCardsIn(ZoneType.Battlefield)); all.addAll(player.getCardsIn(ZoneType.Exile)); all.addAll(player.getCardsIn(ZoneType.Graveyard)); + all.addAll(player.getCardsIn(ZoneType.Command)); if (!player.getCardsIn(ZoneType.Library).isEmpty()) { all.add(player.getCardsIn(ZoneType.Library).get(0)); } diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index a97f5df3f54..e5832e4fbe9 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -679,7 +679,7 @@ public abstract class Player extends GameEntity implements Comparable { } // Prevent Damage static abilities - for (final Card ca : game.getCardsIn(ZoneType.Battlefield)) { + for (final Card ca : game.getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { restDamage = stAb.applyAbility("PreventDamage", source, this, restDamage, isCombat); @@ -1898,7 +1898,7 @@ public abstract class Player extends GameEntity implements Comparable { } // CantBeCast static abilities - for (final Card ca : game.getCardsIn(ZoneType.Battlefield)) { + for (final Card ca : game.getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) { final ArrayList staticAbilities = ca.getStaticAbilities(); for (final StaticAbility stAb : staticAbilities) { if (stAb.applyAbility("CantPlayLand", null, this)) { diff --git a/src/main/java/forge/game/zone/PlayerZoneBattlefield.java b/src/main/java/forge/game/zone/PlayerZoneBattlefield.java index ae86483c86a..3f0ed46b928 100644 --- a/src/main/java/forge/game/zone/PlayerZoneBattlefield.java +++ b/src/main/java/forge/game/zone/PlayerZoneBattlefield.java @@ -84,7 +84,7 @@ public class PlayerZoneBattlefield extends PlayerZone { c.setTapped(true); } else { // ETBTapped static abilities - for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) { + for (final Card ca : Singletons.getModel().getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) { for (final StaticAbility stAb : ca.getStaticAbilities()) { if (stAb.applyAbility("ETBTapped", c)) { // it enters the battlefield this way, and should diff --git a/src/main/java/forge/game/zone/ZoneType.java b/src/main/java/forge/game/zone/ZoneType.java index d074768308a..143690851fc 100644 --- a/src/main/java/forge/game/zone/ZoneType.java +++ b/src/main/java/forge/game/zone/ZoneType.java @@ -34,7 +34,7 @@ public enum ZoneType { /** Ante. */ Ante(false); - public static final List STATIC_ABILITIES_SOURCE_ZONES = Arrays.asList(new ZoneType[]{Battlefield, Graveyard, Exile/*, Hand*/}); + public static final List STATIC_ABILITIES_SOURCE_ZONES = Arrays.asList(new ZoneType[]{Battlefield, Graveyard, Exile, Command/*, Hand*/}); private final boolean holdsHiddenInfo; private ZoneType(boolean holdsHidden) { diff --git a/src/main/java/forge/gui/GuiMigrateLocalMWSSetPicturesHQ.java b/src/main/java/forge/gui/GuiMigrateLocalMWSSetPicturesHQ.java index 03a9ebc0684..150ac42e7c2 100644 --- a/src/main/java/forge/gui/GuiMigrateLocalMWSSetPicturesHQ.java +++ b/src/main/java/forge/gui/GuiMigrateLocalMWSSetPicturesHQ.java @@ -491,7 +491,7 @@ public final class GuiMigrateLocalMWSSetPicturesHQ extends DefaultBoundedRangeMo final String urlBase = "C:\\MTGForge\\HQPICS\\"; String imgFN = ""; - for (final CardPrinted cp : CardDb.instance().getAllCards()) + for (final CardPrinted cp : CardDb.instance().getAllTraditionalCards()) { // String url = c.getSVar("Picture"); // String[] URLs = url.split("\\\\"); diff --git a/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java b/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java index a3249903465..1e2395c4a7c 100644 --- a/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java +++ b/src/main/java/forge/gui/deckeditor/controllers/CEditorConstructed.java @@ -121,7 +121,7 @@ public final class CEditorConstructed extends ACEditorBase { @Override public void resetTables() { // Constructed mode can use all cards, no limitations. - this.getTableCatalog().setDeck(ItemPool.createFrom(CardDb.instance().getAllCards(), CardPrinted.class)); + this.getTableCatalog().setDeck(ItemPool.createFrom(CardDb.instance().getAllTraditionalCards(), CardPrinted.class)); this.getTableDeck().setDeck(this.controller.getModel().getMain()); } diff --git a/src/main/java/forge/gui/download/GuiDownloadSetPicturesLQ.java b/src/main/java/forge/gui/download/GuiDownloadSetPicturesLQ.java index 6c1b14d85d6..46965cc4020 100644 --- a/src/main/java/forge/gui/download/GuiDownloadSetPicturesLQ.java +++ b/src/main/java/forge/gui/download/GuiDownloadSetPicturesLQ.java @@ -22,6 +22,8 @@ import java.util.ArrayList; import org.apache.commons.lang3.StringUtils; +import com.google.common.collect.Iterables; + import forge.CardUtil; import forge.Singletons; import forge.card.CardEdition; @@ -90,7 +92,9 @@ public class GuiDownloadSetPicturesLQ extends GuiDownloader { // read token names and urls final ArrayList cList = new ArrayList(); - for (final CardPrinted c : CardDb.instance().getAllCards()) { + Iterable allPrinted = Iterables.concat(CardDb.instance().getAllTraditionalCards(),CardDb.instance().getAllNonTraditionalCards()); + + for (final CardPrinted c : allPrinted) { final String setCode3 = c.getEdition(); if (StringUtils.isBlank(setCode3) || "???".equals(setCode3)) { continue; // we don't want cards from unknown sets diff --git a/src/main/java/forge/gui/framework/EDocID.java b/src/main/java/forge/gui/framework/EDocID.java index fbecafe3c2c..fe9e7c20851 100644 --- a/src/main/java/forge/gui/framework/EDocID.java +++ b/src/main/java/forge/gui/framework/EDocID.java @@ -15,7 +15,6 @@ import forge.gui.home.gauntlet.VSubmenuGauntletBuild; import forge.gui.home.gauntlet.VSubmenuGauntletContests; import forge.gui.home.gauntlet.VSubmenuGauntletLoad; import forge.gui.home.gauntlet.VSubmenuGauntletQuick; -import forge.gui.home.multiplayer.VSubmenuArchenemy; import forge.gui.home.quest.VSubmenuChallenges; import forge.gui.home.quest.VSubmenuDuels; import forge.gui.home.quest.VSubmenuQuestData; @@ -27,6 +26,8 @@ import forge.gui.home.sanctioned.VSubmenuSealed; import forge.gui.home.settings.VSubmenuAvatars; import forge.gui.home.settings.VSubmenuDownloaders; import forge.gui.home.settings.VSubmenuPreferences; +import forge.gui.home.variant.VSubmenuArchenemy; +import forge.gui.home.variant.VSubmenuVanguard; import forge.gui.match.views.VAntes; import forge.gui.match.views.VCombat; import forge.gui.match.views.VDetail; @@ -74,6 +75,7 @@ public enum EDocID { /** */ HOME_CONSTRUCTED (VSubmenuConstructed.SINGLETON_INSTANCE), /** */ HOME_DRAFT (VSubmenuDraft.SINGLETON_INSTANCE), /** */ HOME_SEALED (VSubmenuSealed.SINGLETON_INSTANCE), /** */ + HOME_VANGUARD (VSubmenuVanguard.SINGLETON_INSTANCE), /** */ REPORT_MESSAGE (VMessage.SINGLETON_INSTANCE), /** */ REPORT_STACK (VStack.SINGLETON_INSTANCE), /** */ @@ -98,7 +100,16 @@ public enum EDocID { /** */ HAND_0 (null), /** */ HAND_1 (null), /** */ HAND_2 (null), /** */ - HAND_3 (null); + HAND_3 (null), /** */ + + COMMAND_0 (null), /** */ + COMMAND_1 (null), /** */ + COMMAND_2 (null), /** */ + COMMAND_3 (null), /** */ + COMMAND_4 (null), /** */ + COMMAND_5 (null), /** */ + COMMAND_6 (null), /** */ + COMMAND_7 (null); /** */ // End enum declarations, start enum methods. private IVDoc vDoc; diff --git a/src/main/java/forge/gui/home/EMenuGroup.java b/src/main/java/forge/gui/home/EMenuGroup.java index d86f494e2a5..b705cb6b935 100644 --- a/src/main/java/forge/gui/home/EMenuGroup.java +++ b/src/main/java/forge/gui/home/EMenuGroup.java @@ -11,7 +11,7 @@ public enum EMenuGroup { /** */ SANCTIONED ("Sanctioned Formats"), /** */ QUEST ("Quest Mode"), /** */ GAUNTLET ("Gauntlets"), /** */ - MULTIPLAYER ("Multiplayer"), /** */ + VARIANT ("Variant"), /** */ SETTINGS ("Game Settings"); private final String strTitle; diff --git a/src/main/java/forge/gui/home/VHomeUI.java b/src/main/java/forge/gui/home/VHomeUI.java index 592e89237ac..f2913f807d4 100644 --- a/src/main/java/forge/gui/home/VHomeUI.java +++ b/src/main/java/forge/gui/home/VHomeUI.java @@ -43,7 +43,6 @@ import forge.gui.home.gauntlet.VSubmenuGauntletBuild; import forge.gui.home.gauntlet.VSubmenuGauntletContests; import forge.gui.home.gauntlet.VSubmenuGauntletLoad; import forge.gui.home.gauntlet.VSubmenuGauntletQuick; -import forge.gui.home.multiplayer.VSubmenuArchenemy; import forge.gui.home.quest.VSubmenuChallenges; import forge.gui.home.quest.VSubmenuDuels; import forge.gui.home.quest.VSubmenuQuestData; @@ -55,6 +54,8 @@ import forge.gui.home.sanctioned.VSubmenuSealed; import forge.gui.home.settings.VSubmenuAvatars; import forge.gui.home.settings.VSubmenuDownloaders; import forge.gui.home.settings.VSubmenuPreferences; +import forge.gui.home.variant.VSubmenuArchenemy; +import forge.gui.home.variant.VSubmenuVanguard; import forge.gui.toolbox.ExperimentalLabel; import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FSkin; @@ -118,6 +119,8 @@ public enum VHomeUI implements IVTopLevelUI { //allSubmenus.add(VSubmenuExit.SINGLETON_INSTANCE); allSubmenus.add(VSubmenuArchenemy.SINGLETON_INSTANCE); + + allSubmenus.add(VSubmenuVanguard.SINGLETON_INSTANCE); // For each group: init its panel final SortedMap allGroupPanels = new TreeMap(); diff --git a/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java b/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java index 78863254074..61aa6f691d7 100644 --- a/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java +++ b/src/main/java/forge/gui/home/quest/SSubmenuQuestUtil.java @@ -321,9 +321,9 @@ public class SSubmenuQuestUtil { humanStart.setStartingLife(qData.getAssets().getLife(qData.getMode()) + extraLifeHuman); aiStart.setStartingLife(lifeAI); - humanStart.setCardsOnTable(new Supplier>() { + humanStart.setCardsOnBattlefield(new Supplier>() { @Override public Iterable get() { return QuestUtil.getHumanStartingCards(qData, event); } }); - aiStart.setCardsOnTable(new Supplier>() { + aiStart.setCardsOnBattlefield(new Supplier>() { @Override public Iterable get() { return QuestUtil.getComputerStartingCards(event); } }); } // End isFantasy diff --git a/src/main/java/forge/gui/home/multiplayer/CSubmenuArchenemy.java b/src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java similarity index 98% rename from src/main/java/forge/gui/home/multiplayer/CSubmenuArchenemy.java rename to src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java index 62f415a81e4..7064fc64fdd 100644 --- a/src/main/java/forge/gui/home/multiplayer/CSubmenuArchenemy.java +++ b/src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java @@ -1,4 +1,4 @@ -package forge.gui.home.multiplayer; +package forge.gui.home.variant; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; diff --git a/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java b/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java new file mode 100644 index 00000000000..4ac46cf4ac6 --- /dev/null +++ b/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java @@ -0,0 +1,200 @@ +package forge.gui.home.variant; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import javax.swing.SwingUtilities; +import javax.swing.SwingWorker; + +import com.google.common.collect.Iterables; + +import forge.Command; +import forge.GameActionUtil; +import forge.Singletons; +import forge.control.Lobby; +import forge.deck.Deck; +import forge.game.GameType; +import forge.game.MatchController; +import forge.game.MatchStartHelper; +import forge.game.PlayerStartConditions; +import forge.game.player.LobbyPlayer; +import forge.game.player.PlayerType; +import forge.gui.SOverlayUtils; +import forge.gui.framework.ICDoc; +import forge.gui.toolbox.FDeckChooser; +import forge.gui.toolbox.FList; +import forge.item.CardPrinted; +import forge.properties.ForgePreferences; +import forge.properties.ForgePreferences.FPref; + +/** + * Controls the constructed submenu in the home UI. + * + *

(C at beginning of class name denotes a control class.) + * + */ +public enum CSubmenuVanguard implements ICDoc { + /** */ + SINGLETON_INSTANCE; + private final VSubmenuVanguard view = VSubmenuVanguard.SINGLETON_INSTANCE; + + + /* (non-Javadoc) + * @see forge.gui.home.ICSubmenu#initialize() + */ + @Override + public void update() { + // Nothing to see here... + } + + /* (non-Javadoc) + * @see forge.gui.home.ICSubmenu#initialize() + */ + @Override + public void initialize() { + final ForgePreferences prefs = Singletons.getModel().getPreferences(); + for(FDeckChooser fdc : view.getDeckChoosers()) + { + fdc.initialize(); + } + + // Checkbox event handling + view.getBtnStart().addActionListener(new ActionListener() { + @Override + public void actionPerformed(final ActionEvent arg0) { + startGame(); + } + }); + + // Checkbox event handling + view.getCbSingletons().addActionListener(new ActionListener() { + @Override + public void actionPerformed(final ActionEvent arg0) { + prefs.setPref(FPref.DECKGEN_SINGLETONS, + String.valueOf(view.getCbSingletons().isSelected())); + prefs.save(); + } + }); + + view.getCbArtifacts().addActionListener(new ActionListener() { + @Override + public void actionPerformed(final ActionEvent arg0) { + prefs.setPref( + FPref.DECKGEN_ARTIFACTS, String.valueOf(view.getCbArtifacts().isSelected())); + prefs.save(); + } + }); + + view.getCbRemoveSmall().addActionListener(new ActionListener() { + @Override + public void actionPerformed(final ActionEvent arg0) { + prefs.setPref( + FPref.DECKGEN_NOSMALL, String.valueOf(view.getCbRemoveSmall().isSelected())); + prefs.save(); + } + }); + + // Pre-select checkboxes + view.getCbSingletons().setSelected(prefs.getPrefBoolean(FPref.DECKGEN_SINGLETONS)); + view.getCbArtifacts().setSelected(prefs.getPrefBoolean(FPref.DECKGEN_ARTIFACTS)); + view.getCbRemoveSmall().setSelected(prefs.getPrefBoolean(FPref.DECKGEN_NOSMALL)); + } + + + + /** @param lists0   {@link java.util.List}<{@link javax.swing.JList}> */ + private void startGame() { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + SOverlayUtils.startGameOverlay(); + SOverlayUtils.showOverlay(); + } + }); + + final SwingWorker worker = new SwingWorker() { + @Override + public Object doInBackground() { + Random rnd = new Random(); + + List playerDecks = new ArrayList(); + for(int i=0;i playerAvatars = new ArrayList(); + for(int i=0;i { */ @Override public EMenuGroup getGroupEnum() { - return EMenuGroup.MULTIPLAYER; + return EMenuGroup.VARIANT; } /* (non-Javadoc) diff --git a/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java b/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java new file mode 100644 index 00000000000..50a4810216f --- /dev/null +++ b/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java @@ -0,0 +1,352 @@ +package forge.gui.home.variant; + +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Vector; + +import javax.swing.AbstractButton; +import javax.swing.ButtonGroup; +import javax.swing.ButtonModel; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JTabbedPane; +import javax.swing.ScrollPaneConstants; +import javax.swing.SwingConstants; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import com.google.common.base.Predicate; +import com.google.common.collect.Iterables; + +import net.miginfocom.swing.MigLayout; +import forge.card.CardCoreType; +import forge.card.CardRules; +import forge.card.CardRulesPredicates; +import forge.game.player.PlayerType; +import forge.gui.framework.DragCell; +import forge.gui.framework.DragTab; +import forge.gui.framework.EDocID; +import forge.gui.home.EMenuGroup; +import forge.gui.home.IVSubmenu; +import forge.gui.home.LblHeader; +import forge.gui.home.StartButton; +import forge.gui.home.VHomeUI; +import forge.gui.toolbox.FCheckBox; +import forge.gui.toolbox.FDeckChooser; +import forge.gui.toolbox.FLabel; +import forge.gui.toolbox.FList; +import forge.gui.toolbox.FPanel; +import forge.gui.toolbox.FRadioButton; +import forge.gui.toolbox.FScrollPane; +import forge.gui.toolbox.FSkin; +import forge.item.CardDb; +import forge.item.CardPrinted; + +/** + * Assembles Swing components of constructed submenu singleton. + * + *

(V at beginning of class name denotes a view class.) + * + */ +public enum VSubmenuVanguard implements IVSubmenu { + /** */ + SINGLETON_INSTANCE; + + // Fields used with interface IVDoc + private DragCell parentCell; + private final DragTab tab = new DragTab("Vanguard Mode"); + + /** */ + private final LblHeader lblTitle = new LblHeader("Variant: Vanguard"); + + private final JPanel pnlStart = new JPanel(new MigLayout("insets 0, gap 0, wrap 2")); + + private final StartButton btnStart = new StartButton(); + + private final JCheckBox cbSingletons = new FCheckBox("Singleton Mode"); + private final JCheckBox cbArtifacts = new FCheckBox("Remove Artifacts"); + private final JCheckBox cbRemoveSmall = new FCheckBox("Remove Small Creatures"); + + private final Iterable allAvatars = Iterables.filter(CardDb.instance().getAllNonTraditionalCards(), CardPrinted.Predicates.type("Vanguard")); + private final List allAiAvatars = new ArrayList(); + + ////////////////////////////// + + private final JTabbedPane tabPane = new JTabbedPane(); + private final List playerPanels = new ArrayList(); + private final List deckChoosers = new ArrayList(); + private final List avatarLists = new ArrayList(); + + private final List fieldRadios = new ArrayList(); + private final ButtonGroup grpFields = new ButtonGroup(); + private int currentNumTabsShown = 8; + + ////////////////////////////// + + private VSubmenuVanguard() { + + lblTitle.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2)); + + Vector humanListData = new Vector(); + Vector aiListData = new Vector(); + humanListData.add("Random"); + aiListData.add("Random"); + for(CardPrinted cp : allAvatars) + { + humanListData.add(cp); + if(!cp.getCard().getRemAIDecks()) + { + aiListData.add(cp); + allAiAvatars.add(cp); + } + } + + //This listener will look for any of the radio buttons being selected + //and call the method that shows/hides tabs appropriately. + ItemListener iListener = new ItemListener() { + + @Override + public void itemStateChanged(ItemEvent arg0) { + FRadioButton aButton = (FRadioButton)arg0.getSource(); + + if(arg0.getStateChange() == ItemEvent.SELECTED) + { + changeTabs(Integer.parseInt(aButton.getText())); + } + } + + }; + + //Create all 8 player settings panel + FRadioButton tempRadio = null; + FPanel tempPanel; + FDeckChooser tempChooser; + FList tempList; + + //Settings panel + FPanel settingsPanel = new FPanel(); + FPanel radioPane = new FPanel(); + radioPane.setLayout(new MigLayout("wrap 1")); + radioPane.setOpaque(false); + for (int i = 1; i < 8; i++) { + tempRadio = new FRadioButton(); + tempRadio.setText(String.valueOf(i)); + fieldRadios.add(tempRadio); + grpFields.add(tempRadio); + tempRadio.setSelected(true); + tempRadio.addItemListener(iListener); + radioPane.add(tempRadio,"wrap"); + } + settingsPanel.add(radioPane); + settingsPanel.add(new FLabel.Builder().text("Set number of opponents").build()); + tabPane.add("Settings",settingsPanel); + + //Player panels (Human + 7 AIs) + for (int i = 0; i < 8;i++) { + tempPanel = new FPanel(); + tempPanel.setLayout(new MigLayout("insets 0, gap 0 , wrap 2")); + + tempChooser = new FDeckChooser("Select deck:", i == 0 ? PlayerType.HUMAN : PlayerType.COMPUTER); + tempChooser.initialize(); + + tempList = new FList(); + + tempList.setListData(i == 0 ? humanListData : aiListData); + tempList.setSelectedIndex(0); + tempList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + + deckChoosers.add(tempChooser); + avatarLists.add(tempList); + + tempPanel.add(tempChooser,"span 1 2, w 44%!, gap 0 0 20px 20px, growy, pushy"); + + tempPanel.add(new FLabel.Builder().text("Select Avatar:").build()); + + JScrollPane scrAvatar = new FScrollPane(tempList, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + tempPanel.add(scrAvatar,"h 90%!"); + + playerPanels.add(tempPanel); + tabPane.add("Player " + (i+1), tempPanel); + } + + final String strCheckboxConstraints = "w 200px!, h 30px!, gap 0 20px 0 0"; + pnlStart.setOpaque(false); + pnlStart.add(cbSingletons, strCheckboxConstraints); + pnlStart.add(btnStart, "span 1 3, growx, pushx, align center"); + pnlStart.add(cbArtifacts, strCheckboxConstraints); + pnlStart.add(cbRemoveSmall, strCheckboxConstraints); + } + + private void changeTabs(int toShow) + { + if(toShow < currentNumTabsShown) + { + for(int i=currentNumTabsShown;i>toShow+1;i--) + { + tabPane.remove(i); + } + currentNumTabsShown = tabPane.getComponentCount()-1; + } + else + { + for(int i=currentNumTabsShown;i<=toShow;i++) + { + tabPane.add("Player " + (i+1),playerPanels.get(i)); + } + currentNumTabsShown = tabPane.getComponentCount()-1; + } + } + + /* (non-Javadoc) + * @see forge.gui.home.IVSubmenu#getGroupEnum() + */ + @Override + public EMenuGroup getGroupEnum() { + return EMenuGroup.VARIANT; + } + + /* (non-Javadoc) + * @see forge.gui.home.IVSubmenu#getMenuTitle() + */ + @Override + public String getMenuTitle() { + return "Vanguard"; + } + + /* (non-Javadoc) + * @see forge.gui.home.IVSubmenu#getItemEnum() + */ + @Override + public EDocID getItemEnum() { + return EDocID.HOME_VANGUARD; + } + + /* (non-Javadoc) + * @see forge.gui.home.IVSubmenu#populate() + */ + @Override + public void populate() { + VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().removeAll(); + VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().setLayout(new MigLayout("insets 0, gap 0, wrap 1, ax right")); + + VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblTitle, "w 80%!, h 40px!, gap 0 0 15px 15px, span 2, ax right"); + + for(FDeckChooser fdc : deckChoosers) + { + fdc.populate(); + } + + VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(tabPane, "gap 0 0 50px 50px, growx, growy"); + + VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnlStart, "span 1, ax center"); + + VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().revalidate(); + VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().repaintSelf(); + + } + + + /** @return {@link javax.swing.JButton} */ + public JButton getBtnStart() { + return this.btnStart; + } + + + /** @return {@link javax.swing.JCheckBox} */ + public JCheckBox getCbSingletons() { + return cbSingletons; + } + + /** @return {@link javax.swing.JCheckBox} */ + public JCheckBox getCbArtifacts() { + return cbArtifacts; + } + + /** @return {@link javax.swing.JCheckBox} */ + public JCheckBox getCbRemoveSmall() { + return cbRemoveSmall; + } + + //========== Overridden from IVDoc + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getDocumentID() + */ + @Override + public EDocID getDocumentID() { + return EDocID.HOME_VANGUARD; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getTabLabel() + */ + @Override + public DragTab getTabLabel() { + return tab; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getLayoutControl() + */ + @Override + public CSubmenuVanguard getLayoutControl() { + return CSubmenuVanguard.SINGLETON_INSTANCE; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#setParentCell(forge.gui.framework.DragCell) + */ + @Override + public void setParentCell(DragCell cell0) { + this.parentCell = cell0; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getParentCell() + */ + @Override + public DragCell getParentCell() { + return parentCell; + } + + /** + * + * @return a deckchooser for every player + */ + public List getDeckChoosers() + { + return deckChoosers; + } + + public List getAvatarLists() + { + return avatarLists; + } + + public int getNumPlayers() + { + return currentNumTabsShown; + } + + /** + * @return the allAvatars + */ + public Iterable getAllAvatars() { + return allAvatars; + } + + /** + * @return the allAiAvatars + */ + public List getAllAiAvatars() { + return allAiAvatars; + } +} diff --git a/src/main/java/forge/gui/match/CMatchUI.java b/src/main/java/forge/gui/match/CMatchUI.java index 347a22ef5b0..57476486767 100644 --- a/src/main/java/forge/gui/match/CMatchUI.java +++ b/src/main/java/forge/gui/match/CMatchUI.java @@ -35,6 +35,7 @@ import forge.gui.match.controllers.CDetail; import forge.gui.match.controllers.CMessage; import forge.gui.match.controllers.CPicture; import forge.gui.match.nonsingleton.CField; +import forge.gui.match.nonsingleton.VCommand; import forge.gui.match.nonsingleton.VField; import forge.gui.match.nonsingleton.VHand; import forge.gui.toolbox.FSkin; @@ -87,12 +88,15 @@ public enum CMatchUI implements CardContainer { // Instantiate all required field slots (user at 0) <-- that's not guaranteed final List fields = new ArrayList(); + final List commands = new ArrayList(); VField humanField = new VField(EDocID.valueOf("FIELD_0"), localPlayer); + VCommand humanCommand = new VCommand(EDocID.COMMAND_0, localPlayer); fields.add(0, humanField); + commands.add(0, humanCommand); setAvatar(humanField, FSkin.getAvatars().get(Integer.parseInt(indices[0]))); humanField.getLayoutControl().initialize(); - + humanCommand.getLayoutControl().initialize(); int i = 1; for (Player p : players) { @@ -103,6 +107,9 @@ public enum CMatchUI implements CardContainer { setAvatar(f, getPlayerAvatar(p, Integer.parseInt(indices[i%2]))); f.getLayoutControl().initialize(); fields.add(f); + VCommand c = new VCommand(EDocID.valueOf("COMMAND_" + i), p); + c.getLayoutControl().initialize(); + commands.add(c); i++; } @@ -121,6 +128,7 @@ public enum CMatchUI implements CardContainer { // } // Replace old instances + VMatchUI.SINGLETON_INSTANCE.setCommandViews(commands); VMatchUI.SINGLETON_INSTANCE.setFieldViews(fields); VMatchUI.SINGLETON_INSTANCE.setHandViews(hands); } diff --git a/src/main/java/forge/gui/match/VMatchUI.java b/src/main/java/forge/gui/match/VMatchUI.java index 62baffb0d3f..0eb183e5f8d 100644 --- a/src/main/java/forge/gui/match/VMatchUI.java +++ b/src/main/java/forge/gui/match/VMatchUI.java @@ -13,6 +13,7 @@ import forge.gui.framework.IVTopLevelUI; import forge.gui.framework.SLayoutIO; import forge.gui.framework.SRearrangingUtil; import forge.gui.framework.VEmptyDoc; +import forge.gui.match.nonsingleton.VCommand; import forge.gui.match.nonsingleton.VField; import forge.gui.match.nonsingleton.VHand; import forge.gui.match.views.VDev; @@ -31,6 +32,7 @@ public enum VMatchUI implements IVTopLevelUI { /** */ SINGLETON_INSTANCE; + private List lstCommands = new ArrayList(); private List lstFields = new ArrayList(); private List lstHands = new ArrayList(); @@ -43,6 +45,12 @@ public enum VMatchUI implements IVTopLevelUI { EDocID.valueOf("FIELD_" + i).setDoc( new VEmptyDoc(EDocID.valueOf("FIELD_" + i))); } + + // Create empty docs for all field slots + for (int i = 0; i < 8; i++) { + EDocID.valueOf("COMMAND_" + i).setDoc( + new VEmptyDoc(EDocID.valueOf("COMMAND_" + i))); + } // Create empty docs for all hand slots for (int i = 0; i < 4; i++) { @@ -95,6 +103,21 @@ public enum VMatchUI implements IVTopLevelUI { lstFields.get(1).getParentCell().addDoc(lstFields.get(i)); } } + + // Add extra players alternatively to existing user/AI field panels. + for (int i = 2; i < lstCommands.size(); i++) { + // If already in layout, no need to add again. + if (lstCommands.get(i).getParentCell() != null) { + continue; + } + + if (i % 2 == 0) { + lstCommands.get(0).getParentCell().addDoc(lstCommands.get(i)); + } + else { + lstCommands.get(1).getParentCell().addDoc(lstCommands.get(i)); + } + } // Add extra hands to existing hand panel. for (int i = 0; i < lstHands.size(); i++) { @@ -156,4 +179,18 @@ public enum VMatchUI implements IVTopLevelUI { public JButton getBtnOK() { return VMessage.SINGLETON_INSTANCE.getBtnOK(); } + + /** + * @return the lstCommands + */ + public List getCommandViews() { + return lstCommands; + } + + /** + * @param lstCommands0 the lstCommands to set + */ + public void setCommandViews(List lstCommands0) { + this.lstCommands = lstCommands0; + } } diff --git a/src/main/java/forge/gui/match/nonsingleton/CCommand.java b/src/main/java/forge/gui/match/nonsingleton/CCommand.java new file mode 100644 index 00000000000..8950652d1f1 --- /dev/null +++ b/src/main/java/forge/gui/match/nonsingleton/CCommand.java @@ -0,0 +1,132 @@ +/* + * 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 . + */ +package forge.gui.match.nonsingleton; + +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionAdapter; +import java.awt.event.MouseMotionListener; +import java.util.Observable; +import java.util.Observer; + +import forge.Card; + +import forge.Command; +import forge.game.player.Player; +import forge.game.zone.PlayerZone; +import forge.game.zone.ZoneType; +import forge.gui.GuiDisplayUtil; +import forge.gui.framework.ICDoc; +import forge.gui.match.CMatchUI; +import forge.gui.match.controllers.CMessage; +/** + * Controls Swing components of a player's field instance. + */ +public class CCommand implements ICDoc { + private final Player player; + private final VCommand view; + private boolean initializedAlready = false; + + private MouseMotionListener mmlCardOver = new MouseMotionAdapter() { @Override + public void mouseMoved(final MouseEvent e) { + cardoverAction(); } }; + + private final MouseListener madCardClick = new MouseAdapter() { @Override + public void mousePressed(final MouseEvent e) { + cardclickAction(e); } }; + + // Card play area, attached to battlefield zone. + private final Observer observerPlay = new Observer() { + @Override + public void update(final Observable a, final Object b) { + final PlayerZone pZone = (PlayerZone) a; + GuiDisplayUtil.setupPlayZone(CCommand.this.view.getTabletop(), pZone.getCards(false)); + } + }; + + /** + * Controls Swing components of a player's field instance. + * + * @param p0   {@link forge.game.player.Player} + * @param v0   {@link forge.gui.match.nonsingleton.VField} + */ + public CCommand(final Player p0, final VCommand v0) { + this.player = p0; + this.view = v0; + } + + @Override + public void initialize() { + if (initializedAlready) { return; } + initializedAlready = true; + + // Observers + CCommand.this.player.getZone(ZoneType.Command).addObserver(observerPlay); + + // Listeners + // Battlefield card clicks + this.view.getTabletop().addMouseListener(madCardClick); + + // Battlefield card mouseover + this.view.getTabletop().addMouseMotionListener(mmlCardOver); + } + + @Override + public void update() { + } + + /** @return {@link forge.game.player.Player} */ + public Player getPlayer() { + return this.player; + } + + /** @return {@link forge.gui.nonsingleton.VField} */ + public VCommand getView() { + return this.view; + } + + /** */ + private void cardoverAction() { + final Card c = CCommand.this.view.getTabletop().getCardFromMouseOverPanel(); + if (c != null) { + CMatchUI.SINGLETON_INSTANCE.setCard(c); + } + } + + /** */ + private void cardclickAction(final MouseEvent e) { + // original version: + // final Card c = t.getDetailController().getCurrentCard(); + // Roujin's bug fix version dated 2-12-2012 + final Card c = CCommand.this.view.getTabletop().getCardFromMouseOverPanel(); + + if (c != null && c.isInZone(ZoneType.Command)) { + //TODO: Cast commander/activate avatar/roll planar dice here. + CMessage.SINGLETON_INSTANCE.getInputControl().getInput().selectCard(c); + } + } + + /* (non-Javadoc) + * @see forge.gui.framework.ICDoc#getCommandOnSelect() + */ + @Override + public Command getCommandOnSelect() { + return null; + } +} // End class CCommand diff --git a/src/main/java/forge/gui/match/nonsingleton/VCommand.java b/src/main/java/forge/gui/match/nonsingleton/VCommand.java new file mode 100644 index 00000000000..1f592651305 --- /dev/null +++ b/src/main/java/forge/gui/match/nonsingleton/VCommand.java @@ -0,0 +1,154 @@ +/* + * 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 . + */ +package forge.gui.match.nonsingleton; + +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.border.MatteBorder; + +import net.miginfocom.swing.MigLayout; +import forge.game.player.Player; +import forge.gui.framework.DragCell; +import forge.gui.framework.DragTab; +import forge.gui.framework.EDocID; +import forge.gui.framework.IVDoc; +import forge.gui.toolbox.FSkin; +import forge.view.arcane.PlayArea; + +/** + * Assembles Swing components of a player field instance. + * + *

(V at beginning of class name denotes a view class.) + */ +public class VCommand implements IVDoc { + // Fields used with interface IVDoc + private final CCommand control; + private DragCell parentCell; + private final EDocID docID; + private final DragTab tab = new DragTab("Command"); + + // Other fields + private Player player = null; + + // Top-level containers + private final JScrollPane scroller = new JScrollPane(); + private final PlayArea tabletop; + + //========= Constructor + /** + * Assembles Swing components of a player field instance. + * + * @param player0   {@link forge.game.player.Player} + * @param id0   {@link forge.gui.framework.EDocID} + */ + public VCommand(final EDocID id0, final Player player0) { + this.docID = id0; + id0.setDoc(this); + + this.player = player0; + if (player0 != null) { tab.setText(player0.getName() + " Command"); } + else { tab.setText("NO PLAYER FOR " + docID.toString()); } + + // TODO player is hard-coded into tabletop...should be dynamic + // (haven't looked into it too deeply). Doublestrike 12-04-12 + tabletop = new PlayArea(scroller, id0 == EDocID.COMMAND_0 ); + + control = new CCommand(player, this); + + tabletop.setBorder(new MatteBorder(0, 1, 0, 0, + FSkin.getColor(FSkin.Colors.CLR_BORDERS))); + tabletop.setOpaque(false); + + scroller.setViewportView(this.tabletop); + scroller.setOpaque(false); + scroller.getViewport().setOpaque(false); + scroller.setBorder(null); + + } + + //========= Overridden methods + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#populate() + */ + @Override + public void populate() { + final JPanel pnl = parentCell.getBody(); + pnl.setLayout(new MigLayout("insets 0, gap 0")); + + pnl.add(scroller, "w 85%!, h 100%!, span 1 2, wrap"); + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getDocumentID() + */ + @Override + public EDocID getDocumentID() { + return docID; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getTabLabel() + */ + @Override + public DragTab getTabLabel() { + return tab; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getLayoutControl() + */ + @Override + public CCommand getLayoutControl() { + return control; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#setParentCell() + */ + @Override + public void setParentCell(final DragCell cell0) { + this.parentCell = cell0; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getParentCell() + */ + @Override + public DragCell getParentCell() { + return this.parentCell; + } + + //========= Retrieval methods + /** + * Gets the player currently associated with this field. + * @return {@link forge.game.player.Player} + */ + public Player getPlayer() { + return this.player; + } + + /** + * Gets the tabletop. + * + * @return PlayArea where cards for this field are in play + */ + public PlayArea getTabletop() { + return this.tabletop; + } +} diff --git a/src/main/java/forge/item/CardDb.java b/src/main/java/forge/item/CardDb.java index 24e5bb5bd42..6d1605dba6f 100644 --- a/src/main/java/forge/item/CardDb.java +++ b/src/main/java/forge/item/CardDb.java @@ -93,7 +93,9 @@ public final class CardDb { // need this to obtain cardReference by name+set+artindex private final Map> allCardsBySet = new Hashtable>(); // this is the same list in flat storage - private final List allCardsFlat = new ArrayList(); + private final List allTraditionalCardsFlat = new ArrayList(); + + private final List allNonTraditionalCardsFlat = new ArrayList(); // Lambda to get rules for selects from list of printed cards /** The Constant fnGetCardPrintedByForgeCard. */ @@ -167,7 +169,11 @@ public final class CardDb { setMap.put(cardName, cardCopies); for (int i = 0; i < count; i++) { lastAdded = CardPrinted.build(card, set, s.getValue().getRarity(), i); - this.allCardsFlat.add(lastAdded); + if(lastAdded.isTraditional()) { + this.allTraditionalCardsFlat.add(lastAdded); + } else { + this.allNonTraditionalCardsFlat.add(lastAdded); + } cardCopies[i] = lastAdded; } @@ -214,6 +220,8 @@ public final class CardDb { * @return true, if is card supported */ public boolean isCardSupported(final String cardName0) { + if ( null == cardName0 ) return false; // obviously + final boolean isFoil = this.isFoil(cardName0); final String cardName = isFoil ? this.removeFoilSuffix(cardName0) : cardName0; final ImmutablePair nameWithSet = CardDb.splitCardName(cardName); @@ -360,8 +368,12 @@ public final class CardDb { * * @return the all cards */ - public Iterable getAllCards() { - return this.allCardsFlat; + public Iterable getAllTraditionalCards() { + return this.allTraditionalCardsFlat; + } + + public Iterable getAllNonTraditionalCards() { + return this.allNonTraditionalCardsFlat; } /** @@ -391,7 +403,7 @@ public final class CardDb { } else { // OK, plain name here final Predicate predicate = CardPrinted.Predicates.name(nameWithSet.left); - final Iterable namedCards = Iterables.filter(this.allCardsFlat, predicate); + final Iterable namedCards = Iterables.filter(this.allTraditionalCardsFlat, predicate); // Find card with maximal set index result = Aggregates.itemWithMax(namedCards, CardPrinted.FN_GET_EDITION_INDEX); if (null == result) { diff --git a/src/main/java/forge/item/CardPrinted.java b/src/main/java/forge/item/CardPrinted.java index 4cf96159e33..e2a01e53070 100644 --- a/src/main/java/forge/item/CardPrinted.java +++ b/src/main/java/forge/item/CardPrinted.java @@ -110,6 +110,10 @@ public final class CardPrinted implements Comparable, InventoryItem public boolean isFoil() { return this.foiled; } + + public boolean isTraditional() { + return !getCard().getType().isVanguard(); + } /** * Gets the card. @@ -318,6 +322,16 @@ public final class CardPrinted implements Comparable, InventoryItem * Number of filters based on CardPrinted values. */ public abstract static class Predicates { + + /** + * Type. + * @param t + * the type to search for + * @return + */ + public static Predicate type(final String t) { + return new PredicateType(t); + } /** * Rarity. @@ -426,6 +440,21 @@ public final class CardPrinted implements Comparable, InventoryItem this.mustContain = shouldContain; } } + + private static class PredicateType implements Predicate { + private final String operand; + + @Override + public boolean apply(final CardPrinted card) { + return card.getType().contains(operand); + } + + + public PredicateType(final String op) { + operand = op; + } + + } private static class PredicateName extends PredicateString { private final String operand; @@ -489,6 +518,10 @@ public final class CardPrinted implements Comparable, InventoryItem /** The Constant exceptLands. */ public static final Predicate EXCEPT_LANDS = Predicates.rarity(false, CardRarity.BasicLand); + + public static final Predicate NONTRADITIONAL = com.google.common.base.Predicates.or(Predicates.type("Vanguard"),Predicates.type("Scheme"),Predicates.type("Plane")); + + public static final Predicate TRADITIONAL = com.google.common.base.Predicates.not(Presets.NONTRADITIONAL); } } } diff --git a/src/main/java/forge/item/OpenablePack.java b/src/main/java/forge/item/OpenablePack.java index e970e38d4d6..c4789a25bc1 100644 --- a/src/main/java/forge/item/OpenablePack.java +++ b/src/main/java/forge/item/OpenablePack.java @@ -175,7 +175,7 @@ public abstract class OpenablePack implements InventoryItemFromSet { Predicate cardsRule = Predicates.and( CardPrinted.Predicates.printedInSets(setCode), Predicates.compose(CardRulesPredicates.Presets.IS_BASIC_LAND, CardPrinted.FN_GET_RULES)); - return Aggregates.random(Iterables.filter(CardDb.instance().getAllCards(), cardsRule), count); + return Aggregates.random(Iterables.filter(CardDb.instance().getAllTraditionalCards(), cardsRule), count); } } diff --git a/src/main/java/forge/properties/ForgePreferences.java b/src/main/java/forge/properties/ForgePreferences.java index 564985d0a46..1f89540f29b 100644 --- a/src/main/java/forge/properties/ForgePreferences.java +++ b/src/main/java/forge/properties/ForgePreferences.java @@ -76,7 +76,7 @@ public class ForgePreferences { SUBMENU_CURRENTMENU (EMenuItem.CONSTRUCTED.toString()), /** */ SUBMENU_SANCTIONED ("false"), /** */ SUBMENU_GAUNTLET ("false"), /** */ - SUBMENU_MULTIPLAYER ("false"), /** */ + SUBMENU_VARIANT ("false"), /** */ SUBMENU_QUEST ("false"), /** */ SUBMENU_SETTINGS ("false"), /** */ SUBMENU_UTILITIES ("false"), /** */ diff --git a/src/main/java/forge/quest/BoosterUtils.java b/src/main/java/forge/quest/BoosterUtils.java index cfd0f87a7df..01877c5f5db 100644 --- a/src/main/java/forge/quest/BoosterUtils.java +++ b/src/main/java/forge/quest/BoosterUtils.java @@ -88,7 +88,7 @@ public final class BoosterUtils { } // This will save CPU time when sets are limited - final List cardpool = Lists.newArrayList(Iterables.filter(CardDb.instance().getAllCards(), filter)); + final List cardpool = Lists.newArrayList(Iterables.filter(CardDb.instance().getAllTraditionalCards(), filter)); final Predicate pCommon = CardPrinted.Predicates.Presets.IS_COMMON; cards.addAll(BoosterUtils.generateDefinetlyColouredCards(cardpool, pCommon, numCommon, colorFilters)); @@ -180,7 +180,7 @@ public final class BoosterUtils { * @return the list */ public static List generateDistinctCards(final Predicate filter, final int cntNeeded) { - return BoosterUtils.generateDistinctCards(CardDb.instance().getAllCards(), filter, cntNeeded); + return BoosterUtils.generateDistinctCards(CardDb.instance().getAllTraditionalCards(), filter, cntNeeded); } /** diff --git a/src/main/java/forge/quest/QuestUtilCards.java b/src/main/java/forge/quest/QuestUtilCards.java index 29088a6ed23..22c8282f0ef 100644 --- a/src/main/java/forge/quest/QuestUtilCards.java +++ b/src/main/java/forge/quest/QuestUtilCards.java @@ -189,7 +189,7 @@ public final class QuestUtilCards { final Predicate myFilter = applyFormatFilter(QuestUtilCards.RARE_PREDICATE); - final CardPrinted card = Aggregates.random(Iterables.filter(CardDb.instance().getAllCards(), myFilter)); + final CardPrinted card = Aggregates.random(Iterables.filter(CardDb.instance().getAllTraditionalCards(), myFilter)); this.addSingleCard(card); return card; } @@ -204,7 +204,7 @@ public final class QuestUtilCards { public List addRandomRare(final int n) { final Predicate myFilter = applyFormatFilter(QuestUtilCards.RARE_PREDICATE); - final List newCards = Aggregates.random(Iterables.filter(CardDb.instance().getAllCards(), myFilter), n); + final List newCards = Aggregates.random(Iterables.filter(CardDb.instance().getAllTraditionalCards(), myFilter), n); this.addAllCards(newCards); return newCards; } @@ -486,9 +486,9 @@ public final class QuestUtilCards { Iterable cardList = null; if (qc.getFormat() == null) { - cardList = CardDb.instance().getAllCards(); } + cardList = CardDb.instance().getAllTraditionalCards(); } else { - cardList = Iterables.filter(CardDb.instance().getAllCards(), qc.getFormat().getFilterPrinted()); + cardList = Iterables.filter(CardDb.instance().getAllTraditionalCards(), qc.getFormat().getFilterPrinted()); } final BoosterGenerator pack = new BoosterGenerator(cardList);