XCore Ruleset

The XCore ruleset is a generic table top designed to make it easy for you to play games that dont have a specific ruleset. This is a free community ruleset. We hope that you find the ruleset useful and would love to hear feedback on what works well and what could be done better.

Getting Started

Subscribe to the XCore ruleset on the Fantasy Grounds Forge. You can find it here: https://forge.fantasygrounds.com/crafter/3/view-profile along with many other great rulesets. Once subscribed you will need to Update your Fantasy Grounds Unity client – use the Check For Updates button even if it is not highlighted.

Once updated you will be able to create a new Campaign by selecting the XCore ruleset.

Creating a New Character


Expand Player on the Campaign Tools on the left hand side of the screen, and then click [1] Characters. Click on the [2] Add button to create a new blank Character. Click on [3] <Name> to open the new Character up.

Core Stats

This is a Generic character sheet. It cant know exactly how you will need it to look and work for your game system so it uses many generic, editable and customizable fields. 

At the top of the screen we have the Core Stats, some of which will be common to most systems. 

[1] Health (can be renamed) is a measure of the characters total Health or HP. This is synced to the Combat Tracker.
[2] Wounds (can be renamed) is a measure of the current injuries/wounds/damage the character has sustained currently. This is synced to the Combat Tracker. 
[3] n1 (and n2) (can be renamed) is available to you to store data that makes sense to your game – eg Armor/AC/Defence/DamageReduction/etc. This is synced to the Combat Tracker. 
Generally we recommend that if you need AC put it in n1 and if you need DR put it in n2
[4] Init (can be renamed) is used to determine the Combat Tracker order. Currently Order is always highest first. This is synced to the Combat Tracker.
[5] You can click the cog icon to edit the dice string that will be used to roll initiative. If you system uses static initiatives just enter that value in the number field and do not enter a dice string. 

Race and Class

You can create Race and Class entries voa the Campaign Tool. Race options only report at time of assignment. If your game uses Race as Class (like BX D&D) then you would also create the Race as a class. Most Class options are on the Abilities tab where you can setup the progressions for each level.

[1] Assign a Class by drag and dropping a Class on to the string field CLASS. This will report the information that applies for that class and level. To level up drag the class to the sheet again. There is no support for Multiclassing.

[2] Assign a Race by drag and dropping a Race on to the string field RACE. This will report the information that applies for that Race.

The progressions and other info is reported to the Chat window and is also recorded on the Inventory Tab.

Neither of these options has an undo.

Core Stats – Auto Calc

The Core Stats Health, n1 and n2 can now be auto calculated using the shortcodes and references by clicking the [1] cog icon to open the [2] Calculation field. These fields support all the same calculation shortcodes as rolls do. Once you have edited a Calculation field you should click the [4] Master Calculation Cog to update the whole page. As these are processed in order sometimes it may be effective to run it twice to pick up all the required changes.

The [3] Init field is different. This will take the same calculation strings or dice rolls but will only update when you double click the Init field. Your game system may require this once per round or once per combat or it may even have static Init values.

Size, Reach, Speed

These stats [1][2][3] will Sync to the Combat Tracker. They can be renamed to suit your campaign but they will always be used by Fantasy Grounds to show your token size and reach on maps. Speed is sync’d but has no other mechanical effect. 

[4] These can be accessed on the Combat Tracked by clicking the Spacing icon. 

Combat Tracker Options

The GM Combat Tracker view shows Health, Wounds, N1, N2 and Order. By default the Player view now shows Wounds and Order. There is an Option to Hide Wounds. Changing this setting will only take effect on reloading the campaign.

Combat Tracker Options


[1] There are 5 Rolls panels on the character sheet. 4 of them will let you add rolls directly while the Weapons panel creates Rolls based on Inventory.
[2] The arrow icons can be used to collapse/hide roll panels that are not needed or just to declutter the sheet.
[3] The panels have default names which can be edited. 

Rolls Basics

