Some ActiveEffect shenanigans with training levels
This commit is contained in:
parent
cfaed0d230
commit
c466e0e539
3 changed files with 19 additions and 6 deletions
|
|
@ -1,8 +1,17 @@
|
|||
import { DotDungeonActor } from "./GenericActor.mjs";
|
||||
import { DotDungeonItem } from "../Item/GenericItem.mjs";
|
||||
|
||||
export class Player extends DotDungeonActor {
|
||||
|
||||
applyActiveEffects() {
|
||||
super.applyActiveEffects();
|
||||
|
||||
// These are the (groups of) fields that ActiveEffects may modify safely
|
||||
// and remain editable in the sheet. This needs to be done because of default
|
||||
// Foundry behaviour that otherwise prevents these fields from being edited
|
||||
delete this.overrides.system.stats;
|
||||
delete this.overrides.system.skills;
|
||||
};
|
||||
|
||||
async createCustomPet() {
|
||||
const body = new URLSearchParams({
|
||||
number: 1,
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ export class PlayerSheetv2 extends GenericActorSheet {
|
|||
/** @type {ActorHandler} */
|
||||
const actor = this.actor;
|
||||
|
||||
ctx.original = actor.toObject().system;
|
||||
ctx.system = actor.system;
|
||||
ctx.flags = actor.flags;
|
||||
ctx.items = this.actor.itemTypes;
|
||||
|
|
@ -92,11 +93,13 @@ export class PlayerSheetv2 extends GenericActorSheet {
|
|||
|
||||
get #statData() {
|
||||
const stats = [];
|
||||
const usedDice = new Set(Object.values(this.actor.system.stats));
|
||||
for (const statName in this.actor.system.stats) {
|
||||
const original = this.actor.toObject().system;
|
||||
const usedDice = new Set(Object.values(original.stats));
|
||||
for (const statName in original.stats) {
|
||||
const stat = {
|
||||
key: statName,
|
||||
name: localizer(`dotdungeon.stat.${statName}`),
|
||||
original: original.stats[statName],
|
||||
value: this.actor.system.stats[statName],
|
||||
};
|
||||
|
||||
|
|
@ -111,7 +114,7 @@ export class PlayerSheetv2 extends GenericActorSheet {
|
|||
return {
|
||||
value: die,
|
||||
label: localizer(`dotdungeon.die.${die}`, { stat: statName }),
|
||||
disabled: usedDice.has(die) && this.actor.system.stats[statName] !== die,
|
||||
disabled: usedDice.has(die) && original.stats[statName] !== die,
|
||||
};
|
||||
})
|
||||
];
|
||||
|
|
@ -127,6 +130,7 @@ export class PlayerSheetv2 extends GenericActorSheet {
|
|||
key: skill,
|
||||
name: game.i18n.format(`dotdungeon.skills.${skill}`),
|
||||
value,
|
||||
original: original.skills[statName][skill],
|
||||
formula: `1` + stat.value + modifierToString(value, { spaces: true }),
|
||||
rollDisabled: value === -1,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
name="system.stats.{{stat.key}}"
|
||||
class="e-2dp dice-select"
|
||||
>
|
||||
{{{dd-options stat.value stat.dieOptions}}}
|
||||
{{{dd-options stat.original stat.dieOptions}}}
|
||||
</select>
|
||||
<button
|
||||
type="button"
|
||||
|
|
@ -35,7 +35,7 @@
|
|||
class="e-2dp skill__training"
|
||||
>
|
||||
{{{dd-options
|
||||
skill.value
|
||||
skill.original
|
||||
@root.config.trainingLevels
|
||||
localize=true
|
||||
}}}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue