Monthly Archives: October 2021

GCA Beta Preview, Release FOUR, now available

The fourth release of the GURPS Character Assistant 5 Beta Preview is now available.

The first release was announced in this post, which has more details.

This release fixes all the reported bugs so far, and includes some updates and other fixes, as detailed in the various build notes posted on this blog.

You can find the installer available for download here:

If you want to validate the ZIP after download, there is a PAR2 file here:

The GCA5 installer is within the ZIP file. If you already have the previous Beta Preview release installed, this should install smoothly over the top in the same location. Once installed, this should be version (The previous release was

Please refer to the original announcement for more details and links to the Google Group where we are handling the related discussions. We’d love to have your feedback, suggestions, and (of course!) bug reports.

Barely bits (b163)


In Sheet Options, when the options are contained within option boxes, doing a Reset To Defaults would wipe out all the box titles. That is now fixed.

Fixed a rogue indent pusher that was causing some status messages to end up displaying as if they had blank lines ahead of them.

Two bits (b162)


Adjusted the way chosen attributes, skills, and spells are displayed in a MultiType Select() dialog (that is, when more than one type of trait may be chosen in the same selection dialog, such as selecting between various Attributes and Skills). This change should now allow for displaying the current score or skill level with the name of the trait in the Character list, instead of that information not being available when in a mixed selection dialog.

I’ve added a right-click menu to the Edit Modes grid. This should help smooth out copying and pasting entire modes since it’s easy to forget the shortcut keys for that. I’ve also added the option to duplicate the currently selected mode.

Bits selected and directed (b161)


Fixed a bug in addsorincreases() handling that would stop handling the list of items upon finding one that wasn’t an actual trait (such as an empty slot caused by an extra comma), instead of just moving on to the next item, which is what it does now.

Fixed a bug in #BuildLibraryItemList.

I’ve created a couple new objects and a couple functions to consolidate/replace the handling of the standard trait selection by tag syntax ( where [ is | isnot | includes | excludes | listincludes | listexcludes ] ). I am now using this new code to handle the selecting of character or library traits from #BuildSelectList, #BuildCharItemList, and #BuildLibraryItemList. This consolidation allows for cleaner code in routines using the syntax and allows for updating the code in a single place when changes or upgrades my be needed. I’ll update any other places that may use the syntax as needed in the future.

I disabled what should be a redundant call to recalculate character values when checking a character tag. I think things are already robust enough to not have any calculation issues as a result, but having that call there left the door open to stack overflows when trying to get the value for a character tag (which triggered calculation of the character tags, which triggered calculation of traits that referenced character tags, and so on forever).

* SelectX()/Select()

Added some support for using attributes in a Select. You can use the %score variable in #codes() for list items that are attributes to reflect the current score of the trait. If you’re limiting upto and/or downto, you’ll have to be explicit about the downto having a floor of the current %score, otherwise GCA will allow lowering the attribute below the pre-existing score (if the trait itself allows that). So, to allow a score to be increased one level only, you’d use #codes(upto %score+1, downto %score). You can *not* currently limit attributes by points using #codes().

* Package Updater (Now v.1.0.4)

Reading font values from the instructions file now caps the font size to 0 on the small end ( < 8.25; zero means no scaling is performed) or 24 on the large end (> 24).

Surprise regional bit (b160)


* Region & Culture Issues

When GCA5 was ‘fixed’ to always use decimal points and thousands separators in the US fashion (periods as decimal points and commas as thousands separators) back in b154, I suspected that some oddities may pop up somewhere. One popped up in an unexpected place, which was the interaction between GCA and the Updater system. The PackageUpdater wasn’t adjusted in the same way, so the one numeric value it cared about, font size (to support zoom modes), was being affected in an unexpected way, which made the font size jump into the hundreds or thousands. That’s huge, and mostly made the Updater window appear to be empty.

I have adjusted the reading and writing of the instructions file to write the fontsize as an integer (font size * 100) which is then read in and converted back to a single (read value / 100). That should fix this miscommunication and make sure that zooming can still be honored.

* Package Updater (Now v.1.0.3)

Updated as mentioned above.

Smarter bits (b159)


GCA should be a little smarter about handling situations with portraits when the portrait is embedded in the character file and may not actually exist as a file on the disk. Notably, the Portrait window should no longer clear the portrait in such situations, and now has an expanded warning about it.

I think I have made gains bonuses slightly smarter without breaking anything.

I’ve added ‘level’ and ‘score’ to the tags that GCACharacter.TagItem() will return a value for, and in this case that value is always 1.

Traits that may reference campaign log values through char:: should now be updated more reliably.

Attack boxes weren’t drawing the Selected color with preference over the Dirty color. That is fixed.

I’ve added the Dirty color to those a user can set for the various trait types. The default is the same orange it has been, but with a darker orange border (which is usually hard to see, but helps when a lot of dirty traits are displayed in a block) and black text. This should always have been something that could be set because the defaults may not agree with some folks or with their preferred color scheme. This is most helpful when using colors that are obviously different from the standard ones. (If you aren’t aware, ‘dirty’ is when a trait has just changed, and this allows you to see traits that are affected by another trait you just changed. It’s not perfect, but it can be helpful.You can turn this feature on/off using the “Show Dirty” button (the lightning-bolt with magnifying glass icon) on the toolbar, next to the Components check button.)

Trait boxes in Unified now have a new option in their gear menu: Double-Click Opens Trait Dialog. This is *off* by default, because this is non-standard behavior. Also, since each trait box is a separate instance, if you want to turn this on, you’ll have to turn it on separately per-box. When this option is on, double-clicking the gear button will open the associated trait dialog for the traits in the box. Note that the pop-up menu will still appear for the click on the button, but will disappear after the double-click finishes.

The Campaign Log window should now be a bit smarter in how it adjusts to being zoomed, and in how it adjusts the splitter when being resized.

* Official Character Sheet

Updated to use the character portrait image from within the character, rather than loading it from the file reference. (This allows it to work with portrait images that might be saved in the character file but otherwise not found on the disk.)

* Data Files

GURPS Basic Set 4th Ed.–Characters.gdf: Modified Innate Attack (%TypeList%) and Burning Attack advantages to change “bu” to “burn” for damage types.

GURPS Magic 4e.gdf: Modified several ~Flaming and ~Lightning modifiers in to change “bu” to “burn” for damage types.

Discworld RPG.gdf: Modified several Burning Attack advantages to change “bu” to “burn” for damage types.