[Snice] Added Snice Character Sheet & images

This commit is contained in:
Alice Peters
2022-06-20 19:52:13 +02:00
committed by GitHub
parent deb3a3c546
commit e8ea75aba8
7 changed files with 809 additions and 0 deletions
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

+9
View File
@@ -0,0 +1,9 @@
{
"html": "snice.html",
"css": "snice.css",
"authors": "Parou",
"roll20userid": "10141995",
"preview": "preview.png",
"instructions": "Official [Snice](https://snice.parou.moe/) character sheet by [Alice (Parou) Peters](https://parou.moe/)",
"legacy": false
}
+424
View File
@@ -0,0 +1,424 @@
.sheet-rolltemplate-snice .inlinerollresult {
display: inline-block;
box-sizing: border-box;
font-size: 26px;
padding-top: 18px;
width: 60px;
height: 60px;
background-color: #fff !important;
background-image: url('https://parou.moe/uploads/Snice/SniceDice.png');
background-size: contain;
background-repeat: no-repeat;
background-position: center;
border: 2px solid #000;
border-radius: 6px;
text-align: center;
}
.sheet-rolltemplate-snice .inlinerollresult {
border-color: #000 !important;
}
.sheet-rolltemplate-snice .inlinerollresult.fullcrit, .sheet-rolltemplate-snice .inlinerollresult.importantroll {
border-color: #149d38 !important;
}
.sheet-rolltemplate-snice .inlinerollresult.fullfail {
border-color: #b31515 !important;
}
.sheet-rolltemplate-snice .sheet-template-header {
display: inline-block;
vertical-align: top;
color: #cdcdcd;
font-weight: bold;
word-break: break-word;
width: 70%;
}
.sheet-rolltemplate-snice .sheet-rt-cost {
position: absolute;
background-color: #fff;
border: 2px solid #000;
height: 20px;
display: block;
border-radius: 50%;
top: -5px;
font-size: 19px;
text-align: center;
font-weight: bold;
width: auto;
padding: 5px;
right: -8px;
min-width: 20px;
}
.sheet-rolltemplate-snice .sheet-rt-description {
font-weight: normal;
}
.sheet-rolltemplate-snice .sheet-rt-result {
background-color: #141414e0;
border-radius: 6px;
padding: 10px;
position: relative;
}
.sheet-rolltemplate-snice .sheet-rt-advantage {
position: absolute;
left: -5px;
top: -3px;
}
.sheet-rolltemplate-snice .sheet-rt-advantage .inlinerollresult {
width: 30px;
height: 30px;
font-size: 14px;
padding: 0;
padding-top: 4px;
background-image: none;
}
.left-container, .right-container, .inventory-container {
display: inline-block;
vertical-align: top;
background-color: #fff;
}
.left-container {
min-width: 830px;
}
.right-container {
max-width: 560px;
min-width: 400px;
}
.itemcontrol {
z-index: 10;
}
.inventory-container {
width: 400px;
}
.repitem .modifier {
margin-bottom: 60px;
margin-right: 3px;
}
.repitem:last-child .modifier {
margin-bottom: 10px;
}
.repitem:last-child {
margin-bottom: 20px;
}
.repitem .skillname, .repitem .skill-description, .repitem .d1, .repitem .d2, .repitem .modifier, .repitem .itemname, .repitem .itemcount, .repitem .item-description {
border: 2px solid #000;
color: #000;
}
.repitem .item-description {
margin-top: 10px;
height: 100px;
}
.itemcount {
width: 120px !important;
}
.endurance-cost {
position: absolute;
margin-left: 235px;
margin-top: 166px;
}
.point-cost {
position: absolute;
margin-left: 235px;
margin-top: -14px;
}
.skillname {
width: 213px;
}
.skill-description {
width: 500px !important;
}
.repitem button {
color: #000;
font-weight: bold;
}
.dice-select {
position: absolute;
margin-top: -45px;
margin-left: 345px;
}
.d1, .d2, .action-roll-manual .action-roll, .action-roll-manual .modifier {
height: 60px;
width: 60px;
border-radius: 6px;
}
.action-roll-manual .d1, .action-roll-manual .d2, .action-roll-manual .modifier {
border: 2px solid #000;
}
.action-roll-manual .action-roll {
box-sizing: border-box;
vertical-align: top;
color: #000;
font-weight: bold;
}
.action-roll-manual .modifier {
width: auto;
margin-right: 3px;
}
.repcontrol {
margin-bottom: 30px;
}
.skill-description {
margin-top: 10px;
}
.label {
font-size: 12px !important;
font-weight: normal !important;
display: inline !important;
margin-left: -10px !important;
box-sizing: border-box !important;
color: #000 !important;
}
.social-status {
position: absolute;
top: 825px;
left: 70px;
}
.checkroll {
position: absolute;
margin-left: -31px !important;
margin-top: 17px !important;
color: #000000;
font-weight: bold;
}
.action-roll {
font-size: 22px !important;
color: #000;
}
.head {
display: block;
width: auto;
margin: 0;
padding: 0;
position: relative;
box-sizing: border-box;
}
.data {
display: inline-block;
width: 320px;
height: 120px;
margin-left: 40px;
vertical-align: top;
margin-top: 50px;
box-sizing: border-box;
font-size: 19px;
}
.data-input {
background-color: #fff;
border: 2px solid #000;
border-radius: 3px;
height: 35px;
display: block;
margin-bottom: 5px;
text-align: right;
box-sizing: border-box;
}
.data .data-input-field {
height: 30px;
margin-left: 10px;
border: 0;
box-sizing: border-box;
}
.character-name {
background-color: #fff;
width: 393px;
height: 120px;
border: 2px solid #000;
border-left: 0;
border-radius: 3px;
margin-left: 65px;
margin-top: 47px;
margin-bottom: 40px;
display: inline-block;
position: relative;
box-sizing: border-box;
}
.snice-logo {
height: 200px;
width: 200px;
position: absolute;
left: 0;
top: 0;
margin-left: -75px;
margin-top: -45px;
box-sizing: border-box;
}
.level-exp {
position: absolute;
right: -30px;
top: 85px;
box-sizing: border-box;
}
.ring-input {
display: inline-block;
box-sizing: border-box;
}
.ring-input .small-text {
display: block;
text-align: center;
box-sizing: border-box;
}
.gender {
margin-left: 100px;
box-sizing: border-box;
z-index: 5;
position: absolute;
}
.h2 {
font-weight: normal;
font-size: 30px;
margin-bottom: 10px;
margin-top: 20px;
box-sizing: border-box;
}
.attribute {
margin-top: 5px;
margin-bottom: 5px;
box-sizing: border-box;
}
.attribute-default-name {
display: inline-block;
width: 150px;
text-align: right;
box-sizing: border-box;
font-size: 19px;
}
.small-text {
font-size: 16px;
box-sizing: border-box;
}
.smallest-text {
font-size: 12px;
box-sizing: border-box;
display: block;
text-align: right;
margin-top: 3px;
}
.point-circle {
background-color: #fff;
border: 2px solid #000;
border-radius: 50%;
height: 60px;
width: 60px;
text-align: center;
display: inline-block;
vertical-align: middle;
box-sizing: border-box;
}
.thick {
border-width: 3px;
box-sizing: border-box;
}
.point {
width: 55px !important;
height: 56px !important;
text-align: center;
font-size: 28px;
border-radius: 50%;
border: none;
background-color: transparent !important;
outline: 0;
margin-left: 8px;
box-sizing: border-box;
}
.input {
font-size: 21px;
width: 300px;
height: 30px;
border: 2px solid #000;
background-color: #fff;
outline: 0;
border-radius: 3px;
box-sizing: border-box;
}
.line-value {
display: inline-block;
margin-right: 10px;
margin-top: 15px;
margin-bottom: 15px;
}
.line-input {
border: none;
background-color: transparent !important;
border-bottom: 3px solid #000 !important;
font-size: 19px !important;
text-align: center;
}
.line-value.text {
display: block;
}
.line-value.text .small-text {
width: 150px;
display: inline-block;
text-align: right;
padding-right: 10px;
}
.giant {
background: transparent;
border: none;
height: 120px !important;
width: 280px;
margin-left: 70px;
text-align: center;
font-size: 34px;
box-sizing: border-box !important;
position: relative;
z-index: 5;
}
+376
View File
@@ -0,0 +1,376 @@
<rolltemplate class="sheet-rolltemplate-snice">
<div class="sheet-template-container">
<div class="sheet-template-row rt-result">
{{#result}}{{result}}{{/result}}
{{#result2}}<div class="sheet-template-row rt-advantage">{{result2}}</div>{{/result2}}
{{#cost}}<div class="sheet-template-row rt-cost" title="Skill / Ability Cost (Endurance)">{{cost}}</div>{{/cost}}
<div class="sheet-template-header">{{name}}
{{#description}}<div class="sheet-template-row rt-description">{{description}}</div>{{/description}}
</div>
</div>
</div>
</rolltemplate>
<div class="left-container">
<div class="head">
<input type="hidden" name="attr_used_skill_points_total" value="0" />
<input type="hidden" name="attr_Skill_Points_Bonus" value="0" />
<input type="hidden" name="attr_Attribute_Points_Bonus" value="0" />
<input type="hidden" name="attr_Life_Points_Bonus" value="0" />
<div class="character-name">
<img src="https://parou.moe/uploads/Snice/Snice.png" class="snice-logo" />
<input type="text" class="input giant" name="attr_character_name" />
<div class="level-exp">
<div class="ring-input">
<div class="point-circle"><input type="number" class="point" name="attr_Exp" value="0" /></div>
<span class="small-text">Exp</span>
</div>
<div class="ring-input">
<div class="point-circle"><input type="number" class="point" name="attr_Level" value="1" /></div>
<span class="small-text">Level</span>
</div>
</div>
<div class="gender">
<label class="label"><input type="radio" value="Female" name="attr_Gender" checked /> Female</label>
<label class="label"><input type="radio" value="Non-Binary" name="attr_Gender" /> Non-Binary</label>
<label class="label"><input type="radio" value="Male" name="attr_Gender" /> Male</label>
</div>
</div>
<div class="data">
<div class="data-input"><span class="data-name">Player:</span><input type="text" class="data-input-field" name="attr_Player_Name" value="" /></div>
<div class="data-input"><span class="data-name">Species:</span><input type="text" class="data-input-field" name="attr_Species" value="" /></div>
<div class="data-input"><span class="data-name">Class:</span><input type="text" class="data-input-field" name="attr_Class" value="" /></div>
</div>
</div>
<div class="line-value">
<span class="small-text">Skill Points:</span><input type="number" class="line-input" name="attr_Total_Skill_Points" value="(2*@{Level}+@{Skill_Points_Bonus}-@{used_skill_points_total})" disabled />
<span class="smallest-text">(+2 every level)</span>
</div>
<div class="line-value">
<span class="small-text">Attribute Points:</span><input type="number" class="line-input" name="attr_Total_Points" value="((@{Level})+9+24+@{Attribute_Points_Bonus}-@{Attack}-@{Constitution}-@{Dexterity}-@{Magic}-@{Perception}-@{Intelligence}-@{Custom_1}-@{Custom_2}-@{Custom_3})" disabled />
<span class="smallest-text">(+1 every level)</span>
</div>
<div class="line-value">
<span class="small-text">Life Points:</span><input type="number" class="line-input" name="attr_Life_Points" value="16" /> / <input type="number" class="line-input" name="attr_Life_Points_max" value="((@{Constitution}+@{Dexterity}+@{Constitution_Bonus}+@{Dexterity_Bonus})*2+@{Life_Points_Bonus})" disabled />
<span class="smallest-text">(Constitution + Dexterity + Bonus) x 2</span>
</div>
<script type="text/worker">
on("change:Magic change:Constitution change:Dexterity", function() {
getAttrs(["Magic", "Constitution", "Dexterity"], function(values) {
let Magic = parseInt(values.Magic)||0;
let Constitution = parseInt(values.Constitution)||0;
let Dexterity = parseInt(values.Dexterity)||0;
let LP = ((Constitution + Dexterity)*2);
let baseEndurance = Math.floor(LP/2);
let newEndurance;
if(Magic > 4) { newEndurance = ((Magic - 4) + baseEndurance); }
else { newEndurance = baseEndurance; }
setAttrs({
Endurance_max: newEndurance
});
});
});
</script>
<div class="line-value">
<span class="small-text">Endurance:</span><input type="number" class="line-input" name="attr_Endurance" value="8" /> / <input type="number" class="line-input" name="attr_Endurance_max" readonly />
<span class="smallest-text">(Constitution + Dexterity + Magic above 4)</span>
</div>
<h2 class="h2">Attributes:
<button type="roll" class="action-roll" value="@{Type}&{template:default} {{name=(Dexterity) @{Dexterity_Name}}} {{initiative=[[?{Modifier|Default, 1d20!!|Advantage, 2d20!!kh1|Disadvantage, 2d20!!kl1} + [[@{Dexterity_Modifier}]] &{tracker} ]] }} {{modifier=[[@{Dexterity_Modifier}]] }}" name="roll_InitiativeRoll">Initiative</button>
</h2>
<div class="attribute">
<span class="attribute-default-name">(Attack)</span>
<input type="text" class="input attribute-name" name="attr_Attack_Name" placeholder="Attack" value="" />
<button type="roll" class="checkroll" value="&{template:snice} {{name=Attack}} {{description=@{Attack_Name}}} {{result=[[1d20cs>20!! + [[@{Attack_Modifier}]] ]]}} {{result2=[[1d20cs>20!! + [[@{Attack_Modifier}]] ]]}} {{modifier=[[@{Attack_Modifier}]] }}" name="roll_AttackCheck"></button>
<span class="small-text">Points:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Attack" value="4" max="15" /></div>
<span class="small-text">Bonus:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Attack_Bonus" value="0" /></div>
<span class="small-text">Modifier:</span>
<div class="point-circle thick"><input type="number" class="point" name="attr_Attack_Modifier" value="(@{Attack}+@{Attack_Bonus}-5)" disabled /></div>
</div>
<div class="attribute">
<span class="attribute-default-name">(Constitution)</span>
<input type="text" class="input attribute-name" name="attr_Constitution_Name" placeholder="Constitution" value="" />
<button type="roll" class="checkroll" value="@{Type}&{template:snice} {{name=Constitution}} {{description=@{Constitution_Name}}} {{result=[[1d20cs>20!! + [[@{Constitution_Modifier}]] ]]}} {{result2=[[1d20cs>20!! + [[@{Constitution_Modifier}]] ]]}} {{modifier=[[@{Constitution_Modifier}]] }}" name="roll_ConstitutionCheck"></button>
<span class="small-text">Points:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Constitution" value="4" max="15" /></div>
<span class="small-text">Bonus:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Constitution_Bonus" value="0" /></div>
<span class="small-text">Modifier:</span>
<div class="point-circle thick"><input type="number" class="point" name="attr_Constitution_Modifier" value="(@{Constitution}+@{Constitution_Bonus}-5)" disabled /></div>
</div>
<div class="attribute">
<span class="attribute-default-name">(Dexterity)</span>
<input type="text" class="input attribute-name" name="attr_Dexterity_Name" placeholder="Dexterity" value="" />
<button type="roll" class="checkroll" value="@{Type}&{template:snice} {{name=Dexterity}} {{description=@{Dexterity_Name}}} {{result=[[1d20cs>20!! + [[@{Dexterity_Modifier}]] ]]}} {{result2=[[1d20cs>20!! + [[@{Dexterity_Modifier}]] ]]}} {{modifier=[[@{Dexterity_Modifier}]] }}" name="roll_DexterityCheck"></button>
<span class="small-text">Points:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Dexterity" value="4" max="15" /></div>
<span class="small-text">Bonus:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Dexterity_Bonus" value="0" /></div>
<span class="small-text">Modifier:</span>
<div class="point-circle thick"><input type="number" class="point" name="attr_Dexterity_Modifier" value="(@{Dexterity}+@{Dexterity_Bonus}-5)" disabled /></div>
</div>
<div class="attribute">
<span class="attribute-default-name">(Magic)</span>
<input type="text" class="input attribute-name" name="attr_Magic_Name" placeholder="Magic" value="" />
<button type="roll" class="checkroll" value="@{Type}&{template:snice} {{name=Magic}} {{description=@{Magic_Name}}} {{result=[[1d20cs>20!! + [[@{Magic_Modifier}]] ]]}} {{result2=[[1d20cs>20!! + [[@{Magic_Modifier}]] ]]}} {{modifier=[[@{Magic_Modifier}]] }}" name="roll_MagicCheck"></button>
<span class="small-text">Points:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Magic" value="4" max="15" /></div>
<span class="small-text">Bonus:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Magic_Bonus" value="0" /></div>
<span class="small-text">Modifier:</span>
<div class="point-circle thick"><input type="number" class="point" name="attr_Magic_Modifier" value="(@{Magic}+@{Magic_Bonus}-5)" disabled /></div>
</div>
<div class="attribute">
<span class="attribute-default-name">(Perception)</span>
<input type="text" class="input attribute-name" name="attr_Perception_Name" placeholder="Perception" value="" />
<button type="roll" class="checkroll" value="@{Type}&{template:snice} {{name=Perception}} {{description=@{Perception_Name}}} {{result=[[1d20cs>20!! + [[@{Perception_Modifier}]] ]]}} {{result2=[[1d20cs>20!! + [[@{Perception_Modifier}]] ]]}} {{modifier=[[@{Perception_Modifier}]] }}" name="roll_PerceptionCheck"></button>
<span class="small-text">Points:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Perception" value="4" max="15" /></div>
<span class="small-text">Bonus:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Perception_Bonus" value="0" /></div>
<span class="small-text">Modifier:</span>
<div class="point-circle thick"><input type="number" class="point" name="attr_Perception_Modifier" value="(@{Perception}+@{Perception_Bonus}-5)" disabled /></div>
</div>
<div class="attribute">
<span class="attribute-default-name">(Intelligence)</span>
<input type="text" class="input attribute-name" name="attr_Intelligence_Name" placeholder="Intelligence" value="" />
<button type="roll" class="checkroll" value="@{Type}&{template:snice} {{name=Intelligence}} {{description=@{Intelligence_Name}}} {{result=[[1d20cs>20!! + [[@{Intelligence_Modifier}]] ]]}} {{result2=[[1d20cs>20!! + [[@{Intelligence_Modifier}]] ]]}} {{modifier=[[@{Intelligence_Modifier}]] }}" name="roll_IntelligenceCheck"></button>
<span class="small-text">Points:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Intelligence" value="4" max="15" /></div>
<span class="small-text">Bonus:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Intelligence_Bonus" value="0" /></div>
<span class="small-text">Modifier:</span>
<div class="point-circle thick"><input type="number" class="point" name="attr_Intelligence_Modifier" value="(@{Intelligence}+@{Intelligence_Bonus}-5)" disabled /></div>
</div>
<div class="attribute">
<span class="attribute-default-name"></span>
<input type="text" class="input attribute-name" name="attr_Custom_1_Name" value="" />
<button type="roll" class="checkroll" value="@{Type}&{template:snice} {{name=@{Custom_1_Name}}} {{result=[[1d20cs>20!! + [[@{Custom_1_Modifier}]] ]]}} {{result2=[[1d20cs>20!! + [[@{Custom_1_Modifier}]] ]]}} {{modifier=[[@{Custom_1_Modifier}]] }}" name="roll_Custom_1Check"></button>
<span class="small-text">Points:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Custom_1" value="0" max="15" /></div>
<span class="small-text">Bonus:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Custom_1_Bonus" value="0" /></div>
<span class="small-text">Modifier:</span>
<div class="point-circle thick"><input type="number" class="point" name="attr_Custom_1_Modifier" value="(@{Custom_1}+@{Custom_1_Bonus}-5)" disabled /></div>
</div>
<div class="attribute">
<span class="attribute-default-name"></span>
<input type="text" class="input attribute-name" name="attr_Custom_2_Name" value="" />
<button type="roll" class="checkroll" value="@{Type}&{template:snice} {{name=@{Custom_2_Name}}} {{result=[[1d20cs>20!! + [[@{Custom_2_Modifier}]] ]]}} {{result2=[[1d20cs>20!! + [[@{Custom_2_Modifier}]] ]]}} {{modifier=[[@{Custom_2_Modifier}]] }}" name="roll_Custom_2Check"></button>
<span class="small-text">Points:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Custom_2" value="0" max="15" /></div>
<span class="small-text">Bonus:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Custom_2_Bonus" value="0" /></div>
<span class="small-text">Modifier:</span>
<div class="point-circle thick"><input type="number" class="point" name="attr_Custom_2_Modifier" value="(@{Custom_2}+@{Custom_2_Bonus}-5)" disabled /></div>
</div>
<div class="attribute">
<span class="attribute-default-name"></span>
<input type="text" class="input attribute-name" name="attr_Custom_3_Name" value="" />
<button type="roll" class="checkroll" value="@{Type}&{template:snice} {{name=@{Custom_3_Name}}} {{result=[[1d20cs>20!! + [[@{Custom_3_Modifier}]] ]]}} {{result2=[[1d20cs>20!! + [[@{Custom_3_Modifier}]] ]]}} {{modifier=[[@{Custom_3_Modifier}]] }}" name="roll_Custom_3Check"></button>
<span class="small-text">Points:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Custom_3" value="0" max="15" /></div>
<span class="small-text">Bonus:</span>
<div class="point-circle"><input type="number" class="point" name="attr_Custom_3_Bonus" value="0" /></div>
<span class="small-text">Modifier:</span>
<div class="point-circle thick"><input type="number" class="point" name="attr_Custom_3_Modifier" value="(@{Custom_3}+@{Custom_3_Bonus}-5)" disabled /></div>
</div>
<div class="ring-input social-status">
<span class="small-text">Social<br />Status</span>
<div class="point-circle"><input type="number" class="point" name="attr_social_status" value="5" min="1" max="10" /></div>
</div>
<div class="line-value text">
<span class="small-text">Strengths:</span>
<input type="text" class="line-input" name="attr_Strength_1" value="" />
<input type="text" class="line-input" name="attr_Strength_2" value="" />
<input type="text" class="line-input" name="attr_Strength_3" value="" />
</div>
<div class="line-value text">
<span class="small-text">Weaknesses:</span>
<input type="text" class="line-input" name="attr_Weakness_1" value="" />
<input type="text" class="line-input" name="attr_Weakness_2" value="" />
<input type="text" class="line-input" name="attr_Weakness_3" value="" />
</div>
</div>
<div class="right-container">
<h2 class="h2">Action Roll / Damage Roll:</h2>
<div class="action-roll-manual">
<button type="roll" name="roll_action" class="action-roll" value="@{Type}&{template:snice} {{name=Action / Damage Roll}} {{result=[[@{die1}@{explode_action} @{die2}@{explode_action} + [[ @{modifier_action} ]] ]] }} {{result2=[[@{die1}@{explode_action} @{die2}@{explode_action} + [[ @{modifier_action} ]] ]] }}"></button>
<select name="attr_die1" class="d1">
<option value="1d4cs>4">d4</option>
<option value="1d6cs>6">d6</option>
<option value="1d8cs>8">d8</option>
<option value="1d10cs>10">d10</option>
<option value="1d12cs>12">d12</option>
<option value="1d20cs>20">d20</option>
<option value="1d100cs>100">d100</option>
</select>
<select name="attr_die2" class="d2">
<option value=" "> </option>
<option value="+ 1d4cs>4">d4</option>
<option value="+ 1d6cs>6">d6</option>
<option value="+ 1d8cs>8">d8</option>
<option value="+ 1d10cs>10">d10</option>
<option value="+ 1d12cs>12">d12</option>
<option value="+ 1d20cs>20">d20</option>
<option value="+ 1d100cs>100">d100</option>
</select>
<select name="attr_modifier_action" class="modifier">
<option value="@{Attack_Modifier}">Attack</option>
<option value="@{Constitution_Modifier}">Constitution</option>
<option value="@{Dexterity_Modifier}">Dexterity</option>
<option value="@{Magic_Modifier}">Magic</option>
<option value="@{Perception_Modifier}">Perception</option>
<option value="@{Intelligence_Modifier}">Intelligence</option>
<option value="@{Custom_1_Modifier}">Custom Attribute 1</option>
<option value="@{Custom_2_Modifier}">Custom Attribute 2</option>
<option value="@{Custom_3_Modifier}">Custom Attribute 3</option>
<option value="0">No Modifier</option>
</select>
<label class="label"><input type="radio" name="attr_explode_action" value="!!" checked /> Exploding</label>
<label class="label"><input type="radio" name="attr_explode_action" value=" " /> Flat</label>
</div>
<h2 class="h2">Skills / Abilities:</h2>
<fieldset class="repeating_shortcuts">
<button type="roll" name="roll_skill" value="@{Type}&{template:snice} {{name=@{skillname}}} {{result=[[@{d1}@{exploding} @{d2}@{exploding} + [[ @{modifier} ]] ]] }} {{result2=[[@{d1}@{exploding} @{d2}@{exploding} + [[ @{modifier} ]] ]] }} {{cost=@{cost}}} {{description=@{description}}}"></button>
<input type="text" name="attr_skillname" class="skillname" value="" placeholder="Shortcut Name" />
<div class="ring-input point-cost">
<span class="small-text">Point Cost</span>
<div class="point-circle"><input type="number" class="point" name="attr_point_cost" value="0" /></div>
</div>
<div class="ring-input endurance-cost">
<div class="point-circle"><input type="number" class="point" name="attr_cost" value="0" /></div>
<span class="small-text">Endurance</span>
</div>
<textarea name="attr_description" class="skill-description"></textarea>
<div class="dice-select">
<select name="attr_d1" class="d1">
<option value="1d4cs>4">d4</option>
<option value="1d6cs>6">d6</option>
<option value="1d8cs>8">d8</option>
<option value="1d10cs>10">d10</option>
<option value="1d12cs>12">d12</option>
<option value="1d20cs>20">d20</option>
<option value="1d100cs>100">d100</option>
</select>
<select name="attr_d2" class="d2">
<option value=" "> </option>
<option value="+ 1d4cs>4">d4</option>
<option value="+ 1d6cs>6">d6</option>
<option value="+ 1d8cs>8">d8</option>
<option value="+ 1d10cs>10">d10</option>
<option value="+ 1d12cs>12">d12</option>
<option value="+ 1d20cs>20">d20</option>
<option value="+ 1d100cs>100">d100</option>
</select>
</div>
<select name="attr_modifier" class="modifier">
<option value="@{Attack_Modifier}">Attack</option>
<option value="@{Constitution_Modifier}">Constitution</option>
<option value="@{Dexterity_Modifier}">Dexterity</option>
<option value="@{Magic_Modifier}">Magic</option>
<option value="@{Perception_Modifier}">Perception</option>
<option value="@{Intelligence_Modifier}">Intelligence</option>
<option value="@{Custom_1_Modifier}">Custom Attribute 1</option>
<option value="@{Custom_2_Modifier}">Custom Attribute 2</option>
<option value="@{Custom_3_Modifier}">Custom Attribute 3</option>
<option value="0">No Modifier</option>
</select>
<label class="label"><input type="radio" name="attr_exploding" value="!!" checked /> Exploding</label>
<label class="label"><input type="radio" name="attr_exploding" value=" " /> Flat</label>
</fieldset>
</div>
<script type="text/worker">
/* ===== PARAMETERS ==========
destinations = the name of the attribute that stores the total quantity
can be a single attribute, or an array: ['total_cost', 'total_weight']
If more than one, the matching fields must be in the same order.
section = name of repeating fieldset, without the repeating_
fields = the name of the attribute field to be summed
destination and fields both can be a single attribute: 'weight'
or an array of attributes: ['weight','number','equipped']
*/
const repeatingSum = (destinations, section, fields) => {
if (!Array.isArray(destinations)) destinations = [destinations.replace(/\s/g, '').split(',')];
if (!Array.isArray(fields)) fields = [fields.replace(/\s/g, '').split(',')];
getSectionIDs(`repeating_${section}`, idArray => {
const attrArray = idArray.reduce((m, id) => [...m, ...(fields.map(field => `repeating_${section}_${id}_${field}`))], []);
getAttrs([...attrArray], v => {
const getValue = (section, id, field) => v[`repeating_${section}_${id}_${field}`] === 'on' ? 1 : parseFloat(v[`repeating_${section}_${id}_${field}`]) || 0;
const commonMultipliers = (fields.length <= destinations.length) ? [] : fields.splice(destinations.length, fields.length - destinations.length);
const output = {};
destinations.forEach((destination, index) => {
output[destination] = idArray.reduce((total, id) => total + getValue(section, id, fields[index]) * commonMultipliers.reduce((subtotal, mult) => subtotal * getValue(section, id, mult), 1), 0);
});
setAttrs(output);
});
});
};
on('change:repeating_shortcuts:point_cost remove:repeating_shortcuts', function() {
repeatingSum("used_skill_points_total","shortcuts","point_cost");
});
</script>
<div class="inventory-container">
<h2 class="h2">Inventory:</h2>
<fieldset class="repeating_inventory">
<input type="text" name="attr_itemname" class="itemname" value="" placeholder="Item name" />
<span class="small-text">Amount:</span> <input type="number" class="itemcount" name="attr_itemcount" value="1" />
<textarea name="attr_description" class="item-description"></textarea>
</fieldset>
</div>
<div class="character-type">
<label class="label"><input type="radio" value="" name="attr_Type" checked /> Player</label>
<label class="label"><input type="radio" value="/w GM " name="attr_Type" /> NPC</label>
</div>