forked from GitHub-Mirrors/foundry-sw5e
Update Actor Entity
minor bug fixes and add points and powers known
This commit is contained in:
parent
6169add4a3
commit
932c96ba4a
1 changed files with 34 additions and 21 deletions
|
@ -92,10 +92,10 @@ export default class Actor5e extends Actor {
|
|||
init.total = init.mod + init.prof + init.bonus;
|
||||
|
||||
// Prepare power-casting data
|
||||
data.attributes.powerForceLightDC = data.attributes[wis].dc ?? 10;
|
||||
data.attributes.powerForceDarkDC = data.attributes[cha].dc ?? 10;
|
||||
data.attributes.powerForceUniDC = floor.ceil(data.attributes.powerfldc,data.attributes.powerfddc) ?? 10;
|
||||
data.attributes.powerTechDC = data.attributes[int].dc ?? 10;
|
||||
data.attributes.powerForceLightDC = 8 + data.abilities.wis.mod + data.attributes.prof ?? 10;
|
||||
data.attributes.powerForceDarkDC = 8 + data.abilities.cha.mod + data.attributes.prof ?? 10;
|
||||
data.attributes.powerForceUnivDC = Math.ceil(data.attributes.powerForceLightDC,data.attributes.powerForceDarkDC) ?? 10;
|
||||
data.attributes.powerTechDC = 8 + data.abilities.int.mod + data.attributes.prof ?? 10;
|
||||
this._computePowercastingProgression(this.data);
|
||||
|
||||
// Compute owned item attributes which depend on prepared Actor data
|
||||
|
@ -411,7 +411,7 @@ export default class Actor5e extends Actor {
|
|||
forceProgression.maxClass = 'consular';
|
||||
forceProgression.maxClassLevels = levels;
|
||||
forceProgression.maxClassPriority = priority;
|
||||
forceProgression.maxClassPowerLevel = SW5E.maxPowerLevel['consular'][Math.clamped((levels - 1), 0, 20)];
|
||||
forceProgression.maxClassPowerLevel = SW5E.powerMaxLevel['consular'][Math.clamped((levels - 1), 0, 20)];
|
||||
}
|
||||
// calculate points and powers known
|
||||
forceProgression.powersKnown += SW5E.powersKnown['consular'][Math.clamped((levels - 1), 0, 20)];
|
||||
|
@ -427,7 +427,7 @@ export default class Actor5e extends Actor {
|
|||
techProgression.maxClass = 'engineer';
|
||||
techProgression.maxClassLevels = levels;
|
||||
techProgression.maxClassPriority = priority;
|
||||
techProgression.maxClassPowerLevel = SW5E.maxPowerLevel['engineer'][Math.clamped((levels - 1), 0, 20)];
|
||||
techProgression.maxClassPowerLevel = SW5E.powerMaxLevel['engineer'][Math.clamped((levels - 1), 0, 20)];
|
||||
}
|
||||
techProgression.powersKnown += SW5E.powersKnown['engineer'][Math.clamped((levels - 1), 0, 20)];
|
||||
techProgression.points += SW5E.powerPoints['engineer'][Math.clamped((levels - 1), 0, 20)];
|
||||
|
@ -442,7 +442,7 @@ export default class Actor5e extends Actor {
|
|||
forceProgression.maxClass = 'guardian';
|
||||
forceProgression.maxClassLevels = levels;
|
||||
forceProgression.maxClassPriority = priority;
|
||||
forceProgression.maxClassPowerLevel = SW5E.maxPowerLevel['guardian'][Math.clamped((levels - 1), 0, 20)];
|
||||
forceProgression.maxClassPowerLevel = SW5E.powerMaxLevel['guardian'][Math.clamped((levels - 1), 0, 20)];
|
||||
}
|
||||
forceProgression.powersKnown += SW5E.powersKnown['guardian'][Math.clamped((levels - 1), 0, 20)];
|
||||
forceProgression.points += SW5E.powerPoints['guardian'][Math.clamped((levels - 1), 0, 20)];
|
||||
|
@ -457,7 +457,7 @@ export default class Actor5e extends Actor {
|
|||
techProgression.maxClass = 'scout';
|
||||
techProgression.maxClassLevels = levels;
|
||||
techProgression.maxClassPriority = priority;
|
||||
techProgression.maxClassPowerLevel = SW5E.maxPowerLevel['scout'][Math.clamped((levels - 1), 0, 20)];
|
||||
techProgression.maxClassPowerLevel = SW5E.powerMaxLevel['scout'][Math.clamped((levels - 1), 0, 20)];
|
||||
}
|
||||
techProgression.powersKnown += SW5E.powersKnown['scout'][Math.clamped((levels - 1), 0, 20)];
|
||||
techProgression.points += SW5E.powerPoints['scout'][Math.clamped((levels - 1), 0, 20)];
|
||||
|
@ -472,7 +472,7 @@ export default class Actor5e extends Actor {
|
|||
forceProgression.maxClass = 'sentinel';
|
||||
forceProgression.maxClassLevels = levels;
|
||||
forceProgression.maxClassPriority = priority;
|
||||
forceProgression.maxClassPowerLevel = SW5E.maxPowerLevel['sentinel'][Math.clamped((levels - 1), 0, 20)];
|
||||
forceProgression.maxClassPowerLevel = SW5E.powerMaxLevel['sentinel'][Math.clamped((levels - 1), 0, 20)];
|
||||
}
|
||||
forceProgression.powersKnown += SW5E.powersKnown['sentinel'][Math.clamped((levels - 1), 0, 20)];
|
||||
forceProgression.points += SW5E.powerPoints['sentinel'][Math.clamped((levels - 1), 0, 20)];
|
||||
|
@ -482,40 +482,35 @@ export default class Actor5e extends Actor {
|
|||
// EXCEPTION: multi-classed progression uses multi rounded down rather than levels
|
||||
if (!isNPC && forceProgression.classes > 1) {
|
||||
forceProgression.levels = Math.floor(forceProgression.multi);
|
||||
forceProgression.maxClassPowerLevel = SW5E.maxPowerLevel['multi'][levels - 1];
|
||||
forceProgression.maxClassPowerLevel = SW5E.powerMaxLevel['multi'][levels - 1];
|
||||
}
|
||||
if (!isNPC && techProgression.classes > 1) {
|
||||
techProgression.levels = Math.floor(techProgression.multi);
|
||||
techProgression.maxClassPowerLevel = SW5E.maxPowerLevel['multi'][levels - 1];
|
||||
techProgression.maxClassPowerLevel = SW5E.powerMaxLevel['multi'][levels - 1];
|
||||
}
|
||||
|
||||
// EXCEPTION: NPC with an explicit power-caster level
|
||||
if (isNPC && actorData.data.details.powerForceLevel) {
|
||||
forceProgression.levels = actorData.data.details.powerForceLevel;
|
||||
forceProgression.maxClass = 'consular';
|
||||
forceProgression.maxClassPowerLevel = SW5E.maxPowerLevel['consular'][Math.clamped((forceProgression.levels - 1), 0, 20)];
|
||||
forceProgression.maxClassPowerLevel = SW5E.powerMaxLevel['consular'][Math.clamped((forceProgression.levels - 1), 0, 20)];
|
||||
forceProgression.powersKnown = SW5E.powersKnown['consular'][Math.clamped((forceProgression.levels - 1), 0, 20)];
|
||||
forceProgression.points = SW5E.powerPoints['consular'][Math.clamped((forceProgression.levels - 1), 0, 20)];
|
||||
}
|
||||
if (isNPC && actorData.data.details.powerTechLevel) {
|
||||
techProgression.levels = actorData.data.details.powerTechLevel;
|
||||
techProgression.maxClass = 'engineer';
|
||||
techProgression.maxClassPowerLevel = SW5E.maxPowerLevel['engineer'][Math.clamped((techProgression.levels - 1), 0, 20)];
|
||||
techProgression.maxClassPowerLevel = SW5E.powerMaxLevel['engineer'][Math.clamped((techProgression.levels - 1), 0, 20)];
|
||||
techProgression.powersKnown = SW5E.powersKnown['engineer'][Math.clamped((techProgression.levels - 1), 0, 20)];
|
||||
techProgression.points = SW5E.powerPoints['engineer'][Math.clamped((techProgression.levels - 1), 0, 20)];
|
||||
}
|
||||
|
||||
// Look up the number of slots per level from the powerLimit table
|
||||
const forcePowerLimit = SW5E.powerLimit['none'];
|
||||
for (let i = 0; i < (forceProgression.maxPowerLevel - 1); i++) {
|
||||
// TODO: Add Tech progression afterwards
|
||||
let forcePowerLimit = SW5E.powerLimit['none'];
|
||||
for (let i = 0; i < (forceProgression.maxClassPowerLevel); i++) {
|
||||
forcePowerLimit[i] = SW5E.powerLimit[forceProgression.maxClass][i];
|
||||
}
|
||||
|
||||
/**
|
||||
* ? set max force/tech points? Should probably be done on class level up drop
|
||||
* ? set max force/tech powers known? Should probably be done on class level up drop
|
||||
* ? should I tally number of powers known here?
|
||||
*/
|
||||
|
||||
for ( let [n, lvl] of Object.entries(powers) ) {
|
||||
let i = parseInt(n.slice(-1));
|
||||
|
@ -524,6 +519,24 @@ export default class Actor5e extends Actor {
|
|||
else lvl.max = forcePowerLimit[i-1] || 0;
|
||||
lvl.value = parseInt(lvl.value);
|
||||
}
|
||||
|
||||
// Set Force and tech power
|
||||
if (forceProgression.levels > 0){
|
||||
actorData.data.attributes.force.known.max = forceProgression.powersKnown;
|
||||
actorData.data.attributes.force.points.max = forceProgression.points + Math.max(actorData.data.abilities.wis.mod,actorData.data.abilities.cha.mod);
|
||||
actorData.data.attributes.force.level = forceProgression.levels;
|
||||
}
|
||||
if (techProgression.levels > 0){
|
||||
actorData.data.attributes.tech.known.max = techProgression.powersKnown;
|
||||
actorData.data.attributes.tech.points.max = techProgression.points + actorData.data.abilities.int.mod;
|
||||
actorData.data.attributes.tech.level = techProgression.levels;
|
||||
}
|
||||
|
||||
/**
|
||||
* ? should I tally number of powers known here?
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue