feat: separate skill value/max (transcendence pool vs level)
Release Creation / build (release) Successful in 58s
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:
@@ -63,7 +63,7 @@ export default class EcrymeAnnencySheet 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(),
|
||||
characters: actor.buildAnnencyActorList(),
|
||||
@@ -85,7 +85,7 @@ export default class EcrymeAnnencySheet extends EcrymeBaseActorSheet {
|
||||
/** @override */
|
||||
async _onDrop(event) {
|
||||
const data = foundry.applications.ux.TextEditor.implementation.getDragEventData(event)
|
||||
if (data.type === "Actor") {
|
||||
if (data?.type === "Actor") {
|
||||
const actor = await fromUuid(data.uuid)
|
||||
if (actor) {
|
||||
this.actor.addAnnencyActor(actor.id)
|
||||
@@ -118,9 +118,9 @@ export default class EcrymeAnnencySheet 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 })
|
||||
}
|
||||
|
||||
// #endregion
|
||||
|
||||
@@ -6,13 +6,6 @@ const { HandlebarsApplicationMixin } = foundry.applications.api
|
||||
*/
|
||||
export default class EcrymeBaseActorSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ActorSheetV2) {
|
||||
|
||||
constructor(options = {}) {
|
||||
super(options)
|
||||
this.#dragDrop = this.#createDragDropHandlers()
|
||||
}
|
||||
|
||||
#dragDrop
|
||||
|
||||
/** @override */
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["fvtt-ecryme", "sheet", "actor"],
|
||||
@@ -32,27 +25,6 @@ export default class EcrymeBaseActorSheet extends HandlebarsApplicationMixin(fou
|
||||
},
|
||||
}
|
||||
|
||||
/** @override */
|
||||
_onRender(context, options) {
|
||||
this.#dragDrop.forEach((d) => d.bind(this.element))
|
||||
}
|
||||
|
||||
// #region Drag-and-Drop
|
||||
#createDragDropHandlers() {
|
||||
return this.options.dragDrop.map((d) => {
|
||||
d.permissions = {
|
||||
dragstart: this._canDragStart.bind(this),
|
||||
drop: this._canDragDrop.bind(this),
|
||||
}
|
||||
d.callbacks = {
|
||||
dragstart: this._onDragStart.bind(this),
|
||||
dragover: this._onDragOver.bind(this),
|
||||
drop: this._onDrop.bind(this),
|
||||
}
|
||||
return new foundry.applications.ux.DragDrop.implementation(d)
|
||||
})
|
||||
}
|
||||
|
||||
_canDragStart(selector) { return this.isEditable }
|
||||
_canDragDrop(selector) { return this.isEditable && this.document.isOwner }
|
||||
_onDragStart(event) {}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user