Files
roll20-character-sheets/Pathfinder Community/dev/src/PFPsionic.js
T

90 lines
3.1 KiB
JavaScript

'use strict';
import _ from 'underscore';
import {PFLog, PFConsole} from './PFLog';
import TAS from './TheAaronSheet.js';
import * as SWUtils from './SWUtils';
import PFConst from './PFConst';
/* **************PSIONIC************** */
function updatePsionicBonusPower (callback, silently) {
var done = _.once(function () {
if (typeof callback === "function") {
callback();
}
});
SWUtils.getDropdownValue("selected-ability-psionic-power",null,function(value){
getAttrs(["psionic-level-total", "ability-psionic-power"], function (v) {
var ability = 0,
currentTotal = 0,
newTotal = 0,
params={};
try {
ability = parseInt(value, 10) || 0;
currentTotal = parseInt(v["ability-psionic-power"], 10) || 0;
newTotal = Math.floor(ability * (parseInt(v["psionic-level-total"], 10) || 0) * 0.5);
TAS.debug("PFSIONIC ability=" + ability, "newTotal=" + newTotal, "currentTotal=" + currentTotal);
if (currentTotal !== newTotal) {
if (silently) {
params = PFConst.silentParams;
}
SWUtils.setWrapper({
"ability-psionic-power": newTotal
}, params, done);
}
} catch (err) {
TAS.error("PFPsionic.updatePsionicBonusPower", err);
} finally {
done();
}
});
});
}
export function migrate (callback){
if (typeof callback === "function"){
callback();
}
}
export var recalculate = TAS.callback(function PFPsionicRecalculate(callback, silently, oldversion) {
var done = _.once(function () {
TAS.info("Leaving PFPsionic.recalculate");
if (typeof callback === "function") {
callback();
}
});
getAttrs(["psionics-show"], function (v) {
try {
if (parseInt(v["psionics-show"],10) === 1) {
updatePsionicBonusPower(done, silently);
} else {
done();
}
} catch (err2) {
TAS.error("PFPsionic.recalculate", err2);
done();
}
});
});
function registerEventHandlers () {
on("change:psionic-level change:psionic-level-misc", TAS.callback(function eventUpdatePsionicLevel(eventInfo) {
TAS.debug("caught " + eventInfo.sourceAttribute + " event: " + eventInfo.sourceType);
if (eventInfo.sourceType === "player" || eventInfo.sourceType === "api") {
SWUtils.updateRowTotal(["psionic-level-total", "psionic-level", "psionic-level-misc"]);
}
}));
on("change:class-psionic-power change:ability-psionic-power change:misc-psionic-power", TAS.callback(function eventUpdatePsionicPower(eventInfo) {
TAS.debug("caught " + eventInfo.sourceAttribute + " event: " + eventInfo.sourceType);
if (eventInfo.sourceType === "player" || eventInfo.sourceType === "api" || (eventInfo.sourceType === "sheetworker" || eventInfo.sourceType === "api" && eventInfo.sourceAttribute==='ability-psionic-power')) {
SWUtils.updateRowTotal(["psionic-power_max", "class-psionic-power", "ability-psionic-power", "misc-psionic-power"]);
}
}));
on("change:selected-ability-psionic-power change:psionic-level-total", TAS.callback(function eventUpdatePsionicBonusPower(eventInfo) {
TAS.debug("caught " + eventInfo.sourceAttribute + " event: " + eventInfo.sourceType);
updatePsionicBonusPower();
}));
}
registerEventHandlers();
//PFConsole.log(' PFPsionic module loaded ');
//PFLog.modulecount++;