forked from GitHub-Mirrors/foundry-sw5e
Adding flag to config.js for dataVersion control
Adding flag for dataVersion control ** added shell of migration.js for updating NPC Data. This is only being pushed for visibility by people other than me and is by no means done or tested and probably very broken. Line 159 commented out to keep from running broken function. Uncomment for testing. Broken _updateNPCData from lines 242 to 289
This commit is contained in:
parent
c829f2b7b1
commit
e43444bc48
2 changed files with 58 additions and 5 deletions
|
@ -1242,4 +1242,4 @@ SW5E.characterFlags = {
|
|||
};
|
||||
|
||||
// Configure allowed status flags
|
||||
SW5E.allowedActorFlags = ["isPolymorphed", "originalActor"].concat(Object.keys(SW5E.characterFlags));
|
||||
SW5E.allowedActorFlags = ["isPolymorphed", "originalActor", "dataVersion"].concat(Object.keys(SW5E.characterFlags));
|
||||
|
|
|
@ -154,6 +154,11 @@ export const migrateActorData = function(actor) {
|
|||
if ( hasItemUpdates ) updateData.items = items;
|
||||
}
|
||||
|
||||
// Update NPC data with new datamodel information
|
||||
if (actor.type === "npc") {
|
||||
//_updateNPCData(actor);
|
||||
}
|
||||
|
||||
// migrate powers last since it relies on item classes being migrated first.
|
||||
_migrateActorPowers(actor, updateData);
|
||||
|
||||
|
@ -234,6 +239,54 @@ export const migrateSceneData = function(scene) {
|
|||
/* Low level migration utilities
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Update an NPC Actor's data based on compendium
|
||||
* @param {Object} actor The data object for an Actor
|
||||
* @return {Object} The updated Actor
|
||||
*/
|
||||
function _updateNPCData(actor) {
|
||||
|
||||
const actorData = actor.data;
|
||||
const updateData = {};
|
||||
// check for flag.core
|
||||
const hasSource = actor?.flags?.core?.sourceId !== undefined;
|
||||
if (!hasSource) return actor;
|
||||
// shortcut out if dataVersion flag is set to 1.2.4
|
||||
const sourceID = actor.flags.core.sourceID;
|
||||
const coreSource = sourceID.substr(0,sourceID.length-17);
|
||||
const core_id = sourceID.substr(sourceID.length-16,16);
|
||||
if (coreSource === "Compendium.sw5e.monsters"){
|
||||
const monster = game.actors.entities.filter(entry => entry._id === core_id);
|
||||
const monsterData = monster.data;
|
||||
// copy movement[], senses[], powercasting, force[], tech[], powerForceLevel, powerTechLevel
|
||||
updateData["data.attributes.movement"] = monsterData.attributes.movement;
|
||||
updateData["data.attributes.senses"] = monsterData.attributes.senses;
|
||||
updateData["data.attributes.powercasting"] = monsterData.attributes.powercasting;
|
||||
updateData["data.attributes.force"] = monsterData.attributes.force;
|
||||
updateData["data.attributes.tech"] = monsterData.attributes.tech;
|
||||
updateData["data.details.powerForceLevel"] = monsterData.details.powerForceLevel;
|
||||
updateData["data.details.powerTechLevel"] = monsterData.details.powerTechLevel;
|
||||
// push missing powers onto actor
|
||||
for ( let i of monster.items ) {
|
||||
const itemData = migrateItemData(i.data);
|
||||
if ( itemData.type === "power" ) {
|
||||
// check to see if actor has that core item, if not, push to actor.
|
||||
}
|
||||
}
|
||||
// set flag to check to see if migration has been done so we don't do it again.
|
||||
actor.setFlag("sw5e","dataVersion","1.2.4");
|
||||
}
|
||||
|
||||
|
||||
//merge object
|
||||
actorData = mergeObject(actorData, updateData);
|
||||
// Return the scrubbed data
|
||||
return actor;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Migrate the actor speed string to movement object
|
||||
* @private
|
||||
|
@ -294,11 +347,11 @@ function _migrateActorPowers(actorData, updateData) {
|
|||
if ( !hasNewLimit ) {
|
||||
for (let i = 1; i <= 9; i++) {
|
||||
// add new
|
||||
updateData["data.powers.power" + i + ".fvalue"] = getProperty(ad.powers,"power" + i + ".fvalue");
|
||||
updateData["data.powers.power" + i + ".fmax"] = getProperty(ad.powers,"power" + i + ".fmax");
|
||||
updateData["data.powers.power" + i + ".fvalue"] = getProperty(ad.powers,"power" + i + ".value");
|
||||
updateData["data.powers.power" + i + ".fmax"] = getProperty(ad.powers,"power" + i + ".max");
|
||||
updateData["data.powers.power" + i + ".foverride"] = null;
|
||||
updateData["data.powers.power" + i + ".tvalue"] = getProperty(ad.powers,"power" + i + ".tvalue");
|
||||
updateData["data.powers.power" + i + ".tmax"] = getProperty(ad.powers,"power" + i + ".tmax");
|
||||
updateData["data.powers.power" + i + ".tvalue"] = getProperty(ad.powers,"power" + i + ".value");
|
||||
updateData["data.powers.power" + i + ".tmax"] = getProperty(ad.powers,"power" + i + ".max");
|
||||
updateData["data.powers.power" + i + ".toverride"] = null;
|
||||
//remove old
|
||||
updateData["data.powers.power" + i + ".-=value"] = null;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue