forked from GitHub-Mirrors/foundry-sw5e
Cleaned up actor
This commit is contained in:
parent
2a7e1c419e
commit
6295de9fd6
1 changed files with 38 additions and 36 deletions
|
@ -342,15 +342,13 @@ export default class Actor5e extends Actor {
|
|||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Prepare starship type-specific data
|
||||
* @param actorData
|
||||
* @private
|
||||
*/
|
||||
_prepareStarshipData(actorData) {
|
||||
const data = actorData.data;
|
||||
const data = actorData.data;
|
||||
|
||||
// Proficiency
|
||||
data.attributes.prof = Math.floor((Math.max(data.details.tier, 1) + 7) / 4);
|
||||
|
@ -547,31 +545,33 @@ export default class Actor5e extends Actor {
|
|||
break; }
|
||||
}
|
||||
|
||||
// EXCEPTION: multi-classed progression uses multi rounded down rather than levels
|
||||
// TODO: This could be cleaned up a little, one change at a time though
|
||||
if (!isNPC && forceProgression.classes > 1) {
|
||||
forceProgression.levels = Math.floor(forceProgression.multi);
|
||||
forceProgression.maxClassPowerLevel = SW5E.powerMaxLevel['multi'][forceProgression.levels - 1];
|
||||
}
|
||||
if (!isNPC && techProgression.classes > 1) {
|
||||
techProgression.levels = Math.floor(techProgression.multi);
|
||||
techProgression.maxClassPowerLevel = SW5E.powerMaxLevel['multi'][techProgression.levels - 1];
|
||||
}
|
||||
|
||||
// EXCEPTION: NPC with an explicit power-caster level
|
||||
if (isNPC && ad.details.powerForceLevel) {
|
||||
forceProgression.levels = ad.details.powerForceLevel;
|
||||
ad.attributes.force.level = forceProgression.levels;
|
||||
forceProgression.maxClass = ad.attributes.powercasting;
|
||||
forceProgression.maxClassPowerLevel = SW5E.powerMaxLevel[forceProgression.maxClass][Math.clamped((forceProgression.levels - 1), 0, 20)];
|
||||
}
|
||||
if (isNPC && ad.details.powerTechLevel) {
|
||||
techProgression.levels = ad.details.powerTechLevel;
|
||||
ad.attributes.tech.level = techProgression.levels;
|
||||
techProgression.maxClass = ad.attributes.powercasting;
|
||||
techProgression.maxClassPowerLevel = SW5E.powerMaxLevel[techProgression.maxClass][Math.clamped((techProgression.levels - 1), 0, 20)];
|
||||
if (isNPC) {
|
||||
// EXCEPTION: NPC with an explicit power-caster level
|
||||
if (ad.details.powerForceLevel) {
|
||||
forceProgression.levels = ad.details.powerForceLevel;
|
||||
ad.attributes.force.level = forceProgression.levels;
|
||||
forceProgression.maxClass = ad.attributes.powercasting;
|
||||
forceProgression.maxClassPowerLevel = SW5E.powerMaxLevel[forceProgression.maxClass][Math.clamped((forceProgression.levels - 1), 0, 20)];
|
||||
}
|
||||
if (ad.details.powerTechLevel) {
|
||||
techProgression.levels = ad.details.powerTechLevel;
|
||||
ad.attributes.tech.level = techProgression.levels;
|
||||
techProgression.maxClass = ad.attributes.powercasting;
|
||||
techProgression.maxClassPowerLevel = SW5E.powerMaxLevel[techProgression.maxClass][Math.clamped((techProgression.levels - 1), 0, 20)];
|
||||
}
|
||||
} else {
|
||||
// EXCEPTION: multi-classed progression uses multi rounded down rather than levels
|
||||
if (forceProgression.classes > 1) {
|
||||
forceProgression.levels = Math.floor(forceProgression.multi);
|
||||
forceProgression.maxClassPowerLevel = SW5E.powerMaxLevel['multi'][forceProgression.levels - 1];
|
||||
}
|
||||
if (techProgression.classes > 1) {
|
||||
techProgression.levels = Math.floor(techProgression.multi);
|
||||
techProgression.maxClassPowerLevel = SW5E.powerMaxLevel['multi'][techProgression.levels - 1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Look up the number of slots per level from the powerLimit table
|
||||
let forcePowerLimit = Array.from(SW5E.powerLimit['none']);
|
||||
for (let i = 0; i < (forceProgression.maxClassPowerLevel); i++) {
|
||||
|
@ -608,18 +608,20 @@ export default class Actor5e extends Actor {
|
|||
}
|
||||
|
||||
// Set Force and tech power for PC Actors
|
||||
// TODO: Can join these !NPCs to save a whole comparison
|
||||
if (!isNPC && forceProgression.levels){
|
||||
ad.attributes.force.known.max = forceProgression.powersKnown;
|
||||
ad.attributes.force.points.max = forceProgression.points + Math.max(ad.abilities.wis.mod,ad.abilities.cha.mod);
|
||||
ad.attributes.force.level = forceProgression.levels;
|
||||
}
|
||||
if (!isNPC && techProgression.levels){
|
||||
ad.attributes.tech.known.max = techProgression.powersKnown;
|
||||
ad.attributes.tech.points.max = techProgression.points + ad.abilities.int.mod;
|
||||
ad.attributes.tech.level = techProgression.levels;
|
||||
if (!isNPC) {
|
||||
if (forceProgression.levels) {
|
||||
ad.attributes.force.known.max = forceProgression.powersKnown;
|
||||
ad.attributes.force.points.max = forceProgression.points + Math.max(ad.abilities.wis.mod, ad.abilities.cha.mod);
|
||||
ad.attributes.force.level = forceProgression.levels;
|
||||
}
|
||||
if (techProgression.levels){
|
||||
ad.attributes.tech.known.max = techProgression.powersKnown;
|
||||
ad.attributes.tech.points.max = techProgression.points + ad.abilities.int.mod;
|
||||
ad.attributes.tech.level = techProgression.levels;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Tally Powers Known and check for migration first to avoid errors
|
||||
let hasKnownPowers = actorData?.data?.attributes?.force?.known?.value !== undefined;
|
||||
if ( hasKnownPowers ) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue