mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-09-01 12:42:32 +00:00
90 lines
3.1 KiB
JavaScript
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++;
|