DotP 2014: Deck Builder: Wiki Doc

From RSN Magic
Jump to: navigation, search

This is the documentation for the DotP 2014 Deck Builder and is basically a web version of the Text Readme that is included with the program.

Main Features

  • Does not require wads to be extracted/imported to use resources from them. Automatically uses all available game resources (cards, decks, unlocks, images, personalities, etc...) from the game directory you point it to.
  • Automatically calculates deck colour (or lack thereof).
  • Will assist the user in building appropriate images for deck boxes and AI personalities.
  • Program itself is localizable (translations need to be finished though) so you can use the program in your selected language.
  • Supports TDX compression of generated images.
  • Supports generation of AppId Linking wads for Steam, Skidrow, and Theta versions.
  • Will automatically create Land Pool XMLs based on the colours of the deck.
  • Can create Deck Wads as either a packed WAD file or a specially set up directory complete with headers.


  • .Net 4.0 Framework - This is the framework version that I compiled using.
  • Modified Gibbed Tools (version r6_b10 modified, included) - I reference the gibbed tools libraries for parsing wads and tdx images. I do not use the executables as I have created class wrappers that allow me to do the work I need to do in code rather than from the command line. Source code from the executables was used rather heavily in the development of the wrappers. Gibbed Tools Squish and FileFormats have to be my modified versions for the compression of TDX images, the reason I can't just fall back on the original versions is because I specifically reference functions I added to make the compression features work. Source code for the modified versions can be found here: Gibbed Tools modified to support compressing of images

Installing & Updating

To Install just unzip all of the files from the archive into any directory. The Deck Builder will automatically create a Settings.xml file with your settings when you close the program.

Updating is exactly the same as Installing except you will want to overwrite any duplicate files with those from the new package. Any new settings will automatically be added to your Settings.xml file when you close the program.

You do not need to worry about losing your settings as the Settings.xml contains all your settings and is not present in any of the packages so it will not be overwritten.

Getting Started

When you first load the program you will get a message about the game directory not being set (This is normal):


Click "OK" and it will take you to the Options Screen:


You will need to set the Duels of the Planeswalkers 2014 Directory to the directory where DotP_D14.exe is located. It is also highly recommended that you use the Id Block and change it to a value that is unique to you (as this will prevent conflicts with decks made by other modders using this program). To aid in choosing unique values you can refer to the Prefix/Id Registry. Values other than the default (and those matching other chosen values) will show with a light green highlight.

If your native language is not English you can change that now as well.


Once you have selected the DotP 2014 Directory (and finished making any other changes) you can now [b]Apply[/b] these changes and it will return to the Main Program screen and load up all the Wads (packed or unpacked) and load all the cards you have installed into the list view at the bottom of the window (filtered by the default filters). This may take a few minutes to finish loading.


The columns can be resized, reordered, and even turned on or off. The window can also be resized to see more. The box labeled Double-Click adds card to: has a set of three radio buttons that will control which part of the deck that a card will be added to when you double-click it. You can also hit enter while the focus is on the bottom list to add the currently highlighted card in exactly the same way as double-clicking.

You can remove cards that you add by accident or simply don't want anymore by highlighting them and hitting delete on the keyboard or you can right-click and select Remove Card.

The Edit Name button can be used to change the name of the deck in all supported languages. Any fields left blank (other than English) will automatically be filled on Export with name you provided for English.


Now you will probably want to set some other deck information such as the Deck Box Image, Card Preview, AI Personality, etc.... This can be done by clicking the Deck Information ... button.


Now I'm going to choose the deck statistics that best describe how my deck performs, set the card preview to Angel of Mercy and I'm going to Build an Image for the Deck Box.

To edit the AI Personality click the Edit Personality ... button.


For the AI Personality you can use one of the existing personalities or create your own. Since this is just getting started I'm going to select an existing personality (from those I already have installed) from the drop down list directly below AI Personality.


The Location and Size boxes are for fine-tuning the image you are building.

At this point you might want to Save your deck or if you are happy with it and want to try it out in-game then you can Export the deck. Saving will allow you to save the deck anywhere you want, but it is not suitable to use in-game. Exporting will build a Wad (or a directory with the proper structure) to allow the game to read and use your deck.

Features In-Depth

Adding Cards

