Monthly Archives: May 2021

Safety bits? (b145)


If you start GCA in Safe Mode by holding down CTRL+SHIFT when launching, GCA will now mention that in the Log and Info panes.

When loading GCA for the first time, or in Safe Mode, the Info/Logging pane on the right should now ensure that it is wide enough to see the text it contains.

If you started GCA in Safe Mode, then GCA should warn you if you might overwrite your saved preferences with the ones from the Safe Mode session, and let you avoid doing so. This may happen when you use Options or when you close GCA after starting in Safe Mode.

I have added a trap for the Sheet View pane raising an exception and not instantiating. I have also added support to allow GCA to continue running without that pane being operational.

If starting up GCA in Sheet View, it should no longer reset the sheet’s zoom to the minimum size, and instead should correctly reset to the zoom you were using when you shut down.

Sheet View will now terminate object editing if the user clicks somewhere else on the sheet.

Sheet View on-sheet editor buttons now get tooltips.

Added a CollapseChangeButton to the SheetActionField SheetAction Enum, which allows collapsing/expanding child lists.

* Official Character Sheet

I’ve added support for editing things on-sheet in Sheet View. Let me know what you want to be able to edit if it’s not here yet.

Bit of rapid rebuild (b144)


I have rewritten a large chunk of the Attack Modes box to be able to better adjust to smaller sizes where all the fields may not be able to show up in the display area. The box will now dynamically wrap the contents to fit the space, and put mini-headers in-line with the wrapped data so it’s still possible to determine what fields are what data. This should significantly improve the experience for those folks that don’t like the double-width display and don’t otherwise like large columns.

Also added an option to the box to allow dotted guide lines to be drawn between the rows.

And addressed an issue where sometimes the Notes text at the bottom would get cut off.

If this works out, I’ll clean it up a bit and then make a version available as the sample plugin.

For a few bits more (b143)


Fixed a minor drawing issue on the Reaction Modifiers box.

Fixed a text issue I introduced last build to the General Info box when I was messing around with things.

If you edit a trait, but Cancel out so that no changes are kept, GCA will no longer consider the character Dirty (which is what prompts for saving before closing).

If no characters appear to be Dirty, GCA will no longer ask to save them before Updating.

Setting a body using the bodytype() tag in a template stopped setting the body because of the changes in GCA5. That now works again.

Templates can now set the desired default hit location table reference for a character using the hittable() tag. Specifying the name of the table in the tag will look up that table and set it as the default, if it is found. This goes along with the existing bodytype() tag that sets the desired body type.

It is now possible to save a character as a racial template or meta-trait. I didn’t like the user experience when I started it as an Export sheet, so I built it in instead. It’s available from File > Save as Template.

* Other

Added some additional helper functions and classes in various places to simplify Save as Template and future tasks.

A few more rapid fire bits (b142)


Added some error traps to the startup process that creates the default folders in the user’s Documents folder. Hopefully this will catch the issue where the user has Controlled Program Access turned on. GCA will tell the user of the problem accessing Documents, that it might be due to that, and then end.

On the General Information boxes, Speed is now Basic Speed; Basic Thrust and Basic Swing are now Thrust and Swing; and I’ve added Basic Lift to the front of the bottom row.

Resynchronize Body will now resync all the bodies for the character’s loadouts.

I have created a new box for Unified view: the Reaction Modifiers box. Since it didn’t exist before, it will appear as the last box.

* Data Files

A whole lot of books were updated to update language references from AD: to LA:. This primarily affected Templates, because I forgot to finish updating things when I was doing the mass update before the Beta Preview release.

The Basic Set, Dungeon Fantasy RPG, and Discworld books, which all use the same basic Humanoid body, somehow lost the Vitals location from that body, so I added it back. Apparently I also lost the standardized body location names that use spaces in the names (such as Left Leg instead of LeftLeg). I’m not sure how that happened, but I fixed that, too.

More bits, rapid fire (b141)


I’ve disabled the Help menu’s Contents, Index, and Search items because I haven’t written any help files yet.

I’ve removed the Tools menu’s Customize item because it’s not used.

