- Cleaned up Divine Reckoning
- Added an optional parameter "ChoiceTitle" to ChooseCard to allow more descriptive title prompts for the choice dialogue box.
Added SVar:Targeting:Dies to relevant creatures.
Added SVar to Clone and Phantasmal Image so AI will not cast these spells when there are no creatures to copy.
Removed Add/Remove 4-of.
Relabeled As Buy/Sell.
Added credits counter.
Added Max Selling Percentage and Price.
Fixed labels and buttons to return to normal for regular deck editor.
- Added to AbilityFactoryEffect: EffectOwner, Duration$UntilHostLeavesPlay, and RememberEffect.
- Added exception to Card.java so that Effect cards can be counted when remembered
- Simplified Tree of Redemption's script logistics
Note: We should probably remove the references to RememberToughness, I didn't get a chance to track those down.
Note: Need a mechanism to choose the card to copy in GameAction.changeZone (actual problem is - the function won't await user's input - it wants to return right then). That would make Clones ETB correctly from any location.
- Added the ability to remember and recall integer values. This is needed for cards like Tree of Redemption where the referenced value might change. It currently only supports RememberToughness, but it can be referenced easily for other values. To recall the value, use SVar:X:Number$RememberedValue.
- DamageAll can now set the damage source with DamageSource param
- EachDamage now handles Remembered defined cards
- DamageAll and EachDamage support StackDescription param now
xCount now supports EquippedCardManaCost.
Added the code block to support "SetAsKicked" to mark nonPermanent kicked spells from the script line. Will start converting soon.
Added Crown of Awe
Added Crown of Fury
Added Crown of Suspicion
Added Crown of Vigor
isValid supports "sharesColorWith Enchanted" where Enchanted is same as the defined type so will find an aura sacrificed as a cost.
Added "CARDNAME can't be equipped." keyword and corrected some "CARDNAME can't be enchanted." implementation. They cards can now be targeted human, although attachment will fail with a relevant log message.
Small change to ChooseNumber to make Min/Max read SVars.
Small change to ChooseNumber to allow different titles for the list block to expand its uses slightly.
Changed title of choice list for Ashling's Prerogative
new prefix for sealed magic product images (to store them in a different folder)
removed CardList.allAll(Array) and matching ctor, added addAll(Iterable<Card>) - in most cases of usage list was converted to array and while added to cardlist it was added to underlying list again.
Predicates for edition's legality in formats moved to CardEdition, so that global references in FormatUtils were eliminated
FileSection now trims its tree keys too, editions are parsed by FileSection class
One can read values from KeyValue lines via FileSection class (it parses by itself and provides a default value for bad parses)
CustomLimited is more related to limited games and its moved to game.limited package
*Added AICheckSVar hints to Obstinate Familiar.
*Added the ability to get at Replaced-variables the same way as triggered-variables.
*Let ReplacementEffects be secondary (same as for triggers).
Easy accessors added FView and FControl to various components throughout UI.
Mishmash of methods in "Display" interface attached as appropriate to singletons.
AllZone updated to remove display and one or two others in favor of singletons, for future deprecation.
Some renaming for consistency.
Skins folder moved out of "images", which will be deprecated soon.
FControl refactored to reuse single instance of each UI state.
FPanels now support background textures and foreground images.
FPanels now have a stretch foreground image option.
FPanels now have optional hover and select behavior.
Slight performance improvement over previous FPanel versions (paintComponent trimmed down).
Made some small fixes to the rebel skin's sprite that might have caused mana symbol problems.
Replaced the low resolution card state icons in the default sprite_icons with higher res ones.
Skin enums sub-categorized to allow clearer access.
Default coordinates added to skin enums, so declaration and positioning happen simultaneously (in one place).
Removed old icons.
*Corrected cards that replace damage dealt with the same damage in a different amount. (Fixes Divine Presence + Sword of X and Y)
Akki Lavarunner // Tok-Tok Volcano Born
Curse of Bloodletting
Divine Presence
Furnace of Rath
Gratuitous Violence
Lashknife Barrier
1) preserve original card picture on battlefield
2) verified basic auras behave as expected when changeing creatures
3) little fix in stack description (was printing "null")
Thread safety issues addressed for all Start buttons.
Further optimizations made to listeners and architecture in constructed, sealed, draft, and quest.
*Added "Moved" as a replacable event. Will look further towards replacing the "exile instead of graveyard" type keywords.
*All this to add to the DKA branch:that horrible horrible card, Grafdigger's Cage.
- All symbols now included in sprite (but not accessible yet)
- Default symbols will load if preferred skin does not have that symbol
- Phase color swatch added (also not accessed yet)
- All skins updated to reflect this
header_text=/*\n * Forge\: Play Magic\: the Gathering.\n * Copyright (C) 2011 Nate\n *\n * This program is free software\: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http\://www.gnu.org/licenses/>.\n */
header_text=/*\n * Forge\: Play Magic\: the Gathering.\n * Copyright (C) 2011 Forge Team\n *\n * This program is free software\: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http\://www.gnu.org/licenses/>.\n */
(Quest icons used created by Teekatas, from his Legendora set http://raindropmemory.deviantart.com)
9951 cards in total.
11019 cards in total.
Several people have noticed a crash report stating that "Buffers have not been created". We hope to have this fixed in the near future. It has been pointed out that:
We have added 98.29% of the cards from the new M13 set to forge. With new cards and reprints we now have 230 out of 234 M13 cards in forge.
"Parts of Swing use EventQueue by themselves, this means your Swing code executes in main thread part executes in EDT and as Swing isn't thread safe this leads to elusive errors like this. One of the reasons of this error is that the frame might not be fully constructed before buffers are created -> race condition between the threads."
A recent contribution to the code base should fix some of the bugs that people noticed with cloning type abilities. At this time there are two remaining issues that we hope will be addressed in the near future.
1. Leave play triggers don't work correct for clones.
2. Copies of cards that setup Zone Change triggers via addComesIntoPlayCommand and addLeavesPlayCommand will not function correctly.
The Forge archive includes a readme.txt file and we ask that you spend a few minutes reading this file as it contains some information that may prove usefull. We do tend to update this file at times and you should quickly read this file and look for new information for each and every new release. Thank you.
--
The work on the new UI is now finished. We should not expect major changes or major additions to the UI. Future betas may include a few minor bug fixes to the UI. And we may also include a few minor tweaks.
Selecting a package of cards in the quest mode card shop will not display the packages in the card picture and card detail panels.
Some people have noticed special quests do not have the start in play cards appearing. And some people have noticed that a match can start without any cards appearing in the players hands or in their libraries. We hope to have this problem fixed at some point in the future.
We are now using a different system for our snapshot and beta releases. Unfortunately, this new system builds a jar file which does not accurately display the SVN revision number.
Forge may not be fully java 7 compatible at this time. We recommend that people downgrade to java 6.
--
The Forge archive includes a readme.txt file and we ask that you spend a few minutes reading this file as it contains some information that may prove useful. We do tend to update this file at times and you should quickly read this file and look for new information for each and every new release. Thank you.
We have changed the archival format used for the Forge distributions from ".zip" to ".tar.bz2". There are utilities for Windows, Mac OS and the various *nix's that can be used to decompress these ".tar.bz2" archives. We recommend that you decompress the Forge archive into a new and unused folder.
Some people use the Windows application 7zip. This utility can be found at http://www.7-zip.org/download.html. Mac users can double click on the archive and the application Archive Utility will launch and extract the archive. Mac users do not need to download a separate utility.
Fixes/Features:
- merged updates from trunk cardsfolder into DKA branch
- Added the player keyword "Play with your hand revealed."
- Converted Volrath's Dungeon to script.
- Fixed Kjeldoran Javelineer.
- Added some NPE checks to activateManaAbility.
- Cleared out the changes.txt file, now ready for new material.
- Fixed errors related to the AI controlling cards like Essence Bottle.
- Remove the string "-r15897" from the title bar but not other SVN rev numbers.
- Fixed Martyr of Sands.
- Little AI tweak in AF Draw.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed cost of Brain Pry.
- Added AI checks so it doesn't pump creatures that will die when targeted.
- Added SVar:Targeting:Dies to relevant creatures.
- Added SVar to Clone and Phantasmal Image so AI will not cast these spells when there are no creatures to copy.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Added a new quest deck by Nordos called Dr Doom 3.
- Updated the deck Ned Flanders 4.
- Fixed the LQ pic URL for Krond the Dawn-Clad.
- merged r15965-r15996 from the Trunk into CloneFix branch
- AI fix for Timely Reinforcements; new SVar AIPlayForSub.
- Fixed AI of Spectral Prison.
- Fix: Dragon Broodmother tokens will now display an image
- Improved AI handling of Goblin Elite Infantry.
- Added Landwalk keywords to NonStackingKWList.txt.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed AI not being able to use Hybrid mana.
- Fixed AI of Hoofprints of the Stag.
- Added AI checks to LoseLife drawbacks.
- Added Landwalk checks to isUsefulPumpKeyword.
- Cleanup in EndOfTurn class.
- AI is now aware of destroy damaged triggers (Stinkweed Imp and friends).
- Fixed Snow mana bug ("Not found: mana shard with profile = 0").
- Experimental fix for XManaCostPaid not being reset properly.
- Added a medium version of the Dream quest deck.
- Added missing spell description to Quest for Pure Flame effect
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed possible ConcurrentModificationException caused by Gift of the Gargantuan.
- Fixed Whimwader.
- Converted Kulrath Knight to script.
- Performance update in canAttackNextTurn.
- Deleted AbilityWork branch folder
- Fixed AI not checking canPlay() restrictions of mana sources.
- merged r15997-16020 from the Trunk into CloneFix branch
- converted Sakashima The Imposter to script
- converted Jwari Shapeshifter to script
- Improved AI for Barl's Cage.
- Fixed sorcery speed AI bug in AF DealDamage.
- Fixed Blaze AI targeting human.
- ChosenX will now also be stored on the card and not only the spellAbility.
- Fixed Tezzeret the Seeker.
- Made "Open Deck" dialog default to res/decks folder.
- Cleanup in CardFactoryCreatures.
- changed targeting for Clone AF
- converted Copy Artifact and Sculpting Steel to scripts
- Converted Vesuvan Doppelganger to script
- merged r16020-r16032 from the Trunk into CloneFix branch
- Fixed an issue with non-copyable abilities. Scripted Vesuva
- Little AI fix in isUsefulCurseKeyword.
- Improved AI choosing lands to play.
- Added the recent commit logs to changes.txt.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed Fanning the Flames and Spell Burst.
- Fixed Quest for Pure Flame trigger's ValidTarget param (thanks Squee for pointing it out)
- CLoneFix branch: fixed some issues with overwriting SVars and cloning clones
- CLoneFix branch: more fixes some issues with overwriting SVars and cloning clones
- CLoneFix branch: changed card template script to omit setInfo
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Simplify dependency management
- Fixed Graveyard Shovel.
- CLoneFix branch: added support for TriggeredCardLKICopy
- CLoneFix branch: merged r16032-r16054 from the Trunk into CloneFix branch
- CLoneFix branch: reverting to Trunk version of Animate AF
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed cards similar to Graveyard Shovel: Graveyard Shovel; Merrow Bonegnawer; Relic of Progenitus and Scrabbling Claws.
- AI fix for Tap abilities that target multiple cards.
- CLoneFix branch: converted Body Double to script
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed AI of Gift of Estates.
- CheckStyle.
- rename Phase.java to PhaseHandler.java (matches other TriggerHandler, etc.) and updated all calling classes. Remade the Phase class as a superclass for Untap, Upkeep, EndOfTurn, EndOfCombat to consolidate some code.
- Modified keyboard shortcuts algorithms to be less complicated to implement.
- Moved keyboard shortcut setting UI into home screen.
- Implemented on-the-fly detach/reattach for modified shortcuts.
- Put shortcuts into a top-level scope, not only for match UI.
- Fixed "scale larger" setting to work on-the-fly (no reset required).
- hook the Dev Mode buttons up to the Skin
- Fixed "inaccurate life total at before mulligan" bug.
- Added game type to counter information in Input area.
- checkstyle
- Optimization: lightweight splash sprite loads before rest of skin (which soon will occur in preload bar).
- Moved the "forge.view.swing" package into "forge.view".
- Removed FSkin access from AllZone, all FSkin access now through Singletons.getView().
- Removed "Random" from the list of themes (it didn't work and there is the button below anyway).
- The AI will now always attack with Erg Raiders.
- Improved pumpAllCanPlayAI (the AI wouldn't cast Trumpet Blast for example).
- Updated some AI SVars.
- Added the precon Slaughterhouse.
- Removed a few unused imports.
- CLoneFix branch: fixed SVar name for Akki Lavarunner
- CLoneFix branch: added a copy method to CardCharacteristics class that makes a deep copy of another instance of CardCharacteristics
- CLoneFix branch: add a flip status to Card class to support proper handling of flipped status for clones and copies.
- CLoneFix branch: change Clone AF stack description method
- CLoneFix branch: marking clones with choices as RemAIDeck:True until logic is added to appropriate AFs
- CLoneFix branch: merged r16054-r16079 from the Trunk into CloneFix branch
- CLoneFix branch: removed RemAIDeck as Choose AF has some basic logic already
- Better AI for fetching cards.
- reintegrating CloneFix branch into Trunk
- add some AI SVars to clones
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- A few aesthetic and organizational updates around the Forge initialization process.
- ControlAllUI renamed to FControl to match project organization.
- Updated a few quest decks.
- Converted Cranial Extraction to script.
- Added AI support to Rebound.
- Fixed Grozoth.
- Added canPlayFromEffectAI entries to AF GainLife and LoseLife.
- Converted Maelstrom Pulse to script.
- Set all TapsForMana triggers that execute a mana ability to static to conform with rule 605.4a.
- Converted Erratic Explosion to script.
- Little fix
- hook the PhaseLabels up to the skin
- fix crash when changing skins from Settings
- fix so that after picking a new skin, you are still on the Settings View instead of on the Constructed View. (Fixes the TODO Doublestrike had in there.)
- changes to fix issues with zcTriggers for transformed cards
- Fixed Smoldering Spires.
- Fixed Cosmic Horror.
- General fix: DealDamage abilities that targeted "target creature or player" can now target planeswalkers as well, either using TgtCP or implicitly added Planeswalker type.
- Solved splash swatch switch snafu.
- Fixed canPay in CostRemoveCounter.
- Added a little check to shouldCastLessThanMax.
- AI improvements in AF Tap.
- Reverted main.properties.
- Fantasy Quest Checkbox can now be unchecked
- Added Dr Doom icon to the quest avatar download list
- fixed issue with Apocalypse Hydra X cost flag
- UnlessCost can parse arbitrary svar names instead of just X.
- Cleaned up Divine Reckoning
- Added an optional parameter "ChoiceTitle" to ChooseCard to allow more descriptive title prompts for the choice dialogue box.
- Quest Tokens that start the game in play now don't flush summoning sickness until their controller's second turn
- Fixed AI for Tribute to the Wild.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Added AI targeting to AF ChangeZoneAll if origin is library to support the ultimate of Jace, the Mind Sculptor.
- Fixed rarity for Helvault
- Added canPlayFromEffectAI to AF Token.
- use FScrollPane instead of JScrollPane in ViewDraft so it uses the colors of the skin.
- CheckStyle.
- Fixed Parallax Dementia. Used Reality Acid tech.
- Fixed Forethought Amulet.
- Fixed Reality Acid.
- Fixed Parallax Dementia.
- Converted Explosive Revelation to script.
- Converted Mind Funeral to script. Thanks Sol.
- Text fix
- Fixed Helm of the Ghastlord.
- Included Infect in evaluateCreature.
- Little fix in the script of Distortion Strike.
- Added a very hard version of the Jabba the Hut deck.
- When using Defined$ TargetedController for SpellAbilities, we should use the Spell Activator, not the Spell's Source Card's Controller.
- fix Crash when Animate Dead is put onto battlefield by things like Show and Tell.
- Added Burnout (Hydroblast and Pyroblast can be scripted this same way)
- Ran Oracle and SetInfo scripts
- Removed the unnecessary code from the matchesValid function.
- Added "HIDDEN" to some unblockable pumps.
- Fixed an IndexOutOfBoundsException in getPumpCreatures.
- Moved draft instructions and licensing information into overlay format.
- Also, a few performance fixes for classes involved.
- Redundant scaleLargerThanOriginal method removed from ImageCache, preferences setting used directly instead.
- First small attempt at "non-sticky" combat panel (needs playtesting).
- Update M13 SetInfo
- Small fix to scripts
- Adding reprint info for M13 and PC2 cards
- M13 branch: Added SetInfo.
- Updating mtgdata.txt
- Merged M13 branch into trunk.
- Added Oracle texts to M13 cards.
- Updated AI in BoosterDraftAI
- add M13 to card template script
- Adding Ultimate flag to new Ajani
- fixed issue with clones of tokens leaving battlefield
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Reverted green/red theme on phase labels.
- Added targeting support to tapAllTrigger AI.
- Little improvement in tapPrefTargeting.
- Fixed types of Sai of the Shinobi.
- fixed issue with TargetedPlayerCtrl in filterListByType
- added Petrification counter.
- Added a fluff piece to the changes.txt file.
- Refactor Booster Deck building to separate class.
- SVar for creatures that are sacrificed at end of combat.
- Fixed multiple instances of Exalted on a single card not working.
- Cleanup in CombatUtil.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Started to add some content to chooseCardCanPlayAI.
- added support for copied Auras.
- cleaned up used imports in Clone AF
- added support for Equip as a keyword.
- Rescripted Elderscale Wurm
- fixed "intervening if" clause in Elderscale Wurm ETB trigger.
- Some fixes for AI Booster Deck
- Small fixes for Elderscale Wurm
- Removed keyword "Damage that would reduce your life total to less than 7 reduces it to 7 instead."
- Added References parameter to Draco
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Quick fix for Aegis Angel AI.
- Added "SVar:RemAIDeck:True" to the Deceivers.
- Added the recent commit logs to changes.txt.
- convert A-F equipment to new Equip keyword
- convert U-W equipment to new Equip keyword
- Accorder's Shield fix
- Fix: Changed some AttachedBy restrictions on equipment to EquippedBy
- convert T equipment to new Equip keyword
- convert G-M equipment to new Equip keyword. added check to attach ability macro to prevent Equip if artifact is creature.
- convert S equipment to new Equip keyword
- Fixed equip cost for Sickleslicer
- Converted Sigil of Distinction to Equip macro
- Fixed AI for Torture.
- Converted Umbral Mantle and Unscythe, Killer of Kings to Equip macro
- convert Q equipment to new Equip keyword (converted Quietus Spike to script)
- convert R equipment to new Equip keyword
- Missed a few eqPumps and forgot to take some out
- Added the deck Robin 3.
- convert remaining equipment to new Equip keyword
- Small fix for Ancient Ooze and made it so that AI won't cast it until it would have at least 4 P/T
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- small fix to changes.txt
- Checkstyle
- Checkstyle
- Fix: Coat of Arms should now filter creature types properly
- Fixed AI of Blessings of Nature.
- Added RememberedOpponent to defined players
- Fixed ActivatingPlayer overwriting the target/defined chooser for ChoosePlayer
- Improved AI of Chronomaton and Energizer.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Added CARDNAME can't attack or block alone keyword.
- add is IsCurse to Xathrid Gorgon first ability
- The AI will now react better when faced with creatures with "CARDNAME can't attack or block alone.".
- Fixed handlePaid not using xMath on a null list.
- Fixed NumLandsPlayed not being reset in Cleanup.
- Fixed name of Sands of Delirium.
- Added some null checks to TableSorter.
- Updated some SVars.
- Codebase organization:
1) Moved MatchState from forge package into model package, renamed to FMatchState.
2) Documented the difference between FMatchState and FGameState.
- Added Trepanation Blade (and supporting RememberRevealed code to AbilityFactoryReveal)
- Fixed possible NPE in AbilityFactory.getDefinedSpellAbilities()
- Cleanup in CardFactorySorceries.java
- Fixed Illumination.
- Updated some SVars.
- Fixed Gravity Well.
- CheckStyle.
- Fixed Soul Seizer // Ghastly Haunting script.
- Fixed Curse of Thirst and Curse of the Pierced Heart after EnchantedPlayer removed from Valid.
- merged updates (r13217-r13308) from trunk cardsfolder into DKA branch.
- Converted to script: Ceta Sanctuary and Dega Sanctuary
- Ran SetInfo and Oracle scripts
- Small fix
- Fixed summoning sickness not being cleared on the first turn of the player going second.
- Added the recent commit logs to changes.txt. Preparing for the beta build and release.
- Fixed possible NPE in combatTriggerWillTrigger.
- Added oracle and set info to Venser's Diffusion
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Added suspended restriction in isValid
- Added optional param ValidZone to PutCountersAll and RemoveCountersAll
- Cleaned up suspended restriction
- Fixed Basilisk Collar.
- Fixed clearAssignedDamage not being called during both players turns.
- Fixed CopyPermanent AI not checking for targetability.
- Fixed another bug with Snow mana used by the AI.
- Added a fluff piece to the changes.txt file.
- Remove the string "-r16084" from the title bar but not other SVN rev numbers.
- Preparing the changes.txt file for the next beta build and release.
Added pre-release cards to DKA cardfolder branch:
Afflicted Deserter // Werewolf Ransacker
Beguiler of Wills
Chalice of Life // Chalice of Death
Chant of the Skifsang
Curse of Bloodletting
Curse of Thirst
Drogskol Reaver
Faithless Looting
Falkenrath Aristocrat
Falkenrath Torturer
Flayer of the Hatebound
Gather the Townsfolk
Ghoultree
Gravecrawler
Havengul Runebinder
Headless Skaab
Helvault
Hunger of the Howlpack
Huntmaster of the Fells // Ravager of the Fells
Increasing Confusion
Increasing Devotion
Jar of Eyeballs
Lambholt Elder // Silverpelt Werewolf
Lingering Souls
Loyal Cathar // Unhallowed Cathar
Markov Blademaster
Mikaeus, the Unhallowed
Mondronen Shaman // Tovolar's Magehunter
Moonveil Dragon
Nearheath Stalker
Predator Ooze
Ravenous Demon // Archdemon of Greed
Scorned Villager // Moonscarred Werewolf
Secrets of the Dead
Sorin, Lord of Innistrad
Soul Seizer // Ghastly Haunting
Strangleroot Geist
Stromkirk Captain
Thalia, Guardian of Thraben
Thought Scour
Thraben Doomsayer
Tragic Slip
Vault of the Archangel
Vorapede
Warden of the Wall
Zombie Apocalypse
Many people helped with this version. A special thank you goes out to them. (Attempted to list names alphabetically):
@@ -6,17 +6,25 @@ Once the Forge archive has been decompressed you should then be able to launch F
After downloading and installing a newer version of Forge you may want to move certain files from the older version over to the newer version of Forge. You should maintain your older version of Forge as a back up in case you make a mistake while installing the newer version.
1) The /res/pics/ folder contains the card pictures, token pictures (mtg card tokens an quest pet/plant tokens) and the booster package images. Please note that the /res/pics/icons/ folder was moved out of this folder and placed in the /res/images/ folder.
1) The /res/pics/ folder contains the card pictures, icons and token pictures (mtg card tokens and quest pet/plant tokens). Please note that the /res/images/icons/ folder was moved back to the /res/pics/ folder. The forge /res/images/ folder no longer is used as of version 1.2.8.
The /res/images/icons/ folder contains the quest opponent icons, small quest pet/plant icons (non-tokens) and some icons that are used by forge's quest mode. While several of these pictures ship with the forge archive most of them have to be downloaded using the Home screen -> Utilities -> Download Quest Images command.
The /res/pics/icons/ folder contains the quest opponent icons, small quest pet/plant icons (non-tokens) and some icons that are used by forge's quest mode. While several of these pictures ship with the forge archive most of them have to be downloaded using the Home screen -> Utilities -> Download Quest Images command.
2) The /res/decks/ folder contains your deck files. You should copy over the files with the extension ".dck".
2) The /res/pics_product/ folder contains four folders which in turn contain pictures for the booster, fatpacks, precons and tournamentpacks products.
3) The /res/draft/ and the /res/sealed/ folders contains files for the sealed and draft mode. You should copy over your files inside of these folders that end in the extension ".draft" or ".zsealed".
3) The /res/decks/ folder contains your deck files. You should copy over the files with the extension ".dck". In version 1.2.4 and later the /decks/ folder contains 4 subdirectories named constructed, cube, draft and sealed.
4) The /res/quest/ folder contains your questData file. This file includes all of the information for your current quest. You will not be able to continue your quest in a newer version of Forge unless you copy over the file named "questData.dat".
You can place your deck files from an earlier version of Forge into the /res/decks/ folder. When you next launch Forge these decks will be converted to a newer format and will be moved into the proper subdirectory.
5) The Forge root folder contains a preference file named "forge.preferences" and you should also move a copy of this file over to the newer version.
4) The /res/draft/ and the /res/sealed/ folders contains files for the sealed and draft mode. You should copy over your files inside of these folders that end in the extension ".draft" or ".zsealed".
5) The /res/quest/data folder contains your questData files. These files include all of the information for your current quests. You will not be able to continue your quests in a newer version of Forge unless you copy over the your quest data files. These files have a ".dat" extension. You can now have multiple ongoing quests at the same time.
6) The Forge /res/preferences/ folder contains the preference files named "forge.preferences" and "editor.preferences". You should also move a copy of these files over to the newer version. The /res/preferences/ folder was added to version 1.2.8. The main.properties file was also moved to the /res/preferences/ folder.
7) The /res/layouts/ folder contains a file named "match_preferred.xml". This file contains information that forge uses when setting the layout for the battlefield display. The match_default.xml file contains the default layout for the battlefield.
The editor_preferred.xml file contains information that forge uses when setting the layout for the deck editor display. The editor_default.xml file contains the default layout for the deck editor display.
Advanced Updating to a newer version Instructions:
@@ -51,6 +59,8 @@ The quest pets archive contains two subdirectories named "icons" and "tokens". P
Your forge game may not come with one or more of these three folders as part of the forge archive. In this case you should use your computer's OS file system to create the proper folders with the correct names and they must be located inside of the /res/pics/ folder.
The in-game downloaders will grab an image for face-down (Morph) cards on the battlefield. To use a custom image, place a "morph.jpg" file in your res/pics/tokens directory.
Launching Forge and Memory Issues:
@@ -67,6 +77,34 @@ If you have a low end machine you may find that the scripts above will prevent j
In this case you can try the following. Remove the background jpg picture from /res/images/ui/ folder. You can try using low quality pictures rather than the high quality pictures. Or you can try removing all of the jpg pictures from the pics folder.
Forge failed to launch:
If you're trying to run Forge for the first time, but it doesn't open up, you can try the following to get some output and help yourself/us solve the problem.
1) Open up a terminal
- Under Windows, press Windows+R, type "cmd", hit enter
- Under Linux, you probably know that yourself. Use your distribution's application menu, and search for "terminal" in a group like "utilities".
- Launch the program named "Console.app" which can be found in your /Applications/Utilities/ folder. Highlight the "All Messages" option and click on the "Clear Display" button before launching Forge.
2) Go to the folder where you unpacked Forge
- Windows: Let's say your forge is in D:\Programs\Forge.
- Type "D:", Enter to change to the D: drive.
- Type "cd \Programs\Forge", Enter to change to the directory.
- NOTE: On nonenglish systems, you might have problems due to the poor localization of Windows. Go to the innermost directory you find (worst case is "\"), then "dir", Enter to show all folders in that folder. Search for the one you're probably wanting. For Example the German "Programme" could really be "Program Files" or something like that.
- NOTE: You might have to "quote" directory names with Spaces in them
- Linux: Let's say your forge is in /home/user/Forge
- Type "cd /home/user/Forge", Enter
- NOTE: You might have to "quote" or 'quote' directory names with Spaces in them
- Current versions of Forge no longer include a launcher script for Mac OS, proceed to step three.
3) Run Forge
- On Windows, just type "forge.exe", Enter
- On Linux, just type "forge.sh", Enter
- Launch the Forge application bundle by double clicking on the program named "Forge.app".
Now you will probably see some sort of Error in the console. the first few lines contain a message that might help you. If you can't fix the problem yourself, please take the complete output and report your problem on the Forum.
The Card Pictures disappear when you restart Forge:
if you're running Windows 7, make sure you're running the program as an admin, otherwise no changes will be made to your system (nothing is saved). In Windows 7, Forge may be happier when run from somewhere in the My Documents structure, (they call them Libraries now???) or from another partition other than C:. The user has little permission to do much on the system drive.
print("This script requires the text version of Arch's mtg-data to be present.You can download it from slightlymagic.net's forum and either place the text version next to this script or edit this script and provide the path to the file at the top.")
print("Press Enter to exit")
raw_input("")
sys.exit()
print("This script requires the text version of Arch's mtg-data to be present.You can download it from slightlymagic.net's forum and either place the text version next to this script or edit this script and provide the path to the file at the top.")
print("This script requires the text version of Arch's mtg-data to be present.You can download it from slightlymagic.net's forum and either place the text version next to this script or edit this script and provide the path to the file at the top.")
@@ -214,8 +217,6 @@ while line:
# store Card object in hash table
mtgDataCards[cardName]=card
print'WARNING: Card template contains bogus SetInfo for testing only!!!'
print' Please remove the SetInfo before committing to repository\n'
A:SP$ Discard | Cost$ X 1 B Discard<X/Card/card> | ValidTgts$ Opponent | Mode$ RevealYouChoose | NumCards$ X | SpellDescription$ Look at target opponent's hand and choose X cards from it. That player discards those cards.
A:SP$ Discard | Cost$ X 1 B Discard<X/Card/card> | ValidTgts$ Opponent | Mode$ RevealYouChoose | NumCards$ X | References$ X | SpellDescription$ Look at target opponent's hand and choose X cards from it. That player discards those cards.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.DamagedBy | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever a creature dealt damage by CARDNAME this turn dies, you gain life equal to that creature's toughness.
SVar:TrigGainLife:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X
SVar:TrigGainLife:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X | References$ X
T:Mode$ Blocks | ValidCard$ Card.Self | ValidBlocked$ Creature.Green,Creature.White | DelayedTrigger$ DelTrigBlocked | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a green or white creature, destroy that creature at end of combat.
T:Mode$ Blocks | ValidCard$ Creature.Green,Creature.White | ValidBlocked$ Card.Self | DelayedTrigger$ DelTrigBlocker | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a green or white creature, destroy that creature at end of combat.
SVar:DelTrigBlocked:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Each | Execute$ TrigDestroyBlocked | TriggerDescription$ Destroy blocked creature at end of combat.
SVar:DelTrigBlocker:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Each | Execute$ TrigDestroyBlocker | TriggerDescription$ Destroy blocking creature at end of combat.
SVar:DelTrigBlocked:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigDestroyBlocked | TriggerDescription$ Destroy blocked creature at end of combat.
SVar:DelTrigBlocker:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigDestroyBlocker | TriggerDescription$ Destroy blocking creature at end of combat.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When CARDNAME dies, destroy all creatures blocking or blocked by it. They can't be regenerated.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, destroy all creatures blocking or blocked by it. They can't be regenerated.
R:Event$ Draw | ValidPlayer$ You | ReplaceWith$ AbundantChoice | Optional$ True | Description$ If you would draw a card, you may instead choose land or nonland and reveal cards from the top of your library until you reveal a card of the chosen kind. Put that card into your hand and put all other cards revealed this way on the bottom of your library in any order.
Oracle:If you would draw a card, you may instead choose land or nonland and reveal cards from the top of your library until you reveal a card of the chosen kind. Put that card into your hand and put all other cards revealed this way on the bottom of your library in any order.
A:SP$ Attach | Cost$ G | ValidTgts$ Land | AILogic$ Pump
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ FreeCard | TriggerDescription$ When CARDNAME enters the battlefield, draw a card.
SVar:FreeCard:DB$Draw | Cost$ 0 | Defined$ You | NumCards$ 1
S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddAbility$ AbundantGrowthTap | Description$ Enchanted land has "T: Add one mana of any color to your mana pool."
SVar:AbundantGrowthTap:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color to your mana pool.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, each player sacrifices a creature.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSac | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, each player sacrifices a creature.
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | SacValid$ Creature | Defined$ Each
A:AB$ DealDamage | Cost$ B T | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | SubAbility$ DBTap | SpellDescription$ Tap target creature. CARDNAME deals damage equal to CARDNAME's power to that creature.
A:AB$ DealDamage | Cost$ B T | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | SubAbility$ DBTap | References$ X | SpellDescription$ Tap target creature. CARDNAME deals damage equal to CARDNAME's power to that creature.
Text:When Academy Rector is put into a graveyard from the battlefield, you may exile it. If you do, search your library for an enchantment card and put that card onto the battlefield. Then shuffle your library.
Text:no text
PT:1/2
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigExile | OptionalDecider$ TriggeredCardController | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, you may exile it. If you do, search your library for an enchantment card and put that card onto the battlefield. Then shuffle your library.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, you may put an Aura card from your hand onto the battlefield attached to Academy Researchers.
A:SP$ Pump | Cost$ 3 G G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +X | NumDef$ +X | SpellDescription$ Target creature gets +X/+X until end of turn, where X is the highest converted mana cost among permanents you control.
A:SP$ Pump | Cost$ 3 G G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +X | NumDef$ +X | References$ X | SpellDescription$ Target creature gets +X/+X until end of turn, where X is the highest converted mana cost among permanents you control.
A:SP$ Draw | Cost$ 1 U | Defined$ You | NumCards$ 1 | SubAbility$ DBDraw | SpellDescription$ Draw a card, then draw cards equal to the number of cards named CARDNAME in all graveyards.
SVar:DBDraw:DB$Draw | Defined$ You | NumCards$ X
SVar:DBDraw:DB$Draw | Defined$ You | NumCards$ X | References$ X
Oracle:{4}, {T}: Whenever target creature deals combat damage to a non-Wall creature this turn, destroy that non-Wall creature. When the targeted creature leaves the battlefield this turn, sacrifice Acidic Dagger. Activate this ability only before blockers are declared.
Oracle:Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.)\nWhen Acidic Slime enters the battlefield, destroy target artifact, enchantment, or land.
A:SP$ DealDamage | Cost$ 2 R | Defined$ You | NumDmg$ X | SubAbility$ DBDamageOpp | SpellDescription$ CARDNAME deals damage to each player equal to the number of lands he or she controls.
SVar:DBDamageOpp:DB$DealDamage | Defined$ Opponent | NumDmg$ Y
A:SP$ DealDamage | Cost$ 2 R | Defined$ You | NumDmg$ X | SubAbility$ DBDamageOpp | References$ X | SpellDescription$ CARDNAME deals damage to each player equal to the number of lands he or she controls.
SVar:DBDamageOpp:DB$DealDamage | Defined$ Opponent | NumDmg$ Y | References$ Y
A:AB$ DealDamage | Cost$ 1 T | NumDmg$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | SubAbility$ SquirrelTokenCtrl | SpellDescription$ CARDNAME deals 1 damage to target creature or player. That creature's controller or that player puts a 1/1 green Squirrel creature token onto the battlefield.
Oracle:{1}, {T}: Acorn Catapult deals 1 damage to target creature or player. That creature's controller or that player puts a 1/1 green Squirrel creature token onto the battlefield.
A:SP$ Repeat | Cost$ 3 B B | RepeatSubAbility$ DBDig | RepeatOptional$ True | StackDescription$ Reveal the top card of your library and put that card into your hand. You lose life equal to its converted mana cost. You may repeat this process any number of times. | SpellDescription$ Reveal the top card of your library and put that card into your hand. You lose life equal to its converted mana cost. You may repeat this process any number of times.
Oracle:Reveal the top card of your library and put that card into your hand. You lose life equal to its converted mana cost. You may repeat this process any number of times.
A:AB$ Effect | Cost$ T | Name$ Adarkar Valkyrie Effect | ValidTgts$ Creature.Other | TgtPrompt$ Select target creature other than Adarkar Valkyrie | Triggers$ TrigChangesZone | SVars$ TrigChangeZone | References$ TrigChangesZone,TrigChangeZone | RememberObjects$ Targeted | SpellDescription$ When target creature other than CARDNAME dies this turn, return that card to the battlefield under your control.
SVar:TrigChangesZone:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.IsRemembered | Execute$ TrigChangeZone | TriggerDescription$ If the targeted creature of Adarkar Valkyrie dies this turn, return it to the battlefield and you gain control of it.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ Landfall - Whenever a land enters the battlefield under your control, you may exile target nonland permanent other than CARDNAME.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerDescription$ When CARDNAME leaves the battlefield, return all cards exiled with it to the battlefield under their owners' control.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, return all cards exiled with it to the battlefield under their owners' control.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Landfall - Whenever a land enters the battlefield under your control, equipped creature gets +2/+2 until end of turn.
A:SP$ Dig | Cost$ 2/U 2/U 2/U | DigNum$ 4 | ChangeNum$ 1 | SubAbility$ Dig2 | ConditionCheckSVar$ X | ConditionSVarCompare$ LEY | References$ X,Y | SpellDescription$ Look at the top five cards of your library. If you control more creatures than each other player, put two of those cards into your hand. Otherwise, put one of them into your hand. Then put the rest on the bottom of your library in any order.
Oracle:({2/U} can be paid with any two mana or with {U}. This card's converted mana cost is 6.)\nLook at the top five cards of your library. If you control more creatures than each other player, put two of those cards into your hand. Otherwise, put one of them into your hand. Then put the rest on the bottom of your library in any order.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, another target permanent is indestructible for as long as you control CARDNAME. (Effects that say "destroy" don't destroy that permanent. An indestructible creature can't be destroyed by damage.)
Oracle:Flying\nWhen Aegis Angel enters the battlefield, another target permanent is indestructible for as long as you control Aegis Angel. (Effects that say "destroy" don't destroy that permanent. An indestructible creature can't be destroyed by damage.)
A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.withFlying | TgtPrompt$ Select target creature with flying | NumDmg$ X | SpellDescription$ CARDNAME deals damage equal to its power to target creature with flying.
A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.withFlying | TgtPrompt$ Select target creature with flying | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to target creature with flying.
T:Mode$ SpellCast | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ Whenever a player casts a creature spell, that player sacrifices a permanent unless he or she pays 1.
A:SP$ ChangeZone | Cost$ 1 U | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ X | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return up to X target creatures to their owners' hands, where X is one plus the number of cards named CARDNAME in all graveyards as you cast CARDNAME.
A:SP$ ChangeZone | Cost$ 1 U | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ X | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand | References$ X | SpellDescription$ Return up to X target creatures to their owners' hands, where X is one plus the number of cards named CARDNAME in all graveyards as you cast CARDNAME.
T:Mode$ Blocks | ValidCard$ Card.Self | ValidBlocked$ Creature | DelayedTrigger$ DelayedTrig | TriggerDescription$ Whenever CARDNAME blocks a creature, return that creature to its owner's hand at end of combat.
SVar:DelayedTrig:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Each | Execute$ TrigBounce | TriggerDescription$ Return blocked creature to its owner's hand at end of combat.
SVar:DelayedTrig:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigBounce | TriggerDescription$ Return blocked creature to its owner's hand at end of combat.
A:SP$ ChangeZone | Cost$ 3 G U | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand | SubAbility$ TrigToken | SpellDescription$ Return target creature to its owner's hand. Put X 1/1 green Saproling creature tokens onto the battlefield, where X is that creature's converted mana cost.
#X will be the Converted Mana Cost of the target of AEther Mutation
SVar:TrigToken:DB$Token | Cost$ 0 | TokenAmount$ X | TokenName$ Saproling | TokenTypes$ Creature,Saproling | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1
SVar:TrigToken:DB$Token | Cost$ 0 | TokenAmount$ X | TokenName$ Saproling | TokenTypes$ Creature,Saproling | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 | References$ X
A:AB$ ChangeZone | Cost$ T | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature.cmcEQX+YouCtrl | ChangeNum$ 1 | OptionalDecider$ You | SpellDescription$ You may put a creature card with converted mana cost equal to the number of charge counters on CARDNAME from your hand onto the battlefield.
A:AB$ ChangeZone | Cost$ T | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature.cmcEQX+YouCtrl | ChangeNum$ 1 | OptionalDecider$ You | References$ X | SpellDescription$ You may put a creature card with converted mana cost equal to the number of charge counters on CARDNAME from your hand onto the battlefield.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, you may put a charge counter on CARDNAME.
Oracle:When AEthersnipe enters the battlefield, return target nonland permanent to its owner's hand.\nEvoke {1}{U}{U} (You may cast this spell for its evoke cost. If you do, it's sacrificed when it enters the battlefield.)
T:Mode$Phase | Phase$ Upkeep | WerewolfTransformCondition$ True | TriggerZones$ Battlefield | Execute$ TrigTransform | TriggerDescription$ At the beginning of each upkeep, if no spells were cast last turn, transform CARDNAME.
Oracle:At the beginning of each upkeep, if no spells were cast last turn, transform Afflicted Deserter.
ALTERNATE
Name:Werewolf Ransacker
ManaCost:no cost
Colors:red
Types:Creature Werewolf
Text:no text
PT:5/4
T:Mode$ Transformed | ValidCard$ Card.Self | Execute$ TrigDestroy | OptionalDecider$ You | TriggerDescription$ Whenever this creature transforms into CARDNAME, you may destroy target artifact. If that artifact is put into a graveyard this way, CARDNAME deals 3 damage to that artifact's controller
T:Mode$Phase | Phase$ Upkeep | WerewolfUntransformCondition$ True | TriggerZones$ Battlefield | Execute$ TrigTransform | TriggerDescription$ At the beginning of each upkeep, if a player cast two or more spells last turn, transform CARDNAME.
Oracle:Whenever this creature transforms into Werewolf Ransacker, you may destroy target artifact. If that artifact is put into a graveyard this way, Werewolf Ransacker deals 3 damage to that artifact's controller.\nAt the beginning of each upkeep, if a player cast two or more spells last turn, transform Werewolf Ransacker.
A:AB$ ChangeZone | Cost$ T | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | TgtPrompt$ Choose target creature card in your opponent's graveyard | ValidTgts$ Creature.YouDontCtrl+cmcLEX | ChangeNum$ 1 | SpellDescription$ Put target creature card from an opponent's graveyard onto the battlefield under your control if its converted mana cost is less than or equal to the number of Allies you control.
A:AB$ ChangeZone | Cost$ T | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | TgtPrompt$ Choose target creature card in your opponent's graveyard | ValidTgts$ Creature.YouDontCtrl | ConditionCheckSVar$ Y | ConditionSVarCompare$ LEX | ChangeNum$ 1 | References$ X,Y | SpellDescription$ Put target creature card from an opponent's graveyard onto the battlefield under your control if its converted mana cost is less than or equal to the number of Allies you control.
T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you gain life, put that many +1/+1 counters on CARDNAME.
T:Mode$ Blocks | ValidCard$ Card.Self | Execute$ TrigDebuff | TriggerDescription$ When CARDNAME blocks, it becomes a Bird Giant, and it loses defender.
Oracle:Defender (This creature can't attack.)\nFlying\nWhen Ageless Sentinels blocks, it becomes a Bird Giant, and it loses defender. (It's no longer a Wall. This effect lasts indefinitely.)
A:SP$ DamageAll | Cost$ 3 R R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | RememberDamaged$ True | ValidCards$ Creature | ValidDescription$ each creature target player controls. | SubAbility$ DBAttack | SpellDescription$ CARDNAME deals 1 damage to each creature target player controls.
SVar:DBAttack:DB$ Pump | Defined$ Remembered | KW$ HIDDEN CARDNAME attacks each turn if able. | SubAbility$ DBCleanup | SpellDescription$ Each creature dealt damage this way attacks this turn if able.
A:SP$ Destroy | Cost$ 3 B | ValidTgts$ Creature.nonBlack | TgtPrompt$ Select target nonblack creature | NoRegen$ True | SpellDescription$ Destroy target nonblack creature. It can't be regenerated. If CARDNAME was kicked, it deals damage equal to that creature's power to the creature's controller.
A:SP$ Destroy | Cost$ 4 B R | ValidTgts$ Creature.nonBlack | TgtPrompt$ Select target nonblack creature | NoRegen$ True | SubAbility$ DBDamage | SpellDescription$ Kicker 1 R (You may pay an additional 1 R as you cast this spell.)
SVar:DBDamage:DB$DealDamage | Cost$ 0 | Defined$ TargetedController | NumDmg$ X
A:SP$ Destroy | Cost$ 4 B R | SetAsKicked$ True | ValidTgts$ Creature.nonBlack | TgtPrompt$ Select target nonblack creature | NoRegen$ True | SubAbility$ DBDamage | SpellDescription$ Kicker 1 R (You may pay an additional 1 R as you cast this spell.)
SVar:DBDamage:DB$DealDamage | Cost$ 0 | Defined$ TargetedController | NumDmg$ X | References$ X
A:AB$ DealDamage | Cost$ 1 R Sac<1/Creature.Goblin/Goblin creature> | Tgt$ TgtCP | NumDmg$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to target creature or player.
A:AB$ DealDamage | Cost$ 1 R Sac<1/Creature.Goblin/Goblin creature> | Tgt$ TgtCP | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to target creature or player.
A:AB$ PutCounter | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | CounterNum$ 1 | CounterType$ P1P1 | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Put a +1/+1 counter on up to one target creature.
A:AB$ Pump | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Flying & Double Strike | SpellDescription$ Target creature gains flying and double strike until end of turn.
A:AB$ Token | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | TokenAmount$ X | References$ X | TokenName$ Cat | TokenTypes$ Creature,Cat | TokenOwner$ You | TokenColors$ White | TokenPower$ 2 | TokenToughness$ 2 | Ultimate$ True | SpellDescription$ Put X 2/2 white Cat creature tokens onto the battlefield, where X is your life total.
Oracle:[+1] Put a +1/+1 counter on up to one target creature.\n[-3] Target creature gains flying and double strike until end of turn.\n[-8] Put X 2/2 white Cat creature tokens onto the battlefield, where X is your life total.
A:AB$ GainLife | Cost$ AddCounter<1/LOYALTY> | LifeAmount$ 2 | Planeswalker$ True | SpellDescription$ You gain 2 life.
A:AB$ PutCounterAll | Cost$ SubCounter<1/LOYALTY> | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | Planeswalker$ True | SubAbility$ DBPumpAll | SpellDescription$ Put a +1/+1 counter on each creature you control. Those creatures gain vigilance until end of turn.
A:AB$ Token | Cost$ SubCounter<6/LOYALTY> | TokenAmount$ 1 | TokenName$ Avatar | TokenTypes$ Creature,Avatar | TokenOwner$ You | TokenColors$ White | TokenPower$ X | TokenToughness$ X | TokenStaticAbilities$ Static | TokenSVars$ X | Planeswalker$ True | Ultimate$ True | SpellDescription$ Put a white Avatar creature token onto the battlefield. It has "This creature's power and toughness are each equal to your life total."
A:AB$ Token | Cost$ SubCounter<6/LOYALTY> | TokenAmount$ 1 | TokenName$ Avatar | TokenTypes$ Creature,Avatar | TokenOwner$ You | TokenColors$ White | TokenPower$ X | TokenToughness$ X | TokenStaticAbilities$ Static | TokenSVars$ X | Planeswalker$ True | Ultimate$ True | References$ X | SpellDescription$ Put a white Avatar creature token onto the battlefield. It has "This creature's power and toughness are each equal to your life total."
SVar:Static:Mode$ Continuous | SetPower$ X | SetToughness$ X | CharacteristicDefining$ True | Description$ This creature's power and toughness are each equal to your life total.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, each player sacrifices a land.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSac | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, each player sacrifices a land.
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | SacValid$ Land | Defined$ Each
R:Event$ DamageDone | ValidSource$ Card.Red | ValidTarget$ Player | ReplaceWith$ DmgPlus1 | Description$ If a red source would deal damage to a player, it deals that much damage plus 1 to that player instead.
R:Event$ DamageDone | ValidSource$ Card.Red | ValidTarget$ Player | ReplaceWith$ DmgPlus1 | IsCombat$ False | Description$ If a red source would deal damage to a player, it deals that much damage plus 1 to that player instead.
R:Event$ DamageDone | ValidSource$ Card.Red | ValidTarget$ Player | ReplaceWith$ DmgPlus1Combat | IsCombat$ True | Secondary$ True | Description$ If a red source would deal damage to a player, it deals that much damage plus 1 to that player instead.
SVar:DmgPlus1:AB$DealDamage | Cost$ 0 | Defined$ ReplacedTarget | DamageSource$ ReplacedSource | NumDmg$ X | References$ X
SVar:DmgPlus1Combat:AB$DealDamage | Cost$ 0 | CombatDamage$ True | Defined$ ReplacedTarget | DamageSource$ ReplacedSource | NumDmg$ X | References$ X
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigPumpAll | TriggerDescription$ Whenever CARDNAME or another Ally enters the battlefield under your control, you may have Ally creatures you control get +1/+0 until end of turn.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Ally.Other+YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPumpAll | Secondary$ True | TriggerDescription$ Whenever CARDNAME or another Ally enters the battlefield under your control, you may have Ally creatures you control get +1/+0 until end of turn.
A:SP$ GainLife | Cost$ X W W | ValidTgts$ Player | TgtPrompt$ Select target player | LifeAmount$ X | PrecostDesc$ Choose one - | SpellDescription$ Target player gains X life;
A:SP$ PreventDamage | Cost$ X W W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ X | PrecostDesc$ or | SpellDescription$ prevent the next X damage that would be dealt to target creature or player this turn.
A:SP$ GainLife | Cost$ X W W | ValidTgts$ Player | TgtPrompt$ Select target player | LifeAmount$ X | PrecostDesc$ Choose one - | References$ X | SpellDescription$ Target player gains X life;
A:SP$ PreventDamage | Cost$ X W W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ X | PrecostDesc$ or | References$ X | SpellDescription$ prevent the next X damage that would be dealt to target creature or player this turn.
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.
Text:Cast CARDNAME only during combat after blockers are declared.
A:SP$ FlipACoin | Cost$ 1 R | ValidTgts$ Creature | TgtPrompt$ Select target creature to gain +1/+1 | WinSubAbility$ AleatoryPump | LoseSubAbility$ AleatoryDraw | ActivationPhases$ Declare Blockers - Play Instants and Abilities->EndCombat | SpellDescription$ Flip a coin. If you win the flip, target creature gets +1/+1 until end of turn. Draw a card at the beginning of the next turn's upkeep.
Oracle:Cast Aleatory only during combat after blockers are declared.\nFlip a coin. If you win the flip, target creature gets +1/+1 until end of turn.\nDraw a card at the beginning of the next turn's upkeep.
A:SP$ ChangeZone | Cost$ 2 B B | Origin$ Stack | Destination$ Exile | SubAbility$ DBPutCounter | SpellDescription$ Exile CARDNAME with two scream counters on it. At the beginning of your upkeep, if CARDNAME is exiled with a scream counter on it, remove a scream counter from it. If there are no more scream counters on it, put it into your graveyard and each player returns all creature cards from his or her graveyard to the battlefield.
A:SP$ ChangeZone | Cost$ 2 B B | Origin$ Stack | Destination$ Exile | RememberChanged$ True | SubAbility$ DBPutCounter | SpellDescription$ Exile CARDNAME with two scream counters on it. At the beginning of your upkeep, if CARDNAME is exiled with a scream counter on it, remove a scream counter from it. If there are no more scream counters on it, put it into your graveyard and each player returns all creature cards from his or her graveyard to the battlefield.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.Self+counters_EQ0_SCREAM | PresentZone$ Exile | Execute$ TrigMoveToGraveyard | TriggerZones$ Exile | Secondary$ True | TriggerDescription$ Put CARDNAME into your graveyard and return all creatures to the battlefield.
A:SP$ Draw | Cost$ 4 U | NumCards$ X | ValidTgts$ Player | TgtPrompt$ Select target player | SpellDescription$ Domain - Target player draws a card for each basic land type among lands he or she controls.
A:SP$ Draw | Cost$ 4 U | NumCards$ X | ValidTgts$ Player | TgtPrompt$ Select target player | References$ X | SpellDescription$ Domain - Target player draws a card for each basic land type among lands he or she controls.
A:SP$ Pump | Cost$ 6 R R | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Select target creature an opponent controls | RememberTargets$ True | StackDescription$ None | SubAbility$ AlphaAttack | SpellDescription$ Target creature an opponent controls deals damage equal to its power to each other creature that player controls, then each of those creatures deals damage equal to its power to that creature.
SVar:AlphaAttack:DB$DamageAll | ValidCards$ Creature.YouDontCtrl+IsNotRemembered | DamageSource$ Targeted | NumDmg$ Y | SubAbility$ SucksToBeAlpha | References$ Y | StackDescription$ Targeted creature deals damage equal to its power to each other creature that player controls,
SVar:SucksToBeAlpha:DB$ EachDamage | ValidCards$ Creature.YouDontCtrl+IsNotRemembered | ValidDescription$ of those creatures | NumDmg$ X | DamageDesc$ damage equal to its power | DefinedCards$ Remembered | SubAbility$ DBCleanup | References$ X | StackDescription$ then each of those creatures deals damage equal to its power to that creature
#NumDmg isn't really used here. It is left for clarity. The AF pulls Damage straight from "X" hardcoded.
Oracle:Target creature an opponent controls deals damage equal to its power to each other creature that player controls, then each of those creatures deals damage equal to its power to that creature.
A:AB$ Mill | Cost$ Sac<1/Creature> | NumCards$ X | ValidTgts$ Player | TgtPrompt$ Choose a player | SpellDescription$ Target player puts a number of cards equal to the sacrificed creature's power from the top of his or her library into his or her graveyard.
A:AB$ Mill | Cost$ Sac<1/Creature> | NumCards$ X | ValidTgts$ Player | TgtPrompt$ Choose a player | References$ X | SpellDescription$ Target player puts a number of cards equal to the sacrificed creature's power from the top of his or her library into his or her graveyard.
T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add B to your mana pool for each charge counter on CARDNAME.
SVar:TrigGetMana:AB$ Mana | Cost$ 0 | Produced$ B | Amount$ X | SpellDescription$ Add X B to your mana pool
SVar:TrigGetMana:AB$ Mana | Cost$ 0 | Produced$ B | Amount$ X | References$ X | SpellDescription$ Add X B to your mana pool
A:AB$ Destroy | Cost$ 7 T | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBPutCounter | SpellDescription$ Destroy target creature. Then put a charge counter on CARDNAME.
A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | RestrictValid$ Card.wasCastFromGraveyard+withFlashback | SubAbility$ DBMana | SpellDescription$ Add two mana in any combination of colors to your mana pool. Spend this mana only to cast spells with flashback from a graveyard.
SVar:DBMana:DB$ Mana | Cost$ 0 | Produced$ Any | Amount$ 1 | RestrictValid$ Card.wasCastFromGraveyard+withFlashback | AILogic$ MostProminentInComputerHand
Oracle:Altar of the Lost enters the battlefield tapped.\n{T}: Add two mana in any combination of colors to your mana pool. Spend this mana only to cast spells with flashback from a graveyard.
S:Mode$ Continuous | Affected$ Creature.cmcLE3 | AddHiddenKeyword$ HIDDEN Flash & HIDDEN May be played without paying its mana cost | AffectedZone$ Hand,Graveyard,Exile | Description$ Any player may play creature cards with converted mana cost 3 or less without paying their mana cost and as though they had flash.
S:Mode$ Continuous | Affected$ Creature.cmcLE3 | AddHiddenKeyword$ HIDDEN May be played without paying its mana cost and as though it has flash | AffectedZone$ Hand,Graveyard,Exile | Description$ Any player may play creature cards with converted mana cost 3 or less without paying their mana cost and as though they had flash.
A:SP$ Draw | Cost$ 3 U | NumCards$ 3 | SubAbility$ ChangeZoneDB | SpellDescription$ Draw three cards, then put a card from your hand on the bottom of your library.
A:SP$ GainLife | Cost$ 1 G G | LifeAmount$ X | SpellDescription$ You gain X plus 1 life, where X is the number of green creatures on the battlefield.
A:SP$ GainLife | Cost$ 1 G G | LifeAmount$ X | References$ X | SpellDescription$ You gain X plus 1 life, where X is the number of green creatures on the battlefield.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ EQ1 | Execute$ TrigPumpA | TriggerDescription$ At the beginning of your upkeep, if you control a blue or black permanent, target creature gets +1/+1 until end of turn. If you control a blue permanent and a black permanent, that creature gets +5/+5 until end of turn instead.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ GE2 | Execute$ TrigPumpB | Secondary$ True | TriggerDescription$ At the beginning of your upkeep, if you control a blue or black permanent, target creature gets +1/+1 until end of turn. If you control a blue permanent and a black permanent, that creature gets +5/+5 until end of turn instead.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ GE1 | Execute$ TrigPump | TriggerDescription$ At the beginning of your upkeep, if you control a blue or black permanent, target creature gets +1/+1 until end of turn. If you control a blue permanent and a black permanent, that creature gets +5/+5 until end of turn instead.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to target player equal to the number of nonbasic lands that player controls.
SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | RememberTargets$ True | SubAbility$ DBCleanup | References$ X
Oracle:When Anathemancer enters the battlefield, it deals damage to target player equal to the number of nonbasic lands that player controls.\nUnearth {5}{B}{R} ({5}{B}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigGainLife | TriggerDescription$ When CARDNAME enters the battlefield, you gain 1 life for each card in your graveyard.
SVar:TrigGainLife:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X
SVar:TrigGainLife:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X | References$ X
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, look at the top ten cards of your library, then exile any number of them and put the rest back on top of your library in any order.
A:SP$ Draw | Cost$ 0 | NumCards$ 3 | ValidTgts$ Player | TgtPrompt$ Choose a player | SpellDescription$ Target player draws three cards. | ActivationLimit$ 0
Oracle:Ancestral Vision is blue.\nSuspend 4-{U} (Rather than cast this card from your hand, pay {U} and exile it with four time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)\nTarget player draws three cards.
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | References$ X | Description$ CARDNAME's power and toughness are each equal to the total converted mana cost of other creatures you control.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigDamageYou | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's upkeep, CARDNAME deals damage to that player equal to the number of artifacts he or she controls.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Opponent | Execute$ TrigDamageOpp | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ At the beginning of each player's upkeep, CARDNAME deals damage to that player equal to the number of artifacts he or she controls.
SVar:TrigDamageYou:AB$DealDamage | Cost$ 0 | Defined$ You | NumDmg$ X
SVar:TrigDamageOpp:AB$DealDamage | Cost$ 0 | Defined$ Opponent | NumDmg$ Y
SVar:TrigDamageYou:AB$DealDamage | Cost$ 0 | Defined$ You | NumDmg$ X | References$ X
SVar:TrigDamageOpp:AB$DealDamage | Cost$ 0 | Defined$ Opponent | NumDmg$ Y | References$ Y
A:AB$ Mana | Cost$ T | Produced$ Any | RestrictValid$ Creature | SpellDescription$ Add one mana of any color to your mana pool. Spend this mana only to cast a creature spell.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ ExileAll | TriggerDescription$ When CARDNAME enters the battlefield, exile all Zombies, then return all Human creature cards from your graveyard to the battlefield.
Oracle:Flying\nWhen Angel of Glory's Rise enters the battlefield, exile all Zombies, then return all Human creature cards from your graveyard to the battlefield.
S:Mode$ Continuous | Affected$ Creature.nonBlack+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other nonblack creatures you control get +1/+1.
S:Mode$ Continuous | Affected$ Player | AddKeyword$ You can't pay life to cast spells or activate abilities. & You can't sacrifice creatures to cast spells or activate abilities. | Description$ Players can't pay life or sacrifice creatures to cast spells or activate abilities.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ HolyHeal | TriggerDescription$ When CARDNAME enters the battlefield, prevent the next 5 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose.
SVar:HolyHeal:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (1) | Amount$ 1 | SubAbility$ Heal2
SVar:Heal2:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (2) | Amount$ 1 | SubAbility$ Heal3
SVar:Heal3:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (3) | Amount$ 1 | SubAbility$ Heal4
SVar:Heal4:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (4) | Amount$ 1 | SubAbility$ Heal5
SVar:Heal5:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (5) | Amount$ 1
Oracle:Flash, convoke (Each creature you tap while casting this spell reduces its cost by {1} or by one mana of that creature's color.)\nFlying\nWhen Angel of Salvation enters the battlefield, prevent the next 5 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose.
A:AB$ GainLife | Cost$ 2 T SubCounter<4/CHARGE> | Defined$ You | LifeAmount$ 2 | SubAbility$ DBDraw | SpellDescription$ You gain 2 life and draw a card.
T:Mode$ DamageDone | ValidTarget$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | OptionalDecider$ You | TriggerDescription$ Whenever you're dealt damage, you may put that many charge counters on CARDNAME.
S:Mode$ Continuous | Affected$ Creature.YouDontCtrl | AddHiddenKeyword$ HIDDEN CARDNAME can't attack. | CheckSVar$ X | SVarCompare$ GE1 | Description$ Each opponent who cast a spell this turn can't attack with creatures.
S:Mode$ CantBeCast | ValidCard$ Card | Caster$ Opponent | OpponentAttackedWithCreatureThisTurn$ True | Description$ Each opponent who attacked with a creature this turn can't cast spells.
Oracle:Flying\nEach opponent who cast a spell this turn can't attack with creatures.\nEach opponent who attacked with a creature this turn can't cast spells.
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddToughness$ 2 | AddKeyword$ Flying | AddType$ Angel | AddColor$ White | Description$ Equipped creature gets +2+2, has flying and is a white Angel in addition to its other colors and types.
Oracle:Equipped creature gets +2/+2, has flying, and is a white Angel in addition to its other colors and types.\nEquip {4}
End
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.