populate featues by script
This commit is contained in:
parent
aebcd7575e
commit
0fdebc12c9
10
sheet.css
10
sheet.css
@ -34,13 +34,13 @@ div.flex {
|
|||||||
gap: 10px;
|
gap: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.grid {
|
.grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.nowrap {
|
.nowrap {
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ hr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 600px) {
|
@media (max-width: 600px) {
|
||||||
div.mobile {
|
.mobile {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
hr {
|
hr {
|
||||||
@ -78,13 +78,13 @@ body {
|
|||||||
width: 80ch;
|
width: 80ch;
|
||||||
}
|
}
|
||||||
|
|
||||||
.page > form > * {
|
section {
|
||||||
border-bottom: 1px solid var(--text-color);
|
border-bottom: 1px solid var(--text-color);
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.page > form > *:last-child {
|
section:last-child {
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
115
sheet.js
115
sheet.js
@ -193,15 +193,100 @@ let rpModifiers = [
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
function init () {
|
let features = [
|
||||||
populateModifiers("#combat-modifiers", combatModifiers);
|
{
|
||||||
window.setInterval(() => { setAllValues(combatModifiers) }, 250);
|
name: "Core Species",
|
||||||
populateModifiers("#rp-modifiers", rpModifiers);
|
level: 1
|
||||||
setAllValues(rpModifiers);
|
},
|
||||||
window.setInterval(() => { setAllValues(rpModifiers) }, 250);
|
{
|
||||||
|
name: "Species",
|
||||||
|
level: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Cornerstone",
|
||||||
|
level: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Cornerstone",
|
||||||
|
level: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Novice",
|
||||||
|
level: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Novice",
|
||||||
|
level: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Novice",
|
||||||
|
level: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Novice",
|
||||||
|
level: 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Apprentice",
|
||||||
|
level: 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Apprentice",
|
||||||
|
level: 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Apprentice",
|
||||||
|
level: 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Journeyman",
|
||||||
|
level: 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Journeyman",
|
||||||
|
level: 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Journeyman",
|
||||||
|
level: 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Expert",
|
||||||
|
level: 13
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Expert",
|
||||||
|
level: 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Expert",
|
||||||
|
level: 15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Master",
|
||||||
|
level: 17
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Master",
|
||||||
|
level: 18
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Capstone",
|
||||||
|
level: 20
|
||||||
}
|
}
|
||||||
|
|
||||||
function populateModifiers(container, data) {
|
]
|
||||||
|
|
||||||
|
function init () {
|
||||||
|
buildModifiers("#combat-modifiers", combatModifiers);
|
||||||
|
window.setInterval(() => { calculateModifiers(combatModifiers) }, 250);
|
||||||
|
buildModifiers("#rp-modifiers", rpModifiers);
|
||||||
|
calculateModifiers(rpModifiers);
|
||||||
|
window.setInterval(() => { calculateModifiers(rpModifiers) }, 250);
|
||||||
|
buildFeatures("#features", features);
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildModifiers(container, data) {
|
||||||
let area = document.querySelector(container);
|
let area = document.querySelector(container);
|
||||||
for (let i in data) {
|
for (let i in data) {
|
||||||
let category = data[i];
|
let category = data[i];
|
||||||
@ -235,7 +320,21 @@ function populateModifiers(container, data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setAllValues (data) {
|
function buildFeatures (container) {
|
||||||
|
let area = document.querySelector(container);
|
||||||
|
for (let i in features) {
|
||||||
|
let feature = features[i];
|
||||||
|
area.innerHTML += `
|
||||||
|
<p>${feature.name}</p>
|
||||||
|
<p>${feature.level}</p>
|
||||||
|
<div class="grow-wrap">
|
||||||
|
<textarea id="features-${i}" placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function calculateModifiers (data) {
|
||||||
for (let i in data) {
|
for (let i in data) {
|
||||||
let category = data[i];
|
let category = data[i];
|
||||||
for (let j in data[i].items) {
|
for (let j in data[i].items) {
|
||||||
|
133
songs.html
133
songs.html
@ -10,18 +10,19 @@
|
|||||||
</head>
|
</head>
|
||||||
<body style="padding: 16px;">
|
<body style="padding: 16px;">
|
||||||
<main>
|
<main>
|
||||||
|
<form id="character-data" style="display: contents;">
|
||||||
<div class="page w3-container w3-card-4 w3-padding-16">
|
<div class="page w3-container w3-card-4 w3-padding-16">
|
||||||
<h1 class="w3-center">Songs of the Second Age: Character Sheet</h1>
|
<h1 class="w3-center">Songs of the Second Age: Character Sheet</h1>
|
||||||
<form class="w3-container">
|
<div class="page-data w3-container">
|
||||||
<div class="mobile grid" style="grid-template-columns: auto auto auto;">
|
<section class="mobile grid" style="grid-template-columns: auto auto auto;">
|
||||||
<label>Player<input id="player" name="player" type="text"></label>
|
<label>Player<input id="player" name="player" type="text"></label>
|
||||||
<label>Name<input id="name" name="name" type="text"></label>
|
<label>Name<input id="name" name="name" type="text"></label>
|
||||||
<label>Level<input id="level" name="level" type="number"></label>
|
<label>Level<input id="level" name="level" type="number"></label>
|
||||||
<label>Species<input id="species" name="species" type="text"></label>
|
<label>Species<input id="species" name="species" type="text"></label>
|
||||||
<label>Background<input id="background" name="background" type="text"></label>
|
<label>Background<input id="background" name="background" type="text"></label>
|
||||||
<label>Class<input id="class" name="class" type="text"></label>
|
<label>Class<input id="class" name="class" type="text"></label>
|
||||||
</div>
|
</section>
|
||||||
<div class="mobile grid" style="grid-template-columns: auto auto;">
|
<section class="mobile grid" style="grid-template-columns: auto auto;">
|
||||||
<label>Health<input id="health" name="health" type="number"></label>
|
<label>Health<input id="health" name="health" type="number"></label>
|
||||||
<label>Stamina<input id="stamina" name="stamina" type="number"></label>
|
<label>Stamina<input id="stamina" name="stamina" type="number"></label>
|
||||||
<div class="grid" style="grid-column: 1 / span 2; grid-template-columns: auto auto auto auto auto;">
|
<div class="grid" style="grid-column: 1 / span 2; grid-template-columns: auto auto auto auto auto;">
|
||||||
@ -31,16 +32,16 @@
|
|||||||
<label>D<input id="deathroll-d" name="deathroll-d" type="checkbox"></label>
|
<label>D<input id="deathroll-d" name="deathroll-d" type="checkbox"></label>
|
||||||
<label>I<input id="deathroll-i" name="deathroll-i" type="checkbox"></label>
|
<label>I<input id="deathroll-i" name="deathroll-i" type="checkbox"></label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</section>
|
||||||
<div class="mobile grid" style="grid-template-columns: repeat(6, calc((100% / 6) - 10px));">
|
<section class="mobile grid" style="grid-template-columns: repeat(6, calc((100% / 6) - 10px));">
|
||||||
<label style="flex-direction: column;"><p><u>Str</u>ength</p><input id="str" name="str" type="number"></label>
|
<label style="flex-direction: column;"><p><u>Str</u>ength</p><input id="str" name="str" type="number"></label>
|
||||||
<label style="flex-direction: column;"><p><u>End</u>urance</p><input id="end" name="end" type="number"></label>
|
<label style="flex-direction: column;"><p><u>End</u>urance</p><input id="end" name="end" type="number"></label>
|
||||||
<label style="flex-direction: column;"><p><u>Agi</u>lity</p><input id="agi" name="agi" type="number"></label>
|
<label style="flex-direction: column;"><p><u>Agi</u>lity</p><input id="agi" name="agi" type="number"></label>
|
||||||
<label style="flex-direction: column;"><p><u>Wit</u>s</p><input id="wit" name="wit" type="number"></label>
|
<label style="flex-direction: column;"><p><u>Wit</u>s</p><input id="wit" name="wit" type="number"></label>
|
||||||
<label style="flex-direction: column;"><p><u>Int</u>elligence</p><input id="int" name="int" type="number"></label>
|
<label style="flex-direction: column;"><p><u>Int</u>elligence</p><input id="int" name="int" type="number"></label>
|
||||||
<label style="flex-direction: column;"><p><u>Cha</u>risma</p><input id="cha" name="cha" type="number"></label>
|
<label style="flex-direction: column;"><p><u>Cha</u>risma</p><input id="cha" name="cha" type="number"></label>
|
||||||
</div>
|
</section>
|
||||||
<div class="mobile grid" style="grid-template-columns: repeat(6, calc((100% / 6) - 10px));">
|
<section class="mobile grid" style="grid-template-columns: repeat(6, calc((100% / 6) - 10px));">
|
||||||
<label style="flex-direction: column;">Armor<input id="armor" name="armor" type="number"></label>
|
<label style="flex-direction: column;">Armor<input id="armor" name="armor" type="number"></label>
|
||||||
<label style="flex-direction: column;">Soak<input id="soak" name="soak" type="number"></label>
|
<label style="flex-direction: column;">Soak<input id="soak" name="soak" type="number"></label>
|
||||||
<label style="flex-direction: column;">Speed<input id="speed" name="speed" type="number"></label>
|
<label style="flex-direction: column;">Speed<input id="speed" name="speed" type="number"></label>
|
||||||
@ -54,122 +55,22 @@
|
|||||||
<input id="max-bulk" name="max-bulk" type="number">
|
<input id="max-bulk" name="max-bulk" type="number">
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</section>
|
||||||
<div class="grid mobile" style="grid-template-columns: 1fr auto 1fr; align-items: start;">
|
<section class="grid mobile" style="grid-template-columns: 1fr auto 1fr; align-items: start;">
|
||||||
<div class="grid" style="grid-template-columns: auto auto auto auto;" id="combat-modifiers"></div>
|
<div class="grid" style="grid-template-columns: auto auto auto auto;" id="combat-modifiers"></div>
|
||||||
<hr>
|
<hr>
|
||||||
<div class="grid" style="grid-template-columns: auto auto auto auto;" id="rp-modifiers"></div>
|
<div class="grid" style="grid-template-columns: auto auto auto auto;" id="rp-modifiers"></div>
|
||||||
|
</section>
|
||||||
|
<section class="grow-wrap">
|
||||||
|
<textarea id="notes" name="notes" placeholder="Notes" onInput="this.parentNode.dataset.replicatedValue = this.value"></textarea>
|
||||||
|
</section>
|
||||||
</div>
|
</div>
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Notes" onInput="this.parentNode.dataset.replicatedValue = this.value"></textarea>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="page w3-container w3-card-4 w3-padding-16">
|
<div class="page w3-container w3-card-4 w3-padding-16">
|
||||||
<h2 class="w3-center">Character Features</h2>
|
<h2 class="w3-center">Character Features</h2>
|
||||||
<div class="grid" style="grid-template-columns: auto auto 1fr; column-gap: 20px; padding: 0px 16px;">
|
<section class="grid" id="features" style="grid-template-columns: auto auto 1fr; column-gap: 20px; padding: 0px 16px;"></section>
|
||||||
<p>Core Species</p>
|
|
||||||
<p>1</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Species</p>
|
|
||||||
<p>1</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Cornerstone</p>
|
|
||||||
<p>1</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Cornerstone</p>
|
|
||||||
<p>1</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Novice</p>
|
|
||||||
<p>1</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Novice</p>
|
|
||||||
<p>2</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Novice</p>
|
|
||||||
<p>3</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Novice</p>
|
|
||||||
<p>4</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Apprentice</p>
|
|
||||||
<p>5</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Apprentice</p>
|
|
||||||
<p>6</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Apprentice</p>
|
|
||||||
<p>7</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Journeyman</p>
|
|
||||||
<p>9</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Journeyman</p>
|
|
||||||
<p>10</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Journeyman</p>
|
|
||||||
<p>11</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Expert</p>
|
|
||||||
<p>13</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Expert</p>
|
|
||||||
<p>14</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Expert</p>
|
|
||||||
<p>15</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Master</p>
|
|
||||||
<p>17</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Master</p>
|
|
||||||
<p>18</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
<p>Capstone</p>
|
|
||||||
<p>20</p>
|
|
||||||
<div class="grow-wrap">
|
|
||||||
<textarea placeholder="Feature Name & Description" onInput="this.parentNode.dataset.replicatedValue = this.value" rows="1"></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</main>
|
</main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Loading…
Reference in New Issue
Block a user