Compare commits
	
		
			33 Commits
		
	
	
		
			fvtt-hawkm
			...
			fvtt-hawkm
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 1051349dd0 | |||
| a245b0e87c | |||
| c9ce3367ed | |||
| e95e068112 | |||
| 6dd63a2c54 | |||
| 650e4b7449 | |||
| 3f27482ad9 | |||
| 436b282ff5 | |||
| 39f8cfdbcc | |||
| 24a57a906e | |||
| 667f3678fb | |||
| d5dd9e5bf7 | |||
| 3403b72d1f | |||
| 8a4487c833 | |||
| 4eece5aaf4 | |||
| b574ba76ef | |||
| 0b9e1a80af | |||
| 6505b1c969 | |||
| 280e90d7a6 | |||
| 4fa9a911a0 | |||
| b8c61f8f12 | |||
| b47b14a4b1 | |||
| 9391acf6ee | |||
| 8af9c582bf | |||
| fac158e0ad | |||
| 69a2f81ede | |||
| 005d390941 | |||
| 3327109f7e | |||
| b38bfc97c2 | |||
| 89a7730d43 | |||
| 2ebd1bd1fd | |||
| 9e023d3f01 | |||
| 2c12ec38fb | 
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -8,7 +8,3 @@ todo.md
 | 
			
		||||
/jsconfig.json
 | 
			
		||||
/package.json
 | 
			
		||||
/package-lock.json
 | 
			
		||||
/packs/*/
 | 
			
		||||
/packs/*/CURRENT
 | 
			
		||||
