The warning panel in Classic view that advises a resync when Character categories don’t match Library categories was appearing on all tabs even when the categories in that tab actually matched. That has been fixed.
Adjusted the Advanced Edit dialog’s tag info to honor the minimum RTF size.
Shoehorned in the ability to add a description to a Body. The old code for loading a Body and tracking BodyParts in the Library needs to be updated to better reflect how things are done now, but until then, I’ve just made it so you can add and track descriptions for the Body. To add a description, just put a line into the Body data like this: description(This is the description).
There were some legacy values GCA5 was tracking and filling for backward compatibility with GCA4 save files. These values were related to DR and PD for body parts such as feet and hands, which don’t exist on all body types. GCA trying to store those values was crashing the program. Since I no longer write GCA4 files, those compatibility values are no longer needed. Rather than trapping for the missing bits, I have removed the related code. Should I later decide to try writing a backward compatible save file, those features can easily be replicated through other means.
FastLoad files will be rebuilt because I changed some of the data being tracked related to Body.
I have built a new control to allow tracking of how many uses a trait may have, and how many may be used. This supports the uses() tag that the Phoenix sheet supports, and will likely add some additional support tags, such as uses_used(). *Not yet integrated into GCA.*
Added two new functions MeleeAttackModes() As ModeManager and RangedAttackModes() As ModeManager. Each returns a ModeManager that contains the subset of the trait’s modes related to that type of attack. Remember that some traits may use features with modes that are not types of attacks.
Added the function ProtectingLocation(Location As String) As Collection, which returns a collection of GCATraits that provide protection to the specified Location (aka BodyPart). Only returns traits that are *applied* in the current loadout!
Added functions AllLocations() and AllBodyPartNames(), both of which return a Collection of Strings which is all the body parts (aka Locations) in that Body.
Added functions AllVisibleLocations() and AllVisibleBodyPartNames(), which are the same as above, but only include body parts that are displayed on the body diagram.
Changed the Add(BodyPart) routine to not use an optional Key (it always uses the BodyPart CollectionKey now).
Added the CollectionKey property to the BodyPart object, to match most other objects, which returns the CollectionKey for the object (in this case, the lowercase Name).
Added a Contains(Location) function to return True if the location is one contained in the body.
Added properties for both Name, so the body can know itself, and Description, so the user might know more about it.
* GCA5 Changes.GDF
Updated to include a couple body types with dummy description() tags for testing.
Updated to reflect changes to Body.