WSC Documentation

Wanderer's Styling Code (WSC) is used to format text in Wanderer's Guide and implement features for homebrew content.

Usage

Wanderer's Styling Code has two different forms, one is for description fields and the other is for code fields. Each form is split into its own section and categorized by their sub-functionalities, as shown on the left sidebar.

Description and code fields that can have WSC input in them will always have a blue book icon next to them; if a text field doesn't have that icon, it's safe to assume WSC will not function in that area.

Need help? We have a homebrew-help channel on our Discord server! Feel free to ask for help if you're ever stuck!

Description Fields

Basics

This is where the styling part of WSC comes into play. The following is numberous, relatively small, styling rules you can apply to your text.

Typography

You Type:
You See:

__italics__

__italics__

**bold**

**bold**

***big bold***

***big bold***

~~strikethrough~~

~~strikethrough~~

^^superscript^^

^^superscript^^

:> pushed text that wraps

:> pushed text that wraps

----

----

Indexing

You can index an action, feat, item, language, spell, or trait within text. Conditions are also automatically indexed. Indexing won't work properly on this page like it does in the character builder or sheet, but the system will still know that text is attempting to be indexed and will underline the text in yellow.

On the character builder or sheet, any text that's been indexed will appear blue and can be clicked on to view the indexed content. If content of the indexed name is not found, it will be replaced with red text saying the indexed content was not found.

Make a (action: Strike) with a (item: dwarven waraxe).

Becomes...

Make a (action: Strike) with a (item: dwarven waraxe).

You can also index different words as something, this can be particularly useful with different verb tenses for activities. The below example will index 'Sustaining the Spell' as 'Sustain a Spell' but will still display it the same.

You can command your undead (trait: minion) for as long as you continue (action: Sustaining the Spell | Sustain a Spell).

Becomes...

You can command your undead (trait: minion) for as long as you continue (action: Sustaining the Spell | Sustain a Spell).

Actions

Displaying action icons is super easy. Just write the action codename and it will generate the appropriate action icon.

Free Action: FREE-ACTION.

Reaction: REACTION.

One Action: ONE-ACTION.

Two Actions: TWO-ACTIONS.

Three Actions: THREE-ACTIONS.

Becomes...

Free Action: FREE-ACTION.
Reaction: REACTION.
One Action: ONE-ACTION.
Two Actions: TWO-ACTIONS.
Three Actions: THREE-ACTIONS.

Tables

Occasionally you might need to organize information in the form of a table. Here are some examples on how to do that.

Questions|Answers// The table headings

:--|:--// The cell alignments

What is your favorite color?|Orange.// A row

Cats or dogs?|Foxes.// Another row

Would be...

Questions|Answers :--|:-- What is your favorite color?|Orange. Cats or dogs?|Foxes.

You can add as many rows and columns as you need! Just keep in mind, you need to have the same number of columns for each line and the 2nd line must be for setting cell alignments.


Cell Alignments

Symbol|Meaning :-:|:-- :--|Align to the left :-:|Center --:|Align to the right

Tiers of Success

Here's some easy formatting for tiers of success. Just use a colon after the word(s) of the tier.

To the target, your words are honey and your visage seems bathed in a dreamy haze. It must attempt a Will save, with a +4 circumstance bonus if you or your allies recently threatened it or used hostile actions against it.

Critical Success: The target is unaffected and aware you tried to charm it.

Success: The target is unaffected but thinks your spell was something harmless instead of charm, unless it identifies the spell (Identifying Spells section on page 305).

Failure: The target’s attitude becomes friendly toward you. If it was friendly, it becomes helpful. It can’t use hostile actions against you.

Critical Failure: The target’s attitude becomes helpful toward you, and it can’t use hostile actions against you.

Becomes...

To the target, your words are honey and your visage seems bathed in a dreamy haze. It must attempt a Will save, with a +4 circumstance bonus if you or your allies recently threatened it or used hostile actions against it. Critical Success: The target is unaffected and aware you tried to charm it. Success: The target is unaffected but thinks your spell was something harmless instead of charm, unless it identifies the spell (Identifying Spells section on page 305). Failure: The target’s attitude becomes friendly toward you. If it was friendly, it becomes helpful. It can’t use hostile actions against you. Critical Failure: The target’s attitude becomes helpful toward you, and it can’t use hostile actions against you.

You also don't need to include all four tiers of success! The system will format whatever tiers you give it.

Tooltips

Sometimes you might want to hide text away until someone hovers over something. Using tooltips you can make just that!

All you need to do is make something like this: {Text to display|Text that will be revealed on hover!}. This will create a normal tooltip.

This becomes...

All you need to do is make something like this: {Text to display|Text that will be revealed on hover!}. This will create a normal tooltip.

You can also customize the color of the displayed text.

By writing 'color:' before the displayed text, that text will be that color. For example, {green:This text will be green.|And the text is green!}

This becomes...

By writing 'color:' before the displayed text, that text will be that color. For example, {green:This text will be green.|And the text is green!}

Here are all the different color options:

