Author Archives: Armin

Package Updates

Delvers to Grow.gdf
[LISTS]
<Wizard Upgrades>
Added TE:Spellslinger

GURPS Magic – Least of Spells.gdf
Requires=”GURPS Basic Set 4th Ed.–Characters.gdf”,”GURPS Magic 4e.gdf”
LoadAfter=”GURPS Basic Set 4th Ed.–Characters.gdf”,”GURPS Magic 4e.gdf”
Added.

[SPELLS]
<Fire:Fi>
Oven Mitts
Puff
duplicate type() tag removed. Thanks DeathDaisy.

GURPS Thaumatology 4e.gdf
[ADVANTAGES]
Increased Threshold
added Supernatural Mental to cat()

Pyramid 3-65 – Half-Stat Defaults.gdf
[SKILLS]
#ReplaceTags in “SK:Riding (%beast%)”
#ReplaceTags in “SK:Riding (Big Cats)”
#ReplaceTags in “SK:Riding (Dogs)”
#ReplaceTags in “SK:Riding (Equines)”
#ReplaceTags in “SK:Riding (Raptors)”
added to match Basic Set. Thanks DeathDaisy.

#ReplaceTags in “SK:Riding”
removed

Pyramid 3-65 – Half-Stat Defaults (Rule of 20 Off).gdf
[SKILLS]
#ReplaceTags in “SK:Riding (%beast%)”
#ReplaceTags in “SK:Riding (Big Cats)”
#ReplaceTags in “SK:Riding (Dogs)”
#ReplaceTags in “SK:Riding (Equines)”
#ReplaceTags in “SK:Riding (Raptors)”
added to match Basic Set. Thanks DeathDaisy.

#ReplaceTags in “SK:Riding”
removed

Pyramid 3-83 – Knowing Your Own Strength.gdf
New file added.

Version 5.0.199 Released

GURPS Character Assistant 5.0.199.0 has been released. Get the updated installer from your Warehouse 23 downloads page.

This update includes all the changes mentioned in Build Notes posts since the last Release.

Note: You get the updated installer by re-downloading GURPS_Character_Assistant.zip from your Warehouse 23 account, and running the gca5setup_5.0.199.release.exe program that it contains. There is no separate update-only installer, you have to download and reinstall the program. It will not overwrite your personal data, it will overwrite your installation of GCA with the new and updated version.

Ever more bits of bug fixing (b198)

b198

Fixed issue that prevented limits on traits in Select dialogs from being handled.

Fixed crash bug related to calculating charblockscore() if no charskillscore() was found.

Made some changes to RTF handling so that it uses the system-returned default font rather than an assumed MS Sans Serif font for the default font used.

Made a minor initialization change to Party Log dialog, to hopefully address an issue that I don’t see but a user does.

b197 Issues

We’ve had a few bugs reported, including Select dialogs not correctly limiting trait selection levels or points, and Party Log crashing. We hope to have another update posted soon to address these issues.

Things Writers of Plugins Should Know

Since release, and as of 5.0.197, there have been some important changes to be aware of:

* Notes/Notes()

As mentioned in the build notes, the purpose of the notes() tag on traits has been pretty muddled over time due to a variety of folks using it in ways that were not intended. That tag was meant to be used in a tiny space to show table notes references such as “[1,2]” for weapon or armor footnotes. Yes, notes() was a bad name for it, but it originated back when GCA did far less.

The notes() tag is now enforced as a mode-specific tag for the original intended purpose (and even that is now discouraged in favor of using itemnotes() instead), and any use of notes() that was intended by a user to be general item-related notes or commentary should be changed to usernotes() or included in the description(), instead.

* Each trait’s Description() and UserNotes() tags are probably RTF formatted strings.

This may not work for you.

The new functions GetNotes(Optional ByVal AsPlainText As Boolean = True) As String and GetDescription(Optional ByVal AsPlainText As Boolean = True) As String allow for retrieving the usernotes() and description() tags of a trait, as normal RTF or as plain-text.

Line breaks (as LF characters) will be preserved.

* The Notes property on GCATrait has been will now return usernotes() as plain-text.

If you set it, it sets usernotes() with that text.

