11 Commits

Author SHA1 Message Date
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
5d13500838 Fix sur combat + mains gauche
All checks were successful
Release Creation / build (release) Successful in 43s
2025-09-24 16:43:52 +02:00
d21515e1e3 Fix sur combat + mains gauche 2025-09-24 16:43:40 +02:00
78ef009465 Fix sur combat + mains gauche 2025-09-24 16:42:08 +02:00
e794611bf3 Gestion assistée pour les actions
All checks were successful
Release Creation / build (release) Successful in 46s
2025-09-24 15:11:58 +02:00
529a62045e Gestion assistée pour les actions 2025-09-24 15:09:00 +02:00
87 changed files with 2657 additions and 1893 deletions

View File

@@ -77,6 +77,31 @@ export class TeDeumActor extends Actor {
return 0 return 0
} }
/* -------------------------------------------- */
getMeilleureCompetenceMainGauche(comp) {
let compScore = this.getCompetenceScore(comp.name)
let mainGaucheScore = this.getCompetenceScore("main gauche")
if (mainGaucheScore < compScore) {
ui.notifications.info(`${this.name} : Utilisation de la compétence Main Gauche au lieu de ${comp.name}`)
let mainGaucheComp = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "main gauche")
if (!mainGaucheComp) {
// Create a fake competence object
mainGaucheComp = foundry.utils.duplicate(comp)
mainGaucheComp.name = "Main Gauche"
mainGaucheComp.system.isBase = false
mainGaucheComp.system.score = 0
mainGaucheComp.system.caracteristique = "adresse"
mainGaucheComp.system.description = "Compétence Main Gauche (automatique)"
mainGaucheComp.system.isMainGauche = true
return mainGaucheComp
} else {
return mainGaucheComp
}
} else {
return comp
}
}
/* -------------------------------------------- */ /* -------------------------------------------- */
_onUpdate(changed, options, userId) { _onUpdate(changed, options, userId) {
let updates = [] let updates = []
@@ -116,12 +141,6 @@ export class TeDeumActor extends Actor {
updates.push({ _id: initiative.id, "system.score": Number(newScore) }) updates.push({ _id: initiative.id, "system.score": Number(newScore) })
} }
let actionsTour = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "actions/tour")
newScore = this.getCommonBaseValue(this.system.caracteristiques.adresse.value)
if (actionsTour && actionsTour?.system.score != newScore) {
updates.push({ _id: actionsTour.id, "system.score": Number(newScore) })
}
let effort = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "effort") let effort = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "effort")
newScore = this.getCommonBaseValue(this.system.caracteristiques.puissance.value) newScore = this.getCommonBaseValue(this.system.caracteristiques.puissance.value)
if (effort && effort?.system.score != newScore) { if (effort && effort?.system.score != newScore) {
@@ -151,7 +170,7 @@ export class TeDeumActor extends Actor {
getCommonBaseValue(value) { getCommonBaseValue(value) {
return game.system.tedeum.config.COMMON_VALUE[value]?.value || 0 return game.system.tedeum.config.COMMON_VALUE[value]?.value || 0
} }
getInitiative() { getInitiativeValue() {
return game.system.tedeum.config.COMMON_VALUE[this.system.caracteristiques.adresse.value]?.value || 0 return game.system.tedeum.config.COMMON_VALUE[this.system.caracteristiques.adresse.value]?.value || 0
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -616,21 +635,16 @@ export class TeDeumActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
getInitiativeScore() { getInitiativeScore() {
let initiative = this.items.find(it => it.type == "competence" && it.name.toLowerCase() == "initiative") let initiative = this.getInitiativeValue()
initiative = foundry.utils.duplicate(initiative)
// Vérifie les armes avec bonus d'initiative // Vérifie les armes avec bonus d'initiative
let armes = this.getArmes() let armes = this.getArmes()
for (let arme of armes) { for (let arme of armes) {
if (arme.system.equipe && arme.system.bonusInitiative != 0) { if (arme.system.equipe && Number(arme.system.initiativeBonus) && Number(arme.system.initiativeBonus) != 0) {
ui.notifications.info("L'arme " + arme.name + " vous confère un bonus d'initiative de " + arme.system.bonusInitiative) ui.notifications.info("L'arme " + arme.name + " vous confère un bonus d'initiative de " + arme.system.initiativeBonus)
initiative.system.score += 1 initiative += arme.system.initiativeBonus
} }
} }
if (initiative) { return initiative
return initiative.system.score
}
ui.notifications.warn("Impossible de trouver la compétence Initiative pour l'acteur " + this.name)
return -1;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

@@ -4,18 +4,42 @@ import { TeDeumUtility } from "../common/tedeum-utility.js";
export class TeDeumCombat extends Combat { export class TeDeumCombat extends Combat {
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollInitiative(ids, formula = undefined, messageOptions = {} ) { async rollInitiative(ids, formula = undefined, messageOptions = {}) {
//console.log("Roll INIT !") //console.log("Roll INIT !")
ids = typeof ids === "string" ? [ids] : ids; ids = typeof ids === "string" ? [ids] : ids;
for (let cId of ids) { for (let cId of ids) {
const c = this.combatants.get(cId); const c = this.combatants.get(cId);
let initBonus = c.actor ? c.actor.getInitiativeScore( this.id, cId ) : -1; let initBonus = c.actor ? c.actor.getInitiativeScore(this.id, cId) : -1;
await this.updateEmbeddedDocuments("Combatant", [ { _id: cId, initiative: initBonus } ]); console.log("Init Bonus : ", c.name, initBonus)
await this.updateEmbeddedDocuments("Combatant", [{ _id: cId, initiative: initBonus }]);
} }
return this; return this;
} }
/* -------------------------------------------- */
async modifyAction(combatantId, delta, isMainGauche = false) {
let combatant = this.combatants.get(combatantId)
if (!combatant) return;
let ca = combatant.getFlag("world", "available-actions")
if (!ca) {
ca = { nbActions: 1, nbActionsMainGauche: 0 }
}
if (isMainGauche) {
ca.nbActionsMainGauche += delta
} else {
ca.nbActions += delta
}
if (ca.nbActionsMainGauche < 0) ca.nbActionsMainGauche = 0
if (ca.nbActions < 0) ca.nbActions = 0
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 } })
}
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static async checkTurnPosition() { static async checkTurnPosition() {
while (game.combat.turn > 0) { while (game.combat.turn > 0) {

View File

@@ -59,11 +59,11 @@ export const TEDEUM_CONFIG = {
}, },
ARME_PORTEES: { ARME_PORTEES: {
"brulepourpoint": { label: "Brûle-pourpoint", difficulty: "facile", id: "brulepourpoint" }, "brulepourpoint": { label: "Brûle-pourpoint (5)", difficulty: "facile", id: "brulepourpoint" },
"courte": { label: "Courte", difficulty: "pardefaut", id: "courte" }, "courte": { label: "Courte (7)", difficulty: "pardefaut", id: "courte" },
"moyenne": { label: "Moyenne", difficulty: "difficile", id: "moyenne" }, "moyenne": { label: "Moyenne (11)", difficulty: "difficile", id: "moyenne" },
"longue": { label: "Longue", difficulty: "perilleux", id: "longue" }, "longue": { label: "Longue (13)", difficulty: "perilleux", id: "longue" },
"extreme": { label: "Extrême", difficulty: "desespere", id: "extreme" }, "extreme": { label: "Extrême (15)", difficulty: "desespere", id: "extreme" },
}, },
genre: { genre: {
@@ -168,13 +168,13 @@ export const TEDEUM_CONFIG = {
}, },
difficulte: { difficulte: {
aucune: { label: "Aucune", key: "aucune", value: 0 }, aucune: { label: "Aucune", key: "aucune", value: 0 },
routine: { label: "Routine", key: "routine", value: 3 }, routine: { label: "Routine (3)", key: "routine", value: 3 },
facile: { label: "Facile", key: "facile", value: 5 }, facile: { label: "Facile (5)", key: "facile", value: 5 },
pardefaut: { label: "Par Défaut", key: "pardefaut", value: 7 }, pardefaut: { label: "Par Défaut (7)", key: "pardefaut", value: 7 },
malaise: { label: "Malaisé", key: "malaise", value: 9 }, malaise: { label: "Malaisé (9)", key: "malaise", value: 9 },
difficile: { label: "Difficile", key: "difficile", value: 11 }, difficile: { label: "Difficile (11)", key: "difficile", value: 11 },
perilleux: { label: "Perilleux", key: "perilleux", value: 13 }, perilleux: { label: "Perilleux (13)", key: "perilleux", value: 13 },
desespere: { label: "Désespéré", key: "desespere", value: 15 } desespere: { label: "Désespéré (15)", key: "desespere", value: 15 }
}, },
monnaie: { monnaie: {
denier: { label: "Deniers", id: "denier", value: 1 }, denier: { label: "Deniers", id: "denier", value: 1 },

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 { export class TeDeumUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -12,7 +14,9 @@ export class TeDeumUtility {
CONFIG.JournalEntry.compendiumBanner = "systems/fvtt-te-deum/images/ui/compendium_banner.webp" CONFIG.JournalEntry.compendiumBanner = "systems/fvtt-te-deum/images/ui/compendium_banner.webp"
CONFIG.Macro.compendiumBanner = "systems/fvtt-te-deum/images/ui/compendium_banner.webp" CONFIG.Macro.compendiumBanner = "systems/fvtt-te-deum/images/ui/compendium_banner.webp"
CONFIG.Adventure.compendiumBanner = "systems/fvtt-te-deum/images/ui/compendium_banner.webp" CONFIG.Adventure.compendiumBanner = "systems/fvtt-te-deum/images/ui/compendium_banner.webp"
}
static installHooks() {
Hooks.on('renderChatLog', (log, html, data) => TeDeumUtility.chatListeners(html)); Hooks.on('renderChatLog', (log, html, data) => TeDeumUtility.chatListeners(html));
Hooks.on("renderActorDirectory", (app, html, data) => { Hooks.on("renderActorDirectory", (app, html, data) => {
@@ -28,7 +32,47 @@ export class TeDeumUtility {
$(html).find('.header-actions').after(button) $(html).find('.header-actions').after(button)
} }
}) })
//Hooks.on("getChatLogEntryContext", (html, options) => TeDeumUtility.chatMenuManager(html, options));
Hooks.on("combatStart", async (combat, updateData, options) => {
this.resetCombatActions(combat)
});
Hooks.on("combatRound", (combat, updateData, updateOptions) => {
// List all actors related to combatant
if (game.user.isGM) {
this.resetCombatActions(combat)
}
})
Hooks.on("getCombatTrackerContextOptions", (html, options) => {
console.log("Get Combat Tracker Context", html, options)
this.pushCombatOptions(html, options);
});
}
/* -------------------------------------------- */
static pushCombatOptions(html, options) {
options.push({ name: "Actions +1", condition: true, icon: '<i class="fas fa-plus"></i>', callback: target => { game.combat.modifyAction($(target).data('combatant-id'), 1); } })
options.push({ name: "Actions -1", condition: true, icon: '<i class="fas fa-minus"></i>', callback: target => { game.combat.modifyAction($(target).data('combatant-id'), -1); } })
options.push({ name: "Actions MG +1", condition: true, icon: '<i class="fas fa-plus"></i>', callback: target => { game.combat.modifyAction($(target).data('combatant-id'), 1, true); } })
options.push({ name: "Actions MG -1", condition: true, icon: '<i class="fas fa-minus"></i>', callback: target => { game.combat.modifyAction($(target).data('combatant-id'), -1, true); } })
}
/* -------------------------------------------- */
static async resetCombatActions(combat) {
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})` })
}
}
}
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -127,14 +171,25 @@ export class TeDeumUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static welcomeMessage() { static welcomeMessage() {
if (game.user.isGM) { if (game.user.isGM) {
ChatMessage.create({ // Try to fetch the welcome message from the github repo "welcome-message-ecryme.html"
user: game.user.id, fetch(ECRYME_WELCOME_MESSAGE_URL)
whisper: [game.user.id], .then(response => response.text())
content: `<div id="chat-welcome welcome-message-tedeum"><span class="rdd-roll-part"> .then(html => {
<strong>Bienvenu dans Te Deum Pour Un Massacre !</strong> console.log("Fetched welcome message:", html);
<div class="chat-welcome">Ce système vous est proposé par Open Sesame Games.<br> ChatMessage.create({
Vous trouverez de l'aide dans @UUID[Compendium.fvtt-te-deum.aides.JournalEntry.uNwJgi4kXBCiZmAH]{Aide pour Te Deum}<br> user: game.user.id,
ainsi que sur le Discord de Foundry FR : https://discord.gg/pPSDNJk</div>` }); 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."
});
});
} }
} }
@@ -201,7 +256,7 @@ export class TeDeumUtility {
return actor return actor
} }
/* -------------------------------------------- */ /* -------------------------------------------- */ /* -------------------------------------------- */
static async manageOpposition(rollData) { static async manageOpposition(rollData) {
if (!this.currentOpposition) { if (!this.currentOpposition) {
// Store rollData as current GM opposition // Store rollData as current GM opposition
@@ -210,12 +265,15 @@ export class TeDeumUtility {
} else { } else {
// Perform the opposition // Perform the opposition
let isAttackWinner = true let isAttackWinner = true
let rWinner = this.currentOpposition let rWinner, rLooser
let rLooser = rollData if (this.currentOpposition.total <= rollData.total) {
if (rWinner.total <= rLooser.total) { rWinner = foundry.utils.duplicate(rollData)
rWinner = rollData rLooser = foundry.utils.duplicate(this.currentOpposition)
rLooser = this.currentOpposition
isAttackWinner = false isAttackWinner = false
} else {
rWinner = foundry.utils.duplicate(this.currentOpposition)
rLooser = foundry.utils.duplicate(rollData)
isAttackWinner = true
} }
this.currentOpposition = undefined // Reset opposition this.currentOpposition = undefined // Reset opposition
let oppositionData = { let oppositionData = {
@@ -247,7 +305,6 @@ export class TeDeumUtility {
await this.appliquerDegats(rWinner) await this.appliquerDegats(rWinner)
} }
console.log("Opposition result", rollData, isAttackWinner, oppositionData) console.log("Opposition result", rollData, isAttackWinner, oppositionData)
} }
} }
@@ -258,7 +315,12 @@ export class TeDeumUtility {
let defenderToken = canvas.tokens.placeables.find(t => t.id == rollData.defenderTokenId) let defenderToken = canvas.tokens.placeables.find(t => t.id == rollData.defenderTokenId)
if (defenderToken) { if (defenderToken) {
let actor = defenderToken.actor let actor = defenderToken.actor
await actor.appliquerDegats(rollData) if (game.user.isGM || actor.isOwner) {
await actor.appliquerDegats(rollData)
} else {
// Send a socket message
game.socket.emit("system.fvtt-te-deum", { name: "msg_apply_damage", data: { rollData } });
}
// Attaque naturelle avec dégats inférieur à -2 // Attaque naturelle avec dégats inférieur à -2
if ((rollData?.arme?.system.specificites?.poing?.hasSpec || rollData?.arme?.system.specificites?.pied?.hasSpec) && rollData.degats < -2) { if ((rollData?.arme?.system.specificites?.poing?.hasSpec || rollData?.arme?.system.specificites?.pied?.hasSpec) && rollData.degats < -2) {
let attacker = this.getActorFromRollData(rollData) let attacker = this.getActorFromRollData(rollData)
@@ -394,6 +456,28 @@ export class TeDeumUtility {
chatMsg.setFlag("world", "tedeum-rolldata", rollData) 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") {
if (game.user.isGM) {
let rollData = msg.data.rollData
let defenderToken = canvas.tokens.placeables.find(t => t.id == rollData.defenderTokenId)
if (defenderToken) {
let actor = defenderToken.actor
await actor.appliquerDegats(rollData)
} else {
ui.notifications.error("Impossible de trouver la cible de l'attaque, aucun degats appliqué")
}
}
}
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -570,12 +654,51 @@ export class TeDeumUtility {
await this.getLocalisation(rollData) await this.getLocalisation(rollData)
// Now the degats // Now the degats
let degatsRoll = await new Roll(rollData.arme.system.degats).roll() let degatsRoll = await new Roll(rollData.arme.system.degats).roll()
await this.showDiceSoNice(rollData.degatsRoll, game.settings.get("core", "rollMode")) await this.showDiceSoNice(degatsRoll, game.settings.get("core", "rollMode"))
rollData.degatsRoll = foundry.utils.duplicate(degatsRoll) rollData.degatsRoll = foundry.utils.duplicate(degatsRoll)
rollData.degats = degatsRoll.total rollData.degats = degatsRoll.total
} }
} }
/* -------------------------------------------- */
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
if (!combat) return;
let combatant = combat.getCombatantByActor(actor)
if (!combatant) return;
let ca = combatant.getFlag("world", "available-actions")
if (!ca) return;
if (rollData.mode == "arme" && rollData.isMainGauche) {
if (ca.nbActionsMainGauche > 0) {
ca.nbActionsMainGauche -= 1
ca.nbActions = Math.max(ca.nbActions - 1, 0)
} else {
ui.notifications.error(`${actor.name} n'a plus d'actions disponibles à la main gauche pour ce round`)
}
}
if (ca.nbActions > 0) {
ca.nbActions -= 1
} else {
ui.notifications.error(`${actor.name} n'a plus d'actions disponibles pour ce round`)
}
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
}
/* -------------------------------------------- */ /* -------------------------------------------- */
static async rollTeDeum(rollData) { static async rollTeDeum(rollData) {
@@ -585,8 +708,12 @@ export class TeDeumUtility {
rollData.difficulty = "pardefaut" rollData.difficulty = "pardefaut"
} }
rollData.difficulty = game.system.tedeum.config.difficulte[rollData.difficulty].value rollData.difficulty = game.system.tedeum.config.difficulte[rollData.difficulty].value
// Compute the real competence score // Compute the real competence score
if (rollData.competence) { if (rollData.competence) {
if (rollData.isMainGauche) {
rollData.competence = actor.getMeilleureCompetenceMainGauche(rollData.competence)
}
if (rollData.competence.system.isBase) { if (rollData.competence.system.isBase) {
rollData.compScore = actor.system.caracteristiques[rollData.competence.system.caracteristique].value rollData.compScore = actor.system.caracteristiques[rollData.competence.system.caracteristique].value
} else { } else {
@@ -609,6 +736,8 @@ export class TeDeumUtility {
await this.processAttaqueDistance(rollData) await this.processAttaqueDistance(rollData)
await this.manageCombatActions(actor, rollData)
let msg = await this.createChatWithRollMode(rollData.alias, { let msg = await this.createChatWithRollMode(rollData.alias, {
content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-generic-result.hbs`, rollData) content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-generic-result.hbs`, rollData)
}) })

View File

@@ -1,17 +1,17 @@
export class TeDeumArmeSchema extends foundry.abstract.TypeDataModel { export class TeDeumArmeSchema extends foundry.abstract.TypeDataModel {
static defineSchema() { static defineSchema() {
const fields = foundry.data.fields; const fields = foundry.data.fields;
const requiredInteger = { required: true, nullable: false, integer: true }; const requiredInteger = { required: true, nullable: false, integer: true };
const requiredDouble = { required: true, nullable: false, integer: false }; const requiredDouble = { required: true, nullable: false, integer: false };
const schema = {}; const schema = {};
schema.typeArme = new fields.StringField({required: true, choices: ["melee", "tir"], initial: "melee"}); schema.typeArme = new fields.StringField({ required: true, choices: ["melee", "tir"], initial: "melee" });
schema.allonge = new fields.StringField({required: true, choices: ["courte", "moyenne", "longue", "treslongue"], initial: "courte"}); schema.allonge = new fields.StringField({ required: true, choices: ["courte", "moyenne", "longue", "treslongue"], initial: "courte" });
schema.specificites = new fields.SchemaField( schema.specificites = new fields.SchemaField(
Object.values((game.system.tedeum.config.ARME_SPECIFICITE)).reduce((obj, spec) => { Object.values((game.system.tedeum.config.ARME_SPECIFICITE)).reduce((obj, spec) => {
obj[spec.id] = new fields.SchemaField({ obj[spec.id] = new fields.SchemaField({
hasSpec: new fields.BooleanField({initial: false}), hasSpec: new fields.BooleanField({ initial: false }),
}); });
return obj; return obj;
}, {}) }, {})
@@ -26,18 +26,18 @@ export class TeDeumArmeSchema extends foundry.abstract.TypeDataModel {
}, {}) }, {})
); );
schema.degatsArmure = new fields.SchemaField( { schema.degatsArmure = new fields.SchemaField({
sansarmure : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), sansarmure: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
cuir : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), cuir: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
plates : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), plates: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
mailles : new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }), mailles: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
}); });
schema.tempsRecharge = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }); schema.tempsRecharge = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 });
schema.competenceRecharge = new fields.StringField({ required: false, choices:["aucune", "archerie", "arquebusade"], initial: "aucune", blank: true }); schema.competenceRecharge = new fields.StringField({ required: false, choices: ["aucune", "archerie", "arquebusade"], initial: "aucune", blank: true });
schema.valeurEchecCritique = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }); schema.valeurEchecCritique = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 });
schema.initiativeBonus = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }); schema.initiativeBonus = new fields.NumberField({ ...requiredInteger, initial: 0 });
schema.degats = new fields.StringField({ required: false, blank: true, initial: "0" }); schema.degats = new fields.StringField({ required: false, blank: true, initial: "0" });
schema.degatscrosse = new fields.StringField({ required: false, blank: true, initial: "0" }); schema.degatscrosse = new fields.StringField({ required: false, blank: true, initial: "0" });
@@ -46,15 +46,15 @@ export class TeDeumArmeSchema extends foundry.abstract.TypeDataModel {
for (let key of Object.keys(game.system.tedeum.config.armeCompetences)) { for (let key of Object.keys(game.system.tedeum.config.armeCompetences)) {
comp.push(key); comp.push(key);
} }
schema.competence = new fields.StringField({ required: true, choices:comp, initial: "bagarre" }); schema.competence = new fields.StringField({ required: true, choices: comp, initial: "bagarre" });
schema.competence2 = new fields.StringField({ required: false, choices:comp, initial: "", blank: true }); schema.competence2 = new fields.StringField({ required: false, choices: comp, initial: "", blank: true });
schema.prix = new fields.NumberField({ ...requiredDouble, initial: 0, min: 0 }); schema.prix = new fields.NumberField({ ...requiredDouble, initial: 0, min: 0 });
schema.monnaie = new fields.StringField({ required: true, blank: false, initial: "denier" }); schema.monnaie = new fields.StringField({ required: true, blank: false, initial: "denier" });
schema.equipe = new fields.BooleanField({initial: false}), schema.equipe = new fields.BooleanField({ initial: false }),
schema.description = new fields.HTMLField({ required: true, blank: true }); schema.description = new fields.HTMLField({ required: true, blank: true });
return schema; return schema;
} }

