{# # Read-only character sheet. Table-shaped where the paper sheet itself is # (ability scores, skills, attacks); the prose helpers (_line, _section, mod) # are borrowed from the enemy stat block, another 5e sheet. # {% import 'characters/_sheet.html.twig' as cs %} # {{ cs.block(character) }} #} {% macro block(c) %} {% import 'enemy/_statblock.html.twig' as sb %}
Race
{{ c.race ?: '—' }}
Class & level
{{ c.characterClass ? c.characterClass ~ ' ' ~ c.level : '—' }}
Background
{{ c.background ?: '—' }}
Alignment
{{ c.alignment ?: '—' }}
Player
{{ c.playerName ?: '—' }}
Experience
{{ c.experiencePoints is not null ? c.experiencePoints ~ ' XP' : '—' }}
Armor Class
{{ c.armorClass ?? '—' }}
Initiative
{{ c.initiative is not null ? sb.mod(c.initiative) : '—' }}
Speed
{{ c.speed ?: '—' }}
Hit Points
{%- if c.currentHitPoints is not null or c.hitPointMaximum is not null -%} {{ c.currentHitPoints ?? '?' }}{{ c.hitPointMaximum ? ' / ' ~ c.hitPointMaximum }}{{ c.temporaryHitPoints ? ' (+' ~ c.temporaryHitPoints ~ ' temp)' }} {%- else -%}—{%- endif -%}
Hit Dice
{{ c.hitDice ?: '—' }}
Proficiency Bonus
{{ sb.mod(c.proficiencyBonus) }}
Passive Perception
{{ c.passivePerception }}
Inspiration
{{ c.inspiration ? 'Yes' : '—' }}
{% for ability in constant('App\\Entity\\Character::ABILITIES') %} {% set score = c.abilityScore(ability) %} {% endfor %}
AbilityScoreModSave
{{ ability }} {{ score }} {{ sb.mod(c.abilityModifier(score)) }} {{ sb.mod(c.saveModifier(ability)) }}{{ c.isProficientInSave(ability) ? ' ●' }}
{% for skill, ability in constant('App\\Entity\\Character::SKILLS') %} {% set proficient = c.isProficientInSkill(skill) or c.hasExpertiseInSkill(skill) %} {% endfor %}
SkillAbl.Mod
{{ skill }}{{ c.hasExpertiseInSkill(skill) ? ' ●●' : (proficient ? ' ●') }} {{ ability|slice(0, 3) }} {{ sb.mod(c.skillModifier(skill)) }}
{% if c.attacks is not empty %}

Attacks & Spellcasting

{% for atk in c.attacks %} {% endfor %}
NameAtk BonusDamage/TypeRange
{{ atk.name }} {{ atk.bonus }} {{ atk.damage }} {{ atk.range }}
{% endif %} {{ sb._section('Spellcasting', c.spellcasting) }} {{ sb._section('Features & Traits', c.featuresTraits) }} {{ sb._section('Other Proficiencies & Languages', c.otherProficienciesLanguages) }} {{ sb._section('Equipment', c.equipment) }} {% if c.personalityTraits or c.ideals or c.bonds or c.flaws %}

Personality

{{ sb._line('Traits', c.personalityTraits) }}
{{ sb._line('Ideals', c.ideals) }}
{{ sb._line('Bonds', c.bonds) }}
{{ sb._line('Flaws', c.flaws) }}
{% endif %} {{ sb._section('Appearance', c.appearance) }} {{ sb._section('Backstory', c.backstory) }} {{ sb._section('Allies & Organizations', c.alliesOrganizations) }} {{ sb._section('Treasure', c.treasure) }} {% endmacro %}