Category Archives: Build Notes

Excerpts from the change log and other notes related to new builds.

miserable li’l bug bits (b169)

b169

Added an additional error trap message in the code that finds valid plugins in the plugins folders.

Altered some code related to determining if a bonus to a group applies to a trait, so that it should no longer return True if for some reason the name of the group it is provided is empty.

Fixed some code in calculating modifiers to properly identify fractional bits, so it’ll know to adjust for that. This should fix the issue with disadvantages always rounding away from zero.

Fixed an older fix that was meant to avoid some infinite looping situations in calculating equipment, but that fix was broken.

A few more bits of adjustment (b167)

b167

Added a missing word to the text in the Resync dialog.

Updated the text in the Credits dialog. (May still adjust playtest credits.)

Updated copyright years to include 2022.

GCA now allows loadouts that have no items in them; empty loadouts will no longer be removed when you close the Loadouts window. This allows for more freedom to create loadouts in advance that may not be needed right away. This also allows for creating a loadout that has no encumbrance impact because it includes nothing.

* GCA5.XSD

Updated ‘loadouts’ element ‘items’ to allow for 0 items, since empty loadouts are no longer discarded within GCA.

Combinatobits (b166)

b166

The Combination Editor in the Edit Traits dialog for a combination had some broken colors. That has been fixed.

A logic error in the Combination Editor caused all skills after the first targeted attack found to appear to also be targeted attacks. That has been fixed.

* Fencing Weapons

When I added support for the fencingweapon(char::enclevel) tag, I didn’t fully consider the actual application as it would work for weapons that can be used with either a fencing skill (where the penalty applies) or a non-fencing skill (where the penalty does not apply).

I have updated the code to be a bit smarter based on the mode data. If a weapon has an F flag in the parry() for a mode, indicating that it is used as a fencing weapon, GCA will create the fencingweapon() tag if it doesn’t exist and update the trait links (so that changing encumbrance will cause the mode to get updated). If the tag already exists, GCA won’t bother with that bit.

Now, when calculating modes, the fencing penalty will only apply to those modes where the parry() has the F flag.

* TagDefs.XML

Updated the entry for the ‘fencingweapon’ tag to reflect actual usage.

* Data Files (Released 2022 January 4)

Dungeon Fantasy RPG.gdf: Bug fixes.

Bits of imprecision (b165)

b165

Stupid bug fixed. Back when the BasicDamageList was changed to use List rather than Collection, the Solver’s routines for @baseswdice() and @basethdice() were not updated to account for the shift in base from 1 to 0, so GCA crashed when the given ST exceeded the last entry in the BasicDamage data (100).

Added some accessibility alt-text to the Campaign Settings dialog.

An issue related to double precision values when checking for fractional results during the calculating of modifiers has resulted in some edge cases incorrectly pushing a result to the next higher integer, when that’s clearly the wrong result (example: Level 5 Magery = 50 points, +10% modifer = 55 points; but GCA was showing 56 points). I’ve changed how the intermediate tier results are finished (rounding to 4 decimal places), which I think should compensate for the floating point precision issue.

Added a tag for equipment items to allow for changing the number of decimals kept during calculation of modifiers, allowing items to override the normal 2 digits kept for equipment. Because of other issues in modifier calculation, 4 decimal places is still the max, but you can specify a value from 0 (the default is 2 places) to 4. This may help in certain cases. The tag is decimalplaces(<num>) where <num> is an integer value from 0 to 4. (I may decide to add a GCA option for this in the future.)

* Data Files (Released 2021 December 30)

Dungeon Fantasy RPG.gdf: More updates, edits, and consolidations of weapons.

* Data Files (Released 2021 December 19)

GURPS Basic Set 4th Ed.–Characters.gdf, GURPS Martial Arts 4e.gdf, and GURPS Power-Ups 2 Perks 4e.gdf have all had some 0-point traits moved into the Features section.

Dungeon Fantasy RPG.gdf: Various updates, edits, and consolidations of weapons.

Used bits of uses (b164)

b164

When randomly making selections from a ChoiceList dialog, GCA should no longer select an item that appears to be empty.

Swapped Languages and Cultures/Cultural Familiarities in the order they’re displayed on the Points Bar and in the Classic View tabs.