View File

@@ -63,6 +63,9 @@ export class TeDeumRollDialog extends Dialog {
html.find('#roll-allonge').change((event) => { html.find('#roll-allonge').change((event) => {
this.rollData.allongeId = event.currentTarget.value this.rollData.allongeId = event.currentTarget.value
}) })
html.find('#roll-main-gauche').change((event) => {
this.rollData.isMainGauche = event.currentTarget.checked
})
html.find('#roll-difficulty').change((event) => { html.find('#roll-difficulty').change((event) => {
this.rollData.difficulty = String(event.currentTarget.value) || "pardefaut" this.rollData.difficulty = String(event.currentTarget.value) || "pardefaut"
}) })

View File

@@ -90,6 +90,8 @@ Hooks.once("init", async function () {
foundry.documents.collections.Items.registerSheet("fvtt-te-deum", TeDeumItemSheet, { makeDefault: true }); foundry.documents.collections.Items.registerSheet("fvtt-te-deum", TeDeumItemSheet, { makeDefault: true });
TeDeumUtility.init() TeDeumUtility.init()
TeDeumUtility.installHooks()
}); });
@@ -98,6 +100,7 @@ Hooks.once("init", async function () {
/* -------------------------------------------- */ /* -------------------------------------------- */
Hooks.once("ready", function () { Hooks.once("ready", function () {
// User warning // User warning
if (!game.user.isGM && game.user.character == undefined) { if (!game.user.isGM && game.user.character == undefined) {
ui.notifications.info("Attention ! Aucun personnage relié au joueur !"); ui.notifications.info("Attention ! Aucun personnage relié au joueur !");
@@ -107,10 +110,10 @@ Hooks.once("ready", function () {
}); });
} }
import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter=>{ import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter => {
console.log("ClassCounter loaded", moduleCounter) console.log("ClassCounter loaded", moduleCounter)
moduleCounter.ClassCounter.registerUsageCount() moduleCounter.ClassCounter.registerUsageCount()
}).catch(err=> }).catch(err =>
console.log("No stats available, giving up.") console.log("No stats available, giving up.")
) )
TeDeumUtility.ready(); TeDeumUtility.ready();

View File

@@ -1 +1 @@
MANIFEST-000137 MANIFEST-000206

View File

@@ -1,7 +1,7 @@
2025/09/18-17:25:25.945688 7f7f2affd6c0 Recovering log #134 2025/10/31-17:48:52.681921 7fee83fff6c0 Recovering log #204
2025/09/18-17:25:25.962577 7f7f2affd6c0 Delete type=3 #132 2025/10/31-17:48:52.736841 7fee83fff6c0 Delete type=3 #202
2025/09/18-17:25:25.962629 7f7f2affd6c0 Delete type=0 #134 2025/10/31-17:48:52.736911 7fee83fff6c0 Delete type=0 #204
2025/09/18-17:25:58.096205 7f7f29bff6c0 Level-0 table #140: started 2025/10/31-17:59:45.975679 7fee837fe6c0 Level-0 table #209: started
2025/09/18-17:25:58.096281 7f7f29bff6c0 Level-0 table #140: 0 bytes OK 2025/10/31-17:59:45.975710 7fee837fe6c0 Level-0 table #209: 0 bytes OK
2025/09/18-17:25:58.103314 7f7f29bff6c0 Delete type=0 #138 2025/10/31-17:59:45.982864 7fee837fe6c0 Delete type=0 #207
2025/09/18-17:25:58.103571 7f7f29bff6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end) 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)

