Character event handlers were being set in a routine that worked fine for a single character load, but only worked for the last one loaded when loading them in a batch, such as a party load or multiple characters selected in Open. These handlers are now assigned in the routine that handles the post-load processing in the main UI form, where they should have been all along.
There is now a Favorite button on the Sheet View toolbar which allows you to set the current sheet profile as your favorite for the current character, which sets it as the default print sheet without having to go into Options to do that.
I have finally added the settings to format equipment costs and weights to the Options dialog.
I have once again gone through and converted a lot of implicit type conversions to explicit ones. In some cases, this may have unexpected consequences if I did things slightly differently than the implicit conversion did.
I shoehorned in a new version of a sheet option, which is a caption that supports displaying an image. This is currently handled automatically by GCA when you include an “[image]” code as the very first text in the UserPrompt of a Caption control. That triggers GCA to use the new image caption instead of the standard one. You can currently only align the image to the top or the left, and you do that within the [image] marker, such as [image align=top] or [image align=left]. The image is limited to 150px tall when at the top, and 250px wide when on the left, and will zoom inside the picture area to fit those limits. When on the left, the image is allowed a maximum scaled height of 300 px, and will scale down the allowed width if necessary to meet that cap. (As a side-effect of this being a new control, it makes use of my BBCode label, so the caption also supports limited bbcode, such as [b][/b] for bold and [i][/i] for italic.)
Reverted the change in b151 where UnassignedItemsAsLoadout() would return the loadout as fully functional. That wasn’t actually fully correct, and making it so was overkill for the primary purpose of UnassignedItemsAsLoadout(), which is just to see what items are not included elsewhere. The procedure that does do this is now a new function called UnassignedItemsAsLoadoutWithProtection(), which creates a complete loadout with the default body and hit table and fully calculated protection values.
I fixed some design issues with the Attack Modes box in Unified. It should refresh and update much more smoothly now. I also added an option to show/not show the symbol icons for the traits in the box.
* Official Character Sheet (posted via Updater on 2021 August 24)
Included an adjustment to fully activate and calculate the protection values of an All Unassigned Items loadout when we want to actually print those protection values.