You can easily add cards by either hitting "Enter" while you have a card highlighted in the main card list or by "Double-Clicking" the card you want to add. If you are adding cards to the main deck and you add a single card more than once it will simply increment the quantity of that card that you have in the main deck. This does not apply if you have given a card in the deck a special status such as Bias or Promo status. When a card is added it is added at a Bias of 1 and no Promo status so if there is a card in the deck with a Bias of 2 or 3, or you have given that card Promo status then you add another copy of that card from the main card list, the added card will show up in your list as a separate instance with a Bias of 1 and no Promo status.

For the unlocks each card will always have a quantity of 1 because each unlock needs to be a single card and you may want to stagger a few copies of a card throughout the unlock list which can only really be done if all the cards have a quantity of 1.

This builder does not put limits on the total number of cards that can be added to a deck and its unlocks (except for Promo unlocks which has a max number of ten cards). This does mean that you could design a deck that has hundreds of cards in it, but it probably won't work properly in game. The game uses a single byte for the deckOrderId and for keeping track of whether a card is in the deck or not. Practically this means that deckOrderIds of 0 through 127 are available for use (128 card max) and this limit applies to the total number of cards a deck has including the unlocks.

While the max card limit for decks to be used in game is 128 cards the game itself is optimized for a 60 card deck and up to about 40 total unlocks (100 total cards) including the basic land in the main deck.

Removing Cards

To remove cards from the deck or from the unlocks make sure the card you want to remove is highlighted, the focus is on that listing and hit delete on the keyboard ("Del" key). you can also right-click the card you want to remove and select "Remove Card".

Note: You can't remove cards from the main card list (this program does not support editing existing wads). If you simply want to filter which cards are shown in the main card list then use the "Set Filters" button and select which filters you want to use.


Saving operates a bit differently than you might expect. It will save out the deck, but the file generated when you save is not meant to be used by the game. It contains extra information so that the Deck Builder does not need to manage multiple linked files. For example all saved decks will also include the land pool in a tag inside the deck. All unlocks, strings, and images generated will also be included inside the deck.

If you want to generate files that are appropriate for the game to use then you need to "Export" the deck.


When you export a deck it will automatically name the output wad (or directory) based on the final deck uid and the English name of the deck codified to be file system friendly. So if you name your deck "My First Deck" and you are using the default Id Scheme with an id of 0 then the name or your exported wad will be "DATA_DECKS_100000_MY_FIRST_DECK.wad". This is done this way for a few reasons:

  • Mods must start with either "DATA_DECKS_" or "DATA_DLC_" (case insensitive) to be recognized.
  • Putting the Deck's uid in the wad name makes figuring out the uid of the deck inside very easy (this can help if looking for UID conflicts).
  • Having the Deck name in the filename makes managing custom decks easier for the user because the name they see in game relates to the one they see on the wad. Now there may be some differences for this due to language localizations, but this is a good compromise.

The exported wad (or directory) will automatically be put into the game directory so that it is ready to use. Also by having it in the game directory it will also be loaded into the builder as an existing deck the next time the builder is run.

Exporting Images

You can export images by right-clicking them and selecting "Export Image" and choosing either PNG or TDX as the format to export as. Images will be exported as you see them there will be no further processing before export (except to compress when saving to TDX).

The card preview you see in the main window (and view card window) without border will compress to DXT1 format when saving to TDX, all other images will compress to DXT5 when saving to TDX.

If you choose to "Export Card Previews" it will ask you to specify the save location and filename for just the English preview image, it will take your response and use that to determine where to save and how to name the other localizations of the preview image.

Id Schemes

Id Schemes are something I came up with to ease making sure all deck, land pool, and unlock ids are unique and don't conflict with other decks. There are three possible scheme types that can be used. You can see previews of the ids that will be generated by a scheme in the options window.

Id Blocks

Id Blocks are a new feature to Id Schemes that should make changing the Id Scheme settings easier. If you elect to use Id Blocks (true by default) then you can select all four of the Change Ids (Deck, Land Pool, Regular, and Promo Unlocks) by changing just the Id Block number. This should also help users to choose unique blocks more quickly. Before you choose a block you should check out the Prefix/Id Registry to make sure you choose one that will be unique to you.

Additive Schemes

These schemes simply add a number to each of the ids to get the next successive id. A simple example would be that your for your deck you choose id 1. The land pool may then have id 2, regular unlocks id 3, and promo unlocks could get id 4. This is a very simplistic scheme, easy to understand and use.

