* Appearance / Biographical Data
Added some error trapping for mismatched parens and braces.
Adjusted the window construction to allow for the error lister.
Changed ‘Build’ field to use the ‘bio_build’ character tag.
Added fields for ‘Eye Color’ and ‘Hair Color’ as character tags ‘bio_eyecolor’ and ‘bio_haircolor’, respectively.
Changed the ‘Appearance’ option on the Character menu to ‘Appearance / Biographical Data’.
Armor items so far have denoted if they are flexible in the same way the books have: with a * at the end of the DR value. Now we have more options.
There is now support for the new flexible() tag, that can be used to denote whether the armor is flexible or not. Any of flexible(0)flexible(no), or flexible(false) will cause the armor to be marked as NOT flexible, while any other value will cause the armor to be marked as flexible (but using flexible(yes) or flexible(true) is recommended for clarity). Using this tag will override any existing * marker.
To apply bonuses to ‘flexible’, apply a string bonus to flexible$ of “no” or “false” to turn flexible off, or “yes” or “true” to turn flexible on. You can also target any positive adder bonus to turn flexible on, or any negative adder bonus to turn flexible off. The string bonus overrides the adder bonus if both are present.
GCA will calculate a charflexible() tag based on the * marker or the flexible() tag, and any bonuses targeted at ‘flexible’. If the armor is determined to NOT be flexible, charflexible() will NOT exist and will be deleted if it did exist. Likewise, GCA will add the * to the end of the DR value if flexible, and remove it if not flexible.
As with all other calculated character-specific calculated features, exporters and sheets will want to use charflexible() if they need it for something, but any flexible armors will still be marked with the * for user reference, so if those values are also used, you may need to remove the * from the end.
When creating the tl() for equipment items, GCA wouldn’t always preserve the special suffix for some items (such as ^) when setting that item to the character’s TL. Now it should.
I’ve also created the NumericTL() as Integer function on GCATrait, which returns an integer version of the TL for the trait. This can be retrieved through TagItem or :: as ‘numerictl’. In descending order of priority, this function will check the item’s tl(), then techlvl(), and lastly the character’s TL; then remove any suffix, and finally try Solving for a numeric value.
GCA’s usual behavior when processing templates is to *not* allow auto-adding of needs() items to the character. This is because that behavior may conflict with things the template has yet to finish doing, and could easily result in duplicate traits being added to the character when that is not intended.
You can now use the special directive #ForceNeeds in an adds(), addsorincreases(), or creates() tag to specify that the trait being added should override GCA’s usualy behavior and allow the needs() auto-add system to be employed.
As with #NoNeeds and #DoNotOwn you should include #ForceNeeds in the main clause of the tag data, before any ‘respond’ or ‘with’ portion, else it be considered part of the other clauses and not work correctly; sticking it into the name section is best.
* Build Campaign Book
I’m trying to rebuild this dialog to actually display properly for users in Windows 11. This is my second attempt, since I was rather unhappy with the previous one, whether it worked or not.
The dialog has now been restructured and arranges the window elements differently.
Updated to include flexible() and charflexible().