From 54d04f064298143e6a7cb04eba07567db506c347 Mon Sep 17 00:00:00 2001 From: supervj <64861570+supervj@users.noreply.github.com> Date: Thu, 11 Feb 2021 07:04:13 -0500 Subject: [PATCH 1/5] Fix Long Rest to split force and tech powers Updated long rest functionality to handle the force tech split --- module/actor/entity.js | 6 ++++-- module/migration.js | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/module/actor/entity.js b/module/actor/entity.js index 4c24956a..ecfe04dd 100644 --- a/module/actor/entity.js +++ b/module/actor/entity.js @@ -1249,9 +1249,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; diff --git a/module/migration.js b/module/migration.js index cf31ec6a..75fddb83 100644 --- a/module/migration.js +++ b/module/migration.js @@ -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,7 +288,7 @@ function _migrateActorPowers(actorData, updateData) { } // If new Power F/T split data is not present, create it - const hasNewBonus = ad?.powers?.power1?.fvalue !== undefined; + hasNewBonus = ad?.powers?.power1?.fvalue !== undefined; if ( !hasNewBonus ) { for (let i = 1; i <= 9; i++) { // add new From 1b0a70becb2384135a4d4a633d1693de7ee95ccb Mon Sep 17 00:00:00 2001 From: supervj <64861570+supervj@users.noreply.github.com> Date: Thu, 11 Feb 2021 09:47:46 -0500 Subject: [PATCH 2/5] Update migration.js whoops --- module/migration.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/migration.js b/module/migration.js index 75fddb83..1998c524 100644 --- a/module/migration.js +++ b/module/migration.js @@ -288,8 +288,8 @@ function _migrateActorPowers(actorData, updateData) { } // If new Power F/T split data is not present, create it - 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; From aff4dda77f98d06298db817516cbf46fcfaa1c5c Mon Sep 17 00:00:00 2001 From: supervj <64861570+supervj@users.noreply.github.com> Date: Thu, 11 Feb 2021 10:01:43 -0500 Subject: [PATCH 3/5] Fix Point usage it seems to work now. It really helps having a live data tree to look at. --- module/item/entity.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/item/entity.js b/module/item/entity.js index 479edb49..55eb05b3 100644 --- a/module/item/entity.js +++ b/module/item/entity.js @@ -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": From c82a4331a59dfb7b2d1e5bcb7c765ef1bd720a93 Mon Sep 17 00:00:00 2001 From: supervj <64861570+supervj@users.noreply.github.com> Date: Thu, 11 Feb 2021 10:29:35 -0500 Subject: [PATCH 4/5] Calculate Powers Known added ability to calculate how many force/tech powers are known --- module/actor/entity.js | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/module/actor/entity.js b/module/actor/entity.js index ecfe04dd..2cfe2a58 100644 --- a/module/actor/entity.js +++ b/module/actor/entity.js @@ -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; } From 4599639237fbe2e07e745ed93fa1ff032715e912 Mon Sep 17 00:00:00 2001 From: supervj <64861570+supervj@users.noreply.github.com> Date: Thu, 11 Feb 2021 15:50:38 -0500 Subject: [PATCH 5/5] Fix Tech point consumption whoops again... --- module/item/entity.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/module/item/entity.js b/module/item/entity.js index 55eb05b3..00c34a34 100644 --- a/module/item/entity.js +++ b/module/item/entity.js @@ -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; }