In Current Character Options, the Trait List Grouping box was chopped off and unusable. That should be fixed.

* Bonuses

Possible breaking change! Please be alert to your bonuses!

For ages, GCA has treated a bonus with a value of zero as ‘not applicable’ and therefore not applied to a trait. This is technically true for additive bonuses, but technically false for multipliers. A multiplier of 1 should be effectively non-applicable, since it changes nothing.

GCA was using this value of 0 as being non-applicable to allow it to remove bonus relationships, such as when setting the granting trait to level 0, or when GCA wants to remove the bonus entirely from the system, such as when deleting the granting trait. This allows for easier cleanup and ensures no ‘ghost’ bonuses remain.

I have now implemented a change to how this works.

Bonuses now have an IgnoreMe flag, which is set to True when the granting trait drops to level 0 or when GCA wants to remove the bonus effects. Now GCA sets IgnoreMe to True where it previously set Value to 0. Now, GCA checks for IgnoreMe = True instead of Value <> 0 when it determines if a bonus should be included in bonuses applied to a trait.

This means a multiplier of 0 should work as you’d expect, and it is now possible to apply a *0 bonus to zero out a value, instead of having to try to subtract the base value or some other workaround.

Sometimes this type of change has unexpected consequences and unforeseen follow-on effects. I’ve done some testing, and things seem to be working, but my personal testing definitely doesn’t reach into all corners. And I just plain overlook things sometimes.

So, this is a bigger architectural change than I anticipated making at this point, but it’s one that I think should have been made long ago. So I made it.

It should just work, but please watch for weirdness.

* GURPS Dungeon Fantasy 1 – Adventurers.gdf

Removed “GURPS Power Ups 3 Talents.gdf” from the LoadAfter header line.

A few more li’l bits (b140)


* Miscellaneous

Some menu items on the right-click menu for trait boxes in Unified were not available when they should be. That should be fixed.

* Parent capacity

How did we go so long without having any indication that certain parents, such as backpacks, might be over-weight? I had to triple check that I didn’t have support for it somewhere.

I’ve added two new base item tags: weightcapacity() which specifies the maximum amount of weight a parent can have in childrenweights(), and countcapacity() which specifies the maximum number of child items (including multiple counts of any children) a parent can have. Both only apply to Equipment items.

Checking/calculating capacity also generates some other tags: weightcapacitylevel() and countcapacitylevel() which show the percentage of weight or count capacity currently used (will be less than 100 if not full, over 100 if over-full); overweightcapacityby() and overcountcapacityby() which show the actual value of the amount over capacity, or are nothing if not over capacity; and overweightcapacity() and overcountcapacity() which simply say ‘yes’ if over weight or over count, and will be nothing if not so.

Trait lists in Unified and Classic will now display a ‘fill’ level in the rightmost icon column, which shows the box icon indicating a parent. If the item is over capacity, the background of that space will be filled with red; if the item is under capacity, it will fill from the bottom up as capacity is filled up, using green for weight or purplish for count, whichever is closer to full.

* Modifiers dialog

If a modifer has possible modifiers, GCA displays a tools icon in the first column. If the modifier is on a non-standard tier, the tier number is also displayed in the first column. It should now be easier to see the tier number in the column over the icon.

* Info Pane

GCA should now change the mouse pointer into a hand when it’s over a page link in the Info pane.

GCA now defaults to launching a page link with a single-click, with the option for a double-click.

* TagDefs.XML

Updated for new tags above.

A bit from feedback (b139)


Added a Filter pane to the Library list used by Unified and Sheet views. This allows restricting the display of traits in the Library list based on text entered into the filter text box. The filter is applied based on the names of traits, and is case insensitive.

Added an option to the Library list gear menu to show/hide the filter pane.

* Data Files

Body types have been updated to include a Skin location group. All locations except Eyes belong to this group.

Updated Damage Resistance in Advantages and Templates to use the new Skin location, instead of the incorrect All location.

Bits and bobs addressed from the public Beta Preview (b138)

As a note: The public Beta Preview releases are 5.0.1.X, but that X will be the same as a previous private build. So this b138 will not be seen as a public release unless it’s listed as 1.138. That may happen, or I may have another private build first. We’ll see.