Prefix Schemes

These are my preferred schemes. A prefix scheme puts a pre-specified prefix in front of the various ids allowing for very unique ids in a single large numeric block. Both myself and thefiremind use variations on this scheme type as do several other modders.

The default scheme uses a modification on the scheme used by thefiremind except I place it in the 1000 block instead of his 1999 block. If you use this scheme type I highly recommend changing it to put it into a block unique to you.

Using the default scheme (prefix type) if you give a deck id 0 when exported it will export with an id of 100001, the land pool will be 1000101, any regular unlocks will have the id 1000201 and promo unlocks will get the id 1000301.

Suffix Schemes

These are similar to Prefix schemes except they append the block to the end of the number instead of to the beginning. Though it should be noted that leading zeros are dropped (because that is how the game reads them anyway) so if have a deck id of 0 and a deck suffix of 1000 when you export you will get an id of 1000, not 01000.

Building Images

When you start working with images either for the deck box or for the AI Personality you will have three options. You can use the current image if any. Load an image (you will get an open dialog window when you select this option) which will allow you to select an image you have already crafted for this purpose. Or you can build an image which will give you an open dialog much like loading an image, but it will mask and overlay the image as necessary to create a composited image suitable for use.

When you are building images you can adjust the image being masked by changing the location and size numbers near the image or you can pan the image by left-clicking and drag the mouse on the image. You can also zoom in and out by rotating the mouse wheel.

Card, Deck, and Unlock Views

On each of the Card, Deck, and Unlock views you can right click to get a context menu that will allow you to hide (or unhide) the columns that are visible for that view.

Additionally on any view that has card information a "View Card" option will appear on the context menu which will give you a view of the current localized card image and a complete listing of that card's XML. You can also query which decks if any are using a specific card by using the "Decks Used In" option. The program checks cards used in decks by filename so if a card is present in more than one wad with the same filename it will locate all decks that use that card's filename and not just those decks related to that wad.

Deck Statistics

The deck statistics you choose in the deck information screen (Size, Speed, Flexibility, and Synergy) are for choosing what displays for those lines in the deck manager in game. While the game uses a 5 star system the decks themselves use numbers from 0 to 10 and "?". The question mark is allowed internally by the program, but is not user selectable mainly because it shows up as 5 stars in game just like the numeric value 10. Whole stars are given for each even number so a value of 2 is 1 star, 4 is 2 stars, 6 is 3 stars, etc.... If you select an odd number the game will display the appropriate number of whole stars, plus a half star. So if you select 5 (the default for all statistics) it will show as 2 and a half stars in game.

Land Config

Land configurations are for the fine tuning of the land distributions for decks. If everything is left at defaults (Ignore CMC Over at -1, everything else at 0) then the LandConfig tag will not be generated and the game will use its standard method of determining what basic land to put in the deck.

The Minimum Land options are for determining the minimum number of that specific land to add to the deck if it will remain at 60 cards or less. If you have a deck with 50 non-land cards and you specify 10 forests and 12 swamps then you will not get that much land in game as those settings would put the deck over 60 cards. The game will only add basic lands up to 60 cards, so these options are more for fine-tuning ratios that the game will assign rather than the rule the game will follow.

If you want to specify the exact land config the game will use (again following the 60 card rule regarding lands explained in the paragraph above) then you can set Ignore CMC Over to 0 and Number of Spells that Count as Land to 0 (this is important as the game will subtract this number from your min land config) and set the minimum land options to the number of lands you want. Remember the game will only add basic lands until you reach a total of 60 cards in the deck if it reaches 60 cards before it has finished adding the land from your land config then it will simply stop adding basic lands short of your config.

Bias & Promo Statuses

Bias is related to the shuffling of the AI's deck and the user's selected difficulty level. If a card is given a bias of greater than 1 then it will be shuffled towards the bottom of the deck when the AI is using the deck if the selected difficulty level is LESS than the set bias level. A Bias of 2 will shuffle that card towards the bottom of the deck if the difficulty level is set to "Mage". A Bias of 3 will shuffle the card towards the bottom of the deck if the difficulty level is set to either "Mage" or "Archmage". A difficulty of "Planeswalker" will ignore any biased shuffling.

Promo status can be set on a card by card basis and controls whether that individual card is shown as a foil card with the "Promotion" set mark.

