Compare commits
	
		
			35 Commits
		
	
	
		
			fvtt-les-h
			...
			fvtt-les-h
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e288c90ee4 | |||
| 8916de8613 | |||
| 8598df5a57 | |||
| 8781462c8d | |||
| 8c38aead3e | |||
| 67bf71e6c0 | |||
| 63d15e82bb | |||
| 62c3787cea | |||
| df61abac19 | |||
| a7d1a14c52 | |||
| b0dc6f36e4 | |||
| 5109d2aa91 | |||
| 51c162ecbb | |||
| 44d02b0cd1 | |||
| 9b1600304a | |||
| 2dff59c829 | |||
| 55a2a8e3c3 | |||
| 2da1f56a91 | |||
| 66bd9dd2c8 | |||
| 15427f3747 | |||
| 577eccbbd3 | |||
| 05026d454b | |||
| 6497369d7f | |||
| 5e5ddd1c3b | |||
| a72108db5b | |||
| 6a46faadc2 | |||
| e95f7de0c5 | |||
| 9d3ef8cbeb | |||
| c6ec1b74a2 | |||
| 1b12dc44c9 | |||
| f26cd7670c | |||
| 02f8207fb7 | |||
| 439797e71e | |||
| 1d82a6aa60 | |||
| 11b0f22aa7 | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
.history/
 | 
			
		||||
							
								
								
									
										10
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								README.md
									
									
									
									
									
								
							@@ -1,8 +1,8 @@
 | 
			
		||||
# Système Foundry pour Hawkmoon (French RPG, Titam France/Sombres Projets)
 | 
			
		||||
# Système Foundry pour Les Héritiers (French RPG, Titam France/Sombres Projets)
 | 
			
		||||
 | 
			
		||||
## EN
 | 
			
		||||
 | 
			
		||||
Unofficial system for Hawkmoon (French version from Titam France).
 | 
			
		||||
Unofficial system for Les Heritiers (from Titam France).
 | 
			
		||||
 | 
			
		||||
