Monthly Archives: June 2017

Feature bits


* Miscellaneous

I noticed the mental_16.png symbol image had a bit of a ‘white halo’ effect from transparency issues when highlighted or on a dark background, so I adjusted the transparency around the image and included the adjusted image. (You won’t notice the change on existing characters unless you resync the symbols, since the images are stored in the character.)

While adding support for Features, noticed Languages and Cultural Familiarities were missing from a small section in Needs code, so addressed that.

Added code to the character trait lists in Classic View so that a newly added trait will no long be considered ‘in view’ unless a whole row is within the viewable area.

In the Folder Locations dialog for Options, displayed folder locations should now show & characters correctly.

Also in the Folder Locations dialog, if one of the Other Folders does not exist, and you click the Browse button, you should no longer have to drill down from the very top of the folder system structure anymore. If the Base Folder is valid, clicking Browse should now start you from that folder.

Added ability to delete a property from a section in my settings manager.

Added ability to delete an Option from SheetOptionsManager. (This is helpful if you completely change how something is handled, and want to remove the old options from the saved file when upgrading the options to the new format.)

* Features

Removed previous, partial Features support.

Features are now traits, and handled by the trait system. There are now trait tabs and boxes in Classic and Unified Views.

Updated code in many places to support the addition of Features to the trait types.

The Prefix tag code for Features is ‘FE’. The GDF block for them is [Features], and they’re functionally advantage-type traits.

Because Features have been inserted into the types of traits (internally, they’re between Quirks and Skills), the FastLoad files version has been updated, and they’ll have to be rebuilt.

Added support for Features in the custom tab names part of Current Character Options.

For now, the features() tag on templates will act like a creates() to create a new Feature as a component trait of the template.

* Books & Data

Included updated *and new* book files from Eric, since new ones were overlooked last time. (But I haven’t included the 3rd Edition files.)

Updated GCA5 Changes.gdf with a _New Feature item.

* Sheets

Note: You probably need to update/recompile your sheets to support the addition of Features.

Updated ColorBlockSheet to handle Features, to upgrade settings because of Features, and to change how various trait-type-block settings are stored/referenced to make them more robust.

Cleaning up and polishing of various bits continues


* Miscellaneous

In Classic View, in system and character trait lists, when using type-to-search, traits beyond the bottom of the viewable list area would often be found and selected, but would be considered ‘in view’ even if only a fraction of the trait’s name box was actually within the viewable area. Clearly, that’s not ideal. This has been fixed so that a whole row should scroll into view, at least.

In Unified and Sheet Views, the library list type-to-search has also been fixed as above.

When points are changed in the Campaign Settings dialog, the points bar should now update values correctly when the dialog is closed.

The Library items in Classic View didn’t have subheads, so added those. I don’t think we really needed them for most tabs, but for Equipment they seemed helpful, and having them on all tabs keeps the look consistent.

Widened the Cost column on the Library side of the Equipment tab of Classic View a bit.

Various places (including Campaign Log and some lists) were touched to show money values as $ rather than “Currency”, because “Currency” uses localized values, which is not correct for GURPS $.

* Manage Your Library

Added a buttom to allow duplicating the currently selected library.

Added a button to allow for browsing to a different User Books Folder.

Bits of Of and Except and Images


* Miscellaneous

Made a small visual change to the Save Body Type dialog.

GCA is now saving and loading the character’s body image to the character file (if it’s actually set to something other than the built-in default) as Base64 encoded data.

Updated Protection box in Unified View to work with embedded character body images.

Updated GetProtectionPaperDoll() routine for sheets to work with embedded character body images.

* Protection Dialog

Corrected a tooltip on the Locations tab.

Changed the Save To… button to Save Body… on the Locations tab.

Added a browse button for the Body Image on the Locations tab, allowing you to load a custom image directly.

* #any, #best, and #worst

In places that support the special directives #any, #best, and #worst in name extensions (currently GetItemVal, GetItemTextVal, @ItemHasMod, and Needs), I have expanded support to include the #none directive, to explicitly look only for traits with no specified name extension.

I have also added support for clauses to contract the acceptable pool of traits by the name extensions found, should you wish to do that. All the directives *excluding #none* support the new ‘of’ and ‘except’ clauses. ‘Of’ specifies the extensions that are valid, and only traits with one of those specified extensions will be considered. ‘Except’ specifies the extensions that are not valid, and only traits that don’t have a specified extension will be considered.

So, here’s a completely arbitrary and silly example of the needs() usage:

needs(SK:Animal Handling (#any of equines, big cats) = 12, SK:Animal Handling (#best) > 15, SK:Animal Handling (#worst except "raptors") < 8)

In this example, only the Animal Handling (Equines) or Animal Handling (Big Cats) skills will satisfy the need for an Animal Handling skill at 12 or higher, but any version at all will work to satisfy the need that some skill is over 15, and finally, the worst Animal Handling skill must be less than 8, but can’t be Animal Handling (Raptors) because that’s excluded.

The templates are like this:

#any [ of List ][ except List ]
#best [ of List ][ except List ]
#worst [ of List ][ except List ]

List is a list of the applicable name extensions for that clause. Enclose individual list items within quotes or braces if they include a comma or one of the other keywords. The ‘of’ and ‘except’ clauses should never have any reason to be used at the same time, but should you do so, order isn’t important as long as the clauses always follow the #keyword.

If it’s not obvious, #none doesn’t support the new clauses because it retrieves only traits without extensions, so there’s nothing to check against from the new clauses.

* Books & Data

Included updated book files from Eric.

Added the ‘bodyimage’ element to the gca5.xsd file, for the character’s saved body image (used for the protection paper doll).