diff --git a/changelog.md b/changelog.md index a5af25c0..d3d36795 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,10 @@ # 13.0 +## 13.0.37 - L'urgence d'Illisys + +- Le Haut-rêve est de nouveau proposé dans les options d'initiative +- Nouvelle règle optionnelle: choisir si seules les armes équipées sont proposées en combat + ## 13.0.37 - Le bonheur des zyglutes d'Illisys - Corrections v14 diff --git a/module/actor.js b/module/actor.js index 5dadbc8c..0ce6dca2 100644 --- a/module/actor.js +++ b/module/actor.js @@ -140,13 +140,14 @@ export class RdDActor extends RdDBaseActorSang { .reduce(Misc.sum(), 0); } - listActions({ isAttaque = false, isEquipe = false }) { + listActions() { // Recupération des attaques - const actions = this.listActionsAttaque() - .filter(it => !isEquipe || it.arme.system.equipe) + const actions = ReglesOptionnelles.isUsing('armes-equipees') + ? this.listActionsAttaque().filter(action => action.equipe) + : this.listActionsAttaque() - if (!isAttaque && this.system.attributs.hautrevant.value) { - actions.push({ label: "Draconic", action: 'haut-reve', initOnly: true }) + if (this.system.attributs.hautrevant.value) { + actions.push({ label: "Draconic", action: 'haut-reve', initOnly: true, equipe: true }) } return actions } @@ -2474,10 +2475,10 @@ export class RdDActor extends RdDBaseActorSang { /* -------------------------------------------- */ async equiperObjet(item) { if (item?.isEquipable()) { - const isEquipe = !item.system.equipe; - await item.update({ "system.equipe": isEquipe }) + const newEquipe = !item.system.equipe; + await item.update({ "system.equipe": newEquipe }) this.computeEncTotal() - if (isEquipe) + if (newEquipe) await this.verifierForceMin(item) } } diff --git a/module/actor/base-actor-reve.js b/module/actor/base-actor-reve.js index 990a68b8..2f369cea 100644 --- a/module/actor/base-actor-reve.js +++ b/module/actor/base-actor-reve.js @@ -145,7 +145,7 @@ export class RdDBaseActorReve extends RdDBaseActor { } } - listActions({ isAttaque = false, isEquipe = false }) { + listActions() { return this.itemTypes[ITEM_TYPES.competencecreature] .filter(it => it.isAttaque()) .map(it => it.attaqueCreature()) diff --git a/module/actor/base-actor.js b/module/actor/base-actor.js index 0bb16333..544b63b1 100644 --- a/module/actor/base-actor.js +++ b/module/actor/base-actor.js @@ -914,11 +914,7 @@ export class RdDBaseActor extends Actor { isActorCombat() { return false } getCaracInit(competence) { return 0 } - listAttaques() { - return this.listActions({ isAttaque: true, isEquipe: false }) - } - - listActions({ isAttaque = false, isEquipe = false }) { return [] } + listActions() { return [] } listActionsPossessions() { return this.itemTypes[ITEM_TYPES.possession] diff --git a/module/rdd-combat.js b/module/rdd-combat.js index 2d6ae28c..5fdbe502 100644 --- a/module/rdd-combat.js +++ b/module/rdd-combat.js @@ -170,7 +170,7 @@ export class RdDCombatManager extends Combat { } static getFirstInitRollFormula(actor) { - const actions = actor.listActions({ isEquipe: true }) + const actions = actor.listActions() if (actions.length > 0) { const action = actions[0] const init = RdDCombatManager.getInitData(actor, action) @@ -307,7 +307,7 @@ export class RdDCombatManager extends Combat { const possessions = actor.listActionsPossessions() const actions = possessions.length > 0 ? possessions - : actor.listActions({ isEquipe: true }) + : actor.listActions() return Misc.indexed(actions) } diff --git a/module/rdd-token-hud.js b/module/rdd-token-hud.js index cbdc9e6c..c3b6e8ac 100644 --- a/module/rdd-token-hud.js +++ b/module/rdd-token-hud.js @@ -49,7 +49,7 @@ export class RdDTokenHud { static async addExtensionHudCombatV2(html, combatant, actor, token) { const isPossession = actor.listActionsPossessions().length > 0; - const actionsCombat = isPossession ? [] : actor.listAttaques() + const actionsCombat = isPossession ? [] : actor.listActions() const ajustements = combatant?.initiative ? [ { label: 'Initiative +1', action: 'delta', value: 1 }, diff --git a/module/roll/roll-part-attaque.mjs b/module/roll/roll-part-attaque.mjs index c3869dbe..ecbb24d0 100644 --- a/module/roll/roll-part-attaque.mjs +++ b/module/roll/roll-part-attaque.mjs @@ -35,7 +35,8 @@ export class RollPartAttaque extends RollPartSelect { loadRefs(rollData) { const refs = this.getRefs(rollData) - const attaques = rollData.active.actor.listAttaques() + const attaques = rollData.active.actor.listActions() + .filter(it => !it.initOnly) .sort(Misc.descending(it => it.comp?.system.niveau ?? -8)) refs.all = attaques.map(it => RollPartAttaque.$extractAttaque(it, rollData)) this.filterAttaquesInitiative(rollData) diff --git a/module/settings/regles-optionnelles.js b/module/settings/regles-optionnelles.js index 71e918e2..cd8fe8dc 100644 --- a/module/settings/regles-optionnelles.js +++ b/module/settings/regles-optionnelles.js @@ -10,7 +10,7 @@ const listeReglesOptionnelles = [ { group: 'Récupération', name: 'recuperation-reve', descr: "Récupérer le rêve pendant la nuit (les jets sont toujours faits pour les Rêves de Dragons)"}, { group: 'Récupération', name: 'recuperation-moral', descr: "Le moral revient vers 0 durant Château Dormant"}, - + { group: 'Règles de combat', name: 'armes-equipees', descr: "Proposer uniquement les armes équipées au combat", default: false}, { group: 'Règles de combat', name: 'localisation-aleatoire', descr: "Proposer une localisation aléatoire des blessures" }, { group: 'Règles de combat', name: 'recul', descr: "Appliquer le recul en cas de particulière en force ou de charge" }, { group: 'Règles de combat', name: 'acrobatie-pour-recul', descr: "L'acrobatie aide à ne pas chuter en cas de recul" , default: false },