Bias and Promo statuses can be set at the same time and appear to work as expected in game.

Regular Unlocks

These are the normal type of unlocks that you see in game. If you do not have the promo codes entered these are the only unlocks that you will see in game. This operates in an easier fashion than it did in DotP 2013 because the AppId linking information is now stored in the deck itself and the deck builder automatically puts in the AppId for the base game to have the unlocks, unlocked by default.

Promo Unlocks

These unlocks can be unlocked in game by typing in the 10 promo unlock codes which will unlock a single card from the promo unlocks of every deck that is installed. There is a limit of 10 cards that can be unlocked this way though, so once the promo unlocks have 10 cards in them you will be unable to add any more to that type of unlock. The deck builder will automatically switch to putting the added cards into the regular unlocks.

Advanced Filtering

Advanced filtering will allow you to choose which filters specifically you want to use for filtering the cards in the master list. The filters are shown using a heirarchical tree view with the root item always being a Filter Set. All other filters can be added, replaced, and moved (via drag-and-drop) to get the exact combination of filters that you want.

Of the filters available for you to choose from and use there are Filter Sets, Boolean Filters, Integer Filters, String Filters, Enum Filters, and Power & Toughness Filters. All filters have a Next Filter comparison option that is uses Boolean Logic (And/Or). If you choose "And" then both filters must be true for the card to be allowed. With "Or" if either one of the two filters is true then the card will be allowed.

Filters are processed sequentially with no short-circuiting of the logic. This means that it will process the first filter then "And" or "Or" the result with the next filter in line until it reaches the final filter. This also means that if you have several filters "And"ed together that even if the first filter returns false it will still test all the other filters.

Note: Some of the advanced filters are somewhat slow and may take several seconds after being applied before the list will update. This is due to several factors including that many of the Advanced Filters need to use .Net Reflection to operate, they may work on fields that have a lot of information like Card XML, and/or they need to do special processing on a field's data before it do the necessary checks like Sub-Types.

Filter Sets

These provide no filtering by themselves, but can be used to group other filters for more fine-tuning. Sets are great for grouping of conditions such as you might want to look for Creatures with the word "Destroy" in their abilities or you want to look for creatures with power greater than 2 and less than 7. To do that you would group the two power filters so that they will be considered together and then they can be compared with the String filter as a group instead of individually. There is no limit to the number of nested sets you can have.

Boolean Filters

These filter on a given boolean field of the Card being either true or false. Instead of choosing True or False you actually choose the field to check and "Card is/has/can" or "Card is not/does not have/can't". So for example you could filter out tokens by saying "Card is not" "Token".

Integer Filters

These filters function like standard math inequalities. You choose the field to compare on, the inequality operation to use (== [equals], >, >= <, <=, != [not equal]), and you choose the value to compare it to. So for example you could look for cards with a Converted Mana Cost < 4 to find cards with a casting cost 3 or less.

String Filters

These filters use the standard string comparisons (Contains, Does Not Contain, Equal, and Not Equal) and function like a simple search. Though Advanced Filtering does allow you to filter on fields that the regular filtering does not allow (List of Registered Tokens, Artist, Expansion, Card XML).

Enum Filters

These filters work on fields that use Enumerations instead of strings or integers and will only allow you to filter on members of that enumeration. For example you could select to filter on "Colour", "Is" "Multi-Coloured" to find all the multi-coloured cards, but you can't do "Colour", "Is", "Purple" because "Purple" is not a member of that enum.

Power/Toughness Filters

You're probably wondering why these are separate from Integer Filters, the reason is Power and Toughness have a valid value that is not an Integer and treating it as an integer would simply be wrong. That value is "*" which in the world of Magic: the Gathering means that this value is variable and depends on what is written in the card's abilities. It could be something like Master of Etherium where its power and toughness are each equal to the number of artifacts you control or it could be like Maro where the power and toughness are each the number of cards in your hand. The point is "*" is not a fixed number and cannot be treated as such, but otherwise these filters work just like the Integer Filters.


Custom Data Folder & Creating a Core Wad

The "Setup Custom Data Folder" option under the tools menu will create a placeholder wad directory inside the game directory. The created directory has all the standard directory structure for a standard "Core" mod fleshed out with an appropriate header file so that the game will recognize the contents of the directory once the user starts adding data. This allows the user to very easily manage both custom cards in the builder and test them in game without having to build a core wad each time to make sure the cards are updated. The directory created is always "DATA_DLC_DECK_BUILDER_CUSTOM", the user has no control over that.

