2024-02-08 23:04:28 -08:00
|
|
|
function getTraitModifiersForStat(stat) {
|
|
|
|
var mods = {};
|
|
|
|
for (const prop in TRAITS) {
|
|
|
|
var props = [];
|
|
|
|
for (const desc in TRAITS[prop]) {
|
|
|
|
trait = TRAITS[prop][desc]
|
|
|
|
if (trait.type == "stat" && trait.target == stat) {
|
|
|
|
props.push(trait);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (props) {
|
|
|
|
mods[prop] = props;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return mods;
|
|
|
|
}
|
|
|
|
|
2024-02-08 01:14:35 -08:00
|
|
|
function proficiency() {
|
|
|
|
return parseInt(document.getElementById('proficiency_bonus').innerHTML);
|
|
|
|
}
|
|
|
|
|
|
|
|
function bonus(stat) {
|
|
|
|
return parseInt(document.getElementById(stat + '_bonus').innerHTML);
|
|
|
|
}
|
|
|
|
|
|
|
|
function setStatBonus(stat) {
|
|
|
|
var score = document.getElementById(stat).value;
|
|
|
|
var bonus = Math.floor((score - 10) / 2);
|
|
|
|
document.getElementById(stat + '_bonus').innerHTML = bonus;
|
|
|
|
}
|
|
|
|
|
2024-02-08 23:04:28 -08:00
|
|
|
function applyStatModifiers(stat) {
|
|
|
|
var score = parseInt(document.getElementById(stat).value);
|
|
|
|
var modsForStat = getTraitModifiersForStat(stat);
|
|
|
|
for (desc in modsForStat) {
|
|
|
|
for (idx in modsForStat[desc]) {
|
|
|
|
var value = modsForStat[desc][idx].value;
|
|
|
|
console.log(`Ancestry Trait "${desc}" grants ${value} to ${stat}`);
|
|
|
|
score += parseInt(value);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
document.getElementById(stat).value = score;
|
|
|
|
}
|
|
|
|
|
2024-02-08 01:14:35 -08:00
|
|
|
function setProficiencyBonus() {
|
|
|
|
var score = document.getElementById('level').value;
|
|
|
|
var bonus = Math.ceil(1 + (0.25 * score));
|
|
|
|
document.getElementById('proficiency_bonus').innerHTML = bonus;
|
|
|
|
}
|
|
|
|
|
|
|
|
function setSpellSaveDC() {
|
|
|
|
var score = 8 + proficiency() + bonus('wis');
|
|
|
|
document.getElementById('spell_save_dc').innerHTML = score;
|
|
|
|
}
|
|
|
|
|
|
|
|
(function () {
|
|
|
|
const stats = ['str', 'dex', 'con', 'int', 'wis', 'cha'];
|
2024-02-08 23:04:28 -08:00
|
|
|
stats.forEach(applyStatModifiers);
|
2024-02-08 01:14:35 -08:00
|
|
|
stats.forEach(setStatBonus);
|
|
|
|
setProficiencyBonus();
|
|
|
|
setSpellSaveDC();
|
2024-02-08 23:04:28 -08:00
|
|
|
|
2024-02-08 01:14:35 -08:00
|
|
|
})();
|