View File

@@ -1,11 +1,7 @@
2025/09/18-11:50:45.746719 7f7f2bfff6c0 Delete type=3 #1 2025/10/31-17:15:35.389060 7fee897f96c0 Recovering log #200
2025/09/18-17:24:09.744265 7f7f29bff6c0 Level-0 table #135: started 2025/10/31-17:15:35.399430 7fee897f96c0 Delete type=3 #198
2025/09/18-17:24:09.744308 7f7f29bff6c0 Level-0 table #135: 0 bytes OK 2025/10/31-17:15:35.399559 7fee897f96c0 Delete type=0 #200
2025/09/18-17:24:09.802551 7f7f29bff6c0 Delete type=0 #133 2025/10/31-17:25:23.732693 7fee837fe6c0 Level-0 table #205: started
2025/09/18-17:24:09.802767 7f7f29bff6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 25 : 1 2025/10/31-17:25:23.732722 7fee837fe6c0 Level-0 table #205: 0 bytes OK
2025/09/18-17:24:09.802780 7f7f29bff6c0 Compacting 1@0 + 0@1 files 2025/10/31-17:25:23.738770 7fee837fe6c0 Delete type=0 #203
2025/09/18-17:24:09.830358 7f7f29bff6c0 Generated table #136@0: 5 keys, 3728 bytes 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/09/18-17:24:09.830408 7f7f29bff6c0 Compacted 1@0 + 0@1 files => 3728 bytes
2025/09/18-17:24:09.891222 7f7f29bff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2025/09/18-17:24:09.891483 7f7f29bff6c0 Delete type=2 #103
2025/09/18-17:24:10.130709 7f7f29bff6c0 Manual compaction at level-0 from '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 25 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/aides/MANIFEST-000206 Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000240 MANIFEST-000309