Creating a core wad from the custom data stored in the custom data folder can be done simply by using the "Create Core Wad from Custom Data" option in the tools menu. This takes all the data that the user has put into the custom data folder (excluding empty directories) and writes it to a compressed wad that the user chooses. So if a user doesn't want to use Gibbed Tools to make a core wad they can do so simply by using this option in the Deck Builder (does basically the same thing Gibbed Tools would do). The advantage this has over Gibbed Tools is that it does not need an "unpacked" directory and it will re-create the directory structure and header based on the filename being saved out rather than requiring the user to set them. For example the custom directory is DATA_DLC_DECK_BUILDER_CUSTOM and the user decides to save it out as Data_DLC_1000_Core.wad, the builder will take all the files (except HEADER.XML) from the custom directory and create a new wad with the root directory being DATA_DLC_1000_CORE and the header in the wad will be re-created to reflect this.

NOTE: The deck builder still does not support building cards or any other files not related to building a deck. Other than a header XML the builder will not put anything in the custom data folder. This is NOT a substitute for manually building/placing cards and their images.

Multi-Column Sorting

In the Card, Main Deck, and Create from Existing Deck views you can sort on one or more columns. To sort on a single column simply click the header of that column, click again to reverse it. To sort on multiple columns click on the column header of the primary sort solumn, then hold "Shift" and click on the header of each subsequent column you want to sort by. You can reverse a sort on a column in multiple column sort mode by holding "Shift" and clicking that column's header. To remove a column from a multiple column sort hold "Control" (usually abreviated as CTRL on most keyboards) and click that column's header.