This system has been approved by Département des Sombres Projets ( http://www.titam-france.fr/ ), thanks !
 | 
			
		||||
 | 
			
		||||
@@ -10,7 +10,7 @@ Books are mandatory to play and are available at : http://www.titam-france.fr
 | 
			
		||||
 | 
			
		||||
## FR
 | 
			
		||||
 | 
			
		||||
Système non-officiel pour le JDR Hawkmoon (Titam France/Sombres Projets).
 | 
			
		||||
Système non-officiel pour le JDR Les Héritiers (Titam France/Sombres Projets).
 | 
			
		||||
 | 
			
		||||
Ce système a été autorisé par le Département des Sombres Projets ( http://www.titam-france.fr/ ), merci à eux !
 | 
			
		||||
 | 
			
		||||
@@ -18,7 +18,7 @@ Les livres du jeu sont nécessaires pour jouer, et sont disponibles ici : http:/
 | 
			
		||||
 | 
			
		||||
# Credits 
 | 
			
		||||
 | 
			
		||||
Hawkmoon, le jeu de rôle du Troisième Millénaire, is a property of Titam France/Sombres Projets.
 | 
			
		||||
Les Héritiers, is a property of Titam France/Sombres Projets.
 | 
			
		||||
 | 
			
		||||
# Developmement 
 | 
			
		||||
 | 
			
		||||
@@ -26,4 +26,4 @@ LeRatierBretonnien
 | 
			
		||||
 | 
			
		||||
# Tests, icones et saisie des données
 | 
			
		||||
 | 
			
		||||
Prêtre, Blondin, Zechrub/Chris, Kyllian, Lightbringer
 | 
			
		||||
Prêtre, Carter
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								assets/icons/equipement.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/icons/equipement.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 90 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								assets/ui/heritiers_background_01.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/ui/heritiers_background_01.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 192 KiB  | 
							
								
								
									
										46
									
								
								lang/fr.json
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								lang/fr.json
									
									
									
									
									
								
							@@ -1,31 +1,23 @@
 | 
			
		||||
{
 | 
			
		||||
  "ACTOR": {
 | 
			
		||||
    "TypePersonnage": "Personnage",
 | 
			
		||||
    "TypeCellule": "Cellule",
 | 
			
		||||
    "TypeCreature": "Créature"
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  "ITEM": {
 | 
			
		||||
    "TypeArtefact": "Artefact",
 | 
			
		||||
    "TypeArme": "Arme",
 | 
			
		||||
    "TypeTalent": "Talent",
 | 
			
		||||
    "TypeHistorique": "Historique",
 | 
			
		||||
    "TypeProfil": "Profil",
 | 
			
		||||
    "TypeCompetence": "Compétence",
 | 
			
		||||
    "TypeProtection": "Protection",
 | 
			
		||||
    "TypeMonnaie": "Monnaie",
 | 
			
		||||
    "TypeEquipement": "Equipement",
 | 
			
		||||
    "TypeRessource": "Ressource", 
 | 
			
		||||
    "TypeContact": "Contact"
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  "HAWKMOON": {
 | 
			
		||||
    "ui": {
 | 
			
		||||
      "editContact": "Modifier le contact",
 | 
			
		||||
      "deleteContact": "Supprimer le contact",
 | 
			
		||||
      "editTrait": "Modifier le trait",
 | 
			
		||||
      "deleteTrait": "Supprimer le trait"
 | 
			
		||||
  "TYPES": {
 | 
			
		||||
    "Actor": {
 | 
			
		||||
      "personnage": "Personnage",
 | 
			
		||||
      "PNJ": "PNJ"
 | 
			
		||||
    },
 | 
			
		||||
    "Item": {
 | 
			
		||||
      "accessoire": "Accessoire",
 | 
			
		||||
      "arme": "Arme",
 | 
			
		||||
      "atoutfeerique": "Atout féerique",
 | 
			
		||||
      "avantage": "Avantage",
 | 
			
		||||
      "capacitenaturelle": "Capacité naturelle",
 | 
			
		||||
      "competence": "Compétence",
 | 
			
		||||
      "contact": "Contact",
 | 
			
		||||
      "desavantage": "Désavantage",
 | 
			
		||||
      "equipement": "Equipement",
 | 
			
		||||
      "fee": "Fée",
 | 
			
		||||
      "pouvoir": "Pouvoir",
 | 
			
		||||
      "profil": "Profil",
 | 
			
		||||
      "protection": "Protection"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								modules/heritiers-actor-pnj-sheet.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								modules/heritiers-actor-pnj-sheet.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Extend the basic ActorSheet with some very simple modifications
 | 
			
		||||
 * @extends {ActorSheet}
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
 | 
			
		||||
import { HeritiersUtility } from "./heritiers-utility.js";
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
export class HeritiersActorPNJSheet extends HeritiersActorSheet {
 | 
			
		||||
 | 
			
		||||
  /** @override */
 | 
			
		||||
  static get defaultOptions() {
 | 
			
		||||
 | 
			
		||||
    return mergeObject(super.defaultOptions, {
 | 
			
		||||
      classes: ["fvtt-les-heritiers", "sheet", "actor"],
 | 
			
		||||
      template: "systems/fvtt-les-heritiers/templates/actor-pnj-sheet.html",
 | 
			
		||||
      width: 780,
 | 
			
		||||
      height: 840,
 | 
			
		||||
      tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
 | 
			
		||||
      dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
 | 
			
		||||
      editScore: false
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -14,8 +14,8 @@ export class HeritiersActorSheet extends ActorSheet {
 | 
			
		||||
    return mergeObject(super.defaultOptions, {
 | 
			
		||||
      classes: ["fvtt-les-heritiers", "sheet", "actor"],
 | 
			
		||||
      template: "systems/fvtt-les-heritiers/templates/actor-sheet.html",
 | 
			
		||||
      width: 640,
 | 
			
		||||
      height: 720,
 | 
			
		||||
      width: 780,
 | 
			
		||||
      height: 840,
 | 
			
		||||
      tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
 | 
			
		||||
      dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
 | 
			
		||||
      editScore: false
 | 
			
		||||
@@ -38,7 +38,8 @@ export class HeritiersActorSheet extends ActorSheet {
 | 
			
		||||
      effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
 | 
			
		||||
      limited: this.object.limited,
 | 
			
		||||
      skills: this.actor.getSkills(),
 | 
			
		||||
      utileSkills :this.actor.organizeUtileSkills(),
 | 
			
		||||
      utileSkillsMental :this.actor.organizeUtileSkills("mental"),
 | 
			
		||||
      utileSkillsPhysical :this.actor.organizeUtileSkills("physical"),
 | 
			
		||||
      futileSkills :this.actor.organizeFutileSkills(),
 | 
			
		||||
      contacts: this.actor.organizeContacts(),
 | 
			
		||||
      armes: duplicate(this.actor.getWeapons()),
 | 
			
		||||
@@ -54,16 +55,20 @@ export class HeritiersActorSheet extends ActorSheet {
 | 
			
		||||
      desavantages: duplicate(this.actor.getDesavantages()),
 | 
			
		||||
      profils: duplicate(this.actor.getProfils()),
 | 
			
		||||
      pvMalus: this.actor.getPvMalus(),      
 | 
			
		||||
      heritage: game.settings.get("fvtt-les-heritiers", "heritiers-heritage"),
 | 
			
		||||
      initiative: this.actor.getFlag("world", "last-initiative") || -1,
 | 
			
		||||
      description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
 | 
			
		||||
      revesetranges: await TextEditor.enrichHTML(this.object.system.biodata.revesetranges, {async: true}),
 | 
			
		||||
      secretsdecouverts: await TextEditor.enrichHTML(this.object.system.biodata.secretsdecouverts, {async: true}),
 | 
			
		||||
      questions: await TextEditor.enrichHTML(this.object.system.biodata.questions, {async: true}),
 | 
			
		||||
      habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
 | 
			
		||||
      playernotes: await TextEditor.enrichHTML(this.object.system.biodata.playernotes, {async: true}),
 | 
			
		||||
      options: this.options,
 | 
			
		||||
      owner: this.document.isOwner,
 | 
			
		||||
      editScore: this.options.editScore,
 | 
			
		||||
      isGM: game.user.isGM
 | 
			
		||||
      config: game.system.lesheritiers.config,
 | 
			
		||||
      isGM: game.user.isGM,
 | 
			
		||||
      isPNJ: (this.actor.type == "pnj")
 | 
			
		||||
    }
 | 
			
		||||
    this.formData = formData;
 | 
			
		||||
 | 
			
		||||
@@ -72,19 +77,42 @@ export class HeritiersActorSheet extends ActorSheet {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getCelluleTalents( )  {
 | 
			
		||||
    let talents = []
 | 
			
		||||
    for(let cellule of game.actors) {
 | 
			
		||||
      if (cellule.type == "cellule") {
 | 
			
		||||
        let found = cellule.system.members.find( it => it.id == this.actor.id)
 | 
			
		||||
        if (found) {
 | 
			
		||||
          talents = talents.concat( cellule.getTalents() )
 | 
			
		||||
  dialogRecupUsage() {
 | 
			
		||||
    new Dialog({
 | 
			
		||||
      title: "Récupération des Points d'Usage",
 | 
			
		||||
      content: "<p>Combien de Points d'Usage souhaitez-vous récupérer ?</p>",
 | 
			
		||||
      buttons: {
 | 
			
		||||
        one: {
 | 
			
		||||
          icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
          label: "1 Point",
 | 
			
		||||
          callback: () => {
 | 
			
		||||
            this.actor.recupUsage(1)
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        two: {
 | 
			
		||||
          icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
          label: "2 Points",
 | 
			
		||||
          callback: () => {
 | 
			
		||||
            this.actor.recupUsage(2)
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        four: {
 | 
			
		||||
          icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
          label: "4 Points",
 | 
			
		||||
          callback: () => {
 | 
			
		||||
            this.actor.recupUsage(4)
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        all: {
 | 
			
		||||
          icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
          label: "Tous les Points",
 | 
			
		||||
          callback: () => {
 | 
			
		||||
            this.actor.recupUsage(100)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return talents
 | 
			
		||||
    }).render(true)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  /** @override */
 | 
			
		||||
  activateListeners(html) {
 | 
			
		||||
@@ -136,6 +164,14 @@ export class HeritiersActorSheet extends ActorSheet {
 | 
			
		||||
      const key = $(event.currentTarget).data("key")
 | 
			
		||||
      this.actor.rollCarac(key, false)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.roll-rang').click((event) => {
 | 
			
		||||
      const key = $(event.currentTarget).data("rang-key")
 | 
			
		||||
      this.actor.rollRang(key, false)
 | 
			
		||||
    })    
 | 
			
		||||
    html.find('.roll-root-competence').click((event) => {
 | 
			
		||||
      const compKey = $(event.currentTarget).data("attr-key")
 | 
			
		||||
      this.actor.rollRootCompetence(compKey)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.roll-competence').click((event) => {
 | 
			
		||||
      const li = $(event.currentTarget).parents(".item")
 | 
			
		||||
      let compId  = li.data("item-id")
 | 
			
		||||
@@ -146,7 +182,31 @@ export class HeritiersActorSheet extends ActorSheet {
 | 
			
		||||
      let armeId  = li.data("item-id")
 | 
			
		||||
      this.actor.rollAttaqueArme(armeId)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.roll-attaque-brutale-arme').click((event) => {
 | 
			
		||||
      const li = $(event.currentTarget).parents(".item")
 | 
			
		||||
      let armeId  = li.data("item-id")
 | 
			
		||||
      this.actor.rollAttaqueBrutaleArme(armeId)
 | 
			
		||||
    })    
 | 
			
		||||
    html.find('.roll-attaque-charge-arme').click((event) => {
 | 
			
		||||
      const li = $(event.currentTarget).parents(".item")
 | 
			
		||||
      let armeId  = li.data("item-id")
 | 
			
		||||
      this.actor.rollAttaqueChargeArme(armeId)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.roll-assomer-arme').click((event) => {
 | 
			
		||||
      const li = $(event.currentTarget).parents(".item")
 | 
			
		||||
      let armeId  = li.data("item-id")
 | 
			
		||||
      this.actor.rollAssomerArme(armeId)
 | 
			
		||||
    })
 | 
			
		||||
    
 | 
			
		||||
    html.find('.roll-pouvoir').click((event) => {
 | 
			
		||||
      const li = $(event.currentTarget).parents(".item")
 | 
			
		||||
      let pouvoirId = li.data("item-id")
 | 
			
		||||
      this.actor.rollPouvoir(pouvoirId)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.dialog-recup-usage').click((event) => {
 | 
			
		||||
      this.dialogRecupUsage()
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    html.find('.item-add').click((event) => {
 | 
			
		||||
      const itemType = $(event.currentTarget).data("type")
 | 
			
		||||
      this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
 | 
			
		||||
 
 | 
			
		||||
@@ -42,15 +42,11 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
      data.items = []
 | 
			
		||||
      for (let skill of skills) {
 | 
			
		||||
        if (skill.system.categorie == "utile") {
 | 
			
		||||
          data.items.push( skill.toObject())    
 | 
			
		||||
        } 
 | 
			
		||||
          data.items.push(skill.toObject())
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (data.type == 'creature') {
 | 
			
		||||
      const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.skills-creatures")
 | 
			
		||||
      data.items = skills.map(i => i.toObject())
 | 
			
		||||
      data.items.push({ name: "Arme naturelle 1", type: 'arme', img: "systems/fvtt-les-heritiers/assets/icons/melee.webp", system: { typearme: "contact", bonusmaniementoff: 0, seuildefense: 0, degats: "0" } })
 | 
			
		||||
      data.items.push({ name: "Arme naturelle 2", type: 'arme', img: "systems/fvtt-les-heritiers/assets/icons/melee.webp", system: { typearme: "contact", bonusmaniementoff: 0, seuildefense: 0, degats: "0" } })
 | 
			
		||||
    if (data.type == 'pnj') {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return super.create(data, options);
 | 
			
		||||
@@ -59,25 +55,7 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  prepareArme(arme) {
 | 
			
		||||
    arme = duplicate(arme)
 | 
			
		||||
    let combat = this.getCombatValues()
 | 
			
		||||
    if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") {
 | 
			
		||||
      let bonusDefense = 0
 | 
			
		||||
      arme.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
 | 
			
		||||
      arme.system.attrKey = "pui"
 | 
			
		||||
      arme.system.totalDegats = arme.system.degats + "+" + combat.bonusDegatsTotal
 | 
			
		||||
      arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff
 | 
			
		||||
      arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.seuildefense + bonusDefense
 | 
			
		||||
      arme.system.isdefense = true
 | 
			
		||||
    }
 | 
			
		||||
    if (arme.system.typearme == "jet" || arme.system.typearme == "tir") {
 | 
			
		||||
      arme.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "armes à distance"))
 | 
			
		||||
      arme.system.attrKey = "adr"
 | 
			
		||||
      arme.system.totalOffensif = this.system.attributs.adr.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff
 | 
			
		||||
      arme.system.totalDegats = arme.system.degats
 | 
			
		||||
      if (arme.system.isdefense) {
 | 
			
		||||
        arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.seuildefense
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
 | 
			
		||||
    return arme
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -92,6 +70,16 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
    return armes
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getOtherMeleeWeapons(excludeArme) {
 | 
			
		||||
    let armes = []
 | 
			
		||||
    for (let arme of this.items) {
 | 
			
		||||
      if (HeritiersUtility.isArmeMelee(arme) && arme.id != excludeArme._id) {
 | 
			
		||||
        armes.push(this.prepareArme(arme))
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return armes
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getMonnaies() {
 | 
			
		||||
    return this.items.filter(it => it.type == "monnaie")
 | 
			
		||||
  }
 | 
			
		||||
@@ -108,44 +96,57 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -----------------------  --------------------- */
 | 
			
		||||
  getItemSorted(types) {
 | 
			
		||||
    let items = this.items.filter(item => types.includes(item.type)) || []
 | 
			
		||||
    HeritiersUtility.sortArrayObjectsByName(items)
 | 
			
		||||
    return items
 | 
			
		||||
  }
 | 
			
		||||
  getEquipments() {
 | 
			
		||||
    return this.items.filter(item => item.type == "equipement" || item.type == "accessoire")
 | 
			
		||||
    return this.getItemSorted(["equipement", "accessoire"])
 | 
			
		||||
  }
 | 
			
		||||
  getAvantages() {
 | 
			
		||||
    return this.items.filter(item => item.type == "avantage")
 | 
			
		||||
    return this.getItemSorted(["avantage"])
 | 
			
		||||
  }
 | 
			
		||||
  getDesavantages() {
 | 
			
		||||
    return this.items.filter(item => item.type == "desavantage")
 | 
			
		||||
    return this.getItemSorted(["desavantage"])
 | 
			
		||||
  }
 | 
			
		||||
  getMonnaies() {
 | 
			
		||||
    return this.items.filter(item => item.type == "monnaie")
 | 
			
		||||
    return this.getItemSorted(["monnaie"])
 | 
			
		||||
  }
 | 
			
		||||
  getArmors() {
 | 
			
		||||
    return this.items.filter(item => item.type == "protection")
 | 
			
		||||
    return this.getItemSorted(["protection"])
 | 
			
		||||
  }
 | 
			
		||||
  getTalents() {
 | 
			
		||||
    return this.items.filter(item => item.type == "talent")
 | 
			
		||||
    return this.getItemSorted(["talent"])
 | 
			
		||||
  }
 | 
			
		||||
  getContacts() {
 | 
			
		||||
    return this.items.filter(item => item.type == "contact")
 | 
			
		||||
    return this.getItemSorted(["contact"])
 | 
			
		||||
  }
 | 
			
		||||
  getAtouts() {
 | 
			
		||||
    return this.items.filter(item => item.type == "atoutfeerique")
 | 
			
		||||
    return this.getItemSorted(["atoutfeerique"])
 | 
			
		||||
  }
 | 
			
		||||
  getCapacites() {
 | 
			
		||||
    return this.items.filter(item => item.type == "capacitenaturelle")
 | 
			
		||||
    return this.getItemSorted(["capacitenaturelle"])
 | 
			
		||||
  }
 | 
			
		||||
  getFee() {
 | 
			
		||||
    return this.items.find(item => item.type == "fee")
 | 
			
		||||
  }
 | 
			
		||||
  getProfils() {
 | 
			
		||||
    return this.items.filter(item => item.type == "profil")
 | 
			
		||||
    return this.getItemSorted(["profil"])
 | 
			
		||||
  }
 | 
			
		||||
  getPouvoirs() {
 | 
			
		||||
    let pouvoirs = this.items.filter(item => item.type == "pouvoir") || []
 | 
			
		||||
    let pouvoirs = []
 | 
			
		||||
    for (let item of this.items) {
 | 
			
		||||
      if (item.type == "pouvoir") {
 | 
			
		||||
        let itemObj = duplicate(item)
 | 
			
		||||
        itemObj.maxUsage = this.getPouvoirUsageMax(item)
 | 
			
		||||
        pouvoirs.push(itemObj)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    HeritiersUtility.sortArrayObjectsByName(pouvoirs)
 | 
			
		||||
    return pouvoirs
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getSkills() {
 | 
			
		||||
    let comp = []
 | 
			
		||||
@@ -161,8 +162,8 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  prepareUtileSkill(item) {
 | 
			
		||||
    let specList = []
 | 
			
		||||
    if (item.system.categorie == "utile") {
 | 
			
		||||
      for (let spec of item.system.specialites)  {
 | 
			
		||||
    if (item?.system?.categorie == "utile") {
 | 
			
		||||
      for (let spec of item.system.specialites) {
 | 
			
		||||
        specList.push(spec.name)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
@@ -171,34 +172,39 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  organizeUtileSkills() {
 | 
			
		||||
  organizeUtileSkills(kind = "mental") {
 | 
			
		||||
    let comp = {}
 | 
			
		||||
    for (let key in game.system.lesheritiers.config.competenceProfil) {
 | 
			
		||||
      comp[key] = []
 | 
			
		||||
      if (game.system.lesheritiers.config.competenceProfil[key].kind == kind)
 | 
			
		||||
        comp[key] = { skills: [], niveau: this.system.competences[key].niveau }
 | 
			
		||||
    }
 | 
			
		||||
    for (let item of this.items) {
 | 
			
		||||
      if (item.type == "competence") {
 | 
			
		||||
        if (item.system.categorie == "utile") {
 | 
			
		||||
        if (item.system.categorie == "utile" && comp[item.system.profil]) {
 | 
			
		||||
          this.prepareUtileSkill(item)
 | 
			
		||||
          comp[item.system.profil].push(item)
 | 
			
		||||
          comp[item.system.profil].skills.push(item)
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (let key in comp) {
 | 
			
		||||
      HeritiersUtility.sortArrayObjectsByName(comp[key])
 | 
			
		||||
      HeritiersUtility.sortArrayObjectsByName(comp[key].skills)
 | 
			
		||||
    }
 | 
			
		||||
    return comp
 | 
			
		||||
    return Object.fromEntries(Object.entries(comp).sort())
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  organizeContacts( ) {
 | 
			
		||||
  organizeContacts() {
 | 
			
		||||
    let contactList = {}
 | 
			
		||||
    for (let item of this.items) {
 | 
			
		||||
      if (item.type == "contact") {
 | 
			
		||||
        let c = contactList[item.system.contacttype] || { label: game.system.lesheritiers.config.contactType[item.system.contacttype], list: [] }
 | 
			
		||||
        c.list.push( item  )
 | 
			
		||||
        c.list.push(item)
 | 
			
		||||
        contactList[item.system.contacttype] = c
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    for (let key in contactList) {
 | 
			
		||||
      HeritiersUtility.sortArrayObjectsByName(contactList[key].list)
 | 
			
		||||
    }
 | 
			
		||||
    return contactList
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -282,7 +288,7 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async equipItem(itemId) {
 | 
			
		||||
    let item = this.items.find(item => item.id == itemId)
 | 
			
		||||
    if (item && item.system) {
 | 
			
		||||
    if (item?.system) {
 | 
			
		||||
      let update = { _id: item.id, "system.equipped": !item.system.equipped }
 | 
			
		||||
      await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
 | 
			
		||||
    }
 | 
			
		||||
@@ -293,10 +299,12 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
    let item = this.items.find(item => item.id == itemId)
 | 
			
		||||
    if (item) {
 | 
			
		||||
      console.log("Item ", item, itemField, dataType, value)
 | 
			
		||||
      if (dataType.toLowerCase() == "number") {
 | 
			
		||||
        value = Number(value)
 | 
			
		||||
      } else {
 | 
			
		||||
        value = String(value)
 | 
			
		||||
      if (dataType) {
 | 
			
		||||
        if (dataType.toLowerCase() == "number") {
 | 
			
		||||
          value = Number(value)
 | 
			
		||||
        } else {
 | 
			
		||||
          value = String(value)
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      let update = { _id: item.id, [`system.${itemField}`]: value };
 | 
			
		||||
      this.updateEmbeddedDocuments("Item", [update])
 | 
			
		||||
@@ -306,15 +314,15 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getPvMalus() {
 | 
			
		||||
    if (this.system.pv.value > 0) {
 | 
			
		||||
      if (this.system.pv.value < this.system.pv.max / 2) {
 | 
			
		||||
        return -1
 | 
			
		||||
      }
 | 
			
		||||
      if (this.system.pv.value < 5) {
 | 
			
		||||
        return -2
 | 
			
		||||
        return { name: "Santé", value: -2 }
 | 
			
		||||
      }
 | 
			
		||||
      return 0
 | 
			
		||||
      if (this.system.pv.value < this.system.pv.max / 2) {
 | 
			
		||||
        return { name: "Santé", value: -1 }
 | 
			
		||||
      }
 | 
			
		||||
      return { name: "Santé", value: 0 }
 | 
			
		||||
    }
 | 
			
		||||
    return "Moribond(e)"
 | 
			
		||||
    return { name: "Moribond(e)", value: -50 }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -341,7 +349,7 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async equipGear(equipmentId) {
 | 
			
		||||
    let item = this.items.find(item => item.id == equipmentId);
 | 
			
		||||
    if (item && item.system.data) {
 | 
			
		||||
    if (item?.system) {
 | 
			
		||||
      let update = { _id: item.id, "system.equipped": !item.system.equipped };
 | 
			
		||||
      await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
 | 
			
		||||
    }
 | 
			
		||||
@@ -474,7 +482,23 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
    }
 | 
			
		||||
    return talents
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getCurrentParade() {
 | 
			
		||||
    if (this.system.statutmasque == "masque") {
 | 
			
		||||
      return this.system.combat.parade.masquee
 | 
			
		||||
    }
 | 
			
		||||
    return this.system.combat.parade.demasquee
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getCurrentEsquive() {
 | 
			
		||||
    if (this.system.statutmasque == "masque") {
 | 
			
		||||
      return this.system.combat.esquive.masquee
 | 
			
		||||
    }
 | 
			
		||||
    return this.system.combat.esquive.demasquee
 | 
			
		||||
  }
 | 
			
		||||
  getCurrentResistancePhysique() {
 | 
			
		||||
    return this.system.combat.resistancephysique.value
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getTricherie() {
 | 
			
		||||
    return this.system.rang.tricherie.value
 | 
			
		||||
@@ -487,11 +511,28 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
  incDecTricherie(value) {
 | 
			
		||||
    let tricherie = this.system.rang.tricherie
 | 
			
		||||
    tricherie.value += value
 | 
			
		||||
    if (tricherie.value < 0 || tricherie.value > tricherie.max) {
 | 
			
		||||
      ui.notifications.warn("Pas assez de points de Tricherie !")
 | 
			
		||||
      return false
 | 
			
		||||
    }
 | 
			
		||||
    tricherie.value = Math.max(tricherie.value, 0)
 | 
			
		||||
    tricherie.value = Math.min(tricherie.value, tricherie.max)
 | 
			
		||||
    this.update({ 'system.rang.tricherie': tricherie })
 | 
			
		||||
    return true
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getPireCompetence(compName1, compName2) {
 | 
			
		||||
    let comp1 = this.items.find(it => it.name == compName1)
 | 
			
		||||
    let comp2 = this.items.find(it => it.name == compName2)
 | 
			
		||||
    if (comp1 && comp2) {
 | 
			
		||||
      if (comp1.system.niveau > comp2.system.niveau) {
 | 
			
		||||
        return comp1
 | 
			
		||||
      } else {
 | 
			
		||||
        return comp2
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return undefined
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getCommonRollData(compId = undefined, compName = undefined) {
 | 
			
		||||
    let rollData = HeritiersUtility.getBasicRollData()
 | 
			
		||||
@@ -507,7 +548,8 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
    rollData.useTricherie = false
 | 
			
		||||
    rollData.useSpecialite = false
 | 
			
		||||
    rollData.useHeritage = false
 | 
			
		||||
    rollData.pvMalus = this.getPvMalus()
 | 
			
		||||
    rollData.pouvoirPointsUsage = 1
 | 
			
		||||
    rollData.rulesMalus.push(this.getPvMalus())
 | 
			
		||||
 | 
			
		||||
    if (compId) {
 | 
			
		||||
      rollData.competence = duplicate(this.items.get(compId) || {})
 | 
			
		||||
@@ -516,15 +558,21 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
    }
 | 
			
		||||
    if (compName) {
 | 
			
		||||
      rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
 | 
			
		||||
      this.prepareUtileSkill(rollData.competence)
 | 
			
		||||
      rollData.actionImg = rollData.competence?.img
 | 
			
		||||
      if (rollData.competence?.name) {
 | 
			
		||||
        this.prepareUtileSkill(rollData.competence)
 | 
			
		||||
        rollData.actionImg = rollData.competence?.img
 | 
			
		||||
      } else {
 | 
			
		||||
        rollData.competence = undefined
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    HeritiersUtility.updateWithTarget(rollData)
 | 
			
		||||
 | 
			
		||||
    return rollData
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollInitiative() {
 | 
			
		||||
    let rollData = this.getCommonRollData(undefined, "Art de la guerre")
 | 
			
		||||
    rollData.mode = "init"    
 | 
			
		||||
    rollData.mode = "init"
 | 
			
		||||
    if (this.system.caracteristiques["san"].value > this.system.caracteristiques["per"].value) {
 | 
			
		||||
      rollData.caracKey = "san"
 | 
			
		||||
    } else {
 | 
			
		||||
@@ -534,17 +582,36 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
    let rollDialog = await HeritiersRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollCarac(key, isInit = false) {
 | 
			
		||||
    let rollData = this.getCommonRollData()
 | 
			
		||||
    rollData.mode = "carac"    
 | 
			
		||||
    rollData.mode = "carac"
 | 
			
		||||
    rollData.carac = this.system.caracteristiques[key]
 | 
			
		||||
    rollData.caracKey = key
 | 
			
		||||
    let rollDialog = await HeritiersRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollRang(key, isInit = false) {
 | 
			
		||||
    let rollData = this.getCommonRollData()
 | 
			
		||||
    rollData.mode = "rang"
 | 
			
		||||
    rollData.rang = this.system.rang[key]
 | 
			
		||||
    rollData.rangKey = key
 | 
			
		||||
    let rollDialog = await HeritiersRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollRootCompetence(compKey) {
 | 
			
		||||
    let rollData = this.getCommonRollData()
 | 
			
		||||
    rollData.mode = "competence"
 | 
			
		||||
    rollData.competence = { name: this.system.competences[compKey].label, system: { niveau: this.system.competences[compKey].niveau } }
 | 
			
		||||
    console.log("RollDatra", rollData)
 | 
			
		||||
    let rollDialog = await HeritiersRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollCompetence(compId) {
 | 
			
		||||
    let rollData = this.getCommonRollData(compId)
 | 
			
		||||
@@ -553,64 +620,143 @@ export class HeritiersActor extends Actor {
 | 
			
		||||
    let rollDialog = await HeritiersRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollAttaqueArme(armeId) {
 | 
			
		||||
    let arme = this.items.get(armeId)
 | 
			
		||||
    if (arme) {
 | 
			
		||||
      arme = duplicate(arme)
 | 
			
		||||
      arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
 | 
			
		||||
      let competenceName = "Tir"
 | 
			
		||||
      let key = "prec"
 | 
			
		||||
      if (arme.system.categorie == "blanche" || arme.system.categorie == "improvise") {
 | 
			
		||||
      if (arme.system.isMelee) {
 | 
			
		||||
        competenceName = "Mêlée"
 | 
			
		||||
        key = "agi"
 | 
			
		||||
      }
 | 
			
		||||
      let rollData = this.getCommonRollData(undefined, competenceName )
 | 
			
		||||
      let rollData = this.getCommonRollData(undefined, competenceName)
 | 
			
		||||
      rollData.carac = this.system.caracteristiques[key]
 | 
			
		||||
      rollData.caracKey = key
 | 
			
		||||
      rollData.arme = arme
 | 
			
		||||
      rollData.mode = "arme"
 | 
			
		||||
      rollData.armes = this.getOtherMeleeWeapons(arme)
 | 
			
		||||
      if (rollData.defenderTokenId && arme.system.isMelee) {
 | 
			
		||||
        rollData.cacheDifficulte = true
 | 
			
		||||
      }
 | 
			
		||||
      console.log(">>>> ARME", rollData)
 | 
			
		||||
      let rollDialog = await HeritiersRollDialog.create(this, rollData)
 | 
			
		||||
      rollDialog.render(true)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollAttaqueBrutaleArme(armeId) {
 | 
			
		||||
    let arme = this.items.get(armeId)
 | 
			
		||||
    if (arme) {
 | 
			
		||||
      let key = "for"
 | 
			
		||||
      let competenceName = "Mêlée"
 | 
			
		||||
      arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
 | 
			
		||||
      let rollData = this.getCommonRollData(undefined, competenceName)
 | 
			
		||||
      rollData.carac = this.system.caracteristiques[key]
 | 
			
		||||
      rollData.caracKey = key
 | 
			
		||||
      rollData.arme = duplicate(arme)
 | 
			
		||||
      rollData.mode = "attaquebrutale"
 | 
			
		||||
      rollData.armes = this.getOtherMeleeWeapons(arme)
 | 
			
		||||
      rollData.rulesMalus.push({ name: "Attaque brutale", value: -2 })
 | 
			
		||||
      let rollDialog = await HeritiersRollDialog.create(this, rollData)
 | 
			
		||||
      rollDialog.render(true)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollAttaqueChargeArme(armeId) {
 | 
			
		||||
    let arme = this.items.get(armeId)
 | 
			
		||||
    if (arme) {
 | 
			
		||||
      let key = "agi"
 | 
			
		||||
      arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
 | 
			
		||||
      let pireCompetence = this.getPireCompetence("Mêlée", "Mouvement")
 | 
			
		||||
      let rollData = this.getCommonRollData(undefined, pireCompetence.name)
 | 
			
		||||
      rollData.carac = this.system.caracteristiques[key]
 | 
			
		||||
      rollData.caracKey = key
 | 
			
		||||
      rollData.arme = duplicate(arme)
 | 
			
		||||
      rollData.armes = this.getOtherMeleeWeapons(arme)
 | 
			
		||||
      rollData.mode = "attaquecharge"
 | 
			
		||||
      let rollDialog = await HeritiersRollDialog.create(this, rollData)
 | 
			
		||||
      rollDialog.render(true)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollAssomerArme(armeId) {
 | 
			
		||||
    let arme = this.items.get(armeId)
 | 
			
		||||
    if (arme) {
 | 
			
		||||
      let competenceName = "Mêlée"
 | 
			
		||||
      //arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
 | 
			
		||||
      let rollData = this.getCommonRollData(undefined, competenceName)
 | 
			
		||||
      rollData.carac = this.system.caracteristiques["agi"]
 | 
			
		||||
      rollData.caracKey = "agi"
 | 
			
		||||
      rollData.arme = duplicate(arme)
 | 
			
		||||
      rollData.mode = "assommer"
 | 
			
		||||
      if (rollData.defenderTokenId) {
 | 
			
		||||
        rollData.cacheDifficulte = true
 | 
			
		||||
      }
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollArmeOffensif(armeId) {
 | 
			
		||||
    let arme = this.items.get(armeId)
 | 
			
		||||
    if (arme.type == "arme") {
 | 
			
		||||
      arme = this.prepareArme(arme)
 | 
			
		||||
      let rollDialog = await HeritiersRollDialog.create(this, rollData)
 | 
			
		||||
      rollDialog.render(true)
 | 
			
		||||
    }
 | 
			
		||||
    let rollData = this.getCommonRollData(arme.system.attrKey, arme.system.competence._id)
 | 
			
		||||
    rollData.arme = arme
 | 
			
		||||
    HeritiersUtility.updateWithTarget(rollData)
 | 
			
		||||
    console.log("ARME!", rollData)
 | 
			
		||||
    let rollDialog = await HeritiersRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollArmeDegats(armeId, targetVigueur = undefined) {
 | 
			
		||||
    let arme = this.items.get(armeId)
 | 
			
		||||
    if (arme.type == "arme") {
 | 
			
		||||
      arme = this.prepareArme(arme)
 | 
			
		||||
  async rollPouvoir(pouvoirId) {
 | 
			
		||||
    let pouvoir = this.items.get(pouvoirId)
 | 
			
		||||
    if (pouvoir) {
 | 
			
		||||
      let rollData = this.getCommonRollData(undefined, undefined)
 | 
			
		||||
      if (pouvoir.system.feeriemasque != "autre") {
 | 
			
		||||
        rollData.pouvoirBase = duplicate(this.system.rang[pouvoir.system.feeriemasque.toLowerCase()])
 | 
			
		||||
        rollData.pouvoirBase.label = "Féerie"
 | 
			
		||||
        rollData.carac = duplicate(this.system.caracteristiques[pouvoir.system.carac])
 | 
			
		||||
        rollData.caracKey = pouvoir.system.carac
 | 
			
		||||
      }
 | 
			
		||||
      rollData.pouvoirMaxUsage = this.getPouvoirUsageMax(pouvoir)
 | 
			
		||||
      rollData.pouvoir = duplicate(pouvoir)
 | 
			
		||||
      rollData.mode = "pouvoir"
 | 
			
		||||
      let rollDialog = await HeritiersRollDialog.create(this, rollData)
 | 
			
		||||
      rollDialog.render(true)
 | 
			
		||||
    }
 | 
			
		||||
    console.log("DEGATS", arme)
 | 
			
		||||
    let roll = new Roll("1d10+" + arme.system.totalDegats).roll({ async: false })
 | 
			
		||||
    await HeritiersUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
 | 
			
		||||
    let nbEtatPerdus = 0
 | 
			
		||||
    if (targetVigueur) {
 | 
			
		||||
      nbEtatPerdus = Math.floor(roll.total / targetVigueur)
 | 
			
		||||
    }
 | 
			
		||||
    let rollData = {
 | 
			
		||||
      arme: arme,
 | 
			
		||||
      finalResult: roll.total,
 | 
			
		||||
      alias: this.name,
 | 
			
		||||
      actorImg: this.img,
 | 
			
		||||
      actorId: this.id,
 | 
			
		||||
      actionImg: arme.img,
 | 
			
		||||
      targetVigueur: targetVigueur,
 | 
			
		||||
      nbEtatPerdus: nbEtatPerdus
 | 
			
		||||
    }
 | 
			
		||||
    HeritiersUtility.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
      content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-degats-result.html`, rollData)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  incDecPointsUsage(pouvoirId, value) {
 | 
			
		||||
    let pouvoir = this.items.get(pouvoirId)
 | 
			
		||||
    let newValue = pouvoir.system.pointsusagecourant + value
 | 
			
		||||
    newValue = Math.max(newValue, 0)
 | 
			
		||||
    newValue = Math.min(newValue, this.getPouvoirUsageMax(pouvoir))
 | 
			
		||||
    this.updateEmbeddedDocuments('Item', [{ _id: pouvoirId, 'system.pointsusagecourant': newValue }])
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getPouvoirUsage(pouvoirId) {
 | 
			
		||||
    let pouvoir = this.items.get(pouvoirId)
 | 
			
		||||
    return pouvoir.system.pointsusagecourant
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getPouvoirUsageMax(pouvoir) {
 | 
			
		||||
    if (pouvoir.system.masquetype == "masque") {
 | 
			
		||||
      return this.system.rang.masque.value
 | 
			
		||||
    }
 | 
			
		||||
    return this.system.rang.feerie.value
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  recupUsage(value) {
 | 
			
		||||
    let updates = []
 | 
			
		||||
    for (let pouvoir of this.items) {
 | 
			
		||||
      if (pouvoir.type == "pouvoir") {
 | 
			
		||||
        let newValue = pouvoir.system.pointsusagecourant + value
 | 
			
		||||
        newValue = Math.max(newValue, 0)
 | 
			
		||||
        newValue = Math.min(newValue, this.getPouvoirUsageMax(pouvoir))
 | 
			
		||||
        updates.push({ _id: pouvoir.id, 'system.pointsusagecourant': newValue })
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (updates.length  > 0) {
 | 
			
		||||
      this.updateEmbeddedDocuments('Item', updates)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ export const HERITIERS_CONFIG = {
 | 
			
		||||
    "prec": "Précision",
 | 
			
		||||
    "esp": "Esprit",
 | 
			
		||||
    "per": "Perception",
 | 
			
		||||
    "pres": "Préstance",
 | 
			
		||||
    "pres": "Prestance",
 | 
			
		||||
    "san": "Sang-Froid"
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
@@ -25,16 +25,16 @@ export const HERITIERS_CONFIG = {
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  competenceProfil  : {
 | 
			
		||||
    "aventurier": "Aventurier",
 | 
			
		||||
    "roublard": "Roublard",
 | 
			
		||||
    "combattant": "Combattant",
 | 
			
		||||
    "erudit": "Erudit",
 | 
			
		||||
    "savant": "Savant",
 | 
			
		||||
    "gentleman": "Gentleman"
 | 
			
		||||
    "aventurier": {kind: "physical", name: "Aventurier"},
 | 
			
		||||
    "roublard": {kind: "physical",name: "Roublard"},
 | 
			
		||||
    "combattant": {kind: "physical",name:"Combattant"},
 | 
			
		||||
    "erudit": {kind: "mental",name:"Erudit"},
 | 
			
		||||
    "savant": {kind: "mental",name:"Savant"},
 | 
			
		||||
    "gentleman": {kind: "mental",name:"Gentleman"}
 | 
			
		||||
  },
 | 
			
		||||
  baseTestPouvoir: {
 | 
			
		||||
    "feerie": "Féerie",
 | 
			
		||||
    "Masque": "Masque",
 | 
			
		||||
    "masque": "Masque",
 | 
			
		||||
    "autre": "Autre"
 | 
			
		||||
  },
 | 
			
		||||
  resistancePouvoir: {
 | 
			
		||||
@@ -50,6 +50,10 @@ export const HERITIERS_CONFIG = {
 | 
			
		||||
    "passif": "Passif",
 | 
			
		||||
    "metamorphose": "Métamorphose"
 | 
			
		||||
  },
 | 
			
		||||
  statutMasque: {
 | 
			
		||||
    "masque": "Masqué",
 | 
			
		||||
    "demasque":"Démasqué"
 | 
			
		||||
  },
 | 
			
		||||
  niveauPouvoir: {
 | 
			
		||||
    "normal": "Normal",
 | 
			
		||||
    "profond": "Profond",
 | 
			
		||||
@@ -60,23 +64,42 @@ export const HERITIERS_CONFIG = {
 | 
			
		||||
    "demasque": "Démasqué"
 | 
			
		||||
  },
 | 
			
		||||
  seuilsDifficulte: {
 | 
			
		||||
    "0": "Aucun/Non applicable",
 | 
			
		||||
    "-1": "Aucun/Non applicable",
 | 
			
		||||
    "5": "Enfantine",
 | 
			
		||||
    "6": "Triviale",
 | 
			
		||||
    "7": "Moins Triviale",
 | 
			
		||||
    "8": "Aisée",
 | 
			
		||||
    "7": "Moins Aisée",
 | 
			
		||||
    "10": "Normale",
 | 
			
		||||
    "11": "Moins Normale",
 | 
			
		||||
    "12": "Compliquée",
 | 
			
		||||
    "13": "Plus Compliquée",
 | 
			
		||||
    "14": "Difficile",
 | 
			
		||||
    "15": "Plus Difficile",
 | 
			
		||||
    "16": "Très Difficile",
 | 
			
		||||
    "17": "Très Très Difficile",
 | 
			
		||||
    "18": "Critique",
 | 
			
		||||
    "19": "Plus Critique",
 | 
			
		||||
    "20": "Insurmontable",
 | 
			
		||||
    "20": "Très Insurmontable",
 | 
			
		||||
    "22": "Surhumaine",
 | 
			
		||||
    "23": "Très Surhumaine",
 | 
			
		||||
    "24": "Epique",
 | 
			
		||||
    "25": "Plus Epique",
 | 
			
		||||
    "26": "Légendaire",
 | 
			
		||||
    "26": "Très Légendaire",
 | 
			
		||||
    "28": "Mythique",
 | 
			
		||||
    "29": "Plus Mythique",
 | 
			
		||||
    "30": "Divine"
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  attaqueCible: {
 | 
			
		||||
    "none": "Aucune",
 | 
			
		||||
    "membre": "Membre",
 | 
			
		||||
    "main": "Main",
 | 
			
		||||
    "tete": "Tête/Coeur"
 | 
			
		||||
  },
 | 
			
		||||
  
 | 
			
		||||
  categorieArme : {
 | 
			
		||||
    "trait": "Arme de trait",
 | 
			
		||||
    "poing": "Arme de poing",
 | 
			
		||||
 
 | 
			
		||||
@@ -61,10 +61,20 @@ export class HeritiersItemSheet extends ItemSheet {
 | 
			
		||||
      limited: this.object.limited,
 | 
			
		||||
      options: this.options,
 | 
			
		||||
      owner: this.document.isOwner,
 | 
			
		||||
      config: game.system.lesheritiers.config,
 | 
			
		||||
      config: game.system.lesheritiers.config,      
 | 
			
		||||
      isArmeMelee: HeritiersUtility.isArmeMelee(this.object),
 | 
			
		||||
      description: await TextEditor.enrichHTML(this.object.system.description, {async: true}),
 | 
			
		||||
      mr: (this.object.type == 'specialisation'),
 | 
			
		||||
      isGM: game.user.isGM
 | 
			
		||||
      isGM: game.user.isGM,
 | 
			
		||||
      usageMax: -1
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Items specific data
 | 
			
		||||
    if (this.object.type == 'pouvoir' && this.document.isOwner && this.actor) {
 | 
			
		||||
      formData.usageMax = this.actor.getPouvoirUsageMax(this.object)
 | 
			
		||||
      if (this.object.system.pointsusagecourant == -1) {
 | 
			
		||||
        this.object.system.pointsusagecourant = formData.usageMax
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //this.options.editable = !(this.object.origin == "embeddedItem");
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,8 @@ export const defaultItemImg = {
 | 
			
		||||
    accessoire: "systems/fvtt-les-heritiers/assets/icons/item.webp",  
 | 
			
		||||
    protection: "systems/fvtt-les-heritiers/assets/icons/armor.webp",  
 | 
			
		||||
    fee: "systems/fvtt-les-heritiers/assets/icons/faery_type.webp",
 | 
			
		||||
    profil: "systems/fvtt-les-heritiers/assets/icons/profil.webp"
 | 
			
		||||
    profil: "systems/fvtt-les-heritiers/assets/icons/profil.webp",
 | 
			
		||||
    equipement: "systems/fvtt-les-heritiers/assets/icons/equipement.webp",  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,7 @@
 | 
			
		||||
import { HeritiersActor } from "./heritiers-actor.js";
 | 
			
		||||
import { HeritiersItemSheet } from "./heritiers-item-sheet.js";
 | 
			
		||||
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
 | 
			
		||||
import { HeritiersActorPNJSheet } from "./heritiers-actor-pnj-sheet.js";
 | 
			
		||||
import { HeritiersCreatureSheet } from "./heritiers-creature-sheet.js";
 | 
			
		||||
import { HeritiersUtility } from "./heritiers-utility.js";
 | 
			
		||||
import { HeritiersCombat } from "./heritiers-combat.js";
 | 
			
		||||
@@ -55,7 +56,7 @@ Hooks.once("init", async function () {
 | 
			
		||||
  // Register sheet application classes
 | 
			
		||||
  Actors.unregisterSheet("core", ActorSheet);
 | 
			
		||||
  Actors.registerSheet("fvtt-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true })
 | 
			
		||||
  Actors.registerSheet("fvtt-les-heritiers", HeritiersCreatureSheet, { types: ["creature"], makeDefault: true })
 | 
			
		||||
  Actors.registerSheet("fvtt-les-heritiers", HeritiersActorPNJSheet, { types: ["pnj"], makeDefault: true })
 | 
			
		||||
 | 
			
		||||
  Items.unregisterSheet("core", ItemSheet);
 | 
			
		||||
  Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })
 | 
			
		||||
@@ -78,31 +79,17 @@ function welcomeMessage() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
// Register world usage statistics
 | 
			
		||||
function registerUsageCount(registerKey) {
 | 
			
		||||
  if (game.user.isGM) {
 | 
			
		||||
    game.settings.register(registerKey, "world-key", {
 | 
			
		||||
      name: "Unique world key",
 | 
			
		||||
      scope: "world",
 | 
			
		||||
      config: false,
 | 
			
		||||
      default: "",
 | 
			
		||||
      type: String
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    let worldKey = game.settings.get(registerKey, "world-key")
 | 
			
		||||
    if (worldKey == undefined || worldKey == "") {
 | 
			
		||||
      worldKey = randomID(32)
 | 
			
		||||
      game.settings.set(registerKey, "world-key", worldKey)
 | 
			
		||||
    }
 | 
			
		||||
    // Simple API counter
 | 
			
		||||
    let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"`
 | 
			
		||||
    //$.ajaxSetup({
 | 
			
		||||
    //headers: { 'Access-Control-Allow-Origin': '*' }
 | 
			
		||||
    //})
 | 
			
		||||
    $.ajax(regURL)
 | 
			
		||||
async function importDefaultScene() {
 | 
			
		||||
  let exists = game.scenes.find(j => j.name == "Accueil");
 | 
			
		||||
  if (!exists) {
 | 
			
		||||
    const scenes = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.scenes")
 | 
			
		||||
    let newDocuments = scenes.filter(i => i.name == "Accueil");
 | 
			
		||||
    await game.scenes.documentClass.create(newDocuments);
 | 
			
		||||
    game.scenes.find(i => i.name == "Accueil").activate();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
/*  Foundry VTT Initialization                  */
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
@@ -118,15 +105,16 @@ Hooks.once("ready", function () {
 | 
			
		||||
      user: game.user._id
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter=>{
 | 
			
		||||
    console.log("ClassCounter loaded", moduleCounter)
 | 
			
		||||
    moduleCounter.ClassCounter.registerUsageCount()
 | 
			
		||||
  }).catch(err=>
 | 
			
		||||
    console.log("No stats available, giving up.")
 | 
			
		||||
  )    
 | 
			
		||||
  welcomeMessage();
 | 
			
		||||
  importDefaultScene();
 | 
			
		||||
 | 
			
		||||
  registerUsageCount('fvtt-les-heritiers')
 | 
			
		||||
  welcomeMessage()
 | 
			
		||||
 | 
			
		||||
  // CSS patch for v9
 | 
			
		||||
  if (game.version) {
 | 
			
		||||
    let sidebar = document.getElementById("sidebar");
 | 
			
		||||
    sidebar.style.width = "min-content";
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
@@ -136,7 +124,7 @@ Hooks.on("chatMessage", (html, content, msg) => {
 | 
			
		||||
  if (content[0] == '/') {
 | 
			
		||||
    let regExp = /(\S+)/g;
 | 
			
		||||
    let commands = content.match(regExp);
 | 
			
		||||
    if (game.system.mournblade.commands.processChatCommand(commands, content, msg)) {
 | 
			
		||||
    if (game.system.lesheritiers.commands.processChatCommand(commands, content, msg)) {
 | 
			
		||||
      return false;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ export class HeritiersRollDialog extends Dialog {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async create(actor, rollData) {
 | 
			
		||||
 | 
			
		||||
    let options = { classes: ["HeritiersDialog"], width: 320, height: 'fit-content', 'z-index': 99999 };
 | 
			
		||||
    let options = { classes: ["HeritiersDialog"], width: 420, height: 'fit-content', 'z-index': 99999 };
 | 
			
		||||
    let html = await renderTemplate('systems/fvtt-les-heritiers/templates/roll-dialog-generic.html', rollData);
 | 
			
		||||
 | 
			
		||||
    return new HeritiersRollDialog(actor, rollData, html, options);
 | 
			
		||||
@@ -13,35 +13,62 @@ export class HeritiersRollDialog extends Dialog {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  constructor(actor, rollData, html, options, close = undefined) {
 | 
			
		||||
    let buttons = {
 | 
			
		||||
      rolld8: {
 | 
			
		||||
        icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
        label: "Lancer 1d8",
 | 
			
		||||
        callback: () => { this.roll("d8") }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    let enableD10 = false
 | 
			
		||||
    let enableD12 = false
 | 
			
		||||
    if (rollData.competence?.system.niveau > 0) {
 | 
			
		||||
      enableD10 = true
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.competence?.system.niveau > 1) {
 | 
			
		||||
      enableD12 = true
 | 
			
		||||
    }
 | 
			
		||||
    if (enableD10) {
 | 
			
		||||
      buttons.rolld10 = {
 | 
			
		||||
        icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
        label: "Lancer 1d10",
 | 
			
		||||
        callback: () => { this.roll("d10") }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (enableD12) {
 | 
			
		||||
        buttons.rolld12 =  {
 | 
			
		||||
        icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
        label: "Lancer 1d12",
 | 
			
		||||
        callback: () => { this.roll("d12") }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (rollData.tricherie) {
 | 
			
		||||
      buttons["rollTricherie"] = {
 | 
			
		||||
        icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
        label: "Lancer avec 1 Point de Tricherie",
 | 
			
		||||
        callback: () => { this.roll("tricherie") }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.heritage) {
 | 
			
		||||
      buttons["rollHeritage"] = {
 | 
			
		||||
        icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
        label: "Lancer avec 1 Point d'Héritage",
 | 
			
		||||
        callback: () => { this.roll("heritage") }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    buttons["Cancel"] = {
 | 
			
		||||
      icon: '<i class="fas fa-times"></i>',
 | 
			
		||||
      label: "Annuler",
 | 
			
		||||
      callback: () => { this.close() }
 | 
			
		||||
    }
 | 
			
		||||
    let conf = {
 | 
			
		||||
      title: "Test de Capacité",
 | 
			
		||||
      content: html,
 | 
			
		||||
      buttons:
 | 
			
		||||
      {
 | 
			
		||||
        rolld8: {
 | 
			
		||||
          icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
          label: "Lancer 1d8",
 | 
			
		||||
          callback: () => { this.roll("d8") }
 | 
			
		||||
        },
 | 
			
		||||
        rolld10: {
 | 
			
		||||
          icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
          label: "Lancer 1d10",
 | 
			
		||||
          callback: () => { this.roll("d10") }
 | 
			
		||||
        },
 | 
			
		||||
        rolld12: {
 | 
			
		||||
          icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
          label: "Lancer 1d12",
 | 
			
		||||
          callback: () => { this.roll("d12") }
 | 
			
		||||
        },
 | 
			
		||||
        cancel: {
 | 
			
		||||
          icon: '<i class="fas fa-times"></i>',
 | 
			
		||||
          label: "Annuler",
 | 
			
		||||
          callback: () => { this.close() }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      buttons: buttons,
 | 
			
		||||
      close: close
 | 
			
		||||
    }
 | 
			
		||||
    // Overwrite in case of carac only -> 1d10
 | 
			
		||||
    // Overwrite in case of carac only -> 1d8
 | 
			
		||||
    if (rollData.mode == "carac") {
 | 
			
		||||
      conf.buttons = {
 | 
			
		||||
        rolld8: {
 | 
			
		||||
@@ -64,7 +91,16 @@ export class HeritiersRollDialog extends Dialog {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  roll(dice) {
 | 
			
		||||
    this.rollData.mainDice = dice
 | 
			
		||||
    if (dice == "heritage") {
 | 
			
		||||
      this.rollData.useHeritage = true
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      if (dice == "tricherie") {
 | 
			
		||||
        this.rollData.useTricherie = true
 | 
			
		||||
      } else {
 | 
			
		||||
        this.rollData.mainDice = dice
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    HeritiersUtility.rollHeritiers(this.rollData)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -87,14 +123,24 @@ export class HeritiersRollDialog extends Dialog {
 | 
			
		||||
    html.find('#bonus-malus-context').change((event) => {
 | 
			
		||||
      this.rollData.bonusMalusContext = Number(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#useTricherie').change((event) => {
 | 
			
		||||
      this.rollData.useTricherie = event.currentTarget.checked
 | 
			
		||||
    html.find('#bonus-attaque-plusieurs').change((event) => {
 | 
			
		||||
      this.rollData.bonusAttaquePlusieurs = Number(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#useSpecialite').change((event) => {
 | 
			
		||||
      this.rollData.useSpecialite = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#useHeritage').change((event) => {
 | 
			
		||||
      this.rollData.useHeritage = event.currentTarget.checked
 | 
			
		||||
    html.find('#pouvoirPointsUsage').change((event) => {
 | 
			
		||||
      this.rollData.pouvoirPointsUsage = Number(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#attaqueDos').change((event) => {
 | 
			
		||||
      this.rollData.attaqueDos = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#bonus-attaque-seconde-arme').change((event) => {
 | 
			
		||||
      this.rollData.secondeArme = String(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#attaque-cible').change((event) => {
 | 
			
		||||
      this.rollData.attaqueCible = String(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -2,6 +2,45 @@
 | 
			
		||||
import { HeritiersCombat } from "./heritiers-combat.js";
 | 
			
		||||
import { HeritiersCommands } from "./heritiers-commands.js";
 | 
			
		||||
 | 
			
		||||
const __facesAdjacentes = {
 | 
			
		||||
  "d8": {
 | 
			
		||||
    1: [4, 8, 6],
 | 
			
		||||
    2: [7, 5, 3],
 | 
			
		||||
    3: [2, 8, 6],
 | 
			
		||||
    4: [1, 5, 7],
 | 
			
		||||
    5: [2, 4, 8],
 | 
			
		||||
    6: [1, 7, 3],
 | 
			
		||||
    7: [2, 4, 6],
 | 
			
		||||
    8: [1, 3, 5]
 | 
			
		||||
  },
 | 
			
		||||
  "d10": {
 | 
			
		||||
    1: [4, 6, 9, 7],
 | 
			
		||||
    2: [6, 8, 5, 9],
 | 
			
		||||
    3: [7, 5, 8, 10],
 | 
			
		||||
    4: [10, 6, 7, 1],
 | 
			
		||||
    5: [3, 9, 2, 8],
 | 
			
		||||
    6: [1, 4, 2, 9],
 | 
			
		||||
    7: [1, 3, 4, 10],
 | 
			
		||||
    8: [2, 10, 5, 3],
 | 
			
		||||
    9: [1, 5, 6, 2],
 | 
			
		||||
    10: [8, 4, 3, 7]
 | 
			
		||||
  },
 | 
			
		||||
  "d12": {
 | 
			
		||||
    1:[2, 3, 4, 5, 6],
 | 
			
		||||
    2: [1, 6, 8, 12, 3],
 | 
			
		||||
    3: [1, 4, 11, 12, 2],
 | 
			
		||||
    4: [1, 5, 10, 11, 3],
 | 
			
		||||
    5: [1, 6, 9, 10, 4],
 | 
			
		||||
    6: [1, 2, 8, 9, 5],
 | 
			
		||||
    7: [8, 9, 10, 11, 12],
 | 
			
		||||
    8: [2, 6, 9, 7, 12],
 | 
			
		||||
    9: [5, 10, 7, 8, 6],
 | 
			
		||||
    10: [4, 11, 7, 9, 5],
 | 
			
		||||
    11: [7, 10, 4, 3, 12],
 | 
			
		||||
    12: [2, 8, 7, 11, 3]
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
export class HeritiersUtility {
 | 
			
		||||
 | 
			
		||||
@@ -42,32 +81,16 @@ export class HeritiersUtility {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static sortByName(table) {  
 | 
			
		||||
  static sortByName(table) {
 | 
			
		||||
    return table.sort(function (a, b) {
 | 
			
		||||
      let fa = a.name.toLowerCase(),
 | 
			
		||||
        fb = b.name.toLowerCase();
 | 
			
		||||
      if (fa < fb) {
 | 
			
		||||
        return -1;
 | 
			
		||||
      }
 | 
			
		||||
      if (fa > fb) {
 | 
			
		||||
        return 1;
 | 
			
		||||
      }
 | 
			
		||||
      return 0;
 | 
			
		||||
      return a.name.localeCompare(b.name);
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static sortArrayObjectsByName(myArray) {
 | 
			
		||||
    myArray.sort((a, b) => {
 | 
			
		||||
      let fa = a.name.toLowerCase();
 | 
			
		||||
      let fb = b.name.toLowerCase();
 | 
			
		||||
      if (fa < fb) {
 | 
			
		||||
        return -1;
 | 
			
		||||
      }
 | 
			
		||||
      if (fa > fb) {
 | 
			
		||||
        return 1;
 | 
			
		||||
      }
 | 
			
		||||
      return 0;
 | 
			
		||||
      return a.name.localeCompare(b.name);
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -81,6 +104,14 @@ export class HeritiersUtility {
 | 
			
		||||
    const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
 | 
			
		||||
    this.skills = skills.map(i => i.toObject())
 | 
			
		||||
 | 
			
		||||
    game.settings.register("fvtt-les-heritiers", "heritiers-heritage", {
 | 
			
		||||
      name: "Points d'héritage",
 | 
			
		||||
      hint: "Points d'héritage du groupe",
 | 
			
		||||
      scope: "world",
 | 
			
		||||
      config: true,
 | 
			
		||||
      default: 0,
 | 
			
		||||
      type: Number
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -112,7 +143,18 @@ export class HeritiersUtility {
 | 
			
		||||
      rollData.competence = duplicate(actor.getCompetence(rollData.competence._id))
 | 
			
		||||
      HeritiersUtility.rollHeritiers(rollData)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    html.on("click", '.roll-tricherie-2', async event => {
 | 
			
		||||
      let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
 | 
			
		||||
      let message = game.messages.get(messageId)
 | 
			
		||||
      let rollData = message.getFlag("world", "heritiers-roll")
 | 
			
		||||
      let actor = this.getActorFromRollData(rollData)
 | 
			
		||||
      if ( await actor.incDecTricherie(-2) ) {
 | 
			
		||||
        rollData.forcedValue = Number($(event.currentTarget).data("dice-value"))
 | 
			
		||||
        HeritiersUtility.rollHeritiers(rollData)  
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    
 | 
			
		||||
    html.on("click", '.roll-chat-degat', async event => {
 | 
			
		||||
      let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
 | 
			
		||||
      let message = game.messages.get(messageId)
 | 
			
		||||
@@ -130,6 +172,7 @@ export class HeritiersUtility {
 | 
			
		||||
      'systems/fvtt-les-heritiers/templates/partial-item-header.html',
 | 
			
		||||
      'systems/fvtt-les-heritiers/templates/partial-item-description.html',
 | 
			
		||||
      'systems/fvtt-les-heritiers/templates/partial-item-nav.html',
 | 
			
		||||
      'systems/fvtt-les-heritiers/templates/partial-utile-skills.html',
 | 
			
		||||
      'systems/fvtt-les-heritiers/templates/partial-list-niveau.html'
 | 
			
		||||
    ]
 | 
			
		||||
    return loadTemplates(templatePaths);
 | 
			
		||||
@@ -227,7 +270,6 @@ export class HeritiersUtility {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static onSocketMesssage(msg) {
 | 
			
		||||
    //console.log("SOCKET MESSAGE", msg.name, game.user.character.id, msg.data.defenderId);
 | 
			
		||||
    if (msg.name == "msg_update_defense_state") {
 | 
			
		||||
      this.updateDefenseState(msg.data.defenderId, msg.data.rollId);
 | 
			
		||||
    }
 | 
			
		||||
@@ -284,108 +326,256 @@ export class HeritiersUtility {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static computeMonnaieDetails(valueSC) {
 | 
			
		||||
    let po = Math.floor(valueSC / 400)
 | 
			
		||||
    let pa = Math.floor((valueSC - (po*400)) / 20)
 | 
			
		||||
    let sc = valueSC - (po*400) - (pa*20)
 | 
			
		||||
    let pa = Math.floor((valueSC - (po * 400)) / 20)
 | 
			
		||||
    let sc = valueSC - (po * 400) - (pa * 20)
 | 
			
		||||
    return {
 | 
			
		||||
      po: po, pa: pa, sc: sc, valueSC: valueSC 
 | 
			
		||||
      po: po, pa: pa, sc: sc, valueSC: valueSC
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static incDecHeritage() {
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static computeResult(actor, rollData) {
 | 
			
		||||
    rollData.diceResult = -1
 | 
			
		||||
    let resTab = []
 | 
			
		||||
    for ( let res of rollData.roll.terms[0].results) {
 | 
			
		||||
      rollData.diceResult = Math.max(res.result, rollData.diceResult)      
 | 
			
		||||
      resTab.push(res.result)
 | 
			
		||||
    }    
 | 
			
		||||
    let isFailure = false
 | 
			
		||||
    if (rollData.mainDice.includes("d10")) {
 | 
			
		||||
      if ( rollData.diceResult == 1) {
 | 
			
		||||
        rollData.finalResult -= 3
 | 
			
		||||
        isFailure = true
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.mainDice.includes("d12")) {
 | 
			
		||||
      if ( rollData.diceResult == 1 || rollData.diceResult == 2) {
 | 
			
		||||
        rollData.finalResult -= 5
 | 
			
		||||
        isFailure = true
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    // Heritage/Tricherie management
 | 
			
		||||
    let isTricherieHeritage = rollData.useHeritage || rollData.useTricherie
 | 
			
		||||
 | 
			
		||||
    rollData.marge = 0
 | 
			
		||||
    if (!isFailure && (rollData.useHeritage || rollData.useTricherie)) {
 | 
			
		||||
 | 
			
		||||
    if (isTricherieHeritage) {
 | 
			
		||||
      let resTab = [rollData.roll.terms[0].results[0].result, rollData.roll.terms[0].results[1].result, rollData.roll.terms[0].results[2].result]
 | 
			
		||||
      rollData.diceResult = resTab[0] + "," + resTab[1] + "," + resTab[2]
 | 
			
		||||
      let foundryTotal = resTab[0] + resTab[1] + resTab[2]
 | 
			
		||||
      if (resTab[1] == 1) { resTab[1] -= 4 }
 | 
			
		||||
      if (resTab[2] == 1) { resTab[2] -= 6 }
 | 
			
		||||
      if (resTab[2] == 2) { resTab[2] -= 7 }
 | 
			
		||||
      rollData.diceValue = Math.max(Math.max(resTab[0], resTab[1]), resTab[2])
 | 
			
		||||
      rollData.finalResult = rollData.roll.total - foundryTotal + rollData.diceValue
 | 
			
		||||
 | 
			
		||||
      // Gestion des résultats spéciaux
 | 
			
		||||
      resTab = resTab.sort()
 | 
			
		||||
      if ( (resTab[0] == resTab[1]) && (resTab[1] == resTab[2])) {
 | 
			
		||||
      if ((resTab[0] == resTab[1]) && (resTab[1] == resTab[2])) {
 | 
			
		||||
        rollData.marge = 7
 | 
			
		||||
        rollData.isSuccess = true
 | 
			
		||||
        rollData.isCriticalSuccess = true        
 | 
			
		||||
        rollData.isCriticalSuccess = true
 | 
			
		||||
        rollData.isBrelan = true
 | 
			
		||||
      }
 | 
			
		||||
      if ((resTab[0]+1 == resTab[1]) && (resTab[1]+1 == resTab[2]) ) {
 | 
			
		||||
      if ((resTab[0] + 1 == resTab[1]) && (resTab[1] + 1 == resTab[2])) {
 | 
			
		||||
        rollData.marge = 7
 | 
			
		||||
        rollData.isSuccess = true
 | 
			
		||||
        rollData.isCriticalSuccess = true        
 | 
			
		||||
      }      
 | 
			
		||||
      if ( rollData.useTricherie) {
 | 
			
		||||
        rollData.isCriticalSuccess = true
 | 
			
		||||
        rollData.isSuite = true
 | 
			
		||||
      }
 | 
			
		||||
      if (rollData.useTricherie) {
 | 
			
		||||
        actor.incDecTricherie(-1)
 | 
			
		||||
      }
 | 
			
		||||
      if ( rollData.useHeritage) {
 | 
			
		||||
      if (rollData.useHeritage) {
 | 
			
		||||
        this.incDecHeritage()
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    //rollData.finalResult = Math.max(rollData.finalResult, 0)
 | 
			
		||||
    //console.log("Result : ", rollData)
 | 
			
		||||
    if (rollData.marge == 0 && rollData.sdValue > 0 ) {
 | 
			
		||||
      rollData.marge = rollData.finalResult - rollData.sdValue
 | 
			
		||||
      rollData.isSuccess = (rollData.finalResult >= rollData.sdValue)
 | 
			
		||||
      rollData.isCriticalSuccess = ((rollData.finalResult - rollData.sdValue) >= 7)
 | 
			
		||||
      rollData.isCriticalFailure = ((rollData.finalResult - rollData.sdValue) <= -7)
 | 
			
		||||
 | 
			
		||||
    } else {
 | 
			
		||||
      rollData.finalResult = rollData.roll.total
 | 
			
		||||
      let rollValue = rollData.forcedValue || rollData.roll.terms[0].results[0].result
 | 
			
		||||
      rollData.diceResult = rollValue
 | 
			
		||||
      rollData.diceValue = rollValue
 | 
			
		||||
      if (rollData.mainDice.includes("d10")) {
 | 
			
		||||
        if (rollValue == 1) {
 | 
			
		||||
          rollData.finalResult -= 3 + rollValue // substract 3 and the 1 value that has been added
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      if (rollData.mainDice.includes("d12")) {
 | 
			
		||||
        if (rollValue == 1 || rollValue == 2) {
 | 
			
		||||
          rollData.finalResult -= 5 + rollValue // Remove also the dice result has it has been added already
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      if ( !rollData.forcedValue) {
 | 
			
		||||
        rollData.adjacentFaces = duplicate(__facesAdjacentes[rollData.mainDice][rollData.diceValue])
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static computeArmeDegats(rollData, actor) {
 | 
			
		||||
    rollData.degatsArme = rollData.arme.system.degats + rollData.marge
 | 
			
		||||
    if (rollData.attaqueDeuxArmes != 0 && rollData.secondeArme) {
 | 
			
		||||
      let secondeArme = actor.items.get(secondeArme)
 | 
			
		||||
      if (secondeArme) {
 | 
			
		||||
        rollData.degatsArme += secondeArme.system.degats
 | 
			
		||||
        rollData.degatsArme += actor.system.caracteristiques.for.value
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      if (rollData.arme.system.categorie == "lourde") {
 | 
			
		||||
        rollData.degatsArme += actor.system.caracteristiques.for.value
 | 
			
		||||
      }
 | 
			
		||||
      if (rollData.arme.system.categorie == "blanche" || rollData.arme.system.categorie == "improvise") {
 | 
			
		||||
        rollData.degatsArme += Math.max(0, actor.system.caracteristiques.for.value - 2)
 | 
			
		||||
      }
 | 
			
		||||
      if (rollData.mode == "attaquecharge") {
 | 
			
		||||
        rollData.degatsArme += 3
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.attaqueCible == "membre") {
 | 
			
		||||
      rollData.degatsArme -= 2
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.attaqueCible == "main") {
 | 
			
		||||
      rollData.degatsArme -= 3
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.attaqueCible == "tete") {
 | 
			
		||||
      rollData.degatsArme *= 3
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static computeMarge(rollData, seuil) {
 | 
			
		||||
    if (rollData.marge == 0 && seuil >= 0) {
 | 
			
		||||
      rollData.marge = rollData.finalResult - seuil
 | 
			
		||||
      rollData.isSuccess = (rollData.finalResult >= seuil)
 | 
			
		||||
      rollData.isCriticalSuccess = ((rollData.finalResult - seuil) >= 7)
 | 
			
		||||
      rollData.isCriticalFailure = ((rollData.finalResult - seuil) <= -7)
 | 
			
		||||
      // Si compétence > 0 et d8 -> echec critique impossible
 | 
			
		||||
      if (rollData?.competence?.system.niveau > 0 && rollData?.mainDice == "d8") {
 | 
			
		||||
        rollData.isCriticalFailure = false
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async displayUneDefense(rollData, actor, nomDefense, valeurDefense) {
 | 
			
		||||
    rollData.defenderMode = nomDefense
 | 
			
		||||
    rollData.defenderValue = valeurDefense
 | 
			
		||||
    rollData.marge = 0
 | 
			
		||||
    this.computeMarge(rollData, valeurDefense)
 | 
			
		||||
    if (rollData.isSuccess) {
 | 
			
		||||
      this.computeArmeDegats(rollData, actor)
 | 
			
		||||
    }
 | 
			
		||||
    this.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
      content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-cc-result.html`, rollData)
 | 
			
		||||
    }, rollData, "selfroll")
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async displayAsssomer(rollData, actor, nomAttaque, etatAssomer, valeurDefense) {
 | 
			
		||||
    rollData.defenderMode = nomAttaque
 | 
			
		||||
    rollData.etatAssommer = etatAssomer
 | 
			
		||||
    rollData.defenderValue = valeurDefense
 | 
			
		||||
    rollData.marge = 0
 | 
			
		||||
    this.computeMarge(rollData, valeurDefense)
 | 
			
		||||
    rollData.dureeAssommer = (rollData.marge) ? rollData.marge * 2 : 1
 | 
			
		||||
    this.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
      content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-assommer-result.html`, rollData)
 | 
			
		||||
    }, rollData, "selfroll")
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async rollHeritiers(rollData) {
 | 
			
		||||
 | 
			
		||||
    let actor = this.getActorFromRollData(rollData)
 | 
			
		||||
 | 
			
		||||
    if ( rollData.mode == "pouvoir" && actor.getPouvoirUsage(rollData.pouvoir._id) < rollData.pouvoirPointsUsage) {
 | 
			
		||||
      ui.notifications.warn("Pas assez de points d'usage pour ce pouvoir.")
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    //rollData.actionImg = "systems/fvtt-les-heritiers/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp"
 | 
			
		||||
    rollData.carac = duplicate(actor.system.caracteristiques[rollData.caracKey])
 | 
			
		||||
 | 
			
		||||
    rollData.nbDice = (rollData.useTricherie || rollData.useHeritage) ? 3 : 1
 | 
			
		||||
    rollData.diceFormula = rollData.nbDice + rollData.mainDice + "kh1"
 | 
			
		||||
    //console.log("BEFORE COMP", rollData)
 | 
			
		||||
    if (rollData.competence) {
 | 
			
		||||
      let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
 | 
			
		||||
      let specBonus = (rollData.useSpecialite) ? 1 : 0
 | 
			
		||||
      rollData.diceFormula += `+${rollData.carac.value}+${rollData.competence.system.niveau}+${specBonus}+${rollData.bonusMalusContext}+${compmod}`
 | 
			
		||||
    if (rollData.forcedValue) {
 | 
			
		||||
      rollData.diceFormula = rollData.forcedValue
 | 
			
		||||
    } else {
 | 
			
		||||
      rollData.diceFormula += `+${rollData.carac.value}+${rollData.bonusMalusContext}`
 | 
			
		||||
      if (rollData.useTricherie || rollData.useHeritage) {
 | 
			
		||||
        rollData.diceFormula = "{1d8, 1d10, 1d12}"
 | 
			
		||||
      } else {
 | 
			
		||||
        rollData.diceFormula = "1" + rollData.mainDice + "kh1"
 | 
			
		||||
      }  
 | 
			
		||||
    }
 | 
			
		||||
    rollData.diceFormula += `+${rollData.pvMalus}`
 | 
			
		||||
 | 
			
		||||
    if (rollData.arme && rollData.arme.type == "arme") {
 | 
			
		||||
      rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
 | 
			
		||||
    let rangValue = 0
 | 
			
		||||
    if (rollData.rang) {
 | 
			
		||||
      rangValue = rollData.rang.value
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.competence) {
 | 
			
		||||
      let compmod = 0 // Bonus de compétence à 0 dans Les Heritiers
 | 
			
		||||
      let specBonus = (rollData.useSpecialite) ? 1 : 0
 | 
			
		||||
      rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.competence.system.niveau}+${specBonus}+${rollData.bonusMalusContext}+${compmod}`
 | 
			
		||||
    } else if (rollData.pouvoirBase) {
 | 
			
		||||
      rollData.diceFormula += `+${rollData.carac.value}+${rollData.pouvoirBase.value}+${rangValue}+${rollData.bonusMalusContext}`
 | 
			
		||||
    } else {
 | 
			
		||||
      rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.bonusMalusContext}`
 | 
			
		||||
    }
 | 
			
		||||
    let ruleMalus = 0
 | 
			
		||||
    for (let malus of rollData.rulesMalus) {
 | 
			
		||||
      ruleMalus += malus.value
 | 
			
		||||
    }
 | 
			
		||||
    rollData.diceFormula += `+${ruleMalus}`
 | 
			
		||||
 | 
			
		||||
    // Gestion bonus attaque à plusieurs
 | 
			
		||||
    let bonusAttaque = rollData.bonusAttaquePlusieurs
 | 
			
		||||
    if (rollData.attaqueDos) {
 | 
			
		||||
      bonusAttaque = 2
 | 
			
		||||
      if (rollData.bonusAttaquePlusieurs) {
 | 
			
		||||
        bonusAttaque = 3 // Valeur max, cf règle page 197
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    rollData.diceFormula += `+${bonusAttaque}`
 | 
			
		||||
 | 
			
		||||
    // Gestion attaque avec 2 armes
 | 
			
		||||
    if (rollData.attaqueDeuxArmes != 0) {
 | 
			
		||||
      rollData.diceFormula += `+${rollData.attaqueDeuxArmes}`
 | 
			
		||||
    }
 | 
			
		||||
    // Gestion des attaques ciblées
 | 
			
		||||
    if (rollData.attaqueCible != "none") {
 | 
			
		||||
      if (rollData.attaqueCible == "membre") {
 | 
			
		||||
        rollData.diceFormula += `-2`
 | 
			
		||||
      }
 | 
			
		||||
      if (rollData.attaqueCible == "main") {
 | 
			
		||||
        rollData.diceFormula += `-3`
 | 
			
		||||
      }
 | 
			
		||||
      if (rollData.attaqueCible == "tete") {
 | 
			
		||||
        rollData.diceFormula += `-6`
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
 | 
			
		||||
    await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
 | 
			
		||||
    rollData.roll = myRoll
 | 
			
		||||
    rollData.roll = duplicate(myRoll)
 | 
			
		||||
    console.log(">>>> ", myRoll)
 | 
			
		||||
 | 
			
		||||
    rollData.finalResult = myRoll.total
 | 
			
		||||
    this.computeResult(actor, rollData)
 | 
			
		||||
    this.computeMarge(rollData, rollData.sdValue) // Calcul de la marge si seuil présent
 | 
			
		||||
 | 
			
		||||
    if (rollData.mode == "init") {
 | 
			
		||||
      actor.setFlag("world", "last-initiative", rollData.finalResult)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Gestion pouvoir et points d'usage
 | 
			
		||||
    if (rollData.mode == "pouvoir") {
 | 
			
		||||
      actor.incDecPointsUsage(rollData.pouvoir._id, -rollData.pouvoirPointsUsage)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
      content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData)
 | 
			
		||||
    }, rollData)
 | 
			
		||||
 | 
			
		||||
    // Gestion attaque standard
 | 
			
		||||
    if ((rollData.mode == "arme" || rollData.mode == "attaquebrutale" || rollData.mode == "attaquecharge") &&
 | 
			
		||||
      rollData.defenderTokenId && rollData.arme) {
 | 
			
		||||
      if (rollData.arme.system.categorie != "trait" && rollData.arme.system.categorie != "poing" && rollData.arme.system.categorie != "epaule") {
 | 
			
		||||
        await this.displayUneDefense(rollData, actor, "Parade", rollData.defenderParade)
 | 
			
		||||
        await this.displayUneDefense(rollData, actor, "Esquive", rollData.defenderEsquive)
 | 
			
		||||
      } else if (rollData.sdValue) {
 | 
			
		||||
        this.displayUneDefense(rollData, actor, "A Distance", rollData.sdValue)
 | 
			
		||||
      } else {
 | 
			
		||||
        ui.notifications.warn("Pas de difficulté positionnée pour l'attaque à distance.")
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    // Gestion assomer
 | 
			
		||||
    if (rollData.mode == "assommer" && rollData.defenderTokenId && rollData.arme) {
 | 
			
		||||
      await this.displayAsssomer(rollData, actor, "Assommer", "Surprise", rollData.defenderResistancePhysique)
 | 
			
		||||
      await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Résistance+6", rollData.defenderResistancePhysique + 6)
 | 
			
		||||
      await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Parade", rollData.defenderParade)
 | 
			
		||||
      await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Esquive", rollData.defenderEsquive + 6)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -394,7 +584,7 @@ export class HeritiersUtility {
 | 
			
		||||
 | 
			
		||||
    let bonusRoll = new Roll(rollData.bonusFormula).roll({ async: false })
 | 
			
		||||
    await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
 | 
			
		||||
    rollData.bonusRoll = bonusRoll
 | 
			
		||||
    rollData.bonusRoll = duplicate(bonusRoll)
 | 
			
		||||
 | 
			
		||||
    rollData.finalResult += rollData.bonusRoll.total
 | 
			
		||||
 | 
			
		||||
@@ -411,6 +601,10 @@ export class HeritiersUtility {
 | 
			
		||||
    return game.users.filter(filter).map(user => user._id);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static isArmeMelee(arme) {
 | 
			
		||||
    return (arme.type == "arme" && (arme.system.categorie == "lourde" || arme.system.categorie == "blanche" || arme.system.categorie == "improvise"))
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static getWhisperRecipients(rollMode, name) {
 | 
			
		||||
    switch (rollMode) {
 | 
			
		||||
@@ -495,8 +689,14 @@ export class HeritiersUtility {
 | 
			
		||||
      rollId: randomID(16),
 | 
			
		||||
      rollMode: game.settings.get("core", "rollMode"),
 | 
			
		||||
      sdList: game.system.lesheritiers.config.seuilsDifficulte,
 | 
			
		||||
      sdValue: 0,
 | 
			
		||||
      bonusMalusContext: 0
 | 
			
		||||
      sdValue: -1,
 | 
			
		||||
      bonusAttaquePlusieurs: 0,
 | 
			
		||||
      attaqueDeuxArmes: 0,
 | 
			
		||||
      attaqueDos: false,
 | 
			
		||||
      bonusMalusContext: 0,
 | 
			
		||||
      attaqueCible: "none",
 | 
			
		||||
      config: game.system.lesheritiers.config,
 | 
			
		||||
      rulesMalus: []
 | 
			
		||||
    }
 | 
			
		||||
    return rollData
 | 
			
		||||
  }
 | 
			
		||||
@@ -507,18 +707,18 @@ export class HeritiersUtility {
 | 
			
		||||
    if (target) {
 | 
			
		||||
      rollData.defenderTokenId = target.id
 | 
			
		||||
      let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
 | 
			
		||||
      rollData.armeDefense = defender.getBestDefenseValue()
 | 
			
		||||
      rollData.targetVigueur = defender.getVigueur()
 | 
			
		||||
      if (rollData.armeDefense) {
 | 
			
		||||
        rollData.difficulte = rollData.armeDefense.system.totalDefensif
 | 
			
		||||
      } else {
 | 
			
		||||
        ui.notifications.warn("Aucune arme de défense équipée, difficulté manuelle à positionner.")
 | 
			
		||||
      }
 | 
			
		||||
      rollData.defenderName = defender.name
 | 
			
		||||
      rollData.defenderParade = defender.getCurrentParade()
 | 
			
		||||
      rollData.defenderEsquive = defender.getCurrentEsquive()
 | 
			
		||||
      rollData.defenderResistancePhysique = defender.getCurrentResistancePhysique()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static createChatWithRollMode(name, chatOptions, rollData = undefined) {
 | 
			
		||||
  static createChatWithRollMode(name, chatOptions, rollData = undefined, rollMode = undefined) {
 | 
			
		||||
    if (rollMode == undefined) {
 | 
			
		||||
      rollMode = game.settings.get("core", "rollMode")
 | 
			
		||||
    }
 | 
			
		||||
    this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions, rollData)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/archetypes-fees/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/archetypes-fees/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/archetypes-fees/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/archetypes-fees/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/archetypes-fees/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/archetypes-fees/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000058
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/archetypes-fees/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/archetypes-fees/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/archetypes-fees/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/archetypes-fees/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/04/01-17:26:18.400582 7f2f096006c0 Recovering log #56
 | 
			
		||||
2024/04/01-17:26:18.410531 7f2f096006c0 Delete type=3 #54
 | 
			
		||||
2024/04/01-17:26:18.410588 7f2f096006c0 Delete type=0 #56
 | 
			
		||||
2024/04/01-17:27:00.271754 7f2f03a006c0 Level-0 table #61: started
 | 
			
		||||
2024/04/01-17:27:00.271819 7f2f03a006c0 Level-0 table #61: 0 bytes OK
 | 
			
		||||
2024/04/01-17:27:00.307464 7f2f03a006c0 Delete type=0 #59
 | 
			
		||||
2024/04/01-17:27:00.345066 7f2f03a006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/04/01-17:27:00.345103 7f2f03a006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/archetypes-fees/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/archetypes-fees/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/03/31-17:51:10.121804 7f2efb8006c0 Recovering log #52
 | 
			
		||||
2024/03/31-17:51:10.132699 7f2efb8006c0 Delete type=3 #50
 | 
			
		||||
2024/03/31-17:51:10.132828 7f2efb8006c0 Delete type=0 #52
 | 
			
		||||
2024/03/31-17:52:39.333208 7f2efae006c0 Level-0 table #57: started
 | 
			
		||||
2024/03/31-17:52:39.333263 7f2efae006c0 Level-0 table #57: 0 bytes OK
 | 
			
		||||
2024/03/31-17:52:39.340471 7f2efae006c0 Delete type=0 #55
 | 
			
		||||
2024/03/31-17:52:39.340751 7f2efae006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/03/31-17:52:39.340782 7f2efae006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/archetypes-fees/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/archetypes-fees/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/armes-et-protection/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/armes-et-protection/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/armes-et-protection/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/armes-et-protection/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/armes-et-protection/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/armes-et-protection/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000058
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/armes-et-protection/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/armes-et-protection/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/armes-et-protection/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/armes-et-protection/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/04/01-17:26:18.436287 7f2f096006c0 Recovering log #56
 | 
			
		||||
2024/04/01-17:26:18.446918 7f2f096006c0 Delete type=3 #54
 | 
			
		||||
2024/04/01-17:26:18.447011 7f2f096006c0 Delete type=0 #56
 | 
			
		||||
2024/04/01-17:27:00.345258 7f2f03a006c0 Level-0 table #61: started
 | 
			
		||||
2024/04/01-17:27:00.345284 7f2f03a006c0 Level-0 table #61: 0 bytes OK
 | 
			
		||||
2024/04/01-17:27:00.384063 7f2f03a006c0 Delete type=0 #59
 | 
			
		||||
2024/04/01-17:27:00.501638 7f2f03a006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/04/01-17:27:00.501693 7f2f03a006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/armes-et-protection/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/armes-et-protection/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/03/31-17:51:10.159099 7f2efb8006c0 Recovering log #52
 | 
			
		||||
2024/03/31-17:51:10.171301 7f2efb8006c0 Delete type=3 #50
 | 
			
		||||
2024/03/31-17:51:10.171460 7f2efb8006c0 Delete type=0 #52
 | 
			
		||||
2024/03/31-17:52:39.340903 7f2efae006c0 Level-0 table #57: started
 | 
			
		||||
2024/03/31-17:52:39.340946 7f2efae006c0 Level-0 table #57: 0 bytes OK
 | 
			
		||||
2024/03/31-17:52:39.348787 7f2efae006c0 Delete type=0 #55
 | 
			
		||||
2024/03/31-17:52:39.370825 7f2efae006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/03/31-17:52:39.370890 7f2efae006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/armes-et-protection/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/armes-et-protection/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/atouts-feeriques/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/atouts-feeriques/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/atouts-feeriques/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/atouts-feeriques/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/atouts-feeriques/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/atouts-feeriques/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000058
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/atouts-feeriques/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/atouts-feeriques/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/atouts-feeriques/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/atouts-feeriques/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/04/01-17:26:18.385599 7f2f0aa006c0 Recovering log #56
 | 
			
		||||
2024/04/01-17:26:18.395901 7f2f0aa006c0 Delete type=3 #54
 | 
			
		||||
2024/04/01-17:26:18.395960 7f2f0aa006c0 Delete type=0 #56
 | 
			
		||||
2024/04/01-17:27:00.228031 7f2f03a006c0 Level-0 table #61: started
 | 
			
		||||
2024/04/01-17:27:00.228054 7f2f03a006c0 Level-0 table #61: 0 bytes OK
 | 
			
		||||
2024/04/01-17:27:00.271487 7f2f03a006c0 Delete type=0 #59
 | 
			
		||||
2024/04/01-17:27:00.345051 7f2f03a006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/04/01-17:27:00.345088 7f2f03a006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/atouts-feeriques/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/atouts-feeriques/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/03/31-17:51:10.103648 7f2efcc006c0 Recovering log #52
 | 
			
		||||
2024/03/31-17:51:10.116316 7f2efcc006c0 Delete type=3 #50
 | 
			
		||||
2024/03/31-17:51:10.116475 7f2efcc006c0 Delete type=0 #52
 | 
			
		||||
2024/03/31-17:52:39.317590 7f2efae006c0 Level-0 table #57: started
 | 
			
		||||
2024/03/31-17:52:39.317634 7f2efae006c0 Level-0 table #57: 0 bytes OK
 | 
			
		||||
2024/03/31-17:52:39.332888 7f2efae006c0 Delete type=0 #55
 | 
			
		||||
2024/03/31-17:52:39.340690 7f2efae006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/03/31-17:52:39.340767 7f2efae006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/atouts-feeriques/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/atouts-feeriques/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/avantages/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/avantages/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/avantages/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/avantages/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/avantages/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/avantages/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000058
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/avantages/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/avantages/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/avantages/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/avantages/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/04/01-17:26:18.342233 7f2f096006c0 Recovering log #56
 | 
			
		||||
2024/04/01-17:26:18.352564 7f2f096006c0 Delete type=3 #54
 | 
			
		||||
2024/04/01-17:26:18.352637 7f2f096006c0 Delete type=0 #56
 | 
			
		||||
2024/04/01-17:27:00.041914 7f2f03a006c0 Level-0 table #61: started
 | 
			
		||||
2024/04/01-17:27:00.041937 7f2f03a006c0 Level-0 table #61: 0 bytes OK
 | 
			
		||||
2024/04/01-17:27:00.113315 7f2f03a006c0 Delete type=0 #59
 | 
			
		||||
2024/04/01-17:27:00.191182 7f2f03a006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/04/01-17:27:00.191238 7f2f03a006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/avantages/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/avantages/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/03/31-17:51:10.054712 7f2efb8006c0 Recovering log #52
 | 
			
		||||
2024/03/31-17:51:10.065463 7f2efb8006c0 Delete type=3 #50
 | 
			
		||||
2024/03/31-17:51:10.065576 7f2efb8006c0 Delete type=0 #52
 | 
			
		||||
2024/03/31-17:52:39.281908 7f2efae006c0 Level-0 table #57: started
 | 
			
		||||
2024/03/31-17:52:39.281951 7f2efae006c0 Level-0 table #57: 0 bytes OK
 | 
			
		||||
2024/03/31-17:52:39.289468 7f2efae006c0 Delete type=0 #55
 | 
			
		||||
2024/03/31-17:52:39.289750 7f2efae006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/03/31-17:52:39.303742 7f2efae006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/avantages/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/avantages/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/capacites/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/capacites/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/capacites/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/capacites/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/capacites/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/capacites/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000058
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/capacites/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/capacites/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/capacites/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/capacites/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/04/01-17:26:18.372566 7f2f096006c0 Recovering log #56
 | 
			
		||||
2024/04/01-17:26:18.382660 7f2f096006c0 Delete type=3 #54
 | 
			
		||||
2024/04/01-17:26:18.382718 7f2f096006c0 Delete type=0 #56
 | 
			
		||||
2024/04/01-17:27:00.191314 7f2f03a006c0 Level-0 table #61: started
 | 
			
		||||
2024/04/01-17:27:00.191384 7f2f03a006c0 Level-0 table #61: 0 bytes OK
 | 
			
		||||
2024/04/01-17:27:00.227904 7f2f03a006c0 Delete type=0 #59
 | 
			
		||||
2024/04/01-17:27:00.345037 7f2f03a006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/04/01-17:27:00.345095 7f2f03a006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/capacites/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/capacites/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/03/31-17:51:10.086922 7f2efb8006c0 Recovering log #52
 | 
			
		||||
2024/03/31-17:51:10.097896 7f2efb8006c0 Delete type=3 #50
 | 
			
		||||
2024/03/31-17:51:10.098016 7f2efb8006c0 Delete type=0 #52
 | 
			
		||||
2024/03/31-17:52:39.310551 7f2efae006c0 Level-0 table #57: started
 | 
			
		||||
2024/03/31-17:52:39.310589 7f2efae006c0 Level-0 table #57: 0 bytes OK
 | 
			
		||||
2024/03/31-17:52:39.317387 7f2efae006c0 Delete type=0 #55
 | 
			
		||||
2024/03/31-17:52:39.333187 7f2efae006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/03/31-17:52:39.340732 7f2efae006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/capacites/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/capacites/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/competences/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/competences/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/competences/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/competences/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/competences/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/competences/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000058
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/competences/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/competences/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/competences/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/competences/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/04/01-17:26:18.325472 7f2f0aa006c0 Recovering log #56
 | 
			
		||||
2024/04/01-17:26:18.336087 7f2f0aa006c0 Delete type=3 #54
 | 
			
		||||
2024/04/01-17:26:18.336251 7f2f0aa006c0 Delete type=0 #56
 | 
			
		||||
2024/04/01-17:27:00.007045 7f2f03a006c0 Level-0 table #61: started
 | 
			
		||||
2024/04/01-17:27:00.007122 7f2f03a006c0 Level-0 table #61: 0 bytes OK
 | 
			
		||||
2024/04/01-17:27:00.041786 7f2f03a006c0 Delete type=0 #59
 | 
			
		||||
2024/04/01-17:27:00.191140 7f2f03a006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/04/01-17:27:00.191221 7f2f03a006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/competences/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/competences/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/03/31-17:51:10.039717 7f2efcc006c0 Recovering log #52
 | 
			
		||||
2024/03/31-17:51:10.050432 7f2efcc006c0 Delete type=3 #50
 | 
			
		||||
2024/03/31-17:51:10.050525 7f2efcc006c0 Delete type=0 #52
 | 
			
		||||
2024/03/31-17:52:39.274978 7f2efae006c0 Level-0 table #57: started
 | 
			
		||||
2024/03/31-17:52:39.275040 7f2efae006c0 Level-0 table #57: 0 bytes OK
 | 
			
		||||
2024/03/31-17:52:39.281732 7f2efae006c0 Delete type=0 #55
 | 
			
		||||
2024/03/31-17:52:39.289726 7f2efae006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/03/31-17:52:39.289784 7f2efae006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/competences/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/competences/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/desavantages/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/desavantages/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/desavantages/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/desavantages/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/desavantages/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/desavantages/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000058
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/desavantages/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/desavantages/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/desavantages/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/desavantages/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/04/01-17:26:18.358251 7f2f0aa006c0 Recovering log #56
 | 
			
		||||
2024/04/01-17:26:18.369646 7f2f0aa006c0 Delete type=3 #54
 | 
			
		||||
2024/04/01-17:26:18.369716 7f2f0aa006c0 Delete type=0 #56
 | 
			
		||||
2024/04/01-17:27:00.113491 7f2f03a006c0 Level-0 table #61: started
 | 
			
		||||
2024/04/01-17:27:00.113522 7f2f03a006c0 Level-0 table #61: 0 bytes OK
 | 
			
		||||
2024/04/01-17:27:00.190954 7f2f03a006c0 Delete type=0 #59
 | 
			
		||||
2024/04/01-17:27:00.191203 7f2f03a006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/04/01-17:27:00.191254 7f2f03a006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/desavantages/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/desavantages/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/03/31-17:51:10.069929 7f2efcc006c0 Recovering log #52
 | 
			
		||||
2024/03/31-17:51:10.081848 7f2efcc006c0 Delete type=3 #50
 | 
			
		||||
2024/03/31-17:51:10.082018 7f2efcc006c0 Delete type=0 #52
 | 
			
		||||
2024/03/31-17:52:39.303782 7f2efae006c0 Level-0 table #57: started
 | 
			
		||||
2024/03/31-17:52:39.303846 7f2efae006c0 Level-0 table #57: 0 bytes OK
 | 
			
		||||
2024/03/31-17:52:39.310366 7f2efae006c0 Delete type=0 #55
 | 
			
		||||
2024/03/31-17:52:39.333155 7f2efae006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/03/31-17:52:39.340713 7f2efae006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/desavantages/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/desavantages/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/pouvoirs/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/pouvoirs/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/pouvoirs/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/pouvoirs/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/pouvoirs/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/pouvoirs/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000058
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/pouvoirs/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/pouvoirs/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/pouvoirs/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/pouvoirs/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/04/01-17:26:18.416432 7f2f0aa006c0 Recovering log #56
 | 
			
		||||
2024/04/01-17:26:18.426581 7f2f0aa006c0 Delete type=3 #54
 | 
			
		||||
2024/04/01-17:26:18.426652 7f2f0aa006c0 Delete type=0 #56
 | 
			
		||||
2024/04/01-17:27:00.307704 7f2f03a006c0 Level-0 table #61: started
 | 
			
		||||
2024/04/01-17:27:00.307767 7f2f03a006c0 Level-0 table #61: 0 bytes OK
 | 
			
		||||
2024/04/01-17:27:00.344905 7f2f03a006c0 Delete type=0 #59
 | 
			
		||||
2024/04/01-17:27:00.345079 7f2f03a006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/04/01-17:27:00.345111 7f2f03a006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/pouvoirs/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/pouvoirs/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/03/31-17:51:10.140897 7f2efcc006c0 Recovering log #52
 | 
			
		||||
2024/03/31-17:51:10.152190 7f2efcc006c0 Delete type=3 #50
 | 
			
		||||
2024/03/31-17:51:10.152332 7f2efcc006c0 Delete type=0 #52
 | 
			
		||||
2024/03/31-17:52:39.348979 7f2efae006c0 Level-0 table #57: started
 | 
			
		||||
2024/03/31-17:52:39.349027 7f2efae006c0 Level-0 table #57: 0 bytes OK
 | 
			
		||||
2024/03/31-17:52:39.355963 7f2efae006c0 Delete type=0 #55
 | 
			
		||||
2024/03/31-17:52:39.370848 7f2efae006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/03/31-17:52:39.370917 7f2efae006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/pouvoirs/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/pouvoirs/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/profils/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/profils/000060.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/profils/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/profils/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000058
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/profils/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/profils/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										7
									
								
								packs/profils/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								packs/profils/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
2024/04/01-17:26:18.449689 7f2f0aa006c0 Recovering log #56
 | 
			
		||||
2024/04/01-17:26:18.459888 7f2f0aa006c0 Delete type=3 #54
 | 
			
		||||
2024/04/01-17:26:18.459966 7f2f0aa006c0 Delete type=0 #56
 | 
			
		||||
2024/04/01-17:27:00.411338 7f2f03a006c0 Level-0 table #61: started
 | 
			
		||||
2024/04/01-17:27:00.411373 7f2f03a006c0 Level-0 table #61: 0 bytes OK
 | 
			
		||||
2024/04/01-17:27:00.465790 7f2f03a006c0 Delete type=0 #59
 | 
			
		||||
2024/04/01-17:27:00.501666 7f2f03a006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										7
									
								
								packs/profils/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								packs/profils/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
2024/03/31-17:51:10.175407 7f2efcc006c0 Recovering log #52
 | 
			
		||||
2024/03/31-17:51:10.186143 7f2efcc006c0 Delete type=3 #50
 | 
			
		||||
2024/03/31-17:51:10.186253 7f2efcc006c0 Delete type=0 #52
 | 
			
		||||
2024/03/31-17:52:39.356138 7f2efae006c0 Level-0 table #57: started
 | 
			
		||||
2024/03/31-17:52:39.356175 7f2efae006c0 Level-0 table #57: 0 bytes OK
 | 
			
		||||
2024/03/31-17:52:39.363013 7f2efae006c0 Delete type=0 #55
 | 
			
		||||
2024/03/31-17:52:39.370863 7f2efae006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/profils/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/profils/MANIFEST-000058
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/scenes/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/scenes/000005.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/scenes/000028.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/scenes/000028.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/scenes/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/scenes/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000026
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/scenes/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/scenes/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/scenes/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/scenes/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/04/01-17:26:18.462590 7f2f096006c0 Recovering log #24
 | 
			
		||||
2024/04/01-17:26:18.472649 7f2f096006c0 Delete type=3 #22
 | 
			
		||||
2024/04/01-17:26:18.472723 7f2f096006c0 Delete type=0 #24
 | 
			
		||||
2024/04/01-17:27:00.384293 7f2f03a006c0 Level-0 table #29: started
 | 
			
		||||
2024/04/01-17:27:00.384350 7f2f03a006c0 Level-0 table #29: 0 bytes OK
 | 
			
		||||
2024/04/01-17:27:00.411173 7f2f03a006c0 Delete type=0 #27
 | 
			
		||||
2024/04/01-17:27:00.501654 7f2f03a006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/04/01-17:27:00.501685 7f2f03a006c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/scenes/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/scenes/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2024/03/31-17:51:10.189493 7f2efb8006c0 Recovering log #20
 | 
			
		||||
2024/03/31-17:51:10.200793 7f2efb8006c0 Delete type=3 #18
 | 
			
		||||
2024/03/31-17:51:10.200888 7f2efb8006c0 Delete type=0 #20
 | 
			
		||||
2024/03/31-17:52:39.363237 7f2efae006c0 Level-0 table #25: started
 | 
			
		||||
2024/03/31-17:52:39.363276 7f2efae006c0 Level-0 table #25: 0 bytes OK
 | 
			
		||||
2024/03/31-17:52:39.370640 7f2efae006c0 Delete type=0 #23
 | 
			
		||||
2024/03/31-17:52:39.370876 7f2efae006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
 | 
			
		||||
2024/03/31-17:52:39.370904 7f2efae006c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/scenes/MANIFEST-000026
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/scenes/MANIFEST-000026
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -78,9 +78,7 @@
 | 
			
		||||
.window-app input, .fvtt-les-heritiers .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
 | 
			
		||||
  font-size: 0.8rem;
 | 
			
		||||
}
 | 
			
		||||
.fvtt-les-heritiers .sheet-header select option {
 | 
			
		||||
  background-color: rgb(68, 25, 25);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.fvtt-les-heritiers .sheet-header input, .fvtt-les-heritiers .sheet-header select {
 | 
			
		||||
  color: rgb(41, 38, 38);
 | 
			
		||||
}
 | 
			
		||||
@@ -88,6 +86,13 @@
 | 
			
		||||
  background: rgba(0,0,0,0.75);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.page-heading {
 | 
			
		||||
  color: #151c1f;
 | 
			
		||||
}
 | 
			
		||||
.heading-link {
 | 
			
		||||
  color: #151c1f;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.window-app.sheet .window-content {
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
@@ -438,7 +443,7 @@ table {border: 1px solid #7a7971;}
 | 
			
		||||
  background-repeat: repeat;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] {
 | 
			
		||||
.window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header select, .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] {
 | 
			
		||||
  /*color: rgba(36, 37, 37, 0.75);*/
 | 
			
		||||
  /*background: rgba(255, 255, 255, 0.05);*/
 | 
			
		||||
  /*border: 2px saddlebrown;*/
 | 
			
		||||
@@ -568,6 +573,7 @@ ul, li {
 | 
			
		||||
 | 
			
		||||
.specialisation-label {
 | 
			
		||||
  font-size: 0.8rem;
 | 
			
		||||
  font-style: italic;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.carac-label,
 | 
			
		||||
@@ -647,7 +653,15 @@ ul, li {
 | 
			
		||||
  margin: 4px 0;
 | 
			
		||||
  padding-top: 7px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.roll-style {
 | 
			
		||||
  background-color: rgba(56, 32, 32, 0.4);
 | 
			
		||||
  border-radius: 0.25rem;
 | 
			
		||||
  padding-left: 0.25rem;
 | 
			
		||||
  margin-right: 0.25rem;
 | 
			
		||||
}
 | 
			
		||||
.specialisarion-margin {
 | 
			
		||||
  margin-left: 1.5rem;
 | 
			
		||||
}
 | 
			
		||||
.short-label {
 | 
			
		||||
  flex-grow: 1;
 | 
			
		||||
}
 | 
			
		||||
@@ -1010,8 +1024,6 @@ ul, li {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#sidebar #sidebar-tabs i{
 | 
			
		||||
  width: 25px;
 | 
			
		||||
  height: 25px;
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  background-position:center;
 | 
			
		||||
  background-size:cover;
 | 
			
		||||
@@ -1019,23 +1031,6 @@ ul, li {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*#sidebar #sidebar-tabs i.fa-comments:before, #sidebar #sidebar-tabs i.fa-fist-raised:before, #sidebar #sidebar-tabs i.fa-users:before, #sidebar #sidebar-tabs i.fa-map:before, #sidebar #sidebar-tabs i.fa-suitcase:before, #sidebar #sidebar-tabs i.fa-book-open:before, #sidebar #sidebar-tabs i.fa-th-list:before, #sidebar #sidebar-tabs i.fa-music:before, #sidebar #sidebar-tabs i.fa-atlas:before, #sidebar #sidebar-tabs i.fa-cogs:before {content: "";}
 | 
			
		||||
#sidebar #sidebar-tabs i.fa-comments {background: url("img/ui/icon_sidebar_chat.svg") no-repeat;}
 | 
			
		||||
#sidebar #sidebar-tabs i.fa-fist-raised {background: url("img/ui/icon_sidebar_fight.svg") no-repeat;}
 | 
			
		||||
#sidebar #sidebar-tabs i.fa-users {background: url("img/ui/icon_sidebar_actor.svg") no-repeat;}
 | 
			
		||||
#sidebar #sidebar-tabs i.fa-map {background: url("img/ui/icon_sidebar_scene.svg") no-repeat;}
 | 
			
		||||
#sidebar #sidebar-tabs i.fa-suitcase {background: url("img/ui/icon_sidebar_item.svg") no-repeat;}
 | 
			
		||||
#sidebar #sidebar-tabs i.fa-book-open {background: url("img/ui/icon_sidebar_journal.svg") no-repeat;}
 | 
			
		||||
#sidebar #sidebar-tabs i.fa-th-list {background: url("img/ui/icon_sidebar_rolltable.svg") no-repeat;}
 | 
			
		||||
#sidebar #sidebar-tabs i.fa-music {background: url("img/ui/icon_sidebar_music.svg") no-repeat;}
 | 
			
		||||
#sidebar #sidebar-tabs i.fa-atlas {background: url("img/ui/icon_sidebar_compendium.svg") no-repeat;}
 | 
			
		||||
#sidebar #sidebar-tabs i.fa-cogs {background: url("img/ui/icon_sidebar_settings.svg") no-repeat;}
 | 
			
		||||
 | 
			
		||||
#combat #combat-controls {
 | 
			
		||||
  box-shadow: inset 0 0 2rem rgba(0,0,0,0.5);
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*--------------------------------------------------------------------------*/
 | 
			
		||||
/* Control, Tool, hotbar & navigation */
 | 
			
		||||
 | 
			
		||||
@@ -1204,7 +1199,17 @@ ul, li {
 | 
			
		||||
  top:1px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
h4.entry-name.document-name {
 | 
			
		||||
  color: #f3eeee;  
 | 
			
		||||
}
 | 
			
		||||
.compendium h4.entry-name.document-name {
 | 
			
		||||
  color: black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.fxmaster {
 | 
			
		||||
  background: #443e37E0;
 | 
			
		||||
  background-color: #443e37E0;
 | 
			
		||||
}
 | 
			
		||||
.button-sheet-roll {
 | 
			
		||||
  box-shadow: inset 0px 1px 0px 0px #a6827e;
 | 
			
		||||
  background: linear-gradient(to bottom, #41545a 5%, #2e5561 100%);
 | 
			
		||||
@@ -1228,11 +1233,25 @@ ul, li {
 | 
			
		||||
  background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
 | 
			
		||||
  background-color: rgb(56, 33, 33);
 | 
			
		||||
}
 | 
			
		||||
.roll-tricherie-2 {
 | 
			
		||||
  margin: 2px 2px 2px 2px;
 | 
			
		||||
  box-shadow: inset 0px 1px 0px 0px #a6827e;
 | 
			
		||||
  background: linear-gradient(to bottom, #41545a 5%, #2e5561 100%);
 | 
			
		||||
  background-color: #7d5d3b00;
 | 
			
		||||
  border-radius: 4px;
 | 
			
		||||
  border: 1px ridge #846109;
 | 
			
		||||
  padding: 1px 1px 0px 1px;
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
  text-shadow: 0px 1px 0px #4d3534;
 | 
			
		||||
}
 | 
			
		||||
.button-sheet-roll:active {
 | 
			
		||||
  position:relative;
 | 
			
		||||
  top:1px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.button-sheet-roll-long1 {
 | 
			
		||||
  max-width: 6.1rem;
 | 
			
		||||
  min-width: 6.1rem;
 | 
			
		||||
}
 | 
			
		||||
.defense-sheet {
 | 
			
		||||
  border-radius: 4px;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										137
									
								
								system.json
									
									
									
									
									
								
							
							
						
						
									
										137
									
								
								system.json
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "id": "fvtt-les-heritiers",
 | 
			
		||||
  "description": "Les Héritiers pour FoundryVTT",
 | 
			
		||||
  "version": "10.0.21",
 | 
			
		||||
  "version": "11.0.11",
 | 
			
		||||
  "authors": [
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Uberwald/LeRatierBretonnien",
 | 
			
		||||
@@ -19,7 +19,7 @@
 | 
			
		||||
  "gridUnits": "m",
 | 
			
		||||
  "license": "LICENSE.txt",
 | 
			
		||||
  "manifest": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/raw/branch/master/system.json",
 | 
			
		||||
  "download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.0.21.zip",
 | 
			
		||||
  "download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-11.0.11.zip",
 | 
			
		||||
  "languages": [
 | 
			
		||||
    {
 | 
			
		||||
      "lang": "fr",
 | 
			
		||||
@@ -28,87 +28,163 @@
 | 
			
		||||
      "flags": {}
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "packFolders": [
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Les Héritiers",
 | 
			
		||||
      "sorting": "m",
 | 
			
		||||
      "color": "#00435c",
 | 
			
		||||
      "folders": [
 | 
			
		||||
        {
 | 
			
		||||
          "name": "Création de Personnage",
 | 
			
		||||
          "sorting": "a",
 | 
			
		||||
          "color": "#00435c",
 | 
			
		||||
          "packs": [
 | 
			
		||||
            "competences",
 | 
			
		||||
            "atouts-feeriques",
 | 
			
		||||
            "avantages",
 | 
			
		||||
            "capacites",
 | 
			
		||||
            "competences",
 | 
			
		||||
            "desavantages",
 | 
			
		||||
            "pouvoirs",
 | 
			
		||||
            "profils",
 | 
			
		||||
            "archetypes-fees"
 | 
			
		||||
          ],
 | 
			
		||||
          "folders": []
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          "name": "Equipement",
 | 
			
		||||
          "sorting": "a",
 | 
			
		||||
          "color": "#00435c",
 | 
			
		||||
          "packs": [
 | 
			
		||||
            "armes-et-protection"
 | 
			
		||||
          ],
 | 
			
		||||
          "folders": []
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      "packs": 
 | 
			
		||||
        ["scenes"]
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "packs": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "Item",
 | 
			
		||||
      "label": "Compétences",
 | 
			
		||||
      "name": "competences",
 | 
			
		||||
      "path": "packs/competences.db",
 | 
			
		||||
      "path": "packs/competences",
 | 
			
		||||
      "system": "fvtt-les-heritiers",
 | 
			
		||||
      "private": false,
 | 
			
		||||
      "flags": {}
 | 
			
		||||
      "flags": {},
 | 
			
		||||
      "ownership": {
 | 
			
		||||
        "PLAYER": "OBSERVER",
 | 
			
		||||
        "ASSISTANT": "OWNER"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "Item",
 | 
			
		||||
      "label": "Avantages",
 | 
			
		||||
      "name": "avantages",
 | 
			
		||||
      "path": "packs/avantages.db",
 | 
			
		||||
      "path": "packs/avantages",
 | 
			
		||||
      "system": "fvtt-les-heritiers",
 | 
			
		||||
      "private": false,
 | 
			
		||||
      "flags": {}
 | 
			
		||||
      "flags": {},
 | 
			
		||||
      "ownership": {
 | 
			
		||||
        "PLAYER": "OBSERVER",
 | 
			
		||||
        "ASSISTANT": "OWNER"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "Item",
 | 
			
		||||
      "label": "Désavantages",
 | 
			
		||||
      "name": "desavantages",
 | 
			
		||||
      "path": "packs/desavantages.db",
 | 
			
		||||
      "path": "packs/desavantages",
 | 
			
		||||
      "system": "fvtt-les-heritiers",
 | 
			
		||||
      "private": false,
 | 
			
		||||
      "flags": {}
 | 
			
		||||
      "flags": {},
 | 
			
		||||
      "ownership": {
 | 
			
		||||
        "PLAYER": "OBSERVER",
 | 
			
		||||
        "ASSISTANT": "OWNER"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "Item",
 | 
			
		||||
      "label": "Capacités Naturelles",
 | 
			
		||||
      "name": "capacites",
 | 
			
		||||
      "path": "packs/capacites.db",
 | 
			
		||||
      "path": "packs/capacites",
 | 
			
		||||
      "system": "fvtt-les-heritiers",
 | 
			
		||||
      "private": false,
 | 
			
		||||
      "flags": {}
 | 
			
		||||
      "flags": {},
 | 
			
		||||
      "ownership": {
 | 
			
		||||
        "PLAYER": "OBSERVER",
 | 
			
		||||
        "ASSISTANT": "OWNER"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "Item",
 | 
			
		||||
      "label": "Atouts Féériques",
 | 
			
		||||
      "name": "atouts-feeriques",
 | 
			
		||||
      "path": "packs/atouts-feeriques.db",
 | 
			
		||||
      "path": "packs/atouts-feeriques",
 | 
			
		||||
      "system": "fvtt-les-heritiers",
 | 
			
		||||
      "private": false,
 | 
			
		||||
      "flags": {}
 | 
			
		||||
      "flags": {},
 | 
			
		||||
      "ownership": {
 | 
			
		||||
        "PLAYER": "OBSERVER",
 | 
			
		||||
        "ASSISTANT": "OWNER"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "Item",
 | 
			
		||||
      "label": "Fées",
 | 
			
		||||
      "name": "archetypes-fees",
 | 
			
		||||
      "path": "packs/archetypes-fees.db",
 | 
			
		||||
      "path": "packs/archetypes-fees",
 | 
			
		||||
      "system": "fvtt-les-heritiers",
 | 
			
		||||
      "private": false,
 | 
			
		||||
      "flags": {}
 | 
			
		||||
      "flags": {},
 | 
			
		||||
      "ownership": {
 | 
			
		||||
        "PLAYER": "OBSERVER",
 | 
			
		||||
        "ASSISTANT": "OWNER"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "Item",
 | 
			
		||||
      "label": "Pouvoirs",
 | 
			
		||||
      "name": "pouvoirs",
 | 
			
		||||
      "path": "packs/pouvoirs.db",
 | 
			
		||||
      "path": "packs/pouvoirs",
 | 
			
		||||
      "system": "fvtt-les-heritiers",
 | 
			
		||||
      "private": false,
 | 
			
		||||
      "flags": {}
 | 
			
		||||
      "flags": {},
 | 
			
		||||
      "ownership": {
 | 
			
		||||
        "PLAYER": "OBSERVER",
 | 
			
		||||
        "ASSISTANT": "OWNER"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "Item",
 | 
			
		||||
      "label": "Armes et Protections",
 | 
			
		||||
      "name": "armes-et-protection",
 | 
			
		||||
      "path": "packs/armes-et-protection.db",
 | 
			
		||||
      "path": "packs/armes-et-protection",
 | 
			
		||||
      "system": "fvtt-les-heritiers",
 | 
			
		||||
      "private": false,
 | 
			
		||||
      "flags": {}
 | 
			
		||||
      "flags": {},
 | 
			
		||||
      "ownership": {
 | 
			
		||||
        "PLAYER": "OBSERVER",
 | 
			
		||||
        "ASSISTANT": "OWNER"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "Item",
 | 
			
		||||
      "label": "Profils",
 | 
			
		||||
      "name": "profils",
 | 
			
		||||
      "path": "packs/profils.db",
 | 
			
		||||
      "path": "packs/profils",
 | 
			
		||||
      "system": "fvtt-les-heritiers",
 | 
			
		||||
      "private": false,
 | 
			
		||||
      "flags": {}
 | 
			
		||||
      "flags": {},
 | 
			
		||||
      "ownership": {
 | 
			
		||||
        "PLAYER": "OBSERVER",
 | 
			
		||||
        "ASSISTANT": "OWNER"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "Scene",
 | 
			
		||||
      "label": "Scènes",
 | 
			
		||||
      "name": "scenes",
 | 
			
		||||
      "path": "packs/scenes",
 | 
			
		||||
      "system": "fvtt-les-heritiers",
 | 
			
		||||
      "flags": {},
 | 
			
		||||
      "ownership": {
 | 
			
		||||
        "PLAYER": "OBSERVER",
 | 
			
		||||
        "ASSISTANT": "OWNER"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "primaryTokenAttribute": "sante.vigueur",
 | 
			
		||||
@@ -122,7 +198,6 @@
 | 
			
		||||
  "background": "systems/fvtt-les-heritiers/assets/ui/wallpaper_foundry2.webp",
 | 
			
		||||
  "compatibility": {
 | 
			
		||||
    "minimum": "10",
 | 
			
		||||
    "verified": "10",
 | 
			
		||||
    "maximum": "10"
 | 
			
		||||
    "verified": "11"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  "Actor": {
 | 
			
		||||
    "types": [
 | 
			
		||||
      "personnage",
 | 
			
		||||
      "creature"
 | 
			
		||||
      "pnj"
 | 
			
		||||
    ],
 | 
			
		||||
    "templates": {
 | 
			
		||||
      "biodata": {
 | 
			
		||||
@@ -36,6 +36,7 @@
 | 
			
		||||
          "habitat": "",
 | 
			
		||||
          "notes": "",
 | 
			
		||||
          "statut": "",
 | 
			
		||||
          "playernotes":"",
 | 
			
		||||
          "gmnotes": ""
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
@@ -115,20 +116,25 @@
 | 
			
		||||
            "max": 1
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "statutmasque": "masque",
 | 
			
		||||
        "rang": {
 | 
			
		||||
          "tricherie": {
 | 
			
		||||
            "label": "Tricherie",
 | 
			
		||||
            "value": 0,
 | 
			
		||||
            "max": 0
 | 
			
		||||
          },
 | 
			
		||||
          "feerie": {
 | 
			
		||||
            "label": "Féerie",
 | 
			
		||||
            "value": 0,
 | 
			
		||||
            "max": 0
 | 
			
		||||
          },
 | 
			
		||||
          "masque": {
 | 
			
		||||
            "label": "Masque",
 | 
			
		||||
            "value": 0,
 | 
			
		||||
            "max": 0
 | 
			
		||||
          },
 | 
			
		||||
          "heritage": {
 | 
			
		||||
            "label": "Héritage",
 | 
			
		||||
            "value": 0,
 | 
			
		||||
            "max": 0,
 | 
			
		||||
            "scenarios": 0
 | 
			
		||||
@@ -141,31 +147,37 @@
 | 
			
		||||
        "competences": {
 | 
			
		||||
          "aventurier": {
 | 
			
		||||
            "label": "Aventurier",
 | 
			
		||||
            "niveau": 0,
 | 
			
		||||
            "rang": 0,
 | 
			
		||||
            "pp": 0
 | 
			
		||||
          },
 | 
			
		||||
          "combattant": {
 | 
			
		||||
            "label": "Aventurier",
 | 
			
		||||
            "niveau": 0,
 | 
			
		||||
            "rang": 0,
 | 
			
		||||
            "pp": 0
 | 
			
		||||
          },
 | 
			
		||||
          "erudit": {
 | 
			
		||||
            "label": "Erudit",
 | 
			
		||||
            "niveau": 0,
 | 
			
		||||
            "rang": 0,
 | 
			
		||||
            "pp": 0
 | 
			
		||||
          },
 | 
			
		||||
          "gentleman": {
 | 
			
		||||
            "label": "Gentleman",
 | 
			
		||||
            "niveau": 0,
 | 
			
		||||
            "rang": 0,
 | 
			
		||||
            "pp": 0
 | 
			
		||||
          },
 | 
			
		||||
          "roublard": {
 | 
			
		||||
            "label": "Roublard",
 | 
			
		||||
            "niveau": 0,
 | 
			
		||||
            "rang": 0,
 | 
			
		||||
            "pp": 0
 | 
			
		||||
          },
 | 
			
		||||
          "savant": {
 | 
			
		||||
            "label": "Savant",
 | 
			
		||||
            "niveau": 0,
 | 
			
		||||
            "rang": 0,
 | 
			
		||||
            "pp": 0
 | 
			
		||||
          }
 | 
			
		||||
@@ -180,6 +192,8 @@
 | 
			
		||||
            "demasquee": 0
 | 
			
		||||
          },
 | 
			
		||||
          "parade": {
 | 
			
		||||
            "masquee": 0,
 | 
			
		||||
            "demasquee": 0,
 | 
			
		||||
            "value": 0
 | 
			
		||||
          },
 | 
			
		||||
          "resistancephysique": {
 | 
			
		||||
@@ -219,6 +233,12 @@
 | 
			
		||||
        "biodata",
 | 
			
		||||
        "core"
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
    "pnj": {
 | 
			
		||||
      "templates": [
 | 
			
		||||
        "biodata",
 | 
			
		||||
        "core"
 | 
			
		||||
      ]
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "Item": {
 | 
			
		||||
@@ -234,19 +254,19 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "types": [
 | 
			
		||||
      "fee",
 | 
			
		||||
      "avantage",
 | 
			
		||||
      "desavantage",
 | 
			
		||||
      "capacitenaturelle",
 | 
			
		||||
      "pouvoir",
 | 
			
		||||
      "atoutfeerique",
 | 
			
		||||
      "competence",
 | 
			
		||||
      "arme",
 | 
			
		||||
      "protection",
 | 
			
		||||
      "equipement",
 | 
			
		||||
      "accessoire",
 | 
			
		||||
      "arme",
 | 
			
		||||
      "atoutfeerique",
 | 
			
		||||
      "avantage",
 | 
			
		||||
      "capacitenaturelle",
 | 
			
		||||
      "competence",
 | 
			
		||||
      "contact",
 | 
			
		||||
      "profil"
 | 
			
		||||
      "desavantage",
 | 
			
		||||
      "equipement",
 | 
			
		||||
      "fee",
 | 
			
		||||
      "pouvoir",
 | 
			
		||||
      "profil",
 | 
			
		||||
      "protection"
 | 
			
		||||
    ],
 | 
			
		||||
    "profil": {
 | 
			
		||||
      "profiltype": "majeur",
 | 
			
		||||
@@ -302,6 +322,7 @@
 | 
			
		||||
      "portee": "",
 | 
			
		||||
      "resistance": "",      
 | 
			
		||||
      "resistanceautre":"",
 | 
			
		||||
      "pointsusagecourant": -1,
 | 
			
		||||
      "isvirulence": false,
 | 
			
		||||
      "virulence":"",
 | 
			
		||||
      "description": ""
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										490
									
								
								templates/actor-pnj-sheet.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										490
									
								
								templates/actor-pnj-sheet.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,490 @@
 | 
			
		||||
<form class="{{cssClass}}" autocomplete="off">
 | 
			
		||||
 | 
			
		||||
  {{!-- Sheet Header --}}
 | 
			
		||||
  <header class="sheet-header">
 | 
			
		||||
    <div class="header-fields background-sheet-header">
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
 | 
			
		||||
        <div class="flexcol">
 | 
			
		||||
          <h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
 | 
			
		||||
          <div class="flexrow">
 | 
			
		||||
 | 
			
		||||
            <div class="flexrow">
 | 
			
		||||
              <ul class="item-list alternate-list">
 | 
			
		||||
                {{#each system.caracteristiques as |carac key|}}
 | 
			
		||||
                {{#if (eq kind "physical")}}
 | 
			
		||||
                <li class="item flexrow ">
 | 
			
		||||
                  <h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
 | 
			
		||||
                  <input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
 | 
			
		||||
                    name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
 | 
			
		||||
                  <input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
 | 
			
		||||
                    name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-dtype="Number" />
 | 
			
		||||
                </li>
 | 
			
		||||
                {{/if}}
 | 
			
		||||
                {{/each}}
 | 
			
		||||
              </ul>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <div class="flexrow">
 | 
			
		||||
              <ul class="item-list alternate-list">
 | 
			
		||||
                {{#each system.caracteristiques as |carac key|}}
 | 
			
		||||
                {{#if (eq kind "mental")}}
 | 
			
		||||
                <li class="item flexrow ">
 | 
			
		||||
                  <h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
 | 
			
		||||
                  <input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
 | 
			
		||||
                    name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
 | 
			
		||||
                  <input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
 | 
			
		||||
                    name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-dtype="Number" />
 | 
			
		||||
                </li>
 | 
			
		||||
                {{/if}}
 | 
			
		||||
                {{/each}}
 | 
			
		||||
              </ul>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
          </div>
 | 
			
		||||
            
 | 
			
		||||
            <div class="flexrow">
 | 
			
		||||
              <label class="item-field-label-short">PV</label>
 | 
			
		||||
              <input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" />
 | 
			
		||||
              <input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" data-dtype="Number" />
 | 
			
		||||
              <label class="item-field-label-short">Malus</label>
 | 
			
		||||
              <input type="text" class="item-field-label-short" value="{{pvMalus.value}}" data-dtype="Number" disabled />
 | 
			
		||||
              <span>  </span>
 | 
			
		||||
 | 
			
		||||
              <select class="item-field-label-medium" type="text" name="system.statutmasque" value="{{system.statutmasque}}" data-dtype="string">
 | 
			
		||||
                {{#select system.statutmasque}}
 | 
			
		||||
                  {{#each config.statutMasque as |categ cKey|}}
 | 
			
		||||
                    <option value="{{cKey}}">{{categ}}</option>
 | 
			
		||||
                  {{/each}}
 | 
			
		||||
                {{/select}}
 | 
			
		||||
                </select>
 | 
			
		||||
  
 | 
			
		||||
              <span>  </span>
 | 
			
		||||
              <label class="item-field-label-short">Tricherie</label>
 | 
			
		||||
              <input type="text" class="item-field-label-short" name="system.rang.tricherie.value" value="{{system.rang.tricherie.value}}" data-dtype="Number" />
 | 
			
		||||
              <input type="text" class="item-field-label-short" name="system.rang.tricherie.max" value="{{system.rang.tricherie.max}}" data-dtype="Number" />
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
  </header>
 | 
			
		||||
 | 
			
		||||
  {{!-- Sheet Tab Navigation --}}
 | 
			
		||||
  <nav class="sheet-tabs tabs" data-group="primary">
 | 
			
		||||
    <a class="item" data-tab="competences">Compétences</a>
 | 
			
		||||
    <a class="item" data-tab="atouts">Atouts&Matériel</a>
 | 
			
		||||
    <a class="item" data-tab="combat">Combat</a>
 | 
			
		||||
    <a class="item" data-tab="notes">Notes</a>
 | 
			
		||||
  </nav>
 | 
			
		||||
 | 
			
		||||
  {{!-- Sheet Body --}}
 | 
			
		||||
  <section class="sheet-body">
 | 
			
		||||
 | 
			
		||||
    {{!-- Competence Tab --}}
 | 
			
		||||
    <div class="tab competences" data-group="primary" data-tab="competences">
 | 
			
		||||
 | 
			
		||||
      <div class="flexcol">
 | 
			
		||||
 | 
			
		||||
        <div class="grid-2col">
 | 
			
		||||
 | 
			
		||||
          <div>
 | 
			
		||||
            {{#each utileSkillsPhysical as |skillDef keyProfil|}}
 | 
			
		||||
              {{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil isPNJ=true}}
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </div>
 | 
			
		||||
 | 
			
		||||
          <div>
 | 
			
		||||
            {{#each utileSkillsMental as |skillDef keyProfil|}}
 | 
			
		||||
              {{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil isPNJ=true}}
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </div>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow">
 | 
			
		||||
              <span class="item-field-label-long2">
 | 
			
		||||
                <h3><label class="items-title-text">Compétences Futiles</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Niveau</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each futileSkills as |skill key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
 | 
			
		||||
              <span class="item-field-label-long2 roll-style"><a class="roll-competence item-field-label-short"
 | 
			
		||||
                  data-attr-key="tochoose">{{skill.name}}</a></span>
 | 
			
		||||
 | 
			
		||||
                  <select class="item-field-label-short edit-item-data" type="text"
 | 
			
		||||
                data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
 | 
			
		||||
                {{#select skill.system.niveau}}
 | 
			
		||||
                {{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
 | 
			
		||||
                {{/select}}
 | 
			
		||||
              </select>
 | 
			
		||||
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    {{!-- Equipement Tab --}}
 | 
			
		||||
    <div class="tab combat" data-group="primary" data-tab="combat">
 | 
			
		||||
 | 
			
		||||
      <ul class="item-list alternate-list">
 | 
			
		||||
        <li class="item flexrow">
 | 
			
		||||
          <button class="chat-card-button roll-initiative">Initiative (actuelle : {{initiative}} )</button>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
          <label class="item-field-label-medium"><strong>Esquive</strong></label>
 | 
			
		||||
          <label class="item-field-label-medium">Masquée</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-medium">Démasquée</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-medium"><strong>Parade</strong></label>
 | 
			
		||||
          <label class="item-field-label-medium">Masquée</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.parade.masquee" value="{{system.combat.parade.masquee}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-medium">Démasquée</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.parade.demasquee" value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
        <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
          <label class="item-field-label-long">Rés. physique</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value" value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-long">Rés. psychique</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value" value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-medium">Protection : </label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
        <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
          <label class="item-field-label-long">Effets secondaires</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" />
 | 
			
		||||
          <label class="item-field-label-long">Dissimulation : </label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.dissimulation.value" value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
        <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
          <label class="item-field-label-long"><strong>Corps à Corps</strong></label>
 | 
			
		||||
          <label class="item-field-label-medium">Masqué</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.corpsacorps.masquee" value="{{system.combat.corpsacorps.masquee}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-medium">Démasqué</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.corpsacorps.demasquee" value="{{system.combat.corpsacorps.demasquee}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
        <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
          <label class="item-field-label-long"><strong>A distance</strong></label>
 | 
			
		||||
          <label class="item-field-label-medium">Masqué</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.tir.masquee" value="{{system.combat.tir.masquee}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-medium">Démasqué</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.tir.demasquee" value="{{system.combat.tir.demasquee}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
      </ul>
 | 
			
		||||
 | 
			
		||||
      <div class="flexcol">
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Armes</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Attaque</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Dégats</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each armes as |arme key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{arme._id}}" data-item-type="arme">
 | 
			
		||||
              <img class="item-name-img" src="{{arme.img}}" />
 | 
			
		||||
              <span class="item-name-label competence-name">{{arme.name}}</span>
 | 
			
		||||
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <button class="roll-attaque-arme button-sheet-roll">Attaquer</button>
 | 
			
		||||
              </span>
 | 
			
		||||
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                {{arme.system.degats}}
 | 
			
		||||
              </span>
 | 
			
		||||
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-equip" title="Worn">{{#if arme.system.equipped}}<i
 | 
			
		||||
                    class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Protections</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Protection</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="protection" title="Ajouter une protection"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each protections as |protection key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{protection._id}}" data-item-type="protection">
 | 
			
		||||
              <img class="item-name-img" src="{{protection.img}}" />
 | 
			
		||||
              <span class="item-name-label competence-name">{{protection.name}}</span>
 | 
			
		||||
              <span class="item-field-label-short arme-defensif"><label
 | 
			
		||||
                  class="arme-defensif">{{protection.system.protection}}</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    {{!-- atouts Tab --}}
 | 
			
		||||
    <div class="tab atouts" data-group="primary" data-tab="atouts">
 | 
			
		||||
      
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <li class="item flexrow " data-item-id="{{fee._id}}" data-item-type="avantage">
 | 
			
		||||
          <img class="item-name-img" src="{{fee.img}}" />
 | 
			
		||||
          <span class="item-field-label-long2">{{fee.name}}</span>
 | 
			
		||||
          <div class="item-filler"> </div>
 | 
			
		||||
          <div class="item-controls item-controls-fixed">
 | 
			
		||||
            <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
            <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
          </div>
 | 
			
		||||
        </li>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <ul>
 | 
			
		||||
          <li class="flexrow item">
 | 
			
		||||
            <label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="feerie">Féerie</a></label> 
 | 
			
		||||
            <input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
 | 
			
		||||
            <input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
 | 
			
		||||
            <span class="item-field-label-long"></span>
 | 
			
		||||
            <label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="masque">Masque</a></label> 
 | 
			
		||||
            <input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
 | 
			
		||||
            <input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
 | 
			
		||||
          </li>
 | 
			
		||||
        </ul>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="flexcol">
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Avantages</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="avantage" title="Ajouter un avantage"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each avantages as |avantage key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{avantage._id}}" data-item-type="avantage">
 | 
			
		||||
              <img class="item-name-img" src="{{avantage.img}}" />
 | 
			
		||||
              <span class="item-field-label-long2">{{avantage.name}}</span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Désavantages</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="desavantage" title="Ajouter un Désavantage"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each desavantages as |desavantage key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{desavantage._id}}" data-item-type="desavantage">
 | 
			
		||||
              <img class="item-name-img" src="{{desavantage.img}}" />
 | 
			
		||||
              <span class="item-field-label-long2">{{desavantage.name}}</span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Atouts Féériques</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="atoutfeerique" title="Ajouter un Atout féerique"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each atouts as |atout key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{atout._id}}" data-item-type="atout">
 | 
			
		||||
              <img class="item-name-img" src="{{atout.img}}" />
 | 
			
		||||
              <span class="item-field-label-long2">{{atout.name}}</span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
              <span class="item-name-label-header item-field-label-long2-img">
 | 
			
		||||
                <h3><label class="items-title-text">Pouvoirs</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-medium">
 | 
			
		||||
                <label class="short-label">Masque</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-medium">
 | 
			
		||||
                <label class="short-label">Type</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-medium">
 | 
			
		||||
                <label class="short-label">Niveau</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="pouvoir" title="Ajouter un Pouvoir"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each pouvoirs as |pouvoir key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{pouvoir._id}}" data-item-type="pouvoir">
 | 
			
		||||
              <img class="item-name-img" src="{{pouvoir.img}}" />
 | 
			
		||||
              {{#if pouvoir.system.istest}}
 | 
			
		||||
              <span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
 | 
			
		||||
              {{else}}              
 | 
			
		||||
              <span class="item-field-label-long2">{{pouvoir.name}}</span>
 | 
			
		||||
              {{/if}}
 | 
			
		||||
              <span class="item-field-label-medium">{{upperFirst pouvoir.system.masquetype}}</span>
 | 
			
		||||
              <span class="item-field-label-medium">{{upperFirst pouvoir.system.pouvoirtype}}</span>
 | 
			
		||||
              <span class="item-field-label-medium">{{upperFirst pouvoir.system.niveau}}</span>
 | 
			
		||||
              
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Capacités Naturelles</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="capacitenaturelle" title="Ajouter une Capacité naturelle"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each capacites as |capa key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{capa._id}}" data-item-type="capacite">
 | 
			
		||||
              <img class="item-name-img" src="{{capa.img}}" />
 | 
			
		||||
              <span class="item-field-label-long2">{{capa.name}}</span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Equipements</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
                <div class="item-controls item-controls-fixed">
 | 
			
		||||
                  <a class="item-control item-add" data-type="equipement" title="Créer un équipement"><i class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each equipements as |equip key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{equip._id}}" data-item-type="equipement">
 | 
			
		||||
              <img class="item-name-img" src="{{equip.img}}" />
 | 
			
		||||
              <span class="item-field-label-long2">{{equip.name}}</span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <div class="tab notes" data-group="primary" data-tab="notes">
 | 
			
		||||
      <span>
 | 
			
		||||
        <h3>Historique</h3>
 | 
			
		||||
      </span>
 | 
			
		||||
      <div class="medium-editor item-text-long-line">
 | 
			
		||||
        {{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
  </section>
 | 
			
		||||
</form>
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
                {{#each system.caracteristiques as |carac key|}}
 | 
			
		||||
                {{#if (eq kind "physical")}}
 | 
			
		||||
                <li class="item flexrow ">
 | 
			
		||||
                  <h4 class="item-name-label competence-name"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
 | 
			
		||||
                  <h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
 | 
			
		||||
                  <input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
 | 
			
		||||
                    name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
 | 
			
		||||
                  <input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
 | 
			
		||||
@@ -30,7 +30,7 @@
 | 
			
		||||
                {{#each system.caracteristiques as |carac key|}}
 | 
			
		||||
                {{#if (eq kind "mental")}}
 | 
			
		||||
                <li class="item flexrow ">
 | 
			
		||||
                  <h4 class="item-name-label competence-name"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
 | 
			
		||||
                  <h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
 | 
			
		||||
                  <input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
 | 
			
		||||
                    name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
 | 
			
		||||
                  <input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
 | 
			
		||||
@@ -41,14 +41,23 @@
 | 
			
		||||
              </ul>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
          </div>
 | 
			
		||||
            
 | 
			
		||||
          </div>            
 | 
			
		||||
            <div class="flexrow">
 | 
			
		||||
              <label class="item-field-label-short">PV</label>
 | 
			
		||||
              <input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" />
 | 
			
		||||
              <input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" data-dtype="Number" />
 | 
			
		||||
              <label class="item-field-label-short">Malus</label>
 | 
			
		||||
              <input type="text" class="item-field-label-short" value="{{pvMalus}}" data-dtype="Number" disabled />
 | 
			
		||||
              <input type="text" class="item-field-label-short" value="{{pvMalus.value}}" data-dtype="Number" disabled />
 | 
			
		||||
              <span>  </span>
 | 
			
		||||
 | 
			
		||||
              <select class="item-field-label-medium" type="text" name="system.statutmasque" value="{{system.statutmasque}}" data-dtype="string">
 | 
			
		||||
              {{#select system.statutmasque}}
 | 
			
		||||
                {{#each config.statutMasque as |categ cKey|}}
 | 
			
		||||
                  <option value="{{cKey}}">{{categ}}</option>
 | 
			
		||||
                {{/each}}
 | 
			
		||||
              {{/select}}
 | 
			
		||||
              </select>
 | 
			
		||||
  
 | 
			
		||||
              <span>  </span>
 | 
			
		||||
              <label class="item-field-label-short">Tricherie</label>
 | 
			
		||||
              <input type="text" class="item-field-label-short" name="system.rang.tricherie.value" value="{{system.rang.tricherie.value}}" data-dtype="Number" />
 | 
			
		||||
@@ -78,42 +87,21 @@
 | 
			
		||||
 | 
			
		||||
      <div class="flexcol">
 | 
			
		||||
 | 
			
		||||
        {{#each utileSkills as |skillList keyProfil|}}
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow">
 | 
			
		||||
              <span class="item-field-label-long">
 | 
			
		||||
                <h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Niveau</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each skillList as |skill key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
 | 
			
		||||
              <span class="item-field-label-long"><a class="roll-competence item-field-label-short"
 | 
			
		||||
                  data-attr-key="tochoose">{{skill.name}}</a></span>
 | 
			
		||||
              <select class="item-field-label-short edit-item-data" type="text"
 | 
			
		||||
                data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
 | 
			
		||||
                {{#select skill.system.niveau}}
 | 
			
		||||
                {{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
 | 
			
		||||
                {{/select}}
 | 
			
		||||
              </select>
 | 
			
		||||
        <div class="grid-2col">
 | 
			
		||||
 | 
			
		||||
              <input type="checkbox" class="item-field-label-short" name="skill.system.predilection" {{checked skill.system.predilection}}/>
 | 
			
		||||
 | 
			
		||||
              <span class="item-field-label-long2">{{skill.specList}}</span>
 | 
			
		||||
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
          <div>
 | 
			
		||||
            {{#each utileSkillsPhysical as |skillDef keyProfil|}}
 | 
			
		||||
              {{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil}}
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
          </div>
 | 
			
		||||
 | 
			
		||||
          <div>
 | 
			
		||||
            {{#each utileSkillsMental as |skillDef keyProfil|}}
 | 
			
		||||
              {{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil}}
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </div>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
        {{/each}}
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
@@ -128,13 +116,13 @@
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each futileSkills as |skill key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
 | 
			
		||||
              <span class="item-field-label-long2"><a class="roll-competence item-field-label-short"
 | 
			
		||||
              <span class="item-field-label-long2 roll-style"><a class="roll-competence item-field-label-short"
 | 
			
		||||
                  data-attr-key="tochoose">{{skill.name}}</a></span>
 | 
			
		||||
 | 
			
		||||
                  <select class="item-field-label-short" type="text"
 | 
			
		||||
                  <select class="item-field-label-short edit-item-data" type="text"
 | 
			
		||||
                data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
 | 
			
		||||
                {{#select skill.system.niveau}}
 | 
			
		||||
                {{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
 | 
			
		||||
                  {{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
 | 
			
		||||
                {{/select}}
 | 
			
		||||
              </select>
 | 
			
		||||
 | 
			
		||||
@@ -164,37 +152,30 @@
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-medium">Démasquée</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-short">  </label>
 | 
			
		||||
          <label class="item-field-label-medium"><strong>Parade</strong></label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.parade.value" value="{{system.combat.parade.value}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-medium">Masquée</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.parade.masquee" value="{{system.combat.parade.masquee}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-medium">Démasquée</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.parade.demasquee" value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
        <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
          <label class="item-field-label-long">Rés. physique</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value" value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-short">  </label>
 | 
			
		||||
          <label class="item-field-label-long">Rés. psychique</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value" value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-short">  </label>
 | 
			
		||||
          <label class="item-field-label-medium">Protection : </label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
        <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
          <label class="item-field-label-long">Effets secondaires</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" />
 | 
			
		||||
          <label class="item-field-label-short">  </label>
 | 
			
		||||
          <label class="item-field-label-long">Dissimulation : </label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.dissimulation.value" value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
        <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
          <label class="item-field-label-long"><strong>Corps à Corps</strong></label>
 | 
			
		||||
          <label class="item-field-label-medium">Masqué</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.corpsacorps.masquee" value="{{system.combat.corpsacorps.masquee}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-medium">Démasqué</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.corpsacorps.demasquee" value="{{system.combat.corpsacorps.demasquee}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
        <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
          <label class="item-field-label-long"><strong>A distance</strong></label>
 | 
			
		||||
          <label class="item-field-label-medium">Masqué</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.tir.masquee" value="{{system.combat.tir.masquee}}" data-dtype="Number" />
 | 
			
		||||
          <label class="item-field-label-medium">Démasqué</label>
 | 
			
		||||
          <input type="text" class="item-field-label-short" name="system.combat.tir.demasquee" value="{{system.combat.tir.demasquee}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
      </ul>
 | 
			
		||||
 | 
			
		||||
      <div class="flexcol">
 | 
			
		||||
@@ -206,10 +187,10 @@
 | 
			
		||||
                <h3><label class="items-title-text">Armes</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Attaque</label>
 | 
			
		||||
                <label class="short-label">Dégats</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Dégats</label>
 | 
			
		||||
                <label class="short-label">Attaque</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
@@ -223,13 +204,26 @@
 | 
			
		||||
              <span class="item-name-label competence-name">{{arme.name}}</span>
 | 
			
		||||
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <button class="roll-attaque-arme button-sheet-roll">Attaquer</button>
 | 
			
		||||
                {{arme.system.degats}}
 | 
			
		||||
              </span>
 | 
			
		||||
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <button class="roll-arme-degats button-sheet-roll">{{arme.system.totalDegats}}</button>
 | 
			
		||||
                <button class="roll-attaque-arme button-sheet-roll">Attaque</button>
 | 
			
		||||
              </span>
 | 
			
		||||
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <button class="roll-assomer-arme button-sheet-roll">Assomer</button>
 | 
			
		||||
              </span>
 | 
			
		||||
              
 | 
			
		||||
              {{#if arme.system.isMelee}}
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <button class="roll-attaque-charge-arme button-sheet-roll">Charger</button>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <button class="roll-attaque-brutale-arme button-sheet-roll button-sheet-roll-long1">Attaque brutale</button>
 | 
			
		||||
              </span>
 | 
			
		||||
              {{/if}}
 | 
			
		||||
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-equip" title="Worn">{{#if arme.system.equipped}}<i
 | 
			
		||||
@@ -253,7 +247,7 @@
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
 | 
			
		||||
                <a class="item-control item-add" data-type="protection" title="Ajouter une protection"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
@@ -295,13 +289,15 @@
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <ul>
 | 
			
		||||
          <li class="flexrow item">
 | 
			
		||||
            <label class="item-field-label-medium">Féerie</label> 
 | 
			
		||||
            <label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="feerie">Féerie</a></label> 
 | 
			
		||||
            <input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
 | 
			
		||||
            <input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
 | 
			
		||||
            <span class="item-field-label-long"></span>
 | 
			
		||||
            <label class="item-field-label-medium">Masque</label> 
 | 
			
		||||
            <span class="item-field-label-medium"></span>
 | 
			
		||||
            <label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="masque">Masque</a></label> 
 | 
			
		||||
            <input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
 | 
			
		||||
            <input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
 | 
			
		||||
            <span class="item-field-label-medium"></span>
 | 
			
		||||
            <label class="item-field-label-long roll-style"><a class="dialog-recup-usage item-field-label-long">Récup. P. d'Usage</a></label> 
 | 
			
		||||
          </li>
 | 
			
		||||
        </ul>
 | 
			
		||||
      </div>
 | 
			
		||||
@@ -316,6 +312,8 @@
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="avantage" title="Ajouter un avantage"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each avantages as |avantage key|}}
 | 
			
		||||
@@ -340,6 +338,8 @@
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="desavantage" title="Ajouter un désavantage"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each desavantages as |desavantage key|}}
 | 
			
		||||
@@ -364,6 +364,8 @@
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="atoutfeerique" title="Ajouter un atout féerique"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each atouts as |atout key|}}
 | 
			
		||||
@@ -395,17 +397,27 @@
 | 
			
		||||
              <span class="item-field-label-medium">
 | 
			
		||||
                <label class="short-label">Niveau</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-medium">
 | 
			
		||||
                <label class="short-label">Usage</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="pouvoir" title="Ajouter un pouvoir"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each pouvoirs as |pouvoir key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{pouvoir._id}}" data-item-type="pouvoir">
 | 
			
		||||
              <img class="item-name-img" src="{{pouvoir.img}}" />
 | 
			
		||||
              {{#if pouvoir.system.istest}}
 | 
			
		||||
              <span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
 | 
			
		||||
              {{else}}              
 | 
			
		||||
              <span class="item-field-label-long2">{{pouvoir.name}}</span>
 | 
			
		||||
              {{/if}}
 | 
			
		||||
              <span class="item-field-label-medium">{{upperFirst pouvoir.system.masquetype}}</span>
 | 
			
		||||
              <span class="item-field-label-medium">{{upperFirst pouvoir.system.pouvoirtype}}</span>
 | 
			
		||||
              <span class="item-field-label-medium">{{upperFirst pouvoir.system.niveau}}</span>
 | 
			
		||||
              <span class="item-field-label-medium">{{pouvoir.system.pointsusagecourant}}/{{pouvoir.maxUsage}}</span>
 | 
			
		||||
              
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
@@ -426,6 +438,8 @@
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="capacitenaturelle" title="Ajouter une capacité naturelle"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each capacites as |capa key|}}
 | 
			
		||||
@@ -457,7 +471,8 @@
 | 
			
		||||
              <h3><label class="items-title-text">Equipements</label></h3>
 | 
			
		||||
            </span>
 | 
			
		||||
            <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="equipement" title="Créer un équipement"><i class="fas fa-plus"></i></a>
 | 
			
		||||
            </div>
 | 
			
		||||
          </li>
 | 
			
		||||
          {{#each equipements as |equip key|}}
 | 
			
		||||
@@ -477,7 +492,20 @@
 | 
			
		||||
 | 
			
		||||
    {{!-- Contact Tab --}}
 | 
			
		||||
    <div class="tab contact" data-group="primary" data-tab="contact">
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
      <div class="sheet-box color-bg-archetype">
 | 
			
		||||
        <ul class="item-list alternate-list">
 | 
			
		||||
          <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
            <span class="item-name-label-header item-field-label-long3">
 | 
			
		||||
              <h3><label class="items-title-text">Contacts, Allies et Ennemis</label></h3>
 | 
			
		||||
            </span>
 | 
			
		||||
            <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="contact" title="Créer un contact"><i class="fas fa-plus"></i></a>
 | 
			
		||||
            </div>
 | 
			
		||||
          </li>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      {{#each contacts as |contactList idx|}}
 | 
			
		||||
      <div class="sheet-box color-bg-archetype">
 | 
			
		||||
        <ul class="item-list alternate-list">
 | 
			
		||||
@@ -486,7 +514,8 @@
 | 
			
		||||
              <h3><label class="items-title-text">{{contactList.label}}</label></h3>
 | 
			
		||||
            </span>
 | 
			
		||||
            <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="contact" title="Créer un contact"><i class="fas fa-plus"></i></a>
 | 
			
		||||
            </div>
 | 
			
		||||
          </li>
 | 
			
		||||
          {{#each contactList.list as |contact key|}}
 | 
			
		||||
@@ -603,6 +632,10 @@
 | 
			
		||||
              <input type="text" class="" name="system.experience.typetaille" value="{{system.experience.typetaille}}"
 | 
			
		||||
                data-dtype="String" />
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="flexrow item">
 | 
			
		||||
              <label class="generic-label">Points d'héritage</label>
 | 
			
		||||
              <input type="text" class="" name="system.rang.heritage.value" value="{{system.rang.heritage.value}}"  data-dtype="String" />
 | 
			
		||||
            </li>
 | 
			
		||||
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
@@ -619,8 +652,18 @@
 | 
			
		||||
              <input type="text" class="" name="system.biodata.poidsdemasquee" value="{{system.biodata.poidsdemasquee}}"
 | 
			
		||||
                data-dtype="String" />
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="item flexrow">
 | 
			
		||||
              <label class="generic-label">XP</label>
 | 
			
		||||
              <input type="text" class="" name="system.experience.value" value="{{system.experience.value}}"
 | 
			
		||||
                data-dtype="String" />
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="item flexrow">
 | 
			
		||||
              <label class="generic-label">XP pour tricher</label>
 | 
			
		||||
              <input type="text" class="" name="system.experience.pourtricher" value="{{system.experience.pourtricher}}"
 | 
			
		||||
                data-dtype="String" />
 | 
			
		||||
            </li>
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
       </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
@@ -631,18 +674,28 @@
 | 
			
		||||
      <div class="medium-editor item-text-long-line">
 | 
			
		||||
        {{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <span>
 | 
			
		||||
        <h3>Notes diverses</h3>
 | 
			
		||||
      </span>
 | 
			
		||||
      <div class="medium-editor item-text-long-line">
 | 
			
		||||
        {{editor playernotes target="system.biodata.playernotes" button=true owner=owner editable=editable}}
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <span>
 | 
			
		||||
        <h3>Rêves étranges</h3>
 | 
			
		||||
      </span>
 | 
			
		||||
      <div class="medium-editor item-text-long-line">
 | 
			
		||||
        {{editor revesetranges target="system.biodata.revesetranges" button=true owner=owner editable=editable}}
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <span>
 | 
			
		||||
        <h3>Secrets découverts</h3>
 | 
			
		||||
      </span>
 | 
			
		||||
      <div class="medium-editor item-text-long-line">
 | 
			
		||||
        {{editor secretsdecouverts target="system.biodata.secretsdecouverts" button=true owner=owner editable=editable}}
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <span>
 | 
			
		||||
        <h3>Questions en suspens</h3>
 | 
			
		||||
      </span>
 | 
			
		||||
 
 | 
			
		||||
@@ -18,11 +18,13 @@
 | 
			
		||||
 | 
			
		||||
<div>
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li>Arme : {{arme.name}} (+{{arme.system.totalDegats}})</li>
 | 
			
		||||
    <li>Dégats : {{finalResult}}</li>    
 | 
			
		||||
    {{#if targetVigueur}}
 | 
			
		||||
      <li>Vigueur de la cible : {{targetVigueur}}</li>    
 | 
			
		||||
      <li>Etats Combativité supplémentaires perdus (manuel): {{nbEtatPerdus}} </li>
 | 
			
		||||
    <li>Assomer {{defenderName}} en état de : {{etatAssommer}}</li>    
 | 
			
		||||
    
 | 
			
		||||
    {{#if isSuccess}}
 | 
			
		||||
      <li>Marge : {{marge}}</li>
 | 
			
		||||
      <li>{{defenderName}} est assomé pour {{dureeAssommer}} minutes !</li>
 | 
			
		||||
    {{else}}
 | 
			
		||||
      <li>{{defenderName}} n'a pas été assomé et est conscient la tentative !</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
  </ul>
 | 
			
		||||
</div>
 | 
			
		||||
							
								
								
									
										42
									
								
								templates/chat-cc-result.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								templates/chat-cc-result.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
<div class="chat-message-header">
 | 
			
		||||
  {{#if actorImg}}
 | 
			
		||||
  <img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
 | 
			
		||||
  {{/if}}
 | 
			
		||||
  <h4 class=chat-actor-name>{{alias}}</h4>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<hr>
 | 
			
		||||
 | 
			
		||||
{{#if actionImg}}
 | 
			
		||||
<div>
 | 
			
		||||
  <img class="chat-icon" src="{{actionImg}}" alt="{{name}}" />
 | 
			
		||||
</div>
 | 
			
		||||
{{/if}}
 | 
			
		||||
 | 
			
		||||
<div class="flexcol">
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div>
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li>Défense de {{defenderName}} : {{defenderMode}} ({{defenderValue}})</li>    
 | 
			
		||||
    
 | 
			
		||||
    {{#if isSuccess}}
 | 
			
		||||
      <li>Marge : {{marge}}</li>
 | 
			
		||||
      <li>Degats de l'arme : {{degatsArme}}</li>
 | 
			
		||||
      
 | 
			
		||||
      {{#if (eq attaqueCible "membre")}}
 | 
			
		||||
      <li><strong>Cible un membre : La cible a -2 de malus sur ces actions avec ce membre (mouvement 2 si jambes)</strong></li>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
      {{#if (eq attaqueCible "main")}}
 | 
			
		||||
      <li><strong>Cible une main : La cible ne peut plus utiliser sa main</strong></li>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
 | 
			
		||||
      {{#if isCriticalSuccess}}
 | 
			
		||||
      <Li>Critique : Aubaine ou +2 aux dégats ci-dessus</li>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
    {{else}}
 | 
			
		||||
      <li>Echec face à la {{defenderMode}} !</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
  </ul>
 | 
			
		||||
</div>
 | 
			
		||||
@@ -20,6 +20,10 @@
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li class="heritiers-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
 | 
			
		||||
 | 
			
		||||
    {{#if rang}}
 | 
			
		||||
    <li>{{rang.label}} : {{rang.value}}</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if competence}}
 | 
			
		||||
    <li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li>
 | 
			
		||||
      {{#if useSpecialite}}
 | 
			
		||||
@@ -27,20 +31,53 @@
 | 
			
		||||
      {{/if}}
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if arme}}
 | 
			
		||||
    <li>Attaque avec : {{arme.name}}</li>
 | 
			
		||||
      {{#if (eq mode "assommer")}}
 | 
			
		||||
      <li>Attaque pour assommer</li>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if pouvoir}}
 | 
			
		||||
    <li>Pouvoir : {{pouvoir.name}}</li>
 | 
			
		||||
    <li>Effet : {{pouvoir.system.effet}}</li>
 | 
			
		||||
    <li>Points d'usage consommés : {{pouvoirPointsUsage}}</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if forcedValue}}
 | 
			
		||||
    <li>Vous dépense 2 points de Tricherie et utilisé une face adjacente du dé !</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    <li>Formule : {{diceFormula}}</li>
 | 
			
		||||
    <li>Résultat du dé : {{diceResult}}</li>
 | 
			
		||||
    <li>Résultat du dé : {{diceResult}} </li>
 | 
			
		||||
 | 
			
		||||
    <li>Total : {{finalResult}}</li>
 | 
			
		||||
    {{#if adjacentFaces}}
 | 
			
		||||
      <li>Faces Adjacentes : 
 | 
			
		||||
          {{#each adjacentFaces as |value key|}}
 | 
			
		||||
            <a class="roll-tricherie-2" data-dice-value="{{value}}">{{value}}</a> 
 | 
			
		||||
          {{/each}}
 | 
			
		||||
      </li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if sdValue}}
 | 
			
		||||
    <li>Total : {{finalResult}} {{#if (gt sdValue "-1")}}(Marge : {{marge}}){{/if}}</li>
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    {{#if (gt sdValue "-1")}}
 | 
			
		||||
    {{#if isSuccess}}
 | 
			
		||||
    <li class="chat-success">Succés...
 | 
			
		||||
    <li class="chat-success">Succès...
 | 
			
		||||
    </li>
 | 
			
		||||
    {{else}}
 | 
			
		||||
    <li class="chat-failure">Echec...</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if isBrelan}}
 | 
			
		||||
    <li class="chat-success">Brelan sur 3 dés !</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    {{#if isSuite}}
 | 
			
		||||
    <li class="chat-success">Suite sur 3 dés !</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if isCriticalSuccess}}
 | 
			
		||||
    <li class="chat-success">Réussite Critique !!!</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@
 | 
			
		||||
            name="system.profil" value="{{system.profil}}" data-dtype="string">
 | 
			
		||||
            {{#select system.profil}}
 | 
			
		||||
            {{#each config.competenceProfil as |profil pKey|}}
 | 
			
		||||
            <option value="{{pKey}}">{{profil}}</option>
 | 
			
		||||
            <option value="{{pKey}}">{{profil.name}}</option>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
            {{/select}}
 | 
			
		||||
          </select>
 | 
			
		||||
 
 | 
			
		||||
@@ -94,6 +94,21 @@
 | 
			
		||||
 | 
			
		||||
          {{/if}}
 | 
			
		||||
 | 
			
		||||
        <li class="flexrow item">
 | 
			
		||||
          <label class="generic-label item-field-label-long2">Points d'usage max/jour </label>
 | 
			
		||||
          {{#if (eq usageMax -1)}}
 | 
			
		||||
          <label class="generic-label item-field-label-short">Inconnu</label>
 | 
			
		||||
          {{else}}
 | 
			
		||||
          <label class="generic-label item-field-label-short">{{usageMax}}</label>
 | 
			
		||||
          {{/if}}
 | 
			
		||||
        </li>
 | 
			
		||||
 | 
			
		||||
        <li class="flexrow item">
 | 
			
		||||
          <label class="generic-label item-field-label-long2">Points d'usage restants </label>
 | 
			
		||||
          <input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
 | 
			
		||||
            name="system.pointsusagecourant" value="{{system.pointsusagecourant}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
 | 
			
		||||
        <li class="flexrow item">
 | 
			
		||||
          <label class="generic-label item-field-label-long2">Cibles </label>
 | 
			
		||||
          <input type="text" class="padd-right status-small-label color-class-common item-field-label-long3"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										48
									
								
								templates/partial-utile-skills.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								templates/partial-utile-skills.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
            <div class="sheet-box color-bg-archetype">
 | 
			
		||||
              <ul class="item-list alternate-list">
 | 
			
		||||
                <li class="item flexrow">
 | 
			
		||||
                  {{#if isPNJ}}
 | 
			
		||||
                    <span class="item-field-label-long roll-style">
 | 
			
		||||
                      <a class="roll-root-competence item-field-label-short" data-attr-key="{{keyProfil}}">
 | 
			
		||||
                        <h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
 | 
			
		||||
                      </a>
 | 
			
		||||
                    </span>
 | 
			
		||||
                  {{else}}
 | 
			
		||||
                    <span class="item-field-label-long">
 | 
			
		||||
                      <h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
 | 
			
		||||
                  </span>
 | 
			
		||||
                  {{/if}}
 | 
			
		||||
 | 
			
		||||
                  <span class="item-field-label-short">
 | 
			
		||||
                    <label class="short-label">Niveau</label>
 | 
			
		||||
                  </span>
 | 
			
		||||
                  {{#if isPNJ}}
 | 
			
		||||
                    <span class="item-field-label-short">
 | 
			
		||||
                      <input type="text" data-dtype="Number" class="item-field-label-short" name="system.competences.{{keyProfil}}.niveau" value="{{skillDef.niveau}}">
 | 
			
		||||
                    </span>
 | 
			
		||||
                  {{/if}}
 | 
			
		||||
                  <div class="item-filler"> </div>
 | 
			
		||||
                </li>
 | 
			
		||||
                {{#each skillDef.skills as |skill key|}}
 | 
			
		||||
                <li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
 | 
			
		||||
                  <span class="item-field-label-long roll-style"><a class="roll-competence item-field-label-short"
 | 
			
		||||
                      data-attr-key="tochoose">{{skill.name}}</a></span>
 | 
			
		||||
                  <select class="item-field-label-short edit-item-data" type="text"
 | 
			
		||||
                    data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
 | 
			
		||||
                    {{#select skill.system.niveau}}
 | 
			
		||||
                    {{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
 | 
			
		||||
                    {{/select}}
 | 
			
		||||
                  </select>
 | 
			
		||||
                  <input type="checkbox" class="item-field-label-short edit-item-data" data-item-field="predilection" {{checked skill.system.predilection}}/>
 | 
			
		||||
                  <div class="item-controls item-controls-fixed">
 | 
			
		||||
                    <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                    <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
                  </div>
 | 
			
		||||
                </li>
 | 
			
		||||
                  {{#if (count skill.specList)}}
 | 
			
		||||
                    <span class="specialisarion-margin specialisation-label item-field-label-long2">{{skill.specList}}</span>
 | 
			
		||||
                  {{/if}}
 | 
			
		||||
    
 | 
			
		||||
                {{/each}}
 | 
			
		||||
              </ul>
 | 
			
		||||
            </div>
 | 
			
		||||
@@ -8,6 +8,13 @@
 | 
			
		||||
 | 
			
		||||
  <div class="flexcol">
 | 
			
		||||
 | 
			
		||||
    {{#if (eq mode "rang")}}
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">{{rang.label}}</span>
 | 
			
		||||
      <span class="roll-dialog-label">{{rang.value}}</span>
 | 
			
		||||
    </div>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    
 | 
			
		||||
    {{#if (eq mode "carac")}}
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <span class="roll-dialog-label">Caracteristique</span>
 | 
			
		||||
@@ -42,23 +49,95 @@
 | 
			
		||||
      {{/if}}
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if pouvoir}}
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">Malus de Santé</span>
 | 
			
		||||
      <span class="small-label roll-dialog-label">{{pvMalus}}</span>
 | 
			
		||||
      <span class="roll-dialog-label">Pouvoir : </span>
 | 
			
		||||
      <span class="small-label roll-dialog-label">{{pouvoir.name}}</span>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">Activation : </span>
 | 
			
		||||
      <span class="small-label roll-dialog-label">{{pouvoir.system.activation}}</span>
 | 
			
		||||
    </div>
 | 
			
		||||
      {{#if pouvoirBase}}
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <span class="roll-dialog-label">{{pouvoirBase.label}} : </span>
 | 
			
		||||
        <span class="small-label roll-dialog-label">{{pouvoirBase.value}}</span>
 | 
			
		||||
      </div>  
 | 
			
		||||
      {{/if}}
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <span class="roll-dialog-label">Points d'usage consommés : </span>
 | 
			
		||||
        <select class="status-small-label color-class-common" id="pouvoirPointsUsage" type="Number" name="pouvoirPointsUsage" value="pouvoirPointsUsage" data-dtype="Number" >
 | 
			
		||||
          {{#select pouvoirPointsUsage}}
 | 
			
		||||
          <option value="1">1</option>
 | 
			
		||||
          <option value="2">2</option>
 | 
			
		||||
          <option value="3">3</option>
 | 
			
		||||
          <option value="4">4</option>
 | 
			
		||||
          {{/select}}
 | 
			
		||||
        </select>      
 | 
			
		||||
      </div>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if tricherie}}
 | 
			
		||||
    {{#each rulesMalus as |malus key|}}
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">Utiliser 1 point de Tricherie ({{tricherie}}) ?</span>
 | 
			
		||||
      <input type="checkbox" class="item-field-label-short" id="useTricherie" {{checked useTricherie}}/>
 | 
			
		||||
      <span class="roll-dialog-label">{{malus.name}}</span>
 | 
			
		||||
      <span class="small-label roll-dialog-label">{{malus.value}}</span>
 | 
			
		||||
    </div>
 | 
			
		||||
    {{/each}}
 | 
			
		||||
 | 
			
		||||
    {{#if (and arme arme.system.isMelee)}}
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">Attaque à plusieurs </span>
 | 
			
		||||
      <select class="roll-dialog-label" id="bonus-attaque-plusieurs" type="text" value="{{bonusAttaquePlusieurs}}"
 | 
			
		||||
        data-dtype="Number">
 | 
			
		||||
        {{#select bonusAttaquePlusieurs}}
 | 
			
		||||
        <option value="0">0</option>
 | 
			
		||||
        <option value="1">+1</option>
 | 
			
		||||
        <option value="2">+2</option>
 | 
			
		||||
        {{/select}}
 | 
			
		||||
      </select>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">Attaque dans le dos ?</span>
 | 
			
		||||
      <input type="checkbox" class="item-field-label-short" id="attaqueDos" {{checked attaqueDos}}/>
 | 
			
		||||
    </div>
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <span class="roll-dialog-label">Attaque à deux armes </span>
 | 
			
		||||
        <select class="roll-dialog-label" id="bonus-attaque-deux-armes" type="text" value="{{attaqueDeuxArmes}}"
 | 
			
		||||
          data-dtype="Number">
 | 
			
		||||
          {{#select attaqueDeuxArmes}}
 | 
			
		||||
          <option value="0">Aucun</option>
 | 
			
		||||
          <option value="-4">Deux armes à 1 main</option>
 | 
			
		||||
          <option value="-2">Deux armes naturelles"</option>
 | 
			
		||||
          <option value="-2">Avec spécialisation "Mauvaise Main"</option>
 | 
			
		||||
          {{/select}}
 | 
			
		||||
        </select>
 | 
			
		||||
      </div>    
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <span class="roll-dialog-label">Seconde arme</span>
 | 
			
		||||
        <select class="roll-dialog-label" id="bonus-attaque-seconde-arme" type="text" value="{{secondeArme}}"
 | 
			
		||||
          data-dtype="String">
 | 
			
		||||
          {{#select secondeArme}}
 | 
			
		||||
            {{#each armes as |arme idx|}}
 | 
			
		||||
            <option value="{{arme.id}}">{{arme.name}}</option>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          {{/select}}
 | 
			
		||||
        </select>
 | 
			
		||||
      </div>    
 | 
			
		||||
    {{/if}}
 | 
			
		||||
    
 | 
			
		||||
    {{#if arme}}
 | 
			
		||||
    <li class="flexrow item">
 | 
			
		||||
      <label class="roll-dialog-label">Ataque ciblée : </label>
 | 
			
		||||
      <select class="roll-dialog-label" type="text" id="attaque-cible" value="{{attaqueCible}}" data-dtype="String">
 | 
			
		||||
        {{#select attaqueCible}}
 | 
			
		||||
          {{#each config.attaqueCible as |categ key|}}
 | 
			
		||||
            <option value="{{key}}">{{categ}}</option>
 | 
			
		||||
          {{/each}}
 | 
			
		||||
        {{/select}}
 | 
			
		||||
      </select>
 | 
			
		||||
    </li>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    {{#if heritage}}
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">Utiliser 1 point d'Heritage ? ({{heritage}})</span>
 | 
			
		||||
      <input type="checkbox" class="item-field-label-short" id="useHeritage" {{checked useHeritage}}/>
 | 
			
		||||
    </div>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
@@ -83,6 +162,11 @@
 | 
			
		||||
      </select>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    {{#if cacheDifficulte}}
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">Difficulté Cachée/Inconnue</span>
 | 
			
		||||
    </div>
 | 
			
		||||
    {{else}}
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">Difficulté</span>
 | 
			
		||||
      <select class="status-small-label color-class-common" id ="sdValue" type="text" name="sdValue" value="sdValue" data-dtype="string" >
 | 
			
		||||
@@ -93,6 +177,7 @@
 | 
			
		||||
        {{/select}}
 | 
			
		||||
      </select>
 | 
			
		||||
    </div>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user