Difference between revisions of "Homebrew: Feat"

From 5etools Community Wiki
Jump to: navigation, search
(Field List (Sources))
(Restructure - still WIP)
Line 1: Line 1:
__NOTOC__
 
 
{{HomebrewHeader}}
 
{{HomebrewHeader}}
 +
A feat in 5eTools is a commonly used variant rule that happens every 4 levels granting a special feature and powers.
 +
==Building a feat==
 +
As with any Homebrew item, make sure you have reviewed the [[Homebrew: Meta|'''_Meta''']] section. If your file doesn't have it, it won't work.
  
==🍺Building a '''feat'''==
+
===Basic skeleton===
A feat in 5eTools is a commonly used variant rule that happens every 4 levels granting a special feature and p
+
To start, copy the following code block and fill the empty <code>""</code> values.
 +
<div class="toccolours mw-collapsible mw-collapsed" overflow:auto;">
 +
<div style="font-weight:bold;line-height:2;">Feat code block</div>
 +
<div class="mw-collapsible-content">
 +
"feat": [
 +
    {
 +
        "name": "",
 +
        "source": "",
 +
        "entries": [
 +
            ""
 +
        ]
 +
    }
 +
]
 +
</div></div>
 +
 
 +
:* <code>"name"</code> — the name of the feat.
 +
:* <code>"source"</code> — make sure it is the same as the <code>"json"</code> key in the '''_meta'''.
 +
:* <code>"entries"</code> — consists of text strings ("") separated by commas.
 +
 
 +
==More options==
 +
Make sure you are adding these blocks in the same level as the <code>"name"</code>, <code>"source"</code>, etc.
 +
===Ability score increase===
 +
You can define an ability score increase from the feat. Really useful for filtering purposes.
 +
"ability": [
 +
    {
 +
        "cha": 1
 +
    }
 +
]
 +
You can also choose from a list of abilities.
 +
"ability": [
 +
    {
 +
        "choose": {
 +
            "from": [
 +
                "str",
 +
                "cha"
 +
            ],
 +
            "amount": 1
 +
        }
 +
    }
 +
]
 +
:*<code>"amount"</code> — the quantity the ability score will increase.
 +
:*<code>"count"</code> — in case you want to give the option to choose more than one option (when not present, it defaults to 1).
 +
 
 +
Weighted options are a possibility as well.
 +
"ability": [
 +
    {
 +
        "choose": {
 +
            "weighted": {
 +
                "from": [
 +
                    "str",
 +
                    "dex",
 +
                    "con"
 +
                ],
 +
                "weights": [
 +
                    1,
 +
                    2
 +
                ]
 +
            }
 +
        }
 +
    }
 +
]
 +
