12 Commits

Author SHA1 Message Date
a2b712b78d Diverses corrections + ajouts armes en compendiums
All checks were successful
Release Creation / build (release) Successful in 1m53s
2026-02-26 13:30:53 +01:00
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
8c247a8981 Echec automatique sur 1
All checks were successful
Release Creation / build (release) Successful in 49s
2025-11-21 21:36:27 +01:00
a09e1a1d95 Les compétences de base ne peuvent être supprimées
All checks were successful
Release Creation / build (release) Successful in 47s
2025-11-02 18:30:20 +01:00
787f88873a Les compétences de base ne peuvent être supprimées 2025-11-02 18:29:46 +01:00
ac481e0dd9 Various minot fixes
All checks were successful
Release Creation / build (release) Successful in 1m18s
2025-10-30 20:24:24 +00:00
375622d900 Add welcome message 2025-10-17 15:31:32 +02:00
3bc055cc1f Add welcome message 2025-10-17 15:28:15 +02:00
c97b7a4889 Correction sur blessures et actions restantes
All checks were successful
Release Creation / build (release) Successful in 53s
2025-10-16 22:59:32 +02:00
87 changed files with 3889 additions and 2524 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 less = require('gulp-less');
var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer');
var cssnext = require('postcss-preset-env');
var precss = require('precss');
gulp.task('css', function () {
var processors = [
autoprefixer,
cssnext,
precss
];
return gulp.src('./postcss/*.css')
.pipe(postcss(processors))
return gulp.src('./less/*.less')
.pipe(less())
.pipe(postcss([autoprefixer]))
.pipe(gulp.dest('./styles'));
});
gulp.task('watch', function () {
gulp.watch('./less/*.less', gulp.series('css'));
});
function watchUpdates() {
gulp.watch('./postcss/*.css', css);
}
gulp.task('default', gulp.series('css'));