View File

@@ -1,7 +1,7 @@
2025/09/18-17:25:25.808742 7f7f2bfff6c0 Recovering log #237 2025/10/31-17:48:52.259705 7fee83fff6c0 Recovering log #307
2025/09/18-17:25:25.826162 7f7f2bfff6c0 Delete type=3 #235 2025/10/31-17:48:52.315229 7fee83fff6c0 Delete type=3 #305
2025/09/18-17:25:25.826217 7f7f2bfff6c0 Delete type=0 #237 2025/10/31-17:48:52.315320 7fee83fff6c0 Delete type=0 #307
2025/09/18-17:25:58.034192 7f7f29bff6c0 Level-0 table #243: started 2025/10/31-17:59:45.932597 7fee837fe6c0 Level-0 table #312: started
2025/09/18-17:25:58.034230 7f7f29bff6c0 Level-0 table #243: 0 bytes OK 2025/10/31-17:59:45.932657 7fee837fe6c0 Level-0 table #312: 0 bytes OK
2025/09/18-17:25:58.040524 7f7f29bff6c0 Delete type=0 #241 2025/10/31-17:59:45.938987 7fee837fe6c0 Delete type=0 #310
2025/09/18-17:25:58.047737 7f7f29bff6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end) 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)

View File

@@ -1,11 +1,7 @@
2025/09/18-11:50:45.598190 7f7f2a7fc6c0 Delete type=3 #1 2025/10/31-17:15:35.274824 7fee83fff6c0 Recovering log #303
2025/09/18-17:24:08.419689 7f7f29bff6c0 Level-0 table #238: started 2025/10/31-17:15:35.286812 7fee83fff6c0 Delete type=3 #301
2025/09/18-17:24:08.419727 7f7f29bff6c0 Level-0 table #238: 0 bytes OK 2025/10/31-17:15:35.286947 7fee83fff6c0 Delete type=0 #303
2025/09/18-17:24:08.484925 7f7f29bff6c0 Delete type=0 #236 2025/10/31-17:25:23.706544 7fee837fe6c0 Level-0 table #308: started
2025/09/18-17:24:08.766692 7f7f29bff6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at '!items!wxIHkrq98eQ3cOvp' @ 73 : 1 2025/10/31-17:25:23.706576 7fee837fe6c0 Level-0 table #308: 0 bytes OK
2025/09/18-17:24:08.766704 7f7f29bff6c0 Compacting 1@0 + 0@1 files 2025/10/31-17:25:23.712497 7fee837fe6c0 Delete type=0 #306
2025/09/18-17:24:08.800723 7f7f29bff6c0 Generated table #239@0: 38 keys, 31247 bytes 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/09/18-17:24:08.800756 7f7f29bff6c0 Compacted 1@0 + 0@1 files => 31247 bytes
2025/09/18-17:24:08.859553 7f7f29bff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2025/09/18-17:24:08.859745 7f7f29bff6c0 Delete type=2 #206
2025/09/18-17:24:08.860015 7f7f29bff6c0 Manual compaction at level-0 from '!items!wxIHkrq98eQ3cOvp' @ 73 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/armes/MANIFEST-000309 Normal file

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000239 MANIFEST-000309

