feat(magic): reorder schools, fix Wu Xing aspect & power formula

- `magicOrder` ArrayField + ▲/▼ buttons for manual reordering
- Magic rolls use school's aspect for Wu Xing, not speciality's element
- Spell power: `difficulty × (aspectValue + freePowerLevels)` (not `successes × diff`)
- Prompt replaces `aspectspeciality`/`bonusmalusspeciality`/`heispend` with `freepowerlevels`

fix: code review issues
- combat.js: guard undefined `ids` in rollInitiative
- rolling.js: catch Dice So Nice promise, normalize French→English kungfu aspects
- weapon/armor/ingredient: `{ min: 0 }` on quantity
- character.js/npc.js: catch rollForActor fire-and-forget promises
- roll-actions.js/tinji-app.js: await ChatMessage.create
- sanhei.js: null guard on properties
- spell.js/kungfu.js: fix aspect name comments (French→English)
This commit is contained in:
2026-06-10 15:54:31 +02:00
parent 188717c925
commit 75f79c1c08
21 changed files with 304 additions and 189 deletions
+5 -5
View File
@@ -26,11 +26,11 @@ export class CDESanheiSheet extends CDEBaseItemSheet {
async _prepareContext() {
const context = await super._prepareContext()
const enrich = (content) => foundry.applications.ux.TextEditor.implementation.enrichHTML(content ?? "", { async: true })
const props = this.document.system.properties
context.prop1DescriptionHTML = await enrich(props.prop1.description)
context.prop2DescriptionHTML = await enrich(props.prop2.description)
context.prop3DescriptionHTML = await enrich(props.prop3.description)
context.propFields = this.document.system.schema.fields.properties.fields
const props = this.document.system.properties ?? {}
context.prop1DescriptionHTML = await enrich(props.prop1?.description)
context.prop2DescriptionHTML = await enrich(props.prop2?.description)
context.prop3DescriptionHTML = await enrich(props.prop3?.description)
context.propFields = this.document.system.schema.fields.properties?.fields
return context
}
}