foundry-sw5e/module/combat.js

32 lines
1.1 KiB
JavaScript
Raw Normal View History

2020-06-24 14:23:55 -04:00
/**
2020-09-01 12:13:00 -04:00
* Override the default Initiative formula to customize special behaviors of the SW5e system.
2020-06-24 14:23:55 -04:00
* Apply advantage, proficiency, or bonuses where appropriate
* Apply the dexterity score as a decimal tiebreaker if requested
* See Combat._getInitiativeFormula for more detail.
*/
2021-07-06 19:57:18 -05:00
export const _getInitiativeFormula = function () {
const actor = this.actor;
if (!actor) return "1d20";
const init = actor.data.data.attributes.init;
2021-07-06 19:57:18 -05:00
// Construct initiative formula parts
let nd = 1;
let mods = "";
if (actor.getFlag("sw5e", "halflingLucky")) mods += "r1=1";
if (actor.getFlag("sw5e", "initiativeAdv")) {
nd = 2;
mods += "kh";
}
const parts = [
`${nd}d20${mods}`,
init.mod,
init.prof !== 0 ? init.prof : null,
init.bonus !== 0 ? init.bonus : null
];
2020-09-11 17:11:11 -04:00
2021-07-06 19:57:18 -05:00
// Optionally apply Dexterity tiebreaker
const tiebreaker = game.settings.get("sw5e", "initiativeDexTiebreaker");
if (tiebreaker) parts.push(actor.data.data.abilities.dex.value / 100);
return parts.filter((p) => p !== null).join(" + ");
2020-06-24 14:23:55 -04:00
};