2070
less/tedeum.less Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -713,7 +713,7 @@ export class TeDeumActor extends Actor {
async rollDegatsArme(armeId) {
let weapon = this.items.get(armeId)
if (weapon) {
let bDegats = 0
let bDegats = { value: 0 }
if (weapon.system.typeArme == "melee") {
bDegats = this.getBonusDegats()
}
@@ -728,7 +728,7 @@ export class TeDeumActor extends Actor {
rollData.degats = degatsRoll.total
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)
console.log("Rolldata result", rollData)

View File

@@ -10,6 +10,7 @@ export class TeDeumCombat extends Combat {
for (let cId of ids) {
const c = this.combatants.get(cId);
let initBonus = c.actor ? c.actor.getInitiativeScore(this.id, cId) : -1;
console.log("Init Bonus : ", c.name, initBonus)
await this.updateEmbeddedDocuments("Combatant", [{ _id: cId, initiative: initBonus }]);
}
@@ -31,8 +32,12 @@ export class TeDeumCombat extends Combat {
}
if (ca.nbActionsMainGauche < 0) ca.nbActionsMainGauche = 0
if (ca.nbActions < 0) ca.nbActions = 0
await combatant.setFlag("world", "available-actions", ca)
await combatant.update({ name: `${combatant.token.name} (${ca.nbActions} / ${ca.nbActionsMainGauche})` })
console.log("Modify Action : ", combatant.name, ca)
if (game.user.isGM) {
await TeDeumUtility.updateCombatantActions(combatant, ca)
} else {
game.socket.emit("system.fvtt-te-deum", { msg: "msg_modify_combat_action", data: { combatantId: combatantId, ca: ca } })
}
}
/* -------------------------------------------- */

View File

@@ -1,6 +1,8 @@
/* -------------------------------------------- */
/* -------------------------------------------- */
const ECRYME_WELCOME_MESSAGE_URL = "https://www.uberwald.me/gitea/public/fvtt-te-deum/raw/branch/main/welcome-message-tedeum.html"
export class TeDeumUtility {
/* -------------------------------------------- */
@@ -15,7 +17,10 @@ export class TeDeumUtility {
}
static installHooks() {
Hooks.on('renderChatLog', (log, html, data) => TeDeumUtility.chatListeners(html));
Hooks.on('renderChatMessageHTML', (message, html) => {
TeDeumUtility.chatListeners(html);
TeDeumUtility.onRenderChatMessage(message, html);
});
Hooks.on("renderActorDirectory", (app, html, data) => {
if (game.user.can('ACTOR_CREATE')) {
@@ -59,14 +64,16 @@ export class TeDeumUtility {
/* -------------------------------------------- */
static async resetCombatActions(combat) {
for (let c of combat.combatants) {
let actor = game.actors.get(c.actorId)
if (actor) {
let nbActions = actor.getNbActions()?.value || 0
let isMainGauche = (actor.getCompetenceScore("Main gauche") > 0)
let nbActionsMainGauche = isMainGauche ? nbActions : 0
await c.setFlag("world", "available-actions", { nbActions, nbActionsMainGauche })
await c.update({ name: `${c.token.name} (${nbActions} / ${nbActionsMainGauche})` })
if (game.user.isGM) {
for (let c of combat.combatants) {
let actor = game.actors.get(c.actorId)
if (actor) {
let nbActions = actor.getNbActions()?.value || 0
let isMainGauche = (actor.getCompetenceScore("Main gauche") > 0)
let nbActionsMainGauche = isMainGauche ? nbActions : 0
await c.setFlag("world", "available-actions", { nbActions, nbActionsMainGauche })
await c.update({ name: `${c.token.name} (${nbActions} / ${nbActionsMainGauche})` })
}
}
}
}
@@ -167,14 +174,24 @@ export class TeDeumUtility {
/* -------------------------------------------- */
static welcomeMessage() {
if (game.user.isGM) {
ChatMessage.create({
user: game.user.id,
whisper: [game.user.id],
content: `<div id="chat-welcome welcome-message-tedeum"><span class="rdd-roll-part">
<strong>Bienvenu dans Te Deum Pour Un Massacre !</strong>
<div class="chat-welcome">Ce système vous est proposé par Open Sesame Games.<br>
Vous trouverez de l'aide dans @UUID[Compendium.fvtt-te-deum.aides.JournalEntry.uNwJgi4kXBCiZmAH]{Aide pour Te Deum}<br>
ainsi que sur le Discord de Foundry FR : https://discord.gg/pPSDNJk</div>` });
// Try to fetch the welcome message from the github repo "welcome-message-ecryme.html"
fetch(ECRYME_WELCOME_MESSAGE_URL)
.then(response => response.text())
.then(html => {
ChatMessage.create({
user: game.user.id,
whisper: [game.user.id],
content: html
});
})
.catch(error => {
console.error("Error fetching welcome message:", error);
ChatMessage.create({
user: game.user.id,
whisper: [game.user.id],
content: "<b>Bienvenue dans Ecryme RPG !</b><br>Visitez le site officiel pour plus d'informations."
});
});
}
}
@@ -294,13 +311,26 @@ export class TeDeumUtility {
}
}
/* -------------------------------------------- */ /* -------------------------------------------- */
/* -------------------------------------------- */
static getTokenActorFromId(tokenId) {
for (let scene of game.scenes) {
const tokenDoc = scene.tokens.get(tokenId)
if (tokenDoc) return tokenDoc.actor
}
return null
}
/* -------------------------------------------- */
static async appliquerDegats(rollData) {
await this.processAttaqueMelee(rollData)
let defenderToken = canvas.tokens.placeables.find(t => t.id == rollData.defenderTokenId)
if (defenderToken) {
let actor = defenderToken.actor
await actor.appliquerDegats(rollData)
let defenderActor = this.getTokenActorFromId(rollData.defenderTokenId)
if (defenderActor) {
if (game.user.isGM || defenderActor.isOwner) {
await defenderActor.appliquerDegats(rollData)
} else {
// Send a socket message — seul le premier MJ actif le traitera
game.socket.emit("system.fvtt-te-deum", { name: "msg_apply_damage", data: { rollData } });
}
// Attaque naturelle avec dégats inférieur à -2
if ((rollData?.arme?.system.specificites?.poing?.hasSpec || rollData?.arme?.system.specificites?.pied?.hasSpec) && rollData.degats < -2) {
let attacker = this.getActorFromRollData(rollData)
@@ -331,19 +361,27 @@ export class TeDeumUtility {
TeDeumUtility.appliquerDegats(rollData, messageId)
}
})
$(html).on("click", '.chat-command-gain-xp', event => {
$(html).on("click", '.chat-command-gain-xp', async event => {
let messageId = TeDeumUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId)
let rollData = message.getFlag("world", "te-deum-rolldata")
if (rollData) {
let actor = TeDeumUtility.getActorFromRollData(rollData)
actor.modifyXP(rollData.carac.key, 1)
// Hide this button
event.currentTarget.style.display = 'none';
event.currentTarget.style.display = 'none'; // feedback immédiat local
await message.setFlag("world", "te-deum-xp-used", true) // sync tous les clients
}
})
}
/* -------------------------------------------- */
static onRenderChatMessage(message, html) {
if (message.getFlag("world", "te-deum-xp-used")) {
const btn = html.querySelector('.chat-command-gain-xp');
if (btn) btn.style.display = 'none';
}
}
/* -------------------------------------------- */
static async preloadHandlebarsTemplates() {
@@ -436,6 +474,28 @@ export class TeDeumUtility {
chatMsg.setFlag("world", "tedeum-rolldata", rollData)
}
}
if (msg.name == "msg_modify_combat_action") {
if (game.user.isGM) {
let { combatantId, ca } = msg.data
let combatant = game.combat.combatants.get(combatantId)
if (combatant) {
console.log("sock - Modify Combat Action : ", combatant.name, ca)
await TeDeumUtility.updateCombatantActions(combatant, ca)
}
}
}
if (msg.name == "msg_apply_damage") {
const firstGM = game.users.find(u => u.isGM && u.active)
if (game.user === firstGM) {
let rollData = msg.data.rollData
let defenderActor = TeDeumUtility.getTokenActorFromId(rollData.defenderTokenId)
if (defenderActor) {
await defenderActor.appliquerDegats(rollData)
} else {
ui.notifications.error("Impossible de trouver la cible de l'attaque, aucun degats appliqué")
}
}
}
}
/* -------------------------------------------- */
@@ -521,9 +581,11 @@ export class TeDeumUtility {
}
if (rollData.diceSum == 1) {
let critiqueRoll = await new Roll(rollData.carac.negativeDice)
rollData.isSuccess = false
await critiqueRoll.evaluate()
await this.showDiceSoNice(critiqueRoll, game.settings.get("core", "rollMode"))
rollData.critiqueRoll = foundry.utils.duplicate(critiqueRoll)
rollData.critiqueTotal = critiqueRoll.total
if (critiqueRoll.total > rollData.competence.system.score) {
rollData.isEchecCritique = true
}
@@ -618,6 +680,12 @@ export class TeDeumUtility {
}
}
/* -------------------------------------------- */
static async updateCombatantActions(combatant, ca) {
await combatant.setFlag("world", "available-actions", ca)
await combatant.update({ name: `${combatant.token.name} (${ca.nbActions} / ${ca.nbActionsMainGauche})` })
}
/* -------------------------------------------- */
static async manageCombatActions(actor, rollData) {
let combat = game.combats.active
@@ -639,8 +707,13 @@ export class TeDeumUtility {
} else {
ui.notifications.error(`${actor.name} n'a plus d'actions disponibles pour ce round`)
}
await combatant.setFlag("world", "available-actions", ca)
await combatant.update({ name: `${combatant.token.name} (${ca.nbActions} / ${ca.nbActionsMainGauche})` })
console.log("Manage combat actions 1", actor.name, combatant)
if (game.user.isGM) {
await this.updateCombatantActions(combatant, ca)
} else {
// Send a socket message
game.socket.emit("system.fvtt-te-deum", { name: "msg_modify_combat_action", data: { combatantId: combatant.id, ca } });
}
rollData.hasActions = true
rollData.remainingActions = ca.nbActions
rollData.remainingActionsMainGauche = ca.nbActionsMainGauche

View File

@@ -6,7 +6,7 @@ export class TeDeumRollDialog extends Dialog {
static async create(actor, rollData) {
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);
}
@@ -43,7 +43,7 @@ export class TeDeumRollDialog extends Dialog {
/* -------------------------------------------- */
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.render(true)
}

View File

@@ -91,7 +91,7 @@ export class TeDeumItemSheet extends foundry.appv1.sheets.ItemSheet {
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);
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

@@ -1 +1 @@
MANIFEST-000165
MANIFEST-000226

View File

@@ -1,7 +1,3 @@
2025/09/24-16:42:14.734893 7f7cfb7fe6c0 Recovering log #163
2025/09/24-16:42:14.744867 7f7cfb7fe6c0 Delete type=3 #161
2025/09/24-16:42:14.744926 7f7cfb7fe6c0 Delete type=0 #163
2025/09/24-16:43:46.397731 7f7cf9fff6c0 Level-0 table #168: started
2025/09/24-16:43:46.397776 7f7cf9fff6c0 Level-0 table #168: 0 bytes OK
2025/09/24-16:43:46.462453 7f7cf9fff6c0 Delete type=0 #166
2025/09/24-16:43:46.462659 7f7cf9fff6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)
2026/02/25-16:17:49.096861 7f821f7fe6c0 Recovering log #224
2026/02/25-16:17:49.106471 7f821f7fe6c0 Delete type=3 #222
2026/02/25-16:17:49.106539 7f821f7fe6c0 Delete type=0 #224

View File

@@ -1,7 +1,7 @@
2025/09/24-16:34:06.472911 7f7cfbfff6c0 Recovering log #159
2025/09/24-16:34:06.482703 7f7cfbfff6c0 Delete type=3 #157
2025/09/24-16:34:06.482774 7f7cfbfff6c0 Delete type=0 #159
2025/09/24-16:41:30.176475 7f7cf9fff6c0 Level-0 table #164: started
2025/09/24-16:41:30.176525 7f7cf9fff6c0 Level-0 table #164: 0 bytes OK
2025/09/24-16:41:30.183000 7f7cf9fff6c0 Delete type=0 #162
2025/09/24-16:41:30.195641 7f7cf9fff6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)
2026/02/25-15:53:40.937630 7f821ffff6c0 Recovering log #220
2026/02/25-15:53:40.949873 7f821ffff6c0 Delete type=3 #218
2026/02/25-15:53:40.949933 7f821ffff6c0 Delete type=0 #220
2026/02/25-16:16:19.716603 7f821d8d46c0 Level-0 table #225: started
2026/02/25-16:16:19.716652 7f821d8d46c0 Level-0 table #225: 0 bytes OK
2026/02/25-16:16:19.765894 7f821d8d46c0 Delete type=0 #223
2026/02/25-16:16:19.766155 7f821d8d46c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/aides/MANIFEST-000226 Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000268
MANIFEST-000329

View File

@@ -1,7 +1,3 @@
2025/09/24-16:42:14.642386 7f7d00dfa6c0 Recovering log #266
2025/09/24-16:42:14.651936 7f7d00dfa6c0 Delete type=3 #264
2025/09/24-16:42:14.652001 7f7d00dfa6c0 Delete type=0 #266
2025/09/24-16:43:45.840704 7f7cf9fff6c0 Level-0 table #271: started
2025/09/24-16:43:45.840737 7f7cf9fff6c0 Level-0 table #271: 0 bytes OK
2025/09/24-16:43:45.898655 7f7cf9fff6c0 Delete type=0 #269
2025/09/24-16:43:45.963394 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end)
2026/02/25-16:17:49.007591 7f821f7fe6c0 Recovering log #327
2026/02/25-16:17:49.018485 7f821f7fe6c0 Delete type=3 #325
2026/02/25-16:17:49.018548 7f821f7fe6c0 Delete type=0 #327

View File

@@ -1,7 +1,7 @@
2025/09/24-16:34:06.383778 7f7cfb7fe6c0 Recovering log #262
2025/09/24-16:34:06.393755 7f7cfb7fe6c0 Delete type=3 #260
2025/09/24-16:34:06.393833 7f7cfb7fe6c0 Delete type=0 #262
2025/09/24-16:41:30.118332 7f7cf9fff6c0 Level-0 table #267: started
2025/09/24-16:41:30.118371 7f7cf9fff6c0 Level-0 table #267: 0 bytes OK
2025/09/24-16:41:30.124477 7f7cf9fff6c0 Delete type=0 #265
2025/09/24-16:41:30.124651 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end)
2026/02/25-15:53:40.848906 7f821effd6c0 Recovering log #323
2026/02/25-15:53:40.858667 7f821effd6c0 Delete type=3 #321
2026/02/25-15:53:40.858720 7f821effd6c0 Delete type=0 #323
2026/02/25-16:16:19.467652 7f821d8d46c0 Level-0 table #328: started
2026/02/25-16:16:19.467677 7f821d8d46c0 Level-0 table #328: 0 bytes OK
2026/02/25-16:16:19.528659 7f821d8d46c0 Delete type=0 #326
2026/02/25-16:16:19.528885 7f821d8d46c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/armes/MANIFEST-000329 Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000267
MANIFEST-000329

View File

@@ -1,7 +1,3 @@
2025/09/24-16:42:14.655535 7f7cfbfff6c0 Recovering log #265
2025/09/24-16:42:14.666517 7f7cfbfff6c0 Delete type=3 #263
2025/09/24-16:42:14.666585 7f7cfbfff6c0 Delete type=0 #265
2025/09/24-16:43:45.762646 7f7cf9fff6c0 Level-0 table #270: started
2025/09/24-16:43:45.762671 7f7cf9fff6c0 Level-0 table #270: 0 bytes OK
2025/09/24-16:43:45.840542 7f7cf9fff6c0 Delete type=0 #268
2025/09/24-16:43:45.963381 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end)
2026/02/25-16:17:49.020792 7f821effd6c0 Recovering log #327
2026/02/25-16:17:49.030955 7f821effd6c0 Delete type=3 #325
2026/02/25-16:17:49.031024 7f821effd6c0 Delete type=0 #327

View File

@@ -1,7 +1,7 @@
2025/09/24-16:34:06.395848 7f7d00dfa6c0 Recovering log #261
2025/09/24-16:34:06.405550 7f7d00dfa6c0 Delete type=3 #259
2025/09/24-16:34:06.405604 7f7d00dfa6c0 Delete type=0 #261
2025/09/24-16:41:30.111558 7f7cf9fff6c0 Level-0 table #266: started
2025/09/24-16:41:30.111589 7f7cf9fff6c0 Level-0 table #266: 0 bytes OK
2025/09/24-16:41:30.118178 7f7cf9fff6c0 Delete type=0 #264
2025/09/24-16:41:30.124642 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end)
2026/02/25-15:53:40.860848 7f821f7fe6c0 Recovering log #323
2026/02/25-15:53:40.871268 7f821f7fe6c0 Delete type=3 #321
2026/02/25-15:53:40.871372 7f821f7fe6c0 Delete type=0 #323
2026/02/25-16:16:19.298465 7f821d8d46c0 Level-0 table #328: started
2026/02/25-16:16:19.298546 7f821d8d46c0 Level-0 table #328: 0 bytes OK
2026/02/25-16:16:19.356349 7f821d8d46c0 Delete type=0 #326
2026/02/25-16:16:19.528831 7f821d8d46c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000266
MANIFEST-000327

View File

@@ -1,7 +1,3 @@
2025/09/24-16:42:14.629192 7f7cfaffd6c0 Recovering log #264
2025/09/24-16:42:14.638946 7f7cfaffd6c0 Delete type=3 #262
2025/09/24-16:42:14.639014 7f7cfaffd6c0 Delete type=0 #264
2025/09/24-16:43:45.706058 7f7cf9fff6c0 Level-0 table #269: started
2025/09/24-16:43:45.706134 7f7cf9fff6c0 Level-0 table #269: 0 bytes OK
2025/09/24-16:43:45.762523 7f7cf9fff6c0 Delete type=0 #267
2025/09/24-16:43:45.963365 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end)
2026/02/25-16:17:48.995540 7f821e7fc6c0 Recovering log #325
2026/02/25-16:17:49.005262 7f821e7fc6c0 Delete type=3 #323
2026/02/25-16:17:49.005349 7f821e7fc6c0 Delete type=0 #325

View File

@@ -1,7 +1,7 @@
2025/09/24-16:34:06.370805 7f7cfaffd6c0 Recovering log #260
2025/09/24-16:34:06.381415 7f7cfaffd6c0 Delete type=3 #258
2025/09/24-16:34:06.381482 7f7cfaffd6c0 Delete type=0 #260
2025/09/24-16:41:30.104756 7f7cf9fff6c0 Level-0 table #265: started
2025/09/24-16:41:30.104801 7f7cf9fff6c0 Level-0 table #265: 0 bytes OK
2025/09/24-16:41:30.111363 7f7cf9fff6c0 Delete type=0 #263
2025/09/24-16:41:30.124633 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end)
2026/02/25-15:53:40.836015 7f821ffff6c0 Recovering log #321
2026/02/25-15:53:40.846129 7f821ffff6c0 Delete type=3 #319
2026/02/25-15:53:40.846180 7f821ffff6c0 Delete type=0 #321
2026/02/25-16:16:19.415073 7f821d8d46c0 Level-0 table #326: started
2026/02/25-16:16:19.415106 7f821d8d46c0 Level-0 table #326: 0 bytes OK
2026/02/25-16:16:19.467523 7f821d8d46c0 Delete type=0 #324
2026/02/25-16:16:19.528868 7f821d8d46c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000277
MANIFEST-000339

View File

@@ -1,7 +1,3 @@
2025/09/24-16:42:14.669125 7f7cfb7fe6c0 Recovering log #275
2025/09/24-16:42:14.678629 7f7cfb7fe6c0 Delete type=3 #273
2025/09/24-16:42:14.678694 7f7cfb7fe6c0 Delete type=0 #275
2025/09/24-16:43:45.898794 7f7cf9fff6c0 Level-0 table #280: started
2025/09/24-16:43:45.898823 7f7cf9fff6c0 Level-0 table #280: 0 bytes OK
2025/09/24-16:43:45.963207 7f7cf9fff6c0 Delete type=0 #278
2025/09/24-16:43:45.963407 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end)
2026/02/25-16:17:49.032966 7f821ffff6c0 Recovering log #337
2026/02/25-16:17:49.043199 7f821ffff6c0 Delete type=3 #335
2026/02/25-16:17:49.043264 7f821ffff6c0 Delete type=0 #337

View File

@@ -1,7 +1,7 @@
2025/09/24-16:34:06.407386 7f7cfaffd6c0 Recovering log #271
2025/09/24-16:34:06.418079 7f7cfaffd6c0 Delete type=3 #269
2025/09/24-16:34:06.418139 7f7cfaffd6c0 Delete type=0 #271
2025/09/24-16:41:30.124766 7f7cf9fff6c0 Level-0 table #276: started
2025/09/24-16:41:30.124809 7f7cf9fff6c0 Level-0 table #276: 0 bytes OK
2025/09/24-16:41:30.131329 7f7cf9fff6c0 Delete type=0 #274
2025/09/24-16:41:30.151558 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end)
2026/02/25-15:53:40.874436 7f821ffff6c0 Recovering log #333
2026/02/25-15:53:40.884848 7f821ffff6c0 Delete type=3 #331
2026/02/25-15:53:40.884904 7f821ffff6c0 Delete type=0 #333
2026/02/25-16:16:19.356498 7f821d8d46c0 Level-0 table #338: started
2026/02/25-16:16:19.356535 7f821d8d46c0 Level-0 table #338: 0 bytes OK
2026/02/25-16:16:19.414898 7f821d8d46c0 Delete type=0 #336
2026/02/25-16:16:19.528852 7f821d8d46c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000267
MANIFEST-000328

View File

@@ -1,7 +1,3 @@
2025/09/24-16:42:14.682432 7f7cfaffd6c0 Recovering log #265
2025/09/24-16:42:14.692809 7f7cfaffd6c0 Delete type=3 #263
2025/09/24-16:42:14.692870 7f7cfaffd6c0 Delete type=0 #265
2025/09/24-16:43:46.011645 7f7cf9fff6c0 Level-0 table #270: started
2025/09/24-16:43:46.011682 7f7cf9fff6c0 Level-0 table #270: 0 bytes OK
2025/09/24-16:43:46.083954 7f7cf9fff6c0 Delete type=0 #268
2025/09/24-16:43:46.208935 7f7cf9fff6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end)
2026/02/25-16:17:49.045639 7f821e7fc6c0 Recovering log #326
2026/02/25-16:17:49.056537 7f821e7fc6c0 Delete type=3 #324
2026/02/25-16:17:49.056606 7f821e7fc6c0 Delete type=0 #326

View File

@@ -1,7 +1,7 @@
2025/09/24-16:34:06.421631 7f7d00dfa6c0 Recovering log #261
2025/09/24-16:34:06.432018 7f7d00dfa6c0 Delete type=3 #259
2025/09/24-16:34:06.432112 7f7d00dfa6c0 Delete type=0 #261
2025/09/24-16:41:30.098303 7f7cf9fff6c0 Level-0 table #266: started
2025/09/24-16:41:30.098366 7f7cf9fff6c0 Level-0 table #266: 0 bytes OK
2025/09/24-16:41:30.104526 7f7cf9fff6c0 Delete type=0 #264
2025/09/24-16:41:30.124617 7f7cf9fff6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end)
2026/02/25-15:53:40.888183 7f821effd6c0 Recovering log #322
2026/02/25-15:53:40.897808 7f821effd6c0 Delete type=3 #320
2026/02/25-15:53:40.897873 7f821effd6c0 Delete type=0 #322
2026/02/25-16:16:19.645632 7f821d8d46c0 Level-0 table #327: started
2026/02/25-16:16:19.645665 7f821d8d46c0 Level-0 table #327: 0 bytes OK
2026/02/25-16:16:19.716424 7f821d8d46c0 Delete type=0 #325
2026/02/25-16:16:19.766141 7f821d8d46c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000267
MANIFEST-000328

View File

@@ -1,7 +1,3 @@
2025/09/24-16:42:14.695212 7f7cfbfff6c0 Recovering log #265
2025/09/24-16:42:14.705156 7f7cfbfff6c0 Delete type=3 #263
2025/09/24-16:42:14.705234 7f7cfbfff6c0 Delete type=0 #265
2025/09/24-16:43:46.084105 7f7cf9fff6c0 Level-0 table #270: started
2025/09/24-16:43:46.084138 7f7cf9fff6c0 Level-0 table #270: 0 bytes OK
2025/09/24-16:43:46.141584 7f7cf9fff6c0 Delete type=0 #268
2025/09/24-16:43:46.208949 7f7cf9fff6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end)
2026/02/25-16:17:49.058989 7f821effd6c0 Recovering log #326
2026/02/25-16:17:49.068511 7f821effd6c0 Delete type=3 #324
2026/02/25-16:17:49.068568 7f821effd6c0 Delete type=0 #326

