Files
roll20-character-sheets-tester/Shadowrun5thEdition/Shadowrun5thEdition.pug
T
Cassie Levett 0f43893cf9 Shadowrun v4.02 (#5931)
* fix images for sr5

* leave current images as to not break them tonight'
2020-03-09 11:05:22 -05:00

593 lines
27 KiB
Plaintext

input(name='attr_version' type='hidden' value='4.01')
//- CHARACTER SHEET PAGE
input.sheet_type(name='attr_sheet_type' type='hidden' value='pc')
//- CHARACTER TYPE (MUNDANE < MAGIC < RESONANCE)
input.character-type(name='attr_flag_special' type='hidden' value='mundane')
//- MIXINS
include src/pug/_mixins.pug
//- VARIABLES
include src/pug/_variables.pug
- const imageSource = 'https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Shadowrun5thEdition/src/imgs/'
.pc
.tabs
img(alt='Shadowrun black and metallic logo' src=`${imageSource}/ShadowrunLogo.png`)
h1(data-i18n='character') Character
label(data-i18n-title='character name' title='character name')
input(type='text' name='attr_character_name' placeholder='Character name' title='@{character_name}')
h1(data-i18n='player') Player
label(data-i18n-title='player name' title='player name')
input(type='text' name='attr_player_name' placeholder='Player name' title='@{player_name}')
h2(data-i18n-title='/w GM') /w GM
label.switch(data-i18n-title='whisper rolls to gm' title='whisper rolls to gm')
input.whisper-toggle(name='attr_gm_toggle' type='checkbox' value='/w gm')
span.slider
each val, key in {'wounds': '@{wounds}', 'modifiers':'?{Modifiers +/-|0}', 'edge':'@{edge}'}
h2(data-i18n-title=key) #{key}
label.switch(data-i18n-title=key title=key)
input.whisper-toggle(name='attr_'+key+'_toggle' type='checkbox' value=val)
span.slider
button(name='d6' title='Roll D6s' type='roll' value!='@{gm_toggle} &{template:rolls}{{header=^{d6}}}{{base=^{d6}}}{{dice=[[(?{d6s|0}d6>5)]]}}') L
input(name='attr_tab' type='hidden' value='options')
button.pictos(name='act_tab_options' title='@{tab}' type='action' ) y
each val in ['core', 'arms', 'augs', 'gear', 'magic', 'matrix', 'social', 'vehicle']
button(data-i18n=val name='act_tab_'+val type='action' title='@{tab}') #{val}
input.options_toggle(name='attr_tab' type='hidden' value='options')
//- STATIC TAB
.static.pc-col
include src/static.html
//- SKILLS
.pc-row
.header
- const skillTypes = {'Active': 'active', 'Knowledge': 'know', 'Language': 'lang'}
each val, key in skillTypes
- const attrName = key.toLowerCase();
.header.htab
.triangle
input.tab-switch(name='attr_skill_toggle' title=key + ' skills' type='radio' value=attrName)
h1(data-i18n=val) #{val}..
.right-tri
.triangle
h1(data-i18n='skills') Skills
.border-box.skill-box
.pc-box.medium-box
.rows.repeating-container
.row-long.headers
each val in ['Skill', 'RTG', 'Attribute', 'Limit']
- const translationKey = val.toLowerCase();
h2(data-i18n=translationKey) #{val}
input.tab-switch(name='attr_skill_toggle' type='hidden' value='active')
each val, key in {'active': ['active', 'Agility', 'Physical'],'knowledge':['know', 'Logic', 'Mental'], 'language': ['lang', 'Charisma', 'Social']}
div(class='skills-'+val[0])
.rows.repeating-container
if key === 'active'
.row-long
input(name='attr_default_display' type='hidden' value='Agility')
+rollButton('default', '@{default_display}', '@{default_attribute}+-1')
span.text-align-center -
select.attribute-select(name='attr_default_attribute' title='Skill attribute')
+attributeSelect('Agility')
select.limit-select(name='attr_limit' title='Skill limit')
+limitSelect('Physical')
fieldset(class=`repeating_${key}`)
- const skillsRepeatingSection = `@{repeating_${key}_`+'${x}';
input(name='attr_display' type='hidden')
input(name='attr_display_rating' type='hidden')
input(name='attr_display_specialization' type='hidden' value='')
input(name='attr_display_limit' type='hidden' value=val[2])
input(name='attr_display_attribute' type='hidden' value=val[1])
input(name='attr_dicepool' type='hidden' value='0')
input.settings-flag(name='attr_flag' type='hidden' value='settings' title=`${skillsRepeatingSection}_flag}`)
.buttons
//- SKILL BUTTON
+skillButton(false)
//- SPECILIZATION BUTTON
+skillButton(true)
span.text-align-center(name='attr_display_rating' title=`${skillsRepeatingSection}_display_rating}`)
select.attribute-select(name='attr_attribute' title=`${skillsRepeatingSection}_attribute}`)
+attributeSelect(val[1])
select.limit-select(name='attr_limit' value='physical_limit' title=`${skillsRepeatingSection}_limit}`)
+limitSelect(val[2])
+repeatingSectionFlags()
.settings
if key === 'active'
select.skill-select(name='attr_skill' value='Close Combat Group' title=`${skillsRepeatingSection}_skill}`)
include src/html/skillselect.html
else
label(data-i18n-title='skill' title='skill')
input(name='attr_skill' placeholder=key type='text' title=`${skillsRepeatingSection}_skill}`)
label(data-i18n-title='rating' title='rating')
input(name='attr_rating' min='0' placeholder='0' type='number' title=`${skillsRepeatingSection}_rating}`)
label(data-i18n-title='ratingmodifier' title='Rating Modifier')
span(data-i18n='ratingmodifier') Rating Modifier
input(name='attr_rating_modifier' placeholder='0' type='number' title=`${skillsRepeatingSection}_rating_modifier}`)
label(data-i18n-title='specialization' title='specialization')
span(data-i18n='specialization') specialization
input(name='attr_specialization' placeholder='Specalizations' type='text' title=`${skillsRepeatingSection}_specialization}`)
label(data-i18n-title='notes' title='notes')
span(data-i18n='notes') Notes
textarea(name='attr_notes' value='' placeholder='Notes' title=`${skillsRepeatingSection}_notes}`)
//- CORE TAB
.core.pc-col
include src/core.html
.quality-box
.header.right-header
.header.htab
input.tab-switch(input name='attr_quality_toggle' type='radio' value='quality' checked)
h1(data-i18n='qualities') Qualities
.right-tri
.header.htab
.triangle
input.tab-switch(input name='attr_quality_toggle' type='radio' value='martial')
h1(data-i18n='martialarts') Martial Arts
.right-tri
.border-box
.pc-box.medium-box
input.tab-switch(input name='attr_quality_toggle' type='hidden' value='quality')
.quality
.row-long.headers
each val in ['Quality', 'Type']
h2(data-i18n=`${val.toLowerCase()}`) #{val}
.rows.repeating-container
fieldset(class='repeating_quality')
span(name="attr_quality")
span.center(name="attr_type")
button.pictos(name="quality_chat" type="roll" value="@{gm_toggle} &{template:rolls}{{header=@{quality}}}{{desc=@{notes}}}") w
+repeatingSectionFlags()
.settings
input(name="attr_quality" placeholder="quality name" title="@{repeating_quality_${x}_quality}" type="text")
select(name="attr_type" title="@{repeating_quality_${x}_type}" value='p')
option(data-i18n="p" value="P" selected) P
option(data-i18n="n" value="N") N
+repeatingSectionNotes('quality')
.martial
.row-long.headers
each val in ['Technique', 'Style']
h2(data-i18n=`${val.toLowerCase()}`) #{val}
.rows.repeating-container
fieldset(class='repeating_martial')
span(name="attr_technique")
span.center(name="attr_style")
button.pictos(name="technique_chat" type="roll" value="@{gm_toggle} &{template:rolls}{{header=@{technique}}}{{desc=@{notes}}}") w
+repeatingSectionFlags()
.settings
input(name="attr_technique" placeholder="technique name" title="@{repeating_martial_${x}_technique}" type="text")
input(name="attr_style" placeholder="style name" title="@{repeating_martial_${x}_style}" type="text")
+repeatingSectionNotes('martial')
//- ARMS TAB
.arms.pc-col
.pc-row.weapons
.header.right-header
h1(data-i18n='weapons') Weapons
.right-tri
.header.right-header
.header.htab
.triangle
input.tab-switch(name='attr_weapon_type_toggle' type='radio' value='range' checked)
h1(data-i18n='ranged') Ranged
.right-tri
.header.htab
.triangle
input.tab-switch(name='attr_weapon_type_toggle' type='radio' value='melee')
h1(data-i18n='melee') Melee
.right-tri
.border-box
.pc-box.medium-box
input.tab-switch(name='attr_weapon_type_toggle' type='hidden' value='range')
.rows.repeating-container.weapon-range
- const rangeRepeatingSection = '@{repeating_range_${x}';
+h2Headers(pcRangeWeaponObject)
fieldset(class='repeating_range')
input(name='attr_dicepool' type='hidden' value='0')
input.flag-primary(name='attr_primary' type='hidden' value='')
+weaponRollButton(pcRangeWeaponButton)
each val in ['Dam', 'Acc', 'AP', 'Mode', 'RC', 'Ammo']
- const attrName = val === 'Dam' ? 'damage' : val === 'RC' ? 'recoil' : val.toLowerCase();
if val === 'Mode'
select(name='attr_mode' title='@{mode}' value='BF')
each val in weaponModes
option(data-i18n=val.toLowerCase() value=val) #{val}
else
span.center(name=`attr_${attrName}`)
+repeatingSectionFlags()
.settings
each val, key in pcRangeWeaponObject
- const attrName = key === 'Dam' ? 'damage' : key.toLowerCase();
if key === 'Mode'
select(name='attr_mode' title='@{mode}' value='BF')
each val in weaponModes
option(data-i18n=val.toLowerCase() value=val) #{val}
else
label(data-i18n-title=key.toLowerCase() title=key.toLowerCase())
input(name=`attr_${attrName}` placeholder=val['placeholder'] title=`${rangeRepeatingSection}_${attrName}}` type=val['type'] value='')
.row
h3(data-i18n='modeoptions') Mode Options
label(data-i18n-title='modeoptions' title='Mode Options')
input(name='attr_mode_options' placeholder='SA/BF/FA' type='text' title=`${rangeRepeatingSection}_mode_options}}`)
h3(data-i18n='range') range
label(data-i18n-title='range' title='Range')
input(name='attr_range' placeholder='25/150/350/550' type='text' title='')
h3(data-i18n='primary') primary
label(data-i18n-title='primary' title='Primary')
input(name='attr_primary' type='checkbox' title=`${rangeRepeatingSection}_primary}` value='primary')
.row
h3(data-i18n='skill') skill
select(name=`attr_skill` title=`${rangeRepeatingSection}_skill}` value='@{firearms}')
optgroup(label='Combat Skills' ) Combat Skills
option(data-i18n='firearms' value='@{firearms}' selected) Firearms Group
option(data-i18n='automatics' value='@{automatics}') Automatics
option(data-i18n='archery' value='@{archery}') Archery
option(data-i18n='exoticrange' value='0') Exotic Range
option(data-i18n='heavyweapons' value='@{heavyweapons}') Heavy Weapons
option(data-i18n='longarms' value='@{longarms}') Longarms
option(data-i18n='pistols' value='@{pistols}') Pistols
option(data-i18n='throwingweapons' value='@{throwingweapons}') Throwing Weapons
optgroup(label='Vehicle Skills') Vehicle Skills
option(data-i18n='gunnery' value='@{gunnery}') Gunnery
h3(data-i18n='specialization') specialization
label(data-i18n-title='specialization' title='specialization')
input(name='attr_spec' value='2' title=`${rangeRepeatingSection}_spec}` type='checkbox')
h3(data-i18n='modifier') modifier
label(data-i18n-title='modifier' title='modifier')
input(name='attr_dicepool_modifier' title=`${rangeRepeatingSection}_dicepool_modifier}` type='number')
input(name=`attr_skill` type='hidden' value='')
.exotic-warning
i(data-i18n='exoticnote') Exotic weapons are not linked to a skill. Use Modifier input to set dicepool.
+repeatingSectionNotes('range')
.rows.repeating-container.weapon-melee
- const meleeRepeatingSection = '@{repeating_melee_${x}';
+h2Headers(pcMeleeWeaponObject)
fieldset(class='repeating_melee')
input(name='attr_dicepool' type='hidden' value='0')
input.flag-primary(name='attr_primary' type='hidden' value='')
+weaponRollButton(pcMeleeWeaponButton)
each val in ['Dam', 'Acc', 'AP', 'Reach']
- const attrName = val === 'Dam' ? 'damage' : val.toLowerCase();
span.center(name=`attr_${attrName}`)
+repeatingSectionFlags()
.settings
each val, key in pcMeleeWeaponObject
- const attrName = key === 'Dam' ? 'damage' : key.toLowerCase();
label(data-i18n-title=key.toLowerCase() title=key.toLowerCase())
input(name=`attr_${attrName}` placeholder=val['placeholder'] title=`${meleeRepeatingSection}_${attrName}}` type=val['type'] value='')
h3(data-i18n='primary') primary
label(data-i18n-title='primary' title='Primary')
input(name='attr_primary' type='checkbox' title=`${meleeRepeatingSection}_primary}` value='primary')
.row
h3(data-i18n='skill') skill
select(name=`attr_skill` title=`${meleeRepeatingSection}_skill}` value='@{closecombat}')
optgroup(label='Combat Skills' ) Combat Skills
option(data-i18n='closecombat' value='@{closecombat}' selected) Close Combat Group
option(data-i18n='blades' value='@{blades}') Blades
option(data-i18n='clubs' value='@{clubs}') Clubs
option(data-i18n='exoticmelee' value='0') Blades
option(data-i18n='unarmedcombat' value='@{unarmedcombat}') Unarmed Combat
optgroup(label='Vehicle Skills') Vehicle Skills
option(data-i18n='gunnery' value='@{gunnery}') Gunnery
h3(data-i18n='specialization') specialization
label(data-i18n-title='specialization' title='specialization')
input(name='attr_spec' value='2' title=`${meleeRepeatingSection}_spec}` type='checkbox')
h3(data-i18n='modifier') modifier
label(data-i18n-title='modifier' title='modifier')
input(name='attr_dicepool_modifier' title=`${meleeRepeatingSection}_dicepool_modifier}` type='number')
input(name=`attr_skill` type='hidden' value='')
.exotic-warning
i(data-i18n='exoticnote') Exotic weapons are not linked to a skill. Use Modifier input to set dicepool.
+repeatingSectionNotes('melee')
.pc-row.armor
.header.right-header
h1(data-i18n='armor') Armor
.right-tri
.border-box
.pc-box.medium-box
.rows.repeating-container
- const armorRepeatingSection = '@{repeating_armor_${x}';
.row-long.headers
each val in ['Armor', 'Rating', 'Acid', 'Cold', 'Elec', 'Fire', 'Radi']
h2(data-i18n=`${val.toLowerCase()}`) #{val}
fieldset(class='repeating_armor')
input.flag-primary(name='attr_primary' type='hidden' value='')
button(name=`roll_soak` type='roll' value!=noWoundsRollBegining+'{{header=^{soak}}}{{base=^{body} ♦ ^{armor}}}{{dice=[[((@{body}+@{rating}+@{dicepool_modifier})'+noWoundsRollEnding)
span(name='attr_name')
button(name=`roll_armor` type='roll' value!=noWoundsRollBegining+'{{header=@{name}}}{{base= ^{armor}}}{{dice=[[((@{rating})'+noWoundsRollEnding)
span.center(name='attr_rating')
each val in ['Acid', 'Cold', 'Electrical', 'Fire', 'Radiation']
- const attrName = val.toLowerCase();
button(name=`roll_${attrName}` type='roll' value!=noWoundsRollBegining+`{{header=^{${attrName}protection}}}{{base= ^{armor}}}{{dice=[[((@{body}+@{rating}+@{dicepool_modifier}+@{${attrName}_modifier})`+noWoundsRollEnding)
span.center(name=`attr_${attrName}_modifier`)
+repeatingSectionFlags()
.settings
each val, key in pcArmorObject
- const attrName = key === 'Name' || key === 'Rating' ? key.toLowerCase() : `${key.toLowerCase()}_modifier`;
label(data-i18n-title=key.toLowerCase() title=key.toLowerCase())
input(name=`attr_${attrName}` placeholder=val['placeholder'] title=`@{repeating_armor_`+'${x}'+`_${attrName}}` type=val['type'] value='')
.row
h3(data-i18n='primary') primary
label(data-i18n-title='primary' title='Primary')
input(name='attr_primary' type='checkbox' title=`${armorRepeatingSection}_primary}` value='primary')
h3(data-i18n='modifier') modifier
label(data-i18n-title='modifier' title='modifier')
input(name='attr_dicepool_modifier' placeholder='0' title=`${armorRepeatingSection}_dicepool_modifier}` type='number' value='0')
+repeatingSectionNotes('armor')
//- AUGS TAB
.augs.pc-col
.pc-row
.header.right-header
h1(data-i18n='augmentations') Augmentations
.right-tri
.border-box
.pc-box.medium-box
.row-long.headers
each val in augementations
h2(data-i18n=`${val.toLowerCase()}`) #{val}
.rows.repeating-container
fieldset(class=`repeating_augementations`)
span(name=`attr_augmentation`)
span.center(name=`attr_rating`)
span.center(name=`attr_essence`)
+repeatingSectionFlags()
.settings
each val in augementations
- const attrName = val === 'Augmentations' ? 'augmentation' : val.toLowerCase();
- const type = val === 'Augmentations' ? 'text' : 'number';
- const placeholder = val === 'Augmentations' ? 'name' : '0';
label(data-i18n-title=val title=val)
input(name=`attr_${attrName}` placeholder=placeholder title=`@{repeating_augementations_`+'${x}'+`_${attrName}}` type=type value='')
+repeatingSectionNotes('augementations')
//- GEAR TAB
.gear.pc-col
.pc-row
.header.right-header
h1(data-i18n='gear') gear
.right-tri
.border-box
.pc-box.medium-box
.row-long.headers
each val in ['Item', 'Rating', 'Quantity']
h2(data-i18n=`${val.toLowerCase()}`) #{val}
.rows.repeating-container
fieldset(class=`repeating_items`)
span(name=`attr_item`)
span.center(name=`attr_rating`)
span.center(name=`attr_quantity`)
+repeatingSectionFlags()
.settings
label(data-i18n-title='item' title='item')
input(name=`attr_item` placeholder='Jammer' title=`@{repeating_items_`+'${x}'+`_item}` type='text' value='')
label(data-i18n-title='rating' title='rating')
input(name=`attr_rating` placeholder='3' title=`@{repeating_items_`+'${x}'+`_rating}` type='text' value='')
label(data-i18n-title='quantity' title='quantity')
input(name=`attr_quantity` placeholder='x3' title=`@{repeating_items_`+'${x}'+`_quantity}` type='text' value='')
+repeatingSectionNotes('items')
//- MAGIC TAB
.magic.pc-col
.pc-row.spell-box
.header.right-header
h1(data-i18n='magic') Magic
.right-tri
.header.right-header
.header.htab
.triangle
input.magic-toggle(name='attr_magic_toggle' title='@{magic_toggle}' type='radio' value='spells' checked)
h1(data-i18n='spells') Spells
.right-tri
.header.htab
.triangle
input.magic-toggle(name='attr_magic_toggle' title='@{magic_toggle}' type='radio' value='preps')
h1(data-i18n='prep') Prep...
.right-tri
.header.htab
.triangle
input.magic-toggle(name='attr_magic_toggle' title='@{magic_toggle}' type='radio' value='rituals')
h1(data-i18n='rituals') Rituals
.right-tri
.border-box
.pc-box.medium-box
+fadeDrainSection('drain')
input.magic-toggle(name='attr_magic_toggle' type='hidden' value='spells')
.row-long.headers
each val in ['spells', 'type', 'range', 'duration', 'drain']
h2(data-i18n=val) #{val}
.magic-spells.spellsForumlas
+pcSpells('spell')
.magic-preps.spellsForumlas
+pcSpells('preps')
.rows.repeating-container.prepared-preparations
h2(data-i18n='preperations') preperations
.row-long.headers
each val in ['name', 'force', 'potency', 'trigger']
h3(data-i18n=val) #{val}
fieldset(class='repeating_preperations')
+displayRollButton(prepButton, false)
each val in ['force', 'potency', 'trigger']
span.center(name=`attr_${val}`)
+repeatingSectionFlags()
.settings
label(data-i18n-title='name' title='name')
input(name='attr_name' placeholder='Name' title='@{repeating_preperations_${x}_name}' type='text' value='')
label(data-i18n-title='force' title='force')
input(name='attr_force' placeholder='1' title='@{repeating_preperations_${x}_force}' type='number' value='')
label(data-i18n-title='potency' title='potency')
input(name='attr_potency' placeholder='1' title='@{repeating_preperations_${x}_potency}' type='number' value='')
select(name='attr_trigger' title='@{repeating_preperations_${x}_trigger}' value='Command')
optgroup(label='Trigger') Trigger
option(data-i18n='command' value='Command') command
option(data-i18n='contact' value='Contact' selected) contact
option(data-i18n='time' value='Time') time
option(data-i18n='special' value='Special') special
+repeatingSectionNotes('preperations')
.magic-rituals
.rows.repeating-container
fieldset(class=`repeating_ritual`)
- const repeatingRitualSection = `@{repeating_${type}`+'_${x}';
input(name='attr_dicepool' type='hidden' value='0')
+displayRollButton(pcRitualButton, true)
each val in ['type', 'range', 'duration', 'drain']
span.center(name='attr_'+val)
+repeatingSectionFlags()
.settings
label(data-i18n-title='name' title='name')
input(name='attr_name' placeholder='Curse (MATERIAL LINK, SPELL)' title=`@{${repeatingRitualSection}_name}` type='text')
.rows
h3(data-i18n='skill') skill
select(name='attr_skill' title=`@{${repeatingRitualSection}_skill}`)
option(data-i18n='sorcerygroup' value='@{sorcery}') Sorcery Group
option(data-i18n='ritualspellcasting' value='@{ritualspellcasting}' selected) Ritual Spellcasting
h3(data-i18n='specialization') specialization
label(data-i18n-title='specialization' title='specialization')
input(name='attr_specialization' title=`@{${repeatingRitualSection}_specialization}` type='checkbox' value='2')
h3(data-i18n='modifier') modifier
label(data-i18n-title='modifier' title='modifier')
input(name='attr_dicepool_modifier' title=`@{${repeatingRitualSection}_dicepool_modifier}` type='number')
+repeatingSectionNotes('ritual')
.pc-row.powers
.header.right-header
h1(data-i18n='adeptpowers') Adept Powers or Other Abilities
.right-tri
.border-box
.pc-box.medium-box
+fadeDrainSection('drain', true)
.row-long.headers
h2(data-i18n='name') Name
h2.center(data-i18n='rating') Rating
.rows.repeating-container.powers
fieldset(class=`repeating_powers`)
span(name='attr_name')
span.center(name='attr_rating')
+repeatingSectionFlags()
.settings
label(data-i18n-title='name' title='name')
input(name='attr_name' placeholder='name' title='@{repeating_powers_${x}_name}' type='text' value='')
label(data-i18n-title='rating' title='rating')
input(name='attr_rating' placeholder='rating' title='@{repeating_powers_${x}_rating}' type='number' value='')
+repeatingSectionNotes('powers')
//- MATRIX TAB
.matrix.pc-col
.pc-row.matrix-box
.header.right-header
h1(data-i18n='cyberdeck') Cyberdeck
.right-tri
.border-box
.pc-box.medium-box
.cyberdeck
include src/html/matrix.html
.rows.repeating-container.programs
h2(data-i18n='programs') Programs
fieldset(class=`repeating_programs`)
span(name='attr_program')
+repeatingSectionFlags()
.settings
label(data-i18n-title='programs' title='programs')
input(name='attr_program' placeholder='Program name' title='@{repeating_programs_${x}_program}' type='text' value='')
+repeatingSectionNotes('programs')
.pc-row
.header.right-header
h1(data-i18n='complex form') Complex Forms
.right-tri
.border-box
.pc-box.medium-box
+fadeDrainSection('fade')
.rows.repeating-container.complex-forms
- const formsrepeatingSection = `@{repeating_forms_` + "${x}";
.row-long.headers
each val in complexFormAttributes
h2.text-capitalize(data-i18n=val)
fieldset(class=`repeating_forms`)
input(name='attr_dicepool' type='hidden' value='0')
+displayRollButton(pcComplexFormButton, true)
- const complexFormSpans = complexFormAttributes.shift();
each val in complexFormSpans
span.center(name=`attr_${val}`)
+repeatingSectionFlags()
.settings
label(data-i18n-title='name' title='name')
input(name='attr_name' placeholder='name' title=`${formsrepeatingSection}_name}` type='text' value='')
select(name=`attr_target` title=`${formsrepeatingSection}_target}` value='Device')
each val in formTargets
option.text-capitalize(data-i18n=val value=val) #{val}
select(name=`attr_duration` title=`${formsrepeatingSection}_duration}` value='Instant')
each val in formDurations
option.text-capitalize(data-i18n=val value=val)
label(data-i18n-title='fade' title='fade')
input(name='attr_fade' placeholder='-1' title=`${formsrepeatingSection}_fade}` type='number' value='')
.row
h3(data-i18n='skill') skill
select(name=`attr_skill` title=`${formsrepeatingSection}_skill}` value='@{software}')
option(data-i18n='electronicsgroup' value='@{electronics}') Electronics Group
option(data-i18n='software' value='@{software}' selected) Software
h3(data-i18n='specialization')
label(data-i18n-title='specialization' title='specialization')
input(name='attr_spec' value='2' title=`${formsrepeatingSection}_spec}` type='checkbox')
h3(data-i18n='modifier') modifier
label(data-i18n-title='modifier' title='modifier')
input(name='attr_dicepool_modifier' title=`${formsrepeatingSection}_dicepool_modifier}` type='number')
+repeatingSectionNotes('forms')
//- SOCIAL TAB
include src/social.html
//- VEHICLE TAB
include src/vehicle.html
//- OPTIONS TAB
include src/options.html
//- NPCs
include src/pug/_npc.pug
//- FOOTER
.footer
div
span(data-i18n="copyrightfooter")
span Version
span(name="attr_version")
img(alt='Emerald Productins, LLC' src=`${imageSource}/EProd_Emerald_Gloss.png`)
//- ROLL TEMPLATES
include src/rolltemplates.html
//- HIDDEN
include src/html/hidden.html
//- SCRIPTS
script(type="text/worker")
include src/js/attributes.js
include src/js/versioning.js
include src/js/helpers.js
include src/js/eventhandlers.js
include src/js/scripts.js
include src/js/importer.js
include src/js/importerUI.js
//- CHUMMER IMPORTER
include src/html/importer.html