Author Archives: Armin

Package Updates

* Core Supplemental (Official Character Sheet)

Updated to use newer drawing routines for the protection image.

* Package Updater

Updated to show GCA version number in the top text block.

When the Details button for an update is clicked, the text has been updated to show all details when both updated files and obsolete files are involved.

Biographical imperial bug bits (b206)

b206

* Bug Fixes

When reading a book file, if the last character of content in the file was a line-continuation character, GCA could get stuck in an infinite loop. Fixed.

* Options dialog

In the Characters box, the option ‘Show all status messages when processing templates’ makes more sense as a book-processing option since the output is for debugging. That option has been moved to the Book Processing box.

* Metric and Unit Conversions

Since GCA attempts to perform automatic unit conversions when various values are in standard/metric and the character is set to the other, checking or unchecking the Metric checkbox on the General Information box should trigger a character recalculation so that items can be converted to match the new setting. That will now happen.

Previously, GCA’s automatic unit conversions only used the Game Metric values (p. B9). GCA now supports either Game Metric or Real Metric (p. B9). Game Metric uses simpler, ‘close-enough’ conversion constants while Real Metric uses more exact conversion constants (to 3 decimal places). This support is GCA-specific, not character-specific, so all loaded characters use the same conversion values.

You can change GCA between the available sets of conversion constants in the new Unit Auto-Conversions box in Options. This box also offers the option of turning automatic conversion off, and leaving units and values alone. Some traits have unit conversion built into their calculations, and these will still calculate themselves based on the Metric setting regardless of your setting for Unit Auto-Conversions.

* Per-Die result caps

You can now cap the results returned by the functions that return the dice for base swing (@baseswdice) and base thrust (@basethdice) damage. I believe the recommended dice cap is 7; any positive integer value is allowed. These functions are primarily used for giving per-die bonuses to Boxing, Brawling, and karate, but would also affect Weapon Master damage bonuses or any other such usages.

There are now default character options and character options to set these, in the respective Rules boxes.

Because these are new options settings that can be set by files, also, the FastLoad file version has been changed, and FastLoad files will be rebuilt. The book file settings are “CapDamageBonusPerDie=True” to turn capping on, and “CapDamageBonusPerDieAtXDice=X”, where X is the cap to set (default is 7).

These settings are now also included in Build Campaign Book.

* Appearance / Biographical Data

The Appearance dialog has been updated, and it is now called Appearance / Biographical Data. The updated dialog now has two tabs: Appearance, which contains everything from the existing dialog; and Biographical Data, which contains a grid of biographical data fields. The Biographical Data tab also includes everything from the Appearance tab, so if you prefer it, you can simply use this tab and won’t have to switch between them.

Biographical data includes a bunch of possible default fields which you can use. All of these are stored in the character’s tags (except for those fields also on the Appearance tab, which have custom data slots on the character). The character will also get a tag called ‘biodatacontrols’, which tracks what all of these tags are, whether they are visible, and what prompt is shown to the user if it isn’t the same as the tag name (which is the case for most of them since this system uses tag names such as ‘bio_dob’ for ‘Date of Birth’ and ‘bio_family’ for ‘Family’).

You can rearrange the order of entries on the grid using drag-and-drop. You can hide fields you have no interest in using the right-click menu. If you change your mind, you can also use Show Hidden on the right-click menu to see the hidden items, then select them and pick Show to unhide them.

I’ll probably also add the ability to create new fields to include here, but that’ll require another dialog for tag names and prompts and such, so probably not right away.

The defaults are currently created by GCA, but the show/hide settings are per-character. There’s currently no way to universally hide any of the fields to make them hidden by default on new characters.

 

Bits of requests fulfilled (b205)

b205

* Select(), SelectX()

Select() lists can now use the new #tags() directive for list items. This is used similarly to #codes(), in that it’s just tacked on to the name of a list item, and GCA will parse it out and extract the contents. If you use both #tags() and #codes() remember not to use a comma between them.

#tags() allows you to replace the contents of any tags on the library item being referenced, before the item is sent to the Select dialog. List all the tags desired inside the #tags() parens, bearing in mind the usual nesting requirements.

This new support allows you to customize items without having to use #newitem, if the item is one that can be easily based on an existing item. Replace name(), nameext(), initmods(), whatever you need–just remember that the tags must be Library tags because the items shown in Select are Library items until added to the character.

For example, if you have a Select() with a list() like this:

list(_
SK:Performance #tags(nameext(Singing), page(TESTING))#codes(upto 16, downto 10),_
SK:Photography #tags(name(Holography), page(TESTING))#codes(upto 16, downto 10)_
)_

the user will be presented with a list of options that includes “Performance (Singing)” and “Holography/TL” (because Photography is a /TL skill). Aside from the name change and the new TESTING page number, everything else for those two skills will be identical to Performance and Photography, respectively..

List items can now also use the new #note() directive to specify a special note to include on the Library list itself. This special note will be displayed directly under the trait name on the list, and that list entry will be taller to accommodate it.

* Functions

Added the @sumlist() function, which returns the sum of the values in a comma separated list. Each value in the list may be a fenced Solver-enabled expression.

Added the $modifiers() function, which returns a list of the modifiers applied to the trait. This is probably only useful with displaynameformula(), but that’s why I added it. Use $modifiers() without parameters to get the usual captions (shortnames), but *without* values, enclosed in parentheses. Use a comma separated list of parameters to modify this behavior: ‘captions’ explicitly sets captions (the default) while ‘fullnames’ sets fullnames instead; ‘values’ will include the values of the modifiers; and ‘noparens’ will turn off the enclosing parens. (Note that if there are no modifiers for the trait, the return value will be empty, not a set of empty parens.) Example: $modifiers(values, fullnames) will return the full names of the modifiers along with their values.

* Adds(), AddsOrIncreases()

When a trait is being added, and no name extension is provided, and GCA looks for versions with name extensions included, and finds some, it will pop up a dialog asking the user to choose which one they want. GCA does this even if only one option is found. Now, GCA will automatically add the found selection if only one is found.

* Options

Added some additional error traps to try and catch weird cases where something is crashing GCA because some option is set wrong or maybe missing.

Damage mini-modes were supposed to be On by default, but were actually Off by default. They are now On by default, as intended. If you want them disabled, you’ll have to go into Options, Experimental Features, and turn them off again.

* Edit Traits

If displaynameformula() is being used, a section near the top, just above applied modifiers, should be displayed showing the current Display Name and the current displaynameformula(). You can edit the displaynameformula() there. You will need to Add Tag displaynameformula() or turn on ‘Show all fields’ to show the display name fields if they’re not visible.

Bit of a party (b204)

b204

GCA had a helper function called PlainText() to return plain text from RTF. However, it was not robust enough, so I’ve updated it to use the newer RTFtoPlainText() function which is more robust.

When dragging and dropping a parent item within a trait list, GCA was not correctly preventing the user from dropping onto a child or grandchild, which would cause GCA to crash. That should now be fixed and the move will not happen.

When dragging items within a trait list, GCA should now use a red insertion point indicator, instead of the usual black one, to indicate when the drop location is not valid due to one or more of the dragged items being ancestors of the item at that point. Dropping anyway will have no effect and the dragged items will not move.

I think I’ve restored the ability of the Info pane to deal with user notes or descriptions of traits that have embeded RTF codes without being full RTF blocks. This should allow for those fields in book files to use bold or italics, for example, without having to embed a complete RTF header along with it.

* Party View

You can now copy and paste character card designs. Added to the bottom of the gear menu on each card are two new options: Copy Card Design and Paste Card Design. Copy Card Design will copy the card design elements into an XML text string, which you can then paste elsewhere, send to a friend, or paste it into another card using Paste Card Design. Paste Card Design will only be enabled if the clipboard contains XML text that looks like it might contain card design data, and if so, you can select it to paste the design in. Once pasted, the card will replace it’s current design with the one contained in the XML.

* Build Campaign Book

I’m trying to rebuild this dialog to actually display properly for users in Windows 11. Since I don’t have a Windows 11 development machine, this is problematic. However, my first attempt is now done.

Having the option enabled to display an LC column in Equipment lists caused the program to crash when switching to the Equipment.list. That is now fixed.

The Library list for Equipment should also now honor the formatted display of costs and/or weights, if that option is turned on.

The list headers should now display subheads/column headers for each list.

Package Updates

GURPS Low-Tech 4e – Armor & Protection.gdf
Added to \Variants\.
NOTE: This file is just the armor and body information from Low-Tech. It is everything removed from the ‘GURPS Low-Tech 4e – Everything NOT Armor & Protection.gdf’ file, and allows for a full Low-Tech file-equivalent when used in conjunction with that file instead of using ‘GURPS Low-Tech 4e.gdf’ itself.

GURPS Low-Tech 4e – Everything NOT Armor & Protection.gdf
Added to \Variants\.
NOTE: This file is Low-Tech with all the armor and body information pulled out. This allows you to use everything else from Low-Tech with other books that use the Basic Set compatible armor coverage.

