mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-09-04 22:22:28 +00:00
Changed the PULL date for version 1.4.7 to 12/04/2018 – Cosmetic Only Changed the width of the REF field in Advantages, Disadvantages, Skills, Techniques, and Possessions – Cosmetic Only Removed the visual cue for editable fields on the General Tab – Requested by MANY – Cosmetic Only Added highlighted light gray color for calculated fields on all pages – Cosmetics Only Removed the blue highlight from Melee and Ranged attacks as it is no longer needed – Cosmetic Only Fixed alert indicating to use whole number on attributes that can be up to 2 or 3 decimal places in value in the Inventory section - Cosmetic Only Resized the Life and Moving box and the Encumbrance box for FUTURE upgrades - Cosmetic Only
3894 lines
148 KiB
HTML
3894 lines
148 KiB
HTML
<div class="sheet-wrapper">
|
||
<!-- HIDDEN FIELDS -->
|
||
<input type="hidden" name="attr_10" value="10" disabled="disabled" />
|
||
<input type="hidden" name="attr_VS" value="vs:" disabled="disabled" />
|
||
<input type="hidden" name="attr_languages_points" value="0" />
|
||
<input type="hidden" name="attr_cf_points" value="0" />
|
||
<input type="hidden" name="attr_advantages_points" value="0" />
|
||
<input type="hidden" name="attr_disadvantages_points" value="0" />
|
||
<input type="hidden" name="attr_racial_points" value="0" />
|
||
<input type="hidden" name="attr_skills_points" value="0" />
|
||
<input type="hidden" name="attr_techniques_points" value="0" />
|
||
<input type="hidden" name="attr_spells_points" value="0" />
|
||
<!-- /HIDDEN FIELDS -->
|
||
|
||
<!-- ===== ===== ===== ===== TABS ===== ===== ===== ===== -->
|
||
<input type="radio" name="attr_tab" value="1" class="sheet-tab sheet-tab1" checked="checked" /><span>General</span>
|
||
<input type="radio" name="attr_tab" value="2" class="sheet-tab sheet-tab2" title="Languages, Advantages, Disadvantages, and Cultural Familiarities" /><span>Traits</span>
|
||
<input type="radio" name="attr_tab" value="3" class="sheet-tab sheet-tab3" title="Skills and Techniques" /><span>Skills</span>
|
||
<input type="radio" name="attr_tab" value="4" class="sheet-tab sheet-tab4" /><span>Combat</span>
|
||
<input type="radio" name="attr_tab" value="5" class="sheet-tab sheet-tab5" /><span>Inventory</span>
|
||
<input type="radio" name="attr_tab" value="6" class="sheet-tab sheet-tab6" /><span>Grimoire</span>
|
||
<input type="radio" name="attr_tab" value="7" class="sheet-tab sheet-tab7" /><span>Updates</span>
|
||
<input type="radio" name="attr_tab" value="0" class="sheet-tab sheet-tab0" /><span title="Sheet Options">y</span>
|
||
<div class="sheet-tab-br"></div>
|
||
|
||
|
||
<!-- ===== ===== ===== ===== GENERAL TAB ===== ===== ===== ===== -->
|
||
<div class="sheet-tab1">
|
||
|
||
<!-- _____ _____ ATTRIBUTE BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-attribute">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Attributes</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<div class="sheet-popup">Mod</div>
|
||
<span class="sheet-tooltip">
|
||
A modifier that will be applied to your
|
||
<br />
|
||
attribute. All derived attributes draw their<br />
|
||
base from your unmodified attributes.<br />
|
||
Therefore this MOD will generally only<br />
|
||
affect direct attribute rolls and skill rolls.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">Pts</div>
|
||
</div> <!-- .sheet-header -->
|
||
<div class="sheet-main-attribute">
|
||
<div class="sheet-row sheet-row-strength">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">ST</div>
|
||
<span class="sheet-tooltip">
|
||
Strength
|
||
<br />
|
||
10pts/level
|
||
<br />
|
||
Unmodified <span name="attr_strength_base"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_strength" value="10" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_strength_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_strength_points" value="0" step="10" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} ST [[@{strength} + @{modifier}]]" name="roll_vsST" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-dexterity">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">DX</div>
|
||
<span class="sheet-tooltip">
|
||
Dexterity
|
||
<br />
|
||
20pts/level
|
||
<br />
|
||
Unmodified: <span name="attr_dexterity_base"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_dexterity" value="10" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_dexterity_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_dexterity_points" value="0" step="20" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} DX [[@{dexterity} + @{modifier}]]" name="roll_vsDX" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-intelligence">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">IQ</div>
|
||
<span class="sheet-tooltip">
|
||
Intelligence
|
||
<br />
|
||
20pts/level
|
||
<br />
|
||
Unmodified: <span name="attr_intelligence_base"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_intelligence" value="10" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_intelligence_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_intelligence_points" value="0" step="20" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} IQ [[@{intelligence} + @{modifier}]]" name="roll_vsIQ" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-health">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">HT</div>
|
||
<span class="sheet-tooltip">
|
||
Health
|
||
<br />
|
||
10pts/level
|
||
<br />
|
||
Unmodified: <span name="attr_health_base"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_health" value="10" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_health_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_health_points" value="0" step="10" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} HT [[@{health} + @{modifier}]]" name="roll_vsHT" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</div>
|
||
<div class="sheet-row sheet-row-perception sheet-hr">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Per</div>
|
||
<span class="sheet-tooltip">
|
||
Perception
|
||
<br />
|
||
Based on Intelligence
|
||
<br />
|
||
5pts/level
|
||
<br />
|
||
Unmodified: <span name="attr_perception_base"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_perception" value="10" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_perception_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_perception_points" value="0" step="5" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} Per [[@{perception} + @{modifier}]]" name="roll_vsPer" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-sub-row sheet-row-vision">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Vision</div>
|
||
<span class="sheet-tooltip">
|
||
Visual Perception
|
||
<br />
|
||
Based on Perception
|
||
<br />
|
||
2pts/level
|
||
<br />
|
||
Unmodified: <span name="attr_vision_base"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_vision" value="10" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_vision_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_vision_points" value="0" step="2" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} Vision [[@{vision} + @{modifier}]]" name="roll_vsVision" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-sub-row sheet-row-hearing">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Hearing</div>
|
||
<span class="sheet-tooltip">
|
||
Audio Perception
|
||
<br />
|
||
Based on Perception
|
||
<br />
|
||
2pts/level
|
||
<br />
|
||
Unmodified: <span name="attr_hearing_base"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_hearing" value="10" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_hearing_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_hearing_points" value="0" step="2" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} Hearing [[@{hearing} + @{modifier}]]" name="roll_vsHearing" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-sub-row sheet-row-taste-smell">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Smell</div>
|
||
<span class="sheet-tooltip">
|
||
Taste & Smell Perception
|
||
<br />
|
||
Based on Perception
|
||
<br />
|
||
2pts/level
|
||
<br />
|
||
Unmodified: <span name="attr_taste_smell_base"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_taste_smell" value="10" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_taste_smell_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_taste_smell_points" value="0" step="2" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} Taste or Smell [[@{taste_smell} + @{modifier}]]" name="roll_vsTasteSmell" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-sub-row sheet-row-touch">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Touch</div>
|
||
<span class="sheet-tooltip">
|
||
Touch Perception
|
||
<br />
|
||
Based on Perception
|
||
<br />
|
||
2pts/level
|
||
<br />
|
||
Unmodified: <span name="attr_touch_base"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_touch" value="10" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_touch_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_touch_points" value="0" step="2" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} Touch [[@{touch} + @{modifier}]]" name="roll_vsTouch" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-willpower sheet-hr">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Will</div>
|
||
<span class="sheet-tooltip">
|
||
Willpower
|
||
<br />
|
||
Based on Intelligence
|
||
<br />
|
||
5pts/level
|
||
<br />
|
||
Unmodified: <span name="attr_willpower_base"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_willpower" value="10" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_willpower_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_willpower_points" value="0" step="5" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} Will [[@{willpower} + @{modifier}]]" name="roll_vsWill" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-sub-row sheet-row-fear">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Fright</div>
|
||
<span class="sheet-tooltip">
|
||
Fear Check
|
||
<br />
|
||
Based on Willpower
|
||
<br />
|
||
2pts/level
|
||
<br />
|
||
Unmodified: <span name="attr_fear_check_base"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_fear_check" value="10" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_fear_check_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_fear_check_points" value="0" step="2" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} Fright [[@{fear_check} + @{modifier}]]" name="roll_vsFearCheck" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-basic-speed sheet-hr">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Speed</div>
|
||
<span class="sheet-tooltip">
|
||
Basic Speed
|
||
<br />
|
||
Based on Health and Dexterity
|
||
<br />
|
||
5pts/0.25
|
||
<br />
|
||
Unmodified: <span name="attr_basic_speed_base" value="10"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_basic_speed" value="" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_basic_speed_mod" value="0" step="0.25" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_basic_speed_points" value="0" step="5" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button class="sheet-roll-tracker" type="roll" value="/em has a speed of [[@{basic_speed} &{tracker}]]" name="roll_init" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-basic-move">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Move</div>
|
||
<span class="sheet-tooltip">
|
||
Basic Move
|
||
<br />
|
||
Based on Basic Speed
|
||
<br />
|
||
5pts/level
|
||
<br />
|
||
Unmodified: <span name="attr_basic_move_base" value="0"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_basic_move" value="" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_basic_move_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_basic_move_points" value="0" step="5" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-dodge">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Dodge</div>
|
||
<span class="sheet-tooltip">
|
||
Dodge
|
||
<br />
|
||
Based on Basic Speed
|
||
<br />
|
||
Unmodified: <span name="attr_dodge_base" value="0"></span>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_dodge" value="" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_dodge_mod" value="0" step="1" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-lift-st sheet-hr">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Lift ST</div>
|
||
<span class="sheet-tooltip">
|
||
Lifting Strength
|
||
<br />
|
||
Based on Strength
|
||
<br />
|
||
3pts/level
|
||
<br />
|
||
Unmodified: <input class="sheet-inline" type="number" name="attr_lift_st_base" readonly="readonly" >
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_lift_st" value="0" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_lift_st_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_lift_st_points" value="0" step="3" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-basic-lift">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Lift</div>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_basic_lift" value="0" readonly="readonly" >
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-strike-st sheet-hr">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Striking</div>
|
||
<span class="sheet-tooltip">
|
||
Striking Strength
|
||
<br />
|
||
Based on Strength
|
||
<br />
|
||
5pts/level
|
||
<br />
|
||
Unmodified: <input class="sheet-inline" type="number" name="attr_striking_st_base" readonly="readonly" >
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_striking_st" value="0" readonly="readonly" >
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_striking_st_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_striking_st_points" value="0" step="5" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-thrust-damage">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Thrust</div>
|
||
<span class="sheet-tooltip">
|
||
Thrust Damage
|
||
<br />
|
||
<div>See page 16 for the complete table.</div>
|
||
<table>
|
||
<thead><tr><th>Strength</th><th>Thrust</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>1</td><td>1d6-6</td></tr>
|
||
<tr><td>2</td><td>1d6-6</td></tr>
|
||
<tr><td>3</td><td>1d6-5</td></tr>
|
||
<tr><td>4</td><td>1d6-5</td></tr>
|
||
<tr><td>5</td><td>1d6-4</td></tr>
|
||
<tr><td>6</td><td>1d6-4</td></tr>
|
||
<tr><td>7</td><td>1d6-3</td></tr>
|
||
<tr><td>8</td><td>1d6-3</td></tr>
|
||
<tr><td>9</td><td>1d6-2</td></tr>
|
||
<tr><td>10</td><td>1d6-2</td></tr>
|
||
<tr><td>11</td><td>1d6-1</td></tr>
|
||
<tr><td>12</td><td>1d6-1</td></tr>
|
||
<tr><td>13</td><td>1d6</td></tr>
|
||
</tbody>
|
||
</table>
|
||
<table>
|
||
<thead><tr><th>Strength</th><th>Thrust</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>14</td><td>1d6</td></tr>
|
||
<tr><td>15</td><td>1d6+1</td></tr>
|
||
<tr><td>16</td><td>1d6+1</td></tr>
|
||
<tr><td>17</td><td>1d6+2</td></tr>
|
||
<tr><td>18</td><td>1d6+2</td></tr>
|
||
<tr><td>19</td><td>2d6-1</td></tr>
|
||
<tr><td>20</td><td>2d6-1</td></tr>
|
||
<tr><td>21</td><td>2d6</td></tr>
|
||
<tr><td>22</td><td>2d6</td></tr>
|
||
<tr><td>23</td><td>2d6+1</td></tr>
|
||
<tr><td>24</td><td>2d6+1</td></tr>
|
||
<tr><td>25</td><td>2d6+2</td></tr>
|
||
<tr><td>26</td><td>2d6+2</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_thrust" value="1d6-2" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<input type="hidden" name="attr_thrust_damage_dice_icon" class="thrust-damage-dice-icon" value="explode" />
|
||
<button type="roll" value="/roll @{thrust}" name="roll_dmgThrust" class="roll_damage" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-swing-damage">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Swing</div>
|
||
<span class="sheet-tooltip">
|
||
Swing Damage
|
||
<br />
|
||
<div>See page 16 for the complete table.</div>
|
||
<table>
|
||
<thead><tr><th>Strength</th><th>Swing</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>1</td><td>1d6-5</td></tr>
|
||
<tr><td>2</td><td>1d6-5</td></tr>
|
||
<tr><td>3</td><td>1d6-4</td></tr>
|
||
<tr><td>4</td><td>1d6-4</td></tr>
|
||
<tr><td>5</td><td>1d6-3</td></tr>
|
||
<tr><td>6</td><td>1d6-3</td></tr>
|
||
<tr><td>7</td><td>1d6-2</td></tr>
|
||
<tr><td>8</td><td>1d6-2</td></tr>
|
||
<tr><td>9</td><td>1d6-1</td></tr>
|
||
<tr><td>10</td><td>1d6</td></tr>
|
||
<tr><td>11</td><td>1d6+1</td></tr>
|
||
<tr><td>12</td><td>1d6+2</td></tr>
|
||
<tr><td>13</td><td>2d6-1</td></tr>
|
||
</tbody>
|
||
</table>
|
||
<table>
|
||
<thead><tr><th>Strength</th><th>Swing</th></tr></thead>
|
||
<tbody>
|
||
<tr><td>14</td><td>2d6</td></tr>
|
||
<tr><td>15</td><td>2d6+1</td></tr>
|
||
<tr><td>16</td><td>2d6+2</td></tr>
|
||
<tr><td>17</td><td>3d6-1</td></tr>
|
||
<tr><td>18</td><td>3d6</td></tr>
|
||
<tr><td>19</td><td>3d6+1</td></tr>
|
||
<tr><td>20</td><td>3d6+2</td></tr>
|
||
<tr><td>21</td><td>4d6-1</td></tr>
|
||
<tr><td>22</td><td>4d6</td></tr>
|
||
<tr><td>23</td><td>4d6+1</td></tr>
|
||
<tr><td>24</td><td>4d6+2</td></tr>
|
||
<tr><td>25</td><td>5d6-1</td></tr>
|
||
<tr><td>26</td><td>5d6</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_swing" value="1d6" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<input type="hidden" name="attr_swing_damage_dice_icon" class="swing-damage-dice-icon" value="explode" />
|
||
<button type="roll" value="/roll @{swing}" name="roll_dmgSwing" class="roll_damage" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-flight sheet-hr" style="display: none;">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Flight</div>
|
||
<span class="sheet-tooltip">
|
||
Check to add air movement
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="checkbox" name="attr_flight_checked" value="1" class="sheet-boolean" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-attributes -->
|
||
|
||
<div class="sheet-box sheet-stats">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Stats</div>
|
||
<div class="sheet-cell sheet-col1">Value</div>
|
||
<div class="sheet-cell sheet-col2">Mod</div>
|
||
<div class="sheet-cell sheet-col3">Pts</div>
|
||
</div> <!-- .sheet-header -->
|
||
<div class="sheet-row sheet-row-hit-points">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Max HP</div>
|
||
<span class="sheet-tooltip">
|
||
Hit Points
|
||
<br />
|
||
Based on Strength
|
||
<br />
|
||
2pts/level
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_hit_points_max" value="10" readonly="readonly" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_hit_points_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_hit_points_points" value="0" step="2" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-sub-row sheet-row-current-points">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Current HP</div>
|
||
<span class="sheet-tooltip">
|
||
Current Hit Points
|
||
<br />
|
||
When you're hit points are low, you take penalties.
|
||
<br />
|
||
See Page 419.
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<td class="sheet-label">Reeling</td>
|
||
<td><input type="text" name="attr_hp_reeling" value="[[floor((@{hit_points|max}) / 3)]]" disabled="disabled"></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2">
|
||
- Halve Move, Speed, and Dodge
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-label">Verge of Collapse</td>
|
||
<td><input type="text" value="Less than 0" readonly="readonly" ></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2">
|
||
- Roll every turn @{VS} HT or fall unconscious.
|
||
<br />
|
||
- Your HT roll is at -1 for every 1xHP you are below 0.
|
||
<br />
|
||
- If you do nothing, and don't defend, you don't have to roll.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-label">Verge of Death</td>
|
||
<td><input type="number" name="attr_hp_verge" value="[[(@{hit_points|max}) * -1]]" disabled="disabled"></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2">
|
||
- Roll once @{VS} HT to stay alive.
|
||
<br />
|
||
- If you fail by 1 or 2 you are mortally wounded, but not dead.
|
||
<br />
|
||
- Roll again every time you take injury that puts you below<br />
|
||
another multiple of your max HP.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-label">Death</td>
|
||
<td><input type="number" name="attr_hp_death" value="[[(@{hit_points|max}) * -5]]" disabled="disabled"></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2">
|
||
- You are dead.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-label">Total Destruction</td>
|
||
<td><input type="number" name="attr_hp_destruction" value="[[(@{hit_points|max}) * -10]]" disabled="disabled"></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2">
|
||
- Your body has been destroyed beyond recognition or ressurection.
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_hit_points" value="10" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-fatigue-points">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Max FP</div>
|
||
<span class="sheet-tooltip">
|
||
Fatigue Points
|
||
<br />
|
||
Based on Health
|
||
<br />
|
||
3pts/level
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_fatigue_points_max" value="10" readonly="readonly" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_fatigue_points_mod" value="0" step="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_fatigue_points_points" value="0" step="3" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-sub-row sheet-row-current-points">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Current FP</div>
|
||
<span class="sheet-tooltip">
|
||
Current Fatigue Points
|
||
<br />
|
||
When you're fatigue points are low you take penalties.
|
||
<br />
|
||
See Page 426.
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<td class="sheet-label">Tired</td>
|
||
<td><input type="number" name="attr_fp_tired" value="[[floor((@{fatigue_points|max}) / 3)]]" disabled="disabled"></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2">
|
||
- Halve Move, ST, and Dodge
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-label">Verge of Collapse</td>
|
||
<td><input type="text" value="Less than 0" disabled="disabled"></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2">
|
||
- Further FP loss also comes off your HP.
|
||
<br />
|
||
- Roll against Will to do anything besides rest or talk.
|
||
<br />
|
||
- If you fail your Will roll, you fall unconscious.
|
||
<br />
|
||
- On a critical failure, roll @{VS} HT or suffer a heart attack.
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-label">Unconscious</td>
|
||
<td><input type="number" name="attr_fp_unconscious" value="[[-(@{fatigue_points|max})]]" disabled="disabled"></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2">
|
||
- Immediately fall unconscious
|
||
<br />
|
||
- FP can't drop any lower, but you still lose HP.
|
||
<br />
|
||
- You regain consciousness at 0 FP
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_fatigue_points" value="10" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-energy-points">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Max ER</div>
|
||
<span class="sheet-tooltip">
|
||
Energy Reserve
|
||
<br />
|
||
Rules can vary depending on what<br />
|
||
magic system you are using.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_energy_points_max" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2"></div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_energy_points_points" value="0" step="3" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-sub-row sheet-row-current-points">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Current ER</div>
|
||
<span class="sheet-tooltip">
|
||
Current Energy Reserve
|
||
<br />
|
||
Rules can vary.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_energy_points" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-hr">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_user_pool1_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_user_pool1_max" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2"></div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_user_pool1_points" value=0 />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-sub-row sheet-row-current-points">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Current</div>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_user_pool1" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_user_pool2_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_user_pool2_max" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2"></div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_user_pool2_points" value=0 />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-sub-row sheet-row-current-points">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Current</div>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_user_pool2" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<!-- _____ _____ MISCELLENEOUS BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-miscelleneous">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Miscellaneous</div>
|
||
<div class="sheet-cell sheet-col1">Pts</div>
|
||
</div> <!-- .sheet-header -->
|
||
<div class="sheet-row sheet-row-tech-level">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Tech Level</div>
|
||
<span class="sheet-tooltip">
|
||
This is the technology level that you character is familiar with.
|
||
<br />
|
||
It costs 5 points to raise this above or below the campaign"s<br />normal TL.
|
||
<div class="sheet-clearfix"></div>
|
||
<table style="text-align: left;">
|
||
<tbody>
|
||
<tr><td>TL0</td><td>Stone Age (Prehistory and later). </td></tr>
|
||
<tr><td>TL1</td><td>Bronze Age (3500 B.C.+).</td></tr>
|
||
<tr><td>TL2</td><td>Iron Age (1200 B.C.+).</td></tr>
|
||
<tr><td>TL3</td><td>Medieval (600 A.D.+).</td></tr>
|
||
<tr><td>TL4</td><td>Age of Sail (1450+).</td></tr>
|
||
<tr><td>TL5</td><td>Industrial Revolution (1730+).</td></tr>
|
||
<tr><td>TL6</td><td>Mechanized Age (1880+).</td></tr>
|
||
<tr><td>TL7</td><td>Nuclear Age (1940+).</td></tr>
|
||
<tr><td>TL8</td><td>Digital Age (1980+).</td></tr>
|
||
<tr><td>TL9</td><td>Microtech Age (2025+?).</td></tr>
|
||
<tr><td>TL10</td><td>Robotic Age (2070+?).</td></tr>
|
||
<tr><td>TL11</td><td>Age of Exotic Matter.</td></tr>
|
||
<tr><td>TL12+</td><td>Whatever the GM likes!</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_tl" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" step="5" name="attr_tl_pts" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-appearance">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Appearance
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<select name="attr_appearance">
|
||
<option value="-24">Horrific (-6)</option>
|
||
<option value="-20">Monstrous (-5)</option>
|
||
<option value="-16">Hideous (-4)</option>
|
||
<option value="-8">Ugly (-2)</option>
|
||
<option value="-4">Unattractive (-1)</option>
|
||
<option value="0" selected="selected">Average</option>
|
||
<option value="4">Attractive (+1)</option>
|
||
<option value="12">Handsome (+4/2)</option>
|
||
<option value="16">Very Handsome (+6/2)</option>
|
||
<option value="20">Transcendent (+8/2)</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_appearance_pts" value="@{appearance}" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-race">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Race
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_race" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-gender">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Gender
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_gender" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-size">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Size Modifier
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_size" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-hand">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Pri Hand
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hand" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-reactions">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Reactions
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_reactions" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-miscelleneous -->
|
||
|
||
|
||
<!-- _____ _____ POINT SUMMARY BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-points">
|
||
<div class="sheet-table">
|
||
<input type="hidden" name="attr_toggle_unspent_points" class="sheet-toggle-unspoint-points" value="0" />
|
||
<div class="sheet-header">
|
||
<div class="sheet-popup">Point Sum</div>
|
||
<span class="sheet-tooltip">
|
||
<strong>Total</strong>: Manual input: Represents to total value of the<br/>
|
||
PC in Character Points (spent and unspent combined).
|
||
<br />
|
||
<strong>Spent</strong>: Automatic total of Spent points: Attributes +<br/>
|
||
Traits + Skills + Other.
|
||
<br/>
|
||
<strong>Unspent</strong>: Has the option of being Manual or<br/>
|
||
Automatic, depending on an option selected on the
|
||
<br/>
|
||
Settings page entitled ‘Enter Unspent Points’.
|
||
<br/>
|
||
Manual Mode (Blue color): You manually enter your
|
||
<br/>
|
||
Unspent points.
|
||
<br/>
|
||
Automatic mode (Black color): It calculates the
|
||
<br/>
|
||
point total difference between Total and Spent.
|
||
</span>
|
||
</div> <!-- .sheet-header -->
|
||
|
||
<div class="sheet-row sheet-row-other">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Total
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_total_points" value="150" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-attributes sheet-hr">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Attributes
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_att_points" value="@{strength_points} + @{dexterity_points} + @{intelligence_points} + @{health_points} + @{perception_points} + @{vision_points} + @{hearing_points} + @{taste_smell_points} + @{touch_points} + @{willpower_points} + @{fear_check_points} + @{hit_points_points} + @{fatigue_points_points} + @{energy_points_points} + @{user_pool1_points} + @{user_pool2_points} + @{basic_speed_points} + @{basic_move_points} + @{striking_st_points} + @{lift_st_points}" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-traits">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Traits
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_trait_points" readonly="readonly" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-skills">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Skills
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_skill_points" disabled="disabled" value="@{skills_points} + @{techniques_points} + @{spells_points}" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-other">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Other
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_misc_points" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-other">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Spent
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_point_summary" disabled="disabled" value="@{att_points} + @{trait_points} + @{skill_points} + @{misc_points}" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-total sheet-hr">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Unspent
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_point_diff" value="@{total_points} - (@{att_points} + @{trait_points} + @{skill_points} + @{misc_points})" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-unspent sheet-hr">
|
||
<div class="sheet-cell sheet-col0 sheet-label sheet-unspent-points-label">
|
||
Unspent
|
||
</div>
|
||
<div class="sheet-cell sheet-col1 sheet-unspent-points">
|
||
<input type="text" name="attr_unspent_points" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-points -->
|
||
|
||
|
||
<!-- _____ _____ LIFTING BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-lift">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Lifting and Moving</div>
|
||
<div class="sheet-cell sheet-col1">Weight</div>
|
||
</div> <!-- .sheet-header -->
|
||
<div class="sheet-row sheet-row-simple-lift">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Simple Lift</div>
|
||
<span class="sheet-tooltip">
|
||
The weight the character can lift overhead<br />with one hand in one second.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_simple_lift" value="round(@{basic_lift})" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-one-handed-lift">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">One-Handed Lift</div>
|
||
<span class="sheet-tooltip">
|
||
The weight the character can lift overhead<br />with one hand in two seconds.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_one_hand_lift" value="round(2 * @{basic_lift})" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-two-handed-lift">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Two-Handed Lift</div>
|
||
<span class="sheet-tooltip">
|
||
The weight the character can lift overhead<br />with both hands in four seconds.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_two_hand_lift" value="round(8 * @{basic_lift})" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-shove-knock-over">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Shove & Knock Over</div>
|
||
<span class="sheet-tooltip">
|
||
The weight of an object the character can<br />shove and knock over.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_shove_lift" value="round(12 * @{basic_lift})" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-running-shove-knock-over">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Running Shove & Knock Over</div>
|
||
<span class="sheet-tooltip">
|
||
The weight of an object the character can<br />shove and knock over with a running start.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_run_shove_lift" value="round(24 * @{basic_lift})" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-carry-on-back">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Carry On Back</div>
|
||
<span class="sheet-tooltip">
|
||
The weight the character can carry slung<br />over his/her back.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_carry_back_lift" value="round(15 * @{basic_lift})" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-shift-slightly">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">Shift Slightly</div>
|
||
<span class="sheet-tooltip">
|
||
The weight of an object that the character<br />can shift slightly on a floor.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_shift_lift" value="round(50 * @{basic_lift})" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-lift -->
|
||
|
||
|
||
<!-- _____ _____ ENCUMBERANCE BOX _____ _____ -->
|
||
<!-- Note: Many of the Move and Dodge calculations were complicated, this was to allow for a Minimum Move of 1 and a Minimum Dodge of 1 -->
|
||
|
||
<div class="sheet-box sheet-encumberance">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Encumberance</div>
|
||
<div class="sheet-cell sheet-col1">Load</div>
|
||
<div class="sheet-cell sheet-col2">Move</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">Air</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">Water</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">Jump</div>
|
||
<div class="sheet-cell sheet-col3">Dodge</div>
|
||
</div>
|
||
<div class="sheet-row sheet-row-encumberance-0">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
None (0)
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_lift_0" value="@{basic_lift}" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_move_0" value="@{basic_move}" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_air_0" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_water_0" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_jump_0" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_dodge_0" value="@{dodge} " disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-encumberance-1">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Light (1)
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_lift_1" value="2 * @{basic_lift}" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_move_1" value="[[((1 + floor((@{basic_move} * 0.8))) + abs(1 - floor((@{basic_move} * 0.8)))) / 2]]" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_air_1" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_water_1" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_jump_1" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_dodge_1" value="[[((1 + (@{dodge} - 1)) + abs(1 - (@{dodge} - 1))) / 2]]" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-encumberance-2">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Medium (2)
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_lift_2" value="floor(3 * @{basic_lift}*100)/100" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_move_2" value="[[((1 + floor((@{basic_move} * 0.6))) + abs(1 - floor((@{basic_move} * 0.6)))) / 2]]" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_air_2" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_water_2" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_jump_2" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_dodge_2" value="[[((1 + (@{dodge} - 2)) + abs(1 - (@{dodge} -2))) / 2]]" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-encumberance-3">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Heavy (3)
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_lift_3" value="floor(6 * @{basic_lift}*100)/100" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_move_3" value="[[((1 + floor((@{basic_move} * 0.4))) + abs(1 - floor((@{basic_move} * 0.4)))) / 2]]" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_air_3" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_water_3" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_jump_3" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_dodge_3" value="[[((1 + (@{dodge} - 3)) + abs(1 - (@{dodge} -3))) / 2]]" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-encumberance-4">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
X-Heavy (4)
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_lift_4" value="10 * @{basic_lift}" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_move_4" value="[[((1 + floor((@{basic_move} * 0.2))) + abs(1 - floor((@{basic_move} * 0.2)))) / 2]]" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_air_4" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_water_4" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_jump_4" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_dodge_4" value="[[((1 + (@{dodge} -4)) + abs(1 - (@{dodge} - 4))) / 2]]" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<!-- Yes I realize encumbrance is spelled wrong here but the original authors misspelled it throughout the file so I did the same to stay backwards compatible. -->
|
||
<div class="sheet-row sheet-row-encumberance-MAX">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<div class="sheet-popup">MAX Load*</div>
|
||
<span class="sheet-tooltip">
|
||
Carry on Back (B353) 15xBL. Thus, you can carry
|
||
<br />
|
||
more than you can lift by yourself . . . but
|
||
<br />
|
||
every second that your encumbrance is over 10xBL
|
||
<br />
|
||
(that is Extra-Heavy encumbrance), you lose 1 FP.
|
||
<br />
|
||
</span>
|
||
</div>
|
||
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_lift_5" value="15 * @{basic_lift}" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_move_5" value="[[((1 + floor((@{basic_move} * 0.2))) + abs(1 - floor((@{basic_move} * 0.2)))) / 2]]" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_air_5" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_water_5" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_jump_5" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_dodge_5" value="[[((1 + (@{dodge} -4)) + abs(1 - (@{dodge} - 4))) / 2]]"disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-load sheet-hr">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Current (<span name="attr_encumbrance_level" value=""></span>)
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" step=".001"name="attr_total_weight" value="" readonly="readonly" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_current_move" value="" readonly="readonly" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_current_air" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_current_water" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1" style="display: none;">
|
||
<input type="number" name="attr_current_jump" value="0" disabled="disabled" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_current_dodge" value="" readonly="readonly" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-encumberance -->
|
||
|
||
</div> <!-- .sheet-tab1 -->
|
||
|
||
|
||
<!-- ===== ===== ===== ===== TRAITS TAB ===== ===== ===== ===== -->
|
||
<div class="sheet-tab2">
|
||
|
||
<!-- _____ _____ LANGUAGE BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-language">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Native Language</div>
|
||
<div class="sheet-cell sheet-col1">Spoken</div>
|
||
<div class="sheet-cell sheet-col2">Written</div>
|
||
<div class="sheet-cell sheet-col3">Pts</div>
|
||
</div> <!-- .sheet-header -->
|
||
<div class="sheet-row sheet-row-native-language">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" style="font-weight:bold;" name="attr_name_native_language" placeholder="-Enter Native Language here">
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<select name="attr_native_language_spoken">
|
||
<option value="0" selected>Native</option>
|
||
<option value="-1">Accented</option>
|
||
<option value="-2">Broken</option>
|
||
<option value="-3">None</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<select name="attr_native_language_written">
|
||
<option value="0" selected>Native</option>
|
||
<option value="-1">Accented</option>
|
||
<option value="-2">Broken</option>
|
||
<option value="-3">None</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="text" name="attr_native_language_points" value="@{native_language_spoken} + @{native_language_written}" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Learned Languages</div>
|
||
<div class="sheet-cell sheet-col1">Spoken</div>
|
||
<div class="sheet-cell sheet-col2">Written</div>
|
||
<div class="sheet-cell sheet-col3">Pts</div>
|
||
</div> <!-- .sheet-header -->
|
||
<fieldset class="repeating_languages">
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<select name="attr_spoken">
|
||
<option value="3">Native</option>
|
||
<option value="2">Accented</option>
|
||
<option value="1">Broken</option>
|
||
<option value="0" selected>None</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<select name="attr_written">
|
||
<option value="3">Native</option>
|
||
<option value="2">Accented</option>
|
||
<option value="1">Broken</option>
|
||
<option value="0" selected>None</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="text" name="attr_points" value="@{spoken} + @{written}" disabled="disabled" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_languages -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-language -->
|
||
|
||
|
||
<!-- _____ _____ CULTURE BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-culture">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Cultural Familiarities</div>
|
||
<div class="sheet-cell sheet-col1">Pts</div>
|
||
</div> <!-- .sheet-header -->
|
||
<fieldset class="repeating_cultures">
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_points" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_cultures -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-culture -->
|
||
|
||
<div class="sheet-clearfix"> </div>
|
||
|
||
|
||
<!-- _____ _____ ADVANTAGES BOX _____ _____ -->
|
||
<!-- this box uses the identifier "traits" for backwards compatibility -->
|
||
|
||
<div class="sheet-box sheet-traits">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Advantages (& Perks)</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<div class="sheet-popup">FOA</div>
|
||
<span class="sheet-tooltip">
|
||
Frequency of Appearance
|
||
<br />
|
||
<table>
|
||
<tbody>
|
||
<tr><td>15 or less><td></td>
|
||
<tr><td>12 or less><td></td>
|
||
<tr><td>9 or less><td></td>
|
||
<tr><td>6 or less><td></td>
|
||
</tbody>
|
||
</table>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col2"></div>
|
||
<div class="sheet-cell sheet-col3">Pts</div>
|
||
<div class="sheet-cell sheet-col4">Ref</div>
|
||
</div> <!-- .sheet-header -->
|
||
<fieldset class="repeating_traits">
|
||
<input class="sheet-toggle" type="checkbox" />
|
||
<span class="sheet-checkbox"></span>
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_foa" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} @{name} [[@{foa} + @{modifier}]]" name="roll_vsAFOA" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_points" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<input type="text" name="attr_ref" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-details">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Notes
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_notes" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_traits -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-traits -->
|
||
|
||
|
||
<!-- _____ _____ DISADVANTAGES BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-disadvantages">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Disadvantages (& Quirks)</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<div class="sheet-popup">SCN</div>
|
||
<span class="sheet-tooltip">
|
||
Self-control Number OR
|
||
<br />
|
||
Frequency of Appearance
|
||
<br />
|
||
<table>
|
||
<tbody>
|
||
<tr><td>15 or less</td></tr>
|
||
<tr><td>12 or less</td></tr>
|
||
<tr><td>9 or less</td></tr>
|
||
<tr><td>6 or less</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col2"></div>
|
||
<div class="sheet-cell sheet-col3">Pts</div>
|
||
<div class="sheet-cell sheet-col4">Ref</div>
|
||
</div> <!-- .sheet-header -->
|
||
<fieldset class="repeating_disadvantages">
|
||
<input class="sheet-toggle" type="checkbox" />
|
||
<span class="sheet-checkbox"></span>
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_control_rating" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} @{name} [[@{control_rating} + @{modifier}]]" name="roll_vsDSCR" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_points" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<input type="text" name="attr_ref" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-details">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Notes
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_notes" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_disadvantages -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-disadvantages -->
|
||
|
||
|
||
<!-- _____ _____ RACIAL TRAITS BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-racial">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Racial Traits</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<div class="sheet-popup">SCN</div>
|
||
<span class="sheet-tooltip">
|
||
Self-control Number OR
|
||
<br />
|
||
Frequency of Appearance
|
||
<table>
|
||
<tbody>
|
||
<tr><td>15 or less</td></tr>
|
||
<tr><td>12 or less</td></tr>
|
||
<tr><td>9 or less</td></tr>
|
||
<tr><td>6 or less</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col2"></div>
|
||
<div class="sheet-cell sheet-col3">Pts</div>
|
||
<div class="sheet-cell sheet-col4">Ref</div>
|
||
</div> <!-- .sheet-header -->
|
||
<fieldset class="repeating_racial">
|
||
<input class="sheet-toggle" type="checkbox" />
|
||
<span class="sheet-checkbox"></span>
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" name="attr_control_rating" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} @{name} [[@{control_rating} + @{modifier}]]" name="roll_vsRSCR" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" name="attr_points" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<input type="text" name="attr_ref" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-details">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Notes
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_notes" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_racial -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-racial -->
|
||
|
||
</div> <!-- .sheet-tab2 -->
|
||
|
||
|
||
<!-- ===== ===== ===== ===== SKILLS TAB ===== ===== ===== ===== -->
|
||
<div class="sheet-tab3">
|
||
|
||
<!-- _____ _____ SKILLS BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-skills">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Skills</div>
|
||
<div class="sheet-cell sheet-col8"></div>
|
||
<div class="sheet-cell sheet-col1">TL</div>
|
||
<div class="sheet-cell sheet-col2">Level</div>
|
||
<div class="sheet-cell sheet-col3">Attr</div>
|
||
<div class="sheet-cell sheet-col4">Diff</div>
|
||
<div class="sheet-cell sheet-col5">Bonus</div>
|
||
<div class="sheet-cell sheet-col6">Pts</div>
|
||
<div class="sheet-cell sheet-col7">Ref</div>
|
||
</div> <!-- .sheet-header -->
|
||
<fieldset class="repeating_skills">
|
||
<input class="sheet-toggle" type="checkbox" />
|
||
<span class="sheet-checkbox"></span>
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col8">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} @{name} [[@{level} + @{modifier}]]" name="roll_vsSL" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_tl" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_level" disabled="disabled" value="@{base} + @{difficulty} + @{bonus} + (floor((@{points} * 0.25) + 2) * ceil( ( ( @{points} - 2 ) + abs( @{points} - 2) ) / 256 ) + @{points} * abs( ceil( ( ( @{points} - 2 ) + abs( @{points} - 2) ) / 256 ) - 1 ))"/>
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<select name="attr_base">
|
||
<option value="@{strength}">ST</option>
|
||
<option value="@{dexterity}">DX</option>
|
||
<option value="@{intelligence}">IQ</option>
|
||
<option value="@{health}">HT</option>
|
||
<option value="@{willpower}">Will</option>
|
||
<option value="@{perception}">Per</option>
|
||
<option value="10">10</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<select name="attr_difficulty">
|
||
<option value="-1">E</option>
|
||
<option value="-2">A</option>
|
||
<option value="-3">H</option>
|
||
<option value="-4">VH</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell sheet-col5">
|
||
<input type="number" name="attr_bonus" value="0" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col6">
|
||
<input type="number" name="attr_points" value="0" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col7">
|
||
<input type="text" name="attr_ref" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-details">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Notes
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_notes" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_skills -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-skills -->
|
||
|
||
|
||
<!-- _____ _____ TECHNIQUES BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-techniques">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Techniques</div>
|
||
<div class="sheet-cell sheet-col1">Parent</div>
|
||
<div class="sheet-cell sheet-col2">Min</div>
|
||
<div class="sheet-cell sheet-col3">Max</div>
|
||
<div class="sheet-cell sheet-col4">Level</div>
|
||
<div class="sheet-cell sheet-col5">Cost</div>
|
||
<div class="sheet-cell sheet-col6">Bonus</div>
|
||
<div class="sheet-cell sheet-col7">Pts</div>
|
||
<div class="sheet-cell sheet-col8">Ref</div>
|
||
</div> <!-- .sheet-header -->
|
||
<fieldset class="repeating_techniques">
|
||
<input class="sheet-toggle" type="checkbox" />
|
||
<span class="sheet-checkbox"></span>
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_parent" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="number" name="attr_min" value="0" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
---
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<input type="text" name="attr_level" disabled="disabled" value="@{min} + floor(@{points} / @{points_per_level}) + @{bonus}"/>
|
||
</div>
|
||
<div class="sheet-cell sheet-col5">
|
||
<input type="number" name="attr_points_per_level" value="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col6">
|
||
<input type="number" name="attr_bonus" value="0" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col7">
|
||
<input type="number" name="attr_points" value="0" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col8">
|
||
<input type="text" name="attr_ref" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-details">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Notes
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_notes" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_techniques -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-techniques -->
|
||
|
||
</div> <!-- .sheet-tab3 -->
|
||
|
||
|
||
<!-- ===== ===== ===== ===== COMBAT TAB ===== ===== ===== ===== -->
|
||
<div class="sheet-tab4">
|
||
|
||
<!-- _____ _____ HIT LOCATION BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-damage-reduction">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header sheet-row-title">
|
||
<div class="sheet-cell sheet-col0">
|
||
Hit Location
|
||
</div>
|
||
</div> <!-- .sheet-header -->
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Where</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<div class="sheet-popup">Pen</div>
|
||
<span class="sheet-tooltip">
|
||
This is the <strong>Penalty</strong> <br />
|
||
applied to attack the <br />
|
||
specific location.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">DR</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-skull">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_skull" value="Skull" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_skull" value="-7" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_skull_dr_max" value="2" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-face">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_face" value="Face" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_face" value="-5" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_face_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-eyes">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_eyes" value="Eyes" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_eyes" value="-9" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_eyes_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-neck">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_neck" value="Neck" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_neck" value="-5" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_neck_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-arms">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_arms" value="Arms" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_arms" value="-2" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_arms_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-hands">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_hands" value="Hands" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_hands" value="-4" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_hands_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-torso">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_torso" value="Torso" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_torso" value="0" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_torso_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-vitals">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_vitals" value="Vitals" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_vitals" value="-3" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_vitals_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-groin">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_groin" value="Groin" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_groin" value="-3" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_groind_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-legs">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_legs" value="Legs" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_legs" value="-2" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_legs_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-feet">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_feet" value="Feet" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_feet" value="-4" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_feet_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-area">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name_area" value="Area" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty_area" value="n/a" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_area_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-header sheet-row-title">
|
||
<div class="sheet-cell sheet-col0">
|
||
User Created
|
||
</div>
|
||
</div> <!-- .sheet-header -->
|
||
<fieldset class="repeating_location">
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_hit_penalty" value="0" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_dr_max" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset>
|
||
</div> <!-- .sheet-table -->
|
||
|
||
<div class="speed-range-table"> <!-- .speed-range-table image-->
|
||
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/GURPS/Images/Speed_Range_Table.PNG" style="width:140px" alt="GURPS Speed\Range Tabke" />
|
||
</div> <!-- .speed-range-table image-->
|
||
|
||
</div> <!-- .sheet-box .sheet-damage-reduction -->
|
||
|
||
|
||
<!-- _____ _____ ACTIVE DEFENSE BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-active-defense">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Active Defenses</div>
|
||
<div class="sheet-cell sheet-col1">Type</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<div class="sheet-popup">Info</div>
|
||
<span class="sheet-tooltip">
|
||
<strong>F</strong>: this is a fencing weapon.
|
||
<br />
|
||
<strong>U</strong>: the weapon is unbalanced. You cannot use it to<br />
|
||
parry if you've already attacked with it this turn<br /> (and vice versa).
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">Skill</div>
|
||
</div> <!-- .sheet-header -->
|
||
<div class="sheet-row sheet-row-stats sheet-row-standard">
|
||
<div class="sheet-cell sheet-col0">
|
||
<div class="sheet-popup">[Optional] Apply Combat Reflexes to Dodge and Fear Modifiers</div>
|
||
<span class="sheet-tooltip sheet-ad-col0-tooltip">
|
||
Quickly add +1 Dodge modifier and
|
||
+2 Fright modifier on the General tab.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col1"> </div>
|
||
<div class="sheet-cell sheet-col2"> </div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="checkbox" class="sheet-boolean" name="attr_combat_reflexes" value="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4"> </div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-stats sheet-row-standard">
|
||
<div class="sheet-cell sheet-col0">Dodge</div>
|
||
<div class="sheet-cell sheet-col1">Dodge</div>
|
||
<div class="sheet-cell sheet-col2"></div>
|
||
<div class="sheet-cell sheet-col3"><input type="text" name="attr_ad_dodge_skill" value="@{current_dodge}" disabled="disabled" /></div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} Dodge [[@{current_dodge} + @{modifier}]]" name="roll_vsDodge" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-stats sheet-row-standard">
|
||
<div class="sheet-cell sheet-col0">Dodge and Retreat</div>
|
||
<div class="sheet-cell sheet-col1">Dodge</div>
|
||
<div class="sheet-cell sheet-col2"></div>
|
||
<div class="sheet-cell sheet-col3"><input type="text" name="attr_ad_dodge_retreat_skill" value="@{current_dodge} + 3" disabled="disabled" /></div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} Dodge and Retreat [[@{current_dodge} + @{modifier} + 3]]" name="roll_vsDodgeRetreat" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<fieldset class="repeating_defense">
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<select name="attr_type">
|
||
<option>Dodge</option>
|
||
<option>Parry</option>
|
||
<option>Block</option>
|
||
<option>Magic</option>
|
||
<option>Other</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_info" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="text" name="attr_skill" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} @{name} [[@{skill} + @{modifier}]]" name="roll_vsSL" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_defense -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-active-defense -->
|
||
|
||
|
||
<!-- _____ _____ MELEE ATTACKS BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-melee-attacks">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Melee Attacks</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<div class="sheet-popup">Damage</div>
|
||
<span class="sheet-tooltip">
|
||
<strong>Armor Divisor</strong>: A number in parenthesis after<br />
|
||
the damage - eg. (2) - is an armor divisor.
|
||
<br />
|
||
Enter this number as AD(#) or as
|
||
<br />
|
||
Armor Divisor(#) in the Damage Notes.
|
||
<br />
|
||
<strong>ex</strong>: indicates the attack causes an explosion.<br />
|
||
See page 269. Enter in the Damage Notes
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<div class="sheet-popup"> </div>
|
||
<span class="sheet-tooltip">
|
||
Damage Macro
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<div class="sheet-popup">Type</div>
|
||
<span class="sheet-tooltip">
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Abbr</th>
|
||
<th>Name</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr><td>cut</td> <td>Cutting</td></tr>
|
||
<tr><td>imp</td> <td>Impaling</td></tr>
|
||
<tr><td>cr</td> <td>Crushing</td></tr>
|
||
<tr><td>pi-</td> <td>Small Piercing</td></tr>
|
||
<tr><td>pi</td> <td>Piercing</td></tr>
|
||
<tr><td>pi+</td> <td>Large Piercing</td></tr>
|
||
<tr><td>pi++</td><td>Huge Piercing</td></tr>
|
||
<tr><td>aff</td> <td>Affliction</td></tr>
|
||
<tr><td>burn</td><td>Burning</td></tr>
|
||
<tr><td>cor</td> <td>Corrosion</td></tr>
|
||
<tr><td>fat</td> <td>Fatigue</td></tr>
|
||
<tr><td>tox</td> <td>Toxic</td></tr>
|
||
<tr><td>spec</td><td>Special</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<div class="sheet-popup">Reach</div>
|
||
<span class="sheet-tooltip">
|
||
The distance in yards that the weapon can reach.
|
||
<br />
|
||
<strong>C</strong>: this weapon can be used in close combat.
|
||
<br />
|
||
<strong>*</strong>: the weapon is awkward, and requires a Ready<br />
|
||
maneuver to switch between different reaches.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col5">
|
||
<span style="background-color: #87CEFA">| skill |</span>
|
||
</div>
|
||
</div> <!-- .sheet-header -->
|
||
|
||
<fieldset class="repeating_melee">
|
||
<input class="sheet-toggle" type="checkbox" />
|
||
<span class="sheet-checkbox"></span>
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_damage" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="hidden" name="attr_damage_dice_icon" class="melee-damage-dice-icon" value="explode" />
|
||
<button type="roll" value="@{roll} [[@{damage}]] @{type} damage. (@{name}) **Notes: ** @{damage_notes}" name="roll_damage" class="roll_damage" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<select name="attr_type">
|
||
<option value="Cutting (cut)">cut</option>
|
||
<option value="Impaling (imp)">imp</option>
|
||
<option value="Crushing (cr)">cr</option>
|
||
<option value="Small Piercing (pi-)">pi-</option>
|
||
<option value="Piercing (pi)">pi</option>
|
||
<option value="Large Piercing (pi+)">pi+</option>
|
||
<option value="Huge Piercing (pi++)">pi++</option>
|
||
<option value="Affliction (aff)">aff</option>
|
||
<option value="Burning (burn)">burn</option>
|
||
<option value="Corrosion (cor)">cor</option>
|
||
<option value="Fatigue (fat)">fat</option>
|
||
<option value="Toxic (tox)">tox</option>
|
||
<option value="Special (spec)">spec</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<input type="text" name="attr_reach" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col5">
|
||
<input type="text" name="attr_skill" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col6">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} @{name} [[@{skill} + @{modifier}]] **Notes:** @{notes}" name="roll_vsSL" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-details2">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Weapon Notes
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_notes" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2 sheet-label">
|
||
Damage Notes
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="text" name="attr_damage_notes" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_melee -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-melee-attacks -->
|
||
|
||
|
||
<!-- _____ _____ RANGED ATTACKS BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-ranged-attacks">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Ranged Attacks</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<div class="sheet-popup">Damage</div>
|
||
<span class="sheet-tooltip">
|
||
<strong>Armor Divisor</strong>: A number in parenthesis after<br />
|
||
the damage - eg. (2) - is an armor divisor.<br />
|
||
Enter this number as AD(#) or as<br />
|
||
Armor Divisor(#) in the Damage Notes.
|
||
<br />
|
||
<strong>ex</strong>: indicates the attack causes an explosion.<br />
|
||
<strong>[#d]</strong>: indicates the attack causes fragmentation.<br />
|
||
See page 269.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col2"> </div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<div class="sheet-popup">Type</div>
|
||
<span class="sheet-tooltip">
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Abbr</th>
|
||
<th>Name</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr><td>cut</td> <td>Cutting</td></tr>
|
||
<tr><td>imp</td> <td>Impaling</td></tr>
|
||
<tr><td>cr</td> <td>Crushing</td></tr>
|
||
<tr><td>pi-</td> <td>Small Piercing</td></tr>
|
||
<tr><td>pi</td> <td>Piercing</td></tr>
|
||
<tr><td>pi+</td> <td>Large Piercing</td></tr>
|
||
<tr><td>pi++</td><td>Huge Piercing</td></tr>
|
||
<tr><td>aff</td> <td>Affliction</td></tr>
|
||
<tr><td>burn</td><td>Burning</td></tr>
|
||
<tr><td>cor</td> <td>Corrosion</td></tr>
|
||
<tr><td>fat</td> <td>Fatigue</td></tr>
|
||
<tr><td>tox</td> <td>Toxic</td></tr>
|
||
<tr><td>spec</td><td>Special</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">Acc</div>
|
||
<div class="sheet-cell sheet-col5">
|
||
<div class="sheet-popup">RNG</div>
|
||
<span class="sheet-tooltip">
|
||
See page 269.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col6">
|
||
<div class="sheet-popup">RoF</div>
|
||
<span class="sheet-tooltip">
|
||
Rate of Fire
|
||
<br />
|
||
The maximum number of shots that can be fired in <br />
|
||
one turn (by a regular person).
|
||
<br />
|
||
The minimum number of shots is 1.
|
||
<br /><br />
|
||
<strong>!</strong>: minimum RoF is 1/4 of the maximum, rounded up.
|
||
<br />
|
||
<strong>mxn</strong>: fires the first number of shots, which each then<br />
|
||
split into the second number (eg. shotguns)
|
||
<br />
|
||
<strong>Jet</strong>: shoots a continuous stream of fliud. See page 106.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col7">
|
||
<div class="sheet-popup">Shots</div>
|
||
<span class="sheet-tooltip">
|
||
The number of shots that can be fired before the<br />
|
||
weapon must be reloaded.<br />
|
||
The parenthetical number indicates the number of 1<br />
|
||
second ready maneuvers required to reload the<br />
|
||
weapon.<br />
|
||
<strong>T</strong>: the weapon is thrown. To "reload" it, pick it up.<br />
|
||
<strong>i</strong>: you must load the shots individually. the listed<br />
|
||
time is for each shot.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col8">Bulk</div>
|
||
<div class="sheet-cell sheet-col9">
|
||
<div class="sheet-popup">RCL</div>
|
||
<span class="sheet-tooltip">
|
||
When firing at RoF 2+, every full multiple of Rcl<br />
|
||
by which you make your attack roll means you score<br />
|
||
one extra hit, to a maximum number of hits equal<br />
|
||
to total shots fired. See page 373.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col10">
|
||
<span style="background-color: #87CEFA">| skill |</span>
|
||
</div>
|
||
</div> <!-- .sheet-header -->
|
||
|
||
<fieldset class="repeating_ranged">
|
||
<input class="sheet-toggle" type="checkbox" />
|
||
<span class="sheet-checkbox"></span>
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_damage" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="hidden" name="attr_damage_dice_icon" class="range-damage-dice-icon" value="explode" />
|
||
<button type="roll" value="@{roll} [[@{damage}]] @{type} damage. (@{name}) **Notes: ** @{damage_notes}" name="roll_damage" class="roll_damage" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<select name="attr_type">
|
||
<option value="Cutting (cut)">cut</option>
|
||
<option value="Impaling (imp)">imp</option>
|
||
<option value="Crushing (cr)">cr</option>
|
||
<option value="Small Piercing (pi-)">pi-</option>
|
||
<option value="Piercing (pi)">pi</option>
|
||
<option value="Large Piercing (pi+)">pi+</option>
|
||
<option value="Huge Piercing (pi++)">pi++</option>
|
||
<option value="Affliction (aff)">aff</option>
|
||
<option value="Burning (burn)">burn</option>
|
||
<option value="Corrosion (cor)">cor</option>
|
||
<option value="Fatigue (fat)">fat</option>
|
||
<option value="Toxic (tox)">tox</option>
|
||
<option value="Special (spec)">spec</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<input type="text" name="attr_acc" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col5">
|
||
<input type="text" name="attr_range" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col6">
|
||
<input type="text" name="attr_rof" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col7">
|
||
<input type="text" name="attr_shots" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col8">
|
||
<input type="text" name="attr_bulk" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col9">
|
||
<input type="text" name="attr_recoil" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col10">
|
||
<input type="text" name="attr_skill" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col11">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} @{name} [[@{skill} + @{modifier}]] **Recoil: @{recoil} | Notes:** @{notes}" name="roll_vsSL" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-details2">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Weapon Notes
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_notes" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2 sheet-label">
|
||
Damage Notes
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="text" name="attr_damage_notes" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_ranged -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-ranged-attacks -->
|
||
|
||
</div> <!-- .sheet-tab4 -->
|
||
|
||
|
||
<!-- ===== ===== ===== ===== ITEMS TAB ===== ===== ===== ===== -->
|
||
<div class="sheet-tab5">
|
||
|
||
<!-- _____ _____ QUICK INVENTORY BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-quick-inventory sheet-textarea">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Quick Inventory & Wealth</div>
|
||
</div>
|
||
<textarea name="attr_quick_inventory"></textarea>
|
||
</div>
|
||
|
||
<!-- _____ _____ INVENTORY BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-items">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Possessions</div>
|
||
<div class="sheet-cell sheet-col1">TL</div>
|
||
<div class="sheet-cell sheet-col2">Ref</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<div class="sheet-popup">On</div>
|
||
<span class="sheet-tooltip">
|
||
Carried
|
||
<br />
|
||
Is the item being carried at the moment?
|
||
</span>
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">#</div>
|
||
<div class="sheet-cell sheet-col5">$</div>
|
||
<div class="sheet-cell sheet-col6">W</div>
|
||
<div class="sheet-cell sheet-col7">$+</div>
|
||
<div class="sheet-cell sheet-col8">W+</div>
|
||
</div>
|
||
<fieldset class="repeating_item">
|
||
<input class="sheet-toggle" type="checkbox" />
|
||
<span class="sheet-checkbox"></span>
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_tl" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_ref" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input class="sheet-boolean" type="checkbox" name="attr_carried" value="1" checked />
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<input type="number" name="attr_count" value="1" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col5">
|
||
<input type="number" name="attr_cost" value="0.00" step="0.01" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col6">
|
||
<input type="number" name="attr_weight" value="0" step="0.001" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col7" style="text-align: right">
|
||
<span name="attr_costtotal" value="0.00" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col8" style="text-align: right">
|
||
<span name="attr_weighttotal" value="0" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-details">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Notes
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_notes" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_item -->
|
||
<div class="sheet-row sheet-row-totals">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Total Value:
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="number" step=".01" name="attr_total_value" value="0" readonly="readonly" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2 sheet-label">
|
||
Total Weight:
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<input type="number" step=".001" name="attr_total_weight" value="0" readonly="readonly" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-items -->
|
||
|
||
</div> <!-- .sheet-tab5 -->
|
||
|
||
|
||
<!-- ===== ===== ===== ===== GRIMOIRE TAB ===== ===== ===== ===== -->
|
||
<div class="sheet-tab6">
|
||
|
||
<!-- _____ _____ SPELLS SETUP _____ _____ -->
|
||
<div class="sheet-box sheet-spells">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell"> Spells Based on: </div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<select name="attr_spell_base">
|
||
<option value="@{strength}">ST</option>
|
||
<option value="@{dexterity}">DX</option>
|
||
<option value="@{intelligence}" selected>IQ</option>
|
||
<option value="@{health}">HT</option>
|
||
<option value="@{willpower}">Will</option>
|
||
<option value="@{perception}">Per</option>
|
||
<option value="10">10</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell"> Magery/PI/Bonus Level: </div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<input type="number" name="attr_spell_bonus" value="0" />
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<!-- _____ _____ SPELLS BOX _____ _____ -->
|
||
|
||
<div class="sheet-box sheet-spells">
|
||
<div class="sheet-table">
|
||
<div class="sheet-header">
|
||
<div class="sheet-cell sheet-col0">Spell</div>
|
||
<div class="sheet-cell sheet-col1"></div>
|
||
<div class="sheet-cell sheet-col2">Level</div>
|
||
<div class="sheet-cell sheet-col3">Diff</div>
|
||
<div class="sheet-cell sheet-col4">Pts</div>
|
||
<div class="sheet-cell sheet-col5">Time</div>
|
||
<div class="sheet-cell sheet-col6">Duration</div>
|
||
<div class="sheet-cell sheet-col7">Cost</div>
|
||
<div class="sheet-cell sheet-col8">Maintain</div>
|
||
<div class="sheet-cell sheet-col9">Ref</div>
|
||
</div> <!-- .sheet-header -->
|
||
<fieldset class="repeating_spells">
|
||
<input class="sheet-toggle" type="checkbox" />
|
||
<span class="sheet-checkbox"></span>
|
||
<div class="sheet-row sheet-row-stats">
|
||
<div class="sheet-cell sheet-col0">
|
||
<input type="text" name="attr_name" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<button type="roll" value="@{roll} [[3d6]] @{VS} @{name} [[@{level} + @{modifier}]]" name="roll_vsSL" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col2">
|
||
<input type="text" name="attr_level" disabled="disabled"
|
||
value="@{spell_base} + @{difficulty} + @{spell_bonus} + (floor((@{points} * 0.25) + 2) * ceil( ( ( @{points} - 2 ) + abs( @{points} - 2) ) / 256 ) + @{points} * abs( ceil( ( ( @{points} - 2 ) + abs( @{points} - 2) ) / 256 ) - 1 ))"/>
|
||
</div>
|
||
<div class="sheet-cell sheet-col3">
|
||
<select name="attr_difficulty">
|
||
<option value="-3">H</option>
|
||
<option value="-4">VH</option>
|
||
</select>
|
||
</div>
|
||
<div class="sheet-cell sheet-col4">
|
||
<input type="number" name="attr_points" value"0" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col5">
|
||
<input type="text" name="attr_casttime" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col6">
|
||
<input type="text" name="attr_duration" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col7">
|
||
<input type="text" name="attr_cost" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col8">
|
||
<input type="text" name="attr_maintain" />
|
||
</div>
|
||
<div class="sheet-cell sheet-col9">
|
||
<input type="text" name="attr_ref" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
<div class="sheet-row sheet-row-details">
|
||
<div class="sheet-cell sheet-col0 sheet-label">
|
||
Notes
|
||
</div>
|
||
<div class="sheet-cell sheet-col1">
|
||
<input type="text" name="attr_notes" />
|
||
</div>
|
||
</div> <!-- .sheet-row -->
|
||
</fieldset> <!-- .repeating_spells -->
|
||
</div> <!-- .sheet-table -->
|
||
</div> <!-- .sheet-box .sheet-spells -->
|
||
</div> <!-- .sheet-tab6 -->
|
||
|
||
<!-- ===== ===== ===== ===== Revision History TAB ===== ===== ===== ===== -->
|
||
<div class="sheet-tab7">
|
||
|
||
<div>
|
||
<h3>Latest Changes: Updated 12/18/2018</h3>
|
||
|
||
<h3>Known Issues</h3>
|
||
<ul>
|
||
<li>Unable to delete a Technique - UPDATE</li>
|
||
<li>
|
||
The issue is the 'Max' value for the Technique. If any value was placed in there, the row will not delete.
|
||
So in this PULL I have blocked values from being placed there so that new Techniques can be deleted if need be.
|
||
Existing Techniques that you are unable to delete - the Devs are looking into that issue and will advise me.
|
||
</li>
|
||
<li>NOTE: Techniques, as it is now on the character sheet, does not really work well - that section will most likely be completely rewritten (I plan on doing it when I get some time and my skills at HTML improve).</li>
|
||
</ul>
|
||
|
||
<h3>Revision History</h3>
|
||
|
||
<p>Please note: I, Mike W, am not one of the original authors of this sheet. All I have done is to fix a number of small issues, changed some formatting, and implemeted some suggested changes. The basic functionality of the sheet has remained the same.</p>
|
||
|
||
<p>To report an Issues or a Suggestion, please use the Roll20 forum under Character Sheets & Compendium. Mike W has created a thread named: [GURPS] - Sheet #1 - Thread 1 (that seems to be similar to the naming convention used by other sheets).</p>
|
||
|
||
<p>https://app.roll20.net/forum/post/6616836/gurps-sheet-number-1-thread-1/?pageforid=6644122#post-6644122</p>
|
||
|
||
<p>In your post, please specify if it is an Issue or Suggestion with as much detail information as possible. Screen shots help a lot! I am just learning to work with HTML and CSS so I may not be able to do everything requested. I make no promises on how fast I may be able to implement a Fix or a Suggestion - so please be patient. -Thanks, Mike W.</p>
|
||
|
||
<p>If there are others that are working on or wish to work on this sheet, lets coordinate using the Roll20 forum for now - perhaps later we can use GitHub.</p>
|
||
|
||
<h4>Version: 1.4.8</h4>
|
||
|
||
<p>Pull Request: 12/18/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes, Fixes, and Adds made by Mike W (UserID: 1414610)</li>
|
||
<li>Changed the PULL date for version 1.4.7 to 12/04/2018 – Cosmetic Only</li>
|
||
<li>Changed the width of the REF field in Advantages, Disadvantages, Skills, Techniques, and Possessions – Cosmetic Only</li>
|
||
<li>Removed the visual cue for editable fields on the General Tab – Request by MANY – Cosmetic Only</li>
|
||
<li>Added highlighted light gray color for calculated fields on all pages – Cosmetics Only</li>
|
||
<li>Removed the blue highlight from Melee and Ranged attacks as it is no longer needed – Cosmetic Only</li>
|
||
<li>Fixed alert indicating to use whole number on attributes that can be up to 2 or 3 decimal places in value in the Inventory section - Cosmetic Only</li>
|
||
<li>Resized the Life and Moving box and the Encumbrance box for FUTURE upgrades - Cosmetic Only</li>
|
||
|
||
</ul>
|
||
|
||
<h4>Version: 1.4.7</h4>
|
||
|
||
<p>Pull Request: 12/04/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes, Fixes, and Adds made by Mike W (UserID: 1414610)</li>
|
||
<li>Added 'Latest Update' with date to the top of the Updates page - Cosmetic Only</li>
|
||
<li>Changed the Input color from pink to a light gray: Because of so many complaints about the pink - Cosmetic Only</li>
|
||
<li>Fixed the Current HP, Thrust, and Swing fields on the General page to display the Input Color – Cosmetic Only</li>
|
||
<li>Fixed bug for the Total Points and the calculated Unspent Points were not totaling correctly on the General page – The actual fix was spotted and provided by Filipe (UserID: 1089514)</li>
|
||
<li>Fix alignment of columns for Attributes on the General page - Cosmetic Only</li>
|
||
<li>Fix base tooltip font size from 10 to 11 to make it more readable - Cosmetic Only</li>
|
||
<li>Added tooltips for POINT SUM on the General page for Total, Spent, and Unspent - Cosmetic Only</li>
|
||
<li>Under POINT SUM in the General page, changed ‘Starting’ to ‘Total’ and changed ‘Total’ to ‘Spent‘ - Requested first by Valter (UserID:285013), then by many others – Cosmetic Only</li>
|
||
|
||
</ul>
|
||
|
||
<h4>Version: 1.4.6</h4>
|
||
|
||
<p>Pull Request: 11/20/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes, Fixes, and Adds made by Mike W (UserID: 1414610)</li>
|
||
<li>Rearranged the order of fields in the Melee Attacks repeating section to match the order presented in the GURPS books – Cosmetic Only</li>
|
||
<li>Rearranged the order of fields in the Ranged Attacks repeating section to match the order presented in the GURPS books – Cosmetic Only</li>
|
||
<li>Fixed various typo’s on the Updates page – Cosmetic Only </li>
|
||
<li>Fixed tooltip format specifically the width and placement – Cosmetic Only</li>
|
||
<li>Fixed tooltip for Attribute Mod, Shots, and RoF to fit the format – Cosmetic Only</li>
|
||
<li>Fixed the tooltip for Combat Reflexes, changed +3 fear to +2 Fright – Cosmetic Only </li>
|
||
</ul>
|
||
|
||
<h4>Version: 1.4.5</h4>
|
||
|
||
<p>Pull Request: 11/13/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes, Fixes, and Adds made by Mike W (UserID: 1414610)</li>
|
||
<li>Fixed version 1.4.1 Pull request Date – Cosmetic Only</li>
|
||
<li>Fixed version 1.4.2 Pull request date – Cosmetic Only </li>
|
||
<li>Fixed version 1.4.3 Added back in – Cosmetic Only </li>
|
||
<li>Fixed version 1.4.4 Renumbered from 1.4.3 – Cosmetic Only </li>
|
||
<li>Renamed ‘Skils’ tab to ‘Skills’ – Cosmetic Only </li>
|
||
</ul>
|
||
|
||
<h4>Version: 1.4.4</h4>
|
||
|
||
<p>Pull Request: 11/06/2018</p>
|
||
<ul>
|
||
<li>Changes made by MadCoder https://github.com/MadCoder253/roll20-character-sheets/issues</li>
|
||
<li>Added visual cue for editable fields on the General Tab</li>
|
||
<li>Sheet Setting Gear Icon: Foundational Sheet Options</li>
|
||
<li>Option to use automated unspent points or to enter unspent points manually</li>
|
||
<li>Option to select damage dice icon</li>
|
||
<li>Initial development of additional movement options</li>
|
||
<li>Added help text to combat reflexes. Mainly helpful for users who haven't noticed the options.</li>
|
||
</ul>
|
||
|
||
<h4>Version: 1.4.3</h4>
|
||
|
||
<p>Pull Request: 10/30/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes, Fixes, and Adds made by Mike W (UserID: 1414610)</li>
|
||
<li>Fixed version 1.4.1 Pull request Date – Cosmetic Only</li>
|
||
<li>Fixed version 1.4.2 Pull request date – Cosmetic Only </li>
|
||
<li> Added information pertaining to who made changes in version 1.4.2 – Cosmetic Only </li>
|
||
<li>Widened Shots field in the Range Attacks section – Cosmetic Only</li>
|
||
<li>Fixed widths (margins) of the Active Defenses, Melee Attacks, and the Ranged Attacks sections – Cosmetic Only</li>
|
||
<li>Fixed widths of the Damage Macro for the Melee Attacks and the Ranged Attacks sections – Cosmetic Only </li>
|
||
<li>Change the background color of the Skill field and Macro field to a Light Blue for Melee Attacks and Ranged Attacks – Cosmetic Only</li>
|
||
<li>Added some ‘Hover’ information for the Traits and Skills Tabs – Cosmetic Only</li>
|
||
<li>Restore some deleted Revision History – Cosmetic Only</li>
|
||
</ul>
|
||
|
||
<h4>Version: 1.4.2</h4>
|
||
|
||
<p>Pull Request: 10/23/2018</p>
|
||
<ul>
|
||
<li>Changes made by MadCoder https://github.com/MadCoder253/roll20-character-sheets/issues</li>
|
||
<li>Changed damage roll icons to red explosion to easily identify the difference from the skill roll icon</li>
|
||
<li>Update thrust and swing damage when striking ST is updated</li>
|
||
<li>Ability to enter values for Unspent points</li>
|
||
<li>When combat reflexes is toggled, update the dodge and fear check modifiers on the general tab</li>
|
||
</ul>
|
||
|
||
<h4>Version: 1.4.1</h4>
|
||
|
||
<p>Pull Request: 09/11/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes, Fixes, and Adds made by Mike W (UserID: 1414610)</li>
|
||
<li>Fixed Encumbrance Table calculations to always allow for a Minimum Move of 1 and a Minimum Dodge of 1.</li>
|
||
</ul>
|
||
|
||
<h4>Version: 1.4.0</h4>
|
||
|
||
<p>Pull Request: 09/04/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes, Fixes, and Adds made by Mike W (UserID: 1414610)</li>
|
||
<li>Fixed bug with calculating Current Move for Heavy and Extra Heavy Encumbrances and not using a Minimum of 1. Reported by Ray G (@raymond-g) (UserID: 1600355)</li>
|
||
<li>Fixed bug with calculating Total Weight from Inventory which at times created a weigh of more than 3 decimal places.</li>
|
||
<li >Added a "FOA" (Frequency of Appearance) field under Advantages (& Quirks) </li>
|
||
<li >Modified the Tool Tip for SCN under Disadvantages (& Quirks) and Racial Traits to include the wording "OR Frequency of Appearance" - Cosmetic Only</li>
|
||
<li>Added Max Load to the Encumbrance Table</li>
|
||
</ul>
|
||
|
||
<h4>Version: 1.3.9</h4>
|
||
|
||
<p>Pull Request: 08/21/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes, Fixes, and Adds made by Mike W (UserID: 1414610</li>
|
||
<li>Updated the Language Box format - Cosmetic Only</li>
|
||
<li>Added additional options for Native Language in regards to Spoken and Written levels as a Disadvantage</li>
|
||
<li>Updated the Inventory Box format Cosmetic Only</li>
|
||
<li>Added fields of "TL" (Tech Level) and "Ref" (Reference) to the Inventory repeating section</li>
|
||
<li>Fixed bug for Single Modifier Prompt and Extended Modifier Prompts if a "+" is used for a positive modifier entry</li>
|
||
|
||
</ul>
|
||
|
||
<h4>Version: 1.3.8</h4>
|
||
|
||
<p>Pull Request: 08/08/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes, Fixes, and Adds made by Mike W (UserID: 1414610)</li>
|
||
<li>Added the Speed-Range table image to the Combat Tab - Requested by CaptainJoy (UserID: GitHub) </li>
|
||
<li>Set the character sheet to always open to the Updates Tab</li>
|
||
<li>Fixed BUG where Basic Lift calculations for ST 7 or less was incorrectly rounding for Light, Medium, and Heavy Encumbrances </li>
|
||
<li>Renamed Notes to Weapon Notes under Melee Attacks and Ranged Attacks - osmetic Only</li>
|
||
<li>Added Damage Notes with an attribute under Melee Attacks and Ranged Attacks</li>
|
||
<li>Changed Tool Tip for Damage, for Melee attacks and Ranged Attacks, to indicate using the Damage Notes field - Cosmetic Only</li>
|
||
<li>Changed Armour Divisor to Armor Divisor - Cosmetic Only</li>
|
||
<li>Changed the output of the Attack Macros for Melee and Ranged attacks to include the Weapons Notes attribute - Cosmetic Only</li>
|
||
<li>Changed the output of the Damage Macros for Melee and Ranged attacks to include the Damage Notes attribute - Cosmetic Only</li>
|
||
</ul>
|
||
|
||
<h4>Version: 1.3.7</h4>
|
||
|
||
<p>Pull Request: 08/01/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes, Fixes, and Adds made by Mike W (UserID: 1414610)</li>
|
||
<li>Fixed alignment issue with the Notes field Under Skills not Left Justified - Cosmetic Only </li>
|
||
<li>Changed Hit Location box to have an additional Header identifying User Created Locations - Cosmetic Only</li>
|
||
<li>Changed all fields in the Hit Location box to be editable. This will enable you to change the name of any of the default Locations and the To Hit Penalty - Request from Valter (User id: 285013)</li>
|
||
<li> Fixed Bug where some Hit Locations did not save their DR values</li>
|
||
<li>Removed and Deleted the CR Label and attr_control_rating for Advantages. The correct terminology is Self-control Number and this is not used for Advantages</li>
|
||
<li>Added an attribute for Native Language. Nothing fancy just a direct input - Requested by Flemmerr (User id: 1515009)</li>
|
||
<li>Added the Recoil attribute to the chat results for the Ranged Attacks macro - Cosmetic only</li>
|
||
<li>Changed the Label of "Disadvantages" to "Disadvantages (& Quirks)" - Cosmetic Only </li>
|
||
<li>Changed the Label of "Advantages" to "Advantages (& Perks)" - Cosmetic Only </li>
|
||
<li>Fixed many miscellaneous issues to existing table fieldsets</li>
|
||
</ul>
|
||
|
||
<h4>Version: 1.3.6</h4>
|
||
|
||
<p>Pull Request: 07/25/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes, Fixes, and Adds made by Mike W (UserID: 1414610</li>
|
||
<li>Corrected spelling of Miscellaneous on the General page - Cosmetic only</li>
|
||
<li>Updated Tool Tip for Type under Melee Attacks and Ranged, removed the Multiplier information as it is irrelevant, also fixed the alignment - Cosmetic only</li>
|
||
<li>Added missing information from Type drop down for Ranged Attacks - Missing was Affliction and Special</li>
|
||
<li>Changed the label of "Quick Inventory" to "Quick Inventory & Wealth" and the Label left justified - Cosmetic</li>
|
||
<li>Changed the Melee Attacks and Ranged Attacks macros to include the Notes attribute in the results in Chat - Cosmetic only </li>
|
||
<li>Changed all Die Macros to apply Bold to the Character Name in the results in Chat - Cosmetic only</li>
|
||
<li>Change when adding a new Skill, Technique, or Spell, the Points defaults to 0 instead of blank</li>
|
||
<li>Fixed minor spelling errors - Cosmetic only</li>
|
||
<li>Renamed Header of CR to SCN under Disadvantages and Racial Trains to reflect correct terminology - Cosmetic only</li>
|
||
<li>Fixed Tool Tip of SCN (formerly CR) under Disadvantages and Racial Trains to reflect correct terminology - changed from "Control Rating" to "Self-control Number" - Cosmetic only</li>
|
||
<li>Added Macro for Self-control Number Roll within Disadvantages and Racial Traits</li>
|
||
<li>Changes and Adds requested by Mike W (@mike-w) (UserID: 1414610)</li>
|
||
<li>Spelling correction requested by Rabulias (@rabulias) (UserID: 4692)</li>
|
||
</ul>
|
||
|
||
<h4>Version: 1.3.5</h4>
|
||
|
||
<p>Pull Request: 7/17/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes made by Tom S</li>
|
||
<li>Changed the word Fear to Fright (Visibility only - no attributes where changed)</li>
|
||
<li>Changed the Macro result from vs. Will to vs. Fright</li>
|
||
<li>Changed the Hit Location DR input to accept text (so that you can add DR entries like 2* or 3/1*)</li>
|
||
<li>Changed the visible width of the DR field making it wider</li>
|
||
<li>Fixed bug in Hit Location Penalty not saving for added custom location</li>
|
||
<li>Added a Tool Tip for Pen header in Hit Location</li>
|
||
<li>Requested by Mike W (@mike-w) (UserID: 1414610) see: https://app.roll20.net/forum/post/6572120/</li>
|
||
</ul>
|
||
|
||
<h4>Version: 1.3.4</h4>
|
||
|
||
<p>Pull Request: 3/7/2018</p>
|
||
<ul>
|
||
<li>Changes made by MadCoder https://github.com/MadCoder253/roll20-character-sheets/issues</li>
|
||
<li>Add Revision History Tab</li>
|
||
<li>Changed roll buttons to use dicefontd6 (requested by Mike W
|
||
(@mike-w) (UserID: 1414610) see: https://app.roll20.net/forum/post/5845539/</li>
|
||
<li>Fix lift & encumbrance rounding error for low ST. Round to whole number.
|
||
(requested by Lucy (@lucy) (UserID: 359497) see: https://app.roll20.net/forum/permalink/5142954/</li>
|
||
</ul>
|
||
|
||
<h4>Version 1.3.3</h4>
|
||
|
||
<p>Pull Request: 3/1/2018</p>
|
||
|
||
<ul>
|
||
<li>Changes made by MadCoder https://github.com/MadCoder253/roll20-character-sheets/issues</li>
|
||
<li>Restyled tabs to work with Firefox and MS Edge</li>
|
||
<li>Traits tab -> disadvantages section: slight changes to column spacing</li>
|
||
<li>Combat tab -> Ranged attacks section: slight changes to column spacing and abbreviate titles</li>
|
||
<li>Skills Tab -> Techniques section: slight changes to column spacing</li>
|
||
<li>Added URL to GURPS roll20 wiki</li>
|
||
</ul>
|
||
|
||
</div>
|
||
|
||
</div> <!-- .sheet-tab7 -->
|
||
|
||
<div class="sheet-tab0">
|
||
<div class="sheet-options">
|
||
<div class="sheet-box">
|
||
<input type="radio" name="attr_modifier" value="0" checked="true" />
|
||
<span class="sheet-popup">No Modifier Prompt</span>
|
||
<span class="sheet-tooltip">
|
||
Rolls will be made immediately with no prompt.
|
||
</span>
|
||
<br /><input type="radio" name="attr_modifier" value="[[?{Modifier|0}]]" />
|
||
<span class="sheet-popup">Single Modifier Prompt</span>
|
||
<span class="sheet-tooltip">
|
||
Ask for a bonus or penalty to be added to dice rolls.
|
||
<br />
|
||
This will not affect damage rolls.
|
||
</span>
|
||
<br />
|
||
<input type="radio" name="attr_modifier" value="[[?{Modifier|0}]] +[[?{Shock|0}]] + [[?{Reeling or Staggered|0}]] + [[?{Off-Hand|0}]] + [[?{Familiarity|0}]]" />
|
||
<span class="sheet-popup">Extended Modifier Prompts</span>
|
||
<span class="sheet-tooltip">
|
||
Instead of a single modifier, rolls will ask for a series of modifiers,<br />
|
||
to remind you about potential bonuses/penalties.
|
||
<br />
|
||
This will not affect damage rolls.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-box">
|
||
<input type="radio" name="attr_roll" value="**@{character_name}** rolls" checked="true" />
|
||
<span class="sheet-popup">Public Rolls</span>
|
||
<span class="sheet-tooltip">
|
||
All players will be able to see<br />
|
||
your skill level, roll and results.
|
||
</span>
|
||
<br />
|
||
<input type="radio" name="attr_roll" value="/w gm --l **@{character_name}** rolls" />
|
||
<span class="sheet-popup">Private Skill Levels</span>
|
||
<span class="sheet-tooltip">
|
||
Only the GM will be able to see<br />
|
||
your skill level, but all players<br />
|
||
will see the result.
|
||
<br />
|
||
This will not affect damage rolls.
|
||
</span>
|
||
<br />
|
||
<input type="radio" name="attr_roll" value="/w gm **@{character_name}** rolls" />
|
||
<span class="sheet-popup">Private Rolls</span>
|
||
<span class="sheet-tooltip">
|
||
Only the GM will see your skill<br />
|
||
level and the result.
|
||
<br />
|
||
This will not affect damage rolls.
|
||
</span>
|
||
</div>
|
||
<div class="sheet-box">
|
||
<input type="checkbox" name="attr_use_unspent_box" class="sheet-manual-unspent-box" value="1" />
|
||
<span class="sheet-popup">Enter Unspent Points</span>
|
||
<span class="sheet-tooltip">Check if you would like to manually track your unspent points</span>
|
||
</div>
|
||
<div class="sheet-box">
|
||
Damage Dice Icon
|
||
<div>
|
||
<input type="radio" name="attr_damage_dice_type" value="explode" checked="true" />
|
||
<button type="roll" value="0" name="btn_damage_dice_explode" class="roll_explode btn" disabled="disabled" />
|
||
</div>
|
||
<div>
|
||
<input type="radio" name="attr_damage_dice_type" value="d6black" />
|
||
<button type="roll" value="0" name="btn_damage_dice_d6black" class="btn" disabled="disabled" />
|
||
</div>
|
||
<div>
|
||
<input type="radio" name="attr_damage_dice_type" value="d20blank" />
|
||
<button type="roll" value="0" name="btn_damage_dice_d20blank" class="btn roll_d20blank" disabled="disabled" />
|
||
</div>
|
||
<div>
|
||
<input type="radio" name="attr_damage_dice_type" value="d4skull" />
|
||
<button type="roll" value="0" name="btn_damage_dice_d4skull" class="btn roll_d4skull" disabled="disabled" />
|
||
</div>
|
||
</div>
|
||
<hr />
|
||
<div class="sheet-box">
|
||
<input type="radio" name="attr_mod_cascade" value="all" checked="true" />
|
||
<span class="sheet-popup">Mods to attributes increase all derived stats (including HP, FP)</span>
|
||
<br />
|
||
<input type="radio" name="attr_mod_cascade" value="some" />
|
||
<span class="sheet-popup">Mods to attributes increase most derived stats (not HP, FP)</span>
|
||
<br />
|
||
<input type="radio" name="attr_mod_cascade" value="none" />
|
||
<span class="sheet-popup">Mods to attributes do not increase derived stats</span>
|
||
</div>
|
||
|
||
<br />
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<!-- ===== ===== ===== ===== LOGO ===== ===== ===== ===== -->
|
||
|
||
<div style="text-align: center; margin-top: 10px;">
|
||
<hr />
|
||
<img height="30px" src="http://www.sjgames.com/poweredbygurps/img/logo.gif" />
|
||
<hr />
|
||
<a href="https://wiki.roll20.net/GURPS_4th_Edition" target="_blank">GURPS 4th Edition Roll20 Wiki</a><br />
|
||
https://wiki.roll20.net/GURPS_4th_Edition
|
||
</div>
|
||
</div>
|
||
|
||
<script type="text/worker">
|
||
|
||
var noop = function () {}; // do nothing.
|
||
|
||
var version = "1.4.8";
|
||
|
||
var modCascade = true;
|
||
var modCascadeAll = true;
|
||
|
||
// add global variable
|
||
var damageTable = [];
|
||
|
||
/* Due to the change from auto-calc fields to helper scrips,
|
||
* I'm running a "on open" to set various fields. At some point
|
||
* in the future this might no longer be needed.
|
||
*/
|
||
on('sheet:opened', function() {
|
||
console.log('********* Sheet Opened *********');
|
||
|
||
console.log('** Setting default TAB to Updates **');
|
||
/* When the sheet is opened, it opens to the Update tab */
|
||
setAttrs({tab:7});
|
||
/* For Bug Fix v1.3.9 : Need to convert the Value of the Modifier Prompt*/
|
||
console.log('** Attribute Modifier new values v1.3.9 **');
|
||
|
||
getAttrs(['modifier'], function(v){
|
||
const setObj = {};
|
||
if(v.modifier==='?{Modifier|0}'){
|
||
setObj.modifier = '[[?{Modifier|0}]]'
|
||
}else if(v.modifier==='?{Modifier|0} + ?{Shock|0} + ?{Reeling or Staggered|0} + ?{Off-Hand|0} + ?{Familiarity|0}'){
|
||
setObj.modifier = '[[?{Modifier|0}]] +[[?{Shock|0}]] + [[?{Reeling or Staggered|0}]] + [[?{Off-Hand|0}]] + [[?{Familiarity|0}]]'
|
||
}
|
||
setAttrs(setObj,{silent:true});
|
||
});
|
||
|
||
getAttrs(['sheet_version', 'mod_cascade', 'modCascade', 'modCascadeAll'], function(v) {
|
||
if (v.modCascade && v.modCascadeAll) {
|
||
modCascade = v.modCascade;
|
||
modCascadeAll = v.modCascadeAll;
|
||
}
|
||
if (!v.sheet_version || v.sheet_version != version) {
|
||
// Set sheet version:
|
||
setAttrs({ sheet_version: version });
|
||
|
||
// initialize any empty fields in repeating sections since the default values were removed.
|
||
loadRepeating('repeating_languages', 'spoken', 0);
|
||
loadRepeating('repeating_languages', 'written', 0);
|
||
loadRepeating('repeating_skills', 'points', 1);
|
||
loadRepeating('repeating_cultures', 'points', 1);
|
||
loadRepeating('repeating_techniques', 'points', 1);
|
||
loadRepeating('repeating_spells', 'points', 1);
|
||
|
||
// initalize all calculated stats
|
||
resetAll(v.mod_cascade);
|
||
}
|
||
});
|
||
|
||
damageTable = generateDamageTable();
|
||
|
||
});
|
||
|
||
on('change:mod_cascade', function (e) {
|
||
getAttrs(['mod_cascade'], function (v) {
|
||
resetAll(v.mod_cascade);
|
||
})
|
||
});
|
||
|
||
function resetAll(mod_cascade) {
|
||
switch(mod_cascade) {
|
||
case 'all':
|
||
modCascade = true;
|
||
modCascadeAll = true;
|
||
break;
|
||
case 'some':
|
||
modCascade = true;
|
||
modCascadeAll = false;
|
||
break;
|
||
default:
|
||
modCascade = false;
|
||
modCascadeAll = false;
|
||
}
|
||
setAttrs({
|
||
modCascade: modCascade,
|
||
modCascadeAll: modCascadeAll
|
||
});
|
||
|
||
// After move, dodge, encumbrance, HP, and FP
|
||
var thenCurrentMoveDodge = _.after(5, function () {
|
||
updateMoveDodge();
|
||
});
|
||
|
||
// After DX and HT
|
||
var thenSpeedMoveDodge = _.after(2, function () {
|
||
updateBasicSpeed(function () {
|
||
// After Basic Speed...
|
||
updateBasicMove(thenCurrentMoveDodge);
|
||
updateDodge(thenCurrentMoveDodge);
|
||
});
|
||
});
|
||
|
||
// After Lift and weight...
|
||
var thenEncumbrance = _.after(2, function () {
|
||
updateEncLevel(thenCurrentMoveDodge);
|
||
});
|
||
|
||
sumRepeating('repeating_item', 'weighttotal', function (v) {
|
||
setAttrs({ total_weight: (v * 1000) / 1000 }, {silent: false}, thenEncumbrance);
|
||
});
|
||
|
||
// Update attributes, then secondary characteristics, and so on...
|
||
updateST(function () {
|
||
// After ST...
|
||
updateHP(thenCurrentMoveDodge);
|
||
updateLift(thenEncumbrance);
|
||
updateStrikingST();
|
||
// updateStrikingST damage rolls
|
||
console.log("update Striking Damage");
|
||
updateStrikingStrengthDamage();
|
||
});
|
||
updateDX(thenSpeedMoveDodge);
|
||
updateIQ(function () {
|
||
// After IQ...
|
||
updateWill();
|
||
updatePer(function () {
|
||
// After Per...
|
||
updateSense();
|
||
});
|
||
});
|
||
updateHT(function () {
|
||
updateFP(thenCurrentMoveDodge);
|
||
thenSpeedMoveDodge();
|
||
});
|
||
|
||
}
|
||
|
||
// Sum values, used in reduce
|
||
function getSum(total, num) {
|
||
return (+total || 0) + (+num || 0);
|
||
}
|
||
|
||
// function to sum a field from a repeating section
|
||
function sumRepeating(sectionName, fieldName, callback) {
|
||
getSectionIDs(sectionName, function (ids) {
|
||
if (ids.length === 0 ) {
|
||
callback(0);
|
||
return;
|
||
}
|
||
var fieldArray = [];
|
||
for (var i = 0; i < ids.length; i++) {
|
||
fieldArray.push(sectionName + '_' + ids[i] + '_' + fieldName);
|
||
}
|
||
getAttrs(fieldArray, function (fieldValues) {
|
||
var vals = Object.values(fieldValues);
|
||
vals.push(0);
|
||
var total = vals.reduce(getSum);
|
||
callback(total);
|
||
});
|
||
});
|
||
}
|
||
|
||
// load values of a repeating section
|
||
function loadRepeating(sectionName, fieldName, defaultValue) {
|
||
console.log('********* loadRepeating ' + sectionName + '.' + fieldName + '*********');
|
||
getSectionIDs(sectionName, function (ids) {
|
||
if (ids.length === 0 ) {
|
||
return;
|
||
}
|
||
var fieldArray = [];
|
||
var update = {};
|
||
for (var i = 0; i < ids.length; i++) {
|
||
var propName = sectionName + '_' + ids[i] + '_' + fieldName;
|
||
fieldArray.push(propName);
|
||
update[propName] = defaultValue;
|
||
}
|
||
getAttrs(fieldArray, function (fieldValues) {
|
||
Object.assign(update, fieldValues);
|
||
setAttrs(update);
|
||
});
|
||
});
|
||
}
|
||
|
||
// Strength Change
|
||
on('change:strength_points change:strength_mod', function (e) {
|
||
updateST();
|
||
});
|
||
// Update Strength
|
||
function updateST(callback) {
|
||
callback = callback || noop;
|
||
console.log('********* updateST *********');
|
||
getAttrs(['strength_points', 'strength_mod'], function(v) {
|
||
var base = 10 + ((+v.strength_points || 0) / 10 | 0);
|
||
var mod = +v.strength_mod || 0;
|
||
setAttrs({
|
||
strength_base: base,
|
||
strength: base + mod
|
||
}, {silent: false}, callback);
|
||
});
|
||
}
|
||
|
||
// Dexterity Change
|
||
on('change:dexterity_points change:dexterity_mod', function (e) {
|
||
updateDX();
|
||
});
|
||
// Update Dexterity
|
||
function updateDX(callback) {
|
||
callback = callback || noop;
|
||
console.log('********* updateDX *********');
|
||
getAttrs(['dexterity_points', 'dexterity_mod'], function(v) {
|
||
var base = 10 + ((+v.dexterity_points || 0) / 20 | 0);
|
||
var mod = +v.dexterity_mod || 0;
|
||
setAttrs({
|
||
dexterity_base: base,
|
||
dexterity: base + mod
|
||
}, {silent: false}, callback);
|
||
});
|
||
}
|
||
|
||
// Intelligence
|
||
on('change:intelligence_points change:intelligence_mod', function (e) {
|
||
updateIQ();
|
||
});
|
||
// Update Intelligence
|
||
function updateIQ(callback) {
|
||
callback = callback || noop;
|
||
console.log('********* updateIQ *********');
|
||
getAttrs(['intelligence_points', 'intelligence_mod'], function(v) {
|
||
var base = 10 + ((+v.intelligence_points || 0) / 20 | 0);
|
||
var mod = +v.intelligence_mod || 0;
|
||
setAttrs({
|
||
intelligence_base: base,
|
||
intelligence: base + mod
|
||
}, {silent: false}, callback);
|
||
});
|
||
}
|
||
|
||
// Health
|
||
on('change:health_points change:health_mod', function (e) {
|
||
updateHT();
|
||
});
|
||
// Update Health
|
||
function updateHT(callback) {
|
||
callback = callback || noop;
|
||
console.log('********* updateHT *********');
|
||
getAttrs(['health_points', 'health_mod'], function(v) {
|
||
var base = 10 + ((+v.health_points || 0) / 10 | 0);
|
||
var mod = +v.health_mod || 0;
|
||
setAttrs({
|
||
health_base: base,
|
||
health: base + mod
|
||
}, {silent: false}, callback);
|
||
});
|
||
}
|
||
|
||
// HP
|
||
on('change:strength change:hit_points_points change:hit_points_mod', function (e) {
|
||
updateHP();
|
||
});
|
||
// Update HP
|
||
function updateHP(callback) {
|
||
console.log('********* updateHP *********');
|
||
callback = callback || noop;
|
||
getAttrs(['strength', 'strength_base', 'hit_points_points', 'hit_points_mod'], function(v) {
|
||
var base = (modCascadeAll ? +v.strength : +v.strength_base) +
|
||
((+v.hit_points_points || 0) / 2 | 0);
|
||
var mod = +v.hit_points_mod;
|
||
setAttrs({
|
||
hit_points_max: base + mod
|
||
}, {silent: false}, callback);
|
||
});
|
||
}
|
||
|
||
// FP
|
||
on('change:health change:fatigue_points_points change:fatigue_points_mod', function (e) {
|
||
updateFP();
|
||
});
|
||
// Update FP
|
||
function updateFP(callback) {
|
||
console.log('********* updateFP *********');
|
||
callback = callback || noop;
|
||
getAttrs(['health', 'health_base', 'fatigue_points_points', 'fatigue_points_mod'], function(v) {
|
||
var base = (modCascadeAll ? +v.health : +v.health_base) +
|
||
((+v.fatigue_points_points || 0) / 3 | 0);
|
||
var mod = +v.fatigue_points_mod;
|
||
setAttrs({
|
||
fatigue_points_max: base + mod
|
||
}, {silent: false}, callback);
|
||
});
|
||
}
|
||
|
||
// Perception
|
||
on('change:intelligence change:perception_points change:perception_mod', function (e) {
|
||
updatePer();
|
||
});
|
||
// Update Perception
|
||
function updatePer(callback) {
|
||
console.log('********* updatePer *********');
|
||
callback = callback || noop;
|
||
getAttrs(['intelligence', 'intelligence_base', 'perception_points', 'perception_mod'], function(v) {
|
||
var base = (modCascade ? +v.intelligence : +v.intelligence_base) +
|
||
((+v.perception_points || 0) / 5 | 0);
|
||
var mod = +v.perception_mod || 0;
|
||
setAttrs({
|
||
perception_base: base,
|
||
perception: base + mod
|
||
}, {silent: false}, callback);
|
||
});
|
||
}
|
||
|
||
// Vision, Hearing, Smell, Touch
|
||
on('change:perception change:vision_points change:vision_mod change:hearing_points change:hearing_mod change:taste_smell_points change:taste_smell_mod change:touch_points change:touch_mod', function (e) {
|
||
updateSense();
|
||
});
|
||
// Update Vision, Hearing, Smell, Touch
|
||
function updateSense() {
|
||
console.log('********* updateSense *********');
|
||
getAttrs(['perception', 'perception_base', 'vision_points', 'vision_mod', 'hearing_points', 'hearing_mod', 'taste_smell_points', 'taste_smell_mod', 'touch_points', 'touch_mod'], function(v) {
|
||
var base = (modCascade ? +v.perception : +v.perception_base);
|
||
var visionBase = base + ((+v.vision_points || 0) / 2 | 0);
|
||
var visionMod = +v.vision_mod || 0;
|
||
var hearingBase = base + ((+v.hearing_points || 0) / 2 | 0);
|
||
var hearingMod = +v.hearing_mod || 0;
|
||
var tasteSmellBase = base + ((+v.taste_smell_points || 0) / 2 | 0);
|
||
var tasteSmellMod = +v.taste_smell_mod || 0;
|
||
var touchBase = base + ((+v.touch_points || 0) / 2 | 0);
|
||
var touchMod = +v.touch_mod || 0;
|
||
setAttrs({
|
||
vision_base: visionBase,
|
||
vision: visionBase + visionMod,
|
||
hearing_base: hearingBase,
|
||
hearing: hearingBase + hearingMod,
|
||
taste_smell_base: tasteSmellBase,
|
||
taste_smell: tasteSmellBase + tasteSmellMod,
|
||
touch_base: touchBase,
|
||
touch: touchBase + touchMod
|
||
});
|
||
});
|
||
}
|
||
|
||
// Updage Willpower, Fear (This is actually called Fright Check - the General page reflects this)
|
||
on('change:intelligence change:willpower_points change:willpower_mod change:fear_check_points change:fear_check_mod', function (e) {
|
||
updateWill();
|
||
});
|
||
// Updage Willpower, Fear (This is actually called Fright Check - the General page reflects this)
|
||
function updateWill() {
|
||
console.log('********* updateWill *********');
|
||
getAttrs(['intelligence', 'intelligence_base', 'willpower_points', 'willpower_mod', 'fear_check_points', 'fear_check_mod'], function(v) {
|
||
var wBase = (modCascade ? +v.intelligence : +v.intelligence_base) +
|
||
((+v.willpower_points || 0) / 5 | 0);
|
||
var wMod = +v.willpower_mod || 0;
|
||
var fBase = wBase + (modCascade ? +wMod : 0) +
|
||
((+v.fear_check_points || 0) / 2 | 0);
|
||
var fMod = +v.fear_check_mod || 0;
|
||
setAttrs({
|
||
willpower_base: wBase,
|
||
willpower: wBase + wMod,
|
||
fear_check_base: fBase,
|
||
fear_check: fBase + fMod
|
||
});
|
||
});
|
||
}
|
||
|
||
// Speed
|
||
on('change:dexterity change:health change:basic_speed_points change:basic_speed_mod', function (e) {
|
||
updateBasicSpeed();
|
||
});
|
||
// Update Speed
|
||
function updateBasicSpeed(callback) {
|
||
console.log('********* updateBasicSpeed *********');
|
||
callback = callback || noop;
|
||
getAttrs(['dexterity', 'dexterity_base', 'health', 'health_base', 'basic_speed_points', 'basic_speed_mod'], function(v) {
|
||
var dx = (modCascade ? +v.dexterity : +v.dexterity_base);
|
||
var ht = (modCascade ? +v.health : +v.health_base);
|
||
var base = (dx + ht) / 4 + (((+v.basic_speed_points || 0) / 5 | 0) * 0.25);
|
||
var mod = +v.basic_speed_mod || 0;
|
||
setAttrs({
|
||
basic_speed_base: base,
|
||
basic_speed: base + mod
|
||
}, {silent: false}, callback);
|
||
});
|
||
}
|
||
|
||
// Move
|
||
on('change:basic_speed change:basic_move_points change:basic_move_mod', function (e) {
|
||
updateBasicMove();
|
||
});
|
||
// Update Move
|
||
function updateBasicMove(callback) {
|
||
console.log('********* updateBasicMove *********');
|
||
callback = callback || noop;
|
||
getAttrs(['basic_speed', 'basic_speed_base', 'basic_move_points', 'basic_move_mod'], function(v) {
|
||
var speed = (modCascade ? +v.basic_speed : +v.basic_speed_base);
|
||
var base = Math.floor(speed) + ((+v.basic_move_points || 0) / 5 | 0);
|
||
var mod = +v.basic_move_mod || 0;
|
||
setAttrs({
|
||
basic_move_base: base,
|
||
basic_move: base + mod
|
||
}, {silent: false}, callback);
|
||
});
|
||
}
|
||
|
||
// Dodge
|
||
on('change:basic_speed change:dodge_mod', function (e) {
|
||
updateDodge();
|
||
});
|
||
// Update Dodge
|
||
function updateDodge(callback) {
|
||
console.log('********* updateDodge *********');
|
||
callback = callback || noop;
|
||
getAttrs(['basic_speed', 'basic_speed_base', 'dodge_mod'], function(v) {
|
||
var speed = (modCascade ? +v.basic_speed : +v.basic_speed_base);
|
||
var base = Math.floor(speed) + 3;
|
||
var mod = +v.dodge_mod || 0;
|
||
setAttrs({
|
||
dodge_base: base,
|
||
dodge: base + mod
|
||
}, {silent: false}, callback);
|
||
});
|
||
}
|
||
|
||
// Encumbered/injured move and dodge
|
||
on('change:encumbrance_level change:dodge change:basic_move change:hit_points change:fatigue_points', function (e) {
|
||
updateMoveDodge();
|
||
});
|
||
// Update encumbered/injured move and dodge
|
||
function updateMoveDodge() {
|
||
console.log('***** UPDATE MOVE/DODGE *****');
|
||
getAttrs(['encumbrance_level', 'dodge', 'basic_move', 'hit_points', 'hit_points_max', 'fatigue_points', 'fatigue_points_max', 'strength_base', 'strength_mod'], function(v) {
|
||
var dodge = +v.dodge;
|
||
var move = +v.basic_move;
|
||
var strength = +v.strength_base + +v.strength_mod;
|
||
if (v.encumbrance_level === 5) {
|
||
dodge = 1;
|
||
move = 1;
|
||
} else {
|
||
dodge = dodge - +v.encumbrance_level;
|
||
// There is some math error when calculating Encumbrance which requires the modifier of 1.01 instead of 1 below
|
||
move = Math.floor(+v.basic_move * (1.01 - (0.2 * +v.encumbrance_level)));
|
||
dodge = dodge < 1 ? 1 : dodge;
|
||
move = move < 1 ? 1 : move;
|
||
}
|
||
if (+v.hit_points < +v.hit_points_max / 3) {
|
||
dodge = Math.ceil(dodge / 2);
|
||
move = Math.ceil(move / 2);
|
||
}
|
||
if (+v.fatigue_points < +v.fatigue_points_max / 3 ) {
|
||
dodge = Math.ceil(dodge / 2);
|
||
move = Math.ceil(move / 2);
|
||
strength = Math.ceil(strength / 2);
|
||
}
|
||
setAttrs({
|
||
current_move: move,
|
||
current_dodge: dodge,
|
||
strength: strength
|
||
});
|
||
});
|
||
}
|
||
|
||
// Lifting ST
|
||
on('change:strength change:lift_st_points change:lift_st_mod', function (e) {
|
||
updateLift();
|
||
});
|
||
// Update Lift
|
||
function updateLift(callback) {
|
||
console.log('********* updateLift *********');
|
||
callback = callback || noop;
|
||
getAttrs(['strength', 'strength_base', 'lift_st_points', 'lift_st_mod'], function(v) {
|
||
var base = (modCascade ? +v.strength : +v.strength_base) +
|
||
((+v.lift_st_points || 0) / 3 | 0);
|
||
var modded = base + +v.lift_st_mod;
|
||
var basicLift = (modded * modded) / 5;
|
||
if (basicLift >= 10) {
|
||
basicLift = Math.round(basicLift);
|
||
}
|
||
setAttrs({
|
||
lift_st_base: base,
|
||
lift_st: modded,
|
||
basic_lift: basicLift
|
||
}, {silent: false}, callback);
|
||
});
|
||
}
|
||
|
||
// Striking ST
|
||
on('change:strength change:striking_st_points change:striking_st_mod', function (e) {
|
||
updateStrikingST();
|
||
});
|
||
// Update Striking
|
||
function updateStrikingST() {
|
||
console.log('********* updateStrikingST *********');
|
||
getAttrs(['strength', 'strength_base', 'striking_st_points', 'striking_st_mod'], function(v) {
|
||
var base = (modCascade ? +v.strength : +v.strength_base) +
|
||
((+v.striking_st_points || 0) / 5 | 0);
|
||
var mod = +v.striking_st_mod;
|
||
setAttrs({
|
||
striking_st_base: base,
|
||
striking_st: base + mod
|
||
});
|
||
});
|
||
}
|
||
|
||
// Update the total cost of Languages
|
||
on('change:native_language_spoken change:native_language_written change:repeating_languages:spoken change:repeating_languages:written remove:repeating_languages', function (e) {
|
||
console.log('**** Languages Changed ****');
|
||
var total = 0;
|
||
var tally = _.after(2, function () {
|
||
setAttrs({ languages_points: total });
|
||
});
|
||
getAttrs(['native_language_spoken', 'native_language_written'], function(v) {
|
||
console.log('Native Language Spoken: ' + v.native_language_spoken);
|
||
console.log('Native Language Written: ' + v.native_language_written);
|
||
total += +v.native_language_spoken;
|
||
total += +v.native_language_written;
|
||
tally();
|
||
});
|
||
sumRepeating('repeating_languages', 'spoken', function(v) {
|
||
console.log('Spoken: ' + v);
|
||
total += +v;
|
||
tally();
|
||
});
|
||
sumRepeating('repeating_languages', 'written', function(v) {
|
||
console.log('Written: ' + v);
|
||
total += +v;
|
||
tally();
|
||
});
|
||
});
|
||
|
||
// Update the total cost of Cultural Familiarities
|
||
on('change:repeating_cultures:points remove:repeating_cultures', function (e) {
|
||
sumRepeating('repeating_cultures', 'points', function(v) {
|
||
setAttrs({ cf_points: v });
|
||
});
|
||
});
|
||
|
||
// Update the total cost of Advantages
|
||
on('change:repeating_traits:points remove:repeating_traits', function (e) {
|
||
sumRepeating('repeating_traits', 'points', function(v) {
|
||
setAttrs({ advantages_points: v });
|
||
});
|
||
});
|
||
|
||
// Update the total cost of Disadvantages
|
||
on('change:repeating_disadvantages:points remove:repeating_disadvantages', function (e) {
|
||
sumRepeating('repeating_disadvantages', 'points', function(v) {
|
||
setAttrs({ disadvantages_points: v });
|
||
});
|
||
});
|
||
|
||
// Update the total cost of Racial Traits
|
||
on('change:repeating_racial:points remove:repeating_racial', function (e) {
|
||
sumRepeating('repeating_racial', 'points', function(v) {
|
||
setAttrs({ racial_points: v });
|
||
});
|
||
});
|
||
|
||
// Update the total cost of Skills
|
||
on('change:repeating_skills:points remove:repeating_skills', function (e) {
|
||
sumRepeating('repeating_skills', 'points', function(v) {
|
||
setAttrs({ skills_points: v });
|
||
});
|
||
});
|
||
|
||
// Update the total cost of Techniques
|
||
on('change:repeating_techniques:points remove:repeating_techniques', function (e) {
|
||
sumRepeating('repeating_techniques', 'points', function(v) {
|
||
setAttrs({ techniques_points: v });
|
||
});
|
||
});
|
||
|
||
// Update the total cost of Spells
|
||
on('change:repeating_spells:points remove:repeating_spells', function (e) {
|
||
sumRepeating('repeating_spells', 'points', function(v) {
|
||
setAttrs({ spells_points: v });
|
||
});
|
||
});
|
||
|
||
// Update Summery
|
||
on('change:tl_pts change:appearance change:languages_points change:cf_points change:advantages_points change:disadvantages_points change:racial_points', function (e) {
|
||
getAttrs(['tl_pts', 'appearance', 'languages_points', 'cf_points', 'advantages_points', 'disadvantages_points', 'racial_points'], function(v) {
|
||
var vals = Object.values(v);
|
||
vals.push(0);
|
||
setAttrs({ trait_points: vals.reduce(getSum) });
|
||
});
|
||
});
|
||
|
||
// Update the line total weight and cost
|
||
on('change:repeating_item:count change:repeating_item:cost change:repeating_item:carried change:repeating_item:weight', function (e) {
|
||
getAttrs(['repeating_item_count', 'repeating_item_cost', 'repeating_item_weight', 'repeating_item_carried'], function (item) {
|
||
setAttrs({
|
||
repeating_item_weighttotal: Math.round(item.repeating_item_count * item.repeating_item_weight * item.repeating_item_carried * 1000) / 1000,
|
||
repeating_item_costtotal: Math.round(item.repeating_item_count * item.repeating_item_cost * 100) / 100
|
||
});
|
||
});
|
||
});
|
||
|
||
// Update the total weight of all carried items.
|
||
on('change:repeating_item:weighttotal remove:repeating_item', function (e) {
|
||
sumRepeating('repeating_item', 'weighttotal', function(v) {
|
||
setAttrs({ total_weight: Math.round(v * 1000) / 1000 });
|
||
});
|
||
});
|
||
|
||
// Get Encumbrance Level:
|
||
on('change:total_weight change:basic_lift', function (e) {
|
||
updateEncLevel();
|
||
});
|
||
function updateEncLevel(callback) {
|
||
getAttrs(['basic_lift', 'total_weight'], function(v) {
|
||
callback = callback || noop;
|
||
var basicLift = +v.basic_lift;
|
||
var encumbranceLevel = Math.floor(v.total_weight / basicLift);
|
||
if (encumbranceLevel > 0 && (v.total_weight % basicLift) === 0) {
|
||
encumbranceLevel--;
|
||
}
|
||
if (encumbranceLevel >= 10) {
|
||
encumbranceLevel = 4;
|
||
} else if (encumbranceLevel >= 6) {
|
||
encumbranceLevel = 4;
|
||
} else if (encumbranceLevel >= 3) {
|
||
encumbranceLevel = 3;
|
||
}
|
||
setAttrs(
|
||
{ encumbrance_level: encumbranceLevel },
|
||
{silent: false},
|
||
callback
|
||
);
|
||
});
|
||
}
|
||
|
||
// Update the total cost of all items.
|
||
on('change:repeating_item:costtotal remove:repeating_item', function (e) {
|
||
sumRepeating('repeating_item', 'costtotal', function(v) {
|
||
setAttrs({ total_value: (v * 100) / 100 });
|
||
});
|
||
});
|
||
|
||
// Update thrust and swing when striking st is updated
|
||
on('change:striking_st', function(e){
|
||
|
||
updateStrikingStrengthDamage();
|
||
|
||
});
|
||
|
||
/**
|
||
* Get the striking ST value and then get the damage type
|
||
* update Thrust and Swing
|
||
*/
|
||
function updateStrikingStrengthDamage(callback) {
|
||
|
||
// get Strking strength
|
||
getAttrs(['striking_st'], function(values) {
|
||
|
||
callback = callback || noop;
|
||
|
||
// + means to convert variable to number
|
||
var strikingST = +values.striking_st;
|
||
|
||
// get the damageType object (strength, thrust, swing)
|
||
var damageType = getDamageType(strikingST);
|
||
|
||
// set thrust and swing
|
||
setAttrs({
|
||
thrust: damageType.thrust,
|
||
swing: damageType.swing
|
||
});
|
||
|
||
});
|
||
|
||
}
|
||
|
||
/**
|
||
* Returns the damage type object
|
||
* based on ST
|
||
* damageType {strength, thrust, swing}
|
||
*
|
||
* @param int strikingST ST of attack
|
||
*
|
||
* @return object
|
||
*/
|
||
function getDamageType(strikingST) {
|
||
|
||
// return value
|
||
var damgeType = null;
|
||
|
||
var modifier = 0;
|
||
|
||
var baseThrust = 11;
|
||
|
||
var baseSwing = 13;
|
||
|
||
// prevent bad ST from causing issue
|
||
if (isNaN(strikingST) || strikingST < 0) {
|
||
strikingST = 1;
|
||
}
|
||
|
||
if (strikingST < 110) {
|
||
|
||
// get damageType from table
|
||
damageType = damageTable[strikingST];
|
||
|
||
} else {
|
||
|
||
// calculate the total
|
||
// Add 1d6 to thrust and swing for every full 10 points over 100
|
||
modifier = Math.floor((strikingST - 100) / 10);
|
||
|
||
baseThrust = baseThrust + modifier;
|
||
|
||
baseSwing = baseSwing = modifier;
|
||
|
||
damageType = {strength:strikingST, thrust:baseThrust + "d6", swing:baseSwing + "d6"};
|
||
|
||
}
|
||
|
||
return damageType;
|
||
}
|
||
|
||
/**
|
||
* Populates the global variable damageTable
|
||
*/
|
||
function generateDamageTable() {
|
||
|
||
var damageTable = [];
|
||
|
||
damageTable[0] = {strength:"0", thrust:"1d6-6", swing:"1d6-6"};
|
||
damageTable[1] = {strength:"1", thrust:"1d6-6", swing:"1d6-5"};
|
||
damageTable[2] = {strength:"2", thrust:"1d6-6", swing:"1d6-5"};
|
||
damageTable[3] = {strength:"3", thrust:"1d6-5", swing:"1d6-4"};
|
||
damageTable[4] = {strength:"4", thrust:"1d6-5", swing:"1d6-4"};
|
||
damageTable[5] = {strength:"5", thrust:"1d6-4", swing:"1d6-3"};
|
||
damageTable[6] = {strength:"6", thrust:"1d6-4", swing:"1d6-3"};
|
||
damageTable[7] = {strength:"7", thrust:"1d6-3", swing:"1d6-2"};
|
||
damageTable[8] = {strength:"8", thrust:"1d6-3", swing:"1d6-2"};
|
||
damageTable[9] = {strength:"9", thrust:"1d6-2", swing:"1d6-1"};
|
||
damageTable[10] = {strength:"10", thrust:"1d6-2", swing:"1d6"};
|
||
damageTable[11] = {strength:"11", thrust:"1d6-1", swing:"1d6+1"};
|
||
damageTable[12] = {strength:"12", thrust:"1d6-1", swing:"1d6+2"};
|
||
damageTable[13] = {strength:"13", thrust:"1d6", swing:"2d6-1"};
|
||
damageTable[14] = {strength:"14", thrust:"1d6", swing:"2d6"};
|
||
damageTable[15] = {strength:"15", thrust:"1d6+1", swing:"2d6+1"};
|
||
damageTable[16] = {strength:"16", thrust:"1d6+1", swing:"2d6+2"};
|
||
damageTable[17] = {strength:"17", thrust:"1d6+2", swing:"3d6-1"};
|
||
damageTable[18] = {strength:"18", thrust:"1d6+2", swing:"3d6"};
|
||
damageTable[19] = {strength:"19", thrust:"2d6-1", swing:"3d6+1"};
|
||
damageTable[20] = {strength:"20", thrust:"2d6-1", swing:"3d6+2"};
|
||
damageTable[21] = {strength:"21", thrust:"2d6", swing:"4d6-1"};
|
||
damageTable[22] = {strength:"22", thrust:"2d6", swing:"4d6"};
|
||
damageTable[23] = {strength:"23", thrust:"2d6+1", swing:"4d6+1"};
|
||
damageTable[24] = {strength:"24", thrust:"2d6+1", swing:"4d6+2"};
|
||
damageTable[25] = {strength:"25", thrust:"2d6+2", swing:"5d6-1"};
|
||
damageTable[26] = {strength:"26", thrust:"2d6+2", swing:"5d6"};
|
||
damageTable[27] = {strength:"27", thrust:"3d6-1", swing:"5d6+1"};
|
||
damageTable[28] = {strength:"28", thrust:"3d6-1", swing:"5d6+1"};
|
||
damageTable[29] = {strength:"29", thrust:"3d6", swing:"5d6+2"};
|
||
damageTable[30] = {strength:"30", thrust:"3d6", swing:"5d6+2"};
|
||
damageTable[31] = {strength:"31", thrust:"3d6+1", swing:"6d6-1"};
|
||
damageTable[32] = {strength:"32", thrust:"3d6+1", swing:"6d6-1"};
|
||
damageTable[33] = {strength:"33", thrust:"3d6+2", swing:"6d6"};
|
||
damageTable[34] = {strength:"34", thrust:"3d6+2", swing:"6d6"};
|
||
damageTable[35] = {strength:"35", thrust:"4d6-1", swing:"6d6+1"};
|
||
damageTable[36] = {strength:"36", thrust:"4d6-1", swing:"6d6+1"};
|
||
damageTable[37] = {strength:"37", thrust:"4d6", swing:"6d6+2"};
|
||
damageTable[38] = {strength:"38", thrust:"4d6", swing:"6d6+2"};
|
||
damageTable[39] = {strength:"39", thrust:"4d6+1", swing:"7d6-1"};
|
||
damageTable[40] = {strength:"40", thrust:"4d6+1", swing:"7d6-1"};
|
||
damageTable[41] = {strength:"41", thrust:"4d6+1", swing:"7d6-1"};
|
||
damageTable[42] = {strength:"42", thrust:"4d6+1", swing:"7d6-1"};
|
||
damageTable[43] = {strength:"43", thrust:"4d6+1", swing:"7d6-1"};
|
||
damageTable[44] = {strength:"44", thrust:"4d6+1", swing:"7d6-1"};
|
||
damageTable[45] = {strength:"45", thrust:"5d6", swing:"7d6+1"};
|
||
damageTable[46] = {strength:"46", thrust:"5d6", swing:"7d6+1"};
|
||
damageTable[47] = {strength:"47", thrust:"5d6", swing:"7d6+1"};
|
||
damageTable[48] = {strength:"48", thrust:"5d6", swing:"7d6+1"};
|
||
damageTable[49] = {strength:"49", thrust:"5d6", swing:"7d6+1"};
|
||
damageTable[50] = {strength:"50", thrust:"5d6+2", swing:"8d6-1"};
|
||
damageTable[51] = {strength:"51", thrust:"5d6+2", swing:"8d6-1"};
|
||
damageTable[52] = {strength:"52", thrust:"5d6+2", swing:"8d6-1"};
|
||
damageTable[53] = {strength:"53", thrust:"5d6+2", swing:"8d6-1"};
|
||
damageTable[54] = {strength:"54", thrust:"5d6+2", swing:"8d6-1"};
|
||
damageTable[55] = {strength:"55", thrust:"6d6", swing:"8d6+1"};
|
||
damageTable[56] = {strength:"56", thrust:"6d6", swing:"8d6+1"};
|
||
damageTable[57] = {strength:"57", thrust:"6d6", swing:"8d6+1"};
|
||
damageTable[58] = {strength:"58", thrust:"6d6", swing:"8d6+1"};
|
||
damageTable[59] = {strength:"59", thrust:"6d6", swing:"8d6+1"};
|
||
damageTable[60] = {strength:"60", thrust:"7d6-1", swing:"9d6"};
|
||
damageTable[61] = {strength:"61", thrust:"7d6-1", swing:"9d6"};
|
||
damageTable[62] = {strength:"62", thrust:"7d6-1", swing:"9d6"};
|
||
damageTable[63] = {strength:"63", thrust:"7d6-1", swing:"9d6"};
|
||
damageTable[64] = {strength:"64", thrust:"7d6-1", swing:"9d6"};
|
||
damageTable[65] = {strength:"65", thrust:"7d6+1", swing:"9d6+2"};
|
||
damageTable[66] = {strength:"66", thrust:"7d6+1", swing:"9d6+2"};
|
||
damageTable[67] = {strength:"67", thrust:"7d6+1", swing:"9d6+2"};
|
||
damageTable[68] = {strength:"68", thrust:"7d6+1", swing:"9d6+2"};
|
||
damageTable[69] = {strength:"69", thrust:"7d6+1", swing:"9d6+2"};
|
||
damageTable[70] = {strength:"70", thrust:"8d6", swing:"10d6"};
|
||
damageTable[71] = {strength:"71", thrust:"8d6", swing:"10d6"};
|
||
damageTable[72] = {strength:"72", thrust:"8d6", swing:"10d6"};
|
||
damageTable[73] = {strength:"73", thrust:"8d6", swing:"10d6"};
|
||
damageTable[74] = {strength:"74", thrust:"8d6", swing:"10d6"};
|
||
damageTable[75] = {strength:"75", thrust:"8d6+2", swing:"10d6+2"};
|
||
damageTable[76] = {strength:"76", thrust:"8d6+2", swing:"10d6+2"};
|
||
damageTable[77] = {strength:"77", thrust:"8d6+2", swing:"10d6+2"};
|
||
damageTable[78] = {strength:"78", thrust:"8d6+2", swing:"10d6+2"};
|
||
damageTable[79] = {strength:"79", thrust:"8d6+2", swing:"10d6+2"};
|
||
damageTable[80] = {strength:"80", thrust:"9d6", swing:"11d6"};
|
||
damageTable[81] = {strength:"81", thrust:"9d6", swing:"11d6"};
|
||
damageTable[82] = {strength:"82", thrust:"9d6", swing:"11d6"};
|
||
damageTable[83] = {strength:"83", thrust:"9d6", swing:"11d6"};
|
||
damageTable[84] = {strength:"84", thrust:"9d6", swing:"11d6"};
|
||
damageTable[85] = {strength:"85", thrust:"9d6+2", swing:"11d6+2"};
|
||
damageTable[86] = {strength:"86", thrust:"9d6+2", swing:"11d6+2"};
|
||
damageTable[87] = {strength:"87", thrust:"9d6+2", swing:"11d6+2"};
|
||
damageTable[88] = {strength:"88", thrust:"9d6+2", swing:"11d6+2"};
|
||
damageTable[89] = {strength:"89", thrust:"9d6+2", swing:"11d6+2"};
|
||
damageTable[90] = {strength:"90", thrust:"10d6", swing:"12d6"};
|
||
damageTable[91] = {strength:"91", thrust:"10d6", swing:"12d6"};
|
||
damageTable[92] = {strength:"92", thrust:"10d6", swing:"12d6"};
|
||
damageTable[93] = {strength:"93", thrust:"10d6", swing:"12d6"};
|
||
damageTable[94] = {strength:"94", thrust:"10d6", swing:"12d6"};
|
||
damageTable[95] = {strength:"95", thrust:"10d6+2", swing:"12d6+2"};
|
||
damageTable[96] = {strength:"96", thrust:"10d6+2", swing:"12d6+2"};
|
||
damageTable[97] = {strength:"97", thrust:"10d6+2", swing:"12d6+2"};
|
||
damageTable[98] = {strength:"98", thrust:"10d6+2", swing:"12d6+2"};
|
||
damageTable[99] = {strength:"99", thrust:"10d6+2", swing:"12d6+2"};
|
||
damageTable[100] = {strength:"100", thrust:"11d6", swing:"13d6"};
|
||
|
||
return damageTable;
|
||
|
||
}
|
||
|
||
// check for combat reflexes toggle box
|
||
on('change:combat_reflexes', function(e){
|
||
|
||
updateActiveDefenses();
|
||
|
||
});
|
||
|
||
/**
|
||
* Get combat reflexes. Update active defenses
|
||
*/
|
||
function updateActiveDefenses(callback) {
|
||
|
||
// get the defense values
|
||
getAttrs(['combat_reflexes', 'dodge_mod', 'fear_check_mod'], function(values) {
|
||
|
||
callback = callback || noop;
|
||
|
||
// + means to convert variable to number
|
||
var chkCombatReflexes = +values.combat_reflexes;
|
||
|
||
var modDodge = 0;
|
||
|
||
var modFear = 0;
|
||
|
||
if (chkCombatReflexes == 1) {
|
||
|
||
modDodge = 1;
|
||
|
||
modFear = 2;
|
||
|
||
} else {
|
||
|
||
modDodge = -1;
|
||
|
||
modFear = -2;
|
||
|
||
}
|
||
|
||
// update dodge modifier
|
||
var orig_dodge_mod = 0;
|
||
|
||
if (isNaN(values.dodge_mod)) {
|
||
orig_dodge_mod = 0;
|
||
} else {
|
||
orig_dodge_mod = +values.dodge_mod;
|
||
}
|
||
|
||
var new_dodge_mod = orig_dodge_mod + modDodge;
|
||
|
||
// update fear check
|
||
var orig_fear_check_mod = 0;
|
||
|
||
if (isNaN(values.fear_check_mod)) {
|
||
orig_fear_check_mod = 0;
|
||
} else {
|
||
orig_fear_check_mod = +values.fear_check_mod;
|
||
}
|
||
|
||
var new_fear_check_mod = orig_fear_check_mod + modFear;
|
||
|
||
// update
|
||
|
||
// set thrust and swing
|
||
setAttrs({
|
||
dodge_mod: new_dodge_mod,
|
||
fear_check_mod: new_fear_check_mod
|
||
});
|
||
|
||
});
|
||
|
||
}
|
||
|
||
// check for update to basic_move
|
||
on("change:basic_move", function (e) {
|
||
|
||
updateEnumbranceTable();
|
||
|
||
});
|
||
|
||
/**
|
||
* Update the air, water, jump moves based on
|
||
* basic move, flight, amphibious, enhanced move (ground, air, water)
|
||
*/
|
||
function updateEnumbranceTable() {
|
||
|
||
getAttrs(['basic_move'], function(values) {
|
||
|
||
console.log("basic_move: ", values.basic_move);
|
||
|
||
});
|
||
|
||
}
|
||
|
||
// check for manual or calculated option
|
||
on("change:use_unspent_box", function (e) {
|
||
|
||
updateToggleUnspentCheckBox();
|
||
|
||
});
|
||
|
||
/**
|
||
* Updates the hidden toggle_unspent_points. Used by
|
||
* css to show/hide unspent boxes
|
||
* see: gurps.css -> input.sheet-toggle-unspoint-points[value="1"]
|
||
*
|
||
*/
|
||
function updateToggleUnspentCheckBox() {
|
||
|
||
getAttrs(['use_unspent_box'], function(values) {
|
||
|
||
setAttrs({
|
||
toggle_unspent_points: values.use_unspent_box
|
||
});
|
||
|
||
});
|
||
|
||
}
|
||
|
||
// check for selected damage dice change
|
||
on("change:damage_dice_type", function (e) {
|
||
|
||
updateDiceDamageIcons();
|
||
|
||
});
|
||
|
||
/**
|
||
* Controller function to update each section of
|
||
* damage dice icons
|
||
*/
|
||
function updateDiceDamageIcons() {
|
||
|
||
updateThrustSwingDamageIcons();
|
||
|
||
updateRepeatingDamageDice("repeating_melee");
|
||
|
||
//updateRepeatingDamageDice("repeating_ranged");
|
||
|
||
}
|
||
|
||
/**
|
||
* Update the Thrust and Swing Damage Icons
|
||
* on the general tab by setting the hidden inputs
|
||
*/
|
||
function updateThrustSwingDamageIcons() {
|
||
|
||
console.log("Update Thrust Swing Damage Icons");
|
||
|
||
getAttrs(['damage_dice_type'], function(values) {
|
||
|
||
console.log("KEN: dice type:", values.damage_dice_type);
|
||
|
||
setAttrs({
|
||
thrust_damage_dice_icon: values.damage_dice_type,
|
||
swing_damage_dice_icon: values.damage_dice_type
|
||
});
|
||
|
||
});
|
||
|
||
}
|
||
|
||
/**
|
||
* Gets the repeating sections ids. loop through
|
||
* each id, must use getAttrs() inside the loop,
|
||
* then set the hidden input for dice damge icon
|
||
*
|
||
* @param string sectionID Repeating section id
|
||
*/
|
||
function updateRepeatingDamageDice(sectionID) {
|
||
|
||
console.log("KEN: update repeating dice damage icon. sectionID: ", sectionID);
|
||
|
||
// get all the ids for each repeating section
|
||
getSectionIDs(sectionID, function (ids) {
|
||
|
||
console.log("KEN ids: ", ids);
|
||
|
||
// loop though each ids using underscores
|
||
// see: https://underscorejs.org/#each
|
||
_.each(ids,function(id) {
|
||
|
||
getAttrs(['damage_dice_type'], function(values) {
|
||
|
||
console.log("KEN: repeating dice type:", values.damage_dice_type);
|
||
|
||
var hiddenDamageIcon = [sectionID + "_" + id + "_damage_dice_icon"];
|
||
|
||
console.log("hiddenDamageIcon: ", hiddenDamageIcon);
|
||
|
||
// set the hidden input attribute
|
||
setAttrs({
|
||
[sectionID + "_" + id + "_damage_dice_icon"]: values.damage_dice_type
|
||
});
|
||
|
||
});
|
||
|
||
});
|
||
|
||
});
|
||
|
||
}
|
||
|
||
</script>
|