From df9df90ccb765e1cb37e7ce3ce58421e262e02fb Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 29 Aug 2025 01:02:27 +0200 Subject: [PATCH 1/6] Init premier round --- module/rdd-combat.js | 68 ++++++++++++++++++++++------------------- module/rdd-token-hud.js | 1 - 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/module/rdd-combat.js b/module/rdd-combat.js index f596abad..d10c7cc4 100644 --- a/module/rdd-combat.js +++ b/module/rdd-combat.js @@ -17,23 +17,23 @@ import { RdDRollResult } from "./rdd-roll-result.js"; /* -------------------------------------------- */ const premierRoundInit = [ - { pattern: 'hast', init: 5.90 }, - { pattern: 'lance', init: 5.85 }, - { pattern: 'baton', init: 5.80 }, - { pattern: 'doubledragonne', init: 5.75 }, - { pattern: 'esparlongue', init: 5.70 }, - { pattern: 'epeedragonne', init: 5.65 }, - { pattern: 'epeebatarde', init: 5.60 }, - { pattern: 'epeecyane', init: 5.55 }, - { pattern: 'epeesorde', init: 5.50 }, - { pattern: 'grandehache', init: 5.45 }, - { pattern: 'bataille', init: 5.40 }, - { pattern: 'epeegnome', init: 5.35 }, - { pattern: 'masse', init: 5.30 }, - { pattern: 'gourdin', init: 5.25 }, - { pattern: 'fleau', init: 5.20 }, - { pattern: 'dague', init: 5.15 }, - { pattern: 'autre', init: 5.10 }, + { pattern: 'hast' }, + { pattern: 'lance' }, + { pattern: 'baton' }, + { pattern: 'doubledragonne' }, + { pattern: 'esparlongue' }, + { pattern: 'epeedragonne' }, + { pattern: 'epeebatarde' }, + { pattern: 'epeecyane' }, + { pattern: 'epeesorde' }, + { pattern: 'grandehache' }, + { pattern: 'bataille' }, + { pattern: 'epeegnome' }, + { pattern: 'masse' }, + { pattern: 'gourdin' }, + { pattern: 'fleau' }, + { pattern: 'dague' }, + { pattern: 'autre' }, ]; /* -------------------------------------------- */ @@ -45,6 +45,10 @@ export class RdDCombatManager extends Combat { Hooks.on("updateCombat", (combat, change, options, userId) => { RdDCombat.onUpdateCombat(combat, change, options, userId) }); Hooks.on("preDeleteCombat", (combat, html, id) => { combat.onPreDeleteCombat() }) Hooks.on("deleteCombat", (combat, html, id) => { combat.onDeleteCombat() }) + + for (let i = 0.0; i < premierRoundInit.length; i++) { + premierRoundInit[i].init = 5.99 - i / 100 + } } /* -------------------------------------------- */ @@ -108,9 +112,7 @@ export class RdDCombatManager extends Combat { async rollInitiative(ids, messageOptions = {}) { console.log(`${game.system.title} | Combat.rollInitiative()`, ids, messageOptions) ids = typeof ids === "string" ? [ids] : ids - ids.forEach(async id => - await this.rollInitRdD(id, undefined, messageOptions) - ) + Promise.all(ids.map(id => this.rollInitRdD(id, undefined, messageOptions))) return this } @@ -251,19 +253,20 @@ export class RdDCombatManager extends Combat { let initMissing = game.combat.combatants.find(it => !it.initiative); if (!initMissing) { // Premier round ! for (let combatant of game.combat.combatants) { - let action = combatant.initiativeData?.arme; - //console.log("Parsed !!!", combatant, initDone, game.combat.current, arme); - if (action && action.type == "arme") { - for (let initData of premierRoundInit) { - if (Grammar.toLowerCaseNoAccentNoSpace(action.system.initpremierround).includes(initData.pattern)) { - let msg = `

L'initiative de ${combatant.actor.getAlias()} a été modifiée !

+ if (combatant.initiativeData?.arme?.type == "arme") { + // TODO: get init data premier round + const initiativeData = combatant.initiativeData; + const action = combatant.initiativeData.arme; + const fromArme = Grammar.toLowerCaseNoAccentNoSpace(action.system.initpremierround) + const initData = premierRoundInit.find(it => fromArme.includes(initData.pattern)) + if (initData) { + let msg = `

L'initiative de ${combatant.actor.getAlias()} a été modifiée !


Etant donné son ${action.name}, son initative pour ce premier round est désormais de ${initData.init}.
` - ChatMessage.create({ content: msg }); - game.combat.setInitiative(combatant._id, initData.init); - } + ChatMessage.create({ content: msg }); + game.combat.setInitiative(combatant._id, initData.init); } } } @@ -297,7 +300,7 @@ export class RdDCombatManager extends Combat { ].concat(options); } /* -------------------------------------------- */ - static rollInitiativeAction(combatantId, action) { + static async rollInitiativeAction(combatantId, action) { const combatant = game.combat.combatants.get(combatantId) const actor = RdDCombatManager.getActorCombatant(combatant) if (actor == undefined) { return [] } @@ -308,7 +311,8 @@ export class RdDCombatManager extends Combat { const ajustement = RdDCombatManager.calculAjustementInit(actor, action) const rollFormula = RdDCombatManager.formuleInitiative(init.offset, init.carac, init.niveau, ajustement); - game.combat.rollInitRdD(combatantId, rollFormula, init); + await game.combat.rollInitRdD(combatantId, rollFormula, init); + combatant.initiativeData } static getInitData(actor, action) { @@ -1141,7 +1145,7 @@ export class RdDCombat { if (RdDCombat.isParticuliere(defenderRoll)) { await this._onEsquiveParticuliere(defenderRoll) } - return + return } return await this._onEsquiveEchec(defenderRoll) } diff --git a/module/rdd-token-hud.js b/module/rdd-token-hud.js index f6e0975d..4b36f2ae 100644 --- a/module/rdd-token-hud.js +++ b/module/rdd-token-hud.js @@ -1,6 +1,5 @@ /* -------------------------------------------- */ import { HtmlUtility } from "./html-utility.js"; -import { Misc } from "./misc.js"; import { RdDCombatManager } from "./rdd-combat.js"; import { Targets } from "./targets.js"; -- 2.35.3 From bd082248d9b89f74f8410fe5bf02c399c12e1a58 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 5 Sep 2025 00:54:33 +0200 Subject: [PATCH 2/6] Correction de tooltips (v13) Sur les ajustements, les tooltips sont visibles --- changelog.md | 4 + css/foundryvtt-reve-de-dragon.css | 70 +++++++-------- less/fonts.less | 2 +- less/foundryvtt-reve-de-dragon.less | 127 +++++++++++++++------------- templates/actor/carac-main.hbs | 18 ++-- templates/actor/competence.hbs | 8 +- templates/chat-infojet.hbs | 20 +++-- 7 files changed, 134 insertions(+), 115 deletions(-) diff --git a/changelog.md b/changelog.md index 4dea6baa..ef79d821 100644 --- a/changelog.md +++ b/changelog.md @@ -1,4 +1,8 @@ # 13.0 +## 13.0.7 - Sous le signe d'Illysis +- Fix Foundry V13 + - les tooltips des ajustements sont correctement visible + ## 13.0.6 - Le bandage d'Illysis - Les soins sont de nouveau disponibles depuis les tokens diff --git a/css/foundryvtt-reve-de-dragon.css b/css/foundryvtt-reve-de-dragon.css index 75abb883..6654d6d7 100644 --- a/css/foundryvtt-reve-de-dragon.css +++ b/css/foundryvtt-reve-de-dragon.css @@ -132,8 +132,8 @@ select, /*--------------------------------------------------------------------------*/ /* Control, Tool, hotbar & navigation */ /* Tooltip container */ - /* Tooltip text */ /* Show the tooltip text when you mouse over the tooltip container */ + /* html Tooltips html*/ /* Dropdown Content (Hidden by Default) */ /* Change the background color of the dropdown button when the dropdown content is shown */ /* Show the dropdown menu on hover */ @@ -420,8 +420,9 @@ select, .system-foundryvtt-reve-de-dragon .window-header { background: rgba(0, 0, 0, 0.75); } +.system-foundryvtt-reve-de-dragon .application .window-content, .system-foundryvtt-reve-de-dragon .window-app.sheet .window-content { - margin: 0; + margin: 0.2rem; padding: 0; } .system-foundryvtt-reve-de-dragon section.window-content div.dialog-buttons { @@ -1183,7 +1184,7 @@ select, font-weight: bold; background-color: lightblue; } -.system-foundryvtt-reve-de-dragon div.placeholder-resolution span.table-proba-reussite { +.system-foundryvtt-reve-de-dragon span.table-proba-reussite { font-size: 0.8rem; padding: 5px; } @@ -1360,7 +1361,7 @@ select, width: 100%; max-width: 90%; } -.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content .tooltip:hover .tooltiptext { +.system-foundryvtt-reve-de-dragon .window-app.sheet .window-content :is(.tooltip, .tooltip-overflow):hover .tooltiptext { top: 2rem; left: 2rem; margin: 0; @@ -1804,6 +1805,13 @@ select, padding: 1px; vertical-align: text-top; } +.system-foundryvtt-reve-de-dragon .actor-img-small { + max-width: 1.5rem; + max-height: 1.5rem; + flex-grow: 0; + margin-right: 0.2rem; + vertical-align: bottom; +} .system-foundryvtt-reve-de-dragon #sidebar-tabs { flex: 0 0 28px; box-sizing: border-box; @@ -2280,11 +2288,26 @@ select, position: relative; display: inline-block; } +.system-foundryvtt-reve-de-dragon .tooltip-overflow { + display: inline-block; +} .system-foundryvtt-reve-de-dragon .tooltip-dotted { border-bottom: 1px dotted black; /* If you want dots under the hoverable text */ } -.system-foundryvtt-reve-de-dragon .tooltip .tooltiptext { +.system-foundryvtt-reve-de-dragon div.message-content span .tooltip-overflow { + overflow: visible; + position: absolute; +} +.system-foundryvtt-reve-de-dragon div.message-content span .tooltip-overflow span { + overflow: visible; + position: relative; +} +.system-foundryvtt-reve-de-dragon :is(.tooltip, .tooltip-overflow):hover .tooltiptext { + visibility: visible; + opacity: 1; +} +.system-foundryvtt-reve-de-dragon :is(.tooltip, .tooltip-overflow) .tooltiptext { text-align: center; /* Position the tooltip text */ position: absolute; @@ -2294,10 +2317,7 @@ select, opacity: 0; transition: opacity 0.3s; } -.system-foundryvtt-reve-de-dragon .tooltip .left-competence { - transform: translate(-100%, 0%); -} -.system-foundryvtt-reve-de-dragon .tooltip .ttt-fatigue { +.system-foundryvtt-reve-de-dragon :is(.tooltip, .tooltip-overflow) .ttt-fatigue { width: 360px; background: rgba(30, 25, 20, 0.9); border-image: url(../assets/ui/bg_control.webp) 21 repeat; @@ -2308,29 +2328,24 @@ select, font-size: 0.8rem; padding: 3px 0; } -.system-foundryvtt-reve-de-dragon .tooltip .ttt-ajustements { - width: 150px; +.system-foundryvtt-reve-de-dragon :is(.tooltip, .tooltip-overflow) .ttt-ajustements { + width: 10rem; background: var(--background-tooltip); border-radius: 6px; font-size: 0.9rem; padding: 3px 0; } -.system-foundryvtt-reve-de-dragon .tooltip .ttt-titre { - text-align: justify; - width: 100%; - top: 30px; - background: var(--background-tooltip); - border-radius: 6px; - font-size: 0.9rem; - padding: 3px; +.system-foundryvtt-reve-de-dragon :is(.tooltip, .tooltip-overflow) .ttt-ajustements div:nth-child(odd) { + background: var(--background-tooltip-alt); } .system-foundryvtt-reve-de-dragon aside#tooltip { + max-width: 15rem; background: var(--background-tooltip); - /*color: var(--color-text-dark-primary);*/ color: rgba(100, 100, 50, 0.85); - font-size: 1rem; + font-size: 0.9rem; border-radius: 0.2rem; - padding: 0.4rem; + padding: 0.3rem; + font-family: "CaslonAntique"; } .system-foundryvtt-reve-de-dragon aside#tooltip span.reference { color: var(--color-tooltip); @@ -2339,17 +2354,6 @@ select, .system-foundryvtt-reve-de-dragon aside#tooltip .toolclip p.faint { color: var(--color-tooltip-faint); } -.system-foundryvtt-reve-de-dragon .tooltip :is(.ttt-xp,.ttt-levelup) { - width: 250px; - background: var(--background-tooltip) !important; - border-radius: 6px; - font-size: 0.9rem; - padding: 3px 0; -} -.system-foundryvtt-reve-de-dragon .tooltip:hover .tooltiptext { - visibility: visible; - opacity: 1; -} .system-foundryvtt-reve-de-dragon .chat-card-button, .system-foundryvtt-reve-de-dragon .chat-card-button-pushed { border-radius: 0.2rem; diff --git a/less/fonts.less b/less/fonts.less index f02a31e5..0fc3f995 100644 --- a/less/fonts.less +++ b/less/fonts.less @@ -80,5 +80,5 @@ .sheet header.sheet-header .header-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, .item-checkbox, #sidebar, #players, #navigation #nav-toggle { - font-family: "CaslonAntique"; /* For sheet parts; For nav and title */ + font-family: "CaslonAntique"; /* For sheet parts; For nav and title */ } diff --git a/less/foundryvtt-reve-de-dragon.less b/less/foundryvtt-reve-de-dragon.less index b86792b4..c52ab6c2 100644 --- a/less/foundryvtt-reve-de-dragon.less +++ b/less/foundryvtt-reve-de-dragon.less @@ -15,8 +15,9 @@ background: rgba(0,0,0,0.75); } + .application .window-content, .window-app.sheet .window-content { - margin: 0; + margin: 0.2rem; padding: 0; } @@ -217,7 +218,6 @@ padding: 0; } - .grid-competence-archetype { display: grid; grid-column: span 3 / span 3; @@ -641,6 +641,7 @@ font-size: 1rem; letter-spacing: 1px; } + .app.sheet div.form-group { clear: both; display: flex; @@ -808,6 +809,7 @@ font-size: 0.8rem; text-align: right; } + .placeholder-ajustements { flex-direction: column; } @@ -820,7 +822,7 @@ background-color: lightblue; } - div.placeholder-resolution span.table-proba-reussite{ + span.table-proba-reussite{ font-size: 0.8rem; padding: 5px; } @@ -1017,7 +1019,7 @@ max-width: 90%; } - .window-app.sheet .window-content .tooltip:hover .tooltiptext { + .window-app.sheet .window-content :is(.tooltip, .tooltip-overflow):hover .tooltiptext { top: 2rem; left: 2rem; margin: 0; @@ -1504,6 +1506,14 @@ vertical-align: text-top; } + .actor-img-small { + max-width: 1.5rem; + max-height: 1.5rem; + flex-grow: 0; + margin-right: 0.2rem; + vertical-align: bottom; + } + #sidebar-tabs { flex: 0 0 28px; box-sizing: border-box; @@ -1853,66 +1863,78 @@ position: relative; display: inline-block; } - + .tooltip-overflow { + display: inline-block; + } + .tooltip-dotted { border-bottom: 1px dotted black; /* If you want dots under the hoverable text */ } - /* Tooltip text */ - .tooltip .tooltiptext { - text-align: center; - /* Position the tooltip text */ + div.message-content span .tooltip-overflow { + overflow: visible; position: absolute; - z-index: 1; - /* Fade in tooltip */ - visibility: hidden; - opacity: 0; - transition: opacity 0.3s; + span { + overflow: visible; + position: relative; + } } - .tooltip .left-competence { - transform: translate(-100%, 0%); + /* Show the tooltip text when you mouse over the tooltip container */ + :is(.tooltip, .tooltip-overflow):hover { + .tooltiptext { + visibility: visible; + opacity: 1; + } } + /* html Tooltips html*/ + :is(.tooltip, .tooltip-overflow){ + + .tooltiptext { + text-align: center; + /* Position the tooltip text */ + position: absolute; + z-index: 1; + /* Fade in tooltip */ + visibility: hidden; + opacity: 0; + transition: opacity 0.3s; + } - .tooltip .ttt-fatigue{ - width: 360px; + .ttt-fatigue { + width: 360px; - background: rgba(30, 25, 20, 0.9); - border-image: url(../assets/ui/bg_control.webp) 21 repeat; - border-image-slice: 6 6 6 6 fill; - border-image-width: 6px 6px 6px 6px; - border-image-outset: 0px 0px 0px 0px; - border-radius: 0px; + background: rgba(30, 25, 20, 0.9); + border-image: url(../assets/ui/bg_control.webp) 21 repeat; + border-image-slice: 6 6 6 6 fill; + border-image-width: 6px 6px 6px 6px; + border-image-outset: 0px 0px 0px 0px; + border-radius: 0px; - font-size: 0.8rem; - padding: 3px 0; - } + font-size: 0.8rem; + padding: 3px 0; + } - .tooltip .ttt-ajustements { - width: 150px; - background: var(--background-tooltip); - border-radius: 6px; - font-size: 0.9rem; - padding: 3px 0; - } - - .tooltip .ttt-titre { - text-align: justify; - width: 100%; - top: 30px; - background: var(--background-tooltip); - border-radius: 6px; - font-size: 0.9rem; - padding: 3px; + .ttt-ajustements { + width: 10rem; + background: var(--background-tooltip); + border-radius: 6px; + font-size: 0.9rem; + padding: 3px 0; + div:nth-child(odd) { + background: var(--background-tooltip-alt); + } + } } aside#tooltip { + max-width: 15rem; background: var(--background-tooltip); - /*color: var(--color-text-dark-primary);*/ color: rgba(100, 100, 50, 0.85); - font-size: 1rem; + font-size: 0.9rem; border-radius: 0.2rem; - padding: 0.4rem; + padding: 0.3rem; + font-family: "CaslonAntique"; } aside#tooltip span.reference { @@ -1924,19 +1946,6 @@ color: var(--color-tooltip-faint); } - .tooltip :is(.ttt-xp,.ttt-levelup) { - width: 250px; - background: var(--background-tooltip) !important; - border-radius: 6px; - font-size: 0.9rem; - padding: 3px 0; - } - - /* Show the tooltip text when you mouse over the tooltip container */ - .tooltip:hover .tooltiptext { - visibility: visible; - opacity: 1; - } .chat-card-button, .chat-card-button-pushed { border-radius: 0.2rem; diff --git a/templates/actor/carac-main.hbs b/templates/actor/carac-main.hbs index ec84ed66..5b26ef21 100644 --- a/templates/actor/carac-main.hbs +++ b/templates/actor/carac-main.hbs @@ -13,22 +13,22 @@