[1] Add new Rolls or switch to Delete mode.
[2] Name the Roll. This name is important – it is used in the Rolls chat description, it is also used to be able to reference other Roll stats when building roll strings. You should not have two Rolls on the character sheet with the same name. You can have “spaces” in the name but avoid special characters – especially any math operators.
Each roll has 5 sets of fields associated with it. There is a Label, Value, Roll String Calculation String (optional) and Hide (default off).
[3] The label field will show when you hover over the number on the Character sheet and some rolls will also append the Label to the roll description in chat.
[4] The value field can be used as a simple reference – “you have 14 Agility”, and it can be referenced by roll strings.
[5] The Roll String will be used to do all the magic. We will address this in more detail later on. It also sets the widget/icon on the Value field on the character sheet.
[6] The Roll String has a number of different valid syntaxes which will be detailed later.
[7] Some rolls make sense to reference a Combat target (eg an Attack roll vs Hairy Ogre or a Damage roll vs Cultist) while other rolls dont make sense to reference a possible Combat Tracker target when rolling. If you tick this box then the Combat Tracker target will be listed in the chat output.
[8] Hide Value on Character Sheet if ticked.
[9] Set the Sort order – default is Alphabetical, the other options are order of creation and by Level, an optional field in the Roll that can also be used for storing Spell levels.

Rolls Example 1

[1] The reference to [a] refers to the first Value on this Roll, valid values are [a], [b], [c], [d] and [e] referring to the first, second, third, fourth and fifth values respectively.
[2][3] This reference to [Strength|b] refers to a Roll called Strength and its second value. It doesnt matter what Panel the referenced Roll is in, so long as it is on the same Character sheet.

Rolls Example 2

[1] The Roll has a unique (for that Character or NPC only – they do not need to be universally unique. You can have duplicate names if you never need to reference that roll value from another roll) name. Additionally I have supplied a Label for the Value.
[2] The most common roll will just have the dice string (with or without references) however there are a number of additional rolls that add extra automation. In this case we are using a reduce  roll which will modify a stat on the Combat Tracker target. it additionally sets a different widget/icon on the Value on the Character sheet. You will note that each Value on the Roll can have a different type of Roll.
[3][4] For this specific roll type the syntax requires you to specify the Roll (eg Strength) and the Value (eg a is the first value) that will be  affected by this Roll. In the image you can see the Strength with Value 12. The syntax is wrapped in square brackets eg [Strength|a].
[5] Reading the remainder of the Rolls Dice String we see a reference to [a]. As this does not have a Roll name associated it is referring to the first Value on this Roll eg 6.

When Rolled with a Target this will roll 1d6 and reduce the Strength|a score of the target.

Rolls Example 3 – Pools

[1] The reference to [getmod] refers to the value in the Modifier Stack. Once it grabs the Modifier Stack it will reset it.

In [3] we are using the Modifier Stack to change the number of Dice based on the Characters Strength Bonus. If you are playing a game that allows you to combine different Skills with different Attributes, so you are using different combinations each time, to build the dice pool use [getmod] with some math inside (round brackets).

Your game might also allow you to build the pool from additional sources like Items. You would set them up the same way with (example) mod [a] for their roll which just adds the [a] value to the Modifier Stack. You would have either one Roll setup as [getmod]d10 or if every roll will include an Attribute you might set each Attribute roll up like: ([a]+[getmod])d10

You can combine this with Success/Fail values to such as in the following example:


Rolls Example 4 – Auto Calc

Rolls now have a new [1] calc field which will set the value.

It will not look for changes in other fields automatically. It will run the calc at the following times:

  1. On first open of the Roll in a session
  2. When you finish editing and you click elsewhere on the screen
  3. By double-clicking [2] value or the calc icon.

Additionally on the first open of the character sheet each session it will recalculate all rolls and you can run a character wide recalc using the icon at [1].

Calc in most cases requires you to fully specify the source – eg instead of using [a]-10 you would use [Strength|a]-10

Rolls Example 5 – Tables

[1][2] Rollon is indicated by a # symbol on the Icon. It opens a standard roll window but only the first (a) set of values are used. [3] shows the name of the table. It should support spaces in the table name but avoid using any other special characters in case they conflict with other code functions under the hood. Set the value [4] of the die to be rolled. It does not need to match the die in the table. This can mean some results might not be achievable (eg using a smaller die) with this particular roll or that some results have a higher probability (eg using a bigger die). We can modify the roll [5] using the modifier stack – in this example we have added a +2 modifier to the roll. The syntax for Tables is very simple:

rollon TableName

Rolls Example 6 – Counters

Rolls now have a new [1] counter field which can count up or down between a [5] max and [6] min value.

