Compare commits
	
		
			11 Commits
		
	
	
		
			fvtt-hawkm
			...
			fvtt-hawkm
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8760e3eb6e | |||
| b3ddfb802e | |||
| 9f111771df | |||
| 44141e3982 | |||
| 35b47d5aaf | |||
| c48116de54 | |||
| 295c68a16e | |||
| b9d12843a5 | |||
| dd3f13f095 | |||
| 5dde9ac72f | |||
| 5ab6b99ef6 | 
							
								
								
									
										25
									
								
								LICENCE.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								LICENCE.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
MIT License
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2022 Uberwald/LeRatierBretonnien
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
in the Software without restriction, including without limitation the rights
 | 
			
		||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is
 | 
			
		||||
furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in all
 | 
			
		||||
copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
This license does not apply to the compendium content listed in this software's
 | 
			
		||||
"packs" directory. See the README for licensing information for the compendium
 | 
			
		||||
packs.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
SOFTWARE.
 | 
			
		||||
							
								
								
									
										16
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								README.md
									
									
									
									
									
								
							@@ -1,23 +1,29 @@
 | 
			
		||||
# Système Foundry pour Mournblade (French RPG, Titam France/Sombres Projets)
 | 
			
		||||
# Système Foundry pour Hawkmoon (French RPG, Titam France/Sombres Projets)
 | 
			
		||||
 | 
			
		||||
## EN
 | 
			
		||||
 | 
			
		||||
Unofficial system for Mournblade (French version from Titam France).
 | 
			
		||||
Unofficial system for Hawkmoon (French version from Titam France).
 | 
			
		||||
 | 
			
		||||