* Character.Settings has an ApplyDBToActiveDefenses property.

When TRUE, all active defense scores (block, parry, dodge) *will* include the DB value for the active shield (one equipped on an arm). When FALSE, those scores won’t include the DB (which is the traditional way GCA has done it).

If your application needs the scores *not* to include the shield DB but this setting is TRUE, you can set the value to FALSE, call RecalculateAll(True, False), do your exporting, then reset things for the user by setting the value back to TRUE and calling RecalculateAll(True, False) before quitting.

You can get the current DB being applied in the DefenseBonus() As Integer or DB() As Integer functions. The applied DB may be 0 if no shield is equipped.

* Each shield will have a charblockscore() tag.

This contains the character’s Block level when using that shield. This will include the DB for the shield, but if ApplyDBToActiveDefenses is TRUE, then the better of the two values (this shield’s DB or equipped shield’s DB) will be included.

* GCA provides the VTTNotes() tag.

This is per-trait as a way for the user to include VTT-specific notes or formulas, such as OTF expressions for Foundry. On an attack-mode level, GCA provides the mode-specific VTTModeNotes() tag for the same purpose.

* I have added Public Function DamageDisplayText() As String to the Mode object.

This function returns a string that represents the standard damage notation including damage, armor divisor, damage type, and radius. Example: 2d+1 (2) cut (2). You can also access this using Item.DamageModeTagItem() with “DamageDisplayText” as the tag, if you’re accessing mode values that way. This should obviate the need for you to build damage strings yourself, and it will correctly show the new comma-separated mini-modes if those are used by a trait.

Package Updates (Books)

Delvers to Grow.gdf
[Templates]
Undead Slayer
Added a missing comma.

Discworld RPG.gdf
[Attributes]
Money
Remaining Funds
Both of these now include “+ char::campaigntotalmoney” in their basevalue() so that they will include money received through the Campaign Log as part of their totals. Normally, GCA automatically adds that value to these attributes when making calculations for the Points Bar display, so it needs to be updated to *not* do that when it is already included in the attribute score.
* This change will not affect existing characters unless you Resynchronize the character and check the Attributes box. *
* If the Money $ display on the Points Bar does not match the Money attribute on your character, be sure that you have Resynchronized Attributes and that your GCA5 version is higher than 5.0.192. *

Dungeon Fantasy RPG.gdf
Corrected some ‘enegy’ typos to ‘energy’.

[Attributes]
Money
Remaining Funds
Both of these now include “+ char::campaigntotalmoney” in their basevalue() so that they will include money received through the Campaign Log as part of their totals. Normally, GCA automatically adds that value to these attributes when making calculations for the Points Bar display, so it needs to be updated to *not* do that when it is already included in the attribute score.
* This change will not affect existing characters unless you Resynchronize the character and check the Attributes box. *
* If the Money $ display on the Points Bar does not match the Money attribute on your character, be sure that you have Resynchronized Attributes and that your GCA5 version is higher than 5.0.192. *

[Body]
<Humanoid>
Updated body part display locations to better fit default image.

[HitTables]
<Humanoid>
Added.
Updated rolls and notes to match those in Exploits, but edited to fit a simple Humanoid body (no extra limbs, tails, wings, etc.)

<Universal Dungeon Fantasy>
Added this table to match the table in Exploits, which includes adjustments and notes for extra limbs, tails, wings, etc.

[Modifiers]
<Arrow>
Flaming
Added

<_General>
Continual Light
Haversack
Resistance
Deflect
All of these added from Matthew Woods, with some adjustments from Armin.

<Melee Quality>
Accuracy
Puissance
Penetrating Weapon
Shatterproof
Defending Weapon
Flaming Weapon
Icy Weapon
Lightning Weapon
Ghost Weapon
Graceful Weapon
Loyal Weapon
All of these added from Matthew Woods, with some adjustments from Armin.

<Bow Quality>
Accuracy
Puissance
Penetrating Weapon
Shatterproof
Ghost Weapon
Loyal Weapon
All of these added from Matthew Woods, with some adjustments from Armin.

<Arrow>
Accuracy
Puissance
Penetrating Weapon
Flaming Weapon
Icy Weapon
Lightning Weapon
Ghost Weapon
All of these added from Matthew Woods, with some adjustments from Armin.

