From 6b053b189b1860e8f3cd3af7435c1128506f7305 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnien Date: Wed, 14 May 2025 22:09:35 +0200 Subject: [PATCH] Foundry v13 migraton, WIP --- css/foundryvtt-reve-de-dragon.css | 4 +-- module/actor/base-actor-sheet.js | 4 +-- module/actor/base-actor.js | 2 +- .../export-scriptarium/actor-encart-sheet.js | 4 +-- .../actor/random/app-personnage-aleatoire.js | 2 +- module/applications/sheets/_module.mjs | 1 + .../applications/sheets/common-item-sheet.mjs | 8 ++--- module/applications/sheets/tarot-sheet.mjs | 33 +++++++++++++++++++ module/apps/rdd-text-roll-editor.js | 4 +-- module/chat-utility.js | 8 ++--- module/coeur/rdd-coeur.js | 6 ++-- module/documents/_module.mjs | 5 +-- module/documents/tarot.mjs | 7 ++++ module/item-sheet.js | 4 +-- module/journal/journal-sheet.js | 6 ++-- module/models/_module.mjs | 1 + module/models/tarot.mjs | 18 ++++++++++ module/rdd-combat.js | 6 ++-- module/rdd-compendium-organiser.js | 4 +-- module/rdd-dice.js | 6 ++-- module/rdd-empoignade.js | 12 +++---- module/rdd-main.js | 27 ++++++++------- module/rdd-resolution-table.js | 2 +- module/rdd-roll-result.js | 2 +- module/rdd-roll.js | 6 ++-- module/rdd-tmr-dialog.js | 4 +-- module/rdd-utility.js | 16 ++++----- module/tmr-rencontres.js | 8 ++--- system.json | 4 +-- template.json | 6 ---- templates/actor/combat.hbs | 10 +++--- templates/actor/competence.hbs | 15 ++++----- templates/actor/inventaire-item.hbs | 2 +- 33 files changed, 151 insertions(+), 96 deletions(-) create mode 100644 module/applications/sheets/tarot-sheet.mjs create mode 100644 module/documents/tarot.mjs create mode 100644 module/models/tarot.mjs diff --git a/css/foundryvtt-reve-de-dragon.css b/css/foundryvtt-reve-de-dragon.css index 6bf4c47c..509099dc 100644 --- a/css/foundryvtt-reve-de-dragon.css +++ b/css/foundryvtt-reve-de-dragon.css @@ -69,7 +69,6 @@ .sheet header.sheet-header .header-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, -button, .item-checkbox, #sidebar, #players, @@ -2040,7 +2039,8 @@ button, } .system-foundryvtt-reve-de-dragon aside#tooltip { background: var(--background-tooltip); - color: var(--color-text-dark-primary); + /*color: var(--color-text-dark-primary);*/ + color: rgba(100, 100, 50, 0.90); font-size: 1rem; border-radius: 0.2rem; padding: 0.4rem; diff --git a/module/actor/base-actor-sheet.js b/module/actor/base-actor-sheet.js index 9fbba716..f5f97c85 100644 --- a/module/actor/base-actor-sheet.js +++ b/module/actor/base-actor-sheet.js @@ -14,11 +14,11 @@ import { ItemAction } from "../item/item-actions.js"; * Extend the basic ActorSheet with some very simple modifications * @extends {ActorSheet} */ -export class RdDBaseActorSheet extends ActorSheet { +export class RdDBaseActorSheet extends foundry.appv1.sheets.ActorSheet { /** @override */ static get defaultOptions() { - return foundry.utils.mergeObject(ActorSheet.defaultOptions, { + return foundry.utils.mergeObject(foundry.appv1.sheets.ActorSheet.defaultOptions, { classes: ["rdd", "sheet", "actor"], tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "carac" }], dragDrop: [{ dragSelector: ".item-list .item", dropSelector: undefined }], diff --git a/module/actor/base-actor.js b/module/actor/base-actor.js index 9fc3c76f..68da7c17 100644 --- a/module/actor/base-actor.js +++ b/module/actor/base-actor.js @@ -734,7 +734,7 @@ export class RdDBaseActor extends Actor { name: this.getAlias(), system: { description: this.system.description } } - renderTemplate('systems/foundryvtt-reve-de-dragon/templates/post-actor.hbs', chatData) + foundry.applications.handlebars.renderTemplate('systems/foundryvtt-reve-de-dragon/templates/post-actor.hbs', chatData) .then(html => ChatMessage.create(RdDUtility.chatDataSetup(html, modeOverride))); } diff --git a/module/actor/export-scriptarium/actor-encart-sheet.js b/module/actor/export-scriptarium/actor-encart-sheet.js index 9a978216..9728bed0 100644 --- a/module/actor/export-scriptarium/actor-encart-sheet.js +++ b/module/actor/export-scriptarium/actor-encart-sheet.js @@ -7,7 +7,7 @@ import { CATEGORIES_COMPETENCES, CATEGORIES_DRACONIC, Mapping } from "./mapping. export class RdDActorExportSheet extends RdDActorSheet { static init() { - loadTemplates([ + foundry.applications.handlebars.loadTemplates([ "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/arme.hbs", "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/blessure.hbs", "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/blessures.hbs", @@ -21,7 +21,7 @@ export class RdDActorExportSheet extends RdDActorSheet { "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/protection.hbs", "systems/foundryvtt-reve-de-dragon/templates/actor/export-scriptarium/sort.hbs", ]) - Actors.registerSheet(SYSTEM_RDD, RdDActorExportSheet, { types: ["personnage"], makeDefault: false, label: "Feuille simplifiée" }) + foundry.documents.collections.Actors.registerSheet(SYSTEM_RDD, RdDActorExportSheet, { types: ["personnage"], makeDefault: false, label: "Feuille simplifiée" }) } static get defaultOptions() { diff --git a/module/actor/random/app-personnage-aleatoire.js b/module/actor/random/app-personnage-aleatoire.js index c4e23799..8a988d5a 100644 --- a/module/actor/random/app-personnage-aleatoire.js +++ b/module/actor/random/app-personnage-aleatoire.js @@ -26,7 +26,7 @@ const RANDOM_VALUES = { export class AppPersonnageAleatoire extends FormApplication { static preloadHandlebars() { - loadTemplates([ + foundry.applications.handlebars.loadTemplates([ 'systems/foundryvtt-reve-de-dragon/templates/actor/random/champ-aleatoire.hbs', ]) } diff --git a/module/applications/sheets/_module.mjs b/module/applications/sheets/_module.mjs index 9b7a35b4..41d5f0b4 100644 --- a/module/applications/sheets/_module.mjs +++ b/module/applications/sheets/_module.mjs @@ -1,4 +1,5 @@ export { default as RdDItemBaseSheet} from "./common-item-sheet.mjs" export { default as RdDMonnaieSheet } from "./monnaie-sheet.mjs" export { default as RdDMunitionSheet } from "./munition-sheet.mjs" +export { default as RdDTarotSheet } from "./tarot-sheet.mjs" diff --git a/module/applications/sheets/common-item-sheet.mjs b/module/applications/sheets/common-item-sheet.mjs index 0153f7ff..51614481 100644 --- a/module/applications/sheets/common-item-sheet.mjs +++ b/module/applications/sheets/common-item-sheet.mjs @@ -15,7 +15,7 @@ export default class RdDItemBaseSheet extends HandlebarsApplicationMixin(foundry ) loadTemplates(Misc.distinct(handlebars)) } - + static register(sheetClass) { const itemType = sheetClass.ITEM_TYPE Items.registerSheet(SYSTEM_RDD, sheetClass, { @@ -24,7 +24,7 @@ export default class RdDItemBaseSheet extends HandlebarsApplicationMixin(foundry makeDefault: true }) } - + static registerAll(...sheetClasses) { const handlebars = ["systems/foundryvtt-reve-de-dragon/templates/sheets/item/common/header.hbs"] sheetClasses.forEach(sheetClass => { @@ -32,13 +32,13 @@ export default class RdDItemBaseSheet extends HandlebarsApplicationMixin(foundry t.handlebars().forEach(h => handlebars.push(h)) ) const itemType = sheetClass.ITEM_TYPE - Items.registerSheet(SYSTEM_RDD, sheetClass, { + foundry.documents.collections.Items.registerSheet(SYSTEM_RDD, sheetClass, { label: Misc.typeName('Item', itemType), types: [itemType], makeDefault: true }) }) - loadTemplates(Misc.distinct(handlebars)) + foundry.applications.handlebars.loadTemplates(Misc.distinct(handlebars)) } static get ITEM_TYPE() { return undefined } diff --git a/module/applications/sheets/tarot-sheet.mjs b/module/applications/sheets/tarot-sheet.mjs new file mode 100644 index 00000000..41d744ad --- /dev/null +++ b/module/applications/sheets/tarot-sheet.mjs @@ -0,0 +1,33 @@ +import { TEMPLATE_DESCRIPTION, TEMPLATE_INVENTAIRE } from "../../common/_module.mjs"; +import { ITEM_TYPES } from "../../constants.js"; +import RdDItemBaseSheet from "./common-item-sheet.mjs"; + +export default class RdDTarotSheet extends RdDItemBaseSheet { + /** @override */ + static get ITEM_TYPE() { return ITEM_TYPES.tarot } + static get TEMPLATES() { return [TEMPLATE_DESCRIPTION] } + + /** @override */ + static DEFAULT_OPTIONS = Object.assign({}, + RdDItemBaseSheet.DEFAULT_OPTIONS, + { + classes: ["fvtt-rdd", "item", "tarot"], + position: { width: 400 }, + window: { contentClasses: ["tarot-content"] } + }) + + /** @override */ + static PARTS = { + main: { + template: "systems/foundryvtt-reve-de-dragon/templates/sheets/item/tarot.hbs", + }, + } + + /** @override */ + async _prepareContext() { + return Object.assign( + await super._prepareContext(), + await TEMPLATE_DESCRIPTION.prepareContext(this.document) + ) + } +} \ No newline at end of file diff --git a/module/apps/rdd-text-roll-editor.js b/module/apps/rdd-text-roll-editor.js index 10583f7e..98774a26 100644 --- a/module/apps/rdd-text-roll-editor.js +++ b/module/apps/rdd-text-roll-editor.js @@ -13,7 +13,7 @@ const TEXT_ROLL_MANAGERS = [ export class RdDTextEditor { static registerChatCallbacks(html) { - html.on("click", '.roll-text', async event => await RdDTextEditor.rollText(event)) + $(html).on("click", '.roll-text', async event => await RdDTextEditor.rollText(event)) } static async enrichHTML(text, object, options = {showlink:true}) { @@ -30,7 +30,7 @@ export class RdDTextEditor { context.text = await manager.onReplaceRoll(context); } - return await TextEditor.enrichHTML(context.text, { + return await foundry.applications.ux.TextEditor.implementation.enrichHTML(context.text, { relativeTo: object, secrets: object?.isOwner, async: true diff --git a/module/chat-utility.js b/module/chat-utility.js index 61b6b901..e19c4a24 100644 --- a/module/chat-utility.js +++ b/module/chat-utility.js @@ -5,12 +5,12 @@ import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js"; /** - * Class providing helper methods to get the list of users, and + * Class providing helper methods to get the list of users, and */ export class ChatUtility { static async init() { - Hooks.on("renderChatMessage", async (app, html, msg) => await ChatUtility.onRenderChatMessage(app, html, msg)) + Hooks.on("renderChatMessageHTML", async (app, html, msg) => await ChatUtility.onRenderChatMessage(app, html, msg)) Hooks.on("createChatMessage", async (chatMessage, options, id) => await ChatUtility.onCreateChatMessage(chatMessage, options, id)) } @@ -190,8 +190,8 @@ export class ChatUtility { if (rddTimestamp) { const timestamp = new RdDTimestamp(rddTimestamp); const timestampData = timestamp.toCalendrier(); - const dateHeure = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/common/date-heure.hbs', timestampData); - html.find('header.message-header .message-sender').after(dateHeure) + const dateHeure = await foundry.applications.handlebars.renderTemplate('systems/foundryvtt-reve-de-dragon/templates/common/date-heure.hbs', timestampData); + $(html).find('header.message-header .message-sender').after(dateHeure) } } diff --git a/module/coeur/rdd-coeur.js b/module/coeur/rdd-coeur.js index ca8774d2..d96b2e7f 100644 --- a/module/coeur/rdd-coeur.js +++ b/module/coeur/rdd-coeur.js @@ -5,13 +5,13 @@ const INFO_COEUR = 'info-coeur'; export class RdDCoeur { static registerChatCallbacks(html) { - html.on("click", 'a.accepter-tendre-moment', event => { + $(html).on("click", 'a.accepter-tendre-moment', event => { RdDCoeur.accepterTendreMoment(RdDCoeur.extractInfoCoeur(event)) }) - html.on("click", 'a.refuser-tendre-moment', event => { + $(html).on("click", 'a.refuser-tendre-moment', event => { RdDCoeur.refuserTendreMoment(RdDCoeur.extractInfoCoeur(event)) }) - html.on("click", 'a.perdre-point-coeur-douceur', event => { + $(html).on("click", 'a.perdre-point-coeur-douceur', event => { RdDCoeur.perdreEnDouceur( RdDCoeur.extractInfoCoeur(event), event.currentTarget.attributes['data-actor-id'].value) diff --git a/module/documents/_module.mjs b/module/documents/_module.mjs index 5af919ef..9c6aa387 100644 --- a/module/documents/_module.mjs +++ b/module/documents/_module.mjs @@ -1,2 +1,3 @@ -export { default as RdDItemMonnaie } from "./monnaie.mjs" -export { default as RdDItemMunition } from "./munition.mjs" +export { default as RdDModelMonnaie } from "./monnaie.mjs" +export { default as RdDModelMunition } from "./munition.mjs" +export { default as RdDModelTarot } from "./tarot.mjs" diff --git a/module/documents/tarot.mjs b/module/documents/tarot.mjs new file mode 100644 index 00000000..8bc3efec --- /dev/null +++ b/module/documents/tarot.mjs @@ -0,0 +1,7 @@ +import { RdDItem } from "../item.js"; + +export default class RdDItemTarot extends RdDItem { + static get defaultIcon() { + return 'systems/foundryvtt-reve-de-dragon/icons/objets/tarot.webp' + } +} diff --git a/module/item-sheet.js b/module/item-sheet.js index 1bfdbde4..42bb0a2b 100644 --- a/module/item-sheet.js +++ b/module/item-sheet.js @@ -18,7 +18,7 @@ import { ItemAction } from "./item/item-actions.js"; /** * Extend the basic ItemSheet for RdD specific items */ -export class RdDItemSheetV1 extends ItemSheet { +export class RdDItemSheetV1 extends foundry.appv1.sheets.ItemSheet { static get ITEM_TYPE() { return undefined @@ -31,7 +31,7 @@ export class RdDItemSheetV1 extends ItemSheet { } static register(sheetClass) { - Items.registerSheet(SYSTEM_RDD, sheetClass, { + foundry.documents.collections.Items.registerSheet(SYSTEM_RDD, sheetClass, { label: Misc.typeName('Item', sheetClass.ITEM_TYPE), types: [sheetClass.ITEM_TYPE], makeDefault: true diff --git a/module/journal/journal-sheet.js b/module/journal/journal-sheet.js index 8cdcc75e..147a0f74 100644 --- a/module/journal/journal-sheet.js +++ b/module/journal/journal-sheet.js @@ -3,10 +3,10 @@ import { SYSTEM_RDD } from "../constants.js"; import { Misc } from "../misc.js"; -export class RdDJournalSheet extends JournalTextPageSheet { +export class RdDJournalSheet extends foundry.appv1.sheets.JournalTextPageSheet { static register() { - DocumentSheetConfig.unregisterSheet(JournalEntryPage, "core", JournalTextPageSheet) - DocumentSheetConfig.registerSheet(JournalEntryPage, + foundry.applications.apps.DocumentSheetConfig.unregisterSheet(JournalEntryPage, "core", foundry.appv1.sheets.JournalTextPageSheet) + foundry.applications.apps.DocumentSheetConfig.registerSheet(JournalEntryPage, SYSTEM_RDD, RdDJournalSheet, { types: ["text"], diff --git a/module/models/_module.mjs b/module/models/_module.mjs index 588f6fd9..9c6aa387 100644 --- a/module/models/_module.mjs +++ b/module/models/_module.mjs @@ -1,2 +1,3 @@ export { default as RdDModelMonnaie } from "./monnaie.mjs" export { default as RdDModelMunition } from "./munition.mjs" +export { default as RdDModelTarot } from "./tarot.mjs" diff --git a/module/models/tarot.mjs b/module/models/tarot.mjs new file mode 100644 index 00000000..88605346 --- /dev/null +++ b/module/models/tarot.mjs @@ -0,0 +1,18 @@ +import { TEMPLATE_DESCRIPTION } from "../common/_module.mjs"; +import { DECIMAL, INTEGER, INTEGER_SIGNED, MODEL_ARRAY, STRING } from "../common/field-types.mjs" + +const fields = foundry.data.fields + +export default class RdDModelTarot extends foundry.abstract.TypeDataModel { + static defineSchema() { + let tarotFields = { + concept : new fields.StringField({ label: "Concept", initial: "", ...STRING }), + aspect : new fields.StringField({ label: "Aspect", initial: "", ...STRING }), + frequence : new fields.NumberField({ label: "Fréquence", initial: 1, ...INTEGER }) + } + return Object.assign({}, + TEMPLATE_DESCRIPTION.fields(), + tarotFields + ) + } +} diff --git a/module/rdd-combat.js b/module/rdd-combat.js index 199f2554..f596abad 100644 --- a/module/rdd-combat.js +++ b/module/rdd-combat.js @@ -483,7 +483,7 @@ export class RdDCombat { '.appel-destinee-attaque', '.echec-total-attaque', ]) { - html.on("click", button, event => { + $(html).on("click", button, event => { const rddCombat = RdDCombat.rddCombatForAttackerAndDefender( event.currentTarget.attributes['data-attackerId']?.value, event.currentTarget.attributes['data-attackerTokenId']?.value, @@ -494,7 +494,7 @@ export class RdDCombat { } }); } - html.on("click", 'a.chat-jet-vie', event => { + $(html).on("click", 'a.chat-jet-vie', event => { event.preventDefault(); RdDCombat._callJetDeVie(event); }); @@ -934,7 +934,7 @@ export class RdDCombat { let defenses = defender.items.filter(it => RdDItemArme.isParade(it)) defenses = foundry.utils.duplicate(defenses) defenses.forEach(armeDefense => { - // Ajout du # d'utilisation ce round + // Ajout du # d'utilisation ce round armeDefense.nbUsage = defender.getItemUse(armeDefense.id) armeDefense.typeParade = RdDItemArme.defenseArmeParade(armeAttaque, armeDefense) }) diff --git a/module/rdd-compendium-organiser.js b/module/rdd-compendium-organiser.js index b0ddfa3d..b7fb083b 100644 --- a/module/rdd-compendium-organiser.js +++ b/module/rdd-compendium-organiser.js @@ -9,7 +9,7 @@ export class RdDCompendiumOrganiser { console.log('onRenderCompendium', compendium, html, compendiumData); const pack = compendium.collection if (pack.metadata.system === SYSTEM_RDD) { - html.find('.directory-item').each((i, element) => { + $(html).find('.directory-item').each((i, element) => { RdDCompendiumOrganiser.setEntityTypeName(pack, element); }); } @@ -26,7 +26,7 @@ export class RdDCompendiumOrganiser { } } - + static getEntityTypeLabel(entity) { const documentName = entity?.documentName const type = entity?.type diff --git a/module/rdd-dice.js b/module/rdd-dice.js index b837e15b..d8fdf1f5 100644 --- a/module/rdd-dice.js +++ b/module/rdd-dice.js @@ -12,7 +12,7 @@ const imgHeures = [1, 2, 3, 4, 5, 6, 7, 9, 9, 10, 11, 12].map(heure => { const imgSigneDragon = imgHeures[4] /** De pour les jets de rencontre */ -export class DeTMR extends Die { +export class DeTMR extends foundry.dice.terms.Die { /** @override */ static DENOMINATION = "t"; @@ -50,7 +50,7 @@ export class DeTMR extends Die { } /** DeDraconique pour le D8 sans limite avec 8=>0 */ -export class DeDraconique extends Die { +export class DeDraconique extends foundry.dice.terms.Die { /** @override */ static DENOMINATION = "r"; @@ -89,7 +89,7 @@ export class DeDraconique extends Die { } /** De 12 avec les heures */ -export class DeHeure extends Die { +export class DeHeure extends foundry.dice.terms.Die { /** @override */ static DENOMINATION = "h"; diff --git a/module/rdd-empoignade.js b/module/rdd-empoignade.js index 42e8fdd9..3b532d74 100644 --- a/module/rdd-empoignade.js +++ b/module/rdd-empoignade.js @@ -15,36 +15,36 @@ export class RdDEmpoignade { /* -------------------------------------------- */ static registerChatCallbacks(html) { - html.on("click", '.defense-empoignade-cac', event => { + $(html).on("click", '.defense-empoignade-cac', event => { const chatMessage = ChatUtility.getChatMessage(event); const rollData = RdDEmpoignade.$readRollEmpoignade(chatMessage); let defenseMode = event.currentTarget.attributes['data-defense-mode'].value RdDEmpoignade.onDefenseEmpoignade(rollData, defenseMode, "Corps à corps", "melee") }); - html.on("click", '.defense-empoignade-esquive', event => { + $(html).on("click", '.defense-empoignade-esquive', event => { const chatMessage = ChatUtility.getChatMessage(event); const rollData = RdDEmpoignade.$readRollEmpoignade(chatMessage); let defenseMode = event.currentTarget.attributes['data-defense-mode'].value RdDEmpoignade.onDefenseEmpoignade(rollData, defenseMode, "Esquive", "derobee") }); - html.on("click", '.empoignade-poursuivre', event => { + $(html).on("click", '.empoignade-poursuivre', event => { let attackerId = event.currentTarget.attributes['data-attackerId'].value let defenderId = event.currentTarget.attributes['data-defenderId'].value RdDEmpoignade.onAttaqueEmpoignadeValidee(game.actors.get(attackerId), game.actors.get(defenderId)) }); - html.on("click", '.empoignade-entrainer-sol', event => { + $(html).on("click", '.empoignade-entrainer-sol', event => { const chatMessage = ChatUtility.getChatMessage(event); const rollData = RdDEmpoignade.$readRollEmpoignade(chatMessage); RdDEmpoignade.entrainerAuSol(rollData) ChatUtility.removeChatMessageId(chatMessage.id) }); - html.on("click", '.empoignade-projeter-sol', event => { + $(html).on("click", '.empoignade-projeter-sol', event => { const chatMessage = ChatUtility.getChatMessage(event); const rollData = RdDEmpoignade.$readRollEmpoignade(chatMessage); RdDEmpoignade.projeterAuSol(rollData) ChatUtility.removeChatMessageId(chatMessage.id) }); - html.on("change", '.empoignade-perte-endurance', event => { + $(html).on("change", '.empoignade-perte-endurance', event => { const chatMessage = ChatUtility.getChatMessage(event); const rollData = RdDEmpoignade.$readRollEmpoignade(chatMessage); if (event.currentTarget.value && event.currentTarget.value != "none") { diff --git a/module/rdd-main.js b/module/rdd-main.js index 950268d8..a9700cdb 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -106,6 +106,7 @@ export class SystemReveDeDragon { this.itemClasses = { monnaie: items.RdDItemMonnaie, munition: items.RdDItemMunition, + tarot: items.RdDModelTarot, armure: RdDItemArmure, blessure: RdDItemBlessure, gemme: RdDItemGemme, @@ -162,7 +163,7 @@ export class SystemReveDeDragon { this.initSettings() /* -------------------------------------------- */ - // Set an initiative formula for the system + // Set an initiative formula for the system CONFIG.Combat.initiative = { formula: "1+(1d6/10)", decimals: 2 } /* -------------------------------------------- */ @@ -187,6 +188,7 @@ export class SystemReveDeDragon { CONFIG.Item.dataModels = { monnaie: models.RdDModelMonnaie, munition: models.RdDModelMunition, + tarot: models.RdDModelTarot, } CONFIG.RDD = { resolutionTable: RdDResolutionTable.resolutionTable, @@ -197,16 +199,16 @@ export class SystemReveDeDragon { /* -------------------------------------------- */ // Register sheet application classes - Actors.unregisterSheet("core", ActorSheet) - Actors.registerSheet(SYSTEM_RDD, RdDCommerceSheet, { types: ["commerce"], makeDefault: true }) - Actors.registerSheet(SYSTEM_RDD, RdDActorSheet, { types: ["personnage"], makeDefault: true }) - Actors.registerSheet(SYSTEM_RDD, RdDCreatureSheet, { types: ["creature"], makeDefault: true }) - Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true }) - Actors.registerSheet(SYSTEM_RDD, RdDActorEntiteSheet, { types: ["entite"], makeDefault: true }) - Items.unregisterSheet("core", ItemSheet) + foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet) + foundry.documents.collections.Actors.registerSheet(SYSTEM_RDD, RdDCommerceSheet, { types: ["commerce"], makeDefault: true }) + foundry.documents.collections.Actors.registerSheet(SYSTEM_RDD, RdDActorSheet, { types: ["personnage"], makeDefault: true }) + foundry.documents.collections.Actors.registerSheet(SYSTEM_RDD, RdDCreatureSheet, { types: ["creature"], makeDefault: true }) + foundry.documents.collections.Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true }) + foundry.documents.collections.Actors.registerSheet(SYSTEM_RDD, RdDActorEntiteSheet, { types: ["entite"], makeDefault: true }) + foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet) RdDActorExportSheet.init() - Items.registerSheet(SYSTEM_RDD, RdDItemInventaireSheet, { + foundry.documents.collections.Items.registerSheet(SYSTEM_RDD, RdDItemInventaireSheet, { types: [ "objet", "arme", "armure", "livre", "nourritureboisson", ], @@ -215,17 +217,18 @@ export class SystemReveDeDragon { sheets.RdDItemBaseSheet.registerAll( sheets.RdDMonnaieSheet, - sheets.RdDMunitionSheet + sheets.RdDMunitionSheet, + sheets.RdDTarotSheet ) - Items.registerSheet(SYSTEM_RDD, RdDItemSheetV1, { + foundry.documents.collections.Items.registerSheet(SYSTEM_RDD, RdDItemSheetV1, { types: [ "competence", "competencecreature", "recettealchimique", "musique", "chant", "danse", "jeu", "race", "recettecuisine", "oeuvre", "meditation", "queue", "ombre", "souffle", "tete", "casetmr", "sort", "sortreserve", "nombreastral", "tache", "maladie", "poison", "possession", - "tarot", "extraitpoetique", "empoignade" + "extraitpoetique", "empoignade" ], makeDefault: true }) diff --git a/module/rdd-resolution-table.js b/module/rdd-resolution-table.js index 9942d5d1..14d70ecd 100644 --- a/module/rdd-resolution-table.js +++ b/module/rdd-resolution-table.js @@ -268,7 +268,7 @@ export class RdDResolutionTable { maxCarac = Math.min(maxCarac, minCarac + 20); minLevel = Math.max(minLevel, -10); maxLevel = Math.max(Math.min(maxLevel, 30), minLevel + colonnes); - return await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/resolution-table.hbs', { + return await foundry.applications.handlebars.renderTemplate('systems/foundryvtt-reve-de-dragon/templates/resolution-table.hbs', { carac: carac, difficulte: level, min: minLevel, diff --git a/module/rdd-roll-result.js b/module/rdd-roll-result.js index eabc5f92..480a641c 100644 --- a/module/rdd-roll-result.js +++ b/module/rdd-roll-result.js @@ -12,6 +12,6 @@ export class RdDRollResult { static async buildRollDataHtml(rollData, template = 'chat-resultat-general.hbs') { rollData.show = rollData.show || {}; - return await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/${template}`, rollData); + return await foundry.applications.handlebars.renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/${template}`, rollData); } } diff --git a/module/rdd-roll.js b/module/rdd-roll.js index d220c8c7..3177446a 100644 --- a/module/rdd-roll.js +++ b/module/rdd-roll.js @@ -22,7 +22,7 @@ export class RdDRoll extends Dialog { RdDRoll._ensureCorrectAction(action); RdDRoll._setDefaultOptions(actor, rollData); - const html = await renderTemplate(dialogConfig.html, rollData); + const html = await foundry.applications.handlebars.renderTemplate(dialogConfig.html, rollData); let options = { classes: ["rdd-roll-dialog"], width: 650, height: 'fit-content', 'z-index': 99999, close: html => { } }; if (dialogConfig.close) { @@ -145,7 +145,7 @@ export class RdDRoll extends Dialog { } if (this.rollData.selectedSort) { this.setSelectedSort(this.rollData.selectedSort); - this.html.find(".draconic").val(this.rollData.selectedSort.system.listIndex); // Uniquement a la selection du sort, pour permettre de changer + this.html.find(".draconic").val(this.rollData.selectedSort.system.listIndex); // Uniquement a la selection du sort, pour permettre de changer } RdDItemSort.setCoutReveReel(this.rollData.selectedSort); this.html.find("[name='diffLibre']").val(Misc.toInt(this.rollData.diffLibre)); @@ -344,7 +344,7 @@ export class RdDRoll extends Dialog { /* -------------------------------------------- */ async buildAjustements(rollData) { - return await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/partial-roll-ajustements.hbs`, rollData); + return await foundry.applications.handlebars.renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/partial-roll-ajustements.hbs`, rollData); } /* -------------------------------------------- */ diff --git a/module/rdd-tmr-dialog.js b/module/rdd-tmr-dialog.js index ffa45292..c94d1f65 100644 --- a/module/rdd-tmr-dialog.js +++ b/module/rdd-tmr-dialog.js @@ -47,7 +47,7 @@ export class RdDTMRDialog extends Dialog { static async create(actor, tmrData) { await PixiTMR.init() - let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.hbs', tmrData); + let html = await foundry.applications.handlebars.renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-tmr.hbs', tmrData); if (tmrData.mode != 'visu' && !game.user.isGM) { ChatMessage.create({ content: actor.name + " est monté dans les TMR en mode : " + tmrData.mode, whisper: ChatUtility.getGMs() }); } @@ -508,7 +508,7 @@ export class RdDTMRDialog extends Dialog { ChatMessage.create({ whisper: ChatUtility.getOwners(this.actor), - content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-rencontre-tmr.hbs`, rencData) + content: await foundry.applications.handlebars.renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-rencontre-tmr.hbs`, rencData) }); this.$updateValuesDisplay(); diff --git a/module/rdd-utility.js b/module/rdd-utility.js index cced95a2..cc7ede75 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -349,7 +349,7 @@ export class RdDUtility { Handlebars.registerHelper('typeTmr-name', type => TMRUtility.typeTmrName(type)); Handlebars.registerHelper('effetRencontre-name', coord => TMRUtility.typeTmrName(coord)); - loadTemplates(templatePaths); + foundry.applications.handlebars.loadTemplates(templatePaths); } static getItem(itemId, actorId = undefined) { @@ -733,14 +733,14 @@ export class RdDUtility { RdDTextEditor.registerChatCallbacks(html) // Gestion spécifique message passeurs - html.on("click", '.tmr-passeur-coord a', event => { + $(html).on("click", '.tmr-passeur-coord a', event => { let coord = event.currentTarget.attributes['data-tmr-coord'].value; let actorId = event.currentTarget.attributes['data-actor-id'].value; let actor = game.actors.get(actorId); actor.tmrApp.positionnerDemiReve(coord); }); // Gestion spécifique des sorts en réserve multiples (ie têtes) - html.on("click", '.declencher-sort-reserve', event => { + $(html).on("click", '.declencher-sort-reserve', event => { let coord = event.currentTarget.attributes['data-tmr-coord'].value; let sortId = event.currentTarget.attributes['data-sort-id'].value; let actorId = event.currentTarget.attributes['data-actor-id'].value; @@ -750,7 +750,7 @@ export class RdDUtility { }); // gestion bouton tchat Possession - html.on("click", '.defense-possession', event => { + $(html).on("click", '.defense-possession', event => { let attackerId = event.currentTarget.attributes['data-attackerId'].value let defenderId = event.currentTarget.attributes['data-defenderId'].value let possessionId = event.currentTarget.attributes['data-possessionId'].value @@ -758,16 +758,16 @@ export class RdDUtility { }); // gestion bouton tchat Acheter - html.on("click", '.button-acheter', event => { + $(html).on("click", '.button-acheter', event => { const venteData = DialogItemAchat.preparerAchat(event.currentTarget); if (venteData) { DialogItemAchat.onAcheter(venteData); } }); - html.on("click", '.button-creer-acteur', event => RdDNameGen.onCreerActeur(event)); + $(html).on("click", '.button-creer-acteur', event => RdDNameGen.onCreerActeur(event)); // Gestion du bouton payer - html.on("click", '.payer-button', event => { + $(html).on("click", '.payer-button', event => { let sommeAPayer = Number(event.currentTarget.attributes['data-somme-a-payer']?.value ?? 0); let actor = RdDUtility.getSelectedActor("Pour effectuer le paiement:"); if (actor) { @@ -775,7 +775,7 @@ export class RdDUtility { ChatUtility.removeChatMessageId(RdDUtility.findChatMessageId(event.currentTarget)); } }); - html.on("click", '.rdd-world-content-link', async event => { + $(html).on("click", '.rdd-world-content-link', async event => { const htmlElement = html.find(event.currentTarget); const id = htmlElement?.data("id"); const doctype = htmlElement?.data("doctype"); diff --git a/module/tmr-rencontres.js b/module/tmr-rencontres.js index c7f9d820..684fdf85 100644 --- a/module/tmr-rencontres.js +++ b/module/tmr-rencontres.js @@ -22,8 +22,8 @@ export class TMRRencontres { /* -------------------------------------------- */ /** * Retourne une recontre en fonction de la case et du tirage - * @param {*} terrain - * @param {*} forcedRoll + * @param {*} terrain + * @param {*} forcedRoll */ async rollRencontre(terrain, forcedRoll) { const tmrType = TMRUtility.findTMRLike(terrain, { inclusMauvaise: true })?.type @@ -102,7 +102,7 @@ export class TMRRencontres { /* -------------------------------------------- */ async $chatRolledRencontre(row, rencontre, tmr) { - const flavorContent = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-compendium-table-roll-rencontre.hbs', + const flavorContent = await foundry.applications.handlebars.renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-compendium-table-roll-rencontre.hbs', { roll: row.roll, rencontre, @@ -113,7 +113,7 @@ export class TMRRencontres { }); const messageData = { user: game.user.id, - type: CONST.CHAT_MESSAGE_TYPES.ROLL, + type: CONST.CHAT_MESSAGE_STYLES.ROLL, roll: row.roll, sound: CONFIG.sounds.dice, content: flavorContent diff --git a/system.json b/system.json index 2f448ab2..bb2a43b4 100644 --- a/system.json +++ b/system.json @@ -6,8 +6,8 @@ "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/releases/download/13.0.0/system.json", "changelog": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v11/changelog.md", "compatibility": { - "minimum": "12", - "verified": "12" + "minimum": "13", + "verified": "13" }, "description": "Rêve de Dragon RPG for FoundryVTT", "authors": [ diff --git a/template.json b/template.json index 869ba16b..ac3f4c68 100644 --- a/template.json +++ b/template.json @@ -1062,12 +1062,6 @@ "part": 10 } }, - "tarot": { - "templates": ["description"], - "concept": "", - "aspect": "", - "frequence": 1 - }, "nombreastral": { "value": 0, "istrue": false, diff --git a/templates/actor/combat.hbs b/templates/actor/combat.hbs index a7765cbd..7150e974 100644 --- a/templates/actor/combat.hbs +++ b/templates/actor/combat.hbs @@ -10,10 +10,10 @@
  • - - + + {{#if arme.img}} {{/if}} @@ -31,8 +31,8 @@ {{#each esquives as |esq key|}}
  • - - + + {{esq.name}} diff --git a/templates/actor/competence.hbs b/templates/actor/competence.hbs index 1f82426b..a5ac3af7 100644 --- a/templates/actor/competence.hbs +++ b/templates/actor/competence.hbs @@ -1,19 +1,16 @@ {{#unless system.isHidden}}
  • - - + {{name}} - + {{#if system.isLevelUp}} - Vous pouvez dépenser {{system.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{name}} - + {{/if}} - - + @@ -24,7 +21,7 @@ value="{{numberFormat system.xp decimals=0 sign=false}}" data-dtype="number" {{#if (or (not @root.options.vueDetaillee) @root.options.vueArchetype)}}disabled{{/if}} /> {{#unless system.isLevelUp}} - Vous devez acquérir {{system.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{name}} + Vous devez acquérir {{system.xpNext}} points d'Experience pour augmenter de 1 votre compétence {{name}} {{/unless}} {{/if}} @@ -36,7 +33,7 @@ {{#if @root.options.vueDetaillee}}
    {{#if system.stressXpMax}} - diff --git a/templates/actor/inventaire-item.hbs b/templates/actor/inventaire-item.hbs index 11106e22..a9ea8389 100644 --- a/templates/actor/inventaire-item.hbs +++ b/templates/actor/inventaire-item.hbs @@ -1,7 +1,7 @@ {{#unless item.system.isHidden}} {{#if (or options.isObserver (ne item.type 'monnaie'))}}
  • - + {{#if (eq item.type 'conteneur')}}