'''NOTE:''' adding an <code>"ability"</code> to a feat will a line to the text entry (or inside the list, if there's one) detailing the ability score increase. If you prefer this line to not appear, add the following line inside the code.
 +
"ability": [
 +
    {
 +
       
 +
        "hidden": true
 +
    }
 +
]
 +
 
 +
===Prerequisite===
 +
Some features will have a requisite, something that the player needs to fulfill if they want to be able to pick the feat, such as being a member of a certain race or having a high ability score. This is a very flexible category, so it is divided in several blocks.
 +
====Level====
 +
The simplest way to restrict by level is by Player Character level.
 +
"prerequisite": [
 +
    {
 +
        "level": 10
 +
    }
 +
]
 +
It is also possible to restrict by class/subclass level
 +
"prerequisite": [
 +
    {
 +
        "level": {
 +
            "level": 5,
 +
            "class":{
 +
                "name": "Fighter",
 +
                "source":"PHB",
 +
                "visible": true
 +
            }
 +
        }
 +
    }
 +
]
 +
:*<code>"visible"</code> — Governs whether or not the class name is visible in the list display/prerequisite line. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations.
 +
:*To restrict by subclass, simply change <code>"class"</code> for <code>"subclass"</code>
 +
 
 +
====Race====
 +
"prerequisite": [
 +
    {
 +
        "race": [
 +
            {
 +
                "name": "Elf",
 +
                "subrace": "drow",
 +
                "displayEntry": "Tel-quessir"
 +
            }
 +
        ]
 +
    }
 +
]
 +
:*<code>"name"</code> — the name of the race
 +
:*<code>"subrace"</code> — optional, name of the subrace
 +
:*<code>"displayEntry"</code> — optional long-form name to be used in the rendered entity.
 +
 
 +
====Ability====
 +
Write the first 3 letters of the ability, followed by the minimum score.
 +
"prerequisite": [
 +
    {
 +
        "ability": [
 +
            {
 +
                "dex": 13
 +
            }
 +
        ]
 +
    }
 +
]
 +
 
 +
====Spellcasting====
 +
The ability to cast at least one spell
 +
"prerequisite": [
 +
    {
 +
        "spellcasting": true
 +
    }
 +
]
 +
 
 +
====Pact====
 +
Warlock pacts, like <code>"Chain"</code>, <code>"Tome"</code>, <code>"Blade"</code> or <code>"Talisman"</code>.
 +
"prerequisite": [
 +
    {
 +
        "pact": "Chain"
 +
    }
 +
]
 +
 
 +
====Patron====
 +
Warlock patrons.
 +
"prerequisite": [
 +
    {
 +
        "patron": "The Archfey"
 +
    }
 +
]
 +
 
 +
====Spell====
 +
 
 +
 
 +
====Feature====
 +
 
 +
====Item====
  
====An Example:====
+
====Psionics====
The [[Homebrew: Meta|'''_Meta''']] is normally included in a full JSON, for this example it has been removed. See [[Homebrew: Meta|the link]] for how to develop the _meta.
 
  
"feat": [
+
====Proficiency====
{
 
"name": "Magically Gifted",
 
"source": "json_in_meta",
 
"prerequisite": [
 
{
 
"spellcasting": true
 
}
 
],
 
"entries": [
 
"A quirk of ancestry or a touch of extraplanar power has gifted you with the ability to manipulate the weave in ways your peers cannot. You gain the following benefits:",
 
{
 
"type": "list",
 
"items": [
 
"You gain one metamagic option of your choice from among those available to the {@class Sorcerer}.",
 
"If you have sorcery points, you add one more to your existing pool (regardless of when you gain them); otherwise, you have one sorcery point. This sorcery point is used to fuel your metamagic. A sorcery point is expended when you use it. You regain your expended sorcery point when you finish a long rest."
 
]
 
}
 
]
 
}
 
]
 
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:600px; overflow:auto;">
+
====Other====
<div style="font-weight:bold;line-height:1.6;">Learn More</div>
+
 
<div class="mw-collapsible-content">
+
 
: In the example; <description_of_results/fields>
+
 
</div></div>
+
 
 +
 
 +
 
 +
 
 +
==Reference Tag==
 +
How to link to entries within the <code>"entries":</code>
 +
::<code>{@feat <name_of_feat>|<json_source>|<optional_text></code>
 +
 
 +
:: Example:
 +
:::{@feat Alert}
 +
:::{@feat Elven Accuracy|xge}
 +
:::{@feat Elven Accuracy|xge|and optional link text added}
  
== Field List ('''Sources''') ==  
+
==Field List Sources==  
 
<small>If you do not include the required fields (denoted with bold text) the JSON may pass JSONLint but will fail upon stitch.</small>
 
<small>If you do not include the required fields (denoted with bold text) the JSON may pass JSONLint but will fail upon stitch.</small>
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
Line 69: Line 212:
 
----
 
----
  
<br/>
 
: <font color="#2e7bab">Reference Tag:</font> (how to link to entries within the <code>"entries":</code>)
 
::<code> </code>
 
<br/>
 
:: Example:
 
 
 
  
<br/>
+
==Homebrew Support==
=== Homebrew Support===
 
 
----
 
----
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:600px; overflow:auto;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:600px; overflow:auto;">
Line 97: Line 233:
 
<br/>
 
<br/>
 
----
 
----
==='''Related Features'''===
+
==Related Features==
 
----
 
----
 
:*[[Homebrew]]
 
:*[[Homebrew]]

Revision as of 18:57, 27 July 2020

framless
v1.1.0

A feat in 5eTools is a commonly used variant rule that happens every 4 levels granting a special feature and powers.

Building a feat

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.

Feat code block
"feat": [
    {
        "name": "",
        "source": "",
        "entries": [
            ""
        ]
    }
]
  • "name" — the name of the feat.
  • "source" — make sure it is the same as the "json" key in the _meta.
  • "entries" — consists of text strings ("") separated by commas.

More options

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

Ability score increase

You can define an ability score increase from the feat. Really useful for filtering purposes.

"ability": [
    {
        "cha": 1
    }
]

You can also choose from a list of abilities.

"ability": [
    {
        "choose": {
            "from": [
                "str",
                "cha"
            ],
            "amount": 1
        }
    }
]
  • "amount" — the quantity the ability score will increase.
  • "count" — in case you want to give the option to choose more than one option (when not present, it defaults to 1).

Weighted options are a possibility as well.

"ability": [
    {
        "choose": {
            "weighted": {
                "from": [
                    "str",
                    "dex",
                    "con"
                ],
                "weights": [
                    1,
                    2
                ]
            }
        }
    }
]

NOTE: adding an "ability" to a feat will a line to the text entry (or inside the list, if there's one) detailing the ability score increase. If you prefer this line to not appear, add the following line inside the code.

"ability": [
    {
        
        "hidden": true
    }
]

Prerequisite

Some features will have a requisite, something that the player needs to fulfill if they want to be able to pick the feat, such as being a member of a certain race or having a high ability score. This is a very flexible category, so it is divided in several blocks.

Level

The simplest way to restrict by level is by Player Character level.

"prerequisite": [
    {
        "level": 10
    }
]

It is also possible to restrict by class/subclass level

"prerequisite": [
    {
        "level": {
            "level": 5,
            "class":{
                "name": "Fighter",
                "source":"PHB",
                "visible": true
            }
        }
    }
]
  • "visible" — Governs whether or not the class name is visible in the list display/prerequisite line. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations.
  • To restrict by subclass, simply change "class" for "subclass"

Race

"prerequisite": [
    {
        "race": [
            {
                "name": "Elf",
                "subrace": "drow",
                "displayEntry": "Tel-quessir"
            }
        ]
    }
]
  • "name" — the name of the race
  • "subrace" — optional, name of the subrace
  • "displayEntry" — optional long-form name to be used in the rendered entity.

Ability

Write the first 3 letters of the ability, followed by the minimum score.

"prerequisite": [
    {
        "ability": [
            {
                "dex": 13
            }
        ]
    }
]

Spellcasting

The ability to cast at least one spell

"prerequisite": [
    {
        "spellcasting": true
    }
]

Pact

Warlock pacts, like "Chain", "Tome", "Blade" or "Talisman".

"prerequisite": [
    {
        "pact": "Chain"
    }
]

Patron

Warlock patrons.

"prerequisite": [
    {
        "patron": "The Archfey"
    }
]

Spell

Feature

Item

Psionics

Proficiency

Other

Reference Tag

How to link to entries within the "entries":

{@feat <name_of_feat>|<json_source>|<optional_text>
Example:
{@feat Alert}
{@feat Elven Accuracy|xge}
{@feat Elven Accuracy|xge|and optional link text added}

Field List Sources

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

Field Name Data Type Description Required
name String Feat's Title True
source String json (_meta's json value) True
additionalSources Array of Strings Ad False
page Integer page number within source False
entries Array of Strings action description True
ability Array of Objects descript False
srd Boolean Is it part of the SRD False
otherSources Array of Objects Listing of other sources this appears within False



🗄️ Reference Files:
🛢️ Requirements Specs (Schemata)
[[ |🧾 Blank Template]]
📖 Sample JSON
💾 Functional Example
📚 Repository of Other Examples


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.