b133
When GCA outputs to the log that it found plugins, it now also lists their names and versions, to provide an easy way at startup to verify exactly what is being loaded.
Changed the code in Unified trait boxes slightly, to allow clicking an empty trait box to set the focus there, which clears active selections in other boxes.
Added some helper features to ModeManager: made the modes in ModeManager enumerable, added a function to get a sub-set ModeManager for all modes that have a value for a given tag.
Added the calculated tag charskillusedkey() to modes. This allows for more easily referencing the trait found and used for charskillscore() and charskillused().
Updated the Edit Modes dialog to properly show/hide the calculated values while also allowing the rows to be auto-resized to show long text strings.
Made some adjustments to the Edit Modes dialog to attempt to work around a bug in the grid that prevents user-resizing of the last column at times.
Hooked up hiding/showing the Edit Modes dialog explainer on the Edit Modes dialog and in Options.
When a Mode is in the clipboard as an XML fragment, in the same format as copied from the Edit Modes dialog, it can now be pasted to traits. A mode pasted in this way is tacked on as a new mode, with no value checking or any attempt at avoiding duplicates.
Fixed a bug related to some old code in the Colors & Layout dialog.
Noticed that GCA wasn’t saving/loading the order of the boxes in Unified as set in Colors & Layout. Fixed that.
Found a bug that would crash GCA and prevent it from loading if the Horizontal Page Override setting was On in Unified view. I’ve adjusted some of the form initialization code, which fixed it.
Added an option to opening and closing GCA. If the Shift + Ctrl keys are being held down when GCA starts up, GCA will not load most saved settings values. This should allow for a way to get GCA started if a rogue setting is crashing things, although all the other settings will also be lost. Likewise, if the Shift + Ctrl keys are being held down when the main GCA window is closing, GCA will not save the current settings. This allows for a way to avoid saving settings you changed but don’t want to keep.
Fixed an issue where GCA was keeping way more files in the saved MRU files list than was correct for the value set in Options.
* Select()
Select() dialogs will now return the number of items selected and the points spent, and the number of items unselected and points unspent when it’s possible to determine that, when the user finishes the dialog. This allows for referencing those values in other Select() dialogs down the line.
Note that if ‘atleast’ is specified for points or count, the unused or unspent values will always be zero.
To use these values, you will need to add a name() tag into the tag list for the Select(), and specify a name. If you don’t specify the name(), the default name is just the number of the Select() in the processing order (if you used SelectX() outside of triggers(), X will be the number, otherwise it’s counted from 1 with the first Select() dialog). You can then reference the desired value in the pointswanted() or itemswanted()/numberwanted() tags, just as you would with a #ChoiceList substition, using the name of the Select() and the desired value within % signs.
The variables are: %Xunspentpoints%, %Xspentpoints%, %Xunusedslots%, %Xusedslots%, %Xnumberunused%, %Xnumberused%.
The X in each is replaced by the Select’s name() value.
%Xunspentpoints% and %Xspentpoints% return unspent and spent points, respectively, for the specified Select().
%Xunusedslots% and %Xnumberunused% will both return the allowed number of picks that went unused, and %Xusedslots% and %Xnumberused% will both return the number of picks actually used.
So, a Select() with name(Alpha) would use %alphaunspentpoints% in a subsequent Select() pointswanted() tag to reference those unused points, maybe something like pointswanted(30 + %alphaunspentpoints%) to allow for those unused points to be spent here.
Of course, this means that math is now enabled for pointswanted() and itemswanted()/numberwanted().
Also fixed a bug in the Select() code while I was doing this, where the MaxCost was being set incorrectly when ‘exactly’ was used for pointswanted().
* Protection
Changing the text in the Description boxes on the Locations and Hit Table tabs will now remember that for the character, and for the currently selected Body Type or Hit Table while in the same session of the Protection dialog. However, opening the dialog again later will have the library versions of the descriptions restored, so if you choose a different option from the drop-downs, the standard library text will replace the text in the Description box.
Renamed the Locations tab to Body & Locations.
* Uses
Started integrating support for the uses() tag, as pioneered by Phoenix. Right now, this includes a floating window with the uses for all selected traits, but that likely won’t stick around.
Added a Uses block to the Simple Edit dialog.
All of this support is mode-enabled, so each of the tags mentioned here are mode-specific tags. Even a trait that otherwise would have no modes will have at least one mode to support the uses() system.
Support currently exists as a mini-subsystem within GCA, utilizing the uses(), uses_sections(), uses_settings(), and uses_used() tags.
Uses() allows for specifying how many uses (doses, shots, bullets, etc.) are available, and to create check boxes for them. The special variable ‘count’ is supported as it is for Phoenix.
Uses_sections() allows for specifying how many groups of the uses() check boxes to create, which are shown in different sections on the current display control. This was called usescount() by Phoenix, but I wanted to have all the sub-tags use underscores and thought this would more clearly show how I see it working. I have set up aliases in GCA to allow using the usescount() tag to access the uses_sections() tag data. GCA should handle that transparently, but will save it out to the save files as the uses_sections() tag.. The special variable ‘count’ is supported as it is for Phoenix.
Uses_settings() contains a uses() specific set of tags that specifies display and operational settings for the Uses subsystem and controls. These tags should be formatted exactly like any other tag list, separated by commas. For example: usersettings( selectioncolor(orange), trackusesbysection(False), uselargerboxes(True) ).
Uses_used() tracks how many uses have been used of the uses() available. If tracking uses by section, then this may be a list of numbers separated by + signs, such as ‘4+0+1’ to show that there are three sections, and there have been 4 uses used in the first section and 1 uses used in the last section. If not tracking uses by section, then even if you have different sections specified, all uses are consumed as if from one big pile. Tracking uses by section is currently the default behavior.
If you right-click on a Uses display, you should get the option to make changes to the block’s settings.
* GCA5.xsd
Updated for uses(), uses_sections(), uses_used(), and uses_settings() in the GCAAttackMode block.
Updated for charskillusedkey().
* tagdefs.xml
Updated for the uses(), uses_sections(), uses_used(), and uses_settings() mode tags.
Updated for charskillusedkey().
* Basic Set
In the Basic Set file, the Karate skill has an extra | in itemnotes() at the end, which results in an unnecessary second Kick mode being added. I haved added a corrected version of Karate to the GCA5 Changes.GDF file.
* Official Character Sheet
This now has options for printing the User Notes and/or Description tags for traits, settable per trait type in Sheet Options.