View File

@@ -1,7 +1,7 @@
2025/09/18-17:25:25.829687 7f7f2a7fc6c0 Recovering log #236 2025/10/31-17:48:52.318228 7fee89ffa6c0 Recovering log #307
2025/09/18-17:25:25.846790 7f7f2a7fc6c0 Delete type=3 #234 2025/10/31-17:48:52.372058 7fee89ffa6c0 Delete type=3 #305
2025/09/18-17:25:25.846846 7f7f2a7fc6c0 Delete type=0 #236 2025/10/31-17:48:52.372200 7fee89ffa6c0 Delete type=0 #307
2025/09/18-17:25:58.026302 7f7f29bff6c0 Level-0 table #242: started 2025/10/31-17:59:45.924808 7fee837fe6c0 Level-0 table #312: started
2025/09/18-17:25:58.026357 7f7f29bff6c0 Level-0 table #242: 0 bytes OK 2025/10/31-17:59:45.924856 7fee837fe6c0 Level-0 table #312: 0 bytes OK
2025/09/18-17:25:58.034035 7f7f29bff6c0 Delete type=0 #240 2025/10/31-17:59:45.932291 7fee837fe6c0 Delete type=0 #310
2025/09/18-17:25:58.047715 7f7f29bff6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end) 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)

View File

@@ -1,11 +1,7 @@
2025/09/18-11:50:45.617997 7f7f2a7fc6c0 Delete type=3 #1 2025/10/31-17:15:35.290241 7fee88ff86c0 Recovering log #302
2025/09/18-17:24:08.294497 7f7f29bff6c0 Level-0 table #237: started 2025/10/31-17:15:35.310453 7fee88ff86c0 Delete type=3 #300
2025/09/18-17:24:08.294539 7f7f29bff6c0 Level-0 table #237: 0 bytes OK 2025/10/31-17:15:35.310600 7fee88ff86c0 Delete type=0 #302
2025/09/18-17:24:08.351872 7f7f29bff6c0 Delete type=0 #235 2025/10/31-17:25:23.685832 7fee837fe6c0 Level-0 table #308: started
2025/09/18-17:24:08.582142 7f7f29bff6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at '!items!ufvhWG5V8pX0qrtR' @ 54 : 1 2025/10/31-17:25:23.685916 7fee837fe6c0 Level-0 table #308: 0 bytes OK
2025/09/18-17:24:08.582154 7f7f29bff6c0 Compacting 1@0 + 0@1 files 2025/10/31-17:25:23.692224 7fee837fe6c0 Delete type=0 #306
2025/09/18-17:24:08.616167 7f7f29bff6c0 Generated table #238@0: 29 keys, 12111 bytes 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/09/18-17:24:08.616198 7f7f29bff6c0 Compacted 1@0 + 0@1 files => 12111 bytes
2025/09/18-17:24:08.671918 7f7f29bff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2025/09/18-17:24:08.672212 7f7f29bff6c0 Delete type=2 #205
2025/09/18-17:24:08.859972 7f7f29bff6c0 Manual compaction at level-0 from '!items!ufvhWG5V8pX0qrtR' @ 54 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000238 MANIFEST-000307

View File

@@ -1,7 +1,7 @@
2025/09/18-17:25:25.789090 7f7f2b7fe6c0 Recovering log #235 2025/10/31-17:48:52.208153 7fee88ff86c0 Recovering log #305
2025/09/18-17:25:25.805571 7f7f2b7fe6c0 Delete type=3 #233 2025/10/31-17:48:52.255275 7fee88ff86c0 Delete type=3 #303
2025/09/18-17:25:25.805686 7f7f2b7fe6c0 Delete type=0 #235 2025/10/31-17:48:52.255396 7fee88ff86c0 Delete type=0 #305
2025/09/18-17:25:58.040659 7f7f29bff6c0 Level-0 table #241: started 2025/10/31-17:59:45.917100 7fee837fe6c0 Level-0 table #310: started
2025/09/18-17:25:58.040687 7f7f29bff6c0 Level-0 table #241: 0 bytes OK 2025/10/31-17:59:45.917151 7fee837fe6c0 Level-0 table #310: 0 bytes OK
2025/09/18-17:25:58.047473 7f7f29bff6c0 Delete type=0 #239 2025/10/31-17:59:45.924617 7fee837fe6c0 Delete type=0 #308
2025/09/18-17:25:58.047759 7f7f29bff6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end) 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)

View File

@@ -1,11 +1,7 @@
2025/09/18-11:50:45.576078 7f7f2affd6c0 Delete type=3 #1 2025/10/31-17:15:35.260634 7fee88ff86c0 Recovering log #301
2025/09/18-17:24:08.352040 7f7f29bff6c0 Level-0 table #236: started 2025/10/31-17:15:35.271676 7fee88ff86c0 Delete type=3 #299
2025/09/18-17:24:08.352081 7f7f29bff6c0 Level-0 table #236: 0 bytes OK 2025/10/31-17:15:35.271742 7fee88ff86c0 Delete type=0 #301
2025/09/18-17:24:08.419524 7f7f29bff6c0 Delete type=0 #234 2025/10/31-17:25:23.699680 7fee837fe6c0 Level-0 table #306: started
2025/09/18-17:24:08.672479 7f7f29bff6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at '!items!yx4k7lQHGcom99mk' @ 237 : 1 2025/10/31-17:25:23.699730 7fee837fe6c0 Level-0 table #306: 0 bytes OK
2025/09/18-17:24:08.672498 7f7f29bff6c0 Compacting 1@0 + 0@1 files 2025/10/31-17:25:23.706400 7fee837fe6c0 Delete type=0 #304
2025/09/18-17:24:08.706074 7f7f29bff6c0 Generated table #237@0: 115 keys, 38139 bytes 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/09/18-17:24:08.706156 7f7f29bff6c0 Compacted 1@0 + 0@1 files => 38139 bytes
2025/09/18-17:24:08.766397 7f7f29bff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2025/09/18-17:24:08.766527 7f7f29bff6c0 Delete type=2 #231
2025/09/18-17:24:08.859995 7f7f29bff6c0 Manual compaction at level-0 from '!items!yx4k7lQHGcom99mk' @ 237 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000249 MANIFEST-000319

