forked from GitHub-Mirrors/foundry-sw5e

DND5e Core 1.3.5 modded to SW5e System Combining with DND5e Core 1.3.2 to see one big commit since last core update DND5e Core 1.3.2 modded to SW5e System
63 lines
No EOL
2.2 KiB
JavaScript
63 lines
No EOL
2.2 KiB
JavaScript
/**
|
|
* Manage Active Effect instances through the Actor Sheet via effect control buttons.
|
|
* @param {MouseEvent} event The left-click event on the effect control
|
|
* @param {Actor|Item} owner The owning entity which manages this effect
|
|
*/
|
|
export function onManageActiveEffect(event, owner) {
|
|
event.preventDefault();
|
|
const a = event.currentTarget;
|
|
const li = a.closest("li");
|
|
const effect = li.dataset.effectId ? owner.effects.get(li.dataset.effectId) : null;
|
|
switch ( a.dataset.action ) {
|
|
case "create":
|
|
return owner.createEmbeddedDocuments("ActiveEffect", [{
|
|
label: game.i18n.localize("SW5E.EffectNew"),
|
|
icon: "icons/svg/aura.svg",
|
|
origin: owner.uuid,
|
|
"duration.rounds": li.dataset.effectType === "temporary" ? 1 : undefined,
|
|
disabled: li.dataset.effectType === "inactive"
|
|
}]);
|
|
case "edit":
|
|
return effect.sheet.render(true);
|
|
case "delete":
|
|
return effect.delete();
|
|
case "toggle":
|
|
return effect.update({disabled: !effect.data.disabled});
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Prepare the data structure for Active Effects which are currently applied to an Actor or Item.
|
|
* @param {ActiveEffect[]} effects The array of Active Effect instances to prepare sheet data for
|
|
* @return {object} Data for rendering
|
|
*/
|
|
export function prepareActiveEffectCategories(effects) {
|
|
|
|
// Define effect header categories
|
|
const categories = {
|
|
temporary: {
|
|
type: "temporary",
|
|
label: game.i18n.localize("SW5E.EffectTemporary"),
|
|
effects: []
|
|
},
|
|
passive: {
|
|
type: "passive",
|
|
label: game.i18n.localize("SW5E.EffectPassive"),
|
|
effects: []
|
|
},
|
|
inactive: {
|
|
type: "inactive",
|
|
label: game.i18n.localize("SW5E.EffectInactive"),
|
|
effects: []
|
|
}
|
|
};
|
|
|
|
// Iterate over active effects, classifying them into categories
|
|
for ( let e of effects ) {
|
|
e._getSourceName(); // Trigger a lookup for the source name
|
|
if ( e.data.disabled ) categories.inactive.effects.push(e);
|
|
else if ( e.isTemporary ) categories.temporary.effects.push(e);
|
|
else categories.passive.effects.push(e);
|
|
}
|
|
return categories;
|
|
} |