Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Creating migration to fix focus essence bug #714

Merged
merged 12 commits into from
Jul 11, 2024
32 changes: 10 additions & 22 deletions module/data/actor/templates/character.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -45,28 +45,16 @@ export const character = () => ({

export function migrateCharacterData(source) {
if (source.essences) {
if (typeof source.essences.strength == 'number') {
const strength = source.essences.strength;
const speed = source.essences.speed;
const smarts = source.essences.smarts;
const social = source.essences.social;
source.essences.strength = null;
source.essences.speed = null;
source.essences.smarts = null;
source.essences.social = null;
source.essences.strength = makeEssenceFields(),
source.essences.speed = makeEssenceFields(),
source.essences.smarts = makeEssenceFields(),
source.essences.social = makeEssenceFields(),

source.essences.strength.max = strength;
source.essences.strength.value = strength;
source.essences.speed.max = speed;
source.essences.speed.value = speed;
source.essences.smarts.max = smarts;
source.essences.smarts.value = smarts;
source.essences.social.max = social;
source.essences.social.value = social;
for (const [essence, value] of Object.entries(source.essences)) {
if (typeof value == 'number') { // Standard Essence damage migration
source.essences[essence] = { max: value, value: value };
} else if (value?.max?.max) { // Possible edge case
source.essences[essence].max = value.max.max;
source.essences[essence].value = value.max.max;
} else if (value.required) { // Previous migration may have set it to a SchemaField()
source.essences[essence].max = value.max || 0;
source.essences[essence].value = value.max || 0;
}
}
}
}
2 changes: 1 addition & 1 deletion module/data/item/focus.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export class FocusItemData extends foundry.abstract.TypeDataModel {
essences: makeStrArrayWithChoices(Object.keys(E20.essences)),
essenceLevels: makeStrArrayWithChoices(Object.keys(E20.actorLevels), initEssenceLevels),
roleId: makeStr(''),
skills: makeStrArrayWithChoices(Object.keys(E20.skills)),
skills: makeStrArrayWithChoices(Object.keys(E20.originSkills)),
};
}
}
4 changes: 2 additions & 2 deletions module/sheet-handlers/role-handler.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -368,14 +368,14 @@ export async function onLevelChange(actor, newLevel) {

const roles = getItemsOfType("role", actor.items);
if (roles.length == 1) {
setRoleValues(roles[0], actor, newLevel, previousLevel);
await setRoleValues(roles[0], actor, newLevel, previousLevel);
} else {
return;
}

const focus = getItemsOfType("focus", actor.items);
if (focus.length == 1) {
setFocusValues(focus[0], actor, newLevel, previousLevel);
await setFocusValues(focus[0], actor, newLevel, previousLevel);
}

actor.setFlag('essence20', 'previousLevel', newLevel);
Expand Down
Loading