Your current sort will be saved for Card and Create from Existing Deck views. They will also be restored when you go back to that view.


  • DotP 2014 has definitions for several deck strings including Deck tag (actual deck name), Deckname, Promos, Unlocks, and Description. Though I've only been able to find where the Deck tag is used in-game, I can't see anywhere in-game where the others are used so I have omitted them from the builder at this time. If someone can point out where they are used (maybe I'm just blind) then I'll be happy to add those fields into the builder.
  • When upgrading from or any previous version to v1.2.0.0 or later you will need to either delete your Settings.xml file, or manually go in and change the SortMode on the view columns from "Automatic" to "Programmatic" for the multiple column sorting to properly take effect. Previous sort settings will not carry over from older versions.

Planned Enhancements

None at this time.

Features Considered

  • Duplicate Card Filtering based on FILENAME, CARDNAME, or Card XML.
  • Allow for jumping to/viewing cards that are somehow linked to each other (for example transform cards or possible tokens generated by cards).
  • Allow for searching the card list to find cards faster.
  • Possibly separate out the main card list and/or the card image to separate windows/dialogs to help people on smaller resolutions.
  • Add a way for normal users to manage Custom Card Tags easily.
  • Come up with a way to allow users to type in the column name they want for custom tag columns.
  • Come up with a way to sort on custom tag columns.
  • Come up with a way to use custom tags on the advanced filtering dialog.

Known Issues

  • Due to font the type line on the cards may not be completely visible in some languages for some cards.
  • For cards with a lot of text the program may not have enough room to draw on all the text. As such card with a lot of text may have it cut off at the bottom of the preview image. (This is most prevalent when looking at some of the planes.)
  • Special code has not been added for the display of Planes, Schemes, Phenomenon, or Planeswalkers so if any are added/present they will probably not display correctly. The game does not currently have any of these cards so I don't really expect a problem here.
  • As of initial release English is the only complete localization all other languages are only partially complete.

Credits & Thanks

  • Tim Van Wassenhove - SortableBindingList & PropertyComparer
  • Rick - Gibbed Tools & Source
  • thefiremind - Provided Italian localization.
  • Vulasuw - Provided Portuguese-Brazil localization.
  • Scion of Darkness - Provided shading layer and planeswalker symbol for the Deck Box template. Deck Box PSD
  • Microsoft - Visual Studio 2010
  • Wizards of the Coast - Magic: The Gathering & Duels of the Planeswalkers
  • Huggybaby - Slightly Magic forums & for being a great admin/moderator.
  • kevlahnota, thefiremind, and all other modders - For providing lots of mods and overcoming many technical difficulties regarding modding the DotP games.
  • Mythial - Beta testing for this program.
  • BloodReyvyn & drleg3nd - Reporting bugs they found.
  • Everyone else on the forums - For keeping the community alive and fun.

Change History

  • v1.5.0.3
    • Fixed the issue with controls not appearing correctly on the Advanced Filtering dialog. Though the issue with the Designer file is still only partially fixed (for some reason when opening the form in the designer it oddly expands the form to a height of 394 instead of the 374 it was intended for).
  • v1.5.0.2
    • Fixed issue with not honoring the BOM (Byte Order Mark) in Header XML files in packed Wads (Directory Wads seem to be unaffected).
  • v1.5.0.1
    • Fixed missed location for loading of header text for custom tag columns.
  • v1.5.0.0
    • Added card counts to window for Deck, Regular, and Promo Unlocks.
    • Added a reset to the FilterSettings window to allow resetting back to the default filter settings.
    • Fixed the errors generated by having cards with power or toughness with non-standard strings or in a form that is unexpected. This also applies the fix to values entered for the check as well meaning you can now search for P/T values in the forms of #+* and #-*. Note that if the value contains a * then a string check will be performed and it only looks for whether the cleaned strings equal or not.
    • Added automatic image resizing if larger than what is acceptable for Gibbed Tools to accept (this should eliminate errors with crashing due to images with a dimension larger than 2000).
    • Corrected Multiple of Four algorithm to not change the size if the size is already a multiple of four (for example 1024x1024 will no longer get converted to 1028x1028).
    • Set Accept and Cancel buttons for all dialogs on which it makes sense. This means you can now hit Escape to cancel and Enter to apply most dialogs (such as Filter Settings and Options dialogs).
    • Added automatic move and selection of most recently added card. This also ensures that the most recently added card is visible in the lists.
    • Added ability to remove a single card instance from the appropriate list when backspace is pressed on the keyboard while the full card list has focus (uses same mechanism to determine list as enter does).
    • Added ability to remove all instances of a card from the appropriate list when delete is pressed on the keyboard while the full card list has focus (uses same mechanism to determine list as enter does).
    • Added Build mode to the Full AI Personality image.
    • Added additional save confirmations to the following actions (this should prevent loss of work unless the Builder crashes):
      • File -> New Deck
      • File -> Create From Existing
      • File -> Exit
      • Closing Main Window
    • Fixed several crashes related to changing between radio buttons for "Use This", Loading, and Building images.
    • Added a way to override the deck colours (only for display purposes) on the deck selection screen in game. You will find the override options in the deck information window.
    • Added an option to always export AI Personality information. This should make updating a deck to a new IdBlock easier than before since you no longer have to make a change to the AI Personality to have it export.
    • Added the capability to modify the Wad Header from the Custom directory when creating a Core Wad. This will allow for custom crafted headers to be used in Core Wads created from the Deck Builder.
    • Added the capability to read in and display custom card tags such as AUTHOR and EDITORS.
    • Added 3 more strings in this release.
  • v1.4.0.0
    • Added "Wad" column to the "Create from Existing Deck" window to make finding missing cards from unlocks easier and allowing people to easily identify which wad a deck belongs to.
    • Added ability to make a language "Masquerade" as another language. This allows for languages that the game does not support to have their own translations for the Deck Builder. For example Traditional Chinese (Taiwan) which has language code zh-TW to have a translation for Deck Builder, but use card/deck strings from zh-HK which are relatively close to be used for items that pull text from game resources like cards and Permanent Text files.
    • Removed even mipmap sizing as it has proven problematic in game for image sizes that do not evenly decay. The game expects each mipmap to have dimensions that are 1/2 of the previous mipmap in the chain with any decimals being truncated. This should only effect images that are imported into the Builder rather than built as the built images are already in sizes that evenly decay.
    • DataGridViews are now Double Buffered for a performance increase on some systems (I did not notice any performance increase on my system). Memory usage slightly increased as a result. This was reported by Springwight on the forums.
    • Added Cell validation for Quantity and Bias for Main deck and unlock lists to prevent the user from entering invalid data and causing an exception.
    • Added a read capability to the MessageLog class to support showing the log during run-time (implemented for popping up the error log after load if errors occurred).
    • Added Error Report Window to pop-up and do limited filtering on the error log if errors occurred during load. NOTE: English Interface Only.
    • Changed Cards DataGridView to Virtual mode for hopefully better performance. This entailed changes to most of the events for that DataGridView as well as adding an event to prevent Edit mode appearing as well as minor changes to other events (filtering buttons) to facilitate the change (as virtual mode only properly works if you don't set an actual data source for the control).
    • Will now attempt to first associate unlocks with decks inside the same WAD before trying to associate unlocks with any matching deck. This way if there is an override WAD that changes an already existing deck and unlocks you should be able to see the differences depending on which deck you try to create new from.
    • Will now attempt to merge unlocks of the same game type if more than one file exists for the same deck. This prevents unlock objects from overwriting each other when multiple are found for the same deck. For example if someone creates an override WAD to move Promo unlocks to the Regular unlock game type.
    • Made a change to loading of existing decks, now the Deck Builder does not preload the Deck Box Images for existing decks and instead only loads one when creating a new deck based off of an existing deck. This has no visual change to the user, but it reduces memory overhead and should reduce load time slightly. On my test setup this reduces memory usage by approximately 160 MB.
    • Added support for "Special" Rarity.
    • Added internal ability for outputing different order attributes to the WAD header to support additional special functions such as combining sub-types to allow mods that use custom sub-types to play well with each other.
    • Added loading of SPECS files for better sub-type support.
    • Added merging and exporting of merged SPEC data. This allows multiple mods to make their own custom sub-types and get the types merged into a single combined WAD that should override all of the other entries so they can operate properly together without conflicts.
    • Added ability to move cards between the main deck and unlocks.
    • Fixed Loading of localized strings for the Context Menus.
    • Added ability to create a Content Pack Enabler for any Id Block without having to export a deck or change Id Scheme settings.
    • Added several new strings to localizations to support added features.
  • v1.3.2.0
    • Fixed language display in Options. Apparently .Net ComboBoxes don't like to reference public variables only public properties so I had to change how the data in LanguageEntry was exposed.
    • Fixed a couple of other spots where I forgot to change a couple of casts related to the new LanguageEntry object.
  • v1.3.1.0
    • Changed how languages are added to the builder and used slightly so that full support for a language can be done more easily from now on. To add a language to the builder only two pieces are required now (no code changes are necessary now, Languages block is now obsolete):
      1. An entry in the Settings.xml file in the LanguageEntries block
      2. A Localization properly named with the language code in the Lang directory.
    • Added support for Chinese (Simplified and Traditional). Note that I can't do the actual translation work as I don't know Chinese.
  • v1.3.0.0
    • Changed the Deck Availability back to Always Available now that we have confirmed that the problem only happens with content pack 0 and the Deck Builder now puts all the decks it creates into a content pack equal to the Id Block the user is using.
    • Dropped the opacity of the planeswalker symbol in the Deck Box Overlay by 20 points (now 50% opacity instead of 70%).
    • Fixed a couple of bugs with not localizing the export menu options on the context menus for the main window.
    • Added context menu option to export card XML. Note: Regardless of how the original file is stored it will save out the card XML as UTF-8 with BOM.
    • Added context menu options to export the cropped card image (the actual card image before any frames, boxes, or other processing is done) to either PNG or TDX format (if saving as TDX it should be an exact copy of what is stored).
    • Added 4 strings to localizations to support the new features.
  • v1.2.0.0
    • Changed CardInfo class constructor to take in the actual filename of the card and store it for later checks.
    • Added ActualFilename to the CardInfo class, it is now possible to add this property to the card view columns, though I have not done so by default.
    • Added mismatched filename check to cards so the builder will now report when a card has a mismatched actual filename and FILENAME tag.
    • Fixed a rounding bug when calculating the closest MoF size.
    • Added a status bar with the total loaded cards and the cards currently in the card list (after filtering).
    • Changes to SortableBindingList to support sorting on multiple properties. Basically, I implemented IBindingListView for advanced sorting (not filtering).
    • Added the ability to sort on multiple columns (at least for those views in which it is possible to sort).
    • Moved AddViewColumn to Tools so I could use it on the Create from Existing Deck window.
    • Added 2 strings to localization files to support the new status strip at the bottom of the main window.
  • v1.1.0.0
    • Changed default availability to locked due to DotP 2014 problem with lots of decks with always_available="true" set (probably within the same content pack).
    • Added WadHeaderInfo & WadHeaderContentFlags to store and handle the info for the header to create a new content_pack, assign the deck to it, and write all this information to the header to try and prevent a crash in the game. The content pack that will be generated is equal to the value you specified for the IdBlock (if you are using the IdBlock otherwise it will be equal to the DeckIdChange).
    • When exporting it will now generate a "Content Pack Enabler" for the current content pack (currently identical to the Id Block).
    • Couple of minor changes to Wad naming, now the created Wads/Directories will have "Data_DLC_" and "Data_Decks_" instead of "DATA_DLC_" and "DATA_DECKS_" simply because I think it looks slightly better this way.
  • v1.0.2.0
    • Added creation of MipMap chain to the compression of TDX images (enabled by default).
    • Added Option of whether to generate MipMaps to the Options window.
    • Fixed a language display bug on the Basic Filters window (Multi-Coloured was not showing properly).
    • Added 1 string to localization files to support the new MipMap option.
  • v1.0.1.0
    • Fixed a bug with the individual Id Change fields being editable with the use Id Block checkbox checked.
    • Fixed an enabled bug with Export Card Previews being enabled even when a card wasn't selected.
    • Changed how the image files names were stored to eliminate a problem if a mod has an image present with the same name as another image of a different type (different location) in the mod.
  • v1.0.0.0 - Initial release for DotP 2014 version. Changes from 2013 version:
    • Deck updated with new attributes.
    • AiPersonality updated with new tags.
    • AI Personality editing moved to new window (accessible from the Deck Information window).
    • ImageBuilder updated to allow adding an Alpha layer which will replace the built image's alpha layer (allows for smoother edges and required for the new Lobby images [Backplate]).
    • Changed method of loading TDX Images such that if there are multiple images with the same name in different directories the builder can now differentiate between them.
    • Removed all code for AppId Linking as DotP 2014 doesn't use it.
    • Removed Card Preview Image select from Deck Information as DotP 2014 does not use card preview images. Card Previews can still be generated from the main card list using the context menu.
    • Automatic generating of random land pool decks. The builder will create a land pool based on the colour(s) of the deck by picking 4 random land cards from the basic land pool for that colour and putting it into the land pool deck. In the case of a colourless deck it will generate a full random land pool deck with lands from all five colours.
    • Added settings for Basic Land Pools (no editing of land pool decks yet though). The new settings allow for the pool of basic lands from which the deck builder will automatically build land pool decks with to be changed.
    • Added additional location to search for images to support the new location for mana images.
    • Added IdBlock to the IdScheme settings, this allows for choosing IdScheme settings faster, and if it is set to use the IdBlock it will use this for determining the filename for the Core file when the user chooses to create one. Core will still use the DATA_DLC_ prefix as the default for creating a core wad.
    • Added settings for Default Unlock & Foil Ids for Steam, iOs, & Android.
    • Added support for the Miracle card frames.
    • Changed LanguageStrings to add a prefix to the language code for loading purposes. This allows for me to have different file names for different applications so I can host the language files directly from my Wiki.
    • Image templates updated to build images that match with the official Deck and Personality images. (They can still be changed as described in the FAQ above.)
    • Updated export to remove the Card Preview images and add the new AI Personality Lobby image.
    • Updated LoadMusic to pull from the new music directory and check them as MP3s instead of OGGs.
    • Changes to what files/directories are read in when loading data from the game directory.
    • Changed what name is given to Decks when exported. Now uses the DATA_DECKS_ prefix as DECK_ is no longer supported in DotP 2014.
    • Changed project name, and Guids so that it will truly be considered a separate project, in a separate assembly so that .Net won't simply consider it a different revision of the same program.
    • If using the IdBlock in the IdScheme settings then AI Personalities will now include the Block Id to make things even more unique (less chance of conflicts).

Contact Information

If you want to contact me, you must be able to use English (bad or broken English is okay if I can figure out what you are trying to say). If you try to contact me with any other language I will not respond or even try to figure out what you are saying.

For the most part I prefer to be contacted on the Slightly Magic forums where my handle is RiiakShiNal. I will however answer bug reports and program comments at this e-mail address (do NOT contact me for card or deck requests):

Riiak (at) DragonAnime (dot) org

Note: If you contact me via e-mail you MUST include a descriptive subject or I will immediately delete your e-mail. Preferrably you should prefix the subject with "MtG:", "DotP:", or "Deck Builder:".