User Guide ‐ GURPS 4th Edition Game Aid for Foundry VTT (Unofficial) - crnormand/gurps GitHub Wiki

Release Version 0.17.20 (05/06/2025) FVTT v12 compatible

Release Version 0.18.0 (05/23/2025) FVTT v13 compatible (also compatible with v12 currently)

Document last edit date: Sep 13, 2022 (minor edits during move from Google Docs May 11, 2025)

This document was imported from the Google Docs version as at May 10, 2025

The GURPS Game Aid has been updated for Foundry v13!

The GURPS Game Aid has been updated for Foundry v12!

GURPS 4th Edition Game Aid for Foundry VTT (Unofficial)

“Your GURPS. Your way.”

Author’s note:

After 5 months of discussions with Steve Jackson Games, we are legally allowed to call ourselves “(Unofficial)”!

FYI, this Users Guide will never be completely in sync with the release. ;-) We only have so much free time, and I have always felt that it is more important to get the new features out there, than it is to document the old ones. However, I do my best to keep adding to this document every chance I get. I try to make a release video for each release, describing the new features. If it isn’t documented here, you can check there: Release/Features videos for the GURPS Game Aid
Chris Normand/Nose66 5/4/21

Author’s note (about Foundry v10+ & PDFs):

PDFoundry is no longer supported in Foundry V10+. Check out the Configuring Foundry to handle PDFs section below to learn the new V10+-compatible process.

image

Helper’s note (Moving the User Guide from Google Docs to GitWiki):

To help to improve the User Guide and make it easier to update, manage, and search and use, we've ported the original Google Docs guide over to here on the GitWiki. Hopefully this will make it easier for the developers and fans to improve this for everyone!

Contents and Section Links

Links

Videos (Playlist)

Installing the Game Aid

Getting Started

How to play

You are done! You can go play now!

Resource Trackers

“On-the-Fly” formulas

How to Apply Damage

Mook Generator

Chat Commands (edited as of Aug 23 2022)

Writing macros using Javascript

FAQ / “How To”

Modules

Is it an Alpha (maybe a Beta?)!

Disclaimer ;-)

Legal


Links

If you have questions, join our Discord channel, #foundry-gga-vtt: on the Unofficial GURPS Discord Server.

If you have game issues or suggestions for new features visit our GitHub page: https://github.com/crnormand/gurps/issues

ZIP file containing export scripts (required for GCA users): https://drive.google.com/file/d/1vbDb9WtYQiZI78Pwa_TlEvYpJnR_S67B/view?usp=sharing

If you like our work, please consider supporting our work:
Sponsor us on GitHub
Support us on Ko-Fi

Lastly, you can email me at nose66 (at) bellsouth.net (but I would prefer if you used Discord).

Videos

The complete “How to” playlist: https://bit.ly/3c02xpa

Individual videos:
Getting Started video: https://youtu.be/YstMNNLwKBM
Players Guide: https://youtu.be/zykb7wxh-RQ
How to create NPCs: https://www.youtube.com/watch?v=3Dyfjh0peLI
How to use On-the-Fly formulas: https://www.youtube.com/watch?v=jSSfs2Red0A
How to apply damage: https://www.youtube.com/watch?v=6eaCyacs4N0
How to add Items: https://www.youtube.com/watch?v=cOU78-RvXdc
How to use the /anim chat command: https://www.youtube.com/watch?v=BAyko-unrEQ

Playlist of Release/Features videos for the GURPS Game Aid

Installing the Game Aid

Our Game Aid can now be legally installed from the Foundry (as of 5/4/2021). Open Foundry and click on the “Game Systems” tab, and then the “Install System” button:

image

In the “Filter Packages” input field, type “GURPS”, and you will see our Game Aid:

image

Click the “Install” button and you are good to go! You will be notified if we release newer versions, and you can automatically upgrade from the “Game Systems” tab without having to reinstall.

Configuring Foundry to handle PDFs

NOTE: PDFoundry no longer works with Foundry V10, and will cause your world to error out. You MUST uninstall PDFoundry.
In order for the GURPS Game Aid to display the game references links (usually seen on the character sheets):
image

You must define the location of your PDFs.

To set up your PDFs (in Foundry V10 or higher), you must create a new Journal Entry, we recommend calling it “PDFs” (but you can name it whatever you want):
image

And then click on “Create New Journal Entry”.
Click the “Add Page” button (at the bottom left), enter in a name for the PDF, select the type “PDF”:
image

And then press the “Create New Page” button, which will bring up the property editor:
image

We recommend unchecking “Display Page Title”, and leaving it on “Level 1”.

Select the PDF source. The file picker will allow you to upload PDFs from your computer into the Foundry User data directory. We recommend creating a folder called “PDFs” (but you can organize your data directory any way you want).

NOTE: If you are remotely hosting your Foundry, this process may be more involved. You may have to use your remote host’s facility to upload the file, and then add it to Foundry. In either case, the PDF will count against your storage limit.

Leave the “Page Offset” empty for now, and then enter the “PDF Book Code” from this list: https://gurpscharactersheet.com/page_references.html (although the list is incomplete, you get the idea). “B” for Basic Set, “P for Powers, etc.

NOTE: If you have separate Basic Set Characters and Campaigns PDFs, you can change the system setting “Basic Set PDF(s)”

image

Use “B” for the Basic Set Characters PDF, and “BX” for the Basic Set Campaigns PDF.
And then click “Save Entry”. Your PDF will show up in the Journal Page. Scroll the PDF down until you see the page number of the PDF (not the number in the top left).

image

It should be opened to page 5. If it isn’t, you will need to enter a “Page Offset”. In the example above, the Basic Set opened to page 3. So we must enter a “Page Offset” of 2 (2 + current page number 3 = 5). Enter the new “Page Offset” and press “Save Entry” again. The PDF page will refresh. Scroll down until you see the page number. It should be page 5.

Once the “Page Offset” is correct, you can close the properties window (no need to save again).

You can add more PDFs either by adding more pages to the current Journal Entry (recommended), or creating separate Journal Entries.

Finally, you MUST make your Journal Entries readable by your players. Go to the Journal Entry tab, and right click on the “PDFs” Journal (or whatever you called it). Select “Configure Ownership” and then select the “All Players” pulldown, pick “Observer” and then click “Save Changes”. NOTE: If you created multiple Journal Entries for your PDFs (instead of adding them as separate pages to the “PDF” journal entry), you will need to change the permission on ALL of the PDF Journal Entries.

Now all “Ref” columns in the character sheets and On-the-Fly entries like: “[PDF:B101]” can open to the PDF.

NOTE: If you are adding non-reference PDFs, just leave the “Page Offset” and “Book Code” fields blank. You only need to provide a “Book Code” for PDFs that you want to provide as references on the character sheet, or accessible through On-the-Fly formulas.

Getting started

This game system expects that you will create and maintain your characters in an external program such as GURPS Character Sheet (GCS) https://gurpscharactersheet.com or GURPS Character Assistant (GCA) http://www.sjgames.com/gurps/characterassistant/.

The Game Aid has some editing functions, but due to the complexity of GURPS, it will leave all of the complex character creation rules to the applications that have been developed (for years!) specifically to handle them.

To use your characters in Foundry, it is best if you first create them in GCS or GCA, and then export them to Foundry. GMs can use the Mook Generator (how to create NPCs)) to create simple NPCs in Foundry.

Import characters from the GURPS CharacterSheet (GCS)

You no longer need to export your character from GCS!!!

The GURPS Game Aid can read the .gcs files directly. Just select the .gcs file from the import dialog.

Import characters from the GURPS Character Assistant (GCA)

To export from GCA, you must copy the export script from your Foundry data directory (or our online ZIP file) to the GCA “sheets” directory.

The export script is: <FoundryDataDirectory>/Data/systems/gurps/exportutils/export to Foundry VTT.gce

The file is also included in this ZIP file.
NOTE: This script was updated 12/23/2021. Version: GCA-11

Copy the export script into your GCA "sheets" directory.

Load the character, and select the menu options "File” -> “Export". In the “Export Options” dialog, select “export to Foundry VTT.gce” in the pulldown, and check the “Custom file format” box.

image

NOTE: You DO NOT need to change the File extension. You may leave it as “.TXT”.

Press “OK” and the “Export File To…” dialog will appear. Just press “Save”, and it will save the export right next to your character (just remember to check “Custom file format”!). For example, if the character file is named:

Franklin Dunne (Cowboy).gca4

The export will be named:

Franklin Dunne (Cowboy).gca4.TXT

You can save the file anywhere, but check out Special Export Location for an added feature.

NOTE: The Fantasy Grounds XML export is no longer supported. Please use the new “export to Foundry VTT.gce” script.

Special Export Location

Our Game Aid has the ability to re-import characters without prompting for the file name if they are saved in a “Special” location.

Find the “User Data Path”. You can see what it is by bringing up the “Configuration” tab on the main Foundry page:

image

Open a file browser and navigate to the “User Data Path” directory. It will contain a “Data” subdirectory, navigate into that. In “Data”, you will see the subdirectories “modules”, “systems” and “worlds” (and there could be more). Create a new directory here to store characters, and under that, you can create subdirectories for each of your worlds (if you want).

For example, you could create the subdirectory “characters” and under it, you create “homegame” and “tuesdays”.

And in this example, when you export a character from GCA or GCS, export it into the appropriate subdirectory:
C:/Documents/Personal/FoundryVTT/Data/characters/homegame or C:/Documents/Personal/FoundryVTT/Data/characters/tuesdays

After your initial import of the character (which will ask for a file location), the Game Aid will be able to detect that the file is in a well known (and safe) location, and can re-import it without bringing up the file dialog.

Importing into Foundry

Now that you have exported your characters, you must create a new Actor. Start Foundry and open your world. If you do not have a world yet, click on the “Game Worlds” tab, and then click the “Create World” button at the bottom. Give your world a title and data path name (which should not have spaces). Select the “GURPS 4th Edition Game Aid (Unofficial)” game system and press the “Create World” button at the bottom.

The import system for our Game Aid does NOT create Actors. It only refreshes already created Actors. This was done on purpose.

So you need to create an Actor. Open the Actors tab on the side bar (top right of your screen) and click on “Create Actor”:

image

Give the actor a name. It doesn’t matter what you choose, since it will be overwritten by the import process. For this example, we will name it “q”.

