2021-01-04 15:23:30 -05:00
|
|
|
import Item5e from "../../../item/entity.js";
|
|
|
|
import TraitSelector from "../../../apps/trait-selector.js";
|
|
|
|
import ActorSheetFlags from "../../../apps/actor-flags.js";
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
import ActorHitDiceConfig from "../../../apps/hit-dice-config.js";
|
2021-01-04 15:23:30 -05:00
|
|
|
import ActorMovementConfig from "../../../apps/movement-config.js";
|
|
|
|
import ActorSensesConfig from "../../../apps/senses-config.js";
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
import ActorTypeConfig from "../../../apps/actor-type.js";
|
2021-01-04 15:23:30 -05:00
|
|
|
import {SW5E} from '../../../config.js';
|
|
|
|
import {onManageActiveEffect, prepareActiveEffectCategories} from "../../../effects.js";
|
2020-06-24 14:22:36 -04:00
|
|
|
|
|
|
|
/**
|
2020-11-12 17:30:07 -05:00
|
|
|
* Extend the basic ActorSheet class to suppose SW5e-specific logic and functionality.
|
2020-06-24 14:22:36 -04:00
|
|
|
* This sheet is an Abstract layer which is not used.
|
2020-09-11 17:11:11 -04:00
|
|
|
* @extends {ActorSheet}
|
2020-06-24 14:22:36 -04:00
|
|
|
*/
|
2020-09-11 17:11:11 -04:00
|
|
|
export default class ActorSheet5e extends ActorSheet {
|
2020-06-24 14:22:36 -04:00
|
|
|
constructor(...args) {
|
|
|
|
super(...args);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Track the set of item filters which are applied
|
|
|
|
* @type {Set}
|
|
|
|
*/
|
|
|
|
this._filters = {
|
|
|
|
inventory: new Set(),
|
2021-02-10 18:39:36 -06:00
|
|
|
forcePowerbook: new Set(),
|
|
|
|
techPowerbook: new Set(),
|
2020-10-08 02:20:12 -04:00
|
|
|
features: new Set(),
|
|
|
|
effects: new Set()
|
2020-06-24 14:22:36 -04:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/** @override */
|
|
|
|
static get defaultOptions() {
|
|
|
|
return mergeObject(super.defaultOptions, {
|
|
|
|
scrollY: [
|
2021-01-19 22:52:02 -05:00
|
|
|
".inventory .group-list",
|
|
|
|
".features .group-list",
|
2021-02-10 18:39:36 -06:00
|
|
|
".force-powerbook .group-list",
|
|
|
|
".tech-powerbook .group-list",
|
2021-01-19 22:52:02 -05:00
|
|
|
".effects .effects-list"
|
2020-06-24 14:22:36 -04:00
|
|
|
],
|
|
|
|
tabs: [{navSelector: ".tabs", contentSelector: ".sheet-body", initial: "description"}]
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2020-09-11 17:11:11 -04:00
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
/**
|
|
|
|
* A set of item types that should be prevented from being dropped on this type of actor sheet.
|
|
|
|
* @type {Set<string>}
|
|
|
|
*/
|
|
|
|
static unsupportedItemTypes = new Set();
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
2020-09-11 17:11:11 -04:00
|
|
|
/** @override */
|
|
|
|
get template() {
|
2021-01-04 15:23:30 -05:00
|
|
|
if ( !game.user.isGM && this.actor.limited ) return "systems/sw5e/templates/actors/newActor/expanded-limited-sheet.html";
|
|
|
|
return `systems/sw5e/templates/actors/newActor/${this.actor.data.type}-sheet.html`;
|
2020-09-11 17:11:11 -04:00
|
|
|
}
|
2020-06-24 14:22:36 -04:00
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/** @override */
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
getData(options) {
|
2020-06-24 14:22:36 -04:00
|
|
|
|
|
|
|
// Basic data
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
let isOwner = this.actor.isOwner;
|
2020-06-24 14:22:36 -04:00
|
|
|
const data = {
|
|
|
|
owner: isOwner,
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
limited: this.actor.limited,
|
2020-06-24 14:22:36 -04:00
|
|
|
options: this.options,
|
|
|
|
editable: this.isEditable,
|
|
|
|
cssClass: isOwner ? "editable" : "locked",
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
isCharacter: this.actor.data.type === "character",
|
|
|
|
isNPC: this.actor.data.type === "npc",
|
|
|
|
isStarship: this.actor.data.type === "starship",
|
|
|
|
isVehicle: this.actor.data.type === 'vehicle',
|
2020-06-24 14:22:36 -04:00
|
|
|
config: CONFIG.SW5E,
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
rollData: this.actor.getRollData.bind(this.actor)
|
2020-06-24 14:22:36 -04:00
|
|
|
};
|
|
|
|
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
// The Actor's data
|
|
|
|
const actorData = this.actor.data.toObject(false);
|
|
|
|
data.actor = actorData;
|
|
|
|
data.data = actorData.data;
|
|
|
|
|
|
|
|
// Owned Items
|
|
|
|
data.items = actorData.items;
|
|
|
|
for ( let i of data.items ) {
|
|
|
|
const item = this.actor.items.get(i._id);
|
|
|
|
i.labels = item.labels;
|
|
|
|
}
|
2020-06-24 14:22:36 -04:00
|
|
|
data.items.sort((a, b) => (a.sort || 0) - (b.sort || 0));
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
|
|
|
|
// Labels and filters
|
2020-06-24 14:22:36 -04:00
|
|
|
data.labels = this.actor.labels || {};
|
|
|
|
data.filters = this._filters;
|
|
|
|
|
|
|
|
// Ability Scores
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
for ( let [a, abl] of Object.entries(actorData.data.abilities)) {
|
2020-06-24 14:22:36 -04:00
|
|
|
abl.icon = this._getProficiencyIcon(abl.proficient);
|
|
|
|
abl.hover = CONFIG.SW5E.proficiencyLevels[abl.proficient];
|
|
|
|
abl.label = CONFIG.SW5E.abilities[a];
|
|
|
|
}
|
|
|
|
|
2020-10-08 02:20:12 -04:00
|
|
|
// Skills
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
if (actorData.data.skills) {
|
|
|
|
for ( let [s, skl] of Object.entries(actorData.data.skills)) {
|
2020-09-11 17:11:11 -04:00
|
|
|
skl.ability = CONFIG.SW5E.abilityAbbreviations[skl.ability];
|
|
|
|
skl.icon = this._getProficiencyIcon(skl.value);
|
|
|
|
skl.hover = CONFIG.SW5E.proficiencyLevels[skl.value];
|
2021-04-13 23:01:03 -04:00
|
|
|
if (data.actor.type === "starship") {
|
|
|
|
skl.label = CONFIG.SW5E.starshipSkills[s];
|
|
|
|
}else{
|
|
|
|
skl.label = CONFIG.SW5E.skills[s];
|
|
|
|
}
|
2020-09-11 17:11:11 -04:00
|
|
|
}
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
2020-11-12 17:30:07 -05:00
|
|
|
// Movement speeds
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
data.movement = this._getMovementSpeed(actorData);
|
2020-11-12 17:30:07 -05:00
|
|
|
|
2021-01-04 15:23:30 -05:00
|
|
|
// Senses
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
data.senses = this._getSenses(actorData);
|
2021-01-04 15:23:30 -05:00
|
|
|
|
2020-06-24 14:22:36 -04:00
|
|
|
// Update traits
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
this._prepareTraits(actorData.data.traits);
|
2020-06-24 14:22:36 -04:00
|
|
|
|
|
|
|
// Prepare owned items
|
|
|
|
this._prepareItems(data);
|
|
|
|
|
2020-10-08 02:20:12 -04:00
|
|
|
// Prepare active effects
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
data.effects = prepareActiveEffectCategories(this.actor.effects);
|
2020-10-08 02:20:12 -04:00
|
|
|
|
2020-06-24 14:22:36 -04:00
|
|
|
// Return data to the sheet
|
|
|
|
return data
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
2020-11-12 17:30:07 -05:00
|
|
|
/**
|
2021-01-18 23:49:04 -05:00
|
|
|
* Prepare the display of movement speed data for the Actor*
|
|
|
|
* @param {object} actorData The Actor data being prepared.
|
|
|
|
* @param {boolean} [largestPrimary=false] Show the largest movement speed as "primary", otherwise show "walk"
|
2020-11-12 17:30:07 -05:00
|
|
|
* @returns {{primary: string, special: string}}
|
|
|
|
* @private
|
|
|
|
*/
|
2021-01-18 23:49:04 -05:00
|
|
|
_getMovementSpeed(actorData, largestPrimary=false) {
|
2021-01-04 15:23:30 -05:00
|
|
|
const movement = actorData.data.attributes.movement || {};
|
2021-01-18 23:49:04 -05:00
|
|
|
|
|
|
|
// Prepare an array of available movement speeds
|
|
|
|
let speeds = [
|
2020-11-12 17:30:07 -05:00
|
|
|
[movement.burrow, `${game.i18n.localize("SW5E.MovementBurrow")} ${movement.burrow}`],
|
|
|
|
[movement.climb, `${game.i18n.localize("SW5E.MovementClimb")} ${movement.climb}`],
|
|
|
|
[movement.fly, `${game.i18n.localize("SW5E.MovementFly")} ${movement.fly}` + (movement.hover ? ` (${game.i18n.localize("SW5E.MovementHover")})` : "")],
|
|
|
|
[movement.swim, `${game.i18n.localize("SW5E.MovementSwim")} ${movement.swim}`]
|
2021-01-18 23:49:04 -05:00
|
|
|
]
|
|
|
|
if ( largestPrimary ) {
|
|
|
|
speeds.push([movement.walk, `${game.i18n.localize("SW5E.MovementWalk")} ${movement.walk}`]);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Filter and sort speeds on their values
|
|
|
|
speeds = speeds.filter(s => !!s[0]).sort((a, b) => b[0] - a[0]);
|
|
|
|
|
|
|
|
// Case 1: Largest as primary
|
|
|
|
if ( largestPrimary ) {
|
|
|
|
let primary = speeds.shift();
|
|
|
|
return {
|
|
|
|
primary: `${primary ? primary[1] : "0"} ${movement.units}`,
|
|
|
|
special: speeds.map(s => s[1]).join(", ")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Case 2: Walk as primary
|
|
|
|
else {
|
|
|
|
return {
|
|
|
|
primary: `${movement.walk || 0} ${movement.units}`,
|
|
|
|
special: speeds.length ? speeds.map(s => s[1]).join(", ") : ""
|
|
|
|
}
|
2020-11-12 17:30:07 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
2021-01-04 15:23:30 -05:00
|
|
|
_getSenses(actorData) {
|
|
|
|
const senses = actorData.data.attributes.senses || {};
|
|
|
|
const tags = {};
|
|
|
|
for ( let [k, label] of Object.entries(CONFIG.SW5E.senses) ) {
|
|
|
|
const v = senses[k] ?? 0
|
|
|
|
if ( v === 0 ) continue;
|
|
|
|
tags[k] = `${game.i18n.localize(label)} ${v} ${senses.units}`;
|
|
|
|
}
|
|
|
|
if ( !!senses.special ) tags["special"] = senses.special;
|
|
|
|
return tags;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
2020-10-08 02:20:12 -04:00
|
|
|
/**
|
|
|
|
* Prepare the data structure for traits data like languages, resistances & vulnerabilities, and proficiencies
|
|
|
|
* @param {object} traits The raw traits data object from the actor data
|
|
|
|
* @private
|
|
|
|
*/
|
2020-06-24 14:22:36 -04:00
|
|
|
_prepareTraits(traits) {
|
|
|
|
const map = {
|
2020-09-11 17:11:11 -04:00
|
|
|
"dr": CONFIG.SW5E.damageResistanceTypes,
|
|
|
|
"di": CONFIG.SW5E.damageResistanceTypes,
|
|
|
|
"dv": CONFIG.SW5E.damageResistanceTypes,
|
2020-06-24 14:22:36 -04:00
|
|
|
"ci": CONFIG.SW5E.conditionTypes,
|
|
|
|
"languages": CONFIG.SW5E.languages,
|
|
|
|
"armorProf": CONFIG.SW5E.armorProficiencies,
|
|
|
|
"weaponProf": CONFIG.SW5E.weaponProficiencies,
|
|
|
|
"toolProf": CONFIG.SW5E.toolProficiencies
|
|
|
|
};
|
|
|
|
for ( let [t, choices] of Object.entries(map) ) {
|
|
|
|
const trait = traits[t];
|
|
|
|
if ( !trait ) continue;
|
|
|
|
let values = [];
|
|
|
|
if ( trait.value ) {
|
|
|
|
values = trait.value instanceof Array ? trait.value : [trait.value];
|
|
|
|
}
|
|
|
|
trait.selected = values.reduce((obj, t) => {
|
|
|
|
obj[t] = choices[t];
|
|
|
|
return obj;
|
|
|
|
}, {});
|
|
|
|
|
|
|
|
// Add custom entry
|
|
|
|
if ( trait.custom ) {
|
|
|
|
trait.custom.split(";").forEach((c, i) => trait.selected[`custom${i+1}`] = c.trim());
|
|
|
|
}
|
|
|
|
trait.cssClass = !isObjectEmpty(trait.selected) ? "" : "inactive";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Insert a power into the powerbook object when rendering the character sheet
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
* @param {Object} data The Actor data being prepared
|
|
|
|
* @param {Array} powers The power data being prepared
|
|
|
|
* @param {string} school The school of the powerbook being prepared
|
2020-06-24 14:22:36 -04:00
|
|
|
* @private
|
|
|
|
*/
|
2021-02-16 14:40:06 -06:00
|
|
|
_preparePowerbook(data, powers, school) {
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
const owner = this.actor.isOwner;
|
2020-06-24 14:22:36 -04:00
|
|
|
const levels = data.data.powers;
|
|
|
|
const powerbook = {};
|
|
|
|
|
|
|
|
// Define some mappings
|
|
|
|
const sections = {
|
|
|
|
"atwill": -20,
|
|
|
|
"innate": -10,
|
|
|
|
};
|
|
|
|
|
|
|
|
// Label power slot uses headers
|
|
|
|
const useLabels = {
|
|
|
|
"-20": "-",
|
|
|
|
"-10": "-",
|
|
|
|
"0": "∞"
|
|
|
|
};
|
|
|
|
|
|
|
|
// Format a powerbook entry for a certain indexed level
|
2020-10-06 00:45:33 -04:00
|
|
|
const registerSection = (sl, i, label, {prepMode="prepared", value, max, override}={}) => {
|
2020-06-24 14:22:36 -04:00
|
|
|
powerbook[i] = {
|
|
|
|
order: i,
|
|
|
|
label: label,
|
|
|
|
usesSlots: i > 0,
|
2020-10-06 00:45:33 -04:00
|
|
|
canCreate: owner,
|
2020-06-24 14:22:36 -04:00
|
|
|
canPrepare: (data.actor.type === "character") && (i >= 1),
|
|
|
|
powers: [],
|
2020-10-06 00:45:33 -04:00
|
|
|
uses: useLabels[i] || value || 0,
|
|
|
|
slots: useLabels[i] || max || 0,
|
|
|
|
override: override || 0,
|
2021-02-16 14:40:06 -06:00
|
|
|
dataset: {"type": "power", "level": prepMode in sections ? 1 : i, "preparation.mode": prepMode, "school": school},
|
2020-06-24 14:22:36 -04:00
|
|
|
prop: sl
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
// Determine the maximum power level which has a slot
|
|
|
|
const maxLevel = Array.fromRange(10).reduce((max, i) => {
|
|
|
|
if ( i === 0 ) return max;
|
|
|
|
const level = levels[`power${i}`];
|
|
|
|
if ( (level.max || level.override ) && ( i > max ) ) max = i;
|
|
|
|
return max;
|
|
|
|
}, 0);
|
|
|
|
|
2020-10-06 00:45:33 -04:00
|
|
|
// Level-based powercasters have cantrips and leveled slots
|
2020-06-24 14:22:36 -04:00
|
|
|
if ( maxLevel > 0 ) {
|
|
|
|
registerSection("power0", 0, CONFIG.SW5E.powerLevels[0]);
|
|
|
|
for (let lvl = 1; lvl <= maxLevel; lvl++) {
|
|
|
|
const sl = `power${lvl}`;
|
|
|
|
registerSection(sl, lvl, CONFIG.SW5E.powerLevels[lvl], levels[sl]);
|
|
|
|
}
|
|
|
|
}
|
2020-11-12 17:30:07 -05:00
|
|
|
|
2020-06-24 14:22:36 -04:00
|
|
|
// Iterate over every power item, adding powers to the powerbook by section
|
|
|
|
powers.forEach(power => {
|
|
|
|
const mode = power.data.preparation.mode || "prepared";
|
|
|
|
let s = power.data.level || 0;
|
|
|
|
const sl = `power${s}`;
|
|
|
|
|
2020-10-06 00:45:33 -04:00
|
|
|
// Specialized powercasting modes (if they exist)
|
2020-06-24 14:22:36 -04:00
|
|
|
if ( mode in sections ) {
|
|
|
|
s = sections[mode];
|
|
|
|
if ( !powerbook[s] ){
|
2020-10-06 00:45:33 -04:00
|
|
|
const l = levels[mode] || {};
|
|
|
|
const config = CONFIG.SW5E.powerPreparationModes[mode];
|
|
|
|
registerSection(mode, s, config, {
|
|
|
|
prepMode: mode,
|
|
|
|
value: l.value,
|
|
|
|
max: l.max,
|
|
|
|
override: l.override
|
|
|
|
});
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-10-06 00:45:33 -04:00
|
|
|
// Sections for higher-level powers which the caster "should not" have, but power items exist for
|
2020-06-24 14:22:36 -04:00
|
|
|
else if ( !powerbook[s] ) {
|
2020-10-06 00:45:33 -04:00
|
|
|
registerSection(sl, s, CONFIG.SW5E.powerLevels[s], {levels: levels[sl]});
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
// Add the power to the relevant heading
|
|
|
|
powerbook[s].powers.push(power);
|
|
|
|
});
|
|
|
|
|
|
|
|
// Sort the powerbook by section level
|
|
|
|
const sorted = Object.values(powerbook);
|
|
|
|
sorted.sort((a, b) => a.order - b.order);
|
|
|
|
return sorted;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Determine whether an Owned Item will be shown based on the current set of filters
|
|
|
|
* @return {boolean}
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_filterItems(items, filters) {
|
|
|
|
return items.filter(item => {
|
|
|
|
const data = item.data;
|
|
|
|
|
|
|
|
// Action usage
|
|
|
|
for ( let f of ["action", "bonus", "reaction"] ) {
|
|
|
|
if ( filters.has(f) ) {
|
|
|
|
if ((data.activation && (data.activation.type !== f))) return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Power-specific filters
|
|
|
|
if ( filters.has("ritual") ) {
|
|
|
|
if (data.components.ritual !== true) return false;
|
|
|
|
}
|
|
|
|
if ( filters.has("concentration") ) {
|
|
|
|
if (data.components.concentration !== true) return false;
|
|
|
|
}
|
|
|
|
if ( filters.has("prepared") ) {
|
|
|
|
if ( data.level === 0 || ["innate", "always"].includes(data.preparation.mode) ) return true;
|
|
|
|
if ( this.actor.data.type === "npc" ) return true;
|
2021-04-06 16:03:48 -04:00
|
|
|
if ( this.actor.data.type === "starship" ) return true;
|
2020-06-24 14:22:36 -04:00
|
|
|
return data.preparation.prepared;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Equipment-specific filters
|
|
|
|
if ( filters.has("equipped") ) {
|
2020-09-11 17:11:11 -04:00
|
|
|
if ( data.equipped !== true ) return false;
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the font-awesome icon used to display a certain level of skill proficiency
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_getProficiencyIcon(level) {
|
|
|
|
const icons = {
|
|
|
|
0: '<i class="far fa-circle"></i>',
|
|
|
|
0.5: '<i class="fas fa-adjust"></i>',
|
|
|
|
1: '<i class="fas fa-check"></i>',
|
|
|
|
2: '<i class="fas fa-check-double"></i>'
|
|
|
|
};
|
2021-01-18 23:49:04 -05:00
|
|
|
return icons[level] || icons[0];
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/* Event Listeners and Handlers
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Activate event listeners using the prepared sheet HTML
|
|
|
|
* @param html {HTML} The prepared HTML object ready to be rendered into the DOM
|
|
|
|
*/
|
|
|
|
activateListeners(html) {
|
|
|
|
|
|
|
|
// Activate Item Filters
|
|
|
|
const filterLists = html.find(".filter-list");
|
|
|
|
filterLists.each(this._initializeFilterItemList.bind(this));
|
|
|
|
filterLists.on("click", ".filter-item", this._onToggleFilter.bind(this));
|
|
|
|
|
|
|
|
// Item summaries
|
2020-11-12 17:30:07 -05:00
|
|
|
html.find('.item .item-name.rollable h4').click(event => this._onItemSummary(event));
|
2020-06-24 14:22:36 -04:00
|
|
|
|
|
|
|
// Editable Only Listeners
|
|
|
|
if ( this.isEditable ) {
|
|
|
|
|
2020-09-11 17:11:11 -04:00
|
|
|
// Input focus and update
|
|
|
|
const inputs = html.find("input");
|
|
|
|
inputs.focus(ev => ev.currentTarget.select());
|
|
|
|
inputs.addBack().find('[data-dtype="Number"]').change(this._onChangeInputDelta.bind(this));
|
2020-06-24 14:22:36 -04:00
|
|
|
|
|
|
|
// Ability Proficiency
|
|
|
|
html.find('.ability-proficiency').click(this._onToggleAbilityProficiency.bind(this));
|
|
|
|
|
|
|
|
// Toggle Skill Proficiency
|
|
|
|
html.find('.skill-proficiency').on("click contextmenu", this._onCycleSkillProficiency.bind(this));
|
|
|
|
|
|
|
|
// Trait Selector
|
|
|
|
html.find('.trait-selector').click(this._onTraitSelector.bind(this));
|
|
|
|
|
|
|
|
// Configure Special Flags
|
2021-01-04 15:23:30 -05:00
|
|
|
html.find('.config-button').click(this._onConfigMenu.bind(this));
|
2020-06-24 14:22:36 -04:00
|
|
|
|
|
|
|
// Owned Item management
|
|
|
|
html.find('.item-create').click(this._onItemCreate.bind(this));
|
|
|
|
html.find('.item-edit').click(this._onItemEdit.bind(this));
|
|
|
|
html.find('.item-delete').click(this._onItemDelete.bind(this));
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
html.find('.item-collapse').click(this._onItemCollapse.bind(this));
|
2020-06-24 14:22:36 -04:00
|
|
|
html.find('.item-uses input').click(ev => ev.target.select()).change(this._onUsesChange.bind(this));
|
|
|
|
html.find('.slot-max-override').click(this._onPowerSlotOverride.bind(this));
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
html.find('.increment-class-level').click(this._onIncrementClassLevel.bind(this));
|
|
|
|
html.find('.decrement-class-level').click(this._onDecrementClassLevel.bind(this));
|
2020-10-08 02:20:12 -04:00
|
|
|
|
|
|
|
// Active Effect management
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
html.find(".effect-control").click(ev => onManageActiveEffect(ev, this.actor));
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
// Owner Only Listeners
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
if ( this.actor.isOwner ) {
|
2020-06-24 14:22:36 -04:00
|
|
|
|
|
|
|
// Ability Checks
|
|
|
|
html.find('.ability-name').click(this._onRollAbilityTest.bind(this));
|
|
|
|
|
|
|
|
|
|
|
|
// Roll Skill Checks
|
|
|
|
html.find('.skill-name').click(this._onRollSkillCheck.bind(this));
|
|
|
|
|
|
|
|
// Item Rolling
|
|
|
|
html.find('.item .item-image').click(event => this._onItemRoll(event));
|
|
|
|
html.find('.item .item-recharge').click(event => this._onItemRecharge(event));
|
|
|
|
}
|
|
|
|
|
|
|
|
// Otherwise remove rollable classes
|
|
|
|
else {
|
|
|
|
html.find(".rollable").each((i, el) => el.classList.remove("rollable"));
|
|
|
|
}
|
|
|
|
|
|
|
|
// Handle default listeners last so system listeners are triggered first
|
|
|
|
super.activateListeners(html);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Iinitialize Item list filters by activating the set of filters which are currently applied
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_initializeFilterItemList(i, ul) {
|
|
|
|
const set = this._filters[ul.dataset.filter];
|
|
|
|
const filters = ul.querySelectorAll(".filter-item");
|
|
|
|
for ( let li of filters ) {
|
|
|
|
if ( set.has(li.dataset.filter) ) li.classList.add("active");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
/* Event Listeners and Handlers */
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle input changes to numeric form fields, allowing them to accept delta-typed inputs
|
|
|
|
* @param event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onChangeInputDelta(event) {
|
|
|
|
const input = event.target;
|
|
|
|
const value = input.value;
|
|
|
|
if ( ["+", "-"].includes(value[0]) ) {
|
|
|
|
let delta = parseFloat(value);
|
|
|
|
input.value = getProperty(this.actor.data, input.name) + delta;
|
|
|
|
} else if ( value[0] === "=" ) {
|
|
|
|
input.value = value.slice(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
2021-01-04 15:23:30 -05:00
|
|
|
* Handle spawning the TraitSelector application which allows a checkbox of multiple trait options
|
|
|
|
* @param {Event} event The click event which originated the selection
|
|
|
|
* @private
|
2020-06-24 14:22:36 -04:00
|
|
|
*/
|
2021-01-04 15:23:30 -05:00
|
|
|
_onConfigMenu(event) {
|
2020-06-24 14:22:36 -04:00
|
|
|
event.preventDefault();
|
2021-01-04 15:23:30 -05:00
|
|
|
const button = event.currentTarget;
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
let app;
|
2021-01-04 15:23:30 -05:00
|
|
|
switch ( button.dataset.action ) {
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
case "hit-dice":
|
|
|
|
app = new ActorHitDiceConfig(this.object);
|
|
|
|
break;
|
2021-01-04 15:23:30 -05:00
|
|
|
case "movement":
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
app = new ActorMovementConfig(this.object);
|
2021-01-04 15:23:30 -05:00
|
|
|
break;
|
|
|
|
case "flags":
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
app = new ActorSheetFlags(this.object);
|
2021-01-04 15:23:30 -05:00
|
|
|
break;
|
|
|
|
case "senses":
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
app = new ActorSensesConfig(this.object);
|
|
|
|
break;
|
|
|
|
case "type":
|
|
|
|
new ActorTypeConfig(this.object).render(true);
|
2021-01-04 15:23:30 -05:00
|
|
|
break;
|
|
|
|
}
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
app?.render(true);
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle cycling proficiency in a Skill
|
|
|
|
* @param {Event} event A click or contextmenu event which triggered the handler
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onCycleSkillProficiency(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
const field = $(event.currentTarget).siblings('input[type="hidden"]');
|
|
|
|
|
|
|
|
// Get the current level and the array of levels
|
|
|
|
const level = parseFloat(field.val());
|
|
|
|
const levels = [0, 1, 0.5, 2];
|
|
|
|
let idx = levels.indexOf(level);
|
|
|
|
|
|
|
|
// Toggle next level - forward on click, backwards on right
|
|
|
|
if ( event.type === "click" ) {
|
|
|
|
field.val(levels[(idx === levels.length - 1) ? 0 : idx + 1]);
|
|
|
|
} else if ( event.type === "contextmenu" ) {
|
|
|
|
field.val(levels[(idx === 0) ? levels.length - 1 : idx - 1]);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Update the field value and save the form
|
|
|
|
this._onSubmit(event);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/** @override */
|
2020-09-11 17:11:11 -04:00
|
|
|
async _onDropActor(event, data) {
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
const canPolymorph = game.user.isGM || (this.actor.isOwner && game.settings.get('sw5e', 'allowPolymorphing'));
|
2020-09-11 17:11:11 -04:00
|
|
|
if ( !canPolymorph ) return false;
|
2020-06-24 14:22:36 -04:00
|
|
|
|
|
|
|
// Get the target actor
|
|
|
|
let sourceActor = null;
|
|
|
|
if (data.pack) {
|
|
|
|
const pack = game.packs.find(p => p.collection === data.pack);
|
|
|
|
sourceActor = await pack.getEntity(data.id);
|
|
|
|
} else {
|
|
|
|
sourceActor = game.actors.get(data.id);
|
|
|
|
}
|
|
|
|
if ( !sourceActor ) return;
|
|
|
|
|
|
|
|
// Define a function to record polymorph settings for future use
|
|
|
|
const rememberOptions = html => {
|
|
|
|
const options = {};
|
|
|
|
html.find('input').each((i, el) => {
|
|
|
|
options[el.name] = el.checked;
|
|
|
|
});
|
|
|
|
const settings = mergeObject(game.settings.get('sw5e', 'polymorphSettings') || {}, options);
|
|
|
|
game.settings.set('sw5e', 'polymorphSettings', settings);
|
|
|
|
return settings;
|
|
|
|
};
|
|
|
|
|
|
|
|
// Create and render the Dialog
|
|
|
|
return new Dialog({
|
|
|
|
title: game.i18n.localize('SW5E.PolymorphPromptTitle'),
|
|
|
|
content: {
|
|
|
|
options: game.settings.get('sw5e', 'polymorphSettings'),
|
|
|
|
i18n: SW5E.polymorphSettings,
|
|
|
|
isToken: this.actor.isToken
|
|
|
|
},
|
|
|
|
default: 'accept',
|
|
|
|
buttons: {
|
|
|
|
accept: {
|
|
|
|
icon: '<i class="fas fa-check"></i>',
|
|
|
|
label: game.i18n.localize('SW5E.PolymorphAcceptSettings'),
|
|
|
|
callback: html => this.actor.transformInto(sourceActor, rememberOptions(html))
|
|
|
|
},
|
|
|
|
wildshape: {
|
|
|
|
icon: '<i class="fas fa-paw"></i>',
|
|
|
|
label: game.i18n.localize('SW5E.PolymorphWildShape'),
|
|
|
|
callback: html => this.actor.transformInto(sourceActor, {
|
2021-01-04 15:23:30 -05:00
|
|
|
keepBio: true,
|
|
|
|
keepClass: true,
|
2020-06-24 14:22:36 -04:00
|
|
|
keepMental: true,
|
|
|
|
mergeSaves: true,
|
|
|
|
mergeSkills: true,
|
|
|
|
transformTokens: rememberOptions(html).transformTokens
|
|
|
|
})
|
|
|
|
},
|
|
|
|
polymorph: {
|
|
|
|
icon: '<i class="fas fa-pastafarianism"></i>',
|
|
|
|
label: game.i18n.localize('SW5E.Polymorph'),
|
|
|
|
callback: html => this.actor.transformInto(sourceActor, {
|
|
|
|
transformTokens: rememberOptions(html).transformTokens
|
|
|
|
})
|
|
|
|
},
|
|
|
|
cancel: {
|
|
|
|
icon: '<i class="fas fa-times"></i>',
|
|
|
|
label: game.i18n.localize('Cancel')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, {
|
|
|
|
classes: ['dialog', 'sw5e'],
|
|
|
|
width: 600,
|
|
|
|
template: 'systems/sw5e/templates/apps/polymorph-prompt.html'
|
|
|
|
}).render(true);
|
|
|
|
}
|
|
|
|
|
2020-09-11 17:11:11 -04:00
|
|
|
/* -------------------------------------------- */
|
2020-11-12 17:30:07 -05:00
|
|
|
|
2020-09-11 17:11:11 -04:00
|
|
|
/** @override */
|
|
|
|
async _onDropItemCreate(itemData) {
|
|
|
|
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
// Check to make sure items of this type are allowed on this actor
|
|
|
|
if ( this.constructor.unsupportedItemTypes.has(itemData.type) ) {
|
|
|
|
return ui.notifications.warn(game.i18n.format("SW5E.ActorWarningInvalidItem", {
|
|
|
|
itemType: game.i18n.localize(CONFIG.Item.typeLabels[itemData.type]),
|
|
|
|
actorType: game.i18n.localize(CONFIG.Actor.typeLabels[this.actor.type])
|
|
|
|
}));
|
|
|
|
}
|
|
|
|
|
2020-09-11 17:11:11 -04:00
|
|
|
// Create a Consumable power scroll on the Inventory tab
|
|
|
|
if ( (itemData.type === "power") && (this._tabs[0].active === "inventory") ) {
|
|
|
|
const scroll = await Item5e.createScrollFromPower(itemData);
|
|
|
|
itemData = scroll.data;
|
|
|
|
}
|
|
|
|
|
2021-01-19 21:47:38 -05:00
|
|
|
if ( itemData.data ) {
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
// Ignore certain statuses
|
|
|
|
["equipped", "proficient", "prepared"].forEach(k => delete itemData.data[k]);
|
|
|
|
|
|
|
|
// Downgrade ATTUNED to REQUIRED
|
|
|
|
itemData.data.attunement = Math.min(itemData.data.attunement, CONFIG.SW5E.attunementTypes.REQUIRED);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Stack identical consumables
|
|
|
|
if ( itemData.type === "consumable" && itemData.flags.core?.sourceId ) {
|
|
|
|
const similarItem = this.actor.items.find(i => {
|
|
|
|
const sourceId = i.getFlag("core", "sourceId");
|
|
|
|
return sourceId && (sourceId === itemData.flags.core?.sourceId) &&
|
|
|
|
(i.type === "consumable");
|
|
|
|
});
|
|
|
|
if ( similarItem ) {
|
|
|
|
return similarItem.update({
|
|
|
|
'data.quantity': similarItem.data.data.quantity + Math.max(itemData.data.quantity, 1)
|
|
|
|
});
|
|
|
|
}
|
2021-01-19 21:47:38 -05:00
|
|
|
}
|
|
|
|
|
2020-09-11 17:11:11 -04:00
|
|
|
// Create the owned item as normal
|
2020-11-12 17:30:07 -05:00
|
|
|
return super._onDropItemCreate(itemData);
|
2020-09-11 17:11:11 -04:00
|
|
|
}
|
|
|
|
|
2020-06-24 14:22:36 -04:00
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle enabling editing for a power slot override value
|
|
|
|
* @param {MouseEvent} event The originating click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
async _onPowerSlotOverride (event) {
|
|
|
|
const span = event.currentTarget.parentElement;
|
|
|
|
const level = span.dataset.level;
|
|
|
|
const override = this.actor.data.data.powers[level].override || span.dataset.slots;
|
|
|
|
const input = document.createElement("INPUT");
|
|
|
|
input.type = "text";
|
|
|
|
input.name = `data.powers.${level}.override`;
|
|
|
|
input.value = override;
|
|
|
|
input.placeholder = span.dataset.slots;
|
|
|
|
input.dataset.dtype = "Number";
|
|
|
|
|
|
|
|
// Replace the HTML
|
|
|
|
const parent = span.parentElement;
|
|
|
|
parent.removeChild(span);
|
|
|
|
parent.appendChild(input);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Change the uses amount of an Owned Item within the Actor
|
|
|
|
* @param {Event} event The triggering click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
async _onUsesChange(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
const itemId = event.currentTarget.closest(".item").dataset.itemId;
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
const item = this.actor.items.get(itemId);
|
2020-06-24 14:22:36 -04:00
|
|
|
const uses = Math.clamped(0, parseInt(event.target.value), item.data.data.uses.max);
|
|
|
|
event.target.value = uses;
|
|
|
|
return item.update({ 'data.uses.value': uses });
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle rolling of an item from the Actor sheet, obtaining the Item instance and dispatching to it's roll method
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onItemRoll(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
const itemId = event.currentTarget.closest(".item").dataset.itemId;
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
const item = this.actor.items.get(itemId);
|
2021-01-04 15:23:30 -05:00
|
|
|
return item.roll();
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle attempting to recharge an item usage by rolling a recharge check
|
|
|
|
* @param {Event} event The originating click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onItemRecharge(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
const itemId = event.currentTarget.closest(".item").dataset.itemId;
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
const item = this.actor.items.get(itemId);
|
2020-06-24 14:22:36 -04:00
|
|
|
return item.rollRecharge();
|
|
|
|
};
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle rolling of an item from the Actor sheet, obtaining the Item instance and dispatching to it's roll method
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onItemSummary(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
let li = $(event.currentTarget).parents(".item"),
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
item = this.actor.items.get(li.data("item-id")),
|
|
|
|
chatData = item.getChatData({secrets: this.actor.isOwner});
|
2020-06-24 14:22:36 -04:00
|
|
|
|
|
|
|
// Toggle summary
|
|
|
|
if ( li.hasClass("expanded") ) {
|
|
|
|
let summary = li.children(".item-summary");
|
|
|
|
summary.slideUp(200, () => summary.remove());
|
|
|
|
} else {
|
|
|
|
let div = $(`<div class="item-summary">${chatData.description.value}</div>`);
|
|
|
|
let props = $(`<div class="item-properties"></div>`);
|
|
|
|
chatData.properties.forEach(p => props.append(`<span class="tag">${p}</span>`));
|
|
|
|
div.append(props);
|
|
|
|
li.append(div.hide());
|
|
|
|
div.slideDown(200);
|
|
|
|
}
|
|
|
|
li.toggleClass("expanded");
|
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle creating a new Owned Item for the actor using initial data defined in the HTML dataset
|
|
|
|
* @param {Event} event The originating click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onItemCreate(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
const header = event.currentTarget;
|
|
|
|
const type = header.dataset.type;
|
|
|
|
const itemData = {
|
2020-09-11 17:11:11 -04:00
|
|
|
name: game.i18n.format("SW5E.ItemNew", {type: type.capitalize()}),
|
2020-06-24 14:22:36 -04:00
|
|
|
type: type,
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
data: foundry.utils.deepClone(header.dataset)
|
2020-06-24 14:22:36 -04:00
|
|
|
};
|
|
|
|
delete itemData.data["type"];
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
return this.actor.createEmbeddedDocuments("Item", [itemData]);
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle editing an existing Owned Item for the Actor
|
|
|
|
* @param {Event} event The originating click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onItemEdit(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
const li = event.currentTarget.closest(".item");
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
const item = this.actor.items.get(li.dataset.itemId);
|
|
|
|
return item.sheet.render(true);
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle deleting an existing Owned Item for the Actor
|
|
|
|
* @param {Event} event The originating click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onItemDelete(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
const li = event.currentTarget.closest(".item");
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
const item = this.actor.items.get(li.dataset.itemId);
|
|
|
|
if ( item ) return item.delete();
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
2021-04-06 16:03:48 -04:00
|
|
|
/**
|
|
|
|
* Handle collapsing a Feature row on the actor sheet
|
|
|
|
* @param {Event} event The originating click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
|
|
|
|
_onItemCollapse(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
|
|
|
|
event.currentTarget.classList.toggle("active");
|
|
|
|
|
|
|
|
const li = event.currentTarget.closest("li");
|
|
|
|
const content = li.querySelector(".content");
|
|
|
|
|
|
|
|
if (content.style.display === "none") {
|
|
|
|
content.style.display = "block";
|
|
|
|
} else {
|
|
|
|
content.style.display = "none";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle incrementing class level on the actor sheet
|
|
|
|
* @param {Event} event The originating click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
|
|
|
|
_onIncrementClassLevel(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
|
|
|
|
const div = event.currentTarget.closest(".character")
|
|
|
|
const li = event.currentTarget.closest("li");
|
|
|
|
|
|
|
|
const actorId = div.id.split("-")[1];
|
|
|
|
const itemId = li.dataset.itemId;
|
|
|
|
|
|
|
|
const actor = game.actors.get(actorId);
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
const item = actor.items.get(itemId);
|
2021-04-06 16:03:48 -04:00
|
|
|
|
|
|
|
let levels = item.data.data.levels;
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
const update = {_id: item.data._id, data: {levels: (levels + 1) }};
|
2021-04-06 16:03:48 -04:00
|
|
|
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
actor.updateEmbeddedDocuments("Item", [update]);
|
2021-04-06 16:03:48 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle decrementing class level on the actor sheet
|
|
|
|
* @param {Event} event The originating click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
|
|
|
|
_onDecrementClassLevel(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
|
|
|
|
const div = event.currentTarget.closest(".character")
|
|
|
|
const li = event.currentTarget.closest("li");
|
|
|
|
|
|
|
|
const actorId = div.id.split("-")[1];
|
|
|
|
const itemId = li.dataset.itemId;
|
|
|
|
|
|
|
|
const actor = game.actors.get(actorId);
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
const item = actor.items.get(itemId);
|
2021-04-06 16:03:48 -04:00
|
|
|
|
|
|
|
let levels = item.data.data.levels;
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
const update = {_id: item.data._id, data: {levels: (levels - 1) }};
|
2021-04-06 16:03:48 -04:00
|
|
|
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
actor.updateEmbeddedDocuments("Item", [update]);
|
2021-04-06 16:03:48 -04:00
|
|
|
}
|
|
|
|
|
2020-06-24 14:22:36 -04:00
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle rolling an Ability check, either a test or a saving throw
|
|
|
|
* @param {Event} event The originating click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onRollAbilityTest(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
let ability = event.currentTarget.parentElement.dataset.ability;
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
return this.actor.rollAbility(ability, {event: event});
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle rolling a Skill check
|
|
|
|
* @param {Event} event The originating click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onRollSkillCheck(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
const skill = event.currentTarget.parentElement.dataset.skill;
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
return this.actor.rollSkill(skill, {event: event});
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle toggling Ability score proficiency level
|
|
|
|
* @param {Event} event The originating click event
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onToggleAbilityProficiency(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
const field = event.currentTarget.previousElementSibling;
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
return this.actor.update({[field.name]: 1 - parseInt(field.value)});
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle toggling of filters to display a different set of owned items
|
|
|
|
* @param {Event} event The click event which triggered the toggle
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onToggleFilter(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
const li = event.currentTarget;
|
|
|
|
const set = this._filters[li.parentElement.dataset.filter];
|
|
|
|
const filter = li.dataset.filter;
|
|
|
|
if ( set.has(filter) ) set.delete(filter);
|
|
|
|
else set.add(filter);
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
return this.render();
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handle spawning the TraitSelector application which allows a checkbox of multiple trait options
|
|
|
|
* @param {Event} event The click event which originated the selection
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
_onTraitSelector(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
const a = event.currentTarget;
|
|
|
|
const label = a.parentElement.querySelector("label");
|
2020-09-11 17:11:11 -04:00
|
|
|
const choices = CONFIG.SW5E[a.dataset.options];
|
|
|
|
const options = { name: a.dataset.target, title: label.innerText, choices };
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
return new TraitSelector(this.actor, options).render(true)
|
2020-06-24 14:22:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
|
|
|
|
/** @override */
|
|
|
|
_getHeaderButtons() {
|
|
|
|
let buttons = super._getHeaderButtons();
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
if (this.actor.isPolymorphed) {
|
|
|
|
buttons.unshift({
|
|
|
|
label: 'SW5E.PolymorphRestoreTransformation',
|
|
|
|
class: "restore-transformation",
|
|
|
|
icon: "fas fa-backward",
|
|
|
|
onclick: () => this.actor.revertOriginalForm()
|
|
|
|
});
|
|
|
|
}
|
2020-06-24 14:22:36 -04:00
|
|
|
return buttons;
|
|
|
|
}
|
Updated to DND5e 1.3.2
Things unfinished:
- Migration
- The update adds new sections to the class sheet to allow some light customisation, this hasn't been included, but could be extended for the sake of dynamic classes with automatic class features and more
- The French
- The packs have not yet been updated, meaning due to the addition of a progression field to the class item, classes now don't set force or tech points
- I updated the function calls in starships, but I didn't update it very thoroughly, it'll need checking
- I only did a little testing
- There has since been updates to DND5e that hasn't made it to release that patch bugs, those should be implemented
Things changed from base 5e:
- Short rests and long rests were merged into one function, this needed some rewrites to account for force and tech points, and for printing the correct message
Extra Comments:
- Unfinished code exists for automatic spell scrolls, this could be extended for single use force or tech powers
- Weapon proficiencies probably need revising
- Elven accuracy, halfling lucky, and reliable talent are present in the roll logic, this probably needs revising for sw5e
- SW5e has a variant rule that permits force powers of any alignment to use either charisma or wisdom, that could be implemented
- SW5e's version of gritty realism, [Longer Rests](https://sw5e.com/rules/variantRules/Longer%20Rests) differs from base dnd, this could be implemented
- Extra ideas I've had while looking through the code can be found in Todos next to the ideas relevant context
2021-06-01 01:55:14 +01:00
|
|
|
}
|