feat: separate skill value/max (transcendence pool vs level)
Release Creation / build (release) Successful in 58s

- skill.value = spendable transcendence pool (editable select)
- skill.max = max level (locked by default, unlock btn)
- computeRollFormula/computeResults/confront use skill.max
- clamp transcendence spend to skill.value
- resetTranscendence button in Bio&Notes
- v14 compat: duplicate→deepClone, mergeObject→spread, socket fixes
- Dialog v1 removed, DragDrop dedup, await fixes
This commit is contained in:
2026-07-24 09:00:26 +02:00
parent 8c79e6f0ba
commit 31e2561797
63 changed files with 385 additions and 340 deletions
+14 -6
View File
@@ -6,6 +6,8 @@ import { EcrymeUtility } from "../../common/ecryme-utility.js"
*/
export default class EcrymeActorSheet extends EcrymeBaseActorSheet {
#editScore = false
/** @override */
static DEFAULT_OPTIONS = {
classes: ["pc-npc"],
@@ -28,6 +30,7 @@ export default class EcrymeActorSheet extends EcrymeBaseActorSheet {
equipItem: EcrymeActorSheet.#onEquipItem,
quantityMinus: EcrymeActorSheet.#onQuantityMinus,
quantityPlus: EcrymeActorSheet.#onQuantityPlus,
resetTranscendence:EcrymeActorSheet.#onResetTranscendence,
},
}
@@ -89,7 +92,7 @@ export default class EcrymeActorSheet extends EcrymeBaseActorSheet {
img: actor.img,
name: actor.name,
isEditable: this.isEditable,
config: game.system.ecryme.config,
config: game.ecryme.config,
hasCephaly: EcrymeUtility.hasCephaly(),
hasBoheme: EcrymeUtility.hasBoheme(),
hasAmertume: EcrymeUtility.hasAmertume(),
@@ -107,7 +110,7 @@ export default class EcrymeActorSheet extends EcrymeBaseActorSheet {
annency: actor.getAnnency(),
owner: this.document.isOwner,
isGM: game.user.isGM,
editScore: this.options.editScore ?? true,
editScore: this.#editScore,
tabs: this._getTabs(),
}
}
@@ -182,9 +185,9 @@ export default class EcrymeActorSheet extends EcrymeBaseActorSheet {
EcrymeUtility.confirmDelete(this, $(li)).catch(() => {})
}
static #onItemCreate(event, target) {
static async #onItemCreate(event, target) {
const dataType = target.dataset.type
this.document.createEmbeddedDocuments("Item", [{ name: "NewItem", type: dataType }], { renderSheet: true })
await this.document.createEmbeddedDocuments("Item", [{ name: "NewItem", type: dataType }], { renderSheet: true })
}
static #onSubactorEdit(event, target) {
@@ -227,11 +230,11 @@ export default class EcrymeActorSheet extends EcrymeBaseActorSheet {
}
static #onRollWeapon(event, target) {
this.actor.rollArme(target.dataset.armeId)
this.actor.rollWeapon(target.dataset.armeId)
}
static #onLockUnlock(event, target) {
this.options.editScore = !this.options.editScore
this.#editScore = !this.#editScore
this.render(true)
}
@@ -251,5 +254,10 @@ export default class EcrymeActorSheet extends EcrymeBaseActorSheet {
this.actor.incDecQuantity(li?.dataset.itemId, +1)
}
static async #onResetTranscendence(event, target) {
await this.actor.resetSkillPool()
this.render(true)
}
// #endregion
}