[Perils and Princesses] Semi-New SHeet

Since 22Jun2025 the "Perils & Princesses" sheet has been unable to access any images. The only response to the problem was the suggestion that actual locations should be used. Last month this was done and nothing has changed. Without concrete evidence, I am guessing its the ampersand in the folder name
This commit is contained in:
William Barker
2025-09-17 16:08:38 -04:00
parent 09023537ec
commit 4fcba7ddf8
16 changed files with 1275 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

+422
View File
@@ -0,0 +1,422 @@
@import url("https://fonts.googleapis.com/css2?family=Fleur+De+Leah&family=Lancelot&family=Style+Script&family=Sunshiney&display=swap");
.charsheet {
opacity: 1.0;
min-width: 822px;
max-width: 826px;
height: 1300px;
}
.charsheet label {
width: auto;
display: inline-block;
font-size: .75em;
}
.charsheet .sheet-myStuff {
display: grid;
grid-template-columns: 204px 204px;
background-color: Transparent;
width: 408px;
margin-top: 40px;
margin-left: 6px;
padding: 3px;
}
.charsheet .sheet-myStuff > div {
background-color: #f1f1f1;
border: 2px solid Black;
padding: 5px;
height: 31px;
font-size: 30px;
text-align: center;
}
.charsheet .sheet-weapons {
display: grid;
grid-template-columns: 200px 136px;
background-color: Transparent;
width: 336px;
margin-top: 0px;
margin-left: 0px;
padding: 1px;
}
.charsheet .sheet-weapons > div {
background-color: #f1f1f1;
border: 2px solid Black;
padding: 5px;
height: 33px;
font-size: 30px;
text-align: center;
}
.charsheet .sheet-edge {
font-weight: 400;
font-size: 17px;
height: 40px !important;
border: none;
border-bottom: 2px solid Black;
margin-left: 6%;
width: 86%;
border-radius: 0%;
text-align: center;
}
.charsheet .sheet-round label {
height: 20px;
border: 1px solid Black;
border-radius: 50%;
width: 20px;
text-align: center;
}
.charsheet button[type=roll].sheet-attack-button {
box-sizing: content-box;
color: rgb(215, 153, 167);
background-color: White;
background-image: none;
height: 24px;
width: 14px;
font-size: 16px;
font-weight: bold;
border: 0px solid rgb(215, 153, 167);
text-shadow: none;
box-shadow: none;
font-family: "dicefontd20";
margin: -4px 0px 0px -8px;
padding: 0px 1px 4px 1px;
}
.charsheet button[type=roll].sheet-melee-button {
box-sizing: content-box;
color: White;
background-color: rgb(215, 153, 167);
background-image: none;
height: 18px;
width: 14px;
font-size: 16px;
font-weight: bold;
border: 0px solid rgb(215, 153, 167);
text-shadow: none;
box-shadow: none;
font-family: "dicefontd20";
margin: -6px 0px 0px -8px;
padding: 2px 2px 2px 2px;
}
.charsheet button[type=roll].sheet-range-button {
box-sizing: content-box;
color: rgb(215, 153, 167);
background-color: White;
background-image: none;
height: 24px;
width: 14px;
font-size: 16px;
font-weight: bold;
border: 0px solid rgb(215, 153, 167);
text-shadow: none;
box-shadow: none;
font-family: "dicefontd20";
margin: -4px 0px 0px -7px;
padding: 0px 1px 4px 1px;
}
input[type=text].attribute {
width: 134px;
height: 134px;
text-align: center;
border-radius: 50%;
font-weight: bold;
font-size: 6em;
background-color: rgba(255,255,255,0.1);
border: 12px double Pink;
}
input[type=checkbox].itemCheck {
height: 16px;
width: 16px;
accent-color: Black;
margin: 0px 0px 0px -6px;
}
input[type=text].item {
width: 168px;
height: 40px;
text-align: center;
font-weight: bold;
font-size: 22px;
margin: -9px 0px 0px 0px;
border-bottom: 4px solid Black;
}
input[type=text].weaponName {
width: 168px;
height: 40px;
text-align: center;
font-weight: bold;
font-size: 22px;
margin: -8px 0px 0px 0px;
border-bottom: 3px solid Black;
}
input[type=text].weaponDmg {
width: 91px;
height: 40px;
text-align: center;
font-weight: bold;
font-size: 22px;
margin: -8px 0px 0px -5px;
padding: 3px 0px 3px 0px;
border-bottom: 3px solid Black;
}
input[type="radio"]:checked + label {
color: white;
}
input[type="radio"]:checked + label.contrast {
color: #DA70D6;
}
input[type="radio"]:hover + label {
color: blue;
}
.charsheet input[type=number] {
-moz-appearance: textfield;
-webkit-appearance: textfield;
border: none;
border-bottom: dotted 1px black;
color: black;
width: 45px;
text-align: center;
}
.charsheet input[type=number]::-webkit-outer-spin-button,
.charsheet input[type=number]::-webkit-inner-spin-button {
-webkit-appearance: none;
-webkit-appearance: textfield;
}
/* Trauma checkbox via image */
input[type="checkbox"][id^="cb"] {
display: none;
}
label.trauma {
display: inline-block;
vertical-align: top;
height: 45px;
width: 45px;
border: 1px solid #fff;
padding: 5px;
position: relative;
margin: 5px 0px 0px 5px;
cursor: pointer;
}
label.trauma:before {
display: inline-block;
vertical-align: top;
background-color: white;
color: white;
content: " ";
border-radius: 50%;
border: 1px solid grey;
position: absolute;
top: -5px;
left: -5px;
width: 25px;
height: 25px;
text-align: center;
line-height: 28px;
transition-duration: 0.4s;
transform: scale(0);
}
label.trauma img {
display: inline-block;
vertical-align: top;
transition-duration: 0.2s;
transform-origin: 50% 50%;
}
:checked + label.trauma {
border-color: #ddd;
}
:checked + label.trauma:before {
content: "✓";
background-color: grey;
transform: scale(1);
}
:checked + label.trauma img {
transform: scale(0.9);
box-shadow: 0 0 5px #333;
z-index: -1;
}
/* Check and MeleeRoll Template */
.sheet-rolltemplate-check .sheet-container {
color: Black;
background-color: #ffffff;
border: 1px solid;
padding: 2px;
width: 189px;
}
.sheet-rolltemplate-meleeRoll .sheet-container {
background-color: rgb(153, 0, 0); /* Dark Red */
color: rgb(255, 179, 179); /* Light Red */
border: 3px solid rgb(255, 179, 179);
padding: 2px;
width: 189px;
}
.sheet-rolltemplate-initiative .sheet-container {
background-color: Thistle;
color: Blue;
border: 3px solid Blue;
padding: 2px;
width: 189px;
}
.sheet-rolltemplate-check .sheet-container h1,
.sheet-rolltemplate-meleeRoll .sheet-container h1{
color: inherit;
font-size: 1.2em;
font-variant: small-caps;
line-height: 20px;
}
.sheet-rolltemplate-meleeRoll div,
.sheet-rolltemplate-initiative div,
.sheet-rolltemplate-check div {
padding: 2px;
}
.sheet-rolltemplate-check span,
.sheet-rolltemplate-meleeRoll span,
.sheet-rolltemplate-initiative span {
color: currentColor;
font-family: "Times New Roman", Times, serif;
font-size: 1.2em;
font-variant: small-caps;
line-height: 1.4em;
padding-left: 5px;
text-align: left;
}
.sheet-rolltemplate-check .sheet-subheader,
.sheet-rolltemplate-meleeRoll .sheet-subheader,
.sheet-rolltemplate-initiative .sheet-subheader {
color: currentColor;
font-size: 1em;
font-style: italic;
}
.sheet-rolltemplate-check .sheet-arrow-right,
.sheet-rolltemplate-meleeRoll .sheet-arrow-right,
.sheet-rolltemplate-initiative .sheet-arrow-right {
border-bottom: 3px solid transparent;
border-left: 180px solid currentColor;
border-top: 3px solid transparent;
}
.sheet-rolltemplate-meleeRoll .sheet-tcat,
.sheet-rolltemplate-initiative .sheet-tcat,
.sheet-rolltemplate-check .sheet-tcat {
font-style: italic;
}
.sheet-rolltemplate-check .inlinerollresult {
background-color: LightGray !important;
border: none;
}
.sheet-rolltemplate-initiative .inlinerollresult,
.sheet-rolltemplate-meleeRoll .inlinerollresult {
color: Red;
background-color: Yellow;
border: none;
}
.sheet-rolltemplate-check .inlinerollresult.fullcrit {
color: #3FB315;
border: none;
}
.sheet-rolltemplate-check .inlinerollresult.fullfail {
color: #B31515;
border: none;
}
.sheet-rolltemplate-check .inlinerollresult.importandivoll {
color: #4A57ED;
border: none;
}
/* End Check MeleeRoll templates*/
/* Button Styling*/
.charsheet button[type=roll].sheet-textButton {
background-color: transparent;
color: black;
border: none;
font-size: 1.25em;
font-weight: bold;
text-align: right;
background-image: none;
text-shadow: none;
box-shadow: none;
padding: 0px;
margin: 0px;
}
.charsheet span.sheet-diceroll {
font-family: "dicefontd20";
}
.charsheet button[type=roll].sheet-textButton::before,
.charsheet button[type=roll].sheet-powerButton::before {
content: "" !important;
}
/*End Button Styling*/
/* TAB HANDLING */
.charsheet input[type=radio]{
display: none;
float: left;
}
.charsheet input[type=radio] + label{
content: '';
border: solid 1px black;
background: white;
color: black;
font-weight: bold;
width: auto;
text-align: center;
padding: 0 2px;;
float: left;
}
.charsheet input[type=radio]:hover + label{
background: #990000;
}
.charsheet input[type=radio]:checked + label{
background: black;
color: white;
}
.charsheet div.sheet-page1, .charsheet div.sheet-page2 {
display: none;
}
.charsheet input.sheet-page1:checked ~ div.sheet-page1, .charsheet input.sheet-page2:checked ~ div.sheet-page2 {
display: block;
}
+775
View File
@@ -0,0 +1,775 @@
<!-- BEGIN SHEET -->
<input name="attr_SetupDone" style="display: none;" type="text" value="0">
<input type="radio" class="sheet-page1" name="attr_page" value="1" checked="checked" id="sheet-page1">
<label for="sheet-page1" data-i18n="pageOne-c">Page One</label>
<input type="radio" class="sheet-page2" name="attr_page" value="2" id="sheet-page2">
<label for="sheet-page2" data-i18n="pageTwo-c">Page Two</label>
<br />
<br />
<!--- Main start -->
<div class="sheet-page1" >
<!-- Avatar Image -->
<div style="display: inline-block; vertical-align: top; width: 330px; height: 546px; margin-top: -16px; border: 0px dashed Red;">
<div style='display: inline-block; vertical-align: top; width: 360px; height: 400px; margin: 0px 0px 0px 4px; border: 0px solid Red;'>
<!-- <img name="frame" style="width: 290px; height: 350px; border: 0px solid Blue; background: white; margin: 0px 0px 0px 0px;" src="https://github.com/Roll20/roll20-character-sheets/blob/master/Perils%20&%20Princesses/Graphics/perilFrame.png?raw=true"> -->
<img name="frame" style="width: 290px; height: 350px; border: 0px solid Blue; background: white; margin: 0px 0px 0px 0px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilFrame.png?raw=true">
</div>
<div style='display: inline-block; vertical-align: top; width: 200px; height: 200px; margin: -286px 0px 0px 50px; transform: rotate(-2deg); border: 0px solid Purple;'>
<img name="attr_character_avatar" title="ID Photograph: 200w x 200h pixels" style="width: 200px; height: 200px; border: 0px solid Black; background: White; margin: 0px 0px 0px 0px;">
</div>
<div style="margin-top: -56px; height: 180px; border: 0px solid Blue;">
<label style="text-align: center; width: 46px; font-family:'Lancelot'; font-weight: bold; font-size: 12px; height: 30px; transform: rotate(-5deg); margin: 0px 0px 0px 0px; padding: 10px 0px 0px 0px; border: 0px solid Black;" data-i18n="name-u">NAME</label>
<input type="text" name="attr_character_name" spellcheck="false" style="width: 260px; height: 30px; margin: 8px 0px 0px 0px; border-bottom: 3px solid Black;" >
<input type="text" name="attr_title" spellcheck="false" style="width: 310px; height: 30px; margin: 8px 0px 0px 0px; border-bottom: 3px solid Black;" >
<label style="text-align: center; width: 66px; font-family:'Lancelot'; font-weight: bold; font-size: 11px; height: 30px; transform: rotate(-5deg); margin: 0px 0px 0px 0px; padding: 18px 0px 0px 0px; border: 0px solid Black;" data-i18n="pronouns-u">PRONOUNS</label>
<input type="text" name="attr_pronouns" spellcheck="false" style="width: 240px; height: 30px; margin: 8px 0px 0px 0px; border-bottom: 3px solid Black;" >
<label style="text-align: center; width: 76px; font-family:'Lancelot'; font-weight: bold; font-size: 11px; height: 30px; transform: rotate(-5deg); margin: 4px 0px 0px 0px; padding: 0px 0px 0px 0px; border: 0px solid Black;" data-i18n="fairyGodmother-u">FAIRY GODMOTHER</label>
<input type="text" spellcheck="false" name="attr_fairyGodmother" style="width: 230px; height: 30px; margin: -10px 0px 0px 0px; border-bottom: 3px solid Black;" >
</div>
</div>
<!-- Virtues & Health -->
<div style="display: inline-block; vertical-align: top; width: 480px; height: 546px; margin-top: -16px; border: 0px solid Purple;">
<label style="text-align: center; width: 420px; font-family:'Lancelot'; font-weight: bold; font-size: 44px; height: 34px; margin: 14px 0px 0px 0px; padding: 6px 0px 0px 0px; border: 0px solid Brown;" data-i18n="virtues-c">Virtues</label>
<div style="display: inline-block; vertical-align: top; width: 136px; height: 130px; margin-top: 2px; border: 0px solid Green;">
<!-- Resolve -->
<input class="attribute" type='text' style='margin:-40px 0px 0px 0px' data-i18n-title="Resolve" name='attr_resolve' value=' ' />
<button class="sheet-textButton" type="roll" name="roll_resolveCheck" value="&{template:check} {{name=@{character_name}}} {{Virtue=Resolve}} {{Check=[[1]]}} {{DL=[[@{resolve}]]}} {{Roll=[[1d20]]}} {{Roll2=[[0?{Advantage/Disadvantage|Normal,+0|Advantage,+1d20|Disadvantage,-1}]]}} {{Roll3=[[1d20]]}} {{AilmentRoll=[[@{weary}*1d20]]}} {{Ailment=Weary}} {{Fumble=[[20]]}}" title="Resolve Roll">
<label style="text-align: center; width: 86px; font-family:'Lancelot'; font-weight: bold; color: Black; font-size: 18px; height: 24px; transform: rotate(-2deg); margin: 4px 0px 0px 18px; padding: 8px 0px 0px 0px; border: 1px solid Black;" data-i18n="resolve-u">RESOLVE</label></button>
<!-- Grace -->
<div style="display: inline-block; vertical-align: top; width: 140px; height: 150px; margin: -120px 0px 0px 140px; border: 0px dotted Black;">
<input class="attribute" type='text' style='margin: 4px 0px 0px 6px' data-i18n-title="Grace" name='attr_grace' value=' ' />
<button class="sheet-textButton" type="roll" name="roll_graceCheck" value="&{template:check} {{name=@{character_name}}} {{Virtue=Grace}} {{Check=[[1]]}} {{DL=[[@{grace}]]}} {{Roll=[[1d20]]}} {{Roll2=[[0?{Advantage/Disadvantage|Normal,+0|Advantage,+1d20|Disadvantage,-1}]]}} {{Roll3=[[1d20]]}} {{AilmentRoll=[[@{woozy}*1d20]]}} {{Ailment=Woozy}} {{Fumble=[[20]]}}" title="Grace Roll">
<label style="text-align: center; width: 66px; font-family:'Lancelot'; font-weight: bold; color: Black; font-size: 18px; height: 24px; transform: rotate(5deg); margin: 0px 0px 0px 20px; padding: 6px 0px 0px 0px; border: 1px solid Black;" data-i18n="grace-u">GRACE</label>
</div>
<!-- Wits -->
<div style="display: inline-block; vertical-align: top; width: 140px; height: 150px; margin: -204px 0px 0px 286px; border: 0px dotted Black;">
<input class="attribute" type='text' style='margin: 4px 0px 0px 6px' data-i18n-title="Wits" name='attr_wits' value=' ' />
<button class="sheet-textButton" type="roll" name="roll_witsCheck" value="&{template:check} {{name=@{character_name}}} {{Virtue=Wits}} {{Check=[[1]]}} {{DL=[[@{wits}]]}} {{Roll=[[1d20]]}} {{Roll2=[[0?{Advantage/Disadvantage|Normal,+0|Advantage,+1d20|Disadvantage,-1}]]}} {{Roll3=[[1d20]]}} {{AilmentRoll=[[@{befuddled}*1d20]]}} {{Ailment=Befuddled}} {{Fumble=[[20]]}}" title="Wits Roll">
<label style="text-align: center; width: 66px; font-family:'Lancelot'; font-weight: bold; color: Black; font-size: 18px; height: 24px; transform: rotate(5deg); margin: 0px 0px 0px 24px; padding: 6px 0px 0px 0px; border: 1px solid Black;" data-i18n="wits-u">WITS</label>
</div>
</div>
<!-- Health -->
<div style="display: inline-block; vertical-align: top; width: 460px; height: 200px; margin-top: 20px; border: 0px solid Black;">
<div style='display: inline-block; vertical-align: top; width: 220px; height: 180px; margin: 20px 0px 0px 4px; border: 0px solid Red;'>
<label style="text-align: center; width: 90px; font-family:'Lancelot'; font-weight: bold; font-size: 19px; height: 24px; margin: 4px 0px 0px 12px; padding: 0px 0px 0px 0px; border: 0px solid Black;" data-i18n="armor-u">ARMOR</label>
<!-- <img name="mount" style="width: 170px; height: 150px; border: 0px solid Blue; background: Transparent; margin: -2px 0px 0px 8px;" src="https://github.com/Roll20/roll20-character-sheets/blob/master/Perils%20&%20Princesses/Graphics/perilArmor.png?raw=true"> -->
<img name="mount" style="width: 170px; height: 150px; border: 0px solid Blue; background: Transparent; margin: -2px 0px 0px 8px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilArmor.png?raw=true">
<input type="text" name="attr_armor" style="width: 54px; height: 60px; text-align: center; font-size: 36px; font-weight: bold; margin: -230px 0px 0px 30px; border: 0px solid Black;" >
</div>
<div style='display: inline-block; vertical-align: top; width: 110px; height: 120px; margin: -160px 0px 0px 200px; border: 0px solid Red;'>
<label style="text-align: center; width: 96px; font-family:'Lancelot'; font-weight: bold; font-size: 23px; height: 50px; transform: rotate(-3deg); margin: 0px 0px 0px 0px; padding: 10px 0px 0px 0px; border: 0px solid Black;" data-i18n="heartPoints-u">HEART POINTS</label>
<label style="text-align: center; width: 80px; font-weight: bold; font-size: 13px; height: 56px; transform: rotate(-5deg); margin: 0px 0px 0px 8px; padding: 0px 0px 0px 0px; border: 2px solid Black;" data-i18n="max-u">MAX</label>
<input type="text" name="attr_maxHP" style="width: 78px; height: 36px; transform: rotate(-5deg); text-align: center; font-size: 24px; font-weight: bold; margin: -61px 0px 0px 12px; border: 0px solid Black;" value="5" >
</div>
<div style='display: inline-block; vertical-align: top; width: 150px; height: 134px; margin: -196px 0px 0px 302px; border: 0px solid Green;'>
<!-- <img name="heart" style="width: 148px; height: 132px; border: 0px solid Blue; background: Transparent; margin: 0px 0px 0px 0px;" src="https://github.com/Roll20/roll20-character-sheets/blob/master/Perils%20&%20Princesses/Graphics/perilHeart.png?raw=true"> -->
<!--
<img name="heart" style="width: 148px; height: 132px; border: 0px solid Blue; background: Transparent; margin: 0px 0px 0px 0px;" src="https://github.com/WilliamBarkerCoC/Public-Domain-Images/blob/main/perilSimpleHeart.png?raw=true">
-->
</div>
<div style='display: inline-block; vertical-align: top; width: 150px; height: 134px; margin: -186px 0px 0px 302px; border: 0px solid Green;'>
<label style="text-align: center; width: 70px; font-weight: bold; font-size: 14px; height: 20px; transform: rotate(-3deg); margin: 0px 0px 0px 30px; padding: 0px 0px 0px 0px; border: 0px solid Blue;" data-i18n="current-u">CURRENT</label>
<input type="text" name="attr_curHP" style="width: 78px; height: 48px; transform: rotate(-5deg); text-align: center; font-size: 36px; font-weight: bold; margin: -3px 0px 0px 30px; border: 0px solid Black;" value="5" >
</div>
<div style="display: inline-block; vertical-align: top; width: 456px; height: 120px; margin-top: -50px; border: 0px dashed Blue;">
<!-- <img name="triangles" style="width: 400px; height: 90px; background: Transparent; margin: 14px 0px 0px 54px;" src="https://github.com/Roll20/roll20-character-sheets/blob/master/Perils%20&%20Princesses/Graphics/perilTriangles.png?raw=true"> -->
<img name="triangles" style="width: 400px; height: 90px; background: Transparent; margin: 14px 0px 0px 54px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilTriangles.png?raw=true">
</div>
<div style="display: inline-block; vertical-align: top; width: 458px; height: 130px; margin-top: -130px; border: 0px dashed Red;">
<label style="text-align: center; width: 82px; font-family:'Lancelot'; font-weight: bold; font-size: 28px; height: 40px; margin: -20px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n="heartDice-c">Heart Dice</label>
<input type="text" name="attr_hd1" style="width: 40px; height: 42px; text-align: center; font-weight: bold; font-size: 23px; margin: 62px 0px 0px 0px; border: 0px solid Red;" >
<input type="text" name="attr_hd2" style="width: 40px; height: 42px; text-align: center; font-weight: bold; font-size: 23px; margin: 4px 0px 0px 52px; border: 0px solid Black;" >
<input type="text" name="attr_hd3" style="width: 40px; height: 42px; text-align: center; font-weight: bold; font-size: 23px; margin: 62px 0px 0px 58px; border: 0px solid Red;" >
<input type="text" name="attr_hd4" style="width: 40px; height: 42px; text-align: center; font-weight: bold; font-size: 23px; margin: 4px 0px 0px 54px; border: 0px solid Black;" >
</div>
</div>
</div>
<!-- My Stuff header -->
<div style="display: inline-block; width: 780px; height: 44px; margin-top: 12px; border: 0px solid Purple;">
<div style="display: inline-block; vertical-align: top; width: 206px; height: 40px; margin-top: 0px; border: 0px solid Green;">
<label style="text-align: center; width: 206px; font-family:'Lancelot'; font-weight: bold; font-size: 36px; height: 32px; margin: -2px 0px 0px 0px; padding: 14px 0px 0px 0px; border: 0px solid Black;" data-i18n="myStuff-u">MY STUFF</label>
</div>
<div style="display: inline-block; vertical-align: top; width: 560px; height: 42px; margin-top: 0px; border: 0px solid Green;">
<!-- <img name="tapestry" style="width: 556px; height: 42px; border: 0px solid Blue; background: Transparent; margin: 0px 0px 0px 0px;" src="https://github.com/Roll20/roll20-character-sheets/blob/master/Perils%20&%20Princesses/Graphics/perilLace1.png?raw=true"> -->
<img name="tapestry" style="width: 556px; height: 42px; border: 0px solid Blue; background: Transparent; margin: 0px 0px 0px 0px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilLace1.png?raw=true">
</div>
</div>
<!-- My Stuff -->
<div style="display: inline-block; vertical-align: top;">
<div class="sheet-myStuff">
<div style="border-top: 3px solid Black;">
<input type="checkbox" name='attr_item1' title='Item1' class="itemCheck" value="1" />
<input type="text" name="attr_stuff1" class="item" >
</div>
<div style="border-top: 3px solid Black;">
<input type="checkbox" name='attr_item2' title='Item2' class="itemCheck" value="1" />
<input type="text" name="attr_stuff2" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item3' title='Item3' class="itemCheck" value="1" />
<input type="text" name="attr_stuff3" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item4' title='Item4' class="itemCheck" value="1" />
<input type="text" name="attr_stuff4" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item5' title='Item5' class="itemCheck" value="1" />
<input type="text" name="attr_stuff5" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item6' title='Item6' class="itemCheck" value="1" />
<input type="text" name="attr_stuff6" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item7' title='Item7' class="itemCheck" value="1" />
<input type="text" name="attr_stuff7" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item8' title='Item8' class="itemCheck" value="1" />
<input type="text" name="attr_stuff8" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item9' title='Item9' class="itemCheck" value="1" />
<input type="text" name="attr_stuff9" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item10' title='Item10' class="itemCheck" value="1" />
<input type="text" name="attr_stuff10" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item11' title='Item11' class="itemCheck" value="1" />
<input type="text" name="attr_stuff11" class="item" >
</div>
<!-- 5px solid Black -->
<div>
<input type="checkbox" name='attr_item12' title='Item12' class="itemCheck" value="1" />
<input type="text" name="attr_stuff12" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item13' title='Item13' class="itemCheck" value="1" />
<input type="text" name="attr_stuff13" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item14' title='Item14' class="itemCheck" value="1" />
<input type="text" name="attr_stuff14" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item15' title='Item15' class="itemCheck" value="1" />
<input type="text" name="attr_stuff15" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item16' title='Item16' class="itemCheck" value="1" />
<input type="text" name="attr_stuff16" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item17' title='Item17' class="itemCheck" value="1" />
<input type="text" name="attr_stuff17" class="item" >
</div>
<div>
<input type="checkbox" name='attr_item18' title='Item18' class="itemCheck" value="1" />
<input type="text" name="attr_stuff18" class="item" >
</div>
<div style="grid-column: span 2">
<input type="checkbox" name='attr_item19' title='Item19' class="itemCheck" value="1" />
<input type="checkbox" name='attr_item19b' title='Item19b' class="itemCheck" value="1" />
<input type="text" name="attr_stuff19" class="item" style="width: 354px;" >
</div>
<div style="grid-column: span 2">
<input type="checkbox" name='attr_item20' title='Item20' class="itemCheck" value="1" />
<input type="checkbox" name='attr_item20b' title='Item20b' class="itemCheck" value="1" />
<input type="text" name="attr_stuff20" class="item" style="width: 354px;" >
</div>
<div style="grid-column: span 2">
<input type="checkbox" name='attr_item21' title='Item19' class="itemCheck" value="1" />
<input type="checkbox" name='attr_item21b' title='Item19b' class="itemCheck" value="1" />
<input type="text" name="attr_stuff21" class="item" style="width: 354px;" >
</div>
<div style="grid-column: span 2; border-bottom: 3px solid Black;">
<input type="checkbox" name='attr_item22' title='Item19' class="itemCheck" value="1" />
<input type="checkbox" name='attr_item22b' title='Item19b' class="itemCheck" value="1" />
<input type="text" name="attr_stuff22" class="item" style="width: 354px;" >
</div>
</div>
</div>
<!-- Weapons -->
<div style="display: inline-block; vertical-align: top; border: 0px solid Red">
<!-- <img name="sword" style="width: 54px; height: 290px; border: 0px solid Blue; background: Transparent; margin: 20px 0px 0px 0px;" src="https://github.com/Roll20/roll20-character-sheets/blob/master/Perils%20&%20Princesses/Graphics/perilSword.png?raw=true"> -->
<img name="sword" style="width: 54px; height: 290px; border: 0px solid Blue; background: Transparent; margin: 20px 0px 0px 0px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilSword.png?raw=true">
<div style="display: inline-block; vertical-align: top; margin-left: -30px; border: 0px solid Orange">
<label style="text-align: center; width: 200px; font-family:'Lancelot'; font-weight: bold; font-size: 16px; height: 20px; margin: 66px 0px 0px 0px; padding: 0px 0px 0px 0px; border: 0px solid Black;" data-i18n="weapon-u">WEAPON</label>
<label style="text-align: center; width: 110px; font-family:'Lancelot'; font-weight: bold; font-size: 16px; height: 20px; margin: 66px 0px 0px -4px; padding: 0px 0px 0px 0px; border: 0px solid Black;" data-i18n="dmgDice-u">DMG DICE</label>
<div class="sheet-weapons">
<div style="border-top: 3px solid Black;">
<input type="checkbox" name='attr_weaponChk1' title='Weapon1' class="itemCheck" value="1" />
<input type="text" name="attr_weapon1" class="weaponName" >
</div>
<div style="border-top: 3px solid Black;">
<input type="text" name="attr_weapon1dmg" class="weaponDmg" >
<button class="sheet-melee-button" type="roll" name="roll_meleeRoll1" data-i18n-title="melee (resolve)-c" value="&{template:meleeRoll} {{name=@{character_name} *attacks with* @{weapon1}}} {{Roll=[[1d20]]}} {{DL=[[@{resolve}]]}} {{Damage=[[@{weapon1dmg}]]}} {{CriticalDamage=[[@{weapon1dmg}+@{weapon1dmg}]]}} {{Virtue=Resolve}} {{AilmentRoll=[[@{weary} * 1d20]]}} {{Ailment=Weary}} {{Check=[[1]]}}"></button>
<button class="sheet-range-button" type="roll" name="roll_rangeRoll1" data-i18n-title="range (grace)-c" value="&{template:meleeRoll} {{name=@{character_name} *attacks with* @{weapon1}}} {{Roll=[[1d20]]}} {{DL=[[@{grace}]]}} {{Damage=[[@{weapon1dmg}]]}} {{CriticalDamage=[[@{weapon1dmg}+@{weapon1dmg}]]}} {{Virtue=Grace}} {{AilmentRoll=[[@{woozy} * 1d20]]}} {{Ailment=Woozy}} {{Check=[[1]]}}"></button>
</div>
<div>
<input type="checkbox" name='attr_weaponChk2' title='Weapon2' class="itemCheck" value="1" />
<input type="text" name="attr_weapon2" class="weaponName" >
</div>
<div>
<input type="text" name="attr_weapon2dmg" class="weaponDmg" >
<button class="sheet-melee-button" type="roll" name="roll_meleeRoll1" data-i18n-title="melee (resolve)-c" value="&{template:meleeRoll} {{name=@{character_name} *attacks with* @{weapon2}}} {{Roll=[[1d20]]}} {{DL=[[@{resolve}]]}} {{Damage=[[@{weapon2dmg}]]}} {{CriticalDamage=[[@{weapon2dmg}+@{weapon2dmg}]]}} {{Virtue=Resolve}} {{AilmentRoll=[[@{weary} * 1d20]]}} {{Ailment=Weary}} {{Check=[[1]]}}"></button>
<button class="sheet-range-button" type="roll" name="roll_rangeRoll1" data-i18n-title="range (grace)-c" value="&{template:meleeRoll} {{name=@{character_name} *attacks with* @{weapon2}}} {{Roll=[[1d20]]}} {{DL=[[@{grace}]]}} {{Damage=[[@{weapon2dmg}]]}} {{CriticalDamage=[[@{weapon2dmg}+@{weapon2dmg}]]}} {{Virtue=Grace}} {{AilmentRoll=[[@{woozy} * 1d20]]}} {{Ailment=Woozy}} {{Check=[[1]]}}"></button>
</div>
<div>
<input type="checkbox" name='attr_weaponChk3' title='Weapon3' class="itemCheck" value="1" />
<input type="checkbox" name='attr_weaponChk3b' title='Weapon3b' class="itemCheck" value="1" />
<input type="text" name="attr_weapon3" class="weaponName" style="width: 148px;" >
</div>
<div>
<input type="text" name="attr_weapon3dmg" class="weaponDmg" >
<button class="sheet-melee-button" type="roll" name="roll_meleeRoll1" data-i18n-title="melee (resolve)-c" value="&{template:meleeRoll} {{name=@{character_name} *attacks with* @{weapon3}}} {{Roll=[[1d20]]}} {{DL=[[@{resolve}]]}} {{Damage=[[@{weapon3dmg}]]}} {{CriticalDamage=[[@{weapon3dmg}+@{weapon3dmg}]]}} {{Virtue=Resolve}} {{AilmentRoll=[[@{weary} * 1d20]]}} {{Ailment=Weary}} {{Check=[[1]]}}"></button>
<button class="sheet-range-button" type="roll" name="roll_rangeRoll1" data-i18n-title="range (grace)-c" value="&{template:meleeRoll} {{name=@{character_name} *attacks with* @{weapon3}}} {{Roll=[[1d20]]}} {{DL=[[@{grace}]]}} {{Damage=[[@{weapon3dmg}]]}} {{CriticalDamage=[[@{weapon3dmg}+@{weapon3dmg}]]}} {{Virtue=Grace}} {{AilmentRoll=[[@{woozy} * 1d20]]}} {{Ailment=Woozy}} {{Check=[[1]]}}"></button>
</div>
<div>
<input type="checkbox" name='attr_weaponChk4' title='Weapon4' class="itemCheck" value="1" />
<input type="checkbox" name='attr_weaponChk4b' title='Weapon4b' class="itemCheck" value="1" />
<input type="text" name="attr_weapon4" class="weaponName" style="width: 148px;" >
</div>
<div>
<input type="text" name="attr_weapon4dmg" class="weaponDmg" >
<button class="sheet-melee-button" type="roll" name="roll_meleeRoll4" data-i18n-title="melee (resolve)-c" value="&{template:meleeRoll} {{name=@{character_name} *attacks with* @{weapon4}}} {{Roll=[[1d20]]}} {{DL=[[@{resolve}]]}} {{Damage=[[@{weapon4dmg}]]}} {{CriticalDamage=[[@{weapon4dmg}+@{weapon4dmg}]]}} {{Virtue=Resolve}} {{AilmentRoll=[[@{weary} * 1d20]]}} {{Ailment=Weary}} {{Check=[[1]]}}"></button>
<button class="sheet-range-button" type="roll" name="roll_rangeRoll4" data-i18n-title="range (grace)-c" value="&{template:meleeRoll} {{name=@{character_name} *attacks with* @{weapon4}}} {{Roll=[[1d20]]}} {{DL=[[@{grace}]]}} {{Damage=[[@{weapon4dmg}]]}} {{CriticalDamage=[[@{weapon4dmg}+@{weapon4dmg}]]}} {{Virtue=Grace}} {{AilmentRoll=[[@{woozy} * 1d20]]}} {{Ailment=Woozy}} {{Check=[[1]]}}"></button>
</div>
</div>
</div>
</div>
<!-- Money and Talents -->
<div style="display: inline-block; vertical-align: top; width: 370px; margin: -344px 0px 0px 420px; border: 0px solid Brown">
<label style="text-align: center; width: 104px; font-family:'Lancelot'; font-weight: bold; font-size: 22px; height: 22px; margin: 42px 0px 0px 0px; padding: 0px 0px 0px 0px; border: 0px solid Black;" data-i18n="money-c">Money</label>
<input type="text" name="attr_money" style="width: 240px; height: 50px; text-align: center; font-weight: bold; font-size: 32px; margin: -4px 0px 0px 0px; border: 3px solid Black;" >
<div style="display: inline-block; vertical-align: top; width: 370px; height: 36px; margin-top: 22px; border: 0px solid Green;">
<!-- <img name="frill" style="width: 100px; height: 20px; border: 0px solid Blue; background: Transparent; margin: 0px 0px 0px 24px;" src="https://github.com/Roll20/roll20-character-sheets/blob/master/Perils%20&%20Princesses/Graphics/perilLace2.png?raw=true"> -->
<img name="frill" style="width: 100px; height: 20px; border: 0px solid Blue; background: Transparent; margin: 0px 0px 0px 24px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilLace2.png?raw=true">
<label style="text-align: center; width: 100px; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 0px 0px 0px 0px; padding: 6px 0px 0px 0px; border: 0px solid Black;" data-i18n="talents-u">TALENTS</label>
<!-- <img name="frill" style="width: 100px; height: 20px; border: 0px solid Blue; background: Transparent; margin: 0px 0px 0px 0px;" src="https://github.com/Roll20/roll20-character-sheets/blob/master/Perils%20&%20Princesses/Graphics/perilLace2.png?raw=true"> -->
<img name="frill" style="width: 100px; height: 20px; border: 0px solid Blue; background: Transparent; margin: 0px 0px 0px 0px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilLace2.png?raw=true">
</div>
<input class="sheet-edge" type="text" name="attr_edge1a">
<input class="sheet-edge" type="text" name="attr_edge2a">
<input class="sheet-edge" type="text" name="attr_edge3a">
<input class="sheet-edge" type="text" name="attr_edge4a">
<input class="sheet-edge" type="text" name="attr_edge5a">
</div>
</div><!-- end Main (Tab 1) -->
<div class="sheet-page2">
<!-- Banner -->
<!--
<img name="banner1" style="display: inline-block; vertical-align: top; width: 260px; height: 60px; border: 0px solid Blue; background: White; margin: 0px 0px 0px 0px;" src="https://github.com/Roll20/roll20-character-sheets/blob/master/Perils%20&%20Princesses/Graphics/perilFlowerBorder.jpg?raw=true">
<img name="banner2" style="display: inline-block; vertical-align: top; width: 260px; height: 60px; border: 0px solid Blue; background: White; transform: rotate(180deg); margin: 0px 0px 0px 0px;" src="https://github.com/Roll20/roll20-character-sheets/blob/master/Perils%20&%20Princesses/Graphics/perilFlowerBorder.jpg?raw=true">
<img name="banner3" style="display: inline-block; vertical-align: top; width: 260px; height: 60px; border: 0px solid Blue; background: White; margin: 0px 0px 0px 0px;" src="https://github.com/Roll20/roll20-character-sheets/blob/master/Perils%20&%20Princesses/Graphics/perilFlowerBorder.jpg?raw=true">
-->
<img name="banner1" style="display: inline-block; vertical-align: top; width: 260px; height: 60px; border: 0px solid Blue; background: White; margin: 0px 0px 0px 0px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilFlowerBorder.jpg?raw=true">
<img name="banner2" style="display: inline-block; vertical-align: top; width: 260px; height: 60px; border: 0px solid Blue; background: White; transform: rotate(180deg); margin: 0px 0px 0px 0px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilFlowerBorder.jpg?raw=true">
<img name="banner3" style="display: inline-block; vertical-align: top; width: 260px; height: 60px; border: 0px solid Blue; background: White; margin: 0px 0px 0px 0px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilFlowerBorder.jpg?raw=true">
<!-- Gift Dice -->
<div style='display: inline-block; vertical-align: top; width: 800px; height: 122px; margin: 10px 0px 0px 0px; border: 0px solid Red;'>
<button type='action' name='act_giftDice' class="sheet-textButton" style="width: 240px; height: 140px; border: 0px solid black; padding: 4px 1px 1px 1px;" >
<label style="text-align: center; width: 240px; font-family:'Lancelot'; font-weight: bold; font-size: 44px; height: 140px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n-title="clickToRollGiftDice-c" data-i18n="giftDice-c">Gift Dice</label></button>
<input type="text" name="attr_giftDie1" style="width: 120px; height: 120px; text-align: center; font-weight: bold; font-size: 40px; font-family:'Lancelot'; color: rgb(215, 153, 167); margin: 0px 0px 0px 0px; border: 3px solid Black;" >
<input type="text" name="attr_giftDie2" style="width: 120px; height: 120px; text-align: center; font-weight: bold; font-size: 40px; font-family:'Lancelot'; color: rgb(215, 153, 167); margin: 0px 0px 0px 20px; border: 3px solid Black;" >
<input type="text" name="attr_giftDie3" style="width: 120px; height: 120px; text-align: center; font-weight: bold; font-size: 40px; font-family:'Lancelot'; color: rgb(215, 153, 167); margin: 0px 0px 0px 20px; border: 3px solid Black;" >
<input type="text" name="attr_giftDie4" style="width: 120px; height: 120px; text-align: center; font-weight: bold; font-size: 40px; font-family:'Lancelot'; color: rgb(215, 153, 167); margin: 0px 0px 0px 20px; border: 3px solid Black;" >
</div>
<!-- Gift definition and Level -->
<div style='display: inline-block; vertical-align: top; width: 800px; height: 40px; margin: 10px 0px 0px 0px; border: 2px solid Black;'>
<label style="text-align: left; width: 80px; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 30px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n="myGift-u">MY GIFT:</label>
<input type="text" name="attr_gift1" style="width: 520px; height: 40px; text-align: center; font-weight: bold; font-size: 32px; margin: 0px 0px 0px 0px; border: 0px solid Red;" >
<label style="text-align: left; width: 80px; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 30px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n="myLevel-u">MY LEVEL:</label>
<input type="text" name="attr_level1" style="width: 80px; height: 40px; text-align: center; font-weight: bold; font-size: 32px; margin: 0px 0px 0px 0px; border: 0px solid Red;" value="1" >
</div>
<!-- Innate Abilities -->
<div style='display: inline-block; vertical-align: top; width: 800px; height: 160px; margin: -2px 0px 0px 0px; border: 2px solid Black;'>
<label style="text-align: center; width: 800px; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 1px solid Black;" data-i18n="innateAbilities-u">INNATE ABILITIES</label>
<textarea name="attr_innates" rows=16 cols=80 minLength=80 placeholder="Innate Abilities recorded here.." style="text-align: left; width: 786px; font-family:'Lancelot'; font-weight: bold; font-size: 16px; height: 120px; margin: 0px 0px 0px 0px; padding: 2px 4px 1px 4px; border: 0px solid Red;" data-i18n-title="innateAbilities-u"></textarea>
</div>
<!-- Special Abilities -->
<img name="lace3" style="width: 316px; height: 24px; border: 0px solid Blue; background: White; margin: 0px 0px 0px 0px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilLace3.png?raw=true">
<label style="text-align: center; width: 160px; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 4px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n="specialAbilities-u">SPECIAL ABILITIES</label>
<img name="lace3" style="width: 316px; height: 24px; border: 0px solid Blue; background: White; margin: 0px 0px 0px 0px;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilLace3.png?raw=true">
<div style='display: inline-block; vertical-align: top; width: 800px; height: 160px; margin: 0px 0px 0px 0px; border: 2px solid Black;'>
<label style="text-align: left; width: 32px; color: Pink; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n="level-c">Level</label>
<label style="display: inline-block; vertical-align: top; color: Pink; font-family:'Lancelot'; font-weight: bold; font-size: 26px; margin: 4px 0px 0px 0px; height: 20px;">1</label>
<textarea name="attr_special1" rows=16 cols=80 minLength=80 placeholder="Special Abilities for Level 1 recorded here.." style="text-align: left; width: 786px; font-family:'Lancelot'; font-weight: bold; font-size: 16px; height: 120px; margin: 0px 0px 0px 0px; padding: 2px 4px 1px 4px; border: 0px solid Red;" data-i18n-title="specialAbilities1-c"></textarea>
</div>
<div style='display: inline-block; vertical-align: top; width: 800px; height: 160px; margin: -2px 0px 0px 0px; border: 2px solid Black;'>
<label style="text-align: left; width: 32px; color: Pink; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n="level-c">Level</label>
<label style="display: inline-block; vertical-align: top; color: Pink; font-family:'Lancelot'; font-weight: bold; font-size: 24px; margin: 4px 0px 0px 0px; height: 20px;">2</label>
<textarea name="attr_special2" rows=16 cols=80 minLength=80 placeholder="Special Abilities for Level 2 recorded here.." style="text-align: left; width: 786px; font-family:'Lancelot'; font-weight: bold; font-size: 16px; height: 120px; margin: 0px 0px 0px 0px; padding: 2px 4px 1px 4px; border: 0px solid Red;" data-i18n-title="specialAbilities2-c"></textarea>
</div>
<div style='display: inline-block; vertical-align: top; width: 800px; height: 160px; margin: 0px 0px 0px 0px; border: 2px solid Black;'>
<label style="text-align: left; width: 32px; color: Pink; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n="level-c">Level</label>
<label style="display: inline-block; vertical-align: top; color: Pink; font-family:'Lancelot'; font-weight: bold; font-size: 26px; margin: 4px 0px 0px 0px; height: 20px;">3</label>
<textarea name="attr_special3" rows=16 cols=80 minLength=80 placeholder="Special Abilities for Level 3 recorded here.." style="text-align: left; width: 786px; font-family:'Lancelot'; font-weight: bold; font-size: 16px; height: 120px; margin: 0px 0px 0px 0px; padding: 2px 4px 1px 4px; border: 0px solid Red;" data-i18n-title="specialAbilities3-c"></textarea>
</div>
<div style='display: inline-block; vertical-align: top; width: 800px; height: 160px; margin: -2px 0px 0px 0px; border: 2px solid Black;'>
<label style="text-align: left; width: 32px; color: Pink; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n="level-c">Level</label>
<label style="display: inline-block; vertical-align: top; color: Pink; font-family:'Lancelot'; font-weight: bold; font-size: 24px; margin: 4px 0px 0px 0px; height: 20px;">4</label>
<textarea name="attr_special4" rows=16 cols=80 minLength=80 placeholder="Special Abilities for Level 4 recorded here.." style="text-align: left; width: 786px; font-family:'Lancelot'; font-weight: bold; font-size: 16px; height: 120px; margin: 0px 0px 0px 0px; padding: 2px 4px 1px 4px; border: 0px solid Red;" data-i18n-title="specialAbilities4-c"></textarea>
</div>
<!-- Curses and Injuries -->
<div style='display: inline-block; vertical-align: top; width: 600px; height: 144px; margin: -2px 0px 0px 0px; border: 1px solid Rose;'>
<label style="text-align: left; width: 380px; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n="cursesInjuries-c">Curses & Injures</label>
<input class="sheet-edge" type="text" name="attr_curse1">
<input class="sheet-edge" type="text" name="attr_curse2">
<input class="sheet-edge" type="text" name="attr_curse3">
</div>
<!-- Status Effects: Weary, Woozy and Befuddled -->
<div style='display: inline-block; vertical-align: top; width: 200px; height: 140px; margin: -2px 0px 0px 0px; border: 1px solid Rose;'>
<input type="hidden" name="attr_enc1_8" value="0">
<input type="hidden" name="attr_enc9_15" value="0">
<input type="hidden" name="attr_enc16_22b" value="0">
<input type="hidden" name="attr_encW1_4b" value="0">
<input type="checkbox" id="weary" name="attr_weary" style="text-align: left; width: 28px; height: 28px; color: Black; accent-color: Black; font-family:'Lancelot'; font-weight: bold; border: 2px solid Black; margin: 10px 0px 0px 0px;" value="1">
<label for="weary" style="display: inline-block; vertical-align: top; text-align: left; width: 130px; color: Black; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 8px 0px 0px 0px; padding: 8px 0px 0px 0px; border: 0px solid Black;"data-i18n="wearyResolve">WEARY (Resolve)</label>
<input type="text" name="attr_encumbrance" style='display: inline-block; vertical-align: top; width: 30px; height: 26px; text-align: center; font-weight: bold; font-size: 18px; margin: 12px 0px 0px 1px; padding: 0; border: 1px solid Rose;'value="0" data-i18n-title="encumbrance-c" readonly><br>
<input type="checkbox" id="woozy" name="attr_woozy" style="text-align: left; width: 28px; height: 28px; color: Black; accent-color: Black; font-family:'Lancelot'; font-weight: bold; border: 2px solid Black; margin: 0px 0px 0px 0px;" value="1">
<label for="woozy" style="text-align: left; width: 140px; color: Black; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;"data-i18n="woozyGrace">WOOZY (Grace)</label><br>
<input type="checkbox" id="befuddled" name="attr_befuddled" style="text-align: left; width: 28px; height: 28px; color: Black; accent-color: Black; font-family:'Lancelot'; font-weight: bold; border: 2px solid Black; margin: 0px 0px 0px 0px;" value="1">
<label for="befuddled" style="text-align: left; width: 140px; color: Black; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n="befuddledWits">BEFUDDLED (Wits)</label>
<label style="text-align: left; width: 56px; color: Black; font-family:'Lancelot'; font-weight: bold; font-size: 18px; height: 20px; margin: 0px 0px 0px 0px; padding: 4px 0px 0px 0px; border: 0px solid Black;" data-i18n="trauma-c">Trauma:</label>
<br>
<!-- Trauma checkboxs with Icon images -->
<input type="checkbox" name="attr_trauma1" id="cb1" />
<label class="trauma" for="cb1"><img style="display: inline-block; vertical-align: top; width: 40px; height: 40px; border: 1px solid Blue;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilTrauma.png?raw=true" /></label>
<input type="checkbox" name="attr_trauma2" id="cb2" />
<label class="trauma" for="cb2"><img style="display: inline-block; vertical-align: top; width: 40px; height: 40px; border: 1px solid Red;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilTrauma.png?raw=true" /></label>
<input type="checkbox" name="attr_trauma3" id="cb3" />
<label class="trauma" for="cb3"><img style="display: inline-block; vertical-align: top; width: 40px; height: 40px; border: 1px solid Green;" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/refs/heads/master/Perils%20and%20Princesses/Graphics/perilTrauma.png?raw=true" /></label>
</div>
</div> <!-- end Other (Tab 1) -->
<!-- Roll Templates -->
<rolltemplate class="sheet-rolltemplate-initiative">
<div class="container">
<div><h1>Initiative for {{name}}</h1></div>
<div class="arrow-container"><div class="arrow-right"></div></div>
<div class="rowcolor"><span class="tcat">Rolled: </span>{{computed::roll1}}</div>
</div>
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-check">
<div class="container">
<div><h1>{{name}}{{#Virtue}}<span class="tcat" style="font-style: italic; text-transform: lowercase; font-variant: normal;" data-i18n="for-c"> *for* </span>{{Virtue}}{{/Virtue}}</h1></div>
<div class="arrow-container"><div class="arrow-right"></div></div>
{{#Check}}
<div class="rowcolor"><span class="tcat" data-i18n="check:-c">Check: </span>{{Roll}}</div>
{{/Check}}
{{#rollGreater() Roll2 0}}
<div class="rowcolor"><span class="tcat" data-i18n="advantage:-c">Advantage: </span>{{Roll2}}</div>
{{/rollGreater() Roll2 0}}
{{#rollLess() Roll2 0}}
<div class="rowcolor"><span class="tcat" data-i18n="disadvantage:-c">Disadvantage: </span>{{Roll3}}</div>
{{/rollLess() Roll2 0}}
{{#rollGreater() AilmentRoll 0}}
<div class="rowcolor"><span class="tcat" data-i18n="ailment:-c">Ailment: </span>{{Ailment}}</div>
{{/rollGreater() AilmentRoll 0}}
{{#rollTotal() Roll Fumble}}
<div class="rowcolor"><span class="tcat" data-i18n="fumble!-c">Fumble!:</span>{{Roll}}</div>
{{/rollTotal() Roll Fumble}}
{{#DL}}
<div class="rowcolor"><span class="tcat" data-i18n="target:-c">Target: </span>{{DL}}</div>
{{#rollGreater() Roll2 0}} <!-- Advantage -->
{{#rollGreater() AilmentRoll 0}}
<div class="rowcolor"><span class="tcat" data-i18n="advantageCancelsAilment:-c">Advantage Cancels Ailment: </span>{{Ailment}}</div>
{{#rollGreater() Roll DL }}
<div class="rowcolor"><span class="tcat" data-i18n="result:-c">Result: </span><span data-i18n="failure-c">Failure</span></div>
{{/rollGreater() Roll DL }}
{{#^rollGreater() Roll DL }}
<div class="rowcolor"><span class="tcat" data-i18n="result:-c">Result: </span><span data-i18n="success!-c">Success!</span></div>
{{/^rollGreater() Roll DL }}
{{/rollGreater() AilmentRoll 0}}
{{#^rollGreater() AilmentRoll 0}}
{{#rollGreater() Roll DL }}
{{#rollGreater() Roll2 DL }}
<div class="rowcolor"><span class="tcat" data-i18n="advantage:-c">Advantage: </span><span data-i18n="failure-c">Failure</span></div>
{{/rollGreater() Roll2 DL }}
{{#^rollGreater() Roll2 DL }}
<div class="rowcolor"><span class="tcat" data-i18n="advantage:-c">Advantage: </span><span data-i18n="success!-c">Success!</span></div>
{{/^rollGreater() Roll2 DL }}
{{/rollGreater() Roll DL }}
{{#^rollGreater() Roll DL }}
<div class="rowcolor"><span class="tcat" data-i18n="normal:-c">Normal: </span><span data-i18n="success!-c">Success!</span></div>
{{/^rollGreater() Roll DL }}
{{/^rollGreater() AilmentRoll 0}}
{{/rollGreater() Roll2 0}}
{{#rollLess() Roll2 0}} <!-- Disdvantage -->
{{#rollGreater() AilmentRoll 0}}
<div class="rowcolor"><span class="tcat" data-i18n="noDoubleDisadvantageFor-c">No Double Disadvantage for </span>{{Ailment}}</div>
{{/rollGreater() AilmentRoll 0}}
{{#rollGreater() Roll DL }}
<div class="rowcolor"><span class="tcat" data-i18n="normal:-c">Normal: </span><span data-i18n="failure-c">Failure</span></div>
{{/rollGreater() Roll DL }}
{{#^rollGreater() Roll DL }}
{{#rollGreater() Roll3 DL }}
<div class="rowcolor"><span class="tcat" data-i18n="disadvantage:-c">Disadvantage: </span><span data-i18n="failure-c">Failure</span></div>
{{/rollGreater() Roll3 DL }}
{{#^rollGreater() Roll3 DL }}
<div class="rowcolor"><span class="tcat" data-i18n="disadvantage:-c">Disadvantage: </span><span data-i18n="success!-c">Success!</span></div>
{{/^rollGreater() Roll3 DL }}
{{/^rollGreater() Roll DL }}
{{/rollLess() Roll2 0}}
{{#rollTotal() Roll2 0}} <!-- Neither Advantage nor Disadvantage -->
{{#rollGreater() Roll DL }}
<div class="rowcolor"><span class="tcat" data-i18n="result:-c">Result: </span><span data-i18n="failure-c">Failure</span></div>
{{/rollGreater() Roll DL }}
{{#^rollGreater() Roll DL }}
<div class="rowcolor"><span class="tcat" data-i18n="result:-c">Result: </span><span data-i18n="success!-c">Success!</span></div>
{{/^rollGreater() Roll DL }}
{{/rollTotal() Roll2 0}}
{{/DL}}
{{#Damage}}
<div class="rowcolor"><span class="tcat" data-i18n-title="possibleDamage-c" data-i18n="damage:-c">Damage: </span>{{Damage}}</div>
{{/Damage}}
{{#GiftDice}}
<div class="rowcolor"><span class="tcat" data-i18n="total:-c">Total: </span>{{Roll}}</div>
<div class="rowcolor"><span class="tcat" data-i18n="giftDice:-c">Gift Dice: </span>{{computed::GiftDice}}</div>
{{#rollGreater() computed::Mishap 0}}
<div class="rowcolor"><span class="tcat" data-i18n="mishap!:-c">Mishap!: </span>{{computed::Mishap}}</div>
{{/rollGreater() computed::Mishap 0}}
{{/GiftDice}}
</rolltemplate>
<rolltemplate class="sheet-rolltemplate-meleeRoll">
<div class="container">
<div><h1>{{name}}</h1></div>
<div class="arrow-container"><div class="arrow-right"></div></div>
{{#Check}}
<div class="rowcolor"><span class="tcat" data-i18n="check:-c">Check: </span>{{Roll}}</div>
{{/Check}}
{{#Virtue}}
<div class="rowcolor"><span class="tcat" data-i18n="virtue:-c">Virtue: </span>{{Virtue}}</div>
{{/Virtue}}
{{#rollGreater() AilmentRoll 0}}
<div class="rowcolor"><span class="tcat" data-i18n="ailment:-c">Ailment: </span>{{Ailment}}</div>
<div class="rowcolor"><span class="tcat" data-i18n="ailmentRoll:-c">AilmentRoll: </span>{{AilmentRoll}}</div>
{{#DL}}
<div class="rowcolor"><span class="tcat" data-i18n="target:-c">Target: </span>{{DL}}</div>
{{#rollGreater() Roll DL }}
<div class="rowcolor"><span class="tcat" data-i18n="result:-c">Result: </span><span data-i18n="failure-c">Failure</span></div>
{{/rollGreater() Roll DL }}
{{#^rollGreater() Roll DL }}
{{#rollGreater() AilmentRoll DL }}
<div class="rowcolor"><span class="tcat" data-i18n="ailmentCaused:-c">AilmentCaused: </span><span data-i18n="failure-c">Failure</span></div>
{{/rollGreater() AilmentRoll DL }}
{{#^rollGreater() AilmentRoll DL }}
<div class="rowcolor"><span class="tcat" data-i18n="result:-c">Result: </span><span data-i18n="success!-c">Success!</span></div>
{{/^rollGreater() AilmentRoll DL }}
{{/^rollGreater() Roll DL }}
{{/DL}}
{{/rollGreater() AilmentRoll 0}}
{{#^rollGreater() AilmentRoll 0}}
{{#DL}}
<div class="rowcolor"><span class="tcat" data-i18n="target:-c">Target: </span>{{DL}}</div>
{{#rollGreater() Roll DL }}
<div class="rowcolor"><span class="tcat" data-i18n="result:-c">Result: </span><span data-i18n="failure-c">Failure</span></div>
{{/rollGreater() Roll DL }}
{{#^rollGreater() Roll DL }}
<div class="rowcolor"><span class="tcat" data-i18n="result:-c">Result: </span><span data-i18n="success!-c">Success!</span></div>
{{/^rollGreater() Roll DL }}
{{/DL}}
{{/^rollGreater() AilmentRoll 0}}
{{#Destiny}}
<div class="rowcolor"><span class="tcat">Destiny: </span>{{Destiny}}</div>
{{/Destiny}}
{{#Luck}}
<div class="rowcolor"><span class="tcat">Luck: </span>{{Luck}}</div>
{{/Luck}}
{{#Damage}}
{{#rollTotal() Roll 1 }}
<div class="rowcolor"><span class="tcat" data-i18n="criticalDamage:-u">CRITICAL DAMAGE: </span>{{CriticalDamage}}</div>
{{/rollTotal() Roll 1 }}
{{#^rollTotal() Roll 1 }}
<div class="rowcolor"><span class="tcat" data-i18n="damage:-c">Damage: </span>{{Damage}}</div>
{{/^rollTotal() Roll 1 }}
{{/Damage}}
</div>
</rolltemplate>
<!-- SHEET WORKERS -->
<script type="text/worker">
on('clicked:initiative', (info) => {
startRoll("&{template:initiative} {{name=Initiative}} {{roll1=[[1d20]]}}", (results) => {
const total = results.results.roll1.result;
const computed = total;
console.log(" *** Action Inititative: " + computed + " ");
setAttrs({ initiative: computed });
finishRoll(
results.rollId,
{
roll1: computed
}
);
});
});
// Change Encumbrance
on("change:item1 change:item2 change:item3 change:item4 change:item5 change:item6 change:item7 change:item8", function(eventInfo) {
getAttrs(["resolve","enc1_8","enc9_16","enc17_22b", "encW1_4b", "encumbrance", "item1","item2","item3","item4","item5","item6","item7","item8"], function(values) {
let Resolve = parseInt(values.resolve)||0;
let OverEncumbered = 0;
let EncA = parseInt(values.enc1_8)||0;
let EncB = parseInt(values.enc9_16)||0;
let EncC = parseInt(values.enc17_22b)||0;
let EncW = parseInt(values.encW1_4b)||0;
let Enc1 = parseInt(values.item1)||0;
let Enc2 = parseInt(values.item2)||0;
let Enc3 = parseInt(values.item3)||0;
let Enc4 = parseInt(values.item4)||0;
let Enc5 = parseInt(values.item5)||0;
let Enc6 = parseInt(values.item6)||0;
let Enc7 = parseInt(values.item7)||0;
let Enc8 = parseInt(values.item8)||0;
let EncSubTotal = Enc1 + Enc2 + Enc3 + Enc4 + Enc5 + Enc6 + Enc7 + Enc8;
let Encumbrance = EncSubTotal + EncB + EncC + EncW;
console.log(" Encumbrances: " + Enc1 + " " + Enc2 + " " + Enc3 + " " + Enc4 + " " + Enc5 + " " + Enc6 + " "+ Enc7 + " " + Enc8);
console.log(" EncSubTotal 1-8: " + EncSubTotal);
console.log(" Encumbrance : " + Encumbrance + " Resolve " + Resolve);
if (Encumbrance > Resolve) {
console.log(" OVERENCUMBERED! Encumbrance: " + Encumbrance + " Resolve " + Resolve);
OverEncumbered = 1;
}
setAttrs({
enc1_8: EncSubTotal, encumbrance: Encumbrance, weary: OverEncumbered
});
});
});
on("change:item9 change:item10 change:item11 change:item12 change:item13 change:item14 change:item15 change:item16", function(eventInfo) {
getAttrs(["resolve","enc1_8","enc9_16","enc17_22b", "encW1_4b", "encumbrance", "item9","item10","item11","item12","item13","item14","item15","item16"], function(values) {
let Resolve = parseInt(values.resolve)||0;
let OverEncumbered = 0;
let EncA = parseInt(values.enc1_8)||0;
let EncB = parseInt(values.enc9_16)||0;
let EncC = parseInt(values.enc17_22b)||0;
let EncW = parseInt(values.encW1_4b)||0;
let Enc9 = parseInt(values.item9)||0;
let Enc10 = parseInt(values.item10)||0;
let Enc11 = parseInt(values.item11)||0;
let Enc12 = parseInt(values.item12)||0;
let Enc13 = parseInt(values.item13)||0;
let Enc14 = parseInt(values.item14)||0;
let Enc15 = parseInt(values.item15)||0;
let Enc16 = parseInt(values.item16)||0;
let EncSubTotal = Enc9 + Enc10 + Enc11 + Enc12 + Enc13 + Enc14 + Enc15 + Enc16;
let Encumbrance = EncSubTotal + EncA + EncC + EncW;
console.log(" Encumbrances: " + Enc9 + " " + Enc10 + " " + Enc11 + " " + Enc12 + " " + Enc13 + " " + Enc14 + " "+ Enc15 + " " + Enc16);
console.log(" EncSubTotal 9-16: " + EncSubTotal);
console.log(" Encumbrance : " + Encumbrance + " Resolve " + Resolve);
if (Encumbrance > Resolve) {
console.log(" OVERENCUMBERED! Encumbrance: " + Encumbrance + " Resolve " + Resolve);
OverEncumbered = 1;
}
setAttrs({
enc9_16: EncSubTotal, encumbrance: Encumbrance, weary: OverEncumbered
});
});
});
on("change:item17 change:item18 change:item19 change:item19b change:item20 change:item20b change:item21 change:item21b change:item22 change:item22b", function(eventInfo) {
getAttrs(["resolve","enc1_8","enc9_16","enc17_22b", "encW1_4b", "encumbrance", "item17","item18","item19","item19b","item20","item20b","item21","item21b","item22","item22b"], function(values) {
let Resolve = parseInt(values.resolve)||0;
let OverEncumbered = 0;
let EncA = parseInt(values.enc1_8)||0;
let EncB = parseInt(values.enc9_16)||0;
let EncC = parseInt(values.enc17_22b)||0;
let EncW = parseInt(values.encW1_4b)||0;
let Enc17 = parseInt(values.item17)||0;
let Enc18 = parseInt(values.item18)||0;
let Enc19 = parseInt(values.item19)||0;
let Enc19b = parseInt(values.item19b)||0;
let Enc20 = parseInt(values.item20)||0;
let Enc20b = parseInt(values.item20b)||0;
let Enc21 = parseInt(values.item21)||0;
let Enc21b = parseInt(values.item21b)||0;
let Enc22 = parseInt(values.item22)||0;
let Enc22b = parseInt(values.item22b)||0;
let EncSubTotal = Enc17 + Enc18 + Enc19 + Enc19b + Enc20 + Enc20b + Enc21 + Enc21b + Enc22 + Enc22b;
let Encumbrance = EncSubTotal + EncA + EncB + EncW;
console.log(" Encumbrances: " + Enc17 + " " + Enc18 + " " + Enc19 + " " + Enc19b + " " + Enc20 + " " + Enc20b + " "+ Enc21 + " " + Enc21b + " "+ Enc22 + " " + Enc22b);
console.log(" EncA: " + EncA + " EncB " + EncB + " EncC " + EncC + " EncW " + EncW);
console.log(" EncSubTotal 17-22b: " + EncSubTotal);
console.log(" Encumbrance : " + Encumbrance + " Resolve " + Resolve);
if (Encumbrance > Resolve) {
console.log(" OVERENCUMBERED! Encumbrance: " + Encumbrance + " Resolve " + Resolve);
OverEncumbered = 1;
}
setAttrs({
enc17_22b: EncSubTotal, encumbrance: Encumbrance, weary: OverEncumbered
});
});
});
on("change:weaponChk1 change:weaponChk2 change:weaponChk3 change:weaponChk3b change:weaponChk4 change:weaponChk4b", function(eventInfo) {
getAttrs(["resolve","enc1_8","enc9_16","enc17_22b", "encW1_4b", "encumbrance", "weaponChk1","weaponChk2","weaponChk3","weaponChk3b","weaponChk4","weaponChk4b"], function(values) {
let Resolve = parseInt(values.resolve)||0;
let OverEncumbered = 0;
let EncA = parseInt(values.enc1_8)||0;
let EncB = parseInt(values.enc9_16)||0;
let EncC = parseInt(values.enc17_22b)||0;
let EncW = parseInt(values.encW1_4b)||0;
let EncW1 = parseInt(values.weaponChk1)||0;
let EncW2 = parseInt(values.weaponChk2)||0;
let EncW3 = parseInt(values.weaponChk3)||0;
let EncW3b = parseInt(values.weaponChk3b)||0;
let EncW4 = parseInt(values.weaponChk4)||0;
let EncW4b = parseInt(values.weaponChk4b)||0;
let EncSubTotal = EncW1 + EncW2 + EncW3 + EncW3b + EncW4 + EncW4b;
let Encumbrance = EncSubTotal + EncA + EncB + EncC;
console.log(" Encumbrances: " + EncW1 + " " + EncW2 + " " + EncW3 + " " + EncW3b + " " + EncW4 + " " + EncW4b);
console.log(" EncSubTotal W1_4b: " + EncSubTotal);
console.log(" Encumbrance : " + Encumbrance + " Resolve " + Resolve);
if (Encumbrance > Resolve) {
console.log(" OVERENCUMBERED! Encumbrance: " + Encumbrance + " Resolve " + Resolve);
OverEncumbered = 1;
}
setAttrs({
encW1_4b: EncSubTotal, encumbrance: Encumbrance, weary: OverEncumbered
});
});
});
on('clicked:giftDice', async (eventInfo) => {
console.log(" Clicked giftDice");
console.log(" triggerName " + eventInfo.triggerName);
getAttrs(["level1"], function(v){
let Level = parseInt(v.level1)||0;
console.log(" Level: " + Level);
const rollString = "&{template:check} {{name=@{character_name}}} {{Virtue=Gift Dice}} {{GiftDice=[[1]]}} {{Mishap=[[0]]}} {{Roll=[[?{Number of Gift Dice|1}d6]]}}";
console.log("rollString: " + rollString);
startRoll(rollString, (results) => {
console.log(" Roll Num Dice " + results.results.Roll.rolls.dice );
console.log(" Roll Dice " + results.results.Roll.dice );
console.log(" Roll rolls " + JSON.stringify(results.results.Roll.rolls) );
let numDie = results.results.Roll.expression.charAt(0);
let numDie2 = results.results.Roll.expression.charAt(1);
if (numDie2 != 'd') { numDie = numDie + numDie2; }
console.log(" numDie " + numDie );
let Mishaps = 0;
let GiftDie1 = "";
let GiftDie2 = "";
let GiftDie3 = "";
let GiftDie4 = "";
const zNums = new Array(7).fill(0); // Nd6, so first entry will always be zero
for (let idx = 0; idx < numDie; idx++) {
zNums[results.results.Roll.dice[idx]] += 1;
if (idx == 0) { GiftDie1 = results.results.Roll.dice[idx];
} else if (idx == 1) { GiftDie2 = results.results.Roll.dice[idx];
} else if (idx == 2) { GiftDie3 = results.results.Roll.dice[idx];
} else if (idx == 3) { GiftDie4 = results.results.Roll.dice[idx]; }
}
//console.log(" zNums: " + zNums);
MishapsStr = "" ;
for (let idx = 1; idx < 7; idx++) {
if (zNums[idx] > 1) { Mishaps += 1; MishapsStr += idx + 's '; console.log(" Mishaps: " + Mishaps + " at " + idx + " Str " + MishapsStr); }
}
//console.log(" zNums: " + zNums);
/*
console.log(" Roll Result " + results.results.Roll.result );
console.log(" Roll Expression " + results.results.Roll.expression );
console.log(" numDie" + numDie);
console.log(" Stringify results.results: ");
console.log(JSON.stringify(results.results));
console.log("\n Stringify results.results.Roll: ");
console.log(JSON.stringify(results.results.Roll));
console.log(" Mishaps " + Mishaps );
*/
setAttrs({
giftDie1: GiftDie1, giftDie2: GiftDie2, giftDie3: GiftDie3, giftDie4: GiftDie4
});
finishRoll(
results.rollId,
{
Mishap: MishapsStr, GiftDice: numDie
}
);
});
});
});
</script>
Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

+9
View File
@@ -0,0 +1,9 @@
{
"html": "Perils.html",
"css": "Perils.css",
"authors": "Vialmada",
"preview": "Perils.png",
"roll20userid": "6040293",
"instructions": "# Perils and Princesses\n**Perils and Princesses** is an **unofficial** character sheet for Outrider Creative's TTRPG. If you have any questions or comments, please contact Vialmada.\n\n## Features\n* The Avatar Image is used for Character picture: 200px for both height and width\n* Virtue rolls have Advantage/Disadvantage/Normal options\n* Encumbrance is limited to Resolve and is tracked by checkbox ticks. An Encumbrance total appears beside the Weary Ailment and will trigger that condition when Resolve is exceeded\n* Gift Dice rolls prompt for the number of dice and declare Mishap on doubles\n* Critical Damage, doubled dice, occur when a '1' is rolled to hit",
"legacy": false
}
+69
View File
@@ -0,0 +1,69 @@
{
"pageOne-c":"Page One",
"pageTwo-c":"Page Two",
"name-u":"NAME",
"pronouns-u":"PRONOUNS",
"fairyGodmother-u":"FAIRY GODMOTHER",
"myStuff-u":"MY STUFF",
"virtues-c":"Virtues",
"resolve-u":"RESOLVE",
"grace-u":"GRACE",
"wits-u":"WITS",
"armor-u":"ARMOUR",
"heartPoints-u":"HEART POINTS",
"max-u":"MAX",
"current-u":"CURRENT",
"heartDice-c":"Heart Dice",
"myStuff-u":"MY STUFF",
"weapon-u":"WEAPON",
"dmgDice-u":"DMG DICE",
"melee (resolve)-c":"Melee (Resolve)",
"range (grace)-c":"Range (Grace)",
"money-c":"Money",
"talents-u":"TALENTS",
"giftDice-c":"Gift Dice:",
"myGift-u":"MY GIFT:",
"myLevel-u":"MY LEVEL:",
"innateAbilities-u":"INNATE ABILITIES",
"specialAbilities-u":"SPECIAL ABILITIES",
"specialAbilities1-c":"Special Abilities: Level 1",
"specialAbilities2-c":"Special Abilities: Level 2",
"specialAbilities3-c":"Special Abilities: Level 3",
"specialAbilities4-c":"Special Abilities: Level 4",
"level-c":"Level ",
"cursesInjuries-c":"Curses & Injures",
"ailment-c":"Ailment",
"weary-u":"WEARY",
"wearyResolve":"WEARY (Resolve)",
"woozy-u":"WOOZY",
"woozyGrace":"WOOZY (Grace)",
"befuddled-u":"BEFUDDLED",
"befuddledWits":"BEFUDDLED (Wits)",
"trauma-c":"Trauma:",
"encumbrance-c":"Encumbrance",
"advantageCancelsAilment:-c":"Advantage Cancels Ailment:",
"noDoubleDisadvantageFor-c":"No Double Disadvantage for ",
"check:-c":"Check: ",
"for-c":" for ",
"target:-c":"Target: ",
"total:-c":"Total: ",
"normal:-c":"Normal: ",
"advantage:-c":"Advantage: ",
"disadvantage:-c":"Disadvantage: ",
"virtue:-c":"Virtue: ",
"ailment:-c":"Ailment: ",
"ailmentRoll:-c":"Ailment Roll: ",
"ailmentCaused:-c":"Ailment Caused: ",
"result:-c":"Result: ",
"success!-c":"Success!",
"failure-c":"Failure",
"fumble!-c":"Fumble",
"damage:-c":"Damage: ",
"criticalDamage:-u":"CRITICAL DAMAGE: ",
"possibleDamage-c":"Possible Damage",
"giftDice:-c":"Gift Dice:",
"clickToRollGiftDice-c":"Click To Roll Gift Dice",
"mishap!:-c":"Mishap!: ",
"":""
}