View File

@@ -1,7 +1,7 @@
2025/09/24-16:34:06.434181 7f7cfb7fe6c0 Recovering log #261
2025/09/24-16:34:06.444000 7f7cfb7fe6c0 Delete type=3 #259
2025/09/24-16:34:06.444067 7f7cfb7fe6c0 Delete type=0 #261
2025/09/24-16:41:30.144559 7f7cf9fff6c0 Level-0 table #266: started
2025/09/24-16:41:30.144589 7f7cf9fff6c0 Level-0 table #266: 0 bytes OK
2025/09/24-16:41:30.151446 7f7cf9fff6c0 Delete type=0 #264
2025/09/24-16:41:30.151596 7f7cf9fff6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end)
2026/02/25-15:53:40.899737 7f821f7fe6c0 Recovering log #322
2026/02/25-15:53:40.910545 7f821f7fe6c0 Delete type=3 #320
2026/02/25-15:53:40.910590 7f821f7fe6c0 Delete type=0 #322
2026/02/25-16:16:19.529006 7f821d8d46c0 Level-0 table #327: started
2026/02/25-16:16:19.529044 7f821d8d46c0 Level-0 table #327: 0 bytes OK
2026/02/25-16:16:19.584573 7f821d8d46c0 Delete type=0 #325
2026/02/25-16:16:19.766110 7f821d8d46c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000204
MANIFEST-000265

