- 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.
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: 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: Moved effects and emblems to command zone.
*Variants: Added a bunch of Vanguard cards (Thanks, Marc!)
*Variants: Added a Vanguard home screen.
(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.)
11572 cards in total.
12045 cards in total.
Added Return to Ravnica Guild Sealed Deck mode. Start a new sealed deck game, choose "Block / Set" and then scroll down until you find "Return to Ravnica Guild Sealed (block)". Select that. From the "Choose Set Combination" menu, select the first option. You will be prompted twice to pick your guild (once for the promo cards, once for the actual booster - you should choose the same guild both times). After that you're ready to go.
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.
A bug for the new set unlocking code is now fixed. Before the fix, you could unlock all you wanted, but the unlocking info and the cards you got would never be saved! Fortunately, your paid money wouldn't be saved either.
The Return to Ravnica set pictures are now available and you can download them using the Download LQ Set Picures button. The RtR token generating cards have been updated with set specific images.
The Targeting Overlay has been fixed and re-enabled. It now correctly shows the targeting arcs in cases when it previously showed them in the wrong direction. The match UI is properly refreshed when the targeting arcs are switched on/off. The defunct "mouseover-only" mode is currently disabled (it crashes Forge, difficult to fix).
We have added the Conspire and the Protection mechanics for this version.
When choosing cards, sources, etc. using a list box, the currently selected card will now be visually highlighted on the playfield (to better distinguish between e.g. three different cards with the same name on the playfield). Now the visual highlighting of a card will also work when declaring the order of blockers.
Forge now has a sound effect system in place. Several basic sounds are linked to the code now and will be enabled when "Enable Sounds" option is checked in the preferences. It supports WAV and AU file formats. No sound files are included with this commit and must be submitted separately. For the time being you will need to add your own sound files.
Currently supported sound effects are:
AddCounter - add_counter.wav - triggered when a counter is added to a permanent.
Artifact - artifact.wav - triggered when an artifact is played.
ArtifactCreature - artifact_creature.wav - triggered when an artifact creature is played.
BlackLand - black_land.wav - triggered when a land with the "B" mana ability is played.
BlueLand[*] - blue_land.wav - triggered when a land with the "U" mana ability is played.
Creature - creature.wav - triggered when a creature is played.
Damage - damage.wav - triggered when a creature is damaged.
Destroy - destroy.wav - triggered when a permanent is destroyed.
Discard - discard.wav - triggered when a player discards a card.
Draw - draw.wav - triggered when a player draws a card.
Enchantment - enchant.wav - triggered when an enchantment is played.
EndOfTurn - end_of_turn.wav - triggered at the end of turn.
Equip - equip.wav - triggered when an equipment is equipped.
FlipCoin - flip_coin.wav - triggered when a coin is flipped.
GreenLand - green_land.wav - triggered when a land with the "G" mana ability is played.
Instant - instant.wav - triggered when an instant is played.
LifeLoss - life_loss.wav - triggered when a player loses life.
LoseDuel[*] - lose_duel.wav - triggered when a player loses a duel.
ManaBurn - mana_burn.wav - triggered during a mana burn if the appropriate rule is enabled.
OtherLand - other_land.wav - triggered when a land with non-color mana abilities or any other land is played.
Planeswalker - planeswalker.wav - triggered when a planeswalker is played.
Poison - poison.wav - triggered when a player receives a poison counter.
RedLand - red_land.wav - triggered when a land with the "R" mana ability is played.
Regen - regeneration.wav - triggered when a creature is regenerated.
RemoveCounter - remove_counter.wav - triggered when a counter is removed from a permanent.
Sacrifice - sacrifice.wav - triggered when a permanent is sacrificed.
Sorcery - sorcery.wav - triggered when a sorcery is played.
Shuffle[*] - shuffle.wav - triggered when a player shuffles his deck.
Tap[*] - tap.wav - triggered when a permanent is tapped.
Untap - untap.wav - triggered when a permanent is untapped.
WhiteLand - white_land.wav - triggered when a land with the "W" mana ability is played.
WinDuel - win_duel.wav - triggered when a player wins the duel.
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.
--
@@ -60,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.
@@ -71,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 may not be fully java 7 compatible at this time. We recommend that people downgrade to java 6.
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.
--
@@ -84,424 +41,146 @@ Some people use the Windows application 7zip. This utility can be found at http:
Fixes/Features:
- Partiality needs to be 100% or the computer may get the two promo cards and the booster for 2 different guilds in RtR Guild Sealed Mode.
- Do not show very small cubes (promos with 2 cards) in the main cube selection menu. You can't build a deck around them.
- Fixed Painbringer.
- Added Return to Ravnica Guild Sealed Deck mode.
- Rever accidental commit of wrong version of block #37.
- Cleared out the changes.txt file, now ready for new material.
- Added the recent commit logs to changes.txt.
- Changed more instances of "YouDontCtrl" to "OppCtrl".
- Changed more instances of "YouDontCtrl" to "OppCtrl".
- Fixed name of Faerie Impostor in RTR Guild Packs
- Updated some deck SVars.
- Improved AI dealing with Flailing Manticore and Flailing Soldier.
- Fixed AI not paying unless costs of its own triggered abilities.
- Improved AI of Frost Titan.
- Made findParentsTargetedPlayer more robust.
- Tweaked attacking AI.
- Player has a field of type GameState
- Experimental AbilityFactory refactoring
- comment out debug
- Fixed Utvara Hellkite.
- Added the property "OppOwn" and converted some cards.
- Fixed Unleash not interacting correctly with Corpsejack Menace.
- Fixed order in the script of Gifts Ungiven.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed P/T of Two-Headed Dragon.
- Fixed Cataclysm.
- Fixed Realms Uncharted.
- Fixed ability of Sphinx of Jwar Isle.
- Fixed and improved Proliferate.
- Fixed possible NPE in getCardsIn.
- AnimateAF refactored
- AlterLife cut into classes
- some pointless null checks removed
- fixed some boxing issues (mixing Boolean and boolean)
- UI: access to static fields fixed - should refer to a declaring class, not inherited one
- EditorTableModel: removed some excessive instanceof checks
- Placed missing @override clauses
- Removed unused imports
- Zone getCards returns a read-only list (used to make a new instance), dependants updated (mostly)
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed a few getCards read-only list errors.
- Improved AI of some auras/equipments.
- Fixed Mulligan.
- Fixed getColorByProminence.
- Another getCards read-only list errors.
- Fixed Thrumming Stone.
- Cleanup.
- More getCards read-only list errors.
- Removed obsolete null checks.
- More getCards read-only list errors.
- Added a missing import.
- More getCards read-only list errors.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed warnings.
- Player - shuffle streamlined
- CardLists.getCMC inlined (there were only 4 of them anyway)
- minor - code formatting
- Fixed Ovinomancer.
- Fixed Past in Flames.
- AF-Bond refactored
- AF:Turns refactored
- removed warnings (excessive casts, extra semicolons)
- Removed unnecessary cast.
- AF:Tokens - split into pieces
- Fixed some FindBugs results.
- refactor AF: ZoneAffecting
- some cleanup in BondEffect.java
- AF:ManaDrain (other mana Abs use some special classes =(
- AF:DamagePrevent removed excessive casts and semicolons
- refactor AF:Protect
- renamed life-related ai and effects to put life as 1st word
- refactored AF:Play
- AF: Counters move
- refactored AF: remaining counters
- refactor AF:Effect (wish I knew what it is)
- hasBasicLands predicate for edition
- 1) You can use a Draft/Sealed deck as your quest starting card pool, 2) You can enforce formats when playing with specific starting pools, 3) Fixed a bug in the custom format dialog.
- Added javadoc.
- Code cleanup.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- More cleanup.
- Basic/snow land sets in quest mode shop and starting deck are randomized.
- Fix of imports after the last commit.
- Quest will use a single set to generate lands for shop
- Triggers: replace HashMap with java.util.Map in c-tors
- a clear check for type of trigger ctor parameters
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- AF: Sacrifice, Reveal
- removed repeating blocks from getStackDescription
- AF: Clone, SetState
- AF: GameWin/Loss
- AF: Permanent state
- AnimateEffects - change relations between classes
- BasicLands is list,
- removed ccnt,
- simplified areAllBasics(final String types) in AF:ChangeZone
- tricked to avoid ref to static method
- Set unlocking is no longer a special reward for winning matches, instead it is an option button like spell store. More expensive than before, not random, and initially fewer sets to choose from.
- TriggerMapPlayed - 1st param => Map
- Added the recent commit logs to changes.txt.
- Correct version of SSubmenuQuestUtil (actually enables the unlocking code), new sets cost a little more.
- (non-working) AF: Destrory, Control
- propper name
- propper nameAF: Pump
- Code cleanup: removed some orphaned autogenerated javadocs after Max Mtg's refactoring, cleaned up formatting in some files, removed outdated javadocs that no longer correspond to method signatures after refactoring, moved some significant comments to their proper files.
- Code cleanup (Phase 2): see r17819
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Save set unlocking information + won cards.
- GameFormatQuest allowedSetCodes and bannedCardNames are now final and should never be null (set in the constructors).
- Added a fluff piece to the changes.txt file.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Updated token download list for RtR (at last)
- Updated RtR token generating cards with set specific images
- AB: Clash, Damage
- AF: Copy, repeat
- getStackDescription routines now use common routines for string collection
- any spelleffect class can use common routines to get defined targets
- Code cleanup (Phase 3): removed some orphaned javadocs, moved some comments, removed some javadocs that no longer correspond to method parameters after refactoring.
- Added a fluff piece to the changes.txt file.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
* Fixed and re-enabled Targeting Overlay:
* Now it correctly shows the targeting arcs in cases when it previously showed them in the wrong direction.
* The match UI is properly refreshed when the targeting arcs are switched on/off.
* The defunct "mouseover-only" mode is currently disabled (it crashes Forge, difficult to fix).
* Probably some bugs still left, but overall seems to function fine.
- Minor code style fix for the previous commit.
- AF: Mana Had to refactor the whole class of AbilityMana
- Repaint the UI after drawing targeting arcs.
- AF: removing excessive methods, mapParams returns as Map<Str,Str>
- More optimal UI repaint after drawing the targeting arcs.
- AF: Cleanup, StoreSVar, Unattach
- Code cleanup (removing orphaned javadocs and javadocs with parameters that do not correspond to the method definitions).
- rem warning,
- force update of player-related into at end of phase.
- Wrong import ruined build
- Removed some unused code from the targeting overlay.
- had wrong cycling cost
- Fixes OppOwn card property (Geth, Lord of the Vault will work as intended)
- move effect to right package
- Script fixes by Diogenes.
- Little AI fixes.
- Fixed Phyrexian Gremlins.
- Fixed Oversold Cemetery
- CF-Cr: remove unused parameters
- Added a fluff piece to the changes.txt file.
- Small changes to how Mulliganing works with Phases (for upcoming Karn Liberated)
- Made the shape of the targeting arcs a little bit better, also changed the direction of the arc curve to make it look better.
- Compilation fix for the mulligan (had to make nextPhase public, not sure if it's the correct decision, please review).
- Some minor cleanup in targeting overlay code.
- made doTriggerAI final (it calls anyway doTriggerAINoCost anyway, so AF ais will override only nocost version)
- made a wrapper for doTriggerAINoCost to check subAbilities doTrigger (and removed that code from descendants of SpellAiLogic)
- made doTriggerAINoCost protected to avoid calling it from outer classes
- remove imports
- Set some activating players.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Fixed Angel's Grace.
- AF: Attach (aura ETB ability is no longer spellpermanent)
- Fixed the AILogic "BeginningOfOppTurn".
- Fixed a bug in getAIPlayableMana.
- AF: apis transformed into an ENUM
- Cleanup.
- Updated some SVars.
- AF: Charms done
- Minor cleanup of obsolete javadocs.
- AF:Charm makes choices on being cast
- 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
- Added a new static ability "CantAttack".
- Converted some cards (they now work correctly with Planeswalkers).
- 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.
- CheckStyle.
- GameFormatQuest inherits from GameFormat... this removed lots of duplicated code
- removed warnings from some AF.AIs
- PredicateNamesExcept holds reference to source list (does not create own array)
- GameFormatQuestToXml.unmarshal: read lists first, then create object to return
- DevMode: joined card to hand for both players, added "card to battlefield" button
- removed 140 lines of unused constructors of ListChooser
- Choosing cards from a list (devmode-addXXXX shows their picture on the right panel)
- fixes default player targeting for PumpAll, TapAll and UntapAll effects
- rem warns
- Streamlined the drawback checks in the AF AI functions.
- AF: Draw used even a different target player picking priority.
- Enabled "NeedsToPlay" SVars for all AF spells.
- canPlayAI has to be abstract
- once canPlayAI is wrapped is has to be hidden from outside callers
- AF: ChangeZone converted
- Orphaned javadoc cleanup.
- 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.
- Running set info for PC2 cards that were never ran previously
- CheckStyle.
- CheckStyle.
- CheckStyle.
- Performance updates in ComputerUtilAttack.
- Added Suppression Field.
- Converted Donate to script
- AbilityManaPart has to add SA to trigger it raises =(
- AF:CopyPerm - used shortcuts to select target cards and collect a line
- CardFactoryUtil: extract method
- ETBReplacementMove converted to SpellEffect, wrapped it into CommonDrawback
- Converted Wing Puncture to script.
- ChangeZoneAi: made method names shorter, removed check for subAb drawbacks (since it's checked in wrapper class)
- getParent method added to SpellAbility, moved static methods getParent{withProperty} and findRoot to SpellAbility class
- removed excessive checks from caller methods
- SpellAbility: targetList removed (noone has assigned to it anything meaningful)
- Fixing Auras requesting SpellPermanent and causing a crash, since Auras no longer use the SpellPermanent class
- Adding KeywordMultiplier parameter to StaticContinuous
- moved params and api into SpellAbility, made param getters NPE-proof, cut reference to AbilityFactory
- AbilityFactory: getAbility ready to be made static
- License text + JavaDoc added to QuestUtilUnlockSets.java.
- 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.
- Initial preparations for the 'quest worlds' code.
- CheckStyle.
- Do not display the RtR Guild Sealed block in Draft games.
- Fixed stack descriptions.
- undoable attribute moved to SA,
- cost removed from manaPart
- SA: getAbility/getSpell methods were removed, overloaded methods isAbility/isSpell are used instead
- Spells giving mana work correctly
- Added RepeatEach AF
- Converted Rhys the Redeemed to script
- AI Logic for Rhys the Redeemed equivilant to the existing AI code in CF_Creatures
- More preliminary work for the quest worlds.
- Disable test printout in QuestWorld.java.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle.
- Fixed checkETBEffects.
- Remove a colon from picture file names so that the proper Gatherer names of cards with the colon may be used (for the upcoming CoP/RoP support).
- Renamed the file of Craterhoof Behemoth.
- Fixing Rhys the Redeemed cloning opponents tokens
- Converted Parallel Evolution to script
- Fixing CC of Parallel Evolution
- Converted Siren's Call to Script
- Additional reference needed to be removed
- Convert Hurkyl's Recall to script
- Convert Telling Time to script (the AI may be able to play this now)
- Convert Intuition to script
- wrapper will return api (temporary)
- Cleanup in handleRemembering.
- First implementation of Conspire mechanic (I plan to expand i to support multiple Conspire instances for interaction with Wort, the Raidmother)
- Added the card property "attackingYou".
- Initial implementation of AF ChooseSource for cards that refer to a source in their card text.
- Compilation fix for the updated AF interface (updating AF ChooseSource).
- Improved the prompt of unless costs.
- Added a SpellDescription to Circle of Protection: Artifacts.
- Circle of Protection: Artifacts will no longer create a useless effect when no source is chosen.
- Circles of Protection and Runes of Protection will no longer create useless effects when no source is chosen.
- Added a SpellDescription to all Circles of Protection and Runes of Protection.
- Removed some unused commented out code in AF ChooseSource (wasn't useful).
- Added a fluff piece to the changes.txt file.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Added a more detailed comment to the TODO of the AI part of the AF ChooseSource for future reference.
- CheckStyle.
- restored triggers (like oblivion ring)
- Added TapOrUntapAll AF
- Converted Turnabout to script
- Fixed the types for Lava Hounds; Pallimud; Scourge of Kher Ridges; Sliptide Serpent
- SA: field delve renamed, isTap/untapAbility removed (cost takes care of that), isTrigger declared by overload in AbilityTriggered
- The AI will now predict damage prevention replacement effects.
- Added first steps towards AF ChooseSource AI for CoP's (the AI will choose unblocked attackers).
- Converted Suffer the Past to script
- Converted Remove Enchantments to Script, All Instants have no been converted
- AF ChooseSource: sources already listed as effects "on stack" will no longer also be listed as sources which are "objects referenced on stack by another object".
- Organizing imports in AF ChooseSource.
- Organizing imports in AF ChooseSource.
- Improved AI using War Falcon.
- When choosing cards, sources, etc. using a list box, the currently selected card will now be visually highlighted on the playfield (to better distinguish between e.g. three different cards with the same name on the playfield).
- Now the visual highlighting of a card will also work when declaring the order of blockers.
- Fixed "Players can't gain life." on Everlasting Torment.
- Fixed "Damage can't be prevented." on Everlasting Torment.
- Added a fluff piece to the changes.txt file.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- slowtrip - remove duplication
- Removed some unnecessary parameters from the chooseSource scripts.
- Initial implementation of the sound system for Forge. Supports non-blocking, "preload once, play anytime" sound playback with no memory penalty for playing sounds multiple times. Supports WAV and AU file formats, uses only standard JDK libraries and, as such, fully cross-platform.
- CheckStyle.
- Some CheckStyle corrections related to the use of "final".
- Added a method to loop the sound to the Sounds enumeration.
- Cleanup.
- Attempt to remedy the "sound skipping" issue with the sound system.
- Input: Added an abstract marker method to trace all annonymous descendants,
- PayManaCostX moved to separate file
- added Action class - it's like Command but has parameters.
- Some more changes to the sound system.
- removed duplicate code in CField
- Fixed Kaervek's Torch Rarity SVar
- Angel's Trumpet is now more generic, and should be compatible with Multiplayer
- Removed zone parameter from selectCard in all Inputs
- More work on the sound system.
- More work on the sound system (cleaning imports).
- More work on the sound system (magic numbers, CheckStyle).
- Adding "UseImprinted" Param to RepeatEach for use with SAs that do something else with Remembered Cards.
- InputSelectManyCards - a common class for all those inlined target-choosing inputs
- a fix for Phantasmal Terrain and Convincing Mirage
- Added missing removeImprinted function.
- Fix an NPE with arcs if the battlefield isn't displayed when trying to draw
- Added Auto and Reset buttons to VAssignDamage
- The AI will now use CoP's to protect itself from damage dealing spells.
- Removed "SVar:RemAIDeck:True" from some of the ChooseSource cards.
- Improved ChooseSource AI handling spells.
- Input: using InputSelectMany as core for custom targeting inputs
- Sound: rem warning
- Converted Blade of the Bloodchief to Script
- CheckStyle.
- Sound system: added an option to toggle the sound effects on/off in the game (currently not linked to any code).
- Fixed possibility of getting stuck in attachAuraOnIndirectEnterBattlefield.
- Fixed DelayedTriggerAi not setting an activating player.
- Quick fix for negative handsizes other than -1, which is used for no maximum (needs a non-hacky solution).
- Small tweaks to General's Regalia
- Reverted GameFormatQuest to fix numerous problems caused by r17875 which totally broke GameFormatQuest. The whole reason for having a separate class for GameFormatQuest and why it was not inheriting GameFormat in the first place was that, unlike with the regular GameFormat class, its lists MUST NOT be immutable or it WILL NOT WORK.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- reverting 18047, making changes from 17875 not ruin quest logics
- the ro fields are just views, marking them as transient
- ran setinfo and oracle scripts for earlier commits
- fixing import
- CheckStyle.
- Sound system: made the Sounds methods obey the "enable sounds" setting in preferences.
- Launch of the Sound System: several basic sounds are linked to the code now and will be enabled when "Enable Sounds" option is checked in the preferences. No sound files are included with this commit and must be submitted separately. Details in the forum.
- Tageting Overlay: fixed a bug that caused the targeting arcs to disappear for some enchantments targeting cards on the other side of the playfield.
- Added some cost checks to ChooseSourceAi.
- Fixed a bug in getSpellCostChange.
- Bloodthirst is now multiplayer compatible.
- Rewrote the Bloodthirst keyword as a macro for a proper replacement effect.
- Added a fluff piece to the changes.txt file.
- Fix more NPEs with Attach no longer using SpellPermanent
- Sound System: Implemented more sounds and linked them to the code.
- Sound System: Some crash prevention measures.
- Sound System: Minor style fix.
- Sound System: Added the Enchantment sound, some style fixes.
- Added Magmasaur
- Fixed RememberRemoved remembering more counters than were originally on a card
- Sound System: Added the Poison sound.
- Sound System: Added the Instant and Sorcery sounds.
- Using SelectManyCards instead of plain input, rem some warnings
- Quest start options remake - part 1/2. (I just tried to understand all those checkboxes and failed)
- new quest w/custom format - bugfix
- Sound System: Added the ability to optionally define sound effects for specific cards by name instead of by type (might prove useful later).
- Sound System: CheckStyle.
- Sound System: CheckStyle.
- Sound System: Renamed some sounds for the sake of clarity.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle.
- Converted Nameless Race to script
- small addition to CostPayLife to enable limiting the maximum available choice when using XChoice
- improved svar name for Minion of the Wastes
- Sound System: Added to enumeration and implemented support for the AddCounter, Damage, Destroy, Discard, Equip, LifeLoss, ManaBurn, Regen, RemoveCounter, and Sacrifice sound effects. Also, some minor fixes.
- Converted Phyrexian Processor to script (by moomarc).
- AdditionalCostsPaid will now be cleared when a card hits the graveyard.
- Quest start UI done
- Conspire is now check on the SA instead of the card.
- Initial checkin of PermanentCreature AF, a way to organize Creature Spell AIs, with longterm potential of removing SpellPermanent
- Converted Force of Savagery to Script
- Sound System: A little fix to the counter sounds. Also, adding back some of the changes that seemingly did not go through the last time.
- Sound System: Increased the responsiveness of the sound system, should help remedy the skipping or missing sounds.
- Small fix to Nameless Race
- Made some scripts multiplayer compatible and other minor tweaks
- Added the first global rule change: "Damage can't be prevented.".
- Converted Leyline of Punishment and Everlasting Torment.
- Added the global rule change: "All damage is dealt as though it's source had wither.".
- Everlasting Torment is now fully scripted.
- Converted C "...each player's <phase>" cards to more multiplayer-friendly scripts.
- ReplacedOppDomain counting method with ActivePlayerDomain (Only card that used OppDomain was converted)
- Added the global rule change: "The legend rule doesn't apply.".
- Converted Mirror Gallery to script.
- Added the global rule change: "Mana pools don't empty as steps and phases end.".
- Converted Upwelling to script.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- Added the global rule change: "Players can't cycle cards.".
- Converted Stabilizer to script.
- Fixed Predatory Rampage.
- Added the global rule change: "Creatures entering the battlefield don't cause abilities to trigger.".
- Converted Torpor Orb to script.
- CheckStyle.
- Initial implementation of "spend only <color> mana when paying X", for the future implementations of Drain Life/Consume Spirit/etc. Currently controlled with SVar:XColor - specify the color of mana to spend on the X cost, e.g. SVar:XColor:B limits the X mana cost to black. Hope it didn't break anything, please test.
- GlobalRuleChanges is now stored as EnumSet.
- Fixed a bug in the "Spend only <color> mana on X" routine that allowed any mana to be spent after the first tapped land.
- Fixed a bug in the "Spend only <color> mana on X" routine that disabled the confirmation button if the wrong type of land was clicked, even if some mana of correct color was already paid before.
- Added the global rule change: "No more than one creature can attack each turn.", "No more than one creature can attack each combat." and "No more than one creature can block each combat.".
- GlobalRuleChange enum now has an associated text.
- Unlocking sets is less expensive now (but still fairly expensive).
- Code simplification (related to "spend only <color> mana on X").
- Typo fixes to the QuestData submenu.
- Sound System: added a previously missed link for the non-combat damage life loss sound.
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
- CheckStyle.
- Fixed a bug that made it possible to select any color of mana from the mana pool when the X mana cost was supposed to be restricted to specific color(s).
- Checkstyle
- Fixed AI using Unwilling Recruit.
- Fixed Curses in attachToPlayerAIPreferences.
- The AI will now use the ability of Hollow Specter.
- The AI will no longer animate an equipped Ensouled Scimitar.
- Quest set unlocks logics written from scratch
- Improved AI for Auras with "AILogic$ Curse".
- More Improvements of AI for Auras with "AILogic$ Curse".
- More Improvements of AI for Auras with "AILogic$ Curse".
- rem unused import
- New formula for unlock prices, minor checkstyle.
- Display up to 2 + (wins/50) (max 8) options when unlocking sets.
- Bounds checking for unlocking.
- Better way, use sublist.
- Simplify nrChoices in unlocking.
- 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.
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Shroud | Threshold$ True | Description$ Threshold - Enchanted creature has shroud as long as seven or more cards are in your graveyard. (It can't be the target of spells or abilities.)
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Shroud | Condition$ Threshold | Description$ Threshold - Enchanted creature has shroud as long as seven or more cards are in your graveyard. (It can't be the target of spells or abilities.)
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$ 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.)
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.
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Flying | AddHiddenKeyword$ HIDDEN CARDNAME can block only creatures with flying. | Description$ Enchanted creature has flying and can block only creatures with flying.
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Flying | AddHiddenKeyword$ CARDNAME can block only creatures with flying. | Description$ Enchanted creature has flying and can block only creatures with flying.
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$ Effect | Cost$ 5 T | Name$ Al-abara's Carpet Effect | StaticAbilities$ STPrevent | SpellDescription$ Prevent all damage that would be dealt to you this turn by attacking creatures without flying.
SVar:STPrevent:Mode$ PreventDamage | Target$ You | Source$ Creature.attacking+withoutFlying | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures without flying.
SVar:STPrevent:Mode$ PreventDamage | EffectZone$ Command | Target$ You | Source$ Creature.attacking+withoutFlying | Description$ Prevent all damage that would be dealt to you this turn by attacking creatures without flying.
A:AB$ StoreSVar | Cost$ XCantBe0 X T | SVar$ DigNum | Type$ Count | Expression$ xPaid | SubAbility$ TheMagic | SpellDescription$ The next time you would draw a card this turn, instead look at the top X cards of your library, put all but one of them on the bottom of your library in a random order, then draw a card. X can't be 0.
SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ AladdinDraw | Description$ The next time you would draw a card this turn, instead look at the top X cards of your library, put all but one of them on the bottom of your library in a random order, then draw a card.
Oracle:{X}, {T}: The next time you would draw a card this turn, instead look at the top X cards of your library, put all but one of them on the bottom of your library in a random order, then draw a card. X can't be 0.
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.
A:AB$ Mana | Cost$ T | Produced$ 1 | SpellDescription$ Add 1 to your mana pool.
A:AB$ Effect | Cost$ U G T | Name$ Refuge Effect | StaticAbilities$ QuickSpell | SpellDescription$ Until end of turn, you may cast nonland cards as though they had flash.
SVar:QuickSpell:Mode$ Continuous | Affected$ You | AddKeyword$ You may cast nonland cards as though they had flash. | Description$ You may cast nonland cards as though they had flash.
SVar:QuickSpell:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ You may cast nonland cards as though they had flash. | Description$ You may cast nonland cards as though they had flash.
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$ 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.
S:Mode$ Continuous | Affected$ Creature.cmcLE3 | AddHiddenKeyword$ 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.
K:You may choose not to untap CARDNAME during your untap step.
A:AB$ Pump | Cost$ 4 T | ValidTgts$ Artifact,Creature,Land | TgtPrompt$ Select target artifact, creature, or land | RememberTargets$ True | SubAbility$ DBTap | SpellDescription$ Tap target artifact, creature, or land. That permanent doesn't untap during its controller's untap step for as long as CARDNAME remains tapped.
SVar:DBTap:DB$ Tap | Cost$ 0 | Defined$ Targeted
S:Mode$ Continuous | Affected$ Card.IsRemembered | AddHiddenKeyword$ HIDDEN This card doesn't untap during your next untap step.
S:Mode$ Continuous | Affected$ Card.IsRemembered | AddHiddenKeyword$ This card doesn't untap during your next untap step.
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.
S:Mode$ Continuous | Affected$ Creature.ChosenType | AddHiddenKeyword$ HIDDEN CARDNAME doesn't untap during your untap step. | Description$ Creatures of the chosen type don't untap during their controllers' untap steps.
K:ETBReplacement:Other:ChooseCT
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$ 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$ 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 | Affected$ You | AddKeyword$ You can't lose the game. | Description$ You can't lose the game.
SVar:STOppsCantWin:Mode$ Continuous | Affected$ You | AddKeyword$ Your opponents can't win the game. | Description$ Your opponents can't win the game.
SVar: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.
S:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ Vigilance | Description$ All creatures have vigilance.
S:Mode$ Continuous | Affected$ Creature | AddKeyword$ Vigilance | Description$ All creatures have vigilance.
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TrigTapAll | 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.
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | PlayerTurn$ True | Description$ As long as it's your turn, CARDNAME's power and toughness are each equal to 2 plus the number of Swamps your opponents control. As long as it's not your turn, CARDNAME's power and toughness are each 2.
S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Condition$ PlayerTurn | Description$ As long as it's your turn, CARDNAME's power and toughness are each equal to 2 plus the number of Swamps your opponents control. As long as it's not your turn, CARDNAME's power and toughness are each 2.
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.
S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddHiddenKeyword$ HIDDEN CARDNAME can attack as though it didn't have defender. | Description$ Enchanted Wall can attack as though it didn't have defender.
S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddHiddenKeyword$ CARDNAME can attack as though it didn't have defender. | Description$ Enchanted Wall can attack as though it didn't have defender.
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.
T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ AnthemPump | TriggerDescription$ Whenever a creature you control attacks, it gets +2/+0 until end of turn and CARDNAME deals 1 damage to you.
SVar:RakdosBurn:DB$ DealDamage | Defined$ You | NumDmg$ 1
R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card.YouCtrl | ValidTarget$ Creature,Player | Hellbent$ True | ReplaceWith$ DmgTwice | IsCombat$ False | Description$ Hellbent - As long as you have no cards in hand, if a source you control would deal damage to a creature or player, it deals double that damage to that creature or player instead.
R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card.YouCtrl | ValidTarget$ Creature,Player | Hellbent$ True | ReplaceWith$ DmgTwiceCombat | IsCombat$ True | Secondary$ True | Description$ Hellbent - As long as you have no cards in hand, if a source you control would deal damage to a creature or player, it deals double that damage to that creature or player instead.
SVar:DmgTwice:AB$DealDamage | Cost$ 0 | Defined$ ReplacedTarget | DamageSource$ ReplacedSource | NumDmg$ X | References$ X
SVar:DmgTwiceCombat:AB$DealDamage | Cost$ 0 | CombatDamage$ True | Defined$ ReplacedTarget | DamageSource$ ReplacedSource | NumDmg$ X | References$ X
SVar:DmgTwice:AB$DealDamage | Cost$ 0 | Defined$ ReplacedTarget | DamageSource$ ReplacedSource | NumDmg$ X | References$ X
SVar:DmgTwiceCombat:AB$DealDamage | Cost$ 0 | CombatDamage$ True | Defined$ ReplacedTarget | DamageSource$ ReplacedSource | NumDmg$ X | References$ X
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.
S:Mode$ Continuous | Affected$ Player | SetMaxHandSize$ -1 | Description$ Players have no maximum hand size.
S:Mode$ Continuous | Affected$ Player | SetMaxHandSize$ Unlimited | 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.
S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddHiddenKeyword$ HIDDEN CARDNAME doesn't untap during your untap step. | AddTrigger$ TrigUpkeep | AddSVar$ TrigUntap | Description$ Enchanted creature doesn't untap during its controller's untap step. At the beginning of the upkeep of enchanted creature's controller, that player may discard a card at random. If he or she does, untap that creature.
S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | AddTrigger$ TrigUpkeep | AddSVar$ TrigUntap | Description$ Enchanted creature doesn't untap during its controller's untap step. At the beginning of the upkeep of enchanted creature's controller, that player may discard a card at random. If he or she does, untap that creature.
SVar:TrigUpkeep:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigUntap | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ At the beginning of the upkeep of enchanted creature's controller, that player may discard a card at random. If he or she does, untap that creature.
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$ ChangeZone | Cost$ B T Sac<1/CARDNAME> | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature in your graveyard | GainControl$ True | SubAbility$ DBPump | SpellDescription$ Return target creature card from your graveyard to the battlefield. That creature gains haste. At the beginning of the next end step, sacrifice it.
A:AB$ ChangeZone | Cost$ B T Sac<1/CARDNAME> | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature in your graveyard | GainControl$ True | SubAbility$ DBPump | SpellDescription$ Return target creature card from your graveyard to the battlefield. That creature gains haste. At the beginning of the next end step, sacrifice it.
SVar:DBPump:DB$Pump | KW$ Haste & HIDDEN At the beginning of the end step, sacrifice CARDNAME. | Defined$ Targeted
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.
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.
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME can't attack or block. & 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 | 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$ 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$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigMoveCounter | TriggerDescription$ At the beginning of your upkeep, you may move a +1/+1 counter from from target creature onto CARDNAME.
Oracle:Fear (This creature can't be blocked except by artifact creatures and/or black creatures.)\nAt the beginning of your upkeep, you may move a +1/+1 counter from target creature onto Arcbound Fiend.\nModular 3 (This enters the battlefield with three +1/+1 counters on it. When it dies, you may put its +1/+1 counters on target artifact creature.)
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ BuildCounter | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may put a +1/+1 counter on target creature you control.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ ChargeCounter | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may put a charge counter on target permanent you control.
Oracle:Hand +0, life +3\nAt the beginning of your upkeep, you may put a +1/+1 counter on target creature you control.\nAt the beginning of your upkeep, you may put a charge counter on target permanent 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.