4 Commits

Author SHA1 Message Date
fc6bb7a4b1 CSS rework et autres améliorations
All checks were successful
Release Creation / build (release) Successful in 46s
2026-02-12 23:08:51 +01:00
f26130d208 CSS rework et autres améliorations 2026-02-12 23:05:22 +01:00
39da08d4cb CSS rework et autres améliorations 2026-02-12 23:04:37 +01:00
e639b6ae3e Fix rollData = 1
All checks were successful
Release Creation / build (release) Successful in 3m36s
2025-12-01 17:57:19 +01:00
64 changed files with 1826 additions and 1102 deletions

54
.gitignore vendored Normal file
View File

@@ -0,0 +1,54 @@
# Dependencies
node_modules/
package-lock.json
# Build outputs
styles/tedeum.css
styles/*.css.map
# IDE & Editor files
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store
# System files
Thumbs.db
desktop.ini
# Logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
*.log
# Temporary files
*.tmp
*.temp
.cache/
# Environment variables
.env
.env.local
# Optional: Uncomment if you want to ignore pack database files
# These are usually committed for systems, but can be regenerated
# packs/**/*.ldb
# packs/**/LOG
# packs/**/LOG.old
# packs/**/MANIFEST-*
# packs/**/CURRENT
# Compiled source
dist/
build/
# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db

View File

@@ -1,25 +1,17 @@
var gulp = require('gulp'); var gulp = require('gulp');
var less = require('gulp-less');
var postcss = require('gulp-postcss'); var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer'); var autoprefixer = require('autoprefixer');
var cssnext = require('postcss-preset-env');
var precss = require('precss');
gulp.task('css', function () { gulp.task('css', function () {
return gulp.src('./less/*.less')
var processors = [ .pipe(less())
autoprefixer, .pipe(postcss([autoprefixer]))
cssnext,
precss
];
return gulp.src('./postcss/*.css')
.pipe(postcss(processors))
.pipe(gulp.dest('./styles')); .pipe(gulp.dest('./styles'));
}); });
gulp.task('watch', function () {
gulp.watch('./less/*.less', gulp.series('css'));
});
function watchUpdates() { gulp.task('default', gulp.series('css'));
gulp.watch('./postcss/*.css', css);
}

View File