View File

@@ -1,7 +1,7 @@
2025/09/18-17:25:25.849643 7f7f2affd6c0 Recovering log #246 2025/10/31-17:48:52.375411 7fee88ff86c0 Recovering log #317
2025/09/18-17:25:25.865539 7f7f2affd6c0 Delete type=3 #244 2025/10/31-17:48:52.427809 7fee88ff86c0 Delete type=3 #315
2025/09/18-17:25:25.865600 7f7f2affd6c0 Delete type=0 #246 2025/10/31-17:48:52.427933 7fee88ff86c0 Delete type=0 #317
2025/09/18-17:25:58.061760 7f7f29bff6c0 Level-0 table #252: started 2025/10/31-17:59:45.909866 7fee837fe6c0 Level-0 table #322: started
2025/09/18-17:25:58.061807 7f7f29bff6c0 Level-0 table #252: 0 bytes OK 2025/10/31-17:59:45.909914 7fee837fe6c0 Level-0 table #322: 0 bytes OK
2025/09/18-17:25:58.069452 7f7f29bff6c0 Delete type=0 #250 2025/10/31-17:59:45.916884 7fee837fe6c0 Delete type=0 #320
2025/09/18-17:25:58.076019 7f7f29bff6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end) 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)

View File

@@ -1,11 +1,7 @@
2025/09/18-11:50:45.638850 7f7f2bfff6c0 Delete type=3 #1 2025/10/31-17:15:35.313871 7fee89ffa6c0 Recovering log #312
2025/09/18-17:24:08.232941 7f7f29bff6c0 Level-0 table #247: started 2025/10/31-17:15:35.325411 7fee89ffa6c0 Delete type=3 #310
2025/09/18-17:24:08.233014 7f7f29bff6c0 Level-0 table #247: 0 bytes OK 2025/10/31-17:15:35.325482 7fee89ffa6c0 Delete type=0 #312
2025/09/18-17:24:08.294274 7f7f29bff6c0 Delete type=0 #245 2025/10/31-17:25:23.692359 7fee837fe6c0 Level-0 table #318: started
2025/09/18-17:24:08.485079 7f7f29bff6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at '!items!zGlRtP7zSnkjuuue' @ 510 : 1 2025/10/31-17:25:23.692392 7fee837fe6c0 Level-0 table #318: 0 bytes OK
2025/09/18-17:24:08.485093 7f7f29bff6c0 Compacting 1@0 + 0@1 files 2025/10/31-17:25:23.699504 7fee837fe6c0 Delete type=0 #316
2025/09/18-17:24:08.521894 7f7f29bff6c0 Generated table #248@0: 71 keys, 264331 bytes 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/09/18-17:24:08.521971 7f7f29bff6c0 Compacted 1@0 + 0@1 files => 264331 bytes
2025/09/18-17:24:08.581818 7f7f29bff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2025/09/18-17:24:08.581947 7f7f29bff6c0 Delete type=2 #231
2025/09/18-17:24:08.859951 7f7f29bff6c0 Manual compaction at level-0 from '!items!zGlRtP7zSnkjuuue' @ 510 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

0
packs/graces/000310.log Normal file
View File

View File

@@ -1 +1 @@
MANIFEST-000239 MANIFEST-000308

View File

@@ -1,7 +1,7 @@
2025/09/18-17:25:25.869600 7f7f2b7fe6c0 Recovering log #236 2025/10/31-17:48:52.436510 7fee897f96c0 Recovering log #306
2025/09/18-17:25:25.884627 7f7f2b7fe6c0 Delete type=3 #234 2025/10/31-17:48:52.495484 7fee897f96c0 Delete type=3 #304
2025/09/18-17:25:25.884728 7f7f2b7fe6c0 Delete type=0 #236 2025/10/31-17:48:52.495642 7fee897f96c0 Delete type=0 #306
2025/09/18-17:25:58.019852 7f7f29bff6c0 Level-0 table #242: started 2025/10/31-17:59:45.939360 7fee837fe6c0 Level-0 table #311: started
2025/09/18-17:25:58.019893 7f7f29bff6c0 Level-0 table #242: 0 bytes OK 2025/10/31-17:59:45.939510 7fee837fe6c0 Level-0 table #311: 0 bytes OK
2025/09/18-17:25:58.026069 7f7f29bff6c0 Delete type=0 #240 2025/10/31-17:59:45.947243 7fee837fe6c0 Delete type=0 #309
2025/09/18-17:25:58.047683 7f7f29bff6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end) 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)

View File

@@ -1,11 +1,7 @@
2025/09/18-11:50:45.661051 7f7f2b7fe6c0 Delete type=3 #1 2025/10/31-17:15:35.330543 7fee83fff6c0 Recovering log #302
2025/09/18-17:24:08.860133 7f7f29bff6c0 Level-0 table #237: started 2025/10/31-17:15:35.341320 7fee83fff6c0 Delete type=3 #300
2025/09/18-17:24:08.860169 7f7f29bff6c0 Level-0 table #237: 0 bytes OK 2025/10/31-17:15:35.341393 7fee83fff6c0 Delete type=0 #302
2025/09/18-17:24:08.917842 7f7f29bff6c0 Delete type=0 #235 2025/10/31-17:25:23.726570 7fee837fe6c0 Level-0 table #307: started
2025/09/18-17:24:09.119729 7f7f29bff6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at '!items!zUYIVOuFpRur9aAR' @ 109 : 1 2025/10/31-17:25:23.726600 7fee837fe6c0 Level-0 table #307: 0 bytes OK
2025/09/18-17:24:09.119743 7f7f29bff6c0 Compacting 1@0 + 0@1 files 2025/10/31-17:25:23.732601 7fee837fe6c0 Delete type=0 #305
2025/09/18-17:24:09.155742 7f7f29bff6c0 Generated table #238@0: 49 keys, 20052 bytes 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/09/18-17:24:09.155788 7f7f29bff6c0 Compacted 1@0 + 0@1 files => 20052 bytes
2025/09/18-17:24:09.214820 7f7f29bff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2025/09/18-17:24:09.214942 7f7f29bff6c0 Delete type=2 #205
2025/09/18-17:24:09.499501 7f7f29bff6c0 Manual compaction at level-0 from '!items!zUYIVOuFpRur9aAR' @ 109 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

View File

View File

@@ -1 +1 @@
MANIFEST-000239 MANIFEST-000308

View File

