Category Archives: Build Notes

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

This bit (b180)

b180

Added some code to better support prerequisite checking that relies on traits in groups. These prerequisites should now be checked, and the red P set or cleared, more reliably as you add and remove traits from the character.

* GroupedTraitListManager

Updated how GroupedTraitListManager handles GroupingOptions. This is now Nothing before BuildGroupTraits has been called, and after that call it is set to the options that were used to build the grouping, which are either the default character options or those set with OverrideGroupingOptions.

Added the TreatAsList option to GroupingOptions, which allows for treating a selected grouping tag as a list, much like categories are done. This allows for breaking the items within the tag into discrete grouping groups, instead of treating the entire tag value as one group.

* Sheet Options

When using an option of type GCA5Engine.OptionType.Caption, if you begin the UserPrompt with “[bb]” or “[bbcode]” GCA will substitute the BBCode enabled version of the caption control instead of the usual plain text only version. BBCode support is limited and should be documented somewhere (but I don’t think it is right now). Note that the control does have some glitches, so always try to include a space before any [p] marker (I think that avoids the worst annoying little glitch I haven’t fixed yet).

If all you need is the [p] marker and otherwise need plain text, note that the standard caption will now replace [p] with CR+LF. (Also be aware that the BBCode version of the control adds an extra half-line between paragraphs, but the standard caption control does not.)

* GCA5.xsd

Added the ‘treataslist’ element to GCAGroupingOptions

A little bit closer now (b179)

b179

Created a new option type for sheets: ListSelectedOrdered.

* Book Processing

When loading a book file, a line beginning with a # was automatically perceived as a file command. This was a problem because certain #directives could also be the first thing on a line in a file. Now, GCA will check to see if the # starting the line is a directive before trying to process the line as a command.

* Campaign Log

Selected Log Entry Notes. I’ve now changed the Campaign Log so that when you enter the Notes field, the Accept button is turned off, and when you leave the Notes field it’s turned on again. That allows users to use the Enter key as expected within the Notes field without closing the dialog by inadvertently clicking the OK button.

* GroupedTraitListBuilder

The GroupedTraitListBuilder object has been updated:

Public Sub BuildGroupedTraits(Optional ByVal ReplacementList As SortedTraitCollection = Nothing, Optional ByVal OverrideGroupingOptions As TraitListGroupingOptions = Nothing)

This routine now optionally accepts a replacement list of traits as a SortedTraitCollection which allows you to group a collection of traits that are not specifically the character’s trait list.

It also now optionally accepts a replacement set of grouping options, which can override those contained in the character. This allows you to group a list differently than the user has specified and is intended primarily for when using the ReplacementList. Note that you must specify all applicable options here; no options are copied internally from the character settings, so if you want all the same options except for one change, you must still set them all yourself.

Transforms transformed a bit (b178)

b178

Removed another redundant gathering of unassigned items in the character calculations, and set that to use the already gathered unassigned items loadout instead.

Added a MessageBox instead of just a message in the log when GCA is unable to print or export due to no sheets being found.

Added a MessageBox when no sheet plugins (or no plugins at all) were found during startup.

Added the #Log data file command, which allows the author to send a message to the Logging pane. Syntax is #log [<color>] <message> where the <message> can be enclosed in quotes and <color> is optional from red, blue, green, or orange (not specified is black).

* Transforms

I realized that the same oversight that was recently fixed in loadouts that caused child items to be counted twice when part of All Unassigned Items also applied to Transforms. I fixed that. (This had no real effect on much of anything, since it doesn’t affect encumbrance or any other such mechanic.)

Also as with loadouts previously, I’ve removed the check that prevented empty transforms from being saved. If you want to create transforms with no traits in them, you now can.

Transforms have been updated to support including Features, Cultural Familiarites, Languages, Skills, and Spells. This should greatly increase the ease of creating ad-hoc ‘templates’ to switch between, and supports more types of characters. (Attributes can’t be deactivated, so the best you can do for those is a trait that applies modifiers to the attribute that is itself active or not.)

The change in supported traits that are available to Transforms greatly increases the number and type of traits in the Transforms dialog trait grid. In support of that, I’ve added a new first column that displayes the type of each of the included traits, and Skill and Spell names will be shown with their levels appended using “-XX” where XX is their level.

 

I sometimes wonder how some bits are missed (b177)

b177 (b176 was used only for the last Release Version.)

Modified the output of the character’s QuickRulesOptionsCode() a bit: it now defaults to separating the pieces with commas; the dice+adds code is now ‘d+a’; the allows stacking for Deflect and Fortify codes now spell those out; added ‘-deffrom’ for when default level discounts are turned off; now outputs ‘n/a’ when no codes apply.

On the main window’s Traits menu the “Bonus Granting” option was changed to “Active/Inactive” to match right-click menus. I also added the “Loadout” options that were missing.

