Update notes

1.2.6 (unreleased)

  • Triggered abilities can now have stacking priority. This allows card scripters to specify whether a certain triggered ability should be put on the stack before or after other triggers that are triggering at the same time. This allows many combo decks (like Amulet of Vigor) to be playable in this engine.
  • (in development) Added support for attacking and blocking requirements like Lure, etc.
  • (in development) Added support for custom card frame shaders.

1.2.5

  • The hosting site for card art downloads has been changed back to gatherer.
  • Observer mode has been updated/overhauled and tons of bugs with it have been fixed.
  • When choosing targets, legal targets of the current target requirement are highlighted in green.
  • Permanents that leave the battlefield now cause ControlChanged() events to trigger so that they end continuous effects dependent on control retention.
  • Added support for blockers that give themselves a specific keyword against specific types of attackers (Dragon Hunter, Wall of Diffusion, etc).
  • Fixed some bugs with Splice.
  • The legend rule has been added.
  • Spells and abilities that leave the stack during their resolution can now finish resolving their effects (fixes things like Rebound).
  • You can now undo a blocking assignment by clicking on your blocker a second time.
  • Added some new alternate foil shaders and all newer set symbols up to Battle for Zendikar.
  • Creatures with Reach now have a hopping animation. This can be disabled by adding "ReachAnim=0" to your preferences.ini file.
  • Added support for Omnath's abilities.

1.2.4

  • If a face-down card has been revealed by an effect, any player will be able to see the front side when they zoom in on it in the future.
  • Added support for Manifest. New function: Manifest(Card target). It returns the card that appears on the battlefield. This works on cards in any zone.
  • Face-down permanents will no longer display the supertypes of their front side.
  • Added support for Splice. New function: Splice(Card target, String params…). See Glacial Ray for example.
  • Added function MoveCounters(Card from, Card to, String type, [int amount=1])
  • When highlighted by the cursor, cards that link to other cards (like Oblivion Ring) will also cause the linked cards to be highlighted in blue.
  • When highlighted by the cursor, objects on the stack will cause their targets to be highlighted in orange.
  • While blocking, the currently chosen attacking creature is highlighted in red.
  • Added victory/defeat screens. (They don't do anything useful yet).
  • The game now correctly handles what's supposed to happen when a player leaves the game.
  • Card movements now work properly when playing on a draft server.
  • Updated the game menu. The "Resume Game" and "Exit Game" buttons work now. The graphics page is accessible, but is empty right now.
  • The camera no longer moves or zooms while the player is typing a chat message.
  • Player names now show up properly in a draft server.

1.2.3

  • WARNING: This patch may be incompatible with previous versions. There are two ways to fix it.
    • Download the base program again, OR
    • If you have 7zip, go into your game's "lib" folder. Open the "assets.jar" file with 7zip. Inside, there is a folder called "interface". Delete ALL of the XML files (not logo.png!).
  • Playing a card face-down no longer asks you to select a value for X.
  • Fixed a bug that caused spell limitations to linger on players when it wasn't supposed to.
  • Cards no longer show up sideways in visual search lists if they're tapped.
  • Updates the way priority works. The game will no longer stop on every player when a creature is attacking. Instead, more buttons have been added to allow players to stop at the various steps of combat. If a player wishes to block, they must set the "Declare Blockers" break point. This allows players to skip through combat much more quickly if they have no intention of blocking.

1.2.2

  • Attacking creatures no longer overlap non-attacking creatures when the number of attackers exceeds the number of cards per row.
  • Fixed a rendering error that caused text transparency to show up grey instead of showing the geometry behind it.
  • The foil animation has been moved to a shader. Most users should see performance improvements.
  • Added script Aliasing. Cards can alias resolving effects to replace single actions with multiple actions. This allows choice-based replacement effects to be allowed in most situations (for example, when you cheat a Clone into play).
  • Replacement effects can now add parameters to the functions they intercept without replacing them.
  • Because of the above two changes, almost all enter-the-battlefield replacements in Magic are now possible, and those cards have been updated to work properly.
  • Fixed a bug that caused replacement effects to only work once in a loop, rather than working on each item in the loop.
  • Fixed a bug that prevented [X] from being calculated within additional costs like kicker.
  • Fixed an art downloader bug. Foil/commander cards with custom shaders will now download the correct version of its art.
  • Fixed a bug with GetCMC() that caused it to treat X as 0 for cards on the stack.
  • Fixed a bug that affected some zone change triggers.
  • Fixed a bug that prevented token-copies from copying existing copy effects on the target object.
  • Fixed a bug that prevented some static abilities from stacking if one was cloned from another object.
  • Added support for visual pile manipulation.
  • Added support for Delve.
  • Added support for expansion symbols (purely cosmetic).
  • Added support for flavor text (purely cosmetic).

1.2.1

  • Added support for Miracle cards. See Blessings of Nature or Entreat the Angels for examples.
  • Commander animations now use shaders instead of geometry. Some users may see performance improvements. Foil animations will be moved to shaders in a later update.
  • Several other animation shaders have been added for some cards and for cards with Miracle that have just been drawn.
  • Fixed a bug with PlayerChoice() that caused results to be run before the player made their choice.
  • Fixed a bug with the TokenJustCreated() function that made it not work properly.
  • Creatures now get removed from combat when they change controllers.

1.2.0

  • The launcher now downloads card database updates every time you run it.
  • The launcher now downloads major asset base updates when it needs to.
  • These features end up fixing a lot of desynchronization issues that would happen when a player was missing cards in their database that are loaded client side (usually tokens and error cards). It will also allow more assets to be added without users having to download the whole package every time.
  • Added support for Nyx foils.
  • Added support for Convoke.
  • Added support for our good friend Trinisphere.
  • Fixed a bug that allowed players to travel back in time.
  • Fixed a bug that let players bypass an X cost on some cards.
  • Fixed a bug that caused keywords given to players to not reset when continuous effects were updated.
  • Fixed a bug on the draft server which sometimes caused players to be unable to see the cards in their current pack.
  • Fixed a bug that caused requests (especially target selection) to linger when a player tried to pass-to-step while a triggered ability was being put on the stack.
  • Fixed a bug where the top card of the library wasn't considered visible to players when it was revealed.
  • Fixed a bug that caused cards on the stack to be looped on twice in some functions. This notably fixed bugs with self-cost reducers like Ghoultree.
  • Drastically improved the processing speed of zone changes, especially within looping functions.

1.1.2

  • The art downloader uses new threads to load art, so your game will no longer freeze as it loads the art. Also, the downloader will update each card's art as it finishes downloading them, rather than having to wait until the game updates.
  • The art downloader uses a different site to load card images. The images themselves should look much nicer. You should delete anything in your assets/textures/cards/cardart folder if you want to get the better art.
  • Fixed some crash bugs that would occur when trying to zoom in and/or right click on the priority bar.
  • Fixed some crash bugs that would occur when you zoomed or clicked on a player while drafting.
  • Added support and fixed bugs pertaining to whether creatures were considered blocked, blocking, and unblocked.
  • Cards in your hand will now glow when you highlight them with the cursor.
  • Commanders now use a triggered ability to ask you if you want to return them to exile when they go to a graveyard.
  • Spacebar now pauses your priority timer, and clicking on the priority bar now passes priority (instead of the other way).
  • Added draft bots to the draft server. Currently, they will fill the server up to 8 after all human players are ready. Additionally, player and bot seating is randomized.
  • Fixed a bug that sometimes caused the game to hang when a player cast a spell during the resolution of another spell.
  • Fixed a draft bug that sometimes allowed a player to open packs that weren't reserved for him.
  • Fixed a few bugs with the card animation system. Cards shouldn't "reset" their positions as much anymore (they still do rarely).
  • Fixed some more issues with split cards. They can now be played if they have a temporary owner, and they no longer disappear after resolving.
  • Fixed a bug that prevented players from playing land cards that had a zone bypass on them (ie Nightveil Specter now lets you play lands it exiles)
  • Fixed a bug that made equipment lands show up twice on the battlefield while attached to a creature.
  • Fixed a bug with ForceSacrifice() that allowed a player to sacrifice things he or she didn't control.
  • Fixed a bug where a player revealing the top card of their library would be the only player to see it.
  • Fixed a bug with morph that did something I don't remember, but it was bad.
  • Fixed a timestamp problem with attachments where they wouldn't get an updated timestamp when reattached.
  • Fixed bugs with IsArtifact() and IsEnchantment() sometimes checking the wrong player for the second parameter.
  • Vastly improved the processing speed of most continuous effects.

1.1.1

  • Fixed a bug with mana triggered abilities that gave a player priority before they finished casting a spell, allowing them to bypass most of the spell casting procedure.
  • Fixed a bug that allowed players to activate nonmana activated abilities while something was resolving after a Wait() function was called.
  • Fixed a bug that caused On-Cleanup triggers to fire during the end step as well as the cleanup step.
  • Fixed a bug that caused PlayerCastSpell triggers to sometimes trigger themselves and cause an infinite loop.
  • Fixed a bug that allowed players to declare other players' creatures as attackers.
  • Fixed a bug that caused error cards to save the Gorilla Titan art into the wrong card art files. You will have to delete all the old art yourself for cards that couldn't be loaded. CardArt can be found in assets/Textures/Cards/CardArt. Just delete anything that looks like Gorilla Titan.
  • Fixed a bug that caused mulligan'd cards to keep the mulligan flag and graphic after being shuffled into the library.
  • Card text renders now have line breaks between abilities.
  • Added tabletop card movements.
  • Added support for max hand size and cleanup step discarding.
  • Added support for paying mana during spell/ability resolutions via the AllowManaPayment(player, [prompt] ) and ManaPayment(player, manacost) actions. This makes "Do X unless you pay Y" effects and "You may pay Y. If you do, X" effects Magic accurate!
  • Added support for replay playback (replay saving isn't done yet. You can only watch matches that were hand-coded).

1.1.0

  • Fixed a bug that caused the launcher to block card art downloads. (requires asset base download)
  • Added icon for charge counters (requires asset base download, otherwise your game will crash)
  • Fixed a bug that prevented players from zooming in on cards in visual action lists.
  • Fixed a bug that prevented players from choosing split cards in visual action lists.
  • Fixed a bug that caused land tokens to display the incorrect card template.
  • Fixed a bug that caused the game to crash when trying to create a visual action list when the last visual list had no results in it. Ironically, the crash was being caused by the resulting error code, not the bug.
  • Fixed a bug that caused flashback givers like Snapcaster Mage to make their targets behave weirdly after being cast.
  • Fixed a bug that sometimes caused player's hands to not show up when a draft finished. This fix is a temporary workaround that isn't 100% guaranteed to work every time, but it should work in most cases. A more permanent fix is on its way.
  • Fixed a text display error for the Shadow keyword.
  • Added support for supertype-changing effects.
  • The deck editor now comes with a preview window that works!
  • Changed function CountDevotion(Card, mana…) so that 'mana' is now a list of strings to look for. This allows you to count devotion to multiple colors. For example, CountDevotion(Card,G,W) will look for "Devotion to green and white".
  • Added function TokenJustCreated(Card). This returns true if 'Card' is an object that was created by an earlier effect of the currently resolving spell/ability. It was added to fix a problem with Splinter Twin combined with effects like Parallel Lives, which would result in you getting multiple tokens, but only one of which would have the sacrifice trigger. Now, if you want to modify tokens, call a loop right after the CreateTokens function passing TokenJustCreated as the condition.

1.0.2

  • Added the draft server features (requires asset base download to host a draft server)
  • Added functions supporting the Soulbond mechanic.
  • Added support for Shadow keyword. A visual effect for it will come out in the next major patch.
  • Added error cards. When a card can't be loaded (usually because its file doesn't exist), you'll get a card with the same name with Cycling and no other abilities. Previously, you'd get a blank card that was unplayable and it was hard to tell which card couldn't be loaded.
  • Added some new trigger conditions.
  • Added support for state triggers. See Endrek Sahr, Master Breeder for an example.

1.0.1

  • Added support for Protection keyword. Syntax: Protection(Condition, rulestext)
  • IsInSubzone() can now be passed -1 for "owner" to have it hit all players.
  • Added function: Transform(card, fileName)
  • Added function: GetZoneCastFrom(card)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License