When deleting a trait, it should now be removed properly from all Transforms as well.

Due to some convolutions in how Body objects are used and assigned, the Default Body that a GCA Character maintains was only being recalculated and refreshed when the Protection window was accessed. Within GCA, this didn’t matter much because they’re always accessed through a Loadout, but it is an issue when reading the save file, or when trying to access the default body in a sheet. So, GCA now assigns that default body directly to the All Unassigned Items loadout when recalculating the character, which was how it should have worked, and which should now fix the issue.

* Uses

The mode tags uses() and uses_sections() are now able to specify more complex math (if desired) by forcing the use of the Solver. If desired, just begin the text of the uses() or uses_sections() tags with an ‘=’ sign, such as ‘=me::score*2’. Note: Don’t mix ‘count’ and ‘=’ because the simple replacement method of ‘count’ with a value may conflict with the Solver’s ability to find trait references if ‘count’ was incorrectly replaced with a value inside of such a reference.

Messed about a bit with how used uses are tracked/handled, so that switching between tracking by section and not tracking by section is less likely to discard used uses.

Changed how the uses controls are initialized, so the program can set a larger box size automatically if using the largest zoom. (This can still be overridden by the settings for a particular uses() control.)

The boxes are now specifically drawn, instead of using a checked or unchecked image. The tick-mark image is then placed on the box afterward for used uses.

There are now a small number of built-in ‘styles’ of checkboxes, which can be specified for use in the new altbox() tag within the uses_settings() tag. The default style name is ‘black’, and there are also ‘red’, ‘orange’, ‘yellow’, ‘gold’, ‘magenta’, ‘green’, and ‘blue’ styles. Each of these styles specifies the color of the box, the interior of the box, the tick used to check the box, and a couple other bits. Right now, I’ve defined all that with these default built-ins, but some day it should be customizable somewhere.

The altbox() tag allows you to specify the box style, and with which box number that style begins. Styles apply starting at the specified box and continuing on from there until either the boxes end or another is defined. For example, altbox(green, 10, red, 20) would start with the default boxes until box 10, where they change to green, and stay green until box 20, where they become red. Note that some of these colors are kind of hard to differentiate, especially on a white background.

* Official Character Sheet (Released 2021 December 4)

The displayed block scores for shields were not always correct, because they didn’t include any block bonuses. I fixed the sheet to refer to the skill used, and get the block level from that, instead of what was being done.

* Data Files (Released 2021 November 13)

Dungeon Fantasy RPG: Removed the Equipment section, which was from GURPS DF, and rebuilt a new one with the boxed set info. Integrated Emily’s DFRPG Equipment file, which I believe had all the weapon and armor stuff. Changed all page refs throughout to DFRPG:Axxx. I didn’t understand Scrolls, so that’s the old versions. Still missing Other Items from the Magic Items section, and enchantments for Magic Weapons and Armor.

* bookcodes.xml (Released 2021 November 13)

Updated with DFRPG:A for Dungeon Fantasy RPG: Adventurers.

* Official Character Sheet (Released 2021 November 6)

Restored the missing Basic Speed and Move to the top-left attributes block.

* Official Character Sheet (Released 2021 October 31)

The Points Summary was not including the costs of Languages or Cultural Familiarities. Now it is.

* Official Character Sheet (Released 2021 October 28)

When languages don’t come in levels (such as in Dungeon Fantasy RPG) the sheet now just displays a checkmark in the Spoken or Written column as appropriate.

Fixed a button that read ‘Packages’ instead of ‘Templates’.

Fixed an issue with the attributes button on the optional Additional Attributes block that could throw an exception when that block is selected (even if it doesn’t get displayed).

There is now an option to print the character portrait on page 1. If you activate this option, then the portrait is printed in the top right corner of page 1, under the general info, in the area where languages, DR, TL, cultural familiarities, active defenses, and reaction modifiers usually get printed. Those items will be bumped to page 2 where the Character Notes usually gets printed, unless there isn’t enough room there (or it was sacrificed for the weapon blocks), in which case they bump to the start of the overflow pages. If you don’t have a character portrait, the space for it is left blank, and the other items are still bumped.

Barely bits (b163)

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)

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)

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)

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)

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.