> [!NOTE|div-m] Player Name: `Ashe`
> [!column|no-i no-t]
>> [!div-m|no-title]
>> ![[balthier_edit.jpg|center|400]]
>
>> [!div-m|no-title] Place Name
>> ~~~meta-bind
>> INPUT[select(
>> option(1, ℹ️General),
>> option(2, 🧙Description),
>> option(3, ⚙️Configure),
>> option(4, 📝DM Notes),
>> class(tabbed)
>> )]
>> ~~~
>>>[!tabbed-box-maxh480|10]
>>> >[!div-m|no-title]
>>> > ![[#General|no-h clean]]
>>>
>>> >[!div-m|no-title]
>>> > ![[#Description|no-h clean]]
>>>
>>> >[!div-m|no-title]
>>> > ![[#Configure|no-h clean]]
>>>
>>> > [!div-m|no-title]
>>> > ![[#DM Notes|no-h clean]]
>>>
> [!NOTE|no-title]
> ~~~meta-bind
> INPUT[select(
> option(1, 🤹Abilities+Skills),
> option(2, 💪Traits),
> option(3, ⚔️Inventory),
> option(4, 🔗Connections),
> option(5, 🧑🤝🧑Relationships),
> class(tabbed)
> )]
> ~~~
> >[!tabbed-box-maxh]
> > >[!div-m|no-title]
> > > ![[#Skills|no-h clean]]
> >
> > >[!div-m|no-title]
> > > ![[#Traits|no-h1 clean]]
> >
> > > ![[#Inventory|no-h1 clean]]
> >
> > > [!div-m|no-title]
> > > ![[#Connections|no-h1 clean]]
> >
> > > [!div-m|no-title]
> > > ![[#Relationships|no-h1 clean]]
---
# General
```badges
items:
- label: Race
value: '{{frontmatter.char_race}}'
- label: Level
value: '{{frontmatter.level}}'
- label: Initiative
value: '{{frontmatter.modifier}}'
```
<br>
```badges
items:
- label: AC
value: '{{frontmatter.ac}}'
```
<br>
```healthpoints
state_key: balthier_health
health: '{{ frontmatter.hp }}'
reset_on: long-rest
hitdice:
dice: d6
value: 3
```
```event-btns
items:
- name: Short Rest
value: short-rest
- name: Long Rest
value: long-rest
```
# Description
22 years old, male, fair skin, hazel eyes, blond hair. 6' tall, 172 lbs.
**True name:** Freastan Ceddsson
# Configure
| Stat | Value |
| ---------- | --------------------------------------------- |
| Status | `INPUT[template-person-status][:char_status]` |
| Race | `INPUT[template-person-race][:char_race]` |
| Class | `INPUT[template-person-class][:char_class]` |
| Level | `INPUT[number:level]` |
| Gender | `INPUT[template-person-gender][:char_gender]` |
| Age | `INPUT[template-person-age-range][:char_age]` |
| HP | `INPUT[number:hp]` |
| Max HP | `INPUT[number:max_hp]` |
| AC | `INPUT[number:ac]` |
| Initiative | `INPUT[number:modifier]` |
# DM Notes
nothing so far
# Skills
```ability
abilities:
strength: 12
dexterity: 14
constitution: 12
intelligence: 17
wisdom: 8
charisma: 13
proficiencies:
- intelligence
- dexterity
```
```skills
proficiencies:
- gearcraft
- insight
- investigation
- persuasion
- sleight of hand
```
# Traits
Feats, class features, and other traits are listed here.
### Fierce and Warlike (Origin)
```consumable
label: "Adrenaline Rush"
state_key: balthier_special_dash_uses
uses: 2
reset_on: ["short-rest", "long-rest"]
```
**You can take the Dash action as a Bonus Action. When you do so, you gain `VIEW[floor((number({level})-1)/4)+2]` Temporary Hit Points** _(N = PB)_.
You can use this trait `VIEW[floor((number({level})-1)/4)+2]` times _(N = PB)_, and you regain all expended uses when you finish a Short or Long Rest.
You have **Darkvision** with a range of 120 feet.
```consumable
label: "Relentless Endurance"
state_key: balthier_avoid_death_uses
uses: 1
reset_on: ["long-rest"]
```
**When you are reduced to 0 Hit Points but not killed outright, you can drop to 1 Hit Point instead.** Once you use this trait, you can't do so again until you finish a Long Rest.
### Crafter (Origin Feat)
**_Discount._** Whenever you buy a nonmagical item, you receive a 20% discount on it.
**_Fast Crafting._** When you finish a Long Rest, you can craft one piece of gear from the **Fast Crafting** table, provided you have the Artisan's Tool associated with that item and have proficiency with that tool. The item lasts until you finish another Long Rest, at which point the item falls apart.
**Fast Crafting Table**
| Artisan's Tools | Crafted Gear |
| ----------------------- | --------------------------------------------------------- |
| *Carpenter's Tools* | Ladder, Torch |
| *Leatherworker's Tools* | Case, Pouch |
| Mason's Tools | Block & Tackle |
| Potter's Tools | Jug, Lamp |
| *Smith's Tools* | Ball Bearings, Bucket, Caltrops, Grappling Hook, Iron Pot |
| **Tinker's Tools** | **Bell, Shovel, Tinderbox** |
| *Weaver's Tools* | Basket, Rope, Net, Tent |
| Woodcarver's Tools | Club, Greatclub, Quarterstaff |
_(Bolded tools are in Balthier's inventory, italicised tools are ones he is proficient in)_
### Favoured by Vomonios (Blessing)
You get a +1 bonus to Charisma (Performance or Persuasion) checks made while speaking or performing.
### Clockwork Companion (Engineer 1st Level)
You have built an automaton to accompany you in your adventure. Your automaton is a bipedal Construct of Medium size, with its statistics described below. It is constructed of whirring gears and thumping pistons – though ultimately you decide its exterior form and skeletal proportions – and is powered by one or more miniature coal steam engines.
It has its own Hit Dice, and you can spend them to repair it during a Short Rest. As a Construct, it can't benefit from normal healing effects (though it may be able to receive Temporary Hit Points from some effects). Whenever you gain a level in this class, your automaton also levels up, and it can increase its Hit Point maximum using its Hit Dice as normal. Your automaton has proficiency in two saving throws of your choice, and is proficient with any weapons you install on it. When it would use its Proficiency Bonus, use your Proficiency Bonus instead.
Your automaton moves and acts on your turn, though it doesn't take an action unless you command it to (see [[#By My Command (Engineer 1st Level)|By My Command]]). Outside of combat, it is assumed that it follows alongside you unless you command it otherwise.
Your automaton does not need to eat, drink, or rest (except to repair), but must be refuelled with densified coal once per day. After 30 hours (1 day + 6 hours) without fuel, it gains 1 level of [[3-Mechanics/Rules/Conditions.md#Exhaustion|Exhaustion]] per hour until it becomes [[3-Mechanics/Rules/Conditions.md#Incapacitated|Incapacitated]]. Refuelling it immediately removes all levels of Exhaustion. Your automaton must intake air to keep its steam engine operational; it follows the normal rules for [[Hazards#Suffocation|suffocation]]. The automaton is protected from rain and incidental splashes of water, but if it is ever submerged, it becomes [[3-Mechanics/Rules/Conditions.md#Incapacitated|Incapacitated]] and you must remove it from the water, dry it out during a long rest, and spend 200 gp to restart its steam engine.
If your automaton is reduced to 0 Hit Points, it becomes [[3-Mechanics/Rules/Conditions.md#Incapacitated|Incapacitated]]. It does not make Death Saving Throws. If it takes damage equal or greater to its Hit Point maximum while at 0 Hit Points, it is destroyed. If your automaton is destroyed, you must spend 3 days and 1500 gp to build another.
### By My Command (Engineer 1st Level)
You can issue your automaton commands by inserting and removing notched metal bars called "command rods" into its back (or another part of it that you designate). You therefore must be within 5 feet of your automaton to give it commands, and you must have free use of at least one hand. If your automaton has completed the most recent set of commands you have given it, it is [[3-Mechanics/Rules/Conditions.md#Incapacitated|Incapacitated]] until you give it new commands.
You may use an action to command it to take the Attack, Dash, Disengage, Dodge, Help, Ready, or Utilise [[Actions|actions]] (this means that you and your automaton cannot attack on the same turn until you gain other class features). Commanding the automaton to move during your turn may be done freely; its Speed is separate from yours (though remember that you must be near it to issue new commands on your next turn). You can also queue your control rods, issuing multiple commands and movements to be carried out in sequence (though no more than your automaton could normally take in a turn).
The command rods are kept in a bag or other receptacle on your person. They are unique to you and your automaton; even if another person stole them from you, they would not know their individual meanings nor how to use them.
### Automated Contingency (Engineer 2nd Level)
You have developed a set of command "programs" for your automaton to follow should something befall you. If the automaton detects that you are [[3-Mechanics/Rules/Conditions.md#Incapacitated|Incapacitated]] for any reason, it will begin executing its selected program. Choose one of the following:
* **_Aegis Mode._** The automaton physically shields you from harm as best as it is able. It stands adjacent to you, between you and any threat that it can see, rotating slightly to respond to each attacker. While you are shielded in this way, you have Three-Quarters Cover against ranged attacks and area-of-effect attacks. Any attempt to target you with a melee attack will be redirected to target your automaton. If separated from you, the automaton will use as much of its movement as necessary to reach your position and resume protection.
* **_Vindicator Mode._** The automaton takes an aggressive stance adjacent to you. Whenever you are the target of an attack, the automaton will use its Reaction to make an attack against the enemy if it is within range (the reaction attack takes place after the enemy's attack). If your turn ends and you haven't taken an Action, the automaton will attack the closest hostile creature to you. If separated from you, the automaton will use as much of its movement as necessary to reach your position and resume guarding you.
* **_Self-Defence Mode._** The automaton will, during your turn, attack the most recent (or, if not possible, the nearest) creature that attacked it since the end of your last turn, using as much of its movement as necessary to get within range. Otherwise, it takes no action and does not move.
If you stop being Incapacitated, your automaton immediately exits its contingency program. As a Bonus Action on your turn, you may change its current program (you must be within 5 feet of it to do so).
### Incidental Protection (Titan Form 3rd Level)
Your automaton's massive size allows it to more easily shield you. As long as you are within 15 feet of your automaton, you gain +3 to your AC.
# Inventory
The following items belong to `= this.file.name`.
Items: `INPUT[inlineListSuggester(optionQuery(#Category/Item)):char_items]`
# Proficiencies
**Armour:** Light Armour
**Weapons:** Simple weapons, hand crossbows
**Tools:** Carpenter's Tools, Chemist's Supplies, Leatherworker's Tools, Smith's Tools, Tinker's Tools, Weaver's Tools
# Connections
Is the person linked to any groups or quests?
Quests: `INPUT[inlineListSuggester(optionQuery(#Category/Quest)):Connected_Quests]`
Groups: `INPUT[inlineListSuggester(optionQuery(#Category/Group)):Connected_Groups]`
# Relationships
List important relationships here.
```dataviewjs
var parents = dv.current().parents ?? [];
var children = dv.current().children ?? [];
var enemies = dv.current().enemies ?? [];
var allies = dv.current().allies ?? [];
var siblings = dv.current().siblings ?? [];
var current = dv.current().file.name;
var partner = dv.current().partner ?? [];
dv.paragraph("```mermaid\nflowchart LR\n" +
// Parents with internal-link on individual nodes only
(parents.length > 0 ? parents.map((parent, index) => `P${index + 1}[${parent}]:::internal-link\nP${index + 1} --> Current\n`).join('') : '') +
// Current node
`Current[${current}]\n` +
// Partner group node (no internal-link applied)
(partner.length > 0 ? `PT[Partner]\nCurrent --> PT\n` : '') +
// Individual partners with internal-link
(partner.length > 0 ? partner.map((p, index) => `PT${index + 1}[${p}]:::internal-link\nPT --> PT${index + 1}\n`).join('') : '') +
// Children group node (no internal-link applied)
(children.length > 0 ? `C[Children]\nCurrent --> C\n${children.map((child, index) => `C${index + 1}[${child}]:::internal-link\nC --> C${index + 1}\n`).join('')}` : '') +
// Siblings group node (no internal-link applied)
(siblings.length > 0 ? `S[Siblings]\nCurrent --> S\n${siblings.map((sibling, index) => `S${index + 1}[${sibling}]:::internal-link\nS --> S${index + 1}\n`).join('')}` : '') +
// Enemies group node (no internal-link applied)
(enemies.length > 0 ? `E[Enemies]\nCurrent --> E\n${enemies.map((enemy, index) => `E${index + 1}[${enemy}]:::internal-link\nE --> E${index + 1}\n`).join('')}` : '') +
// Allies group node (no internal-link applied)
(allies.length > 0 ? `A[Allies]\nCurrent --> A\n${allies.map((ally, index) => `A${index + 1}[${ally}]:::internal-link\nA --> A${index + 1}\n`).join('')}` : '') +
// Styling: Apply internal-link only to individual nodes, not group nodes
`class ${parents.length > 0 ? parents.map((_, index) => `P${index + 1},`).join('') : ''}Current${children.length > 0 ? children.map((_, index) => `C${index + 1},`).join('') : ''}${siblings.length > 0 ? siblings.map((_, index) => `S${index + 1},`).join('') : ''}${enemies.length > 0 ? enemies.map((_, index) => `E${index + 1},`).join('') : ''}${allies.length > 0 ? allies.map((_, index) => `A${index + 1},`).join('') : ''} internal-link;`
)
```
%% CODE ABOVE CREATED WITH CHAT-GPT. ITS COMPLEX CODE THAT SHOULD NOT BE CHANGED UNLESS YOU KNOW WHAT YOU ARE DOING %%
%% MERMAID-FIX-TEXT-CLIPPING.CSS is enabled in Settings > Appearance > CSS Snippets. This fixes text clipping and styles the boxes %%
> [!NOTE]- Relationship Config - Enter name of People Notes
> `BUTTON[button_person]` Nodes will link to notes of the same name.
>
> | Parents | Partner | Children |
> | --- | --- | --- |
> | `INPUT[list:parents]` | `INPUT[list:partner]` | `INPUT[list:children]` |
>
> | Siblings | Enemies | Allies |
> | --- | --- | --- |
> | `INPUT[list:siblings]` | `INPUT[list:enemies]` | `INPUT[list:allies]` |
```dataviewjs
const player = dv.current();
const factions = dv.pages('"3-Mechanics/Guilds and Groups"');
let tableData = [];
for (let faction of factions) {
let factionName = faction.faction;
let playerStanding = player.faction_standing?.[factionName] || 0;
// Ensure benefits is treated as an array
let benefitsList = Array.isArray(faction.benefits) ? faction.benefits : [];
// Filter benefits the player qualifies for
let qualifiedBenefits = benefitsList
.filter(b => playerStanding >= b.standing)
.map(b => b.reward)
.join(", ");
let primaryContact = faction.primary_contact || "No contact set";
tableData.push([factionName, playerStanding, qualifiedBenefits || "No benefits yet", primaryContact]);
}
dv.table(["Faction", "Your Standing", "Benefits", "Primary Contact"], tableData);
```