[Snice] Added Snice Character Sheet & images
This commit is contained in:
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 |
Binary file not shown.
|
After Width: | Height: | Size: 129 KiB |
@@ -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
@@ -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;
|
||||
}
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user