There was a bug in the code that returned thr and sw damage, which didn’t allow it to find a ST of 1, so it was treated as a default value. That is now fixed, so ST 1 now returns the proper values.

Fixed a bug in Build Campaign Book that crashed the program when pressing a key in the trait list.

The ‘check for updates’ period was set to 0 by default. That should not have been 0, since that’s ‘disabled’. I set it to 30, but that won’t change the value for people who have already used GCA. If you want to periodically check for updates automatically, please go into Options and change the Check for Updates value to your preferred period.

Updated the Resync code to restore the base value of Tech Level to the character’s Campaign TL.

Updated the FastLoad file version, because I made some changes to what goes into the FastLoad files.

GCA will now track when a book sets a library settings value. This is necessary so that GCA can determine what action it needs to take when the user changes one of the related settings in the Default Character Options tab of Options. Since settings can be set inside a book, library settings are saved in the FastLoad file. However, not all settings are set by the books, so the default values end up getting saved to the FastLoad. If a user changes a default setting, then, GCA needs to know if it can safely change that setting and save it back to the FastLoad file, or if it should ignore the change to the current library because the value was set by an included book.

GCA will now check if the defaults are different from the settings in a Library after it is FastLoaded, and set those values that are using out-dated default values, but not those set by a book. If changes are made, the Library FastLoad is re-saved.

The Options dialog has now been updated also, to have each currently loaded library check to see if any changed options affect it, and re-save the FastLoad if so.

* LaunchCodes.XML

Adjusted Acrobat to use /n option, which always opens a new instance. This is because Acrobat will otherwise just bring-to-front the current instance, but not actually change to the desired page.

* BookCodes.XML

Adjusted Basic Set to have a page offset of 1 instead of 2, as that apparently changed over the years.

* RTF Display Info Templates

Updated to use fixed + values for changes in font size, instead of multiples, to account for issues with internationalization.

* OfficialCharacterSheet

Updated display of TL to use Char.TL.

Added two options: 1) print default bite/kick/punch attacks, True by default; 2) print item notes for attacks, True by default.

* ColorBlockSheet

Updated display of attributes to use DisplayScore

* Dungeon Fantasy RPG.gdf

Added “NoDefaultLevelDiscount=Yes” to Settings block.

GCA5 Beta Preview now publicly available

GURPS Character Assistant 5 is available now as a beta preview. This means that the software is unfinished and almost certainly has bugs that may crash the program. Features included now may be removed or significantly altered before release.

You DO NOT have to upgrade to GCA5 at this time. The beta version is available to those that wish to try it out and provide feedback or bug reports. I would love for you to give it a try, as I think it’s a significant improvement, but I understand beta software is not for everyone. I believe that the GCA5 beta is complete enough and stable enough to replace GCA4 in your daily use, but you can make that decision for yourself if you try it out.

The beta preview is available now. 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.

You do not have to uninstall or reinstall GCA4, and you can run both versions on your computer at the same time (but please do not install them into the same folder on your computer).

I will be running the beta through a Google Group <>. Google Groups are basically mailing lists that have a forum-like web-access mode. This is a public group, so it should be open to everyone who wants to join, but you *do* have to join the group in order to view or post messages. You can set in your preferences that you do not wish to receive emails if you only want to use the forum mode.

Please direct all bug reports, loves, hates, and any other appropriate commentary to the Google Group. I want to hear what you think of new features, missing features, broken features, and all things GCA5, but please remember that we are all human, and please be polite and kind to all the other participants.

Changed a tiny bit of my mind (b137)


I’ve changed the ‘objects’ that can be interacted with in Unified trait boxes when a trait is selected. I’ve decided to remove the Delete button that was being shown and instead allow the user to click the + or – symbol next to a parent to expand or collapse the child list. It just seemed to make more sense to do that. I have not done that in Classic because Classic didn’t already have a built-in system for putting objects on selected traits.

Package Updater updated to support an update block that is a ‘message’ but doesn’t try to update that package itself.

Package Updater should now correctly display the description of a package even if there is an update for it.