Changed how Options sizes the options panels, in an attempt to fix an issue with Windows 11 when high DPI scaling is turned off.

Added an error trap to the code when export sheets are run, to catch run-time errors in the export sheets.

The independent routine that returns the weight of all unassigned items wasn’t properly updated when the routine that returns all unassigned items was, so it was still double counting unassigned items that are chilren when totalling weights.

Since characters were changed some time ago to always recalculate the virtual ‘all unassigned items’ loadout (because that’s used as the default for various things), I have now changed the calculation code in the character to use the weight of that loadout for the character’s current load weight when using the unassigned items loadout. It was previously using the routine that just calculated the weight of all unassigned items separately, which is an unnecessary and redundant call in this situation, since we already know that value.

Character equipment lists now use an adjusted DisplayName that includes modifiers, as the various other traits do. This means you should now see the applied modifiers listed (in ‘short name, cost’ format) with the item. This will automatically flow through all lists and character sheets that use DisplayName when displaying the lists (all of my sheets use DisplayName). This *does not* apply to Attack Tables.

The Sheet Options dialog will now cap the sizing of the options blocks to prevent them from getting unreadably wide or unusably narrow.

The Sheet View toolbar should no longer be obscuring part of the Sheet View area.

* Campaign Settings

Campaign Settings should now honor Tablet Mode.

I’ve made some changes when initializing Campaign Settings to try to help adjust for issues with the sizing of the boxes in Windows 11 when high DPI scaling is turned off.

Campaign Settings has been changed to be a sizable window. This should help with better fitting everything as the user would like when the window is scaled in size.

Because of the change to a sizeable window, I’ve adjusted where the errors list appears when there are issues. This now appears inside the content area, under the panel displaying the info boxes. This will resize that flow panel, so when the errors list appears, the boxes may be re-flowed.

I’ve adjusted the checkboxes to help with accessibility. I’ve also left-aligned the various labels to fit in with the checbox change.

Malfed the Malf bits (b175)

b175

Added an option that’s a bit hard to explain but useful to folks using Classic View or Trait Dialogs a lot to manage traits. You can now select a highlight color (or ‘any color’) in Options (Program Options > Display) that will allow traits with that highlight to remain in the character list regardless of the current category selected. This means that if you select ‘yellow’ and highlight a trait ‘yellow’ then that trait will always appear in the Character list, no matter what category is currently chosen in the category drop-down. This affects only these lists and has no impact on sheets or displays in other parts of GCA.

Added an option to display an LC column on the equipment library list.

If you use the option to format dollar costs or weights in character lists, you can now elect to apply those same formats to library lists.

The Display section on the Options dialog was getting a bit messy. I’ve split that into two: Windows & Boxes and Lists.

* Malf

Calculations have been updated to account for default Malf numbers based on techlvl() when an item should have a Malf but one is not provided, and for some special case values.

When GCA is calculating a trait, it’ll check to see if there is a malf() value for each mode of the item. (No modes, no malfs.)

If there is a malf(), great, it will calculate it.

If there is no malf(), it will then check for a cat() that includes “firearm” or “grenade” or a damtype() that includes “pi” or “inc”. If any of those are true, it will proceed to calculate the malf, using a default malf() based on techlvl().

You can use calcmalf(yes) (actually any value except ‘no’ or ‘false’) on the trait to force calculation of malf for all modes. Figured it should be there, but other options are probably better. If you use calcmalf(no) on the trait, it’s the same as setting malf(0) for every mode–all calced charmalf() values will be empty.

If the mode’s malf() is set to 0, this allows you to bypass all calcs, and the calculated charmalf() will be set to nothing.

If the mode’s malf() is set to 99, this allows you to force calculation of that mode’s malf–the 99 is not used as the base malf, that’ll be set by techlvl(). This is similar to using calcmalf(yes) on the trait itself, but applies just to this mode.

If calculating is a go, GCA calculates it as a simple number adjusted by all applied bonuses.

If not calculating, charmalf() is set to malf(), which may be empty.

I think that covers *most* situations. If something isn’t covered, manually setting the malf() to the appropriate value will cause calcs to happen.

* tagdefs.xml

Updated malf() text

A bit o’ Malf (b174)

b174

You can now hide the library pane in Unified View, just as you can on Sheet View. I added the same button for it to the leftmost position of the Unified toolbar.

Fixed the tooltip text for the layout button on the Unified toolbar.

GCA should now be better at catching duplicate specified categories for traits when loading traits from books. This will not affect the cat() tags on existing character traits.

I’ve added a new data file command: #ModifierGroupWarnings [On|Off] This is Off by default. When On (and #Verbose is also On), this command will cause GCA to spit out to the log every time it replaces the modifier’s included group() with the one specified by the sub-head group in the file. The group specified in the file must be the official group source for the data, and is considered part of the name of the modifier. However, there are reasons that having a group() specified in the tag block can be convenient. The default behavior of GCA’s book processing has now changed from what was the equivalent of this command being On to this command being Off.

