Featured post

Version 5.0.212 Released

GURPS Character Assistant has been released. Get the updated installer from your Warehouse 23 downloads page. (I’ve posted some help on doing that at both the new and old stores here.)

You get the updated installer by re-downloading the ZIP file from your Warehouse 23 account, and running the gca5setup_5.0.212.release.exe program that it contains (see the instructions link above). There is no separate update-only installer, you have to download and reinstall the program. It will not overwrite your personal data, it will overwrite your installation of GCA with the new and updated version.

This update includes all the changes mentioned in Build Notes posts since the last Release. A quick summary of things of interest:

  • A fix to the damage calculation/display bug introduced recently. All damages should now be back to working as they were before that change.
  • The system for sheets and exporters to request options when they’re creating output has been fixed.
  • Page numbers in the Info pane have been improved, so they can now show the full book name after the page code (so you don’t have to remember codes), and if you don’t have a link set up to that PDF, you can set it when you click the link.
  • The GM Control Sheet has now been included.
Featured post

Updating GCA to the Newest Version

GCA can update a lot of the files it uses through the Package Manager in the Check for Updates system. It can even tell you that a new update for itself is available. Unfortunately, GCA can not update its primary program files through this system. To update GCA itself, you have to reinstall it from the setup program available on Warehouse23–the same way you originally installed GCA.

Here’s how you do that.

In the future, SJGames will no longer be updating the GCA available at the OLD store, but for the time being they have graciously updated that download to the current version. If you originally purchased GCA through the NEW store, however, you must download the updated GCA installer from there.

Continue reading

Up a bit, down a bit (b213)


Added some safety checks to the CalcApplicableModeTargetTagXXX(Mode, String) routines, because it is possible to try to use them without an actual mode set, and that is bad.

The special #note() directive for Select() list items has been improved. Displayed notes are now indented to make a more clear separation between the note and the general list items. Also, you can now use limited BBCode formatting in the note, and if you do that, you should use ‘[BB]’ or ‘[BBCode]’ as the first characters in the #note(); they will be stripped off, but tell GCA to use the BBCode engine to draw the text.

GCA will now remove packageupdater2.exe from the appdata folder during the startup process that cleans up after updates.

* SkillScore and Parry for Attacks

Most of the time, a bonus to an attack’s SkillScore is intended to raise the general use of the skill for the attack, including Parry for melee attacks. However, there are certain times where the bonus is intended to apply only to the attack usage, and not to the parry usage. The way to reflect that in the bonus was to subtract back out the bonus from the calculated Parry, and that was quite complex and confusing because it would get applied after all normal calculations for parry were already made. Here’s an example of that:

