Monthly Archives: June 2021

GCA Beta Preview, Release 2, Now Available

The second 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.

A bit filtered (b149)


I have changed the version numbers a bit, reversing the places where I specify the build and channel, so this is now version and if I turn this into the next public beta build, it will be This better matches the build.revision usage, and makes it easier for version checking required program versions for data files. I have not yet changed the version numbers on GCA5.Interfaces, I’m waiting until I actually need to make other changes to that assembly before I do that.

Changed the version checking method for when book files specify the program version.

* Classic View

I’ve added a filter pane for filtering Library trait lists (except attributes). Its visibility is toggled with the new Filter button to the right of the categories drop-down list. The visibility setting applies across all the trait tabs (except Attributes), but any specified filter text will be cleared when you change tabs. The filter text is entered into a drop-down list, so if you want to apply the same filter across tabs, or you want to reuse a filter during a session, you can select it from the drop-down list.

For the time being, I’ve removed the disabled Customize button. I may return it later or I may integrate its intended function into the filter pane; we’ll revisit that in the future.

* Library list

On the Unified and Sheet views, I’ve updated the library list filter pane to also use a combo box.

* Data Files

Made some fixes to Dungeon Fantasy RPG.gdf.

A bit more protection (b148)


GCA was not honoring the user’s startup preference (new character, last session, or nothing) when returning from a check for updates. Now it does.

I’ve adjusted how the General Info data is processed, both to help cut down on window flashing and to trigger the character’s dirty state when values are changed. Values are now updated only when leaving the field.

Fixed an issue where closing GCA from the file menu after closing a character could cause an exception.

Found and adjusted a bunch more of the modal dialog calls (so GCA should no longer fall behind all other open windows when returning from them).

Added display of shields to the Protection box, and fixed the display of DR notes.

Made some adjustments to how lists are displayed on the Protection dialog, and also fixed display of DR notes there.

* b147

Forgotten in last build’s notes, I started a panel for Links on the Edit dialog.

My aching brain bits (b147)


Made a slight change to the weight capacity calculations to try and account for variances in double precision values.

Updated saves to save various known tags in the normal xml blocks rather than end up as extended tag blocks.

Adjusted how most of the modal dialogs are called so GCA should no longer fall behind all other open windows when returning from them.

Made some minor drawing and labeling adjustments to the new Attack Mode boxes. Also added a GuideBoxes option that draws dotted boxes around the data cells, instead of just drawing a line between rows of them.

I decided that I liked a different way of showing an item’s used capacity, so I switched to that. The new way draws a bar across the bottom of an item’s display line on the trait list (not including the icon columns), and shows the filled percentage as a darker segment of that line. If the item’s capacity has been exceeded, the entire line is filled red, otherwise it is green or blue.

* Calculations, Text Functions, and NoBase

The NoBase keyword for a bonus was not supported as part of a conditional operation in a bonus, rather it was the unconditional point of a particular bonus. It was always processed first, before anything else, and then other bonus parts were applied to that ‘clean slate’. This may have been unclear, or was forgotten over time, and a number of bonuses started using nobase as a possible return option to clear certain values when various conditions applied. This was a great idea, but it didn’t actually work correctly in GCA 4 or 5, and instead cleared all modes of the targeted tag of all values in all cases.

Since this was a good idea, I have now adjusted GCA5 so that it will process Text Functions at the top of the process of evaluating and calculating bonuses to some tags (currently only reach()). This should enable the use of NoBase in a conditional operation as it already exists in all the cases that I’ve found so far.

* Links

Added a new type of relationship between two traits: linked(IDKey) and linkedfrom(IDKey). These are instantiated during adds() or creates() using a links(yes) tag on the source trait, which is the one doing the adding or creating.

The linked(IDKey) tag on the target trait (the one that was added or created) will get the IDKey of the source trait. It is assumed that this target trait depends on the source trait for some data that it needs.

The linkedfrom(IDKey) tag will be added to the source trait (the one that did the adding or creating), so that it will know that it’s being linked to from another trait and can update that trait when it changes.

Linkedfrom() can have many different IDKeys in a comma-separated list, but linked() can be only a single IDKey value.

The destination trait can then depend on having current data, and can refer back to the linked() trait in formulas using “linked::”, much as you can refer to parents with “parent::” or modifier owners with “owner::”.

You can not have links(yes) and owns(yes) on the same source trait; owns() will take precedence and links() will not be applied.

GCA will also create these related supporting tags: linkedname() and linkedfromnames(), which are the names of the traits related to the IDKeys in the linked() and linkedfrom() tags, respectively; and brokenlinks() which contains the IDKeys from linked() or linkedfrom() that can no longer be found.

* Simple Text Export

Made a minor change to how it exports components.

* Data Files

New version of Payload.

Updated some fencing weapons to use fencingweaspon().

Updated a bunch of containers to include weightcapacity() or countcapacity().

A few other bug fixes.

* TagDefs.XML

Updated with info for these tags: brokenlinks(), linked(), linkedfrom(), linkedfromnames(), linkedname(), links().


Added brokenlinks, linked, linkedfrom, linkedfromnames, linkedname elements to the ‘ref’ block of GCATrait
Added weightcapacity, weightcapacitylevel, overweightcapacity, overweightcapacityby elements to the ‘ref’ block of GCATrait
Added countcapacity, countcapacitylevel, overcountcapacity, overcountcapacityby elements to the ‘ref’ block of GCATrait
Added countasneed, ident elements to the ‘ref’ block of GCATrait
Added displaynameformula, vars elements to the main block of GCATrait
Added drnotes element to the ‘armordata’ block of GCATrait

Bits of sheets and boxes (b146)


A parent item that was copied and pasted without its children would incorrectly still have cost/weight values that reflected those with the children that it no longer had. That has been fixed.

While fixing the issue above, I noticed that Recalculate All was not actually recalculating everything. I fixed that issue. This adds a slight amount to the total calculation times compared to what it was, but everything should now be getting recalculated correctly. This should have no impact on normal operation as it only applies when doing a Recalc All. (GCA calls for one when loading a character, but not normally otherwise).

Changed copying traits slightly. When you are copying traits with children, GCA will now ask if you want to copy the children also. If you do, great, if you don’t, then only the ones already explicitly selected are copied.

Consolidated some duplicate procedures.

* Attack Modes boxes

You can now hit Enter to launch Edit for the selected item.

The Notes text at the bottom was still sometimes getting cut off, and some weirdness was definitely happening with sizing it, so I replaced those bits with other bits.

* Trait boxes

I’ve made the right-click context menu available to the “No traits to display” label, so that you can Paste from there.

I made an adjustment to the routine that sizes the boxes to hopefully fix an intermittent but long-standing issue where the list box makes itself only a single item high, even though the trait box knows it should be larger than that.

* Sheet View

You should now be able to right-click on a trait’s edit field (when it is highlighted but not actually in active edit mode) to get the pop-up menu for traits.

* Official Character Sheet

Updated with options and support to enable/disable the on-sheet edit features and the buttons that call the trait dialogs.

* Data Files

Corrected some text in a couple _New Disadvantage traits, and removed one that was in an Advantages list.