@@ -1,7 +1,7 @@
2025/09/18-17:25:25.887557 7f7f2a7fc6c0 Recovering log #236 2025/10/31-17:48:52.498674 7fee83fff6c0 Recovering log #306
2025/09/18-17:25:25.903745 7f7f2a7fc6c0 Delete type=3 #234 2025/10/31-17:48:52.552038 7fee83fff6c0 Delete type=3 #304
2025/09/18-17:25:25.903805 7f7f2a7fc6c0 Delete type=0 #236 2025/10/31-17:48:52.552201 7fee83fff6c0 Delete type=0 #306
2025/09/18-17:25:58.055681 7f7f29bff6c0 Level-0 table #242: started 2025/10/31-17:59:45.947486 7fee837fe6c0 Level-0 table #311: started
2025/09/18-17:25:58.055706 7f7f29bff6c0 Level-0 table #242: 0 bytes OK 2025/10/31-17:59:45.947539 7fee837fe6c0 Level-0 table #311: 0 bytes OK
2025/09/18-17:25:58.061636 7f7f29bff6c0 Delete type=0 #240 2025/10/31-17:59:45.954305 7fee837fe6c0 Delete type=0 #309
2025/09/18-17:25:58.076006 7f7f29bff6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end) 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)

View File

@@ -1,11 +1,7 @@
2025/09/18-11:50:45.681692 7f7f2affd6c0 Delete type=3 #1 2025/10/31-17:15:35.344437 7fee88ff86c0 Recovering log #302
2025/09/18-17:24:08.917988 7f7f29bff6c0 Level-0 table #237: started 2025/10/31-17:15:35.355082 7fee88ff86c0 Delete type=3 #300
2025/09/18-17:24:08.918018 7f7f29bff6c0 Level-0 table #237: 0 bytes OK 2025/10/31-17:15:35.355226 7fee88ff86c0 Delete type=0 #302
2025/09/18-17:24:08.983600 7f7f29bff6c0 Delete type=0 #235 2025/10/31-17:25:23.719225 7fee837fe6c0 Level-0 table #307: started
2025/09/18-17:24:09.215118 7f7f29bff6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at '!items!ysGehYm1VkMWrI22' @ 71 : 1 2025/10/31-17:25:23.719276 7fee837fe6c0 Level-0 table #307: 0 bytes OK
2025/09/18-17:24:09.215131 7f7f29bff6c0 Compacting 1@0 + 0@1 files 2025/10/31-17:25:23.726439 7fee837fe6c0 Delete type=0 #305
2025/09/18-17:24:09.251613 7f7f29bff6c0 Generated table #238@0: 17 keys, 11517 bytes 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/09/18-17:24:09.251694 7f7f29bff6c0 Compacted 1@0 + 0@1 files => 11517 bytes
2025/09/18-17:24:09.305026 7f7f29bff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2025/09/18-17:24:09.305314 7f7f29bff6c0 Delete type=2 #205
2025/09/18-17:24:09.499516 7f7f29bff6c0 Manual compaction at level-0 from '!items!ysGehYm1VkMWrI22' @ 71 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

0
packs/scenes/000247.log Normal file
View File

View File

@@ -1 +1 @@
MANIFEST-000176 MANIFEST-000245

View File

@@ -1,7 +1,7 @@
2025/09/18-17:25:25.926154 7f7f2b7fe6c0 Recovering log #173 2025/10/31-17:48:52.618472 7fee897f96c0 Recovering log #243
2025/09/18-17:25:25.941736 7f7f2b7fe6c0 Delete type=3 #171 2025/10/31-17:48:52.677972 7fee897f96c0 Delete type=3 #241
2025/09/18-17:25:25.941811 7f7f2b7fe6c0 Delete type=0 #173 2025/10/31-17:48:52.678044 7fee897f96c0 Delete type=0 #243
2025/09/18-17:25:58.069595 7f7f29bff6c0 Level-0 table #179: started 2025/10/31-17:59:45.961816 7fee837fe6c0 Level-0 table #248: started
2025/09/18-17:25:58.069627 7f7f29bff6c0 Level-0 table #179: 0 bytes OK 2025/10/31-17:59:45.961879 7fee837fe6c0 Level-0 table #248: 0 bytes OK
2025/09/18-17:25:58.075769 7f7f29bff6c0 Delete type=0 #177 2025/10/31-17:59:45.969132 7fee837fe6c0 Delete type=0 #246
2025/09/18-17:25:58.076032 7f7f29bff6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end) 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)

View File

@@ -1,11 +1,7 @@
2025/09/18-11:50:45.725670 7f7f2a7fc6c0 Delete type=3 #1 2025/10/31-17:15:35.373372 7fee83fff6c0 Recovering log #239
2025/09/18-17:24:09.049574 7f7f29bff6c0 Level-0 table #174: started 2025/10/31-17:15:35.383973 7fee83fff6c0 Delete type=3 #237
2025/09/18-17:24:09.049607 7f7f29bff6c0 Level-0 table #174: 0 bytes OK 2025/10/31-17:15:35.384156 7fee83fff6c0 Delete type=0 #239
2025/09/18-17:24:09.119551 7f7f29bff6c0 Delete type=0 #172 2025/10/31-17:25:23.757415 7fee837fe6c0 Level-0 table #244: started
2025/09/18-17:24:09.404507 7f7f29bff6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at '!scenes!FJXugdbkBpEJEdR6' @ 5 : 1 2025/10/31-17:25:23.757450 7fee837fe6c0 Level-0 table #244: 0 bytes OK
2025/09/18-17:24:09.404524 7f7f29bff6c0 Compacting 1@0 + 0@1 files 2025/10/31-17:25:23.763740 7fee837fe6c0 Delete type=0 #242
2025/09/18-17:24:09.434413 7f7f29bff6c0 Generated table #175@0: 1 keys, 1344 bytes 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/09/18-17:24:09.434448 7f7f29bff6c0 Compacted 1@0 + 0@1 files => 1344 bytes
2025/09/18-17:24:09.499220 7f7f29bff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2025/09/18-17:24:09.499350 7f7f29bff6c0 Delete type=2 #142
2025/09/18-17:24:09.499541 7f7f29bff6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 5 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

0
packs/simples/000311.log Normal file
View File

View File

@@ -1 +1 @@
MANIFEST-000240 MANIFEST-000309

View File

@@ -1,7 +1,7 @@
2025/09/18-17:25:25.906336 7f7f2bfff6c0 Recovering log #237 2025/10/31-17:48:52.555551 7fee89ffa6c0 Recovering log #307
2025/09/18-17:25:25.922455 7f7f2bfff6c0 Delete type=3 #235 2025/10/31-17:48:52.614628 7fee89ffa6c0 Delete type=3 #305
2025/09/18-17:25:25.922542 7f7f2bfff6c0 Delete type=0 #237 2025/10/31-17:48:52.614769 7fee89ffa6c0 Delete type=0 #307
2025/09/18-17:25:58.047930 7f7f29bff6c0 Level-0 table #243: started 2025/10/31-17:59:45.954529 7fee837fe6c0 Level-0 table #312: started
2025/09/18-17:25:58.048063 7f7f29bff6c0 Level-0 table #243: 0 bytes OK 2025/10/31-17:59:45.954583 7fee837fe6c0 Level-0 table #312: 0 bytes OK
2025/09/18-17:25:58.055551 7f7f29bff6c0 Delete type=0 #241 2025/10/31-17:59:45.961618 7fee837fe6c0 Delete type=0 #310
2025/09/18-17:25:58.075985 7f7f29bff6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end) 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)

View File

