From 49996104ced35b9e7c48dfd4eac09772114d0544 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnier Date: Wed, 15 Apr 2026 02:16:51 +0200 Subject: [PATCH] Roll and styles update --- assets/scenes/0iGCRqkdJKjmmbl4-thumb.webp | Bin 0 -> 9874 bytes ...thumb.webp => X3XJg7raEXtOFOtj-thumb.webp} | Bin fvtt-celestopol.mjs | 136 ++++++- lang/fr.json | 17 +- module/documents/roll.mjs | 34 +- .../aides-de-jeu/{000075.log => 000078.log} | 0 packs-system/aides-de-jeu/CURRENT | 2 +- packs-system/aides-de-jeu/LOG | 11 +- packs-system/aides-de-jeu/LOG.old | 11 +- .../{MANIFEST-000074 => MANIFEST-000076} | Bin 146 -> 161 bytes packs-system/anomalies/000128.log | Bin 5597 -> 0 bytes .../000036.log => anomalies/000132.log} | 0 .../anomalies/{000126.ldb => 000135.ldb} | Bin 6617 -> 6617 bytes packs-system/anomalies/CURRENT | 2 +- packs-system/anomalies/LOG | 27 +- packs-system/anomalies/LOG.old | 18 +- packs-system/anomalies/MANIFEST-000127 | Bin 131 -> 0 bytes packs-system/anomalies/MANIFEST-000129 | Bin 0 -> 437 bytes .../000075.log => pretires/000039.log} | 0 packs-system/pretires/CURRENT | 2 +- packs-system/pretires/LOG | 11 +- packs-system/pretires/LOG.old | 11 +- .../{MANIFEST-000035 => MANIFEST-000037} | Bin 181 -> 196 bytes packs-system/scenes/000057.ldb | Bin 3076 -> 0 bytes packs-system/scenes/000078.log | 0 packs-system/scenes/000080.ldb | Bin 0 -> 1810 bytes packs-system/scenes/CURRENT | 2 +- packs-system/scenes/LOG | 18 +- packs-system/scenes/LOG.old | 11 +- packs-system/scenes/MANIFEST-000074 | Bin 296 -> 0 bytes packs-system/scenes/MANIFEST-000076 | Bin 0 -> 673 bytes styles/global.less | 1 + styles/roll.less | 335 +++++++++++------- templates/chat-message.hbs | 23 +- templates/moon-standalone.hbs | 23 ++ 35 files changed, 498 insertions(+), 197 deletions(-) create mode 100644 assets/scenes/0iGCRqkdJKjmmbl4-thumb.webp rename assets/scenes/{Jr7lGxYk2RETlXRv-thumb.webp => X3XJg7raEXtOFOtj-thumb.webp} (100%) rename packs-system/aides-de-jeu/{000075.log => 000078.log} (100%) rename packs-system/aides-de-jeu/{MANIFEST-000074 => MANIFEST-000076} (79%) delete mode 100644 packs-system/anomalies/000128.log rename packs-system/{pretires/000036.log => anomalies/000132.log} (100%) rename packs-system/anomalies/{000126.ldb => 000135.ldb} (96%) delete mode 100644 packs-system/anomalies/MANIFEST-000127 create mode 100644 packs-system/anomalies/MANIFEST-000129 rename packs-system/{scenes/000075.log => pretires/000039.log} (100%) rename packs-system/pretires/{MANIFEST-000035 => MANIFEST-000037} (65%) delete mode 100644 packs-system/scenes/000057.ldb create mode 100644 packs-system/scenes/000078.log create mode 100644 packs-system/scenes/000080.ldb delete mode 100644 packs-system/scenes/MANIFEST-000074 create mode 100644 packs-system/scenes/MANIFEST-000076 diff --git a/assets/scenes/0iGCRqkdJKjmmbl4-thumb.webp b/assets/scenes/0iGCRqkdJKjmmbl4-thumb.webp new file mode 100644 index 0000000000000000000000000000000000000000..f9e23b12176aa70a8aec4fc094a990453bf6fa59 GIT binary patch literal 9874 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 { if (foundry.utils.hasProperty(changed, `flags.${SYSTEM_ID}.${DAMAGE_APPLICATION_FLAG}`)) { _updateRenderedChatMessageState(message) } + if (foundry.utils.hasProperty(changed, `flags.${SYSTEM_ID}.${MOON_EFFECT_FLAG}`)) { + _updateRenderedMoonEffectState(message) + } }) _activateExistingChatCards() @@ -548,8 +552,9 @@ function _activateExistingChatCards() { document.querySelectorAll(".message[data-message-id]").forEach(messageEl => { const messageId = messageEl.dataset.messageId const message = game.messages.get(messageId) - const root = messageEl.querySelector(".celestopol.chat-roll") - if (!message || !root) return + if (!message) return + const root = messageEl.querySelector(".celestopol.chat-roll, .celestopol-roll.moon-standalone-card") + if (!root) return _activateChatCardListeners(message, root) }) } @@ -559,12 +564,19 @@ function _activateChatCardListeners(message, html) { if (!root) return _renderWeaponDamageState(message, root) + _renderMoonEffectState(message, root) root.querySelectorAll('[data-action="apply-weapon-damage"]').forEach(button => { if (button.dataset.bound === "true") return button.dataset.bound = "true" button.addEventListener("click", event => _onApplyWeaponDamageClick(event, message)) }) + + root.querySelectorAll('[data-action="apply-moon-effect"]').forEach(button => { + if (button.dataset.bound === "true") return + button.dataset.bound = "true" + button.addEventListener("click", event => _onApplyMoonEffectClick(event, message)) + }) } async function _onApplyWeaponDamageClick(event, message) { @@ -746,6 +758,126 @@ async function _applyWeaponDamage({ actorId, actorUuid = null, incomingWounds, c return { actorName: actor.name, appliedWounds, armorProtection } } +/* ─── Dé de la Lune — contreparties ─────────────────────────────────────── */ + +function _getMoonEffectState(message) { + return message?.getFlag(SYSTEM_ID, MOON_EFFECT_FLAG) ?? null +} + +function _renderMoonEffectState(message, root) { + const state = _getMoonEffectState(message) + const actionsDiv = root.querySelector(".moon-effect-actions") + if (!actionsDiv) return + + if (!state?.applied) return + + const NEGATIVE_EFFECTS = new Set(["lose-anomaly", "gain-spleen", "lose-destin"]) + + // Désactiver tous les boutons et afficher le statut + actionsDiv.querySelectorAll(".moon-effect-btn").forEach(btn => { btn.disabled = true }) + + let statusEl = actionsDiv.querySelector(".moon-effect-applied-status") + if (!statusEl) { + statusEl = document.createElement("span") + actionsDiv.append(statusEl) + } + statusEl.className = "moon-effect-applied-status" + (NEGATIVE_EFFECTS.has(state.effect) ? " is-negative" : "") + statusEl.textContent = state.effectLabel + ? game.i18n.format("CELESTOPOL.Moon.effectApplied", { label: state.effectLabel }) + : game.i18n.localize("CELESTOPOL.Moon.effectApplied") +} + +function _updateRenderedMoonEffectState(message) { + const msgEl = document.querySelector(`.message[data-message-id="${message.id}"]`) + if (!msgEl) return + const root = msgEl.querySelector(".celestopol.chat-roll, .celestopol-roll.moon-standalone-card") + if (!root) return + _renderMoonEffectState(message, root) +} + +async function _onApplyMoonEffectClick(event, message) { + event.preventDefault() + const state = _getMoonEffectState(message) + if (state?.applied) return + + const button = event.currentTarget + const effect = button.dataset.effect + const actionsDiv = button.closest(".moon-effect-actions") + const actorId = actionsDiv?.dataset.moonActorId ?? "" + const actorUuid = actionsDiv?.dataset.moonActorUuid ?? "" + + // Désactiver immédiatement pour éviter les double-clics + actionsDiv?.querySelectorAll(".moon-effect-btn").forEach(btn => { btn.disabled = true }) + + const actor = await CelestopolRoll.resolveActor({ actorId, actorUuid }) + if (!actor) { + ui.notifications.warn(game.i18n.localize("CELESTOPOL.Moon.actorNotFound")) + actionsDiv?.querySelectorAll(".moon-effect-btn").forEach(btn => { btn.disabled = false }) + return + } + + const effectLabel = await _applyMoonEffect(actor, effect) + if (effectLabel === null) { + actionsDiv?.querySelectorAll(".moon-effect-btn").forEach(btn => { btn.disabled = false }) + return + } + + await message.setFlag(SYSTEM_ID, MOON_EFFECT_FLAG, { applied: true, effect, effectLabel }) +} + +async function _applyMoonEffect(actor, effect) { + const i18n = key => game.i18n.localize(`CELESTOPOL.Moon.${key}`) + const anomaly = actor.items.find(i => i.type === "anomaly") + + switch (effect) { + case "regain-anomaly": { + if (!anomaly) { ui.notifications.warn(i18n("noAnomaly")); return null } + const max = anomaly.system?.level ?? 0 + const cur = anomaly.system?.usesRemaining ?? 0 + if (cur >= max) { ui.notifications.warn(i18n("anomalyFull")); return null } + await anomaly.update({ "system.usesRemaining": Math.min(max, cur + 1) }) + ui.notifications.info(game.i18n.format("CELESTOPOL.Moon.effectApplied", { label: i18n("effectRegainAnomaly") })) + return i18n("effectRegainAnomaly") + } + case "lose-spleen": { + const cur = actor.system?.spleen?.lvl ?? 0 + if (cur <= 0) { ui.notifications.warn(i18n("spleenEmpty")); return null } + await actor.update({ "system.spleen.lvl": Math.max(0, cur - 1) }) + ui.notifications.info(game.i18n.format("CELESTOPOL.Moon.effectApplied", { label: i18n("effectLoseSpleen") })) + return i18n("effectLoseSpleen") + } + case "gain-destin": { + const cur = actor.system?.destin?.lvl ?? 0 + await actor.update({ "system.destin.lvl": Math.min(8, cur + 2) }) + ui.notifications.info(game.i18n.format("CELESTOPOL.Moon.effectApplied", { label: i18n("effectGainDestin") })) + return i18n("effectGainDestin") + } + case "lose-destin": { + const cur = actor.system?.destin?.lvl ?? 0 + await actor.update({ "system.destin.lvl": Math.max(0, cur - 2) }) + ui.notifications.info(game.i18n.format("CELESTOPOL.Moon.effectApplied", { label: i18n("effectLoseDestin") })) + return i18n("effectLoseDestin") + } + case "lose-anomaly": { + if (!anomaly) { ui.notifications.warn(i18n("noAnomaly")); return null } + const cur = anomaly.system?.usesRemaining ?? 0 + if (cur <= 0) { ui.notifications.warn(i18n("anomalyEmpty")); return null } + await anomaly.update({ "system.usesRemaining": Math.max(0, cur - 1) }) + ui.notifications.info(game.i18n.format("CELESTOPOL.Moon.effectApplied", { label: i18n("effectLoseAnomaly") })) + return i18n("effectLoseAnomaly") + } + case "gain-spleen": { + const cur = actor.system?.spleen?.lvl ?? 0 + if (cur >= 8) { ui.notifications.warn(i18n("spleenFull")); return null } + await actor.update({ "system.spleen.lvl": Math.min(8, cur + 1) }) + ui.notifications.info(game.i18n.format("CELESTOPOL.Moon.effectApplied", { label: i18n("effectGainSpleen") })) + return i18n("effectGainSpleen") + } + default: + return null + } +} + function _getDefaultFactionAspectState() { return { pointsMax: 8, diff --git a/lang/fr.json b/lang/fr.json index 701f6a3..f0bca58 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -350,7 +350,22 @@ "mauvaiseFortune": "🔴 Mauvaise Fortune", "chanceInterpret": "Chance", "narrativeInterpret": "Narratif", - "quantiteHint": "Valeur" + "quantiteHint": "Valeur", + "applyChoose": "Choisissez la contrepartie :", + "effectNarrativeOnly": "(Narratif — sans effet mécanique)", + "effectRegainAnomaly": "🌟 Regain d'1 Anomalie", + "effectLoseSpleen": "💚 Perte d'1 Spleen", + "effectGainDestin": "⭐ Gain de 2 Destin", + "effectLoseDestin": "⭐ Perte de 2 Destin", + "effectLoseAnomaly": "❌ Perte d'1 Anomalie", + "effectGainSpleen": "💔 Gain d'1 Spleen", + "effectApplied": "Contrepartie appliquée : {label}", + "noAnomaly": "Ce personnage n'a pas d'anomalie", + "anomalyFull": "L'anomalie est déjà au maximum d'utilisations", + "anomalyEmpty": "L'anomalie n'a plus d'utilisation disponible", + "spleenEmpty": "Le Spleen est déjà à 0", + "spleenFull": "Le Spleen est déjà au maximum", + "actorNotFound": "Personnage introuvable" }, "Difficulty": { "unknown": "Aucun seuil", diff --git a/module/documents/roll.mjs b/module/documents/roll.mjs index 89a1174..9432fb1 100644 --- a/module/documents/roll.mjs +++ b/module/documents/roll.mjs @@ -632,13 +632,17 @@ export class CelestopolRoll extends Roll { selectedTargetAppliedWounds, availableTargets, // Dé de lune - hasMoonDie: moonDieResult !== null, + hasMoonDie: moonDieResult !== null, moonDieResult, - moonFaceSymbol: moonFace?.symbol ?? "", - moonFaceLabel: moonFace ? game.i18n.localize(moonFace.label) : "", - moonResultClass: moonResultType?.cssClass ?? "", - moonResultLabel: moonResultType ? game.i18n.localize(moonResultType.label) : "", - moonResultDesc: moonResultType ? game.i18n.localize(moonResultType.desc) : "", + moonFaceSymbol: moonFace?.symbol ?? "", + moonFaceLabel: moonFace ? game.i18n.localize(moonFace.label) : "", + moonResultClass: moonResultType?.cssClass ?? "", + moonResultLabel: moonResultType ? game.i18n.localize(moonResultType.label) : "", + moonResultDesc: moonResultType ? game.i18n.localize(moonResultType.desc) : "", + moonResultTypeId: moonResultType?.id ?? null, + moonActorId: (actorType === "character") ? (this.options.actorId ?? null) : null, + moonActorUuid: (actorType === "character") ? (this.options.actorUuid ?? null) : null, + moonActorIsCharacter: actorType === "character", isPrivate, tooltip: isPrivate ? "" : await this.getTooltip(), } @@ -698,15 +702,20 @@ export class CelestopolRoll extends Roll { const resultType = face ? SYSTEM.MOON_RESULT_TYPES[face.result] ?? null : null const isGoodFortune = result <= 4 + const actorIsCharacter = actor?.type === "character" const templateData = { result, - moonFaceSymbol: face?.symbol ?? "", - moonFaceLabel: face ? game.i18n.localize(face.label) : "", - moonResultLabel: resultType ? game.i18n.localize(resultType.label) : "", - moonResultDesc: resultType ? game.i18n.localize(resultType.desc) : "", - moonResultClass: resultType?.cssClass ?? "", + moonFaceSymbol: face?.symbol ?? "", + moonFaceLabel: face ? game.i18n.localize(face.label) : "", + moonResultLabel: resultType ? game.i18n.localize(resultType.label) : "", + moonResultDesc: resultType ? game.i18n.localize(resultType.desc) : "", + moonResultClass: resultType?.cssClass ?? "", + moonResultTypeId: resultType?.id ?? null, isGoodFortune, - actorName: actor?.name ?? null, + actorName: actor?.name ?? null, + moonActorIsCharacter: actorIsCharacter, + moonActorId: actorIsCharacter ? (actor.id ?? null) : null, + moonActorUuid: actorIsCharacter ? (actor.uuid ?? null) : null, } const content = await foundry.applications.handlebars.renderTemplate( @@ -721,7 +730,6 @@ export class CelestopolRoll extends Roll { await ChatMessage.create({ content, speaker, - rolls: [roll], style: CONST.CHAT_MESSAGE_STYLES.OTHER, }) } diff --git a/packs-system/aides-de-jeu/000075.log b/packs-system/aides-de-jeu/000078.log similarity index 100% rename from packs-system/aides-de-jeu/000075.log rename to packs-system/aides-de-jeu/000078.log diff --git a/packs-system/aides-de-jeu/CURRENT b/packs-system/aides-de-jeu/CURRENT index f8d57cc..f24fe8e 100644 --- a/packs-system/aides-de-jeu/CURRENT +++ b/packs-system/aides-de-jeu/CURRENT @@ -1 +1 @@ -MANIFEST-000074 +MANIFEST-000076 diff --git a/packs-system/aides-de-jeu/LOG b/packs-system/aides-de-jeu/LOG index edf2787..46bb021 100644 --- a/packs-system/aides-de-jeu/LOG +++ b/packs-system/aides-de-jeu/LOG @@ -1,3 +1,8 @@ -2026/04/14-10:43:54.304360 7fddcbfff6c0 Recovering log #72 -2026/04/14-10:43:54.314599 7fddcbfff6c0 Delete type=3 #70 -2026/04/14-10:43:54.314647 7fddcbfff6c0 Delete type=0 #72 +2026/04/14-21:45:17.258246 7fc1d9fbd6c0 Recovering log #75 +2026/04/14-21:45:17.274015 7fc1d9fbd6c0 Delete type=0 #75 +2026/04/14-21:45:17.274077 7fc1d9fbd6c0 Delete type=3 #74 +2026/04/15-02:16:16.676658 7fc1d8fbb6c0 Level-0 table #79: started +2026/04/15-02:16:16.676686 7fc1d8fbb6c0 Level-0 table #79: 0 bytes OK +2026/04/15-02:16:16.720642 7fc1d8fbb6c0 Delete type=0 #77 +2026/04/15-02:16:16.819908 7fc1d8fbb6c0 Manual compaction at level-0 from '!journal!eNYstmPK0mMmVJYC' @ 72057594037927935 : 1 .. '!journal.pages!eNYstmPK0mMmVJYC.r9h1ggd3G9hiqYJX' @ 0 : 0; will stop at (end) +2026/04/15-02:16:16.881523 7fc1d8fbb6c0 Manual compaction at level-1 from '!journal!eNYstmPK0mMmVJYC' @ 72057594037927935 : 1 .. '!journal.pages!eNYstmPK0mMmVJYC.r9h1ggd3G9hiqYJX' @ 0 : 0; will stop at (end) diff --git a/packs-system/aides-de-jeu/LOG.old b/packs-system/aides-de-jeu/LOG.old index 2a606b7..edf2787 100644 --- a/packs-system/aides-de-jeu/LOG.old +++ b/packs-system/aides-de-jeu/LOG.old @@ -1,8 +1,3 @@ -2026/04/14-00:55:24.427256 7f68497ed6c0 Recovering log #68 -2026/04/14-00:55:24.442232 7f68497ed6c0 Delete type=3 #66 -2026/04/14-00:55:24.442302 7f68497ed6c0 Delete type=0 #68 -2026/04/14-00:56:01.490011 7f6833fff6c0 Level-0 table #73: started -2026/04/14-00:56:01.490050 7f6833fff6c0 Level-0 table #73: 0 bytes OK -2026/04/14-00:56:01.496026 7f6833fff6c0 Delete type=0 #71 -2026/04/14-00:56:01.502797 7f6833fff6c0 Manual compaction at level-0 from '!journal!eNYstmPK0mMmVJYC' @ 72057594037927935 : 1 .. '!journal.pages!eNYstmPK0mMmVJYC.r9h1ggd3G9hiqYJX' @ 0 : 0; will stop at (end) -2026/04/14-00:56:01.513341 7f6833fff6c0 Manual compaction at level-1 from '!journal!eNYstmPK0mMmVJYC' @ 72057594037927935 : 1 .. '!journal.pages!eNYstmPK0mMmVJYC.r9h1ggd3G9hiqYJX' @ 0 : 0; will stop at (end) +2026/04/14-10:43:54.304360 7fddcbfff6c0 Recovering log #72 +2026/04/14-10:43:54.314599 7fddcbfff6c0 Delete type=3 #70 +2026/04/14-10:43:54.314647 7fddcbfff6c0 Delete type=0 #72 diff --git a/packs-system/aides-de-jeu/MANIFEST-000074 b/packs-system/aides-de-jeu/MANIFEST-000076 similarity index 79% rename from packs-system/aides-de-jeu/MANIFEST-000074 rename to packs-system/aides-de-jeu/MANIFEST-000076 index fe288a9ac070c578bf91cf1c34ecf486327b13b5..cf89710e1ec7dc0a26475d0c8ac1b79595847ce5 100644 GIT binary patch delta 37 pcmbQlxR7x|v)l~Mb(tItj7+|q49tEkZ0hdoUV^xOKyCmF8vw7A2cG}{ delta 22 dcmZ3;IEisWGym!^vws{6j7;8~49q?(YyeJB1w{Y= diff --git a/packs-system/anomalies/000128.log b/packs-system/anomalies/000128.log deleted file mode 100644 index 774682982af739146d449bffb47334de39990645..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5597 zcmeHLO^X#r6pfHoTxVbQ=8e#qiC-YYFfck11WiQ6O$bu2y868`)m3eMy!a58S;TGr zKo)`c3}lrovTpJh@_Tab?brQg#xb~vVn7+0>F%n!_nxYI?z#2-wdeltPtPM(k}7B zG&4NMWu(P+>P1SQDQ$I3zV&uT#;8-=G0MBRv!1ja7c)%krxd$Siu&ortPiIT?&Eh4mqdYJ!&uPVrw_ z?8Owko9*9gyOlE1nkbX;PE=W3|Leyb_IB0-#MVLE1|CEMN^uZUEX7S1TN8LrDeeae z7tX_!7A^djGw%%G5HmS*T39JsAETKXYf`rol@>u;>68wb5yi#oD!B|mr$N)#+M6i4 z)l6E^{UjpX`qC`4%<%nyVK;hvZ>QZy#5b*|yh(!K)nUOaVu|1k{)F2x+awc@2I4@3 ze6D-6zHlQ939$e;@r*Iuy4i1WD!Nt4&jfDN_~;5%VLR@Egz=mvo>75F_oL zrVvCQrG_8us+t2%69`!B1UZ^5z#*Jv_X}plWi$1bP7(Rg&}!}62YN98r=RGi1v&&= zw)=b5>>p}m1=jK1pCW33vPcgNq=G&d+z{KBA3+01;fL#Q#i2K5&?MqiKjA?sw*>VUt!%gY z);OG9qXEiWW<~HRjOpIiJ10aR+6^Iyt?makm$|O7H{D8?;)}YLN;f#brMT_aELVy< z$OsMg|KIWAp>&aQCCDY%0X#7ji>n}q7f9R<7_VW+VM5idS_^EzL=s$&I-nhhPmk2L6F5|qvynVN(n>YgC^kf?!;+U@@j+}M)1z<`(@-90WW2WEo(lC^5iOo4 zvlx@cMJ|ej&D(@QMB6*S#iV;l?6d&&5RJhtsT6jSpEwXIU^5x2f1}4SbSe-k8*954 zSha;==3xo<;6^h=yi}d>Ajurc+!U}ko(|N8?QZaR;In{eA<`3%G&qiCkwyV=;}wxG zP8?NA*u>ztS>O(Tf-Rr>!%7pt*n>}i8y>;83A1Id21qq*ZYFN6Bj5tur zajAOigs>(dPc9K*93g0EPNkuldR@IHTey(%p*G48FK$?`mskl(Ic^IG>0T{Dd#shM zov^S(n2qlvhS+AN8nrDp6mIl{1R2aKtfwMOAq7V9Lzl)jfaA9ySy2Qk6BTJzQmoKv zqg+LyjNowFBdU9;Y(dPV>_OkXCMMwz!EuTry|alPwSWX6cReZqezX!qiA(9AE_=u9 zWbGD@A{$^#CxI+OzK;0$3gt)iWRdDMzp zQjduxs0~P=`yHfQqCyd|!bNz7{RckykAmB+(1}rtgare{;;2-io9~jAaNuZyP-TnF zANna;Z0?(eN}myI4Oynpq*&CK50w4Jl>Nu4l>NXjX*VI&gS2m5>n_;ZXzX3F_HF8( zAyTOI;#&o8{ft^bZtsUfjNI;<{gJQUa{|Y9onX?*K+!|?=i_%4NFnO3nYJ8mUVPh9 z4e_Xp4Z2P+Zmm_B zA;~eOavWFaI}jV0h}><1OChSMP@y<+M{U9Vx2Q}(nG+iyyT9QJ2XGfp=w3D$SM^s+ zs5|{Z<$8rOi3&v^MJQvsq%ciGoe-D0MYde$xLBPw{d77%P<$;AponoKamfSYTzzl> zM!UmGx^LYxD`HaRU|EOHXdo2!km?WEpKdnV`7*9=G}adpbcMy#4aUZI)4jkHSv^9( zf@>9)#-3&S3a_dD!2D9+z6`;j1`JXdt39BKi`q6e9srr_gO1m-%&f+G#-@goeI@3z>^k~(_v8-}F9FwC4e1m-%&aDQ#%2bSeI@3zY=0tbI{AadO90QS45k18 diff --git a/packs-system/anomalies/CURRENT b/packs-system/anomalies/CURRENT index 224d52a..ea072ca 100644 --- a/packs-system/anomalies/CURRENT +++ b/packs-system/anomalies/CURRENT @@ -1 +1 @@ -MANIFEST-000127 +MANIFEST-000129 diff --git a/packs-system/anomalies/LOG b/packs-system/anomalies/LOG index 4750b80..14521a7 100644 --- a/packs-system/anomalies/LOG +++ b/packs-system/anomalies/LOG @@ -1,3 +1,24 @@ -2026/04/14-10:43:54.279048 7fddd97be6c0 Recovering log #124 -2026/04/14-10:43:54.288686 7fddd97be6c0 Delete type=3 #122 -2026/04/14-10:43:54.288755 7fddd97be6c0 Delete type=0 #124 +2026/04/14-21:45:17.210322 7fc1dafbf6c0 Recovering log #128 +2026/04/14-21:45:17.212264 7fc1dafbf6c0 Level-0 table #130: started +2026/04/14-21:45:17.217282 7fc1dafbf6c0 Level-0 table #130: 3524 bytes OK +2026/04/14-21:45:17.232642 7fc1dafbf6c0 Delete type=0 #128 +2026/04/14-21:45:17.232776 7fc1dafbf6c0 Delete type=3 #127 +2026/04/15-02:16:16.615618 7fc1d8fbb6c0 Level-0 table #133: started +2026/04/15-02:16:16.640160 7fc1d8fbb6c0 Level-0 table #133: 3524 bytes OK +2026/04/15-02:16:16.676484 7fc1d8fbb6c0 Delete type=0 #131 +2026/04/15-02:16:16.763469 7fc1d8fbb6c0 Manual compaction at level-0 from '!items!anomCommMorts001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 109 : 1 +2026/04/15-02:16:16.763478 7fc1d8fbb6c0 Compacting 2@0 + 0@1 files +2026/04/15-02:16:16.781648 7fc1d8fbb6c0 Generated table #134@0: 1 keys, 1363 bytes +2026/04/15-02:16:16.781712 7fc1d8fbb6c0 Compacted 2@0 + 0@1 files => 1363 bytes +2026/04/15-02:16:16.819583 7fc1d8fbb6c0 compacted to: files[ 0 1 1 0 0 0 0 ] +2026/04/15-02:16:16.819716 7fc1d8fbb6c0 Delete type=2 #130 +2026/04/15-02:16:16.819841 7fc1d8fbb6c0 Delete type=2 #133 +2026/04/15-02:16:16.881505 7fc1d8fbb6c0 Manual compaction at level-0 from '!items!null' @ 109 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/04/15-02:16:16.881561 7fc1d8fbb6c0 Manual compaction at level-1 from '!items!anomCommMorts001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 116 : 1 +2026/04/15-02:16:16.881568 7fc1d8fbb6c0 Compacting 1@1 + 1@2 files +2026/04/15-02:16:16.899721 7fc1d8fbb6c0 Generated table #135@1: 9 keys, 6617 bytes +2026/04/15-02:16:16.899762 7fc1d8fbb6c0 Compacted 1@1 + 1@2 files => 6617 bytes +2026/04/15-02:16:16.937990 7fc1d8fbb6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/04/15-02:16:16.938116 7fc1d8fbb6c0 Delete type=2 #126 +2026/04/15-02:16:16.938278 7fc1d8fbb6c0 Delete type=2 #134 +2026/04/15-02:16:17.092334 7fc1d8fbb6c0 Manual compaction at level-1 from '!items!null' @ 116 : 1 .. '!items!null' @ 0 : 0; will stop at (end) diff --git a/packs-system/anomalies/LOG.old b/packs-system/anomalies/LOG.old index f0b562d..4750b80 100644 --- a/packs-system/anomalies/LOG.old +++ b/packs-system/anomalies/LOG.old @@ -1,15 +1,3 @@ -2026/04/14-00:55:24.391968 7f6848fec6c0 Recovering log #119 -2026/04/14-00:55:24.406978 7f6848fec6c0 Delete type=3 #117 -2026/04/14-00:55:24.407044 7f6848fec6c0 Delete type=0 #119 -2026/04/14-00:56:01.480723 7f6833fff6c0 Level-0 table #125: started -2026/04/14-00:56:01.483872 7f6833fff6c0 Level-0 table #125: 3524 bytes OK -2026/04/14-00:56:01.489828 7f6833fff6c0 Delete type=0 #123 -2026/04/14-00:56:01.502786 7f6833fff6c0 Manual compaction at level-0 from '!items!anomCommMorts001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at (end) -2026/04/14-00:56:01.502828 7f6833fff6c0 Manual compaction at level-1 from '!items!anomCommMorts001' @ 72057594037927935 : 1 .. '!items!null' @ 0 : 0; will stop at '!items!null' @ 105 : 1 -2026/04/14-00:56:01.502835 7f6833fff6c0 Compacting 1@1 + 1@2 files -2026/04/14-00:56:01.506551 7f6833fff6c0 Generated table #126@1: 9 keys, 6617 bytes -2026/04/14-00:56:01.506586 7f6833fff6c0 Compacted 1@1 + 1@2 files => 6617 bytes -2026/04/14-00:56:01.512723 7f6833fff6c0 compacted to: files[ 0 0 1 0 0 0 0 ] -2026/04/14-00:56:01.513072 7f6833fff6c0 Delete type=2 #121 -2026/04/14-00:56:01.513274 7f6833fff6c0 Delete type=2 #125 -2026/04/14-00:56:01.519560 7f6833fff6c0 Manual compaction at level-1 from '!items!null' @ 105 : 1 .. '!items!null' @ 0 : 0; will stop at (end) +2026/04/14-10:43:54.279048 7fddd97be6c0 Recovering log #124 +2026/04/14-10:43:54.288686 7fddd97be6c0 Delete type=3 #122 +2026/04/14-10:43:54.288755 7fddd97be6c0 Delete type=0 #124 diff --git a/packs-system/anomalies/MANIFEST-000127 b/packs-system/anomalies/MANIFEST-000127 deleted file mode 100644 index 908b5124ed587a86fe0cdda944447faea9e2a191..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmb3CDJz=Iz{n_-lUkOVlai$8R9TW*o>`pgoS$2eSd>_jU&P8Nte9Dnnp>=xSDKT< zn8^SJ>`Zkxjpd;diFx_CKn=OR`9&qg1_p+VoDfAQ8gn3GcXqr#%f-OR)Bse(+{nn1 F0{{z5Bv=3d diff --git a/packs-system/anomalies/MANIFEST-000129 b/packs-system/anomalies/MANIFEST-000129 new file mode 100644 index 0000000000000000000000000000000000000000..98ac3843106621bac93084760c3142f7f04936c1 GIT binary patch literal 437 zcmb3CDJz=Iz{n_-lUkOVlai$8R9TW*o>`pgoS$2eSd>_jU&P8Nte9Dnnp>=xSDKT< zn8^SJ>`Zkxjpd;diFx_CKn=OR`9&qg1_p+VoDfAQ8gn3G3DpjD77UC`%|J!WEsQJ$ z>i5_&d`dky#$N)LWo#;M){2}nD%y{c2))y zo1wO_0o}v~G?<;Sjqx%UiVAFoL&YjT`fN^w8QuXh95v{m%GiL0vN6@MGqp347=%y* E0C%NmvH$=8 literal 0 HcmV?d00001 diff --git a/packs-system/scenes/000075.log b/packs-system/pretires/000039.log similarity index 100% rename from packs-system/scenes/000075.log rename to packs-system/pretires/000039.log diff --git a/packs-system/pretires/CURRENT b/packs-system/pretires/CURRENT index 29a53d8..29c0a00 100644 --- a/packs-system/pretires/CURRENT +++ b/packs-system/pretires/CURRENT @@ -1 +1 @@ -MANIFEST-000035 +MANIFEST-000037 diff --git a/packs-system/pretires/LOG b/packs-system/pretires/LOG index 8e75b46..07e0480 100644 --- a/packs-system/pretires/LOG +++ b/packs-system/pretires/LOG @@ -1,3 +1,8 @@ -2026/04/14-10:43:54.291004 7fddd8fbd6c0 Recovering log #33 -2026/04/14-10:43:54.301929 7fddd8fbd6c0 Delete type=3 #31 -2026/04/14-10:43:54.301981 7fddd8fbd6c0 Delete type=0 #33 +2026/04/14-21:45:17.237698 7fc1da7be6c0 Recovering log #36 +2026/04/14-21:45:17.253057 7fc1da7be6c0 Delete type=0 #36 +2026/04/14-21:45:17.253185 7fc1da7be6c0 Delete type=3 #35 +2026/04/15-02:16:16.720764 7fc1d8fbb6c0 Level-0 table #40: started +2026/04/15-02:16:16.720792 7fc1d8fbb6c0 Level-0 table #40: 0 bytes OK +2026/04/15-02:16:16.763312 7fc1d8fbb6c0 Delete type=0 #38 +2026/04/15-02:16:16.819920 7fc1d8fbb6c0 Manual compaction at level-0 from '!actors!6RZ6IzJUHm4dB5Ut' @ 72057594037927935 : 1 .. '!folders!MbFQgPdF6Gtbj5AU' @ 0 : 0; will stop at (end) +2026/04/15-02:16:16.881536 7fc1d8fbb6c0 Manual compaction at level-1 from '!actors!6RZ6IzJUHm4dB5Ut' @ 72057594037927935 : 1 .. '!folders!MbFQgPdF6Gtbj5AU' @ 0 : 0; will stop at (end) diff --git a/packs-system/pretires/LOG.old b/packs-system/pretires/LOG.old index 30b472b..8e75b46 100644 --- a/packs-system/pretires/LOG.old +++ b/packs-system/pretires/LOG.old @@ -1,8 +1,3 @@ -2026/04/14-00:55:24.409141 7f68497ed6c0 Recovering log #29 -2026/04/14-00:55:24.424702 7f68497ed6c0 Delete type=3 #27 -2026/04/14-00:55:24.424755 7f68497ed6c0 Delete type=0 #29 -2026/04/14-00:56:01.473754 7f6833fff6c0 Level-0 table #34: started -2026/04/14-00:56:01.473797 7f6833fff6c0 Level-0 table #34: 0 bytes OK -2026/04/14-00:56:01.480607 7f6833fff6c0 Delete type=0 #32 -2026/04/14-00:56:01.502772 7f6833fff6c0 Manual compaction at level-0 from '!actors!6RZ6IzJUHm4dB5Ut' @ 72057594037927935 : 1 .. '!folders!MbFQgPdF6Gtbj5AU' @ 0 : 0; will stop at (end) -2026/04/14-00:56:01.502817 7f6833fff6c0 Manual compaction at level-1 from '!actors!6RZ6IzJUHm4dB5Ut' @ 72057594037927935 : 1 .. '!folders!MbFQgPdF6Gtbj5AU' @ 0 : 0; will stop at (end) +2026/04/14-10:43:54.291004 7fddd8fbd6c0 Recovering log #33 +2026/04/14-10:43:54.301929 7fddd8fbd6c0 Delete type=3 #31 +2026/04/14-10:43:54.301981 7fddd8fbd6c0 Delete type=0 #33 diff --git a/packs-system/pretires/MANIFEST-000035 b/packs-system/pretires/MANIFEST-000037 similarity index 65% rename from packs-system/pretires/MANIFEST-000035 rename to packs-system/pretires/MANIFEST-000037 index a5758dd5a46fd0aa42ea5676a6f6e20673a62334..ff750bdf0ed5b59ac914f24ceaafc08cc47d5010 100644 GIT binary patch delta 37 qcmdnWc!Y7nGC7t#udj13FfyreGBB&NcpTpQU_OYe4&-XGcmM$2Zwa&j delta 22 ecmX@YxRr6jGX86~t{vfEU}RF^WMEch@c;m1LI$@0 diff --git a/packs-system/scenes/000057.ldb b/packs-system/scenes/000057.ldb deleted file mode 100644 index cc9ad21d9a66e5e2da323d36a7d4fba2f7a7874a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3076 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 diff --git a/packs-system/scenes/000078.log b/packs-system/scenes/000078.log new file mode 100644 index 0000000..e69de29 diff --git a/packs-system/scenes/000080.ldb b/packs-system/scenes/000080.ldb new file mode 100644 index 0000000000000000000000000000000000000000..66953d6db39359828cd51bfb5d168943fd5fd549 GIT binary patch literal 1810 zcmaJ>ZEPGz8J>-I?OWgO_3k*QzF=E-8z;5leBRyjeF~h|#z`IWRVQ^XElo7HJ9jts z-0o#}_RiPitQe_A6%`8nYYUY^Wj+Lk3jQ`YrKB{_I4Vf3YET7*g0LWbh$2CS%a}_1 zL1HwsntkV;cb<8kcizv$mO<V1eA0OHs`oFE=P1Gf?RC$T)OeMBQ-@k4O9XO9r=`OEyud&cZ{>sM=0ZcvzIc z1wo3~>`$b9YkCicH@yeKR-yC)gNKjEJXbI8JJpDe$rt)TlVW8OJH2z>&;JC|0 zQm?}ERR_6Mn=njjC!v&W2ZeqnSso$DFpy>mYRG5A4+m-0tCiON21eJw_~aS~#)KoG z-5X78(yCHO=_(6dMYvLB7<4_OC6qceO>9+I)TEwHDA>XjLlSp$%giICXA(+_;mhVi z|2n(plb+D>dOA0e%cSz@ysmYU-{FR5Y+^I&l!JMJi?I7w9DL}ekGAUEkyt`;@ncL1 zjr+Xh(iWLIeBQMQHcw(EAM>SEY%H;>qkIc{k-m}Cb zp|ILv`;pbaj&0S@R8O$2n9vb!1W%#{BD1(JEZN4A5_0=1#4bT{a`b9{n{9w4!YxFo z0@sRv2;me_`f-JwPGB$}T&R3z0|-GOji5mp-Fq#J?s!C6%Cyxcm63H+mhhh0 zK%;ZPWL8V%201>TSbP}pW9sblg}1=qMefpw1Di}t#?vE@p1Mbt0EwTLCCRcWlKsG4 zwPh*jpbEA_YJ{b8oxr{kAH^h;lA4eZS&uMNi{SVp_y?gNIL9q$8^J}}b1VqOVfmie zEW1bREUci=eZeMzw0fhT1|_YJg}7MGaF+}}UeW+c_>$TG24JI79h9~VCrGrc;&2Bau+F9J?7BTXdLBz!GqI1D5*&*K;M zvsyNr(ejy;mez7ilbUVfGM*d+2|cS#Onq~=qOyEH0W)Yme^`yj-^wR2+ zK$%p9)dzzH#SP?r$>-Wm{GnpU*S{qfQ^gaNtOI9@^vtm{bdk&6{Pml^8JRK+4`C9U zLFD$^!5Dit`oizJ*Pr>ywlMi=FuyJMnCbd9uc`5zvn@zkI8AydkPmJQJ+Z0(Uf>Syz99T> ze~cM7gu5HU?#f<&dqoJUYBr@^ToEFwrl-~X)`|dVX0GS%JO1!H{^-=uAA0w{<=_8P zzbLT}n|@HdKzVn^e|N_p-tk9&2xf+MdU;Lf_VG&M`+w}=E%=dX`PR$?@e2OZxomc~YEjBoAO;__f}^XZ<`k_LnZPG8qFm-}}|p;y_RI zAAz6v*5A-`(vRPjqvsw7u01XLlG*f&-G^7@fwoezDYa{1-XCGboRz4+w|kSD@_{b~ zZZ)4Zz=4h=yfI$@vArUJmZ|3iF7|@0-s4 zA}7geFd}9tIqk83Y)uo}t{wZ&lKxLAytivF7LcBO{W&0ZDct)XH1MwU-?dkdo_yg8 Xvih=o@1E)Zw};-l^0{H}_|N|hZSf_C literal 0 HcmV?d00001 diff --git a/packs-system/scenes/CURRENT b/packs-system/scenes/CURRENT index f8d57cc..f24fe8e 100644 --- a/packs-system/scenes/CURRENT +++ b/packs-system/scenes/CURRENT @@ -1 +1 @@ -MANIFEST-000074 +MANIFEST-000076 diff --git a/packs-system/scenes/LOG b/packs-system/scenes/LOG index 5ba95d6..e3969ec 100644 --- a/packs-system/scenes/LOG +++ b/packs-system/scenes/LOG @@ -1,3 +1,15 @@ -2026/04/14-10:43:54.317254 7fddd9fbf6c0 Recovering log #72 -2026/04/14-10:43:54.326872 7fddd9fbf6c0 Delete type=3 #70 -2026/04/14-10:43:54.326932 7fddd9fbf6c0 Delete type=0 #72 +2026/04/14-21:45:17.278141 7fc1d97bc6c0 Recovering log #75 +2026/04/14-21:45:17.294441 7fc1d97bc6c0 Delete type=0 #75 +2026/04/14-21:45:17.294490 7fc1d97bc6c0 Delete type=3 #74 +2026/04/15-02:16:16.819929 7fc1d8fbb6c0 Level-0 table #79: started +2026/04/15-02:16:16.847375 7fc1d8fbb6c0 Level-0 table #79: 3342 bytes OK +2026/04/15-02:16:16.881351 7fc1d8fbb6c0 Delete type=0 #77 +2026/04/15-02:16:16.881546 7fc1d8fbb6c0 Manual compaction at level-0 from '!scenes!0iGCRqkdJKjmmbl4' @ 72057594037927935 : 1 .. '!scenes.levels!Jr7lGxYk2RETlXRv.defaultLevel0000' @ 0 : 0; will stop at (end) +2026/04/15-02:16:16.938347 7fc1d8fbb6c0 Manual compaction at level-1 from '!scenes!0iGCRqkdJKjmmbl4' @ 72057594037927935 : 1 .. '!scenes.levels!Jr7lGxYk2RETlXRv.defaultLevel0000' @ 0 : 0; will stop at '!scenes.tokens.delta.items!Jr7lGxYk2RETlXRv.6urwC5SVcou6UOAG.CTg4yBE12iMee1RU.BYT1CrA37R3Og0nu' @ 49 : 0 +2026/04/15-02:16:16.938354 7fc1d8fbb6c0 Compacting 1@1 + 1@2 files +2026/04/15-02:16:16.955205 7fc1d8fbb6c0 Generated table #80@1: 3 keys, 1810 bytes +2026/04/15-02:16:16.955236 7fc1d8fbb6c0 Compacted 1@1 + 1@2 files => 1810 bytes +2026/04/15-02:16:16.986128 7fc1d8fbb6c0 compacted to: files[ 0 0 1 0 0 0 0 ] +2026/04/15-02:16:16.986229 7fc1d8fbb6c0 Delete type=2 #57 +2026/04/15-02:16:16.986351 7fc1d8fbb6c0 Delete type=2 #79 +2026/04/15-02:16:17.092360 7fc1d8fbb6c0 Manual compaction at level-1 from '!scenes.tokens.delta.items!Jr7lGxYk2RETlXRv.6urwC5SVcou6UOAG.CTg4yBE12iMee1RU.BYT1CrA37R3Og0nu' @ 49 : 0 .. '!scenes.levels!Jr7lGxYk2RETlXRv.defaultLevel0000' @ 0 : 0; will stop at (end) diff --git a/packs-system/scenes/LOG.old b/packs-system/scenes/LOG.old index 4132912..5ba95d6 100644 --- a/packs-system/scenes/LOG.old +++ b/packs-system/scenes/LOG.old @@ -1,8 +1,3 @@ -2026/04/14-00:55:24.444791 7f684a7ef6c0 Recovering log #68 -2026/04/14-00:55:24.460229 7f684a7ef6c0 Delete type=3 #66 -2026/04/14-00:55:24.460280 7f684a7ef6c0 Delete type=0 #68 -2026/04/14-00:56:01.496164 7f6833fff6c0 Level-0 table #73: started -2026/04/14-00:56:01.496194 7f6833fff6c0 Level-0 table #73: 0 bytes OK -2026/04/14-00:56:01.502678 7f6833fff6c0 Delete type=0 #71 -2026/04/14-00:56:01.502807 7f6833fff6c0 Manual compaction at level-0 from '!scenes!Jr7lGxYk2RETlXRv' @ 72057594037927935 : 1 .. '!scenes.tokens.delta.items!Jr7lGxYk2RETlXRv.6urwC5SVcou6UOAG.CTg4yBE12iMee1RU.BYT1CrA37R3Og0nu' @ 0 : 0; will stop at (end) -2026/04/14-00:56:01.513358 7f6833fff6c0 Manual compaction at level-1 from '!scenes!Jr7lGxYk2RETlXRv' @ 72057594037927935 : 1 .. '!scenes.tokens.delta.items!Jr7lGxYk2RETlXRv.6urwC5SVcou6UOAG.CTg4yBE12iMee1RU.BYT1CrA37R3Og0nu' @ 0 : 0; will stop at (end) +2026/04/14-10:43:54.317254 7fddd9fbf6c0 Recovering log #72 +2026/04/14-10:43:54.326872 7fddd9fbf6c0 Delete type=3 #70 +2026/04/14-10:43:54.326932 7fddd9fbf6c0 Delete type=0 #72 diff --git a/packs-system/scenes/MANIFEST-000074 b/packs-system/scenes/MANIFEST-000074 deleted file mode 100644 index be9becb38da2caa031168a9e0102be07a9ff8daa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmXrju=*s#$jB&_lUkOVlai$8R9TW*o>`pgoS$2eSd>_jU&P9ordXVunwMIvSCXHd znpdoslA2SJsFzuinp>>sRb-yyUJ;pX6yzF`6A@IVXI5HN?ra(ymYiQ|7V7WluIC(* zZc^#wYG{<{o0@7E6sqSG8Di*MTj040)F<^TWy diff --git a/packs-system/scenes/MANIFEST-000076 b/packs-system/scenes/MANIFEST-000076 new file mode 100644 index 0000000000000000000000000000000000000000..978fbf7061ac0b671d6767282f09b3eaa7c058f9 GIT binary patch literal 673 zcmXrju=*s#$jB&_lUkOVlai$8R9TW*o>`pgoS$2eSd>_jU&P9ordXVunwMIvSCXHd znpdoslA2SJsFzuinp>>sRb-yyUJ;pX6yzF`6A@IVXI5HN?ra(ymYiQ|7V7WluIC(* zZc^#wYG{<{o0@7E6sqSG8Di*MfVFOqT3S0h9O$289JI34zlYmSmHXnwD6a QQ{n?kh6X^us0;BN01hd|5&!@I literal 0 HcmV?d00001 diff --git a/styles/global.less b/styles/global.less index d754a89..7c7c5dc 100644 --- a/styles/global.less +++ b/styles/global.less @@ -16,6 +16,7 @@ --cel-border: #7a5c20; // bordure dorée --cel-accent: #6b1e28; // bordeaux profond (échecs, accents) + --cel-text: #2f2413; // texte de corps sur fond clair (parchemin) --cel-shadow: rgba(10,15,10,0.5); diff --git a/styles/roll.less b/styles/roll.less index bcb0825..a133f60 100644 --- a/styles/roll.less +++ b/styles/roll.less @@ -30,7 +30,7 @@ .roll-actor { font-family: var(--cel-font-title, "CopaseticNF", serif); color: var(--cel-orange-light, #ddb84a); - font-size: 0.78em; + font-size: 0.82em; letter-spacing: 0.07em; text-transform: uppercase; opacity: 0.9; @@ -38,7 +38,7 @@ .roll-skill-line { font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 1.25em; + font-size: 1.31em; color: var(--cel-cream, #f0e8d4); margin-top: 2px; @@ -58,24 +58,24 @@ justify-content: center; flex-wrap: wrap; gap: 4px; - font-size: 0.82em; + font-size: 0.86em; color: var(--cel-cream, #f0e8d4); .dval, .nb-dice { font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 1.7em; + font-size: 1.78em; color: var(--cel-orange, #e07b00); font-weight: bold; line-height: 1; } - .dlabel { font-size: 0.78em; text-transform: uppercase; letter-spacing: 0.04em; opacity: 0.75; } + .dlabel { font-size: 0.82em; text-transform: uppercase; letter-spacing: 0.04em; opacity: 0.75; } .dminus { color: #f0a0a0; font-weight: bold; } .deq { opacity: 0.55; } .ddice { color: var(--cel-orange, #e07b00); } } .wound-info { - font-size: 0.73em; + font-size: 0.77em; color: #f0a0a0; margin-top: 3px; } @@ -117,17 +117,17 @@ display: flex; align-items: center; justify-content: center; - font-size: 0.65em; + font-size: 0.68em; color: white; } } } - .moon-icon { font-size: 1.2em; flex-shrink: 0; } + .moon-icon { font-size: 1.26em; flex-shrink: 0; } .moon-text { font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 0.88em; + font-size: 0.92em; color: var(--cel-green, #0c4c0c); } } @@ -152,7 +152,7 @@ label { flex: 0 0 110px; - font-size: 0.78em; + font-size: 0.82em; text-transform: uppercase; letter-spacing: 0.04em; color: var(--cel-border, #7a5c20); @@ -165,8 +165,8 @@ padding: 3px 7px; background: rgba(255,255,255,0.85); font-family: inherit; - font-size: 0.85em; - color: #333; + font-size: 0.89em; + color: var(--cel-text, #2f2413); &:focus { outline: 1px solid var(--cel-orange, #e07b00); } } @@ -233,7 +233,7 @@ display: flex; align-items: center; justify-content: center; - font-size: 0.65em; + font-size: 0.68em; color: white; } } @@ -242,7 +242,7 @@ } .destin-icon { - font-size: 1.1em; + font-size: 1.16em; color: var(--cel-orange, #e07b00); flex-shrink: 0; } @@ -252,20 +252,20 @@ .destin-main { font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 0.9em; + font-size: 0.95em; color: var(--cel-green, #0c4c0c); display: block; } .destin-bonus { - font-size: 0.72em; + font-size: 0.76em; color: var(--cel-border, #7a5c20); font-style: italic; } } .destin-count { - font-size: 0.75em; + font-size: 0.79em; font-weight: bold; color: var(--cel-green, #0c4c0c); background: rgba(196,154,26,0.2); @@ -275,7 +275,7 @@ white-space: nowrap; &.no-destin { - color: #888; + color: rgba(0,0,0,0.45); background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.1); } @@ -283,7 +283,7 @@ } } - .form-visibility label { color: #888; } + .form-visibility label { color: rgba(0,0,0,0.45); } .form-faction-aspect select { font-weight: bold; @@ -326,7 +326,7 @@ display: flex; align-items: center; justify-content: center; - font-size: 0.75em; + font-size: 0.79em; color: white; } } @@ -338,19 +338,19 @@ flex: 1; .puiser-main { font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 0.9em; + font-size: 0.95em; color: var(--cel-accent, #6b1e28); display: block; } .puiser-sub { - font-size: 0.7em; - color: #888; + font-size: 0.73em; + color: rgba(0,0,0,0.45); font-style: italic; } } .puiser-cost { - font-size: 0.8em; + font-size: 0.84em; font-weight: bold; color: var(--cel-accent, #6b1e28); background: rgba(107,30,40,0.1); @@ -398,14 +398,14 @@ display: flex; align-items: center; justify-content: center; - font-size: 0.6em; + font-size: 0.63em; color: white; } } } .fortune-icon { - font-size: 1.1em; + font-size: 1.16em; color: var(--cel-green, #0c4c0c); flex-shrink: 0; } @@ -414,19 +414,19 @@ flex: 1; .fortune-main { font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 0.9em; + font-size: 0.95em; color: var(--cel-green, #0c4c0c); display: block; } .fortune-bonus { - font-size: 0.72em; + font-size: 0.76em; color: var(--cel-border, #7a5c20); font-style: italic; } } .fortune-badge { - font-size: 0.8em; + font-size: 0.84em; font-weight: bold; color: var(--cel-green, #0c4c0c); background: rgba(12,76,12,0.12); @@ -450,7 +450,7 @@ gap: 10px; .preview-label { - font-size: 0.7em; + font-size: 0.73em; text-transform: uppercase; letter-spacing: 0.07em; color: var(--cel-border, #7a5c20); @@ -459,7 +459,7 @@ .preview-formula { font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 1.6em; + font-size: 1.68em; color: var(--cel-orange, #e07b00); font-weight: bold; letter-spacing: 0.04em; @@ -469,6 +469,90 @@ // ─── Chat message ───────────────────────────────────────────────────────────── +// ── Contreparties dé de lune (partagé : chat-roll + moon-standalone-card) ── +.celestopol.chat-roll, +.celestopol-roll.moon-standalone-card { + .moon-effect-actions { + padding: 6px 10px 8px; + border-top: 2px solid rgba(122,92,32,0.18); + background: rgba(12,76,12,0.04); + border-radius: 0 0 3px 3px; + + .moon-effect-label { + display: block; + font-family: var(--cel-font-title); + font-size: 0.76em; + font-weight: bold; + color: var(--cel-border, #7a5c20); + text-transform: uppercase; + letter-spacing: 0.07em; + margin-bottom: 6px; + } + + .moon-effect-buttons { + display: flex; + flex-wrap: wrap; + gap: 5px; + align-items: center; + } + + .moon-effect-btn { + font-family: var(--cel-font-title); + font-size: 0.82em; + font-weight: bold; + padding: 4px 11px; + border-radius: 4px; + cursor: pointer; + transition: filter 0.12s, opacity 0.12s; + line-height: 1.4; + letter-spacing: 0.02em; + // Positif par défaut : vert jade / or + background: var(--cel-green, #1b3828); + color: var(--cel-orange-light, #ddb84a); + border: 1px solid rgba(196,154,26,0.35); + + &:hover:not(:disabled) { filter: brightness(1.18); } + &:disabled { opacity: 0.55; cursor: not-allowed; } + + &.moon-effect-negative { + background: var(--cel-accent, #6b1e28); + color: var(--cel-cream, #f0e8d4); + border-color: rgba(139,30,46,0.4); + &:hover:not(:disabled) { filter: brightness(1.12); } + } + } + + .moon-effect-narrative { + font-size: 0.76em; + color: var(--cel-border, #7a5c20); + font-style: italic; + align-self: center; + padding-left: 2px; + } + + .moon-effect-applied-status { + display: inline-flex; + align-items: center; + gap: 4px; + margin-top: 6px; + font-size: 0.8em; + font-family: var(--cel-font-title); + font-style: italic; + padding: 3px 9px; + border-radius: 3px; + color: var(--cel-green, #1b3828); + background: rgba(12,76,12,0.09); + border: 1px solid rgba(12,76,12,0.22); + + &.is-negative { + color: var(--cel-accent, #6b1e28); + background: rgba(107,30,40,0.09); + border-color: rgba(107,30,40,0.25); + } + } + } +} + .celestopol.chat-roll { border: 1px solid var(--cel-border, #7a5c20); border-radius: 3px; @@ -506,16 +590,16 @@ color: var(--cel-orange, #e07b00); font-weight: bold; letter-spacing: 0.05em; - font-size: 0.92em; + font-size: 0.97em; } .skill-info { color: var(--cel-cream, #f0e8d4); - font-size: 0.77em; + font-size: 0.81em; font-style: italic; .stat-lbl { color: var(--cel-orange-light, #ddb84a); } .sep { margin: 0 2px; opacity: 0.5; } } - .wound-info { font-size: 0.7em; color: #f0a0a0; } + .wound-info { font-size: 0.73em; color: #f0a0a0; } } .moon-badge { display: none; } @@ -540,10 +624,10 @@ border-radius: 4px; background: white; font-weight: bold; - font-size: 1.05em; + font-size: 1.1em; font-family: var(--cel-font-title, "CopaseticNF", serif); box-shadow: 1px 1px 2px rgba(0,0,0,0.12); - color: #222; + color: var(--cel-text, #2f2413); &.max { background: var(--cel-green, #0c4c0c); @@ -569,15 +653,15 @@ padding: 5px 10px 4px; background: var(--cel-cream, #f0e8d4); border-top: 1px solid rgba(122,92,32,0.2); - font-size: 0.83em; + font-size: 0.87em; color: #555; - .fl-label { color: #999; font-size: 0.88em; text-transform: uppercase; letter-spacing: 0.04em; margin-right: 2px; } + .fl-label { color: rgba(0,0,0,0.4); font-size: 0.92em; text-transform: uppercase; letter-spacing: 0.04em; margin-right: 2px; } .fl-ndice { color: var(--cel-green, #0c4c0c); font-weight: bold; } - .fl-sum { font-weight: bold; color: #333; } + .fl-sum { font-weight: bold; color: var(--cel-text, #2f2413); } .fl-total { font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 1.5em; + font-size: 1.58em; color: var(--cel-orange, #e07b00); font-weight: bold; line-height: 1; @@ -588,8 +672,8 @@ .fl-asp { color: var(--cel-orange, #e07b00); font-weight: bold; } .fl-faction { color: var(--cel-green, #0c4c0c); font-weight: bold; } .fl-sep { font-weight: bold; color: var(--cel-border, #7a5c20); margin: 0 2px; } - .fl-eq { color: #aaa; } - .fl-op { color: #aaa; } + .fl-eq { color: rgba(0,0,0,0.35); } + .fl-op { color: rgba(0,0,0,0.35); } } // ── Seuil et marge ── @@ -600,22 +684,22 @@ padding: 5px 12px 6px; background: var(--cel-cream, #f0e8d4); border-top: 1px solid rgba(122,92,32,0.2); - font-size: 0.82em; + font-size: 0.86em; .vs-wrap { display: flex; align-items: baseline; gap: 5px; } - .vs-label { color: #aaa; text-transform: uppercase; font-size: 0.8em; } + .vs-label { color: rgba(0,0,0,0.35); text-transform: uppercase; font-size: 0.84em; } .diff-label{ font-style: italic; color: var(--cel-green, #0c4c0c); } - .diff-val { color: #888; } + .diff-val { color: rgba(0,0,0,0.45); } .margin-badge { padding: 2px 10px; border-radius: 12px; font-weight: bold; - font-size: 1.05em; + font-size: 1.1em; font-family: var(--cel-font-title, "CopaseticNF", serif); letter-spacing: 0.05em; @@ -635,7 +719,7 @@ // ── Destin utilisé ── .used-info { text-align: center; - font-size: 0.77em; + font-size: 0.81em; color: var(--cel-orange, #e07b00); padding: 3px 8px; background: rgba(196,154,26,0.1); @@ -673,7 +757,7 @@ } .damage-header { - font-size: 0.72em; + font-size: 0.76em; text-transform: uppercase; letter-spacing: 0.08em; color: var(--cel-border, #7a5c20); @@ -690,13 +774,13 @@ .damage-value { font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 1.9em; + font-size: 1.99em; line-height: 1; color: var(--cel-orange, #e07b00); } .damage-unit { - font-size: 0.82em; + font-size: 0.86em; color: var(--cel-green, #0c4c0c); font-weight: bold; } @@ -704,7 +788,7 @@ .damage-breakdown, .damage-note { margin-top: 6px; - font-size: 0.76em; + font-size: 0.8em; line-height: 1.4; color: #5c4630; } @@ -730,7 +814,7 @@ background: var(--cel-green, #0c4c0c); color: var(--cel-orange-light, #ddb84a); padding: 4px 10px; - font-size: 0.78em; + font-size: 0.82em; font-weight: bold; cursor: pointer; @@ -745,7 +829,7 @@ margin-top: 8px; padding: 6px 8px; border-radius: 4px; - font-size: 0.76em; + font-size: 0.8em; line-height: 1.4; &.is-applied { @@ -774,7 +858,7 @@ background: rgba(12,76,12,0.1); color: var(--cel-green, #0c4c0c); font-weight: bold; - font-size: 0.9em; + font-size: 0.95em; } // ── Résultat dé de lune ── @@ -787,7 +871,7 @@ font-family: var(--cel-font-body, serif); .moon-die-face { - font-size: 1.8em; + font-size: 1.89em; line-height: 1; flex-shrink: 0; } @@ -800,7 +884,7 @@ } .moon-die-phase { - font-size: 0.72em; + font-size: 0.76em; opacity: 0.75; text-transform: uppercase; letter-spacing: 0.05em; @@ -815,7 +899,7 @@ } .moon-die-desc { - font-size: 0.72em; + font-size: 0.76em; font-style: italic; opacity: 0.85; line-height: 1.3; @@ -852,13 +936,13 @@ border-top: 2px solid rgba(0,0,0,0.1); .result-icon { - font-size: 0.85em; + font-size: 0.89em; opacity: 0.85; letter-spacing: 0.15em; } - .result-label { font-size: 1.2em; line-height: 1.2; } + .result-label { font-size: 1.26em; line-height: 1.2; } .result-desc { - font-size: 0.65em; + font-size: 0.68em; letter-spacing: 0.08em; margin-top: 2px; opacity: 0.8; @@ -919,22 +1003,22 @@ .welcome-mark { color: var(--cel-orange, #e07b00); - font-size: 1.05em; + font-size: 1.1em; line-height: 1; } .welcome-title { font-family: var(--cel-font-title, "CopaseticNF", serif); color: var(--cel-orange, #e07b00); - font-size: 0.98em; + font-size: 1.03em; letter-spacing: 0.05em; text-transform: uppercase; } .welcome-body { padding: 9px 11px 10px; - color: #3f3623; - font-size: 0.84em; + color: var(--cel-text, #2f2413); + font-size: 0.88em; line-height: 1.45; p { @@ -954,7 +1038,7 @@ display: block; margin-bottom: 2px; color: var(--cel-border, #7a5c20); - font-size: 0.72em; + font-size: 0.76em; font-weight: bold; letter-spacing: 0.05em; text-transform: uppercase; @@ -997,27 +1081,27 @@ .portrait-message-mark { color: var(--cel-orange, #e07b00); - font-size: 1.05em; + font-size: 1.1em; line-height: 1; } .portrait-message-title { font-family: var(--cel-font-title, "CopaseticNF", serif); color: var(--cel-orange, #e07b00); - font-size: 0.98em; + font-size: 1.03em; letter-spacing: 0.05em; text-transform: uppercase; } .portrait-message-body { padding: 9px 11px 10px; - color: #3f3623; + color: var(--cel-text, #2f2413); } .portrait-message-name { margin-bottom: 8px; color: var(--cel-green, #0c4c0c); - font-size: 0.84em; + font-size: 0.88em; font-weight: bold; letter-spacing: 0.04em; text-transform: uppercase; @@ -1100,7 +1184,7 @@ &:hover { border-color: var(--cel-orange, #e07b00); background: linear-gradient(180deg, rgba(224,123,0,0.18), rgba(224,123,0,0.06)); - color: #7a3e00; + color: var(--cel-border, #7a5c20); } } } @@ -1124,7 +1208,7 @@ font-family: var(--cel-font-title, "CopaseticNF", serif); text-transform: uppercase; letter-spacing: 0.05em; - font-size: 0.88em; + font-size: 0.92em; } .faction-aspect-points { @@ -1132,7 +1216,7 @@ flex-wrap: wrap; gap: 5px; margin-bottom: 4px; - font-size: 0.8em; + font-size: 0.84em; } .faction-aspect-point-card { @@ -1146,7 +1230,7 @@ border: 1px solid rgba(122,92,32,0.18); strong { - font-size: 0.72em; + font-size: 0.76em; text-transform: uppercase; letter-spacing: 0.04em; color: var(--cel-border, #7a5c20); @@ -1155,14 +1239,14 @@ em { font-style: normal; font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 1.05em; + font-size: 1.1em; color: var(--cel-orange, #e07b00); line-height: 1; } } .faction-aspect-source-line { - font-size: 0.78em; + font-size: 0.82em; color: var(--cel-border, #7a5c20); } @@ -1171,8 +1255,8 @@ border-left: 3px solid #b84a2e; border-radius: 4px; background: rgba(184, 74, 46, 0.08); - color: #8b3e2b; - font-size: 0.8em; + color: var(--cel-accent, #6b1e28); + font-size: 0.84em; } .faction-aspect-tag-list, @@ -1190,7 +1274,7 @@ background: rgba(12, 76, 12, 0.08); border: 1px solid rgba(12, 76, 12, 0.18); color: var(--cel-green, #0c4c0c); - font-size: 0.72em; + font-size: 0.76em; font-weight: bold; } @@ -1204,7 +1288,7 @@ label { display: block; margin-bottom: 2px; - font-size: 0.68em; + font-size: 0.71em; text-transform: uppercase; letter-spacing: 0.04em; color: var(--cel-border, #7a5c20); @@ -1219,13 +1303,13 @@ border-radius: 3px; padding: 2px 6px; background: rgba(255,255,255,0.9); - font-size: 0.78em; - color: #2f2413; + font-size: 0.82em; + color: var(--cel-text, #2f2413); box-sizing: border-box; } select option { - color: #2f2413; + color: var(--cel-text, #2f2413); background: #fffaf0; } } @@ -1251,7 +1335,7 @@ background: rgba(224,123,0,0.12); color: var(--cel-orange, #e07b00); font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 0.72em; + font-size: 0.76em; line-height: 1; cursor: help; vertical-align: middle; @@ -1273,7 +1357,7 @@ color: var(--cel-orange, #e07b00); font-family: var(--cel-font-title, "CopaseticNF", serif); margin-bottom: 4px; - font-size: 0.82em; + font-size: 0.86em; } } @@ -1281,7 +1365,7 @@ display: flex; align-items: center; gap: 4px; - font-size: 0.74em; + font-size: 0.78em; } .faction-aspect-active-list { @@ -1298,8 +1382,8 @@ padding: 3px 6px; border-radius: 4px; background: rgba(255,255,255,0.7); - color: #2f2413; - font-size: 0.76em; + color: var(--cel-text, #2f2413); + font-size: 0.8em; &.is-relevant { border-left: 3px solid var(--cel-green, #0c4c0c); @@ -1307,20 +1391,20 @@ } .faction-aspect-active-name { - color: #2f2413; + color: var(--cel-text, #2f2413); font-weight: 600; } .faction-aspect-active-value { color: var(--cel-orange, #e07b00); font-family: var(--cel-font-title, "CopaseticNF", serif); - font-size: 0.92em; + font-size: 0.97em; } .faction-aspect-empty { - color: #666; + color: rgba(0,0,0,0.5); font-style: italic; - font-size: 0.74em; + font-size: 0.78em; } .faction-aspect-remove-block { @@ -1349,7 +1433,7 @@ border-left: 3px solid #c0392b; border-radius: 4px; color: #f0c0c0; - font-size: 0.85em; + font-size: 0.89em; .wound-icon { font-size: 1em; } } } @@ -1358,7 +1442,7 @@ .celestopol.chat-roll { .roll-result-banner.tie { background: #3a2e1a; - color: #d4b870; + color: var(--cel-orange-light, #ddb84a); border-top: 2px solid #7a6230; border-bottom: 2px solid #7a6230; text-shadow: 0 1px 2px rgba(0,0,0,0.6); @@ -1369,12 +1453,12 @@ align-items: center; gap: 0.3em; margin-bottom: 1px; - font-size: 0.85em; + font-size: 0.89em; color: var(--cel-orange, #e07b00); - .weapon-icon-small { font-size: 0.9em; } + .weapon-icon-small { font-size: 0.95em; } .weapon-degats-small { font-weight: bold; - color: #f0c060; + color: var(--cel-border, #7a5c20); } } } @@ -1386,20 +1470,20 @@ align-items: center; gap: 0.4em; margin-bottom: 2px; - font-size: 0.9em; + font-size: 0.95em; color: var(--cel-orange, #e07b00); .weapon-icon { font-size: 1em; } .weapon-degats { font-weight: bold; - color: #f0c060; - font-size: 0.85em; + color: var(--cel-border, #7a5c20); + font-size: 0.89em; } } .form-corps-pnj { .corps-pnj-input { width: 70px; - font-size: 1.1em; + font-size: 1.16em; font-weight: bold; text-align: center; font-family: var(--cel-font-title, "CopaseticNF", serif); @@ -1420,7 +1504,7 @@ label { color: var(--cel-orange, #e07b00); font-weight: bold; - font-size: 0.85em; + font-size: 0.89em; display: flex; align-items: center; gap: 5px; @@ -1435,7 +1519,7 @@ border: 1px solid rgba(196, 154, 26, 0.5); border-radius: 3px; padding: 2px 4px; - font-size: 0.85em; + font-size: 0.89em; max-width: 200px; } } @@ -1451,7 +1535,7 @@ align-items: center; gap: 6px; color: var(--cel-orange, #e07b00); - font-size: 0.88em; + font-size: 0.92em; font-style: italic; i { opacity: 0.8; } @@ -1465,14 +1549,14 @@ padding: 4px 8px; label { - color: #e08060; - font-size: 0.85em; + color: var(--cel-accent, #6b1e28); + font-size: 0.89em; font-weight: bold; display: flex; align-items: center; gap: 5px; - i { color: #e08060; } + i { color: var(--cel-accent, #6b1e28); } } select { @@ -1482,13 +1566,13 @@ border: 1px solid rgba(200, 100, 60, 0.4); border-radius: 3px; padding: 2px 4px; - font-size: 0.85em; + font-size: 0.89em; } } .form-threshold-fixed { .threshold-value { - font-size: 1.2em; + font-size: 1.26em; font-weight: bold; font-family: var(--cel-font-title, "CopaseticNF", serif); color: var(--cel-orange, #e07b00); @@ -1514,7 +1598,7 @@ input[type="checkbox"] { flex-shrink: 0; } .opposition-icon { - font-size: 1.2em; + font-size: 1.26em; color: var(--cel-orange, #e07b00); } @@ -1525,13 +1609,13 @@ .opposition-main { font-weight: bold; - font-size: 0.9em; + font-size: 0.95em; font-family: var(--cel-font-title, "CopaseticNF", serif); color: var(--cel-orange, #e07b00); } .opposition-sub { - font-size: 0.75em; + font-size: 0.79em; opacity: 0.7; font-style: italic; } @@ -1575,7 +1659,7 @@ } .moon-standalone-actor { - font-size: 0.85em; + font-size: 0.89em; color: var(--cel-text, #333); font-style: italic; } @@ -1604,21 +1688,21 @@ .moon-standalone-phase { font-family: var(--cel-font-title); - font-size: 0.95em; + font-size: 1.0em; font-weight: bold; color: var(--cel-text, #333); } .moon-standalone-value { - font-size: 0.8em; + font-size: 0.84em; color: var(--cel-text-light, #666); font-style: italic; } &.moon-triomphe { border-left-color: var(--cel-green, #0c4c0c); } &.moon-brio { border-left-color: var(--cel-border, #7a5c20); } - &.moon-contrecoup { border-left-color: #c07800; } - &.moon-catastrophe{ border-left-color: #8b1e2e; } + &.moon-contrecoup { border-left-color: var(--cel-orange, #c49a1a); } + &.moon-catastrophe{ border-left-color: var(--cel-accent, #6b1e28); } } .moon-interpret-row { @@ -1627,15 +1711,15 @@ gap: 8px; .moon-interpret-label { - font-size: 0.72em; + font-size: 0.76em; text-transform: uppercase; letter-spacing: 0.07em; - color: #888; + color: rgba(0,0,0,0.45); white-space: nowrap; } .moon-fortune { - font-size: 0.85em; + font-size: 0.89em; font-weight: bold; border-radius: 3px; padding: 1px 8px; @@ -1648,7 +1732,7 @@ &.mauvaise-fortune { background: rgba(139, 30, 46, 0.1); - color: #8b1e2e; + color: var(--cel-accent, #6b1e28); border: 1px solid rgba(139,30,46,0.3); } } @@ -1659,6 +1743,7 @@ margin-top: 2px; padding: 6px 8px; } + } // ── Message d'initiative ────────────────────────────────────────────────────── @@ -1698,11 +1783,11 @@ color: var(--cel-orange, #e07b00); font-weight: bold; letter-spacing: 0.05em; - font-size: 0.92em; + font-size: 0.97em; } .skill-info { color: var(--cel-cream, #f0e8d4); - font-size: 0.77em; + font-size: 0.81em; font-style: italic; } } @@ -1730,19 +1815,19 @@ } .initiative-icon { - font-size: 1.1em; + font-size: 1.16em; opacity: 0.9; font-style: normal; } .initiative-score { - font-size: 2.4em; + font-size: 2.52em; font-weight: bold; line-height: 1; } .initiative-detail { - font-size: 0.65em; + font-size: 0.68em; opacity: 0.75; font-style: italic; font-family: var(--cel-font-body, serif); diff --git a/templates/chat-message.hbs b/templates/chat-message.hbs index c32e799..b92f2e3 100644 --- a/templates/chat-message.hbs +++ b/templates/chat-message.hbs @@ -122,7 +122,7 @@ {{/if}} - {{!-- Résultat du Dé de la Lune (narratif) --}} + {{!-- Résultat du Dé de la Lune (narratif + choix de contrepartie) --}} {{#if hasMoonDie}}
{{moonFaceSymbol}} @@ -132,6 +132,27 @@ {{moonResultDesc}}
+ {{#if moonActorIsCharacter}} +
+ {{localize "CELESTOPOL.Moon.applyChoose"}} +
+ {{#if (eq moonResultTypeId "triomphe")}} + + + {{else if (eq moonResultTypeId "brio")}} + + {{localize "CELESTOPOL.Moon.effectNarrativeOnly"}} + {{else if (eq moonResultTypeId "contrecoup")}} + + {{localize "CELESTOPOL.Moon.effectNarrativeOnly"}} + {{else if (eq moonResultTypeId "catastrophe")}} + + + {{localize "CELESTOPOL.Moon.effectNarrativeOnly"}} + {{/if}} +
+
+ {{/if}} {{/if}} {{!-- Bandeau résultat --}} diff --git a/templates/moon-standalone.hbs b/templates/moon-standalone.hbs index ab2ed53..301bbc4 100644 --- a/templates/moon-standalone.hbs +++ b/templates/moon-standalone.hbs @@ -36,4 +36,27 @@ + {{!-- Choix de la contrepartie --}} + {{#if moonActorIsCharacter}} +
+ {{localize "CELESTOPOL.Moon.applyChoose"}} +
+ {{#if (eq moonResultTypeId "triomphe")}} + + + {{else if (eq moonResultTypeId "brio")}} + + {{localize "CELESTOPOL.Moon.effectNarrativeOnly"}} + {{else if (eq moonResultTypeId "contrecoup")}} + + {{localize "CELESTOPOL.Moon.effectNarrativeOnly"}} + {{else if (eq moonResultTypeId "catastrophe")}} + + + {{localize "CELESTOPOL.Moon.effectNarrativeOnly"}} + {{/if}} +
+
+ {{/if}} +