gives(+1 to owner::skillscore, 
      =-(@int($modetag(charskillscore)/2) - @int(($modetag(charskillscore) - $solver(me::level))/2)) to owner::parryscore$ _

I have now added a new bonus target for use during the calculation of ParryScore: preparryscore. This allows you to simply apply an adjustment to the version of charskillscore that will be used in the parryat() calculation, before the parryat() calculation is made. This means that you can now simply apply a negative version of the positive bonus going to ::skillscore to ::preparryscore to counter it out for parry purposes. Here’s an example:

gives(+1 to owner::skillscore, 
      -1 to owner::preparryscore _

This should be faster and easier for everyone.

* Ammo

I did all the code necessary to convert ammo() to charammo() and store charammounits() for reference. And then I discovered that Ultra-Tech uses ammo() for something completely different, which looks like letter codes of some kind. That’s obviously incompatible, so I’ve disabled the ammo() calc stuff until I can figure out what that’s all about and if I can move things around or if I’ll just have to ignore that for a while.

* Weights and unit conversions

GCA will now create two new calculated tags when calculating equipment items: baseweightconverted() and baseweightunconverted(). The value in baseweightunconverted() is the solved value of baseweight(), or the result of baseweightformula() if that is used, before any automatic unit conversion is performed. The value of baseweightconverted() is that value after automatic unit conversion is performed.

Now, when GCA processes a reference to ::baseweight or TagItem(“baseweight”) it will return the value from baseweightconverted() instead. If you really need the unconverted value, reference it explicitly.

This change comes about due to the discovery that all the calculations for items are using the units-converted value, but bonuses referencing ::baseweight would be getting the unconverted original tag value from GCA. So calculations proceeding from that point would include values using two different scales of units, and the final result would be incorrect.

If you’re not using unit conversion, then this should not affect any results, and all three values should be the same.

* Solver

Added a new function, @getnum(<text>) which returns the first numeric portion found in the given text, as best as it can determine. Note that special case substitutions and $ functions will be resolved before the function is called (that’s how the solver works), but embedded @ functions will not be resolved within this function because the purpose of the function is to get a number out of text, and if you need it solved, you don’t need this function.

The text is searched from left to right to find the first number. If it finds a – it will allow for a negative number, but only if the – is immediately to the left of the first numeric character. It will allow for decimal values if the decimal follows a number or is the first character of the text being checked and is followed by a number.

* TagDefs.xml

Added entries for baseweightconverted and baseweightunconverted.

Package Updates

Dungeon Fantasy RPG.gdf
Seven Secret Kicks
Unarmed Master
gives() added to each

removed an extra | in itemnotes() that was causing an extra Kick mode.

_Advantage: Unarmed Master Damage Bonus (Punch, Kick)
_Advantage: Unarmed Master Damage Bonus (All Modes)
modifiers added

Just a couple bits and a sheet (b211)


The RequestRunSpecificOptions system was not implemented for Print Previewing at all, and was incompletely implemented for Printing. I have fixed that. Note that this system is not available for Sheet View, or when printing from the print buttons on the Sheet View or Print Preview dialog because those buttons print the displayed sheet, they do not cause the sheet to go through the setup process again, which is required to enable RequestRunSpecificOptions. When Run Specific Options are available in a sheet, you will want to set them by using Print Preview or using a print option from GCA’s primary toolbar or menu system.

The default Sheet View sheet for the system was empty, so it would default to the first sheet in the list if not otherwise set. That has now been changed to the Official sheet.

* GM Control Sheet

Version 1.0 included.

Package Updates

GURPS Basic Set 4th Ed.–Characters.gdf
Acute Vision
“+1 to SK:Body Language” added to gives()

GURPS Template Toolkit 3 – Starship Crew.gdf
File added.

Operations Officer (Starship Crew)
AD:Language changed to LA:Language

Steward (Starship Crew)
AD:Language changed to LA:Language
AD:Cultural Familiarity changed to CU:Cultural Familiarity

“Steward, Multi-Role (Starship Crew)”
AD:Language (Spoken) changed to LA:Language (Spoken)
AD:Language (Written) changed to LA:Language (Written)
AD:Language changed to LA:Language
AD:Cultural Familiarity changed to CU:Cultural Familiarity
AD:Cultural Familiarity (Alien Culture) changed to CU::Cultural Familiarity (Alien Culture)

AD:Cultural Familiarity changed to CU:Cultural Familiarity
AD:Language changed to LA:Language
AD:Language (Spoken) changed to LA:Language (Spoken)
AD:Language (Written) changed to LA:Language (Written)

Been a bit to get a bit (b210)


There was an issue that trait prereqs would always be auto-added when a trait was added, even if the Auto Add Needs option was off, so that was fixed to respect the option.

* Damage

Fixed broken damage results, such as Afflictions of the type “HT±5” and weapons of the type ‘6dx3’. To do this, I reverted a change to the routine that calculates damage, related to how it returns the damage text when calculations don’t appear to result in some dice of damage, but a damage value was specified. My change was meant to return any partially calculated damage that did exist, which was meant to account for damage bonuses that might apply other factors to the damage. However, that change broke previously working damage strings, such as those for Afflictions.

I will try to find another way to correct for the bonuses issue, if I can find a way to see that again, since my notes don’t include an example, and I can’t remember what caused the issue I was trying to address.

I’ve now also added support for solving $TextFunctions and damage-specific special case substitutions when DamageIsText(yes) is set. This should allow for still getting some solving completed in a damage string that might otherwise not correctly evaluate using normal damage calculation methods.

(Changes apply to regular damage and to mini-modes.)

* Page Numbers

In the Info pane, GCA will now display the full name of the book being referenced by a page number. This will be in parentheses after the page number, so that the page link remains clickable.

In addition, if you click a page link that leads to a PDF that isn’t actually found, GCA can now launch the PDFs dialog to allow you to specify the PDF that should be launched when such links are clicked.

* Options Dialog

In the Windows & Boxes block, I’ve now added an option for “Dereference page numbers” which controls the page number dereferencing mentioned above. This is enabled by default.

In the PDF Launching box, I’ve added an option for “Pick launch PDF when not found” which controls whether GCA will actually ask you to pick one, as mentioned above. This is enabled by default.

The option for Auto Add Needs was never surfaced to the user (and never saved/loaded), so it was always True. You can now turn this on or off in Options, in the Windows & Boxes block.