View File

@@ -1,7 +1,3 @@
2025/09/24-16:42:14.720636 7f7cfaffd6c0 Recovering log #202
2025/09/24-16:42:14.731231 7f7cfaffd6c0 Delete type=3 #200
2025/09/24-16:42:14.731304 7f7cfaffd6c0 Delete type=0 #202
2025/09/24-16:43:46.141700 7f7cf9fff6c0 Level-0 table #207: started
2025/09/24-16:43:46.141727 7f7cf9fff6c0 Level-0 table #207: 0 bytes OK
2025/09/24-16:43:46.208754 7f7cf9fff6c0 Delete type=0 #205
2025/09/24-16:43:46.208965 7f7cf9fff6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end)
2026/02/25-16:17:49.082827 7f821e7fc6c0 Recovering log #263
2026/02/25-16:17:49.093869 7f821e7fc6c0 Delete type=3 #261
2026/02/25-16:17:49.093933 7f821e7fc6c0 Delete type=0 #263

View File

@@ -1,7 +1,7 @@
2025/09/24-16:34:06.459217 7f7d00dfa6c0 Recovering log #198
2025/09/24-16:34:06.469315 7f7d00dfa6c0 Delete type=3 #196
2025/09/24-16:34:06.469408 7f7d00dfa6c0 Delete type=0 #198
2025/09/24-16:41:30.137845 7f7cf9fff6c0 Level-0 table #203: started
2025/09/24-16:41:30.137895 7f7cf9fff6c0 Level-0 table #203: 0 bytes OK
2025/09/24-16:41:30.144438 7f7cf9fff6c0 Delete type=0 #201
2025/09/24-16:41:30.151581 7f7cf9fff6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end)
2026/02/25-15:53:40.925187 7f821effd6c0 Recovering log #259
2026/02/25-15:53:40.934520 7f821effd6c0 Delete type=3 #257
2026/02/25-15:53:40.934568 7f821effd6c0 Delete type=0 #259
2026/02/25-16:16:19.945947 7f821d8d46c0 Level-0 table #264: started
2026/02/25-16:16:19.946001 7f821d8d46c0 Level-0 table #264: 0 bytes OK
2026/02/25-16:16:20.001848 7f821d8d46c0 Delete type=0 #262
2026/02/25-16:16:20.001994 7f821d8d46c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000268
MANIFEST-000329