Malf() is now recognized as a mode-tag. CharMalf() is now calculated based on malf().

ShowMalf, ShowBreak, and ShowLC are now settings that can be turned on or off in the [Settings] section of a book file.

There are now options for showing LC, Malf, and Break numbers on the Default Character and Current Character tabs of Options. By default, these are all Off.

The attack boxes on Unified View now respect the character’s settings for showing LC, Malf, and Break columns.

The attack displays on Edit Traits now respect the character’s settings for showing LC, Malf, and Break columns.

Due to some changes in settings and file processing, I’ve also updated the FastFileVersion to force rebuilds of all FastLoad library data.

* viewinfo_template_equipment.rtf

Removed a redundant modifiers output line.

* bookcodes.xml

Added the “Dungeon Fantasy: Spells” and “Delvers to Grow” books.

* GCA5.xsd

Added the overlooked ‘scopeacc’ and ‘charscopeacc’, and the new ‘malf’ and ‘charmalf’ to the GCAAttackMode block.

* tagdefs.xml

Updated for malf() and charmalf().

Bit a dis bit a dat (b173)

b173

I have modified the Attack Mode Boxes in Unified View to be more robust about how they update or rebuild their contents. They should now more correctly and reliably update when modes are added, removed, or modified.

Certain elements of certain types of modifiers didn’t update their targets or parents fully when the Cancel button was used to close the Edit Modifiers dialog. That should now be fixed, although it does add a bit more calculation time to the rollback process.

The right-click menu in character lists on the Traits Dialog was almost completely useless, with almost all the options doing nothing. That should now be fixed, and the right-click menu should now be working as expected.

A bunch of routines in frmMain that handle actions made to the currently selected traits were made Public instead of Private. (This whole suite of routines needs to be cleaned up and normalized.)

The display of help info in the Add Tag dialog should now respect the minimum font size specified in options.

Adding or removing a child item should now cause both parent and child to be recalculated and marked dirty, and should also flag the related list types as needing an update.

Added support to advantage-type traits (cultures, languages, advantages, disadvantages, quirks, perks, features, and templates) for capacity meters based on number of children. This is different from the count capacity for equipment, because that includes total counts for all children (totals of all quantities of child items; no trait types have counts except equipment), and this is just a set number of children. So, a parent advantage could have a childcapacity(4) to generate a capacity meter based on 4 children maximum.

Fixed an issue in the drawing code for trait lists, and updated it slightly, so that child items will display more appropriate information for their type when they don’t match the type of the parent.

In the Campaign Log, when you add a new entry, focus should now be set to that entry’s caption for immediate editing. Also, when you tab into the Notes field, the entire text should now be selected, as happens with the other fields.

For some reason, the drawing code for the trait lists had disabled the use of the Transparency Settings option. I have restored that.

* GCA5 User Reference Guide

Added info about the right-click menu in Edit Modes.

Added info about capacity meters in character trait lists.

* bookcodes.xml

Fixed the reference url for Dungeon Fantasy RPG.

* tagdefs.xml

Updated with help for subsfor(), bonuslevels(), bonuspoints().

Updated step().

Updated with childcapacity(), childcapacitylevel(), overchildcapacity(), and overchildcapacityby()

* gca5.xsd

Added childcapacity, childcapacitylevel, overchildcapacity, overchildcapacityby elements to the ‘ref’ block of GCATrait

Three bits (b172)

b172

If you select the option to format equipment weights in Options, that format should now apply in more places across GCA (such as the loadout weights in drop-downs, and the total encumbrance weights in the Encumbrance & Move box).

The Encumbrance & Move box should now update encumbrance and loadout weights more reliably when you change counts of items or move items between parents that affect the current loadout.

Loadouts were supposed to be using double-precision values for weights, but for some reason a couple variables were singles, so those were changed to doubles.

Newly exposed bits (b171)

b171

GCA was incorrectly including items in the “All unassigned items” virtual loadout by not ensuring that child items were not included by themselves. By including child items, those items were potentially being counted more than once (for themselves, and again within their parents’ weights), throwing off weights and encumbrances related to them. That is now fixed.

Made an adjustment to capacity calculations so that capacity values are calculated (and have their units converted if necessary) even when no child items are present. Capacity meter values should also now clear properly when all the children are removed from the parent.

The DefaultLibrary path and file used by GCA to look for the default library was set once and then never adjusted.

Changing the highlight color or the GMS status now makes the character ‘dirty’.

The option to group children by type should be working again.

When you’re editing a value in the in-column edit field of a character list of a Traits dialog and hit Enter, that value should now be correctly retained and applied as the dialog closes.

Helpy bits (b170)

b170

Removed the disabled “Contents,” “Index,” and “Search” options from the Help menu and added a “User Guide (PDF)” option that will launch the User Guide in the user’s PDF application.

* User Guide

Updated to reflect the updated Help menu.