When double-clicking the [10] value it will increment or decrement by the [7] step value providing there are enough points to use. The default is to decrement and this is set by typing [8] desc/descending or asc/ascending to increment. This will also set the [4] widget so you know which way this counter operates.

You can refer to the current value in other rolls by using [e].

Finally you can [9] hide the counter if not being used.

Rolls Example 7 – Data Arrays

[1][2] A new data type called Arrays has been added. Non strictly linearly progressing tables are common particularly in older games. A common example is a Base Attack Bonus that is based off your Class and your Level. In this sample [3] we have a simple string of comma separated numbers (no spaces) that indicate the Base Attack Bonus per level for this class. These values can be addressed by indicating their position in the list.
It is best to have no spaces or special characters in your Array Names.
[4] We use the BaseAttackBonus array to populate the value in A by using getdata in the calc field. We use the [5] getlevel keyword to reference the characters level directly so it doesnt need to be edited as the character develops. [6] uses getdata within the roll. You might simplify this by using getdata in an unused line and referencing the Auto Calc value by letter.
[7] You can reference a|b|c|d on this roll only (you cannot reference other rolls) within the getdata command. Note no brackets are used in this reference. In this example the value for [8] is the 15th ([Strength|a]) value in the array.
The syntax for accessing Arrays data is very simple:
Valid values for position are numeric, any of the get commands and the letters a, b, c, d (note no brackets) which refer to those roll values on this roll only. You cannot reference another roll in the getdata part of a roll
Some examples are:

Rolls Example 8

[1] The damagen1 Roll will reduce the targets [2] n1 value in the Combat Tracker. It is similar to the damage roll however that will increment the wounds field rather than change the targets health. This is a simpler roll and used for games with more than one stat that can take damage. There is also a damagen2 roll working the same way.

Rolls Cheatsheet

Currently there are 8 types of Rolls. 

  • Dice Roll
  • Dice Roll to Modifier Stack
  • Add Roll
  • Attackac Roll
  • Damage Roll
  • Damage N1/N2 Roll
  • Damage DR Roll
  • Order Roll
  • Reduce Roll
  • Rollon Roll
  • Rollover Roll
  • Rollunder Roll
  • Selfharm Roll
  • Self N1/N2

In the future additional Roll types will be added. 

Valid Dice Strings

All Dice Strings support the inbuilt Fantasy Grounds dice rolls which can be found here: Dice Expressions This covers a lot of different possible rolls. There are some notable exceptions like roll under/over and many niche rolls that we hope to see supported in the future. Almost all rolls can be made with these expressions but many will require the players/GM to interpret the results for non standard systems. 

To make a standard dice Roll simple add the dice expression as per the linked Expressions.

You can reference values in the roll using [a], [b], [c], [d] and [e]. They must be enclosed in square brackets and they must be lowercase.

You can also reference these values in other Rolls by including the Roll name inside the brackets in the following syntax [Roll Name|letter] eg [Strength|b].

You can grab the Modifier Stack with [getmod] and this will grab the total value and also the description and make them available to the roll. This is different to letting the roll use the Modifier Stack automatically as you can use this to modify the number of dice and other values, not just the final result.

These references are evaluated at the time of the Roll and will fail gracefully in most cases.


Get Commands

You can reference the data at the top of the character sheet that is not stored in Roll. The following are valid get commands.

[getmod] – collects the modifierstack and resets it
[gethealth] – collects Health
[getwounds] – collects Wounds
[getn1] – collects the value in n1
[getn2] – collects the value in n2
[getinit] – collects init
[getsize] – collects size
[getreach] – collects reach
[getspeed] – collects speed
[getlevel] – collects class level
getdata|ArraysName|position – gets data from an Array

Dice Rolls

To make a standard dice Roll simple add the dice expression as per the linked Expressions.

Dice Roll to Modifier Stack

Start the Roll with mod to load the result to the Modifier Stack. There are two main types of Mod rolls.

Static Mod Values are done using the syntax:

mod #
mod [a]
mod [strength|c]

Dynamic Mod Rolls are done using a valid dice expression like:

mod 1d6+[b]
mod [a]d10e[b]

Add Rolls

