Merge branch 'Develop-VJ' into cyr-power-point-ui

This commit is contained in:
TJ 2021-02-11 16:01:45 -06:00
commit b56e652192
3 changed files with 35 additions and 15 deletions

View file

@ -544,10 +544,28 @@ export default class Actor5e extends Actor {
actorData.data.attributes.tech.level = techProgression.levels;
}
/**
* ? should I tally number of powers known here?
*/
// Tally Powers Known
const knownPowers = this.data.items.filter(i => i.type === "power");
let knownForcePowers = 0;
let knownTechPowers = 0;
for ( let knownPower of knownPowers ) {
const d = knownPower.data;
switch (knownPower.data.school){
case "lgt":
case "uni":
case "drk":{
knownForcePowers++;
break;
}
case "tec":{
knownTechPowers++;
break;
}
}
continue;
}
actorData.data.attributes.force.known.value = knownForcePowers;
actorData.data.attributes.tech.known.value = knownTechPowers;
}
@ -1249,9 +1267,11 @@ export default class Actor5e extends Actor {
// Recover power slots
for ( let [k, v] of Object.entries(data.powers) ) {
updateData[`data.powers.${k}.value`] = Number.isNumeric(v.override) ? v.override : (v.max ?? 0);
updateData[`data.powers.${k}.fvalue`] = Number.isNumeric(v.foverride) ? v.foverride : (v.fmax ?? 0);
}
for ( let [k, v] of Object.entries(data.powers) ) {
updateData[`data.powers.${k}.tvalue`] = Number.isNumeric(v.toverride) ? v.toverride : (v.tmax ?? 0);
}
// Determine the number of hit dice which may be recovered
let recoverHD = Math.max(Math.floor(data.details.level / 2), 1);
let dhd = 0;

View file

@ -526,12 +526,12 @@ export default class Item5e extends Item {
if ( canConsume === false ) return false;
}
// Consume Power Slots
// Consume Power Slots and Force/Tech Points
if ( consumePowerSlot ) {
const level = this.actor?.data.data.powers[consumePowerSlot];
const fp = this.actor.data.data.attributes.force.points;
const tp = this.actor.data.data.attributes.tech.points;
const powerCost = level + 1;
const powerCost = id.level + 1;
switch (id.school){
case "lgt":
case "uni":
@ -560,10 +560,10 @@ export default class Item5e extends Item {
}
actorUpdates[`data.powers.${consumePowerSlot}.tvalue`] = Math.max(powers - 1, 0);
if (tp.temp >= powerCost) {
actorUpdates["data.attributes.force.points.temp"] = tp.temp - powerCost;
actorUpdates["data.attributes.tech.points.temp"] = tp.temp - powerCost;
}else{
actorUpdates["data.attributes.force.points.value"] = tp.value + tp.temp - powerCost;
actorUpdates["data.attributes.force.points.temp"] = 0;
actorUpdates["data.attributes.tech.points.value"] = tp.value + tp.temp - powerCost;
actorUpdates["data.attributes.tech.points.temp"] = 0;
}
break;
}

View file

@ -265,7 +265,7 @@ function _migrateActorPowers(actorData, updateData) {
const ad = actorData.data;
// If new Force & Tech data is not present, create it
const hasNewAttrib = ad?.attributes?.force?.level !== undefined;
let hasNewAttrib = ad?.attributes?.force?.level !== undefined;
if ( !hasNewAttrib ) {
updateData["data.attributes.force.known.value"] = 0;
updateData["data.attributes.force.known.min"] = 0;
@ -288,8 +288,8 @@ function _migrateActorPowers(actorData, updateData) {
}
// If new Power F/T split data is not present, create it
let hasNewBonus = ad?.powers?.power1?.fvalue !== undefined;
if ( !hasNewBonus ) {
const hasNewLimit = ad?.powers?.power1?.fvalue !== undefined;
if ( !hasNewLimit ) {
for (let i = 1; i <= 9; i++) {
// add new
updateData["data.powers.power" + i + ".fvalue"] = 0;
@ -302,7 +302,7 @@ function _migrateActorPowers(actorData, updateData) {
}
}
// If new Bonus Power DC data is not present, create it
hasNewBonus = ad?.bonuses?.power?.forceLightDC !== undefined;
const hasNewBonus = ad?.bonuses?.power?.forceLightDC !== undefined;
if ( !hasNewBonus ) {
updateData["data.bonuses.power.forceLightDC"] = "";
updateData["data.bonuses.power.forceDarkDC"] = "";