<Armor>
Fortify
Deflect
Lighten
All of these added from Matthew Woods, with some adjustments from Armin.

<Shield>
Defending Shield
Deflect
Lighten
All of these added from Matthew Woods, with some adjustments from Armin.

[Disadvantages]
<_General>
Odious Personal Habit (“Constant Humming or Singing”)
Added

Compulsive Carousing
Compulsive Generosity
Compulsive Lying
Added conditional bonuses/penalties.

[Equipment]
<Ammunition>
Arrow (Bodkin Point)
Arrow (Cutting Point)
Crossbow Bolt (Bodkin Point)
Crossbow Bolt (Cutting Point)
Added

<Clothing>
“Clothing, Complete Outfit”
Added

<Weapons>
Composite Bow (ST %choice%)
Composite Crossbow (ST %choice%)
Crossbow (ST %choice%)
Longbow (ST %choice%)
Pistol Crossbow (ST %choice%)
Regular Bow (ST %choice%)
Short Bow (ST %choice%)
Added modes for Standard Point, Bodkin Point, Cutting Point, and Flaming: Follow-Up

<Other Magic Items>
Bottomless Purse
Cornucopia Quiver
Gem of Healing
Ironskin Amulet
Moly Amulet
Necklace of Fireballs
Salamander Amulet
Serpent’s Amulet
Siege Stone
Wizard’s Staff
Wizard’s Wand
Added.

[Spells]
<Movement:Mo>
Added SP:Quick March (Druidic)

Dungeon Fantasy RPG – Companion 3.gdf
Book added. Thanks to Matthew Woods.

GCA5 Symbols.GDF
[SYMBOLS]
A number of the rules referred to the _Cinematic.png image. That image was removed a long time ago, but the rules weren’t updated to reflect that. That is now fixed.

GURPS Action 1 – Heroes.gdf
[TEMPLATES]
Assassin (Action)
Cleaner (Action)
Demolition Man (Action)
Face Man (Action)
Hacker (Action)
Infiltrator (Action)
Investigator (Action)
Medic (Action)
Shooter (Action)
Wheel Man (Action)
Wire Rat (Action)
notes() changed to usernotes()

GURPS Action 3 – Furious Fists.gdf
[TEMPLATES]
Big Guy (Action)
Fast Guy (Action)
Ninja (Action)
Traceur (Action)
Weapon Master (Action)
notes() changed to usernotes()

GURPS Action – Pyramid 3-53 – Extended Action.gdf
[TEMPLATES]
Horseman (Action)
notes() changed to usernotes()

GURPS After The End 1 – Wastelanders.gdf
[TEMPLATES]
Doc (After the End)
Hulk (After the End)
Hunter (After the End)
Nomad (After the End)
Scavenger (After the End)
Tech (After the End)
Trader (After the End)
Trooper (After the End)
Trader – Experienced (After the End)
notes() changed to usernotes()

GURPS Basic Set 4th Ed.–Characters.gdf
Corrected some ‘enegy’ typos to ‘energy’.

[Attributes]
Money
Remaining Funds
Both of these now include “+ char::campaigntotalmoney” in their basevalue() so that they will include money received through the Campaign Log as part of their totals. Normally, GCA automatically adds that value to these attributes when making calculations for the Points Bar display, so it needs to be updated to *not* do that when it is already included in the attribute score.
* This change will not affect existing characters unless you Resynchronize the character and check the Attributes box. *
* If the Money $ display on the Points Bar does not match the Money attribute on your character, be sure that you have Resynchronized Attributes and that your GCA5 version is higher than 5.0.192. *

[Modifiers]
<Damage Resistance>
Force Field
Added gives(=All+nobase to owner::location$) to automatically change DR to cover all locations

[Advantages]
<Mundane Social, Mundane, Social>
Pitiable
gives(+1 to SK:Panhandling) changed to gives(+3 to SK:Panhandling)

[Body]
<Humanoid>
Updated body part locations to better fit default image.

[Equipment]
“Auto Shotgun, 12G”
Removed the duplicate malf() entries from each newmode().

GURPS Dungeon Fantasy 5 – Allies.gdf
#ReplaceTags in “AD:Ice Weasel Bite” with “displaycost(26), skillused(ST:DX, SK:Brawling), x(), notes(Possible Paralysis), initmods(_
changed notes() to itemnotes()

GURPS Dungeon Fantasy 13 – Loadouts.gdf
[Equipment]
“Trident”
notes() changed to itemnotes() in each mode.

GURPS High-Tech Pulp Guns Volume 1.gdf
[Equipment]
Added quotes around so very many item names.

Colt Model 1878
H&H Paradox Gun
Winchester Model 97
FN-Browning Auto-5
H&R Model 8 Standard
Merkel Modell 145
Winchester Model 12
Greener Police Gun, 14.5G 2.56”
Remington Model 17, 20G 2.75”
LeFever Nitro Special, 12G 2.75”
Ithaca Auto & Burglar, 20G 2.5”
Ithaca NID Field, 12G 2.75”
Winchester Model 21, 12G 2.75”
Remington Model 32, 12G 2.75”
Manville M12, 12G 2.75”
Removed the extraneous mode() tag.

Greener F35 Far-Killer
Removed the extraneous mode() tag.
Renamed second newmode() to Slug.

Winchester Model 1887
Removed the extraneous mode() tag.
Removed the second newmode() tag because it was largely a duplicate of the first, and the other stats didn’t seem to make sense for that.

GURPS Lite 4th Ed.–Characters.gdf
[Attributes]
Money
Remaining Funds
Both of these now include “+ char::campaigntotalmoney” in their basevalue() so that they will include money received through the Campaign Log as part of their totals. Normally, GCA automatically adds that value to these attributes when making calculations for the Points Bar display, so it needs to be updated to *not* do that when it is already included in the attribute score.
* This change will not affect existing characters unless you Resynchronize the character and check the Attributes box. *
* If the Money $ display on the Points Bar does not match the Money attribute on your character, be sure that you have Resynchronized Attributes and that your GCA5 version is higher than 5.0.192. *

[Equipment]
<Lite – Armor>
Cloth Armor Suit
Leather Armor Suit
Light Scale Suit
Mail Suit
Steel Laminate Suit
Plate Suit
Flak Jacket
Ballistic Vest
Notes() changed to description()

GURPS Low Tech 4e.gdf
[BODY]
<Humanoid – Low Tech>
Now showing Chest and Abdomen instead of Torso.
Updated body part locations to better fit default image.

[HitTables]
<Humanoid – Low Tech>
Added this hit location table to go along with the Body “Humanoid – Low Tech”.
Some of the hit penalties here are worked out with Kromm because they’re not specifically noted in the book.

[Equipment]
“Qian Kun Ri Yue Dao”
Fixed a missing comma between a couple newmodes()

[Equipment]
Added a section near the end that includes a bunch of updates, courtesy of DeathDaisy, to update the Build Your Own system items.

[Modifiers]
<Equipment>
Equipment: Disguised
Equipment: Styling
Equipment: Rugged
Equipment: Cheap (Clunky)
Equipment: Cheap (Fragile)
Equipment: Expensive
Each replaced cost to use CF pricing as per the book. (This makes them incompatible with the ones in other books, but loading the other books should replace these with those if those books are loaded later.)

GURPS Martial Arts 4e.gdf
[Equipment]
Large Hungamunga
Removed the tag mode() from newmode(Thrown).

GURPS Monster Hunters 1 – Champions.gdf
[Equipment]
“Sniper Rifle, 7.62mm”
rcl(2) changed to rcl(3)

GURPS Powers 4e.gdf
[Modifiers]
<Damage Resistance>
Force Field
Added gives(=All+nobase to owner::location$) to automatically change DR to cover all locations

GURPS Prime Directive 4e.gdf
[Advantages]
Physical Science
notes() changed to usernotes()

[Equipment]
Light Combat Armor
Medium Combat Armor
Heavy Combat Armor
Diagnostic Table
Heat Suit
Medical Pouch
Light Monocrys (vest)
Light Monocrys Suit
Medium Monocrys Vest
Medium Monocrys Suit
Heavy Monocrys Vest
Heavy Monocrys Suit
Remote Probe
IRD chip
Standard Vacc Suit
Heavy Duty Vacc Suit
Armored Vacc Suit
Wet Suit
Military Wet Suit
notes() changed to usernotes()

GURPS Steampunk 3 – Soldiers and Scientists.gdf
Book added. Thanks to Gareth Parker.

GURPS Tales of the Solar Patrol 4e.gdf
File replaced by newer one from the author.

GURPS Thaumatology 4e.gdf
Section for Raw Magic added to end of file. (Thanks to Symbiode)

[Advantages]
<Raw Magic>
Raw Magic Store
Added

[SPELLS]
<Meta-Spells>
Detect Raw Magic
Analyze Raw Magic
Process Raw Magic
Added

<~Ritual – Meta-Spells:MS>
Detect Raw Magic (Ritual)
Analyze Raw Magic (Ritual)
Process Raw Magic (Ritual)
Added

GURPS Transhuman Space Changing Times 4e.gdf
[TEMPLATES]
Cryobot (Changing Times)
Snakebot (Changing Times)
Snakebot – Combat Naga (Changing Times)
notes() changed to usernotes()

GURPS Transhuman Space Shell-Tech 4e.gdf
[TEMPLATES]
Crocshell (Shell-Tech)
Cybertool (Shell-Tech)
J-56 Ying Transatmospheric UCAV (Shell-Tech)
Seeker Missile (Shell-Tech)
Cyberdolphin (Shell-Tech)
Ro-Ped (Shell-Tech)
Herzberg Cybershell (Shell-Tech)
Titan RATS (Shell-Tech)
Zero-G Stevedore (Shell-Tech)
notes() changed to usernotes()

Service Nanosat (Shell-Tech)
Service Nanosat – Dust-Buster (Shell-Tech)
Service Nanosat – Sabotage (Shell-Tech)
creates()
PE:Low-power thrusters
notes() changed to usernotes()

GURPS Ultra-Tech 4e.gdf
[Modifiers]
<Melee Quality>
Composition: Hyperdense Blade (TL11)
gives()
“=nobase to owner::armordivisor” changed to “=nobase to owner::armordivisor$”
“=5 to owner::armordivisor” changed to “=+5 to owner::armordivisor bymode where damtype includes anyof “cut,imp””
=+@textindexedvalue( $modetag(damtype), (“cut”, 2), (“imp”, 2) ) to owner::damage$”
changed to
“=+2 to owner::damage bymode where damtype includes anyof “cut,imp””

<Sword Class Quality>
Weapon Quality: Superfine (TL9+)
gives()
“=nobase to owner::armordivisor” changed to “=nobase to owner::armordivisor$”
“=2 to owner::armordivisor” changed to “=2 to owner::armordivisor” bymode where damtype includes anyof “cut,imp”
“=+@textindexedvalue( $modetag(damtype), (“cut”, 2), (“imp”, 2) ) to owner::damage$”
changed to
“=+2 to owner::damage bymode where damtype includes anyof “cut,imp””

Composition: Monowire Blade (TL9^+)
gives()
“=nobase to owner::armordivisor” changed to “=nobase to owner::armordivisor$”
“=+10 to owner::armordivisor” changed to “=+10 to owner::armordivisor bymode where damtype includes “cut””
“=+@textindexedvalue( $modetag(damtype), (“cut”, 2) ) to owner::damage$”
changed to
“=+2 to owner::damage bymode where damtype includes “cut””

Composition: Vibroblade (TL10)
gives()
“=nobase to owner::armordivisor” changed to “=nobase to owner::armordivisor$”
“=+3 to owner::armordivisor” changed to “=+3 to owner::armordivisor bymode where damtype includes “cut””
“=+$/textindexedvalue( $modetag(damtype), (“cut”, 1d) ) to owner::damage$”
changed to
“=+1d to owner::damage$ bymode where damtype includes “cut””

Composition: Vibroblade (TL11)
gives()
“=nobase to owner::armordivisor” changed to “=nobase to owner::armordivisor$”
“=+3 to owner::armordivisor” changed to “=+3 to owner::armordivisor bymode where damtype includes “cut””
“=+$/textindexedvalue( $modetag(damtype), (“cut”, 1d+1) ) to owner::damage$”
changed to
“=+1d+1 to owner::damage$ bymode where damtype includes “cut””

