- 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.
10790 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:
This version includes 90% (+) of the cards that are available in the new Avacyn Restored card set.
"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."
Some adjustments to the pets in quest mode were made. This includes a new pet. :)
Some people have noticed recently that cost change was working for the human player but not the computer player. A fix was made and this should no longer be a problem.
The Battlefield UI has a new feature implemented which allows us to move and resize the panels to new places on the battlefield. This allows us to personalize the battlefield display to our own liking. You should try moving panels by clicking and dragging their tabs.
If you do not like your efforts to personalize the battlefield display you can revert the display to the default layout by clicking on the Dock button labeled "Revert layout".
A bug with the constructed mode has been discovered and has not yet been fixed. If you select "Fully random color deck" and activate the "Singleton Mode" checkbox Forge will freeze when you click on the Start button. This is now fixed and you can once again use singleton mode.
A bug with the transform and flip cards has been reported recently. This bug prevents you from casting these cards from your hand. It is currently being investigated and a possible fix has been submitted to the SVN.
A couple of problems with the quest mode were noticed some time ago and they have been discussed on the developer section of the forge forum.
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 have a fix to the bug that affected the special quests. This should allow the start in play cards to appear at the start of a match.
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.
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.
- Fixed the file name of Duskwalker.
- Balancing Quest Pets as mentioned on the forums
- Added Ape Pet as a 5th pet.
- Cleared out the changes.txt file, now ready for new material.
- Fixed errors related to the AI controlling cards like Essence Bottle.
- Fixed type line of Fungus Sliver.
- Added the precon Battle Blitz.
- Fixed picture count of Samite Alchemist.
- Added SVar:RemAIDeck:True to Moonmist.
- It's no longer possible to start a quest with a deck that needs more than 0 wins to unlock (i.e. Event Decks).
- Added some basic targeting to AF PumpAll (isCurse only).
- Java warning cleanup
- Pass the full Card object into Cost not just the name, so CostParts can be loaded from SVars in the future.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed type checking in getSpellCostChange Multicolor broke the logic).
- StaticAbilityContinuous SetPower and SetToughness characteristic-defining now use AbilityFactory.calculateAmount instead of CardFactoryUtil.xCount
- Fixed Haunting Apparition.
- Improved Fog effects: They now work with Damage Replacement abilities and Leyline of Punishment. Additionally the AI will predict the prevention.
- AllZone Upkeep and Untap were removed due to little references they had had
- Added snow as manashard
- In manacost list of ManaParts is a propper way to go.
- removed AllZone.getQuest in a few places.
- implement the pre-Magic 2010 mana burn rule as an option (default: off)
- update SetInfo for Revive
- add SetInfo and Oracle to Gutter Grime
- Fixed Exoskeletal Armor.
- Updated some SVars (including some AB->DB conversions).
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- step was typed incorrectly
- The AI can now use mana abilities that produce more than a single colored mana as though they produce only the single mana (and the game will no longer crash).
- Fixing Cold Storage description
- Fixed wrongly disabled Buy button in Bazaar
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed Torpor Orb only vaguely doing what it's supposed to do.
- Added the optional parameter "TriggerController" to Triggers. The TriggerController controls the trigger and makes all decisions.
- Converted all cards with "When CARDNAME dies,..." to use TriggerController.
- Converted some cards with "When CARDNAME is put into a graveyard from the battlefield,..." to use TriggerController (A).
- Converted some cards with "When CARDNAME is put into a graveyard from the battlefield,..." to use TriggerController (C-F).
- Converted some cards with "When CARDNAME is put into a graveyard from the battlefield,..." to use TriggerController (G-I).
- Converted some cards with "When CARDNAME is put into a graveyard from the battlefield,..." to use TriggerController (J-N).
- Converted Sarkhan the Mad to script (again).
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Improvements for the AI of AF Pump.
- PhaseType switched to enum
- Updated SkieraCube to most recent version
- Converted some cards with "When CARDNAME is put into a graveyard from the battlefield,..." to use TriggerController (O-R).
- Converted some cards with "When CARDNAME is put into a graveyard from the battlefield,..." to use TriggerController (S-Z).
- Converted some cards with "WWhen CARDNAME leaves the battlefield,..." to use TriggerController (A-J).
- Fixed Drudge Spell.
- Adding some exception handling that seems to be happening around the time the Quest game not loading anything.
- DamageAll can now set the damage source with DamageSource param
- EachDamage now handles Remembered defined cards
- DamageAll and EachDamage support StackDescription param now
- Added SetAsKicked parameter to nonPermanent kicker spells (they'll now be countered by Ertai's Trickery and interact with any other 'kicked' isValid check)
- Corrected the targeting restriction on Agadeem Occultist to a resolution condition.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Converted some cards with "When CARDNAME leaves the battlefield,..." to use TriggerController (K-R).
- Converted some cards with "When CARDNAME leaves the battlefield,..." to use TriggerController (S-Z).
- New images are in for the Ape and Wolf pets... only 3 to go
- Added the optional parameter "RemoveKeywords" to AF Animate. AF Debuff shouldn't be used anymore.
- Fixed Chimeric Sphere.
- Fixed Summit Apes.
- The AI will now trade block with creatures with the SacMe SVar more willingly.
- some if-elses replaced with switches.
- equals against enum PhaseType members replaced by == operator
- Displays current phase as text
- Fixed Phase triggers.
- Fixed Silent Assassin.
- Converted Umezawa's Jitte to AF Charm and tweaked Bogardan Hellkite (by Squee).
- Cleanup and more use of "==" instead of "equals".
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- More work on the AI part of AF Charm (experimental).
- Removed RemAIDeck SVar from Deceiver Exarch and Dromar's Charm.
- Fixed Curse of Bloodletting.
- Fixed Student of Elements/Tobita, Master of Winds.
- Added SVar:RemAIDeck:True to Veldrane of Sengir.
- Converted Winds of Change to script (by Squee).
- Fixed an issue with "ClearRemembered" and Sacrifice self costs.
- Fixed bug with Animate Dead and Dance of the Dead - they hopefully will work now
- Fixed bugs with Yosei, the Morning Star - warning: possible regression...
- Fixing Ape and Bird Lvl 4 triggers.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed the casting cost for Shelter.
- Fixed card panel description for Stalking Yeti
- AI can't use Viscid Lemures ability properly, so added RemAIDeck
- 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.
- Oops. Left my debugging info in the script for Tree of Redemption. Fixed!
- Cleanup in PhaseHandler. Don't need to go retrieve PhaseHandler when I'm already inside the object.
- Fixing typo in Relentless Rats
- Fixing typo in Goblin Digging Team
- Fixing double cost description of Shared Discovery.
- Deck generation uses CardPrinted
- remove warnings or unused items
- Gathered phase-related classes in a package
- from constants removed strange constantstringarray, removed some warnings.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- arcane.ui.* => forge.view.arcane.*
- removed generateRandomCards from cardfactory
- same as previuos
- Zone moved to a personal package
- CardFactoryCreatures: card-specific code moved into methods for better readability
- Fixing issue with Stupefying Touch having two Attach spells.
- Adding Avacyn Restored Branch
- Should just be branching straight to the folder instead of creating folder first.
- Creating branch of Avacyn Restored
- add an accessor to ViewMatchUI.java
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- 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 cards that were hardcoded right in AbstractCardFactory moved to their own static classes
- Added some new material to the README.txt file.
- Further work on draggable layout.
- A few additions to default skin.
- 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.
- 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.
- Flowstone Sculpture wasn't displaying the 'Put a +1/+1 counter on CARDNAME' ability in the card info panel. So while correcting it decided to make it use generic choice for the ability selection instead of separate pumps.
- Refined Flicker's script (Remembered cards weren't being cleared).
- 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).
- Improved script for Tree of Redemption. Should get final makeover when Sol (or another dev) implements his StoreSVar AF.
- CheckStyle plus StringBuilder.
- CheckStyle.
- Fixed Consuming Vapors not clearing remembered list.
- 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.
- Converted Molten Psyche to script. (Thanks Squee)
- Added the script version of Molten Psyche to AVR branch accidentally, so committing to main branch as well so its not broken with the hardcoded one removed.
- Removed debugging info from Molten Psyche (main branch)
- Removed debugging info from Molten Psyche (AVR branch)
- Urg... final fix to Molten Psyche script. Sorry.
- Minor update to the README.txt file.
- Disabled quest being saving as unpacked XML - will write only .dat files
- moved to afterPayMana the moment when player chooses an object to copy with clones. An option "not to copy anything" is present now. 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 recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle.
- Fixed Krosan Reclamation, target player should shuffle up to two target cards and not three.
- Added support for the Miracle keyword
- Converting MorphUp to AbilityStatic
- Added StoreSVar AF for calculating and storing values to SVars for amounts that need to be calculated before they are going to be used.
- 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.
- Removed my initial work on remembered integer values in favor of Sol's StoreSVar AF.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Added TargetedControllerControls to isValid
- Added Planeswalker types Tamiyo and Tibalt
- StringBuilder.
- Boom - it's landed. Draggable layout for match UI.
- Javadoc updates.
- FOverlay instance changed to singleton.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle.
- Fixed the activation cost for Samite Censer-Bearer.
- Enlarged font size in message panel.
- Added "revert to default layout" button in dock.
- Added multiple card handling and labels to ante panel.
- Temporarily removed "end of turn" and "settings" button in Dock panel.
- Fixed dev mode milling and unlimited lands saving.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed Head Games, should now be treated as a SP$ ability rather than an AB$ ability.
- CheckStyle.
- CheckStyle.
- CheckStyle.
- Added a fluff piece to the changes.txt file.
- Spell corrected the title of the checkbox for "Upload Draft Picks".
- Removed border around scroller element in Ante panel.
- Fixed window resizing / drag cell bug.
- Fixed getSpellCostChange not being applied for the AI.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Reverted changes made to the main.properties file, think this may have been an unintentional edit.
- Added a fluff piece to the changes.txt file.
- Renamed "Message Report" panel name to "Prompt".
- Added a fluff piece to the changes.txt file.
- Added the the options "SetMaxHandSize" and "RaiseMaxHandSize" to continuous static abilities.
- Converted all cards with the old HandSize keyword as well as Praetor's Counsel.
- Fixed singleton mode freezing.
- Edited a fluff piece in the changes.txt file.
- Fixed random deck generation for the AI.
- 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.
- Updated image references for new bird pet (bazaar index and dl links)
- Cleanup.
- 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
- Made the triggered ability for Glint Hawk Idol optional.
- Added missing rarity info to Furnace of Rath. Also changed its valid targets from permanent to creature
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- removed some excess params from Vigorous Charge.
- Updated the README.txt file.
- Static ability PreventDamage can now handle "HalfUp" for Amount
- Added SVar:RemAIDeck:True to Kyren Toy.
- Initial Checkin for Remove Counter from Type (still needs some fine tuning, but should be functional for Human)
- Added support to ChangeZone AF for targeting spells on stack. Might need some tweaking.
- Added counting of cards on the stack
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Better handling of ordering of continuous static abilities.
- Lowercased the font file for the simpsons skin.
- remove font
- remove font
- Re-add the lowercased font.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Minor update to DragTab.
- The CardDetail panel will now switch to cards hitting the stack again. Morph sources are no longer shown.
- The Game log will no longer reveal the name of Morphs.
- Added a fluff piece to the changes.txt file.
- Fixed ChangeZone triggers not working on cards moving to hand or library themselves.
- Update dependency. Add package docs
- Quick fix for the double faced cards not castable problem.
- Fixed Arcane Melee (AVR).
- Added SVar:EquipMe:Once to Training Drone.
- Fixed the AI playing useless Curse Pump spells.
- Edit.
- Fixed possibility to get stuck paying a discard cost of 0.
- Updated some SVars.
- Fixed Sarcomite Myr ability cost.
- Fixed card detail / pic mouseover bug in match UI.
- Fixed resizing bug in drag cell layout.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed Provoke keyword.
- Removed duplicate getter/setter for isIntrinsic variable.
- Vodalian Illusionst thought it was part of Teferi's Honor Guard
- Fixed SVar:RemAIDeck:True in Quillmane Baku.
- added Soulbond mechanic
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- The new art for the crocodile pet is in.
- Added spell description to Tribal Unity.
- Fixed Terminus.
- Changing K:CARDNAME is <color> to Colors:<color>{,<color>,...}
- CardRulesReader now parses Colors: fixing a bug with the DeckEditor
- Fixed description of Green Sun's Zenith.
- Small AI improvement for PreventDamage
- Small tweaks to Downhill Charge and Keeper of the Mind
- Fixed Sylvan Library.
- Fixed a bug with "May be played by your opponent".
- Fixed a possible NPE in checkRemoveCounterCost.
- Fixed some changeZone triggers triggering twice.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed the effect description for Sandals of Abdallah so that the original sandals is referenced, not the effect. Also made the svar names unique.
- Re-fixing Multi-targeting bug caused by Updating Observers in a weird spot
- Fixed concurrent list modification bug in PlayArea.
- Added a fluff piece to the changes.txt file.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Removed "SVar=" instances from Jugan, the Rising Star
- Fixed Sheltering Word.
- Simplifying how Landwalk is handled
- Removing Hardcoded Card Names in Landwalk handling
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed "May be played by your opponent" keyword.
- Added the keyword "Your opponent may look at this card.".
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Updating AVR branch?
- Cleanup.
- Merged AVR branch.
- fixed the ETB of Restoration Angel (Defined$Targeted needs AB base instead of DB)
- Small fix
- Fixed summoning sickness not being cleared on the first turn of the player going second.
- Small fix - removed some end-line spaces
- Fixed Sparkspitter.
- Fixing pyrokinesis Spell Description
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- manually added changes from HEAD revision of AVR branch into trunk
- Converted Turn to Slag to script.
- Moved Defang.txt.
- Updated some SVars.
- Adding AVR SetInfo for non-reprints
- Most of the reprints, messed up three of the basic lands, coming shortly.
- SetInfo for the rest of the reprints
- Fixing the name of Blessings of Nature
- Updated AVR Block Data files (I think I got all of them properly)
- Fixing Miracle for Reforge the Soul
- Fixing Scalding Devil type line
- Fixing Corpse Traders SpellAbility
- deleting obsolete branch for mana fixes
- Fixed Umezawa's Jitte description.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed card text for Into the Void.
- Damage Functions now return whether or not they dealt any damage
- DamageAll can now Remember what Cards it damaged
- Simplified Phyrexian Unlife
- Updated mtg-data.txt
- Ran OracleScript for AVR cards
- Moved the "Start Game" stuff to only after Mulliganing and Leylining is finished.
- Added Miracle to CardDetailPanel
- Added some Keywords related to Angel of Jubilation
- Fkxed Angel of Jubilation
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed Miracle of Blessings of Nature.
- Update Miracle and Madness to use playSpellAbility so they go through costChange()
- Added basic AI to Miracle.
- Added DoTriggerAI and canPlayFromEffectAI functions to AF ChangeZoneAll (mainly for Terminus).
- Added basic AI to Madness.
- First step towards the player keyword "Spells and abilities your opponents control can't cause you to sacrifice permanents."
- Fixing Exterminator CC
- Initial checkin for EndTurn and skipToPhase functionality. The first priority doesn't pass automatically for some reason, but it does help speed things along, so it's worth being there until that first passing can get worked out.
- Convert cycling and typecycling to AF Scripts
- No need for two variables when we can just have one
- Some cleanup, and simplification
- Fixed some trigger descriptions.
- Added the keyword "Damage that would be dealt by CARDNAME can't be prevented.".
- Deleted some unused functions.
- Further steps towards the player keyword "Spells and abilities your opponents control can't cause you to sacrifice permanents."
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Little fix for RememberDestroyed parameter.
- Added the player keyword "Spells and abilities your opponents control can't cause you to sacrifice permanents.".
- Fixed Entreat flying Angels, it's tokens should now have flying.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed the description of Malignus.
- Now the Stack panel will always be shown, whenever a SpellAbility hits the stack.
- Removed unnecessary auto switching to the Stack panel at the beginning of some phases.
- added AVR to set lists
- added a stack description
- Added the player keyword "At the beginning of the end step, you lose the game.".
- Added the keyword "May be played by your opponent without paying its mana cost".
- Fixed a bug with auras not being played by their owner.
- CheckStyle.
- Fixed the LQ pic URL for Conjurer's Closet.
- Fixed the LQ pic URL for Moorland Inquisitor.
- Fixed the LQ pic URL for Avacyn, Angel of Hope.
- Fixed the LQ pic URL for Thraben Valiant.
- Fixed the LQ pic URL for Riot Ringleader.
- Tweaked cost evaluation AI functions a little.
- Added the player keyword "You may cast nonland cards as though they had flash.".
- Converted some cards to use it
- fixed infinite loop in Play AF
- fixed error with added SVars
- fixed cost of Tamiyo's ultimate
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Added "AITgts" parameter to AF Attach (Example: Grounded).
- Added "AITgts" parameter to AF Counter (Example: Burnout).
- update scm plugin
- Added "AITgts" parameter to AF Destroy (Example: Hydroblast).
- Added AITgts to two more cards.
- Added AITgts to three more cards.
- Updated AI SVars of AVR cards (A-G).
- update compiler plugin and guava dep
- The AI will now play cards with Soulbond in Main1.
- Updated SVars and descriptions of some more AVR cards.
- Moved the displaying of damage to the text area of the card detail panel (it's not important enough to waste a line on every card).
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- New Hound pet art is in. Updated bazaar index and download links.
- The AI can now use Death Wind.
- added SecondSpellCastThisTurn property and added Second Guess
- Updated some AI SVars.
- Added info about EnchantedBy, Equipping and EquippedBy to LKI copies.
- Cards will now restore their last position if canceled out when attempting to be cast from a Zone where it matters (Descendant's Path + Flashback changing Zone position bug)
- bug fix for enchantment and equipment not dropping off during "flicker" mechanic
- Fixing bug with abilities that create delayed trigger e.g. Venser, the Sojourner. Changed parseTrigger() to use get() method of HashMap rather than remove().
- Deleting AVR card branch
- Deleting DKA card branch
- Improved script for Wild Evocation (no longer have to choose the Remembered card)
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed a possible ConcurrentModificationException.
- Consolidated all the "can play X extra lands" into keyword format so that they don't have to be hardcoded each time. Just commented out the old code for now, but if its good then feel free to remove it instead.
- Converted Azusa, Lost but Seeking; Exploration; Oracle of Mul Daya; Rites of Flourishing and Storm Cauldron
- Small tweak to Suspend Spell Description
- Added the recent commit logs to changes.txt. Preparing for the beta build and release.
- 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,23 @@ 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 and token pictures (mtg card tokens and quest pet/plant tokens). Please note that the /res/pics/icons/ folder was moved out of this folder and placed in the /res/images/ folder. The booster package images were moved to the /res/pics_product/booster/ folder.
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.
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 root folder contains a preference file named "forge.preferences" and you should also move a copy of this file over to the newer version.
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.
Advanced Updating to a newer version Instructions:
@@ -51,6 +57,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 +75,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.")
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.
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
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
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:AB$ Effect | Cost$ T | Name$ Adarkar Valkyrie Effect | ValidTgts$ Creature.Other | TgtPrompt$ Select target creature other than Adarkar Valkyrie | Triggers$ TrigChangesZone | SVars$ 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$ 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.)
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.
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.
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 | 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$ 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$ PumpAll | 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.)
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
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.
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: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$ 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 | 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 | 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.
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.
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
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 | 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.
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.
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.AttachedBy | 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.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigAnimateTomb | OptionalDecider$ You | TriggerDescription$ Whenever a creature enters the battlefield under your control, you may have CARDNAME become a 3/3 white Angel artifact creature with flying until end of turn.
Oracle:Whenever a creature enters the battlefield under your control, you may have Angel's Tomb become a 3/3 white Angel artifact creature with flying until end of turn.
S:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ Vigilance | Description$ All creatures have vigilance.
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TrigTapAllYou | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's end step, tap all untapped creatures that player controls that didn't attack this turn. CARDNAME deals damage to the player equal to the number of creatures tapped this way.
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Opponent | Execute$ TrigTapAllOpp | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ At the beginning of each player's end step, tap all untapped creatures that player controls that didn't attack this turn. CARDNAME deals damage to the player equal to the number of creatures tapped this way.
Oracle:All creatures have vigilance.\nAt the beginning of each player's end step, tap all untapped creatures that player controls that didn't attack this turn. Angel's Trumpet deals damage to the player equal to the number of creatures tapped this way.
A:AB$ Fog | Cost$ W U G T | PlayerTurn$ True | ActivationPhases$ Upkeep,Draw,Main1,BeginCombat,Declare Attackers - Play Instants and Abilities,Combat_Declare_Blockers_InstantAbility | SpellDescription$ Prevent all combat damage that would be dealt this turn. Activate this ability only before the combat damage step.
A:AB$ Fog | Cost$ W U G T | PlayerTurn$ True | ActivationPhases$ Upkeep->Declare Blockers - Play Instants and Abilities | SpellDescription$ Prevent all combat damage that would be dealt this turn. Activate this ability only before the combat damage step.
A:SP$ Attach | Cost$ 2 W | ValidTgts$ Land | AILogic$ Pump
S:Mode$ Continuous | Affected$ Land.AttachedBy | AddAbility$ GainLife | AddSVar$ X | Description$ Enchanted land has "Tap, Sacrifice a creature: You gain life equal to that creature's toughness."
SVar:GainLife:AB$GainLife | Cost$ T Sac<1/Creature> | LifeAmount$ X | SpellDescription$ You gain life equal to the sacrificed creature's toughness.
SVar:X:Sacrificed$CardToughness
S:Mode$ Continuous | Affected$ Land.AttachedBy | AddAbility$ GainLife | AddSVar$ AnimalBoneyardX | Description$ Enchanted land has "Tap, Sacrifice a creature: You gain life equal to that creature's toughness."
SVar:GainLife:AB$GainLife | Cost$ T Sac<1/Creature> | LifeAmount$ AnimalBoneyardX | SpellDescription$ You gain life equal to the sacrificed creature's toughness.
A:SP$ Dig | Cost$ 4 G | DigNum$ 5 | Reveal$ True | ChangeNum$ 1 | ChangeValid$ Creature | DestinationZone$ Battlefield | DestinationZone2$ Graveyard | Choser$ Opponent | SpellDescription$ Reveal the top five cards of your library. An opponent chooses a creature card from among them. Put that card onto the battlefield and the rest into your graveyard.
Oracle:Reveal the top five cards of your library. An opponent chooses a creature card from among them. Put that card onto the battlefield and the rest into your graveyard.
T:Mode$ SpellCast | ValidCard$ Card.Creature+YouCtrl | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a creature spell, put a +1/+1 counter on CARDNAME.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigChangeZone | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, sacrifice CARDNAME unless you put a card from your graveyard on the bottom of your library.
Oracle:Protection from black\nAt the beginning of your upkeep, sacrifice Anurid Scavenger unless you put a card from your graveyard on the bottom of your library.
S:Mode$ Continuous | Affected$ Player | SetMaxHandSize$ -1 | Description$ Players have no maximum hand size.
T:Mode$ Phase | Phase$ Draw | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ At the beginning of each player's draw step, that player draws an additional card, then discards a card.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | OptionalDecider$ You | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, you may put target Zombie card from your graveyard on top of your library.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | OptionalDecider$ You | ValidCard$ Card.Self | Execute$ TrigChange | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, you may put target Zombie card from your graveyard on top of your library.
SVar:TrigChange:AB$ChangeZone | Cost$ 0 | TgtPrompt$ Choose target Zombie card in your graveyard | ValidTgts$ Zombie.YouCtrl | Origin$ Graveyard | Destination$ Library | SpellDescription$ Put target Zombie card from your graveyard on top of your library.
A:SP$ ChangeZone | Cost$ B | Origin$ Hand | Destination$ Exile | ValidTgts$ Opponent | ChangeType$ Card.cmcGE4 | ChangeNum$ 1 | IsCurse$ True | Mandatory$ True | SpellDescription$ Target opponent reveals his or her hand. You choose a card from it with converted mana cost 4 or greater and exile that card.
A:AB$ ChangeZone | Cost$ tapXType<1/Spider> | Hidden$ True | Origin$ Library | OriginChoice$ True | OriginAlternative$ Graveyard | AlternativeMessage$ Would you like to search your library with this ability? If you do, your library will be shuffled. | Destination$ Battlefield | ChangeType$ Card.namedArachnus Web | SpellDescription$ Search your graveyard and/or library for a card named Arachnus Web and put it onto the battlefield attached to target creature. If you search your library this way, shuffle it.
Oracle:Reach (This creature can block creatures with flying.)\nTap an untapped Spider you control: Search your graveyard and/or library for a card named Arachnus Web and put it onto the battlefield attached to target creature. If you search your library this way, shuffle it.
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ HIDDEN CARDNAME can't attack or block. & HIDDEN CARDNAME's activated abilities can't be activated. | Description$ Enchanted creature can't attack or block and its activated abilities can't be activated.
T:Mode$ Phase | Phase$ End of Turn | IsPresent$ Creature.EnchantedBy+powerGE4 | Execute$ TrigDestroy | TriggerDescription$ At the beginning of the end step, if enchanted creature's power is 4 or greater, destroy CARDNAME.
T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | IsPresent$ Creature.EnchantedBy+powerGE4 | Execute$ TrigDestroy | TriggerDescription$ At the beginning of the end step, if enchanted creature's power is 4 or greater, destroy CARDNAME.
A:SP$ GainLife | Cost$ 7 W | LifeAmount$ X | SubAbility$ DBShuffle | SpellDescription$ You gain 2 life for each card in your graveyard, then shuffle your graveyard into your library.
T:Mode$ Phase | Phase$ End of Turn | CheckSVar$ X | SVarCompare$ GE2 | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of each end step, if you drew two or more cards this turn, you may put a quest counter on CARDNAME.
T:Mode$ Phase | Phase$ End of Turn | CheckSVar$ X | SVarCompare$ GE2 | TriggerZones$ Battlefield | Execute$ TrigPutCounter | OptionalDecider$ You | TriggerDescription$ At the beginning of each end step, if you drew two or more cards this turn, you may put a quest counter on CARDNAME.
R:Event$ Draw | ValidPlayer$ You | ReplaceWith$ Tutor | CheckSVar$ Y | SVarCompare$ GE6 | Optional$ True | Description$ As long as CARDNAME has six or more quest counters on it, if you would draw a card, you may instead search your library for a card, put that card into your hand, then shuffle your library.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, exile target permanent.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChange | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, exile target permanent.
T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigReturn | TriggerDescription$ At the beginning of the end step, return CARDNAME to its owner's hand.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | ValidCard$ Card.Self | Execute$ TrigGain | TriggerDescription$ When CARDNAME dies, you gain 2 life for each age counter on it.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | ValidCard$ Card.Self | Execute$ TrigGain | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, you gain 2 life for each age counter on it.
SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ TriggeredCardController | LifeAmount$ X
A:AB$ ChangeZone | Cost$ U | Defined$ Self | Origin$ Battlefield | Destination$ Exile | SubAbility$ DelTrig | Activation$ Metalcraft | PrecostDesc$ Metalcraft - | SpellDescription$ Exile CARDNAME. Return it to the battlefield under your control at the beginning of the next end step. Activate this ability only if you control three or more artifacts.
SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | TriggerDescription$ Return CARDNAME to the battlefield.
Oracle:Flying\nMetalcraft - {U}: Exile Argent Sphinx. Return it to the battlefield under your control at the beginning of the next end step. Activate this ability only if you control three or more artifacts.
A:AB$ Protection | Cost$ 1 W W | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select targe creature you control | Gains$ Choice | Choices$ AnyColor | SpellDescription$ Target creature you control gains protection from the color of your choice until end of turn.
A:AB$ Protection | Cost$ 1 W W | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | Gains$ Choice | Choices$ AnyColor | SpellDescription$ Target creature you control gains protection from the color of your choice until end of turn.
A:AB$ Pump | Cost$ 1 U U | KW$ Shroud | SpellDescription$ CARDNAME gains shroud until end of turn.
T:Mode$ Blocks | ValidCard$ Creature.powerLE1 | ValidBlocked$ Card.Self | DelayedTrigger$ DelTrig | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature with power 1 or less, destroy CARDNAME at end of combat.
T:Mode$ Blocks | ValidCard$ Card.Self | ValidBlocked$ Creature.powerLE1 | DelayedTrigger$ DelTrig | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature with power 1 or less, destroy CARDNAME at end of combat.
SVar:DelTrig:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Each | Execute$ TrigDestroy | TriggerDescription$ Destroy CARDNAME at end of combat.
SVar:DelTrig:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigDestroy | TriggerDescription$ Destroy CARDNAME at end of combat.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, target opponent discards a card for each Zubera put into a graveyard from the battlefield this turn.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, target opponent discards a card for each Zubera put into a graveyard from the battlefield this turn.
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | Execute$ TrigDestroy | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, choose target creature that player controls. He or she sacrifices that creature.
Oracle:Whenever Ashling, the Extinguisher deals combat damage to a player, choose target creature that player controls. He or she sacrifices that creature.
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ ChooseMode | Static$ True | TriggerDescription$ As CARDNAME enters the battlefield, choose odd or even. (Zero is even.)
SVar:ChooseMode:AB$ ChooseNumber | Cost$ 0 | Defined$ You | Min$ 0 | Max$ 1 | SpellDescription$ Choose odd or even (Zero is even.)
SVar:ChooseMode:AB$ ChooseNumber | Cost$ 0 | Defined$ You | Min$ 0 | Max$ 1 | ListTitle$ Choose ODD or EVEN (0=Even; 1=Odd) | SpellDescription$ Choose odd or even (Zero is even.)
S:Mode$ Continuous | Affected$ Creature.cmcM2X | AddKeyword$ Haste | Description$ Each creature with converted mana cost of the chosen value has haste.
S:Mode$ ETBTapped | ValidCard$ Creature.cmcM2Y | Description$ Each creature without converted mana cost of the chosen value enters the battlefield tapped.
# The next 2 static abilities add text to the card panel for convenience indicating choice.
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Shroud | Description$ Enchanted creature has shroud. (It can't be the target of spells or abilities.)
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, return CARDNAME to its owner's hand.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, return CARDNAME to its owner's hand.
SVar:TrigChangeZone:AB$ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Hand
Text:Affinity for artifacts (This spell costs 1 less to cast for each artifact you control.)\r\n\r\n
Text:no text
A:SP$ Counter | Cost$ 5 U U | TargetType$ Spell | ValidTgts$ Card | Destination$ Exile | SpellDescription$ Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigGainControl | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, you gain control of all enchantments. (You don't get to move Auras.)
SVar:TrigGainControl:DB$ GainControl | AllValid$ Enchantment | NewController$ You
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, search your library for an Aura card that could enchant it. If CARDNAME is still on the battlefield, put that Aura card onto the battlefield attached to it. Otherwise, reveal the Aura card and put it into your hand. Then shuffle your library.
Oracle:When Auratouched Mage enters the battlefield, search your library for an Aura card that could enchant it. If Auratouched Mage is still on the battlefield, put that Aura card onto the battlefield attached to it. Otherwise, reveal the Aura card and put it into your hand. Then shuffle your library.
T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature deals damage to you, put a gold counter on it.
S:Mode$ Continuous | Affected$ Creature.counters_GE1_GOLD | AddType$ Wall | AddKeyword$ Defender | Description$ Each creature with a gold counter on it is a Wall in addition to its other creature types and has defender. (Those creatures can't attack.)
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigRemove | TriggerDescription$ When CARDNAME leaves the battlefield, remove all gold counters from all creatures.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigRemove | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, remove all gold counters from all creatures.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may return target Equipment card from your graveyard to the battlefield. If you do, you may attach it to CARDNAME.
Oracle:When Auriok Survivors enters the battlefield, you may return target Equipment card from your graveyard to the battlefield. If you do, you may attach it to Auriok Survivors.
A:AB$ Pump | Cost$ T | ValidTgts$ Equipment.YouCtrl | TgtPrompt$ Select target equipment you control | SubAbility$ WindwalkerAttach | StackDescription$ None | SpellDescription$ Attach target Equipment you control to target creature you control.
T:Mode$ SpellCast | ValidCard$ Card.White | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever a player casts a white spell, you may pay 1. If you do, gain 1 life.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigGrave | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, you gain 3 life.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigGrave | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, you gain 3 life.
S:Mode$ Continuous | Affected$ Permanent.Other+YouCtrl | AddHiddenKeyword$ HIDDEN Indestructible | Description$ CARDNAME and other permanents you control are indestructible.
Text:Equipped creature gets +1/+0 and has vigilance.
K:eqPump 2:+1/+0/Vigilance
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.AttachedBy+Human | Execute$ TrigToken | TriggerDescription$ Whenever equipped creature dies, if it was a Human, put a 1/1 white Spirit creature token with flying onto the battlefield.
Oracle:Equipped creature gets +1/+0 and has vigilance.\nWhenever equipped creature dies, if it was a Human, put a 1/1 white Spirit creature token with flying onto the battlefield.\nEquip {2}
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, sacrifice it unless you discard two cards.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, you may draw a card.
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.