@@ -1,11 +1,7 @@
2025/09/18-11:50:45.701807 7f7f2a7fc6c0 Delete type=3 #1 2025/10/31-17:15:35.357938 7fee89ffa6c0 Recovering log #303
2025/09/18-17:24:08.983751 7f7f29bff6c0 Level-0 table #238: started 2025/10/31-17:15:35.368821 7fee89ffa6c0 Delete type=3 #301
2025/09/18-17:24:08.983779 7f7f29bff6c0 Level-0 table #238: 0 bytes OK 2025/10/31-17:15:35.368890 7fee89ffa6c0 Delete type=0 #303
2025/09/18-17:24:09.049421 7f7f29bff6c0 Delete type=0 #236 2025/10/31-17:25:23.712793 7fee837fe6c0 Level-0 table #308: started
2025/09/18-17:24:09.305611 7f7f29bff6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at '!items!zs67k4sxCid6oTK3' @ 80 : 1 2025/10/31-17:25:23.712885 7fee837fe6c0 Level-0 table #308: 0 bytes OK
2025/09/18-17:24:09.305631 7f7f29bff6c0 Compacting 1@0 + 0@1 files 2025/10/31-17:25:23.719052 7fee837fe6c0 Delete type=0 #306
2025/09/18-17:24:09.339316 7f7f29bff6c0 Generated table #239@0: 36 keys, 20892 bytes 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/09/18-17:24:09.339411 7f7f29bff6c0 Compacted 1@0 + 0@1 files => 20892 bytes
2025/09/18-17:24:09.404093 7f7f29bff6c0 compacted to: files[ 0 1 0 0 0 0 0 ]
2025/09/18-17:24:09.404255 7f7f29bff6c0 Delete type=2 #218
2025/09/18-17:24:09.499531 7f7f29bff6c0 Manual compaction at level-0 from '!items!zs67k4sxCid6oTK3' @ 80 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

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)", "title": "Te Deum pour Un Massacre, le Jeu de Rôles (Officiel)",
"url": "https://www.uberwald.me/gitea/public/fvtt-te-deum", "url": "https://www.uberwald.me/gitea/public/fvtt-te-deum",
"version": "13.0.1", "version": "13.0.2",
"download": "https://www.uberwald.me/gitea/public/fvtt-te-deum/releases/download/13.0.1/fvtt-te-deum-13.0.1.zip", "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", "background": "systems/fvtt-te-deum/images/ui/tdeum_welcome_page_01.webp",
"flags": { "flags": {
"hotReload": { "hotReload": {

View File

@@ -238,7 +238,11 @@
</label> </label>
<span>&nbsp;</span> <span>&nbsp;</span>
<a class="item-control item-edit" title="Editer"><i class="fas fa-edit"></i></a> <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> <a class="item-control item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
{{/if}}
</li> </li>
{{/each}} {{/each}}
</ul> </ul>

View File

@@ -18,8 +18,10 @@
<div> <div>
<ul> <ul>
<li><strong>{{alias}}</strong> attaque <strong>{{defenderName}}</strong></li>
{{#if arme}} {{#if arme}}
<label class="chat-weapon-name">Dégats {{arme.name}} : {{degats}} ({{degatsFormula}})</label> <li><label class="chat-weapon-name">Dégats {{arme.name}} : {{degats}} ({{degatsFormula}})</label></li>
{{/if}} {{/if}}
{{#if loc}} {{#if loc}}
<li>Localisation : {{loc.label}}</li> <li>Localisation : {{loc.label}}</li>
@@ -41,27 +43,29 @@
<li><strong class="chat-result-success">Réussite critique : La blessure a été augmentée d'un niveau</strong></li> <li><strong class="chat-result-success">Réussite critique : La blessure a été augmentée d'un niveau</strong></li>
{{/if}} {{/if}}
{{#if blessure}} {{#if blessure}}
<li>{{defenderName}} a subi une blessure!</li> <li><strong>{{defenderName}} a subi une blessure!</strong></li>
<li>Gravité : {{blessure.name}}</li> <li>Gravité : {{blessure.name}}</li>
{{#if (eq loc.categorie "tete")}} {{#if (eq loc.categorie "tete")}}
{{#if (gt blessure.system.value 0)}} {{#if (gt blessure.system.value 0)}}
<li><strong class="chat-result-warning">{{alias}} doit réussir un test d'Endurance de difficulté 7 ou être <li><strong class="chat-result-warning">{{defenderName}} doit réussir un test d'Endurance de difficulté 7 ou être
assomé</strong></li> assommé</strong></li>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{#if (eq loc.categorie "bras")}} {{#if (eq loc.categorie "bras")}}
{{#if (gt blessure.system.value 2)}} {{#if (gt blessure.system.value 2)}}
<li><strong class="chat-result-warning">{{alias}} lache l'objet tenu par son bras. Il doit faire un test d'endurance <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> pour l'utiliser désormais.</strong></li>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{#if (eq loc.categorie "jambe")}} {{#if (eq loc.categorie "jambe")}}
{{#if (gt blessure.system.value 2)}} {{#if (gt blessure.system.value 2)}}
<li><strong class="chat-result-warning">{{alias}} tombe au sol. Pour se relever et marcher, il doit réussir un test <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. d'Endurance à chaque tour.
</strong></li> </strong></li>
{{/if}} {{/if}}
@@ -69,14 +73,16 @@
{{#if (eq loc.categorie "main")}} {{#if (eq loc.categorie "main")}}
{{#if (gt blessure.system.value 1)}} {{#if (gt blessure.system.value 1)}}
<li><strong class="chat-result-warning">{{alias}} lache l'objet tenu par sa main. Il doit faire un test d'endurance <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> pour l'utiliser désormais.</strong></li>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{#if (eq loc.categorie "pied")}} {{#if (eq loc.categorie "pied")}}
{{#if (gt blessure.system.value 1)}} {{#if (gt blessure.system.value 1)}}
<li><strong class="chat-result-warning">{{alias}} tombe au sol. Pour se relever et marcher, il doit réussir un test <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. d'Endurance à chaque tour.
</strong></li> </strong></li>
{{/if}} {{/if}}

View File

@@ -33,6 +33,13 @@
{{#if enableProvidence}} {{#if enableProvidence}}
<li>Un niveau de Providence a été utilisé !</li> <li>Un niveau de Providence a été utilisé !</li>
{{/if}} {{/if}}
{{#if hasActions}}
<li data-tooltip="Nombre d'actions restantes, avec MG = Main Gauche">Actions restantes: {{remainingActions}}
(MG:{{remainingActionsMainGauche}})</li>
{{/if}}
{{#if arme}}
{{#if isViser}} {{#if isViser}}
<li>Bonus de visée (+1 niveau)</li> <li>Bonus de visée (+1 niveau)</li>
{{/if}} {{/if}}
@@ -45,6 +52,7 @@
{{#if allongeMalus}} {{#if allongeMalus}}
<li>Malus d'allonge: {{allongeMalus}} niveau</li> <li>Malus d'allonge: {{allongeMalus}} niveau</li>
{{/if}} {{/if}}
{{/if}}
<li>Dés: {{diceFormula}} </li> <li>Dés: {{diceFormula}} </li>
{{#if isTir}} {{#if isTir}}

View File

@@ -86,6 +86,10 @@
<input type="checkbox" id="roll-charge-a-cheval" {{checked isChargeACheval}} /> <input type="checkbox" id="roll-charge-a-cheval" {{checked isChargeACheval}} />
</div> </div>
{{/if}} {{/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"> <div class="flexrow">
<span class="roll-dialog-label">Attaque ciblée (-1 Niveau): </span> <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 class="" type="text" id="roll-attaque-ciblee" value="{{attaqueCiblee}}" data-dtype="String">
@@ -96,6 +100,13 @@
{{/select}} {{/select}}
</select> </select>
</div> </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

@@ -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>