Composition: Vibroblade (TL12)
gives()
“=nobase to owner::armordivisor” changed to “=nobase to owner::armordivisor$”
“=+3 to owner::armordivisor” changed to “=+3 to owner::armordivisor bymode where damtype includes “cut””
“=+$/textindexedvalue( $modetag(damtype), (“cut”, 1d+2) ) to owner::damage$”
changed to
“=+1d+2 to owner::damage$ bymode where damtype includes “cut””

Composition: Nanothorn Blade (TL11^)
gives()
“=nobase to owner::armordivisor” changed to “=nobase to owner::armordivisor$”
“=+10 to owner::armordivisor” changed to “=+10 to owner::armordivisor bymode where damtype includes “cut””

Variant – Basic Damage – Swing as Thrust+2.gdf
File added.

Variant Low-Tech 4e – Metric Equipment.gdf
File corrected (targets for replacetags, units()). Thanks to DeathDaisy.

Package Updates

** Core Supplemental

* GCA Prime Sheet (now 1.0.5) – (NOTE: This should have been updated to 1.0.6 but was not.)

Updated to allow for properly printing the RTF text of description() and usernotes() for traits.

Added options to have description() and usernotes() print as plain text instead of rich text.

Add options to always show description() or usernotes() for traits that are highlighted a certain color (or highlighted at all).

Updated to use Mode’s DamageDisplayText for damage displays.

* GCA5.xsd

Added element ‘vttnotes’ to the ‘ref’ block of GCATrait

Added element ‘vttmodenotes’ to GCAAttackMode block

Added elements ‘minimode_damage’,’minimode_damtype’,’minimode_armordivisor’, and ‘minimode_radius’ to GCAAttackMode block

Changed element ‘penalty’ in GCAHitLocationLine to a string.

* TagDefs.xml

Updated ‘mode enabled’ text to instead be ‘mode specific’.

Updated to include text for vttnotes() and vttmodenotes().

Updated to include text for minimode_damage(), minimode_damtype(), minimode_armordivisor(), and minimode_radius().

* BookCodes.xml

Added Dungeon Fantasy: Companion 3.

Version 5.0.197 Released

GURPS Character Assistant 5.0.197.0 has been released. Get the updated installer from your Warehouse 23 downloads page.

This update includes all the changes mentioned in Build Notes posts since the last Release.

Note: You get the updated installer by re-downloading GURPS_Character_Assistant.zip from your Warehouse 23 account, and running the gca5setup_5.0.197.release.exe program that it contains. There is no separate update-only installer, you have to download and reinstall the program. It will not overwrite your personal data, it will overwrite your installation of GCA with the new and updated version.

 

One bit fixed, two bits extra (b196)

b196

* #AsChild

You can now use the special directive #AsChild in an adds(), addsorincreases(), or creates() tag to specify that the trait being added should be added as a child. Using #AsChild automatically forces #DoNotOwn as well, so be aware that the child will not be owned and will not appear in the needs() automatically. As with #NoNeeds and #DoNotOwn you should include #AsChild 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 usually good.

* #InputX directives

There was a processing bug in the code that handles processing the #input(), #inputreplace(), #inputtotag(), and #inputtotagreplace() directives. This bug would occur when the tag data included a custom tag that ended with the # character. The processing code would find that character, correctly identify it as being part of a tag, but still exit processing before looking at the rest of the tag data. That is now fixed, and these directives should now be processed correctly regardless of where they fall in the tag list.

* Respond

I have adjusted adds() and addsorincreases() to allow any included ‘respond’ keywords to use a $ function to process the ‘respond’ text before it gets pushed onto the response stack. You can use this to completely change responses, or to respond with an evaluated expression. If you want to respond with text that includes an unprocessed $ function, escape it as ‘$/function()’ rather than simply ‘$function()’ and GCA will change the ‘$/’ to “$’ before it pushes the responses onto the stack. The $ function processing happens before any quotes or braces are stripped from around the response expression (which itself happens before the response is split into list items if it is a list).