View File

@@ -1,7 +1,3 @@
2025/09/24-16:42:14.708014 7f7d00dfa6c0 Recovering log #266
2025/09/24-16:42:14.717668 7f7d00dfa6c0 Delete type=3 #264
2025/09/24-16:42:14.717743 7f7d00dfa6c0 Delete type=0 #266
2025/09/24-16:43:45.963524 7f7cf9fff6c0 Level-0 table #271: started
2025/09/24-16:43:45.963550 7f7cf9fff6c0 Level-0 table #271: 0 bytes OK
2025/09/24-16:43:46.011489 7f7cf9fff6c0 Delete type=0 #269
2025/09/24-16:43:46.208919 7f7cf9fff6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end)
2026/02/25-16:17:49.070393 7f821ffff6c0 Recovering log #327
2026/02/25-16:17:49.080654 7f821ffff6c0 Delete type=3 #325
2026/02/25-16:17:49.080720 7f821ffff6c0 Delete type=0 #327

View File

@@ -1,7 +1,7 @@
2025/09/24-16:34:06.445870 7f7cfaffd6c0 Recovering log #262
2025/09/24-16:34:06.456672 7f7cfaffd6c0 Delete type=3 #260
2025/09/24-16:34:06.456727 7f7cfaffd6c0 Delete type=0 #262
2025/09/24-16:41:30.131456 7f7cf9fff6c0 Level-0 table #267: started
2025/09/24-16:41:30.131488 7f7cf9fff6c0 Level-0 table #267: 0 bytes OK
2025/09/24-16:41:30.137659 7f7cf9fff6c0 Delete type=0 #265
2025/09/24-16:41:30.151571 7f7cf9fff6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end)
2026/02/25-15:53:40.912618 7f821e7fc6c0 Recovering log #323
2026/02/25-15:53:40.922737 7f821e7fc6c0 Delete type=3 #321
2026/02/25-15:53:40.922804 7f821e7fc6c0 Delete type=0 #323
2026/02/25-16:16:19.584692 7f821d8d46c0 Level-0 table #328: started
2026/02/25-16:16:19.584724 7f821d8d46c0 Level-0 table #328: 0 bytes OK
2026/02/25-16:16:19.645484 7f821d8d46c0 Delete type=0 #326
2026/02/25-16:16:19.766128 7f821d8d46c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -148,8 +148,8 @@
],
"title": "Te Deum pour Un Massacre, le Jeu de Rôles (Officiel)",
"url": "https://www.uberwald.me/gitea/public/fvtt-te-deum",
"version": "13.0.1",
"download": "https://www.uberwald.me/gitea/public/fvtt-te-deum/releases/download/13.0.1/fvtt-te-deum-13.0.1.zip",
"version": "13.0.2",
"download": "https://www.uberwald.me/gitea/public/fvtt-te-deum/releases/download/13.0.1/fvtt-te-deum-13.0.2.zip",
"background": "systems/fvtt-te-deum/images/ui/tdeum_welcome_page_01.webp",
"flags": {
"hotReload": {

View File

@@ -238,7 +238,11 @@
</label>
<span>&nbsp;</span>
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a>
{{#if comp.system.isBase}}
<span class="item-control"><i class="fa-solid fa-trash-slash"></i></span>
{{else}}
<a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
{{/if}}
</li>
{{/each}}
</ul>

View File

@@ -1,99 +1,110 @@
<div class="chat-message-header">
{{#if actorImg}}
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
{{/if}}
<h4 class="chat-actor-name">{{alias}}</h4>
</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>
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
</div>
{{/if}}
<div class="chat-info-badge" style="margin-bottom: 0.4rem;">
<strong>{{alias}}</strong>
attaque
<strong>{{defenderName}}</strong>
</div>
<div class="flexcol">
</div>
<div>
<ul>
<li><strong>{{alias}}</strong> attaque <strong>{{defenderName}}</strong></li>
<ul style="margin: 0; padding-left: 0.5rem;">
{{#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 loc}}
<li>Localisation : {{loc.label}}</li>
<li>Touché : {{touche}}</li>
<li style="margin: 0.2rem 0;"><span
class="chat-difficulty-badge"
>Localisation : {{loc.label}}</span></li>
<li style="margin: 0.2rem 0;">Touché : {{touche}}</li>
{{/if}}
{{#if gantelet}}
<li>Poing avec gantelet: +1 dégat</li>
<li>Poing avec gantelet: +1 dégat</li>
{{/if}}
{{#if isChargeAPied}}
<li>Charge à pied (+Course)</li>
<li>Charge à pied (+Course)</li>
{{/if}}
{{#if isChargeACheval}}
<li>Charge à cheval (+Equitation)</li>
<li>Charge à cheval (+Equitation)</li>
{{/if}}
{{#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 blessure}}
<li><strong>{{defenderName}} a subi une blessure!</strong></li>
<li>Gravité : {{blessure.name}}</li>
<li style="margin: 0.3rem 0;"><span class="chat-warning-badge">⚔️
{{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 (gt blessure.system.value 0)}}
<li><strong class="chat-result-warning">{{defenderName}} doit réussir un test d'Endurance de difficulté 7 ou être
assommé</strong></li>
{{/if}}
{{/if}}
{{#if (eq loc.categorie "bras")}}
{{#if (gt blessure.system.value 2)}}
<li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
{{defenderName}}
lâche l'objet tenu par son bras. Il doit faire un test d'endurance
pour l'utiliser désormais.</span></li>
{{/if}}
{{/if}}
{{#if (eq loc.categorie "bras")}}
{{#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
d'endurance
pour l'utiliser désormais.</strong></li>
{{/if}}
{{/if}}
{{#if (eq loc.categorie "jambe")}}
{{#if (gt blessure.system.value 2)}}
<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}}
{{#if (eq loc.categorie "jambe")}}
{{#if (gt blessure.system.value 2)}}
<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 "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 "main")}}
{{#if (gt blessure.system.value 1)}}
<li style="margin: 0.3rem 0;"><span class="chat-result-failure">💥
{{defenderName}}
lâche l'objet tenu par sa main. Il doit faire un test d'endurance
pour l'utiliser désormais.</span></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}}
<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}}
</ul>
</div>
</div>

View File

@@ -1,38 +1,44 @@
<div class="chat-message-header">
{{#if actorImg}}
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
{{/if}}
<h4 class="chat-actor-name">{{alias}}</h4>
</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}}
<div>
<img class="chat-icon" src="{{arme.img}}" alt="{{name}}" />
</div>
{{/if}}
<div>
<ul>
<li>Dégats de {{arme.name}}: {{formula}} </li>
<ul style="margin: 0; padding-left: 0.5rem;">
<li style="margin: 0.2rem 0;"><span class="chat-info-badge">Dégâts de
{{arme.name}}:
{{formula}}</span></li>
{{#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 isChargeAPied}}
<li>Charge à pied (+Course)</li>
<li style="margin: 0.2rem 0;"><span class="chat-difficulty-badge">🏃
Charge à pied (+Course)</span></li>
{{/if}}
{{#if isChargeACheval}}
<li>Charge à cheval (+Equitation)</li>
<li style="margin: 0.2rem 0;"><span class="chat-difficulty-badge">🐴
Charge à cheval (+Équitation)</span></li>
{{/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}}
<li>Localisation : {{loc.label}}</li>
<li style="margin: 0.2rem 0;"><span class="chat-difficulty-badge">🎯
Localisation :
{{loc.label}}</span></li>
{{/if}}
{{#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}}
</ul>
</div>
</div>

View File

@@ -5,130 +5,134 @@
<h4 class="chat-actor-name">{{alias}}</h4>
</div>
<hr>
{{#if img}}
<div>
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
<div style="text-align: center; padding: 0.25rem;">
<img class="chat-icon" src="{{img}}" alt="{{name}}" style="border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);" />
</div>
{{/if}}
<div class="flexcol">
</div>
<div>
<div class="chat-roll-details">
<ul>
{{#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 competence}}
<li>{{competence.name}}: {{compScore}} </li>
<li><strong>{{competence.name}}:</strong> {{compScore}}</li>
{{/if}}
{{#if bonusMalus}}
<li>Bonus/Malus: {{bonusMalus}} </li>
<li class="chat-info-badge"><strong>Bonus/Malus:</strong> {{bonusMalus}}</li>
{{/if}}
{{#if santeModifier}}
<li>Santé: {{santeModifier}} niveaux</li>
<li class="chat-warning-badge"><strong>Santé:</strong> {{santeModifier}} niveaux</li>
{{/if}}
{{#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 hasActions}}
<li data-tooltip="Nombre d'actions restantes, avec MG = Main Gauche">Actions restantes: {{remainingActions}}
(MG:{{remainingActionsMainGauche}})</li>
<li class="chat-info-badge" data-tooltip="Nombre d'actions restantes, avec MG = Main Gauche">
<strong>Actions restantes:</strong> {{remainingActions}} (MG:{{remainingActionsMainGauche}})
</li>
{{/if}}
{{#if arme}}
{{#if isViser}}
<li>Bonus de visée (+1 niveau)</li>
<li class="chat-info-badge">✓ Bonus de visée (+1 niveau)</li>
{{/if}}
{{#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 attaqueCiblee}}
<li>Attaque ciblée, -1 niveau</li>
<li class="chat-warning-badge">⚠ Attaque ciblée, -1 niveau</li>
{{/if}}
{{#if allongeMalus}}
<li>Malus d'allonge: {{allongeMalus}} niveau</li>
<li class="chat-warning-badge">⚠ Malus d'allonge: {{allongeMalus}} niveau</li>
{{/if}}
{{/if}}
<li>Dés: {{diceFormula}} </li>
<li><strong>Formule:</strong> <span class="chat-dice-formula">{{diceFormula}}</span></li>
{{#if isTir}}
<li>Portée: {{porteeLabel}} ( {{difficulty}} )</li>
<li><strong>Portée:</strong> {{porteeLabel}} <span class="chat-difficulty-badge">Difficulté: {{difficulty}}</span></li>
{{else}}
<li>Difficulté: {{difficulty}} </li>
<li><strong>Difficulté:</strong> <span class="chat-difficulty-badge">{{difficulty}}</span></li>
{{/if}}
</ul>
</div>
<div class="flexrow">
<ul class="chat-result-column">
<li><strong>Résultat: {{total}}</strong> </li>
<div class="chat-roll-result-section">
<div class="chat-total-result">Résultat: {{total}}</div>
<div style="text-align: center;">
{{#if isSuccess}}
<li><strong class="chat-result-success">Succès !</strong> </li>
<div class="chat-result-success">Succès !</div>
{{#if isReussiteCritique}}
<li data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP gagné en {{carac.name}}">
<strong class="chat-result-success">Réussite critique (XP potentiel) !</strong>
</li>
<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;">
🌟 Réussite critique (XP potentiel) !
</div>
{{/if}}
{{#if arme}}
<li><strong class="">Attaque réussie ! Faites une opposition avec la défense de la cible ou appliquez directement
les dégats.</strong> </li>
<div class="chat-info-badge" style="display: block; margin-top: 0.4rem; padding: 0.3rem; font-size: 0.9em;">
⚔️ <strong>Attaque réussie !</strong> Faites une opposition avec la défense de la cible ou appliquez directement les dégâts.
</div>
{{/if}}
{{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}}
<li data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP gagné en {{carac.name}}">
<strong class="chat-result-failure">Echec critique (XP potentiel) !</strong>
</li>
<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;">
💀 Échec critique (XP potentiel) !
</div>
{{/if}}
{{/if}}
{{#if nbEsquives}}
<li>Rappel : vous devez réussir {{nbEsquives}} tests d'esquive pour arriver au contact (règle d'allonge des armes).
</li>
<div class="chat-warning-badge" style="display: block; margin-top: 0.4rem; padding: 0.3rem;">
⚠️ Rappel : vous devez réussir {{nbEsquives}} tests d'esquive pour arriver au contact (règle d'allonge des armes).
</div>
{{/if}}
{{#if loc}}
<li><strong>Attaque réussie !!</strong> </li>
<li>Localisation: {{loc.label}} </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;">
🎯 <strong>Localisation:</strong> {{loc.label}}
</div>
{{/if}}
{{#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}}
</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 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>

View File

@@ -1,112 +1,176 @@
<form class="skill-roll-dialog">
<header class="roll-dialog-header">
{{#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}}
<h1 class="dialog-roll-title roll-dialog-header">{{title}}</h1>
</header>
<div class="flexcol">
<div class="flexrow">
<span class="roll-dialog-label">Caracteristique </span>
<span class="roll-dialog-label">{{carac.name}} : {{carac.qualite}} ({{carac.dice}})</span>
<span class="roll-dialog-label">Caractéristique </span>
<span class="roll-dialog-label">{{carac.name}}
:
{{carac.qualite}}
({{carac.dice}})</span>
</div>
{{#if competence}}
<div class="flexrow">
<span class="roll-dialog-label">Compétence </span>
<span class="roll-dialog-label">{{competence.name}} ({{compScore}})</span>
</div>
<div class="flexrow">
<span class="roll-dialog-label">🎯 Compétence </span>
<span class="roll-dialog-label">{{competence.name}}
({{compScore}})</span>
</div>
{{/if}}
{{#if santeModifier}}
<div class="flexrow">
<span class="roll-dialog-label">Malus Blessures </span>
<span class="roll-dialog-label">{{santeModifier}} niveaux</span>
</div>
<div class="flexrow">
<span class="roll-dialog-label">💔 Malus Blessures </span>
<span class="roll-dialog-label">{{santeModifier}} niveaux</span>
</div>
{{/if}}
<div class="flexrow">
<span class="roll-dialog-label">Bonus/Malus : </span>
<select class="" type="text" id="roll-bonus-malus" value="{{bonusMalus}}" data-dtype="Number">
{{selectOptions config.bonusMalus selected=bonusMalus labelAttr="label" valueAttr="value" nameAttr="value"}}
<span class="roll-dialog-label"> Bonus/Malus : </span>
<select
class=""
type="text"
id="roll-bonus-malus"
value="{{bonusMalus}}"
data-dtype="Number"
>
{{selectOptions
config.bonusMalus
selected=bonusMalus
labelAttr="label"
valueAttr="value"
nameAttr="value"
}}
</select>
</div>
{{#if providence.value}}
<div class="flexrow">
<span class="roll-dialog-label">Utiliser la Providence ({{providence.dice}})</span>
<input type="checkbox" id="roll-enable-providence" {{checked enableProvidence}} />
</div>
<div class="flexrow">
<span class="roll-dialog-label">Utiliser la Providence ({{providence.dice}})</span>
<input
type="checkbox"
id="roll-enable-providence"
{{checked enableProvidence}}
/>
</div>
{{/if}}
{{#if arme}}
{{#if isTir}}
<div class="flexrow">
<span class="roll-dialog-label">Portée : </span>
<select class="" type="text" id="roll-portee-tir" value="{{porteeTir}}" data-dtype="String">
{{#select porteeTir}}
{{#each config.ARME_PORTEES as |portee key|}}
<option value="{{key}}">{{portee.label}}</option>
{{/each}}
{{/select}}
</select>
</div>
<div class="flexrow">
<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>
{{#if isTir}}
<div class="flexrow">
<span class="roll-dialog-label">🏹 Portée : </span>
<select
class=""
type="text"
id="roll-portee-tir"
value="{{porteeTir}}"
data-dtype="String"
>
{{#select porteeTir}}
{{#each config.ARME_PORTEES as |portee key|}}
<option value="{{key}}">{{portee.label}}</option>
{{/each}}
{{/select}}
</select>
</div>
<div class="flexrow">
<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}}
<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}}
<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>
<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}}
</div>

View File

@@ -38,22 +38,22 @@
</select>
</li>
<h3>Spécificités</h3>
<h3>⚔️ Spécificités</h3>
<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"
name="system.degats" value="{{system.degats}}" data-dtype="String" />
</li>
<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"
name="system.valeurEchecCritique" value="{{system.valeurEchecCritique}}" data-dtype="Numeric" />
</li>
{{#if (eq system.typeArme "melee")}}
<li class="flexrow">
<label class="item-name-label-long">Allonge</label>
<label class="item-name-label-long">🗡️ Allonge</label>
<select name="system.allonge">
{{selectOptions config.armeAllonges selected=system.allonge labelAttr="label"}}
</select>
@@ -62,12 +62,12 @@
{{#if (eq system.typeArme "tir")}}
<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"
name="system.tempsRecharge" value="{{system.tempsRecharge}}" data-dtype="Number" />
</li>
<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">
{{selectOptions config.competencesRecharge selected=system.competenceRecharge labelAttr="label"}}
</select>
@@ -90,7 +90,7 @@
{{/each}}
{{#if (eq system.typeArme "tir")}}
<h3>Portées</h3>
<h3>🎯 Portées</h3>
{{#each system.portees as |portee porteeId|}}
<li class="flexrow">
<label class="item-name-label-long">{{getConfigLabel "ARME_PORTEES" porteeId}}</label>
@@ -100,7 +100,7 @@
{{/each}}
{{/if}}
<h3>Degats sur armures</h3>
<h3>🛡️ Degats sur armures</h3>
{{#each system.degatsArmure as |degat degtId|}}
<li class="flexrow">
<label class="item-name-label-long">{{getConfigLabel "degatsArmure" degtId}}</label>
@@ -109,21 +109,21 @@
</li>
{{/each}}
<h3>Autres</h3>
<h3>📝 Autres</h3>
<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}} />
</li>
<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"
name="system.initiativeBonus" value="{{system.initiativeBonus}}" data-dtype="Number" />
</li>
<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"
name="system.prix" value="{{system.prix}}" data-dtype="Number" />
<select name="system.monnaie">

View File

@@ -33,13 +33,13 @@
{{/each}}
<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"
name="system.protection" value="{{system.protection}}" data-dtype="Number" />
</li>
<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"
name="system.coutArmureLourde" value="{{system.coutArmureLourde}}" data-dtype="Number" />
</li>
@@ -57,12 +57,12 @@
</li>
<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}} />
</li>
<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"
name="system.prix" value="{{system.prix}}" data-dtype="Number" />
<select name="system.monnaie">

View File

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

View File

@@ -19,19 +19,19 @@
<div class="tab" data-group="primary">
<ul>
<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">
{{selectOptions config.caracteristiques selected=system.caracteristique labelAttr="label" blank=""}}
</select>
</li>
<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}} />
</li>
<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"
name="system.score" value="{{system.score}}" data-dtype="Number" {{#if system.isBase}}disabled{{/if}}/>
</li>

View File

@@ -21,7 +21,7 @@
<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"
name="system.prix" value="{{system.prix}}" data-dtype="Number" />
<select name="system.monnaie">

View File

@@ -25,25 +25,25 @@
<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">
{{{system.vertus}}}
</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">
{{{system.toxicite}}}
</textarea>
<ul>
<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">
{{selectOptions config.difficulte selected=system.difficulteEndurance abelAttr="label"}}
</select>
</li>
<li class="flexrow">
<label class="item-name-label-long">Virulence</label>
<label class="item-name-label-long">🔥 Virulence</label>
<select name="system.virulence">
{{selectOptions config.virulencePoison selected=system.virulence labelAttr="label"}}
</select>

View File

@@ -0,0 +1,26 @@
<h3 class="welcome-message-h3">Bonjour à tous !</h3>
<div class="message-chat-center">
Open Sesame Game a mis en place un nouveau Discord pour ceux ou celles qui
souhaiteraient participer plus activement à la communauté des jeux d'Open
Sesame Games, avec un espace dédié à Te Deum ! <br />
Nouveaux joueurs comme vétérans sont les bienvenus, n'hésitez pas à passer
pour papoter, profiter de nos ressources, ou suivre les nouvelles d'OSG plus
directement. Cliquez ici :<br />
<a href="https://discord.gg/dUPhNfJdaD">https://discord.gg/dUPhNfJdaD</a
><br />
</div>
<div class="message-chat-center">
Ce système vous est proposé par Open Sesame Games.<br />
Vous trouverez de l'aide dans
@UUID[Compendium.fvtt-te-deum.aides.JournalEntry.uNwJgi4kXBCiZmAH]{Aide pour
Te Deum}<br />
ainsi que sur le Discord de Foundry FR :
<a href="https://discord.gg/pPSDNJk">https://discord.gg/pPSDNJk</a>
</div>
<div>
Merci pour votre attention et à très bientôt pour la suite ! L'équipe Open
Sesame Games
</div>