Homebrew: Race

From 5etools Community Wiki
Jump to: navigation, search

framless
v1.1.0

๐ŸบBuilding a race

As with any Homebrew item, make sure you have reviewed the _Meta section. If your file doesn't have it, it won't work.

Basic skeleton:

To start, copy the following code block and fill the empty "" values.

Race code block
"race": [
	{
		"name": "",
		"source": "",
		"page": "",
		"ability": [
			{
			}
		],
		"size": "",
		"speed": 0,
		"entries": [
			{
				"type": "entries",
				"name": "",
				"entries": [
					""
				]
			},
			{
				"type": "entries",
				"name": "",
				"entries": [
					""
				]
			}
		]
	}
]

The two fields that expect some data in particular are the following ones:

  • "ability" - The abreviation of the characteristic (str, dex, con, int, wis, cha) followed by the ammount of points. An example:
"ability": [
	{
		"str": 2,
		"con": 1
	}
]
  • "size" - Use "M" for medium, "S" for small and "V" for varies.

To have more than one race, add a new object block {} after the last curly brace }. REMEMBER to separate the races with commas!

But this is too simple! I want to add...

Make sure you are adding these blocks in the same level as the "name", "source", etc.

Different ability scores

  • To choose from 2 or more defined sets, simply add new objects as you please
"ability": [
	{
	    "str": 2,
	    "con": 1
	},
	{
	    "dex": 2,
	    "wis": 1
	}
]
  • You can let your players choose a "count" of characteristics to be incremented a defined "amount"
