Fatebenders NPC generator

NPC generator for Fatebenders RPG but is probably useful for any fantasy RPG.

  1. Click "Roll".
  2. Select a city district where your players meet this character.
  3. Select the NPC's level interval, profession and whether it's a group or an individual.
  4. Click "Roll again" until you get an inspiring character.
  5. Click the button above the generated character to copy and paste them into your campaign notes for future reference.
  6. Change any generated detail that you don't like or that you already have other ideas for.

You'll notice that there are no mystic-specific military professions in the Profession selection. This is because mystics can use any equipment and fulfill any role in combat. Their abilities simply give them more options to better fulfill their role.

Citation

Fatebenders by Robert Peetsalu, CC0 1.0

This chart uses input variables
  • District
  • Profession
  • Generate_a_group
  • NPC_level_interval
  • Name
Result

{# Get equipment of the selected profession #}
{% abilities_by_level = get_chart id:90437 %}

{# Generate NPC level #}
{%if NPC_level_interval == "1 .. 20"%}
{% NPC_level_interval = {50%?1 .. 4|30%?5 .. 8|?9 .. 20} %}
{%end%}
{%if NPC_level_interval == "1 .. 4"%}
{% shift = 0 %}
{% level = {1d4} %}
{%elif NPC_level_interval == "5 .. 8"%}
{% shift = 3 %}
{% level = {lowest(1, 2d4) + 4} %}
{%elif NPC_level_interval == "9 .. 20"%}
{% shift = 6 %}
{% level = {lowest(1, 3d12) + 8} %}
{%end%}
{% abilities = abilities_by_level.$level %}

{# Set a starting index for addressing columns in the equipment table to give higher level characters better equipment #}
{% index = {2 + {$shift} } %}

{# Get civilian profession names and a random encounter location based on selected district #}
{% profession_weights = roll_chart filter_cols:1 filter_exact:District id:76327 %}
{% encounter_location = profession_weights.2.value %}

{# Load a name table based on chosen language #}
{%if Name == "Random"%}
{% civ = roll_chart id:80444 %}
{%else%}
{% civ = roll_chart filter_cols:1 filter_exact:Name id:80444 %}
{%end%}
{% male = {$civ.Male_names_table.value} |> roll_chart %}
{% female = {$civ.Female_names_table.value} |> roll_chart %}

{%if Generate_a_group == "No"%}
{# Change profession name in case it's a civilian NPC #}
{% profession_name = Profession %}
{%if profession_name == "civilian likely met in this district"%}
{% person_number = {d{ ceil( {$profession_weights.3.value}/3.654 ) }} %}
{% person_number = {{$person_number }} %}
{% weights = remove at:"1-3" source:profession_weights %}
{% checked_people = 0 %}
{%for column in weights%}
{% weight = {ceil( {$column.value}/3.654 )} %}
{%if {{$checked_people} + {$weight}} >= person_number%}
{% profession_name = column.name %}
{%else%}
{% checked_people = {{$checked_people} + {$weight}} %}
{%end%}
{%end%}
Resolve: {**{$female}**, a female|**{$male}**, a male} { $profession_name } (age Roll lowest(1, 3d40) + 13 + {$level}, level {$level})

  • Meets the party at the {$District}, perhaps at the {$encounter_location}
    {%-else%}
    {% equipment = roll_chart filter_cols:1 filter_exact:Profession id:89104 %}
    Resolve: {**{$female}**, a female|**{$male}**, a male} { $profession_name } (age Roll lowest(1, 3d40) + 13 + {$level}, level {$level})

  • Meets the party at the {$District}, perhaps at the {$encounter_location}

  • Is {{equipment.$index}}
    {%- index = {3 + {$shift} } %}, {{equipment.$index}}
    {%- index = {4 + {$shift} } %}Resolve: { }and wears {{equipment.$index}} armor
    {%-end%}
  • {{ {abilities.Probabilities.rolled == 0} |> if_true else:{Is Attuned and prefers to use **JOIN(", ", Roll on "Abilities in Fatebenders RPG" (cols="1", render_style="vertical_no_col_names") {$abilities.Probabilities.rolled} times (unique rows only))**
    * Motive: **SNTCE(Roll on "NPC motives")**} then:{Motive: **SNTCE(Roll on "NPC motives")**} }}
  • Weakness: Roll on "NPC weaknesses"
  • Asset: Roll on "NPC assets"
  • Attitude towards the party: (define after encountering them)

{%else%}
{# Generate group description #}
{%if Profession == "civilian likely met in this district"%}
A group of Roll 2d8 level { $level } civilians
{%else%}
{% equipment = roll_chart filter_cols:1 filter_exact:Profession id:89104 %}
A group of Roll lowest(1, 2d8) + 1 level { $level } { $equipment.11 }
* Each of them {{equipment.$index}}
{%- index = {3 + {$shift} } %}, {{equipment.$index}}
{%- index = {4 + {$shift} } %}Resolve: { }and wears {{equipment.$index}} armor.
{%end%}
{%end%}


Subcharts

Equipment (d8)

d8 Role Armed1to4 Sidearm1to4 Armor1to4 Armed5to8 Sidearm5to8 Armor5to8 ArmedOver9 SidearmOver9 ArmorOver9 RolePlural

1

guard or bodyguard

armed with a spear

has a club as a sidearm

quilted

armed with a polearm

has a mace as a sidearm

mail

armed with a spear and a large shield

has a sword as a sidearm

plate

guards or bodyguards

2

thug or robber

armed with a club or a crowbar

has a dagger as a sidearm

no

armed with a mace

is ready to draw throwing knives

quilted

armed with a sword and a dagger

is ready to draw throwing knives and dust balls

mail

thugs or robbers

3

infantry soldier or mercenary

armed with a spear and a large shield

has a dagger as a sidearm

quilted

armed with an axe and a large shield

has a sword as a sidearm

mail

armed with a javelin and large shield

equips a spear after throwing the javelin, has a sword as a sidearm

plate

infantry soldiers or mercenaries

4

skirmisher

armed with a sling

has a dagger as a sidearm and a spare sling

no

armed with a javelin and a small shield

has a dagger, a sling and a quiver of javelins at the ready

quilted

armed with a javelin and a pavise shield

has a bola, a sword and a quiver of javelins at the ready

mail

skirmishers

5

hunter, scout or archer

armed with a hunting bow

has a dagger as a sidearm

no

armed with a war bow or a crossbow

has a dagger as a sidearm

quilted

armed with a war bow or a crossbow

is ready to equip a pavise shield and draw a sword or a dagger

mail

hunters, scouts or archers

6

squire or knight

armed with a spear and a large shield

has a sword as a sidearm

mail

armed with a polearm

is ready to draw a sword and a heater (small shield)

plate

armed with a war bow

has a two-handed sword, a mace and a dagger as sidearms

plate

squires or knights

7

warrior monk

armed with a staff

has no sidearm

no

armed with a staff

has a sling at the ready

quilted

armed with a staff

has a sling, a rope dart or a meteor hammer at the ready

quilted

warrior monks

8

wrestler or pit-fighter

unarmed

has no sidearm

no

unarmed

has a dagger as a sidearm

quilted

unarmed

is ready to draw two daggers

quilted

wrestlers or pit-fighters