The default character sheet will open. Press the “Import” button in the title bar.

image

If this is the first time you are importing this character, a dialog will appear:

image

Select the file exported from GCS or GCA and press “Import”. GCA users, the file does NOT need to end in “.xml”. If you followed the procedure above, it should end in “.TXT”.

NOTE: You will lose all of the data stored in “q”. Which is fine, we are more interested in the data from GCS or GCA anyway.

In fact, you can re-import as many times as you like. The game system will keep the same Actor object, so it will remain associated with the same tokens.

This is the normal process. Create and maintain your characters in GCA/GCS and then re-export and import into Foundry everytime the character changes. If a character gains an “item”*, the GM should add the “item” in GCA/GCS (so that they can do all of the various calculations) and re-export / import.

*****An “item” could be anything, a piece of equipment, a new advantage / disadvantage / skill / spell, etc. Anything that might provide a new feature or change the value of some existing roll.

If you saved your exported characters in the Special Export Location, the Game Aid won’t need to display the “Import character data” dialog on subsequent imports.

While our game aid does provide limited editing of the character sheet, it does not do any calculations on the new information. The limited editing is mainly there so that you (or the player) can add On-the-Fly formulas and take notes (see Player entered values).

How to play

Once all of your characters are imported into the system, you can play. We have a Players Guide video to help you get you started.

Character Sheet

If you are familiar with GCS, then you will recognize the character sheet. Rich Wilkes gave me permission to use his HTML format, so I did. Shamelessly ;-) If you have not used GCS, I highly recommend it. It is a free, cross platform (Windows, Mac and Linux) program and has been in active development for 21+ years. https://gurpscharactersheet.com (and no, I am not getting paid for this promotion, I just really like it)

image

You will notice that many items are highlighted in yellow. If you hover your mouse over them, they will change to look like a button:

image

Left click on the button to “roll” that attribute. You will see a message in the chat log indicating the outcome:

image

You can roll Attributes, Dodge values, Weapon attacks (Lvl), Parry, Damage, Skills (SL), etc., anything yellow that looks like a button when you hover over it.

Player entered values

A player can edit their character sheet to store / remember various things. These values are NOT overwritten by the character import.

They can modify the FP and HP trackers and other Resource Trackers (See Editing the current value):

image

They can save text (especially “On-the-Fly” formulas) in the “Quick Note” section:

image

And they can add Notes or Equipment by clicking on the [+] buttons in the headers:

image

“User Created” Equipment and Notes display the blue banner icon: ![][image21].

And remember, “User Created” Equipment and Notes are NOT overwritten by a character import.

A user can also drag and drop Equipment, Skills, Spells, Advantages, etc. to rearrange the lists. However, this change in order WILL be overwritten by the next import.

Modifier Bucket

You will also notice a few things highlighted in orange. If you hover your mouse over them, they will also change to look like a button:

image

Left click to add the modifier to the next roll that you do. If you have played GURPS before, you know that the usual process is to determine all of the modifiers to your action (e.g. is it dark? are you standing on a slippery surface? have you been blessed by the gods?) each of which can give a plus(+) or a minus(-) to your next roll.

The Modifier Bucket collects all of those modifiers and sums them up for you.

You will see the Modifier Bucket at the bottom of the screen:

image

It is showing the “-9” modifier that you just clicked on. When you hover over the red square at the bottom on the screen you will be presented with the Modifier Bucket Tool Tip:

image

You can mouse over any of the highlighted text, and it will turn into a button that you can press. Green and Red buttons will add positive and negative modifiers to the bucket, which is displayed in the bottom left corner (“Current Modifiers”).

Since this is a tool tip, it will close automatically once you move your mouse off of it. If you would rather it appear when you click on it (and not when you mouse over it), uncheck the “Show Modifier Tooltip on mouse ‘hover’” in System Settings.

You can remove any current modifiers by clicking on them. You can add commonly used modifiers by selecting them from the pulldown menus. If you don’t see a particular modifier that you want, you can always type it into the “Or you can type in a modifier:” field, for example “+2 to hit” or “-2 dazed”. The modifier MUST have a plus(+) or minus(-) in front of the number, or use the mouse wheel when hovering over the bucket.

If you are the GM, you can send your modifier bucket to another player. This can be useful if a new player does not know all of the modifiers that could affect their roll. The GM can build up their own modifier bucket, and then click the player name to send it to them, this will replace their current modifier bucket but you can hold CTRL/CMD when sending a modifier bucket to add to their current one. The player’s modifier buckets will be whispered to you in the Chat log.

System Settings

To view the system settings available, open the “Game Settings” tab, and click on “Configure Settings”. On the “Configure Game Settings” window, click on the “System Settings” to bring up the GURPS specific settings.

image

There are a few User Interface settings available to everyone, and a HUGE list of settings available to the GM. We try our best to provide as many options as we can, so you can play “Your GURPS, Your Way”.

You are done! You can go play now.

That is the basics for using our Game Aid. You really don’t need to know more. You can watch our Getting Started video or Players Guide video to see it in action.

The following sections are about advanced features, like Resource Tackers, “On-the-Fly” formulas or chat commands and macros, or features specifically for the GM (damage calculator).

Resource Trackers

The Full (GCS) character sheet and the Combat sheet both contain four "resource trackers" -- widgets whose job it is to view and manage quantities that increase or decrease with use. This is meant as a generic way to track resources important to the character.

These resources could be physical objects, such as crossbow bolts, bullets, or magic beans, or abstract quantities like control points (from Fantastic Dungeon Grappling), Quintessence Points ("The Fifth Attribute", Pyramid 3/120), or Destiny Points (Monster Hunters).

User Interface

This is what the Resource Trackers look like on the character sheet:

image

This example shows one 'used' Resource Tracker (Crossbow Bolts) and three trackers currently unassigned to any value. The darker background on the title bar shows that a specific tracker is currently in use.

In the bottom-right corner of each tracker are the configured minimum and maximum values for that tracker. In this case, the minimum for the Crossbow Bolts is zero (0) and the maximum is 20.

You'll also see text like 'Normal' below the input buttons and field. This is intended to reflect the 'status' of the resource, based on the current value and its maximum value. The status may also be colored as another hint of the status of that resource. For example:

image

Editing the current value

Increment/Decrement Buttons: You can increment or decrement the count of a tracker by clicking on the [+] or [–] buttons. Each click increases or decreases the current count by 1. Holding the Shift key down and clicking will increase or decrease the count by 5.

Reset Button: Clicking the curved arrow button imageresets the tracker to its maximum value (unless the Resource Tracker is a “Damage Tracker”, in which case it resets it to 0).

Resource Value Textfield: If you click into the text area, you can directly edit the value as well.

image

