Compare commits
	
		
			7 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d462d22a0a | |||
| 710ee54531 | |||
| 7994aa7db4 | |||
| 5176b4ce87 | |||
| 3d6f195fc2 | |||
| 3693d68c24 | |||
| 16ccd2f3e1 | 
| @@ -1,3 +1,7 @@ | |||||||
|  | # 13.0.0 | ||||||
|  |  | ||||||
|  | - Support de Foundry v13 | ||||||
|  |  | ||||||
| # 12.0.23 | # 12.0.23 | ||||||
|  |  | ||||||
| - Correction sur les jets réussie en tir | - Correction sur les jets réussie en tir | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								images/icons/xpplus1.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								images/icons/xpplus1.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 8.1 KiB | 
| @@ -67,7 +67,6 @@ export class TeDeumActorPJSheet extends foundry.appv1.sheets.ActorSheet { | |||||||
|     } |     } | ||||||
|     this.formData = formData; |     this.formData = formData; | ||||||
|  |  | ||||||
|     console.log("PC : ", formData, this.object); |  | ||||||
|     return formData; |     return formData; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -100,6 +99,10 @@ export class TeDeumActorPJSheet extends foundry.appv1.sheets.ActorSheet { | |||||||
|       let dataType = $(ev.currentTarget).data("type") |       let dataType = $(ev.currentTarget).data("type") | ||||||
|       this.actor.createEmbeddedDocuments('Item', [{ name: "Nouveau " + dataType, type: dataType }], { renderSheet: true }) |       this.actor.createEmbeddedDocuments('Item', [{ name: "Nouveau " + dataType, type: dataType }], { renderSheet: true }) | ||||||
|     }) |     }) | ||||||
|  |     html.find('.blessure-add').click(ev => { | ||||||
|  |       let dataType = $(ev.currentTarget).data("type") | ||||||
|  |       this.actor.createEmbeddedDocuments('Item', [{ name: "Nouvelle " + dataType, type: dataType, system: { typeBlessure: "estafilade", localisation: "corps", value: 0, appliquee: true, description: "" } }], { renderSheet: true }) | ||||||
|  |     }) | ||||||
|     html.find('.competence-add').click(ev => { |     html.find('.competence-add').click(ev => { | ||||||
|       let dataType = $(ev.currentTarget).data("type") |       let dataType = $(ev.currentTarget).data("type") | ||||||
|       let caracKey = $(ev.currentTarget).data("carac-key") |       let caracKey = $(ev.currentTarget).data("carac-key") | ||||||
|   | |||||||
| @@ -65,9 +65,13 @@ export class TeDeumActor extends Actor { | |||||||
|     super._preUpdate(changed, options, user); |     super._preUpdate(changed, options, user); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   /* -------------------------------------------- */ | ||||||
|   getCompetenceScore(compName) { |   getCompetenceScore(compName) { | ||||||
|     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) { | ||||||
|  |       if (competence.system.isBase) { | ||||||
|  |         return this.system.caracteristiques[competence.system.caracteristique].value | ||||||
|  |       } | ||||||
|       return competence.system.score |       return competence.system.score | ||||||
|     } |     } | ||||||
|     return 0 |     return 0 | ||||||
| @@ -155,6 +159,24 @@ export class TeDeumActor extends Actor { | |||||||
|     return game.system.tedeum.config.BONUS_DEGATS[this.system.caracteristiques.puissance.value] |     return game.system.tedeum.config.BONUS_DEGATS[this.system.caracteristiques.puissance.value] | ||||||
|   } |   } | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
|  |   getAttaqueBonusDegats(rollData = undefined) { | ||||||
|  |     let base = game.system.tedeum.config.BONUS_DEGATS[this.system.caracteristiques.puissance.value].value | ||||||
|  |     let additionalBonus = 0 | ||||||
|  |     if (rollData) { | ||||||
|  |       // Spécificité armes naturelle avec gantelet | ||||||
|  |       if (rollData?.arme?.system.specificites?.poing?.hasSpec && this.items.find(item => item.type == "armure" && item.name.toLowerCase() == "gantelet" && item.system.equipe)) { | ||||||
|  |         additionalBonus += 1 | ||||||
|  |         rollData.gantelet = true | ||||||
|  |       } | ||||||
|  |       if (rollData.isChargeAPied) { | ||||||
|  |         additionalBonus += this.getCompetenceScore("course") | ||||||
|  |       } else if (rollData.isChargeACheval) { | ||||||
|  |         additionalBonus += this.getCompetenceScore("equitation") | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     return base + additionalBonus | ||||||
|  |   } | ||||||
|  |   /* -------------------------------------------- */ | ||||||
|   getNbArmures() { |   getNbArmures() { | ||||||
|     return game.system.tedeum.config.MAX_ARMURES_LOURDES[this.system.caracteristiques.puissance.value] |     return game.system.tedeum.config.MAX_ARMURES_LOURDES[this.system.caracteristiques.puissance.value] | ||||||
|   } |   } | ||||||
| @@ -266,41 +288,105 @@ export class TeDeumActor extends Actor { | |||||||
|       modTotal += blessDef.modifier |       modTotal += blessDef.modifier | ||||||
|     } |     } | ||||||
|     // Si le nombre de blessures est supérieur au score d'endurance, alors malus supplémentaire |     // Si le nombre de blessures est supérieur au score d'endurance, alors malus supplémentaire | ||||||
|     let endurance = this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "endurance") |     let enduranceScore = this.getCompetenceScore("endurance") | ||||||
|     if (blessures.length > endurance.system.score) { |     if (blessures.length > enduranceScore) { | ||||||
|       modTotal += -1 |       modTotal += -1 | ||||||
|     } |     } | ||||||
|     return modTotal |     return modTotal | ||||||
|   } |   } | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
|   async appliquerDegats(rollData) { |   async appliquerBlessure(blessureId, locId, comment = "") { | ||||||
|     let combat = this.prepareCombat() |     let blessure = game.system.tedeum.config.blessures[blessureId] | ||||||
|     rollData.defenderName = this.name |     if (!blessure) { | ||||||
|     let touche = combat[rollData.loc.id].touche |       ui.notifications.warn("Type de blessure inconnu : " + blessureId) | ||||||
|     if (rollData.degats > 0 && rollData.degats > touche) { |       console.error("Type de blessure inconnu : " + blessureId) | ||||||
|       let diff = rollData.degats - touche |       return | ||||||
|       for (let bId in game.system.tedeum.config.blessures) { |     } | ||||||
|         let blessure = game.system.tedeum.config.blessures[bId] |  | ||||||
|         if (diff >= blessure.degatsMin && diff <= blessure.degatsMax) { |  | ||||||
|     // Create a new blessure object |     // Create a new blessure object | ||||||
|     let blessureObj = { |     let blessureObj = { | ||||||
|       name: blessure.label, |       name: blessure.label, | ||||||
|       type: "blessure", |       type: "blessure", | ||||||
|       system: { |       system: { | ||||||
|               typeBlessure: bId, |         typeBlessure: blessureId, | ||||||
|  |         localisation: locId || "maindroite", | ||||||
|  |         value: blessure.value, | ||||||
|  |         appliquee: true, | ||||||
|  |         description: comment, | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     this.createEmbeddedDocuments('Item', [blessureObj]); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /* -------------------------------------------- */ | ||||||
|  |   getArmorDegatsModifier(rollData, combat) { | ||||||
|  |     let loc = combat[rollData.loc.id] | ||||||
|  |     // Sans armure | ||||||
|  |     if (loc.armures.length == 0) { | ||||||
|  |       return rollData.arme.system.degatsArmure.sansarmure | ||||||
|  |     } | ||||||
|  |     // Avec armure de cuir | ||||||
|  |     if (loc.armures.find(a => a.system.typeArmure == "cuir")) { | ||||||
|  |       return rollData.arme.system.degatsArmure.cuir | ||||||
|  |     } | ||||||
|  |     // Avec armure de maille | ||||||
|  |     if (loc.armures.find(a => a.system.typeArmure == "maille")) { | ||||||
|  |       return rollData.arme.system.degatsArmure.mailles | ||||||
|  |     } | ||||||
|  |     // Avec armure de plate | ||||||
|  |     if (loc.armures.find(a => a.system.typeArmure == "plate")) { | ||||||
|  |       return rollData.arme.system.degatsArmure.plates | ||||||
|  |     } | ||||||
|  |     return 0 | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /* -------------------------------------------- */ | ||||||
|  |   async appliquerDegats(rollData) { | ||||||
|  |     let combat = this.prepareCombat() | ||||||
|  |     rollData.defenderName = this.name | ||||||
|  |     let touche = combat[rollData.loc.id].touche | ||||||
|  |     let armorDegatModifier = this.getArmorDegatsModifier(rollData, combat) | ||||||
|  |     rollData.degats += armorDegatModifier | ||||||
|  |     rollData.armorDegatModifier = armorDegatModifier | ||||||
|  |  | ||||||
|  |     let blessureId = "indemne" | ||||||
|  |     if (rollData.degats > 0 && rollData.degats > touche) { | ||||||
|  |       let diff = rollData.degats - touche | ||||||
|  |       for (let bId in game.system.tedeum.config.blessures) { | ||||||
|  |         let blessure = game.system.tedeum.config.blessures[bId] | ||||||
|  |         if (diff >= blessure.degatsMin && diff <= blessure.degatsMax) { | ||||||
|  |           if (rollData.isReussiteCritique) { | ||||||
|  |             bId = game.system.tedeum.config.blessuresOrder[blessure.value + 1] | ||||||
|  |           } | ||||||
|  |           blessureId = bId | ||||||
|  |           break | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     if (rollData.isReussiteCritique && blessureId == "indemne") { // Critical success without degats => lightest blessure | ||||||
|  |       blessureId = "estafilade" | ||||||
|  |     } | ||||||
|  |     console.log("Appliquer dégats", rollData, combat, blessureId) | ||||||
|  |     if (blessureId != "indemne") { | ||||||
|  |       let blessure = game.system.tedeum.config.blessures[blessureId] | ||||||
|  |       // Create a new blessure object | ||||||
|  |       let blessureObj = { | ||||||
|  |         name: blessure.label, | ||||||
|  |         type: "blessure", | ||||||
|  |         system: { | ||||||
|  |           typeBlessure: blessureId, | ||||||
|           localisation: rollData.loc.id, |           localisation: rollData.loc.id, | ||||||
|  |           value: blessure.value, | ||||||
|           appliquee: true, |           appliquee: true, | ||||||
|           description: "Blessure infligée par un coup de " + rollData.arme.name + " de " + rollData.alias, |           description: "Blessure infligée par un coup de " + rollData.arme.name + " de " + rollData.alias, | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       rollData.blessure = blessureObj |       rollData.blessure = blessureObj | ||||||
|  |       rollData.touche = touche | ||||||
|       this.createEmbeddedDocuments('Item', [blessureObj]); |       this.createEmbeddedDocuments('Item', [blessureObj]); | ||||||
|     } |     } | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     // Display the relevant chat message |     // Display the relevant chat message | ||||||
|     let msg = await TeDeumUtility.createChatWithRollMode(rollData.alias, { |     let msg = await TeDeumUtility.createChatWithRollMode(rollData.alias, { | ||||||
|       content: await renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-blessure-result.hbs`, rollData) |       content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-blessure-result.hbs`, rollData) | ||||||
|     }) |     }) | ||||||
|     await msg.setFlag("world", "te-deum-rolldata", rollData) |     await msg.setFlag("world", "te-deum-rolldata", rollData) | ||||||
|   } |   } | ||||||
| @@ -334,7 +420,7 @@ export class TeDeumActor extends Actor { | |||||||
|     let providence = foundry.utils.deepClone(this.system.providence) |     let providence = foundry.utils.deepClone(this.system.providence) | ||||||
|     providence.name = "Providence" |     providence.name = "Providence" | ||||||
|     if (this.system.genre.toLowerCase() == "homme") { |     if (this.system.genre.toLowerCase() == "homme") { | ||||||
|       providence.qualite = game.system.tedeum.config.providence[providence.value].labelH |       providence.qualite = game.system.tedeum.config.providence[providence.value].labelM | ||||||
|     } else { |     } else { | ||||||
|       providence.qualite = game.system.tedeum.config.providence[providence.value].labelF |       providence.qualite = game.system.tedeum.config.providence[providence.value].labelF | ||||||
|     } |     } | ||||||
| @@ -382,6 +468,7 @@ export class TeDeumActor extends Actor { | |||||||
|     xp = Math.max(xp + value, 0) |     xp = Math.max(xp + value, 0) | ||||||
|     await this.update({ [`system.caracteristiques.${key}.experience`]: xp }) |     await this.update({ [`system.caracteristiques.${key}.experience`]: xp }) | ||||||
|     this.sheet?.render(true) |     this.sheet?.render(true) | ||||||
|  |     ui.notifications.info(`+${value} XP en ${game.system.tedeum.config.caracteristiques[key].label}`) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
| @@ -530,6 +617,15 @@ export class TeDeumActor extends Actor { | |||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
|   getInitiativeScore() { |   getInitiativeScore() { | ||||||
|     let initiative = this.items.find(it => it.type == "competence" && it.name.toLowerCase() == "initiative") |     let initiative = this.items.find(it => it.type == "competence" && it.name.toLowerCase() == "initiative") | ||||||
|  |     initiative = foundry.utils.duplicate(initiative) | ||||||
|  |     // Vérifie les armes avec bonus d'initiative | ||||||
|  |     let armes = this.getArmes() | ||||||
|  |     for (let arme of armes) { | ||||||
|  |       if (arme.system.equipe && arme.system.bonusInitiative != 0) { | ||||||
|  |         ui.notifications.info("L'arme " + arme.name + " vous confère un bonus d'initiative de " + arme.system.bonusInitiative) | ||||||
|  |         initiative.system.score += 1 | ||||||
|  |       } | ||||||
|  |     } | ||||||
|     if (initiative) { |     if (initiative) { | ||||||
|       return initiative.system.score |       return initiative.system.score | ||||||
|     } |     } | ||||||
| @@ -595,6 +691,7 @@ export class TeDeumActor extends Actor { | |||||||
|     let rollData = this.getCommonCompetence(compId) |     let rollData = this.getCommonCompetence(compId) | ||||||
|     rollData.mode = "competence" |     rollData.mode = "competence" | ||||||
|     rollData.title = rollData.competence.name |     rollData.title = rollData.competence.name | ||||||
|  |     rollData.compScore = rollData.competence.system.isBase ? this.system.caracteristiques[rollData.competence.system.caracteristique].value : rollData.competence.system.score | ||||||
|     this.startRoll(rollData).catch("Error on startRoll") |     this.startRoll(rollData).catch("Error on startRoll") | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -653,9 +750,14 @@ export class TeDeumActor extends Actor { | |||||||
|       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) { | ||||||
|         rollData.competence = competence |         rollData.competence = competence | ||||||
|  |         rollData.compScore = rollData.competence.system.isBase ? this.system.caracteristiques[rollData.competence.system.caracteristique].value : rollData.competence.system.score | ||||||
|         let c = foundry.utils.duplicate(this.system.caracteristiques[competence.system.caracteristique]) |         let c = foundry.utils.duplicate(this.system.caracteristiques[competence.system.caracteristique]) | ||||||
|         this.updateCarac(c, competence.system.caracteristique) |         this.updateCarac(c, competence.system.caracteristique) | ||||||
|         rollData.carac = c |         rollData.carac = c | ||||||
|  |         rollData.allongeLabel = game.system.tedeum.config.armeAllonges[weapon.system.allonge].label | ||||||
|  |         rollData.allongeId = "courte" | ||||||
|  |         rollData.allonges = foundry.utils.duplicate(game.system.tedeum.config.allonges[weapon.system.allonge]) | ||||||
|  |  | ||||||
|       } else { |       } else { | ||||||
|         ui.notifications.warn("Impossible de trouver la compétence " + compName) |         ui.notifications.warn("Impossible de trouver la compétence " + compName) | ||||||
|         return |         return | ||||||
|   | |||||||
| @@ -6,13 +6,14 @@ export class TeDeumCharacterCreator { | |||||||
|   async init() { |   async init() { | ||||||
|     this.stages = {} |     this.stages = {} | ||||||
|     this.currentStage = "origineSociale" |     this.currentStage = "origineSociale" | ||||||
|     this.sex = undefined |     this.sexe = undefined | ||||||
|     this.origineSociale = undefined |     this.origineSociale = undefined | ||||||
|     this.religion = undefined |     this.religion = undefined | ||||||
|     this.caracBonus = {} |     this.caracBonus = {} | ||||||
|     this.competenceBonus = {} |     this.competenceBonus = {} | ||||||
|     this.suiviReponses = [] |     this.suiviReponses = [] | ||||||
|     this.competences = TeDeumUtility.getCompetencesForDropDown() |     this.competences = TeDeumUtility.getCompetencesForDropDown() | ||||||
|  |     this.choiceSummary = {} | ||||||
|  |  | ||||||
|     for (let k in game.system.tedeum.config.caracteristiques) { |     for (let k in game.system.tedeum.config.caracteristiques) { | ||||||
|       this.caracBonus[k] = { value: 0 } |       this.caracBonus[k] = { value: 0 } | ||||||
| @@ -39,6 +40,7 @@ export class TeDeumCharacterCreator { | |||||||
|     } else { |     } else { | ||||||
|       this.competenceBonus[compName].value += 1 |       this.competenceBonus[compName].value += 1 | ||||||
|     } |     } | ||||||
|  |     this.choiceSummary[this.currentStage].competences[compName] = 1 | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /*--------------------------------------------*/ |   /*--------------------------------------------*/ | ||||||
| @@ -116,6 +118,7 @@ export class TeDeumCharacterCreator { | |||||||
|   /*--------------------------------------------*/ |   /*--------------------------------------------*/ | ||||||
|   async askQuestionnaire(stage, context) { |   async askQuestionnaire(stage, context) { | ||||||
|     context.subtitle = "Questionnaire" |     context.subtitle = "Questionnaire" | ||||||
|  |     this.choiceSummary[this.currentStage].questionnaire = {} | ||||||
|  |  | ||||||
|     for (let key in stage.system.questionnaire) { |     for (let key in stage.system.questionnaire) { | ||||||
|       let question = stage.system.questionnaire[key] |       let question = stage.system.questionnaire[key] | ||||||
| @@ -170,13 +173,14 @@ export class TeDeumCharacterCreator { | |||||||
|       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 }) |       this.suiviReponses.push({ key: this.currentStage, etape: stage.name, question: question.question, reponse: selectedResponse.reponse, compName: compName }) | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /*------------- -------------------------------*/ |   /*------------- -------------------------------*/ | ||||||
|   async askCompetences(stage, context) { |   async askCompetences(stage, context) { | ||||||
|     context.subtitle = "Choix des Compétences" |     context.subtitle = "Choix des Compétences" | ||||||
|  |     this.choiceSummary[this.currentStage].competences = {} | ||||||
|  |  | ||||||
|     context.fixedCompetences = {} |     context.fixedCompetences = {} | ||||||
|     context.selectCompetences = {} |     context.selectCompetences = {} | ||||||
| @@ -273,6 +277,10 @@ export class TeDeumCharacterCreator { | |||||||
|   /*------------- -------------------------------*/ |   /*------------- -------------------------------*/ | ||||||
|   async askCarac(stage, context) { |   async askCarac(stage, context) { | ||||||
|     context.subtitle = "Choix des Caractéristiques" |     context.subtitle = "Choix des Caractéristiques" | ||||||
|  |     this.choiceSummary[this.currentStage] = { | ||||||
|  |       caracBonus : {}, | ||||||
|  |       competences : {} | ||||||
|  |     } | ||||||
|  |  | ||||||
|     let selected = [] |     let selected = [] | ||||||
|     for (let i = 0; i < stage.system.nbChoixCarac; i++) { |     for (let i = 0; i < stage.system.nbChoixCarac; i++) { | ||||||
| @@ -312,6 +320,7 @@ export class TeDeumCharacterCreator { | |||||||
|       } |       } | ||||||
|       this.caracBonus[choiceResult.carac].value += 1 |       this.caracBonus[choiceResult.carac].value += 1 | ||||||
|       selected.push(choiceResult.carac) |       selected.push(choiceResult.carac) | ||||||
|  |       this.choiceSummary[this.currentStage].caracBonus[choiceResult.carac] = 1 | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -360,6 +369,12 @@ export class TeDeumCharacterCreator { | |||||||
|     for (let key in this.origineSociale.caracteristiques) { |     for (let key in this.origineSociale.caracteristiques) { | ||||||
|       this.caracBonus[key].value += this.origineSociale.caracteristiques[key] |       this.caracBonus[key].value += this.origineSociale.caracteristiques[key] | ||||||
|     } |     } | ||||||
|  |     this.choiceSummary['origineSociale'] = { | ||||||
|  |       sexe: this.sexe, | ||||||
|  |       religion: this.religion, | ||||||
|  |       origineSociale: this.origineSociale.label, | ||||||
|  |       caracBonus: this.caracBonus, | ||||||
|  |     } | ||||||
|     this.currentStage = "pouponniere" |     this.currentStage = "pouponniere" | ||||||
|  |  | ||||||
|   } |   } | ||||||
| @@ -388,6 +403,7 @@ export class TeDeumCharacterCreator { | |||||||
|     this.pouponniere = foundry.utils.duplicate(stage.items.find(item => item.id === choiceResult.selectedItem)) |     this.pouponniere = foundry.utils.duplicate(stage.items.find(item => item.id === choiceResult.selectedItem)) | ||||||
|     context.title = `La Pouponnière - ${this.pouponniere.name}` |     context.title = `La Pouponnière - ${this.pouponniere.name}` | ||||||
|     TeDeumUtility.prepareEducationContent(this.pouponniere); |     TeDeumUtility.prepareEducationContent(this.pouponniere); | ||||||
|  |     this.choiceSummary['pouponniere'] = {} | ||||||
|  |  | ||||||
|     context.label = "Valider l'augmentation de caracteristique" |     context.label = "Valider l'augmentation de caracteristique" | ||||||
|     await this.askCarac(this.pouponniere, context) |     await this.askCarac(this.pouponniere, context) | ||||||
| @@ -581,8 +597,36 @@ export class TeDeumCharacterCreator { | |||||||
|     await actor.update({ [`system.fortune.${this.origineSociale.cagnotteUnit}`]: newArgent}) |     await actor.update({ [`system.fortune.${this.origineSociale.cagnotteUnit}`]: newArgent}) | ||||||
|  |  | ||||||
|     let histoire = "" |     let histoire = "" | ||||||
|     for (let reponse of this.suiviReponses) { |     for ( let key in this.choiceSummary) { | ||||||
|       histoire += `<p>${reponse.question}<br>${reponse.reponse} (${reponse.compName})</p>` |       let stageSummary = this.choiceSummary[key] | ||||||
|  |       if (stageSummary.sexe) { | ||||||
|  |         histoire += `<h3>Origine Sociale</h3>` | ||||||
|  |         histoire += `<p>${stageSummary.sexe} - ${stageSummary.religion} - ${stageSummary.origineSociale}</p>` | ||||||
|  |       } else { | ||||||
|  |         histoire += `<h3>${game.system.tedeum.config.etapesEducation[key].label}</h3>` | ||||||
|  |       } | ||||||
|  |       if (stageSummary.caracBonus) { | ||||||
|  |         histoire += `<p><strong>Caractéristiques : </strong><ul>` | ||||||
|  |         for (let caracKey in stageSummary.caracBonus) { | ||||||
|  |           histoire += `<li>${TeDeumUtility.upperFirst(caracKey)} +1</li>` | ||||||
|  |         } | ||||||
|  |         histoire += `</ul></p>` | ||||||
|  |       } | ||||||
|  |       if (stageSummary.competences) { | ||||||
|  |         histoire += `<p><strong>Compétences : </strong><ul>` | ||||||
|  |         for (let compName in stageSummary.competences) { | ||||||
|  |           histoire += `<li>${TeDeumUtility.upperFirst(compName)} +1</li>` | ||||||
|  |         } | ||||||
|  |         histoire += `</ul></p>` | ||||||
|  |       } | ||||||
|  |       let questions = this.suiviReponses.filter( r => r.key === key) | ||||||
|  |       if (questions.length > 0) { | ||||||
|  |         histoire += `<p><strong>Réponses au questionnaire : </strong><ul>` | ||||||
|  |         for (let question of questions) { | ||||||
|  |           histoire += `<li>${question.question} : <i>${question.reponse}</i> (${TeDeumUtility.upperFirst(question.compName)}+1)</li>` | ||||||
|  |         } | ||||||
|  |         histoire += `</ul></p>` | ||||||
|  |       } | ||||||
|     } |     } | ||||||
|     await actor.update({ "system.histoire": histoire}) |     await actor.update({ "system.histoire": histoire}) | ||||||
|     actor.render(true) |     actor.render(true) | ||||||
|   | |||||||
| @@ -15,19 +15,35 @@ export const TEDEUM_CONFIG = { | |||||||
|   { value: 10 }, { value: 30 }, { value: 50 }], |   { value: 10 }, { value: 30 }, { value: 50 }], | ||||||
|  |  | ||||||
|   LOCALISATION: { |   LOCALISATION: { | ||||||
|     "pieddroit": { label: "Pied Droit", value: 1, locMod: 0, id: "pieddroit", nbArmure: 1, score: { min: 1, max: 1 }, coord: { top: 500, left: 0 } }, |     "pieddroit": { label: "Pied Droit", value: 1, locMod: 0, id: "pieddroit", categorie: "pied", nbArmure: 1, score: { min: 1, max: 1 }, coord: { top: 500, left: 0 } }, | ||||||
|     "jambedroite": { label: "Jambe Droite", value: 1, locMod: -1, id: "jambedroite", nbArmure: 1, score: { min: 3, max: 4 }, coord: { top: 400, left: 100 } }, |     "jambedroite": { label: "Jambe Droite", value: 1, locMod: -1, id: "jambedroite", categorie: "jambe", nbArmure: 1, score: { min: 3, max: 4 }, coord: { top: 400, left: 100 } }, | ||||||
|     "jambegauche": { label: "Jambe Gauche", value: 1, locMod: -1, id: "jambegauche", nbArmure: 1, score: { min: 5, max: 6 }, coord: { top: 400, left: 300 } }, |     "jambegauche": { label: "Jambe Gauche", value: 1, locMod: -1, id: "jambegauche", categorie: "jambe", nbArmure: 1, score: { min: 5, max: 6 }, coord: { top: 400, left: 300 } }, | ||||||
|     "piedgauche": { label: "Pied Gauche", value: 1, locMod: 0, id: "piedgauche", nbArmure: 1, score: { min: 2, max: 2 }, coord: { top: 500, left: 400 } }, |     "piedgauche": { label: "Pied Gauche", value: 1, locMod: 0, id: "piedgauche", categorie: "pied", nbArmure: 1, score: { min: 2, max: 2 }, coord: { top: 500, left: 400 } }, | ||||||
|     "maindroite": { label: "Main Droite", value: 1, locMod: 0, id: "maindroite", nbArmure: 1, score: { min: 7, max: 7 }, coord: { top: 0, left: 0 } }, |     "maindroite": { label: "Main Droite", value: 1, locMod: 0, id: "maindroite", categorie: "main", nbArmure: 1, score: { min: 7, max: 7 }, coord: { top: 0, left: 0 } }, | ||||||
|     "maingauche": { label: "Main Gauche", value: 1, locMod: 0, id: "maingauche", nbArmure: 1, score: { min: 8, max: 8 }, coord: { top: 0, left: 400 } }, |     "maingauche": { label: "Main Gauche", value: 1, locMod: 0, id: "maingauche", categorie: "main", nbArmure: 1, score: { min: 8, max: 8 }, coord: { top: 0, left: 400 } }, | ||||||
|     "brasdroit": { label: "Bras Droit", value: 1, locMod: -1, id: "brasdroit", nbArmure: 2, score: { min: 9, max: 10 }, coord: { top: 200, left: 0 } }, |     "brasdroit": { label: "Bras Droit", value: 1, locMod: -1, id: "brasdroit", categorie: "bras", nbArmure: 2, score: { min: 9, max: 10 }, coord: { top: 200, left: 0 } }, | ||||||
|     "brasgauche": { label: "Bras Gauche", value: 1, locMod: -1, id: "brasgauche", nbArmure: 2, score: { min: 11, max: 12 }, coord: { top: 200, left: 400 } }, |     "brasgauche": { label: "Bras Gauche", value: 1, locMod: -1, id: "brasgauche", categorie: "bras", nbArmure: 2, score: { min: 11, max: 12 }, coord: { top: 200, left: 400 } }, | ||||||
|     "corps": { label: "Corps", value: 1, id: "corps", locMod: -2, nbArmure: 2, score: { min: 13, max: 17 }, coord: { top: 200, left: 200 } }, |     "corps": { label: "Corps", value: 1, id: "corps", categorie: "corps", locMod: -2, nbArmure: 2, score: { min: 13, max: 17 }, coord: { top: 200, left: 200 } }, | ||||||
|     "tete": { label: "Tête", value: 1, id: "tete", locMod: -2, nbArmure: 2, score: { min: 18, max: 20 }, coord: { top: 0, left: 200 } }, |     "tete": { label: "Tête", value: 1, id: "tete", categorie: "tete", locMod: -2, nbArmure: 2, score: { min: 18, max: 20 }, coord: { top: 0, left: 200 } }, | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   ATTAQUE_CIBLEES: { | ||||||
|  |     "aucune": { label: "Aucune", id: "aucune", locMod: 0, description: "Attaque non ciblée" }, | ||||||
|  |     "pieddroit": { label: "Pied Droit", id: "pieddroit", locMod: 0, description: "Attaque ciblée sur le pied droit" }, | ||||||
|  |     "jambedroite": { label: "Jambe Droite", id: "jambedroite", locMod: -1, description: "Attaque ciblée sur la jambe droite" }, | ||||||
|  |     "jambegauche": { label: "Jambe Gauche", id: "jambegauche", locMod: -1, description: "Attaque ciblée sur la jambe gauche" }, | ||||||
|  |     "piedgauche": { label: "Pied Gauche", id: "piedgauche", locMod: 0, description: "Attaque ciblée sur le pied gauche" }, | ||||||
|  |     "maindroite": { label: "Main Droite", id: "maindroite", locMod: 0, description: "Attaque ciblée sur la main droite" }, | ||||||
|  |     "maingauche": { label: "Main Gauche", id: "maingauche", locMod: 0, description: "Attaque ciblée sur la main gauche" }, | ||||||
|  |     "brasdroit": { label: "Bras Droit", id: "brasdroit", locMod: -1, description: "Attaque ciblée sur le bras droit" }, | ||||||
|  |     "brasgauche": { label: "Bras Gauche", id: "brasgauche", locMod: -1, description: "Attaque ciblée sur le bras gauche" }, | ||||||
|  |     "corps": { label: "Corps", id: "corps", locMod: -2, description: "Attaque ciblée sur le corps" }, | ||||||
|  |     "tete": { label: "Tête", id: "tete", locMod: -2, description: "Attaque ciblée sur la tête" }, | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   ARME_SPECIFICITE: { |   ARME_SPECIFICITE: { | ||||||
|  |     "poing": { label: "Poings", id: "poing", melee: true, tir: false }, | ||||||
|  |     "pied": { label: "Pieds", id: "pied", melee: true, tir: false }, | ||||||
|     "encombrante": { label: "Encombrante", id: "encombrante", melee: true, tir: true }, |     "encombrante": { label: "Encombrante", id: "encombrante", melee: true, tir: true }, | ||||||
|     "maintiendistance": { label: "Maintien à distance", id: "maintiendistance", melee: true, tir: false }, |     "maintiendistance": { label: "Maintien à distance", id: "maintiendistance", melee: true, tir: false }, | ||||||
|     "coupassomant": { label: "Coup assomant", id: "coupassomant", melee: true, tir: false }, |     "coupassomant": { label: "Coup assomant", id: "coupassomant", melee: true, tir: false }, | ||||||
| @@ -102,10 +118,10 @@ export const TEDEUM_CONFIG = { | |||||||
|     adresse: { id: "adresse", value: "adresse", label: "Adresse", description: "Cette caractéristique correspond à la rapidité et la dextérité du personnage. Elle livre le nombre d'actions qu'un personnage peut accomplir en un tour de combat et permet d'évaluer les compétences de base Initiative & Course." }, |     adresse: { id: "adresse", value: "adresse", label: "Adresse", description: "Cette caractéristique correspond à la rapidité et la dextérité du personnage. Elle livre le nombre d'actions qu'un personnage peut accomplir en un tour de combat et permet d'évaluer les compétences de base Initiative & Course." }, | ||||||
|   }, |   }, | ||||||
|   allonges: { |   allonges: { | ||||||
|     courte: { courte: { malus: 0 }, moyenne: { malus: -1 }, longue: { malus: -2 }, treslongue: { malus: 0, esquive: 2 } }, |     courte: { courte: { label: "Courte (0)", malus: 0 }, moyenne: { label: "Moyenne (-1)", malus: -1 }, longue: { label: "Longue (-2)", malus: -2 }, treslongue: { label: "Très longue (0, 2 Esquives)", malus: 0, esquive: 2 } }, | ||||||
|     moyenne: { courte: { malus: 0 }, moyenne: { malus: 0 }, longue: { malus: -1 }, treslongue: { malus: 0, esquive: 2 } }, |     moyenne: { courte: { label: "Courte (0)", malus: 0 }, moyenne: { label: "Moyenne (0)", malus: 0 }, longue: { label: "Longue (-1)", malus: -1 }, treslongue: { label: "Très longue (0, 2 Esquives)", malus: 0, esquive: 2 } }, | ||||||
|     longue: { courte: { malus: -2 }, moyenne: { malus: -1 }, longue: { malus: 0 }, treslongue: { malus: -1, esquive: 1 } }, |     longue: { courte: { label: "Courte (-2)", malus: -2 }, moyenne: { label: "Moyenne (-1)", malus: -1 }, longue: { label: "Longue (0)", malus: 0 }, treslongue: { label: "Très longue (-1, 2 Esquives)", malus: -1, esquive: 1 } }, | ||||||
|     treslongue: { courte: { malus: 0, esquive: 2 }, moyenne: { malus: 0, esquive: 2 }, longue: { malus: 0, esquive: 1 }, treslongue: { malus: 0 } }, |     treslongue: { courte: { label: "Courte (0, 2 Esquives)", malus: 0, esquive: 2 }, moyenne: { label: "Moyenne (0, 2 Esquives)", malus: 0, esquive: 2 }, longue: { label: "Longue (0, 1 Esquive)", malus: 0, esquive: 1 }, treslongue: { label: "Très longue (0)", malus: 0 } }, | ||||||
|   }, |   }, | ||||||
|   providence: [ |   providence: [ | ||||||
|     { labelM: "Brebis égarée", labelF: "Brebis égarée", value: 0, diceValue: "0" }, |     { labelM: "Brebis égarée", labelF: "Brebis égarée", value: 0, diceValue: "0" }, | ||||||
| @@ -195,13 +211,14 @@ export const TEDEUM_CONFIG = { | |||||||
|     { value: "1", label: "+1 niveau" }, |     { value: "1", label: "+1 niveau" }, | ||||||
|     { value: "2", label: "+2 niveaux" } |     { value: "2", label: "+2 niveaux" } | ||||||
|   ], |   ], | ||||||
|  |   blessuresOrder: ["indemne", "estafilade", "plaie", "plaiebeante", "plaieatroce", "tuenet", "tuenet", "tuenet", "tuenet", "tuenet"], | ||||||
|   blessures: { |   blessures: { | ||||||
|     indemne: { value: 0, label: "Indemne", key: "indemne", degatsMax: -1, count: 0, modifier: 0 }, |     indemne: { value: 0, label: "Indemne", key: "indemne", degatsMax: -1, count: 0, modifier: 0 }, | ||||||
|     estafilade: { value: 1, label: "Estafilade", key: "estafilade", degatsMin: 0, degatsMax: 2, count: 1, modifier: 0 }, |     estafilade: { value: 1, label: "Estafilade", key: "estafilade", degatsMin: 0, degatsMax: 2, count: 1, modifier: 0 }, | ||||||
|     plaie: { value: 2, label: "Plaie", key: "plaie", degatsMin: 3, degatsMax: 4, count: 1, modifier: -1 }, |     plaie: { value: 2, label: "Plaie", key: "plaie", degatsMin: 3, degatsMax: 4, count: 1, modifier: -1 }, | ||||||
|     plaiebeante: { value: 3, label: "Plaie béante", key: "plaiebeante", degatsMin: 5, degatsMax: 6, count: 1, modifier: -2 }, |     plaiebeante: { value: 3, label: "Plaie béante", key: "plaiebeante", degatsMin: 5, degatsMax: 6, count: 1, modifier: -2 }, | ||||||
|     plaieatroce: { value: 4, label: "Plaie atroce", key: "plaieatroce", degatsMin: 7, degatsMax: 8, count: 1, horsCombat: true, modifier: -12 }, |     plaieatroce: { value: 4, label: "Plaie atroce", key: "plaieatroce", degatsMin: 7, degatsMax: 8, count: 1, horsCombat: true, modifier: -12 }, | ||||||
|     tunenet: { value: 5, label: "Tué net", key: "tuenet", degatsMin: 9, degatsMax: 100, count: 1, horsCombat: true, mort: true, modifier: -12 } |     tuenet: { value: 5, label: "Tué net", key: "tuenet", degatsMin: 9, degatsMax: 100, count: 1, horsCombat: true, mort: true, modifier: -100 } | ||||||
|   }, |   }, | ||||||
|   virulence: { |   virulence: { | ||||||
|     aucune: { label: "Aucune", value: "aucune", modifier: 0 }, |     aucune: { label: "Aucune", value: "aucune", modifier: 0 }, | ||||||
|   | |||||||
| @@ -18,7 +18,8 @@ export class TeDeumUtility { | |||||||
|     Hooks.on("renderActorDirectory", (app, html, data) => { |     Hooks.on("renderActorDirectory", (app, html, data) => { | ||||||
|       if (game.user.can('ACTOR_CREATE')) { |       if (game.user.can('ACTOR_CREATE')) { | ||||||
|         const button = document.createElement('button'); |         const button = document.createElement('button'); | ||||||
|         button.style.width = '90%'; |         button.style.width = '60%'; | ||||||
|  |         button.classList.add('tedeum-create-character'); | ||||||
|         button.innerHTML = 'Créer un Personnage' |         button.innerHTML = 'Créer un Personnage' | ||||||
|         button.addEventListener('click', () => { |         button.addEventListener('click', () => { | ||||||
|           let cr = new game.system.tedeum.TeDeumCharacterCreator(); |           let cr = new game.system.tedeum.TeDeumCharacterCreator(); | ||||||
| @@ -211,7 +212,7 @@ export class TeDeumUtility { | |||||||
|       let isAttackWinner = true |       let isAttackWinner = true | ||||||
|       let rWinner = this.currentOpposition |       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 |         isAttackWinner = false | ||||||
| @@ -221,6 +222,21 @@ export class TeDeumUtility { | |||||||
|         winner: rWinner, |         winner: rWinner, | ||||||
|         looser: rLooser |         looser: rLooser | ||||||
|       } |       } | ||||||
|  |       // Update difficulty | ||||||
|  |       rWinner.difficulty = rLooser.total | ||||||
|  |       rLooser.difficulty = rWinner.total | ||||||
|  |       await this.computeResults(rWinner) | ||||||
|  |       await this.computeResults(rLooser) | ||||||
|  |       // Auto XP management when opposed | ||||||
|  |       if (rWinner.isReussiteCritique) { | ||||||
|  |         let actor = this.getActorFromRollData(rWinner) | ||||||
|  |         actor.modifyXP(rWinner.carac.key, 1) | ||||||
|  |       } | ||||||
|  |       if (rLooser.isEchecCritique) { | ||||||
|  |         let actor = this.getActorFromRollData(rLooser) | ||||||
|  |         actor.modifyXP(rLooser.carac.key, 1) | ||||||
|  |       } | ||||||
|  |  | ||||||
|       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-opposition-result.hbs`, oppositionData) |         content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-opposition-result.hbs`, oppositionData) | ||||||
|       }) |       }) | ||||||
| @@ -228,10 +244,11 @@ export class TeDeumUtility { | |||||||
|  |  | ||||||
|       // Si le gagnant est l'attaquant, appliquer les dégats sur la victime |       // 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) { |       if (isAttackWinner && rWinner.isSuccess && rWinner.mode == "arme" && rWinner.arme?.system.typeArme == "melee" && rWinner.defenderTokenId) { | ||||||
|         this.appliquerDegats(rWinner) |         await this.appliquerDegats(rWinner) | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       console.log("Rolldata result", rollData) |  | ||||||
|  |       console.log("Opposition result", rollData, isAttackWinner, oppositionData) | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -242,6 +259,12 @@ export class TeDeumUtility { | |||||||
|     if (defenderToken) { |     if (defenderToken) { | ||||||
|       let actor = defenderToken.actor |       let actor = defenderToken.actor | ||||||
|       await actor.appliquerDegats(rollData) |       await actor.appliquerDegats(rollData) | ||||||
|  |       // Attaque naturelle avec dégats inférieur à -2 | ||||||
|  |       if ((rollData?.arme?.system.specificites?.poing?.hasSpec || rollData?.arme?.system.specificites?.pied?.hasSpec) && rollData.degats < -2) { | ||||||
|  |         let attacker = this.getActorFromRollData(rollData) | ||||||
|  |         attacker.appliquerBlessure("estafilade", "maindroite", "Contusion suite à une attaque naturelle") | ||||||
|  |         ui.notifications.info(`${attacker.name} subit 1 contusion en infligeant ${rollData.degats} dégâts à mains nues`) | ||||||
|  |       } | ||||||
|     } else { |     } else { | ||||||
|       ui.notifications.error("Impossible de trouver la cible de l'attaque, aucun degats appliqué") |       ui.notifications.error("Impossible de trouver la cible de l'attaque, aucun degats appliqué") | ||||||
|     } |     } | ||||||
| @@ -266,6 +289,17 @@ export class TeDeumUtility { | |||||||
|         TeDeumUtility.appliquerDegats(rollData, messageId) |         TeDeumUtility.appliquerDegats(rollData, messageId) | ||||||
|       } |       } | ||||||
|     }) |     }) | ||||||
|  |     $(html).on("click", '.chat-command-gain-xp', event => { | ||||||
|  |       let messageId = TeDeumUtility.findChatMessageId(event.currentTarget) | ||||||
|  |       let message = game.messages.get(messageId) | ||||||
|  |       let rollData = message.getFlag("world", "te-deum-rolldata") | ||||||
|  |       if (rollData) { | ||||||
|  |         let actor = TeDeumUtility.getActorFromRollData(rollData) | ||||||
|  |         actor.modifyXP(rollData.carac.key, 1) | ||||||
|  |         // Hide this button | ||||||
|  |         event.currentTarget.style.display = 'none'; | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
| @@ -476,9 +510,18 @@ export class TeDeumUtility { | |||||||
|       if (rollData.isMouvement) { |       if (rollData.isMouvement) { | ||||||
|         localModifier -= 1 |         localModifier -= 1 | ||||||
|       } |       } | ||||||
|  |       if (rollData.arme && rollData.allongeId) { | ||||||
|  |         localModifier += rollData.allonges[rollData.allongeId].malus | ||||||
|  |         rollData.allongeMalus = rollData.allonges[rollData.allongeId].malus | ||||||
|  |         rollData.nbEsquives = rollData.allonges[rollData.allongeId]?.esquive || 0 | ||||||
|  |       } | ||||||
|  |       if (rollData.attaqueCiblee && rollData.attaqueCiblee != "aucune") { | ||||||
|  |         localModifier -= 1 | ||||||
|  |         rollData.loc = foundry.utils.duplicate(game.system.tedeum.config.LOCALISATION[rollData.attaqueCiblee]) | ||||||
|  |       } | ||||||
|       let diceBase = this.modifyDice(rollData.carac.dice, localModifier + Number(rollData.bonusMalus) + rollData.santeModifier) |       let diceBase = this.modifyDice(rollData.carac.dice, localModifier + Number(rollData.bonusMalus) + rollData.santeModifier) | ||||||
|       if (!diceBase) return; |       if (!diceBase) return; | ||||||
|       diceFormula = diceBase + "x + " + rollData.competence.system.score |       diceFormula = diceBase + "x + " + rollData.compScore | ||||||
|     } |     } | ||||||
|     if (rollData.enableProvidence) { |     if (rollData.enableProvidence) { | ||||||
|       diceFormula += " + " + rollData.providence.dice |       diceFormula += " + " + rollData.providence.dice | ||||||
| @@ -488,9 +531,12 @@ export class TeDeumUtility { | |||||||
|  |  | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
|   static async getLocalisation(rollData) { |   static async getLocalisation(rollData) { | ||||||
|     let locRoll = await new Roll("1d20").roll() |     let locRoll | ||||||
|  |     if (rollData.loc) { | ||||||
|  |       locRoll = await new Roll(String(rollData.loc.score.min)).roll() | ||||||
|  |     } else { | ||||||
|  |       locRoll = await new Roll("1d20").roll() | ||||||
|       await this.showDiceSoNice(locRoll, game.settings.get("core", "rollMode")) |       await this.showDiceSoNice(locRoll, game.settings.get("core", "rollMode")) | ||||||
|     rollData.locRoll = foundry.utils.duplicate(locRoll) |  | ||||||
|       for (let key in game.system.tedeum.config.LOCALISATION) { |       for (let key in game.system.tedeum.config.LOCALISATION) { | ||||||
|         let loc = game.system.tedeum.config.LOCALISATION[key] |         let loc = game.system.tedeum.config.LOCALISATION[key] | ||||||
|         if (locRoll.total >= loc.score.min && locRoll.total <= loc.score.max) { |         if (locRoll.total >= loc.score.min && locRoll.total <= loc.score.max) { | ||||||
| @@ -499,13 +545,16 @@ export class TeDeumUtility { | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |     rollData.locRoll = foundry.utils.duplicate(locRoll) | ||||||
|  |   } | ||||||
|  |  | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
|   static async processAttaqueMelee(rollData) { |   static async processAttaqueMelee(rollData) { | ||||||
|     await this.getLocalisation(rollData) |     await this.getLocalisation(rollData) | ||||||
|     let actor = game.actors.get(rollData.actorId) |     let actor = game.actors.get(rollData.actorId) | ||||||
|     let bDegats = actor.getBonusDegats() |     let bDegats = actor.getAttaqueBonusDegats(rollData) | ||||||
|     let degatsRoll = await new Roll(rollData.arme.system.degats + "+" + bDegats.value).roll() |     rollData.degatsFormula = rollData.arme.system.degats + "+" + bDegats | ||||||
|  |     let degatsRoll = await new Roll(rollData.degatsFormula).roll() | ||||||
|     await this.showDiceSoNice(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 | ||||||
| @@ -521,7 +570,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(rollData.locRoll, game.settings.get("core", "rollMode")) |       await this.showDiceSoNice(rollData.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 | ||||||
|     } |     } | ||||||
| @@ -536,6 +585,14 @@ 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 | ||||||
|  |     if (rollData.competence) { | ||||||
|  |       if (rollData.competence.system.isBase) { | ||||||
|  |         rollData.compScore = actor.system.caracteristiques[rollData.competence.system.caracteristique].value | ||||||
|  |       } else { | ||||||
|  |         rollData.compScore = rollData.competence.system.score | ||||||
|  |       } | ||||||
|  |     } | ||||||
|     let diceFormula = this.computeRollFormula(rollData, actor) |     let diceFormula = this.computeRollFormula(rollData, actor) | ||||||
|     if (!diceFormula) return; |     if (!diceFormula) return; | ||||||
|     console.log("RollData", rollData, diceFormula) |     console.log("RollData", rollData, diceFormula) | ||||||
| @@ -562,10 +619,6 @@ export class TeDeumUtility { | |||||||
|     if (rollData.enableProvidence) { |     if (rollData.enableProvidence) { | ||||||
|       actor.modifyProvidence(-1) |       actor.modifyProvidence(-1) | ||||||
|     } |     } | ||||||
|     // Manage XP |  | ||||||
|     if (rollData.isReussiteCritique || rollData.isEchecCritique) { |  | ||||||
|       actor.modifyXP(rollData.carac.key, 1) |  | ||||||
|     } |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ export class TeDeumBlessureSchema extends foundry.abstract.TypeDataModel { | |||||||
|     const schema = {}; |     const schema = {}; | ||||||
|  |  | ||||||
|     schema.typeBlessure = new fields.StringField({ required: true, choices: ["indemne", "estafilade", "plaie", "plaiebeante", "plaieatroce", "tuenet"], initial: "estafilade" }); |     schema.typeBlessure = new fields.StringField({ required: true, choices: ["indemne", "estafilade", "plaie", "plaiebeante", "plaieatroce", "tuenet"], initial: "estafilade" }); | ||||||
|  |     schema.value = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }) | ||||||
|     schema.localisation = new fields.StringField({ required: true, choices: ["piedgauche", "pieddroit", "jambegauche", "jambedroite", "maingauche", "maindroite", "brasgauche", "brasdroit", "tete", "corps"], initial: "corps" }); |     schema.localisation = new fields.StringField({ required: true, choices: ["piedgauche", "pieddroit", "jambegauche", "jambedroite", "maingauche", "maindroite", "brasgauche", "brasdroit", "tete", "corps"], initial: "corps" }); | ||||||
|  |  | ||||||
|     schema.description = new fields.HTMLField({ required: true, blank: true }); |     schema.description = new fields.HTMLField({ required: true, blank: true }); | ||||||
|   | |||||||
| @@ -51,7 +51,7 @@ export class TeDeumEducationSchema extends foundry.abstract.TypeDataModel { | |||||||
|             reponse: new fields.StringField({ required: true, blank: true, initial: "" }), |             reponse: new fields.StringField({ required: true, blank: true, initial: "" }), | ||||||
|             compName: new fields.StringField({ required: true, blank: true, initial: "" }), |             compName: new fields.StringField({ required: true, blank: true, initial: "" }), | ||||||
|             toSelect: new fields.BooleanField({ initial: false }), |             toSelect: new fields.BooleanField({ initial: false }), | ||||||
|             compList: new fields.SchemaField(Array.fromRange(10, 1).reduce((comps, i) => { |             compList: new fields.SchemaField(Array.fromRange(16, 1).reduce((comps, i) => { | ||||||
|               comps[`comp${i}`] = new fields.SchemaField({ |               comps[`comp${i}`] = new fields.SchemaField({ | ||||||
|                 compName: new fields.StringField({ required: true, blank: true, initial: "" }), |                 compName: new fields.StringField({ required: true, blank: true, initial: "" }), | ||||||
|               }); |               }); | ||||||
|   | |||||||
| @@ -60,9 +60,15 @@ export class TeDeumRollDialog extends Dialog { | |||||||
|     html.find('#bonusMalusPerso').change((event) => { |     html.find('#bonusMalusPerso').change((event) => { | ||||||
|       this.rollData.bonusMalusPerso = Number(event.currentTarget.value) |       this.rollData.bonusMalusPerso = Number(event.currentTarget.value) | ||||||
|     }) |     }) | ||||||
|  |     html.find('#roll-allonge').change((event) => { | ||||||
|  |       this.rollData.allongeId = event.currentTarget.value | ||||||
|  |     }) | ||||||
|     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" | ||||||
|     }) |     }) | ||||||
|  |     html.find('#roll-attaque-ciblee').change((event) => { | ||||||
|  |       this.rollData.attaqueCiblee = event.currentTarget.value || "0" | ||||||
|  |     }) | ||||||
|     html.find('#roll-bonus-malus').change((event) => { |     html.find('#roll-bonus-malus').change((event) => { | ||||||
|       this.rollData.bonusMalus = event.currentTarget.value || "0" |       this.rollData.bonusMalus = event.currentTarget.value || "0" | ||||||
|     }) |     }) | ||||||
| @@ -80,6 +86,12 @@ export class TeDeumRollDialog extends Dialog { | |||||||
|     html.find('#roll-tir-mouvement').change((event) => { |     html.find('#roll-tir-mouvement').change((event) => { | ||||||
|       this.rollData.isMouvement = event.currentTarget.checked |       this.rollData.isMouvement = event.currentTarget.checked | ||||||
|     }) |     }) | ||||||
|  |     html.find('#roll-charge-a-pied').change((event) => { | ||||||
|  |       this.rollData.isChargeAPied = event.currentTarget.checked | ||||||
|  |     }) | ||||||
|  |     html.find('#roll-charge-a-cheval').change((event) => { | ||||||
|  |       this.rollData.isChargeACheval = event.currentTarget.checked | ||||||
|  |     }) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -59,7 +59,6 @@ export class TeDeumItemSheet extends foundry.appv1.sheets.ItemSheet { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     this.options.editable = !(this.object.origin == "embeddedItem"); |     this.options.editable = !(this.object.origin == "embeddedItem"); | ||||||
|     console.log("ITEM DATA", formData, this); |  | ||||||
|     return formData; |     return formData; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1 +1 @@ | |||||||
| MANIFEST-000099 | MANIFEST-000137 | ||||||
|   | |||||||
| @@ -1,14 +1,7 @@ | |||||||
| 2025/05/09-10:15:41.735148 7fbe907f86c0 Recovering log #97 | 2025/09/18-17:25:25.945688 7f7f2affd6c0 Recovering log #134 | ||||||
| 2025/05/09-10:15:41.791781 7fbe907f86c0 Delete type=3 #95 | 2025/09/18-17:25:25.962577 7f7f2affd6c0 Delete type=3 #132 | ||||||
| 2025/05/09-10:15:41.791840 7fbe907f86c0 Delete type=0 #97 | 2025/09/18-17:25:25.962629 7f7f2affd6c0 Delete type=0 #134 | ||||||
| 2025/05/09-10:26:09.013435 7fbe8fbff6c0 Level-0 table #102: started | 2025/09/18-17:25:58.096205 7f7f29bff6c0 Level-0 table #140: started | ||||||
| 2025/05/09-10:26:09.031920 7fbe8fbff6c0 Level-0 table #102: 3728 bytes OK | 2025/09/18-17:25:58.096281 7f7f29bff6c0 Level-0 table #140: 0 bytes OK | ||||||
| 2025/05/09-10:26:09.069119 7fbe8fbff6c0 Delete type=0 #100 | 2025/09/18-17:25:58.103314 7f7f29bff6c0 Delete type=0 #138 | ||||||
| 2025/05/09-10:26:09.069442 7fbe8fbff6c0 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/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/05/09-10:26:09.069450 7fbe8fbff6c0 Compacting 1@0 + 1@1 files |  | ||||||
| 2025/05/09-10:26:09.093063 7fbe8fbff6c0 Generated table #103@0: 5 keys, 3728 bytes |  | ||||||
| 2025/05/09-10:26:09.093094 7fbe8fbff6c0 Compacted 1@0 + 1@1 files => 3728 bytes |  | ||||||
| 2025/05/09-10:26:09.137637 7fbe8fbff6c0 compacted to: files[ 0 1 0 0 0 0 0 ] |  | ||||||
| 2025/05/09-10:26:09.137778 7fbe8fbff6c0 Delete type=2 #72 |  | ||||||
| 2025/05/09-10:26:09.137982 7fbe8fbff6c0 Delete type=2 #102 |  | ||||||
| 2025/05/09-10:26:09.254090 7fbe8fbff6c0 Manual compaction at level-0 from '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 25 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,11 @@ | |||||||
| 2025/04/20-09:24:48.041836 7fa413fff6c0 Recovering log #93 | 2025/09/18-11:50:45.746719 7f7f2bfff6c0 Delete type=3 #1 | ||||||
| 2025/04/20-09:24:48.069770 7fa413fff6c0 Delete type=3 #91 | 2025/09/18-17:24:09.744265 7f7f29bff6c0 Level-0 table #135: started | ||||||
| 2025/04/20-09:24:48.069934 7fa413fff6c0 Delete type=0 #93 | 2025/09/18-17:24:09.744308 7f7f29bff6c0 Level-0 table #135: 0 bytes OK | ||||||
| 2025/04/20-09:25:06.962777 7fa4127fc6c0 Level-0 table #98: started | 2025/09/18-17:24:09.802551 7f7f29bff6c0 Delete type=0 #133 | ||||||
| 2025/04/20-09:25:06.962842 7fa4127fc6c0 Level-0 table #98: 0 bytes OK | 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/04/20-09:25:06.970328 7fa4127fc6c0 Delete type=0 #96 | 2025/09/18-17:24:09.802780 7f7f29bff6c0 Compacting 1@0 + 0@1 files | ||||||
| 2025/04/20-09:25:06.988174 7fa4127fc6c0 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.830358 7f7f29bff6c0 Generated table #136@0: 5 keys, 3728 bytes | ||||||
|  | 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-000137
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/aides/MANIFEST-000137
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000202 | MANIFEST-000240 | ||||||
|   | |||||||
| @@ -1,14 +1,7 @@ | |||||||
| 2025/05/09-10:15:41.297396 7fbe90ff96c0 Recovering log #200 | 2025/09/18-17:25:25.808742 7f7f2bfff6c0 Recovering log #237 | ||||||
| 2025/05/09-10:15:41.362108 7fbe90ff96c0 Delete type=3 #198 | 2025/09/18-17:25:25.826162 7f7f2bfff6c0 Delete type=3 #235 | ||||||
| 2025/05/09-10:15:41.362318 7fbe90ff96c0 Delete type=0 #200 | 2025/09/18-17:25:25.826217 7f7f2bfff6c0 Delete type=0 #237 | ||||||
| 2025/05/09-10:26:08.357066 7fbe8fbff6c0 Level-0 table #205: started | 2025/09/18-17:25:58.034192 7f7f29bff6c0 Level-0 table #243: started | ||||||
| 2025/05/09-10:26:08.362656 7fbe8fbff6c0 Level-0 table #205: 30743 bytes OK | 2025/09/18-17:25:58.034230 7f7f29bff6c0 Level-0 table #243: 0 bytes OK | ||||||
| 2025/05/09-10:26:08.375920 7fbe8fbff6c0 Delete type=0 #203 | 2025/09/18-17:25:58.040524 7f7f29bff6c0 Delete type=0 #241 | ||||||
| 2025/05/09-10:26:08.439160 7fbe8fbff6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at '!items!wxIHkrq98eQ3cOvp' @ 73 : 1 | 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/05/09-10:26:08.439169 7fbe8fbff6c0 Compacting 1@0 + 1@1 files |  | ||||||
| 2025/05/09-10:26:08.445806 7fbe8fbff6c0 Generated table #206@0: 38 keys, 31247 bytes |  | ||||||
| 2025/05/09-10:26:08.445836 7fbe8fbff6c0 Compacted 1@0 + 1@1 files => 31247 bytes |  | ||||||
| 2025/05/09-10:26:08.458685 7fbe8fbff6c0 compacted to: files[ 0 1 0 0 0 0 0 ] |  | ||||||
| 2025/05/09-10:26:08.458808 7fbe8fbff6c0 Delete type=2 #197 |  | ||||||
| 2025/05/09-10:26:08.458974 7fbe8fbff6c0 Delete type=2 #205 |  | ||||||
| 2025/05/09-10:26:08.486140 7fbe8fbff6c0 Manual compaction at level-0 from '!items!wxIHkrq98eQ3cOvp' @ 73 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,11 @@ | |||||||
| 2025/04/20-09:24:47.881295 7fa412ffd6c0 Recovering log #195 | 2025/09/18-11:50:45.598190 7f7f2a7fc6c0 Delete type=3 #1 | ||||||
| 2025/04/20-09:24:47.897306 7fa412ffd6c0 Delete type=3 #193 | 2025/09/18-17:24:08.419689 7f7f29bff6c0 Level-0 table #238: started | ||||||
| 2025/04/20-09:24:47.897426 7fa412ffd6c0 Delete type=0 #195 | 2025/09/18-17:24:08.419727 7f7f29bff6c0 Level-0 table #238: 0 bytes OK | ||||||
| 2025/04/20-09:25:06.915266 7fa4127fc6c0 Level-0 table #201: started | 2025/09/18-17:24:08.484925 7f7f29bff6c0 Delete type=0 #236 | ||||||
| 2025/04/20-09:25:06.915317 7fa4127fc6c0 Level-0 table #201: 0 bytes OK | 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/04/20-09:25:06.922256 7fa4127fc6c0 Delete type=0 #199 | 2025/09/18-17:24:08.766704 7f7f29bff6c0 Compacting 1@0 + 0@1 files | ||||||
| 2025/04/20-09:25:06.929081 7fa4127fc6c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end) | 2025/09/18-17:24:08.800723 7f7f29bff6c0 Generated table #239@0: 38 keys, 31247 bytes | ||||||
|  | 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-000240
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/armes/MANIFEST-000240
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000201 | MANIFEST-000239 | ||||||
|   | |||||||
| @@ -1,14 +1,7 @@ | |||||||
| 2025/05/09-10:15:41.365049 7fbe917fa6c0 Recovering log #199 | 2025/09/18-17:25:25.829687 7f7f2a7fc6c0 Recovering log #236 | ||||||
| 2025/05/09-10:15:41.456977 7fbe917fa6c0 Delete type=3 #197 | 2025/09/18-17:25:25.846790 7f7f2a7fc6c0 Delete type=3 #234 | ||||||
| 2025/05/09-10:15:41.457096 7fbe917fa6c0 Delete type=0 #199 | 2025/09/18-17:25:25.846846 7f7f2a7fc6c0 Delete type=0 #236 | ||||||
| 2025/05/09-10:26:08.314346 7fbe8fbff6c0 Level-0 table #204: started | 2025/09/18-17:25:58.026302 7f7f29bff6c0 Level-0 table #242: started | ||||||
| 2025/05/09-10:26:08.321855 7fbe8fbff6c0 Level-0 table #204: 11921 bytes OK | 2025/09/18-17:25:58.026357 7f7f29bff6c0 Level-0 table #242: 0 bytes OK | ||||||
| 2025/05/09-10:26:08.334418 7fbe8fbff6c0 Delete type=0 #202 | 2025/09/18-17:25:58.034035 7f7f29bff6c0 Delete type=0 #240 | ||||||
| 2025/05/09-10:26:08.402084 7fbe8fbff6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at '!items!ufvhWG5V8pX0qrtR' @ 54 : 1 | 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/05/09-10:26:08.402106 7fbe8fbff6c0 Compacting 1@0 + 1@1 files |  | ||||||
| 2025/05/09-10:26:08.407755 7fbe8fbff6c0 Generated table #205@0: 29 keys, 12111 bytes |  | ||||||
| 2025/05/09-10:26:08.407809 7fbe8fbff6c0 Compacted 1@0 + 1@1 files => 12111 bytes |  | ||||||
| 2025/05/09-10:26:08.419957 7fbe8fbff6c0 compacted to: files[ 0 1 0 0 0 0 0 ] |  | ||||||
| 2025/05/09-10:26:08.420095 7fbe8fbff6c0 Delete type=2 #174 |  | ||||||
| 2025/05/09-10:26:08.420237 7fbe8fbff6c0 Delete type=2 #204 |  | ||||||
| 2025/05/09-10:26:08.486117 7fbe8fbff6c0 Manual compaction at level-0 from '!items!ufvhWG5V8pX0qrtR' @ 54 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,11 @@ | |||||||
| 2025/04/20-09:24:47.903860 7fa413fff6c0 Recovering log #195 | 2025/09/18-11:50:45.617997 7f7f2a7fc6c0 Delete type=3 #1 | ||||||
| 2025/04/20-09:24:47.919442 7fa413fff6c0 Delete type=3 #193 | 2025/09/18-17:24:08.294497 7f7f29bff6c0 Level-0 table #237: started | ||||||
| 2025/04/20-09:24:47.919592 7fa413fff6c0 Delete type=0 #195 | 2025/09/18-17:24:08.294539 7f7f29bff6c0 Level-0 table #237: 0 bytes OK | ||||||
| 2025/04/20-09:25:06.908159 7fa4127fc6c0 Level-0 table #200: started | 2025/09/18-17:24:08.351872 7f7f29bff6c0 Delete type=0 #235 | ||||||
| 2025/04/20-09:25:06.908228 7fa4127fc6c0 Level-0 table #200: 0 bytes OK | 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/04/20-09:25:06.915011 7fa4127fc6c0 Delete type=0 #198 | 2025/09/18-17:24:08.582154 7f7f29bff6c0 Compacting 1@0 + 0@1 files | ||||||
| 2025/04/20-09:25:06.929064 7fa4127fc6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end) | 2025/09/18-17:24:08.616167 7f7f29bff6c0 Generated table #238@0: 29 keys, 12111 bytes | ||||||
|  | 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.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/armures/MANIFEST-000239
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/armures/MANIFEST-000239
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000198 | MANIFEST-000238 | ||||||
|   | |||||||
| @@ -1,14 +1,7 @@ | |||||||
| 2025/05/09-10:15:41.212131 7fbe907f86c0 Recovering log #196 | 2025/09/18-17:25:25.789090 7f7f2b7fe6c0 Recovering log #235 | ||||||
| 2025/05/09-10:15:41.294357 7fbe907f86c0 Delete type=3 #194 | 2025/09/18-17:25:25.805571 7f7f2b7fe6c0 Delete type=3 #233 | ||||||
| 2025/05/09-10:15:41.294415 7fbe907f86c0 Delete type=0 #196 | 2025/09/18-17:25:25.805686 7f7f2b7fe6c0 Delete type=0 #235 | ||||||
| 2025/05/09-10:26:08.334569 7fbe8fbff6c0 Level-0 table #201: started | 2025/09/18-17:25:58.040659 7f7f29bff6c0 Level-0 table #241: started | ||||||
| 2025/05/09-10:26:08.342225 7fbe8fbff6c0 Level-0 table #201: 38203 bytes OK | 2025/09/18-17:25:58.040687 7f7f29bff6c0 Level-0 table #241: 0 bytes OK | ||||||
| 2025/05/09-10:26:08.356875 7fbe8fbff6c0 Delete type=0 #199 | 2025/09/18-17:25:58.047473 7f7f29bff6c0 Delete type=0 #239 | ||||||
| 2025/05/09-10:26:08.420303 7fbe8fbff6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at '!items!yx4k7lQHGcom99mk' @ 237 : 1 | 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/05/09-10:26:08.420310 7fbe8fbff6c0 Compacting 1@0 + 1@1 files |  | ||||||
| 2025/05/09-10:26:08.426825 7fbe8fbff6c0 Generated table #202@0: 116 keys, 38485 bytes |  | ||||||
| 2025/05/09-10:26:08.426858 7fbe8fbff6c0 Compacted 1@0 + 1@1 files => 38485 bytes |  | ||||||
| 2025/05/09-10:26:08.438808 7fbe8fbff6c0 compacted to: files[ 0 1 0 0 0 0 0 ] |  | ||||||
| 2025/05/09-10:26:08.438945 7fbe8fbff6c0 Delete type=2 #171 |  | ||||||
| 2025/05/09-10:26:08.439090 7fbe8fbff6c0 Delete type=2 #201 |  | ||||||
| 2025/05/09-10:26:08.486130 7fbe8fbff6c0 Manual compaction at level-0 from '!items!yx4k7lQHGcom99mk' @ 237 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,11 @@ | |||||||
| 2025/04/20-09:24:47.857871 7fa4137fe6c0 Recovering log #192 | 2025/09/18-11:50:45.576078 7f7f2affd6c0 Delete type=3 #1 | ||||||
| 2025/04/20-09:24:47.873833 7fa4137fe6c0 Delete type=3 #190 | 2025/09/18-17:24:08.352040 7f7f29bff6c0 Level-0 table #236: started | ||||||
| 2025/04/20-09:24:47.873948 7fa4137fe6c0 Delete type=0 #192 | 2025/09/18-17:24:08.352081 7f7f29bff6c0 Level-0 table #236: 0 bytes OK | ||||||
| 2025/04/20-09:25:06.901277 7fa4127fc6c0 Level-0 table #197: started | 2025/09/18-17:24:08.419524 7f7f29bff6c0 Delete type=0 #234 | ||||||
| 2025/04/20-09:25:06.901384 7fa4127fc6c0 Level-0 table #197: 0 bytes OK | 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/04/20-09:25:06.907939 7fa4127fc6c0 Delete type=0 #195 | 2025/09/18-17:24:08.672498 7f7f29bff6c0 Compacting 1@0 + 0@1 files | ||||||
| 2025/04/20-09:25:06.929038 7fa4127fc6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end) | 2025/09/18-17:24:08.706074 7f7f29bff6c0 Generated table #237@0: 115 keys, 38139 bytes | ||||||
|  | 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.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/competences/MANIFEST-000238
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/competences/MANIFEST-000238
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000210 | MANIFEST-000249 | ||||||
|   | |||||||
| @@ -1,14 +1,7 @@ | |||||||
| 2025/05/09-10:15:41.459323 7fbe907f86c0 Recovering log #208 | 2025/09/18-17:25:25.849643 7f7f2affd6c0 Recovering log #246 | ||||||
| 2025/05/09-10:15:41.503379 7fbe907f86c0 Delete type=3 #206 | 2025/09/18-17:25:25.865539 7f7f2affd6c0 Delete type=3 #244 | ||||||
| 2025/05/09-10:15:41.503446 7fbe907f86c0 Delete type=0 #208 | 2025/09/18-17:25:25.865600 7f7f2affd6c0 Delete type=0 #246 | ||||||
| 2025/05/09-10:26:08.376101 7fbe8fbff6c0 Level-0 table #213: started | 2025/09/18-17:25:58.061760 7f7f29bff6c0 Level-0 table #252: started | ||||||
| 2025/05/09-10:26:08.388425 7fbe8fbff6c0 Level-0 table #213: 263867 bytes OK | 2025/09/18-17:25:58.061807 7f7f29bff6c0 Level-0 table #252: 0 bytes OK | ||||||
| 2025/05/09-10:26:08.401652 7fbe8fbff6c0 Delete type=0 #211 | 2025/09/18-17:25:58.069452 7f7f29bff6c0 Delete type=0 #250 | ||||||
| 2025/05/09-10:26:08.459044 7fbe8fbff6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at '!items!zGlRtP7zSnkjuuue' @ 510 : 1 | 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/05/09-10:26:08.459053 7fbe8fbff6c0 Compacting 1@0 + 1@1 files |  | ||||||
| 2025/05/09-10:26:08.472966 7fbe8fbff6c0 Generated table #214@0: 71 keys, 264215 bytes |  | ||||||
| 2025/05/09-10:26:08.472996 7fbe8fbff6c0 Compacted 1@0 + 1@1 files => 264215 bytes |  | ||||||
| 2025/05/09-10:26:08.485587 7fbe8fbff6c0 compacted to: files[ 0 1 0 0 0 0 0 ] |  | ||||||
| 2025/05/09-10:26:08.485765 7fbe8fbff6c0 Delete type=2 #205 |  | ||||||
| 2025/05/09-10:26:08.485988 7fbe8fbff6c0 Delete type=2 #213 |  | ||||||
| 2025/05/09-10:26:08.486148 7fbe8fbff6c0 Manual compaction at level-0 from '!items!zGlRtP7zSnkjuuue' @ 510 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,11 @@ | |||||||
| 2025/04/20-09:24:47.923568 7fa418ffa6c0 Recovering log #203 | 2025/09/18-11:50:45.638850 7f7f2bfff6c0 Delete type=3 #1 | ||||||
| 2025/04/20-09:24:47.940475 7fa418ffa6c0 Delete type=3 #201 | 2025/09/18-17:24:08.232941 7f7f29bff6c0 Level-0 table #247: started | ||||||
| 2025/04/20-09:24:47.940632 7fa418ffa6c0 Delete type=0 #203 | 2025/09/18-17:24:08.233014 7f7f29bff6c0 Level-0 table #247: 0 bytes OK | ||||||
| 2025/04/20-09:25:06.922414 7fa4127fc6c0 Level-0 table #209: started | 2025/09/18-17:24:08.294274 7f7f29bff6c0 Delete type=0 #245 | ||||||
| 2025/04/20-09:25:06.922447 7fa4127fc6c0 Level-0 table #209: 0 bytes OK | 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/04/20-09:25:06.928838 7fa4127fc6c0 Delete type=0 #207 | 2025/09/18-17:24:08.485093 7f7f29bff6c0 Compacting 1@0 + 0@1 files | ||||||
| 2025/04/20-09:25:06.929095 7fa4127fc6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end) | 2025/09/18-17:24:08.521894 7f7f29bff6c0 Generated table #248@0: 71 keys, 264331 bytes | ||||||
|  | 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.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/education/MANIFEST-000249
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/education/MANIFEST-000249
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/education/lost/000242.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/education/lost/000242.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								packs/graces/000241.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/graces/000241.log
									
									
									
									
									
										Normal file
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000201 | MANIFEST-000239 | ||||||
|   | |||||||
| @@ -1,14 +1,7 @@ | |||||||
| 2025/05/09-10:15:41.507118 7fbe91ffb6c0 Recovering log #199 | 2025/09/18-17:25:25.869600 7f7f2b7fe6c0 Recovering log #236 | ||||||
| 2025/05/09-10:15:41.563016 7fbe91ffb6c0 Delete type=3 #197 | 2025/09/18-17:25:25.884627 7f7f2b7fe6c0 Delete type=3 #234 | ||||||
| 2025/05/09-10:15:41.563136 7fbe91ffb6c0 Delete type=0 #199 | 2025/09/18-17:25:25.884728 7f7f2b7fe6c0 Delete type=0 #236 | ||||||
| 2025/05/09-10:26:08.486247 7fbe8fbff6c0 Level-0 table #204: started | 2025/09/18-17:25:58.019852 7f7f29bff6c0 Level-0 table #242: started | ||||||
| 2025/05/09-10:26:08.492712 7fbe8fbff6c0 Level-0 table #204: 20052 bytes OK | 2025/09/18-17:25:58.019893 7f7f29bff6c0 Level-0 table #242: 0 bytes OK | ||||||
| 2025/05/09-10:26:08.521869 7fbe8fbff6c0 Delete type=0 #202 | 2025/09/18-17:25:58.026069 7f7f29bff6c0 Delete type=0 #240 | ||||||
| 2025/05/09-10:26:08.657886 7fbe8fbff6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at '!items!zUYIVOuFpRur9aAR' @ 109 : 1 | 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/05/09-10:26:08.657901 7fbe8fbff6c0 Compacting 1@0 + 1@1 files |  | ||||||
| 2025/05/09-10:26:08.675906 7fbe8fbff6c0 Generated table #205@0: 49 keys, 20052 bytes |  | ||||||
| 2025/05/09-10:26:08.675933 7fbe8fbff6c0 Compacted 1@0 + 1@1 files => 20052 bytes |  | ||||||
| 2025/05/09-10:26:08.712163 7fbe8fbff6c0 compacted to: files[ 0 1 0 0 0 0 0 ] |  | ||||||
| 2025/05/09-10:26:08.712328 7fbe8fbff6c0 Delete type=2 #196 |  | ||||||
| 2025/05/09-10:26:08.712603 7fbe8fbff6c0 Delete type=2 #204 |  | ||||||
| 2025/05/09-10:26:08.869429 7fbe8fbff6c0 Manual compaction at level-0 from '!items!zUYIVOuFpRur9aAR' @ 109 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,11 @@ | |||||||
| 2025/04/20-09:24:47.948681 7fa4137fe6c0 Recovering log #194 | 2025/09/18-11:50:45.661051 7f7f2b7fe6c0 Delete type=3 #1 | ||||||
| 2025/04/20-09:24:47.965382 7fa4137fe6c0 Delete type=3 #192 | 2025/09/18-17:24:08.860133 7f7f29bff6c0 Level-0 table #237: started | ||||||
| 2025/04/20-09:24:47.965487 7fa4137fe6c0 Delete type=0 #194 | 2025/09/18-17:24:08.860169 7f7f29bff6c0 Level-0 table #237: 0 bytes OK | ||||||
| 2025/04/20-09:25:06.935620 7fa4127fc6c0 Level-0 table #200: started | 2025/09/18-17:24:08.917842 7f7f29bff6c0 Delete type=0 #235 | ||||||
| 2025/04/20-09:25:06.935652 7fa4127fc6c0 Level-0 table #200: 0 bytes OK | 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/04/20-09:25:06.942921 7fa4127fc6c0 Delete type=0 #198 | 2025/09/18-17:24:09.119743 7f7f29bff6c0 Compacting 1@0 + 0@1 files | ||||||
| 2025/04/20-09:25:06.956261 7fa4127fc6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end) | 2025/09/18-17:24:09.155742 7f7f29bff6c0 Generated table #238@0: 49 keys, 20052 bytes | ||||||
|  | 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.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/graces/MANIFEST-000239
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/graces/MANIFEST-000239
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/graces/lost/000232.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/graces/lost/000232.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								packs/maladies/000241.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/maladies/000241.log
									
									
									
									
									
										Normal file
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000201 | MANIFEST-000239 | ||||||
|   | |||||||
| @@ -1,14 +1,7 @@ | |||||||
| 2025/05/09-10:15:41.566104 7fbe917fa6c0 Recovering log #199 | 2025/09/18-17:25:25.887557 7f7f2a7fc6c0 Recovering log #236 | ||||||
| 2025/05/09-10:15:41.607068 7fbe917fa6c0 Delete type=3 #197 | 2025/09/18-17:25:25.903745 7f7f2a7fc6c0 Delete type=3 #234 | ||||||
| 2025/05/09-10:15:41.607127 7fbe917fa6c0 Delete type=0 #199 | 2025/09/18-17:25:25.903805 7f7f2a7fc6c0 Delete type=0 #236 | ||||||
| 2025/05/09-10:26:08.522102 7fbe8fbff6c0 Level-0 table #204: started | 2025/09/18-17:25:58.055681 7f7f29bff6c0 Level-0 table #242: started | ||||||
| 2025/05/09-10:26:08.533326 7fbe8fbff6c0 Level-0 table #204: 11517 bytes OK | 2025/09/18-17:25:58.055706 7f7f29bff6c0 Level-0 table #242: 0 bytes OK | ||||||
| 2025/05/09-10:26:08.560180 7fbe8fbff6c0 Delete type=0 #202 | 2025/09/18-17:25:58.061636 7f7f29bff6c0 Delete type=0 #240 | ||||||
| 2025/05/09-10:26:08.712861 7fbe8fbff6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at '!items!ysGehYm1VkMWrI22' @ 71 : 1 | 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/05/09-10:26:08.712889 7fbe8fbff6c0 Compacting 1@0 + 1@1 files |  | ||||||
| 2025/05/09-10:26:08.728740 7fbe8fbff6c0 Generated table #205@0: 17 keys, 11517 bytes |  | ||||||
| 2025/05/09-10:26:08.728771 7fbe8fbff6c0 Compacted 1@0 + 1@1 files => 11517 bytes |  | ||||||
| 2025/05/09-10:26:08.762648 7fbe8fbff6c0 compacted to: files[ 0 1 0 0 0 0 0 ] |  | ||||||
| 2025/05/09-10:26:08.762817 7fbe8fbff6c0 Delete type=2 #196 |  | ||||||
| 2025/05/09-10:26:08.762965 7fbe8fbff6c0 Delete type=2 #204 |  | ||||||
| 2025/05/09-10:26:08.869440 7fbe8fbff6c0 Manual compaction at level-0 from '!items!ysGehYm1VkMWrI22' @ 71 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,11 @@ | |||||||
| 2025/04/20-09:24:47.972234 7fa412ffd6c0 Recovering log #194 | 2025/09/18-11:50:45.681692 7f7f2affd6c0 Delete type=3 #1 | ||||||
| 2025/04/20-09:24:47.989602 7fa412ffd6c0 Delete type=3 #192 | 2025/09/18-17:24:08.917988 7f7f29bff6c0 Level-0 table #237: started | ||||||
| 2025/04/20-09:24:47.989720 7fa412ffd6c0 Delete type=0 #194 | 2025/09/18-17:24:08.918018 7f7f29bff6c0 Level-0 table #237: 0 bytes OK | ||||||
| 2025/04/20-09:25:06.929262 7fa4127fc6c0 Level-0 table #200: started | 2025/09/18-17:24:08.983600 7f7f29bff6c0 Delete type=0 #235 | ||||||
| 2025/04/20-09:25:06.929306 7fa4127fc6c0 Level-0 table #200: 0 bytes OK | 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/04/20-09:25:06.935454 7fa4127fc6c0 Delete type=0 #198 | 2025/09/18-17:24:09.215131 7f7f29bff6c0 Compacting 1@0 + 0@1 files | ||||||
| 2025/04/20-09:25:06.956241 7fa4127fc6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end) | 2025/09/18-17:24:09.251613 7f7f29bff6c0 Generated table #238@0: 17 keys, 11517 bytes | ||||||
|  | 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.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/maladies/MANIFEST-000239
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/maladies/MANIFEST-000239
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/maladies/lost/000232.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/maladies/lost/000232.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								packs/scenes/000178.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/scenes/000178.log
									
									
									
									
									
										Normal file
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000138 | MANIFEST-000176 | ||||||
|   | |||||||
| @@ -1,14 +1,7 @@ | |||||||
| 2025/05/09-10:15:41.675033 7fbe91ffb6c0 Recovering log #136 | 2025/09/18-17:25:25.926154 7f7f2b7fe6c0 Recovering log #173 | ||||||
| 2025/05/09-10:15:41.730910 7fbe91ffb6c0 Delete type=3 #134 | 2025/09/18-17:25:25.941736 7f7f2b7fe6c0 Delete type=3 #171 | ||||||
| 2025/05/09-10:15:41.730997 7fbe91ffb6c0 Delete type=0 #136 | 2025/09/18-17:25:25.941811 7f7f2b7fe6c0 Delete type=0 #173 | ||||||
| 2025/05/09-10:26:08.601281 7fbe8fbff6c0 Level-0 table #141: started | 2025/09/18-17:25:58.069595 7f7f29bff6c0 Level-0 table #179: started | ||||||
| 2025/05/09-10:26:08.620048 7fbe8fbff6c0 Level-0 table #141: 1344 bytes OK | 2025/09/18-17:25:58.069627 7f7f29bff6c0 Level-0 table #179: 0 bytes OK | ||||||
| 2025/05/09-10:26:08.657679 7fbe8fbff6c0 Delete type=0 #139 | 2025/09/18-17:25:58.075769 7f7f29bff6c0 Delete type=0 #177 | ||||||
| 2025/05/09-10:26:08.818209 7fbe8fbff6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at '!scenes!FJXugdbkBpEJEdR6' @ 5 : 1 | 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/05/09-10:26:08.818224 7fbe8fbff6c0 Compacting 1@0 + 1@1 files |  | ||||||
| 2025/05/09-10:26:08.836037 7fbe8fbff6c0 Generated table #142@0: 1 keys, 1344 bytes |  | ||||||
| 2025/05/09-10:26:08.836067 7fbe8fbff6c0 Compacted 1@0 + 1@1 files => 1344 bytes |  | ||||||
| 2025/05/09-10:26:08.869141 7fbe8fbff6c0 compacted to: files[ 0 1 0 0 0 0 0 ] |  | ||||||
| 2025/05/09-10:26:08.869252 7fbe8fbff6c0 Delete type=2 #111 |  | ||||||
| 2025/05/09-10:26:08.869366 7fbe8fbff6c0 Delete type=2 #141 |  | ||||||
| 2025/05/09-10:26:08.869479 7fbe8fbff6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 5 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,11 @@ | |||||||
| 2025/04/20-09:24:48.018535 7fa418ffa6c0 Recovering log #132 | 2025/09/18-11:50:45.725670 7f7f2a7fc6c0 Delete type=3 #1 | ||||||
| 2025/04/20-09:24:48.034352 7fa418ffa6c0 Delete type=3 #130 | 2025/09/18-17:24:09.049574 7f7f29bff6c0 Level-0 table #174: started | ||||||
| 2025/04/20-09:24:48.034446 7fa418ffa6c0 Delete type=0 #132 | 2025/09/18-17:24:09.049607 7f7f29bff6c0 Level-0 table #174: 0 bytes OK | ||||||
| 2025/04/20-09:25:06.943076 7fa4127fc6c0 Level-0 table #137: started | 2025/09/18-17:24:09.119551 7f7f29bff6c0 Delete type=0 #172 | ||||||
| 2025/04/20-09:25:06.943110 7fa4127fc6c0 Level-0 table #137: 0 bytes OK | 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/04/20-09:25:06.949678 7fa4127fc6c0 Delete type=0 #135 | 2025/09/18-17:24:09.404524 7f7f29bff6c0 Compacting 1@0 + 0@1 files | ||||||
| 2025/04/20-09:25:06.956277 7fa4127fc6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end) | 2025/09/18-17:24:09.434413 7f7f29bff6c0 Generated table #175@0: 1 keys, 1344 bytes | ||||||
|  | 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.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/scenes/MANIFEST-000176
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/scenes/MANIFEST-000176
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/scenes/lost/000169.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/scenes/lost/000169.log
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/simples/000242.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/simples/000242.log
									
									
									
									
									
										Normal file
									
								
							| @@ -1 +1 @@ | |||||||
| MANIFEST-000201 | MANIFEST-000240 | ||||||
|   | |||||||
| @@ -1,14 +1,7 @@ | |||||||
| 2025/05/09-10:15:41.609264 7fbe90ff96c0 Recovering log #199 | 2025/09/18-17:25:25.906336 7f7f2bfff6c0 Recovering log #237 | ||||||
| 2025/05/09-10:15:41.672478 7fbe90ff96c0 Delete type=3 #197 | 2025/09/18-17:25:25.922455 7f7f2bfff6c0 Delete type=3 #235 | ||||||
| 2025/05/09-10:15:41.672535 7fbe90ff96c0 Delete type=0 #199 | 2025/09/18-17:25:25.922542 7f7f2bfff6c0 Delete type=0 #237 | ||||||
| 2025/05/09-10:26:08.560441 7fbe8fbff6c0 Level-0 table #204: started | 2025/09/18-17:25:58.047930 7f7f29bff6c0 Level-0 table #243: started | ||||||
| 2025/05/09-10:26:08.570942 7fbe8fbff6c0 Level-0 table #204: 21176 bytes OK | 2025/09/18-17:25:58.048063 7f7f29bff6c0 Level-0 table #243: 0 bytes OK | ||||||
| 2025/05/09-10:26:08.601073 7fbe8fbff6c0 Delete type=0 #202 | 2025/09/18-17:25:58.055551 7f7f29bff6c0 Delete type=0 #241 | ||||||
| 2025/05/09-10:26:08.763048 7fbe8fbff6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at '!items!zs67k4sxCid6oTK3' @ 80 : 1 | 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/05/09-10:26:08.763056 7fbe8fbff6c0 Compacting 1@0 + 1@1 files |  | ||||||
| 2025/05/09-10:26:08.781378 7fbe8fbff6c0 Generated table #205@0: 36 keys, 21176 bytes |  | ||||||
| 2025/05/09-10:26:08.781419 7fbe8fbff6c0 Compacted 1@0 + 1@1 files => 21176 bytes |  | ||||||
| 2025/05/09-10:26:08.817648 7fbe8fbff6c0 compacted to: files[ 0 1 0 0 0 0 0 ] |  | ||||||
| 2025/05/09-10:26:08.817810 7fbe8fbff6c0 Delete type=2 #196 |  | ||||||
| 2025/05/09-10:26:08.818060 7fbe8fbff6c0 Delete type=2 #204 |  | ||||||
| 2025/05/09-10:26:08.869448 7fbe8fbff6c0 Manual compaction at level-0 from '!items!zs67k4sxCid6oTK3' @ 80 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end) |  | ||||||
|   | |||||||
| @@ -1,7 +1,11 @@ | |||||||
| 2025/04/20-09:24:47.993946 7fa413fff6c0 Recovering log #194 | 2025/09/18-11:50:45.701807 7f7f2a7fc6c0 Delete type=3 #1 | ||||||
| 2025/04/20-09:24:48.011487 7fa413fff6c0 Delete type=3 #192 | 2025/09/18-17:24:08.983751 7f7f29bff6c0 Level-0 table #238: started | ||||||
| 2025/04/20-09:24:48.011668 7fa413fff6c0 Delete type=0 #194 | 2025/09/18-17:24:08.983779 7f7f29bff6c0 Level-0 table #238: 0 bytes OK | ||||||
| 2025/04/20-09:25:06.949829 7fa4127fc6c0 Level-0 table #200: started | 2025/09/18-17:24:09.049421 7f7f29bff6c0 Delete type=0 #236 | ||||||
| 2025/04/20-09:25:06.949863 7fa4127fc6c0 Level-0 table #200: 0 bytes OK | 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/04/20-09:25:06.956072 7fa4127fc6c0 Delete type=0 #198 | 2025/09/18-17:24:09.305631 7f7f29bff6c0 Compacting 1@0 + 0@1 files | ||||||
| 2025/04/20-09:25:06.956290 7fa4127fc6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end) | 2025/09/18-17:24:09.339316 7f7f29bff6c0 Generated table #239@0: 36 keys, 20892 bytes | ||||||
|  | 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.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/simples/MANIFEST-000240
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/simples/MANIFEST-000240
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/simples/lost/000233.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/simples/lost/000233.log
									
									
									
									
									
										Normal file
									
								
							| @@ -1092,6 +1092,11 @@ ul, li { | |||||||
| .item-field { | .item-field { | ||||||
| 	margin-top: 4px; | 	margin-top: 4px; | ||||||
| } | } | ||||||
|  | .item-field-xp { | ||||||
|  | 	margin-top: 4px; | ||||||
|  |   min-width: 8rem; | ||||||
|  |   max-width: 8rem; | ||||||
|  | } | ||||||
| .item-field-label-short { | .item-field-label-short { | ||||||
| 	flex-grow: 1; | 	flex-grow: 1; | ||||||
| 	max-width: 4rem; | 	max-width: 4rem; | ||||||
| @@ -1241,7 +1246,7 @@ ul, li { | |||||||
| } | } | ||||||
|  |  | ||||||
| .fvtt-te-deum-character-creator { | .fvtt-te-deum-character-creator { | ||||||
|   background: rgba(226, 226, 222, 0.95); |   /*background: rgba(226, 226, 222, 0.95);*/ | ||||||
|   font-family: "GreatPrimer"; |   font-family: "GreatPrimer"; | ||||||
|   font-size: 0.9rem; |   font-size: 0.9rem; | ||||||
|   .field-title { |   .field-title { | ||||||
| @@ -1289,3 +1294,6 @@ ul, li { | |||||||
|   border-radius: 0 3px 0 0; |   border-radius: 0 3px 0 0; | ||||||
|   background: rgba(0, 0, 0, 0.1); |   background: rgba(0, 0, 0, 0.1); | ||||||
| } | } | ||||||
|  | .tedeum-create-character { | ||||||
|  |   align-self: anchor-center; | ||||||
|  | } | ||||||
| @@ -1033,6 +1033,11 @@ ul, li { | |||||||
| .item-field { | .item-field { | ||||||
| 	margin-top: 4px; | 	margin-top: 4px; | ||||||
| } | } | ||||||
|  | .item-field-xp { | ||||||
|  | 	margin-top: 4px; | ||||||
|  |   min-width: 8rem; | ||||||
|  |   max-width: 8rem; | ||||||
|  | } | ||||||
| .item-field-label-short { | .item-field-label-short { | ||||||
| 	flex-grow: 1; | 	flex-grow: 1; | ||||||
| 	max-width: 4rem; | 	max-width: 4rem; | ||||||
| @@ -1179,7 +1184,7 @@ ul, li { | |||||||
| } | } | ||||||
|  |  | ||||||
| .fvtt-te-deum-character-creator { | .fvtt-te-deum-character-creator { | ||||||
|   background: rgba(226, 226, 222, 0.95); |   /*background: rgba(226, 226, 222, 0.95);*/ | ||||||
|   font-family: "GreatPrimer"; |   font-family: "GreatPrimer"; | ||||||
|   font-size: 0.9rem; |   font-size: 0.9rem; | ||||||
| } | } | ||||||
| @@ -1231,3 +1236,6 @@ ul, li { | |||||||
|   border-radius: 0 3px 0 0; |   border-radius: 0 3px 0 0; | ||||||
|   background: rgba(0, 0, 0, 0.1); |   background: rgba(0, 0, 0, 0.1); | ||||||
| } | } | ||||||
|  | .tedeum-create-character { | ||||||
|  |   align-self: anchor-center; | ||||||
|  | } | ||||||
							
								
								
									
										10
									
								
								system.json
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								system.json
									
									
									
									
									
								
							| @@ -142,14 +142,14 @@ | |||||||
|   "secondaryTokenAttribute": "secondary.delirium", |   "secondaryTokenAttribute": "secondary.delirium", | ||||||
|   "socket": true, |   "socket": true, | ||||||
|   "styles": [ |   "styles": [ | ||||||
|     "styles/tedeum.css" |     { | ||||||
|  |       "src": "styles/tedeum.css" | ||||||
|  |     } | ||||||
|   ], |   ], | ||||||
|   "relationships": { |  | ||||||
|   }, |  | ||||||
|   "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.0", |   "version": "13.0.1", | ||||||
|   "download": "https://www.uberwald.me/gitea/public/fvtt-te-deum/archive/fvtt-te-deum-v13.0.0.zip", |   "download": "https://www.uberwald.me/gitea/public/fvtt-te-deum/releases/download/13.0.1/fvtt-te-deum-13.0.1.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": { | ||||||
|   | |||||||
| @@ -44,7 +44,8 @@ | |||||||
|             {{#each caracList as |char key|}} |             {{#each caracList as |char key|}} | ||||||
|             <li class="item flexrow list-item carac-box"> |             <li class="item flexrow list-item carac-box"> | ||||||
|               <img class="sheet-competence-img" src="systems/fvtt-te-deum/images/icons/{{key}}.webp" /> |               <img class="sheet-competence-img" src="systems/fvtt-te-deum/images/icons/{{key}}.webp" /> | ||||||
|             <label class="item-left-pad item-field item-field-label-medium" data-tooltip="{{char.description}}">{{char.name}}</label> |               <label class="item-left-pad item-field item-field-label-medium" | ||||||
|  |                 data-tooltip="{{char.description}}">{{char.name}}</label> | ||||||
|               <select type="text" class="input-numeric-short" name="system.caracteristiques.{{key}}.value" |               <select type="text" class="input-numeric-short" name="system.caracteristiques.{{key}}.value" | ||||||
|                 data-dtype="Number" /> |                 data-dtype="Number" /> | ||||||
|               {{selectOptions @root.config.descriptionValeur selected=char.value labelAttr="valeur"}} |               {{selectOptions @root.config.descriptionValeur selected=char.value labelAttr="valeur"}} | ||||||
| @@ -64,6 +65,10 @@ | |||||||
|               <span class="item-field-title-long"> |               <span class="item-field-title-long"> | ||||||
|                 <h3><label class="item-field-label-long">Blessures</label></h3> |                 <h3><label class="item-field-label-long">Blessures</label></h3> | ||||||
|               </span> |               </span> | ||||||
|  |               <div class="item-controls item-controls-fixed"> | ||||||
|  |                 <a class="item-control blessure-add" data-type="blessure" title="Ajouter une Blessure"><i class="fas fa-plus"></i></a> | ||||||
|  |               </div> | ||||||
|  |  | ||||||
|             </li> |             </li> | ||||||
|             {{#each blessures as |blessure key|}} |             {{#each blessures as |blessure key|}} | ||||||
|             <li class="item flexrow list-item list-item-shadow item-id" data-item-id="{{blessure._id}}"> |             <li class="item flexrow list-item list-item-shadow item-id" data-item-id="{{blessure._id}}"> | ||||||
| @@ -140,7 +145,8 @@ | |||||||
|         <div> |         <div> | ||||||
|           <ul class="item-list alternate-list"> |           <ul class="item-list alternate-list"> | ||||||
|             <li class="item flexrow list-item carac-box"> |             <li class="item flexrow list-item carac-box"> | ||||||
|               <label class="item-left-pad  item-field item-field-label-medium" data-tooltip="{{providence.description}}">Providence</label> |               <label class="item-left-pad  item-field item-field-label-medium" | ||||||
|  |                 data-tooltip="{{providence.description}}">Providence</label> | ||||||
|               <select type="text" class="input-numeric-short" name="system.providence.value" data-dtype="Number" /> |               <select type="text" class="input-numeric-short" name="system.providence.value" data-dtype="Number" /> | ||||||
|               {{selectOptions @root.config.providence selected=providence.value nameAttr="value" valueAttr="value" |               {{selectOptions @root.config.providence selected=providence.value nameAttr="value" valueAttr="value" | ||||||
|               labelAttr="value"}} |               labelAttr="value"}} | ||||||
| @@ -149,16 +155,21 @@ | |||||||
|               <label class="item-field item-field-label-short">{{providence.dice}}</label> |               <label class="item-field item-field-label-short">{{providence.dice}}</label> | ||||||
|             </li> |             </li> | ||||||
|             <li class="item flexrow list-item carac-box"> |             <li class="item flexrow list-item carac-box"> | ||||||
|               <label class="item-left-pad item-field item-field-label-medium" data-tooltip=" La Bienveillance n’est pas à proprement parler une compétence : il s’agit de l’évaluation chiffrée de l'atta- chement que l'ange gardien du personnage éprouve pour son protégé. Cet attachement peut se détériorer si le personnage se montre indigne ou mauvais, et s'érode avec l’âge. La Bienveillance a un score initial de 10 pour un nouveau PJ ayant moins de 30 ans."> |               <label class="item-left-pad item-field item-field-label-medium" | ||||||
|  |                 data-tooltip=" La Bienveillance n’est pas à proprement parler une compétence : il s’agit de l’évaluation chiffrée de l'atta- chement que l'ange gardien du personnage éprouve pour son protégé. Cet attachement peut se détériorer si le personnage se montre indigne ou mauvais, et s'érode avec l’âge. La Bienveillance a un score initial de 10 pour un nouveau PJ ayant moins de 30 ans."> | ||||||
|                 Bienveillance</label> |                 Bienveillance</label> | ||||||
|               <input class="input-numeric-short" type="text" name="system.bienveillance.value" value="{{system.bienveillance.value}}" data-dtype="Number" /> |               <input class="input-numeric-short" type="text" name="system.bienveillance.value" | ||||||
|  |                 value="{{system.bienveillance.value}}" data-dtype="Number" /> | ||||||
|               <label class="item-left-pad item-field item-field-label-medium">Bonus dégats</label> |               <label class="item-left-pad item-field item-field-label-medium">Bonus dégats</label> | ||||||
|               <input class="input-numeric-short" type="text" value="{{bonusDegats.label}}" disabled data-dtype="Number" /> |               <input class="input-numeric-short" type="text" value="{{bonusDegats.value}}" disabled | ||||||
|  |                 data-dtype="Number" /> | ||||||
|             </li> |             </li> | ||||||
|             <li class="item flexrow list-item carac-box"> |             <li class="item flexrow list-item carac-box"> | ||||||
|               <label class="item-left-pad item-field item-field-label-medium">Armures Lourdes</label> |               <label class="item-left-pad item-field item-field-label-medium">Armures Lourdes</label> | ||||||
|               <input class="input-numeric-short" type="text" value="{{nbArmuresLourdes}}" disabled data-dtype="Number" /> /  |               <input class="input-numeric-short" type="text" value="{{nbArmuresLourdes}}" disabled | ||||||
|               <input class="input-numeric-short" type="text" value="{{pointsArmuresLourdes.value}}" disabled data-dtype="Number" /> |                 data-dtype="Number" /> /  | ||||||
|  |               <input class="input-numeric-short" type="text" value="{{pointsArmuresLourdes.value}}" disabled | ||||||
|  |                 data-dtype="Number" /> | ||||||
|               <label class="item-left-pad item-field item-field-label-medium">Actions/Tour</label> |               <label class="item-left-pad item-field item-field-label-medium">Actions/Tour</label> | ||||||
|               <input class="input-numeric-short" type="text" value="{{nbActions.value}}" disabled data-dtype="Number" /> |               <input class="input-numeric-short" type="text" value="{{nbActions.value}}" disabled data-dtype="Number" /> | ||||||
|             </li> |             </li> | ||||||
| @@ -204,9 +215,10 @@ | |||||||
|           <img class="sheet-competence-img" src="systems/fvtt-te-deum/images/icons/{{key}}.webp" /> |           <img class="sheet-competence-img" src="systems/fvtt-te-deum/images/icons/{{key}}.webp" /> | ||||||
|           <h3 class="item-field-label-long14" data-tooltip="Caracteristique">{{carac.name}} : {{carac.qualite}}</h3> |           <h3 class="item-field-label-long14" data-tooltip="Caracteristique">{{carac.name}} : {{carac.qualite}}</h3> | ||||||
|           <label class="item-field item-field-label-short">{{carac.value}}</label> |           <label class="item-field item-field-label-short">{{carac.value}}</label> | ||||||
|           <label class="item-field ">{{carac.dice}} (xp : |           <label class="item-field-xp ">{{carac.dice}} (xp : | ||||||
|             {{#if @root.isGM}} |             {{#if @root.isGM}} | ||||||
|             <input class="input-numeric-short" type="text" name="system.caracteristiques.{{key}}.experience" value="{{carac.experience}}" data-dtype="Number" /> |             <input class="input-numeric-short" type="text" name="system.caracteristiques.{{key}}.experience" | ||||||
|  |               value="{{carac.experience}}" data-dtype="Number" /> | ||||||
|             {{else}} |             {{else}} | ||||||
|             {{carac.experience}}) |             {{carac.experience}}) | ||||||
|             {{/if}} |             {{/if}} | ||||||
| @@ -214,8 +226,8 @@ | |||||||
|           </label> |           </label> | ||||||
|           <div class="item-filler"> </div> |           <div class="item-filler"> </div> | ||||||
|           <div class="item-controls item-controls-fixed"> |           <div class="item-controls item-controls-fixed"> | ||||||
|               <a class="item-control competence-add" data-type="competence" data-carac-key="{{key}}" title="Ajouter une Compétence"><i |             <a class="item-control competence-add" data-type="competence" data-carac-key="{{key}}" | ||||||
|                 class="fas fa-plus"></i></a> |               title="Ajouter une Compétence"><i class="fas fa-plus"></i></a> | ||||||
|           </div> |           </div> | ||||||
|         </li> |         </li> | ||||||
|         <ul class="ul-level1 flexrow item-list"> |         <ul class="ul-level1 flexrow item-list"> | ||||||
| @@ -267,11 +279,13 @@ | |||||||
|           </span> |           </span> | ||||||
|           <span class="item-field-label-medium">{{upperFirst arme.system.typeArme}}</span> |           <span class="item-field-label-medium">{{upperFirst arme.system.typeArme}}</span> | ||||||
|           <span class="item-field-label-medium">{{upperFirst arme.system.competence}}</span> |           <span class="item-field-label-medium">{{upperFirst arme.system.competence}}</span> | ||||||
|           <span class="item-field-label-medium"><a class="roll-degats" data-arme-id="{{arme._id}}">{{arme.system.degats}}</a></span> |           <span class="item-field-label-medium"><a class="roll-degats" | ||||||
|  |               data-arme-id="{{arme._id}}">{{arme.system.degats}}</a></span> | ||||||
|  |  | ||||||
|           <div class="item-filler"> </div> |           <div class="item-filler"> </div> | ||||||
|           <div class="item-controls item-controls-fixed-full"> |           <div class="item-controls item-controls-fixed-full"> | ||||||
|             <a class="item-control item-equip" title="Equiper" {{#unless arme.system.equipe}}style="color:gray;"{{/unless}}> |             <a class="item-control item-equip" title="Equiper" {{#unless arme.system.equipe}}style="color:gray;" | ||||||
|  |               {{/unless}}> | ||||||
|               <i class="fas fa-shield-alt"></i> |               <i class="fas fa-shield-alt"></i> | ||||||
|             </a> |             </a> | ||||||
|             <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> | ||||||
| @@ -297,7 +311,8 @@ | |||||||
|  |  | ||||||
|           <div class="item-filler"> </div> |           <div class="item-filler"> </div> | ||||||
|           <div class="item-controls item-controls-fixed-full"> |           <div class="item-controls item-controls-fixed-full"> | ||||||
|             <a class="item-control item-equip" title="Equiper" {{#unless armure.system.equipe}}style="color:gray;"{{/unless}}> |             <a class="item-control item-equip" title="Equiper" {{#unless armure.system.equipe}}style="color:gray;" | ||||||
|  |               {{/unless}}> | ||||||
|               <i class="fas fa-shield-alt"></i> |               <i class="fas fa-shield-alt"></i> | ||||||
|             </a> |             </a> | ||||||
|             <a class="item-control item-edit" title="Editer l'armure"><i class="fas fa-edit"></i></a> |             <a class="item-control item-edit" title="Editer l'armure"><i class="fas fa-edit"></i></a> | ||||||
| @@ -397,8 +412,7 @@ | |||||||
|           </span> |           </span> | ||||||
|           <div class="item-filler"> </div> |           <div class="item-filler"> </div> | ||||||
|           <div class="item-controls item-controls-fixed"> |           <div class="item-controls item-controls-fixed"> | ||||||
|             <a class="item-control item-add" data-type="simple" title="Créer une simple"><i |             <a class="item-control item-add" data-type="simple" title="Créer une simple"><i class="fas fa-plus"></i></a> | ||||||
|                 class="fas fa-plus"></i></a> |  | ||||||
|           </div> |           </div> | ||||||
|         </li> |         </li> | ||||||
|         {{#each simples as |simple key|}} |         {{#each simples as |simple key|}} | ||||||
| @@ -438,8 +452,7 @@ | |||||||
|             </li> |             </li> | ||||||
|             <li class="item flexrow"> |             <li class="item flexrow"> | ||||||
|               <label class="item-name-label-medium">Age</label> |               <label class="item-name-label-medium">Age</label> | ||||||
|               <input type="text" class="" name="system.age" value="{{system.age}}" |               <input type="text" class="" name="system.age" value="{{system.age}}" data-dtype="String" /> | ||||||
|                 data-dtype="String" /> |  | ||||||
|             </li> |             </li> | ||||||
|             <li class="item flexrow"> |             <li class="item flexrow"> | ||||||
|               <label class="item-name-label-medium">Date de Naissance</label> |               <label class="item-name-label-medium">Date de Naissance</label> | ||||||
| @@ -462,8 +475,7 @@ | |||||||
|             </li> |             </li> | ||||||
|             <li class="item flexrow"> |             <li class="item flexrow"> | ||||||
|               <label class="item-name-label-medium">Religion</label> |               <label class="item-name-label-medium">Religion</label> | ||||||
|               <input type="text" class="" name="system.religion" value="{{system.religion}}" |               <input type="text" class="" name="system.religion" value="{{system.religion}}" data-dtype="String" /> | ||||||
|                 data-dtype="String" /> |  | ||||||
|             </li> |             </li> | ||||||
|           </ul> |           </ul> | ||||||
|         </div> |         </div> | ||||||
|   | |||||||
| @@ -18,13 +18,75 @@ | |||||||
|  |  | ||||||
| <div> | <div> | ||||||
|   <ul> |   <ul> | ||||||
|  |     {{#if arme}} | ||||||
|  |     <label class="chat-weapon-name">Dégats {{arme.name}} : {{degats}} ({{degatsFormula}})</label> | ||||||
|  |     {{/if}} | ||||||
|  |     {{#if loc}} | ||||||
|  |     <li>Localisation : {{loc.label}}</li> | ||||||
|  |     <li>Touché : {{touche}}</li> | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|  |     {{#if gantelet}} | ||||||
|  |     <li>Poing avec gantelet: +1 dégat</li> | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|  |     {{#if isChargeAPied}} | ||||||
|  |     <li>Charge à pied (+Course)</li> | ||||||
|  |     {{/if}} | ||||||
|  |     {{#if isChargeACheval}} | ||||||
|  |     <li>Charge à cheval (+Equitation)</li> | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|  |     {{#if isReussiteCritique}} | ||||||
|  |     <li><strong class="chat-result-success">Réussite critique : La blessure a été augmentée d'un niveau</strong></li> | ||||||
|  |     {{/if}} | ||||||
|     {{#if blessure}} |     {{#if blessure}} | ||||||
|     <li>{{defenderName}} a subi une blessure!</li> |     <li>{{defenderName}} a subi une blessure!</li> | ||||||
|     <li>Gravité : {{blessure.name}}</li> |     <li>Gravité : {{blessure.name}}</li> | ||||||
|         <li>Localisation : {{loc.label}}</li> |  | ||||||
|  |  | ||||||
|  |     {{#if (eq loc.categorie "tete")}} | ||||||
|  |     {{#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 | ||||||
|  |         assomé</strong></li> | ||||||
|  |     {{/if}} | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|  |     {{#if (eq loc.categorie "bras")}} | ||||||
|  |     {{#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 | ||||||
|  |         pour l'utiliser désormais.</strong></li> | ||||||
|  |     {{/if}} | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|  |     {{#if (eq loc.categorie "jambe")}} | ||||||
|  |     {{#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 | ||||||
|  |         d'Endurance à chaque tour. | ||||||
|  |       </strong></li> | ||||||
|  |     {{/if}} | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|  |     {{#if (eq loc.categorie "main")}} | ||||||
|  |     {{#if (gt blessure.system.value 1)}} | ||||||
|  |     <li><strong class="chat-result-warning">{{alias}} lache l'objet tenu par sa main. Il doit faire un test d'endurance | ||||||
|  |         pour l'utiliser désormais.</strong></li> | ||||||
|  |     {{/if}} | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|  |     {{#if (eq loc.categorie "pied")}} | ||||||
|  |     {{#if (gt blessure.system.value 1)}} | ||||||
|  |     <li><strong class="chat-result-warning">{{alias}} tombe au sol. Pour se relever et marcher, il doit réussir un test | ||||||
|  |         d'Endurance à chaque tour. | ||||||
|  |       </strong></li> | ||||||
|  |     {{/if}} | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|  |  | ||||||
|     {{else}} |     {{else}} | ||||||
|     <li>Aucune blessure subie par {{defenderName}}</li> |     <li>Aucune blessure subie par {{defenderName}}</li> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|  |  | ||||||
|   </ul> |   </ul> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -16,7 +16,22 @@ | |||||||
| <div> | <div> | ||||||
|   <ul> |   <ul> | ||||||
|     <li>Dégats de {{arme.name}}: {{formula}} </li> |     <li>Dégats de {{arme.name}}: {{formula}} </li> | ||||||
|  |     {{#if gantelet}} | ||||||
|  |     <li>Poing avec gantelet: +1 dégat</li> | ||||||
|  |     {{/if}} | ||||||
|  |     {{#if isChargeAPied}} | ||||||
|  |     <li>Charge à pied (+Course)</li> | ||||||
|  |     {{/if}} | ||||||
|  |     {{#if isChargeACheval}} | ||||||
|  |     <li>Charge à cheval (+Equitation)</li> | ||||||
|  |     {{/if}} | ||||||
|     <li>Dégats infligés : {{degats}}</li> |     <li>Dégats infligés : {{degats}}</li> | ||||||
|  |     {{#if loc}} | ||||||
|  |     <li>Localisation : {{loc.label}}</li> | ||||||
|  |     {{/if}} | ||||||
|  |     {{#if isReussiteCritique}} | ||||||
|  |     <li><strong class="chat-result-success">Réussite critique : La blessure sera augmentée d'un niveau</strong></li> | ||||||
|  |     {{/if}} | ||||||
|   </ul> |   </ul> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ | |||||||
|     <li>{{carac.name}}: {{carac.qualite}} ({{carac.dice}}) </li> |     <li>{{carac.name}}: {{carac.qualite}} ({{carac.dice}}) </li> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|     {{#if competence}} |     {{#if competence}} | ||||||
|           <li>{{competence.name}}: {{competence.system.score}} </li> |     <li>{{competence.name}}: {{compScore}} </li> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|     {{#if bonusMalus}} |     {{#if bonusMalus}} | ||||||
|     <li>Bonus/Malus: {{bonusMalus}} </li> |     <li>Bonus/Malus: {{bonusMalus}} </li> | ||||||
| @@ -39,6 +39,12 @@ | |||||||
|     {{#if isMouvement}} |     {{#if isMouvement}} | ||||||
|     <li>Malus de cible petite ou en mouvement (-1 niveau)</li> |     <li>Malus de cible petite ou en mouvement (-1 niveau)</li> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|  |     {{#if attaqueCiblee}} | ||||||
|  |     <li>Attaque ciblée, -1 niveau</li> | ||||||
|  |     {{/if}} | ||||||
|  |     {{#if allongeMalus}} | ||||||
|  |     <li>Malus d'allonge: {{allongeMalus}} niveau</li> | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|     <li>Dés: {{diceFormula}} </li> |     <li>Dés: {{diceFormula}} </li> | ||||||
|     {{#if isTir}} |     {{#if isTir}} | ||||||
| @@ -56,35 +62,59 @@ | |||||||
|     {{#if isSuccess}} |     {{#if isSuccess}} | ||||||
|     <li><strong class="chat-result-success">Succès !</strong> </li> |     <li><strong class="chat-result-success">Succès !</strong> </li> | ||||||
|     {{#if isReussiteCritique}} |     {{#if isReussiteCritique}} | ||||||
|           <li><strong class="chat-result-success">Réussite critique ! 1 XP gagné en {{carac.name}}.</strong> </li> |     <li data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP gagné en {{carac.name}}"> | ||||||
|  |       <strong class="chat-result-success">Réussite critique (XP potentiel) !</strong> | ||||||
|  |     </li> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|  |  | ||||||
|     {{#if arme}} |     {{#if arme}} | ||||||
|           <li><strong class="">Attaque réussie ! Faites une opposition avec la défense de la cible ou appliquez directement les dégats.</strong> </li> |     <li><strong class="">Attaque réussie ! Faites une opposition avec la défense de la cible ou appliquez directement | ||||||
|  |         les dégats.</strong> </li> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|  |  | ||||||
|     {{else}} |     {{else}} | ||||||
|     <li><strong class="chat-result-failure">Echec !</strong> </li> |     <li><strong class="chat-result-failure">Echec !</strong> </li> | ||||||
|     {{#if isEchecCritique}} |     {{#if isEchecCritique}} | ||||||
|             <li><strong class="chat-result-failure">Echec critique ! 1 XP gagné en {{carac.name}}.</strong> </li> |     <li data-tooltip="Si le jet n'est pas opposé, cliquez sur le bouton pour gagner 1 XP gagné en {{carac.name}}"> | ||||||
|  |       <strong class="chat-result-failure">Echec critique (XP potentiel) !</strong> | ||||||
|  |     </li> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|     {{/if}} |     {{/if}} | ||||||
|  |  | ||||||
|  |     {{#if nbEsquives}} | ||||||
|  |     <li>Rappel : vous devez réussir {{nbEsquives}} tests d'esquive pour arriver au contact (règle d'allonge des armes). | ||||||
|  |     </li> | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|     {{#if loc}} |     {{#if loc}} | ||||||
|     <li><strong>Attaque réussie !!</strong> </li> |     <li><strong>Attaque réussie !!</strong> </li> | ||||||
|     <li>Localisation: {{loc.label}} </li> |     <li>Localisation: {{loc.label}} </li> | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|  |     {{#if degats}} | ||||||
|     <li>Dégats: {{degats}} {{#if isReussiteCritique}}(Augmentez la gravité de la blessure d'un niveau){{/if}}</li> |     <li>Dégats: {{degats}} {{#if isReussiteCritique}}(Augmentez la gravité de la blessure d'un niveau){{/if}}</li> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|  |  | ||||||
|   </ul> |   </ul> | ||||||
|   <div> |   <div> | ||||||
|  |  | ||||||
|  |     {{#if (or isEchecCritique isReussiteCritique)}} | ||||||
|  |     <a class="chat-command-gain-xp"> | ||||||
|  |       <img class="chat-command-img" data-tooltip="Cliquez ici pour +1 XP en {{carac.name}} si pas d'opposition" | ||||||
|  |         src="systems/fvtt-te-deum/images/icons/xpplus1.webp"> | ||||||
|  |     </a> | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|     <a class="chat-command-opposition"> |     <a class="chat-command-opposition"> | ||||||
|           <img class="chat-command-img" data-tooltip="Test en opposition" src="systems/fvtt-te-deum/images/icons/opposition.webp"> |       <img class="chat-command-img" data-tooltip="Test en opposition" | ||||||
|  |         src="systems/fvtt-te-deum/images/icons/opposition.webp"> | ||||||
|     </a> |     </a> | ||||||
|  |  | ||||||
|     {{#if arme}} |     {{#if arme}} | ||||||
|     {{#if isSuccess}} |     {{#if isSuccess}} | ||||||
|     <a class="chat-command-appliquer-degats"> |     <a class="chat-command-appliquer-degats"> | ||||||
|               <img class="chat-command-img" data-tooltip="Appliquer les dégats directement sans opposition" src="systems/fvtt-te-deum/images/icons/appliquer-degats.webp"> |       <img class="chat-command-img" data-tooltip="Appliquer les dégats directement sans opposition" | ||||||
|  |         src="systems/fvtt-te-deum/images/icons/appliquer-degats.webp"> | ||||||
|     </a> |     </a> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|     {{/if}} |     {{/if}} | ||||||
|   | |||||||
| @@ -1,15 +1,22 @@ | |||||||
| <div class="chat-message-header"> | <div class="chat-message-header"> | ||||||
|  |  | ||||||
|   <img class="actor-icon" src="{{winner.actorImg}}" alt="{{winner.alias}}" /> |   <img class="actor-icon" src="{{winner.actorImg}}" alt="{{winner.alias}}" /> | ||||||
|   <img class="chat-command-img" data-tooltip="Test en opposition" src="systems/fvtt-te-deum/images/icons/opposition.webp"> |   <img class="chat-command-img" data-tooltip="Test en opposition" | ||||||
|  |     src="systems/fvtt-te-deum/images/icons/opposition.webp"> | ||||||
|   <img class="actor-icon" src="{{looser.actorImg}}" alt="{{looser.alias}}" /> |   <img class="actor-icon" src="{{looser.actorImg}}" alt="{{looser.alias}}" /> | ||||||
|   <label class="chat-actor-name-opposition">{{winner.alias}} vs {{looser.alias}}</label> |   <label class="chat-actor-name-opposition">{{winner.alias}} vs {{looser.alias}}</label> | ||||||
|  |  | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <hr> | <hr> | ||||||
|  |  | ||||||
| <div> | <div> | ||||||
|     <label class="chat-result-success">{{winner.alias}} ({{winner.competence.name}}, {{winner.total}}) l'emporte sur {{looser.alias}} ({{looser.competence.name}},  {{looser.total}})</label> |   <label class="chat-result-success">{{winner.alias}} ({{winner.competence.name}}, {{winner.total}}) l'emporte sur | ||||||
|  |     {{looser.alias}} ({{looser.competence.name}}, {{looser.total}})</label> | ||||||
|  |   {{#if winner.isReussiteCritique}} | ||||||
|  |   <div><strong class="chat-result-success">Réussite critique ! 1 XP gagné en {{winner.carac.name}}.</strong> </div> | ||||||
|  |   {{/if}} | ||||||
|  |   {{#if looser.isEchecCritique}} | ||||||
|  |   <div><strong class="chat-result-failure">Echec critique ! 1 XP gagné en {{looser.carac.name}}.</strong> </div> | ||||||
|  |   {{/if}} | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|    |  | ||||||
| @@ -15,7 +15,7 @@ | |||||||
|     {{#if competence}} |     {{#if competence}} | ||||||
|     <div class="flexrow"> |     <div class="flexrow"> | ||||||
|       <span class="roll-dialog-label">Compétence </span> |       <span class="roll-dialog-label">Compétence </span> | ||||||
|       <span class="roll-dialog-label">{{competence.name}} ({{competence.system.score}})</span> |       <span class="roll-dialog-label">{{competence.name}} ({{compScore}})</span> | ||||||
|     </div> |     </div> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|  |  | ||||||
| @@ -61,13 +61,39 @@ | |||||||
|       <input type="checkbox" id="roll-tir-mouvement" {{checked isMouvement}} /> |       <input type="checkbox" id="roll-tir-mouvement" {{checked isMouvement}} /> | ||||||
|     </div> |     </div> | ||||||
|     {{else}} |     {{else}} | ||||||
|  |  | ||||||
|       {{/if}} |  | ||||||
|     {{else}} |  | ||||||
|     <div class="flexrow"> |     <div class="flexrow"> | ||||||
|       <span class="roll-dialog-label">Difficulté : </span> |       <span class="roll-dialog-label">Allonge {{allongeLabel}} : Indiquez l'allonge de votre adversaire | ||||||
|       <select class="" type="text" id="roll-difficulty" value="{{difficulty}}" data-dtype="String"> |         ci-dessous.</span> | ||||||
|         {{selectOptions config.difficulte selected=difficulty valueAttr="key" labelAttr="label"}} |     </div> | ||||||
|  |     <div class="flexrow"> | ||||||
|  |       <span class="roll-dialog-label" | ||||||
|  |         data-tooltip="Modification d'allonge selon votre arme et celle de votre adversaire">Allonge arme adversaire : | ||||||
|  |       </span> | ||||||
|  |       <select class="" type="text" id="roll-allonge" value="{{allongeId}}" data-dtype="String"> | ||||||
|  |         {{#select allongeId}} | ||||||
|  |         {{#each allonges as |allonge key|}} | ||||||
|  |         <option value="{{key}}">{{allonge.label}}</option> | ||||||
|  |         {{/each}} | ||||||
|  |         {{/select}} | ||||||
|  |       </select> | ||||||
|  |     </div> | ||||||
|  |     <div class="flexrow"> | ||||||
|  |       <span class="roll-dialog-label">Charge à pied ?</span> | ||||||
|  |       <input type="checkbox" id="roll-charge-a-pied" {{checked isChargeAPied}} /> | ||||||
|  |     </div> | ||||||
|  |     <div class="flexrow"> | ||||||
|  |       <span class="roll-dialog-label">Charge à cheval ?</span> | ||||||
|  |       <input type="checkbox" id="roll-charge-a-cheval" {{checked isChargeACheval}} /> | ||||||
|  |     </div> | ||||||
|  |     {{/if}} | ||||||
|  |     <div class="flexrow"> | ||||||
|  |       <span class="roll-dialog-label">Attaque ciblée (-1 Niveau): </span> | ||||||
|  |       <select class="" type="text" id="roll-attaque-ciblee" value="{{attaqueCiblee}}" data-dtype="String"> | ||||||
|  |         {{#select attaqueCiblee}} | ||||||
|  |         {{#each config.ATTAQUE_CIBLEES as |attaque key|}} | ||||||
|  |         <option value="{{key}}">{{attaque.label}}</option> | ||||||
|  |         {{/each}} | ||||||
|  |         {{/select}} | ||||||
|       </select> |       </select> | ||||||
|     </div> |     </div> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user