6 Commits

Author SHA1 Message Date
uberwald 4f4403c164 Ready for delivery
Release Creation / build (release) Successful in 53s
2026-07-23 22:34:46 +02:00
uberwald f1038b6b02 fix: CONFIG.Dice.rollModes deprecated → CONFIG.ChatMessage.modes (v14)
Remplacé foundry.utils.duplicate(CONFIG.Dice.rollModes) par
Object.fromEntries(Object.entries(CONFIG.ChatMessage.modes).map(([k,v]) => [k, v.label]))
pour compatibilité FVTT v14.
2026-07-23 22:30:59 +02:00
uberwald 0abeff8fce fix: boutons chat cliquables — insertion dans .sidebar-tab-core + pointer-events auto
- insertion dans .sidebar-tab-core avant .sidebar-tab-scroll
  (respecte la hiérarchie DOM attendue par FVTT v14)
- CSS: pointer-events: auto + position: relative + z-index: 1
- fallback insertion en haut de #chat si selecteurs absents
2026-07-23 22:28:44 +02:00
uberwald b35b0809d4 fix: placement boutons Tarot/Actions/Épreuve dans le chat FVTT v14
- insertion en haut de #chat (avant sidebar-tab-core) au lieu
  d'insérer avant #chat-controls (caché par le scroll en v14)
- remplacement inline styles → classes CSS .hamalron-chat-tools/.hamalron-chat-btn
- CSS externalisé dans chat.less
2026-07-23 22:22:11 +02:00
uberwald a468a35e4f Fix readme.md 2026-07-23 22:14:27 +02:00
uberwald 1aff4c5985 Fix readme.md 2026-07-23 22:13:42 +02:00
9 changed files with 86 additions and 11 deletions
+3 -2
View File
@@ -2,6 +2,8 @@
_Hamalron_ est un jeu de rôle sur table médiéval-fantastique dark fantasy créé par **Alkonost**. Ce système Foundry VTT vous permet de jouer à _Hamalron_ en utilisant son mécanisme original : **le tirage de cartes de tarot** en remplacement des dés.
Ce systeme a été développé pour Foundry VTT par **LeRatierBretonnien** et est distribué gratuitement sous licence Creative Commons, avec l'approbation et la validation de l'auteur du jeu.
Par **Uberwald** (LeRatierBretonnien).
- **Repository** : https://www.uberwald.me/gitea/public/fvtt-hamalron
@@ -26,8 +28,7 @@ Par **Uberwald** (LeRatierBretonnien).
### Personnages
- **10 caractéristiques** (Force, Agilité, Esprit, etc.) avec valeurs et modificateurs.
- **Compétences** liées aux caractéristiques, maîtrises, spécialisations.
- **Compétences**
- **Blessures incapacitantes** à la perte d'une carte Épée (malus -2, bannière).
- **Récupération des résistances** : Denier/Coupe (test difficulté 7), Épée (tirage +1/test), Bâton (tirage +1).
- **Main de tarot** : les personnages peuvent recevoir jusqu'à 8 cartes en main.
+31
View File
@@ -3151,6 +3151,37 @@ i.fvtt-hamalron {
text-transform: uppercase;
letter-spacing: 2px;
}
/* Chat sidebar tools (Tarot, Actions, Épreuve) */
.hamalron-chat-tools {
flex: 0 0 auto;
display: flex;
gap: 4px;
padding: 4px 8px;
border-bottom: 1px solid #444;
flex-wrap: wrap;
position: relative;
z-index: 1;
pointer-events: auto;
}
.hamalron-chat-btn {
display: flex;
align-items: center;
gap: 4px;
padding: 3px 8px;
background: #2a2a4a;
color: #e0e0e0;
border: 1px solid #555;
border-radius: 4px;
cursor: pointer;
font-size: 11px;
white-space: nowrap;
pointer-events: auto;
position: relative;
z-index: 1;
}
.hamalron-chat-btn:hover {
background: #3a3a6a;
}
.application.dialog.fvtt-hamalron {
color: var(--color-dark-1);
background-color: var(--color-light-1);
+14 -7
View File
@@ -210,22 +210,19 @@ Hooks.on("getSceneControlButtons", (controls) => {
// Add system buttons to the chat sidebar
function addChatTools() {
const controls = document.querySelector("#chat-controls")
if (!controls || controls.querySelector(".hamalron-chat-tools")) return
const chatEl = document.querySelector("#chat")
if (!chatEl || chatEl.querySelector(".hamalron-chat-tools")) return
const tools = document.createElement("div")
tools.className = "hamalron-chat-tools"
tools.style.cssText = "display:flex;gap:4px;padding:4px 8px;border-bottom:1px solid #444;margin-bottom:2px;flex-wrap:wrap"
const addBtn = (icon, label, title, onClick) => {
const btn = document.createElement("button")
btn.type = "button"
btn.style.cssText = "display:flex;align-items:center;gap:4px;padding:3px 8px;background:#2a2a4a;color:#e0e0e0;border:1px solid #555;border-radius:4px;cursor:pointer;font-size:11px;white-space:nowrap"
btn.className = "hamalron-chat-btn"
btn.innerHTML = `<i class="${icon}"></i> <span>${label}</span>`
btn.title = title
btn.addEventListener("click", onClick)
btn.addEventListener("mouseenter", () => { btn.style.background = "#3a3a6a" })
btn.addEventListener("mouseleave", () => { btn.style.background = "#2a2a4a" })
tools.appendChild(btn)
}
@@ -244,7 +241,17 @@ function addChatTools() {
await HamalronTirageTarot.promptEpreuve(actor)
})
controls.parentNode.insertBefore(tools, controls)
// Insérer dans .sidebar-tab-core avant .sidebar-tab-scroll
const core = chatEl.querySelector(".sidebar-tab-core")
const scroll = core?.querySelector(".sidebar-tab-scroll")
if (core && scroll) {
core.insertBefore(tools, scroll)
} else {
// Fallback: en haut de #chat
const firstChild = chatEl.firstElementChild
if (firstChild) chatEl.insertBefore(tools, firstChild)
else chatEl.appendChild(tools)
}
}
Hooks.on("renderChatLog", () => setTimeout(addChatTools, 0))
+3 -1
View File
@@ -291,7 +291,9 @@ export default class HamalronTirageTarot extends Roll {
break
}
const rollModes = foundry.utils.duplicate(CONFIG.Dice.rollModes)
const rollModes = Object.fromEntries(
Object.entries(CONFIG.ChatMessage.modes ?? {}).map(([k, v]) => [k, v.label])
)
const fieldRollMode = new foundry.data.fields.StringField({
choices: rollModes,
blank: false,
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000006
MANIFEST-000011
Binary file not shown.
Binary file not shown.
+34
View File
@@ -959,3 +959,37 @@
letter-spacing: 2px;
}
}
/* Chat sidebar tools (Tarot, Actions, Épreuve) */
.hamalron-chat-tools {
flex: 0 0 auto;
display: flex;
gap: 4px;
padding: 4px 8px;
border-bottom: 1px solid #444;
flex-wrap: wrap;
position: relative;
z-index: 1;
pointer-events: auto;
}
.hamalron-chat-btn {
display: flex;
align-items: center;
gap: 4px;
padding: 3px 8px;
background: #2a2a4a;
color: #e0e0e0;
border: 1px solid #555;
border-radius: 4px;
cursor: pointer;
font-size: 11px;
white-space: nowrap;
pointer-events: auto;
position: relative;
z-index: 1;
&:hover {
background: #3a3a6a;
}
}