This system has been approved by Département des Sombres Projets ( http://www.titam-france.fr/ ), thanks !
 | 
			
		||||
 | 
			
		||||
Books are mandatory to play and are available at : http://www.titam-france.fr
 | 
			
		||||
 | 
			
		||||
## FR
 | 
			
		||||
 | 
			
		||||
Système non-officiel pour le JDR Mournblade (Titam France).
 | 
			
		||||
Système non-officiel pour le JDR Hawkmoon (Titam France/Sombres Projets).
 | 
			
		||||
 | 
			
		||||
Ce système a été autorisé par Ludospherik ( http://www.ludospherik.fr/ ), merci à eux !
 | 
			
		||||
Ce système a été autorisé par le Département des Sombres Projets ( http://www.titam-france.fr/ ), merci à eux !
 | 
			
		||||
 | 
			
		||||
Les livres du jeu sont nécessaires pour jouer, et sont disponibles ici : http://www.titam-france.fr
 | 
			
		||||
 | 
			
		||||
# Credits 
 | 
			
		||||
 | 
			
		||||
Mournblade, le jeu de rôle de Sword & Sorcery, is a property of Titam France/Sombres Projets.
 | 
			
		||||
Hawkmoon, le jeu de rôle du Troisième Millénaire, is a property of Titam France/Sombres Projets.
 | 
			
		||||
 | 
			
		||||
# Developmement 
 | 
			
		||||
 | 
			
		||||
LeRatierBretonnien
 | 
			
		||||
 | 
			
		||||
# Tests, icones et saisie des données
 | 
			
		||||
 | 
			
		||||
Prêtre, Blondin, Zechrub/Chris, Kyllian, Lightbringer
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										31
									
								
								lang/fr.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								lang/fr.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
{
 | 
			
		||||
  "ACTOR": {
 | 
			
		||||
    "TypePersonnage": "Personnage",
 | 
			
		||||
    "TypeCellule": "Cellule",
 | 
			
		||||
    "TypeCreature": "Créature"
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  "ITEM": {
 | 
			
		||||
    "TypeArtefact": "Artefact",
 | 
			
		||||
    "TypeArme": "Arme",
 | 
			
		||||
    "TypeTalent": "Talent",
 | 
			
		||||
    "TypeHistorique": "Historique",
 | 
			
		||||
    "TypeProfil": "Profil",
 | 
			
		||||
    "TypeCompetence": "Compétence",
 | 
			
		||||
    "TypeProtection": "Protection",
 | 
			
		||||
    "TypeMonnaie": "Monnaie",
 | 
			
		||||
    "TypeEquipement": "Equipement",
 | 
			
		||||
    "TypeRessource": "Ressource", 
 | 
			
		||||
    "TypeContact": "Contact"
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  "HAWKMOON": {
 | 
			
		||||
    "ui": {
 | 
			
		||||
      "editContact": "Modifier le contact",
 | 
			
		||||
      "deleteContact": "Supprimer le contact",
 | 
			
		||||
      "editTrait": "Modifier le trait",
 | 
			
		||||
      "deleteTrait": "Supprimer le trait"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -42,12 +42,17 @@ export class HawkmoonActorSheet extends ActorSheet {
 | 
			
		||||
      armes: duplicate(this.actor.getWeapons()),
 | 
			
		||||
      monnaies: duplicate(this.actor.getMonnaies()),
 | 
			
		||||
      protections: duplicate(this.actor.getArmors()),
 | 
			
		||||
      historique: duplicate(this.actor.getHistorique() || {}),
 | 
			
		||||
      talents: duplicate(this.actor.getTalents() || {}),
 | 
			
		||||
      historiques: duplicate(this.actor.getHistoriques() || []),
 | 
			
		||||
      talents: duplicate(this.actor.getTalents() || []),
 | 
			
		||||
      talentsCell: this.getCelluleTalents(),
 | 
			
		||||
      profils: duplicate(this.actor.getProfils()  || {}),
 | 
			
		||||
      profils: duplicate(this.actor.getProfils()  || []),
 | 
			
		||||
      combat: this.actor.getCombatValues(),      
 | 
			
		||||
      equipements: duplicate(this.actor.getEquipments()),
 | 
			
		||||
      artefacts: duplicate(this.actor.getArtefacts()),
 | 
			
		||||
      monnaies: duplicate(this.actor.getMonnaies()),
 | 
			
		||||
      richesse: this.actor.computeRichesse(),
 | 
			
		||||
      valeurEquipement: this.actor.computeValeurEquipement(),
 | 
			
		||||
      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}),
 | 
			
		||||
      options: this.options,
 | 
			
		||||
@@ -111,15 +116,12 @@ export class HawkmoonActorSheet extends ActorSheet {
 | 
			
		||||
      let value = Number($(event.currentTarget).data("adversite-value"))
 | 
			
		||||
      this.actor.incDecAdversite(adv, 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('.roll-initiative').click((event) => {
 | 
			
		||||
      this.actor.rollAttribut("pre", true)
 | 
			
		||||
@@ -146,7 +148,11 @@ export class HawkmoonActorSheet extends ActorSheet {
 | 
			
		||||
      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;
 | 
			
		||||
 
 | 
			
		||||
@@ -116,12 +116,20 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
  getEquipments() {
 | 
			
		||||
    return this.items.filter(item => item.type == "equipement")
 | 
			
		||||
  }
 | 
			
		||||
  /* -----------------------  --------------------- */
 | 
			
		||||
  getArtefacts() {
 | 
			
		||||
    return this.items.filter(item => item.type == "artefact")
 | 
			
		||||
  }
 | 
			
		||||
  /* -----------------------  --------------------- */
 | 
			
		||||
  getMonnaies() {
 | 
			
		||||
    return this.items.filter(item => item.type == "monnaie")
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getArmors() {
 | 
			
		||||
    return this.items.filter(item => item.type == "protection")
 | 
			
		||||
  }
 | 
			
		||||
  getHistorique() {
 | 
			
		||||
    return this.items.find(item => item.type == "historique")
 | 
			
		||||
  getHistoriques() {
 | 
			
		||||
    return this.items.filter(item => item.type == "historique")
 | 
			
		||||
  }
 | 
			
		||||
  getProfils() {
 | 
			
		||||
    return this.items.filter(item => item.type == "profil")
 | 
			
		||||
@@ -427,12 +435,36 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
  async incDecQuantity(objetId, incDec = 0) {
 | 
			
		||||
    let objetQ = this.items.get(objetId)
 | 
			
		||||
    if (objetQ) {
 | 
			
		||||
      let newQ = objetQ.system.quantity + incDec
 | 
			
		||||
      let newQ = objetQ.system.quantite + incDec
 | 
			
		||||
      newQ = Math.max(newQ, 0)
 | 
			
		||||
      const updated = await this.updateEmbeddedDocuments('Item', [{ _id: objetQ.id, 'system.quantity': newQ }]); // pdates one EmbeddedEntity
 | 
			
		||||
      const updated = await this.updateEmbeddedDocuments('Item', [{ _id: objetQ.id, 'system.quantite': newQ }]); // pdates one EmbeddedEntity
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  computeRichesse() {
 | 
			
		||||
    let valueSC = 0
 | 
			
		||||
    for(let monnaie of this.items) {
 | 
			
		||||
      if (monnaie.type == "monnaie") {
 | 
			
		||||
        valueSC += Number(monnaie.system.prixsc) * Number(monnaie.system.quantite) 
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return HawkmoonUtility.computeMonnaieDetails( valueSC)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  computeValeurEquipement() {
 | 
			
		||||
    let valueSC = 0
 | 
			
		||||
    for(let equip of this.items) {
 | 
			
		||||
      if (equip.type == "equipement" || equip.type == "arme" || equip.type == "protection") {
 | 
			
		||||
        valueSC += Number(equip.system.prixsc) * Number(equip.system.quantite ?? 1) 
 | 
			
		||||
        valueSC += (Number(equip.system.prixca) * Number(equip.system.quantite ?? 1)) * 20 
 | 
			
		||||
        valueSC += (Number(equip.system.prixpo) * Number(equip.system.quantite ?? 1)) * 400 
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    return HawkmoonUtility.computeMonnaieDetails( valueSC)
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getCompetence(compId) {
 | 
			
		||||
    return this.items.get(compId)
 | 
			
		||||
@@ -490,6 +522,11 @@ export class HawkmoonActor extends Actor {
 | 
			
		||||
    return talents
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  buildListeAdversites() {
 | 
			
		||||
    return []
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  getCommonRollData(attrKey = undefined, compId = undefined, compName = undefined) {
 | 
			
		||||
    let rollData = HawkmoonUtility.getBasicRollData()
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										71
									
								
								modules/hawkmoon-hud.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								modules/hawkmoon-hud.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
export class HawkmoonTokenHud {
 | 
			
		||||
 | 
			
		||||
  static init() {
 | 
			
		||||
    // Integration du TokenHUD
 | 
			
		||||
    Hooks.on('renderTokenHUD', (app, html, data) => { HawkmoonTokenHud.addTokenHudExtensions(app, html, data._id) });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async removeExtensionHud(app, html, tokenId) {
 | 
			
		||||
    html.find('.control-icon.hawkmoon-adversite').remove()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async addExtensionHud(app, html, tokenId) {
 | 
			
		||||
 | 
			
		||||
    let token = canvas.tokens.get(tokenId)
 | 
			
		||||
    let actor = token.actor
 | 
			
		||||
    app.hasExtension = true
 | 
			
		||||
 | 
			
		||||
    const hudData = { actor: actor }
 | 
			
		||||
 | 
			
		||||
    const controlIconActions = html.find('.control-icon[data-action=combat]');
 | 
			
		||||
    // initiative
 | 
			
		||||
    await HawkmoonTokenHud._configureSubMenu(controlIconActions, 'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html', hudData,
 | 
			
		||||
      (event) => {
 | 
			
		||||
        let adversite = event.currentTarget.attributes['data-action-index'].value
 | 
			
		||||
        let value = Number(event.currentTarget.attributes['data-action-value'].value)
 | 
			
		||||
        hudData.actor.incDecAdversite( adversite, value)
 | 
			
		||||
      } )
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async addTokenHudExtensions(app, html, tokenId) {
 | 
			
		||||
    const controlIconCombat  = html.find('.control-icon[data-action=combat]')
 | 
			
		||||
    if (controlIconCombat.length>0 ) {
 | 
			
		||||
      HawkmoonTokenHud.addExtensionHud(app, html, tokenId);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async _configureSubMenu(insertionPoint, template, hudData, onMenuItem) {
 | 
			
		||||
    const hud = $(await 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);
 | 
			
		||||
 | 
			
		||||
    insertionPoint.after(hud);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static _showControlWhen(control, condition) {
 | 
			
		||||
    if (condition) {
 | 
			
		||||
      control.show()
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      control.hide()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static _toggleHudListActive(hud, list) {
 | 
			
		||||
    hud.toggleClass('active')
 | 
			
		||||
    HawkmoonTokenHud._showControlWhen(list, hud.hasClass('active'))
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -17,6 +17,7 @@ import { HawkmoonUtility } from "./hawkmoon-utility.js";
 | 
			
		||||
import { HawkmoonCombat } from "./hawkmoon-combat.js";
 | 
			
		||||
import { HawkmoonItem } from "./hawkmoon-item.js";
 | 
			
		||||
import { HawkmoonAutomation } from "./hawkmoon-automation.js";
 | 
			
		||||
import { HawkmoonTokenHud } from "./hawkmoon-hud.js";
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
/*  Foundry VTT Initialization                  */
 | 
			
		||||
@@ -64,6 +65,7 @@ Hooks.once("init", async function () {
 | 
			
		||||
 | 
			
		||||
  HawkmoonUtility.init()
 | 
			
		||||
  HawkmoonAutomation.init()
 | 
			
		||||
  HawkmoonTokenHud.init()
 | 
			
		||||
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
@@ -75,7 +77,8 @@ function welcomeMessage() {
 | 
			
		||||
    content: `<div id="welcome-message-Hawkmoon"><span class="rdd-roll-part">
 | 
			
		||||
    <strong>Bienvenue dans Hawkmoon et le troisième Millénaire !</strong>
 | 
			
		||||
    <p>Les livres de Hawkmoon sont nécessaires pour jouer : https://www.titam-france.fr</p>
 | 
			
		||||
    <p>Hawkmoon est jeude rôle publié par Titam France/Sombres projets, tout les droits leur appartiennent.<p>
 | 
			
		||||
    <p>Hawkmoon est jeu de rôle publié par Titam France/Sombres projets, tout les droits leur appartiennent.</p>
 | 
			
		||||
    <p>Système développé par LeRatierBretonnien, support sur le <a href="https://discord.gg/pPSDNJk">Discord FR de Foundry</a>.</p>
 | 
			
		||||
    ` });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -110,7 +113,8 @@ function registerUsageCount(registerKey) {
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
Hooks.once("ready", function () {
 | 
			
		||||
 | 
			
		||||
  HawkmoonUtility.ready();
 | 
			
		||||
  HawkmoonUtility.ready()
 | 
			
		||||
 | 
			
		||||
  // User warning
 | 
			
		||||
  if (!game.user.isGM && game.user.character == undefined) {
 | 
			
		||||
    ui.notifications.info("Attention ! Aucun personnage n'est relié au joueur !");
 | 
			
		||||
 
 | 
			
		||||
@@ -96,7 +96,7 @@ export class HawkmoonUtility {
 | 
			
		||||
  static async ready() {
 | 
			
		||||
    const skills = await HawkmoonUtility.loadCompendium("fvtt-hawkmoon-cyd.skills")
 | 
			
		||||
    this.skills = skills.map(i => i.toObject())
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    // Setup pause logo
 | 
			
		||||
    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]
 | 
			
		||||
@@ -154,6 +154,7 @@ export class HawkmoonUtility {
 | 
			
		||||
      '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);
 | 
			
		||||
  }
 | 
			
		||||
@@ -216,8 +217,8 @@ export class HawkmoonUtility {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static getActorFromRollData(rollData)  {
 | 
			
		||||
    let actor = game.actors.get( rollData.actorId)
 | 
			
		||||
  static getActorFromRollData(rollData) {
 | 
			
		||||
    let actor = game.actors.get(rollData.actorId)
 | 
			
		||||
    if (rollData.tokenId) {
 | 
			
		||||
      let token = canvas.tokens.placeables.find(t => t.id == rollData.tokenId)
 | 
			
		||||
      if (token) {
 | 
			
		||||
@@ -304,10 +305,20 @@ export class HawkmoonUtility {
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static computeMonnaieDetails(valueSC) {
 | 
			
		||||
    let po = Math.floor(valueSC / 400)
 | 
			
		||||
    let pa = Math.floor((valueSC - (po*400)) / 20)
 | 
			
		||||
    let sc = valueSC - (po*400) - (pa*20)
 | 
			
		||||
    return {
 | 
			
		||||
      po: po, pa: pa, sc: sc, valueSC: valueSC 
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static computeResult(rollData) {
 | 
			
		||||
    rollData.diceResult = rollData.roll.terms[0].results[0].result
 | 
			
		||||
    if (rollData.mainDice.includes("d20") ) {
 | 
			
		||||
    if (rollData.mainDice.includes("d20")) {
 | 
			
		||||
      let diceValue = rollData.roll.terms[0].results[0].result
 | 
			
		||||
      if (diceValue % 2 == 1) {
 | 
			
		||||
        //console.log("PAIR/IMP2", diceValue)
 | 
			
		||||
@@ -325,7 +336,7 @@ export class HawkmoonUtility {
 | 
			
		||||
      rollData.isHeroique = ((rollData.finalResult - rollData.difficulte) >= 10)
 | 
			
		||||
      rollData.isDramatique = ((rollData.finalResult - rollData.difficulte) <= -10)
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -340,8 +351,8 @@ export class HawkmoonUtility {
 | 
			
		||||
      rollData.attr = duplicate(actor.system.attributs[rollData.attrKey])
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ( rollData.maitriseId != "none") {
 | 
			
		||||
      rollData.selectedMaitrise = rollData.maitrises.find(p => p.id == rollData.maitriseId )
 | 
			
		||||
    if (rollData.maitriseId != "none") {
 | 
			
		||||
      rollData.selectedMaitrise = rollData.maitrises.find(p => p.id == rollData.maitriseId)
 | 
			
		||||
      rollData.diceFormula = "2" + rollData.mainDice + "kh"
 | 
			
		||||
    } else {
 | 
			
		||||
      rollData.diceFormula = "1" + rollData.mainDice
 | 
			
		||||
@@ -352,15 +363,15 @@ export class HawkmoonUtility {
 | 
			
		||||
      rollData.predilections = duplicate(rollData.competence.system.predilections.filter(pred => pred.acquise && !pred.maitrise && !pred.used) || [])
 | 
			
		||||
      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) {
 | 
			
		||||
 | 
			
		||||
      if (rollData.selectedTalents && rollData.selectedTalents.length > 0) {
 | 
			
		||||
        for (let id of rollData.selectedTalents) {
 | 
			
		||||
          let talent = rollData.talents.find(t => t._id == id)
 | 
			
		||||
          let bonusOK = true
 | 
			
		||||
          if ( talent.system.baCost ) {
 | 
			
		||||
            bonusOK = actor.checkBonneAventure( talent.system.baCost)
 | 
			
		||||
            if ( bonusOK ) {
 | 
			
		||||
              actor.changeBonneAventure( -talent.system.baCost )
 | 
			
		||||
          if (talent.system.baCost) {
 | 
			
		||||
            bonusOK = actor.checkBonneAventure(talent.system.baCost)
 | 
			
		||||
            if (bonusOK) {
 | 
			
		||||
              actor.changeBonneAventure(-talent.system.baCost)
 | 
			
		||||
            } else {
 | 
			
		||||
              ui.notifications.warn("Vous n'avez pas assez de points de Bonne Aventure !")
 | 
			
		||||
            }
 | 
			
		||||
@@ -369,7 +380,7 @@ export class HawkmoonUtility {
 | 
			
		||||
            rollData.diceFormula += `+${talent.system.bonus}`
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }  
 | 
			
		||||
      }
 | 
			
		||||
      rollData.diceFormula += `+${rollData.bonusMalusContext}`
 | 
			
		||||
    } else {
 | 
			
		||||
      rollData.diceFormula += `+${rollData.attr.value}*${rollData.multiplier}+${rollData.modificateur}+${rollData.bonusMalusContext}`
 | 
			
		||||
@@ -522,7 +533,7 @@ export class HawkmoonUtility {
 | 
			
		||||
      let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
 | 
			
		||||
      rollData.armeDefense = defender.getBestDefenseValue()
 | 
			
		||||
      rollData.targetVigueur = defender.getVigueur()
 | 
			
		||||
      if ( rollData.armeDefense)  {
 | 
			
		||||
      if (rollData.armeDefense) {
 | 
			
		||||
        rollData.difficulte = rollData.armeDefense.system.totalDefensif
 | 
			
		||||
      } else {
 | 
			
		||||
        ui.notifications.warn("Aucune arme de défense équipée, difficulté manuelle à positionner.")
 | 
			
		||||
@@ -580,13 +591,13 @@ export class HawkmoonUtility {
 | 
			
		||||
      let message = game.messages.get(li.attr("data-message-id"))
 | 
			
		||||
      let rollData = message.getFlag("world", "hawkmoon-roll")
 | 
			
		||||
      let actor = this.getActorFromRollData(rollData)
 | 
			
		||||
      return (!rollData.isReroll && actor.getBonneAventure() > 0 )
 | 
			
		||||
      return (!rollData.isReroll && actor.getBonneAventure() > 0)
 | 
			
		||||
    }
 | 
			
		||||
    let canApplyPE = function (li) {
 | 
			
		||||
      let message = game.messages.get(li.attr("data-message-id"))
 | 
			
		||||
      let rollData = message.getFlag("world", "hawkmoon-roll")
 | 
			
		||||
      let actor = this.getActorFromRollData(rollData)
 | 
			
		||||
      return (!rollData.isReroll && actor.getEclat() > 0 )
 | 
			
		||||
      return (!rollData.isReroll && actor.getEclat() > 0)
 | 
			
		||||
    }
 | 
			
		||||
    options.push(
 | 
			
		||||
      {
 | 
			
		||||
@@ -643,4 +654,21 @@ export class HawkmoonUtility {
 | 
			
		||||
    d.render(true);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
  /************************************************************************************/
 | 
			
		||||
  static async __create_talents_table() {
 | 
			
		||||
    let compName = "fvtt-hawkmoon-cyd.talents-cellule"
 | 
			
		||||
    const compData = await HawkmoonUtility.loadCompendium(compName)
 | 
			
		||||
    let talents = compData.map(i => i.toObject())
 | 
			
		||||
 | 
			
		||||
    let htmlTab = "<table border='1'><tbody>";
 | 
			
		||||
    for (let entryData of talents) {
 | 
			
		||||
      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>";
 | 
			
		||||
    await JournalEntry.create({ name: 'Liste des Talents de Cellule', content: htmlTab });
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								packs/aides-de-jeu.db
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								packs/aides-de-jeu.db
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -28,6 +28,7 @@
 | 
			
		||||
{"name":"Gourde de cuir","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"<p>1 litre</p>","prixpo":0,"prixca":0,"prixsc":5,"rarete":3,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.Bk7CwCfqllFJyRzo"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667052151738,"modifiedTime":1667056681209,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"BBHGx79XunHAqgLm"}
 | 
			
		||||
{"name":"Anneau en argent","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":0,"prixca":8,"prixsc":0,"rarete":7,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.euNUZvN2AaNQX5Eh"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667053448337,"modifiedTime":1667056840190,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"BDzR3nDpE58cpzMf"}
 | 
			
		||||
{"name":"Ceinture de cuir","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":0,"prixca":0,"prixsc":8,"rarete":3,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.zUMIT05ItRjqyXzx"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667050981153,"modifiedTime":1667056547008,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"BWpLFLDuRQTntKNW"}
 | 
			
		||||
{"name":"Sous de Cuivre","type":"monnaie","img":"systems/fvtt-hawkmoon-cyd/assets/icons/monnaie.webp","system":{"description":"","prixpo":0,"prixca":0,"prixsc":1,"rarete":0,"quantite":1,"equipped":false},"effects":[],"ownership":{"default":0,"wYQCdPQVeRKBJmZI":3},"flags":{"core":{"sourceId":"Item.BuH79gmBwS61TNMs"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.1.3","coreVersion":"10.291","createdTime":1670105962535,"modifiedTime":1670108270030,"lastModifiedBy":"wYQCdPQVeRKBJmZI"},"folder":null,"sort":0,"_id":"CUHVKLJStGcH1pfV"}
 | 
			
		||||
{"name":"Écharpe de laine","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":0,"prixca":0,"prixsc":3,"rarete":2,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.gu8GIe9rTpa30y0L"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667051095332,"modifiedTime":1667056566818,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"D4FStoSsSD5t1pyR"}
 | 
			
		||||
{"name":"Antipoison","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"<p>Effets et notes :</p>\n<p>Confère un bonus de + 5 au test de Soins pour stopper les effets d’un empoisonnement.</p>\n<p> </p>","prixpo":0,"prixca":20,"prixsc":0,"rarete":8,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.6JwVwbG95Jro0jyA"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667056200587,"modifiedTime":1667056884888,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"DEAaZnyqfZTSnj5l"}
 | 
			
		||||
{"name":"Peigne en ivoire sculpté","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":0,"prixca":100,"prixsc":0,"rarete":9,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.qO3PbRUDrBAsl9Eg"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667052473087,"modifiedTime":1667056725327,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"DWbXCgeKhtxBop5k"}
 | 
			
		||||
@@ -97,6 +98,7 @@
 | 
			
		||||
{"name":"Tambourin","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":0,"prixca":2,"prixsc":0,"rarete":5,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.3w6hbSQaxhkKHeNK"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667053372874,"modifiedTime":1667056832786,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"gRXQlfeiJzEYGcRL"}
 | 
			
		||||
{"name":"Robe de bal","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"<p>Coût : 20 à 200 PA</p>","prixpo":0,"prixca":20,"prixsc":0,"rarete":8,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.oXhEGerIeFe5qWPe"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667051286585,"modifiedTime":1667056586658,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"gbG7p0z7UVXdfNSR"}
 | 
			
		||||
{"name":"Cor de chasse en corne","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":0,"prixca":2,"prixsc":0,"rarete":5,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.KEsLoT5TtwpUgb5g"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667053304777,"modifiedTime":1667056825041,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"hi1uIij2vnhblvyc"}
 | 
			
		||||
{"name":"Pièce d'Or","type":"monnaie","img":"systems/fvtt-hawkmoon-cyd/assets/icons/monnaie.webp","system":{"description":"","prixpo":0,"prixca":0,"prixsc":400,"rarete":0,"quantite":1,"equipped":false},"effects":[],"ownership":{"default":0,"wYQCdPQVeRKBJmZI":3},"flags":{"core":{"sourceId":"Item.arqqVEV5qwgVh1qz"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.1.3","coreVersion":"10.291","createdTime":1670105962535,"modifiedTime":1670108267437,"lastModifiedBy":"wYQCdPQVeRKBJmZI"},"folder":null,"sort":0,"_id":"iDsF5gfusUp56ffF"}
 | 
			
		||||
{"name":"Sphère noire","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":0,"prixca":30,"prixsc":0,"rarete":9,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.wgZufKzZs1mv6U7m"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667053281244,"modifiedTime":1667056823317,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"iTgpQBOfOLKOOIpx"}
 | 
			
		||||
{"name":"Lampe à huile","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"<p>durée huit heures</p>","prixpo":0,"prixca":0,"prixsc":15,"rarete":3,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.52qKfCHjAXnPd42R"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667050221162,"modifiedTime":1667056522865,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"k549mRHCTM5qvoAq"}
 | 
			
		||||
{"name":"Parfum d’Italia","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":1,"prixca":0,"prixsc":0,"rarete":8,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.nQpYaf3lVGlHWZDd"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667053201541,"modifiedTime":1667056816027,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"kimJnMkFr6mx2GR2"}
 | 
			
		||||
@@ -110,6 +112,7 @@
 | 
			
		||||
{"name":"Miroir","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":0,"prixca":1,"prixsc":0,"rarete":5,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.w2y1ZIQwrq16pyro"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667052391234,"modifiedTime":1667056715568,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"oF4ctqBDkAw6gNkd"}
 | 
			
		||||
{"name":"Nuit en dortoir sur une paillasse sale","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":0,"prixca":0,"prixsc":3,"rarete":2,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.4GmLW6TqSQaDktX6"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667049989473,"modifiedTime":1667056509383,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"oOuBI5T6XB91aHCE"}
 | 
			
		||||
{"name":"Pourpoint de cuir","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":0,"prixca":3,"prixsc":0,"rarete":5,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.WzLzKVbZzw68cXko"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667051273146,"modifiedTime":1667056584869,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"oRg2ar1k6VMZpy77"}
 | 
			
		||||
{"name":"Pièce d'Argent","type":"monnaie","img":"systems/fvtt-hawkmoon-cyd/assets/icons/monnaie.webp","system":{"description":"","prixpo":0,"prixca":0,"prixsc":20,"rarete":0,"quantite":1,"equipped":false},"effects":[],"ownership":{"default":0,"wYQCdPQVeRKBJmZI":3},"flags":{"core":{"sourceId":"Item.I6sMdUOBJV7DuOB2"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.1.3","coreVersion":"10.291","createdTime":1670105962535,"modifiedTime":1670108264731,"lastModifiedBy":"wYQCdPQVeRKBJmZI"},"folder":null,"sort":0,"_id":"pHLxatpIeOjQ4SY9"}
 | 
			
		||||
{"name":"Couverts en argent","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"<p>un couteau, une fourchette, une cuiller</p>","prixpo":0,"prixca":30,"prixsc":0,"rarete":9,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.QszRAgf7F0ZSbN6z"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667051873930,"modifiedTime":1667056657906,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"pJAfqX7SieQmRGDF"}
 | 
			
		||||
{"name":"Cataplasme miraculeux","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"<p>crème de nanocompo\u0002sites régénérants – création technologique</p>\n<p><strong>Effets et notes :</strong><br>Permet de défausser jusqu’à 2 Adversités noires après (10 – Trempe) x 10 minutes.</p>","prixpo":0,"prixca":100,"prixsc":0,"rarete":10,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.6fA5jRN6HAXN3sLM"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667055976728,"modifiedTime":1667056878533,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"q6gtm9fNDyIWJ90X"}
 | 
			
		||||
{"name":"Nuit sur le plancher de la salle commune ou à l’étable","type":"equipement","img":"systems/fvtt-hawkmoon-cyd/assets/icons/equipement.webp","system":{"description":"","prixpo":0,"prixca":0,"prixsc":1,"rarete":1,"equipped":false},"effects":[],"flags":{"core":{"sourceId":"Item.V0lq8ve5orlZBG3G"}},"_stats":{"systemId":"fvtt-hawkmoon-cyd","systemVersion":"10.0.7","coreVersion":"10.286","createdTime":1667049973754,"modifiedTime":1667056508034,"lastModifiedBy":"aU5ncDYkHS7NmLl4"},"folder":null,"sort":0,"ownership":{"default":0,"aU5ncDYkHS7NmLl4":3},"_id":"q8jVTrkQM9EDa6E1"}
 | 
			
		||||
 
 | 
			
		||||
@@ -790,6 +790,7 @@ ul, li {
 | 
			
		||||
  width: fit-content;
 | 
			
		||||
  height: fit-content;
 | 
			
		||||
  min-width: 6rem;
 | 
			
		||||
  min-height: 1.2rem;
 | 
			
		||||
  flex-basis: auto;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  line-height: 1rem;
 | 
			
		||||
@@ -896,6 +897,22 @@ ul, li {
 | 
			
		||||
  border: 0px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.hud-adversite-container {
 | 
			
		||||
  position: relative;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  color: white;
 | 
			
		||||
  width: 64px;
 | 
			
		||||
  min-height: 64px;
 | 
			
		||||
}
 | 
			
		||||
.hud-adversite-text {
 | 
			
		||||
  font-weight: bold;
 | 
			
		||||
  font-size:0.9rem;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 50%;
 | 
			
		||||
  left: 50%;
 | 
			
		||||
  transform: translate(-50%, -85%);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.actor-icon {
 | 
			
		||||
  float: left;
 | 
			
		||||
  width: 48px;
 | 
			
		||||
@@ -1419,4 +1436,7 @@ ul, li {
 | 
			
		||||
}
 | 
			
		||||
.adversite-modify {
 | 
			
		||||
  margin-top: 12px;
 | 
			
		||||
}
 | 
			
		||||
.argent-total-text {
 | 
			
		||||
  margin-left: 4px;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										23
									
								
								system.json
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								system.json
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "id": "fvtt-hawkmoon-cyd",
 | 
			
		||||
  "description": "Hawmoon RPG for FoundryVTT (CYD system - French)",
 | 
			
		||||
  "version": "10.1.1",
 | 
			
		||||
  "description": "Hawkmoon RPG for FoundryVTT (CYD system - French)",
 | 
			
		||||
  "version": "10.1.7",
 | 
			
		||||
  "authors": [
 | 
			
		||||
    {
 | 
			
		||||
      "name": "Uberwald/LeRatierBretonnien",
 | 
			
		||||
@@ -35,7 +35,15 @@
 | 
			
		||||
  "gridUnits": "m",
 | 
			
		||||
  "license": "LICENSE.txt",
 | 
			
		||||
  "manifest": "https://www.uberwald.me/gitea/public/fvtt-hawkmoon-cyd/raw/branch/master/system.json",
 | 
			
		||||
  "download": "https://www.uberwald.me/gitea/public/fvtt-hawkmoon-cyd/archive/fvtt-hawkmoon-cyd-10.1.1.zip",
 | 
			
		||||
  "download": "https://www.uberwald.me/gitea/public/fvtt-hawkmoon-cyd/archive/fvtt-hawkmoon-cyd-10.1.7.zip",
 | 
			
		||||
  "languages": [
 | 
			
		||||
    {
 | 
			
		||||
      "lang": "fr",
 | 
			
		||||
      "name": "French",
 | 
			
		||||
      "path": "lang/fr.json",
 | 
			
		||||
      "flags": {}
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "packs": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "Item",
 | 
			
		||||
@@ -117,6 +125,15 @@
 | 
			
		||||
      "system": "fvtt-hawkmoon-cyd",
 | 
			
		||||
      "private": false,
 | 
			
		||||
      "flags": {}
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "JournalEntry",
 | 
			
		||||
      "label": "Aides de Jeu",
 | 
			
		||||
      "name": "aides-de-jeu",
 | 
			
		||||
      "path": "packs/aides-de-jeu.db",
 | 
			
		||||
      "system": "fvtt-hawkmoon-cyd",
 | 
			
		||||
      "private": false,
 | 
			
		||||
      "flags": {}
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "primaryTokenAttribute": "sante.vigueur",
 | 
			
		||||
 
 | 
			
		||||
@@ -124,6 +124,7 @@
 | 
			
		||||
        "prixca": 0,
 | 
			
		||||
        "prixsc": 0, 
 | 
			
		||||
        "rarete": 0,
 | 
			
		||||
        "quantite": 0,
 | 
			
		||||
        "equipped": false
 | 
			
		||||
      },
 | 
			
		||||
      "automation": {
 | 
			
		||||
 
 | 
			
		||||
@@ -233,7 +233,7 @@
 | 
			
		||||
 | 
			
		||||
      <ul class="item-list alternate-list">
 | 
			
		||||
        <li class="item flexrow">
 | 
			
		||||
          <button class="chat-card-button roll-initiative">Initiative</button>
 | 
			
		||||
          <button class="chat-card-button roll-initiative">Initiative (actuelle : {{initiative}} )</button>
 | 
			
		||||
        </li>
 | 
			
		||||
      </ul>
 | 
			
		||||
 | 
			
		||||
@@ -340,6 +340,58 @@
 | 
			
		||||
    <div class="tab equipement" data-group="primary" data-tab="equipement">
 | 
			
		||||
 | 
			
		||||
      <div class="flexcol">
 | 
			
		||||
        
 | 
			
		||||
        <hr>
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
            <h4>
 | 
			
		||||
              <label class="argent-total-text">
 | 
			
		||||
                Argent Total : {{richesse.po}} PO - {{richesse.pa}} PA - {{richesse.sc}} SC (total {{richesse.valueSC}} SC)
 | 
			
		||||
              </label>
 | 
			
		||||
          </h4>  
 | 
			
		||||
        </div>
 | 
			
		||||
        
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Richesses et Argent</label></h3>  
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Quantité</label>
 | 
			
		||||
              </span>
 | 
			
		||||
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="monnaie" title="Ajouter une monnaie"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each monnaies as |monnaie key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{monnaie._id}}" data-item-type="monnaie">
 | 
			
		||||
              <img class="item-name-img" src="{{monnaie.img}}" />
 | 
			
		||||
              <span class="item-name-label competence-name">{{monnaie.name}}</span>
 | 
			
		||||
              <span class="item-name-label competence-name item-field-label-medium">{{monnaie.system.quantite}} 
 | 
			
		||||
                <a class="quantity-modify plus-minus-button" data-quantite-value="-1">-</a>
 | 
			
		||||
                <a class="quantity-modify plus-minus-button" data-quantite-value="+1">+</a>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <hr>
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
            <h4>
 | 
			
		||||
              <label class="argent-total-text">
 | 
			
		||||
                Valeur Total Equipement : {{valeurEquipement.po}} PO - {{valeurEquipement.pa}} PA - {{valeurEquipement.sc}} SC (total {{valeurEquipement.valueSC}} SC)
 | 
			
		||||
              </label>
 | 
			
		||||
          </h4>  
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
@@ -347,9 +399,14 @@
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Equipements</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Quantité</label>
 | 
			
		||||
              </span>
 | 
			
		||||
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
 | 
			
		||||
                <a class="item-control item-add" data-type="equipement" title="Ajouter un équipement"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
@@ -357,6 +414,45 @@
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{equipement._id}}" data-item-type="equipement">
 | 
			
		||||
              <img class="item-name-img" src="{{equipement.img}}" />
 | 
			
		||||
              <span class="item-name-label competence-name">{{equipement.name}}</span>
 | 
			
		||||
              <span class="item-name-label competence-name item-field-label-medium">{{equipement.system.quantite}}
 | 
			
		||||
                <a class="quantity-modify plus-minus-button" data-quantite-value="-1">-</a>
 | 
			
		||||
                <a class="quantity-modify plus-minus-button" data-quantite-value="+1">+</a>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow list-item items-title-bg">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Artefacts</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Quantité</label>
 | 
			
		||||
              </span>
 | 
			
		||||
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-add" data-type="artefact" title="Ajouter un artefact"><i
 | 
			
		||||
                    class="fas fa-plus"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each artefacts as |artefact key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{artefact._id}}" data-item-type="artefact">
 | 
			
		||||
              <img class="item-name-img" src="{{artefact.img}}" />
 | 
			
		||||
              <span class="item-name-label competence-name">{{artefact.name}}</span>
 | 
			
		||||
              <span class="item-name-label competence-name item-field-label-medium">{{artefact.system.quantite}}
 | 
			
		||||
                <a class="quantity-modify plus-minus-button" data-quantite-value="-1">-</a>
 | 
			
		||||
                <a class="quantity-modify plus-minus-button" data-quantite-value="+1">+</a>
 | 
			
		||||
              </span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
@@ -377,6 +473,7 @@
 | 
			
		||||
 | 
			
		||||
      <div>
 | 
			
		||||
        <ul class="item-list alternate-list">
 | 
			
		||||
          {{#each historiques as |historique key|}}
 | 
			
		||||
          <li class="item flexrow" data-item-id="{{historique._id}}">
 | 
			
		||||
            <label class="generic-label">Historique : </label>
 | 
			
		||||
            <label class="generic-label">{{historique.name}}</label>
 | 
			
		||||
@@ -386,6 +483,7 @@
 | 
			
		||||
              <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
            </div>
 | 
			
		||||
          </li>
 | 
			
		||||
          {{/each}}
 | 
			
		||||
          {{#each profils as |profil key|}}
 | 
			
		||||
          <li class="item flexrow" data-item-id="{{profil._id}}">
 | 
			
		||||
            <label class="generic-label">Profil : </label>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										48
									
								
								templates/hud-adversites.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								templates/hud-adversites.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
<div class="control-icon hawkmoon-adversite ">
 | 
			
		||||
  <img class="hawkmoon-hud-togglebutton" src="icons/svg/sword.svg" width="36" height="36" title="Action" />
 | 
			
		||||
  <div class="hawkmoon-hud-list tokenhudext right">
 | 
			
		||||
    
 | 
			
		||||
    <div class="flexrow tokenhudicon">
 | 
			
		||||
      <div class="hawkmoon-hud-adversite hud-adversite-container" data-action-value="-1"
 | 
			
		||||
        data-action-index="bleue" title="Adversite Bleue">
 | 
			
		||||
        <img class="icon-adversite" src="systems/fvtt-hawkmoon-cyd/assets/icons/gemme_bleue.webp">
 | 
			
		||||
        <div class="hud-adversite-text"> -1</div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="hawkmoon-hud-adversite hud-adversite-container" data-action-value="+1"
 | 
			
		||||
        data-action-index="bleue" title="Adversite Bleue">
 | 
			
		||||
        <img class="icon-adversite" src="systems/fvtt-hawkmoon-cyd/assets/icons/gemme_bleue.webp">
 | 
			
		||||
        <div class="hud-adversite-text"> +1</div>
 | 
			
		||||
      </div>      
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="flexrow tokenhudicon">
 | 
			
		||||
      <div class="hawkmoon-hud-adversite hud-adversite-container" data-action-value="-1"
 | 
			
		||||
          data-action-index="rouge" title="Adversite Rouge">
 | 
			
		||||
        <img class="icon-adversite" src="systems/fvtt-hawkmoon-cyd/assets/icons/gemme_rouge.webp">
 | 
			
		||||
        <div class="hud-adversite-text"> -1</div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="hawkmoon-hud-adversite hud-adversite-container" data-action-value="+1"
 | 
			
		||||
          data-action-index="rouge" title="Adversite Rouge">
 | 
			
		||||
        <img class="icon-adversite" src="systems/fvtt-hawkmoon-cyd/assets/icons/gemme_rouge.webp">
 | 
			
		||||
        <div class="hud-adversite-text"> +1</div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="flexrow tokenhudicon">
 | 
			
		||||
      <div class="hawkmoon-hud-adversite hud-adversite-container" data-action-value="-1"
 | 
			
		||||
        data-action-index="noire" title="Adversite Noire">
 | 
			
		||||
        <img class="icon-adversite" src="systems/fvtt-hawkmoon-cyd/assets/icons/gemme_noire.webp">
 | 
			
		||||
        <div class="hud-adversite-text"> -1</div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="hawkmoon-hud-adversite hud-adversite-container" data-action-value="+1"
 | 
			
		||||
        data-action-index="noire" title="Adversite Noire">
 | 
			
		||||
        <img class="icon-adversite" src="systems/fvtt-hawkmoon-cyd/assets/icons/gemme_noire.webp">
 | 
			
		||||
        <div class="hud-adversite-text"> +1</div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
@@ -13,8 +13,19 @@
 | 
			
		||||
      
 | 
			
		||||
      <ul class="item-list alternate-list">
 | 
			
		||||
 | 
			
		||||
        {{> systems/fvtt-hawkmoon-cyd/templates/partial-item-prix.html}}
 | 
			
		||||
        <li class="flexrow item">
 | 
			
		||||
          <label class="generic-label item-field-label-long">Quantite </label>
 | 
			
		||||
          <input type="text" class="padd-right numeric-input item-field-label-short" name="system.quantite"
 | 
			
		||||
                  value="{{system.quantite}}" data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
 | 
			
		||||
        <li class="flexrow item">
 | 
			
		||||
          <label class="generic-label item-field-label-long">Valeur en Sous de Cuivre (SC)</label>
 | 
			
		||||
          <input type="text" class="numeric-input item-field-label-short" name="system.prixsc" value="{{system.prixsc}}"
 | 
			
		||||
                data-dtype="Number" />
 | 
			
		||||
        </li>
 | 
			
		||||
 | 
			
		||||
      
 | 
			
		||||
      </ul>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,12 @@
 | 
			
		||||
  <input type="checkbox" name="system.equipped" {{checked system.equipped}} />
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li class="flexrow item">
 | 
			
		||||
  <label class="generic-label item-field-label-long">Quantite </label>
 | 
			
		||||
  <input type="text" class="padd-right numeric-input item-field-label-short" name="system.quantite"
 | 
			
		||||
          value="{{system.quantite}}" data-dtype="Number" />
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li class="flexrow item">
 | 
			
		||||
 | 
			
		||||
  <label class="generic-label item-field-label-long">Prix (PA) </label>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user