Files
roll20-character-sheets/Esper_Genesis_5E/src/pc/ship.pug
T
2026-05-31 10:10:35 -04:00

346 lines
14 KiB
Plaintext

mixin subtitle(key)
h3
span(data-i18n=key)
mixin headerEntry(name)
label(for=`attr_pc_ship_${name}`)
span(data-i18n=`pc_ship_${name}`)
input(type='text' name=`attr_pc_ship_${name}`)
mixin abilityBox(name, ...abilities)
+subtitle(`pc_ship_${name}`)
.sheet-scores.sheet-flex-container
each ability in abilities
+ability(ability, name)
span(data-i18n='pc_ship_modifiers')
mixin ability(name, owner)
.sheet-ability
label(for=`attr_pc_ship_${name}_${owner}`)
span(data-i18n=`pc_ship_${name}`)
input(type='text' name=`attr_pc_ship_${name}_${owner}`)
mixin armorClassOrManeuverEntry(name)
div
input(type='text' name=`attr_pc_ship_${name}`)
label(for=`attr_pc_ship_${name}`)
span(data-i18n=`${name.replace(/_/g,'-')}`)
.sheet-pc-ship
input.tab-button.type-pc(id='tab-type-pc-ship' name='attr_pc_sheet_type' type='radio' value!='pc' checked='checked')
input.tab-button.type-starship(id='tab-type-starship-ship' name='attr_pc_sheet_type' type='radio' value!='starship')
.sheet-top
.sheet-ship-top-layout
.sheet-token-frame
img.sheet-char-avatar(name='attr_character_avatar')
.sheet-ship-info
.sheet-flex-container
label(for='attr_character_name')
span(data-i18n='pc_ship_name')
input(type='text' name='attr_character_name')
+headerEntry('owner')
.sheet-flex-container
+headerEntry('size_category')
label(for='attr_pc_ship_weight')
span(data-i18n='pc_ship_weight')
input.sheet-ship-compact(type='text' name='attr_pc_ship_weight')
label(for='attr_pc_ship_hull_type')
span(data-i18n='pc_ship_hull_type')
input.sheet-ship-compact(type='text' name='attr_pc_ship_hull_type')
+headerEntry('crew_capacity')
+headerEntry('cargo_capacity')
.sheet-crew-roles
h3
span(data-i18n='crewmember-roles') Crewmember Roles
.sheet-flex-container
label.sheet-crew-field
input(type='text' name='attr_pc_ship_crew_pilot_name')
span PILOT
label.sheet-crew-field
input(type='text' name='attr_pc_ship_crew_tech1_name')
span TECHNICIAN 1
label.sheet-crew-field
input(type='text' name='attr_pc_ship_crew_tech2_name')
span TECHNICIAN 2
label.sheet-crew-field
input(type='text' name='attr_pc_ship_crew_copilot_name')
span CO-PILOT
label.sheet-crew-field
input(type='text' name='attr_pc_ship_crew_captain_name')
span CAPTAIN
.ship-tab-row
label.tab-label.type-pc(for='tab-type-pc-ship') PC
label.tab-label.type-starship(for='tab-type-starship-ship') STARSHIP
.sheet-middle.sheet-grid-container
.sheet-col-left
.sheet-grid-container.sheet-abilities
.sheet-pilot
+abilityBox('pilot', 'dexterity', 'wisdom')
.sheet-captain
+abilityBox('captain','wisdom', 'charisma')
.sheet-technician1
+abilityBox('technician1', 'intelligence', 'wisdom')
.sheet-technician2
+abilityBox('technician2', 'intelligence', 'wisdom')
.sheet-commander
+abilityBox('commander', 'dexterity', 'intelligence', 'wisdom', 'charisma')
.sheet-grid-container.sheet-sensors-and-initiative
.sheet-sensors
+subtitle('pc_ship_sensors')
label(for='attr_pc_ship_sensors')
input(type='text' name='attr_pc_ship_sensors')
span(data-i18n='pc_ship_sensors_info')
.sheet-initiative
+subtitle('pc_ship_initiative')
label.sheet-grid-container(for='attr_pc_ship_initiative')
input(type='text' name='attr_pc_ship_initiative')
span(data-i18n='pc_ship_initiative_info')
.sheet-col-center
.sheet-piloting-maneuver-check
h3
button(type='roll' name='roll_pc_ship_piloting' value!="@{wtype}&{template:npc} {{name=@{character_name}}} {{rname=^{piloting-check}}} {{mod=[[0+@{pc_ship_piloting_num}]]}} {{r1=[[@{d20}+@{pc_ship_piloting_num}]]}} @{rtype}+@{pc_ship_piloting_num}]]}} {{type=Vehicle}}")
span(data-i18n='piloting-maneuver-check')
.sheet-fancy-input
img(src=`${imagePath}/piloting_maneuver_check.png` alt='Piloting maneuver Check')
input(type='hidden' name='attr_pc_ship_piloting_num' value='0')
input(type='text' name='attr_pc_ship_piloting_maneuver_check')
p
span(data-i18n='piloting-maneuver-check-info')
.sheet-command-dice
h3
span(data-i18n='command-dice')
label(for='attr_pc_ship_command_dice')
span(data-i18n='type-u')
select(name='attr_pc_ship_command_dice')
option(value='') None
option(value='d6') d6
option(value='d8') d8
option(value='d10') d10
.sheet-grid-container
label(for='attr_pc_ship_total_dice')
span(data-i18n='total-dice')
input(type='number' name='attr_pc_ship_total_dice')
label(for='attr_pc_ship_total_dice')
span(data-i18n='dice-used')
input(type='number' name='attr_pc_ship_total_dice')
.sheet-grid-container.sheet-intercept-speed
div
.sheet-fancy-input
img(src=`${imagePath}/intercept_speed.png` alt='Intercept Speed')
input(type='text' name='attr_pc_ship_intercept_speed')
div
+subtitle('intercept-speed')
label(for='attr_pc_ship_intercept_speed')
input(type='checkbox' name='attr_pc_ship_stardrive' value='1')
span(data-i18n='startdrive')
.sheet-col-right
.sheet-maneuver-save
+subtitle('maneuver-save-dc')
.sheet-grid-container
div
.sheet-fancy-input
img(src=`${imagePath}/maneuver_save_dc.png` alt='maneuver Save DC')
input(type='text' name='attr_pc_ship_maneuver_save_dc')
div
label(for='attr_pc_ship_maneuver_save_sc')
span(data-i18n='maneuver-save-dc-info')
.sheet-weapon-systems
.sheet-grid-container.sheet-max-weapon-payload
label(for='attr_pc_ship_max_weapon_payload')
span(data-i18n='max-weapon-payload')
div
input(type='text' name='attr_pc_ship_max_weapon_payload')
+subtitle('weapon-systems')
+repeatingSection('weapon-systems')
input(type='hidden' name='attr_rollbase' value!='@{wtype}&{template:atkdmg} {{attack=1}} {{damage=1}} {{dmg1flag=1}} {{mod=[[0@{tohit}]]}} {{rname=@{weapon}}} {{r1=[[@{d20}@{tohit}]]}} {{normal=1}} {{r2=[[0d20]]}} {{range=@{range}}} {{dmg1=[[@{damage}+0]]}} {{dmg1type=@{dmgtype}}} {{desc=@{special}}} ammo=@{ammo} {{licensedsheet=@{licensedsheet}}}')
input(type='hidden' name='attr_atkdmg' value!='')
input(type='hidden' name='attr_atkdmgc' value!='')
.sheet-weapon-action
input.sheet-weapon-flag(type='checkbox' name='attr_weapon_options_flag' checked='checked')
span y
.sheet-weapon-options
.sheet-weapon-row
span WEAPON:
input(type='text' name='attr_weapon')
span GUNNER NAME:
input(type='text' name='attr_gunner')
.sheet-weapon-row
span RANGE:
input(type='text' name='attr_range')
span TO HIT:
input(type='text' name='attr_tohit')
.sheet-weapon-row
span ON HIT:
input(type='text' name='attr_damage')
input(type='text' name='attr_dmgtype' placeholder='damage type')
.sheet-weapon-row
span SPECIAL:
input(type='text' name='attr_special')
.sheet-weapon-row
span AMMO:
input(type='text' name='attr_ammo')
span RECHARGE:
input(type='checkbox' name='attr_recharge' value='3')
input(type='checkbox' name='attr_recharge' value='2')
input(type='checkbox' name='attr_recharge' value='1')
.sheet-weapon-display
button.pick(type='roll' value!='@{rollbase}' name='roll_attack')
span.sheet-weapon-name(name='attr_weapon')
.sheet-weapon-meta
span Gunner:
span(name='attr_gunner')
span | Range:
span(name='attr_range')
span | To Hit:
span(name='attr_tohit')
span | Hit:
span(name='attr_damage')
span
span(name='attr_dmgtype')
button.hidden(type='roll' value!='@{atkdmg}' name='roll_atkdmg')
button.hidden(type='roll' value!='@{atkdmgc}' name='roll_atkdmgc')
.sheet-weapon-systems-info
span(data-i18n='weapon-systems-info')
.sheet-bottom
.sheet-grid-container
div
.sheet-grid-container
.sheet-armor-class
+subtitle('armor-class')
.sheet-grid-container
div
.sheet-fancy-input
img(src=`${imagePath}/armor_class.png` alt='Armor Class')
input(type='text' name='attr_pc_ship_armor_class')
.sheet-grid-container
+armorClassOrManeuverEntry('base_armor_class')
+armorClassOrManeuverEntry('maneuver_bonus')
+armorClassOrManeuverEntry('pilot_dex_modifier')
+armorClassOrManeuverEntry('misc_mod_bonus')
.sheet-maneuver-defense
+subtitle('maneuver-defense')
.sheet-grid-container
div
.sheet-fancy-input
img(src=`${imagePath}/maneuver_defense.png` alt='Maneuver Bonus')
input(type='text' name='attr_pc_ship_maneuver_defense_bonus')
.sheet-grid-container
div
span.sheet-static-num 8
label
span(data-i18n='base-maneuver-defense')
+armorClassOrManeuverEntry('proficiency_bonus')
+armorClassOrManeuverEntry('pilot_wis_modifier')
+armorClassOrManeuverEntry('captain_cha_modifier')
.sheet-defense-systems
+subtitle('defense-systems')
+repeatingSection('defense-systems')
textarea(name='attr_item' placeholder='Enter item description...' required)
span(name='attr_item')
div
.sheet-grid-container
div
.sheet-hull-points
+subtitle('hull-points')
.sheet-fancy-input
img(src=`${imagePath}/hull_points.png` alt='Hull Points')
input(type='text' name='attr_pc_ship_hull_points')
span(data-i18n='hull-points-info')
.sheet-resistances
+subtitle('resistances')
+repeatingSection('ship-resistances')
textarea(name='attr_resistance' placeholder='Enter resitance description...' required)
span(name='attr_resistance')
.sheet-patch-repair
+subtitle('patch-repair')
.sheet-grid-container
label(for='attr_pc_ship_patch_repair_die_type')
span(data-i18n='die-type')
input(type='text' name='attr_pc_ship_patch_repair_die_type')
label(for='attr_pc_ship_patch_repair_int_mod')
span(data-i18n='int-mod')
input(type='text' name='attr_pc_ship_patch_repair_int_mod')
label(for='attr_pc_ship_patch_repair_used')
span(data-i18n='used')
input(type='text' name='attr_pc_ship_patch_repair_used')
span(data-i18n='patch-repair-info')
div
.sheet-damage-taken
.sheet-grid-container
div
label(for='attr_pc_ship_damage_threshold')
span(data-i18n='damage-threshold')
input(type='text' name='attr_pc_ship_damage_threshold')
label(for='attr_pc_ship_temp_hp')
span(data-i18n='temp-hp')
input(type='text' name='attr_pc_ship_temp_hp')
label
span(data-i18n='damage')
textarea(name='attr_pc_ship_damage')
.sheet-structural-integrity
+subtitle('structural-integrity')
.sheet-grid-container
div
.sheet-fancy-input
img(src=`${imagePath}/structural_integrity.png` alt='Structural Integrity')
input(type='text' name='attr_pc_ship_structural_integrity')
label
input(type='text' name='attr_pc_remaining_si')
span(data-i18n='remaining-si')
span(data-i18n='structural-integrity-info')
.sheet-grid-container.sheet-features-cargo-row
.sheet-special-features
+subtitle('special-features-and-options')
+repeatingSection('ship-features')
textarea(name='attr_feature' placeholder='Enter feature description...' required)
span(name='attr_feature')
.sheet-ship-cargo
+subtitle('ship-cargo')
+repeatingSection('ship-cargo')
.sheet-grid-container
div
input(type='text' name='attr_name')
div
input(type='text' name='attr_weight')
.sheet-ship-logo-footer
img.sheet-ship-logo-img(src='https://raw.githubusercontent.com/skydawn1/esper_genesis/master/EG_Logo.png' alt='Esper Genesis Logo')