SUBTOKEN: PROFICIENCY (deprecated) SUBTOKEN: WEAPONPROF (deprecated) SUBTOKEN: WEAPONPROFS (deprecated) SUBTOKEN: WEAPONPROFICIENCY (new)
x is a WeaponProf PRIMITIVE
A PRIMITIVE is an identifier of objects, and may include any number of specifications. In the case of WeaponProf objects, there are are the three global PRIMITIVES:
x = an WeaponProf (specified by key)
x = TYPE=w (w is a TYPE identifier for a WeaponProf )
x = !TYPE=w (w is a TYPE identifier for a WeaponProf that would be prohibited)
x = ALL (allow the choice of any WeaponProf)
There are also WeaponProf specific PRIMITIVES:
DEITYWEAPON (gets the weapon listed in the deities list file, for the Deity selected by the PlayerCharacter)
FEAT=w (Feat name) (Feat name must be any feat that uses CHOOSE:WEAPONPROF)
ABILITY=w (Ability name) (Ability name must be any ability that uses CHOOSE:WEAPONPROF)
NOTE: This should be universally applied to accept any CHOOSE: referenced in the ABILITY. Not just used for Weapon Prof CHOOSE
WIELD=w (Wield category) (Wield Category can be "Light", "OneHanded" or "TwoHanded", as set by the WIELD token in the Equipment LST file)
y is a QUALIFIER
A QUALIFIER is a special keyword that identifies a subset of objects that should be returned. Valid qualifiers for WeaponProf objects include any of the Global Qualifiers.
The following WeaponProf specific QUALIFIER is also available:
SIZE=z : limits the items in the brackets to appearing only if the PlayerChracter is the size given by z
A comma represents "AND", meaning multiple items are evaluated independently and then any item that appears in ALL of the items is added to the list.
will result in NO choices because no WeaponProf is both Longsword and Flail.
would test for any WeaponProf that has the Foo type (as defined in the WeaponProf LST file) which is ALSO already selected by the PlayerCharacter
This could also be written (probably more clearly):
A pipe represents "OR", meaning multiple items are evaluated independently and then any item that appears in any of the items is added to the list:
will result in a choice between Weapon Proficiencies Longsword and Flail.
All commas (ANDs) are evaluated before pipes (ORs), so something like:
would include Longsword unconditionally, in addition to any WeaponProf that has the Foo type (as defined in the WeaponProf LST file) which is ALSO already selected by the PlayerCharacter
 Special Cases
CHOOSEROFICIENCY|WEAPON uses UNIQUE which is now properly composed as: !PC
CHOOSE:WEAPONPROFS has an argument LIST that is equivalent to the PC qualifier in CHOOSE:WEAPONPROFICIENCY
CHOOSE:WEAPONPROFS has a magical argument TYPE.Light which can mean EITHER TYPE=Light or "This weapon is Light for the PC". This will require special conversion
CHOOSE:WEAPONPROFS has special Syntax SIZE.Z<name> where Z is a Size abbreviation and <name> is a weapon proficiency. It is conditionally added if the PC is the given size.
CHOOSE:WEAPONPROFS WSIZE.z.w.w.w does some strange processing. Z is a wield category and w are equipment types. However, this violates determinism in that if an equipment doesn't match a WeaponProf name, then the first equipment to match is used - thus creating different results in different cases. We should review the rules that caused the creation of this (if we can find them) to see if and how this is handled.
CHOOSE:WEAPONPROF has the ability to restrict (remove) types and this impacts backwards in the token.
Thus, something like: CHOOSE:WEAPONPROF|!TYPE=Foo|TYPE=Bar means the !TYPE has no effect, while CHOOSE:WEAPONPROF|TYPE=Foo|!TYPE=Bar is equivalent to our new syntax: CHOOSE:WEAPONPROFICIENCY|TYPE=Foo,!TYPE=Bar (since the !TYPE previously was treated as an AND)
This means more complicated cases can also be resolved: CHOOSE:WEAPONPROF|TYPE=Foo|!TYPE=Bar|Type=Goo is equivalent to our new syntax: CHOOSE:WEAPONPROFICIENCY|TYPE=Foo,!TYPE=Bar|TYPE=Goo (note how TYPE=Goo appears after the !TYPE=Bar in WEAPONPROF, thus not ANDed with !TYPE=Bar in WEAPONPROFICIENCY