"ability": [
    {
        "choose": {
            "from": [
                "str",
                "dex",
                "con",
                "int",
                "wis",
                "cha"
            ],
            "count": 3,
            "amount": 1
        }
    }
  • And if you want even more control over the options, you can have different "weights" in the scores
"ability": [
    {
        "choose": {
            "weighted": {
                "from": [
                    "str",
                    "dex",
                    "con",
                    "wis"
                ],
                "weights": [
                    2,
                    1,
                    -1,
                    -2
                ]
            }
        }
    }
Note that all these options can be mixed and matched.

Aliases

  • This lets you give extra names to a creature that will direct to it if searched on the search bar.
"alias": [
	"The Forgotten Ones"
],

Soundclip

  • A sound file associated with the race. Used for name pronunciation in official items, but you can experiment with other uses.
"soundClip": "www.exampleURL.com/exampleFile.mp3",

Subraces

  • The structure of subraces is similar to the races one, the subrace data will always overwrite the same one in the race. In the code example the "overwrite" functionality is described, which will allow you to overwrite a property from the race, such as language proficiencies.
"subraces": [
    {
        "name": "",
        "source": "",
        "overwrite": {
	    "languageProficiencies": true
        }
    }
]

This is one way of building subraces, inside the race itself. You can also put them in it's own "subraces" block (add link someday)

Darkvision

  • Just write the amount of feet that you can see
"darkvision": 30

Trait Tags

NOTE: this section will not add visible info, only improves the filtering compatibility.

  • Here you'll see all the currently avaliable options. If your race has any of these, only use those ones.
 "traitTags": [
    "Amphibious",
    "Armor Proficiency",
    "Blindsight",
    "Damage Immunity",
    "Damage Resistance",
    "Dragonmark",
    "Improved Resting",
    "Magic Resistance",
    "Monstrous Race",
    "Natural Armor",
    "NPC Race",
    "Powerful Build",
    "Skill Proficiency",
    "Spellcasting",
    "Tool Proficiency",
    "Unarmed Strike",
    "Uncommon Race",
    "Weapon Proficiency"
]

Language Proficiencies

NOTE: this section will not add visible info, only improves the filtering compatibility.

  • To be able to choose from any of the existing languages (or restrict it to only standard ones), use the following followed by the number of languages.
"languageProficiencies": [
    {
        "any": 2,
        "anyStandard": 1
    }
]
  • To restrict it to certain languages, write the name followed by "true"
"languageProficiencies": [
    {
        "abbysal": true,
        "celestial": true,
        "deep speech": true,
        "draconic": true,
        "infernal": true,
        "primordial": true,
        "sylvan": true,
        "undercommon": true,
        "dwarvish": true,
        "elvish": true,
        "giant": true,
        "common": true,
        "other": true
    }
]
  • To choose a "count" of languages from a list
"languageProficiencies": [
    {
        "choose": {
            "from": [
                "abyssal",
                "celestial",  
                "undercommon"
            ],
            "count": 2
        }
    }
]

Skill Proficiency

  • Write the name of the skill the race is proficient with followed by "true"
"skillProficiencies": [
    {
        "history": true,
        "survival": true
    }
]
  • If you can choose from different options
"skillProficiencies": [
    {
        "choose": {
            "from": [
                "deception",
                "insight",
                "intimidation",
                "persuasion"
            ],
            "count": 2
        }
    }
],

Fluff

  • The simplest way to add fluff to a race is to write it inside it. You can also add "images" to it, if you do not want to MAKE SURE you delete that part
"fluff": {
    "entries": [
        {
            "type": "entries",
            "name": "Some interesting fluff",
            "entries": [
                "This is such a cool race!"
            ]
        }
    ],
    "images": [
        {
            "type": "image",
            "href": {
                "type": "external",
                "url": "www.example.com/image.png"
            }
        }
    ]
}
  • You can also write the fluff in a separate "raceFluff" block, and reference it inside the race. This is useful when you want to have the same fluff for different races.
"fluff": {
    "_raceFluff": {
        "name": "",
        "source": ""
    }
}
  • You can also append the fluff after some text you have written. This way you can have a general fluff that appears in several races, and only a small part that changes (like the official subraces)
"fluff": {
    "entries": [
        "Example fluff"
    ],
    "_appendRaceFluff": {
        "name": "",
        "source": ""
    }
}

Height and Weight roller

  • The base Height should be in inches, the Weight in pounds. The modifiers should be in dice format (xdy)
"heightAndWeight": {
    "baseHeight": ,
    "heightMod": "",
    "baseWeight": ,
    "weightMod": ""
},

Data field list

If you do not include the required fields (denoted with bold text) the JSON may pass JSONLint but will fail upon stitch.

Key Data Type Description Required
name String The name of the race. True
source String The JSON identifier, as seen in Homebrew: Meta. True
page Integer Page number where the race can be found in the source document, if applicable False
ability Array Ability bonuses. True
size String Must be "S" (small), "M" (medium), "V" (varies). True
speed Object More than one speed can be defined. True
darkvision Integer Shown as feet. False
entries Array of Objects Will show up under the "Traits" tab. True
fluff Array of Objects Will show up under the "Info" tab. It requires the "name" and "source" of the race it belongs to. False
soundClip String A direct link to the file is needed. See Direct Link. False
subraces Array Subraces inherit some characteristics of their base race. More info bellow. False

Filter field list

The fields here will not add any visible info to the entries, but will make it so the filters work with your homebrew. They are not required, but really helpful.

Field Name Data Type Description Required
languageProficiencies Array False
traitTags Array of Strings False
skillProficiencies Array False
Learn More
In the example; the "Race" is defined.




๐Ÿ—„๏ธ Reference Files:
๐Ÿ›ข๏ธ Requirements Specs (Schemata)
[[ |๐Ÿงพ Blank Template]]
๐Ÿ“– Sample JSON
๐Ÿ’พ Functional Example
๐Ÿ“š Repository of Other Examples


Reference Tag: (how to link to entries within the strings)
"{@race <name_of_race> | <json_source> | <optional_text_information>}":)


Example:
{@race Aarakocra|eepc}
{@race Aarakocra|eepc|and optional link text added with another pipe}


Homebrew Support

Known Issues
Looks like its perfect... (Did we miss anything?)


FAQ
Nothing's here (Do you have any suggestions?)
Best Practices
None as yet (Do you have any suggestions?)



Related Features


Did that answer your question(s)?

If not please check the under Support; Troubleshooting or the Known Issues page for further guidance, or go to the Discord community and leave a comment in the issues channel.

If you enjoy the project, please follow this link to see how you can contribute and help make it even better.