const listeReglesOptionelles = [ {name:'recul', group:'combat', descr:"Appliquer le recul en cas de particulière en force ou de charge"}, {name:'resistanceArmeParade', group:'combat', descr:"Faire le jet de résistance des armes lors de parades pouvant les endommager"}, {name:'deteriorationArmure', group:'combat', descr:"Tenir compte de la détérioration des armures"}, {name:'defenseurDesarme', group:'combat', descr:"Le défenseur peut être désarmé en parant une particulière en force ou une charge avec une arme autre qu'un bouclier"}, {name:'categorieParade', group:'combat', descr:"Le défenseur doit obtenir une significative en cas de parade avec des armes de catégories différentes"}, {name:'tripleSignificative', group:'combat', descr:"En cas de demi-surprise, d'attaque particulière en finesse, et de catégories d'armes différentes, le défenseur doit obtenir 1/8 des chances de succès"}, {name:'astrologie', group:'generale', descr:"Appliquer les ajustements astrologiques aux jets de chance et aux rituels"} ]; export class ReglesOptionelles extends FormApplication { static init() { for (const regle of listeReglesOptionelles) { const name = regle.name; const id = ReglesOptionelles._getIdRegle(name); game.settings.register("foundryvtt-reve-de-dragon", id, { name: id, scope: "world", config: false, default: regle.default??true, type: Boolean }); } game.settings.registerMenu("foundryvtt-reve-de-dragon", "rdd-options-regles", { name: "Choisir les règles optionelles", label: "Choix des règles optionelles", hint: "Ouvre la fenêtre de sélection des règles optionelles", icon: "fas fa-bars", type: ReglesOptionelles, restricted: true }); } constructor(...args) { super(...args); } static _getIdRegle(name) { return `rdd-option-${name}`; } static get defaultOptions() { const options = super.defaultOptions; mergeObject(options, { id: "combat-settings", template: "systems/foundryvtt-reve-de-dragon/templates/regles-optionelles.html", height: 600, width: 350, minimizable: false, closeOnSubmit: true, title: "Options de combat" }); return options; } getData() { let formData = super.getData(); formData.regles = listeReglesOptionelles.map(it => { let r = duplicate(it); r.id = ReglesOptionelles._getIdRegle(r.name); r.active = ReglesOptionelles.isUsing(r.name); return r; }) return formData; } static isUsing(name) { return game.settings.get("foundryvtt-reve-de-dragon", ReglesOptionelles._getIdRegle(name)); } activateListeners(html) { html.find(".select-option").click((event) => { if (event.currentTarget.attributes.name) { let id = event.currentTarget.attributes.name.value; let isChecked = event.currentTarget.checked; game.settings.set("foundryvtt-reve-de-dragon", id, isChecked); } }); } async _updateObject(event, formData) { this.close(); } }