A bit more byte, really (b132)

b132

In Unified view, at some point the Encumbrance & Move box stopped updating the Loadout pulldown correctly when the Loadout in the Protection box was changed, unless some of the traits referenced within it had also changed. Since the pulldown is meant to always be the same in both places, that discrepancy has been fixed..

* Book processing

I’ve adjusted how loading category headers for some data blocks works. For blocks that are not traits, but use sections in the style, GCA will now allow a colon to be used in the category name instead of unnecessarily separating out a non-existent category/college code.

I’ve updated the code for saving GDF files from the Build Campaign Book tool so that it will save the new or updated [Bodies], [HitTables], and [Wizards] sections.

Made some minor adjustments for how a Body is now built in the Library, but the files themselves aren’t changed.

* Body processing

I have changed the way that a Library handles the bodies and the [Body] block. Instead of a huge list of body parts that belong to various bodies, the Library now manages Body objects, each of which has its own BodyPart collection; like how a Character handles it. This has required some changes in the Book loading code, but the Book files themselves require no changes.

You can also now specify a [Body] section in a Book file using [Bodies].

Because I went ahead and changed this, the code I previously shoehorned in for body descriptions is no longer necessary, but you still add a description to a body the same way: just put a line into the Body data like this: description(This is the description). It should be the only thing on the line.

* Body part definitions

I was annoyed at myself that there’s a mix of body parts/locations with or without appropriate spaces in the name, so I’ve standardized on having spaces in the names. (This was my fault, since the default body messed this up. I think the Humanoid Expanded body always had spaces in the part names.). This will have an effect on any item/trait with a location() coverage that uses a name without a space when now the name has a space, so we’ll need to update data files to fix those where appropriate.

The body parts affected by this (just the Humanoid ones since other bodies didn’t exist before): LeftEye, RightEye, LeftArm, RightArm, LeftHand, RightHand, LeftLeg, RightLeg, LeftFoot, RightFoot.

I’ve adjusted GCA5 Changes.GDF and the GCA5 version of GURPS Additional Body Types.GDF to fix the bodies defined there to use spaces as appropriate.

* Protection dialog

Added a box for the Description of the Body Type to the Locations tab of the Protection dialog.

Added a new tab for Hit Table to the Protection dialog.

Made a lot of changes in the Protection dialog for the new handling of Bodies, Hit Locations Tables, and per-Loadout images.

You can now set and change the protection image for each loadout, allowing you to customize as you’d like.

Fixed the grids in use to support the dialog’s Zoom mode.

Description fields don’t currently save any changes.

Hit Location Tables aren’t currently editable.

The buttons on the Hit Table tab are not working.

* GCACharacter

GCA now has an ImageStore object (a Collection of the new ImageReference object), and GCACharacter is using that for the BodyImageStore, which stores the various body images. When images are loaded, they’ll be loaded in the store and referenced as needed. This should mean that no image ever needs to be in memory more than once, no matter how many Loadouts may specify it.

The character now has a bunch of new or reorganized properties related to the default body and body image. These defaults are used when a new Loadout is created, and are used for the “All unassigned items” loadout, so changing those values in the Protection dialog will affect the default values. All of these properties are too esoteric to get into here.

* Saved Characters

With each Loadout able to have its own image now, the character file can get pretty large. (Actually, it was already getting pretty large with the various possible images stored inside.)

The existing experimental program option “Store character portraits within the character files” is now also used to determine whether or not the new Body Image Store writes the stored images out to the saved character file. If this option is not set, the images are not saved, and must be loaded from the file name references when first needed after a character is loaded.

GCA should also no longer be saving an image out to the BodyImage element of the file, since if it exists now, it should be found inside the Body Image Store.

GCA also now saves a Hit Location Table with each Loadout, and a default one within the main character body.

* Hit Location Tables

GCA will now read and store the HitTables block from data files. That block looks like this:

[HitTables]
<Quadruped>
description(Like a dog or a cow.)
roll(-), location(Eye), penalty(-9)
roll(3-4), location(Skull), penalty(-7)
roll(5), location(Face), penalty(-5)
roll(6), location(Neck), penalty(-5)
roll(7-8), location(Foreleg), penalty(-2), notes(*)
roll(9-10), location(Torso), penalty(0)
roll(11), location(Torso), penalty(0)
roll(12), location(Groin), penalty(-3)
roll(13-14), location(Hind Leg), penalty(-2), notes(*)
roll(15-16), location(Foot), penalty(-4), notes(*)
roll(17-18), location(Tail), penalty(-3), notes(T)
roll(-), location(Vitals), penalty(-3)
note(*), text(note text here)
note(T), text(other note text here)

Using a section with a HitTable name that already exists will replace the existing one with the new one.

There are three different types of data lines there, which shouldn’t be mixed: description, roll, and note.

I elected to separate notes() from note() like this so I could specify exactly the note markers for the notes to be used, rather than relying on GCA’s footnote system later. I figured in this case, where these tables are often printed in truncated form, it was better to use the same markers as might appear in the source material for easier book reference.

This is just data. GCA makes no effort to check roll ranges, or to verify that notes() entries match note() lines.

Each Loadout can specify the appropriate Hit Location Table to use. If a table uses the same name as a body type, it should be the default when the body type is changed. However, if the Body Type and the Hit Location Table name do not match, GCA won’t change the Hit Location Table to match the Body Type when Body Type is changed, because it’s assumed you wanted a different table.

* Data Files

GURPS Additional Body Types.GDF is now included in \books\, and includes both the Body body part definitions and the HitTables hit location tables.

FastLoad files will be rebuilt, because I updated a bunch of code related to [Bodies] and [HitTables].

* Plugins

The GCACharacter object model has had some changes with the work to support various things in this update, plus I made a couple things that weren’t properties into properties, so you’ll likely need to recompile any compiled plug-ins.

* GCA5.xsd

Updated for various new stuff.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.