An add Roll will increase the value of a targets stat as specified in the roll. The roll will start with add and must be followed by the target Stat and Value – eg [Luck|b] The rest of the Roll uses valid dice expressions. You must have a Target selected in the Combat Tracker for this Roll to take effect. Some examples include:

add [Luck|a] 1d[a]
add [Psionic Points|b] 4

Attackac Roll

The attackac compares the dice result with the Core Stat initially labelled n1 If you are using this roll you will set n1 up as Armor/Defence/AC or something similar. AT this stage the roll will compare the Dice Result with the n1 Value. If the result is equal or greater than n1 then a Success is reported in chat. Some examples include:

attackac 1d20
attackac 1d20+[a]+[Base Attack Bonus|a]
attackac 1d[a]+[Strength|b]

Damage Rolls

Damage rolls apply Damage to the Wounds value of any targets selected in the Combat Tracker. The usual syntax applies but the roll must begin with damage Examples include:

damage 1d[b]+[Strength|b]
damage [a]d10s[c]#2s[b]
damage ([a]*2)d[b]+[Agility|b]

To make a healing roll evaluate a negative value as in the following examples:

damage -1d[b]-[Strength|b]
damage -[a]d10s[c]#2s[b]

Damage N1/N2 Rolls

Damage N1 rolls apply Damage to the N1 value of any targets selected in the Combat Tracker. The usual syntax applies but the roll must begin with damagen1 or damagen2 Examples include:

damagen1 1d[b]+[Strength|b]
damagen1 [a]d10s[c]#2s[b]
damagen2 ([a]*2)d[b]+[Agility|b]

Damage DR Rolls

Damage DR rolls apply Damage to the Wounds value of any targets selected in the Combat Tracker less any value in the n2 field. It will not heal on negative results. The usual syntax applies but the roll must begin with damagedr Examples include:

damagedr 1d[b]+[Strength|b]
damagedr [a]d10s[c]#2s[b]
damagedr ([a]*2)d[b]+[Agility|b]

Order Rolls

An Order Roll will order the results from high to low. Some examples include:

order [a]d6+[getmod]r6
order ([Strength|a]+[getn1])d10

Reduce Rolls

A reduce Roll with reduce the value of a targets stat as specified in the roll. The roll will start with reduce and must be followed by the target Stat and Value – eg [Constitution|b] The rest of the Roll uses valid dice expressions. You must have a Target selected in the Combat Tracker for this Roll to take effect. Some examples include:

reduce [Level|a] 1d[a]
reduce [Psionic Points|b] 4


Rollon rolls an existing Table. The Table must be accessible to the player making the roll. Rollon will roll on the nominated table with the value of the die in the roll. It does not support rolling multiple dice. If you wish to adjust the roll with a modifier use the modifierstack. Some examples include:

rollon TargetZone
rollon CriticalInjuryTable


Rollover compares the dice result with the Value. If the result is equal or greater than the Value then a Success is reported in chat. Some examples include:

rollover 1d20
rollover [b]d10!
rollover [b]d10+[Intelligence|b]


Rollunder compares the dice result with the Value. If the result is equal or less than the Value then a Success is reported in chat. Some examples include:

rollunder 1d20
rollunder [b]d10
rollunder [b]d10+[Intelligence|b]


Selfharm modifies your damage/wounds value. It always targets the same actor – it ignores any targets you have. Some examples include:

selfharm 1d[a]
selfharm [a]+2
selfharm -[b]

Self N1/N2

Selfn1 modifies your n1 value. It always targets the same actor – it ignores any targets you have. Some examples include:

selfn1 1d[a]
selfn2 [a]+2
self2 -[b]

Item Rolls

Many pieces of equipment (mostly weapons!) will be used to take actions with rolls attached to that equipment and action. When you create Items/Equipment you can [1] Show as Roll to have that item also show on the 4th Rolls Frame. You can setup all your normal [2] Roll strings. You can set [3] Report Target Name.

Items should be added via the [4] Inventory tab. You cannot add them on the [5] Main tab.

Many times a piece of item will not have a roll associated with it but it may contain some values that other rolls use. You would still [1] Show As Roll.

Death Markers

The [1] Default option is for the [4] Delete button to activate on the Combat Tracker when an actors [3] Wounds are equal or greater than their [2] Health. If your system does not use Dead/Dying at 0 then you should turn this Off.

[5] The default Death Markers will be used unless changed in Options.