mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
233 lines
12 KiB
Plaintext
233 lines
12 KiB
Plaintext
|
|
//- VERSION
|
|
//- =============================
|
|
input(name='attr_version' type='hidden' value='1.02')
|
|
|
|
//- MIXINS
|
|
include src/pug/_mixins.pug
|
|
|
|
- const imageSrc = `https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Outbreak/src/img`;
|
|
|
|
.container
|
|
input(name='attr_tab' type='hidden' value='main')
|
|
.main.tab
|
|
.column
|
|
.grid.playerinfo.box
|
|
each val in ['Name', 'Player', 'Campaign']
|
|
-const name = val.toLowerCase();
|
|
h2(data-i18n=`${val}`) #{val}
|
|
input(name=`attr_character_${name}` placeholder=val title=`@{character_${name}}` type='text' value='')
|
|
|
|
.spewbox.box
|
|
h1.green-header(data-i18n='S.P.E.W Attributes') S.P.E.W Attributes
|
|
.grid.dicetypes
|
|
each val in ['Strength', 'Perception', 'Empathy', 'Willpower']
|
|
-const name = val.toLowerCase();
|
|
.grid.attributes
|
|
img(alt=`${val}` src=`${imageSrc}/OU_Attributes_${val}_40x40.png`)
|
|
h3(data-i18n=val) #{val}
|
|
.grid
|
|
input(name=`attr_${name}` type='hidden' value=`[[(@{${name}_bonus}*10)+@{${name}_base}]]`)
|
|
label
|
|
input(name=`attr_${name}_bonus` title=`@{${name}_bonus}` type='text' value='0')
|
|
label
|
|
input(name=`attr_${name}_base` title=`@{${name}_base}` type='text' value=`0`)
|
|
|
|
h2(data-i18n='Character Resources') Character Resources
|
|
.grid.points
|
|
each val in ['Survival', 'Gestalt', 'Competance']
|
|
-const name = val === 'Gestalt' ? `${val.toLowerCase()}_level` : `${val.toLowerCase()}_points` ;
|
|
if val === 'Gestalt'
|
|
h3.yellow-header(data-i18n=`${val} Level:`) #{val} Level:
|
|
else
|
|
h3.green-header(data-i18n=`${val} Points:`) #{val} Points:
|
|
label
|
|
input.points(name=`attr_${name}` title=`@{${name}}` value='0' type='text')
|
|
|
|
.grid.skills
|
|
h1.yellow-header(data-i18n='Skills') Skills
|
|
h2(data-i18n='Basic Skills') Basic Skills
|
|
.skill-column
|
|
.grid.header
|
|
h3(data-i18n='Adv')
|
|
h3(data-i18n='Tot')
|
|
each val, key in {'Balance':['perception', 'willpower'], 'Brawl': ['strength', 'perception'], 'Climb':['strength','willpower'], 'Composure':['willpower', 'empathy'], 'Dodge':['perception', 'strength'], 'Endurance':['strength', 'willpower'], 'Expression':['empathy','perception'], 'Grapple':['strength', 'willpower']}
|
|
+skillList(key, val[0], val[1])
|
|
.skill-column
|
|
.grid.header
|
|
h3(data-i18n='Adv')
|
|
h3(data-i18n='Tot')
|
|
each val, key in {'Hold':['willpower','perception'], 'Jump/Leap':['strength','perception'], 'Lift/Pull':['strength','willpower'], 'Resist Pain':['willpower','strength'], 'Search':['perception','willpower'], 'Spot/Listen':['perception','willpower'], 'Stealth':['perception','willpower']}
|
|
+skillList(key, val[0], val[1])
|
|
|
|
h2(data-i18n='Trained Skills') Trained Skills
|
|
.skill-column
|
|
each val,key in {'Bow':['perception', 'strength'], 'Calm Other':['empathy', 'willpower'], 'Persuade':['empathy', 'willpower'], 'Barter':['empathy', 'willpower'], 'Command':['empathy', 'willpower'], 'Detect Motives':['empathy', 'willpower'], 'Intimidate':['empathy', 'willpower'], 'Digital Systems':['perception', 'willpower']}
|
|
+skillList(key, val[0], val[1])
|
|
.skill-column
|
|
each val,key in {'Long Gun':['perception', 'willpower'], 'Pistol':['perception', 'willpower'], 'First Aid':['perception', 'willpower'], 'Blunt':['strength', 'willpower'], 'Pierce':['strength', 'willpower'], 'Slash':['strength', 'willpower'], 'Navigation':['perception', 'willpower'], 'Swim':['strength', 'willpower'], 'Throw':['perception', 'strength']}
|
|
+skillList(key, val[0], val[1])
|
|
|
|
h2(data-i18n='Expert Skills') Expert Skills
|
|
.skill-column
|
|
each val, key in {'Adv Medicine':['perception', 'willpower'], 'Construct Engineer':['perception', 'willpower'], 'Martial Arts':['strength', 'perception'], 'Pilot':['perception', 'willpower']}
|
|
+expertSkillList(key, val[0], val[1])
|
|
.skill-column
|
|
each val, key in {'Ride': ['empathy', 'willpower'], 'Science':['perception', 'willpower'], 'Survival':['perception', 'willpower'], 'Toughness':['strength', 'willpower']}
|
|
+expertSkillList(key, val[0], val[1])
|
|
.grid.repeating-container
|
|
each val in ['Specalizations', 'Attr', 'Bonus', 'Adv', 'Skill', 'Roll',]
|
|
h3(data-i18n=val) #{val}
|
|
fieldset(class='repeating_skills')
|
|
input(name=`attr_button_base` type='hidden' value=`[[(?{Gear Or Kit| None, 0 | Archery, @{archery_gear}|Athletic Gear, @{athletic_gear}|Bludgeon, @{bludgeoning}|Climbing Gear, @{climbing_gear}|Command Apparatus, @{command_app}|Firefighting, @{firefighting}|First Aid Kit, @{first_aid_kits}|Long Gun, @{long_gun}|Martial Arts, @{martial_arts}|Medical Gear, @{medical_gear}|Piercing, @{piercing}|Pistol, @{pistol}|Recon Gear, @{recon_gear}|Slashing, @{slashing}|Survival Kit, @{survival_kit}|Swimming/Diving, @{swimming_diving}|Throwing, @{throwing}|Tools, @{tools}|Value, @{value}|Vehicles, @{vehicles}})*?{Multiplier|1|2|3|4|5}]]`)
|
|
|
|
input(name=`attr_total` type='hidden' value=`(@{skill} [Skill]+@{button_base} [Kit])`)
|
|
input(name=`attr_skill_name` type='text' value=``)
|
|
|
|
select(name='attr_attribute_base' value='@{perception_bonus}')
|
|
option(value='@{strength_bonus}') strength
|
|
option(value='@{perception_bonus}' selected) perception
|
|
option(value='@{empathy_bonus}') empathy
|
|
option(value='@{willpower_bonus}') willpower
|
|
|
|
select(name='attr_attribute_bonus' value='@{willpower_bonus}')
|
|
option(value='@{strength_bonus}') strength
|
|
option(value='@{perception_bonus}') perception
|
|
option(value='@{empathy_bonus}') empathy
|
|
option(value='@{willpower_bonus}' selected) willpower
|
|
|
|
label
|
|
input.center(name=`attr_advancement` type='number' value='0')
|
|
label
|
|
input.center(name=`attr_skill` type='hidden' value=`0`)
|
|
span(name=`attr_skill`)
|
|
|
|
button.dicefontd10(name=`roll_name` type='roll' value!=`&{template:ou} {{name=@{character_name}}} {{roll_name=@{skill_name}}} {{attr=@{skill}}} {{Target1=[[@{total}]]}} {{Target2=[[@{total}+1]]}} {{skill=VS.}} {{Diff=@{difficulty_dice}}} {{Spd1=@{speed_dice}}} {{Dmg=@{damage_dice}}} {{Deplet=@{depletion_dice}}} {{DieDif=@{difficulty_die}}} {{DieSpd=@{speed_die}}} {{DieDmg=@{damage_dice}}} {{DieDep=@{depletion_die}}} {{result=[[1d100+@{difficulty_dice} [Diff]]]}} {{dos1=[[@{total}-19]]}} {{dos2a=[[@{total}-20]]}} {{dos2b=[[@{total}-29]]}} {{dos3a=[[@{total}-30]]}} {{dos3b=[[@{total}-39]]}} {{dos4a=[[@{total}-40]]}} {{dos4b=[[@{total}-49]]}} {{dof1=[[@{total}+19]]}} {{dof2a=[[@{total}+20]]}} {{dof2b=[[@{total}+29]]}} {{dof3a=[[@{total}+30]]}} {{dof3b=[[@{total}+39]]}} {{dof4a=[[@{total}+40]]}} {{dof4b=[[@{total}+49]]}}`) t
|
|
|
|
.equipment.grid.box
|
|
h1.green-header.center(data-i18n='Equipment') Equipment
|
|
textarea(data-i18n-placeholder='Equipment' name='attr_equipment' placeholder='Equipment' value='')
|
|
|
|
.column
|
|
.grid.box.logo
|
|
img(alt='Outbreak Character Sheet', src=`${imageSrc}/OU_Logo_340pxWx90pxH.png`)
|
|
|
|
.grid.box.dice-box
|
|
button(data-i18n='Dice Pool' name='roll_Pool' type='roll' value='&{template:ou-small} {{Diff=@{difficulty_dice}}} {{Spd1=@{speed_dice}}} {{Dmg=@{damage_dice}}} {{Deplet=@{depletion_dice}}} {{DieDif=@{difficulty_die}}} {{DieSpd=@{speed_die}}} {{DieDmg=@{damage_dice}}} {{DieDep=@{depletion_die}}}')
|
|
|
|
.die
|
|
img(alt='difficulty dice' src=`${imageSrc}/HuntersIcon_difficulty_16pxW_x16pxH.jpg` title='Difficult Dice')
|
|
select(name='attr_difficulty_dice')
|
|
- let n = 0;
|
|
while n < 6
|
|
option(data-i18n=n value=`[[${n}d6!pcs>6cf<0]]`) #{n}
|
|
- n++
|
|
|
|
.die
|
|
img(alt=`speed dice` src=`${imageSrc}/HuntersIcon_speed_16pxW_x16pxH.jpg`)
|
|
+diceSelect(`speed`)
|
|
.die
|
|
img(alt=`damage dice` src=`${imageSrc}/HuntersIcon_damage_16pxW_x16pxH.jpg`)
|
|
select(name=`attr_damage_dice`)
|
|
option(data-i18n='0' value='[[0d6]]')
|
|
option(data-i18n='1' value=`[[1d6!pcs>6cf<0]]`)
|
|
option(data-i18n='2' value=`[[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]]`)
|
|
option(data-i18n='3' value=`[[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]]`)
|
|
option(data-i18n='4' value=`[[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]]`)
|
|
option(data-i18n='5' value=`[[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]]`)
|
|
option(data-i18n='6' value=`[[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]]`)
|
|
option(data-i18n='7' value=`[[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]]`)
|
|
option(data-i18n='8' value=`[[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]]`)
|
|
option(data-i18n='9' value=`[[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]] [[1d6!pcs>6cf<0]]`)
|
|
|
|
.die
|
|
img(alt=`depletion dice` src=`${imageSrc}/HuntersIcon_depletion_16pxW_x16pxH.jpg`)
|
|
+diceSelect(`depletion`)
|
|
|
|
each val in ['difficulty', 'speed', 'damage', 'depletion']
|
|
.die
|
|
+dieRadios(val)
|
|
|
|
.grid.box.health
|
|
.grid.vitality
|
|
h1.green-header(data-i18n='Vitality') Vitality
|
|
.grid.header
|
|
h2(data-i18n='Injuries') Injuries
|
|
h2(data-i18n='Damage Threshold') Damage Threshold
|
|
.grid.body
|
|
h3(data-i18n='Health Points')
|
|
.grid.injuries
|
|
- let i = 0;
|
|
while i < 5
|
|
- i++
|
|
input(name=`attr_injury_${i}` type='checkbox')
|
|
input(name=`attr_injury_${i}_details` type='text' value='')
|
|
.grid.damage-threshold
|
|
.row
|
|
h3(data-i18n='Sb + Wb') Sb + Wb
|
|
input(name='attr_damage_treshold_base' type='number' value='(@{strength_bonus}+@{willpower_bonus})' disabled='true')
|
|
.row
|
|
h3(data-i18n='Bonus') Bonus
|
|
input(name='attr_damage_threshold_bonus' type='number' value='0')
|
|
.row
|
|
h3(data-i18n='Total') Total
|
|
input(name='attr_damage_threshold' type='number' value='(@{strength_bonus}+@{willpower_bonus}+@{damage_threshold_bonus})' disabled='true')
|
|
|
|
.grid.viral
|
|
h1.yellow-header(data-i18n='Viral') Viral
|
|
.virus-checkboxes
|
|
- let v = 0;
|
|
while v < 10
|
|
- v++
|
|
input(name=`attr_viral_${v}` value=v type='checkbox')
|
|
span
|
|
h2(data-i18n='Symptoms') Symptoms
|
|
textarea(name='attr_symptoms')
|
|
|
|
.grid.pysche
|
|
h1.yellow-header(data-i18n='Psyche') Psyche
|
|
h2(data-i18n='Wb + Eb') Wb + Eb
|
|
h2(data-i18n='Bonus') Bonus
|
|
h2(data-i18n='Total') Total
|
|
|
|
h2(data-i18n='Morale') Morale
|
|
input(name='attr_morale_base' type='number' value='(@{willpower_bonus}+@{empathy_bonus})' disabled='true')
|
|
span +
|
|
input(name='attr_morale_bonus' type='number' value='0')
|
|
span =
|
|
input(name='attr_morale' type='number' value='(@{morale_base}+@{morale_bonus})' disabled='true')
|
|
|
|
h2(data-i18n='Coping Mechanisms') Coping Mechanisms
|
|
textarea(name='attr_coping_mechanisms')
|
|
|
|
.grid.box.training-value
|
|
h1.green-header(data-i18n='Training Value Bonus') Training Value Bonus
|
|
|
|
.grid.red-kits
|
|
each val in ['Archery Gear', 'Long Gun', 'Bludgeoning', 'Pistol', 'Piercing', 'Throwing', 'Slashing', 'Martial Arts']
|
|
-const name = val.replace(' ', '_').toLowerCase();
|
|
.kits
|
|
h2(data-i18n=`${val}`) #{val}
|
|
img(alt='' src=`${imageSrc}/KitIcons_${val.replace(' ', '')}_30x30.png`)
|
|
if (val === 'Long Gun' || val === 'Pistol')
|
|
input(name=`attr_${name}_tv` type='number' value='')
|
|
else
|
|
input(name=`attr_${name}` type='number' value='')
|
|
|
|
.grid.green-kits
|
|
each val in ['Athletic Gear', 'First Aid Kits', 'Swimming/Diving', 'Climbing Gear', 'Medical Gear', 'Tools', 'Command App', 'Recon Gear', 'Value', 'Firefighting', 'Survival Kit', 'Vehicles']
|
|
-const name = val.replace(/ /g, '_').replace('/', '_').toLowerCase();
|
|
.kits
|
|
h2(data-i18n=`${val}`) #{val}
|
|
img(alt='' src=`${imageSrc}/KitIcons_${val.replace(/ /g, '').replace('/', '')}_30x30.png`)
|
|
input(name=`attr_${name}` type='number' value='')
|
|
|
|
|
|
//- ROLL TEMPLATE
|
|
include src/pug/rolltemplate.html
|
|
|
|
|
|
//- SCRIPTS
|
|
script(type='text/worker')
|
|
include src/js/scripts.js
|