/packs/*/LOG
 | 
			
		||||
/packs/*/LOCK
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								assets/icons/mutation.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/icons/mutation.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 7.1 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								assets/scenes/hawkmoon_map_europe.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/scenes/hawkmoon_map_europe.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 807 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								assets/scenes/scenes-CXx90Qk7nXEd2uTh-thumb.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/scenes/scenes-CXx90Qk7nXEd2uTh-thumb.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 3.1 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								assets/scenes/scenes-j6RYn1X7KfhTioX5-thumb.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/scenes/scenes-j6RYn1X7KfhTioX5-thumb.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 6.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								assets/ui/landing_page_hawmoon.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/ui/landing_page_hawmoon.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 384 KiB  | 
@@ -16,8 +16,8 @@
 | 
			
		||||
      "monnaie": "Monnaie",
 | 
			
		||||
      "equipement": "Equipement",
 | 
			
		||||
      "ressource": "Ressource",
 | 
			
		||||
      "contact": "Contact"
 | 
			
		||||
    
 | 
			
		||||
      "contact": "Contact",
 | 
			
		||||
      "mutation": "Mutation"    
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "HAWKMOON": {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,12 +7,12 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
 | 
			
		||||
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
export class HawkmoonActorSheet extends ActorSheet {
 | 
			
		||||
export class HawkmoonActorSheet extends foundry.appv1.sheets.ActorSheet {
 | 
			
		||||
 | 
			
		||||
  /** @override */
 | 
			
		||||
  static get defaultOptions() {
 | 
			
		||||
 | 
			
		||||
    return mergeObject(super.defaultOptions, {
 | 
			
		||||
    return foundry.utils.mergeObject(super.defaultOptions, {
 | 
			
		||||
      classes: ["fvtt-hawkmoon-cyd", "sheet", "actor"],
 | 
			
		||||
      template: "systems/fvtt-hawkmoon-cyd/templates/actor-sheet.html",
 | 
			
		||||
      width: 640,
 | 
			
		||||
@@ -25,7 +25,7 @@ export class HawkmoonActorSheet extends ActorSheet {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async getData() {
 | 
			
		||||
    const objectData = duplicate(this.object)    
 | 
			
		||||
    const objectData = foundry.utils.duplicate(this.object)
 | 
			
		||||
 | 
			
		||||
    let formData = {
 | 
			
		||||
      title: this.title,
 | 
			
		||||
@@ -39,28 +39,30 @@ export class HawkmoonActorSheet extends ActorSheet {
 | 
			
		||||
      effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
 | 
			
		||||
      limited: this.object.limited,
 | 
			
		||||
      skills: this.actor.getSkills(),
 | 
			
		||||
      armes: duplicate(this.actor.getWeapons()),
 | 
			
		||||
      monnaies: duplicate(this.actor.getMonnaies()),
 | 
			
		||||
      protections: duplicate(this.actor.getArmors()),
 | 
			
		||||
      historiques: duplicate(this.actor.getHistoriques() || []),
 | 
			
		||||
      talents: duplicate(this.actor.getTalents() || []),
 | 
			
		||||
      armes: foundry.utils.duplicate(this.actor.getWeapons()),
 | 
			
		||||
      monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
 | 
			
		||||
      protections: foundry.utils.duplicate(this.actor.getArmors()),
 | 
			
		||||
      historiques: foundry.utils.duplicate(this.actor.getHistoriques() || []),
 | 
			
		||||
      talents: foundry.utils.duplicate(this.actor.getTalents() || []),
 | 
			
		||||
      mutations: foundry.utils.duplicate(this.actor.getMutations() || []),
 | 
			
		||||
      talentsCell: this.getCelluleTalents(),
 | 
			
		||||
      profils: duplicate(this.actor.getProfils()  || []),
 | 
			
		||||
      combat: this.actor.getCombatValues(),      
 | 
			
		||||
      equipements: duplicate(this.actor.getEquipments()),
 | 
			
		||||
      artefacts: duplicate(this.actor.getArtefacts()),
 | 
			
		||||
      profils: foundry.utils.duplicate(this.actor.getProfils()  || []),
 | 
			
		||||
      combat: this.actor.getCombatValues(),
 | 
			
		||||
      equipements: foundry.utils.duplicate(this.actor.getEquipments()),
 | 
			
		||||
      artefacts: foundry.utils.duplicate(this.actor.getArtefacts()),
 | 
			
		||||
      richesse: this.actor.computeRichesse(),
 | 
			
		||||
      coupDevastateur: this.actor.items.find(it => it.type =="talent" && it.name.toLowerCase() == "coup devastateur" && !it.system.used),
 | 
			
		||||
      valeurEquipement: this.actor.computeValeurEquipement(),
 | 
			
		||||
      nbCombativite: this.actor.system.sante.nbcombativite,
 | 
			
		||||
      combativiteList: HawkmoonUtility.getCombativiteList(this.actor.system.sante.nbcombativite),
 | 
			
		||||
      initiative: this.actor.getFlag("world", "last-initiative") || -1,
 | 
			
		||||
      description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
 | 
			
		||||
      habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
 | 
			
		||||
      description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.description, {async: true}),
 | 
			
		||||
      habitat: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.biodata.habitat, {async: true}),
 | 
			
		||||
      options: this.options,
 | 
			
		||||
      owner: this.document.isOwner,
 | 
			
		||||
      editScore: this.options.editScore,
 | 
			
		||||
      isGM: game.user.isGM
 | 
			
		||||
      isGM: game.user.isGM,
 | 
			
		||||
      config: game.system.hawkmoon.config
 | 
			
		||||
    }
 | 
			
		||||
    this.formData = formData;
 | 
			
		||||
 | 
			
		||||
@@ -89,14 +91,14 @@ export class HawkmoonActorSheet extends ActorSheet {
 | 
			
		||||
 | 
			
		||||
    // Everything below here is only needed if the sheet is editable
 | 
			
		||||
    if (!this.options.editable) return;
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    // Update Inventory Item
 | 
			
		||||
    html.find('.item-edit').click(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".item")
 | 
			
		||||
      let itemId = li.data("item-id")
 | 
			
		||||
      const item = this.actor.items.get( itemId )
 | 
			
		||||
      item.sheet.render(true)
 | 
			
		||||
    })      
 | 
			
		||||
    })
 | 
			
		||||
    // Delete Inventory Item
 | 
			
		||||
    html.find('.item-delete').click(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".item");
 | 
			
		||||
@@ -118,7 +120,7 @@ export class HawkmoonActorSheet extends ActorSheet {
 | 
			
		||||
      let value = Number($(event.currentTarget).data("adversite-value"))
 | 
			
		||||
      this.actor.incDecAdversite(adv, value)
 | 
			
		||||
    })
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    html.find('.quantity-modify').click(event => {
 | 
			
		||||
      const li = $(event.currentTarget).parents(".item")
 | 
			
		||||
      const value = Number($(event.currentTarget).data("quantite-value"))
 | 
			
		||||
@@ -128,7 +130,7 @@ export class HawkmoonActorSheet extends ActorSheet {
 | 
			
		||||
    html.find('.roll-initiative').click((event) => {
 | 
			
		||||
      this.actor.rollAttribut("adr", true)
 | 
			
		||||
    })
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    html.find('.roll-attribut').click((event) => {
 | 
			
		||||
      const li = $(event.currentTarget).parents(".item")
 | 
			
		||||
      let attrKey = li.data("attr-key")
 | 
			
		||||
@@ -145,29 +147,46 @@ export class HawkmoonActorSheet extends ActorSheet {
 | 
			
		||||
      let armeId  = li.data("item-id")
 | 
			
		||||
      this.actor.rollArmeOffensif(armeId)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    html.find('.roll-assommer').click((event) => {
 | 
			
		||||
      this.actor.rollAssommer()
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.roll-coup-bas').click((event) => {
 | 
			
		||||
      this.actor.rollCoupBas()
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.roll-immobiliser').click((event) => {
 | 
			
		||||
      this.actor.rollImmobiliser()
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.roll-repousser').click((event) => {
 | 
			
		||||
      this.actor.rollRepousser()
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.roll-desengager').click((event) => {
 | 
			
		||||
      this.actor.rollDesengager()
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    html.find('.roll-arme-degats').click((event) => {
 | 
			
		||||
      const li = $(event.currentTarget).parents(".item")
 | 
			
		||||
      let armeId  = li.data("item-id")
 | 
			
		||||
      this.actor.rollArmeDegats(armeId)
 | 
			
		||||
    })
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    html.find('.item-add').click((event) => {
 | 
			
		||||
      const itemType = $(event.currentTarget).data("type")
 | 
			
		||||
      this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
 | 
			
		||||
    })
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    html.find('.lock-unlock-sheet').click((event) => {
 | 
			
		||||
      this.options.editScore = !this.options.editScore;
 | 
			
		||||
      this.render(true);
 | 
			
		||||
    });    
 | 
			
		||||
    });
 | 
			
		||||
    html.find('.item-equip').click(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".item");
 | 
			
		||||
      this.actor.equipItem( li.data("item-id") );
 | 
			
		||||
      this.render(true);      
 | 
			
		||||
      this.render(true);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  /** @override */
 | 
			
		||||
  setPosition(options = {}) {
 | 
			
		||||
 
 | 
			
		||||
@@ -17,8 +17,8 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
  /**
 | 
			
		||||
   * Override the create() function to provide additional SoS functionality.
 | 
			
		||||
   *
 | 
			
		||||
   * This overrided create() function adds initial items 
 | 
			
		||||
   * Namely: Basic skills, money, 
 | 
			
		||||
   * This overrided create() function adds initial items
 | 
			
		||||
   * Namely: Basic skills, money,
 | 
			
		||||
   *
 | 
			
		||||
   * @param {Object} data        Barebones actor data which this function adds onto.
 | 
			
		||||
   * @param {Object} options     (Unused) Additional options which customize the creation workflow.
 | 
			
		||||
@@ -67,21 +67,26 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  prepareArme(arme) {
 | 
			
		||||
    arme = duplicate(arme)
 | 
			
		||||
    if (this.type == "cellule") {
 | 
			
		||||
      return arme
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    arme = foundry.utils.duplicate(arme)
 | 
			
		||||
    let combat = this.getCombatValues()
 | 
			
		||||
    if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") {
 | 
			
		||||
      let bonusDefense = this.getBonusDefenseFromTalents()
 | 
			
		||||
      arme.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
 | 
			
		||||
      arme.system.competence = foundry.utils.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.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff + (this.system.combat.monte ? 3 : 0)
 | 
			
		||||
      arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.seuildefense + bonusDefense + (this.system.combat.monte ? 3 : 0)
 | 
			
		||||
      console.log("Arme", arme.system.totalDefensif, combat, arme.system.competence.system.niveau, arme.system.seuildefense, bonusDefense)
 | 
			
		||||
      arme.system.isdefense = true
 | 
			
		||||
      arme.system.isMelee = true
 | 
			
		||||
      arme.system.isDistance = false
 | 
			
		||||
    }
 | 
			
		||||
    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.competence = foundry.utils.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
 | 
			
		||||
@@ -137,12 +142,15 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
  getContacts() {
 | 
			
		||||
    return this.getItemSorted(["contact"])
 | 
			
		||||
  }
 | 
			
		||||
  getMutations() {
 | 
			
		||||
    return this.getItemSorted(["mutation"])
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getSkills() {
 | 
			
		||||
    let comp = []
 | 
			
		||||
    for (let item of this.items) {
 | 
			
		||||
      item = duplicate(item)
 | 
			
		||||
      item = foundry.utils.duplicate(item)
 | 
			
		||||
      if (item.type == "competence") {
 | 
			
		||||
        item.system.attribut1total = item.system.niveau + (this.system.attributs[item.system.attribut1]?.value || 0)
 | 
			
		||||
        item.system.attribut2total = item.system.niveau + (this.system.attributs[item.system.attribut2]?.value || 0)
 | 
			
		||||
@@ -164,7 +172,7 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
 | 
			
		||||
  /* -----------------------  --------------------- */
 | 
			
		||||
  addMember(actorId) {
 | 
			
		||||
    let members = duplicate(this.system.members)
 | 
			
		||||
    let members = foundry.utils.duplicate(this.system.members)
 | 
			
		||||
    members.push({ id: actorId })
 | 
			
		||||
    this.update({ 'system.members': members })
 | 
			
		||||
  }
 | 
			
		||||
@@ -175,7 +183,7 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getDefenseBase() {
 | 
			
		||||
    return Math.max(this.system.attributs.tre.value, this.system.attributs.pui.value)
 | 
			
		||||
    return Math.max(this.system.attributs.tre.value, this.system.attributs.adr.value)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -185,7 +193,7 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getProtection() {
 | 
			
		||||
    let equipProtection = 0
 | 
			
		||||
    for (let armor in this.items) {
 | 
			
		||||
    for (let armor of this.items) {
 | 
			
		||||
      if (armor.type == "protection" && armor.system.equipped) {
 | 
			
		||||
        equipProtection += Number(armor.system.protection)
 | 
			
		||||
      }
 | 
			
		||||
@@ -198,6 +206,20 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getCombatValues() {
 | 
			
		||||
    if (this.type == "cellule") {
 | 
			
		||||
      return {
 | 
			
		||||
        initBase: 0,
 | 
			
		||||
        initTotal: 0,
 | 
			
		||||
        bonusDegats: 0,
 | 
			
		||||
        bonusDegatsTotal: 0,
 | 
			
		||||
        vitesseBase: 0,
 | 
			
		||||
        vitesseTotal: 0,
 | 
			
		||||
        defenseBase: 0,
 | 
			
		||||
        protection: 0,
 | 
			
		||||
        defenseTotal: 0
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let combat = {
 | 
			
		||||
      initBase: this.system.attributs.adr.value,
 | 
			
		||||
      initTotal: this.system.attributs.adr.value + this.system.combat.initbonus,
 | 
			
		||||
@@ -207,7 +229,7 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
      vitesseTotal: this.getVitesseBase() + this.system.combat.vitessebonus,
 | 
			
		||||
      defenseBase: this.getDefenseBase(),
 | 
			
		||||
      protection: this.getProtection(),
 | 
			
		||||
      defenseTotal: this.getDefenseBase() + this.system.combat.defensebonus + this.getProtection() - this.getTotalAdversite()
 | 
			
		||||
      defenseTotal: this.getDefenseBase() + this.system.combat.defensebonus + this.getProtection() - this.getTotalAdversite() + (this.system.combat.defensetotale ? 3 : 0)
 | 
			
		||||
    }
 | 
			
		||||
    return combat
 | 
			
		||||
  }
 | 
			
		||||
@@ -231,21 +253,28 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
        this.update({ 'system.sante.vigueur': vigueur })
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    super.prepareDerivedData()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  _preUpdate(changed, options, user) {
 | 
			
		||||
 | 
			
		||||
    if (changed?.system?.sante?.etat && changed?.system?.sante?.etat != this.system.sante.etat) {
 | 
			
		||||
      setTimeout(() => {
 | 
			
		||||
        this.processCombativite(changed.system.sante)
 | 
			
		||||
      }, 800)
 | 
			
		||||
    }
 | 
			
		||||
    super._preUpdate(changed, options, user);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  _onUpdate(data, options, user) {
 | 
			
		||||
    super._onUpdate(data, options, user);
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getItemById(id) {
 | 
			
		||||
    let item = this.items.find(item => item.id == id);
 | 
			
		||||
    if (item) {
 | 
			
		||||
      item = duplicate(item)
 | 
			
		||||
      item = foundry.utils.duplicate(item)
 | 
			
		||||
    }
 | 
			
		||||
    return item;
 | 
			
		||||
  }
 | 
			
		||||
@@ -278,7 +307,7 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
  checkAttribut(attribut, minLevel) {
 | 
			
		||||
    let attr = this.system.attributs.find(at => at.labelnorm == attribut.toLowerCase())
 | 
			
		||||
    if (attr && attr.value >= minLevel) {
 | 
			
		||||
      return { isValid: true, attr: duplicate(attr) }
 | 
			
		||||
      return { isValid: true, attr: foundry.utils.duplicate(attr) }
 | 
			
		||||
    }
 | 
			
		||||
    return { isValid: false }
 | 
			
		||||
  }
 | 
			
		||||
@@ -286,11 +315,11 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
  checkAttributOrCompetenceLevel(compName, minLevel) {
 | 
			
		||||
    let comp = this.items.find(i => i.type == "competence" && i.name.toLowerCase() == compName.toLowerCase() && i.system.niveau >= minLevel)
 | 
			
		||||
    if (comp) {
 | 
			
		||||
      return { isValid: true, item: duplicate(comp) }
 | 
			
		||||
      return { isValid: true, item: foundry.utils.duplicate(comp) }
 | 
			
		||||
    } else {
 | 
			
		||||
      for (let attrKey in this.system.attributs) {
 | 
			
		||||
        if (this.system.attributs[attrKey].label.toLowerCase() == compName.toLowerCase() && this.system.attributs[attrKey].value >= minLevel) {
 | 
			
		||||
          return { isValid: true, item: duplicate(this.system.attributs[attrKey]) }
 | 
			
		||||
          return { isValid: true, item: foundry.utils.duplicate(this.system.attributs[attrKey]) }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
@@ -300,7 +329,7 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
  addCompetenceBonus(compName, bonus, baCost) {
 | 
			
		||||
    let comp = this.items.find(i => i.type == "competence" && i.name.toLowerCase() == compName.toLowerCase())
 | 
			
		||||
    if (comp) {
 | 
			
		||||
      comp = duplicate(comp)
 | 
			
		||||
      comp = foundry.utils.duplicate(comp)
 | 
			
		||||
      comp.system.bonus = bonus
 | 
			
		||||
      comp.system.baCost = baCost
 | 
			
		||||
      return { isValid: true, item: comp }
 | 
			
		||||
@@ -384,19 +413,28 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  changeEtatCombativite(value) {
 | 
			
		||||
    let sante = duplicate(this.system.sante)
 | 
			
		||||
    if (value === "vaincu") {
 | 
			
		||||
      value = 200
 | 
			
		||||
    }
 | 
			
		||||
    let sante = foundry.utils.duplicate(this.system.sante)
 | 
			
		||||
    sante.etat += Number(value)
 | 
			
		||||
    sante.etat = Math.max(sante.etat, 0)
 | 
			
		||||
    sante.etat = Math.min(sante.etat, 5)
 | 
			
		||||
    sante.etat = Math.min(sante.etat, this.system.sante.nbcombativite)
 | 
			
		||||
    this.update({ 'system.sante': sante })
 | 
			
		||||
    if (sante.etat == this.system.sante.nbcombativite) {
 | 
			
		||||
      ChatMessage.create({ content: `<strong>${this.name} est vaincu !</strong>` })
 | 
			
		||||
    }
 | 
			
		||||
    this.processCombativite(sante)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  processCombativite(sante) {
 | 
			
		||||
    sante = sante || foundry.utils.duplicate(this.system.sante)
 | 
			
		||||
    // Gestion des états affaibli et très affaibli
 | 
			
		||||
    if (sante.etat == this.system.sante.nbcombativite-2 || sante.etat == this.system.sante.nbcombativite-1) {
 | 
			
		||||
      if (sante.etat == this.system.sante.nbcombativite-2 && this.items.find(item => item.type == "talent" && item.name.toLowerCase() == "encaissement")) {
 | 
			
		||||
    if (sante.etat == this.system.sante.nbcombativite - 2 || sante.etat == this.system.sante.nbcombativite - 1) {
 | 
			
		||||
      if (sante.etat == this.system.sante.nbcombativite - 2 && this.items.find(item => item.type == "talent" && item.name.toLowerCase() == "encaissement")) {
 | 
			
		||||
        ChatMessage.create({ content: `<strong>${this.name} ne subit pas les 2 adversités rouge grâce à Encaissement. Pensez à les ajouter à la fin de la scène !</strong>` })
 | 
			
		||||
      } else if (sante.etat == this.system.sante.nbcombativite-1 && this.items.find(item => item.type == "talent" && item.name.toLowerCase().includes("vaillant"))) {
 | 
			
		||||
      } else if (sante.etat == this.system.sante.nbcombativite - 1 && this.items.find(item => item.type == "talent" && item.name.toLowerCase().includes("vaillant"))) {
 | 
			
		||||
        ChatMessage.create({ content: `<strong>${this.name} ne subit pas les 2 adversités rouge grâce à Vaillant. Pensez à les ajouter à la fin de la scène !</strong>` })
 | 
			
		||||
      } else {
 | 
			
		||||
        ChatMessage.create({ content: `<strong>${this.name} subit 2 adversités rouge !</strong>` })
 | 
			
		||||
@@ -418,13 +456,13 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
  getSubActors() {
 | 
			
		||||
    let subActors = [];
 | 
			
		||||
    for (let id of this.system.subactors) {
 | 
			
		||||
      subActors.push(duplicate(game.actors.get(id)));
 | 
			
		||||
      subActors.push(foundry.utils.duplicate(game.actors.get(id)));
 | 
			
		||||
    }
 | 
			
		||||
    return subActors;
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async addSubActor(subActorId) {
 | 
			
		||||
    let subActors = duplicate(this.system.subactors);
 | 
			
		||||
    let subActors = foundry.utils.duplicate(this.system.subactors);
 | 
			
		||||
    subActors.push(subActorId);
 | 
			
		||||
    await this.update({ 'system.subactors': subActors });
 | 
			
		||||
  }
 | 
			
		||||
@@ -446,9 +484,10 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async incDecAdversite(adv, incDec = 0) {
 | 
			
		||||
    let adversite = duplicate(this.system.adversite)
 | 
			
		||||
    let adversite = foundry.utils.duplicate(this.system.adversite)
 | 
			
		||||
    adversite[adv] += Number(incDec)
 | 
			
		||||
    adversite[adv] = Math.max(adversite[adv], 0)
 | 
			
		||||
    adversite[adv] = Math.min(adversite[adv], 20)
 | 
			
		||||
    this.update({ 'system.adversite': adversite })
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -493,7 +532,7 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async setPredilectionUsed(compId, predIdx) {
 | 
			
		||||
    let comp = this.items.get(compId)
 | 
			
		||||
    let pred = duplicate(comp.system.predilections)
 | 
			
		||||
    let pred = foundry.utils.duplicate(comp.system.predilections)
 | 
			
		||||
    pred[predIdx].used = true
 | 
			
		||||
    await this.updateEmbeddedDocuments('Item', [{ _id: compId, 'system.predilections': pred }])
 | 
			
		||||
  }
 | 
			
		||||
@@ -504,6 +543,23 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
    return init || -1
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getBestAttackValue() {
 | 
			
		||||
    let attackList = this.items.filter(item => (item.type == "arme" || item.type == "talent") && item.system.equipped)
 | 
			
		||||
    let maxOff = 0
 | 
			
		||||
    let bestArme
 | 
			
		||||
    for (let arme of attackList) {
 | 
			
		||||
      if (arme.type == "arme") {
 | 
			
		||||
        arme = this.prepareArme(arme)
 | 
			
		||||
      }
 | 
			
		||||
      if (arme.system.totalOffensif > maxOff) {
 | 
			
		||||
        maxOff = arme.system.totalOffensif
 | 
			
		||||
        bestArme = foundry.utils.duplicate(arme)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return bestArme
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getBestDefenseValue() {
 | 
			
		||||
    let defenseList = this.items.filter(item => (item.type == "arme") && item.system.equipped)
 | 
			
		||||
@@ -515,7 +571,7 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
      }
 | 
			
		||||
      if (arme.system.totalDefensif > maxDef) {
 | 
			
		||||
        maxDef = arme.system.totalDefensif
 | 
			
		||||
        bestArme = duplicate(arme)
 | 
			
		||||
        bestArme = foundry.utils.duplicate(arme)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return bestArme
 | 
			
		||||
@@ -530,7 +586,7 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
        for (let auto of talent.system.automations) {
 | 
			
		||||
          if (auto.eventtype === "prepare-roll") {
 | 
			
		||||
            if (auto.competence.toLowerCase() == competence.name.toLowerCase()) {
 | 
			
		||||
              talent = duplicate(talent)
 | 
			
		||||
              talent = foundry.utils.duplicate(talent)
 | 
			
		||||
              talent.system.bonus = auto.bonus
 | 
			
		||||
              talent.system.baCost = auto.baCost
 | 
			
		||||
              talents.push(talent)
 | 
			
		||||
@@ -562,23 +618,33 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
    rollData.nbAdversites = this.getTotalAdversite()
 | 
			
		||||
    rollData.talents = []
 | 
			
		||||
    rollData.attrKey2 = "none"
 | 
			
		||||
    rollData.coupDevastateur = this.items.find(it => it.type =="talent" && it.name.toLowerCase() == "coup dévastateur" && !it.system.used)
 | 
			
		||||
    rollData.coupDevastateur = this.items.find(it => it.type == "talent" && it.name.toLowerCase() == "coup dévastateur" && !it.system.used)
 | 
			
		||||
    rollData.hasAmbidextre = this.items.find(it => it.type == "talent" && it.name.toLowerCase() == "ambidextre")
 | 
			
		||||
    rollData.hasFeinte = this.system.bonneaventure.actuelle > 0 && this.items.find(it => it.type == "talent" && it.name.toLowerCase() == "feinte")
 | 
			
		||||
    rollData.isMonte = this.system.combat.monte
 | 
			
		||||
    rollData.config = game.system.hawkmoon.config
 | 
			
		||||
 | 
			
		||||
    if (attrKey) {
 | 
			
		||||
      rollData.attrKey = attrKey
 | 
			
		||||
      if (attrKey != "tochoose") {
 | 
			
		||||
        rollData.actionImg = "systems/fvtt-hawkmoon-cyd/assets/icons/" + this.system.attributs[attrKey].labelnorm + ".webp"
 | 
			
		||||
        rollData.attr = duplicate(this.system.attributs[attrKey])
 | 
			
		||||
        rollData.attr = foundry.utils.duplicate(this.system.attributs[attrKey])
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (compId) {
 | 
			
		||||
      rollData.competence = duplicate(this.items.get(compId) || {})
 | 
			
		||||
      rollData.maitrises = rollData.competence.system.predilections.filter(p => p.maitrise)
 | 
			
		||||
      rollData.competence = foundry.utils.duplicate(this.items.get(compId) || {})
 | 
			
		||||
      let maitrises = [{ key: "none", label: "Aucune" }]
 | 
			
		||||
      rollData.competence.system.predilections.forEach(function (item) {
 | 
			
		||||
        if (item.maitrise) {
 | 
			
		||||
          maitrises.push({ key: item.id, label: item.name });
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
      rollData.maitrises = maitrises // rollData.competence.system.predilections.filter(p => p.maitrise)
 | 
			
		||||
      rollData.actionImg = rollData.competence?.img
 | 
			
		||||
      rollData.talents = this.searchRelevantTalents(rollData.competence)
 | 
			
		||||
    }
 | 
			
		||||
    if (compName) {
 | 
			
		||||
      rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
 | 
			
		||||
      rollData.competence = foundry.utils.duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
 | 
			
		||||
      rollData.actionImg = rollData.competence?.img
 | 
			
		||||
    }
 | 
			
		||||
    return rollData
 | 
			
		||||
@@ -615,6 +681,53 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
    let rollDialog = await HawkmoonRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollAssommer() {
 | 
			
		||||
    let rollData = this.getCommonRollData("pui", undefined, "Filouterie")
 | 
			
		||||
    rollData.assomer = true
 | 
			
		||||
    rollData.conditionsCommunes = true
 | 
			
		||||
    HawkmoonUtility.updateWithTarget(rollData)
 | 
			
		||||
    let rollDialog = await HawkmoonRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollCoupBas() {
 | 
			
		||||
    let rollData = this.getCommonRollData("pui", undefined, "Mêlée")
 | 
			
		||||
    rollData.coupBas = true
 | 
			
		||||
    rollData.conditionsCommunes = true
 | 
			
		||||
    HawkmoonUtility.updateWithTarget(rollData)
 | 
			
		||||
    let rollDialog = await HawkmoonRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollImmobiliser() {
 | 
			
		||||
    let rollData = this.getCommonRollData("pui", undefined, "Mêlée")
 | 
			
		||||
    rollData.immobiliser = true
 | 
			
		||||
    rollData.conditionsCommunes = true
 | 
			
		||||
    rollData.cibleconsciente = true
 | 
			
		||||
    HawkmoonUtility.updateWithTarget(rollData)
 | 
			
		||||
    let rollDialog = await HawkmoonRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollRepousser() {
 | 
			
		||||
    let rollData = this.getCommonRollData("pui", undefined, "Mêlée")
 | 
			
		||||
    rollData.repousser = true
 | 
			
		||||
    rollData.conditionsCommunes = true
 | 
			
		||||
    rollData.cibleconsciente = true
 | 
			
		||||
    HawkmoonUtility.updateWithTarget(rollData)
 | 
			
		||||
    let rollDialog = await HawkmoonRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollDesengager() {
 | 
			
		||||
    let rollData = this.getCommonRollData("adr", undefined, "Mouvements")
 | 
			
		||||
    rollData.desengager = true
 | 
			
		||||
    rollData.conditionsCommunes = true
 | 
			
		||||
    HawkmoonUtility.updateWithTarget(rollData)
 | 
			
		||||
    let rollDialog = await HawkmoonRollDialog.create(this, rollData)
 | 
			
		||||
    rollDialog.render(true)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollArmeDegats(armeId, targetVigueur = undefined, rollDataInput = undefined) {
 | 
			
		||||
@@ -630,26 +743,32 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
    if (rollDataInput?.applyCoupDevastateur) {
 | 
			
		||||
      bonus2 = Math.floor(this.system.attributs.pui.value / 2)
 | 
			
		||||
      let talent = this.items.find(item => item.type == "talent" && item.name.toLowerCase() == "coup dévastateur")
 | 
			
		||||
      this.updateEmbeddedDocuments('Item', [{ _id: talent.id, 'system.used': true }]) 
 | 
			
		||||
      this.updateEmbeddedDocuments('Item', [{ _id: talent.id, 'system.used': true }])
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (rollDataInput?.isHeroique) {
 | 
			
		||||
      if (rollDataInput?.attaqueCharge) {
 | 
			
		||||
        bonus = 5
 | 
			
		||||
      }
 | 
			
		||||
      roll = new Roll("2d10rr10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll({ async: false })
 | 
			
		||||
      if (rollDataInput?.chargeCavalerie) {
 | 
			
		||||
        bonus = 6
 | 
			
		||||
      }
 | 
			
		||||
      roll = await new Roll("2d10rr10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll()
 | 
			
		||||
    } else {
 | 
			
		||||
      if (rollDataInput?.attaqueCharge) {
 | 
			
		||||
        bonus = 3
 | 
			
		||||
      }
 | 
			
		||||
      roll = new Roll("1d10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll({ async: false })
 | 
			
		||||
      if (rollDataInput?.chargeCavalerie) {
 | 
			
		||||
        bonus = 4
 | 
			
		||||
      }
 | 
			
		||||
      roll = await new Roll("1d10+" + arme.system.totalDegats + "+" + bonus + "+" + bonus2).roll()
 | 
			
		||||
    }
 | 
			
		||||
    await HawkmoonUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
 | 
			
		||||
    let nbEtatPerdus = 0
 | 
			
		||||
    if (targetVigueur) {
 | 
			
		||||
      nbEtatPerdus = Math.floor(roll.total / targetVigueur)
 | 
			
		||||
    }
 | 
			
		||||
    console.log(roll)
 | 
			
		||||
    //console.log(roll)
 | 
			
		||||
    let rollData = {
 | 
			
		||||
      arme: arme,
 | 
			
		||||
      finalResult: roll.total,
 | 
			
		||||
 
 | 
			
		||||
@@ -14,10 +14,10 @@ export class HawkmoonAutomation {
 | 
			
		||||
    this.__objectTypes = { }
 | 
			
		||||
    
 | 
			
		||||
    Object.entries(game.data.model.Actor).forEach(kv => { 
 | 
			
		||||
      this.__objectTypes[kv[0]] = duplicate(kv[1])
 | 
			
		||||
      this.__objectTypes[kv[0]] = foundry.utils.duplicate(kv[1])
 | 
			
		||||
    })
 | 
			
		||||
    Object.entries(game.data.model.Item).forEach(kv => { 
 | 
			
		||||
      this.__objectTypes[kv[0]] = duplicate(kv[1])
 | 
			
		||||
      this.__objectTypes[kv[0]] = foundry.utils.duplicate(kv[1])
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,15 +7,15 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
 | 
			
		||||
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
const __ALLOWED_ITEM_CELLULE = { "talent": 1, "ressource": 1, "contact": 1}
 | 
			
		||||
const __ALLOWED_ITEM_CELLULE = { "talent": 1, "ressource": 1, "contact": 1, "equipement": 1, "protection": 1, "artefact": 1, "arme": 1, "monnaie": 1 }
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
export class HawkmoonCelluleSheet extends ActorSheet {
 | 
			
		||||
export class HawkmoonCelluleSheet extends foundry.appv1.sheets.ActorSheet {
 | 
			
		||||
 | 
			
		||||
  /** @override */
 | 
			
		||||
  static get defaultOptions() {
 | 
			
		||||
 | 
			
		||||
    return mergeObject(super.defaultOptions, {
 | 
			
		||||
    return foundry.utils.mergeObject(super.defaultOptions, {
 | 
			
		||||
      classes: ["fvtt-hawkmoon-cyd", "sheet", "actor"],
 | 
			
		||||
      template: "systems/fvtt-hawkmoon-cyd/templates/cellule-sheet.html",
 | 
			
		||||
      width: 640,
 | 
			
		||||
@@ -28,7 +28,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async getData() {
 | 
			
		||||
    const objectData = duplicate(this.object)
 | 
			
		||||
    const objectData = foundry.utils.duplicate(this.object)
 | 
			
		||||
 | 
			
		||||
    let formData = {
 | 
			
		||||
      title: this.title,
 | 
			
		||||
@@ -41,15 +41,23 @@ export class HawkmoonCelluleSheet extends ActorSheet {
 | 
			
		||||
      system: objectData.system,
 | 
			
		||||
      effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
 | 
			
		||||
      limited: this.object.limited,
 | 
			
		||||
      talents: duplicate(this.actor.getTalents() || {}),
 | 
			
		||||
      ressources: duplicate(this.actor.getRessources()),
 | 
			
		||||
      contacts: duplicate(this.actor.getContacts()),
 | 
			
		||||
      talents: foundry.utils.duplicate(this.actor.getTalents() || {}),
 | 
			
		||||
      ressources: foundry.utils.duplicate(this.actor.getRessources()),
 | 
			
		||||
      contacts: foundry.utils.duplicate(this.actor.getContacts()),
 | 
			
		||||
      members: this.getMembers(),
 | 
			
		||||
      equipements: foundry.utils.duplicate(this.actor.getEquipments()),
 | 
			
		||||
      artefacts: foundry.utils.duplicate(this.actor.getArtefacts()),
 | 
			
		||||
      armes: foundry.utils.duplicate(this.actor.getWeapons()),
 | 
			
		||||
      monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
 | 
			
		||||
      protections: foundry.utils.duplicate(this.actor.getArmors()),
 | 
			
		||||
      richesse: this.actor.computeRichesse(),
 | 
			
		||||
      valeurEquipement: this.actor.computeValeurEquipement(),
 | 
			
		||||
      description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
 | 
			
		||||
      options: this.options,
 | 
			
		||||
      owner: this.document.isOwner,
 | 
			
		||||
      editScore: this.options.editScore,
 | 
			
		||||
      isGM: game.user.isGM
 | 
			
		||||
      isGM: game.user.isGM,
 | 
			
		||||
      config: game.system.hawkmoon.config
 | 
			
		||||
    }
 | 
			
		||||
    this.formData = formData;
 | 
			
		||||
 | 
			
		||||
@@ -87,7 +95,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
 | 
			
		||||
      let actorId = li.data("actor-id")
 | 
			
		||||
      this.actor.removeMember(actorId)
 | 
			
		||||
    })
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    // Update Inventory Item
 | 
			
		||||
    html.find('.item-edit').click(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".item")
 | 
			
		||||
@@ -109,15 +117,15 @@ export class HawkmoonCelluleSheet extends ActorSheet {
 | 
			
		||||
      let value = ev.currentTarget.value
 | 
			
		||||
      this.actor.editItemField(itemId, itemType, itemField, dataType, value)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    html.find('.quantity-minus').click(event => {
 | 
			
		||||
      const li = $(event.currentTarget).parents(".item");
 | 
			
		||||
      this.actor.incDecQuantity(li.data("item-id"), -1);
 | 
			
		||||
    });
 | 
			
		||||
    html.find('.quantity-plus').click(event => {
 | 
			
		||||
      const li = $(event.currentTarget).parents(".item");
 | 
			
		||||
      this.actor.incDecQuantity(li.data("item-id"), +1);
 | 
			
		||||
    });
 | 
			
		||||
    html.find('.quantity-modify').click(event => {
 | 
			
		||||
      const li = $(event.currentTarget).parents(".item")
 | 
			
		||||
      const value = Number($(event.currentTarget).data("quantite-value"))
 | 
			
		||||
      this.actor.incDecQuantity( li.data("item-id"), value );
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.item-add').click((event) => {
 | 
			
		||||
      const itemType = $(event.currentTarget).data("type")
 | 
			
		||||
      this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    html.find('.lock-unlock-sheet').click((event) => {
 | 
			
		||||
      this.options.editScore = !this.options.editScore;
 | 
			
		||||
@@ -128,7 +136,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async _onDropActor(event, dragData) {
 | 
			
		||||
    const actor = fromUuidSync(dragData.uuid)
 | 
			
		||||
    if (actor) { 
 | 
			
		||||
    if (actor) {
 | 
			
		||||
      this.actor.addMember(actor.id)
 | 
			
		||||
    } else {
 | 
			
		||||
      ui.notifications.warn("Cet acteur n'a pas été trouvé.")
 | 
			
		||||
@@ -148,7 +156,7 @@ export class HawkmoonCelluleSheet extends ActorSheet {
 | 
			
		||||
      super._onDropItem(event, dragData)
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
    ui.notifications("Ce type d'item n'est pas autorisé sur une Cellule.")
 | 
			
		||||
    ui.notification.info("Ce type d'item n'est pas autorisé sur une Cellule.")
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,9 +6,9 @@ export class HawkmoonCombat extends Combat {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollInitiative(ids, formula = undefined, messageOptions = {} ) {
 | 
			
		||||
    ids = typeof ids === "string" ? [ids] : ids;
 | 
			
		||||
    for (let cId = 0; cId < ids.length; cId++) {
 | 
			
		||||
      const c = this.combatants.get(ids[cId]);
 | 
			
		||||
      //console.log("Init for combattant", c )
 | 
			
		||||
    for (let cId of ids) {
 | 
			
		||||
      const c = this.combatants.get(cId);
 | 
			
		||||
      console.log("Init for combattant", c, ids)
 | 
			
		||||
      let id = c._id || c.id
 | 
			
		||||
      let initValue = c.actor ? c.actor.getInitiativeScore() : 0
 | 
			
		||||
      await this.updateEmbeddedDocuments("Combatant", [ { _id: id, initiative: initValue } ]);
 | 
			
		||||
@@ -21,5 +21,4 @@ export class HawkmoonCombat extends Combat {
 | 
			
		||||
  _onUpdate(changed, options, userId) {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										143
									
								
								modules/hawkmoon-config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								modules/hawkmoon-config.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,143 @@
 | 
			
		||||
export const HAWKMOON_CONFIG = {
 | 
			
		||||
 | 
			
		||||
  optionsDifficulte: [
 | 
			
		||||
    { key: "0", label: "Aucune/Inconnue" },
 | 
			
		||||
    { key: "5", label: "Facile (5)" },
 | 
			
		||||
    { key: "6", label: "(6)" },
 | 
			
		||||
    { key: "7", label: "(7)" },
 | 
			
		||||
    { key: "8", label: "(8)" },
 | 
			
		||||
    { key: "9", label: "(9)" },
 | 
			
		||||
    { key: "10", label: "Moyenne (10)" },
 | 
			
		||||
    { key: "11", label: "(11)" },
 | 
			
		||||
    { key: "12", label: "(12)" },
 | 
			
		||||
    { key: "13", label: "(13)" },
 | 
			
		||||
    { key: "14", label: "(14)" },
 | 
			
		||||
    { key: "15", label: "Ardue (15)" },
 | 
			
		||||
    { key: "16", label: "(16)" },
 | 
			
		||||
    { key: "17", label: "(17)" },
 | 
			
		||||
    { key: "18", label: "(18)" },
 | 
			
		||||
    { key: "19", label: "(19)" },
 | 
			
		||||
    { key: "20", label: "Hasardeuse (20)" },
 | 
			
		||||
    { key: "21", label: "(21)" },
 | 
			
		||||
    { key: "22", label: "(22)" },
 | 
			
		||||
    { key: "23", label: "(23)" },
 | 
			
		||||
    { key: "24", label: "(24)" },
 | 
			
		||||
    { key: "25", label: "Insensée (25)" },
 | 
			
		||||
    { key: "26", label: "(26)" },
 | 
			
		||||
    { key: "27", label: "(27)" },
 | 
			
		||||
    { key: "28", label: "(28)" },
 | 
			
		||||
    { key: "29", label: "(29)" },
 | 
			
		||||
    { key: "30", label: "Pure Folie (30)" }
 | 
			
		||||
  ],
 | 
			
		||||
  optionsDistanceTir: [
 | 
			
		||||
    { key: "porteecourte", label: "Courte ({protectionDefenseur}+5)" },
 | 
			
		||||
    { key: "porteemoyenne", label: "Moyenne ({protectionDefenseur}+9)" },
 | 
			
		||||
    { key: "porteelongue", label: "Longue ({protectionDefenseur}+14)" }
 | 
			
		||||
  ],
 | 
			
		||||
  optionsBonusMalus: [
 | 
			
		||||
    { key: "-10", label: "-10" },
 | 
			
		||||
    { key: "-9", label: "-9" },
 | 
			
		||||
    { key: "-8", label: "-8" },
 | 
			
		||||
    { key: "-7", label: "-7" },
 | 
			
		||||
    { key: "-6", label: "-6" },
 | 
			
		||||
    { key: "-5", label: "-5" },
 | 
			
		||||
    { key: "-4", label: "-4" },
 | 
			
		||||
    { key: "-3", label: "-3" },
 | 
			
		||||
    { key: "-2", label: "-2" },
 | 
			
		||||
    { key: "-1", label: "-1" },
 | 
			
		||||
    { key: "0", label: "0" },
 | 
			
		||||
    { key: "1", label: "+1" },
 | 
			
		||||
    { key: "2", label: "+2" },
 | 
			
		||||
    { key: "3", label: "+3" },
 | 
			
		||||
    { key: "4", label: "+4" },
 | 
			
		||||
    { key: "5", label: "+5" },
 | 
			
		||||
    { key: "6", label: "+6" },
 | 
			
		||||
    { key: "7", label: "+7" },
 | 
			
		||||
    { key: "8", label: "+8" },
 | 
			
		||||
    { key: "9", label: "+9" },
 | 
			
		||||
    { key: "10", label: "+10" }
 | 
			
		||||
  ],
 | 
			
		||||
  optionsTailleCible: [
 | 
			
		||||
    { key: "normal", label: "Normal (SD+0)" },
 | 
			
		||||
    { key: "main", label: "Main (SD+10)" },
 | 
			
		||||
    { key: "enfant", label: "Enfant (SD+3)" },
 | 
			
		||||
    { key: "maison", label: "Maison (SD-10)" }
 | 
			
		||||
  ],
 | 
			
		||||
  optionsCouvert: [
 | 
			
		||||
    { key: "aucun", label: "Aucun" },
 | 
			
		||||
    { key: "leger", label: "Léger (SD+5)" },
 | 
			
		||||
    { key: "complet", label: "Quasi complet (SD+10)" }
 | 
			
		||||
  ],
 | 
			
		||||
  optionsTireurDeplacement: [
 | 
			
		||||
    { key: "immobile", label: "Immobile (SD+0)" },
 | 
			
		||||
    { key: "lent", label: "Lent (SD+3)" },
 | 
			
		||||
    { key: "rapide", label: "Rapide (SD+5)" }
 | 
			
		||||
  ],
 | 
			
		||||
  optionsSoutiens: [
 | 
			
		||||
    { key: "0", label: "Aucun" },
 | 
			
		||||
    { key: "1", label: "Un soutien (+3)" },
 | 
			
		||||
    { key: "2", label: "Deux soutiens (+4)" },
 | 
			
		||||
    { key: "3", label: "Trois soutiens (+5)" }
 | 
			
		||||
  ],
 | 
			
		||||
  optionsStatutResistant: [
 | 
			
		||||
    { key: "commun", label: "Commun" },
 | 
			
		||||
    { key: "clandestin", label: "Clandestin" },
 | 
			
		||||
    { key: "insurge", label: "Insurgé" }
 | 
			
		||||
  ],
 | 
			
		||||
  optionsTypeArme: [
 | 
			
		||||
    {key: "contact", label: "Arme de contact"},
 | 
			
		||||
    {key: "contactjet", label: "Arme de contact et de Jet"},
 | 
			
		||||
    {key: "jet", label: "Arme de Jet"},
 | 
			
		||||
    {key: "tir", label: "Arme de Tir"}
 | 
			
		||||
  ],
 | 
			
		||||
  optionsArtefactBranche: [
 | 
			
		||||
    {key: "alchimie", label: "Alchimie"},
 | 
			
		||||
    {key: "biologie", label: "Biologie"},
 | 
			
		||||
    {key: "electricite", label: "Electricité"},
 | 
			
		||||
    {key: "mecanique", label: "Mécanique"},
 | 
			
		||||
    {key: "scienceesprit", label: "Science de l'Esprit"}
 | 
			
		||||
  ],
 | 
			
		||||
  optionsArtefactBranche2: [
 | 
			
		||||
    {key: "none", label: "Aucune"},
 | 
			
		||||
    {key: "alchimie", label: "Alchimie"},
 | 
			
		||||
    {key: "biologie", label: "Biologie"},
 | 
			
		||||
    {key: "electricite", label: "Electricité"},
 | 
			
		||||
    {key: "mecanique", label: "Mécanique"},
 | 
			
		||||
    {key: "scienceesprit", label: "Science de l'Esprit"}
 | 
			
		||||
  ],
 | 
			
		||||
  optionsTypeContact: [
 | 
			
		||||
    {key: "contact", label: "Contact"},
 | 
			
		||||
    {key: "allie", label: "Allié"}
 | 
			
		||||
  ],
 | 
			
		||||
  optionsTypeMutation: [
 | 
			
		||||
    {key: "tares_communes", label: "Tares et Malformations communes"},
 | 
			
		||||
    {key: "evolutions_communes", label: "Evolutions communes"},
 | 
			
		||||
    {key: "tares_rares", label: "Tares et Malformations rares"},
 | 
			
		||||
    {key: "evolutions_rares", label: "Evolutions rares"},
 | 
			
		||||
    {key: "tares_majeures", label: "Tares et Maformations majeures"},
 | 
			
		||||
    {key: "evolutions_majeures", label: "Evolutions majeures"},
 | 
			
		||||
    {key: "tares_except", label: "Tares et Malformations exceptionnelles"},
 | 
			
		||||
    {key: "evolutions_except", label: "Evolutions exceptionnelles"}
 | 
			
		||||
  ],
 | 
			
		||||
  optionsTypeTalent: [
 | 
			
		||||
    {key: "personnage", label: "Personnage"},
 | 
			
		||||
    {key: "cellule", label: "Cellule"},
 | 
			
		||||
    {key: "traitespece", label: "Trait d'espèce"}
 | 
			
		||||
  ],
 | 
			
		||||
  optionsUseTalent: [
 | 
			
		||||
    {key: "permanent", label: "Permanent"},
 | 
			
		||||
    {key: "sceance", label: "Une fois par scéance"},
 | 
			
		||||
    {key: "scenario", label: "Une fois par scénario"},
 | 
			
		||||
    {key: "jour", label: "Une fois par jour"},
 | 
			
		||||
    {key: "unique", label: "Unique"}
 | 
			
		||||
  ],
 | 
			
		||||
  optionsAutomationEvent: [
 | 
			
		||||
    {key: "on-drop", label: "Drop sur l'acteur"},
 | 
			
		||||
    {key: "prepare-roll", label: "Préparation d'un jet"},
 | 
			
		||||
    {key: "bonus-permanent", label: "Bonus permanent"}
 | 
			
		||||
  ],
 | 
			
		||||
  optionsBonusPermanent: [
 | 
			
		||||
    {key: "vigueur", label: "Vigueur"},
 | 
			
		||||
    {key: "bonus-defensif", label: "Bonus au Seuil de Défense"}
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -13,7 +13,7 @@ export class HawkmoonCreatureSheet extends HawkmoonActorSheet {
 | 
			
		||||
  /** @override */
 | 
			
		||||
  static get defaultOptions() {
 | 
			
		||||
 | 
			
		||||
    return mergeObject(super.defaultOptions, {
 | 
			
		||||
    return foundry.utils.mergeObject(super.defaultOptions, {
 | 
			
		||||
      classes: ["fvtt-hawkmoon-cyd", "sheet", "actor"],
 | 
			
		||||
      template: "systems/fvtt-hawkmoon-cyd/templates/creature-sheet.html",
 | 
			
		||||
      width: 640,
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ export class HawkmoonTokenHud {
 | 
			
		||||
 | 
			
		||||
    const hudData = { actor: actor }
 | 
			
		||||
 | 
			
		||||
    const controlIconActions = html.find('.control-icon[data-action=combat]');
 | 
			
		||||
    const controlIconActions = $(html).find('.control-icon[data-action=combat]');
 | 
			
		||||
    // initiative
 | 
			
		||||
    await HawkmoonTokenHud._configureSubMenu(controlIconActions, 'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html', hudData,
 | 
			
		||||
      (event) => {
 | 
			
		||||
@@ -34,7 +34,7 @@ export class HawkmoonTokenHud {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async addTokenHudExtensions(app, html, tokenId) {
 | 
			
		||||
    const controlIconCombat  = html.find('.control-icon[data-action=combat]')
 | 
			
		||||
    const controlIconCombat  = $(html).find('.control-icon[data-action=combat]')
 | 
			
		||||
    if (controlIconCombat.length>0 ) {
 | 
			
		||||
      HawkmoonTokenHud.addExtensionHud(app, html, tokenId);
 | 
			
		||||
    }
 | 
			
		||||
@@ -42,11 +42,11 @@ export class HawkmoonTokenHud {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async _configureSubMenu(insertionPoint, template, hudData, onMenuItem) {
 | 
			
		||||
    const hud = $(await renderTemplate(template, hudData))
 | 
			
		||||
    const hud = $(await foundry.applications.handlebars.renderTemplate(template, hudData))
 | 
			
		||||
    const list = hud.find('div.hawkmoon-hud-list')
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    HawkmoonTokenHud._toggleHudListActive(hud, list);
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    hud.find('img.hawkmoon-hud-togglebutton').click(event => HawkmoonTokenHud._toggleHudListActive(hud, list));
 | 
			
		||||
    list.find('.hawkmoon-hud-adversite').click(onMenuItem);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,12 +4,12 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
 | 
			
		||||
 * Extend the basic ItemSheet with some very simple modifications
 | 
			
		||||
 * @extends {ItemSheet}
 | 
			
		||||
 */
 | 
			
		||||
export class HawkmoonItemSheet extends ItemSheet {
 | 
			
		||||
export class HawkmoonItemSheet extends foundry.appv1.sheets.ItemSheet {
 | 
			
		||||
 | 
			
		||||
  /** @override */
 | 
			
		||||
  static get defaultOptions() {
 | 
			
		||||
 | 
			
		||||
    return mergeObject(super.defaultOptions, {
 | 
			
		||||
    return foundry.utils.mergeObject(super.defaultOptions, {
 | 
			
		||||
      classes: ["fvtt-hawkmoon-cyd", "sheet", "item"],
 | 
			
		||||
      template: "systems/fvtt-hawkmoon-cyd/templates/item-sheet.html",
 | 
			
		||||
      dragDrop: [{ dragSelector: null, dropSelector: null }],
 | 
			
		||||
@@ -48,7 +48,7 @@ export class HawkmoonItemSheet extends ItemSheet {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async getData() {
 | 
			
		||||
    const objectData = duplicate(this.object)
 | 
			
		||||
    const objectData = foundry.utils.duplicate(this.object)
 | 
			
		||||
    let formData = {
 | 
			
		||||
      title: this.title,
 | 
			
		||||
      id: this.id,
 | 
			
		||||
@@ -64,7 +64,8 @@ export class HawkmoonItemSheet extends ItemSheet {
 | 
			
		||||
      owner: this.document.isOwner,
 | 
			
		||||
      description: await TextEditor.enrichHTML(this.object.system.description, {async: true}),
 | 
			
		||||
      mr: (this.object.type == 'specialisation'),
 | 
			
		||||
      isGM: game.user.isGM
 | 
			
		||||
      isGM: game.user.isGM,
 | 
			
		||||
      config: game.system.hawkmoon.config
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (  objectData.type == "don") {
 | 
			
		||||
@@ -89,7 +90,7 @@ export class HawkmoonItemSheet extends ItemSheet {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  postItem() {
 | 
			
		||||
    let chatData = duplicate(HawkmoonUtility.data(this.item));
 | 
			
		||||
    let chatData = foundry.utils.duplicate(HawkmoonUtility.data(this.item));
 | 
			
		||||
    if (this.actor) {
 | 
			
		||||
      chatData.actor = { id: this.actor.id };
 | 
			
		||||
    }
 | 
			
		||||
@@ -132,7 +133,7 @@ export class HawkmoonItemSheet extends ItemSheet {
 | 
			
		||||
    html.find('.edit-predilection').change(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".prediction-item")
 | 
			
		||||
      let index = li.data("prediction-index")
 | 
			
		||||
      let pred = duplicate(this.object.system.predilections)
 | 
			
		||||
      let pred = foundry.utils.duplicate(this.object.system.predilections)
 | 
			
		||||
      pred[index].name = ev.currentTarget.value
 | 
			
		||||
      pred[index].id = pred[index].id || randomID(16)
 | 
			
		||||
      this.object.update( { 'system.predilections': pred })
 | 
			
		||||
@@ -140,70 +141,70 @@ export class HawkmoonItemSheet extends ItemSheet {
 | 
			
		||||
    html.find('.edit-predilection-description').change(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".prediction-item")
 | 
			
		||||
      let index = li.data("prediction-index")
 | 
			
		||||
      let pred = duplicate(this.object.system.predilections)
 | 
			
		||||
      let pred = foundry.utils.duplicate(this.object.system.predilections)
 | 
			
		||||
      pred[index].description = ev.currentTarget.value
 | 
			
		||||
      pred[index].id = pred[index].id || randomID(16)
 | 
			
		||||
      this.object.update( { 'system.predilections': pred })
 | 
			
		||||
    })    
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.predilection-acquise').change(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".prediction-item")
 | 
			
		||||
      let index = li.data("prediction-index")
 | 
			
		||||
      let pred = duplicate(this.object.system.predilections)
 | 
			
		||||
      let pred = foundry.utils.duplicate(this.object.system.predilections)
 | 
			
		||||
      pred[index].acquise = ev.currentTarget.checked
 | 
			
		||||
      pred[index].id = pred[index].id || randomID(16)
 | 
			
		||||
      this.object.update( { 'system.predilections': pred })
 | 
			
		||||
    })          
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.predilection-maitrise').change(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".prediction-item")
 | 
			
		||||
      let index = li.data("prediction-index")
 | 
			
		||||
      let pred = duplicate(this.object.system.predilections)
 | 
			
		||||
      let pred = foundry.utils.duplicate(this.object.system.predilections)
 | 
			
		||||
      pred[index].maitrise = ev.currentTarget.checked
 | 
			
		||||
      pred[index].id = pred[index].id || randomID(16)
 | 
			
		||||
      this.object.update( { 'system.predilections': pred })
 | 
			
		||||
    })      
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.predilection-used').change(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".prediction-item")
 | 
			
		||||
      let index = li.data("prediction-index")
 | 
			
		||||
      let pred = duplicate(this.object.system.predilections)
 | 
			
		||||
      let pred = foundry.utils.duplicate(this.object.system.predilections)
 | 
			
		||||
      pred[index].used = ev.currentTarget.checked
 | 
			
		||||
      pred[index].id = pred[index].id || randomID(16)
 | 
			
		||||
      this.object.update( { 'system.predilections': pred })
 | 
			
		||||
    })    
 | 
			
		||||
    
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    html.find('#add-predilection').click(ev => {
 | 
			
		||||
      let pred = duplicate(this.object.system.predilections)
 | 
			
		||||
      pred.push( { name: "Nouvelle prédilection", id: randomID(16), used: false }) 
 | 
			
		||||
      let pred = foundry.utils.duplicate(this.object.system.predilections)
 | 
			
		||||
      pred.push( { name: "Nouvelle prédilection", id: randomID(16), used: false })
 | 
			
		||||
      this.object.update( { 'system.predilections': pred })
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.delete-prediction').click(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".prediction-item")
 | 
			
		||||
      let index = li.data("prediction-index")
 | 
			
		||||
      let pred = duplicate(this.object.system.predilections)
 | 
			
		||||
      let pred = foundry.utils.duplicate(this.object.system.predilections)
 | 
			
		||||
      pred.splice(index,1)
 | 
			
		||||
      this.object.update( { 'system.predilections': pred })
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    html.find('#add-automation').click(ev => {
 | 
			
		||||
      let autom = duplicate(this.object.system.automations)
 | 
			
		||||
      autom.push( { eventtype: "on-drop", name: "Automatisation 1", bonusname: "vigueur", bonus: 0, competence: "", minLevel: 0, baCost: 0, id: randomID(16) }) 
 | 
			
		||||
      let autom = foundry.utils.duplicate(this.object.system.automations)
 | 
			
		||||
      autom.push( { eventtype: "on-drop", name: "Automatisation 1", bonusname: "vigueur", bonus: 0, competence: "", minLevel: 0, baCost: 0, id: randomID(16) })
 | 
			
		||||
      this.object.update( { 'system.automations': autom })
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.delete-automation').click(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".automation-item")
 | 
			
		||||
      let index = li.data("automation-index")
 | 
			
		||||
      let autom = duplicate(this.object.system.automations)
 | 
			
		||||
      let autom = foundry.utils.duplicate(this.object.system.automations)
 | 
			
		||||
      autom.splice(index,1)
 | 
			
		||||
      this.object.update( { 'system.automations': autom })
 | 
			
		||||
    })
 | 
			
		||||
    html.find('.automation-edit-field').change(ev => {
 | 
			
		||||
      let index = $(ev.currentTarget).data("automation-index")
 | 
			
		||||
      let field = $(ev.currentTarget).data("automation-field")
 | 
			
		||||
      let auto = duplicate(this.object.system.automations)
 | 
			
		||||
      let auto = foundry.utils.duplicate(this.object.system.automations)
 | 
			
		||||
      auto[index][field] = ev.currentTarget.value
 | 
			
		||||
      auto[index].id = auto[index].id || randomID(16)
 | 
			
		||||
      this.object.update( { 'system.automations': auto })
 | 
			
		||||
    })    
 | 
			
		||||
    
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    // Update Inventory Item
 | 
			
		||||
    html.find('.item-delete').click(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".item");
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@ export const defaultItemImg = {
 | 
			
		||||
    artefact: "systems/fvtt-hawkmoon-cyd/assets/icons/artefact.webp",  
 | 
			
		||||
    contact: "systems/fvtt-hawkmoon-cyd/assets/icons/contacts.webp",  
 | 
			
		||||
    ressource: "systems/fvtt-hawkmoon-cyd/assets/icons/ressources.webp",  
 | 
			
		||||
    mutation: "systems/fvtt-hawkmoon-cyd/assets/icons/mutation.webp",  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ import { HawkmoonCombat } from "./hawkmoon-combat.js";
 | 
			
		||||
import { HawkmoonItem } from "./hawkmoon-item.js";
 | 
			
		||||
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
 | 
			
		||||
import { HawkmoonTokenHud } from "./hawkmoon-hud.js";
 | 
			
		||||
import { HAWKMOON_CONFIG } from "./hawkmoon-config.js";
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
/*  Foundry VTT Initialization                  */
 | 
			
		||||
@@ -32,7 +33,7 @@ Hooks.once("init", async function () {
 | 
			
		||||
  HawkmoonUtility.preloadHandlebarsTemplates()
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  // Set an initiative formula for the system 
 | 
			
		||||
  // Set an initiative formula for the system
 | 
			
		||||
  CONFIG.Combat.initiative = {
 | 
			
		||||
    formula: "1d10",
 | 
			
		||||
    decimals: 1
 | 
			
		||||
@@ -50,18 +51,19 @@ Hooks.once("init", async function () {
 | 
			
		||||
  CONFIG.Item.documentClass = HawkmoonItem
 | 
			
		||||
  game.system.hawkmoon = {
 | 
			
		||||
    HawkmoonUtility,
 | 
			
		||||
    HawkmoonAutomation
 | 
			
		||||
    HawkmoonAutomation,
 | 
			
		||||
    config : HAWKMOON_CONFIG
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  // Register sheet application classes
 | 
			
		||||
  Actors.unregisterSheet("core", ActorSheet);
 | 
			
		||||
  Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonActorSheet, { types: ["personnage"], makeDefault: true })
 | 
			
		||||
  Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCreatureSheet, { types: ["creature"], makeDefault: true })
 | 
			
		||||
  Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCelluleSheet, { types: ["cellule"], makeDefault: true });
 | 
			
		||||
  // Regster sheet application classes
 | 
			
		||||
  foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet);
 | 
			
		||||
  foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonActorSheet, { types: ["personnage"], makeDefault: true })
 | 
			
		||||
  foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCreatureSheet, { types: ["creature"], makeDefault: true })
 | 
			
		||||
  foundry.documents.collections.Actors.registerSheet("fvtt-hawkmoon-cyd", HawkmoonCelluleSheet, { types: ["cellule"], makeDefault: true });
 | 
			
		||||
 | 
			
		||||
  Items.unregisterSheet("core", ItemSheet);
 | 
			
		||||
  Items.registerSheet("fvtt-hawkmoon-cyd", HawkmoonItemSheet, { makeDefault: true })
 | 
			
		||||
  foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet);
 | 
			
		||||
  foundry.documents.collections.Items.registerSheet("fvtt-hawkmoon-cyd", HawkmoonItemSheet, { makeDefault: true })
 | 
			
		||||
 | 
			
		||||
  HawkmoonUtility.init()
 | 
			
		||||
  HawkmoonAutomation.init()
 | 
			
		||||
@@ -83,28 +85,15 @@ 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)
 | 
			
		||||
async function importDefaultScene() {
 | 
			
		||||
  let exists = game.scenes.find(j => j.name == "Accueil");
 | 
			
		||||
  if (!exists) {
 | 
			
		||||
    const scenes = await HawkmoonUtility.loadCompendium("fvtt-hawkmoon-cyd.scenes")
 | 
			
		||||
    let newDocuments = scenes.filter(i => i.name == "Accueil");
 | 
			
		||||
    if (newDocuments) {
 | 
			
		||||
      await game.scenes.documentClass.create(newDocuments);
 | 
			
		||||
      game.scenes.find(i => i.name == "Accueil").activate();
 | 
			
		||||
    }
 | 
			
		||||
    // 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)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -124,7 +113,14 @@ Hooks.once("ready", function () {
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  registerUsageCount('fvtt-hawkmoon-cyd')
 | 
			
		||||
  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.")
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  importDefaultScene()
 | 
			
		||||
  welcomeMessage()
 | 
			
		||||
 | 
			
		||||
});
 | 
			
		||||
@@ -142,4 +138,3 @@ Hooks.on("chatMessage", (html, content, msg) => {
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ export class HawkmoonRollDialog extends Dialog {
 | 
			
		||||
  static async create(actor, rollData ) {
 | 
			
		||||
 | 
			
		||||
    let options = { classes: ["HawkmoonDialog"], width: 320, height: 'fit-content', 'z-index': 99999 };
 | 
			
		||||
    let html = await renderTemplate('systems/fvtt-hawkmoon-cyd/templates/roll-dialog-generic.html', rollData);
 | 
			
		||||
    let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-hawkmoon-cyd/templates/roll-dialog-generic.html', rollData);
 | 
			
		||||
 | 
			
		||||
    return new HawkmoonRollDialog(actor, rollData, html, options );
 | 
			
		||||
  }
 | 
			
		||||
@@ -16,16 +16,16 @@ export class HawkmoonRollDialog extends Dialog {
 | 
			
		||||
    let conf = {
 | 
			
		||||
      title: "Test de Capacité",
 | 
			
		||||
      content: html,
 | 
			
		||||
      buttons: { 
 | 
			
		||||
      buttons: {
 | 
			
		||||
        rolld10: {
 | 
			
		||||
            icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
            label: "Lancer 1d10",
 | 
			
		||||
            callback: () => { this.roll("d10") } 
 | 
			
		||||
            callback: () => { this.roll("d10") }
 | 
			
		||||
          },
 | 
			
		||||
          rolld20: {
 | 
			
		||||
            icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
            label: "Lancer 1d20",
 | 
			
		||||
            callback: () => { this.roll("d20") } 
 | 
			
		||||
            callback: () => { this.roll("d20") }
 | 
			
		||||
          },
 | 
			
		||||
          cancel: {
 | 
			
		||||
            icon: '<i class="fas fa-times"></i>',
 | 
			
		||||
@@ -56,62 +56,87 @@ export class HawkmoonRollDialog extends Dialog {
 | 
			
		||||
    function onLoad() {
 | 
			
		||||
    }
 | 
			
		||||
    $(function () { onLoad(); });
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    html.find('#modificateur').change(async (event) =>  {
 | 
			
		||||
      this.rollData.modificateur = Number(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#difficulte').change(async (event) =>  {
 | 
			
		||||
    html.find('#difficulte').change( (event) =>  {
 | 
			
		||||
      console.log("Difficulte: " + event.currentTarget.value)
 | 
			
		||||
      this.rollData.difficulte = Number(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#attrKey').change(async (event) =>  {
 | 
			
		||||
      this.rollData.attrKey = String(event.currentTarget.value)
 | 
			
		||||
    })    
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#attrKey2').change(async (event) =>  {
 | 
			
		||||
      this.rollData.attrKey2 = String(event.currentTarget.value)
 | 
			
		||||
    })    
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#select-maitrise').change(async (event) =>  {
 | 
			
		||||
      this.rollData.maitriseId = String(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#competence-talents').change((event) => {
 | 
			
		||||
      this.rollData.selectedTalents = $('#competence-talents').val()      
 | 
			
		||||
      this.rollData.selectedTalents = $('#competence-talents').val()
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#taille-cible').change((event) => {
 | 
			
		||||
      this.rollData.tailleCible = String(event.currentTarget.value)      
 | 
			
		||||
      this.rollData.tailleCible = String(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#tireur-deplacement').change((event) => {
 | 
			
		||||
      this.rollData.tireurDeplacement = String(event.currentTarget.value)      
 | 
			
		||||
      this.rollData.tireurDeplacement = String(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#cible-couvert').change((event) => {
 | 
			
		||||
      this.rollData.cibleCouvert = String(event.currentTarget.value)      
 | 
			
		||||
      this.rollData.cibleCouvert = String(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#distance-tir').change((event) => {
 | 
			
		||||
      this.rollData.distanceTir = String(event.currentTarget.value)      
 | 
			
		||||
      this.rollData.distanceTir = String(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#bonus-malus-context').change((event) => {
 | 
			
		||||
      this.rollData.bonusMalusContext = Number(event.currentTarget.value)      
 | 
			
		||||
      this.rollData.bonusMalusContext = Number(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#defenseur-au-sol').change((event) => {
 | 
			
		||||
      this.rollData.defenseurAuSol = event.currentTarget.checked      
 | 
			
		||||
      this.rollData.defenseurAuSol = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#ambidextre-1').change((event) => {
 | 
			
		||||
      this.rollData.ambidextre1 = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#ambidextre-2').change((event) => {
 | 
			
		||||
      this.rollData.ambidextre2 = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#attaque-monte').change((event) => {
 | 
			
		||||
      this.rollData.attqueMonte = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#defenseur-aveugle').change((event) => {
 | 
			
		||||
      this.rollData.defenseurAveugle = event.currentTarget.checked      
 | 
			
		||||
      this.rollData.defenseurAveugle = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#defenseur-de-dos').change((event) => {
 | 
			
		||||
      this.rollData.defenseurDeDos = event.currentTarget.checked      
 | 
			
		||||
      this.rollData.defenseurDeDos = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#defenseur-restreint').change((event) => {
 | 
			
		||||
      this.rollData.defenseurRestreint = event.currentTarget.checked      
 | 
			
		||||
      this.rollData.defenseurRestreint = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#defenseur-immobilise').change((event) => {
 | 
			
		||||
      this.rollData.defenseurImmobilise = event.currentTarget.checked      
 | 
			
		||||
      this.rollData.defenseurImmobilise = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#attaque-charge').change((event) => {
 | 
			
		||||
      this.rollData.attaqueCharge = event.currentTarget.checked      
 | 
			
		||||
      this.rollData.attaqueCharge = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#charge-cavalerie').change((event) => {
 | 
			
		||||
      this.rollData.chargeCavalerie = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#attaquants-multiple').change((event) => {
 | 
			
		||||
      this.rollData.attaquantsMultiples = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#soutiens').change((event) => {
 | 
			
		||||
      this.rollData.soutiens = Number(event.currentTarget.value)
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#feinte').change((event) => {
 | 
			
		||||
      this.rollData.feinte = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#contenir').change((event) => {
 | 
			
		||||
      this.rollData.contenir = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#attaque-desarme').change((event) => {
 | 
			
		||||
      this.rollData.attaqueDesarme = event.currentTarget.checked      
 | 
			
		||||
      this.rollData.attaqueDesarme = event.currentTarget.checked
 | 
			
		||||
    })
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -3,10 +3,10 @@ import { HawkmoonCombat } from "./hawkmoon-combat.js";
 | 
			
		||||
import { HawkmoonCommands } from "./hawkmoon-commands.js";
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
const __distanceDifficulte = { "porteecourte": 5, "porteemoyenne": 9, "porteelongue": 14}
 | 
			
		||||
const __tireurDeplacement = { immobile: 0, lent: 3, rapide: 5}
 | 
			
		||||
const __cibleCouvert = { aucun: 0, leger: 5, complet: 10}
 | 
			
		||||
const __tailleCible = { normal: 0, main: 10, enfant: 3, maison: -10}
 | 
			
		||||
const __distanceDifficulte = { "porteecourte": 5, "porteemoyenne": 9, "porteelongue": 14 }
 | 
			
		||||
const __tireurDeplacement = { immobile: 0, lent: 3, rapide: 5 }
 | 
			
		||||
const __cibleCouvert = { aucun: 0, leger: 5, complet: 10 }
 | 
			
		||||
const __tailleCible = { normal: 0, main: 10, enfant: 3, maison: -10 }
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
export class HawkmoonUtility {
 | 
			
		||||
@@ -15,8 +15,7 @@ export class HawkmoonUtility {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async init() {
 | 
			
		||||
    Hooks.on('renderChatLog', (log, html, data) => HawkmoonUtility.chatListeners(html))
 | 
			
		||||
    Hooks.on("getChatLogEntryContext", (html, options) => HawkmoonUtility.chatRollMenu(html, options))
 | 
			
		||||
 | 
			
		||||
    Hooks.on("getChatMessageContextOptions", (html, options) => HawkmoonUtility.chatRollMenu(html, options))
 | 
			
		||||
    Hooks.on("getCombatTrackerEntryContext", (html, options) => {
 | 
			
		||||
      HawkmoonUtility.pushInitiativeOptions(html, options);
 | 
			
		||||
    })
 | 
			
		||||
@@ -114,6 +113,26 @@ export class HawkmoonUtility {
 | 
			
		||||
    let logoPause = "systems/fvtt-hawkmoon-cyd/assets/logos/" + game.settings.get("fvtt-hawkmoon-cyd", "hawkmoon-pause-logo") + ".webp"
 | 
			
		||||
    let logoImg = document.querySelector('#pause').children[0]
 | 
			
		||||
    logoImg.setAttribute('style', `content: url(${logoPause})`)
 | 
			
		||||
 | 
			
		||||
    game.system.hawkmoon.config.listeNiveauSkill = this.createDirectOptionList(0, 10)
 | 
			
		||||
    game.system.hawkmoon.config.listeNiveauCreature = this.createDirectOptionList(0, 35)
 | 
			
		||||
    game.system.hawkmoon.config.listeNiveauContact = this.createDirectOptionList(1, 3)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static createDirectOptionList(min, max) {
 | 
			
		||||
    let options = {};
 | 
			
		||||
    for (let i = min; i <= max; i++) {
 | 
			
		||||
      options[`${i}`] = `${i}`;
 | 
			
		||||
    }
 | 
			
		||||
    return options;
 | 
			
		||||
  }
 | 
			
		||||
  static createArrayOptionList(min, max) {
 | 
			
		||||
    let options = [];
 | 
			
		||||
    for (let i = min; i <= max; i++) {
 | 
			
		||||
      options.push({ key: `${i}`, label: `${i}` });
 | 
			
		||||
    }
 | 
			
		||||
    return options;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -135,33 +154,33 @@ export class HawkmoonUtility {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async chatListeners(html) {
 | 
			
		||||
 | 
			
		||||
    html.on("click", '.predilection-reroll', async event => {
 | 
			
		||||
    $(html).on("click", '.predilection-reroll', async event => {
 | 
			
		||||
      let predIdx = $(event.currentTarget).data("predilection-index")
 | 
			
		||||
      let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
 | 
			
		||||
      let message = game.messages.get(messageId)
 | 
			
		||||
      let rollData = message.getFlag("world", "hawkmoon-roll")
 | 
			
		||||
      let actor = this.getActorFromRollData(rollData)
 | 
			
		||||
      let actor = HawkmoonUtility.getActorFromRollData(rollData)
 | 
			
		||||
      await actor.setPredilectionUsed(rollData.competence._id, predIdx)
 | 
			
		||||
      rollData.competence = duplicate(actor.getCompetence(rollData.competence._id))
 | 
			
		||||
      rollData.competence = foundry.utils.duplicate(actor.getCompetence(rollData.competence._id))
 | 
			
		||||
      HawkmoonUtility.rollHawkmoon(rollData)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    html.on("click", '.roll-chat-degat', async event => {
 | 
			
		||||
    $(html).on("click", '.roll-chat-degat', async event => {
 | 
			
		||||
      let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
 | 
			
		||||
      let message = game.messages.get(messageId)
 | 
			
		||||
      let rollData = message.getFlag("world", "hawkmoon-roll")
 | 
			
		||||
      let actor = this.getActorFromRollData(rollData)
 | 
			
		||||
      let actor = HawkmoonUtility.getActorFromRollData(rollData)
 | 
			
		||||
      actor.rollArmeDegats(rollData.arme._id, rollData.targetVigueur, rollData)
 | 
			
		||||
    })
 | 
			
		||||
    html.on("click", '.roll-chat-degat-devastateur', async event => {
 | 
			
		||||
    $(html).on("click", '.roll-chat-degat-devastateur', async event => {
 | 
			
		||||
      let messageId = HawkmoonUtility.findChatMessageId(event.currentTarget)
 | 
			
		||||
      let message = game.messages.get(messageId)
 | 
			
		||||
      let rollData = message.getFlag("world", "hawkmoon-roll")
 | 
			
		||||
      let actor = this.getActorFromRollData(rollData)
 | 
			
		||||
      let actor = HawkmoonUtility.getActorFromRollData(rollData)
 | 
			
		||||
      rollData.applyCoupDevastateur = true
 | 
			
		||||
      actor.rollArmeDegats(rollData.arme._id, rollData.targetVigueur, rollData)
 | 
			
		||||
    })
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -172,14 +191,11 @@ export class HawkmoonUtility {
 | 
			
		||||
      'systems/fvtt-hawkmoon-cyd/templates/partial-item-header.html',
 | 
			
		||||
      'systems/fvtt-hawkmoon-cyd/templates/partial-item-description.html',
 | 
			
		||||
      'systems/fvtt-hawkmoon-cyd/templates/partial-item-nav.html',
 | 
			
		||||
      'systems/fvtt-hawkmoon-cyd/templates/partial-list-niveau.html',
 | 
			
		||||
      'systems/fvtt-hawkmoon-cyd/templates/partial-list-niveau-creature.html',
 | 
			
		||||
      'systems/fvtt-hawkmoon-cyd/templates/partial-item-prix.html',
 | 
			
		||||
      'systems/fvtt-hawkmoon-cyd/templates/partial-sante-etat.html',
 | 
			
		||||
      'systems/fvtt-hawkmoon-cyd/templates/partial-automation.html',
 | 
			
		||||
      'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html',
 | 
			
		||||
    ]
 | 
			
		||||
    return loadTemplates(templatePaths);
 | 
			
		||||
    return foundry.applications.handlebars.loadTemplates(templatePaths);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -256,15 +272,19 @@ export class HawkmoonUtility {
 | 
			
		||||
 | 
			
		||||
    let id = rollData.rollId;
 | 
			
		||||
    let oldRollData = this.rollDataStore[id] || {};
 | 
			
		||||
    let newRollData = mergeObject(oldRollData, rollData);
 | 
			
		||||
    let newRollData = foundry.utils.mergeObject(oldRollData, rollData);
 | 
			
		||||
    this.rollDataStore[id] = newRollData;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static onSocketMesssage(msg) {
 | 
			
		||||
    if (msg.name == "msg_apply_combativite") {
 | 
			
		||||
      let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
 | 
			
		||||
      defender.changeEtatCombativite(msg.data.value)
 | 
			
		||||
    if (msg.msg == "msg_apply_combativite") {
 | 
			
		||||
      let defender = game.canvas.tokens.get(msg.data.defenderTokenId)?.actor
 | 
			
		||||
      if (defender) {
 | 
			
		||||
        defender.changeEtatCombativite(msg.data.value)
 | 
			
		||||
      } else {
 | 
			
		||||
        console.warn("HawkmoonUtility.onSocketMesssage : Impossible de trouver le token pour appliquer la combativité", msg.defenderTokenId)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -298,10 +318,10 @@ export class HawkmoonUtility {
 | 
			
		||||
        switch (rollMode) {
 | 
			
		||||
          case "blindroll": //GM only
 | 
			
		||||
            blind = true;
 | 
			
		||||
          case "gmroll": //GM + rolling player
 | 
			
		||||
          case "gmroll": // GM + rolling player
 | 
			
		||||
            whisper = this.getUsers(user => user.isGM);
 | 
			
		||||
            break;
 | 
			
		||||
          case "roll": //everybody
 | 
			
		||||
          case "roll": // everybody
 | 
			
		||||
            whisper = this.getUsers(user => user.active);
 | 
			
		||||
            break;
 | 
			
		||||
          case "selfroll":
 | 
			
		||||
@@ -338,17 +358,22 @@ export class HawkmoonUtility {
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //console.log("Result : ", rollData)
 | 
			
		||||
    //console.log("Result : ", rollData
 | 
			
		||||
    this.computeResultQuality(rollData)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static computeResultQuality(rollData) {
 | 
			
		||||
    if (rollData.difficulte > 0 && !rollData.isDramatique) {
 | 
			
		||||
      rollData.isSuccess = (rollData.finalResult >= rollData.difficulte)
 | 
			
		||||
      rollData.isHeroique = ((rollData.finalResult - rollData.difficulte) >= 10)
 | 
			
		||||
      rollData.isDramatique = ((rollData.finalResult - rollData.difficulte) <= -10)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static applyCombativite(rollData, value) {
 | 
			
		||||
    if (game.user.isGM) {     
 | 
			
		||||
    if (game.user.isGM) {
 | 
			
		||||
      let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
 | 
			
		||||
      defender.changeEtatCombativite(value)
 | 
			
		||||
    } else {
 | 
			
		||||
@@ -364,10 +389,10 @@ export class HawkmoonUtility {
 | 
			
		||||
    }
 | 
			
		||||
    if (!rollData.attr) {
 | 
			
		||||
      rollData.actionImg = "systems/fvtt-hawkmoon-cyd/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp"
 | 
			
		||||
      rollData.attr = duplicate(actor.system.attributs[rollData.attrKey])
 | 
			
		||||
      rollData.attr = foundry.utils.duplicate(actor.system.attributs[rollData.attrKey])
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.attrKey2 != "none") {
 | 
			
		||||
      rollData.attr2 = duplicate(actor.system.attributs[rollData.attrKey2])
 | 
			
		||||
      rollData.attr2 = foundry.utils.duplicate(actor.system.attributs[rollData.attrKey2])
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (rollData.maitriseId != "none") {
 | 
			
		||||
@@ -379,10 +404,10 @@ export class HawkmoonUtility {
 | 
			
		||||
 | 
			
		||||
    //console.log("BEFORE COMP", rollData)
 | 
			
		||||
    if (rollData.competence) {
 | 
			
		||||
      rollData.predilections = duplicate(rollData.competence.system.predilections || [])
 | 
			
		||||
      rollData.predilections = foundry.utils.duplicate(rollData.competence.system.predilections || [])
 | 
			
		||||
      let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
 | 
			
		||||
      rollData.diceFormula += `+${rollData.attr.value}+${rollData.competence.system.niveau}+${rollData.modificateur}+${compmod}`
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
      if (rollData.selectedTalents && rollData.selectedTalents.length > 0) {
 | 
			
		||||
        for (let id of rollData.selectedTalents) {
 | 
			
		||||
          let talent = rollData.talents.find(t => t._id == id)
 | 
			
		||||
@@ -406,11 +431,21 @@ export class HawkmoonUtility {
 | 
			
		||||
    } else {
 | 
			
		||||
      rollData.diceFormula += `+${rollData.attr.value}*${rollData.multiplier}+${rollData.modificateur}+${rollData.bonusMalusContext}`
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    // Bonus arme naturelle en défense
 | 
			
		||||
    if (rollData.bonusArmeNaturelle) {
 | 
			
		||||
      rollData.diceFormula += `+${rollData.bonusArmeNaturelle}`
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.attaquantsMultiples) {
 | 
			
		||||
      rollData.diceFormula += `+3`
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.hasAmbidextre) {
 | 
			
		||||
      if (rollData.ambidextre1) {
 | 
			
		||||
        rollData.diceFormula += `-3`
 | 
			
		||||
      } else if (rollData.ambidextre2) {
 | 
			
		||||
        rollData.diceFormula += `-6`
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.defenseurAuSol) {
 | 
			
		||||
      rollData.diceFormula += `+3`
 | 
			
		||||
    }
 | 
			
		||||
@@ -426,7 +461,10 @@ export class HawkmoonUtility {
 | 
			
		||||
    if (rollData.defenseurImmobilise) {
 | 
			
		||||
      rollData.diceFormula += `+5`
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    if (rollData.soutiens > 0) { // 1 soutien = +3, 2 soutiens = +4, 3 soutiens = +5
 | 
			
		||||
      rollData.diceFormula += `+${rollData.soutiens + 2}`
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (rollData.arme?.system.isDistance) {
 | 
			
		||||
      rollData.difficulte = __distanceDifficulte[rollData.distanceTir]
 | 
			
		||||
      rollData.difficulte += __tireurDeplacement[rollData.tireurDeplacement]
 | 
			
		||||
@@ -434,11 +472,12 @@ export class HawkmoonUtility {
 | 
			
		||||
      rollData.difficulte += __tailleCible[rollData.tailleCible]
 | 
			
		||||
      rollData.difficulte += rollData.cibleDeplace ? 3 : 0
 | 
			
		||||
      rollData.difficulte += rollData.cibleCaC ? 3 : 0
 | 
			
		||||
      rollData.difficulte += rollData.protectionDefenseur
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.attaqueDesarme) {
 | 
			
		||||
      rollData.difficulte += 10
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    // Ajout adversités
 | 
			
		||||
    rollData.diceFormula += `-${rollData.nbAdversites}`
 | 
			
		||||
 | 
			
		||||
@@ -446,9 +485,12 @@ export class HawkmoonUtility {
 | 
			
		||||
      rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
 | 
			
		||||
    // Gestion de la feinte éventuelle
 | 
			
		||||
    rollData.nbCombativitePerdu = 1
 | 
			
		||||
 | 
			
		||||
    let myRoll = await new Roll(rollData.diceFormula).roll()
 | 
			
		||||
    await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
 | 
			
		||||
    rollData.roll = duplicate(myRoll)
 | 
			
		||||
    rollData.roll = foundry.utils.duplicate(myRoll)
 | 
			
		||||
    console.log(">>>> ", myRoll)
 | 
			
		||||
 | 
			
		||||
    rollData.finalResult = myRoll.total
 | 
			
		||||
@@ -456,43 +498,59 @@ export class HawkmoonUtility {
 | 
			
		||||
    if (rollData.isInit) {
 | 
			
		||||
      actor.setFlag("world", "last-initiative", rollData.finalResult)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
      content: await renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
 | 
			
		||||
    }, rollData)
 | 
			
		||||
 | 
			
		||||
    if (rollData.arme && rollData.isSuccess && rollData.defenderTokenId) {
 | 
			
		||||
      this.applyCombativite(rollData, 1)
 | 
			
		||||
    if (rollData.feinte) {
 | 
			
		||||
      actor.changeBonneAventure(-1)
 | 
			
		||||
      if (rollData.isHeroique) {
 | 
			
		||||
        rollData.nbCombativitePerdu = "vaincu"
 | 
			
		||||
      } else if (rollData.isSuccess) {
 | 
			
		||||
        rollData.nbCombativitePerdu = 2
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
      content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
 | 
			
		||||
    }, rollData)
 | 
			
		||||
 | 
			
		||||
    if ((rollData.coupBas || rollData.arme) && rollData.isSuccess && rollData.defenderTokenId) {
 | 
			
		||||
      this.applyCombativite(rollData, rollData.nbCombativitePerdu)
 | 
			
		||||
    }
 | 
			
		||||
    if (rollData.coupBas && rollData.isSuccess && rollData.defenderTokenId) {
 | 
			
		||||
      let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
 | 
			
		||||
      defender.incDecAdversite("bleue", -2)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static getCombativiteList(nbActivite) {
 | 
			
		||||
    let list = [ { value: 0, label: "Combatif"}]
 | 
			
		||||
    for (let i = 1; i < nbActivite-2; i++) {
 | 
			
		||||
      list.push({ value: i, label:"Eprouvé " + i} )
 | 
			
		||||
    let list = [{ value: String(0), label: "Combatif" }]
 | 
			
		||||
    for (let i = 1; i < nbActivite - 2; i++) {
 | 
			
		||||
      list.push({ value: String(i), label: "Eprouvé " + i })
 | 
			
		||||
    }
 | 
			
		||||
    list[nbActivite-2] = { value: nbActivite-2, label:"Affaibli"}
 | 
			
		||||
    list[nbActivite-1] = { value: nbActivite-1, label:"Très Affaibli"}
 | 
			
		||||
    list[nbActivite] = { value: nbActivite, label:"Vaincu"}
 | 
			
		||||
    list[nbActivite - 2] = { value: String(nbActivite - 2), label: "Affaibli" }
 | 
			
		||||
    list[nbActivite - 1] = { value: String(nbActivite - 1), label: "Très Affaibli" }
 | 
			
		||||
    list[nbActivite] = { value: String(nbActivite), label: "Vaincu" }
 | 
			
		||||
    return list
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async bonusRollHawkmoon(rollData) {
 | 
			
		||||
    rollData.bonusFormula = rollData.addedBonus
 | 
			
		||||
    console.log("Bonus Roll Hawkmoon", rollData.bonusFormula)
 | 
			
		||||
 | 
			
		||||
    let bonusRoll = new Roll(rollData.bonusFormula).roll({ async: false })
 | 
			
		||||
    await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
 | 
			
		||||
    rollData.bonusRoll = duplicate(bonusRoll)
 | 
			
		||||
    if (!Number(rollData.bonusFormula)) {
 | 
			
		||||
      let bonusRoll = await new Roll(rollData.bonusFormula).roll()
 | 
			
		||||
      await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
 | 
			
		||||
      rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)
 | 
			
		||||
      rollData.finalResult += Number(rollData.bonusRoll.total)
 | 
			
		||||
    } else {
 | 
			
		||||
      rollData.finalResult += Number(rollData.bonusFormula)
 | 
			
		||||
      console.log("Bonus Roll Hawkmoon 2", rollData.finalResult)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    rollData.finalResult += rollData.bonusRoll.total
 | 
			
		||||
 | 
			
		||||
    this.computeResult(rollData)
 | 
			
		||||
    this.computeResultQuality(rollData)
 | 
			
		||||
 | 
			
		||||
    this.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
      content: await renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
 | 
			
		||||
      content: await foundry.applications.handlebars.renderTemplate(`systems/fvtt-hawkmoon-cyd/templates/chat-generic-result.html`, rollData)
 | 
			
		||||
    }, rollData)
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
@@ -519,7 +577,7 @@ export class HawkmoonUtility {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static blindMessageToGM(chatOptions) {
 | 
			
		||||
    let chatGM = duplicate(chatOptions);
 | 
			
		||||
    let chatGM = foundry.utils.duplicate(chatOptions);
 | 
			
		||||
    chatGM.whisper = this.getUsers(user => user.isGM);
 | 
			
		||||
    chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content;
 | 
			
		||||
    console.log("blindMessageToGM", chatGM);
 | 
			
		||||
@@ -583,7 +641,7 @@ export class HawkmoonUtility {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static getBasicRollData() {
 | 
			
		||||
    let rollData = {
 | 
			
		||||
      rollId: randomID(16),
 | 
			
		||||
      rollId: foundry.utils.randomID(16),
 | 
			
		||||
      rollMode: game.settings.get("core", "rollMode"),
 | 
			
		||||
      modificateursOptions: this.getModificateurOptions(),
 | 
			
		||||
      pointAmeOptions: this.getPointAmeOptions(),
 | 
			
		||||
@@ -601,7 +659,12 @@ export class HawkmoonUtility {
 | 
			
		||||
      cibleCouvert: "aucun",
 | 
			
		||||
      distanceTir: "porteemoyenne",
 | 
			
		||||
      attaqueCharge: false,
 | 
			
		||||
      attaqueDesarme: false
 | 
			
		||||
      attaqueDesarme: false,
 | 
			
		||||
      attaqueAmbidextre1: false,
 | 
			
		||||
      attaqueAmbidextre2: false,
 | 
			
		||||
      chargeCavalerie: false,
 | 
			
		||||
      contenir: false,
 | 
			
		||||
      soutiens: 0
 | 
			
		||||
    }
 | 
			
		||||
    return rollData
 | 
			
		||||
  }
 | 
			
		||||
@@ -613,11 +676,22 @@ export class HawkmoonUtility {
 | 
			
		||||
      rollData.defenderTokenId = target.id
 | 
			
		||||
      let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
 | 
			
		||||
      rollData.armeDefense = defender.getBestDefenseValue()
 | 
			
		||||
      rollData.armeAttaqueDefenseur = defender.getBestAttackValue()
 | 
			
		||||
      rollData.targetVigueur = defender.getVigueur()
 | 
			
		||||
      rollData.protectionDefenseur = defender.getProtection()
 | 
			
		||||
      if (rollData.armeDefense) {
 | 
			
		||||
      if (rollData.immobiliser || rollData.repousser) {
 | 
			
		||||
        let combatValues = defender.getCombatValues()
 | 
			
		||||
        rollData.difficulte = combatValues.defenseTotal + (rollData.armeDefense && rollData.cibleconsciente ? 5 : 0)
 | 
			
		||||
      } else if (rollData.coupBas) {
 | 
			
		||||
        let combatValues = defender.getCombatValues()
 | 
			
		||||
        rollData.difficulte = combatValues.defenseTotal
 | 
			
		||||
      } else if (rollData.assomer) {
 | 
			
		||||
        rollData.difficulte = 3 + (defender.system.attributs.tre.value * 2)
 | 
			
		||||
      } else if (rollData.desengager) {
 | 
			
		||||
        rollData.difficulte = rollData.armeAttaqueDefenseur?.system?.totalOffensif || 0;
 | 
			
		||||
      } else if (rollData.armeDefense) {
 | 
			
		||||
        rollData.difficulte = rollData.armeDefense.system.totalDefensif
 | 
			
		||||
        if ( !rollData.arme.system.armenaturelle && !rollData.arme.system.armefortune ){
 | 
			
		||||
        if (!rollData.desengager && !rollData.arme.system.armenaturelle && !rollData.arme.system.armefortune) {
 | 
			
		||||
          if (rollData.armeDefense.system.armenaturelle || rollData.armeDefense.system.armefortune) {
 | 
			
		||||
            rollData.bonusArmeNaturelle = 3
 | 
			
		||||
          }
 | 
			
		||||
@@ -635,11 +709,11 @@ export class HawkmoonUtility {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static applyBonneAventureRoll(li, changed, addedBonus) {
 | 
			
		||||
    let msgId = li.data("message-id")
 | 
			
		||||
    let msgId = $(li).data("message-id")
 | 
			
		||||
    let msg = game.messages.get(msgId)
 | 
			
		||||
    if (msg) {
 | 
			
		||||
      let rollData = msg.getFlag("world", "hawkmoon-roll")
 | 
			
		||||
      let actor = this.getActorFromRollData(rollData)
 | 
			
		||||
      let actor = HawkmoonUtility.getActorFromRollData(rollData)
 | 
			
		||||
      actor.changeBonneAventure(changed)
 | 
			
		||||
      rollData.isReroll = true
 | 
			
		||||
      rollData.textBonus = "Bonus de Points d'Aventure"
 | 
			
		||||
@@ -654,11 +728,11 @@ export class HawkmoonUtility {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static applyEclatRoll(li, changed, addedBonus) {
 | 
			
		||||
    let msgId = li.data("message-id")
 | 
			
		||||
    let msgId = $(li).data("message-id")
 | 
			
		||||
    let msg = game.messages.get(msgId)
 | 
			
		||||
    if (msg) {
 | 
			
		||||
      let rollData = msg.getFlag("world", "hawkmoon-roll")
 | 
			
		||||
      let actor = this.getActorFromRollData(rollData)
 | 
			
		||||
      let actor = HawkmoonUtility.getActorFromRollData(rollData)
 | 
			
		||||
      actor.changeEclat(changed)
 | 
			
		||||
      rollData.isReroll = true
 | 
			
		||||
      rollData.textBonus = "Bonus d'Eclat"
 | 
			
		||||
@@ -675,15 +749,15 @@ export class HawkmoonUtility {
 | 
			
		||||
  static chatRollMenu(html, options) {
 | 
			
		||||
    let canApply = li => canvas.tokens.controlled.length && li.find(".hawkmoon-roll").length
 | 
			
		||||
    let canApplyBA = function (li) {
 | 
			
		||||
      let message = game.messages.get(li.attr("data-message-id"))
 | 
			
		||||
      let message = game.messages.get($(li).attr("data-message-id"))
 | 
			
		||||
      let rollData = message.getFlag("world", "hawkmoon-roll")
 | 
			
		||||
      let actor = this.getActorFromRollData(rollData)
 | 
			
		||||
      let actor = HawkmoonUtility.getActorFromRollData(rollData)
 | 
			
		||||
      return (!rollData.isReroll && actor.getBonneAventure() > 0)
 | 
			
		||||
    }
 | 
			
		||||
    let canApplyPE = function (li) {
 | 
			
		||||
      let message = game.messages.get(li.attr("data-message-id"))
 | 
			
		||||
      let message = game.messages.get($(li).attr("data-message-id"))
 | 
			
		||||
      let rollData = message.getFlag("world", "hawkmoon-roll")
 | 
			
		||||
      let actor = this.getActorFromRollData(rollData)
 | 
			
		||||
      let actor = HawkmoonUtility.getActorFromRollData(rollData)
 | 
			
		||||
      return (!rollData.isReroll && actor.getEclat() > 0)
 | 
			
		||||
    }
 | 
			
		||||
    options.push(
 | 
			
		||||
@@ -707,7 +781,7 @@ export class HawkmoonUtility {
 | 
			
		||||
        name: "Relancer le dé (1 point d'Eclat)",
 | 
			
		||||
        icon: "<i class='fas fa-user-plus'></i>",
 | 
			
		||||
        condition: canApply && canApplyPE,
 | 
			
		||||
        callback: li => HawkmoonUtility.applyEclatRoll(li, -3, "reroll")
 | 
			
		||||
        callback: li => HawkmoonUtility.applyEclatRoll(li, -1, "reroll")
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
    return options
 | 
			
		||||
@@ -716,11 +790,11 @@ export class HawkmoonUtility {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async confirmDelete(actorSheet, li) {
 | 
			
		||||
    let itemId = li.data("item-id");
 | 
			
		||||
    let msgTxt = "<p>Are you sure to remove this Item ?";
 | 
			
		||||
    let msgTxt = "<p>Etes vous certain de vouloir supprimer cet item ?";
 | 
			
		||||
    let buttons = {
 | 
			
		||||
      delete: {
 | 
			
		||||
        icon: '<i class="fas fa-check"></i>',
 | 
			
		||||
        label: "Yes, remove it",
 | 
			
		||||
        label: "Oui !",
 | 
			
		||||
        callback: () => {
 | 
			
		||||
          actorSheet.actor.deleteEmbeddedDocuments("Item", [itemId]);
 | 
			
		||||
          li.slideUp(200, () => actorSheet.render(false));
 | 
			
		||||
@@ -728,12 +802,12 @@ export class HawkmoonUtility {
 | 
			
		||||
      },
 | 
			
		||||
      cancel: {
 | 
			
		||||
        icon: '<i class="fas fa-times"></i>',
 | 
			
		||||
        label: "Cancel"
 | 
			
		||||
        label: "Non"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    msgTxt += "</p>";
 | 
			
		||||
    let d = new Dialog({
 | 
			
		||||
      title: "Confirm removal",
 | 
			
		||||
      title: "Confirmer la suppression",
 | 
			
		||||
      content: msgTxt,
 | 
			
		||||
      buttons: buttons,
 | 
			
		||||
      default: "cancel"
 | 
			
		||||
@@ -752,7 +826,6 @@ export class HawkmoonUtility {
 | 
			
		||||
      console.log(entryData)
 | 
			
		||||
      htmlTab += `<tr><td>@UUID[Compendium.${compName}.${entryData._id}]{${entryData.name}}</td>`
 | 
			
		||||
      htmlTab += `<td>${entryData.system.description}</td>`;
 | 
			
		||||
      //htmlTab += `<td>${entryData.system.resumebonus}</td>`;
 | 
			
		||||
      htmlTab += "</tr>\n";
 | 
			
		||||
    }
 | 
			
		||||
    htmlTab += "</table>";
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/aides-de-jeu/000276.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/aides-de-jeu/000276.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/aides-de-jeu/000303.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/aides-de-jeu/000303.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/aides-de-jeu/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/aides-de-jeu/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000301
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/aides-de-jeu/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/aides-de-jeu/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/aides-de-jeu/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/aides-de-jeu/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/24-20:47:28.504597 7f151effd6c0 Recovering log #299
 | 
			
		||||
2025/06/24-20:47:28.514673 7f151effd6c0 Delete type=3 #297
 | 
			
		||||
2025/06/24-20:47:28.514784 7f151effd6c0 Delete type=0 #299
 | 
			
		||||
2025/06/24-21:03:58.298797 7f151d7fa6c0 Level-0 table #304: started
 | 
			
		||||
2025/06/24-21:03:58.298835 7f151d7fa6c0 Level-0 table #304: 0 bytes OK
 | 
			
		||||
2025/06/24-21:03:58.305605 7f151d7fa6c0 Delete type=0 #302
 | 
			
		||||
2025/06/24-21:03:58.316223 7f151d7fa6c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/24-21:03:58.316257 7f151d7fa6c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/aides-de-jeu/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/aides-de-jeu/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/03-13:26:59.527706 7f53dffff6c0 Recovering log #295
 | 
			
		||||
2025/06/03-13:26:59.538330 7f53dffff6c0 Delete type=3 #293
 | 
			
		||||
2025/06/03-13:26:59.538407 7f53dffff6c0 Delete type=0 #295
 | 
			
		||||
2025/06/03-13:30:56.587918 7f53df3ff6c0 Level-0 table #300: started
 | 
			
		||||
2025/06/03-13:30:56.587964 7f53df3ff6c0 Level-0 table #300: 0 bytes OK
 | 
			
		||||
2025/06/03-13:30:56.617514 7f53df3ff6c0 Delete type=0 #298
 | 
			
		||||
2025/06/03-13:30:56.714892 7f53df3ff6c0 Manual compaction at level-0 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/03-13:30:56.715021 7f53df3ff6c0 Manual compaction at level-1 from '!journal!MUbViCE2PkVxlzqe' @ 72057594037927935 : 1 .. '!journal.pages!gVybbv17TFY8o3Y4.fQidyqfF1TbsZKHM' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/aides-de-jeu/MANIFEST-000301
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/aides-de-jeu/MANIFEST-000301
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/armes/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/armes/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/armes/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/armes/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/armes/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/armes/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000300
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/armes/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/armes/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/armes/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/armes/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/24-20:47:28.375708 7f151effd6c0 Recovering log #298
 | 
			
		||||
2025/06/24-20:47:28.385573 7f151effd6c0 Delete type=3 #296
 | 
			
		||||
2025/06/24-20:47:28.385688 7f151effd6c0 Delete type=0 #298
 | 
			
		||||
2025/06/24-21:03:58.229253 7f151d7fa6c0 Level-0 table #303: started
 | 
			
		||||
2025/06/24-21:03:58.229277 7f151d7fa6c0 Level-0 table #303: 0 bytes OK
 | 
			
		||||
2025/06/24-21:03:58.235239 7f151d7fa6c0 Delete type=0 #301
 | 
			
		||||
2025/06/24-21:03:58.255927 7f151d7fa6c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/24-21:03:58.255971 7f151d7fa6c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/armes/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/armes/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/03-13:26:59.405001 7f53e5dfa6c0 Recovering log #294
 | 
			
		||||
2025/06/03-13:26:59.415733 7f53e5dfa6c0 Delete type=3 #292
 | 
			
		||||
2025/06/03-13:26:59.415800 7f53e5dfa6c0 Delete type=0 #294
 | 
			
		||||
2025/06/03-13:30:56.309035 7f53df3ff6c0 Level-0 table #299: started
 | 
			
		||||
2025/06/03-13:30:56.309066 7f53df3ff6c0 Level-0 table #299: 0 bytes OK
 | 
			
		||||
2025/06/03-13:30:56.343046 7f53df3ff6c0 Delete type=0 #297
 | 
			
		||||
2025/06/03-13:30:56.395832 7f53df3ff6c0 Manual compaction at level-0 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/03-13:30:56.395893 7f53df3ff6c0 Manual compaction at level-1 from '!items!0fit7HelSjaFtXcW' @ 72057594037927935 : 1 .. '!items!wxrzP3NyiHiYnAMJ' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/armes/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/armes/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/competences-creatures/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/competences-creatures/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/competences-creatures/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/competences-creatures/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/competences-creatures/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/competences-creatures/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000300
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/competences-creatures/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/competences-creatures/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/competences-creatures/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/competences-creatures/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/24-20:47:28.349172 7f151dffb6c0 Recovering log #298
 | 
			
		||||
2025/06/24-20:47:28.359761 7f151dffb6c0 Delete type=3 #296
 | 
			
		||||
2025/06/24-20:47:28.359875 7f151dffb6c0 Delete type=0 #298
 | 
			
		||||
2025/06/24-21:03:58.203272 7f151d7fa6c0 Level-0 table #303: started
 | 
			
		||||
2025/06/24-21:03:58.203347 7f151d7fa6c0 Level-0 table #303: 0 bytes OK
 | 
			
		||||
2025/06/24-21:03:58.209369 7f151d7fa6c0 Delete type=0 #301
 | 
			
		||||
2025/06/24-21:03:58.229076 7f151d7fa6c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/24-21:03:58.229112 7f151d7fa6c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/competences-creatures/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/competences-creatures/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/03-13:26:59.375226 7f53e55f96c0 Recovering log #294
 | 
			
		||||
2025/06/03-13:26:59.385670 7f53e55f96c0 Delete type=3 #292
 | 
			
		||||
2025/06/03-13:26:59.385742 7f53e55f96c0 Delete type=0 #294
 | 
			
		||||
2025/06/03-13:30:56.443109 7f53df3ff6c0 Level-0 table #299: started
 | 
			
		||||
2025/06/03-13:30:56.443148 7f53df3ff6c0 Level-0 table #299: 0 bytes OK
 | 
			
		||||
2025/06/03-13:30:56.473604 7f53df3ff6c0 Delete type=0 #297
 | 
			
		||||
2025/06/03-13:30:56.493334 7f53df3ff6c0 Manual compaction at level-0 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/03-13:30:56.493550 7f53df3ff6c0 Manual compaction at level-1 from '!items!0nhTxujlIUB63Aqt' @ 72057594037927935 : 1 .. '!items!tFU5yISK6spdNWco' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/competences-creatures/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/competences-creatures/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/competences/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/competences/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/competences/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/competences/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/competences/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/competences/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000300
 | 
			
		||||
							
								
								
									
										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 @@
 | 
			
		||||
2025/06/24-20:47:28.321545 7f151e7fc6c0 Recovering log #298
 | 
			
		||||
2025/06/24-20:47:28.331748 7f151e7fc6c0 Delete type=3 #296
 | 
			
		||||
2025/06/24-20:47:28.331800 7f151e7fc6c0 Delete type=0 #298
 | 
			
		||||
2025/06/24-21:03:58.209532 7f151d7fa6c0 Level-0 table #303: started
 | 
			
		||||
2025/06/24-21:03:58.209573 7f151d7fa6c0 Level-0 table #303: 0 bytes OK
 | 
			
		||||
2025/06/24-21:03:58.215589 7f151d7fa6c0 Delete type=0 #301
 | 
			
		||||
2025/06/24-21:03:58.229089 7f151d7fa6c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/24-21:03:58.229117 7f151d7fa6c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/competences/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/competences/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/03-13:26:59.341579 7f53dffff6c0 Recovering log #294
 | 
			
		||||
2025/06/03-13:26:59.353145 7f53dffff6c0 Delete type=3 #292
 | 
			
		||||
2025/06/03-13:26:59.353222 7f53dffff6c0 Delete type=0 #294
 | 
			
		||||
2025/06/03-13:30:56.343217 7f53df3ff6c0 Level-0 table #299: started
 | 
			
		||||
2025/06/03-13:30:56.343264 7f53df3ff6c0 Level-0 table #299: 0 bytes OK
 | 
			
		||||
2025/06/03-13:30:56.370130 7f53df3ff6c0 Delete type=0 #297
 | 
			
		||||
2025/06/03-13:30:56.395847 7f53df3ff6c0 Manual compaction at level-0 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/03-13:30:56.395903 7f53df3ff6c0 Manual compaction at level-1 from '!items!15IDGG6JoZnRCQtY' @ 72057594037927935 : 1 .. '!items!yI1zY5k8mAdx9wHK' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/competences/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/competences/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/equipement/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/equipement/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/equipement/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/equipement/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/equipement/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/equipement/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000300
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/equipement/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/equipement/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/equipement/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/equipement/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/24-20:47:28.402925 7f151e7fc6c0 Recovering log #298
 | 
			
		||||
2025/06/24-20:47:28.413436 7f151e7fc6c0 Delete type=3 #296
 | 
			
		||||
2025/06/24-20:47:28.413494 7f151e7fc6c0 Delete type=0 #298
 | 
			
		||||
2025/06/24-21:03:58.249333 7f151d7fa6c0 Level-0 table #303: started
 | 
			
		||||
2025/06/24-21:03:58.249401 7f151d7fa6c0 Level-0 table #303: 0 bytes OK
 | 
			
		||||
2025/06/24-21:03:58.255814 7f151d7fa6c0 Delete type=0 #301
 | 
			
		||||
2025/06/24-21:03:58.255957 7f151d7fa6c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/24-21:03:58.255982 7f151d7fa6c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/equipement/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/equipement/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/03-13:26:59.435242 7f53dffff6c0 Recovering log #294
 | 
			
		||||
2025/06/03-13:26:59.446161 7f53dffff6c0 Delete type=3 #292
 | 
			
		||||
2025/06/03-13:26:59.446239 7f53dffff6c0 Delete type=0 #294
 | 
			
		||||
2025/06/03-13:30:56.419788 7f53df3ff6c0 Level-0 table #299: started
 | 
			
		||||
2025/06/03-13:30:56.419819 7f53df3ff6c0 Level-0 table #299: 0 bytes OK
 | 
			
		||||
2025/06/03-13:30:56.442933 7f53df3ff6c0 Delete type=0 #297
 | 
			
		||||
2025/06/03-13:30:56.493303 7f53df3ff6c0 Manual compaction at level-0 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/03-13:30:56.493526 7f53df3ff6c0 Manual compaction at level-1 from '!items!0BopmCu8vGK2923j' @ 72057594037927935 : 1 .. '!items!zYx0Ak2y1LNTcKlO' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/equipement/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/equipement/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/historiques/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/historiques/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/historiques/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/historiques/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/historiques/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/historiques/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000300
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/historiques/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/historiques/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/historiques/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/historiques/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/24-20:47:28.362510 7f151e7fc6c0 Recovering log #298
 | 
			
		||||
2025/06/24-20:47:28.372821 7f151e7fc6c0 Delete type=3 #296
 | 
			
		||||
2025/06/24-20:47:28.372890 7f151e7fc6c0 Delete type=0 #298
 | 
			
		||||
2025/06/24-21:03:58.215818 7f151d7fa6c0 Level-0 table #303: started
 | 
			
		||||
2025/06/24-21:03:58.215857 7f151d7fa6c0 Level-0 table #303: 0 bytes OK
 | 
			
		||||
2025/06/24-21:03:58.222622 7f151d7fa6c0 Delete type=0 #301
 | 
			
		||||
2025/06/24-21:03:58.229098 7f151d7fa6c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/24-21:03:58.229123 7f151d7fa6c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/historiques/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/historiques/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/03-13:26:59.389629 7f53dffff6c0 Recovering log #294
 | 
			
		||||
2025/06/03-13:26:59.400611 7f53dffff6c0 Delete type=3 #292
 | 
			
		||||
2025/06/03-13:26:59.400739 7f53dffff6c0 Delete type=0 #294
 | 
			
		||||
2025/06/03-13:30:56.289820 7f53df3ff6c0 Level-0 table #299: started
 | 
			
		||||
2025/06/03-13:30:56.289876 7f53df3ff6c0 Level-0 table #299: 0 bytes OK
 | 
			
		||||
2025/06/03-13:30:56.308894 7f53df3ff6c0 Delete type=0 #297
 | 
			
		||||
2025/06/03-13:30:56.395816 7f53df3ff6c0 Manual compaction at level-0 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/03-13:30:56.395867 7f53df3ff6c0 Manual compaction at level-1 from '!items!15foLG7y3LUXNzkK' @ 72057594037927935 : 1 .. '!items!z1HtkvazCGHut7cz' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/historiques/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/historiques/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/mutations/000185.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/mutations/000185.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/mutations/000212.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/mutations/000212.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/mutations/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/mutations/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000210
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/mutations/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/mutations/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/mutations/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/mutations/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/24-20:47:28.335175 7f151f7fe6c0 Recovering log #208
 | 
			
		||||
2025/06/24-20:47:28.345128 7f151f7fe6c0 Delete type=3 #206
 | 
			
		||||
2025/06/24-20:47:28.345266 7f151f7fe6c0 Delete type=0 #208
 | 
			
		||||
2025/06/24-21:03:58.222777 7f151d7fa6c0 Level-0 table #213: started
 | 
			
		||||
2025/06/24-21:03:58.222803 7f151d7fa6c0 Level-0 table #213: 0 bytes OK
 | 
			
		||||
2025/06/24-21:03:58.228922 7f151d7fa6c0 Delete type=0 #211
 | 
			
		||||
2025/06/24-21:03:58.229105 7f151d7fa6c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/24-21:03:58.229129 7f151d7fa6c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/mutations/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/mutations/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/03-13:26:59.357421 7f53e5dfa6c0 Recovering log #204
 | 
			
		||||
2025/06/03-13:26:59.368746 7f53e5dfa6c0 Delete type=3 #202
 | 
			
		||||
2025/06/03-13:26:59.368822 7f53e5dfa6c0 Delete type=0 #204
 | 
			
		||||
2025/06/03-13:30:56.370280 7f53df3ff6c0 Level-0 table #209: started
 | 
			
		||||
2025/06/03-13:30:56.370317 7f53df3ff6c0 Level-0 table #209: 0 bytes OK
 | 
			
		||||
2025/06/03-13:30:56.395566 7f53df3ff6c0 Delete type=0 #207
 | 
			
		||||
2025/06/03-13:30:56.395858 7f53df3ff6c0 Manual compaction at level-0 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/03-13:30:56.395878 7f53df3ff6c0 Manual compaction at level-1 from '!folders!5d4Zn28TUcPxRyXd' @ 72057594037927935 : 1 .. '!items!zttESycGKltfwCzJ' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/mutations/MANIFEST-000210
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/mutations/MANIFEST-000210
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/profils/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/profils/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/profils/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/profils/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/profils/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/profils/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000300
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/profils/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/profils/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/profils/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/profils/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/24-20:47:28.416644 7f151dffb6c0 Recovering log #298
 | 
			
		||||
2025/06/24-20:47:28.426500 7f151dffb6c0 Delete type=3 #296
 | 
			
		||||
2025/06/24-20:47:28.426560 7f151dffb6c0 Delete type=0 #298
 | 
			
		||||
2025/06/24-21:03:58.241851 7f151d7fa6c0 Level-0 table #303: started
 | 
			
		||||
2025/06/24-21:03:58.241903 7f151d7fa6c0 Level-0 table #303: 0 bytes OK
 | 
			
		||||
2025/06/24-21:03:58.249125 7f151d7fa6c0 Delete type=0 #301
 | 
			
		||||
2025/06/24-21:03:58.255950 7f151d7fa6c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/24-21:03:58.255977 7f151d7fa6c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/profils/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/profils/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/03-13:26:59.451891 7f53e4df86c0 Recovering log #294
 | 
			
		||||
2025/06/03-13:26:59.462166 7f53e4df86c0 Delete type=3 #292
 | 
			
		||||
2025/06/03-13:26:59.462241 7f53e4df86c0 Delete type=0 #294
 | 
			
		||||
2025/06/03-13:30:56.493648 7f53df3ff6c0 Level-0 table #299: started
 | 
			
		||||
2025/06/03-13:30:56.493718 7f53df3ff6c0 Level-0 table #299: 0 bytes OK
 | 
			
		||||
2025/06/03-13:30:56.524994 7f53df3ff6c0 Delete type=0 #297
 | 
			
		||||
2025/06/03-13:30:56.587752 7f53df3ff6c0 Manual compaction at level-0 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/03-13:30:56.587819 7f53df3ff6c0 Manual compaction at level-1 from '!items!26mRstKhCJoXkhu1' @ 72057594037927935 : 1 .. '!items!tFQqcxmkS3MT6ASE' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/profils/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/profils/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/protections/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/protections/000275.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/protections/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/protections/000302.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/protections/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/protections/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000300
 | 
			
		||||
							
								
								
									
										0
									
								
								packs/protections/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/protections/LOCK
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										8
									
								
								packs/protections/LOG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/protections/LOG
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/24-20:47:28.388683 7f151f7fe6c0 Recovering log #298
 | 
			
		||||
2025/06/24-20:47:28.399664 7f151f7fe6c0 Delete type=3 #296
 | 
			
		||||
2025/06/24-20:47:28.399728 7f151f7fe6c0 Delete type=0 #298
 | 
			
		||||
2025/06/24-21:03:58.235416 7f151d7fa6c0 Level-0 table #303: started
 | 
			
		||||
2025/06/24-21:03:58.235454 7f151d7fa6c0 Level-0 table #303: 0 bytes OK
 | 
			
		||||
2025/06/24-21:03:58.241632 7f151d7fa6c0 Delete type=0 #301
 | 
			
		||||
2025/06/24-21:03:58.255941 7f151d7fa6c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/24-21:03:58.255965 7f151d7fa6c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										8
									
								
								packs/protections/LOG.old
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								packs/protections/LOG.old
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
2025/06/03-13:26:59.420295 7f53e55f96c0 Recovering log #294
 | 
			
		||||
2025/06/03-13:26:59.431966 7f53e55f96c0 Delete type=3 #292
 | 
			
		||||
2025/06/03-13:26:59.432124 7f53e55f96c0 Delete type=0 #294
 | 
			
		||||
2025/06/03-13:30:56.395990 7f53df3ff6c0 Level-0 table #299: started
 | 
			
		||||
2025/06/03-13:30:56.396032 7f53df3ff6c0 Level-0 table #299: 0 bytes OK
 | 
			
		||||
2025/06/03-13:30:56.419643 7f53df3ff6c0 Delete type=0 #297
 | 
			
		||||
2025/06/03-13:30:56.493262 7f53df3ff6c0 Manual compaction at level-0 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/03-13:30:56.493501 7f53df3ff6c0 Manual compaction at level-1 from '!items!16iPa2yIzB0V3pxb' @ 72057594037927935 : 1 .. '!items!yszkersMTE4p9VzP' @ 0 : 0; will stop at (end)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packs/protections/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/protections/MANIFEST-000300
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								packs/scenes/000114.ldb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								packs/scenes/000114.ldb
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								packs/scenes/000141.log
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packs/scenes/000141.log
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								packs/scenes/CURRENT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packs/scenes/CURRENT
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
MANIFEST-000139
 | 
			
		||||
							
								
								
									
										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 @@
 | 
			
		||||
2025/06/24-20:47:28.489732 7f151dffb6c0 Recovering log #137
 | 
			
		||||
2025/06/24-20:47:28.500057 7f151dffb6c0 Delete type=3 #135
 | 
			
		||||
2025/06/24-20:47:28.500112 7f151dffb6c0 Delete type=0 #137
 | 
			
		||||
2025/06/24-21:03:58.268967 7f151d7fa6c0 Level-0 table #142: started
 | 
			
		||||
2025/06/24-21:03:58.268991 7f151d7fa6c0 Level-0 table #142: 0 bytes OK
 | 
			
		||||
2025/06/24-21:03:58.275402 7f151d7fa6c0 Delete type=0 #140
 | 
			
		||||
2025/06/24-21:03:58.281956 7f151d7fa6c0 Manual compaction at level-0 from '!scenes!VOzC5ey4qi1C34MY' @ 72057594037927935 : 1 .. '!scenes!mfosNsLsHN5Pf4TO' @ 0 : 0; will stop at (end)
 | 
			
		||||
2025/06/24-21:03:58.281978 7f151d7fa6c0 Manual compaction at level-1 from '!scenes!VOzC5ey4qi1C34MY' @ 72057594037927935 : 1 .. '!scenes!mfosNsLsHN5Pf4TO' @ 0 : 0; will stop at (end)
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user