Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
84cc59c57d | |||
e9c0fbd818 | |||
aaabb7ed75 | |||
fee7a3a9fb | |||
31517030f6 | |||
c5cbf2a6d1 | |||
a30f813d94 | |||
090f6be601 | |||
60db1f65e4 | |||
d532765d2b | |||
b6016742ae | |||
761f95d6d9 | |||
c24f4fe502 | |||
caedcf5e21 | |||
fe0814e498 | |||
544f9f467a | |||
ce5771f930 | |||
93b8325bb9 | |||
48be65e7fd |
@ -27,7 +27,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
version: ${{steps.get_version.outputs.version-without-v}}
|
version: ${{steps.get_version.outputs.version-without-v}}
|
||||||
url: https://www.uberwald.me/gitea/${{gitea.repository}}
|
url: https://www.uberwald.me/gitea/${{gitea.repository}}
|
||||||
manifest: https://www.uberwald.me/gitea/public/${{gitea.repository}}/releases/download/latest/system.json
|
manifest: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/latest/system.json
|
||||||
download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-te-deum-${{github.event.release.tag_name}}.zip
|
download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-te-deum-${{github.event.release.tag_name}}.zip
|
||||||
|
|
||||||
# Create a zip file with all files required by the module to add to the release
|
# Create a zip file with all files required by the module to add to the release
|
||||||
|
11
README.md
@ -1,10 +1,18 @@
|
|||||||
# Système Foundry pour Te Deum pour un massacre (French RPG, Open Sesam Games, Official)
|
# Système Foundry pour Te Deum pour un Massacre (French RPG, Open Sesame Games, Official)
|
||||||
|
|
||||||
This is a base game system with functionnal character sheets for the game Te Deum pour un massacre.
|
This is a base game system with functionnal character sheets for the game Te Deum pour un massacre.
|
||||||
|
|
||||||
# Contributions
|
# Contributions
|
||||||
|
|
||||||
- Original code realised by Uberwald (https://www.uberwald.me/)
|
- Original code realised by Uberwald (https://www.uberwald.me/)
|
||||||
|
|
||||||
|
Snapshot of the system :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
# Copyright mentions
|
# Copyright mentions
|
||||||
|
|
||||||
Copyright 2025 Open Sesame Games
|
Copyright 2025 Open Sesame Games
|
||||||
All rights reserved
|
All rights reserved
|
||||||
|
|
||||||
@ -13,5 +21,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|||||||
Te Deum pour un massacre is a game written by Jean-Philippe Jaworski. The author retains his moral rights regarding this work in both print and digital formats.
|
Te Deum pour un massacre is a game written by Jean-Philippe Jaworski. The author retains his moral rights regarding this work in both print and digital formats.
|
||||||
|
|
||||||
# Requests or Problems
|
# Requests or Problems
|
||||||
|
|
||||||
Please report any requests or problems you have at contact@open-sesame.games
|
Please report any requests or problems you have at contact@open-sesame.games
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 171 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 29 KiB |
25
changelog.md
@ -0,0 +1,25 @@
|
|||||||
|
# 12.0.23
|
||||||
|
|
||||||
|
- Correction sur les jets réussie en tir
|
||||||
|
- Correction sur le dés négatif pour les échecs critiques
|
||||||
|
- Correction sur l'XP et édition de l'XP en mode MJ
|
||||||
|
|
||||||
|
# 12.0.22
|
||||||
|
|
||||||
|
- Correction pour les armes d'hast
|
||||||
|
- Correction sur la zone libre d'équipement
|
||||||
|
- Bouton + pour créer un équipement à nouveau opérationnel
|
||||||
|
- Modification de la gestion des jets en combat, avec gestion opposition ou degats immédiats
|
||||||
|
- Gestion du genre dans la création de personnage
|
||||||
|
|
||||||
|
# 12.0.21
|
||||||
|
|
||||||
|
- Creation de PNJ OK
|
||||||
|
|
||||||
|
# 12.0.20
|
||||||
|
|
||||||
|
- Corrections sur la création de perso
|
||||||
|
|
||||||
|
# 12.0.19
|
||||||
|
|
||||||
|
- Initial release !
|
BIN
images/icons/appliquer-degats.webp
Normal file
After Width: | Height: | Size: 31 KiB |
@ -56,7 +56,9 @@ export class TeDeumActorPJSheet extends ActorSheet {
|
|||||||
santeModifier: this.actor.getSanteModifier(),
|
santeModifier: this.actor.getSanteModifier(),
|
||||||
educations: this.actor.getEducations(),
|
educations: this.actor.getEducations(),
|
||||||
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
|
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
|
||||||
|
equipmentfree: await TextEditor.enrichHTML(this.object.system.equipmentfree, { async: true }),
|
||||||
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }),
|
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }),
|
||||||
|
histoire: await TextEditor.enrichHTML(this.object.system.histoire, { async: true }),
|
||||||
options: this.options,
|
options: this.options,
|
||||||
owner: this.document.isOwner,
|
owner: this.document.isOwner,
|
||||||
editScore: this.options.editScore,
|
editScore: this.options.editScore,
|
||||||
@ -95,7 +97,12 @@ export class TeDeumActorPJSheet extends ActorSheet {
|
|||||||
})
|
})
|
||||||
html.find('.item-add').click(ev => {
|
html.find('.item-add').click(ev => {
|
||||||
let dataType = $(ev.currentTarget).data("type")
|
let dataType = $(ev.currentTarget).data("type")
|
||||||
this.actor.createEmbeddedDocuments('Item', [{ name: "NewItem", type: dataType }], { renderSheet: true })
|
this.actor.createEmbeddedDocuments('Item', [{ name: "Nouveau " + dataType, type: dataType }], { renderSheet: true })
|
||||||
|
})
|
||||||
|
html.find('.competence-add').click(ev => {
|
||||||
|
let dataType = $(ev.currentTarget).data("type")
|
||||||
|
let caracKey = $(ev.currentTarget).data("carac-key")
|
||||||
|
this.actor.createEmbeddedDocuments('Item', [{ name: "Nouvelle " + dataType, type: dataType, system: {caracteristique: caracKey} }], { renderSheet: true })
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('.subactor-edit').click(ev => {
|
html.find('.subactor-edit').click(ev => {
|
||||||
|
@ -34,7 +34,7 @@ export class TeDeumActor extends Actor {
|
|||||||
return actor;
|
return actor;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.type == 'pj') {
|
if (data.type == 'pj' || data.type == 'pnj') {
|
||||||
const skills = await TeDeumUtility.loadCompendium("fvtt-te-deum.competences")
|
const skills = await TeDeumUtility.loadCompendium("fvtt-te-deum.competences")
|
||||||
data.items = data.items || []
|
data.items = data.items || []
|
||||||
for (let skill of skills) {
|
for (let skill of skills) {
|
||||||
@ -64,6 +64,14 @@ export class TeDeumActor extends Actor {
|
|||||||
|
|
||||||
super._preUpdate(changed, options, user);
|
super._preUpdate(changed, options, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getCompetenceScore(compName) {
|
||||||
|
let competence = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == compName.toLowerCase())
|
||||||
|
if (competence) {
|
||||||
|
return competence.system.score
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_onUpdate(changed, options, userId) {
|
_onUpdate(changed, options, userId) {
|
||||||
@ -119,6 +127,8 @@ export class TeDeumActor extends Actor {
|
|||||||
if (updates.length > 0) {
|
if (updates.length > 0) {
|
||||||
this.updateEmbeddedDocuments('Item', updates)
|
this.updateEmbeddedDocuments('Item', updates)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
super._onUpdate(changed, options, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -352,11 +362,13 @@ export class TeDeumActor extends Actor {
|
|||||||
providence.value = Math.min(Math.max(providence.value + value, 0), 6)
|
providence.value = Math.min(Math.max(providence.value + value, 0), 6)
|
||||||
this.update({ "system.providence": providence })
|
this.update({ "system.providence": providence })
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
modifyXP(key, value) {
|
async modifyXP(key, value) {
|
||||||
let xp = this.system.caracteristiques[key].experience
|
let xp = this.system.caracteristiques[key].experience
|
||||||
xp = Math.max(xp + value, 0)
|
xp = Math.max(xp + value, 0)
|
||||||
this.update({ [`system.caracteristiques.${key}.experience`]: xp })
|
await this.update({ [`system.caracteristiques.${key}.experience`]: xp })
|
||||||
|
this.sheet?.render(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -622,7 +634,8 @@ export class TeDeumActor extends Actor {
|
|||||||
|
|
||||||
// Setup competence + carac
|
// Setup competence + carac
|
||||||
if (!compName) {
|
if (!compName) {
|
||||||
compName = weapon.system.competence
|
let compIdx = weapon.system.competence
|
||||||
|
compName = game.system.tedeum.config.armeCompetences[compIdx]?.label
|
||||||
}
|
}
|
||||||
let competence = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == compName.toLowerCase())
|
let competence = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == compName.toLowerCase())
|
||||||
if (competence) {
|
if (competence) {
|
||||||
|
@ -11,6 +11,7 @@ export class TeDeumCharacterCreator {
|
|||||||
this.religion = undefined
|
this.religion = undefined
|
||||||
this.caracBonus = {}
|
this.caracBonus = {}
|
||||||
this.competenceBonus = {}
|
this.competenceBonus = {}
|
||||||
|
this.suiviReponses = []
|
||||||
this.competences = TeDeumUtility.getCompetencesForDropDown()
|
this.competences = TeDeumUtility.getCompetencesForDropDown()
|
||||||
|
|
||||||
for (let k in game.system.tedeum.config.caracteristiques) {
|
for (let k in game.system.tedeum.config.caracteristiques) {
|
||||||
@ -168,6 +169,8 @@ export class TeDeumCharacterCreator {
|
|||||||
let selectedResponse = question.reponses[context.responseKey]
|
let selectedResponse = question.reponses[context.responseKey]
|
||||||
let compName = context.competences[context.responseKey] || selectedResponse.compName
|
let compName = context.competences[context.responseKey] || selectedResponse.compName
|
||||||
this.increaseCompetence(compName)
|
this.increaseCompetence(compName)
|
||||||
|
|
||||||
|
this.suiviReponses.push({ etape: stage.name, question: question.question, reponse: selectedResponse.reponse, compName: compName })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,6 +374,7 @@ export class TeDeumCharacterCreator {
|
|||||||
title: "Création de personnage - La Pouponnière",
|
title: "Création de personnage - La Pouponnière",
|
||||||
subtitle: "Choix de la Pouponnière",
|
subtitle: "Choix de la Pouponnière",
|
||||||
label: "Valider le choix de la Pouponnière",
|
label: "Valider le choix de la Pouponnière",
|
||||||
|
hasGenre: false,
|
||||||
choices: pouponniereItems,
|
choices: pouponniereItems,
|
||||||
caracBonus: this.caracBonus,
|
caracBonus: this.caracBonus,
|
||||||
competenceBonus: this.competenceBonus
|
competenceBonus: this.competenceBonus
|
||||||
@ -400,11 +404,12 @@ export class TeDeumCharacterCreator {
|
|||||||
/*--------------------------------------------*/
|
/*--------------------------------------------*/
|
||||||
async renderPetitsGrimauds(stage) {
|
async renderPetitsGrimauds(stage) {
|
||||||
// Filter available pouponniere from origineSociale
|
// Filter available pouponniere from origineSociale
|
||||||
let grimaudsItems = stage.items.filter(item => item.system.accessible[this.origineSociale.id].isaccessible)
|
let grimaudsItems = stage.items.filter(item => item.system.accessible[this.origineSociale.id].isaccessible && (item.system.genre === this.sexe || item.system.genre === "Mixte"))
|
||||||
|
|
||||||
let context = {
|
let context = {
|
||||||
title: "Les Petits Grimauds",
|
title: "Les Petits Grimauds",
|
||||||
label: "Valider le choix des Petits Grimauds",
|
label: "Valider le choix des Petits Grimauds",
|
||||||
|
hasGenre: true,
|
||||||
choices: grimaudsItems,
|
choices: grimaudsItems,
|
||||||
caracBonus: this.caracBonus,
|
caracBonus: this.caracBonus,
|
||||||
competenceBonus: this.competenceBonus
|
competenceBonus: this.competenceBonus
|
||||||
@ -434,12 +439,13 @@ export class TeDeumCharacterCreator {
|
|||||||
/*--------------------------------------------*/
|
/*--------------------------------------------*/
|
||||||
async renderRosesDeLaVie(stage) {
|
async renderRosesDeLaVie(stage) {
|
||||||
// Filter available pouponniere from origineSociale
|
// Filter available pouponniere from origineSociale
|
||||||
let rosesItems = stage.items.filter(item => item.system.accessible[this.origineSociale.id].isaccessible)
|
let rosesItems = stage.items.filter(item => item.system.accessible[this.origineSociale.id].isaccessible && (item.system.genre === this.sexe || item.system.genre === "Mixte"))
|
||||||
|
|
||||||
let context = {
|
let context = {
|
||||||
title: "Création de personnage - Les Roses de la Vie",
|
title: "Création de personnage - Les Roses de la Vie",
|
||||||
label: "Valider le choix des Roses de la Vie",
|
label: "Valider le choix des Roses de la Vie",
|
||||||
choices: rosesItems,
|
choices: rosesItems,
|
||||||
|
hasGenre: true,
|
||||||
caracBonus: this.caracBonus,
|
caracBonus: this.caracBonus,
|
||||||
competenceBonus: this.competenceBonus
|
competenceBonus: this.competenceBonus
|
||||||
|
|
||||||
@ -485,6 +491,7 @@ export class TeDeumCharacterCreator {
|
|||||||
title: "Création de personnage - L'Age Viril",
|
title: "Création de personnage - L'Age Viril",
|
||||||
label: "Valider le choix de l'Age Viril",
|
label: "Valider le choix de l'Age Viril",
|
||||||
choices: ageVirilItems,
|
choices: ageVirilItems,
|
||||||
|
hasGenre: false,
|
||||||
caracBonus: this.caracBonus,
|
caracBonus: this.caracBonus,
|
||||||
competenceBonus: this.competenceBonus
|
competenceBonus: this.competenceBonus
|
||||||
}
|
}
|
||||||
@ -573,8 +580,22 @@ export class TeDeumCharacterCreator {
|
|||||||
newArgent /= this.ageViril.system.cagnotteDivider
|
newArgent /= this.ageViril.system.cagnotteDivider
|
||||||
await actor.update({ [`system.fortune.${this.origineSociale.cagnotteUnit}`]: newArgent})
|
await actor.update({ [`system.fortune.${this.origineSociale.cagnotteUnit}`]: newArgent})
|
||||||
|
|
||||||
|
let histoire = ""
|
||||||
|
for (let reponse of this.suiviReponses) {
|
||||||
|
histoire += `<p>${reponse.question}<br>${reponse.reponse} (${reponse.compName})</p>`
|
||||||
|
}
|
||||||
|
await actor.update({ "system.histoire": histoire})
|
||||||
actor.render(true)
|
actor.render(true)
|
||||||
|
|
||||||
|
context.pointsCompetence = {
|
||||||
|
"savoir": { score: actor.getCompetenceScore("Mémoriser"), label: "Savoir" },
|
||||||
|
"sensibilite": { score: actor.getCompetenceScore("Perception"), label: "Sensibilité" },
|
||||||
|
"entregent": { score: actor.getCompetenceScore("Charme"), label: "Entregent" },
|
||||||
|
"puissance": { score: actor.getCompetenceScore("Effort"), label: "Puissance" },
|
||||||
|
"complexion": { score: actor.getCompetenceScore("Endurance"), label: "Complexion" },
|
||||||
|
"adresse": { score: actor.getCompetenceScore("Initiative"), label: "Adresse" },
|
||||||
|
}
|
||||||
|
|
||||||
const content = await renderTemplate("systems/fvtt-te-deum/templates/dialogs/character-creator-finished.hbs", context)
|
const content = await renderTemplate("systems/fvtt-te-deum/templates/dialogs/character-creator-finished.hbs", context)
|
||||||
const label = "Terminer"
|
const label = "Terminer"
|
||||||
const choiceResult = await foundry.applications.api.DialogV2.wait({
|
const choiceResult = await foundry.applications.api.DialogV2.wait({
|
||||||
|
@ -5,7 +5,7 @@ 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);
|
||||||
|
@ -57,7 +57,7 @@ export const TEDEUM_CONFIG = {
|
|||||||
|
|
||||||
descriptionValeurOdd: {
|
descriptionValeurOdd: {
|
||||||
1: { valeur: 1, qualite: "Mauvais", dice: "d4", negativeDice: "d20", savoir: "Sot", sensibilite: "Obtus", entregent: "Rustaud", puissance: "Menu", complexion: "Anémique", adresse: "Empesé" },
|
1: { valeur: 1, qualite: "Mauvais", dice: "d4", negativeDice: "d20", savoir: "Sot", sensibilite: "Obtus", entregent: "Rustaud", puissance: "Menu", complexion: "Anémique", adresse: "Empesé" },
|
||||||
2: { valeur: 2, qualite: "Médiocre", dice: "d6", negativeDice: "d12", savoir: "Limité", sensibilite: "Etriqué", entregent: "Frustre", puissance: "Délicat", complexion: "Languide", adresse: "Gauche" },
|
2: { valeur: 2, qualite: "Médiocre", dice: "d6", negativeDice: "d12", savoir: "Limité", sensibilite: "Etriqué", entregent: "Fruste", puissance: "Délicat", complexion: "Languide", adresse: "Gauche" },
|
||||||
3: { valeur: 3, qualite: "Correct", dice: "d8", negativeDice: "d10", savoir: "Mêlé", sensibilite: "Ouvert", entregent: "Badin", puissance: "Membru", complexion: "Dispos", adresse: "Ingambe" },
|
3: { valeur: 3, qualite: "Correct", dice: "d8", negativeDice: "d10", savoir: "Mêlé", sensibilite: "Ouvert", entregent: "Badin", puissance: "Membru", complexion: "Dispos", adresse: "Ingambe" },
|
||||||
4: { valeur: 4, qualite: "Bon", dice: "d10", negativeDice: "d8", savoir: "Lettré", sensibilite: "Fin", entregent: "Disert", puissance: "Vigoureux", complexion: "Gaillard", adresse: "Leste" },
|
4: { valeur: 4, qualite: "Bon", dice: "d10", negativeDice: "d8", savoir: "Lettré", sensibilite: "Fin", entregent: "Disert", puissance: "Vigoureux", complexion: "Gaillard", adresse: "Leste" },
|
||||||
5: { valeur: 5, qualite: "Bon", dice: "d10", negativeDice: "d8", savoir: "Lettré", sensibilite: "Fin", entregent: "Disert", puissance: "Vigoureux", complexion: "Gaillard", adresse: "Leste" },
|
5: { valeur: 5, qualite: "Bon", dice: "d10", negativeDice: "d8", savoir: "Lettré", sensibilite: "Fin", entregent: "Disert", puissance: "Vigoureux", complexion: "Gaillard", adresse: "Leste" },
|
||||||
@ -71,7 +71,7 @@ export const TEDEUM_CONFIG = {
|
|||||||
},
|
},
|
||||||
descriptionValeur: {
|
descriptionValeur: {
|
||||||
1: { valeur: 1, qualite: "Mauvais", dice: "d4", negativeDice: "d20", savoir: "Sot", sensibilite: "Obtus", entregent: "Rustaud", puissance: "Menu", complexion: "Anémique", adresse: "Empesé" },
|
1: { valeur: 1, qualite: "Mauvais", dice: "d4", negativeDice: "d20", savoir: "Sot", sensibilite: "Obtus", entregent: "Rustaud", puissance: "Menu", complexion: "Anémique", adresse: "Empesé" },
|
||||||
2: { valeur: 2, qualite: "Médiocre", dice: "d6", negativeDice: "d12", savoir: "Limité", sensibilite: "Etriqué", entregent: "Frustre", puissance: "Délicat", complexion: "Languide", adresse: "Gauche" },
|
2: { valeur: 2, qualite: "Médiocre", dice: "d6", negativeDice: "d12", savoir: "Limité", sensibilite: "Etriqué", entregent: "Fruste", puissance: "Délicat", complexion: "Languide", adresse: "Gauche" },
|
||||||
3: { valeur: 3, qualite: "Correct", dice: "d8", negativeDice: "d10", savoir: "Mêlé", sensibilite: "Ouvert", entregent: "Badin", puissance: "Membru", complexion: "Dispos", adresse: "Ingambe" },
|
3: { valeur: 3, qualite: "Correct", dice: "d8", negativeDice: "d10", savoir: "Mêlé", sensibilite: "Ouvert", entregent: "Badin", puissance: "Membru", complexion: "Dispos", adresse: "Ingambe" },
|
||||||
4: { valeur: 4, qualite: "Bon", dice: "d10", negativeDice: "d8", savoir: "Lettré", sensibilite: "Fin", entregent: "Disert", puissance: "Vigoureux", complexion: "Gaillard", adresse: "Leste" },
|
4: { valeur: 4, qualite: "Bon", dice: "d10", negativeDice: "d8", savoir: "Lettré", sensibilite: "Fin", entregent: "Disert", puissance: "Vigoureux", complexion: "Gaillard", adresse: "Leste" },
|
||||||
5: { valeur: 5, qualite: "Excellent", dice: "d12", negativeDice: "d6", savoir: "Docte", sensibilite: "Subtil", entregent: "Galant", puissance: "Musculeux", complexion: "Sanguin", adresse: "Preste" },
|
5: { valeur: 5, qualite: "Excellent", dice: "d12", negativeDice: "d6", savoir: "Docte", sensibilite: "Subtil", entregent: "Galant", puissance: "Musculeux", complexion: "Sanguin", adresse: "Preste" },
|
||||||
@ -117,6 +117,11 @@ export const TEDEUM_CONFIG = {
|
|||||||
melee: { label: "Mêlée", value: "melee" },
|
melee: { label: "Mêlée", value: "melee" },
|
||||||
tir: { label: "Tir", value: "tir" }
|
tir: { label: "Tir", value: "tir" }
|
||||||
},
|
},
|
||||||
|
genreEducation: {
|
||||||
|
"homme": { label: "Homme", value: "Homme" },
|
||||||
|
"femme": { label: "Femme", value: "Femme" },
|
||||||
|
"mixte": { label: "Mixte", value: "Mixte" }
|
||||||
|
},
|
||||||
armeAllonges: {
|
armeAllonges: {
|
||||||
courte: { label: "Courte", value: "courte" },
|
courte: { label: "Courte", value: "courte" },
|
||||||
moyenne: { label: "Moyenne", value: "moyenne" },
|
moyenne: { label: "Moyenne", value: "moyenne" },
|
||||||
@ -153,10 +158,10 @@ export const TEDEUM_CONFIG = {
|
|||||||
livre: { label: "Livres", id: "livre", value: 100 }
|
livre: { label: "Livres", id: "livre", value: 100 }
|
||||||
},
|
},
|
||||||
etapesEducation: {
|
etapesEducation: {
|
||||||
pouponniere: { label: "La Pouponnière", value: "pouponniere", agemin: 0, agemax: 6, nbCompetences: 2, nbCaracteristiques: 3, hasQuestionnaire: true, hasDebouches: false, hasMultiplier: false, canCompetencesOpt: false },
|
pouponniere: { label: "La Pouponnière", value: "pouponniere", agemin: 0, agemax: 6, nbCompetences: 2, nbCaracteristiques: 3, hasGenre: false, hasQuestionnaire: true, hasDebouches: false, hasMultiplier: false, canCompetencesOpt: false },
|
||||||
petitsgrimauds: { label: "La classe des Petits Grimauds", value: "petitsgrimauds", agemin: 7, agemax: 12, nbCompetences: 10, nbCaracteristiques: 3, hasDebouches: false, hasQuestionnaire: true, hasMultiplier: false, canCompetencesOpt: false },
|
petitsgrimauds: { label: "La classe des Petits Grimauds", value: "petitsgrimauds", agemin: 7, agemax: 12, nbCompetences: 10, hasGenre: true, nbCaracteristiques: 3, hasDebouches: false, hasQuestionnaire: true, hasMultiplier: false, canCompetencesOpt: false },
|
||||||
rosevie: { label: "Les Roses de la Vie", value: "rosevie", agemin: 13, agemax: 16, nbCompetences: 2, nbCaracteristiques: 3, hasQuestionnaire: true, hasDebouches: true, hasMultiplier: false, canCompetencesOpt: false },
|
rosevie: { label: "Les Roses de la Vie", value: "rosevie", agemin: 13, agemax: 16, nbCompetences: 2, nbCaracteristiques: 3, hasGenre: true, hasQuestionnaire: true, hasDebouches: true, hasMultiplier: false, canCompetencesOpt: false },
|
||||||
ageviril: { label: "L'Age Viril", value: "ageviril", agemin: 17, agemax: 17, nbCompetences: 9, nbCaracteristiques: 2, hasQuestionnaire: false, hasDebouches: false, hasMultiplier: true, canCompetencesOpt: true },
|
ageviril: { label: "L'Age Viril", value: "ageviril", agemin: 17, agemax: 17, nbCompetences: 9, nbCaracteristiques: 2, hasGenre: false, hasQuestionnaire: false, hasDebouches: false, hasMultiplier: true, canCompetencesOpt: true },
|
||||||
},
|
},
|
||||||
origineSociale: {
|
origineSociale: {
|
||||||
noblesseepee: { label: "Noblesse d'épée", id: "noblesseepee", caracteristiques: { entregent: 1, puissance: 1 }, cagnotte: 10, cagnotteUnit: "livres", value: 1 },
|
noblesseepee: { label: "Noblesse d'épée", id: "noblesseepee", caracteristiques: { entregent: 1, puissance: 1 }, cagnotte: 10, cagnotteUnit: "livres", value: 1 },
|
||||||
|
@ -160,6 +160,7 @@ export class TeDeumUtility {
|
|||||||
formData.hasMultiplier = etape.hasMultiplier;
|
formData.hasMultiplier = etape.hasMultiplier;
|
||||||
formData.hasDebouches = etape.hasDebouches;
|
formData.hasDebouches = etape.hasDebouches;
|
||||||
formData.canCompetencesOpt = etape.canCompetencesOpt;
|
formData.canCompetencesOpt = etape.canCompetencesOpt;
|
||||||
|
formData.hasGenre = etape.hasGenre;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
@ -200,11 +201,13 @@ export class TeDeumUtility {
|
|||||||
ui.notifications.info("Opposition démarrée avec " + rollData.alias);
|
ui.notifications.info("Opposition démarrée avec " + rollData.alias);
|
||||||
} else {
|
} else {
|
||||||
// Perform the opposition
|
// Perform the opposition
|
||||||
let rWinner = this.currentOpposition
|
let isAttackWinner = true
|
||||||
|
let rWinner = this.currentOpposition
|
||||||
let rLooser = rollData
|
let rLooser = rollData
|
||||||
if (rWinner.total < rLooser.total) {
|
if (rWinner.total < rLooser.total) {
|
||||||
rWinner = rollData
|
rWinner = rollData
|
||||||
rLooser = this.currentOpposition
|
rLooser = this.currentOpposition
|
||||||
|
isAttackWinner = false
|
||||||
}
|
}
|
||||||
this.currentOpposition = undefined // Reset opposition
|
this.currentOpposition = undefined // Reset opposition
|
||||||
let oppositionData = {
|
let oppositionData = {
|
||||||
@ -215,14 +218,32 @@ export class TeDeumUtility {
|
|||||||
content: await renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-opposition-result.hbs`, oppositionData)
|
content: await renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-opposition-result.hbs`, oppositionData)
|
||||||
})
|
})
|
||||||
await msg.setFlag("world", "te-deum-rolldata", rollData)
|
await msg.setFlag("world", "te-deum-rolldata", rollData)
|
||||||
|
|
||||||
|
// Si le gagnant est l'attaquant, appliquer les dégats sur la victime
|
||||||
|
if ( isAttackWinner && rWinner.isSuccess && rWinner.mode == "arme" && rWinner.arme?.system.typeArme == "melee" && rWinner.defenderTokenId) {
|
||||||
|
this.appliquerDegats(rWinner)
|
||||||
|
}
|
||||||
|
|
||||||
console.log("Rolldata result", rollData)
|
console.log("Rolldata result", rollData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */ /* -------------------------------------------- */
|
||||||
|
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)
|
||||||
|
} else {
|
||||||
|
ui.notifications.error("Impossible de trouver la cible de l'attaque, aucun degats appliqué")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */ /* -------------------------------------------- */
|
/* -------------------------------------------- */ /* -------------------------------------------- */
|
||||||
static async chatListeners(html) {
|
static async chatListeners(html) {
|
||||||
|
|
||||||
html.on("click", '.chat-command-button', event => {
|
html.on("click", '.chat-command-opposition', event => {
|
||||||
let messageId = TeDeumUtility.findChatMessageId(event.currentTarget)
|
let messageId = TeDeumUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
let message = game.messages.get(messageId)
|
||||||
let rollData = message.getFlag("world", "te-deum-rolldata")
|
let rollData = message.getFlag("world", "te-deum-rolldata")
|
||||||
@ -230,6 +251,14 @@ export class TeDeumUtility {
|
|||||||
TeDeumUtility.manageOpposition(rollData, messageId)
|
TeDeumUtility.manageOpposition(rollData, messageId)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
html.on("click", '.chat-command-appliquer-degats', event => {
|
||||||
|
let messageId = TeDeumUtility.findChatMessageId(event.currentTarget)
|
||||||
|
let message = game.messages.get(messageId)
|
||||||
|
let rollData = message.getFlag("world", "te-deum-rolldata")
|
||||||
|
if (rollData) {
|
||||||
|
TeDeumUtility.appliquerDegats(rollData, messageId)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -408,10 +437,11 @@ export class TeDeumUtility {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rollData.diceSum == 1) {
|
if (rollData.diceSum == 1) {
|
||||||
let critiqueRoll = await new Roll(rollData.carac.negativeDice).roll()
|
let critiqueRoll = await new Roll(rollData.carac.negativeDice)
|
||||||
|
await critiqueRoll.evaluate()
|
||||||
await this.showDiceSoNice(critiqueRoll, game.settings.get("core", "rollMode"))
|
await this.showDiceSoNice(critiqueRoll, game.settings.get("core", "rollMode"))
|
||||||
rollData.critiqueRoll = foundry.utils.duplicate(critiqueRoll)
|
rollData.critiqueRoll = foundry.utils.duplicate(critiqueRoll)
|
||||||
if (critiqueRoll.total > rollData.competence.score) {
|
if (critiqueRoll.total > rollData.competence.system.score) {
|
||||||
rollData.isEchecCritique = true
|
rollData.isEchecCritique = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -465,18 +495,13 @@ export class TeDeumUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async processAttaqueMelee(rollData) {
|
static async processAttaqueMelee(rollData) {
|
||||||
if (rollData.arme?.system.typeArme != "melee") {
|
await this.getLocalisation(rollData)
|
||||||
return
|
let actor = game.actors.get(rollData.actorId)
|
||||||
}
|
let bDegats = actor.getBonusDegats()
|
||||||
if (rollData.isSuccess) {
|
let degatsRoll = await new Roll(rollData.arme.system.degats + "+" + bDegats.value).roll()
|
||||||
await this.getLocalisation(rollData)
|
await this.showDiceSoNice(degatsRoll, game.settings.get("core", "rollMode"))
|
||||||
let actor = game.actors.get(rollData.actorId)
|
rollData.degatsRoll = foundry.utils.duplicate(degatsRoll)
|
||||||
let bDegats = actor.getBonusDegats()
|
rollData.degats = degatsRoll.total
|
||||||
let degatsRoll = await new Roll(rollData.arme.system.degats + "+" + bDegats.value).roll()
|
|
||||||
await this.showDiceSoNice(degatsRoll, game.settings.get("core", "rollMode"))
|
|
||||||
rollData.degatsRoll = foundry.utils.duplicate(degatsRoll)
|
|
||||||
rollData.degats = degatsRoll.total
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -489,7 +514,7 @@ 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(locRoll, game.settings.get("core", "rollMode"))
|
await this.showDiceSoNice(rollData.locRoll, 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
|
||||||
}
|
}
|
||||||
@ -519,7 +544,6 @@ export class TeDeumUtility {
|
|||||||
await this.computeResults(rollData)
|
await this.computeResults(rollData)
|
||||||
|
|
||||||
await this.processAttaqueDistance(rollData)
|
await this.processAttaqueDistance(rollData)
|
||||||
await this.processAttaqueMelee(rollData)
|
|
||||||
|
|
||||||
let msg = await this.createChatWithRollMode(rollData.alias, {
|
let msg = await this.createChatWithRollMode(rollData.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-generic-result.hbs`, rollData)
|
content: await renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-generic-result.hbs`, rollData)
|
||||||
@ -535,15 +559,6 @@ export class TeDeumUtility {
|
|||||||
if (rollData.isReussiteCritique || rollData.isEchecCritique) {
|
if (rollData.isReussiteCritique || rollData.isEchecCritique) {
|
||||||
actor.modifyXP(rollData.carac.key, 1)
|
actor.modifyXP(rollData.carac.key, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// gestion degats automatique
|
|
||||||
if (rollData.arme && rollData.defenderTokenId) {
|
|
||||||
let defenderToken = canvas.tokens.placeables.find(t => t.id == rollData.defenderTokenId)
|
|
||||||
if (defenderToken) {
|
|
||||||
let actor = defenderToken.actor
|
|
||||||
await actor.appliquerDegats(rollData)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -15,6 +15,8 @@ export class TeDeumEducationSchema extends foundry.abstract.TypeDataModel {
|
|||||||
}, {})
|
}, {})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
schema.genre = new fields.StringField({required: true, initial: "Homme", choices: ["masculin", "mixte", "Homme", "Femme", "Mixte"]});
|
||||||
|
|
||||||
schema.nbChoixCarac = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 });
|
schema.nbChoixCarac = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 });
|
||||||
schema.caracteristiques = new fields.SchemaField(Array.fromRange(3, 1).reduce((caracs, i) => {
|
schema.caracteristiques = new fields.SchemaField(Array.fromRange(3, 1).reduce((caracs, i) => {
|
||||||
caracs[`carac${i}`] = new fields.SchemaField({
|
caracs[`carac${i}`] = new fields.SchemaField({
|
||||||
|
@ -40,17 +40,20 @@ export class TeDeumPJSchema extends foundry.abstract.TypeDataModel {
|
|||||||
});
|
});
|
||||||
|
|
||||||
schema.description = new fields.HTMLField({required: true, blank: true});
|
schema.description = new fields.HTMLField({required: true, blank: true});
|
||||||
|
schema.notes = new fields.HTMLField({required: true, blank: true});
|
||||||
schema.connaissances = new fields.HTMLField({required: true, blank: true});
|
schema.connaissances = new fields.HTMLField({required: true, blank: true});
|
||||||
|
schema.histoire = new fields.HTMLField({required: true, blank: true});
|
||||||
schema.vetements = new fields.HTMLField({required: true, blank: true});
|
schema.vetements = new fields.HTMLField({required: true, blank: true});
|
||||||
schema.equipmentfree = new fields.HTMLField({required: true, blank: true});
|
schema.equipmentfree = new fields.HTMLField({required: true, blank: true});
|
||||||
|
|
||||||
schema.genre = new fields.StringField({required: true, choices: game.system.tedeum.config.genre, initial: "Femme"});
|
schema.genre = new fields.StringField({required: true, choices: game.system.tedeum.config.genre, initial: "Femme"});
|
||||||
schema.age = new fields.StringField({ required: false, blank: true, initial: undefined });
|
schema.age = new fields.StringField({ required: false, blank: true, initial: "" });
|
||||||
schema.statutocial = new fields.StringField({ required: false, blank: true, initial: undefined });
|
schema.datenaissance = new fields.StringField({ required: false, blank: true, initial: "" });
|
||||||
schema.chargestitre = new fields.StringField({ required: false, blank: true, initial: undefined });
|
schema.statutocial = new fields.StringField({ required: false, blank: true, initial: "" });
|
||||||
schema.charges = new fields.StringField({ required: false, blank: true, initial: undefined });
|
schema.chargestitre = new fields.StringField({ required: false, blank: true, initial: "" });
|
||||||
schema.religion = new fields.StringField({ required: false, blank: true, initial: undefined });
|
schema.charges = new fields.StringField({ required: false, blank: true, initial: "" });
|
||||||
schema.lieunaissance = new fields.StringField({ required: false, blank: true, initial: undefined });
|
schema.religion = new fields.StringField({ required: false, blank: true, initial: "" });
|
||||||
|
schema.lieunaissance = new fields.StringField({ required: false, blank: true, initial: "" });
|
||||||
|
|
||||||
return schema;
|
return schema;
|
||||||
}
|
}
|
||||||
|
BIN
packs/aides/000072.ldb
Normal file
@ -1 +1 @@
|
|||||||
MANIFEST-000006
|
MANIFEST-000087
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
2025/02/13-22:35:49.582184 7fcc32ffd6c0 Recovering log #4
|
2025/04/05-23:14:49.037668 7f9c6affd6c0 Recovering log #86
|
||||||
2025/02/13-22:35:49.633338 7fcc32ffd6c0 Delete type=3 #2
|
2025/04/05-23:14:49.047402 7f9c6affd6c0 Delete type=0 #86
|
||||||
2025/02/13-22:35:49.633392 7fcc32ffd6c0 Delete type=0 #4
|
2025/04/05-23:14:49.047473 7f9c6affd6c0 Delete type=3 #85
|
||||||
2025/02/13-22:42:05.161388 7fcc327fc6c0 Level-0 table #9: started
|
2025/04/05-23:15:15.842682 7f9c69bff6c0 Level-0 table #90: started
|
||||||
2025/02/13-22:42:05.161406 7fcc327fc6c0 Level-0 table #9: 0 bytes OK
|
2025/04/05-23:15:15.842744 7f9c69bff6c0 Level-0 table #90: 0 bytes OK
|
||||||
2025/02/13-22:42:05.168017 7fcc327fc6c0 Delete type=0 #7
|
2025/04/05-23:15:15.848975 7f9c69bff6c0 Delete type=0 #88
|
||||||
2025/02/13-22:42:05.168186 7fcc327fc6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)
|
2025/04/05-23:15:15.860649 7f9c69bff6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)
|
||||||
2025/02/13-22:42:05.168210 7fcc327fc6c0 Manual compaction at level-1 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)
|
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
2025/02/05-20:07:00.726830 7ffae77fe6c0 Delete type=3 #1
|
2025/04/05-18:56:55.040362 7fa86b7fe6c0 Recovering log #83
|
||||||
2025/02/05-20:50:19.888688 7ffae6bff6c0 Level-0 table #5: started
|
2025/04/05-18:56:55.054999 7fa86b7fe6c0 Delete type=3 #81
|
||||||
2025/02/05-20:50:19.892050 7ffae6bff6c0 Level-0 table #5: 3651 bytes OK
|
2025/04/05-18:56:55.055109 7fa86b7fe6c0 Delete type=0 #83
|
||||||
2025/02/05-20:50:19.898356 7ffae6bff6c0 Delete type=0 #3
|
|
||||||
2025/02/05-20:50:19.924903 7ffae6bff6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end)
|
|
||||||
|
BIN
packs/aides/MANIFEST-000087
Normal file
BIN
packs/aides/lost/MANIFEST-000047
Normal file
BIN
packs/aides/lost/MANIFEST-000054
Normal file
BIN
packs/aides/lost/MANIFEST-000061
Normal file
@ -1 +1 @@
|
|||||||
MANIFEST-000109
|
MANIFEST-000189
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2025/02/13-22:35:49.132071 7fcc337fe6c0 Recovering log #107
|
2025/04/05-23:14:48.938481 7f9c6a7fc6c0 Recovering log #188
|
||||||
2025/02/13-22:35:49.187037 7fcc337fe6c0 Delete type=3 #105
|
2025/04/05-23:14:48.948878 7f9c6a7fc6c0 Delete type=0 #188
|
||||||
2025/02/13-22:35:49.187149 7fcc337fe6c0 Delete type=0 #107
|
2025/04/05-23:14:48.948933 7f9c6a7fc6c0 Delete type=3 #187
|
||||||
2025/02/13-22:42:05.116041 7fcc327fc6c0 Level-0 table #112: started
|
2025/04/05-23:15:15.775044 7f9c69bff6c0 Level-0 table #192: started
|
||||||
2025/02/13-22:42:05.116121 7fcc327fc6c0 Level-0 table #112: 0 bytes OK
|
2025/04/05-23:15:15.775079 7f9c69bff6c0 Level-0 table #192: 0 bytes OK
|
||||||
2025/02/13-22:42:05.122845 7fcc327fc6c0 Delete type=0 #110
|
2025/04/05-23:15:15.780958 7f9c69bff6c0 Delete type=0 #190
|
||||||
2025/02/13-22:42:05.142173 7fcc327fc6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end)
|
2025/04/05-23:15:15.800666 7f9c69bff6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
2025/02/05-20:07:00.600917 7ffae7fff6c0 Recovering log #103
|
2025/04/05-18:56:54.933660 7fa86affd6c0 Recovering log #185
|
||||||
2025/02/05-20:07:00.611719 7ffae7fff6c0 Delete type=3 #101
|
2025/04/05-18:56:54.943911 7fa86affd6c0 Delete type=3 #183
|
||||||
2025/02/05-20:07:00.611830 7ffae7fff6c0 Delete type=0 #103
|
2025/04/05-18:56:54.943971 7fa86affd6c0 Delete type=0 #185
|
||||||
2025/02/05-20:50:19.838224 7ffae6bff6c0 Level-0 table #108: started
|
|
||||||
2025/02/05-20:50:19.838303 7ffae6bff6c0 Level-0 table #108: 0 bytes OK
|
|
||||||
2025/02/05-20:50:19.844606 7ffae6bff6c0 Delete type=0 #106
|
|
||||||
2025/02/05-20:50:19.863174 7ffae6bff6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end)
|
|
||||||
|
BIN
packs/armes/MANIFEST-000189
Normal file
0
packs/armes/lost/000165.log
Normal file
BIN
packs/armes/lost/MANIFEST-000149
Normal file
BIN
packs/armes/lost/MANIFEST-000156
Normal file
BIN
packs/armes/lost/MANIFEST-000163
Normal file
0
packs/armures/000191.log
Normal file
@ -1 +1 @@
|
|||||||
MANIFEST-000109
|
MANIFEST-000189
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2025/02/13-22:35:49.200499 7fcc32ffd6c0 Recovering log #107
|
2025/04/05-23:14:48.952138 7f9c6affd6c0 Recovering log #188
|
||||||
2025/02/13-22:35:49.256910 7fcc32ffd6c0 Delete type=3 #105
|
2025/04/05-23:14:48.962116 7f9c6affd6c0 Delete type=0 #188
|
||||||
2025/02/13-22:35:49.256980 7fcc32ffd6c0 Delete type=0 #107
|
2025/04/05-23:14:48.962182 7f9c6affd6c0 Delete type=3 #187
|
||||||
2025/02/13-22:42:05.134786 7fcc327fc6c0 Level-0 table #112: started
|
2025/04/05-23:15:15.788075 7f9c69bff6c0 Level-0 table #192: started
|
||||||
2025/02/13-22:42:05.134811 7fcc327fc6c0 Level-0 table #112: 0 bytes OK
|
2025/04/05-23:15:15.788095 7f9c69bff6c0 Level-0 table #192: 0 bytes OK
|
||||||
2025/02/13-22:42:05.142066 7fcc327fc6c0 Delete type=0 #110
|
2025/04/05-23:15:15.794438 7f9c69bff6c0 Delete type=0 #190
|
||||||
2025/02/13-22:42:05.142204 7fcc327fc6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end)
|
2025/04/05-23:15:15.800687 7f9c69bff6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
2025/02/05-20:07:00.616342 7ffaecbf96c0 Recovering log #103
|
2025/04/05-18:56:54.946918 7fa86b7fe6c0 Recovering log #185
|
||||||
2025/02/05-20:07:00.627971 7ffaecbf96c0 Delete type=3 #101
|
2025/04/05-18:56:54.957003 7fa86b7fe6c0 Delete type=3 #183
|
||||||
2025/02/05-20:07:00.628058 7ffaecbf96c0 Delete type=0 #103
|
2025/04/05-18:56:54.957057 7fa86b7fe6c0 Delete type=0 #185
|
||||||
2025/02/05-20:50:19.844802 7ffae6bff6c0 Level-0 table #108: started
|
|
||||||
2025/02/05-20:50:19.844850 7ffae6bff6c0 Level-0 table #108: 0 bytes OK
|
|
||||||
2025/02/05-20:50:19.851086 7ffae6bff6c0 Delete type=0 #106
|
|
||||||
2025/02/05-20:50:19.863187 7ffae6bff6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end)
|
|
||||||
|
BIN
packs/armures/MANIFEST-000189
Normal file
0
packs/armures/lost/000147.log
Normal file
0
packs/armures/lost/000151.log
Normal file
0
packs/armures/lost/000158.log
Normal file
0
packs/armures/lost/000165.log
Normal file
BIN
packs/armures/lost/MANIFEST-000149
Normal file
BIN
packs/armures/lost/MANIFEST-000156
Normal file
BIN
packs/armures/lost/MANIFEST-000163
Normal file
0
packs/competences/000188.log
Normal file
@ -1 +1 @@
|
|||||||
MANIFEST-000106
|
MANIFEST-000186
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2025/02/13-22:35:49.055633 7fcc38ffa6c0 Recovering log #104
|
2025/04/05-23:14:48.923788 7f9c6bfff6c0 Recovering log #185
|
||||||
2025/02/13-22:35:49.118535 7fcc38ffa6c0 Delete type=3 #102
|
2025/04/05-23:14:48.933992 7f9c6bfff6c0 Delete type=0 #185
|
||||||
2025/02/13-22:35:49.118612 7fcc38ffa6c0 Delete type=0 #104
|
2025/04/05-23:14:48.934095 7f9c6bfff6c0 Delete type=3 #184
|
||||||
2025/02/13-22:42:05.128785 7fcc327fc6c0 Level-0 table #109: started
|
2025/04/05-23:15:15.781052 7f9c69bff6c0 Level-0 table #189: started
|
||||||
2025/02/13-22:42:05.128812 7fcc327fc6c0 Level-0 table #109: 0 bytes OK
|
2025/04/05-23:15:15.781077 7f9c69bff6c0 Level-0 table #189: 0 bytes OK
|
||||||
2025/02/13-22:42:05.134704 7fcc327fc6c0 Delete type=0 #107
|
2025/04/05-23:15:15.787996 7f9c69bff6c0 Delete type=0 #187
|
||||||
2025/02/13-22:42:05.142195 7fcc327fc6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end)
|
2025/04/05-23:15:15.800677 7f9c69bff6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
2025/02/05-20:07:00.587007 7ffaed3fa6c0 Recovering log #100
|
2025/04/05-18:56:54.918444 7fa870bfa6c0 Recovering log #182
|
||||||
2025/02/05-20:07:00.596905 7ffaed3fa6c0 Delete type=3 #98
|
2025/04/05-18:56:54.929675 7fa870bfa6c0 Delete type=3 #180
|
||||||
2025/02/05-20:07:00.596964 7ffaed3fa6c0 Delete type=0 #100
|
2025/04/05-18:56:54.929721 7fa870bfa6c0 Delete type=0 #182
|
||||||
2025/02/05-20:50:19.857097 7ffae6bff6c0 Level-0 table #105: started
|
|
||||||
2025/02/05-20:50:19.857120 7ffae6bff6c0 Level-0 table #105: 0 bytes OK
|
|
||||||
2025/02/05-20:50:19.863064 7ffae6bff6c0 Delete type=0 #103
|
|
||||||
2025/02/05-20:50:19.863205 7ffae6bff6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end)
|
|
||||||
|
BIN
packs/competences/MANIFEST-000186
Normal file
0
packs/competences/lost/000144.log
Normal file
0
packs/competences/lost/000148.log
Normal file
0
packs/competences/lost/000155.log
Normal file
0
packs/competences/lost/000162.log
Normal file
BIN
packs/competences/lost/MANIFEST-000146
Normal file
BIN
packs/competences/lost/MANIFEST-000153
Normal file
BIN
packs/competences/lost/MANIFEST-000160
Normal file
0
packs/education/000199.log
Normal file
@ -1 +1 @@
|
|||||||
MANIFEST-000114
|
MANIFEST-000197
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2025/02/13-22:35:49.263823 7fcc33fff6c0 Recovering log #112
|
2025/04/05-23:14:48.965558 7f9c6b7fe6c0 Recovering log #196
|
||||||
2025/02/13-22:35:49.318056 7fcc33fff6c0 Delete type=3 #110
|
2025/04/05-23:14:48.975684 7f9c6b7fe6c0 Delete type=0 #196
|
||||||
2025/02/13-22:35:49.318131 7fcc33fff6c0 Delete type=0 #112
|
2025/04/05-23:14:48.975771 7f9c6b7fe6c0 Delete type=3 #195
|
||||||
2025/02/13-22:42:05.122931 7fcc327fc6c0 Level-0 table #117: started
|
2025/04/05-23:15:15.794548 7f9c69bff6c0 Level-0 table #200: started
|
||||||
2025/02/13-22:42:05.122950 7fcc327fc6c0 Level-0 table #117: 0 bytes OK
|
2025/04/05-23:15:15.794568 7f9c69bff6c0 Level-0 table #200: 0 bytes OK
|
||||||
2025/02/13-22:42:05.128697 7fcc327fc6c0 Delete type=0 #115
|
2025/04/05-23:15:15.800586 7f9c69bff6c0 Delete type=0 #198
|
||||||
2025/02/13-22:42:05.142187 7fcc327fc6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end)
|
2025/04/05-23:15:15.800695 7f9c69bff6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
2025/02/05-20:07:00.631061 7ffae77fe6c0 Recovering log #108
|
2025/04/05-18:56:54.959243 7fa86bfff6c0 Recovering log #193
|
||||||
2025/02/05-20:07:00.640688 7ffae77fe6c0 Delete type=3 #106
|
2025/04/05-18:56:54.969916 7fa86bfff6c0 Delete type=3 #191
|
||||||
2025/02/05-20:07:00.640754 7ffae77fe6c0 Delete type=0 #108
|
2025/04/05-18:56:54.970132 7fa86bfff6c0 Delete type=0 #193
|
||||||
2025/02/05-20:50:19.869892 7ffae6bff6c0 Level-0 table #113: started
|
|
||||||
2025/02/05-20:50:19.869921 7ffae6bff6c0 Level-0 table #113: 0 bytes OK
|
|
||||||
2025/02/05-20:50:19.876430 7ffae6bff6c0 Delete type=0 #111
|
|
||||||
2025/02/05-20:50:19.888577 7ffae6bff6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end)
|
|
||||||
|
BIN
packs/education/MANIFEST-000197
Normal file
0
packs/education/lost/000154.log
Normal file
0
packs/education/lost/000158.log
Normal file
0
packs/education/lost/000165.log
Normal file
0
packs/education/lost/000172.log
Normal file
BIN
packs/education/lost/MANIFEST-000156
Normal file
BIN
packs/education/lost/MANIFEST-000163
Normal file
BIN
packs/education/lost/MANIFEST-000170
Normal file
0
packs/graces/000190.log
Normal file
@ -1 +1 @@
|
|||||||
MANIFEST-000108
|
MANIFEST-000188
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2025/02/13-22:35:49.333807 7fcc38ffa6c0 Recovering log #106
|
2025/04/05-23:14:48.980636 7f9c6bfff6c0 Recovering log #187
|
||||||
2025/02/13-22:35:49.390442 7fcc38ffa6c0 Delete type=3 #104
|
2025/04/05-23:14:48.991406 7f9c6bfff6c0 Delete type=0 #187
|
||||||
2025/02/13-22:35:49.390520 7fcc38ffa6c0 Delete type=0 #106
|
2025/04/05-23:14:48.991533 7f9c6bfff6c0 Delete type=3 #186
|
||||||
2025/02/13-22:42:05.142328 7fcc327fc6c0 Level-0 table #111: started
|
2025/04/05-23:15:15.806897 7f9c69bff6c0 Level-0 table #191: started
|
||||||
2025/02/13-22:42:05.142350 7fcc327fc6c0 Level-0 table #111: 0 bytes OK
|
2025/04/05-23:15:15.806941 7f9c69bff6c0 Level-0 table #191: 0 bytes OK
|
||||||
2025/02/13-22:42:05.149259 7fcc327fc6c0 Delete type=0 #109
|
2025/04/05-23:15:15.814152 7f9c69bff6c0 Delete type=0 #189
|
||||||
2025/02/13-22:42:05.168150 7fcc327fc6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end)
|
2025/04/05-23:15:15.826768 7f9c69bff6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end)
|
||||||
|