Package Updates

Dungeon Fantasy RPG.gdf
[Modifiers]
<Crossbow Quality>
group added

<Climber>
group added.

[Equipment]
Composite Bow (ST %choice%)
Longbow (ST %choice%)
Regular Bow (ST %choice%)
Short Bow (ST %choice%)
added ‘Bow Quality’ to mods()

Blowpipe
Composite Crossbow (ST %choice%)
Crossbow (ST %choice%)
Pistol Crossbow (ST %choice%)
Prodd (ST %choice%)
added ‘Crossbow Quality’ to mods()

Hatchet (tool)
Hatchet
Hatchet (Throwing Handle)
Jutte
Pick
Sai
Sickle
Tonfa
Axe
Kama
Small Axe
Small Throwing Axe
Small Throwing Axe (Throwing Handle)
Throwing Axe
Throwing Axe (Throwing Handle)
added ‘Climber’ to mods()
NOTE: You must Resychronize existing characters’ Bonus Classes for this modifier to work properly for them, otherwise it won’t limit the bonus to +1 if you have more than one such weapon.

[BonusClasses]
Climber, stacks no upto 1
added

Package Updates

GURPS Basic Set 4th Ed.–Characters.gdf
[Skills]
Body Language
Diagnosis
First Aid
Physician
Pressure Points
Pressure Secrets
Surgery
x()
removed to remove required specialization
usernotes()
added for Physiology modifiers.

Hypnotism
x()
removed to remove required specialization

First Aid ([Race])
Diagnosis ([Race])
Hypnotism ([Race])
Physician ([Race])
Physiology ([Race])
Surgery ([Race])
removed

GURPS Action 1 – Heroes.gdf
[LISTS]
<SecuritySkills>
SK:Body Language (Human)
SK:First Aid (Human)
removed (Human)

<LawEnforcementSkills>
<MilitarySkills>
SK:First Aid (Human)
removed Human

<IntelligenceSkills>
<JournalistSkills>
SK:Psychology (Human)
removed Human

[Templates]
Investigator (Action)
select5()
select8()
select9()
list()
removed (Human) from Body Language
select8()
list()
removed (Human) from SK:Psychology

Medic (Action)
adds()
SK:Diagnosis
SK:First Aid
SK:Physician
SK:Surgery
SK:Psychology (Human)
removed (Human)

Face Man (Action)
adds()
SK:Psychology (Human)
removed (Human)

GURPS Action 4 – Specialists.gdf
[Templates]
Medicine – Medic (Action)
x()
removed to remove required specialization
adds()
SK:Diagnosis
SK:First Aid
SK:Surgery
removed ‘respond “[SPECIES]”‘

Medicine – Doctor (Action)
x()
removed to remove required specialization
adds()
SK:Diagnosis
SK:Physician
SK:Surgery
removed ‘respond “[SPECIES]”‘

GURPS Action – Pyramid 3-53 – Extended Action.gdf
[Templates]
Horseman (Action)
adds()
SK:First Aid (Human)
removed (Human)

GURPS Dungeon Fantasy 1 – Adventurers.gdf
[Templates]
Cleric (Dungeon Fantasy)
x()
removed #InputReplace to remove required specialization
adds()
SK:Diagnosis
SK:First Aid
SK:Surgery
removed ‘([Race])’

GURPS Fantasy – Portal Realms.gdf
New file added. Thanks to David Trimboli.

GURPS Infinite Worlds 4e.gdf
Global change of ‘Proector’ to ‘Projector’

GURPS Monster Hunters 1 – Champions.gdf
[Templates]
Psi (Monster Hunters)
adds()
SK:Psychology
removed (Human)

GURPS Mysteries 4e.gdf
[Templates]
Medical Examiner (Mysteries)
adds()
SK:Diagnosis
SK:Physician
SK:Surgery
removed (Human)

Hard-Boiled Detective (Mysteries)
adds()
SK:First Aid
removed (Human)

Defense Attorney (Mysteries)
Fire Marshal (Mysteries)
Police Detective (Mysteries)
adds()
SK:Psychology
removed (Human)

GURPS Tales of the Solar Patrol 4e.gdf
[Templates]
Engineer
select5()
list()
removed ([Race]) from First Aid

Pirate
Belter
select6()
list()
removed ([Race]) from First Aid

GURPS Ultra-Tech 4e.gdf
Global change of ‘Proector’ to ‘Projector’