Quick Access Ribbon: If you click into the text area, a popup 'ribbon' will appear with buttons to increase or decrease the current value by 1, 5, or 10, set it to zero (0), or reset it to the current value (useful if you've clicked a number of those buttons but want to cancel the action).

Customizing the Resource Tracker

The simplest use of the Resource Tracker requires very little setup. It involves naming the resource and optionally setting its maximum value, and some 'thresholds' that serve as rules the tracker uses to display the Status Text and its color.

To edit a tracker, click on its titlebar (it shows a pencil icon) which opens a dialog that asks you what you want to do:

image

Edit Tracker: This will open the Tracker Editor, allowing you to change the configuration of this tracker.

Delete Tracker: This clears all configuration in the Resource Tracker, making it unassigned.

Copy Template: This allows you to copy the Resource Tracker configuration from a template defined for this game world. This makes it easy for the GM to define a standard resource that many or all characters should have. Clicking this button will copy the template named in the "Resource Tracker Templates" dropdown list into this specific Resource Tracker. This overwrites any current configuration of the selected Resource Tracker.

Edit Tracker

Clicking the Edit Tracker button opens the Resource Tracker Editor in its own window.

image

Resource Name: The only required configuration in a tracker is its name. This changes the name of the Resource Tracker on the character sheet and sets the titlebar color to black, showing that this Resource Tracker "slot" is in use.

Current: A number to use as the initial tracker value.

Minimum: The minimum value of the resource. At the moment this is informational only; it doesn't affect the tracker in any way. E.g., it does not prevent the resource from going below this value.

Maximum: The maximum value of the resource. It is potentially used in determining the Status Text and color. However, the resource value is not restricted from exceeding this value.

Alias: A short name used to refer to this resource. It is required if you want the resource to show up in the Apply Damage Dialog as a target of damage.

Reference: A GURPS PDF page reference, used by PDFoundry to open the appropriate PDF inside Foundry. If entered, the bottom-left corner of the tracker will contain a link to open the PDF to the indicated page.

Use as Damage Type: If checked, this allows the resource to be used in the Apply Damage Dialog as a target of damage (see How to Apply Damage).

Damage Tracker: The assumption is that most resources start at a maximum value, and "damage" is represented by subtracting from the resource. This is the default behavior and reflects how HP and FP work. If this checkbox is checked, then "damage" is added to the current value (instead of subtracted). The damage is “tracked”. This is how the “Control Points” Resource Tracker works (from Fantastic Dungeon Grappling).

Thresholds

Thresholds are used to set up ranges of values that correlate to a specific status of the resource. This is how you can customize the Status Text and its color in the tracker, and have it update automatically as the resource value increases and decreases.

You need to create one threshold for each status you want to display. The current resource status is determined by comparing the current value to its maximum value.

Clicking the '+' button will create a new threshold.

image

For each threshold, you need to define the following information:

Comparison: This is the type of comparison to do between the current value and threshold value (which is defined by the next two fields, Operator and Value). Possible values are:

  • [>] - Greater Than
  • [≥] - Greater Than or Equal To
  • [<] - Less Than
  • [≤] - Less Than or Equal To

Operator: A mathematical operator to apply to the resource's maximum value to get the threshold value. Possible values:

  • [MAX ×] - The resource maximum value times (or multiplied by) the next value
  • [MAX ÷] - The resource maximum value divided by the next value
  • [MAX +] - The resource maximum value plus the next value
  • [MAX –] - The resource maximum value minus the next value

Value: The value to use in the calculation of the threshold value.

Condition: The name of the status.

Color: The color you want to assign to the status.

The trashcan icon is used to delete this threshold.

Important Concepts

Threshold Value: The threshold value is calculated by applying the Operator to the resource maximum and the Value.

For example, suppose we have a Resource whose maximum value is 15. If the Operator is [MAX +] and the Value is 5, then the Threshold Value is (15 + 5), or 20.

Resource Status: To determine the current status of a resource, the current value is compared, one-by-one, to each Threshold Value starting from the top of the list and moving towards the bottom. The first calculation that is 'true' is used as the Resource Status.

For example, assume we have the following list of thresholds:

image

Also assume that the resource maximum is 18.

If the value of the the Resource Tracker is:

  • 20
    • Is 20 greater than 18 (MAX × 1)? Yes. The status is Over.
  • 18
    • Is 18 greater than 18 (MAX × 1)? No.
    • Is 18 greater than 9 (MAX ÷ 2)? Yes. The status is Normal.
  • 3
    • Is 3 greater than 18 (MAX × 1)? No.
    • Is 3 greater than 9 (MAX ÷ 2)? No.
    • Is 3 greater than 0 (MAX × 0)? Yes. The status is Low.
  • 0
    • Is 0 greater than 18 (MAX × 1)? No.
    • Is 0 greater than 9 (MAX ÷ 2)? No.
    • Is 0 greater than 0 (MAX × 0)? No.
    • Is 0 less than or equal to 0 (MAX × 0)? Yes. The status is Under.

Here's another example that copies the logic used to track Fatigue. I hope this makes it easier to understand how to set thresholds to drive the correct Status Text and color.

For FP, the possible statuses are (see page B426):

Normal: The current FP value is greater than or equal to 1/3 your basic (Max) FP.

Very Tired: The current FP value is less than 1/3 of your basic (Max) FP but greater than zero (0).

Verge of Collapse: The current FP is less than or equal to zero (0) and greater than -1 × basic (Max) FP.

Unconscious: The current FP is less than or equal to -1 × basic (Max) FP.

You could make a Resource Tracker that works like Fatigue, you would create thresholds like this:

image


Typical Uses

The following are some examples that you can copy to get some basic Resource Tracker functionality.

Ammunition

Use a resource tracker to track the bullets in a clip or magazine. In this example, the magazine contains 22 bullets. You want to show the Status Text as "OK" with a green highlight while there are more than 6 bullets in the magazine; as "Running Low" with a yellow highlight if there are 1-6 bullets, and "Empty" with red highlight if the magazine is empty.

image

Shield Damage

Use a resource tracker to track the HP of a shield and have the ability to apply normal damage to the shield instead of the character. Let's assume we are talking about a Large Shield (B287) with DR 9, HP 60.

image

Normal: Shields provide their normal protection as long as their current HPs are greater than zero (0).

Disabled: If equal to or less than zero (0), but greater than -5×HP, the shield must make a HT roll or is disabled or destroyed, and no longer provides any protection. It is still attached to the wearer and encumbers them.

Collapse: At equal to or less than -5×HP but greater than -10×HP, the shield automatically fails but is still attached/worn.

Destroyed: At less than or equal to -10×HP the shield is totally physically destroyed and falls off the wearer.

NOTE: To be able to apply damage directly to this tracker, it requires the alias to be defined (in this case “shield”) and the "Use as Damage Type" box must be checked.

image

With this setup, you can drag a damage chat onto this character, and when the ADD pops up, select Apply To: "Large Shield". You'd have to override the DR to be the DR of the shield, and select the Injury Tolerance: Homogenous, then Apply Injury to damage the shield.

image

image

“On-the-Fly” formulas

This is my favorite feature! If you have played GURPS, then you know it can get very complex (if you let it). To help facilitate this complexity, the character sheet can parse text fields to create actionable buttons.

Huh? Sorry, too much corporate speak. Basically, you can embed text in your character sheet, Journal entries or even chat messages in the form “[something]” and if that something is one of the following formats, it will change the text into a button, and you can click it.

If that doesn’t interest you, read this testimonial:

To be honest, at first I didn't value OtF - I couldn't see the potential.
But man, what a game changer it is! Using it for everything, rule look-ups with direct roll options, roll-tables, chat-roll, in character sheets ...
Just made a brief rule summary for avalanches from DF. Every needed skill roll, with default (and soon alternate attribute based) just a click away. Including from where the avalanche comes, how hard it hits, how to resist... It's so f** great! I now use rules for my party which I would have never ever used before because it would have been too much fuzz to look it up.

Or watch the How To video: "On the Fly " formulas (and why you need to learn about them!)

NOTE: All of the formats are case insensitive.

What to insert into the character sheet, Journal Entry or chat message: What it will do:
[ST] Roll against the character's attribute. ST, IQ, DX, HT, WILL (or Will), PER (or Per).
[IQ-2 text] [Will-2 text] Roll against an attribute, applying the modifier “-2 text” to the roll. NOTE: There is no space between the attribute and the modifier.
[CR: 15 text] Control Roll vs 15, with optional text displayed in chat. NOTE: GCS automatically adds this as a note for Self Control.
[1d+3 text] An unopposed roll using the formula Xd[+/-Y], with optional text displayed in chat.
[1d-3! text] As above, with a minimum result of 1 (instead of 0). EX: [1d-3! Healing]
[2d cut] [2d (2) imp] [2dx3 (0.4) cr] [4d*5 burn] [2d-1 burn *Costs 1FP] If the text following the dice formula is one of the recognized GURPS damage types: burn, cor, cr, cut, fat, imp, pi-, pi, pi+, pi++, tox (or dmg), then it is considered a "Damage" roll (and displayed as such in the chat). May have a multiplier (x/X/*)M and/or an armor divisor (N). May add “*Costs XFP” to incur FP cost of X. No other text allowed. See Specials for more uses.
[S:name] Roll against the character's Skill or Spell that starts with “name”. The Skill/Spell name cannot contain spaces. E.g. [S:Brawl] will match “Brawling”, [S:First] will match “First Aid/TL3”. Skills are searched first, then Spells.
[S:name-2 text] As above, applying the modifier “-2 text” to the roll. NOTE: There is no space between the Skill/Spell name and the modifier.
[S:name-2 text] You can use any number of “*” to match Skill/Spell names. Remember, there is an implied “*” at the end. E.g. [S:F*Aid] will match “First Aid/TL3”
[S:”name with spaces”] Roll against the character's Skill or Spell that starts with “name with spaces”. Since the name is enclosed in double quotes (“), it can contain spaces.
[S:”name with spaces”+2 text] As above, applying the modifier “+2 text” to the roll. NOTE: There is no space between the Skill/Spell name and the modifier.
[Sk:name] [Sk:name-2 text] [Sk:name-2 text] [Sk:”name with spcs”] [Sk:”name with spaces”+2 text] As above, but ONLY looks through the list of Skills.
[Sp:name] [Sp:name-2 text] [Sp:name-2 text] [Sp:”name with spcs”] [Sp:”name with spaces”+2 text] As above, but ONLY looks through the list of Spells.
[A:name] [A:name-2 text] [A:n*a*m*e] [A:”name with spaces”] [A:”name with spaces”+2 text] As above, but for Attacks. Melee attacks are searched first, then Ranged. NOTE: The “Usage” is included in the search. EX: If you have Melee: Throwing Axe (Swung) Ranged: Throwing Axe (Thrown) [A:Throwing*Axe*Thrown] will roll against the Ranged attack.
[M:name] [M:name-2 text] [M:n*a*m*e] [M:”name with spaces”] [M:”name with spaces”+2 text] As above, but only for Melee Attacks. The list of Ranged attacks is not searched.
[R:name] [R:name-2 text] [R:n*a*m*e] [R:”name with spaces”] [R:”name with spaces”+2 text] As above, but only for Ranged Attacks. The list of Melee attacks is not searched.
[D:name] [D:name-2 text] [D:n*a*m*e] [D:”name with spaces”] [D:”name with spaces”+2 text] As above, but this rolls the Damage of the attack, not the attack skill.
[P:name] [P:name-2 text] [P:n*a*m*e] [P:”name with spaces”] [P:”name with spaces”+2 text] As above, but this rolls the Parry of the attack, not the attack skill.
[ST26] Roll against ST 26. Useful when describing powers that operate at a set level. No optional text or modifiers may be added.
[S:Skillname=15] Roll against Skillname at 15. As above, it is useful to show a roll for a particular Skill at a set number.
[+2 text] Add a global modifier described with text. EX: [-2 to hit], [+2 Mighty Blow], etc. NOTE: Modifiers can be clicked multiple times. EX: [-1 due to range]
[+2 dmg *Cost 1 FP] If a modifier ends with “*Costs ?FP”, then that amount of FP will be subtracted from the currently active character when the roll is made. Ex: [+2 dmg (Mighty Blow) *Costs 1FP]. See Specials for more uses.
[-4 to hit *Max:9] If a modifier end with “*Max:?”, then the target level is limited to “?”. EX: [-4 to hit (Charge Attack) *Max:9]
[PDF:B208] Create a link to open the Basic Set PDF to page 208. Uses PDFoundry
[SW cut] [THR-1 imp] [SW cut *Costs 2FP] Roll damage based on the character's basic swing and thrust. Must include one of the recognized GURPS damage types. May add “*Costs XFP” to incur FP cost of X. No other text allowed. See Specials for more uses.
[Dodge] Roll vs the active character’s Dodge value
[Dodge+1 text] Roll vs the active character’s Dodge value, applying the modifier “+1 text” to the roll. NOTE: There is no space in front of the modifier.
[Fright Check] Roll vs the active character’s Fright Check value
[Fright Check+1 text] Roll vs the active character’s Fright Check value, applying the modifier “+1 text” to the roll. NOTE: There is no space in front of the modifier.
[Vision] [Hearing] [Taste] [Touch] [Smell] Roll vs the active character’s value
[Vision+1 text] [Hearing+1 text] [Taste+1 text] [Touch+1 text] [Smell+1 text] Roll vs the active character’s value, applying the modifier “+1 text” to the roll. NOTE: There is no space in front of the modifier.
[Parry] [Block] Find the first melee weapon (that is equipped) with a Parry (or Block) level, and roll it.
[Parry:text] [Block:text] Find the first melee weapon with a Parry (or Block) level, that starts with text, and roll it. Used when the character is not wielding the first weapon in the list, and you are not using the “Equipped” status of equipment to indicate the active weapon.

On-the-Fly formulas

Besides all of the cool things that you can do (listed above), we have a few more tricks up our sleeve.

[!otf-formula] If you start the On-the-Fly formula with “!”, it will create a Blind Roll. If a player clicks on this button, it will show the results to the GM only. Note, this only works for “target” formulas (Attribute/Skill/Spell/Attack checks). It does not work for modifiers or damage rolls. EX: [!PER] Creates a Blindroll for Perception.
[+2 Aim & +1 Determined] Combine multiple modifiers into a single On-the-Fly formula (and therefore, a single button). You can combine unlimited numbers of modifiers, separated by &. EX: [+2 Aim & +1 Determined & +2 to hit (prone) & +1 lucky] NOTE: This only works for modifiers.
[S:Longsword (Based:IQ)] [S:Lockpicking (B:DX)] Make a skill roll based on another Attribute.
[S:Tactics IQ -6] [S:Acrobatics
[S:Search ? “You found it!”] [IQ ? “Idea!”, “No Clue”] [HT ? “Awake”: “Fall asleep”] “Conditional Text”: Based on the result of a Skill/Attribute/”Skill Tree” check, whisper some text to the user. The text IS NOT displayed in the button, so the user does not know what will be reported. If the test passes, the first string is whispered to the user. If the test fails, and there is an optional second string, it is whispered to the user.
[/chat command] You can execute a chat command. See Chat commands. [/:macro] is a useful way to execute a macro from an On-the-Fly button.
[?A:name] [?AD:name] [?AT:name] [?M:name] [?R:name] [?S:name] [?SK:name] [?SP:name] Return true if an element in the indicated lists exists with that name. Only useful with the /if chat command. A: Advantages and Attacks (Melee and Ranged) AD: Advantages AT: Attacks (Melee and Ranged) M: Melee R: Ranged S: Skills and Spells SK: Skills SP: Spells Examples: /if [?AD:Hard To Kill] [HT+2] [HT-2] /if [?Sk:Acrobatics] {/if [SK:Acrobatics] [Dodge+2] [Dodge -2]} {[Dodge]}
[“Some Label”otf-formula] Make the On-the-Fly button appear as “Some Label”. Extremely useful when using chat macros in On-the-Fly buttons. For example, for following buttons do the same thing: [S:Acrobatics | S:Judo | DX-4] ["Knockback check" S:Acrobatics | S:Judo | DX-4] But they appear as: image Or my new favorite, the Acrobatic Dodge formula: [/if [S:Acrobatics] [Dodge +2] /else [Dodge -2]] ["Acrobatic Dodge!" /if [S:Acrobatics] [Dodge +2] /else [Dodge -2]] Which display like: image
*Costs X FP *Costs X HP *Costs X trN *Costs X tr(name) Many On-the-Fly formulas can include a “*Costs “ description, and if so, that cost will be paid when the roll is made. We support FP & HP costs, as well as costs from a Resource Tracker. You can identify the Tracker with either its number N (0-3) or by including its name in ( ).

You can add On-the-Fly text in the title/name or notes section of an “item” (Attack, Equipment, Advantage, Skill, Spell, etc.), or the “user description” section (available in GCS) for advantages / disadvantages. You can also add On-the-Fly formulas to Journals entries, RollTables and Chat messages.

Some examples.
“[1d-3! Healing]” added to the notes section of the First Aid skill:
image

“[1d Healing Potion]” added to the notes section of the Healing Potion equipment:
image

IMHO, this is especially useful if you create characters with any of the “Powers as Magic” systems, Thaumatology: Sorcery, Divine Favor, etc. Here are some of the Advantages for a character that I created as a Hogwarts student, using a variation on Sorcery. The Advantages below “Signature Gear (Wand)” are spells:

image

All of the “actionable” things are highlighted in yellow or orange and can be clicked on.

On-the-Fly in Chat

As of v0.8.0 anyone can type an On-the-Fly formula into the chat window. Useful if you are trying to help a player make a particular roll.

For example, a player needs to roll against their First Aid skill, but is having trouble finding it on the character sheet. You can type:

image

In chat, and a chat message will appear with the text highlighted in yellow. If the player mouses over it, it will appear as a button

image

And if they press it, it will roll the Skill that starts with “First*Aid” on their character.

You can also whisper it to them:

image

becomes:

image

Direct execution of One-the-Fly formulas

As of v.0.8.3, you can directly “roll” an On-the-Fly formula to have it execute immediately. You can directly execute On-the-Fly formulas from chat, in a rolltable entry, or even a macro. EX:

/r \[*otf-formula*\]  
/roll \[*otf-formula*\]

Or, to roll them privately (so only you can see the results):

/pr \[*otf-formula*\]  
/private \[*otf-formula*\]

GM Send of On-the-Fly formulas

As of v0.8.1, the GM (only) can right mouse click on any clickable/rollable item in a character sheet or Journal entry to be sent as an On-the-Fly formula in a chat message. This can be very useful to help new players determine which roll to execute.

For example, if the GM opens a player’s character sheet and right mouse clicks on the “First Aid/TL3” skill button, this dialog will appear:

image

The GM can select to send that On-the-Fly formula to Everyone, Everyone as a Blind Roll, Just the Owner of that character or Just the Owner of that character as a Blind Roll.

NOTE: Any On-the-Fly formula can be sent. If you can click on it, you can send it.

How to make an On-the-Fly “Blind”

As mentioned in the last row of the On-the-Fly formula table above, you can convert many On-the-Fly formulas into a Blind Roll (which means the player will not see the result). Just prepend any On-the-Fly formula with “!”. For example, sending the chat message:

*It is dark, please click this button \[\!PER\]*

Which will appear in everyone’s chat log as:

image

And when the player clicks on that button, it will roll against their active character, and only show the results to the GM(s).

On-the-Fly Roll Tables

Because the chat is parsed for On-the-Fly formulas, you can now add On-the-Fly formulas to Roll Tables:

And the results:
image image

As of v0.8.5, you can include direct private rolls. For example, to create a table that rolls random Trap damage, you could do:

image

Which will automatically roll the damage privately so the GM can apply it.

How to Apply Damage

Damage calculation in GURPS can get rather complex. And honestly, it is just too much to type up, so please watch this video: how to apply damage.

image

Mook Generator (how to create NPCs)

So now you have your characters in the world… but no one to fight. You need to create a few “mooks” (NPCs). You can use the character creation tools (GCA/GCS), but for “throw away” or low level NPCs, that seems to be overkill. Instead, you can create the “mooks” directly in our Game Aid. Check out our “How to create NPCs” video. The GM can type “/mook” in the chat window to bring up the Mook Generator.

image

The GM can enter information, and press TAB to move to the next field. Once all of the information is entered, click “Test Mook” to verify that the data is correct, and if it is, the button will change to “Create Mook”. Click that to create the new Actor.

The Notes, Traits, Skills, Melee and Ranged values are parsed for On-the-Fly formulas.

Traits may be entered one per line, or separated by “;” or a combination of both.

Skills may be entered one per line, or separated by “,” or a combination of both.. Skills are parsed using the format:

<skill name>-<number>

The skill name may include any character except “-”. If you forget the “-”, or the value following the “-” is missing or not a number, an error will be added to the text when you try to create the mook.

Melee attacks must be entered one per line. Melee and ranged attacks are recognized if they follow 1 of 2 patterns:

Name (Skill #) damage-formula optional-attributes

Name (Skill Text) "damage text" optional-attributes

The name may include any character except “(“. As with Skills, if you do not follow the format, an error will be added to the text when you try to create the mook.

Melee attacks can also have the optional parameters, followed by “text”, separated by spaces. The “text” cannot contain spaces. The parameters are:

Reach/reach   
Usage/usage   
Parry/Parry   
ST/st  
Block/block

EX:
Knife (12) 1d-2 cut reach c,1 st 10 usage stab
Gaze (12) “Some non-rollable damage” reach c,1

NOTE: The “reach” value “c,1” does not contain a space.

The order after the damage formula does not matter.

Ranged attacks follow the same format as melee attacks. The can also include the optional parameters, followed by text, separated by spaces:

Acc/acc  
Rof/RoF/rof  
Rcl/rcl  
Usage/usage  
Range/range  
Shots/shots  
Bulk/bulk  
ST/st

Ex: Long Range Rifle (12) 2d+1 pi range 50/100 bulk -5 acc 3
Ex: Longbow (12) 1d+1 imp range x1/x2.5 bulk -3 acc 4

NOTE: The “range” value “50/100” does not contain a space, and can be of the form “xN” or “xN/xM” which indicates a ST based range.

Equipment follows the format:

<Item name>; X ; $Y ; Z lbs

Where <Item name> can contain spaces. X is the quantity of items. Y is the per-unit cost of the item, and Z is the weight in LBS. The format must include the “$” and “lbs” to be valid.

Equipment isn’t strictly necessary, since the melee and ranged attacks are described above, but some stat blocks include equipment, so we try to capture what we can.

Chat commands (edited as of Aug 23 2022)

We have added the following chat commands, available to everyone:

/help Show this list in the chat log.
!help Show this list in the chat log.
/help chatcommand ?chatcommand Show help information for the chat command.
/<damage formula> This is a shortcut to create a damage chat message. Examples: /2d cut /1d-3 pi+
/:<macroname> arguments Execute the macro named “macroname”. Arguments can be accessed inside the macro using the GURPS.chatargs variable. The macro can save its output to the variable GURPS.chatreturn to be used as a condition in an /if statement
/anim Play an animation. See /anim - The animation command
/clearmb Remove all modifiers from your Modifier Bucket
/fp <formula> /hp <formula> Modify the FP (or HP) of the currently selected character. The <formula> can be one of the following forms:
+X Add X to FP/HP. Will not exceed the max.
-X Subtract X from FP/HP.
=X Set FP/HP to X. Will not exceed the max
+Xd+/-Y Roll X dice (+ or - Y) and add to FP/HP. Will not exceed max.
-Xd+/-Y Roll X dice (+ or - Y) and subtract that from FP/HP
+Xd+/-Y! As above, but Xd+/-Y will add a minimum of 1
-Xd+/-Y! As above, but Xd+/-Y will subtract a minimum of 1
reset Reset the FP/HP back to its maximum
Examples: /hp +1d-3! Apply TL3 healing
/hp +1d Drink a TL3 healing potion
/fp reset Reset you FP after a night’s rest
/if [On-the-Fly] [OtF] If the first On-the-Fly succeeds, then execute the following OtF formula. The first formula must be some kind of “check”. Either an Attribute check, a Skill/Spell check, or a Self Control Roll. Examples: /if [A:Knife] [D:Knife] If the Knife attack roll succeeds, then roll the Damage for the Knife
/if [On-the-Fly] /chatcmd If the first On-the-Fly succeeds, then execute the following chat command. Examples: /if [S:First*Aid] /hp +1d-3! If the First Aid skill check succeeds, add 1d-3 (with a minimum of 1) HP to the current character /if [S:First*Aid] /ev hp +1d-3! If the First Aid skill check succeeds, add 1d-3 (with a minimum of 1) HP to every player character in the current scene
/if [On-the-Fly] TEXT If the first On-the-Fly succeeds, then display TEXT as a public message Examples: /if [S:Traps] You find a Trap! If the Traps skill check succeeds, create a public chat message: “You find a Trap!” *Note, this is similar to the “Conditional Text” feature of the On-theFly formulas, however this is a public message. The “Conditional Text” is a whisper to the owner of the character that made the roll.
/if ! [On-the-Fly] [OtF] /if ! [On-the-Fly] /chatcmd /if ! [On-the-Fly] TEXT Add a “!” before the On-theFly check will invert it. Examples: /if ! [DX] /st on prone If the DX check fails, set the status “prone” /if ! [IQ] No idea If the IQ check fails, print “No idea” in the chat log
/if [On-the-Fly] [OtF1] /else [OtF2]
As above, but if the first On-the-Fly succeeds, then execute the [OtF1] formula. If it fails, execute the [OtF2] formula Example: /if [S:Acrobatics] [Dodge +2 Acrobatics] /else [Dodge -2 Failed Acrobatics] If the Acrobatics check succeeds, then roll Dodge with +2. If it fails, then roll Dodge with -2
/if [On-the-Fly] /chatcommand1 /else [OtF2]
As above, but if the first On-the-Fly succeeds, then execute chatcommand1. If it fails, execute the [OtF2] formula.
/if [On-the-Fly] /chatcommand1 /else /chatcommand2
As above, but if the first On-the-Fly succeeds, then execute chatcommand1. If it fails, execute chatcommand2.
/if [On-the-Fly] [OtF1] /else /chatcommand2
As above, but if the first On-the-Fly succeeds, then execute the [OtF1] formula. If it fails, execute chatcommand2.
/if [/qty -1] … /if [/uses -1] … /if [/tr0 -1] … /if [/tr(ammo) -1] ... You can also execute these chat commands as part of the /if statement. So long as the quantity, uses, or identified tracker is zero or greater after the command, it will return true. For example: /if [qty -1 Healing Potion] /hp +1d This will attempt to reduce the QTY of the Healing Potion equipment, and if there was at least 1, it will heal the character using the /hp +1d command
/if [On-the-Fly] { thenclaus } { elseclause }
As of v0.9.4 you can use { } to surround the then and else clauses. This allows you to nest /if statements. These two statements work identically: /if [ST] You break down the door! /else Umph! Too hard /if [ST] {You break down the door!} {Umph! Too hard} Notice when using { }, you do not use /else. You can nest as many times as you like. For example:
/if [ST] {/if [S:Tra] {/if [IQ-2] {You found the Grail!} {Ah so close}} {Failed tracking}} {Failed ST}
Which will roll [ST], and if it fails shows "Failed ST". But if it succeeds, it rolls [S:Tra], and if that fails, it shows "Failed Tracking". But if it succeeds, it rolls [IQ-2] and then either shows "You found the Grail!" or "Ah so close". NOTE: We are not a compiler, so if you get it wrong, I have no idea what it will say. But if you get it right, it works 😉
/if [On-the-Fly] cs:{ critsuccessclaus } s:{ thenclaus } f:{ elseclause } cf:{ critfailureclause } /if [On-the-Fly] cs:{ critsuccessclaus } { thenclaus } { elseclause } cf:{ critfailureclause }
You can include critical success and critical failure checks by prepending ‘cs:’ (critical success) or ‘cf:’ (critical failure) in front of a “clause”.NOTE: The ‘s:’ (success) and ‘f:’ (failure) flags are optional.
The /IF command has 2 formats, original and "extra crispy".
The legacy format uses square brackets for the then/else clauses (and you must include /else if you have an elseOTF)
/if [OTF] [thenOTF] /else [elseOTF]

The new (extra crispy) format uses curly brackets and doesn't require the /else:
/if [OTF] {thenOTF} {elseOTF}

Which also supports checking critical success and failure checks:
/if [OTF] cs:{critOTF} {thenOTF} {elseOTF} cf:{cfOTF}

One HUGE enhancement of the new format is that you can have nested IF statements. So you can do things like:
/if [OTF] {/if [OTF] {thenOTF} {/if [OTF] {/if {OTF} {Hello}}}
And so long as you get the { } correct, it will work.

And finally if you want to execute 2 "commands" in a row, you can only do that with a chat command. You can't put
[+2 mightyblow] [D:Axe]
to add +2 to the modifier bucket and then roll the damage for the Axe.

However, you can execute:
/r [+2 mightly blow]\\/r [D:Axe]
Which executes 2 chat messages (separated by \\)
And you can turn any OTF into a chat command with:
/r [OTF]
/light Dim Bright Angle #rrggbb**:**LightIntensity Anim AnimSpd AnimIntensity /li off
Dim - Distance (in hexes) that Dim light extends. Bright - Distance (in hexes) that Bright light extends. Angle - Angle of light. Defaults to 360. #rrggbb - Hex representation of the color of light (defaults to white) LightIntensity = Light Intensity (0.1 to 1.0) Anim - name of built in Foundry animation (or enough to match name) AnimSpd - Speed of animation (1-10) AnimIntensity - Intensity of animation (1-10) Examples:
/li 6 2
/li 6 2 90
/li 2 1 #ff0000
/li 2 1 #ff0000:0.5
/li 4 1 torch
/li 8 8 fog
Type /light by itself to see the list of animation names.
/maneuver name_pattern /man name_pattern Select the first maneuver that matches name_pattern for the current character. You may use ‘*’ in the name pattern. For example: /man All Out*Double will select “All Out Attack (Double)”
/qty <formula> <eqt name> Find the first equipment where the name matches <eqt name> (wildcards “*” are permitted) and then apply <formula> to the quantity (Qty). Carried “Equipment” is searched first, then “Other Equipment”. The <formula> can be one of the following forms:
+X Add X to the quantity.
-X Subtract X from the quantity. The quantity cannot go below 0. If it would, a warning message is displayed.
=X Set quantity to X.

Example: /qty -1 Healing Potion
/qty <formula> o.<eqt name> /qty <formula> o:<eqt name> Prepending “o.” or “o:” before the equipment name will search the “Other Equipment” first, and then the Carried “Equipment”.
/qty <formula> <container>/<container>/<eqt name>
If you have the same equipment in multiple containers, you may specify the container name (or names), to select the specific one. For example, we have 2 Minor Healing Potions. One in the “Carried” equipment, in a “Pouch, Small”, and the second in the “Other” equipment, in a Bag, which is in a Backpack. ![][image56] /qty -1 Minor Will find the first Minor Healing Potion /qty -1 Pouch/*Heal Will find the first Minor Healing Potion /qty -1 Back/Bag/*Heal Will find the second Minor Healing Potion
/qty <formula> If the /qty command is executed in an On-the-Fly formula that is in the name or notes of the equipment, it will automatically detect the equipment name, and you do not need to add it to the command. For example, if this On-the-Fly formula was added to the notes of a Healing Potion equipment: [/if [/qty -1] /hp +1d] It would execute the /qty -1 command on the Healing Potion equipment, and if there was at least one, it will execute the /hp +1d command.
/ra N .ra N “Roll Against” N. Similar to the Discord chat macro. For example: /ra 13 Rolls 3d6 against a target value of 13. .ra 11 Rolls 3d6 against a target value of 11 The result appears as “Default”: image
/ra <Skillname>-N .ra <Skillname>-N /ra “<Skill name>”-N .ra “<Skill name>”-N /ra ‘<Skill name>’-N .ra ‘<Skill name>’-N (use single or double quotes around skill names with spaces in them) “Roll Against” a skill with level N. Note: skill is “fake”. It is not checked against the current character. It’s only purpose is to display in the chat as a Skill check. Similar to the Discord chat macro. For example: /ra Traps-13 Rolls 3d6 against a target value of 13. .ra Drive-11 Rolls 3d6 against a target value of 11. The result appears like this: image
/roll [On-the-Fly] /r [On-the-Fly] /r [On-the-Fly] 10 Execute the formula as if it was just clicked. Ex: /r [+2 to hit] will add a +2 modifier to the modifier bucket. If you want to “roll” the formula multiple times, follow with integer. Ex: /r [3d] 50 will roll 50 3d6s. /r [2d cut] 5 will roll 5 damage msgs
/rolltable <tablename> Execute a roll on tablename and display the result.
/private [On-the-Fly] /pr [On-the-Fly] /pr [On-the-Fly] 10 As above, but only show the results to yourself.
/select <name> /sel <name> Select an actor from the current scene. The name will appear above the Modifier bucket indicating the “current actor”. First try to match Actor names, and then if no match is found, search through Token names (useful when using the Token Mold module and the Token names may be different than the underlying Actor). . The name must be an exact match, but may include wildcards (“*”). For example, given 3 tokens in the current scene: Goblin Master Goblin 1 Goblin 2 /sel Goblin Matches no one /sel Gob*1 Will select Goblin 1 /sel *Master Will select Goblin Master
/select @self /sel @self Selects the first character that you own.
/select /sel Clears the current actor.
/showmbs Shows the modifier buckets for every player.
/slam Brings up the Slam calculator. If you have selected a target (using Foundry’s targeting system), it will automatically fill in the target’s HP.
/sr [On-the-Fly] Execute the formula on all of the selected tokens, as if it was just clicked. Ex: /sr [per] will roll Perception against all of the selected tokens. Most useful to the GM (since a player can usually only select a single token, their own)
/psr [On-the-Fly] As above, but the messages will be private
/sound <filename> /sound w0.5 <filename> /sound v2 <filename> /sound w0.5 v2 <filename> Play a sound. The filename must be the full path to the sound. If the ‘w’ parameter is present, wait that many seconds before starting the sound (useful for timing the sound with an animation). If the ‘v’ parameter is present, set the volume level.
/status list /st list Display a table of the Status Effects IDs and Names. This is necessary because some statuses have the same name, but different ID. For example: image The “Shocked” statuses all have the same name, but a different icon, and a different ID. Since the status match must be exact, you can’t use “Shocked” as a status… since there are 4 matches. Instead, to turn on level 3 “Shocked”, you would use: /st on shock3
/status toggle <status> /st t <status> Finds an Effect based on the name or ID (see /status list above) which must be an exact match, but may contain wildcards “*”, and then toggles it for all selected tokens. /status t shock2 Toggles the shock2:”Shocked” status /st toggle exhaust Does nothing, because it does not match a status /st t exhaust* Toggles the exhausted:”Fatigued” status
/status on <status> /st set <status> /st + <status> Turn on a status for all selected tokens. If it is already on, it stays on.
/status off <status> /st unset <status> /st - <status> Turn off a status for all selected tokens. If it is already off, it stays off.
/status clear /st clear Clears ALL Status Effects from the selected tokens.
/status <command> @self /st <command> @self Applies any of the above status commands, but affects the user’s own character, instead of the selected tokens. Most useful in a chat macro.
/status <command> **:**name /st <command> **:**name Applies any of the above status commands, but affects the token (or Actor) that matches ‘name’ (wildcards are allowed), instead of the selected tokens. Most useful in a chat macro.
/trackerN <formula> /trN <formula> /rtN <formula> /resourceN <formula> Apply the formula to the tracker #N, where N = 0, 1, 2 or 3. +X Add X to the tracker. Will not exceed the max (if one is defined). **-**X Subtract X from the tracker. =X Set FP/HP to X. This may exceed the max. reset Reset the tracker back to ‘max’, unless it is a “Damage Tracker”, in which case it will reset it back to 0.
/tracker(<name>) <formula> /tr(<name>) <formula> /rt(<name>) <formula> /resource(<name>) <formula> As above, but apply the formula to the tracker who’s name starts with <name>. For example: /tracker(Control) reset Will reset the “Control Points” tracker back to zero.
/uses <formula> <eqtname> Find the first equipment where the name matches <eqt name> (wildcards “*” are permitted) and then apply <formula> to the Uses column. Carried “Equipment” is searched first, then “Other Equipment”. The <formula> can be one of the following forms: +X Add X to the USES value. If the value exceeds MAXUSES, it will be limited to MAXUSES **-**X Subtract X from the USES value. The quantity cannot go below 0. =X Set quantity to X. NOTE: You can set USES to any single word or number. Example: /uses -1 Healing Potion /uses =Used Magic Beans
/uses <formula> o.<eqtname> /uses <formula> o:<eqtname> Prepending “o.” or “o:” before the equipment name will search the “Other Equipment” first, and then the Carried “Equipment”.
/uses <formula> <container>/<container>/<eqt name>
If you have the same equipment in multiple containers, you may specify the container name (or names), to select the specific one. For example, we have 2 Minor Healing Potions. One in the “Carried” equipment, in a “Pouch, Small”, and the second in the “Other” equipment, in a Bag, which is in a Backpack. image /uses -1 Minor Will find the first Minor Healing Potion /uses -1 Pouch/*Heal Will find the first Minor Healing Potion /uses -1 Back/Bag/*Heal Will find the second Minor Healing Potion
/w [<player name>] text /w @ text Send a whisper to the player (or the owner of the character) or the owners of the selected tokens (@).
/wait <milliseconds> Delay the execution by X milliseconds. Useful when creating animation “chains”. For example, display an attack animation, wait X milliseconds, and then display an explosion animation: /anim axeattack\\/wait 1500\\/anim bloodsplatter

/anim - The animation command

Yeah, sorry… just haven’t had the time to fill this in yet. Check out: How to use the /anim command

GM only chat commands:

/everyone hp reset /ev fp reset Reset FP or HP back to max for every player character in the current scene.
/everyone [On-the-Fly formula] /ev [On-the-Fly formula] Execute the On-theFly formula for every player character in the current scene. NOTE: You cannot use Modifier, Chat or PDF On-the-Fly formulas. For example: /ev [1d burn] /ev [!Per]
/everyone fp <formula> /ev hp <formula> Modify the FP (or HP) of every player character in the current scene. The <formula> can be one of the following forms: +X Add X to FP/HP. Will not exceed the max. **-**X Subtract X from FP/HP. =X Set FP/HP to X. Will not exceed the max +Xd+/-Y Roll X dice (+ or - Y) and add to FP/HP. Will not exceed max. -Xd+/-Y Roll X dice (+ or - Y) and subtract that from FP/HP +Xd+/-Y! As above, but Xd+/-Y will add a minimum of 1 -Xd+/-Y! As above, but Xd+/-Y will subtract a minimum of 1 reset Reset the FP/HP back to its maximum Examples: /ev hp +1d-3! Apply TL3 healing to everyone /ev hp +1d Everyone drinks a TL3 healing potion /ev fp reset Everyone’s FP is reset after a night’s rest
/frightcheck /fc Open the Fright Check calculator
/mook Open the Mook Generator (for NPC creation)
/reimport Force all Player owned characters to import. Which will either re-import for the special import location or bring up the Import dialog.
/remote [On-the-Fly formula] /rem [On-the-Fly formula] Send the On-the-Fly formula to every connected Non-GM client, and execute it on the client machine (using the client’s modifier bucket). For example: /rem [!Per]
/remote [OtF] <player names> /rem [OtF] <player names> Execute the On-the-Fly formula on the computer of each connected player in <player names> (GM players are ignored). If a player name contains a space, it must be surrounded by single or double quotes.
/sendmb Send your modifier bucket to every player
/sendmb <playernames> Send your modifier bucket to <playernames>. If a player name contains a space, it must be surrounded by single or double quotes.
/sendmb [On-the-Fly modifier] Set every player’s modifier bucket equal to the On-the-Fly modifier. It must be a single OtF modifier formula, but the formula may include multiple bonuses separated by &. For example: /sendmb [+2 luck & +1 magic +3 because I said so!]
/sendmb [OtF mod] <playernames> As above, but only send the OtF modifier formula to the named players. If a player name contains a space, it must be surrounded by single or double quotes.
/show <attributes> /show <skill names> /show move /show speed /show fright Show those attributes (or skill levels) for all of the Actors in the current scene. Very useful for the GM to find who has the best PER value (or Stealth, etc.). The values reported to the chat log are clickable, so you can click on each button to roll that attribute (or skill) for that particular character. You may enter multiple values on a single /show command: /show per /show per stealth /show move per fright acrobatics stealth image

Multiple chat commands on a single line

You can put multiple chat commands on a single line by using \\ to separate the commands. The \\ acts like a <newline>.

While this isn’t important for a chat macro, it can be very useful if you are embedding chat commands in an On-the-Fly button.

For example:

\[/sendmb \[-2 Darkness\]\\\\Please roll \[\!PER\]\]

Would create a button, that when clicked would send the -2 modifier to all of the users, and then show:

image

To everyone in the chat log.

Some example chat macros

The party enters a dark room and you want them to make a Blind roll vs their perception, at a -4 due to the dim light. Create a “chat” macro like this:

/clearmb  
/r \[-4 due to dim lighting\]  
/sendmb  
You have entered a dark room, please click \[\!PER\]

And it will display in their chat log as:

image

And each player’s Modifier Bucket will look like:

image

Of course, with the newer commands, the same thing can be accomplished with:

/sendmb \[-4 due to dim lighting\]  
You have entered a dark room, please click \[\!PER\]

Writing macros using Javascript

We offer a few utility functions to make it easier to get to the various components of the Actor.
Note these functions will search through the lists (even if they are in containers).

To find a skill or spell

let skillname = "Skill*name and can use * as a wildcard"
let skill = GURPS.findSkillSpell(actor, skillname)
console.log(skill.level)

If you do not want to search spells as well, you can use:

GURPS.findSkillSpell(actor, skillname, true)

or spells only:

GURPS.findSkillSpell(actor, skillname, false, true)

To find a melee or ranged attack

Let attackname = “Name and can use * as a wildcards”
let attack = findAttack(actor, attackname)

if you only want to check melee:

let attack = findAttack(actor, attackname, true, false)

if you only want to check ranged:

let attack = findAttack(actor, attackname, false, true)

And YES, I know the parameter works differently than findSkillSpell... sorry, that's what happens when a system evolves over time.

To find an Advantage or Disadvantage

Let traitname = “Name, and can use * as a wildcards”
let ad = GURPS.findAdDisad(actor, traitname)

F.A.Q / “How To”

How do I roll for initiative?

When I roll for initiative, I get this weird number that is greater than basic speed.

The Game Aid uses the GURPS turn order to determine who goes first in a round. The GM can roll for initiative using the combat tracker window. Click the circled button to roll initiative for everyone.

image

The character with the highest basic speed goes first, then if tied, the character with the highest DX, and then finally, a 1d6 roll. This is evaluated from this formula: "@basicspeed.value + (@attributes.DX.value / 10000) + (1d6 / 100000)". Which combines all of those tests into a single number. Example:

Basic Speed: 6.5,  DX: 13,  1d6: 4  \=\>  6.50134  
Basic Speed: 5.25,  DX: 11,  1d6: 6  \=\>  5.25116  
Basic Speed: 6.0,  DX: 12,  1d6: 1  \=\>  6.00121

As a player, how do I roll a Perception check?

Look on your character sheet for an attribute labeled “Perception” (or “Per”) and click the number highlighted in yellow, which may look something like this: image NOTE: This attribute is not displayed on the Simplified character sheet. Also, your GM might send you a chat message that looks like:

image

If you move your mouse over it, it will become a button that you can press to roll against your character’s Perception (PER) value.

image

How do I request a Perception roll from my players?

As the GM, you have a few options.

1. You can ask them to click the PER attribute on their characters sheets. NOTE: The Simplified character sheet does not have a PER attribute.

2. You can right click on the PER attribute of ANY of the other character sheets, and select “To Everyone” when the following dialog appears:

image

This will create a “button” in everyone’s chat log:

image

And when they hover their mouse over it, it will appear as a button which they can click:

image

If you select “Blindroll to Everyone” it will display this in everyone’s chat log:

image

And if they click on it, it will whisper the results to the GM and they will not be able to see the results (i.e. “Blind”).

3. You can send a chat message and include the On-the-Fly formula [PER] (or [Per]). For example:

*You have just entered a new room, please click this button \[PER\]*

Which will appear in everyone’s chat log as:

image

3a. You can send a chat message and include the On-the-Fly formula [**!PER] (or [!**Per]). This will request a Blind Roll from the players (a roll where they do not see the result). For example:

*It is dark, please click this button \[\!PER\]*

Which will appear in everyone’s chat log as:

image

4. You can have your players use the Foundry chat roll function, with the following formula:

/roll [email protected]
/r [email protected]

Which rolls 3d6 and computes the margin of success versus the character’s PER (perception) value. However, doing so will use Foundry’s roll chat message (which doesn’t look as good as ours IMHO).
Don’t do this. Instead your players can roll Perception for themselves by entering the following command into their own chat:

/roll [PER]
or
/r [Per]

What data paths can I use when building a Foundry roll?

As per https://foundryvtt.com/article/dice/ you can add “attributes” from your character to a roll formula. We support the following data paths:

attributes.ST.value  
attributes.DX.value  
attributes.IQ.value  
attributes.HT.value  
attributes.WILL.value  
attributes.PER.value  
HP.value  
FP.value  
dodge.value  

basicmove.value
basicspeed.value
parry
frightcheck
hearing
tastesmell
vision
touch
gmod - this is the “global modifier”, the number in the modifier bucket
gmodc - as above, but this will clear the modifier once it is used
As of v0.8.11:
currentmove - based on your encumbrance
currentdodge - based on your encumbrance
equippedparry - the parry value of the first equipped weapon
equippedblock - the block value of the first equipped “weapon” (shield)

NOTE: You will probably only need to know these values if you are using a module (like Token Tooltip Alt).

How do I request a “Blind” Perception roll? I don’t want my players to know if they have succeeded

As the GM, you can:
1. Right click on the PER attribute of ANY of the other character sheets, and select “Blindroll to Everyone” when the following dialog appears:

image

This will create a “button” in everyone’s chat log:

image

2. Send a chat message and include the On-the-Fly formula [!PER] (or [!Per]). For example:

*Your skin starts to crawl as you enter the hallway \[\!PER\]*

Which will appear as:

image

3. Have your players use the Foundry chat blind roll function, with the following formula:

/blindroll [email protected]
/br [email protected]

Which rolls 3d6 and computes the margin of success versus the character’s PER (perception) value. However, doing so will use Foundry’s roll chat message (which doesn’t look as good as ours IMHO).
Don’t do this. Instead your players can Blind roll Perception for themselves by entering the following command into their own chat:

/roll [!PER] note the “!”
or
/r [!Per]

How do I ask a specific player for a roll / blindroll?

As the GM, you can:
1. Open the player’s character sheet and right click on the rollable (yellow) or modifier (orange) that you want to send. The “Send Formula” dialog will appear:

image

With options to send to this specific player (as a whisper) as a roll or a blindroll.

2. Send a whisper to the player and include the appropriate On-the-Fly formula. For example:

*/whisper Chris Please roll \[Dodge\] to avoid the falling rock*

Which will appear in Chris’s chat log as:

image

~~3\. Have the player use the Foundry chat roll function~~

/roll [email protected]
/r [email protected]

Which rolls 3d6 and computes the margin of success versus the character’s PER (perception) value. However, doing so will use Foundry’s roll chat message (which doesn’t look as good as ours IMHO).
Don’t do this. Instead your players can roll Dodge for themselves by entering the following command into their own chat:

/roll [DODGE]
or
/r [Dodge]

Can I apply a global modifier to everyone’s next roll?

Yes.
1. You can create/build up the modifier in your bucket, and then use the “Send your Modifier Bucket” buttons on the Modifier tooltip:

image

2. You can send the modifier in the chat, and the players can click on it if necessary. Of course, this doesn’t automatically apply it to their bucket, but it does make it available for everyone. For example, you can send the chat message:

	*Everyone who wants to attack must include this modifier: \[-2 due to poor footing\]*  
	  
Which will appear in everyone’s chat log as:

image

And the players can click on it as needed.

3. You can create a chat macro to build up a set of modifiers and send them to everyone. Create a “chat” macro (not a “script” macro), and enter:

/clearmb
/roll [-2 due to poor footing]
/sendmb

This will clear your own Modifier Bucket, execute the On-the-Fly formula “-2 due to poor footing” which will add it to your Modifier Bucket, and then send it to everyone.

Of course, with the newer chat commands, the same thing can be accomplished with:

/sendmb \[-2 due to poor footing\]

How can I roll against a RollTable using the Modifier Bucket in a “script” macro?

To roll against the “Critical Head Blow” table, create a “script” macro (not a “chat macro”) and enter:

let r \= new Roll("3d6 \+ @mod", { mod: GURPS.ModifierBucket.currentSum()})  

game.tables.getName("Critical Head Blow").draw({roll:r})

And if you want to clear the Modifier Bucket after the roll, just add:

GURPS.ModifierBucket.clear()

Can I add the Modifier Bucket to the RollTable formula (without making a macro)? (e.g. Reaction tables)

Yes! You can add "+ @gmod" to add in the global modifier (what is showing in the modifier bucket), or "+ @gmodc" which will add the modifier to the table roll, and then clear it.

image

Modules

Here is a list of highly recommended modules:

Expander
GM Notes
Ownership Viewer
Pings

And a list of User Recommended Modules

We have built a configuration for Token Tooltip Alt. The GMs and owners will see the full layout, Players will only see a text representation of the NPC’s status.

We set it up so that it displays:
Current HP/Max HP
Current FP/Max FP
Current Move
Dodge / Parry / Block **
Perception

** If the character does not have block, then it is displayed as “D: <dodge>/P:<parry>”

And Players looking at NPCs, will only see a text message with some indication of health. The NPC heart is black for hostile, blue(purple?) for neutral and green for friendly.

The NPC text is
HP < -HP MAX: "Critically wounded"
HP <= 0 : "Severely wounded"
HP <= 1/3 HP MAX: "Wounded"
FP < -FP MAX: "Unconscious"
FP <= 0 : "Barely Conscious"
FP <= 1/3 FP MAX: "Tired"

If neither wounded or tired, then it will show "OK". So an NPC that is 1/2 HP and 1/2 FP will still show as "OK" (since the Players wouldn't really know... not in the heart of battle, IMHO)

Of course you can change this yourself... but I warn you... editing the config is dangerous... one small error and nothing displays. No error, no nothing. I spent a lot of time trying to get this to work... just so all of you wouldn't have to 😁

image

You can download the configuration (token-tooltip-alt-config.txt) from this ZIP file. You have to copy the text and paste it into Token Tooltip Alt’s Tooltip Manager by using the “Import” button:

image

And make certain that “Custom” is checked!

Dice so Nice!

https://foundryvtt.com/packages/dice-so-nice/
This has nothing to do with this game aid. But it is SUCH A NEAT module, you have to install it. The game just loses something if you can’t see dice rolling across the table. Trust me. It is definitely worth the 10 seconds it takes to install and enable.

Chat Portrait

Chat Portrait | Foundry Virtual Tabletop
Again, nothing to do with our game aid, but it adds such a nice feature to the chat log:

image

Is it an Alpha (maybe a Beta?)!

We have come a long way. The system is playable, but there are still things we want to add. We try to keep a running list of the things we are working on or the things we have completed, below in TO DO. What is “on the list”?. Feel free to comment below if you have a feature you would like added, or you find a bug. Or make an issue here: https://github.com/crnormand/gurps/issues

Chrome/Chromium-based vs Firefox

We have found that the user interface works fine in Chrome. Unfortunately, there may be some layout issues with Firefox, and we don’t have the time (or the skills) to figure out why. So for now, we HIGHLY recommend having all of your clients connect using Chrome.

(That said, I’ve had a good experience using the MS Edge browser, which is based on Google’s Chrome, even on Macintosh. — Nick)

Form vs Function

Or put another way, “looks good” vs “works good”. This is still a very young project, and as such, we have focused more on the “works good” than “looks good”. If you notice a visual flaw, feel free to add it as a comment below or add it as an issue here: https://github.com/crnormand/gurps/issues, but remember, we are still working on getting everything working.

TO DO. What is “on the list”?

My list of TODO items grows constantly. Once I learn how to do something in Foundry, it makes me think of a new feature I might add. I am constantly adding to this list… seriously… you might be reading this right now, and I might be editing it. ;-)

My current TODO list, in no particular order (and this is my “dev speak”, so if it doesn’t mean anything to you, don’t take this personally). Items with a check mark have been completed… but if you think of something, feel free to add a comment.

  • Localization (yes, I know I was supposed to be doing this all along).
    We have some… but do we have enough?
  • Add 3d6 roll button on desktop
  • Fix missing b378 message in damage chat
  • Have character save import filename to reimport quickly (NOT POSSIBLE due to Javascript security)
  • Bad PDF links go to SJG website
  • Ability for certain modifiers to stack/add to themselves. “[-1 due to range] per hex” would sum up instead of duplicate.
  • Critical success/failure
  • Allow limited editing of items (for temporary effects)
  • Allow drag and drop from “other” equipment to “carried”, for GCA import (everything is other)
  • Disable Parry of “No”. It shouldn’t be able to roll.
  • Add a status of “recipient of deceptive/telegraphic attack” to let user know they have +/- to def roll
  • Fix ModifierBucket z-index issue. Need to create 2 applications.. One hidden (z-index 999)
  • Fix Roll chat messages to use template and set type to ROLL for module compatibility
  • Map status effects to modifiers. Create GURPS specific statuses (partially complete v0.6.5)
  • Fix Initiative to use GURPS Basic Speed (then DX, then 1d6 in case of ties?) per RAW
  • Get the Modifier Bucket to actually display the current (local) global modifier.
  • Calculate the range modifier when targeting
  • Apply Range modifier to global Modifier stack.
  • Allow dragging a "damage" chat message to a character sheet (or entry in the combat tracker) to apply damage.
    Add the option to change a +4 Damage bonus to 1d
  • When we drop damage, display a dialog with combat options (subtract DR per location, apply wound modifiers, etc.)
  • Allow Items to be added as Equipment (so some can come from import, and some from the Items list).
  • Build a dialog for Modifier Bucket to edit current list, and display list of common modifiers
  • Allow GM to "send" current modifier stack to another player
  • Allow GM to see the individual player's modifier buckets
  • Investigate "status effects" and define (or adapt to ) standard GURPS statuses (Stunned, Shock, etc.) and see how they can add to the Modifier bucket.
  • Build a combat focused character sheet
  • Open a specialized combat-focused character sheet on the currently selected item in the combat tracker. Can we embed it in the tracker (and/or should we try)? In the Fantasy Ground combat tracker, you could expand an entry and it would show melee/ranged attacks and general defense options. I am wondering if we built yet-another character sheet, mainly for NPCs that only shows attributes (and not points), current level of encumbrance, dodge. Current HP/FP (and possible other resources, ER, CP, etc.), Melee/Ranged attacks. Skill names and level, and a compressed list of Advantage names. And (editable) character Notes, so the GM can add On-the-Fly formulas.
  • Support other character sheets. Simplified/Gencon
  • “Old School” BasicSet character sheet
  • GCA Phoenix style character sheet (need outside help to get this done)
  • Add button to quick cycle through character sheets
  • Build Full GCS export template
  • Build better GCA export VBScript
  • Make character sheet “macro-able”, so that players can build script macros
  • Enhance GCS output to support hierarchy of Advantages, Skills and Spells (containership)
  • Saved/named Buckets or Bucket presets (regular collections of well used modifiers) to macrobar
  • Remove +0 for range from Ruler
  • Add UP/DOWN buttons to FP / HP title bar to quickly change value
  • Extra effort. [+1 Feverish Defense *Cost 1FP] / [-4 to hit *Max:9] “Charge Attack”
  • [Heroic Charge *Cost 1FP] ? NO bonus, but applies cost if used
  • Would it be possible to tie GCS export/FVTT import into a single process? Foundry requests directly from running instance of GCS.
  • Parse chat messages for “gurpslinks” (allows On-the-Fly text in rollable tables)
  • GM sends “just roll under this” /w playername [ST12] or [Stealth - 5].
  • Add error reporting to the import process. Send a chat message concerning the success or failure of a character import (so the player doesn’t have to know how to bring up the debugger). Partially works. A bad parse error in the XML is hidden.
  • Last skill or advantage in list display at the bottom of the area (especially noticeable if sizes very different)
  • System settings:
    • Which RANGE rules to use (BasicSet / Monster Hunters)
    • Display Change Log
    • Setting to change Simplified sheet hit locations (1 vs all)
    • Organize system settings (currently first added, first displayed)
    • Tooltip over DR locations showing equipment
    • System setting to turn off mod tool tip and range modifier
  • Change game direction/rotation so that it doesn’t rotate the icon, but instead rotates an arrow or better yet, a colored border (indicating front, side and back hexes) kind of like Custom GURPS Token Hex for VTTs
    Use https://foundryvtt.com/packages/about-face/ (it does this already)
  • Add “Combat Notes” display under Melee/Ranged (discussed in issue #327)
  • Add [Dodge] to OtF formulas
  • Add Attacks (melee/ranged) to OtF formulas
  • Revamp OtF formula parsing to allow quotes to enclose spaces
  • Create Blind Roll mechanic for OtF formulas
  • Drag and drop visual/sound effects from a palette (compendium) to an “item” on a character sheet and if the user has selected a target, and a roll on that “item” succeeds, display the effect on the target.
  • NPC import sheet (allows GM to quickly create low level npcs)
  • Build “stat block” free form text importer to easily create NPCs/monsters
  • GCS Conditional Modifiers?
  • Add a GM note to character sheets that only the GM can edit and see https://foundryvtt.com/packages/gm-notes/
  • Check permissions for editing/viewing sheets.
  • From a user: I would like to create the following: I draw a polygon and with the help of the Multilevel Token Mod execute a macro whenever a token moves on that polygon. This macro should return a blind GM roll in the chat with the result of a Vision (Hearing, Taste Smell, etc. ) roll. It would be great if that chat entry looked like the ones you already have in place for Success Rolls [Roll vs Vision (12) 11 Success! made it by 1]. But since I am not a coder I have no idea how to do that. Best I have come up so far is /br 3d6ms<=(@vision). I think it would help if we rewrite gurps.js-onRoll() to use a template instead of concatenate strings.
    This can be accomplished by “rolling” On-the-Fly formulas. EX: /r [!Vision]
  • Permit the user to define hit locations not supported in GCS, specifically the humanoid hit-locations from Low Tech. I was able to create them using a library for Low Tech Instant Armour but was not able to tell GCS to provide DR for locations not defined in GCS. May not be possible. @JamesH
  • Mild pain (-1) status effect
  • Apply Modifier bucket to normal rolls “/r” or roll tables (gmod & gmodc)
  • Add tabs to combat sheet for Ads, Skills, Spells & Equipment
  • Support for Conditional Injury (Pyramid 120)
  • Collapsible chat messages (to “hide” the damage result calculations)
  • Support worlds with different G-force constants, especially for encumbrance and move/speed.
    I can see G affecting encumbrance. And we could recalc which level they are at, based on the total equipment weight. But move/speed are calculated from DX and HT, I don’t see how they are affected by G.
  • Add Parry and Block to On-the-Fly (search through melee). [Parry:2 hand]
  • Right click to change qty or delete equipment
    • Add a visual control (button) to do so as well.
  • Hold SHIFT key for private roll (GM)
  • Added @gmod, @gmodc to roll macros
  • Sync PC encumbrance, weapon parry/block with NPC parry/block, damage dodge
  • Expand On-the-Fly to handle arbitrary targeted rolls (So GM can make players roll against a skill they do not own). EX: [S:skill:10] and a default? [S:skill(DX-4)]
  • Chat functions for falling damage, throwing damage, etc. Based on current character’s ST/HP/HT?
  • Chat functions for clearing modifier bucket, send bucket to player name, send to everyone
  • Provide in-Foundry help for chat syntax for rolls, modifiers, etc… I wonder if we can programmatically build a Journal entry with all of this information in it?
    • Provide a point and click solution as well. Right now this feels like the Unix of game systems -- i.e., super powerful as long as you are comfortable with the command line.
  • Ammo counter? Tied to equipment? # Shots: dec 1, all, reload
  • Export GCS image. Is there a GCA image? Yes, there is a filename.
  • Lost limb status (missing arm, leg, head ;-)
  • Figure out all the magic mouse combinations and provide visual controls or indicators so the users know that they are there, and what they do. (I for one will never remember what is left-clickable, right-clickable, shift-clickable, ctrl-clickable,
  • nor will I remember any of the special chat messages. (type /help)
  • /roll [otf] be able to directly trigger an OtF formula instead of just displaying it
  • Journal entries parse OtF
  • Add support for the Chat Portrait module. Currently does not show on ‘targeted’ or ‘damage’ messages.
  • Add ability to track other transient values: Control Points, Energy Reserve, etc. “additionalresources”.
    For resources/consumables (HP, FP, ER, CP, ammo, etc…) create a GUI control with increment/decrement + reset (reset the current count to the max) and other functionality (for example typing in a delta, like “+5” to add 5 points).
  • Would it be possible to add the option for vehicle actors into the GURPS system? My particular interest is in setting up space ships using GURPS Spaceships 4e.
  • A way to push a specific amount of damage, HP or FP, to players. Ex: “Everyone loses 2 FP”
  • A way to reset HP/FP for everyone
  • Add *Costs ?FP to damage OtF [2d burn *Costs 2FP]
  • Get current parry/block based on equipped
  • Open up Damage API so script macros can make/apply damage.
  • Add copy to clipboard on Send to GM. Can’t copy to clipboard, but can send to input window
  • Allow X dmg (no dice roll)
  • [S:Merchant<S:Streetwise<S:"Current Affairs"] where Streetwise and Current Affairs get rolled as complementary skills and automatically apply +1 or -1 to the Merchant roll
  • Make hover headers for Mook Generator with format info from User Guide.
  • Have Fright Check (and reaction rolls) display an OtF mod [+2 due to fright check] so GM can use that to roll against the Fright Check table (or reaction table)
  • Also, is it also possible for the dice bucket modifier to be sent to everyone? So it should have something like [Everyone] button, besides individual players.
  • Allow GMs to customize the modifier bucket (almost there now! V0.9.2 added custom Journal entries)
  • Chat command to clear LastActor
  • Chat command to set last actor
  • Chat command to roll on table using gmod
  • /hp /fp allow dice roll as well
  • Skill check @Costs FP (for spell casts)
  • Option to not receive notification after sending modifier buckets to players. Or get it on notification window.
  • Also option to reset the bucket after sending.
  • DOC: Add Mook Generate stat block format
  • DOC: Drag and drop OtF
  • DOC: System settings
  • DOC: Pen-paper -> VTT (not so different)
  • Refactor ‘mapped’ and ‘attribute’ OTF together (so mapped can be used in linked skills [S:Traps|Vision-5]
  • Show last actor (to GM) over modifier bucket (system setting?)
  • Allow doubleclick editing on NpcSheet
  • How to open window for equipment.externallink

Disclaimer ;-)

Remember, this game aid is in the Beta stage. Be gentle. Join us on Discord in the foundry-gga-vtt channel with suggestions / advice / questions / complaints.

If you like our work, please support us on GitHub https://github.com/sponsors/crnormand or
support us on Ko-Fi
image

Legal

The material presented here is my original creation, intended for use with the GURPS system from Steve Jackson Games. This material is not official and is not endorsed by Steve Jackson Games.

GURPS is a trademark of Steve Jackson Games, and its rules and art are copyrighted by Steve Jackson Games. All rights are reserved by Steve Jackson Games. This game aid is the original creation of Chris Normand/Nose66 and is released for free distribution, and not for resale, under the permissions granted in the Steve Jackson Games Online Policy

This game system DOES NOT provide information contained in paid publications. It is only intended to allow people to play GURPS online using their GURPS books/PDFs.

GCS is copyrighted 1998-2025 by Richard A. Wilkes All rights reserved gurpscharactersheet.com

⚠️ **GitHub.com Fallback** ⚠️