- can tab focus
- space/enter to select
- brighten on hover
- use previous "hover" border for focus indicator
- fix various layout and style bugs (e.g. too-short widths and missing hoverable properties)
- allow tab key to set focus to next component (e.g. prevent tables from swallowing tab and shift-tab)
- flicker-free reinstatement of current selection when table model data changes
setPaidList, beforePayManaAI, setAllReplacingObjects, hasReplacingObject, wasCancelled were never used (removed)
reduced visibility of setManaPart,
finalized setReplicateManaCost, setXManaCost, setIsMultiKicker, setIsReplicate, setIsCycling, setConditions, (set/add)OptionalAdditionalCosts since they were called by CardFactoryUtil only => all removed from WrappedAbility.java
- make color of listbox selection depend on listbox focus, not cell focus
- avoid NPE when attempting to start a challenge when there isn't one to start
this works around a quirky interaction between WrapLayout and MigLayout that was causing interior cells to be properly resized but the cells surrounding them would not be, resulting in widgets that would be too large or too small for their unupdated containing cells
CommonDrawback: wrote in a single line the complicated chkAIDrawback method
removed unused imports
CardUtil.getRandom replaced with Aggregates.random
getReflectableMana uses Set as collection, so it does not have to check for duplicates before adding new items.
united two CMC calculation methods (one was getCMC from card that read characteristics while other took more factors into account)
Some notes:
- Special rewards for normal duels should be extremely rare, mostly for very hard opponents, 1 special reward per opponent, and always a percentage chance of getting the special reward (preferably less than 50%) rather getting a guaranteed reward.
- In the interests of downward compatibility, it is possible to define the Card Reward either in the [quest] portion (like before) or the [metadata] portion of the dck file. (Duels do not have the [quest] portion but if the definition were simply moved from [quest] to [metadata], all current challenge files would have stopped working properly.)
GameActionUtil - uses common GuiDialog.confirm
CardFactoryLands - converted inlined class to nested
ChangeZoneEffect - removed stringbuilder wrapper (as it was not used anyway)
replaced isComputer/isHuman where it was clear and possible
- set focus on the catalog table when the deck editor opens so the arrow keys work immediately without having to click the mouse
- if multiple cards are selected, apply the add/remove operation to all of them, not just the first one
- hide the non-functional 'remove' buttons in draft mode
- protect against NPE when the cursor is hovering above a row that disappears just as swing is trying to get the tooltip
- add note to add button tooltip that the spacebar can be used as a shortcut
- added forge-specific spinner widget (FSpinner)
- allowed labels to have their toggle state read externally and added configuration to set whether the onClick command is executed on mouse button down or mouse button up (FLabel)
- added builder pattern to FTextField and autoset properties to common values
- fixed header comments in WrapLayout
- renamed DialogCustomFormat to the more generic DialogChooseSets since I use it now from the filters too; extended its functionality to run a specified command on ok button click
- removed Filters dockable panel
- added old filters functionality to the stats buttons above the catalog table (stats can no longer be removed via a preference setting)
- combined scattered metadata about the filters (e.g. icon, label, filter predicate) into a single enum
- rewrote filter utility functions to not have any side effects (they now use no global data/singletons)
- added "Owned" column to spell shop catalog, indicating number of cards already owned by player (can remove column with preference)
- don't count the "click" as a sort command when resizing a column
- exposed top-level main world custom format in QuestController -- other format-retrieving methods would be masked by the current world selection
- added utility fn to TextUtils to create a (locale-independent) Title out of an ENUM
- added a templated Pair<T, V> utility class for ad-hoc two-value parameter returning
- prevented invalid enum values in editor_preferred.xml from causing errors
* in abilityFactory target parsing code extracted as a single method
* due to getDefinedCards return type generalization, a lot of classes had to declare variables as List (not arraylist)
- saved quest data when pet settings are modified
- moved the selectedPets map from QuestController to QuestData (since it now gets persisted); also renamed it petSlots for clarity
- incremented the quest file format version
- added code to bring older file formats up to date
- finally, while researching how the data is saved, I noticed that saveData() can be called from multiple threads. I made the method synchronized to prevent file corruption
- adds tooltips for the filter checkboxes (issue 657)
- ensures the filter checkboxes are always in the same order
- puts all labels and checkboxes in "official" order from the mtg rules book:
color order: WHITE, BLUE, BLACK, RED, GREEN, COLORLESS, MULTICOLOR
type order: LAND, ARTIFACT, CREATURE, ENCHANTMENT, PLANESWALKER, INSTANT, SORCERY
* Costs: joined all CostGainLife implementations. Syntax is: GainLife<LifeAmount/Player.Selector/[cntPlayers|*]> asterisk in last parameter means "all players".
* Changed a lot of methods to pass GameState as a parameter rather than get it from Singletons.*
*Added Planes
Academy at Tolaria West
Fields of Summer
Goldmeadow
Krosa
Lethe Lake
Llanowar
Panopticon
Raven's Run
The Fourth Sphere
The Great Forest
The Hippodrome
*Added phenomenon Mutual Epiphany
* sideboard checked independently of maximum amount of same cards in deck
* schemes and planes generation code in GameNew.java now demands a player.
- toForgeCardList method removed
* Decks have no extra sections for variants (sideboard works in most cases)
* Deck Format restrictions are in a separate class not related to GameType
+ DeckSection has its own toString overload
+ DualListBox operates CardPrinted properly (sideboarding dialog uses cardprinted instances)
+ ItemPool.remove method returns true if any elements were removed.
Added ForgetChosen parameter to ChooseCardEffect to remove chosen card from host card remembered object list.
Added Mandatory parameter to ChooseCardEffect.
Added The Mimeoplasm.
- Vanguard:Added Sakashima the Impostor Avatar
- Added Mandatory$ True to Parallax Nexus
- Made Borrowing 100000 Arrows and Theft of Dreams ready for multiplayer
- Added TargetsWithDifferentControllers param for targeting with different controllers (should supercede TargetsFromDifferentZone in most cases as it works with player lists instead of using getOpponent)
- Reverted LocalCount in favor of RepeatPlayer in RepeatEach (Molten Psyche and Netherborn Phalanx)
- Converted Myojin of Night's Reach and Imprison This Insolent Wretch to multiplayer scripts
* Added Eye of the Storm, Neurok Transmuter, Overwhelming Instinct and Total War
* Vanguard: Added Phage the Untouchable Avatar and Prodigal Sorcerer Avatar
* Scheme: Added My Undead Horde Awakens
World-specific format enforcing and starting world selection will be added in later stages. Also, something has to be done about locked (non-repeatabled) challenges so they do not end up locking other challenges in different worlds.
- Added LocalCount to resolve of DamageDealEffect and DrawEffect which allows calculated variables to be calculated per player (should allow a few more cards to be made multiplayer compatible)
- Fixed ChangeZoneAll so that it works correctly when Defined returns more than one player
- Small tweak to Triggers to allow them to refire Statics when they finish resolving (useful for Conving Mirage to actually grant its ability immediately upon resolving)
Realms Befitting My Majesty
Roots of All Evil
The Iron Guardian Stirs
The Very Soil Shall Shake
Which of You Burns Brightest?
So now we have enough schemes to create legal scheme decks :D (Two of each we have,but still)
*Made exiting the scheme editor dump you at the archenemy home screen.
*Made scheme deck editor save correctly.
(Quest icons used created by Teekatas, from his Legendora set http://raindropmemory.deviantart.com)
(Thanks to the MAGE team for permission to use their targeting arrows.)
(Thanks to http://www.freesound.org/browse/ for providing some sound files.)
11623 cards in total.
12045 cards in total.
All sounds use the event bus model now and are not called directly. Two new sounds to the list of sounds supported by Forge, Blocker Assigned and Token Created. We could use some help in finding interesting sounds that we can add to forge.
This version is primarily a maintenance release. When we built the 1.3.6 beta we noticed a bug and we were able to fix it fairly quickly. This resulted in the 1.3.7 beta release and we did not announce the 1.3.6 beta release as it was buggy.
The sound files need to be in wav or au format, wav appears to be more wide spread but the code can handle either format. The sound files need to be copy right free and they should be in the public domain.
You can either record your own sounds if you have the necessary equipment or you may be able to find an appropriate sound on a web site such as this site:
http://www.freesound.org/browse/
You should note that sound files can be large sized and we would like to avoid this if possible. A good size to shoot for would be 50 K or less. There is a freeware sound editor that may have versions for all operating systems. This app is named Audacity.
We now have a Vanguard mode implemented. This is a work in progress. The older match layout files are incompatible with the new Vanguard mode. The original match_default.xml, match_preferred.xml and the match_preferred.xml saved to a different name files need to be deleted and can no longer be used. You can keep your editor_preferred.xml file. But you will have to setup your match view panels using the new match_default.xml file.
The visuals for targeting arrows has been improved and looks better, with an adaptation of the arrow drawing code from MAGE. Thanks to the MAGE team for permission for the adaptation.
There were reports that special challenge decks would cause a co-modification error in quest mode. This bug is likely fixed at this time.
After releasing the 1.3.7 beta we noticed several additional bugs and they have been fixed for the 1.3.8 beta. We also have several new cards and work on the deck editors continue.
--
@@ -29,7 +17,7 @@ On several occasions people have noticed that the forge deck editor and/or quest
Several people have noticed that the cards displayed on the battlefield will fail to be displayed when the number of cards on the battlefield increases. Maximizing the human panel can help to re-display the cards.
Some time was spent turning the static ETB triggers into the proper ETB replacement effects they should be, mainly to interact correctly with eachother. This work is not yet finished. As a result there is currently some inconsistencies with "Enters the battlefield with counters" (Not incredibly noticeable).
Some time was spent turning the static ETB triggers into the proper ETB replacement effects they should be, mainly to interact correctly with eachother. This work is not yet finished. As a result there is currently some inconsistencies with "Enters the battlefield with counters" (Not incredibly noticeable).
It seems like the front face of double faced cards aren't triggering properly, but the back face and single faced cards are.
@@ -40,7 +28,7 @@ A recent contribution to the code base should fix some of the bugs that people n
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 is likely to be compatible with Java 7 at this time. Some people have used forge with Java 7 and have not reported any problems that are related to Java 7. If you would like to upgrade to Java 7 and have held off because of Forge then you may upgrade as we do not think that it will cause an incompatibility type of problem at this time. We will continue to try to maintain compatibility with Java 6 for the foreseeable future.
Forge is likely to be compatible with Java 7 at this time. Some people have used forge with Java 7 and have not reported any problems that are related to Java 7. If you would like to upgrade to Java 7 and have held off because of Forge then you may upgrade as we do not think that it will cause an incompatibility type of problem. We will continue to try to maintain compatibility with Java 6 for the foreseeable future.
--
@@ -53,394 +41,189 @@ Some people use the Windows application 7zip. This utility can be found at http:
Fixes/Features:
- Cleared out the changes.txt file, now ready for new material.
- CheckStyle.
- Tweaked doTriggerAINoCost of AF DamageAll.
- Tweaked shouldPumpCard.
- CheckStyle.
- Fixed Squandered Resources.
- Fixed optional Replacement effects not firing again after "No" is chosen once (experimental).
- Little script updates.
- When a game is restarted, set lands played back to 0.
- sideboarding affects the next match correctly
- use bulk operations for card moving where ever possible to avoid stale GUI updates
- reverting unwanted changes from r19381 to core classes
- fix background coloring not being displayed in deck editor card detail rarity label
- add tooltip for rarity label
- Fixed broken Shandalar decks.
- add default editor preferences file so missing preferences will always have a default value
- remove editor.preferences from repo -- it will get created as necessary
- set better width and sorting defaults
- wrap card catalog toggle filters when the tab is resized small
- make current deck stats widgets wrappable
- Converted inlined classes to nested
- remove unused imports
- InputSelectManyCards uses only overloads syntax. made abstract
- Fixed AF Mana used on subabilities.
- cosmetic changes in chooses (i'm thinking of a good way to make that choices player-independent)
- Moved check for card controller (used in CardDetailPanel and ImageCache) to card class - that's not perfect, but at least eliminates code duplication.
- calls to AI-related methods require the player parameter to have AIPlayer type to enable calls to ai-specific methods (like acquiring aicontroller by aiplayer.getcontroller().getai() and performing something from it) without need to cast types)
- replaced deprecated methods isHuman/isComputer with reference comparisons (to compare with acting player) and checks of player's hostility.
- predictThreatenedObjects moved from AbilityFactory to ComputerUtil (for now, will find a more specific place later)
- GameActionUtil.payCostDuringAbilityResolve method now demands player parameter (though it is always human player)
- fix NPE in card detail when the card does not belong to any set (e.g. a token)
- GameAction - extract method * 3
- GameActionUtil - uses common GuiDialog.confirm
- CardFactoryLands - converted inlined class to nested
- ChangeZoneEffect - removed stringbuilder wrapper (as it was not used anyway)
- replaced isComputer/isHuman where it was clear and possible
- Fixed a bug with AddToughness.
- Removed reminder text for suspend from Talon Gates. Description was too long for SA choice window so the second choice was hidden (on a 1280 wide display at least). We need to find a way to wrap text in the choice window when it would extend past the edge of the screen.
- Fix last commit commiting WIP.
- Another fix for AddToughness.
- Fixed Verdant Haven.
- Fixed Ogre Slumlord.
- Sell lands down to 50 when selling all extras in the card shop
- Converted Alpha Status to script
- remove cards from one table after adding them to the other table so the displayed card stays consistent with the focused card
- Made it possible to include special rewards like predefined cards or duplicate cards in Quest duels.
* Some notes:
* Special rewards for normal duels should be extremely rare, mostly for very hard opponents, 1 special reward per opponent, and always a percentage chance of getting the special reward (preferably less than 50%) rather getting a guaranteed reward.
* In the interests of downward compatibility, it is possible to define the Card Reward either in the [quest] portion (like before) or the [metadata] portion of the dck file. (Duels do not have the [quest] portion but if the definition were simply moved from [quest] to [metadata], all current challenge files would have stopped working properly.)
- Removed duplicate sharesCreatureTypeWith property from isValid
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle.
- More Improvements of AI for Auras with "AILogic$ Curse".
- Fixing accidental submission of potential Sideboard code
- Changed the "spend only <color> mana on X" mechanism from using a SVar to using an ability parameter (first step towards implementing e.g. Soul Burn).
- Fixed AI code meddling with damage replacements.
- Fixed ConcurrentModificationException in InputMulligan.
- Fixed InputSelectMany.
- Improved ChooseSource AI.
- Fixed a shouldPumpCard call switching P/T.
- fixed NPE bug in initialize of colorX in InputPayManaX class
- added code to allow AI to make Charm choice
- modified inputUntapUpToNType so same card cannot be chosen more than once
- Made sure Cunning Giant's replacement effect (for now) only triggers if it wasn't blocked, not also if it tramples over something.
- Fixed Assemble the Legion.
- Added AIPlayer parameter to doTrigger and chkAIDrawback
- Fixed CostTapType hanging when X=0.
- Methods to test a string against a valid card type moved to forge.CardType
- CommonDrawback: wrote in a single line the complicated chkAIDrawback method
- removed unused imports
- CardUtil.getRandom replaced with Aggregates.random
- getReflectableMana uses Set as collection, so it does not have to check for duplicates before adding new items.
- united two CMC calculation methods (one was getCMC from card that read characteristics while other took more factors into account)
- Cunning Giant will now interact correctly with planeswalkers
- CardEdition: removed ctor overload and made it private (editions must not be created by other code but nested Reader class anyway)
- Player: isComputer and isHuman methods redefined as getType() == PlayerType(computer/human), no overloads needed in derived classes
- player.isHostileTo() renamed to more correct 'isOpponentOf()'
- missing HumanPlayer.java for commit 19420
- moved GameAction & its util class to forge.game
- ensure stats labels in deck editor are shown at the correct height on large displays
- this works around a quirky interaction between WrapLayout and MigLayout that was causing interior cells to be properly resized but the cells surrounding them would not be, resulting in widgets that would be too large or too small for their unupdated containing cells
- Fixed Krosa Chaos trigger
- GameAction divided into 2 parts: original keeps cards' zone transitions, GameActionPlay.java holds methods for playing spells (mostly used by human player I guess)
- in ComputerUtil demanded player to be AiPlayer for playing spells
- add set type information to setdata.txt and store it via CardEdition
- The Very Hard Jamuraa decks can now occasionally (rarely) give you special extra rewards.
- simplify and theme choose sets dialog
- Minor technical improvement to a check in BoosterUtils.java.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Sound System: improved the performance of the sound system by synchronizing certain sounds that tend to occur multiple times in rapid succession (damage, life loss, bury a creature) so that only one can play at a time.
- CheckStyle.
- Added some LQ pic URLs.
- added ability to loop over defined cards to RepeatEachEffect. added InGraveyard to Card.hasProperty.
- Added a LQ pic URL.
- Fixed Steel Hellkite.
- ChangeZoneAll with destination Library will now let you choose the order.
- Fixed spell description for Hypnotic Cloud
- Improved Sedris, the Traitor King's script to better handle the exile at next EOT
- Fixed Haste on suspended creatures.
- Fixed AI ignoring "DiscardValid" parameter.
- make set chooser dialog overlay-based instead of JDialog-based
- move type parsing from private constructor to reader class; add comment on purpose of 2-letter codes
- Fixed Deathpact Angel.
- differentiate item hilight when a FList listbox has lost focus from when the listbox is selected
- ensure the CardListViewer always appears in the center of the screen
- allow spacebar to move cards in DualListBox and enter to select the OK button
- make color of listbox selection depend on listbox focus, not cell focus
- avoid NPE when attempting to start a challenge when there isn't one to start
- set button focus after match; this also gets the game log scrolling properly
- SpellAbility: afterResolve and afterPayMana were removed, since they were not used.
- little refactoring for global ruin
- CardEdition: remove unused ctor
- SpellAbility: Intrinsic/Extrinsic types were never assigned (removed)
- setPaidList, beforePayManaAI, setAllReplacingObjects, hasReplacingObject, wasCancelled were never used (removed)
- reduced visibility of setManaPart,
- finalized setReplicateManaCost, setXManaCost, setIsMultiKicker, setIsReplicate, setIsCycling, setConditions, (set/add)OptionalAdditionalCosts since they were called by CardFactoryUtil only => all removed from WrappedAbility.java
- allow highlighting and copying of match log in ViewWinLose
- make saving layouts thread safe
- add ctrl(cmd)+enter hotkey to auto button in ability chooser dialog
- scroll game log to top on display
- reshow selected card when the listbox regains focus
- show current card /after/ the events stop firing so the card data doesn't get overwritten
- Converting Sheltered Valley to script (no AI exists in hardcode, but we probably should an add an SVar to not play this if that player already controls one of these)
- Added an ai check svar to Sheltered Valley so that it won't play it if it already has another one on the battlefield
- AiController.getLandsToPlay will now check NeedsToPlayVar and filter out relevant cards
- Added a deck editor icon for products. Hooked up the icon in FSkin and added a commented out basic hook for it in SEditorUtil
- getAvailableMana and mapManaSources accept any player as parameter, since AI wants to evaluate player's mana he might use to pump creatures
- add pack filter in spell shop
- use FButtons instead of FLabels on the AssignDamage dialog so default actions and tabbing work properly
- use predicates instead of a custom count function
- don't select negative row after buying every last item in the spell shop
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle
- CheckStyle
- small script tweaks
- Fixed Enlightened Tutor not shuffling the library.
- Added the global rule change: "Each creature assigns combat damage equal to its toughness rather than its power.".
- Converted Doran, the Siege Tower.
- Converted Shifting Sliver to script.
- Cleanup.
- Created Variants branch.
- Variants: Created command zone view.
- Variants: Moved effects and emblems to command zone.
- Variants: Added a bunch of Vanguard cards (Thanks, Marc!)
- Variants: Added a Vanguard home screen.
- Variants: Created command zone view.
- Variants:2 files weren't added correctly.
- You no longer have to choose the order of cards for Elixir of Immortality.
- Fixed payment of phyrexian mana.
- Fixed Shocklands not using canPayLife(2).
- The AI will now better react to Platinum Emperion.
- Added a Java 7 compatibility fluff piece to the changes.txt file.
- If lethal damage has already been assigned just treat is as 0 in VAssignDamage
- Minor text change
- CheckStyle.
- Vanguard: added AffectedZone parameter to Birds of Paradise Avatar
- ChangeZone can now remember cards moved from the stack
- CheckStyle
- The AI can now use Icy Prison.
- Cleanup AF can now be used to clear individual defined cards from remembered lists
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Variants: Fixed CardRules parser choking on "+" characters.
- Fixed the wrong player gaining life when GainLife has a targetPlayer and a defined player. Defined player takes preference again as it used to. This fixes Divine Congregation, Gerrard Capashen and Spoils of Evil
- setinfo and oracle data for Chaotic Backlash
- Fixed Nomad Mythmaker targeting.
- CheckStyle.
- Another fix for Nomad Mythmaker.
- Fixed Exotic Curse.
- Reverted Nomad Mythmaker.
- Cleanup of getLKICopy functions.
- Fixed Starlit Sanctum.
- Hopefully the final fix for Nomad Mythmaker
- More fixing for Nomad Mythmaker.
- The AI will no longer choose non-Pump Auras with Nomad Mythmaker.
- The AI will no longer choose non-Pump Auras with Nomad Mythmaker.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle.
- Added an AI SVar to Zombie Mob.
- Booster Draft: added four more choices to block booster draft set order selection (e.g. so that MRD/DST/5DN is possible in addition to only 5DN/DST/MRD, etc.)
- corrected static ability name in effect script for Ember Gale
- Variants - Added Ertai (vanguard avatar)
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Made the SVar granted by Tower Above unique.
- Variants - Added the following avatars: Gerrard, Gix and Greven il-Vec
- Variants - Hand and life modifiers will now be displayed in the card info panel
- Variants - Added the following avatars: Grinning Demon Avatar, Hanna and Karn
- Variants - Added the missing EffectZone param to Hanna and Karn
- Variants - Added the following avatars: Lyna, Maraxus, Mishra, and Multani
- CheckStyle.
- Variants - Added the following avatars: Oracle, Orim, Rofellos, Selenia, and Serra
- Variants - Fixed TriggerZones for Rofellos
- Temporary fix for quest challenges.
- Variants - Added the following avatars: Volrath and Xantcha
- SoundEffectType holds only filename, unable to reproduce sounds by itself,
- EventBus added to GameState to properly route the ingame events to Sound system, game log and remote players (when time comes)
- AudioClips are cached at first request, this may lead to slowdowns (will precache if this is an issue)
- Most calls to sound system are still preformed directly, with a few only converted to events
- Variants: Removed avatars with RemAiDeck:True from AI's avatar list.
- Variants: Made AI aware of the avatar.
- Merged changes from trunk to Variants: r18254-r18318
- fix typo for sound
- setupPlayZone will now call doLayout directly and only once (hopefully fixes the ConcurrentModificationException).
- Convert Erg Raiders to script
- Variants - Added the following avatars: Sidar Kondo, Sisay, Squee, Urza, and Sliver Queen, Brood Mother
- Merged changes from trunk to Variants: r18319-r18323
- removed '3' from addpoison event
- the correct parameter is num
- Variants - Added the following avatars: Starke, Tahngarth, Takara, and Tawnos
- Changed AdjustLandPlays to a player keyword
- Converted Explore and Summer Bloom to script
- More preparations for quest worlds.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Sound System: converted counter sounds to the event bus system, NPE fix when making an audio clip, various minor fixes and typo corrections in sound system and event classes.
- CheckStyle.
- Removed some unnecessary updateObservers calls in startRound.
- Sound System: converted tap/untap sound playback to an event, preliminary support for synced sounds using the event model.
- Sound System: both synced and non-synced sounds are supported now using the event model (the type of the sound is declared in SoundEffectType constructors).
- Sound System: converted shuffle and flipcoin sounds to events, some minor stylistic changes.
- Sound System: converted more sounds to events.
- Sound System: done converting sounds to events.
- Sound System: last of the direct sound calls converted to an event.
- Moved most of the stuff happening in startGame outside of the swingWorker (to fix the ConcurrentModificationException error).
- Added Arcbound Fiend and Matsu-Tribe Decoy by swordshine.
- Fixed the global rule change "No more than one creature can attack each combat".
- Fixed Sleeper Agent.
- move questWorld out of QuestData package (because only things being serialized should be kept there)
- remove unused imports (soundeffecttype mostly)
- Fixed MustBlockCards not being checked for still attacking.
- Counter class renamed to CounterType
- CheckStyle.
- Convert Lighthouse Chronologist to script
- counters: united calls using multipliers and ignoring them,
- removed useless setCounter wrapper
- Variants: WIP new Vanguard Home screen for multiplayer shenanigans (Does not work yet)
- CheckStyle.
- Merged changes from trunk to Variants: r18323-r18354
- Converted Spirit of Resistance to script.
- Variants - Added the following avatars: Titania
- Reorganized Conditions of static abilities (WIP).
- Variants:Fixed the UI side of the new Vanguard home screen. (Now to make the match actually start!)
- Variants:Added some apparently unadded scripts from trunk.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Reorganized Conditions of static abilities (WIP).
- Fixed Alpha Status.
- CheckStyle.
- Unblocked missed script folder revisions.
- Sound System: added two new sounds (Block and Token), fixed a bug that caused the destroy sound to be continuously played at every phase when a planeswalker was on the field.
- Check for null arrays before assigning in SDisplayUtil
- Re-Merged 18323-18354 and merged 18357-18366 into Variants. *crosses fingers*
- Variants - Added setinfo to avatars and uploaded images to cardforge (they should download like any other card now)
- Variants - Reverted setinfo to avatars (caused crash on set image downloads)
- Variants:Added VAN set.
- Variants:Added SetInfo to avatars, courtesy of Marc.
- Variants:Replaced CardDb.getAllCards() with CardDb.getTraditionalCards() where appropriate.
- Variants:Reverted preferences.
- Updated some SVars.
- Added a fluff piece to the changes.txt file.
- Cleanup of CloneEffect.
- Bundled inZone property of cards.
- Targeting Overlay: much prettier targeting arrows (thanks to the MAGE team for permission for adaptation), some initial work for the "mouseover-only" mode fix (not enabled yet).
- Variants: Keep separate lists of traditional/nontraditional CardPrinted's in CardDb.
- Variants: Fixed crash when only playing against 1 opponent on vanguard.
- Variants: Fixed vanguard match not starting when selecting non-random avatar.
- Targeting Overlay: Card mouseover mode fixed and enabled, should work fine and should show only the targeting arrows (both combat and non-combat) for the card the mouse is hovering over.
- Converted the property "SameNameAsImprinted" to the "SharesNameWith" group.
- Variants - Added the following avatars: Erhnam Djinn Avatar, Etched Oracle Avatar, and Fallen Angel Avatar
- Targeting Overlay: Fixed a bug with the combat targeting arrows shown both ways in card mouseover mode.
- Added a fluff piece to the changes.txt file.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Variants: Added error handling for managing not to select deck/avatar in vanguard mode.
- Variants: Prevented user from selecting multiple avatars.
- Removed unused imports.
- Organized imports a little bit better.
- Cleanup.
- CheckStyle.
- renamed CounterAdd/Remove events
- removed impropper use of CardPrinted getType method
- commander stored as a single card in deck/Deck.java
- removed inpropper use of getType of InventoryItem objects
- check 4 traditionality of card
- Small renaming in GameAction
- Reorganized Conditions of static abilities (WIP).
- Slightly increased the size of the stats panel to better display long winning streaks.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle.
- Fixed Haunting Echoes.
- Variant: Fixed non-Random Vanguard selected.
- Fixed Karn Avatar.
- Cleanup of xCount.
- More cleanup of xCount.
- Removing unnecessary "HIDDEN" strings (WIP).
- Removing unnecessary "HIDDEN" strings (WIP).
- Convert Sylvan Library to Script
- Fixed sharesNameWith Imprinted
- Converted Haunting Echoes to Script
- Small cleanup in files
- Added PermanentNoncreature AF
- Converted Standstill and Bridge from Below to script
- Targeting Overlay: in the "card mouseover" mode, during the order of blockers declaration, the targeting overlay will first show all the blockers for the card for which the order of blockers is declared, and will also show individual arrows for each blocker when the blocker is selected in the blocker order list.
- Fixed Erg Raiders
- Removing unnecessary "HIDDEN" strings (WIP).
- Removing unnecessary "HIDDEN" strings (WIP).
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Variants:Fixed exile origins for some effects
- CheckStyle.
- Fixed MaxhandSize < 0 case in InputCleanup.
- Fixed Oath of Druids.
- Sound System: Added a previously missed link for the "Life Loss" sound event (now the sound will play during certain damage dealing effect resolutions which were previously missed).
- Sound System: TODO point removed.
- Targeting Overlay: minor stylistic fix in the code.
- Moved generatedMana from ManaEffect to GameActionUtil to use it for the AI to predict what a mana ability will produce (it seems to be the only function that is actually up to date).
- Removed getProducedMana from AbilityManaPart (it wasn't really functional anyway).
- Merged r18371-r18427 from trunk into Variants
- Merged Variants into trunk. You may need to delete match_preferred.xml
- Convert Lich to Script
- Convert Phylactery Lich to script
- Converted Noviken Heart of Progress to script
- Rechanged ValidGrave to Valid<AnyZone> count method that was lost in the merge.
- Fixed description for Titania's Song
- Updated cardTemplateScript.py for variants
- Updated CHANGES.txt
- Fixed Jace, Architect of Thought's first ability
- Added some AI code for casting Bonfire of the Damned via Miracle.
- Changed Gather Specimens to a replacement instead of triggered effect
- Fixed some triggers for use from command zone (WIP)
- Fixed some triggers for use from command zone (Done)
- Minor script changes
- Made player tabs in Vanguard setup more descriptive
- Updated tooltip text for hand icon so that it indicates the player's maximum hand size.
- Fixed Vanguard player tab names when re-adding players in setup
- Fixed doTriggerAINoCost in CounterAI when the stack is empty.
- Added a fluff piece to the changes.txt file.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed max hand size.
- Removed a debug line from ChangeZone (related to Nafs Asp).
- Made the effect names for Nafs Asp and Glass Asp more descriptive.
- Somebody had overwritten worlds.txt in the SVN with an obsolete (incorrect) version, restored.
- Fix for Squeaking Pie Grubfellows.
- Removing unnecessary "HIDDEN" strings (WIP).
- Removing unnecessary "HIDDEN" strings (WIP).
- Made static effects reset hand size correctly for Vanguard.
- Added a LQ pic URL.
- CheckStyle.
- AI fix for Karn Liberated.
- Removing unnecessary "HIDDEN" strings (WIP).
- Fixed freeze whenever AI cast a creature with Tahngarth avatar
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- changed "getParentTargeting" methods to skip checking the "child" SpellAbility first
- consolidated code to find the fighters into one common method
- CheckStyle.
- reverting earlier changes until better solution is found
- After a draft finishes, properly reset buttons used in the Deck Editor
- Updated LQ pic urls for vanguard avatars to replace the cruddy ones from Gatherer
- Made Vanguard tab panel conform (a little) better to skin theme. Unfortunately, due to *clenches fist* Swing some out of place code had to be added because you can't specify colors for certain parts of the JTabbedPane component in it's actual class because that would make too much sense.
- Cleanup: Removed duplicate instances of TriggerZones param
- Vanguard avatar selection will now remove cards with RemRandomDeck flag from the list when choosing Random. Useful for cards like Diamond Queen Avatar that are still great in the right deck.
- Updated some avatar flags
- don't let tables extend past bottom of deck editor page
- calculate the correct table row selection when multiple cards are bought at once
- change selection highlight in deck editor tables based on component focus to more clearly indicate which table has focus
- allow tab key to set focus to next component (e.g. prevent tables from swallowing tab and shift-tab)
- flicker-free reinstatement of current selection when table model data changes
- Added some text to winlose screen that would explain why player lost or won
- fixing a crash when creature with B/G sword attacked AI (there was NPE on attempt to iterate over restrictions)
- make button-like FLabels act more like buttons
- can tab focus
- space/enter to select
- brighten on hover
- use previous "hover" border for focus indicator
- fix various layout and style bugs (e.g. too-short widths and missing hoverable properties)
- Added a medium quest by Nordos: Cipher 2.
- make start button change appearance on focus
- avr, m13, rtr, gtc - pictures of boosters and fatpacks
- moved that infiniteStock field from ItemPool to more approriate place
- moved infiniteSupply flag into table model, since remove (that should not remove cards when supply is endless) method belongs to model layer.
- Fixing Domri Rade placing non-Creatures on the bottom of the library
- Convert Curse of Misfortunes to Script
- Updating mtg-data.txt with GTC cards.
- Convert Painter's Servant to Script
- Small fix for Sewer Nemesis
- Fixed ai not discarding cards in certain discard modes
- Fixed the Chaos effect of Goldmeadow
- Better fix for Goldmeadow
- Removed a debug output I'd left in an earlier commit
- delete jpg booster pictures, replace them with PNG (since code wants png), ISD, DKA added
- 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.
Many people helped with this version. A special thank you goes out to them. (Attempted to list names alphabetically):
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.")
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ DarkEffect | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, until your next turn, whenever a player taps a land for mana, that player adds one mana to his or her mana pool of any type that land produced.
SVar:DarkEffect:AB$ Effect | Cost$ 0 | Name$ Dark Power Scheme | Duration$ UntilYourNextTurn | Triggers$ DarkPower | SVars$ DarkMana
SVar:DarkPower:Mode$ TapsForMana | ValidCard$ Land | Execute$ DarkMana | TriggerZones$ Command | Static$ True | TriggerDescription$ Whenever a player taps a land for mana, that player adds one mana to his or her mana pool of any type that land produced.
SVar:DarkMana:AB$ ManaReflected | Cost$ 0 | ColorOrType$ Type | Valid$ Defined.Triggered | ReflectProperty$ Produced | Defined$ TriggeredPlayer
Oracle:When you set this scheme in motion, until your next turn, whenever a player taps a land for mana, that player adds one mana to his or her mana pool of any type that land produced.
A:SP$ Effect | Cost$ 1 W | ValidTgts$ Player | Name$ Abeyance Effect | StaticAbilities$ STCantBeCast,STCantBeActivated | RememberObjects$ Targeted | AILogic$ BeginningOfOppTurn | SubAbility$ DBDraw | SpellDescription$ Until end of turn, target player can't cast instant or sorcery spells, and that player can't activate abilities that aren't mana abilities.
SVar:STCantBeCast:Mode$ CantBeCast | ValidCard$ Instant,Sorcery | Caster$ Player.IsRemembered | Description$ Target player can't cast instant or sorcery spells, and that player can't activate abilities that aren't mana abilities.
SVar:STCantBeCast:Mode$ CantBeCast | ValidCard$ Instant,Sorcery | Caster$ Player.IsRemembered | EffectZone$ Command | Description$ Target player can't cast instant or sorcery spells, and that player can't activate abilities that aren't mana abilities.
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$ AttackerBlocked | ValidCard$ Creature.Green,Creature.White | ValidBlocker$ Card.Self | 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$ 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$ 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
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | SacValid$ Creature | Defined$ Each
T:Mode$ Discarded | ValidCard$ Card.YouDontCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever an opponent discards a card, CARDNAME gets +2/+2 and gains fear until end of turn. (It can't be blocked except by artifact creatures and/or black creatures.)
T:Mode$ Discarded | ValidCard$ Card.OppOwn | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever an opponent discards a card, CARDNAME gets +2/+2 and gains fear until end of turn. (It can't be blocked except by artifact creatures and/or black creatures.)
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ AcademicDraw | TriggerDescription$ At the beginning of your end step, if you have no cards in hand, draw seven cards.
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, discard your hand.
SVar:RolledChaos:AB$ Discard | Cost$ 0 | Mode$ Hand | Defined$ You
T:Mode$ PlanarDice | Result$ Planeswalk | TriggerZones$ Command | Execute$ RolledWalk | Secondary$ True | TriggerDescription$ Whenever you roll Planeswalk, put this card on the bottom of its owner's planar deck face down, then move the top card of your planar deck off that planar deck and turn it face up
SVar:RolledWalk:AB$ Planeswalk | Cost$ 0
A:AB$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | ActivationZone$ Command | SpellDescription$ Roll the planar dice.
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.
T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigBattleCry | TriggerDescription$ Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)
S:Mode$ Continuous | Affected$ Sliver | AddAbility$ Damage | Description$ All Slivers have "2, Sacrifice this permanent: This permanent deals 2 damage to target creature or player."
SVar:Damage:AB$DealDamage | Cost$ 2 Sac<1/CARDNAME> | Tgt$ TgtCP | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player.
SVar:Damage:AB$DealDamage | Cost$ 2 Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player.
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
SVar:X:Count$TypeYouCtrl.Land
SVar:Y:Count$TypeOppCtrl.Land
A:SP$ RepeatEach | Cost$ 2 R | RepeatPlayers$ Player | RepeatSubAbility$ DBDamageOpp | SpellDescription$ CARDNAME deals damage to each player equal to the number of lands he or she controls.
SVar:DBDamageOpp:DB$DealDamage | Defined$ Remembered | NumDmg$ X | References$ X
SVar:ChooseCT:DB$ ChooseType | Type$ Creature | AILogic$ MostProminentInComputerDeck | SpellDescription$ As CARDNAME enters the battlefield, choose a creature type.
S:Mode$ Continuous | Affected$ Card.Self | AddType$ ChosenType | Description$ CARDNAME is the chosen type in addition to its other types.
S:Mode$ Continuous | Affected$ Creature.ChosenType+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other creatures you control of the chosen type get +1/+1.
Oracle:Evolve (Whenever a creature enters the battlefield under your control, if that creature has greater power or toughness than this creature, put a +1/+1 counter on this creature.)
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.
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.
T:Mode$ AttackerBlocked | ValidCard$ Creature | ValidBlocker$ Card.Self | 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$ Player | Execute$ TrigBounce | TriggerDescription$ Return blocked creature to its owner's hand at end of combat.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigDiscard | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, discard a card at random. If you discard a creature card this way, return it from your graveyard to the battlefield unless any player pays 5 life.
SVar:TrigDiscard:AB$ Discard | Cost$ 0 | Defined$ You | NumCards$ 1 | Mode$ Random | RememberDiscarded$ True | SubAbility$ DBReturn | SpellDescription$ Discard a card at random. If you discard a creature card this way, return it from your graveyard to the battlefield unless any player pays 5 life.
Oracle:At the beginning of your upkeep, discard a card at random. If you discard a creature card this way, return it from your graveyard to the battlefield unless any player pays 5 life.
A:SP$ RemoveCounterAll | Cost$ 3 B B | ValidCards$ Permanent | AllCounterTypes$ True | StackDescription$ SpellDescription | SubAbility$ DBRemove | SpellDescription$ Remove all counters from all permanents and exile all tokens.
A:SP$ ChangeZoneAll | Cost$ 3 U | ChangeType$ Creature.attacking | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return all attacking creatures to their owners' hands.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDrain | TriggerDescription$ At the beginning of your upkeep, each opponent loses 1 life. You gain life equal to the life lost this way.
A:AB$ UntapAll | Cost$ 3 R R | ValidCards$ Creature.YouCtrl | SubAbility$ DBAddCombat | SorcerySpeed$ True | SpellDescription$ Untap all creatures you control. After this main phase, there is an additional combat phase followed by an additional main phase. Activate this ability only any time you could cast a sorcery.
Oracle:{3}{R}{R}: Untap all creatures you control. After this main phase, there is an additional combat phase followed by an additional main phase. Activate this ability only any time you could cast a sorcery.
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$ DealDamage | Cost$ 1 R Sac<1/Creature.Goblin/Goblin creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to target creature or player.
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 | 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."
A:AB$ Token | Cost$ SubCounter<6/LOYALTY> | TokenAmount$ 1 | TokenName$ Avatar | TokenTypes$ Creature,Avatar | TokenOwner$ You | TokenColors$ White | TokenPower$ X | TokenToughness$ X | TokenImage$ W N N Avatar | 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.
A:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | KW$ HIDDEN This card doesn't untap during your next untap step. | ValidTgts$ Permanent | Permanent$ True | IsCurse$ True | SpellDescription$ Target permanent doesn't untap during its controller's next untap step.
A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | Tgt$ TgtCP | NumDmg$ 3 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 3 damage to target creature or player and you gain 3 life.
A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 3 damage to target creature or player and you gain 3 life.
SVar:DBGainLife:DB$GainLife | LifeAmount$ 3
A:AB$ DestroyAll | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Player | TgtPrompt$ Select target player | ValidCards$ Land | SpellDescription$ Destroy all lands target player controls.
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
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | SacValid$ Land | Defined$ Each
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target creature or player.
A:SP$ ChooseColor | Cost$ 2 W | Defined$ You | AILogic$ MostProminentAttackers | SubAbility$ DBProtection | SpellDescription$ Choose a color. Creatures you control gain protection from the chosen color until end of turn.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounterAll | TriggerDescription$ At the beginning of your upkeep, put a +1/+1 counter on each creature each opponent controls.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card | PresentZone$ Hand | PresentPlayer$ Opponent | PresentCompare$ LTX | TriggerZones$ Graveyard | Execute$ TrigReturn | TriggerDescription$ At the beginning of your upkeep, if you have more cards in hand than each opponent, you may sacrifice a Swamp. If you do, return CARDNAME from your graveyard to the battlefield.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | CheckSVar$ X | SVarCompare$ GTY | References$ X,Y | TriggerZones$ Graveyard | Execute$ TrigReturn | TriggerDescription$ At the beginning of your upkeep, if you have more cards in hand than each opponent, you may sacrifice a Swamp. If you do, return CARDNAME from your graveyard to the battlefield.
A:AB$ DealDamage | Cost$ 8 T | Tgt$ TgtCP | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player.
A:AB$ DealDamage | Cost$ 8 T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player.
K:Damage that would reduce your life total to less than 1 reduces it to 1 instead.
S:Mode$ Continuous | Affected$ You | AddKeyword$ Damage that would reduce your life total to less than 1 reduces it to 1 instead. | Description$ Damage that would reduce your life total to less than 1 reduces it to 1 instead.
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.
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ Ignite | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, destroy up to one target artifact, up to one target enchantment, and up to one target nonbasic land.
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Hexproof | AddHiddenKeyword$ CARDNAME can't be blocked by more than one creature. | Description$ Enchanted creature has hexproof and can't be blocked by more than one creature.
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ AffectedX | AddToughness$ AffectedX | References$ AffectedX | EffectZone$ Battlefield | Description$ Enchanted creature gets +2/+2 for each other creature on the battlefield that shares a creature type with it.
S:Mode$ Continuous | Affected$ Forest.YouCtrl | SetPower$ 1 | SetToughness$ 1 | AddType$ Creature & Elf | SetColor$ Green | Description$ Forests you control are 1/1 green Elf creatures that are still lands.
A:AB$Pump | Cost$ 1 G Sac<1/Elf> | Tgt$ TgtC | NumAtt$ 3 | NumDef$ 3 | SpellDescription$ Target creature gets +3/+3 until end of turn.
A:AB$Pump | Cost$ 1 G Sac<1/Elf> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 3 | NumDef$ 3 | SpellDescription$ Target creature gets +3/+3 until end of turn.
SVar:ChooseCT:DB$ ChooseType | Defined$ You | Type$ Creature | AILogic$ MostProminentHumanControls | SpellDescription$ As CARDNAME enters the battlefield, choose a creature type.
S:Mode$ Continuous | Affected$ Creature.ChosenType | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | Description$ Creatures of the chosen type don't untap during their controllers' untap steps.
A:AB$ DealDamage | Cost$ R T | Tgt$ TgtCP | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player.
A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player.
S:Mode$ Continuous | Affected$ Creature.YouDontCtrl | AddHiddenKeyword$ 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.
A:SP$ Token | Cost$ tapXType<1/Creature> | TokenAmount$ 1 | TokenName$ Angel | TokenTypes$ Creature,Angel | TokenOwner$ You | TokenColors$ White | TokenPower$ 4 | TokenToughness$ 4 | TokenKeywords$ Flying<>HIDDEN At the beginning of the end step, exile CARDNAME. | ActivationPhases$ BeginCombat->EndCombat | IsPresent$ Plains.YouCtrl | CostDesc$ If you control a Plains, | SpellDescription$ you may tap an untapped creature you control rather than pay CARDNAME's mana cost.
A:SP$ Token | Cost$ 3 W | TokenAmount$ 1 | TokenName$ Angel | TokenTypes$ Creature,Angel | TokenOwner$ You | TokenColors$ White | TokenPower$ 4 | TokenToughness$ 4 | TokenKeywords$ Flying<>HIDDEN At the beginning of the end step, exile CARDNAME. | ActivationPhases$ BeginCombat->EndCombat | SpellDescription$ Cast CARDNAME only during combat. Put a 4/4 white Angel creature token with flying onto the battlefield. Exile it at the beginning of the next end step.
A:SP$ Token | Cost$ 3 W | TokenAmount$ 1 | TokenName$ Angel | TokenTypes$ Creature,Angel | TokenOwner$ You | TokenColors$ White | TokenPower$ 4 | TokenToughness$ 4 | TokenKeywords$ Flying | TokenHiddenKeywords$ At the beginning of the end step, exile CARDNAME. | ActivationPhases$ BeginCombat->EndCombat | SpellDescription$ Cast CARDNAME only during combat. Put a 4/4 white Angel creature token with flying onto the battlefield. Exile it at the beginning of the next end step.
T:Mode$ Phase | Phase$ BeginCombat | TriggerZones$ Battlefield | Execute$ TrigChoose | TriggerDescription$ At the beginning of each combat, choose first strike, vigilance or lifelink. Creatures you control gain that ability until end of turn.
Oracle:Flying\nAt the beginning of each combat, choose first strike, vigilance, or lifelink. Creatures you control gain that ability until end of turn.
A:SP$ Effect | Cost$ W | Name$ Angel's Grace Effect | Keywords$ AliFromCairo | StaticAbilities$ STCantLose,STOppsCantWin | AILogic$ Fog | SpellDescription$ You can't lose the game this turn and your opponents can't win the game this turn. Until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead.
SVar:STCantLose:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ You can't lose the game. | Description$ You can't lose the game.
SVar:STOppsCantWin:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ Your opponents can't win the game. | Description$ Your opponents can't win the game.
SVar:AliFromCairo:Damage that would reduce your life total to less than 1 reduces it to 1 instead.
A:SP$ Effect | Cost$ W | Name$ Angel's Grace Effect | StaticAbilities$ STCantLose | AILogic$ Fog | SpellDescription$ You can't lose the game this turn and your opponents can't win the game this turn. Until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead.
SVar:STCantLose:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ You can't lose the game. & Your opponents can't win the game. & Damage that would reduce your life total to less than 1 reduces it to 1 instead. | Description$ You can't lose the game. Your opponents can't win the game. Damage that would reduce your life total to less than 1 reduces it to 1 instead.
Text:Enchant creature card in a graveyard\r\nWhen Animate Dead enters the battlefield, if it's on the battlefield, it loses "enchant creature card in a graveyard" and gains "enchant creature put onto the battlefield with Animate Dead." Return enchanted creature card to the battlefield under your control and attach Animate Dead to it. When Animate Dead leaves the battlefield, that creature's controller sacrifices it.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReanimate | TriggerDescription$ When CARDNAME enters the battlefield, if it's on the battlefield, it loses "enchant creature card in a graveyard" and gains "enchant creature put onto the battlefield with CARDNAME." Return enchanted creature card to the battlefield under your control and attach CARDNAME to it.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigSacrifice | TriggerDescription$ When Animate Dead leaves the battlefield, that creature's controller sacrifices it.
A:SP$ DealDamage | Cost$ 1 R R | Tgt$ TgtCP | NumDmg$ 3 | SubAbility$ Annihilate | SpellDescription$ CARDNAME deals 3 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead.
A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ Annihilate | SpellDescription$ CARDNAME deals 3 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead.
SVar:Annihilate:DB$ Pump | KW$ HIDDEN If CARDNAME would be put into a graveyard, exile it instead. | Defined$ Targeted
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TeaseYou | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's end step, CARDNAME deals 2 damage to that player unless one of his or her opponents was dealt damage this turn.
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Opponent | Execute$ TeaseOpp | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ At the beginning of each player's end step, CARDNAME deals 2 damage to that player unless one of his or her opponents was dealt damage this turn.
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TeaseYou | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's end step, CARDNAME deals 2 damage to that player unless one of his or her opponents was dealt damage this turn.
S:Mode$ CantTarget | ValidCard$ Creature.EnchantedBy | Spell$ True | Description$ Enchanted creature can't be the target of spells and can't be enchanted. This effect doesn't remove CARDNAME.
T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME is turned face up, target creature gets -3/-3 until end of turn.
T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME is turned face up, target creature gets -3/-3 until end of turn.
Text:Apocalypse Hydra enters the battlefield with X +1/+1 counters on it. If X is 5 or more, it enters the battlefield with an additional X +1/+1 counters on it.
PT:0/0
A:AB$ DealDamage | Cost$ 1 R SubCounter<1/P1P1> | Tgt$ TgtCP | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player.
A:AB$ DealDamage | Cost$ 1 R SubCounter<1/P1P1> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player.
# This xPaid doesn't do anything, it's just needed to make Cost work properly
A:AB$ DealDamage | Cost$ T | Tgt$ TgtCP | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep,Draw,Main1,BeginCombat | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared.
A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep,Draw,Main1,BeginCombat | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared.
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ MoltenEffect | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, until your next turn, if a source would deal damage, it deals double that damage instead.
SVar:MoltenRealm:Event$ DamageDone | ActiveZones$ Command | ValidSource$ Card | ReplaceWith$ DmgTimes2 | IsCombat$ False | Description$ Until your next turn, if a source would deal damage, it deals double that damage instead.
SVar:MoltenRealmCombat:Event$ DamageDone | ActiveZones$ Command | ValidSource$ Card | ReplaceWith$ DmgTimes2Combat | IsCombat$ True | Secondary$ True | Description$ Until your next turn, if a source would deal damage, it deals double that damage instead.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ MorphChoice | Static$ True | TriggerDescription$ As CARDNAME enters the battlefield or is turned face up, it becomes your choice of 5/1 or 1/5.
T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ MorphChoice | Secondary$ True | Static$ True | TriggerDescription$ When CARDNAME enters the battlefield or is turned face up, it becomes your choice of 5/1 or 1/5.
T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ MorphChoice | Secondary$ True | Static$ True | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME enters the battlefield or is turned face up, it becomes your choice of 5/1 or 1/5.
A:SP$ Effect | Cost$ U | Name$ Flood Effect | StaticAbilities$ STFlood | Unique$ True | Duration$ Permanent | SubAbility$ TrigPutCounter | SpellDescription$ Put a flood counter on target land. That land is an island in addition to its other types for as long as it has a flood counter on it. If you control a Merfolk, draw a card.
A:SP$ Effect | Cost$ U | Name$ Flood Effect | StaticAbilities$ STFlood | Unique$ True | Duration$ Permanent | SubAbility$ TrigPutCounter | StackDescription$ Put a flood counter on target land. That land is an island in addition to its other types for as long as it has a flood counter on it. | SpellDescription$ Put a flood counter on target land. That land is an island in addition to its other types for as long as it has a flood counter on it. If you control a Merfolk, draw a card.
A:SP$ DealDamage | Cost$ 3 R R | Tgt$ TgtCP | NumDmg$ 2 | SubAbility$ DBChange | SpellDescription$ CARDNAME deals 2 damage to target creature or player. Exile CARDNAME with three time counters on it.
A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SubAbility$ DBChange | SpellDescription$ CARDNAME deals 2 damage to target creature or player. Exile CARDNAME with three time counters on it.
A:AB$ DealDamage | Cost$ R ExileFromTop<10/Card> | Tgt$ TgtCP | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player.
A:AB$ DealDamage | Cost$ R ExileFromTop<10/Card> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player.
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | AddToughness$ 2 | AddAbility$ Damage | Description$ Enchanted creature gets +2/+2 and has "T: This creature deals 1 damage to target creature or player."
SVar:Damage:AB$DealDamage | Cost$ T | Tgt$ TgtCP | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player.
SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player.
Oracle:Enchant creature (Target a creature as you cast this. This card enters the battlefield attached to that creature.)\nEnchanted creature gets +2/+2 and has "{T}: This creature deals 1 damage to target creature or player."
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigSac | TriggerDescription$ When CARDNAME enters the battlefield, any player may sacrifice a land. If a player does, put CARDNAME on top of its owner's library.
Oracle:Trample\nWhen Argothian Wurm enters the battlefield, any player may sacrifice a land. If a player does, put Argothian Wurm on top of its owner's library.
K:You may cast CARDNAME as though it had flash. If you cast it any time a sorcery couldn't have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.
K:Enchant nonblack creature
T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigDelayedSac | Static$ True | Secondary$ True | TriggerDescription$ If you cast it any time a sorcery couldn't have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.
T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigDelayedSac | Static$ True | Secondary$ True | SpellSpeed$ NotSorcerySpeed | TriggerDescription$ If you cast it any time a sorcery couldn't have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step.
SVar:CleanupTrig:Mode$ Phase | Phase$ Cleanup | TriggerZones$ Battlefield | Execute$ Sac | TriggerDescription$ At the beginning of the next cleanup step, sacrifice CARDNAME.
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$ AttackerBlocked | ValidCard$ Card.Self | ValidBlocker$ Creature.powerLE1 | 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$ Player | Execute$ TrigDestroy | TriggerDescription$ Destroy CARDNAME at end of combat.
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigReveal | Static$ True | TriggerDescription$ As CARDNAME enters the battlefield, you may reveal any number of other artifact cards from your hand. CARDNAME enters the battlefield with a +1/+1 counter on it for each card revealed this way.
SVar:DBReveal:DB$ Reveal | RevealValid$ Card.Artifact+YouCtrl | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBPutCounters | SpellDescription$ As CARDNAME enters the battlefield, you may reveal any number of other artifact cards from your hand. CARDNAME enters the battlefield with a +1/+1 counter on it for each card revealed this way.
T:Mode$ Taps | ValidCard$ Card.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever enchanted artifact becomes tapped or a player activates an ability of enchanted artifact without Tap in its activation cost, CARDNAME deals 2 damage to that artifact's controller.
T:Mode$ AbilityCast | NonTapCost$ True | ValidCard$ Card.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigDamage | Secondary$ True | TriggerDescription$ Whenever an artifact becomes tapped or a player activates an artifact's ability without T in its activation cost, CARDNAME deals 1 damage to that artifact's controller.
Oracle:Enchant artifact\nWhenever enchanted artifact becomes tapped or a player activates an ability of enchanted artifact without {T} in its activation cost, Artifact Possession deals 2 damage to that artifact's controller.
A:SP$ DealDamage | Cost$ 3 R Sac<1/Artifact;Creature/artifact or creature> | Tgt$ TgtCP | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature or player.
A:SP$ DealDamage | Cost$ 3 R Sac<1/Artifact;Creature/artifact or creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature or player.
SVar:ChooseCT:DB$ ChooseType | Defined$ You | Type$ Creature | AILogic$ MostProminentInComputerDeck | SpellDescription$ As CARDNAME enters the battlefield, choose a creature type.
S:Mode$ Continuous | Affected$ Creature.YouOwn | AffectedZone$ Graveyard | AddType$ ChosenType | Description$ Each creature card in your graveyard has the chosen creature type in addition to its other types.
A:AB$ DestroyAll | ActivationZone$ Command | Cost$ 5 | ValidCards$ Permanent.nonLand | PlayerTurn$ True | SubAbility$ DBRemoveAB | SpellDescription$ Destroy all nonland permanents. Activate this ability only once and only during your turn.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, put a muster counter on CARDNAME. Then put a 1/1 red and white Soldier creature token with haste onto the battlefield for each muster counter on CARDNAME.
Oracle:At the beginning of your upkeep, put a muster counter on Assemble the Legion. Then put a 1/1 red and white Soldier creature token with haste onto the battlefield for each muster counter on Assemble the Legion.
A:SP$ RepeatEach | Cost$ 2 R | RepeatCards$ Enchantment | Zone$ Battlefield | RepeatSubAbility$ DBDmg | SubAbility$ DBRepeatDmg | SpellDescription$ Each enchantment deals 2 damage to its controller, then each Aura attached to a creature deals 2 damage to the creature it's attached to.
A:SP$ Pump | Cost$ U | ValidTgts$ Aura.YouCtrl | TgtPrompt$ Select target aura you control | SubAbility$ FinesseAttach | StackDescription$ None | SpellDescription$ Attach target Aura you control to target creature.Draw a card.
A:SP$ GainControl | Cost$ 1 U | ValidTgts$ Aura.AttachedTo Permanent | TgtPrompt$ Select target Aura attached to a permanent | SubAbility$ ChooseNewHost | SpellDescription$ Gain control of target Aura that's attached to a permanent. Attach it to another permanent it can enchant.
T:Mode$ Attacks | ValidCard$ Creature.Self | TriggerZones$ Battlefield | Execute$ TrigUntap | FirstAttack$ True | TriggerDescription$ Whenever CARDNAME attacks for the first time each turn, untap all creatures you control. After this phase, there is an additional combat phase.
Oracle:Flying, vigilance, haste\nWhenever Aurelia, the Warleader attacks for the first time each turn, untap all creatures you control. After this phase, there is an additional combat phase.
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.
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.
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.