**Color Options** normal: 🠖 This is {normal:normal|How hidden!} text. blue: 🠖 This is {blue:blue|How it looks by default!} text. green: 🠖 This is {green:green|Quite green!} text. cyan: 🠖 This is {cyan:cyan|Nice color!} text. red: 🠖 This is {red:red|Uh oh!} text. yellow: 🠖 This is {yellow:yellow|Yellow!} text. blue_underline: 🠖 This is {blue_underline:blue underlined|Woah!} text. green_underline: 🠖 This is {green_underline:green underlined|Look at all these options!} text. cyan_underline: 🠖 This is {cyan_underline:cyan underlined|More subtle!} text. red_underline: 🠖 This is {red_underline:red underlined|Oooooo!} text. yellow_underline: 🠖 This is {yellow_underline:yellow underlined|Look! It's yellow again!} text.

Bullet Lists

There are times when it's best to organize information using a bulleted list. Here's how you can do that.

The effect depends on whether the target is living or undead.

* Living Creature: The spell deals negative damage equal to 1d4 plus your spellcasting modifier. The target attempts a basic Fortitude save, but is also enfeebled 1 for 1 round on a critical failure.

* Undead Creature: The target is flat-footed for 1 round on a failed Fortitude save. On a critical failure, the target is also fleeing for 1 round unless it succeeds at a Will save.

Becomes...

The effect depends on whether the target is living or undead. * Living Creature: The spell deals negative damage equal to 1d4 plus your spellcasting modifier. The target attempts a basic Fortitude save, but is also enfeebled 1 for 1 round on a critical failure. * Undead Creature: The target is flat-footed for 1 round on a failed Fortitude save. On a critical failure, the target is also fleeing for 1 round unless it succeeds at a Will save.

Non-Bullet Lists

There are times when you want the stylistic benefits of a bulleted list but without the bullet.

The effect depends on whether the target is living or undead.

~ Living Creature: The spell deals negative damage equal to 1d4 plus your spellcasting modifier. The target attempts a basic Fortitude save, but is also enfeebled 1 for 1 round on a critical failure.

~ Undead Creature: The target is flat-footed for 1 round on a failed Fortitude save. On a critical failure, the target is also fleeing for 1 round unless it succeeds at a Will save.

Becomes...

The effect depends on whether the target is living or undead. ~ Living Creature: The spell deals negative damage equal to 1d4 plus your spellcasting modifier. The target attempts a basic Fortitude save, but is also enfeebled 1 for 1 round on a critical failure. ~ Undead Creature: The target is flat-footed for 1 round on a failed Fortitude save. On a critical failure, the target is also fleeing for 1 round unless it succeeds at a Will save.

Code Fields

Basics

With code fields, WSC uses a series of code statements to implement changes, generate selectors, and adjust stats. There are three different kinds of code statements: builder statements (statements that are only executed in the character builder), sheet statements (statements that are only executed on the character sheet), and universal statements (statements that are executed on both the character builder and sheet). Each of these code statements is separated from each other by the newline character.

Most of this code field documentation will be a series of examples on how to use each code statement. If something doesn't make sense or you need more clarification, feel free to ask in the homebrew-help channel on our Discord server.

Below is an example of what multiple individual statements would look like. Each statement is on its own line and thus distinct.

GIVE-PROF-IN=LIGHT_ARMOR:M
GIVE-SKILL-FEAT=3

Builder Statements

Builder statements are code statements that are only executed in the character builder. They tend to generate content when they're executed.

Sheet Statements

Sheet statements are code statements that are only executed on the character sheet. They are frequently used to adjust character stats.

Stat Adjustments

These sheet statements use variable names to adjust certain statistics within the character sheet. The Variables page has the full table of all the variables with their names and descriptions.

INCREASE-SKILL_SURVIVAL=5-STATUS

- Gives the character a +5 status bonus to Survival.

INCREASE-PERCEPTION=2

- Gives the character a +2 bonus to Perception.

DECREASE-SAVE_REFLEX=1-CIRCUM

- Gives the character a -1 circumstance penalty to Reflex saving throws.

DECREASE-SCORE_DEX=2

- Gives the character a -2 penalty to their Dexterity ability score.

CONDITIONAL-INCREASE-SKILL_STEALTH=2~circumstance bonus to Sneak checks while in the rain

- Adds a conditional to Stealth, stating '+2 circumstance bonus to Sneak checks while in the rain'.

CONDITIONAL-DECREASE-PERCEPTION=2~status penalty to checks for initiative

- Adds a conditional to Perception, stating '-2 status penalty to checks for initiative'.

CONDITIONAL-SAVE_FORT=When you roll a success, you get a critical success instead.

- Adds a conditional to Fortitude, stating 'When you roll a success, you get a critical success instead.'

OVERRIDE-PERCEPTION=2-MODIFIER

Warning: Using this statement might result is strange, unpredictable results if used improperly. Like everything here, feel free to mess around with it and see how it affects a character, but it many change things in seemly unexpected ways if you don't know what you're doing!

- Replaces the character's modifier from Perception (which is Wisdom) with 2 only if 2 is higher than the character's current Wisdom modifier. For stats that are penalties (like ARMOR_CHECK_PENALTY), treat the override number as negative. For example, OVERRIDE-ARMOR_CHECK_PENALTY=1-BASE would be a -1 penalty, which would be greater than many other armor penalties that are -2 or -3.

Conditionals (If - Else)

You can make certain code statements only execute if a certain condition is first met.

The format is as follows:

IF (Conditional) {Statement}

Optionally, you can include an ELSE for a given statement to execute if the conditional was NOT met:

IF (Conditional) {Statement} ELSE {Other-Statement}

Below is a list of the types of conditionals that exist with a list of the types of boolean operators that can be applied to each.

IF (HAS-FEAT==Specialty Crafting) {Statement}

- If the character has the 'Specialty Crafting' feat, the statement inside the braces will execute.

Boolean Operators: '==' or '!='

IF (HAS-CLASS-ABILITY==Cloistered Cleric) {Statement}

- If the character has the 'Cloistered Cleric' class ability, the statement inside the braces will execute.

Boolean Operators: '==' or '!='

IF (HAS-HERITAGE==Treedweller) {Statement}

- If the character has the 'Treedweller' heritage, the statement inside the braces will execute.

Boolean Operators: '==' or '!='

IF (HAS-VISION==Low-Light Vision) {Statement}

- If the character has the 'Low-Light Vision' vision type, the statement inside the braces will execute.

Boolean Operators: '==' or '!='

IF (HAS-LEVEL>=13) {Statement}

- If the character is level 13 or greater, the statement inside the braces will execute.

- Any number between 0 and 20 for the level.

Boolean Operators: '==', '!=', '>=', or '<='

IF (HAS-PROF==Arcana:T) {Statement}

- If the character is trained in Arcana, the statement inside the braces will execute.

Boolean Operators: '==', '!=', '>=', or '<='

IF (HAS-FOCUS-POINTS==0) {Statement}

- If the character has zero Focus Points, the statement inside the braces will execute.

Boolean Operators: '==', '!=', '>=', or '<='

IF (HAS-PROF>=Stealth:T) {Statement} ELSE {Statement}

- If the character is trained or better in Stealth, the first statement will execute (which will give the character a swim speed of 15 feet). If the character is not trained in Stealth, the second statement will execute.

Boolean Operators: '==', '!=', '>=', or '<='

IF (HAS-ENABLED-SOURCE==Advanced Player's Guide) {Statement}

- If the character has the source book 'Advanced Player's Guide' enabled, the statement inside the braces will execute.

- The name of a homebrew bundle will also work as a source.

Boolean Operators: '==' or '!='

IF (IS-VARIABLE(SCORE_INT)>=22) {Statement}

- If the variable 'SCORE_INT' is greater than or equal to 22, the statement inside the braces will execute.

- Currently only ALL UPPERCASE VARIABLES work with this conditional.

Boolean Operators: '==' or '!=' (and '>=' or '<=' if the variable .GET_VALUE is a whole number)

IF (HAS-FEAT==Goblin Song && HAS-FOCUS-POINTS==0) {Statement}

- If the character has the 'Goblin Song' feat and has zero Focus Points, the statement inside the braces will execute.

Boolean Operators: '==', '!=', '>=', or '<='

IF-SHEET (Conditional) {Statement}

- If the character meets the condition, the statement inside the braces will execute (like normal). Although, this if statement will only be tested in the character sheet (not in the character builder or anywhere else). In all other non-sheet contexts, the condition is essentially treats as true - executing the statement.

IF (IS-UNARMORED) {Statement}

- If the character is currently not wearing armor.

Can only contain sheet statements.

IF (IS-TOGGLED==Rage) {Statement}

- If the character sheet currently has the 'Rage' toggleable active.

Can only contain sheet statements.

Boosts

Use the following code statements to give a character ability boosts. Ability boosts are special in that a character cannot select the same ability score as any other ABILITY-BOOST statement in the same code field.

GIVE-ABILITY-BOOST-SINGLE=ALL

- Generates one ability boost selector, all six ability scores are options.

GIVE-ABILITY-BOOST-SINGLE=INT,WIS,CHA

- Generates one ability boost selector, only options are Intelligence, Wisdom, and Charisma.

- Note: Separate abilities list by only a single ","

GIVE-ABILITY-BOOST-MULTIPLE=3

- Generates three ability boost selectors, all six ability scores are options.

- Can generate up to six ability boost selectors, any more would be unnecessary.


Warrior Background Example:

The warrior background gives the character an ability boost of either Strength or Constitution and then another ability boost of any ability score. But, since these two boosts are both given from the same source, the character cannot select the same ability score for both.

You can implement something like this using the following code:

GIVE-ABILITY-BOOST-SINGLE=STR,CON
GIVE-ABILITY-BOOST-SINGLE=ALL

4-Free-Boosts Example:

Generally every five levels a character is given four ability boosts. Because these four boosts are from the same source, they cannot select the same ability score multiple times.

You can implement something like this using the following code:

GIVE-ABILITY-BOOST-MULTIPLE=4

Feats

Use the following code statements to give a character feats.

GIVE-FEAT-NAME=Ancestral Paragon

- Gives the character the 'Ancestral Paragon' feat.

GIVE-GENERAL-FEAT=3

- Generates a feat selector, listing only general feats with the level 3 or lower.

GIVE-SKILL-FEAT=15

- Generates a feat selector, listing only skill feats with the level 15 or lower.

GIVE-ANCESTRY-FEAT=11

- Generates a feat selector, listing only that character's ancestry feats with the level 11 or lower.

GIVE-CLASS-FEAT=1

- Generates a feat selector, listing only that character's class feats with the level 1 or lower.

GIVE-ARCHETYPE-FEAT=2

- Generates a feat selector, functions just like a class feat except it only lists options for picking a dedication or selecting an archetype feat.

GIVE-SKILL-FEAT=Half_Level

- Generates a feat selector, listing only skill feats with a level equal to half the character's level (rounded down) or lower.

GIVE-CLASS-FEAT=1[metamagic]

- Generates a feat selector, listing only that character's class feats with the metamagic trait and are level 1 or lower.

GIVE-CLASS-FEAT=15[abjuration,arcane,metamagic]

- Generates a feat selector, listing only that character's class feats with the abjuration, arcane, and metamagic traits and are level 15 or lower.

GIVE-FEAT=3[wizard,metamagic]

- Generates a feat selector, listing all feats with the wizard and metamagic traits and are level 3 or lower.

GIVE-FEAT-NAME=Animal Companion[ranger]

- Gives the character the 'Animal Companion' feat that has the ranger trait.

- Can list more required traits by using a comma as shown above.

GIVE-FEAT-FROM=Choose a Tradition:feat 1,feat 2,feat 3,etc

- Generates a feat selector, listing only feats with the names: 'feat 1', 'feat 2', 'feat 3', and 'etc'. The feat selector will say 'Choose a Tradition' for the feat selection.

Languages

Use the following code statements to give a character a langauge.

GIVE-LANG-NAME=Elven

- Gives the character the 'Elven' language.

- Use an underscore in the place of spaces for names, if relevant.

GIVE-LANG

- Generates a language selector, listing all languages as options.

GIVE-LANG-BONUS-ONLY

- Generates a language selector, listing the ancestry's bonus languages as options.

Proficiencies

These builder statements are used to adjust the character's proficiencies. Most of these statements use the variable name of the appropriate proficiency to adjust, to find these names see the Variables page. On it there is a full table with all of the variables used by both the builder and character sheet, you can use the variables with the type PROFICIENCY.

You can also add the proficiency of a specific lore, weapon, or armor by name. To do this, write TYPE~Name in place of the proficiency variable name.

By Name:

LORE~Name

WEAPON~Name

ARMOR~Name


Use the following code statements to give a character a proficiency.

GIVE-PROF-INCREASE-IN=SKILL_ARCANA

- Increases the character's proficiency in Arcana by one tier.

(Untrained -> Trained, Trained -> Expert, etc)

GIVE-PROF-IN=SKILL_DIPLOMACY:T

- Sets the character's base proficiency in Diplomacy to trained.

- Note: Any proficiency increases will stack on top of the base proficiency.

(U = Untrained, T = Trained, E = Expert, M = Master, L = Legendary)

GIVE-PROF-IN=LIGHT_ARMOR:M

- Sets the character's base proficiency in Light Armor to master.

- Note: Any proficiency increases will stack on top of the base proficiency.

(U = Untrained, T = Trained, E = Expert, M = Master, L = Legendary)

GIVE-PROF-IN=WEAPON~Sickle:E

- Sets the character's base proficiency with the Sickle to expert.

- Note: Any proficiency increases will stack on top of the base proficiency.

(U = Untrained, T = Trained, E = Expert, M = Master, L = Legendary)


The old proficiency codenames from pre-1.6 update have been deprecated and should no longer be used. However, a large amount of content within Wanderer's Guide still uses those old codenames in their code. These codenames will still work, however, they won't be supported forever.

Skills

Use the following code statements to give a character a proficiency in a skill of their choice.

GIVE-SKILL-INCREASE

- Generates a skill selector, listing all skills and lores in the character's skill list.

- The selected skill has its proficiency increased by one tier.

- Minimum level of 7 to increase a skill to master and 15 to increase to legendary.

GIVE-SKILL=T

- Generates a skill selector, listing all skills and lores in the character's skill list.

- The selected skill has its base proficiency set to trained.

- Note: Any proficiency increases will stack on top of the base proficiency.

(U = Untrained, T = Trained, E = Expert, M = Master, L = Legendary)

GIVE-SKILL=T[Arcana,Deception,Crafting]

- Generates a skill selector, listing only the Arcana, Deception, and Crafting skills as options.

- Note: Separate skill names by only a single ","

- The selected skill has its base proficiency set to trained.

- Note: Any proficiency increases will stack on top of the base proficiency.

(U = Untrained, T = Trained, E = Expert, M = Master, L = Legendary)

Lore

Use the following code statements to give a character a lore skill.

GIVE-LORE=Sailing

- Gives the character 'Sailing' Lore, by adding it to their skill list, and makes them trained in that Lore skill.

GIVE-LORE-CHOOSE

- Generates an input field. Text input into the field will be saved and give the character a Lore skill with that name. They will become trained in that Lore skill automatically.

GIVE-LORE-CHOOSE-INCREASING

- Generates an input field. Text input into the field will be saved and give the character a Lore skill with that name. They will become trained in that Lore skill automatically, which scales as the character's level increases. At 3rd level they become expert, at 7th they become master, and at 15th they become legendary.

Spells

Use the following code statements to give a character spells and spellcasting. With many of the statements it may require a spellcasting source, this can be any name you'd like but it should be consistant - it will be the unique identifier for that instance of spellcasting. If you're creating homebrew for a class, the spellcasting source should likely be the name of the class.

SET-SPELL-CASTING-TYPE=Bard:SPONTANEOUS-REPERTOIRE

- Sets the Bard spellcasting source to use a repertoire - making them a spontaneous caster.

- Options are: Prepared-List, Prepared-Book, Prepared-Familiar, Spontaneous-Repertoire, or Flexible-Collection.

SET-SPELL-TRADITION=Wizard:ARCANE

- Sets the Wizard spellcasting source to use the Arcane tradition spell list.

- Options are: Arcane, Divine, Occult, and Primal.

SET-SPELL-KEY-ABILITY=Druid:WIS

- Sets the Druid spellcasting source to use Wisdom as their key spellcasting ability.

- Options are: STR, DEX, CON, INT, WIS, and CHA.

SET-SPELL-SLOTS=Bard:THREE-QUARTERS

- Sets the Bard spellcasting source to have three-quarters spellcasting slots (that being what most spellcasters have: 5 cantrips and 2 to 3 spell slots per spell level).

- Options are: Three-Quarters, Full, Reduced, Partial, and Single-Set.

GIVE-SPELL-SLOT=Bard:10

- Gives the character a 10th level spell slot for the Bard spellcasting source.

- Options are: 0 - 10.

ADD-SPELL-TO-LIST=Witch:Spirit Link:1

- Adds the Spirit Link spell at 1st-level to the spell list/repertoire for the Witch spellcasting source.


Focus Spells

GIVE-FOCUS-SPELL=Shadowdancer:Dance of Darkness

- Gives the character Dance of Darkness as a focus spell using the Shadowdancer spellcasting source.

GIVE-FOCUS-POINT

- Increases the number of Focus Points in the character's focus pool.


Innate Spells

GIVE-INNATE-SPELL-NAME=Meld into Stone:3:DIVINE:1

- Gives the character Meld into Stone as an innate divine spell, cast at 3rd level, and can only be cast once per day.

- Options for tradition is: Arcane, Divine, Occult, and Primal.

GIVE-INNATE-SPELL-NAME=Daze:0:ARCANE:0

- Gives the character Daze as an innate arcane cantrip, can be cast any number of times per day.

- Options for tradition is: Arcane, Divine, Occult, and Primal.

GIVE-INNATE-SPELL=5:DIVINE:2

- Generates a selector, listing only 5th level spells within the Divine tradition spell list. The chosen spell can be cast twice per day.

- Options for tradition is: Arcane, Divine, Occult, and Primal.

Resistances and Weaknesses

Use the following code statements to give a character a resistance or weakness.

For the value either put a number, "Half_Level", or "Level".

GIVE-RESISTANCE=Negative:Half_Level

- Gives the character a resistance to negative damage equal to half their level.

GIVE-WEAKNESS=Cold:2

- Gives the character a weakness of 2 to cold damage.

GIVE-RESISTANCE=All Physical:Half_Level+2

- Gives the character a resistance equal to half their level + 2 against all physical damage.

Specializations

Use the following code statements to give a character a specialization.

GIVE-WEAPON-SPECIALIZATION

- Gives the character weapon specialization.

GIVE-GREATER-WEAPON-SPECIALIZATION

- Gives the character greater weapon specialization.

GIVE-ARMOR-SPECIALIZATION=Light_Armor

- Gives the character armor specialization in all light armor.

- Options are any of the defenses proficiency options (see Proficiencies) and can give by armor name, trait, prof, or group (Ex: GIVE-ARMOR-SPECIALIZATION=PROF~E).

GIVE-WEAPON-CRITICAL-SPECIALIZATION=Simple_Weapons

- Gives the character critical specialization in all simple weapons.

- Options are any of the attacks proficiency options (see Proficiencies) and can give by weapon name, trait, prof, or group.

GIVE-WEAPON-CRITICAL-SPECIALIZATION=TRAIT~Dwarf

- Gives the character critical specialization in all weapons with the 'Dwarf - Item' trait.

GIVE-WEAPON-CRITICAL-SPECIALIZATION=WEAPON~Scimitar

- Gives the character critical specialization with the weapon of the name 'Scimitar'.

Universal Statements

Universal statements are code statements that are executed on both the character builder and sheet.

Notes Field

Sometimes a feat or class ability might need an area where the user can write some notes specific to that feature. In such a case, use the following code statement to generate a notes field in the character builder or sheet for that feature.

GIVE-NOTES-FIELD=Use this area to keep information about your diety.

- Generates a notes field in the character sheet with the given placeholder text.

Add Text

Occasionally a class feature or feat may need an extra sentence or two tacked on at the end if the character meets a certain condition. You can use the following statement to display text, usually displaying it below the description of something.

This statement is usually used within a conditional, allowing certain text to be displayed if a character is at a certain level or has a certain class feature, for example.

ADD-TEXT=Any text you'd like to display!

- The displayed text will be parsed like a description field.

Miscellaneous

Class Features

Use the following code statement to give a character a class feature or class feature option.

GIVE-CLASS-FEATURE-NAME=Sneak Attack

- Gives the character the class feature with the name "Sneak Attack".

GIVE-CLASS-FEATURE-NAME=Polymath

- You can use the same statement and list a class feature option instead, like the Polymath muse. Gives the character the class feature option with the name "Polymath".

GIVE-CLASS-FEATURE-NAME=Muses[NO-CODE]

- Gives the character a class feature with selection options. Including [NO-CODE] at the end will make the class feature (and any selected feature options) not execute any code from within them.


Character Traits

Use the following code statement to add a trait to a character.

GIVE-CHAR-TRAIT-NAME=Fey

- Adds the Fey trait to the character.

GIVE-CHAR-TRAIT

- Generates a character trait selector, listing all ancestry traits as options.

GIVE-CHAR-TRAIT-COMMON

- Generates a character trait selector, listing all common ancestry traits as options.


Domains

Use the following code statements to give or advance a character's domain.

GIVE-DOMAIN=Cleric

- Generates a domain selector, using 'Cleric' as the spellcasting source.

GIVE-DOMAIN-ADVANCEMENT=Cleric

- Generates a domain advancement selector, listing all the characters's current domains and using 'Cleric' as the spellcasting source.


Physical Features

Use the following code statement to give a character a physical feature. Physical feature is the term Wanderer's Guide uses to indicate and categorize extra features ancestries often give characters that are innate to the ancestry.

GIVE-PHYSICAL-FEATURE-NAME=Blunt Snout

- Gives the character a physical feature with the name "Blunt Snout".


Senses

Use the following code statement to give a character a sense.

GIVE-SENSE-NAME=Darkvision

- Gives the character darkvision.


Other Speeds

Use the following code statement to give a character other types of speeds.

GIVE-SPEED=Swim:15

- Gives the character a swim speed of 15 feet.

GIVE-SPEED=Climb:LAND_SPEED

- Gives the character a climb speed equal to their land speed.


Heritage Effects

Occationally a feat may say that you gain the effects of a heritage. Use the following code statements to give a character the effects of a heritage.

GIVE-HERITAGE-EFFECTS-ANCESTRY=Elf

- Generates a heritage selector, listing all heritages for the 'Elf' ancestry as options.

GIVE-HERITAGE-EFFECTS-NAME=Ancient Elf

- Gives the character the effects of the 'Ancient Elf' heritage.


SCFS'

GIVE-SCFS=Druidic Order:GIVE-FOCUS-SPELL

- Generates a selector listing all Druidic Orders. When an option is selected, the first WSC statement starting with 'GIVE-FOCUS-SPELL' from that order will be executed.


Other

CLEAR-DATA-FROM-CODE-BLOCK

- Clears any stored data that has a source originating from this code block. Warning: Will clear memory of previous selected options for selectors.

Misc. Feat

These universal statements have to do with feats and their management.

Hide Feats - DEPRECATED

This statement is no longer being used. Use Removal Statements instead.

HIDE-FEAT-NAME=Drain Bonded Item

- Hides all feats with the name 'Drain Bonded Item'. Feats with that name are essentially treated as though they don't exist.

Override Feats

OVERRIDE-FEAT-LEVEL=Magical Trickster:2

- Makes all feats with the name 'Magical Trickster' have their level set to 2nd instead of what levels they were before.

Conceal Feats

SHEET-CONCEAL-FEAT-NAME=Cannot Breathe Air

- Makes all feats with the name 'Cannot Breathe Air' not show up on the Feats tab on the character sheet.

Variables

In both the character builder and sheet there are a set of predefined variables that you can make use of. You can also defined your own custom variables and assign value to them! (The variable system is still in development with the plan to eventually phase out Stat Adjustments and combine everything into just Variables.)

PREDEFINED VARIABLES

Variable Name|Variable Type|Details :--|:-:|:-- **Ability Scores**|| SCORE_STR|ABILITY_SCORE|Strength ability score. SCORE_DEX|ABILITY_SCORE|Dexterity ability score. SCORE_CON|ABILITY_SCORE|Constitution ability score. SCORE_INT|ABILITY_SCORE|Intelligence ability score. SCORE_WIS|ABILITY_SCORE|Wisdom ability score. SCORE_CHA|ABILITY_SCORE|Charisma ability score. **Saving Throws**|| SAVE_FORT|PROFICIENCY|Fortitude saving throw. Ability score: SCORE_CON. SAVE_REFLEX|PROFICIENCY|Reflex saving throw. Ability score: SCORE_DEX. SAVE_WILL|PROFICIENCY|Will saving throw. Ability score: SCORE_WIS. **Skills**|| SKILL_ACROBATICS|PROFICIENCY|Acrobatics skill. Ability score: SCORE_DEX. SKILL_ARCANA|PROFICIENCY|Arcana skill. Ability score: SCORE_INT. SKILL_ATHLETICS|PROFICIENCY|Athletics skill. Ability score: SCORE_STR. SKILL_CRAFTING|PROFICIENCY|Crafting skill. Ability score: SCORE_INT. SKILL_DECEPTION|PROFICIENCY|Deception skill. Ability score: SCORE_CHA. SKILL_DIPLOMACY|PROFICIENCY|Diplomacy skill. Ability score: SCORE_CHA. SKILL_INTIMIDATION|PROFICIENCY|Intimidation skill. Ability score: SCORE_CHA. SKILL_MEDICINE|PROFICIENCY|Medicine skill. Ability score: SCORE_WIS. SKILL_NATURE|PROFICIENCY|Nature skill. Ability score: SCORE_WIS. SKILL_OCCULTISM|PROFICIENCY|Occultism skill. Ability score: SCORE_INT. SKILL_PERFORMANCE|PROFICIENCY|Performance skill. Ability score: SCORE_CHA. SKILL_RELIGION|PROFICIENCY|Religion skill. Ability score: SCORE_WIS. SKILL_SOCIETY|PROFICIENCY|Society skill. Ability score: SCORE_INT. SKILL_STEALTH|PROFICIENCY|Stealth skill. Ability score: SCORE_DEX. SKILL_SURVIVAL|PROFICIENCY|Survival skill. Ability score: SCORE_WIS. SKILL_THIEVERY|PROFICIENCY|Thievery skill. Ability score: SCORE_DEX. SKILL_XXX_LORE|PROFICIENCY|Lore skill, replace XXX with the lore name. Ability score: SCORE_INT. **Perception**|| PERCEPTION|PROFICIENCY|Perception. Ability score: SCORE_WIS. **Class DC**|| CLASS_DC|PROFICIENCY|Class DC. Ability score: Varies. **Spell Attacks**|| ARCANE_SPELL_ATTACK|PROFICIENCY|Arcane spell attack. Ability score: Varies. DIVINE_SPELL_ATTACK|PROFICIENCY|Divine spell attack. Ability score: Varies. OCCULT_SPELL_ATTACK|PROFICIENCY|Occult spell attack. Ability score: Varies. PRIMAL_SPELL_ATTACK|PROFICIENCY|Primal spell attack. Ability score: Varies. **Spell DCs**|| ARCANE_SPELL_DC|PROFICIENCY|Arcane spell DC. Ability score: Varies. DIVINE_SPELL_DC|PROFICIENCY|Divine spell DC. Ability score: Varies. OCCULT_SPELL_DC|PROFICIENCY|Occult spell DC. Ability score: Varies. PRIMAL_SPELL_DC|PROFICIENCY|Primal spell DC. Ability score: Varies. **Armor**|| LIGHT_ARMOR|PROFICIENCY|Light armor. Ability score: SCORE_DEX. MEDIUM_ARMOR|PROFICIENCY|Medium armor. Ability score: SCORE_DEX. HEAVY_ARMOR|PROFICIENCY|Heavy armor. Ability score: SCORE_DEX. UNARMORED_DEFENSE|PROFICIENCY|Unarmored defense. Ability score: SCORE_DEX. **Weapons**|| SIMPLE_WEAPONS|PROFICIENCY|Simple weapons. Ability score: Varies. MARTIAL_WEAPONS|PROFICIENCY|Martial weapons. Ability score: Varies. ADVANCED_WEAPONS|PROFICIENCY|Advanced weapons. Ability score: Varies. UNARMED_ATTACKS|PROFICIENCY|Unarmed attacks. Ability score: Varies. **Level**|| LEVEL|INTEGER|Character's current level. **Health**|| MAX_HEALTH|INTEGER|Max health, not including MAX_HEALTH_BONUS_PER_LEVEL. MAX_HEALTH_BONUS_PER_LEVEL|INTEGER|Added max HP at each level. HEALTH|INTEGER|Changing this will simply update the current HP once. TEMP_HEALTH|INTEGER|Changing this will simply update the current temp HP once. **AC**|| AC|INTEGER|Used to add bonuses or penalties to AC. ARMOR_CHECK_PENALTY|INTEGER|Used to adjust the armor check penalty. ARMOR_SPEED_PENALTY|INTEGER|Used to adjust the armor speed penalty. DEX_CAP|INTEGER|Adjusting this at all will override any existing Dex Cap. **Speed**|| SPEED|INTEGER|Used to adjust land Speed. SPEED_XXX|INTEGER|Used to adjust given Speed, replace XXX with the speed type. **Limits**|| BULK_LIMIT|INTEGER|Used to adjust Bulk limit. INVEST_LIMIT|INTEGER|Used to adjust Investiture limit. **Global Attacks**|| ATTACKS|INTEGER|Used to adjust attack bonus to all attacks. ATTACKS_DMG_DICE|INTEGER|Used to adjust damage dice to all attacks. ATTACKS_DMG_BONUS|INTEGER|Used to adjust damage bonus to all attacks. **Global Melee Attacks**|| MELEE_ATTACKS|INTEGER|Used to adjust attack bonus to all melee attacks. MELEE_ATTACKS_DMG_DICE|INTEGER|Used to adjust damage dice to all melee attacks. MELEE_ATTACKS_DMG_BONUS|INTEGER|Used to adjust damage bonus to all melee attacks. AGILE_MELEE_ATTACKS_DMG_BONUS|INTEGER|Used to adjust damage bonus to all agile melee attacks. NON_AGILE_MELEE_ATTACKS_DMG_BONUS|INTEGER|Used to adjust damage bonus to all non-agile melee attacks. **Global Ranged Attacks**|| RANGED_ATTACKS|INTEGER|Used to adjust attack bonus to all ranged attacks. RANGED_ATTACKS_DMG_DICE|INTEGER|Used to adjust damage dice to all ranged attacks. RANGED_ATTACKS_DMG_BONUS|INTEGER|Used to adjust damage bonus to all ranged attacks.

Custom Variables

If you're doing something particularly advanced, you might want to create your own variables. When making your own variables, you need to make sure that your variable name is unique and that you define your variable before you attempt to set it to anything.

When you want to use a variable, you can just write the name and surround it in braces (like so, {Variable_Name}). The variable will then be replaced by its value at runtime. Variables can be used in both description fields and code fields. And in code fields, the variable is replaced with its value before each statement is executed. This means that you could use variables to dynamically change a WSC statement from anywhere. Variables can also be chained within other variables, where the most internal variable is replaced first.

You can use the DEFINE-VARIABLE statement to create or initialize a variable.

DEFINE-VARIABLE=MyVariable:INTEGER

- A new variable will be defined by the name 'MyVariable'. It is an integer, meaning it can only be assigned to equal a whole number.

DEFINE-VARIABLE=Animal_Friend_Name:STRING

- A new variable will be defined by the name 'Animal_Friend_Name'. It is a string, meaning it can only be assigned to equal a line of text.

DEFINE-VARIABLE=Investigation:PROFICIENCY(SCORE_INT)

- A new variable will be defined by the name 'Investigation'. It is a proficiency, meaning it can only be assigned to equal a proficiency rank (U, T, E, M, or L). In the parentheses is the name of an ABILITY_SCORE variable (in this case Intelligence aka SCORE_INT).

DEFINE-VARIABLE=SCORE_AGILITY:ABILITY_SCORE

- A new variable will be defined by the name 'SCORE_AGILITY'. It is an ability score, meaning it can only be assigned to equal a whole number.

DEFINE-VARIABLE=FeatNames:LIST

- A new variable will be defined by the name 'FeatNames'. It is a list, meaning it can only be assigned to equal an array or list of values (following JSON formatting).


You can use the SET-VARIABLE statement to set a defined variable or one of its set methods to a value.

Not specifying a method when setting a variable is the same as using .SET_VALUE

SET METHODS BY VARIABLE TYPE

Method Name|Details| :--|:--|:-- **INTEGER**|| SET_VALUE|Sets the variable to the given input.| **STRING**|| SET_VALUE|Sets the variable to the given input.| **PROFICIENCY**|| SET_ABILITY|Sets the ability score to the ABILITY_SCORE variable with the given name.| SET_VALUE|Sets the proficiency rank to the given input.| **ABILITY_SCORE**|| SET_SCORE|Sets the variable to the given input.| SET_VALUE|Sets the variable to the given input.| **LIST**|| SET_INDEX_XXX|Sets the XXXth element in the list to the given input, starting at 0th.| SET_INDEX_NEXT|Sets the next element in the list to the given input.| SET_VALUE|Sets the variable to the given input, it must be an array following JSON formatting.|
SET-VARIABLE=MyVariable.SET_VALUE:67

- The variable by the name of 'MyVariable' will be assigned to the value of '67'.

SET-VARIABLE=Animal_Friend_Name:Vienna

- The variable by the name of 'Animal_Friend_Name' will be assigned to the value of 'Vienna'. This is equivalent to 'Animal_Friend_Name.SET_VALUE:Vienna'.

SET-VARIABLE=Investigation.SET_ABILITY:SCORE_WIS

- The variable by the name of 'Investigation' will have its ability score assigned to a new ABILITY_SCORE variable by the name of 'SCORE_WIS' (aka Wisdom).

SET-VARIABLE=SCORE_AGILITY.SET_SCORE:14

- The variable by the name of 'SCORE_AGILITY' will be assigned to the value of '14'.

SET-VARIABLE=FeatNames.SET_VALUE:["Lie to Me","Diehard","Risky Surgery","Juggle"]

- The variable by the name of 'FeatNames' will be assigned to the array ["Lie to Me","Diehard","Risky Surgery","Juggle"].

SET-VARIABLE=FeatNames.SET_INDEX_2:Very Sneaky

- The variable by the name of 'FeatNames' will have its 3rd element (index 2) be replaced with the value 'Very Sneaky'.

SET-VARIABLE=FeatNames.SET_INDEX_NEXT:Whirling Throw

- The variable by the name of 'FeatNames' will have a new element added to the end of it with the value 'Whirling Throw'.


Once you have defined and set some variables, you will want to be able to use them. Here's how:

Variables can be written in description fields and code fields by writing the variable name then surrounding it in braces, like so: {VariableName}. You can also include one of the variable's get methods to get other variable information. Not specifying a method when writing a variable is the same as using the .GET_VALUE method

GET METHODS BY VARIABLE TYPE

Method Name|Details| :--|:--|:-- **INTEGER**|| GET_VALUE|Gets the value of the variable.| **STRING**|| GET_VALUE|Gets the value of the variable.| **PROFICIENCY**|| GET_TOTAL|Gets the total bonus. Currently doesn't add character level.| GET_BONUS_RANK|Gets the proficiency bonus. Currently doesn't add character level.| GET_BONUS_ABILITY|Gets the ability score bonus.| GET_ABILITY|Gets the associated ABILITY_SCORE variable.| GET_VALUE|Gets the value of the variable.| **ABILITY_SCORE**|| GET_SCORE|Gets the value of the variable.| GET_MOD|Gets the calculated modifier of the score.| GET_VALUE|Gets the value of the variable.| **LIST**|| GET_INDEX_XXX|Gets the value of the XXXth element, starting at 0th.| GET_LENGTH|Gets the length of the list.| GET_VALUE|Gets the value of the variable.|

Example.

Here's my list of feats: {FeatNames}. The second element is {FeatNames.GET_INDEX_1}. I have a +{SCORE_AGILITY.GET_MOD} in my Agility ability score. My pet is named {Animal_Friend_Name}, I love her very much.

Based on the previous examples, this becomes...

Here's my list of feats: Lie to Me,Diehard,Very Sneaky,Juggle,Whirling Throw. The second element is Diehard. I have a +2 in my Agility ability score. My pet is named Vienna, I love her very much.

Conditions

These sheet statements add a condition to the character.

GIVE-CONDITION=Clumsy:1

- The character will be given the 'Clumsy' condition with the value 1.

GIVE-CONDITION=Flat-Footed

- The character will be given the 'Flat-Footed' condition.

REMOVE-CONDITION=Flat-Footed

- The character will lose the 'Flat-Footed' condition, if they have it.

Item Defaults

All of these special sheet statements only work when they're written in the code field of an item.

DEFAULT-WEAPON-RUNE=+1 Weapon Potency

- Adds a '+1 Weapon Potency' rune to the item, if the item is a weapon.

- Executed only once when the item is first added to the character's inventory.

DEFAULT-ARMOR-RUNE=Fortification

- Adds a 'Fortification' rune to the item, if the item is armor and has an open property rune slot.

- Executed only once when the item is first added to the character's inventory.

DEFAULT-ADD-ITEM-TO-BAG=Bedroll

- Adds the item 'Bedroll' to the contents of a storage item, if the item is a storage item.

- Executed only once when the item is first added to the character's inventory.


DEFAULT-ADJUST-RANGE=+30

- If the item is a ranged weapon, adjusts the weapon's range by the value.

- Can also be placed on a runestone or any attachment item. If the rune or item is attached to an item, the code will also execute onto the attached item.

DEFAULT-ADJUST-RELOAD=-1

- If the item is a ranged weapon, adjusts the weapon's range by the value.

- Can also be placed on a runestone or any attachment item. If the rune or item is attached to an item, the code will also execute onto the attached item.

DEFAULT-ADD-TRAIT=Deadly d8

- Can be placed on a runestone or any attachment item. If the rune or item is attached to an item, the attached item will gain the given trait.


DEFAULT-ON-HIT-DAMAGE=+5d6+6 fire

- If the item is a weapon, makes the weapon deal an additional 5d6+5 fire damage.

- Can also be placed on a runestone or any attachment item. If the rune or item is attached to an item, the code will also execute onto the attached item.

DEFAULT-ON-CRIT-DAMAGE=1d12 cold

- If the item is a weapon, makes the weapon deal an additional 1d12 cold damage only on a critical hit. As per the rules, damage added on a crit isn't doubled.

- Can also be placed on a runestone or any attachment item. If the rune or item is attached to an item, the code will also execute onto the attached item.

DEFAULT-ON-HIT-OTHER=The target is flat-footed until next turn.

- If the item is a weapon, adds an additional effect to the weapon's damage.

- Can also be placed on a runestone or any attachment item. If the rune or item is attached to an item, the code will also execute onto the attached item.

DEFAULT-ON-CRIT-OTHER=The target is flat-footed forever.

- If the item is a weapon, adds an additional effect to the weapon's damage only on a critical hit.

- Can also be placed on a runestone or any attachment item. If the rune or item is attached to an item, the code will also execute onto the attached item.

DEFAULT-ON-HIT-CONDITIONAL=If the target is an elf, they are flat-footed until next turn.

- If the item is a weapon, adds a conditional additional effect to the weapon's damage. Similar to DEFAULT-ON-HIT-OTHER, however, the additional effect will be displayed as a conditional rather than a constant effect.

- Can also be placed on a runestone or any attachment item. If the rune or item is attached to an item, the code will also execute onto the attached item.

DEFAULT-ON-CRIT-CONDITIONAL=If the target is an elf, they are flat-footed forever.

- If the item is a weapon, adds a conditional additional effect to the weapon's damage only on a critical hit. Similar to DEFAULT-ON-CRIT-OTHER, however, the additional effect will be displayed as a conditional rather than a constant effect.

- Can also be placed on a runestone or any attachment item. If the rune or item is attached to an item, the code will also execute onto the attached item.

Miscellaneous

Apex Ability Score

SET-APEX-ABILITY-SCORE=DEX

- Increases the given ability score to 18 or increases it by +2 if the ability score is already 18 or higher.

- Options are: STR, DEX, CON, INT, WIS, and CHA.

Character Size

SET-SIZE=SMALL

- Overrides the character's size (determined by their ancestry) with the new size.

- Options are: TINY, SMALL, MEDIUM, LARGE, HUGE, and GARGANTUAN.

Familiarity

GIVE-WEAPON-FAMILIARITY=Goblin

- For the purpose of determining your weapon proficiency, all martial weapons with the 'Goblin - Item' trait are simple weapons and all advanced weapons with the 'Goblin - Item' trait are martial weapons.

Multiple Attack Penalty

SET-MAP=Tier_3

- Options are: Tier_1, Tier_2, Tier_3, and Tier_4.

- Tier_1 = (-5/-10 or -4/-8 for agile weapons)

- Tier_2 = (-4/-8 or -3/-6 for agile weapons)

- Tier_3 = (-3/-6 or -2/-4 for agile weapons)

- Tier_4 = (-2/-4 or -1/-2 for agile weapons)

Other

DISPLAY-COMPANION-TAB

- Makes the Companions subtab, under the Details tab, visible.

SET-FINESSE-MELEE-USE-DEX-DAMAGE

- Makes melee weapons with the finesse trait use Dexterity for weapon damage.

SET-ADD-LEVEL-TO-UNTRAINED-WEAPONS

- Adds the character level to the proficiency to hit with all untrained weapons.

Removal Statements

Removal statements are code statements that can only be processed in the "Runs on Load" code block. Therefore, they are executed before nearly everything else.

These code statements are used to remove any content from other sources with the given name, treating that content essentially as though it doesn't exist.

Removal statements only removes content from OTHER books/homebrew bundles. Content from the current bundle is untouched. This is primarily in order to allow overrides and erratas of existing content.

Warning: Removing content without creating content with the same name to replace it can lead to breaking existing systems.

REMOVAL-FEAT-NAME=Drain Bonded Item

- Removes all feats with the name 'Drain Bonded Item' from other sources.

REMOVAL-ITEM-NAME=Backpack

- Removes all items with the name 'Backpack from other sources.

REMOVAL-SPELL-NAME=Fireball

- Removes all spells with the name 'Fireball' from other sources.

REMOVAL-CLASS-FEATURE-NAME=Elemental

- Removes all class features with the name 'Elemental' from other sources.