refactor(regles): fusion des Règles customs dans Règles optionnelles -> section Options alternatives, suppress fichiers

This commit is contained in:
fabres
2026-07-22 00:29:56 +02:00
parent 07997576cd
commit 3e63054b9d
5 changed files with 4 additions and 92 deletions
+3 -2
View File
@@ -1,9 +1,10 @@
import { Grammar } from "./grammar.js";
import { RdDItemCompetence } from "./item-competence.js";
import { ITEM_TYPES, SYSTEM_RDD } from "./constants.js";
import { ITEM_TYPES } from "./constants.js";
import { Misc } from "./misc.js";
import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js";
import { RdDItem } from "./item.js";
import { ReglesOptionnelles } from "./settings/regles-optionnelles.js";
export const VOIES_DRACONIC = [
{ code: 'O', label: "Voie d'Oniros", short: 'Oniros', ordre: 'a' },
@@ -189,7 +190,7 @@ export class RdDItemSort extends RdDItem {
const bc = RdDItemSort.stringToBonuscases(sort.system.bonuscase)
.find(search)
let bonus = Number(bc?.bonus ?? 0);
if (actor && game.settings.get(SYSTEM_RDD, "rdd-custom-plafonner-bonus-case-reve")) {
if (actor && ReglesOptionnelles.isUsing("plafonner-bonus-case-reve")) {
const cap = Misc.toInt(actor.system.carac?.reve?.value);
if (cap) bonus = Math.min(bonus, cap);
}
-2
View File
@@ -16,7 +16,6 @@ import { ChatUtility } from "./chat-utility.js"
import { StatusEffects } from "./settings/status-effects.js"
import { RdDCompendiumOrganiser } from "./rdd-compendium-organiser.js"
import { ReglesOptionnelles } from "./settings/regles-optionnelles.js"
import { ReglesCustom } from "./settings/regles-custom.js"
import { RdDHotbar } from "./rdd-hotbar-drop.js"
import { EffetsDraconiques } from "./tmr/effets-draconiques.js"
import { RdDDice } from "./rdd-dice.js"
@@ -156,7 +155,6 @@ export class SystemReveDeDragon {
/* -------------------------------------------- */
ReglesOptionnelles.initSettings()
ReglesCustom.initSettings()
OptionsAvancees.initSettings()
AutoAdjustDarkness.initSettings()
RdDTimestamp.initSettings()
-75
View File
@@ -1,75 +0,0 @@
import { SYSTEM_RDD } from "../constants.js";
import { Misc } from "../misc.js";
const listeReglesCustom = [
{ group: "Règles spéciales", name: "plafonner-bonus-case-reve", descr: "Plafonner le bonus de case à la carac Rêve" },
];
export class ReglesCustom extends FormApplication {
static initSettings() {
for (const regle of listeReglesCustom) {
const name = regle.name;
const id = ReglesCustom._getIdRegle(name);
game.settings.register(SYSTEM_RDD, id, { name: id, scope: "world", config: false, default: false, type: Boolean });
}
game.settings.registerMenu(SYSTEM_RDD, "rdd-options-custom", {
name: "Choisir les règles customs",
label: "Règles customs",
hint: "Ouvre la fenêtre de sélection des règles customs",
icon: "fas fa-bars",
type: ReglesCustom
});
}
constructor(...args) {
super(...args);
}
static _getIdRegle(name) {
return `rdd-custom-${name}`;
}
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
id: "regles-custom",
template: "systems/foundryvtt-reve-de-dragon/templates/settings/regles-custom.hbs",
height: 300,
width: 550,
minimizable: false,
closeOnSubmit: true,
title: "Règles customs"
}, { inplace: false })
}
getData() {
let formData = super.getData();
const regles = listeReglesCustom.map(it => {
it = foundry.utils.duplicate(it);
it.id = ReglesCustom._getIdRegle(it.name);
it.active = ReglesCustom.isActive(it.name);
return it;
});
formData.regles = regles;
formData.groups = Misc.classify(regles, it => it.group);
return formData;
}
static isActive(name) {
return game.settings.get(SYSTEM_RDD, ReglesCustom._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(SYSTEM_RDD, id, isChecked);
}
});
}
async _updateObject(event, formData) {
this.close();
}
}
+1
View File
@@ -45,6 +45,7 @@ const listeReglesOptionnelles = [
{ group: 'Options alternatives', name: 'degat-minimum-malus-libre-simple', descr: "Le malus libre d'attaque remplace une des valeurs de dés d'encaissement si elle est plus petite. Exemple : la difficulté libre de l'attaquant est de -4. Sur le jet d'encaissement, si le plus petit dé est inférieur à 4, alors il devient 4.", default: false },
{ group: 'Options alternatives', name: 'degat-minimum-malus-libre', descr: "Le malus libre d'attaque remplace une valeur de dés d'encaissement si elle est plus petite. Exemple : la difficulté libre de l'attaquant est de -4. Sur le jet d'encaissement, tout résultat inférieur à 4 devient 4.", default: false },
{ group: 'Options alternatives', name: 'degat-ajout-malus-libre', descr: "Le malus libre d'attaque s'ajoute au jet d'encaissement et aux autres bonus. Exemple : la difficulté libre de l'attaquant est de -4. Le jet d'encaissement est effectué à 2d10+4, plus les bonus de situation et d'armes.", default: false },
{ group: 'Options alternatives', name: 'plafonner-bonus-case-reve', descr: "Plafonner le bonus de case à la carac Rêve", default: false },
];
const uniquementJoueur = listeReglesOptionnelles.filter(it => it.uniquementJoueur).map(it=>it.name);
-13
View File
@@ -1,13 +0,0 @@
<form autocomplete="off" onsubmit="event.preventDefault();">
{{#each groups as |group key|}}
<h3>{{key}}</h3>
<ul>
{{#each group as |regle r|}}
<li>
<input class="select-option" type="checkbox" name="{{regle.id}}" {{#if regle.active}}checked{{/if}}/>
<label>{{regle.descr}}</label>
</li>
{{/each}}
</ul>
{{/each}}
</form>