Added code to allow the Sheets drop-down on the Sheet View and Print Preview dialog toolbars to stretch out more if there is room for it.
Added some functions to SortedTraitCollection.
Restored drag-n-drop to Sheet view.
Sheet View should now retain its view position as much as possible when adding or removing items from the character sheet.
Added initial support for a Substitutions system, which allows one trait to substitute for another when GCA is tracking down references. This means you could create a ‘Guns (Small)’ skill that substitutes for ‘Guns (Pistol)’, and then when a reference to ‘Guns (Pistol)’ is being sought by GCA, ‘Guns (Small)’ would be considered a valid return. You create a substitution table by using the subsfor() tag in the item that is intended to substitute for the others. For example, our ‘Guns (Small)’ item would include ‘subsfor(“SK:Guns (Pistol)”)’ in order to create the substitution table. Multiple entries can be submitted at once in subsfor() by separating them with commas. The trait type prefix code is required in the subsfor() definition. Implementation is currently limited, but should be working in most places, such as defaults and weapons tables. Note that the item that is the substitute also qualifies as an existing instance of anything for which it substitutes, so adding one of those items after the substitution table is created would be considered a duplicate by GCA, and will be refused by default.
If the CTRL button is held down when drag-n-dropping a system item into a Character list in Compact View or Classic View, or onto the sheet in Sheet View, GCA will now add that trait even if it is a duplicate of an existing trait.
Added initial support for tracking what files ‘touch’ system items as they’re created and modified by data files. This will allow data file authors or debuggers to click on a system item and see in the View Info pane how the item was affected by various data files. Currently supports trait creation, replacing of previous traits, automatic replacement or merging of duplicate tag data, cloning, mergetags, and replacetags. (The related option in Options must be On when the fastload files are built in order for the data to be available; GCA won’t bother to track it if the option is Off.)
Added UI for the data file ‘touch’ tracking system option to Options, and altered the title/text of the enclosing options block from Logging to Book Processing.
Added #CloneMod data file command. Works like #Clone, but clones a modifier. Unlike traits, modifiers don’t have an item type, so they’re unique within their groups, so #CloneMod requires specifying the group and the full name of the modifier, like so: #CloneMod “group:modifier name” as “group 2:modifier name 2”.
Added #MergeModTags and #ReplaceModTags data file commands. You must target them using a group and name as specified for #CloneMod, but otherwise work as you’d expect from #MergeTags and #ReplaceTags. (For example: #replacemodtags in “Burning Attack Enhancements:Partial Dice” with “cost(+1/+2),formula(%level * 5)” ) The ALL keyword is not supported.
Added #DeleteModsFromGroup data file command. This allows for deleting specific modifiers from existing data. Similar to #DeleteFromGroup in structure, you specify the Mod Group from which you’re deleting items, then a space, then all the modifiers from that group that you want to delete, in a comma separated list. Enclose the mod group name in quotes, and enclose any modifier names that contain commas inside quotes as well. (For example: #DeleteModsFromGroup “Burning Attack Enhancements” Partial Dice, “Partial Dice, Per Die” )
Added #DeleteModGroup data file command. This allows deleting an entire group and all its modifiers at once. Specify the mod group name to remove, and its all removed. (For example: #DeleteModGroup “Burning Attack Limitations”)
Updated OfficialCharacterSheet to correctly reduce the component name column widths by the component indent level when printing traits.