@@ -1,34 +1,33 @@
@font-face { @font-face {
font-family: "MailartRubberstamp"; font-family: "MailartRubberstamp";
src: url('../fonts/MailartRubberstamp-Regular.woff') format("woff"); src: url("../fonts/MailartRubberstamp-Regular.woff") format("woff");
font-family: "GreatPrimer"; font-family: "GreatPrimer";
src: url('../fonts/IM_FELL_Great_Primer_Roman.woff') format("woff"); src: url("../fonts/IM_FELL_Great_Primer_Roman.woff") format("woff");
} }
:root { // Variables LESS
--window-header-title-font-size: 1.3rem; @window-header-title-font-size: 1.3rem;
--window-header-title-font-weight: normal; @window-header-title-font-weight: normal;
--window-header-title-color: #f5f5f5; @window-header-title-color: #f5f5f5;
--major-button-font-size: 1.05rem; @major-button-font-size: 1.05rem;
--major-button-font-weight: normal; @major-button-font-weight: normal;
--major-button-color: #dadada; @major-button-color: #dadada;
--tab-header-font-size: 1.0rem; @tab-header-font-size: 1rem;
--tab-header-font-weight: 700; @tab-header-font-weight: 700;
--tab-header-color: #403f3e; @tab-header-color: #403f3e;
--tab-header-color-active: #4a0404; @tab-header-color-active: #4a0404;
--actor-input-font-size: 0.8rem; @actor-input-font-size: 0.8rem;
--actor-input-font-weight: 500; @actor-input-font-weight: 500;
--actor-input-color: black; @actor-input-color: black;
--actor-label-font-size: 0.8rem; @actor-label-font-size: 0.8rem;
--actor-label-font-weight: 700; @actor-label-font-weight: 700;
--actor-label-color: rgba(70, 67, 49, 0.76863); @actor-label-color: rgba(70, 67, 49, 0.76863);
--debug-background-color-red: rgba(255, 0, 0, 0.32941); @debug-background-color-red: rgba(255, 0, 0, 0.32941);
--debug-background-color-blue: rgba(29, 0, 255, 0.32941); @debug-background-color-blue: rgba(29, 0, 255, 0.32941);
--debug-background-color-green: rgba(84, 255, 0, 0.32941); @debug-background-color-green: rgba(84, 255, 0, 0.32941);
--debug-box-shadow-red: inset 0 0 2px red; @debug-box-shadow-red: inset 0 0 2px red;
--debug-box-shadow-blue: inset 0 0 2px blue; @debug-box-shadow-blue: inset 0 0 2px blue;
--debug-box-shadow-green: inset 0 0 2px green; @debug-box-shadow-green: inset 0 0 2px green;
}
.window-app { .window-app {
text-align: justify; text-align: justify;
@@ -64,7 +63,7 @@
.window-app .window-header, .window-app .window-header,
#actors .directory-list, #actors .directory-list,
#navigation #scene-list .scene.nav-item { #navigation #scene-list .scene.nav-item {
font-size: 1.0rem; font-size: 1rem;
} }
.sheet { .sheet {
@@ -81,7 +80,9 @@
line-height: 1.5rem; line-height: 1.5rem;
border-top: 0 none; border-top: 0 none;
border-bottom: 0 none; border-bottom: 0 none;
background: linear-gradient(rgba(226, 226, 222, 0.5), rgba(226, 226, 222, 0.5)), url("../images/ui/frise_bottom_01.webp"); background:
linear-gradient(rgba(226, 226, 222, 0.5), rgba(226, 226, 222, 0.5)),
url("../images/ui/frise_bottom_01.webp");
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
z-index: 1; z-index: 1;
@@ -173,8 +174,8 @@ select {
} }
} }
li.folder>.folder-header h3 { li.folder > .folder-header h3 {
color: #AAA; color: #aaa;
} }
table { table {
@@ -277,7 +278,7 @@ table {
} }
.flex-shrink { .flex-shrink {
flex: 'flex-shrink'; flex: "flex-shrink";
} }
.fvtt-te-deum { .fvtt-te-deum {
@@ -289,6 +290,15 @@ table {
flex-wrap: wrap; flex-wrap: wrap;
justify-content: flex-start; justify-content: flex-start;
margin-bottom: 10px; margin-bottom: 10px;
background: linear-gradient(
135deg,
rgba(226, 226, 222, 0.95) 0%,
rgba(240, 235, 225, 0.9) 100%
);
padding: 0.8rem;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
border: 1px solid rgba(139, 115, 85, 0.3);
.profile-img { .profile-img {
flex: 0 0 128px; flex: 0 0 128px;
@@ -302,6 +312,9 @@ table {
-o-object-position: 50% 0; -o-object-position: 50% 0;
object-position: 50% 0; object-position: 50% 0;
border-width: 0px; border-width: 0px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
border: 2px solid rgba(139, 115, 85, 0.4);
} }
.header-fields { .header-fields {
@@ -349,18 +362,33 @@ table {
.tabs { .tabs {
height: 40px; height: 40px;
border-top: 1px solid #AAA; border-top: 1px solid rgba(139, 115, 85, 0.4);
border-bottom: 1px solid #AAA; border-bottom: 1px solid rgba(139, 115, 85, 0.4);
background: linear-gradient(
180deg,
rgba(226, 226, 222, 0.5) 0%,
rgba(240, 235, 225, 0.3) 100%
);
color: #000000; color: #000000;
font-family: "GreatPrimer"; font-family: "GreatPrimer";
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
.item { .item {
line-height: 40px; line-height: 40px;
font-weight: bold; font-weight: bold;
padding: 0 1rem;
transition: all 0.2s ease;
&:hover {
background: rgba(226, 226, 222, 0.6);
color: rgba(70, 67, 49, 0.9);
}
&.active { &.active {
text-decoration: underline; text-decoration: underline;
text-shadow: none; text-shadow: none;
background: rgba(196, 186, 166, 0.4);
border-bottom: 3px solid rgba(139, 115, 85, 0.8);
} }
} }
} }
@@ -379,7 +407,7 @@ table {
height: 30px; height: 30px;
line-height: 24px; line-height: 24px;
padding: 1px 0; padding: 1px 0;
border-bottom: 1px solid #BBB; border-bottom: 1px solid #bbb;
.item-image { .item-image {
flex: 0 0 24px; flex: 0 0 24px;
@@ -515,6 +543,99 @@ textarea {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
} }
// Améliorations pour les fiches d'items
.item-form {
.sheet-header {
background: linear-gradient(
135deg,
rgba(226, 226, 222, 0.95) 0%,
rgba(240, 235, 225, 0.9) 100%
);
padding: 0.8rem;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
border: 1px solid rgba(139, 115, 85, 0.3);
margin-bottom: 0.5rem;
h1.charname input {
background: transparent;
border: none;
border-bottom: 2px solid rgba(139, 115, 85, 0.3);
transition: border-color 0.2s ease;
&:focus {
border-bottom-color: rgba(139, 115, 85, 0.7);
outline: none;
}
}
}
.sheet-body {
ul {
list-style: none;
padding: 0;
margin: 0;
li.flexrow {
background: rgba(255, 255, 255, 0.3);
padding: 0.4rem 0.6rem;
margin: 0.3rem 0;
border-radius: 4px;
border-left: 3px solid rgba(139, 115, 85, 0.3);
transition: all 0.2s ease;
&:hover {
background: rgba(255, 255, 255, 0.5);
border-left-color: rgba(139, 115, 85, 0.6);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
}
}
h3 {
background: linear-gradient(
135deg,
rgba(196, 186, 166, 0.6) 0%,
rgba(226, 226, 222, 0.5) 100%
);
padding: 0.4rem 0.6rem;
margin: 0.8rem 0 0.4rem 0;
border-radius: 4px;
border-left: 4px solid rgba(139, 115, 85, 0.6);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
font-family: MailartRubberstamp;
font-size: 1.1rem;
color: #3d3a2e;
}
input[type="text"],
input[type="number"],
select {
background: rgba(255, 255, 255, 0.9);
border: 1px solid rgba(139, 115, 85, 0.3);
border-radius: 3px;
padding: 0.25rem 0.4rem;
transition: all 0.2s ease;
&:hover {
border-color: rgba(139, 115, 85, 0.5);
}
&:focus {
outline: none;
border-color: rgba(139, 115, 85, 0.8);
box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2);
}
}
input[type="checkbox"] {
width: 18px;
height: 18px;
cursor: pointer;
}
}
}
section { section {
&.sheet-body { &.sheet-body {
padding: 0.25rem 0.5rem; padding: 0.25rem 0.5rem;
@@ -532,7 +653,7 @@ nav {
.item { .item {
z-index: 2; z-index: 2;
position: relative; position: relative;
opacity: 1.0; opacity: 1;
color: rgba(29, 28, 31); color: rgba(29, 28, 31);
padding: 0 0.25rem; padding: 0 0.25rem;
@@ -587,17 +708,18 @@ li {
} }
.alterne-list { .alterne-list {
&>.list-item { & > .list-item {
&:hover { &:hover {
background: rgba(100, 100, 50, 0.25); background: rgba(226, 226, 222, 0.4);
transform: translateX(2px);
} }
&:nth-child(even) { &:nth-child(even) {
background: rgba(80, 60, 0, 0.10); background: rgba(240, 235, 225, 0.3);
} }
&:nth-child(odd) { &:nth-child(odd) {
background: rgb(160, 130, 100, 0.05); background: rgba(250, 245, 235, 0.2);
} }
} }
} }
@@ -613,24 +735,42 @@ li {
.list-item { .list-item {
margin: 0.125rem; margin: 0.125rem;
box-shadow: inset 0px 0px 1px rgba(0, 0, 0, 0.58824); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
border-radius: 0.25rem; border-radius: 0.3rem;
padding: 0.125rem; padding: 0.3rem 0.4rem;
flex: 1 1 5rem; flex: 1 1 5rem;
border: 1px solid rgba(139, 115, 85, 0.15);
transition: all 0.2s ease;
&:hover {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
border-color: rgba(139, 115, 85, 0.3);
background: rgba(255, 255, 255, 0.3);
}
} }
.list-item-shadow { .list-item-shadow {
background: rgba(170, 168, 167, 0.35); background: linear-gradient(
135deg,
rgba(170, 168, 167, 0.25) 0%,
rgba(200, 195, 185, 0.2) 100%
);
flex-grow: 0; flex-grow: 0;
flex-wrap: nowrap; flex-wrap: nowrap;
justify-content: flex-start; justify-content: flex-start;
border-left: 3px solid rgba(139, 115, 85, 0.3);
} }
.list-item-shadow2 { .list-item-shadow2 {
background: rgba(87, 60, 32, 0.25); background: linear-gradient(
135deg,
rgba(87, 60, 32, 0.2) 0%,
rgba(120, 90, 60, 0.15) 100%
);
flex-grow: 0; flex-grow: 0;
flex-wrap: nowrap; flex-wrap: nowrap;
justify-content: flex-start; justify-content: flex-start;
border-left: 3px solid rgba(87, 60, 32, 0.4);
} }
.item-display-show { .item-display-show {
@@ -668,6 +808,9 @@ li {
max-height: 24px; max-height: 24px;
flex-grow: 0; flex-grow: 0;
margin-right: 0.25rem; margin-right: 0.25rem;
border-radius: 3px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
border: 1px solid rgba(139, 115, 85, 0.3);
} }
.competence-column { .competence-column {
@@ -893,7 +1036,7 @@ li {
} }
} }
#sidebar-tabs>.collapsed, #sidebar-tabs > .collapsed,
#chat-controls .chat-control-icon { #chat-controls .chat-control-icon {
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
@@ -915,13 +1058,22 @@ li {
} }
.chat-message-header { .chat-message-header {
background: rgba(220, 220, 210, 0.5); background: linear-gradient(
font-size: 1.1rem; 135deg,
height: 48px; rgba(226, 226, 222, 0.95) 0%,
rgba(196, 186, 166, 0.9) 100%
);
font-size: 0.9rem;
min-height: 26px;
text-align: center; text-align: center;
vertical-align: middle; vertical-align: middle;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center;
border-bottom: 2px solid rgba(139, 115, 85, 0.6);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
padding: 0.1rem 0.3rem;
border-radius: 6px 6px 0 0;
} }
.chat-message .message-header .flavor-text, .chat-message .message-header .flavor-text,
@@ -933,8 +1085,9 @@ li {
.chat-actor-name { .chat-actor-name {
font-weight: bold; font-weight: bold;
font-family: MailartRubberstamp; font-family: MailartRubberstamp;
font-size: 1.2rem; font-size: 0.9rem;
padding: 4px; padding: 0px;
line-height: 1.2;
} }
.chat-actor-name-opposition { .chat-actor-name-opposition {
@@ -945,11 +1098,35 @@ li {
} }
.chat-result-success { .chat-result-success {
color: darkgreen; color: #2d5016;
background: linear-gradient(
135deg,
rgba(144, 238, 144, 0.3),
rgba(107, 186, 107, 0.25)
);
padding: 0.25rem 0.6rem;
border-radius: 4px;
border-left: 3px solid #4a7c2c;
display: inline-block;
margin: 0.15rem 0;
box-shadow: 0 1px 3px rgba(45, 80, 22, 0.2);
font-weight: bold;
} }
.chat-result-failure { .chat-result-failure {
color: darkred; color: #7a1a1a;
background: linear-gradient(
135deg,
rgba(255, 160, 160, 0.3),
rgba(205, 120, 120, 0.25)
);
padding: 0.25rem 0.6rem;
border-radius: 4px;
border-left: 3px solid #a82020;
display: inline-block;
margin: 0.15rem 0;
box-shadow: 0 1px 3px rgba(122, 26, 26, 0.2);
font-weight: bold;
} }
.chat-img { .chat-img {
@@ -961,6 +1138,15 @@ li {
border: 0px; border: 0px;
width: 32px; width: 32px;
height: 32px; height: 32px;
transition:
transform 0.2s ease,
box-shadow 0.2s ease;
border-radius: 4px;
&:hover {
transform: scale(1.1);
box-shadow: 0 3px 8px rgba(255, 102, 0, 0.4);
}
} }
.chat-result-column { .chat-result-column {
@@ -969,19 +1155,52 @@ li {
} }
.roll-dialog-header { .roll-dialog-header {
height: 52px; background: linear-gradient(
135deg,
rgba(226, 226, 222, 0.95) 0%,
rgba(196, 186, 166, 0.9) 100%
);
min-height: 48px;
padding: 0.4rem 0.6rem;
border-radius: 6px 6px 0 0;
border-bottom: 2px solid rgba(139, 115, 85, 0.6);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
.actor-icon {
width: 40px;
height: 40px;
border-radius: 50%;
border: 2px solid rgba(139, 115, 85, 0.5);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}
.dialog-roll-title {
font-family: MailartRubberstamp;
font-size: 1.1rem;
margin: 0;
color: #3d3a2e;
text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.5);
}
} }
.actor-icon { .actor-icon {
float: left; float: left;
width: 48px; width: 28px;
height: 48px; height: 28px;
padding: 2px 6px 2px 2px; padding: 1px;
border-radius: 50%;
border: 2px solid rgba(139, 115, 85, 0.5);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
margin-right: 0.3rem;
} }
.padding-dice { .padding-dice {
padding-top: .2rem; padding-top: 0.2rem;
padding-bottom: .2rem; padding-bottom: 0.2rem;
} }
.dice-image { .dice-image {
@@ -1006,8 +1225,8 @@ li {
font-size: 15px; font-size: 15px;
padding: 10px; padding: 10px;
padding-bottom: 20px; padding-bottom: 20px;
padding-top: .2rem; padding-top: 0.2rem;
padding-bottom: .2rem; padding-bottom: 0.2rem;
} }
.div-center { .div-center {
@@ -1015,12 +1234,17 @@ li {
} }
.chat-message { .chat-message {
background: rgba(220, 220, 210, 0.5); background: rgba(240, 235, 225, 0.95);
font-size: 0.9rem; font-size: 0.9rem;
border-radius: 8px;
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15);
overflow: hidden;
border: 1px solid rgba(139, 115, 85, 0.3);
&.whisper { &.whisper {
background: rgba(220, 220, 210, 0.75); background: rgba(220, 220, 210, 0.85);
border: 2px solid #545469; border: 2px solid #545469;
box-shadow: 0 3px 10px rgba(84, 84, 105, 0.3);
} }
.chat-icon { .chat-icon {
@@ -1066,7 +1290,7 @@ li {
border-bottom: 1px solid rgba(0, 0, 0, 0); border-bottom: 1px solid rgba(0, 0, 0, 0);
box-shadow: inset 0 0 2rem rgba(0, 0, 0, 0.5); box-shadow: inset 0 0 2rem rgba(0, 0, 0, 0.5);
&>.item { & > .item {
&.active { &.active {
border: 1px solid rgba(114, 98, 72, 1); border: 1px solid rgba(114, 98, 72, 1);
background: rgba(30, 25, 20, 0.75); background: rgba(30, 25, 20, 0.75);
@@ -1160,7 +1384,11 @@ li {
.chat-card-button { .chat-card-button {
box-shadow: inset 0px 1px 0px 0px #a6827e; box-shadow: inset 0px 1px 0px 0px #a6827e;
background: linear-gradient(to bottom, rgba(33, 55, 74, 0.98824) 5%, rgba(21, 40, 51, 0.67059) 100%); background: linear-gradient(
to bottom,
rgba(33, 55, 74, 0.98824) 5%,
rgba(21, 40, 51, 0.67059) 100%
);
background-color: rgba(125, 93, 59, 0); background-color: rgba(125, 93, 59, 0);
border-radius: 3px; border-radius: 3px;
border: 2px ridge #846109; border: 2px ridge #846109;
@@ -1187,7 +1415,11 @@ li {
.plus-minus-button { .plus-minus-button {
box-shadow: inset 0px 1px 0px 0px #a6827e; box-shadow: inset 0px 1px 0px 0px #a6827e;
background: linear-gradient(to bottom, rgba(33, 55, 74, 0.98824) 5%, rgba(21, 40, 51, 0.67059) 100%); background: linear-gradient(
to bottom,
rgba(33, 55, 74, 0.98824) 5%,
rgba(21, 40, 51, 0.67059) 100%
);
background-color: rgba(125, 93, 59, 0); background-color: rgba(125, 93, 59, 0);
border-radius: 2px; border-radius: 2px;
border: 1px ridge #846109; border: 1px ridge #846109;
@@ -1226,11 +1458,11 @@ li {
#pause { #pause {
font-size: 2rem; font-size: 2rem;
&>h3 { & > h3 {
color: #CCC; color: #ccc;
} }
&>img { & > img {
content: url(../images/ui/logo_tedeum_pause.webp); content: url(../images/ui/logo_tedeum_pause.webp);
height: 200px; height: 200px;
width: 200px; width: 200px;
@@ -1280,6 +1512,20 @@ li {
.items-title-bg { .items-title-bg {
margin-top: 6px; margin-top: 6px;
color: rgba(19, 18, 18, 0.95); color: rgba(19, 18, 18, 0.95);
background: linear-gradient(
135deg,
rgba(196, 186, 166, 0.6) 0%,
rgba(226, 226, 222, 0.5) 100%
);
border-radius: 4px;
padding: 0.3rem 0.5rem;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
border-left: 4px solid rgba(139, 115, 85, 0.6);
h3 {
margin: 0;
padding: 0;
}
} }
.impact-box { .impact-box {
@@ -1314,8 +1560,11 @@ li {
.item-sheet-img { .item-sheet-img {
width: 64px; width: 64px;
height: auto; height: 64px;
border: 0; border: 2px solid rgba(139, 115, 85, 0.4);
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
object-fit: cover;
} }
.item-name-img { .item-name-img {
@@ -1346,6 +1595,13 @@ li {
min-width: 6rem; min-width: 6rem;
} }
.item-field-label-long,
.item-name-label-long {
font-weight: 600;
color: rgba(70, 67, 49, 0.9);
min-width: 160px;
}
.item-field-skill { .item-field-skill {
flex-grow: 1; flex-grow: 1;
max-width: 6.8rem; max-width: 6.8rem;
@@ -1371,9 +1627,21 @@ li {
} }
.carac-box { .carac-box {
background-color: rgba(155, 155, 150, 0.3); background: linear-gradient(
box-shadow: inset 0px 0px 1px rgba(0, 0, 0, 0.58824); 135deg,
rgba(226, 226, 222, 0.4) 0%,
rgba(240, 235, 225, 0.3) 100%
);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
border-radius: 0.45rem; border-radius: 0.45rem;
padding: 0.3rem 0.5rem;
border: 1px solid rgba(139, 115, 85, 0.2);
transition: all 0.2s ease;
&:hover {
border-color: rgba(139, 115, 85, 0.4);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
}
} }
.comp-box { .comp-box {
@@ -1381,6 +1649,22 @@ li {
min-width: 16rem; min-width: 16rem;
width: 16rem; width: 16rem;
min-height: 1.6rem; min-height: 1.6rem;
background: linear-gradient(
135deg,
rgba(250, 245, 235, 0.5) 0%,
rgba(255, 255, 255, 0.3) 100%
);
padding: 0.25rem 0.4rem;
margin: 0.15rem;
border-radius: 3px;
border-left: 2px solid rgba(139, 115, 85, 0.3);
transition: all 0.2s ease;
&:hover {
background: rgba(226, 226, 222, 0.4);
border-left-color: rgba(139, 115, 85, 0.6);
transform: translateX(2px);
}
} }
.item-control-end { .item-control-end {
@@ -1439,6 +1723,78 @@ li {
} }
.skill-roll-dialog { .skill-roll-dialog {
background: linear-gradient(
135deg,
rgba(240, 235, 225, 0.98) 0%,
rgba(250, 245, 235, 0.95) 100%
);
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
border: 1px solid rgba(139, 115, 85, 0.3);
overflow: hidden;
.flexcol {
padding: 0.6rem 0.8rem;
gap: 0.4rem;
}
.flexrow {
margin: 0.3rem 0;
padding: 0.4rem 0.5rem;
background: rgba(255, 255, 255, 0.4);
border-radius: 4px;
border-left: 3px solid rgba(139, 115, 85, 0.3);
align-items: center;
gap: 0.5rem;
transition: all 0.2s ease;
&:hover {
background: rgba(255, 255, 255, 0.6);
border-left-color: rgba(139, 115, 85, 0.6);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
}
.roll-dialog-label {
font-family: GreatPrimer;
font-size: 0.85rem;
font-weight: 600;
color: #3d3a2e;
min-width: 140px;
&:first-child {
color: rgba(70, 67, 49, 0.9);
font-weight: 700;
}
}
select,
input[type="checkbox"] {
background: rgba(255, 255, 255, 0.9);
border: 1px solid rgba(139, 115, 85, 0.4);
border-radius: 3px;
padding: 0.2rem 0.4rem;
color: #3d3a2e;
transition: all 0.2s ease;
&:hover {
border-color: rgba(139, 115, 85, 0.7);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
&:focus {
outline: none;
border-color: rgba(139, 115, 85, 0.9);
box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2);
}
}
input[type="checkbox"] {
width: 18px;
height: 18px;
cursor: pointer;
}
div { div {
margin-top: 4px; margin-top: 4px;
margin-bottom: 4px; margin-bottom: 4px;
@@ -1506,11 +1862,6 @@ li {
font-size: 0.9rem; font-size: 0.9rem;
} }
.skill-roll-dialog {
font-family: "GreatPrimer";
font-size: 0.9rem;
}
.fvtt-te-deum-character-creator { .fvtt-te-deum-character-creator {
/*background: rgba(226, 226, 222, 0.95);*/ /*background: rgba(226, 226, 222, 0.95);*/
font-family: "GreatPrimer"; font-family: "GreatPrimer";
@@ -1585,3 +1936,136 @@ li {
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
color: darkred; color: darkred;
} }
// Améliorations esthétiques pour les messages de chat
.chat-roll-details {
background: rgba(255, 255, 255, 0.4);
border-radius: 4px;
padding: 0.4rem 0.5rem;
margin: 0.25rem 0;
border: 1px solid rgba(139, 115, 85, 0.25);
ul {
margin: 0;
padding-left: 0.8rem;
li {
padding: 0.05rem 0;
line-height: 1.25;
strong {
color: rgba(70, 67, 49, 0.9);
}
}
}
}
.chat-roll-result-section {
background: linear-gradient(
135deg,
rgba(255, 250, 240, 0.6),
rgba(245, 240, 230, 0.5)
);
border-radius: 4px;
padding: 0.35rem;
margin: 0.2rem 0;
border: 2px solid rgba(139, 115, 85, 0.3);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
.chat-total-result {
font-size: 1rem;
font-weight: bold;
color: #3d3a2e;
text-align: center;
padding: 0.25rem;
background: rgba(226, 226, 222, 0.5);
border-radius: 4px;
margin-bottom: 0.25rem;
text-shadow: 1px 1px 2px rgba(255, 255, 255, 0.5);
}
}
.chat-dice-formula {
display: inline-block;
background: rgba(139, 115, 85, 0.15);
padding: 0.15rem 0.4rem;
border-radius: 3px;
font-family: monospace;
font-size: 0.9em;
border: 1px solid rgba(139, 115, 85, 0.3);
color: #5a4a3a;
font-weight: 600;
}
.chat-difficulty-badge {
display: inline-block;
background: linear-gradient(
135deg,
rgba(180, 160, 130, 0.4),
rgba(160, 140, 110, 0.35)
);
padding: 0.15rem 0.5rem;
border-radius: 10px;
font-weight: bold;
border: 1px solid rgba(139, 115, 85, 0.4);
color: #4a3a2a;
font-size: 0.85em;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
}
.chat-info-badge {
display: inline-block;
background: rgba(100, 149, 237, 0.15);
padding: 0.15rem 0.4rem;
border-radius: 3px;
border-left: 2px solid rgba(70, 130, 180, 0.6);
margin: 0.08rem 0;
font-size: 0.8em;
color: #2c4a6a;
}
.chat-warning-badge {
display: inline-block;
background: rgba(255, 200, 100, 0.2);
padding: 0.15rem 0.4rem;
border-radius: 3px;
border-left: 2px solid rgba(218, 165, 32, 0.7);
margin: 0.08rem 0;
font-size: 0.8em;
color: #7a5a1a;
}
.chat-actions-bar {
display: flex;
justify-content: center;
gap: 0.3rem;
padding: 0.4rem;
background: rgba(226, 226, 222, 0.4);
border-top: 1px solid rgba(139, 115, 85, 0.25);
border-radius: 0 0 6px 6px;
margin-top: 0.25rem;
a {
transition: all 0.2s ease;
&:hover {
transform: translateY(-2px);
}
}
}
.chat-negative-dice {
display: inline-block;
background: linear-gradient(
135deg,
rgba(255, 100, 100, 0.2),
rgba(220, 80, 80, 0.15)
);
padding: 0.2rem 0.5rem;
border-radius: 4px;
border: 2px solid rgba(178, 34, 34, 0.4);
font-weight: bold;
color: #8b0000;
margin: 0.15rem 0;
box-shadow: 0 1px 3px rgba(178, 34, 34, 0.2);
}

View File

@@ -713,7 +713,7 @@ export class TeDeumActor extends Actor {
async rollDegatsArme(armeId) { async rollDegatsArme(armeId) {
let weapon = this.items.get(armeId) let weapon = this.items.get(armeId)
if (weapon) { if (weapon) {
let bDegats = 0 let bDegats = { value: 0 }
if (weapon.system.typeArme == "melee") { if (weapon.system.typeArme == "melee") {
bDegats = this.getBonusDegats() bDegats = this.getBonusDegats()
} }
@@ -728,7 +728,7 @@ export class TeDeumActor extends Actor {
rollData.degats = degatsRoll.total rollData.degats = degatsRoll.total
let msg = await TeDeumUtility.createChatWithRollMode(rollData.alias, { let msg = await TeDeumUtility.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-degats-result.hbs`, rollData) content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-degats-result.hbs`, rollData)
}) })
await msg.setFlag("world", "te-deum-rolldata", rollData) await msg.setFlag("world", "te-deum-rolldata", rollData)
console.log("Rolldata result", rollData) console.log("Rolldata result", rollData)

View File

@@ -563,10 +563,11 @@ export class TeDeumUtility {
} }
if (rollData.diceSum == 1) { if (rollData.diceSum == 1) {
let critiqueRoll = await new Roll(rollData.carac.negativeDice) let critiqueRoll = await new Roll(rollData.carac.negativeDice)
rollData.isSuccess = true rollData.isSuccess = false
await critiqueRoll.evaluate() await critiqueRoll.evaluate()
await this.showDiceSoNice(critiqueRoll, game.settings.get("core", "rollMode")) await this.showDiceSoNice(critiqueRoll, game.settings.get("core", "rollMode"))
rollData.critiqueRoll = foundry.utils.duplicate(critiqueRoll) rollData.critiqueRoll = foundry.utils.duplicate(critiqueRoll)
rollData.critiqueTotal = critiqueRoll.total
if (critiqueRoll.total > rollData.competence.system.score) { if (critiqueRoll.total > rollData.competence.system.score) {
rollData.isEchecCritique = true rollData.isEchecCritique = true
} }

View File

@@ -6,7 +6,7 @@ export class TeDeumRollDialog extends Dialog {
static async create(actor, rollData) { static async create(actor, rollData) {
let options = { classes: ["tedeum-roll-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 } let options = { classes: ["tedeum-roll-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 }
let html = await renderTemplate('systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs', rollData); let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs', rollData);
return new TeDeumRollDialog(actor, rollData, html, options); return new TeDeumRollDialog(actor, rollData, html, options);
} }
@@ -43,7 +43,7 @@ export class TeDeumRollDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
async refreshDialog() { async refreshDialog() {
const content = await renderTemplate("systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs", this.rollData) const content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs", this.rollData)
this.data.content = content this.data.content = content
this.render(true) this.render(true)
} }

View File

@@ -91,7 +91,7 @@ export class TeDeumItemSheet extends foundry.appv1.sheets.ItemSheet {
payload: chatData, payload: chatData,
}); });
renderTemplate('systems/fvtt-te-deum/templates/post-item.html', chatData).then(html => { foundry.applications.handlebars.renderTemplate('systems/fvtt-te-deum/templates/post-item.html', chatData).then(html => {
let chatOptions = TeDeumUtility.chatDataSetup(html); let chatOptions = TeDeumUtility.chatDataSetup(html);
ChatMessage.create(chatOptions) ChatMessage.create(chatOptions)
}); });

21
package.json Normal file
View File

@@ -0,0 +1,21 @@
{
"name": "fvtt-te-deum",
"version": "1.0.0",
"description": "Système Te Deum pour FoundryVTT",
"private": true,
"scripts": {
"build:css": "gulp css",
"watch:css": "gulp watch"
},
"devDependencies": {
"gulp": "^4.0.2",
"gulp-less": "^5.0.0",
"less": "^4.2.0",
"autoprefixer": "^10.4.20",
"gulp-postcss": "^9.0.1",
"postcss": "^8.4.49"
},
"keywords": ["foundry-vtt", "te-deum"],
"author": "",
"license": "ISC"
}

View File

View File

@@ -1 +1 @@
MANIFEST-000206 MANIFEST-000214

View File

@@ -1,7 +1,7 @@
2025/10/31-17:48:52.681921 7fee83fff6c0 Recovering log #204 2026/01/04-21:26:37.933804 7f93eb7fe6c0 Recovering log #212
2025/10/31-17:48:52.736841 7fee83fff6c0 Delete type=3 #202 2026/01/04-21:26:37.943801 7f93eb7fe6c0 Delete type=3 #210
2025/10/31-17:48:52.736911 7fee83fff6c0 Delete type=0 #204 2026/01/04-21:26:37.943854 7f93eb7fe6c0 Delete type=0 #212
2025/10/31-17:59:45.975679 7fee837fe6c0 Level-0 table #209: started 2026/01/04-21:27:02.505234 7f93e9ffb6c0 Level-0 table #217: started
2025/10/31-17:59:45.975710 7fee837fe6c0 Level-0 table #209: 0 bytes OK 2026/01/04-21:27:02.505262 7f93e9ffb6c0 Level-0 table #217: 0 bytes OK
2025/10/31-17:59:45.982864 7fee837fe6c0 Delete type=0 #207 2026/01/04-21:27:02.512734 7f93e9ffb6c0 Delete type=0 #215
2025/10/31-17:59:46.002009 7fee837fe6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.512909 7f93e9ffb6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/10/31-17:15:35.389060 7fee897f96c0 Recovering log #200 2025/12/20-18:12:56.443928 7f244d1ff6c0 Recovering log #208
2025/10/31-17:15:35.399430 7fee897f96c0 Delete type=3 #198 2025/12/20-18:12:56.494058 7f244d1ff6c0 Delete type=3 #206
2025/10/31-17:15:35.399559 7fee897f96c0 Delete type=0 #200 2025/12/20-18:12:56.494134 7f244d1ff6c0 Delete type=0 #208
2025/10/31-17:25:23.732693 7fee837fe6c0 Level-0 table #205: started 2025/12/20-18:36:44.261828 7f2436ffd6c0 Level-0 table #213: started
2025/10/31-17:25:23.732722 7fee837fe6c0 Level-0 table #205: 0 bytes OK 2025/12/20-18:36:44.261865 7f2436ffd6c0 Level-0 table #213: 0 bytes OK
2025/10/31-17:25:23.738770 7fee837fe6c0 Delete type=0 #203 2025/12/20-18:36:44.320648 7f2436ffd6c0 Delete type=0 #211
2025/10/31-17:25:23.739037 7fee837fe6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end) 2025/12/20-18:36:44.320833 7f2436ffd6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)

View File

View File

@@ -1 +1 @@
MANIFEST-000309 MANIFEST-000317

View File

@@ -1,7 +1,7 @@
2025/10/31-17:48:52.259705 7fee83fff6c0 Recovering log #307 2026/01/04-21:26:37.828637 7f93eb7fe6c0 Recovering log #315
2025/10/31-17:48:52.315229 7fee83fff6c0 Delete type=3 #305 2026/01/04-21:26:37.839103 7f93eb7fe6c0 Delete type=3 #313
2025/10/31-17:48:52.315320 7fee83fff6c0 Delete type=0 #307 2026/01/04-21:26:37.839200 7f93eb7fe6c0 Delete type=0 #315
2025/10/31-17:59:45.932597 7fee837fe6c0 Level-0 table #312: started 2026/01/04-21:27:02.452079 7f93e9ffb6c0 Level-0 table #320: started
2025/10/31-17:59:45.932657 7fee837fe6c0 Level-0 table #312: 0 bytes OK 2026/01/04-21:27:02.452098 7f93e9ffb6c0 Level-0 table #320: 0 bytes OK
2025/10/31-17:59:45.938987 7fee837fe6c0 Delete type=0 #310 2026/01/04-21:27:02.458511 7f93e9ffb6c0 Delete type=0 #318
2025/10/31-17:59:45.939267 7fee837fe6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.458741 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/10/31-17:15:35.274824 7fee83fff6c0 Recovering log #303 2025/12/20-18:12:56.039187 7f244d1ff6c0 Recovering log #311
2025/10/31-17:15:35.286812 7fee83fff6c0 Delete type=3 #301 2025/12/20-18:12:56.089963 7f244d1ff6c0 Delete type=3 #309
2025/10/31-17:15:35.286947 7fee83fff6c0 Delete type=0 #303 2025/12/20-18:12:56.090033 7f244d1ff6c0 Delete type=0 #311
2025/10/31-17:25:23.706544 7fee837fe6c0 Level-0 table #308: started 2025/12/20-18:36:43.701277 7f2436ffd6c0 Level-0 table #316: started
2025/10/31-17:25:23.706576 7fee837fe6c0 Level-0 table #308: 0 bytes OK 2025/12/20-18:36:43.701303 7f2436ffd6c0 Level-0 table #316: 0 bytes OK
2025/10/31-17:25:23.712497 7fee837fe6c0 Delete type=0 #306 2025/12/20-18:36:43.756264 7f2436ffd6c0 Delete type=0 #314
2025/10/31-17:25:23.712659 7fee837fe6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end) 2025/12/20-18:36:43.812180 7f2436ffd6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000309 MANIFEST-000317

View File

@@ -1,7 +1,7 @@
2025/10/31-17:48:52.318228 7fee89ffa6c0 Recovering log #307 2026/01/04-21:26:37.843261 7f93ea7fc6c0 Recovering log #315
2025/10/31-17:48:52.372058 7fee89ffa6c0 Delete type=3 #305 2026/01/04-21:26:37.853735 7f93ea7fc6c0 Delete type=3 #313
2025/10/31-17:48:52.372200 7fee89ffa6c0 Delete type=0 #307 2026/01/04-21:26:37.853805 7f93ea7fc6c0 Delete type=0 #315
2025/10/31-17:59:45.924808 7fee837fe6c0 Level-0 table #312: started 2026/01/04-21:27:02.446245 7f93e9ffb6c0 Level-0 table #320: started
2025/10/31-17:59:45.924856 7fee837fe6c0 Level-0 table #312: 0 bytes OK 2026/01/04-21:27:02.446262 7f93e9ffb6c0 Level-0 table #320: 0 bytes OK
2025/10/31-17:59:45.932291 7fee837fe6c0 Delete type=0 #310 2026/01/04-21:27:02.452006 7f93e9ffb6c0 Delete type=0 #318
2025/10/31-17:59:45.939248 7fee837fe6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.458726 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/10/31-17:15:35.290241 7fee88ff86c0 Recovering log #302 2025/12/20-18:12:56.095054 7f24377fe6c0 Recovering log #311
2025/10/31-17:15:35.310453 7fee88ff86c0 Delete type=3 #300 2025/12/20-18:12:56.148579 7f24377fe6c0 Delete type=3 #309
2025/10/31-17:15:35.310600 7fee88ff86c0 Delete type=0 #302 2025/12/20-18:12:56.148653 7f24377fe6c0 Delete type=0 #311
2025/10/31-17:25:23.685832 7fee837fe6c0 Level-0 table #308: started 2025/12/20-18:36:43.637340 7f2436ffd6c0 Level-0 table #316: started
2025/10/31-17:25:23.685916 7fee837fe6c0 Level-0 table #308: 0 bytes OK 2025/12/20-18:36:43.637367 7f2436ffd6c0 Level-0 table #316: 0 bytes OK
2025/10/31-17:25:23.692224 7fee837fe6c0 Delete type=0 #306 2025/12/20-18:36:43.701178 7f2436ffd6c0 Delete type=0 #314
2025/10/31-17:25:23.712593 7fee837fe6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end) 2025/12/20-18:36:43.812170 7f2436ffd6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000307 MANIFEST-000315

View File

@@ -1,7 +1,7 @@
2025/10/31-17:48:52.208153 7fee88ff86c0 Recovering log #305 2026/01/04-21:26:37.813752 7f93eaffd6c0 Recovering log #313
2025/10/31-17:48:52.255275 7fee88ff86c0 Delete type=3 #303 2026/01/04-21:26:37.823461 7f93eaffd6c0 Delete type=3 #311
2025/10/31-17:48:52.255396 7fee88ff86c0 Delete type=0 #305 2026/01/04-21:26:37.823509 7f93eaffd6c0 Delete type=0 #313
2025/10/31-17:59:45.917100 7fee837fe6c0 Level-0 table #310: started 2026/01/04-21:27:02.440062 7f93e9ffb6c0 Level-0 table #318: started
2025/10/31-17:59:45.917151 7fee837fe6c0 Level-0 table #310: 0 bytes OK 2026/01/04-21:27:02.440091 7f93e9ffb6c0 Level-0 table #318: 0 bytes OK
2025/10/31-17:59:45.924617 7fee837fe6c0 Delete type=0 #308 2026/01/04-21:27:02.446167 7f93e9ffb6c0 Delete type=0 #316
2025/10/31-17:59:45.939227 7fee837fe6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.458712 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/10/31-17:15:35.260634 7fee88ff86c0 Recovering log #301 2025/12/20-18:12:55.979585 7f244c9fe6c0 Recovering log #309
2025/10/31-17:15:35.271676 7fee88ff86c0 Delete type=3 #299 2025/12/20-18:12:56.031769 7f244c9fe6c0 Delete type=3 #307
2025/10/31-17:15:35.271742 7fee88ff86c0 Delete type=0 #301 2025/12/20-18:12:56.031837 7f244c9fe6c0 Delete type=0 #309
2025/10/31-17:25:23.699680 7fee837fe6c0 Level-0 table #306: started 2025/12/20-18:36:43.574310 7f2436ffd6c0 Level-0 table #314: started
2025/10/31-17:25:23.699730 7fee837fe6c0 Level-0 table #306: 0 bytes OK 2025/12/20-18:36:43.574360 7f2436ffd6c0 Level-0 table #314: 0 bytes OK
2025/10/31-17:25:23.706400 7fee837fe6c0 Delete type=0 #304 2025/12/20-18:36:43.637222 7f2436ffd6c0 Delete type=0 #312
2025/10/31-17:25:23.712639 7fee837fe6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end) 2025/12/20-18:36:43.812158 7f2436ffd6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000319 MANIFEST-000327

View File

@@ -1,7 +1,7 @@
2025/10/31-17:48:52.375411 7fee88ff86c0 Recovering log #317 2026/01/04-21:26:37.858384 7f93eaffd6c0 Recovering log #325
2025/10/31-17:48:52.427809 7fee88ff86c0 Delete type=3 #315 2026/01/04-21:26:37.868673 7f93eaffd6c0 Delete type=3 #323
2025/10/31-17:48:52.427933 7fee88ff86c0 Delete type=0 #317 2026/01/04-21:26:37.868726 7f93eaffd6c0 Delete type=0 #325
2025/10/31-17:59:45.909866 7fee837fe6c0 Level-0 table #322: started 2026/01/04-21:27:02.458878 7f93e9ffb6c0 Level-0 table #330: started
2025/10/31-17:59:45.909914 7fee837fe6c0 Level-0 table #322: 0 bytes OK 2026/01/04-21:27:02.458920 7f93e9ffb6c0 Level-0 table #330: 0 bytes OK
2025/10/31-17:59:45.916884 7fee837fe6c0 Delete type=0 #320 2026/01/04-21:27:02.465606 7f93e9ffb6c0 Delete type=0 #328
2025/10/31-17:59:45.939203 7fee837fe6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.485393 7f93e9ffb6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/10/31-17:15:35.313871 7fee89ffa6c0 Recovering log #312 2025/12/20-18:12:56.154781 7f244c9fe6c0 Recovering log #321
2025/10/31-17:15:35.325411 7fee89ffa6c0 Delete type=3 #310 2025/12/20-18:12:56.203650 7f244c9fe6c0 Delete type=3 #319
2025/10/31-17:15:35.325482 7fee89ffa6c0 Delete type=0 #312 2025/12/20-18:12:56.206209 7f244c9fe6c0 Delete type=0 #321
2025/10/31-17:25:23.692359 7fee837fe6c0 Level-0 table #318: started 2025/12/20-18:36:43.812286 7f2436ffd6c0 Level-0 table #326: started
2025/10/31-17:25:23.692392 7fee837fe6c0 Level-0 table #318: 0 bytes OK 2025/12/20-18:36:43.812329 7f2436ffd6c0 Level-0 table #326: 0 bytes OK
2025/10/31-17:25:23.699504 7fee837fe6c0 Delete type=0 #316 2025/12/20-18:36:43.867818 7f2436ffd6c0 Delete type=0 #324
2025/10/31-17:25:23.712618 7fee837fe6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end) 2025/12/20-18:36:44.048015 7f2436ffd6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000308 MANIFEST-000316

View File

@@ -1,7 +1,7 @@
2025/10/31-17:48:52.436510 7fee897f96c0 Recovering log #306 2026/01/04-21:26:37.873703 7f93ebfff6c0 Recovering log #314
2025/10/31-17:48:52.495484 7fee897f96c0 Delete type=3 #304 2026/01/04-21:26:37.885324 7f93ebfff6c0 Delete type=3 #312
2025/10/31-17:48:52.495642 7fee897f96c0 Delete type=0 #306 2026/01/04-21:26:37.885427 7f93ebfff6c0 Delete type=0 #314
2025/10/31-17:59:45.939360 7fee837fe6c0 Level-0 table #311: started 2026/01/04-21:27:02.433342 7f93e9ffb6c0 Level-0 table #319: started
2025/10/31-17:59:45.939510 7fee837fe6c0 Level-0 table #311: 0 bytes OK 2026/01/04-21:27:02.433382 7f93e9ffb6c0 Level-0 table #319: 0 bytes OK
2025/10/31-17:59:45.947243 7fee837fe6c0 Delete type=0 #309 2026/01/04-21:27:02.439918 7f93e9ffb6c0 Delete type=0 #317
2025/10/31-17:59:45.969270 7fee837fe6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.458692 7f93e9ffb6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/10/31-17:15:35.330543 7fee83fff6c0 Recovering log #302 2025/12/20-18:12:56.214726 7f2437fff6c0 Recovering log #310
2025/10/31-17:15:35.341320 7fee83fff6c0 Delete type=3 #300 2025/12/20-18:12:56.267981 7f2437fff6c0 Delete type=3 #308
2025/10/31-17:15:35.341393 7fee83fff6c0 Delete type=0 #302 2025/12/20-18:12:56.268051 7f2437fff6c0 Delete type=0 #310
2025/10/31-17:25:23.726570 7fee837fe6c0 Level-0 table #307: started 2025/12/20-18:36:43.756462 7f2436ffd6c0 Level-0 table #315: started
2025/10/31-17:25:23.726600 7fee837fe6c0 Level-0 table #307: 0 bytes OK 2025/12/20-18:36:43.756507 7f2436ffd6c0 Level-0 table #315: 0 bytes OK
2025/10/31-17:25:23.732601 7fee837fe6c0 Delete type=0 #305 2025/12/20-18:36:43.812023 7f2436ffd6c0 Delete type=0 #313
2025/10/31-17:25:23.739016 7fee837fe6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end) 2025/12/20-18:36:43.812190 7f2436ffd6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000308 MANIFEST-000316

View File

@@ -1,7 +1,7 @@
2025/10/31-17:48:52.498674 7fee83fff6c0 Recovering log #306 2026/01/04-21:26:37.889654 7f93ea7fc6c0 Recovering log #314
2025/10/31-17:48:52.552038 7fee83fff6c0 Delete type=3 #304 2026/01/04-21:26:37.899518 7f93ea7fc6c0 Delete type=3 #312
2025/10/31-17:48:52.552201 7fee83fff6c0 Delete type=0 #306 2026/01/04-21:26:37.899583 7f93ea7fc6c0 Delete type=0 #314
2025/10/31-17:59:45.947486 7fee837fe6c0 Level-0 table #311: started 2026/01/04-21:27:02.472063 7f93e9ffb6c0 Level-0 table #319: started
2025/10/31-17:59:45.947539 7fee837fe6c0 Level-0 table #311: 0 bytes OK 2026/01/04-21:27:02.472086 7f93e9ffb6c0 Level-0 table #319: 0 bytes OK
2025/10/31-17:59:45.954305 7fee837fe6c0 Delete type=0 #309 2026/01/04-21:27:02.478114 7f93e9ffb6c0 Delete type=0 #317
2025/10/31-17:59:45.969283 7fee837fe6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.485430 7f93e9ffb6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/10/31-17:15:35.344437 7fee88ff86c0 Recovering log #302 2025/12/20-18:12:56.274845 7f24377fe6c0 Recovering log #310
2025/10/31-17:15:35.355082 7fee88ff86c0 Delete type=3 #300 2025/12/20-18:12:56.318675 7f24377fe6c0 Delete type=3 #308
2025/10/31-17:15:35.355226 7fee88ff86c0 Delete type=0 #302 2025/12/20-18:12:56.318757 7f24377fe6c0 Delete type=0 #310
2025/10/31-17:25:23.719225 7fee837fe6c0 Level-0 table #307: started 2025/12/20-18:36:43.935645 7f2436ffd6c0 Level-0 table #315: started
2025/10/31-17:25:23.719276 7fee837fe6c0 Level-0 table #307: 0 bytes OK 2025/12/20-18:36:43.935673 7f2436ffd6c0 Level-0 table #315: 0 bytes OK
2025/10/31-17:25:23.726439 7fee837fe6c0 Delete type=0 #305 2025/12/20-18:36:43.994623 7f2436ffd6c0 Delete type=0 #313
2025/10/31-17:25:23.738995 7fee837fe6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end) 2025/12/20-18:36:44.048051 7f2436ffd6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000245 MANIFEST-000253

View File

@@ -1,7 +1,7 @@
2025/10/31-17:48:52.618472 7fee897f96c0 Recovering log #243 2026/01/04-21:26:37.919630 7f93ebfff6c0 Recovering log #251
2025/10/31-17:48:52.677972 7fee897f96c0 Delete type=3 #241 2026/01/04-21:26:37.930006 7f93ebfff6c0 Delete type=3 #249
2025/10/31-17:48:52.678044 7fee897f96c0 Delete type=0 #243 2026/01/04-21:26:37.930066 7f93ebfff6c0 Delete type=0 #251
2025/10/31-17:59:45.961816 7fee837fe6c0 Level-0 table #248: started 2026/01/04-21:27:02.478265 7f93e9ffb6c0 Level-0 table #256: started
2025/10/31-17:59:45.961879 7fee837fe6c0 Level-0 table #248: 0 bytes OK 2026/01/04-21:27:02.478296 7f93e9ffb6c0 Level-0 table #256: 0 bytes OK
2025/10/31-17:59:45.969132 7fee837fe6c0 Delete type=0 #246 2026/01/04-21:27:02.485146 7f93e9ffb6c0 Delete type=0 #254
2025/10/31-17:59:45.969306 7fee837fe6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.485444 7f93e9ffb6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/10/31-17:15:35.373372 7fee83fff6c0 Recovering log #239 2025/12/20-18:12:56.387036 7f2437fff6c0 Recovering log #247
2025/10/31-17:15:35.383973 7fee83fff6c0 Delete type=3 #237 2025/12/20-18:12:56.440877 7f2437fff6c0 Delete type=3 #245
2025/10/31-17:15:35.384156 7fee83fff6c0 Delete type=0 #239 2025/12/20-18:12:56.440965 7f2437fff6c0 Delete type=0 #247
2025/10/31-17:25:23.757415 7fee837fe6c0 Level-0 table #244: started 2025/12/20-18:36:43.994753 7f2436ffd6c0 Level-0 table #252: started
2025/10/31-17:25:23.757450 7fee837fe6c0 Level-0 table #244: 0 bytes OK 2025/12/20-18:36:43.994783 7f2436ffd6c0 Level-0 table #252: 0 bytes OK
2025/10/31-17:25:23.763740 7fee837fe6c0 Delete type=0 #242 2025/12/20-18:36:44.047877 7f2436ffd6c0 Delete type=0 #250
2025/10/31-17:25:23.771542 7fee837fe6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end) 2025/12/20-18:36:44.048061 7f2436ffd6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000309 MANIFEST-000317

View File

@@ -1,7 +1,7 @@
2025/10/31-17:48:52.555551 7fee89ffa6c0 Recovering log #307 2026/01/04-21:26:37.904069 7f93eaffd6c0 Recovering log #315
2025/10/31-17:48:52.614628 7fee89ffa6c0 Delete type=3 #305 2026/01/04-21:26:37.914574 7f93eaffd6c0 Delete type=3 #313
2025/10/31-17:48:52.614769 7fee89ffa6c0 Delete type=0 #307 2026/01/04-21:26:37.914647 7f93eaffd6c0 Delete type=0 #315
2025/10/31-17:59:45.954529 7fee837fe6c0 Level-0 table #312: started 2026/01/04-21:27:02.465731 7f93e9ffb6c0 Level-0 table #320: started
2025/10/31-17:59:45.954583 7fee837fe6c0 Level-0 table #312: 0 bytes OK 2026/01/04-21:27:02.465755 7f93e9ffb6c0 Level-0 table #320: 0 bytes OK
2025/10/31-17:59:45.961618 7fee837fe6c0 Delete type=0 #310 2026/01/04-21:27:02.471938 7f93e9ffb6c0 Delete type=0 #318
2025/10/31-17:59:45.969295 7fee837fe6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end) 2026/01/04-21:27:02.485413 7f93e9ffb6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/10/31-17:15:35.357938 7fee89ffa6c0 Recovering log #303 2025/12/20-18:12:56.325650 7f244c9fe6c0 Recovering log #311
2025/10/31-17:15:35.368821 7fee89ffa6c0 Delete type=3 #301 2025/12/20-18:12:56.379165 7f244c9fe6c0 Delete type=3 #309
2025/10/31-17:15:35.368890 7fee89ffa6c0 Delete type=0 #303 2025/12/20-18:12:56.379237 7f244c9fe6c0 Delete type=0 #311
2025/10/31-17:25:23.712793 7fee837fe6c0 Level-0 table #308: started 2025/12/20-18:36:43.867925 7f2436ffd6c0 Level-0 table #316: started
2025/10/31-17:25:23.712885 7fee837fe6c0 Level-0 table #308: 0 bytes OK 2025/12/20-18:36:43.867945 7f2436ffd6c0 Level-0 table #316: 0 bytes OK
2025/10/31-17:25:23.719052 7fee837fe6c0 Delete type=0 #306 2025/12/20-18:36:43.935523 7f2436ffd6c0 Delete type=0 #314
2025/10/31-17:25:23.738967 7fee837fe6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end) 2025/12/20-18:36:44.048037 7f2436ffd6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end)

File diff suppressed because it is too large Load Diff

View File

@@ -1,99 +1,110 @@
<div class="chat-message-header"> <div class="chat-message-header">
{{#if actorImg}} {{#if actorImg}}
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" /> <img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
{{/if}} {{/if}}
<h4 class="chat-actor-name">{{alias}}</h4> <h4 class="chat-actor-name">{{alias}}</h4>
</div> </div>
<hr> <div class="chat-roll-details" style="margin-top: 0.3rem;">
{{#if img}}
<div style="text-align: center; margin-bottom: 0.3rem;">
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
</div>
{{/if}}
{{#if img}} <div class="chat-info-badge" style="margin-bottom: 0.4rem;">
<div> <strong>{{alias}}</strong>
<img class="chat-icon" src="{{img}}" alt="{{name}}" /> attaque
</div> <strong>{{defenderName}}</strong>
{{/if}} </div>
<div class="flexcol"> <ul style="margin: 0; padding-left: 0.5rem;">
</div>
<div>
<ul>
<li><strong>{{alias}}</strong> attaque <strong>{{defenderName}}</strong></li>
{{#if arme}} {{#if arme}}
<li><label class="chat-weapon-name">Dégats {{arme.name}} : {{degats}} ({{degatsFormula}})</label></li> <li style="margin: 0.2rem 0;"><span class="chat-info-badge">Dégâts
{{arme.name}}
:
{{degats}}
({{degatsFormula}})</span></li>
{{/if}} {{/if}}
{{#if loc}} {{#if loc}}
<li>Localisation : {{loc.label}}</li> <li style="margin: 0.2rem 0;"><span
<li>Touché : {{touche}}</li> class="chat-difficulty-badge"
>Localisation : {{loc.label}}</span></li>
<li style="margin: 0.2rem 0;">Touché : {{touche}}</li>
{{/if}} {{/if}}
{{#if gantelet}} {{#if gantelet}}
<li>Poing avec gantelet: +1 dégat</li> <li>Poing avec gantelet: +1 dégat</li>
{{/if}} {{/if}}
{{#if isChargeAPied}} {{#if isChargeAPied}}
<li>Charge à pied (+Course)</li> <li>Charge à pied (+Course)</li>
{{/if}} {{/if}}
{{#if isChargeACheval}} {{#if isChargeACheval}}
<li>Charge à cheval (+Equitation)</li> <li>Charge à cheval (+Equitation)</li>
{{/if}} {{/if}}
{{#if isReussiteCritique}} {{#if isReussiteCritique}}
<li><strong class="chat-result-success">Réussite critique : La blessure a été augmentée d'un niveau</strong></li> <li style="margin: 0.3rem 0;"><span class="chat-result-success">🎯
Réussite critique : La blessure a été augmentée d'un niveau</span></li>
{{/if}} {{/if}}
{{#if blessure}} {{#if blessure}}
<li><strong>{{defenderName}} a subi une blessure!</strong></li> <li style="margin: 0.3rem 0;"><span class="chat-warning-badge">⚔️
<li>Gravité : {{blessure.name}}</li> {{defenderName}}
a subi une blessure!</span></li>
<li style="margin: 0.2rem 0;"><strong>Gravité :
{{blessure.name}}</strong></li>
{{#if (eq loc.categorie "tete")}}
{{#if (gt blessure.system.value 0)}}
<li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
{{defenderName}}
doit réussir un test d'Endurance de difficulté 7 ou être assommé</span></li>
{{/if}}
{{/if}}
{{#if (eq loc.categorie "tete")}} {{#if (eq loc.categorie "bras")}}
{{#if (gt blessure.system.value 0)}} {{#if (gt blessure.system.value 2)}}
<li><strong class="chat-result-warning">{{defenderName}} doit réussir un test d'Endurance de difficulté 7 ou être <li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
assommé</strong></li> {{defenderName}}
{{/if}} lâche l'objet tenu par son bras. Il doit faire un test d'endurance
{{/if}} pour l'utiliser désormais.</span></li>
{{/if}}
{{/if}}
{{#if (eq loc.categorie "bras")}} {{#if (eq loc.categorie "jambe")}}
{{#if (gt blessure.system.value 2)}} {{#if (gt blessure.system.value 2)}}
<li><strong class="chat-result-warning">{{defenderName}} lache l'objet tenu par son bras. Il doit faire un test <li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
d'endurance {{defenderName}}
pour l'utiliser désormais.</strong></li> tombe au sol. Pour se relever et marcher, il doit réussir un test
{{/if}} d'Endurance à chaque tour.</span></li>
{{/if}} {{/if}}
{{/if}}
{{#if (eq loc.categorie "jambe")}} {{#if (eq loc.categorie "main")}}
{{#if (gt blessure.system.value 2)}} {{#if (gt blessure.system.value 1)}}
<li><strong class="chat-result-warning">{{defenderName}} tombe au sol. Pour se relever et marcher, il doit réussir <li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
un test {{defenderName}}
d'Endurance à chaque tour. lâche l'objet tenu par sa main. Il doit faire un test d'endurance
</strong></li> pour l'utiliser désormais.</span></li>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{#if (eq loc.categorie "main")}}
{{#if (gt blessure.system.value 1)}}
<li><strong class="chat-result-warning">{{defenderName}} lache l'objet tenu par sa main. Il doit faire un test
d'endurance
pour l'utiliser désormais.</strong></li>
{{/if}}
{{/if}}
{{#if (eq loc.categorie "pied")}}
{{#if (gt blessure.system.value 1)}}
<li><strong class="chat-result-warning">{{defenderName}} tombe au sol. Pour se relever et marcher, il doit réussir
un test
d'Endurance à chaque tour.
</strong></li>
{{/if}}
{{/if}}
{{#if (eq loc.categorie "pied")}}
{{#if (gt blessure.system.value 1)}}
<li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
{{defenderName}}
tombe au sol. Pour se relever et marcher, il doit réussir un test
d'Endurance à chaque tour.</span></li>
{{/if}}
{{/if}}
{{else}} {{else}}
<li>Aucune blessure subie par {{defenderName}}</li> <li style="margin: 0.3rem 0;"><span class="chat-result-success">✓ Aucune
blessure subie par
{{defenderName}}</span></li>
{{/if}} {{/if}}
</ul> </ul>
</div> </div>
</div>

View File

@@ -1,38 +1,44 @@
<div class="chat-message-header"> <div class="chat-message-header">
{{#if actorImg}} {{#if actorImg}}
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" /> <img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
{{/if}} {{/if}}
<h4 class="chat-actor-name">{{alias}}</h4> <h4 class="chat-actor-name">{{alias}}</h4>
</div> </div>
<hr> <div class="chat-roll-details" style="margin-top: 0.3rem;">
{{#if img}}
<div style="text-align: center; margin-bottom: 0.3rem;">
<img class="chat-icon" src="{{arme.img}}" alt="{{name}}" />
</div>
{{/if}}
{{#if img}} <ul style="margin: 0; padding-left: 0.5rem;">
<div> <li style="margin: 0.2rem 0;"><span class="chat-info-badge">Dégâts de
<img class="chat-icon" src="{{arme.img}}" alt="{{name}}" /> {{arme.name}}:
</div> {{formula}}</span></li>
{{/if}}
<div>
<ul>
<li>Dégats de {{arme.name}}: {{formula}} </li>
{{#if gantelet}} {{#if gantelet}}
<li>Poing avec gantelet: +1 dégat</li> <li style="margin: 0.2rem 0;"><span class="chat-difficulty-badge">🥊 Poing
avec gantelet: +1 dégât</span></li>
{{/if}} {{/if}}
{{#if isChargeAPied}} {{#if isChargeAPied}}
<li>Charge à pied (+Course)</li> <li style="margin: 0.2rem 0;"><span class="chat-difficulty-badge">🏃
Charge à pied (+Course)</span></li>
{{/if}} {{/if}}
{{#if isChargeACheval}} {{#if isChargeACheval}}
<li>Charge à cheval (+Equitation)</li> <li style="margin: 0.2rem 0;"><span class="chat-difficulty-badge">🐴
Charge à cheval (+Équitation)</span></li>
{{/if}} {{/if}}
<li>Dégats infligés : {{degats}}</li> <li style="margin: 0.3rem 0;"><span class="chat-warning-badge">⚔️ Dégâts
infligés :
{{degats}}</span></li>
{{#if loc}} {{#if loc}}
<li>Localisation : {{loc.label}}</li> <li style="margin: 0.2rem 0;"><span class="chat-difficulty-badge">🎯
Localisation :
{{loc.label}}</span></li>
{{/if}} {{/if}}
{{#if isReussiteCritique}} {{#if isReussiteCritique}}
<li><strong class="chat-result-success">Réussite critique : La blessure sera augmentée d'un niveau</strong></li> <li style="margin: 0.3rem 0;"><span class="chat-result-success">🎯
Réussite critique : La blessure sera augmentée d'un niveau</span></li>
{{/if}} {{/if}}
</ul> </ul>
</div> </div>
</div>

View File

@@ -5,130 +5,134 @@
<h4 class="chat-actor-name">{{alias}}</h4> <h4 class="chat-actor-name">{{alias}}</h4>
</div> </div>
<hr>
{{#if img}} {{#if img}}
<div> <div style="text-align: center; padding: 0.25rem;">
<img class="chat-icon" src="{{img}}" alt="{{name}}" /> <img class="chat-icon" src="{{img}}" alt="{{name}}" style="border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);" />
</div> </div>
{{/if}} {{/if}}
<div class="flexcol"> <div class="chat-roll-details">
</div>
<div>
<ul> <ul>
{{#if carac}} {{#if carac}}
<li>{{carac.name}}: {{carac.qualite}} ({{carac.dice}}) </li> <li><strong>{{carac.name}}:</strong> {{carac.qualite}} <span class="chat-dice-formula">{{carac.dice}}</span></li>
{{/if}} {{/if}}
{{#if competence}} {{#if competence}}
<li>{{competence.name}}: {{compScore}} </li> <li><strong>{{competence.name}}:</strong> {{compScore}}</li>
{{/if}} {{/if}}
{{#if bonusMalus}} {{#if bonusMalus}}
<li>Bonus/Malus: {{bonusMalus}} </li> <li class="chat-info-badge"><strong>Bonus/Malus:</strong> {{bonusMalus}}</li>
{{/if}} {{/if}}
{{#if santeModifier}} {{#if santeModifier}}
<li>Santé: {{santeModifier}} niveaux</li> <li class="chat-warning-badge"><strong>Santé:</strong> {{santeModifier}} niveaux</li>
{{/if}} {{/if}}
{{#if enableProvidence}} {{#if enableProvidence}}
<li>Un niveau de Providence a été utilisé !</li> <li class="chat-info-badge" style="background: rgba(255, 215, 0, 0.2); border-left-color: goldenrod;">⭐ Un niveau de Providence a été utilisé !</li>
{{/if}} {{/if}}
{{#if hasActions}} {{#if hasActions}}
<li data-tooltip="Nombre d'actions restantes, avec MG = Main Gauche">Actions restantes: {{remainingActions}} <li class="chat-info-badge" data-tooltip="Nombre d'actions restantes, avec MG = Main Gauche">
(MG:{{remainingActionsMainGauche}})</li> <strong>Actions restantes:</strong> {{remainingActions}} (MG:{{remainingActionsMainGauche}})
</li>
{{/if}} {{/if}}
{{#if arme}} {{#if arme}}
{{#if isViser}} {{#if isViser}}
<li>Bonus de visée (+1 niveau)</li> <li class="chat-info-badge">✓ Bonus de visée (+1 niveau)</li>
{{/if}} {{/if}}
{{#if isMouvement}} {{#if isMouvement}}
<li>Malus de cible petite ou en mouvement (-1 niveau)</li> <li class="chat-warning-badge">⚠ Malus de cible petite ou en mouvement (-1 niveau)</li>
{{/if}} {{/if}}
{{#if attaqueCiblee}} {{#if attaqueCiblee}}
<li>Attaque ciblée, -1 niveau</li> <li class="chat-warning-badge">⚠ Attaque ciblée, -1 niveau</li>
{{/if}} {{/if}}
{{#if allongeMalus}} {{#if allongeMalus}}
<li>Malus d'allonge: {{allongeMalus}} niveau</li> <li class="chat-warning-badge">⚠ Malus d'allonge: {{allongeMalus}} niveau</li>
{{/if}} {{/if}}
{{/if}} {{/if}}
<li>Dés: {{diceFormula}} </li> <li><strong>Formule:</strong> <span class="chat-dice-formula">{{diceFormula}}</span></li>
{{#if isTir}} {{#if isTir}}
<li>Portée: {{porteeLabel}} ( {{difficulty}} )</li> <li><strong>Portée:</strong> {{porteeLabel}} <span class="chat-difficulty-badge">Difficulté: {{difficulty}}</span></li>
{{else}} {{else}}
<li>Difficulté: {{difficulty}} </li> <li><strong>Difficulté:</strong> <span class="chat-difficulty-badge">{{difficulty}}</span></li>
{{/if}} {{/if}}
</ul> </ul>
</div> </div>
<div class="flexrow"> <div class="chat-roll-result-section">
<ul class="chat-result-column"> <div class="chat-total-result">Résultat: {{total}}</div>
<li><strong>Résultat: {{total}}</strong> </li>
<div style="text-align: center;">
{{#if isSuccess}} {{#if isSuccess}}
<li><strong class="chat-result-success">Succès !</strong> </li> <div class="chat-result-success">Succès !</div>
{{#if isReussiteCritique}} {{#if isReussiteCritique}}
<li data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP gagné en {{carac.name}}"> <div class="chat-result-success" data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP en {{carac.name}}" style="margin-top: 0.3rem;">
<strong class="chat-result-success">Réussite critique (XP potentiel) !</strong> 🌟 Réussite critique (XP potentiel) !
</li> </div>
{{/if}} {{/if}}
{{#if arme}} {{#if arme}}
<li><strong class="">Attaque réussie ! Faites une opposition avec la défense de la cible ou appliquez directement <div class="chat-info-badge" style="display: block; margin-top: 0.4rem; padding: 0.3rem; font-size: 0.9em;">
les dégats.</strong> </li> ⚔️ <strong>Attaque réussie !</strong> Faites une opposition avec la défense de la cible ou appliquez directement les dégâts.
</div>
{{/if}} {{/if}}
{{else}} {{else}}
<li><strong class="chat-result-failure">Echec !</strong> </li> <div class="chat-result-failure">Échec !</div>
{{#if critiqueTotal}}
<div class="chat-negative-dice" style="margin-top: 0.3rem;">
Dé négatif: {{critiqueTotal}}
</div>
{{/if}}
{{#if isEchecCritique}} {{#if isEchecCritique}}
<li data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP gagné en {{carac.name}}"> <div class="chat-result-failure" data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP en {{carac.name}}" style="margin-top: 0.3rem;">
<strong class="chat-result-failure">Echec critique (XP potentiel) !</strong> 💀 Échec critique (XP potentiel) !
</li> </div>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{#if nbEsquives}} {{#if nbEsquives}}
<li>Rappel : vous devez réussir {{nbEsquives}} tests d'esquive pour arriver au contact (règle d'allonge des armes). <div class="chat-warning-badge" style="display: block; margin-top: 0.4rem; padding: 0.3rem;">
</li> ⚠️ Rappel : vous devez réussir {{nbEsquives}} tests d'esquive pour arriver au contact (règle d'allonge des armes).
</div>
{{/if}} {{/if}}
{{#if loc}} {{#if loc}}
<li><strong>Attaque réussie !!</strong> </li> <div class="chat-info-badge" style="display: block; margin-top: 0.4rem; padding: 0.3rem; background: rgba(255, 215, 0, 0.15); border-left-color: goldenrod;">
<li>Localisation: {{loc.label}} </li> 🎯 <strong>Localisation:</strong> {{loc.label}}
</div>
{{/if}} {{/if}}
{{#if degats}} {{#if degats}}
<li>Dégats: {{degats}} {{#if isReussiteCritique}}(Augmentez la gravité de la blessure d'un niveau){{/if}}</li> <div class="chat-warning-badge" style="display: block; margin-top: 0.4rem; padding: 0.3rem; font-size: 0.95em; background: rgba(255, 100, 100, 0.15); border-left-color: #a82020;">
⚔️ <strong>Dégâts:</strong> {{degats}} {{#if isReussiteCritique}}<em>(Augmentez la gravité de la blessure d'un niveau)</em>{{/if}}
</div>
{{/if}} {{/if}}
</ul>
<div>
{{#if (or isEchecCritique isReussiteCritique)}}
<a class="chat-command-gain-xp">
<img class="chat-command-img" data-tooltip="Cliquez ici pour +1 XP en {{carac.name}} si pas d'opposition"
src="systems/fvtt-te-deum/images/icons/xpplus1.webp">
</a>
{{/if}}
<a class="chat-command-opposition">
<img class="chat-command-img" data-tooltip="Test en opposition"
src="systems/fvtt-te-deum/images/icons/opposition.webp">
</a>
{{#if arme}}
{{#if isSuccess}}
<a class="chat-command-appliquer-degats">
<img class="chat-command-img" data-tooltip="Appliquer les dégats directement sans opposition"
src="systems/fvtt-te-deum/images/icons/appliquer-degats.webp">
</a>
{{/if}}
{{/if}}
</div> </div>
</div> </div>
<div class="chat-actions-bar">
{{#if (or isEchecCritique isReussiteCritique)}}
<a class="chat-command-gain-xp">
<img class="chat-command-img" data-tooltip="Cliquez ici pour +1 XP en {{carac.name}} si pas d'opposition"
src="systems/fvtt-te-deum/images/icons/xpplus1.webp">
</a>
{{/if}}
<a class="chat-command-opposition">
<img class="chat-command-img" data-tooltip="Test en opposition"
src="systems/fvtt-te-deum/images/icons/opposition.webp">
</a>
{{#if arme}}
{{#if isSuccess}}
<a class="chat-command-appliquer-degats">
<img class="chat-command-img" data-tooltip="Appliquer les dégâts directement sans opposition"
src="systems/fvtt-te-deum/images/icons/appliquer-degats.webp">
</a>
{{/if}}
{{/if}}
</div>
</div>
</div> </div>

View File

@@ -1,112 +1,176 @@
<form class="skill-roll-dialog"> <form class="skill-roll-dialog">
<header class="roll-dialog-header"> <header class="roll-dialog-header">
{{#if img}} {{#if img}}
<img class="actor-icon" src="{{img}}" data-edit="img" title="{{name}}" /> <img class="actor-icon" src="{{img}}" data-edit="img" title="{{name}}" />
{{/if}} {{/if}}
<h1 class="dialog-roll-title roll-dialog-header">{{title}}</h1> <h1 class="dialog-roll-title roll-dialog-header">{{title}}</h1>
</header> </header>
<div class="flexcol"> <div class="flexcol">
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Caracteristique </span> <span class="roll-dialog-label">Caractéristique </span>
<span class="roll-dialog-label">{{carac.name}} : {{carac.qualite}} ({{carac.dice}})</span> <span class="roll-dialog-label">{{carac.name}}
:
{{carac.qualite}}
({{carac.dice}})</span>
</div> </div>
{{#if competence}} {{#if competence}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Compétence </span> <span class="roll-dialog-label">🎯 Compétence </span>
<span class="roll-dialog-label">{{competence.name}} ({{compScore}})</span> <span class="roll-dialog-label">{{competence.name}}
</div> ({{compScore}})</span>
</div>
{{/if}} {{/if}}
{{#if santeModifier}} {{#if santeModifier}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Malus Blessures </span> <span class="roll-dialog-label">💔 Malus Blessures </span>
<span class="roll-dialog-label">{{santeModifier}} niveaux</span> <span class="roll-dialog-label">{{santeModifier}} niveaux</span>
</div> </div>
{{/if}} {{/if}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Bonus/Malus : </span> <span class="roll-dialog-label"> Bonus/Malus : </span>
<select class="" type="text" id="roll-bonus-malus" value="{{bonusMalus}}" data-dtype="Number"> <select
{{selectOptions config.bonusMalus selected=bonusMalus labelAttr="label" valueAttr="value" nameAttr="value"}} class=""
type="text"
id="roll-bonus-malus"
value="{{bonusMalus}}"
data-dtype="Number"
>
{{selectOptions
config.bonusMalus
selected=bonusMalus
labelAttr="label"
valueAttr="value"
nameAttr="value"
}}
</select> </select>
</div> </div>
{{#if providence.value}} {{#if providence.value}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Utiliser la Providence ({{providence.dice}})</span> <span class="roll-dialog-label">Utiliser la Providence ({{providence.dice}})</span>
<input type="checkbox" id="roll-enable-providence" {{checked enableProvidence}} /> <input
</div> type="checkbox"
id="roll-enable-providence"
{{checked enableProvidence}}
/>
</div>
{{/if}} {{/if}}
{{#if arme}} {{#if arme}}
{{#if isTir}} {{#if isTir}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Portée : </span> <span class="roll-dialog-label">🏹 Portée : </span>
<select class="" type="text" id="roll-portee-tir" value="{{porteeTir}}" data-dtype="String"> <select
{{#select porteeTir}} class=""
{{#each config.ARME_PORTEES as |portee key|}} type="text"
<option value="{{key}}">{{portee.label}}</option> id="roll-portee-tir"
{{/each}} value="{{porteeTir}}"
{{/select}} data-dtype="String"
</select> >
</div> {{#select porteeTir}}
<div class="flexrow"> {{#each config.ARME_PORTEES as |portee key|}}
<span class="roll-dialog-label">Viser : </span> <option value="{{key}}">{{portee.label}}</option>
<input type="checkbox" id="roll-tir-viser" {{checked isViser}} /> {{/each}}
</div> {{/select}}
<div class="flexrow"> </select>
<span class="roll-dialog-label">Cible petite/en mouvement : </span> </div>
<input type="checkbox" id="roll-tir-mouvement" {{checked isMouvement}} /> <div class="flexrow">
</div> <span class="roll-dialog-label">👁️ Viser : </span>
<input type="checkbox" id="roll-tir-viser" {{checked isViser}} />
</div>
<div class="flexrow">
<span class="roll-dialog-label">🏃 Cible petite/en mouvement : </span>
<input
type="checkbox"
id="roll-tir-mouvement"
{{checked isMouvement}}
/>
</div>
{{else}}
<div class="flexrow">
<span class="roll-dialog-label">⚔️ Allonge
{{allongeLabel}}
: Indiquez l'allonge de votre adversaire ci-dessous.</span>
</div>
<div class="flexrow">
<span
class="roll-dialog-label"
data-tooltip="Modification d'allonge selon votre arme et celle de votre adversaire"
>🗡️ Allonge arme adversaire :
</span>
<select
class=""
type="text"
id="roll-allonge"
value="{{allongeId}}"
data-dtype="String"
>
{{#select allongeId}}
{{#each allonges as |allonge key|}}
<option value="{{key}}">{{allonge.label}}</option>
{{/each}}
{{/select}}
</select>
</div>
<div class="flexrow">
<span class="roll-dialog-label">🏃 Charge à pied ?</span>
<input
type="checkbox"
id="roll-charge-a-pied"
{{checked isChargeAPied}}
/>
</div>
<div class="flexrow">
<span class="roll-dialog-label">🐴 Charge à cheval ?</span>
<input
type="checkbox"
id="roll-charge-a-cheval"
{{checked isChargeACheval}}
/>
</div>
{{/if}}
<div class="flexrow">
<span class="roll-dialog-label">✋ Main gauche ?</span>
<input type="checkbox" id="roll-main-gauche" {{checked isMainGauche}} />
</div>
<div class="flexrow">
<span class="roll-dialog-label">🎯 Attaque ciblée (-1 Niveau): </span>
<select
class=""
type="text"
id="roll-attaque-ciblee"
value="{{attaqueCiblee}}"
data-dtype="String"
>
{{#select attaqueCiblee}}
{{#each config.ATTAQUE_CIBLEES as |attaque key|}}
<option value="{{key}}">{{attaque.label}}</option>
{{/each}}
{{/select}}
</select>
</div>
{{else}} {{else}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Allonge {{allongeLabel}} : Indiquez l'allonge de votre adversaire <span class="roll-dialog-label">📊 Difficulté : </span>
ci-dessous.</span> <select
</div> class=""
<div class="flexrow"> type="text"
<span class="roll-dialog-label" id="roll-difficulty"
data-tooltip="Modification d'allonge selon votre arme et celle de votre adversaire">Allonge arme adversaire : value="{{difficulty}}"
</span> data-dtype="String"
<select class="" type="text" id="roll-allonge" value="{{allongeId}}" data-dtype="String"> >
{{#select allongeId}} {{selectOptions
{{#each allonges as |allonge key|}} config.difficulte
<option value="{{key}}">{{allonge.label}}</option> selected=difficulty
{{/each}} valueAttr="key"
{{/select}} labelAttr="label"
</select> }}
</div> </select>
<div class="flexrow"> </div>
<span class="roll-dialog-label">Charge à pied ?</span>
<input type="checkbox" id="roll-charge-a-pied" {{checked isChargeAPied}} />
</div>
<div class="flexrow">
<span class="roll-dialog-label">Charge à cheval ?</span>
<input type="checkbox" id="roll-charge-a-cheval" {{checked isChargeACheval}} />
</div>
{{/if}}
<div class="flexrow">
<span class="roll-dialog-label">Main gauche ?</span>
<input type="checkbox" id="roll-main-gauche" {{checked isMainGauche}} />
</div>
<div class="flexrow">
<span class="roll-dialog-label">Attaque ciblée (-1 Niveau): </span>
<select class="" type="text" id="roll-attaque-ciblee" value="{{attaqueCiblee}}" data-dtype="String">
{{#select attaqueCiblee}}
{{#each config.ATTAQUE_CIBLEES as |attaque key|}}
<option value="{{key}}">{{attaque.label}}</option>
{{/each}}
{{/select}}
</select>
</div>
{{else}}
<div class="flexrow">
<span class="roll-dialog-label">Difficulté : </span>
<select class="" type="text" id="roll-difficulty" value="{{difficulty}}" data-dtype="String">
{{selectOptions config.difficulte selected=difficulty valueAttr="key" labelAttr="label"}}
</select>
</div>
{{/if}} {{/if}}
</div> </div>

View File

@@ -38,22 +38,22 @@
</select> </select>
</li> </li>
<h3>Spécificités</h3> <h3>⚔️ Spécificités</h3>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Dégâts</label> <label class="item-name-label-long">💥 Dégâts</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.degats" value="{{system.degats}}" data-dtype="String" /> name="system.degats" value="{{system.degats}}" data-dtype="String" />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Valeur d'echec critique (ie 1 par défaut)</label> <label class="item-name-label-long">⚠️ Valeur d'échec critique (ie 1 par défaut)</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.valeurEchecCritique" value="{{system.valeurEchecCritique}}" data-dtype="Numeric" /> name="system.valeurEchecCritique" value="{{system.valeurEchecCritique}}" data-dtype="Numeric" />
</li> </li>
{{#if (eq system.typeArme "melee")}} {{#if (eq system.typeArme "melee")}}
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Allonge</label> <label class="item-name-label-long">🗡️ Allonge</label>
<select name="system.allonge"> <select name="system.allonge">
{{selectOptions config.armeAllonges selected=system.allonge labelAttr="label"}} {{selectOptions config.armeAllonges selected=system.allonge labelAttr="label"}}
</select> </select>
@@ -62,12 +62,12 @@
{{#if (eq system.typeArme "tir")}} {{#if (eq system.typeArme "tir")}}
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Temps de recharge</label> <label class="item-name-label-long">⏱️ Temps de recharge</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.tempsRecharge" value="{{system.tempsRecharge}}" data-dtype="Number" /> name="system.tempsRecharge" value="{{system.tempsRecharge}}" data-dtype="Number" />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Compétence de recharge</label> <label class="item-name-label-long">🔄 Compétence de recharge</label>
<select name="system.competenceRecharge"> <select name="system.competenceRecharge">
{{selectOptions config.competencesRecharge selected=system.competenceRecharge labelAttr="label"}} {{selectOptions config.competencesRecharge selected=system.competenceRecharge labelAttr="label"}}
</select> </select>
@@ -90,7 +90,7 @@
{{/each}} {{/each}}
{{#if (eq system.typeArme "tir")}} {{#if (eq system.typeArme "tir")}}
<h3>Portées</h3> <h3>🎯 Portées</h3>
{{#each system.portees as |portee porteeId|}} {{#each system.portees as |portee porteeId|}}
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">{{getConfigLabel "ARME_PORTEES" porteeId}}</label> <label class="item-name-label-long">{{getConfigLabel "ARME_PORTEES" porteeId}}</label>
@@ -100,7 +100,7 @@
{{/each}} {{/each}}
{{/if}} {{/if}}
<h3>Degats sur armures</h3> <h3>🛡️ Degats sur armures</h3>
{{#each system.degatsArmure as |degat degtId|}} {{#each system.degatsArmure as |degat degtId|}}
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">{{getConfigLabel "degatsArmure" degtId}}</label> <label class="item-name-label-long">{{getConfigLabel "degatsArmure" degtId}}</label>
@@ -109,21 +109,21 @@
</li> </li>
{{/each}} {{/each}}
<h3>Autres</h3> <h3>📝 Autres</h3>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Equipé?</label> <label class="item-name-label-long">Equipé?</label>
<input type="checkbox" name="system.equipe" {{checked system.equipe}} /> <input type="checkbox" name="system.equipe" {{checked system.equipe}} />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Bonus d'Initiative</label> <label class="item-name-label-long">Bonus d'Initiative</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.initiativeBonus" value="{{system.initiativeBonus}}" data-dtype="Number" /> name="system.initiativeBonus" value="{{system.initiativeBonus}}" data-dtype="Number" />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Prix</label> <label class="item-name-label-long">💰 Prix</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.prix" value="{{system.prix}}" data-dtype="Number" /> name="system.prix" value="{{system.prix}}" data-dtype="Number" />
<select name="system.monnaie"> <select name="system.monnaie">

View File

@@ -33,13 +33,13 @@
{{/each}} {{/each}}
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Protection</label> <label class="item-name-label-long">🛡️ Protection</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.protection" value="{{system.protection}}" data-dtype="Number" /> name="system.protection" value="{{system.protection}}" data-dtype="Number" />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Cout en pièces d'Armure Lourde</label> <label class="item-name-label-long">⚖️ Cout en pièces d'Armure Lourde</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.coutArmureLourde" value="{{system.coutArmureLourde}}" data-dtype="Number" /> name="system.coutArmureLourde" value="{{system.coutArmureLourde}}" data-dtype="Number" />
</li> </li>
@@ -57,12 +57,12 @@
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Equipé?</label> <label class="item-name-label-long">Equipé?</label>
<input type="checkbox" name="system.equipe" {{checked system.equipe}} /> <input type="checkbox" name="system.equipe" {{checked system.equipe}} />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Prix</label> <label class="item-name-label-long">💰 Prix</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.prix" value="{{system.prix}}" data-dtype="Number" /> name="system.prix" value="{{system.prix}}" data-dtype="Number" />
<select name="system.monnaie"> <select name="system.monnaie">

View File

@@ -18,13 +18,13 @@
<ul> <ul>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Type de Blessure</label> <label class="item-name-label-long">🩸 Type de Blessure</label>
<select name="system.typeBlessure"> <select name="system.typeBlessure">
{{selectOptions config.blessures selected=system.typeBlessure valueAttr="key" nameAttr="key" labelAttr="label"}} {{selectOptions config.blessures selected=system.typeBlessure valueAttr="key" nameAttr="key" labelAttr="label"}}
</select> </select>
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Localisation</label> <label class="item-name-label-long">🎯 Localisation</label>
<select name="system.localisation"> <select name="system.localisation">
{{selectOptions config.LOCALISATION selected=system.localisation valueAttr="id" nameAttr="id" labelAttr="label"}} {{selectOptions config.LOCALISATION selected=system.localisation valueAttr="id" nameAttr="id" labelAttr="label"}}
</select> </select>

View File

@@ -19,19 +19,19 @@
<div class="tab" data-group="primary"> <div class="tab" data-group="primary">
<ul> <ul>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Caractéristique</label> <label class="item-name-label-long">Caractéristique</label>
<select name="system.caracteristique"> <select name="system.caracteristique">
{{selectOptions config.caracteristiques selected=system.caracteristique labelAttr="label" blank=""}} {{selectOptions config.caracteristiques selected=system.caracteristique labelAttr="label" blank=""}}
</select> </select>
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Compétence de base</label> <label class="item-name-label-long">🎯 Compétence de base</label>
<input type="checkbox" name="system.isBase" {{checked system.isBase}} /> <input type="checkbox" name="system.isBase" {{checked system.isBase}} />
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Score</label> <label class="item-name-label-long">📊 Score</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.score" value="{{system.score}}" data-dtype="Number" {{#if system.isBase}}disabled{{/if}}/> name="system.score" value="{{system.score}}" data-dtype="Number" {{#if system.isBase}}disabled{{/if}}/>
</li> </li>

View File

@@ -21,7 +21,7 @@
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Prix</label> <label class="item-name-label-long">💰 Prix</label>
<input type="text" class="padd-right numeric-input item-field-label-short" <input type="text" class="padd-right numeric-input item-field-label-short"
name="system.prix" value="{{system.prix}}" data-dtype="Number" /> name="system.prix" value="{{system.prix}}" data-dtype="Number" />
<select name="system.monnaie"> <select name="system.monnaie">

View File

@@ -25,25 +25,25 @@
<div class="tab details" data-group="primary" data-tab="details"> <div class="tab details" data-group="primary" data-tab="details">
<h4 class="item-name-label-long">Vertus médicinales</h4> <h4 class="item-name-label-long">🌿 Vertus médicinales</h4>
<textarea name="system.vertus" rows="6" data-dtype="String"> <textarea name="system.vertus" rows="6" data-dtype="String">
{{{system.vertus}}} {{{system.vertus}}}
</textarea> </textarea>
<h4 class="item-name-label-long">Toxicité</h4> <h4 class="item-name-label-long">☠️ Toxicité</h4>
<textarea name="system.toxicite" rows="6" data-dtype="String"> <textarea name="system.toxicite" rows="6" data-dtype="String">
{{{system.toxicite}}} {{{system.toxicite}}}
</textarea> </textarea>
<ul> <ul>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Difficulté au test d'Endurance</label> <label class="item-name-label-long">💪 Difficulté au test d'Endurance</label>
<select class="" type="text" name="system.difficulteEndurance" data-dtype="String"> <select class="" type="text" name="system.difficulteEndurance" data-dtype="String">
{{selectOptions config.difficulte selected=system.difficulteEndurance abelAttr="label"}} {{selectOptions config.difficulte selected=system.difficulteEndurance abelAttr="label"}}
</select> </select>
</li> </li>
<li class="flexrow"> <li class="flexrow">
<label class="item-name-label-long">Virulence</label> <label class="item-name-label-long">🔥 Virulence</label>
<select name="system.virulence"> <select name="system.virulence">
{{selectOptions config.virulencePoison selected=system.virulence labelAttr="label"}} {{selectOptions config.virulencePoison selected=system.virulence labelAttr="label"}}
</select> </select>