diff --git a/sheet.css b/sheet.css index ae09e09..855937c 100644 --- a/sheet.css +++ b/sheet.css @@ -26,7 +26,7 @@ main { justify-content: center; } -div.flex { +.flex { display: flex; flex-direction: row; flex-wrap: wrap; diff --git a/sheet.js b/sheet.js index eaa6052..1829b3d 100644 --- a/sheet.js +++ b/sheet.js @@ -279,23 +279,28 @@ let features = [ ] +let spellSlots = 20 + function init () { buildModifiers("#combat-modifiers", combatModifiers); buildModifiers("#rp-modifiers", rpModifiers); buildFeatures("#features", features); + buildSpells("#spellcasting-spells", spellSlots); let data = getData(); deserializeFormData("#character-data", data); - calculateModifiers(combatModifiers) + calculateModifiers(combatModifiers); calculateModifiers(rpModifiers) + calculateSpellCasting();; data = serializeFormData("#character-data"); storeData(data); window.setInterval(() => { - calculateModifiers(combatModifiers) - calculateModifiers(rpModifiers) + calculateModifiers(combatModifiers); + calculateModifiers(rpModifiers); + calculateSpellCasting(); data = serializeFormData("#character-data"); storeData(data); @@ -350,6 +355,18 @@ function buildFeatures (container) { } } +function buildSpells (container, numSpells) { + let area = document.querySelector(container); + for (let i = 0; i < numSpells; i++) { + area.innerHTML += ` + +
+ +
+ `; + } +} + function calculateModifiers (data) { for (let i in data) { let category = data[i]; @@ -360,6 +377,19 @@ function calculateModifiers (data) { } } +function calculateSpellCasting () { + let attribute = document.querySelector("#spellcasting-attribute").value; + let baseVal = 0; + if (attribute === "int") { baseVal = Number(document.querySelector("#int").value); } + else if (attribute === "cha") { baseVal = Number(document.querySelector("#cha").value); } + let training = Number(document.querySelector("#spellcasting-training").value); + let mb = Number(document.querySelector("#spellcasting-mb").checked); + let mastery = Number(document.querySelector("#mastery").value); + let modifier = baseVal + training + (mb * mastery); + document.querySelector("#spellcasting-modifier").innerText = ` = ${modifier}`; + document.querySelector("#spellcasting-dc").innerText = ` = ${8 + modifier}`; +} + function setModifierVal (category, name, value) { let e = {}; e.STR = Number(document.querySelector("#str").value); diff --git a/songs.html b/songs.html index fc22348..a379557 100644 --- a/songs.html +++ b/songs.html @@ -102,7 +102,7 @@ -
+

Weapons

Name

Attack Bonus

@@ -129,6 +129,34 @@
+
+

Spellcasting

+
+ +
+

Spellcasting Modifier

+
+ + + +
+
+
+

Spell Save DC

+ +
+
+
+

Prep

+

Spell Name & Description

+
+