Bug fix for 0.13

Fixed bug/typos in skill rolls to use correct stats and critical range on tag.
Added option for additional tag skills on the Skills tab under SPECIAL.
Fixed delete button on the perks list.
Added modifier for HP on the Derived Stats tab under SPECIAL.
Added modifier for SPECIAL points on the Attributes tab under SPECIAL.
Added modifier for skill points on the Skills tab under SPECIAL.
Disabled Confirm/copy button after first use.
This commit is contained in:
coyotegrey
2021-06-08 10:27:37 -04:00
parent 264caa1ef5
commit b828b06d2d
2 changed files with 202 additions and 106 deletions
+25 -6
View File
@@ -27,6 +27,8 @@ body .charactersheet * {
background: url('https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Fallout%202d20/images/nuke.png')
center / contain no-repeat border-box;
background-color: red;
position: relative;
z-index: 99;
width: 15px;
height: 15px;
padding: 2px 10px;
@@ -459,6 +461,11 @@ body .charactersheet div .col7 .luck label,
border: dotted 1px #e0b829;
}
.special-finalized[value="1"] ~ p .confirm-note,
.special-finalized[value="1"] ~ div.confirm-button {
display: none;
}
.special {
background: url('https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Fallout%202d20/images/special_bar.png') top center no-repeat;
background-size: 100% 100%;
@@ -591,7 +598,7 @@ body .charactersheet div .col2 .melee-damage[value="3"] ~ .die3 {
.col2 {
grid-template-columns: repeat(2, 1fr);
}
.col2 .header {
.col2 > .header {
grid-column: span 2;
text-align: center;
box-shadow: none;
@@ -614,6 +621,9 @@ body .charactersheet div .col2 .melee-damage[value="3"] ~ .die3 {
.col5 {
grid-template-columns: repeat(5, 1fr);
}
.col5-derived {
grid-template-columns: 1fr 1fr 2fr 1fr 1fr;
}
.col6 {
grid-template-columns: repeat(6, 1fr);
}
@@ -717,6 +727,7 @@ body .charactersheet div .grid input,
text-align: left;
vertical-align: middle;
outline: none;
overflow: hidden;
}
.charactersheet .creation input,
.charactersheet .creation select {
@@ -904,9 +915,8 @@ body .charactersheet .skills-grid div input[type=number] {
.skills-grid .tag,
.skills-grid-mini .tag,
.repitem .tag {
display: none;
background: url('https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Fallout%202d20/images/tag.png')
center / contain no-repeat content-box;
display: inline-block;
background: none;
width: 16px;
height: 16px;
text-height: 2px;
@@ -916,7 +926,8 @@ body .charactersheet .skills-grid div input[type=number] {
.skills-grid .tag-skill[value="1"] ~ span.tag,
.skills-grid-mini .tag-skill[value="1"] ~ span.tag,
.repitem .tag {
display: inline-block;
background: url('https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Fallout%202d20/images/tag.png')
center / contain no-repeat content-box;
}
.origin-tag-name[value=""] + label,
@@ -943,6 +954,14 @@ body .charactersheet div .col3 .col7-initiative span {
line-height: 20px;
box-shadow: 0 0 0 1px black;
}
body .charactersheet div .col2 .col5-derived span {
padding: 0px 5px;
text-align: center;
line-height: 20px;
}
body .charactersheet div .col2 .col5-derived span:first-of-type {
text-align: left;
}
body .charactersheet div .col3 .col7-meleedmg input,
body .charactersheet div .col3 .col7-defense input,
body .charactersheet div .col3 .col7-initiative input,
@@ -1248,7 +1267,7 @@ body .charactersheet div .col1 .health input[type=number] {
.repeating_perks ~ .repcontainer .repitem {
gap: 0px;
}
.repeating_perks ~ .repcontainer .repitem > div {
.repeating_perks ~ .repcontainer .repitem > div:not(.itemcontrol) {
padding: 5px 0px 0px 5px;
box-shadow: none;
background: none;
+177 -100
View File
@@ -356,9 +356,16 @@
<div class="grid col2 gap">
<div class="grid col2">
<label>Attribute Points</label>
<input type="hidden" name="attr_attribute_points"
value="5" />
<span class="input" name="attr_attribute_points"></span>
<div class="grid col5-derived">
<input type="hidden" name="attr_attribute_points"
value="5" />
<span class="input" name="attr_attribute_points"></span>
<span>+</span>
<input type="number" name="attr_attribute_points_mod" value="" />
<span>=</span>
<input type="hidden" name="attr_attribute_points_total" value="5" />
<span name="attr_attribute_points_total" />
</div>
</div>
</div>
<div class="grid col2 strength">
@@ -636,9 +643,16 @@
</div>
<div class="grid col2">
<label>Skill Points</label>
<input type="hidden" name="attr_skill_points"
value="5" />
<span class="input" name="attr_skill_points"></span>
<div class="grid col5-derived">
<input type="hidden" name="attr_skill_points"
value="5" />
<span class="input" name="attr_skill_points"></span>
<span>+</span>
<input type="number" name="attr_skill_points_mod" value="" />
<span>=</span>
<input type="hidden" name="attr_skill_points_total" value="5" />
<span name="attr_skill_points_total" />
</div>
</div>
<div class="skills-grid">
@@ -651,7 +665,8 @@
<div><input type="hidden"
name="attr_athletics_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_athletics_tag_mod" value="1" /></div>
<div><input type="number" id="athletics"
name="attr_athletics" value="" min="0"
max="6" /></div>
@@ -663,7 +678,8 @@
<div><input type="hidden"
name="attr_barter_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_barter_tag_mod" value="1" /></div>
<div><input type="number" id="barter"
name="attr_barter" value="" min="0"
max="6" /></div>
@@ -675,8 +691,9 @@
<div><input type="hidden"
name="attr_big_guns_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<div><input type="number" id="big-guns"
<span class="tag">yes</span>
<input type="checkbox" name="attr_big_guns_tag_mod" value="1" /></div>
<div><input type="number" id="big_guns"
name="attr_big_guns" value="" min="0"
max="6" /></div>
<div><input type="hidden"
@@ -687,8 +704,9 @@
<div><input type="hidden"
name="attr_energy_weapons_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<div><input type="number" id="energy-weapons"
<span class="tag">yes</span>
<input type="checkbox" name="attr_energy_weapons_tag_mod" value="1" /></div>
<div><input type="number" id="energy_weapons"
name="attr_energy_weapons" value="" min="0"
max="6" /></div>
<div><input type="hidden"
@@ -699,7 +717,8 @@
<div><input type="hidden"
name="attr_explosives_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_explosives_tag_mod" value="1" /></div>
<div><input type="number" id="explosives"
name="attr_explosives" value="" min="0"
max="6" /></div>
@@ -711,7 +730,8 @@
<div><input type="hidden"
name="attr_lockpick_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_lockpick_tag_mod" value="1" /></div>
<div><input type="number" id="lockpick"
name="attr_lockpick" value="" min="0"
max="6" /></div>
@@ -723,7 +743,8 @@
<div><input type="hidden"
name="attr_medicine_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_medicine_tag_mod" value="1" /></div>
<div><input type="number" id="medicine"
name="attr_medicine" value="" min="0"
max="6" /></div>
@@ -735,8 +756,9 @@
<div><input type="hidden"
name="attr_melee_weapons_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<div><input type="number" id="melee-weapons"
<span class="tag">yes</span>
<input type="checkbox" name="attr_melee_weapons_tag_mod" value="1" /></div>
<div><input type="number" id="melee_weapons"
name="attr_melee_weapons" value="" min="0"
max="6" /></div>
<div><input type="hidden"
@@ -747,7 +769,8 @@
<div><input type="hidden"
name="attr_pilot_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_pilot_tag_mod" value="1" /></div>
<div><input type="number" id="pilot"
name="attr_pilot" value="" min="0"
max="6" /></div>
@@ -765,7 +788,8 @@
<div><input type="hidden"
name="attr_repair_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_repair_tag_mod" value="1" /></div>
<div><input type="number" id="repair"
name="attr_repair" value="" min="0"
max="6" /></div>
@@ -777,7 +801,8 @@
<div><input type="hidden"
name="attr_science_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_science_tag_mod" value="1" /></div>
<div><input type="number" id="science"
name="attr_science" value="" min="0"
max="6" /></div>
@@ -789,8 +814,9 @@
<div><input type="hidden"
name="attr_small_guns_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<div><input type="number" id="small-guns"
<span class="tag">yes</span>
<input type="checkbox" name="attr_small_guns_tag_mod" value="1" /></div>
<div><input type="number" id="small_guns"
name="attr_small_guns" value="" min="0"
max="6" /></div>
<div><input type="hidden"
@@ -801,7 +827,8 @@
<div><input type="hidden"
name="attr_sneak_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_sneak_tag_mod" value="1" /></div>
<div><input type="number" id="sneak"
name="attr_sneak" value="" min="0"
max="6" /></div>
@@ -813,7 +840,8 @@
<div><input type="hidden"
name="attr_speech_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_speech_tag_mod" value="1" /></div>
<div><input type="number" id="speech"
name="attr_speech" value="" min="0"
max="6" /></div>
@@ -825,7 +853,8 @@
<div><input type="hidden"
name="attr_survival_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_survival_tag_mod" value="1" /></div>
<div><input type="number" id="survival"
name="attr_survival" value="" min="0"
max="6" /></div>
@@ -837,19 +866,21 @@
<div><input type="hidden"
name="attr_throwing_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_throwing_tag_mod" value="1" /></div>
<div><input type="number" id="throwing"
name="attr_throwing" value="" min="0"
max="6" /></div>
<div><input type="hidden"
name="attr_athrowing_total" value="" />
name="attr_throwing_total" value="" />
<span name="attr_throwing_total"></span></div>
<div><label>Unarmed</label> [STR]</div>
<div><input type="hidden"
name="attr_unarmed_tag" value=""
class="tag-skill" />
<span class="tag">yes</span></div>
<span class="tag">yes</span>
<input type="checkbox" name="attr_unarmed_tag_mod" value="1" /></div>
<div><input type="number" id="unarmed"
name="attr_unarmed" value="" min="0"
max="6" /></div>
@@ -1007,9 +1038,16 @@
value="10" />
<span class="input" name="attr_initiative"></span>
<label>Health Points</label>
<input type="hidden" name="attr_hp_max"
value="10" />
<span class="input" name="attr_hp_max"></span>
<div class="grid col5-derived">
<input type="hidden" name="attr_hp_derived"
value="10" />
<span class="input" name="attr_hp_derived"></span>
<span>+</span>
<input type="number" name="attr_hp_mod" value="" />
<span>=</span>
<input type="hidden" name="attr_hp_max" value="10" />
<span name="attr_hp_max" />
</div>
<label>Melee Damage</label>
<span class="input">
<input type="hidden" name="attr_melee_damage"
@@ -1139,11 +1177,13 @@
</div>
<div class="finalize grid col1">
<input type="hidden" name="attr_finalized"
class="special-finalized" value="" />
<h2>You are all done!
<button class="prev" type="action" name="act_prev">Previous</button></h2>
<p>Thank you for completing your S.P.E.C.I.A.L. profile. Feel free
to go back and edit your profile at any time. Click below to
confirm once you are satisfied.</p>
to go back and edit your profile at any time. <span class="confirm-note">Click
below to confirm once you are satisfied.</span></p>
<div class="grid col2 gap confirm-button">
<button type="action" name="act_copyspecial" class="btn">&#128077;
Confirm your profile</button>
@@ -1235,7 +1275,7 @@
<div class="header">Rank</div>
<div><button type="roll" name="roll_athletics_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Strength}} {{attr_num=@{strength_total}}} {{skill=Athletics}} {{skill_num=@{athletics_total}}} {{target=[[@{strength_total}+@{athletics_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{athletics_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Strength}} {{attr_num=@{strength_total}}} {{skill=Athletics}} {{skill_num=@{athletics_total}}} {{target=[[@{strength_total}+@{athletics_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{strength_total}+@{athletics_total}]]sacs<@{athletics_cs}cf>20 ]]}}">
Athletics</button> [STR]</div>
<div><input type="hidden"
name="attr_athletics_tag" value=""
@@ -1248,7 +1288,7 @@
<span name="attr_athletics_total"></span></div>
<div><button type="roll" name="roll_barter_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Charisma}} {{attr_num=@{charisma_total}}} {{skill=Barter}} {{skill_num=@{barter_total}}} {{target=[[@{charisma_total}+@{barter_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{barter_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Charisma}} {{attr_num=@{charisma_total}}} {{skill=Barter}} {{skill_num=@{barter_total}}} {{target=[[@{charisma_total}+@{barter_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{barter_total}]]sacs<@{barter_cs}cf>20 ]]}}">
Barter</button> [CHA]</div>
<div><input type="hidden"
name="attr_barter_tag" value=""
@@ -1261,7 +1301,7 @@
<span name="attr_barter_total"></span></div>
<div><button type="roll" name="roll_big_guns_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Endurance}} {{attr_num=@{endurance_total}}} {{skill=Big Guns}} {{skill_num=@{big_guns_total}}} {{target=[[@{endurance_total}+@{big_guns_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{big_guns_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Endurance}} {{attr_num=@{endurance_total}}} {{skill=Big Guns}} {{skill_num=@{big_guns_total}}} {{target=[[@{endurance_total}+@{big_guns_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{endurance_total}+@{big_guns_total}]]sacs<@{big_guns_cs}cf>20 ]]}}">
Big Guns</button> [END]</div>
<div><input type="hidden"
name="attr_big_guns_tag" value=""
@@ -1274,7 +1314,7 @@
<span name="attr_big_guns_total"></span></div>
<div><button type="roll" name="roll_energy_weapons_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Energy Weapons}} {{skill_num=@{energy_weapons_total}}} {{target=[[@{perception_total}+@{energy_weapons_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{energy_weapons_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Energy Weapons}} {{skill_num=@{energy_weapons_total}}} {{target=[[@{perception_total}+@{energy_weapons_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{perception_total}+@{energy_weapons_total}]]sacs<@{energy_weapons_cs}cf>20 ]]}}">
Energy Weapons</button> [PER]</div>
<div><input type="hidden"
name="attr_energy_weapons_tag" value=""
@@ -1287,7 +1327,7 @@
<span name="attr_energy_weapons_total"></span></div>
<div><button type="roll" name="roll_explosives_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Explosives}} {{skill_num=@{explosives_total}}} {{target=[[@{perception_total}+@{explosives_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{explosives_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Explosives}} {{skill_num=@{explosives_total}}} {{target=[[@{perception_total}+@{explosives_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{perception_total}+@{explosives_total}]]sacs<@{explosives_cs}cf>20 ]]}}">
Explosives</button> [PER]</div>
<div><input type="hidden"
name="attr_explosives_tag" value=""
@@ -1300,7 +1340,7 @@
<span name="attr_explosives_total"></span></div>
<div><button type="roll" name="roll_lockpick_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Lockpick}} {{skill_num=@{lockpick_total}}} {{target=[[@{perception_total}+@{lockpick_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{lockpick_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Lockpick}} {{skill_num=@{lockpick_total}}} {{target=[[@{perception_total}+@{lockpick_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{perception_total}+@{lockpick_total}]]sacs<@{lockpick_cs}cf>20 ]]}}">
Lockpick</button> [PER]</div>
<div><input type="hidden"
name="attr_lockpick_tag" value=""
@@ -1313,7 +1353,7 @@
<span name="attr_lockpick_total"></span></div>
<div><button type="roll" name="roll_medicine_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Intelligence}} {{attr_num=@{intelligence_total}}} {{skill=Medicine}} {{skill_num=@{medicine_total}}} {{target=[[@{intelligence_total}+@{medicine_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{medicine_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Intelligence}} {{attr_num=@{intelligence_total}}} {{skill=Medicine}} {{skill_num=@{medicine_total}}} {{target=[[@{intelligence_total}+@{medicine_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{intelligence_total}+@{medicine_total}]]sacs<@{medicine_cs}cf>20 ]]}}">
Medicine</button> [INT]</div>
<div><input type="hidden"
name="attr_medicine_tag" value=""
@@ -1326,7 +1366,7 @@
<span name="attr_medicine_total"></span></div>
<div><button type="roll" name="roll_melee_weapons_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Strength}} {{attr_num=@{strength_total}}} {{skill=Melee Weapons}} {{skill_num=@{melee_weapons_total}}} {{target=[[@{strength_total}+@{melee_weapons_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{melee_weapons_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Strength}} {{attr_num=@{strength_total}}} {{skill=Melee Weapons}} {{skill_num=@{melee_weapons_total}}} {{target=[[@{strength_total}+@{melee_weapons_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{strength_total}+@{melee_weapons_total}]]sacs<@{melee_weapons_cs}cf>20 ]]}}">
Melee Weapons</button> [STR]</div>
<div><input type="hidden"
name="attr_melee_weapons_tag" value=""
@@ -1339,7 +1379,7 @@
<span name="attr_melee_weapons_total"></span></div>
<div><button type="roll" name="roll_pilot_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Pilot}} {{skill_num=@{pilot_total}}} {{target=[[@{perception_total}+@{pilot_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{pilot_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Perception}} {{attr_num=@{perception_total}}} {{skill=Pilot}} {{skill_num=@{pilot_total}}} {{target=[[@{perception_total}+@{pilot_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{perception_total}+@{pilot_total}]]sacs<@{pilot_cs}cf>20 ]]}}">
Pilot</button> [PER]</div>
<div><input type="hidden"
name="attr_pilot_tag" value=""
@@ -1352,7 +1392,7 @@
<span name="attr_pilot_total"></span></div>
<div><button type="roll" name="roll_repair_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Intelligence}} {{attr_num=@{intelligence_total}}} {{skill=Repair}} {{skill_num=@{repair_total}}} {{target=[[@{intelligence_total}+@{repair_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{repair_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Intelligence}} {{attr_num=@{intelligence_total}}} {{skill=Repair}} {{skill_num=@{repair_total}}} {{target=[[@{intelligence_total}+@{repair_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{intelligence_total}+@{repair_total}]]sacs<@{repair_cs}cf>20 ]]}}">
Repair</button> [INT]</div>
<div><input type="hidden"
name="attr_repair_tag" value=""
@@ -1365,7 +1405,7 @@
<span name="attr_repair_total"></span></div>
<div><button type="roll" name="roll_science_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Intelligence}} {{attr_num=@{intelligence_total}}} {{skill=Science}} {{skill_num=@{science_total}}} {{target=[[@{intelligence_total}+@{science_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{science_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Intelligence}} {{attr_num=@{intelligence_total}}} {{skill=Science}} {{skill_num=@{science_total}}} {{target=[[@{intelligence_total}+@{science_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{intelligence_total}+@{science_total}]]sacs<@{science_cs}cf>20 ]]}}">
Science</button> [INT]</div>
<div><input type="hidden"
name="attr_science_tag" value=""
@@ -1378,7 +1418,7 @@
<span name="attr_science_total"></span></div>
<div><button type="roll" name="roll_small_guns_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Agility}} {{attr_num=@{agility_total}}} {{skill=Small Guns}} {{skill_num=@{small_guns_total}}} {{target=[[@{agility_total}+@{small_guns_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{small_guns_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Agility}} {{attr_num=@{agility_total}}} {{skill=Small Guns}} {{skill_num=@{small_guns_total}}} {{target=[[@{agility_total}+@{small_guns_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{agility_total}+@{small_guns_total}]]sacs<@{small_guns_cs}cf>20 ]]}}">
Small Guns</button> [AGI]</div>
<div><input type="hidden"
name="attr_small_guns_tag" value=""
@@ -1391,7 +1431,7 @@
<span name="attr_small_guns_total"></span></div>
<div><button type="roll" name="roll_sneak_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Agility}} {{attr_num=@{agility_total}}} {{skill=Sneak}} {{skill_num=@{sneak_total}}} {{target=[[@{agility_total}+@{sneak_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{sneak_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Agility}} {{attr_num=@{agility_total}}} {{skill=Sneak}} {{skill_num=@{sneak_total}}} {{target=[[@{agility_total}+@{sneak_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{agility_total}+@{sneak_total}]]sacs<@{sneak_cs}cf>20 ]]}}">
Sneak</button> [AGI]</div>
<div><input type="hidden"
name="attr_sneak_tag" value=""
@@ -1404,7 +1444,7 @@
<span name="attr_sneak_total"></span></div>
<div><button type="roll" name="roll_speech_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Charisma}} {{attr_num=@{charisma_total}}} {{skill=Speech}} {{skill_num=@{speech_total}}} {{target=[[@{charisma_total}+@{speech_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{speech_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Charisma}} {{attr_num=@{charisma_total}}} {{skill=Speech}} {{skill_num=@{speech_total}}} {{target=[[@{charisma_total}+@{speech_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{speech_total}]]sacs<@{speech_cs}cf>20 ]]}}">
Speech</button> [CHA]</div>
<div><input type="hidden"
name="attr_speech_tag" value=""
@@ -1417,7 +1457,7 @@
<span name="attr_speech_total"></span></div>
<div><button type="roll" name="roll_survival_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Endurance}} {{attr_num=@{endurance_total}}} {{skill=Survival}} {{skill_num=@{survival_total}}} {{target=[[@{endurance_total}+@{survival_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{survival_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Endurance}} {{attr_num=@{endurance_total}}} {{skill=Survival}} {{skill_num=@{survival_total}}} {{target=[[@{endurance_total}+@{survival_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{endurance_total}+@{survival_total}]]sacs<@{survival_cs}cf>20 ]]}}">
Survival</button> [END]</div>
<div><input type="hidden"
name="attr_survival_tag" value=""
@@ -1430,7 +1470,7 @@
<span name="attr_survival_total"></span></div>
<div><button type="roll" name="roll_throwing_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Agility}} {{attr_num=@{agility_total}}} {{skill=Throwing}} {{skill_num=@{throwing_total}}} {{target=[[@{agility_total}+@{throwing_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{throwing_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Agility}} {{attr_num=@{agility_total}}} {{skill=Throwing}} {{skill_num=@{throwing_total}}} {{target=[[@{agility_total}+@{throwing_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{agility_total}+@{throwing_total}]]sacs<@{throwing_cs}cf>20 ]]}}">
Throwing</button> [AGI]</div>
<div><input type="hidden"
name="attr_throwing_tag" value=""
@@ -1443,7 +1483,7 @@
<span name="attr_throwing_total"></span></div>
<div><button type="roll" name="roll_unarmed_total"
value="&{template:foskill} {{name=@{character_name}}} {{attr=Strength}} {{attr_num=@{strength_total}}} {{skill=Unarmed}} {{skill_num=@{unarmed_total}}} {{target=[[@{strength_total}+@{unarmed_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{charisma_total}+@{unarmed_total}]]sacs<1cf>20 ]]}}">
value="&{template:foskill} {{name=@{character_name}}} {{attr=Strength}} {{attr_num=@{strength_total}}} {{skill=Unarmed}} {{skill_num=@{unarmed_total}}} {{target=[[@{strength_total}+@{unarmed_total}]]}} {{dice_num=?{Number of dice|2}}} {{difficulty=?{Difficulty|1}}} {{result=[[?{Number of dice|22}d20<[[@{strength_total}+@{unarmed_total}]]sacs<@{unarmed_cs}cf>20 ]]}}">
Unarmed</button> [STR]</div>
<div><input type="hidden"
name="attr_unarmed_tag" value=""
@@ -1872,49 +1912,68 @@
<div class="grid col1 settings">
<h1>Character Sheet Settings</h1>
<h2>Release Notes</h2>
<h3>Alpha 0.12</h3>
<span>
<p>Combat Dice use the <span class="die" /> symbol where possible.
Elsewhere they are abbreviated as <em>CD</em>.</p>
<p>2d20 rolls and Combat Dice are implemented in a simple fashion that
uses the built in dice roller in chat. Click on any skill on the
character sheet to roll a number of d20s. Critical successes and
complications must be counted manually from the chat results.</p>
<p>Clicking on combat dice under melee damage or weapons will roll
a single combat die and display the results.</p>
<p>I am exploring other options for a future release.</p>
</span>
<!--
<h2>Character</h2>
<div class="grid col2">
<span>NPC</span>
<label class="switch">
<input type="checkbox" name="attr_setting_npc" value="1" />
<span class="slider"></span>
</label>
</div>
-->
<h2>Style</h2>
<div class="grid col2">
<span>Vault Girl</span>
<label class="switch">
<input type="checkbox" name="attr_style_vault_girl" value="1" />
<span class="slider"></span>
</label>
<div class="grid col1">
<h2>Release Notes</h2>
<h3>Alpha 0.13</h3>
<ul>
<li>Fixed bug/typos in skill rolls to use correct stats and critical range on tag.</li>
<li>Added option for additional tag skills on the Skills tab under
SPECIAL.</li>
<li>Fixed delete button on the perks list.</li>
<li>Added modifier for HP on the Derived Stats tab under SPECIAL.</li>
<li>Added modifier for SPECIAL points on the Attributes tab under
SPECIAL.</li>
<li>Added modifier for skill points on the Skills tab under
SPECIAL.</li>
<li>Disabled Confirm/copy button after first use.</li>
</ul>
<h3>Alpha 0.12</h3>
<ul>
<li>Combat Dice use the <span class="die" /> symbol where possible.
Elsewhere they are abbreviated as <em>CD</em>.</li>
<li>2d20 rolls and Combat Dice are implemented in a simple fashion that
uses the built in dice roller in chat. Click on any skill on the
character sheet to roll a number of d20s. Critical successes and
complications must be counted manually from the chat results.</li>
<li>Clicking on combat dice under melee damage or weapons will roll
a single combat die and display the results.</li>
<li>I am exploring other options for a future release.</li>
</ul>
</div>
<div class="grid col1">
<!--
<h2>Character</h2>
<div class="grid col2">
<span>NPC</span>
<label class="switch">
<input type="checkbox" name="attr_setting_npc" value="1" />
<span class="slider"></span>
</label>
</div>
-->
<h2>Style</h2>
<div class="grid col2">
<span>Vault Girl</span>
<label class="switch">
<input type="checkbox" name="attr_style_vault_girl" value="1" />
<span class="slider"></span>
</label>
<span>Outline only (for hit locations)</span>
<label class="switch">
<input type="checkbox" name="attr_style_outline" value="1" />
<span class="slider"></span>
</label>
<!--
<span>Pip-Boy R20</span>
<label class="switch">
<input type="checkbox" name="attr_style_pip_boy" value="1" />
<span class="slider"></span>
</label>
-->
<span>Outline only (for hit locations)</span>
<label class="switch">
<input type="checkbox" name="attr_style_outline" value="1" />
<span class="slider"></span>
</label>
<!--
<span>Pip-Boy R20</span>
<label class="switch">
<input type="checkbox" name="attr_style_pip_boy" value="1" />
<span class="slider"></span>
</label>
-->
</div>
</div>
</div>
</div>
<!-- end settings page -->
@@ -1937,6 +1996,7 @@ const skillList = ["ATHLETICS","BARTER","BIG_GUNS",
"ENERGY_WEAPONS","EXPLOSIVES","LOCKPICK","MEDICINE","MELEE_WEAPONS",
"PILOT","REPAIR","SCIENCE","SMALL_GUNS","SNEAK","SPEECH","SURVIVAL",
"THROWING","UNARMED"];
const skillTagModList = skillList.map(i => i + "_TAG_MOD");
const originTagList = ["ORIGIN","BROTHERHOOD_TAG","SURVIVOR_CHOICE",
"SURVIVOR_TRAIT1","SURVIVOR_TRAIT2","SURVIVOR_PERK","SURVIVOR_TAG",
"VAULT_TAG"];
@@ -1950,10 +2010,11 @@ const confirmList = ["ORIGIN","BROTHERHOOD_PACKAGE","MUTANT_PACKAGE",
"SURVIVOR_TRAIT2","SURVIVOR_PERK"];
const triggerList =
addList.concat(attributelist).concat(skillList).concat(originTagList)
.concat(survivorAttrList).concat(tagSkillList);
.concat(survivorAttrList).concat(tagSkillList).concat(skillTagModList);
const valueList =
addList.concat(attributelist).concat(totalAttributelist).concat(skillList)
.concat(originTagList).concat(survivorAttrList).concat(tagSkillList);
.concat(originTagList).concat(survivorAttrList).concat(tagSkillList)
.concat(skillTagModList);
const originsDictionary = {
"brotherhood": {"name": "Brotherhood of Steel"},
"ghoul": {"name": "Ghoul"},
@@ -2684,6 +2745,7 @@ on("clicked:copyspecial", function() {
["itemname"], [origin_tag_package]);
}
update["finalized"] = 1;
update["tab"] = "character";
setAttrs(update);
@@ -2705,6 +2767,7 @@ attributelist.forEach(attribute => {
triggerList.forEach(trigger => {
on(`change:${trigger}`, function(eventInfo) {
getAttrs(valueList, function(values) {
console.log(values);
let update = {};
let attributes = {};
@@ -2742,9 +2805,12 @@ triggerList.forEach(trigger => {
let cost = parseInt(values[skill])||0;
let name = skill.toLowerCase();
let points = parseInt(values[skill])||0;
update[`${name}_tag`] = 0;
update[`${name}_cs`] = 1;
update[`${name}_total`] = Math.min(points, 6);
let tag_mod = parseInt(values[`${skill}_TAG_MOD`])||0;
update[`${name}_tag`] = tag_mod ? 1 : 0;
update[`${name}_cs`] = tag_mod ? Math.min(points + 2, 6) : 1;
update[`${name}_total`] = tag_mod ?
Math.min(points + 2, 6) :
Math.min(points, 6);
skill_buy += cost;
});
update["origin_tag_name"] = "";
@@ -2850,9 +2916,7 @@ triggerList.forEach(trigger => {
update["defense"] = attributes["agility"] > 8 ? 2 : 1;
update["initiative"] = attributes["perception"] +
attributes["agility"];
update["hp"] = attributes["endurance"] + attributes["luck"]
+ (level - 1);
update["hp_max"] = attributes["endurance"] + attributes["luck"]
update["hp_derived"] = attributes["endurance"] + attributes["luck"]
+ (level - 1);
update["hp_ratio"] = 100;
update["melee_damage"] =
@@ -2915,7 +2979,8 @@ on("change:carry_weight_weapons change:carry_weight_gear", function() {
});
});
const combatList = ["MELEE_DAMAGE","DEFENSE","INITIATIVE"];
const combatList = ["ATTRIBUTE_POINTS","SKILL_POINTS","MELEE_DAMAGE",
"DEFENSE","INITIATIVE"];
combatList.forEach(stat => {
let statLower = stat.toLowerCase();
on(`change:${statLower} change:${statLower}_mod`, function(eventInfo) {
@@ -2930,6 +2995,18 @@ combatList.forEach(stat => {
});
});
on(`change:hp_derived change:hp_mod`, function(eventInfo) {
getAttrs(['HP_DERIVED', 'HP_MOD'], function(values) {
let update = {};
let base = parseInt(values.HP_DERIVED)||0;
let mod = parseInt(values.HP_MOD)||0;
let total = base + mod;
update['hp'] = total;
update['hp_max'] = total;
setAttrs(update);
});
});
const typeList = ["PHYSICAL","ENERGY","RAD","POISON"];
typeList.forEach(type => {
let typeLower = type.toLowerCase();