Merge v1.5
This commit is contained in:
		@@ -33,7 +33,8 @@ import { RollDataAjustements } from "./rolldata-ajustements.js";
 | 
				
			|||||||
import { DialogItemAchat } from "./dialog-item-achat.js";
 | 
					import { DialogItemAchat } from "./dialog-item-achat.js";
 | 
				
			||||||
import { RdDItem } from "./item.js";
 | 
					import { RdDItem } from "./item.js";
 | 
				
			||||||
import { RdDPossession } from "./rdd-possession.js";
 | 
					import { RdDPossession } from "./rdd-possession.js";
 | 
				
			||||||
import { SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
 | 
					import { ENTITE_BLURETTE, ENTITE_INCARNE, ENTITE_NONINCARNE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* -------------------------------------------- */
 | 
					/* -------------------------------------------- */
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -98,7 +99,6 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
   * @param {Object} options     (Unused) Additional options which customize the creation workflow.
 | 
					   * @param {Object} options     (Unused) Additional options which customize the creation workflow.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
 | 
					 | 
				
			||||||
  static async create(actorData, options) {
 | 
					  static async create(actorData, options) {
 | 
				
			||||||
    // Case of compendium global import
 | 
					    // Case of compendium global import
 | 
				
			||||||
    if (actorData instanceof Array) {
 | 
					    if (actorData instanceof Array) {
 | 
				
			||||||
@@ -134,13 +134,6 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
    this.encTotal = 0;
 | 
					    this.encTotal = 0;
 | 
				
			||||||
    this.prixTotalEquipement = 0;
 | 
					    this.prixTotalEquipement = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*
 | 
					 | 
				
			||||||
    // Auto-resize token
 | 
					 | 
				
			||||||
    if (this.isToken) {
 | 
					 | 
				
			||||||
      let tokenSize = actorData.data.carac.taille.value/10;
 | 
					 | 
				
			||||||
      this.token.update({height: tokenSize, width: tokenSize } );
 | 
					 | 
				
			||||||
    }*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Make separate methods for each Actor type (character, npc, etc.) to keep
 | 
					    // Make separate methods for each Actor type (character, npc, etc.) to keep
 | 
				
			||||||
    // things organized.
 | 
					    // things organized.
 | 
				
			||||||
    if (this.type === 'personnage') this._prepareCharacterData(this)
 | 
					    if (this.type === 'personnage') this._prepareCharacterData(this)
 | 
				
			||||||
@@ -245,7 +238,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  getForce() {
 | 
					  getForce() {
 | 
				
			||||||
    if (this.isEntiteCauchemar()) {
 | 
					    if (this.isEntite()) {
 | 
				
			||||||
      return Misc.toInt(this.system.carac.reve?.value);
 | 
					      return Misc.toInt(this.system.carac.reve?.value);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return Misc.toInt(this.system.carac.force?.value);
 | 
					    return Misc.toInt(this.system.carac.force?.value);
 | 
				
			||||||
@@ -323,7 +316,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
    return this.filterItemsData(it => it.type == type);
 | 
					    return this.filterItemsData(it => it.type == type);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  filterItemsData(filter) {
 | 
					  filterItemsData(filter) {
 | 
				
			||||||
    return this.items.map( it => it).filter(filter)
 | 
					    return this.items.map(it => it).filter(filter)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  filterItems(filter) {
 | 
					  filterItems(filter) {
 | 
				
			||||||
    return this.items.filter(it => filter(it))
 | 
					    return this.items.filter(it => filter(it))
 | 
				
			||||||
@@ -375,11 +368,11 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
  getDraconicOuPossession() {
 | 
					  getDraconicOuPossession() {
 | 
				
			||||||
    const possessions = this.items.filter(it => it.type == 'competencecreature' && it.system.ispossession)
 | 
					    const possessions = this.items.filter(it => it.type == 'competencecreature' && it.system.ispossession)
 | 
				
			||||||
      .sort(Misc.descending(it => it.system.niveau));
 | 
					      .sort(Misc.descending(it => it.system.niveau));
 | 
				
			||||||
    if (possessions.length>0) {
 | 
					    if (possessions.length > 0) {
 | 
				
			||||||
      return duplicate(possessions[0]);
 | 
					      return duplicate(possessions[0]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    const draconics = this.getDraconicList().filter(it => it.system.niveau >= 0);
 | 
					    const draconics = this.getDraconicList().filter(it => it.system.niveau >= 0);
 | 
				
			||||||
    if (draconics.length> 0) {
 | 
					    if (draconics.length > 0) {
 | 
				
			||||||
      return duplicate(draconics[0]);
 | 
					      return duplicate(draconics[0]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
@@ -616,7 +609,11 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
      whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
 | 
					      whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
 | 
				
			||||||
      content: "Remise à neuf de " + this.name
 | 
					      content: "Remise à neuf de " + this.name
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    if (this.isEntiteCauchemar()) {
 | 
					    const actorData = Misc.data(this);
 | 
				
			||||||
 | 
					    if (this.isEntite([ENTITE_NONINCARNE])) {
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (this.isEntite([ENTITE_INCARNE, ENTITE_BLURETTE])) {
 | 
				
			||||||
      await this.santeIncDec("endurance", this.system.sante.endurance.max - this.system.sante.endurance.value);
 | 
					      await this.santeIncDec("endurance", this.system.sante.endurance.max - this.system.sante.endurance.value);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
@@ -831,7 +828,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
  async resultCombatReveDeDragon(rollData) {
 | 
					  async resultCombatReveDeDragon(rollData) {
 | 
				
			||||||
    rollData.queues = [];
 | 
					    rollData.queues = [];
 | 
				
			||||||
    if (rollData.rolled.isEchec) {
 | 
					    if (rollData.rolled.isEchec) {
 | 
				
			||||||
      rollData.queues.push( await this.ajouterQueue());
 | 
					      rollData.queues.push(await this.ajouterQueue());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (rollData.rolled.isETotal) {
 | 
					    if (rollData.rolled.isETotal) {
 | 
				
			||||||
      rollData.queues.push(await this.ajouterQueue());
 | 
					      rollData.queues.push(await this.ajouterQueue());
 | 
				
			||||||
@@ -981,7 +978,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
      let nouveauNiveau = compValue ?? RdDItemCompetence.getNiveauBase(competence.system.categorie);
 | 
					      let nouveauNiveau = compValue ?? RdDItemCompetence.getNiveauBase(competence.system.categorie);
 | 
				
			||||||
      const tronc = RdDItemCompetence.getListTronc(competence.name).filter(it => {
 | 
					      const tronc = RdDItemCompetence.getListTronc(competence.name).filter(it => {
 | 
				
			||||||
        const comp = this.getCompetence(it);
 | 
					        const comp = this.getCompetence(it);
 | 
				
			||||||
        const niveauTr = competence? competence.system.niveau : 0;
 | 
					        const niveauTr = competence ? competence.system.niveau : 0;
 | 
				
			||||||
        return niveauTr < 0 && niveauTr < nouveauNiveau;
 | 
					        return niveauTr < 0 && niveauTr < nouveauNiveau;
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
      if (tronc.length > 0) {
 | 
					      if (tronc.length > 0) {
 | 
				
			||||||
@@ -1310,17 +1307,17 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    return Math.min(0, this.getEncombrementMax() - Math.ceil(Number(this.getEncTotal())));
 | 
					    return Math.min(0, this.getEncombrementMax() - Math.ceil(Number(this.getEncTotal())));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  getMessageSurEncombrement(){
 | 
					  getMessageSurEncombrement() {
 | 
				
			||||||
    return this.computeMalusSurEncombrement() <0 ? "Sur-Encombrement!" : "";
 | 
					    return this.computeMalusSurEncombrement() < 0 ? "Sur-Encombrement!" : "";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  getEncombrementMax() {
 | 
					  getEncombrementMax() {
 | 
				
			||||||
    switch (this.type){
 | 
					    switch (this.type) {
 | 
				
			||||||
      case  'vehicule':
 | 
					      case 'vehicule':
 | 
				
			||||||
        return this.system.capacite_encombrement;
 | 
					        return this.system.capacite_encombrement;
 | 
				
			||||||
      case 'entite':
 | 
					      case 'entite':
 | 
				
			||||||
        return 0; 
 | 
					        return 0;
 | 
				
			||||||
      default:
 | 
					      default:
 | 
				
			||||||
        return this.system.attributs.encombrement.value
 | 
					        return this.system.attributs.encombrement.value
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1342,7 +1339,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  async computeEncombrementTotalEtMalusArmure() {
 | 
					  async computeEncombrementTotalEtMalusArmure() {
 | 
				
			||||||
    if ( !this.pack ) { 
 | 
					    if (!this.pack) {
 | 
				
			||||||
      await this.computeMalusArmure();
 | 
					      await this.computeMalusArmure();
 | 
				
			||||||
      return this.computeEncombrement();
 | 
					      return this.computeEncombrement();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1620,7 +1617,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  async setSonne(sonne = true) {
 | 
					  async setSonne(sonne = true) {
 | 
				
			||||||
    if (this.isEntiteCauchemar()) {
 | 
					    if (this.isEntite()) {
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (!game.combat && sonne) {
 | 
					    if (!game.combat && sonne) {
 | 
				
			||||||
@@ -1632,7 +1629,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  getSConst() {
 | 
					  getSConst() {
 | 
				
			||||||
    if (this.isEntiteCauchemar()) {
 | 
					    if (this.isEntite()) {
 | 
				
			||||||
      return 0;
 | 
					      return 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return RdDCarac.calculSConst(this.system.carac.constitution.value)
 | 
					    return RdDCarac.calculSConst(this.system.carac.constitution.value)
 | 
				
			||||||
@@ -1747,7 +1744,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
    result.newValue = Math.max(minValue, Math.min(compteur.value + inc, compteur.max));
 | 
					    result.newValue = Math.max(minValue, Math.min(compteur.value + inc, compteur.max));
 | 
				
			||||||
    //console.log("New value ", inc, minValue, result.newValue);
 | 
					    //console.log("New value ", inc, minValue, result.newValue);
 | 
				
			||||||
    let fatigue = 0;
 | 
					    let fatigue = 0;
 | 
				
			||||||
    if (name == "endurance" && !this.isEntiteCauchemar()) {
 | 
					    if (name == "endurance" && !this.isEntite()) {
 | 
				
			||||||
      if (result.newValue == 0 && inc < 0 && !isCritique) { // perte endurance et endurance devient 0 (sauf critique) -> -1 vie
 | 
					      if (result.newValue == 0 && inc < 0 && !isCritique) { // perte endurance et endurance devient 0 (sauf critique) -> -1 vie
 | 
				
			||||||
        sante.vie.value--;
 | 
					        sante.vie.value--;
 | 
				
			||||||
        result.perteVie = true;
 | 
					        result.perteVie = true;
 | 
				
			||||||
@@ -1784,7 +1781,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  isDead() {
 | 
					  isDead() {
 | 
				
			||||||
    return !this.isEntiteCauchemar() && this.system.sante.vie.value < -this.getSConst()
 | 
					    return !this.isEntite() && this.system.sante.vie.value < -this.getSConst()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
@@ -1913,7 +1910,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  async actionItem(item, onActionItem = async ()=>{}) {
 | 
					  async actionItem(item, onActionItem = async () => { }) {
 | 
				
			||||||
    if (!item.getActionPrincipale()) return;
 | 
					    if (!item.getActionPrincipale()) return;
 | 
				
			||||||
    switch (item.type) {
 | 
					    switch (item.type) {
 | 
				
			||||||
      case 'nourritureboisson': return await this.actionNourritureboisson(item, onActionItem);
 | 
					      case 'nourritureboisson': return await this.actionNourritureboisson(item, onActionItem);
 | 
				
			||||||
@@ -1921,7 +1918,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
      case 'livre': return await this.actionLire(item);
 | 
					      case 'livre': return await this.actionLire(item);
 | 
				
			||||||
      case 'conteneur': return await item.sheet.render(true);
 | 
					      case 'conteneur': return await item.sheet.render(true);
 | 
				
			||||||
      case 'herbe': {
 | 
					      case 'herbe': {
 | 
				
			||||||
        if (item.isHerbeAPotion()){
 | 
					        if (item.isHerbeAPotion()) {
 | 
				
			||||||
          return this.dialogFabriquerPotion(item);
 | 
					          return this.dialogFabriquerPotion(item);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
@@ -2668,7 +2665,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
        selectedCarac: duplicate(this.system.carac[selected])
 | 
					        selectedCarac: duplicate(this.system.carac[selected])
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      { overwrite: false });
 | 
					      { overwrite: false });
 | 
				
			||||||
      artData.competence.system.defaut_carac = selected;
 | 
					    artData.competence.system.defaut_carac = selected;
 | 
				
			||||||
    if (!artData.forceCarac) {
 | 
					    if (!artData.forceCarac) {
 | 
				
			||||||
      artData.forceCarac = {};
 | 
					      artData.forceCarac = {};
 | 
				
			||||||
      artData.forceCarac[selected] = duplicate(this.system.carac[selected]);
 | 
					      artData.forceCarac[selected] = duplicate(this.system.carac[selected]);
 | 
				
			||||||
@@ -3289,10 +3286,10 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
      if (res) {
 | 
					      if (res) {
 | 
				
			||||||
        let malus = Misc.toInt(res[3]) - 1;
 | 
					        let malus = Misc.toInt(res[3]) - 1;
 | 
				
			||||||
        let armure = Misc.toInt(res[2]);
 | 
					        let armure = Misc.toInt(res[2]);
 | 
				
			||||||
        if (armure+malus <= 0){
 | 
					        if (armure + malus <= 0) {
 | 
				
			||||||
          itemData.system.protection = 0;
 | 
					          itemData.system.protection = 0;
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          itemData.system.protection = '' + (res[1]??'1') + 'd' + armure + malus;
 | 
					          itemData.system.protection = '' + (res[1] ?? '1') + 'd' + armure + malus;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else if (/\d+/.exec(itemData.system.protection)) {
 | 
					      else if (/\d+/.exec(itemData.system.protection)) {
 | 
				
			||||||
@@ -3325,7 +3322,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
    let encaissement = await this.jetEncaissement(rollData);
 | 
					    let encaissement = await this.jetEncaissement(rollData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.ajouterBlessure(encaissement); // Will upate the result table
 | 
					    this.ajouterBlessure(encaissement); // Will upate the result table
 | 
				
			||||||
    const perteVie = this.isEntiteCauchemar()
 | 
					    const perteVie = this.isEntite()
 | 
				
			||||||
      ? { newValue: 0 }
 | 
					      ? { newValue: 0 }
 | 
				
			||||||
      : await this.santeIncDec("vie", - encaissement.vie);
 | 
					      : await this.santeIncDec("vie", - encaissement.vie);
 | 
				
			||||||
    const perteEndurance = await this.santeIncDec("endurance", -encaissement.endurance, encaissement.critiques > 0);
 | 
					    const perteEndurance = await this.santeIncDec("endurance", -encaissement.endurance, encaissement.critiques > 0);
 | 
				
			||||||
@@ -3339,7 +3336,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
      sonne: perteEndurance.sonne,
 | 
					      sonne: perteEndurance.sonne,
 | 
				
			||||||
      jetEndurance: perteEndurance.jetEndurance,
 | 
					      jetEndurance: perteEndurance.jetEndurance,
 | 
				
			||||||
      endurance: santeOrig.endurance.value - perteEndurance.newValue,
 | 
					      endurance: santeOrig.endurance.value - perteEndurance.newValue,
 | 
				
			||||||
      vie: this.isEntiteCauchemar() ? 0 : (santeOrig.vie.value - perteVie.newValue),
 | 
					      vie: this.isEntite() ? 0 : (santeOrig.vie.value - perteVie.newValue),
 | 
				
			||||||
      show: defenderRoll?.show ?? {}
 | 
					      show: defenderRoll?.show ?? {}
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -3528,8 +3525,8 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  async accorder(entite, when = 'avant-encaissement') {
 | 
					  async accorder(entite, when = 'avant-encaissement') {
 | 
				
			||||||
    if (when != game.settings.get(SYSTEM_RDD, "accorder-entite-cauchemar")
 | 
					    if (when != game.settings.get(SYSTEM_RDD, "accorder-entite-cauchemar")
 | 
				
			||||||
      || !entite.isEntiteCauchemar()
 | 
					      || !entite.isEntite([ENTITE_INCARNE])
 | 
				
			||||||
      || entite.isEntiteCauchemarAccordee(this)) {
 | 
					      || entite.isEntiteAccordee(this)) {
 | 
				
			||||||
      return true;
 | 
					      return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    const tplData = this.system;
 | 
					    const tplData = this.system;
 | 
				
			||||||
@@ -3553,29 +3550,29 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  isEntiteCauchemar() {
 | 
					  isEntite(typeentite = []) {
 | 
				
			||||||
    return this.type == 'entite';
 | 
					    return this.type == 'entite' && (typeentite.length == 0 || typeentite.includes(this.system.typeentite));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  isEntiteCauchemarAccordee(attaquant) {
 | 
					  isEntiteAccordee(attaquant) {
 | 
				
			||||||
    if (!this.isEntiteCauchemar()) { return true; }
 | 
					    if (!this.isEntite([ENTITE_INCARNE])) { return true; }
 | 
				
			||||||
    let resonnance = this.system.sante.resonnance;
 | 
					    let resonnance = this.system.sante.resonnance;
 | 
				
			||||||
    return (resonnance.actors.find(it => it == attaquant._id));
 | 
					    return (resonnance.actors.find(it => it == attaquant.id));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  async setEntiteReveAccordee(attaquant) {
 | 
					  async setEntiteReveAccordee(attaquant) {
 | 
				
			||||||
    if (!this.isEntiteCauchemar()) {
 | 
					    if (!this.isEntite([ENTITE_INCARNE])) {
 | 
				
			||||||
      ui.notifications.error("Impossible de s'accorder à " + this.name + ": ce n'est pas une entite de cauchemer/rêve");
 | 
					      ui.notifications.error("Impossible de s'accorder à " + this.name + ": ce n'est pas une entite de cauchemer/rêve");
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    let resonnance = duplicate(this.system.sante.resonnance);
 | 
					    let resonnance = duplicate(this.system.sante.resonnance);
 | 
				
			||||||
    if (resonnance.actors.find(it => it == attaquant._id)) {
 | 
					    if (resonnance.actors.find(it => it == attaquant.id)) {
 | 
				
			||||||
      // déjà accordé
 | 
					      // déjà accordé
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    resonnance.actors.push(attaquant._id);
 | 
					    resonnance.actors.push(attaquant.id);
 | 
				
			||||||
    await this.update({ "system.sante.resonnance": resonnance });
 | 
					    await this.update({ "system.sante.resonnance": resonnance });
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -3602,7 +3599,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
      10: Math.floor(fortuneTotale / 10) % 10, // bronze
 | 
					      10: Math.floor(fortuneTotale / 10) % 10, // bronze
 | 
				
			||||||
      1: fortuneTotale % 10 // étain
 | 
					      1: fortuneTotale % 10 // étain
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    console.log('RdDActor.optimizeArgent', fortuneTotale, 'nouvelleFortune', nouvelleFortune, 'monnaie_par_valeur',parValeur);
 | 
					    console.log('RdDActor.optimizeArgent', fortuneTotale, 'nouvelleFortune', nouvelleFortune, 'monnaie_par_valeur', parValeur);
 | 
				
			||||||
    let updates = [];
 | 
					    let updates = [];
 | 
				
			||||||
    for (const [valeur, nombre] of Object.entries(nouvelleFortune)) {
 | 
					    for (const [valeur, nombre] of Object.entries(nouvelleFortune)) {
 | 
				
			||||||
      updates.push({ _id: parValeur[valeur].id, 'system.quantite': nombre });
 | 
					      updates.push({ _id: parValeur[valeur].id, 'system.quantite': nombre });
 | 
				
			||||||
@@ -3671,7 +3668,8 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
      RdDActor.remoteActorCall({
 | 
					      RdDActor.remoteActorCall({
 | 
				
			||||||
        userId: Misc.connectedGMOrUser(),
 | 
					        userId: Misc.connectedGMOrUser(),
 | 
				
			||||||
        actorId: this.id,
 | 
					        actorId: this.id,
 | 
				
			||||||
        method: 'ajouterDeniers', args: [gain, fromActorId] });
 | 
					        method: 'ajouterDeniers', args: [gain, fromActorId]
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
      const fromActor = game.actors.get(fromActorId)
 | 
					      const fromActor = game.actors.get(fromActorId)
 | 
				
			||||||
@@ -3706,8 +3704,9 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
      RdDActor.remoteActorCall({
 | 
					      RdDActor.remoteActorCall({
 | 
				
			||||||
        actorId: achat.vendeurId ?? achat.acheteurId,
 | 
					        actorId: achat.vendeurId ?? achat.acheteurId,
 | 
				
			||||||
        method: 'achatVente',
 | 
					        method: 'achatVente',
 | 
				
			||||||
        args: [achat] },
 | 
					        args: [achat]
 | 
				
			||||||
        );
 | 
					      },
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -4078,7 +4077,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  async consommerPotion(potion, onActionItem = async () => {}) {
 | 
					  async consommerPotion(potion, onActionItem = async () => { }) {
 | 
				
			||||||
    const potionData = potion
 | 
					    const potionData = potion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (potionData.system.categorie.includes('Soin')) {
 | 
					    if (potionData.system.categorie.includes('Soin')) {
 | 
				
			||||||
@@ -4114,7 +4113,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  getEffectByLabel(label) {    
 | 
					  getEffectByLabel(label) {
 | 
				
			||||||
    return this.getActiveEffects().find(it => it.system?.label == label);
 | 
					    return this.getActiveEffects().find(it => it.system?.label == label);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -4125,7 +4124,7 @@ export class RdDActor extends Actor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  async setStatusEffect(label, status, updates = {}) {
 | 
					  async setStatusEffect(label, status, updates = {}) {
 | 
				
			||||||
    if (this.isEntiteCauchemar() || this.type == 'vehicule') {
 | 
					    if (this.isEntite() || this.type == 'vehicule') {
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    console.log("setStatusEffect", label, status, updates)
 | 
					    console.log("setStatusEffect", label, status, updates)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,3 +3,7 @@ export const SYSTEM_SOCKET_ID = 'system.foundryvtt-reve-de-dragon';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export const HIDE_DICE = 'hide';
 | 
					export const HIDE_DICE = 'hide';
 | 
				
			||||||
export const SHOW_DICE = 'show';
 | 
					export const SHOW_DICE = 'show';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const ENTITE_INCARNE = 'incarne';
 | 
				
			||||||
 | 
					export const ENTITE_NONINCARNE = 'nonincarne';
 | 
				
			||||||
 | 
					export const ENTITE_BLURETTE = 'blurette';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -55,7 +55,7 @@ export class DialogItemAchat extends Dialog {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  static prepareVenteData(buttonAcheter, vendeurId, vendeur, acheteur) {
 | 
					  static prepareVenteData(buttonAcheter, vendeurId, vendeur, acheteur) {
 | 
				
			||||||
    const jsondata = buttonAcheter.attributes['data-jsondata']?.value;
 | 
					    const jsondata = buttonAcheter.attributes['data-jsondata']?.value;
 | 
				
			||||||
    const prixLot = buttonAcheter.attributes['data-prixLot']?.value ?? 0;
 | 
					    const prixLot = parseInt(buttonAcheter.attributes['data-prixLot']?.value ?? 0);
 | 
				
			||||||
    let venteData = {
 | 
					    let venteData = {
 | 
				
			||||||
      item: JSON.parse(jsondata),
 | 
					      item: JSON.parse(jsondata),
 | 
				
			||||||
      vendeurId: vendeurId,
 | 
					      vendeurId: vendeurId,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
import { ChatUtility } from "./chat-utility.js";
 | 
					import { ChatUtility } from "./chat-utility.js";
 | 
				
			||||||
import { HIDE_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
 | 
					import { ENTITE_INCARNE, ENTITE_NONINCARNE, HIDE_DICE, SYSTEM_RDD, SYSTEM_SOCKET_ID } from "./constants.js";
 | 
				
			||||||
import { Grammar } from "./grammar.js";
 | 
					import { Grammar } from "./grammar.js";
 | 
				
			||||||
import { RdDItemArme } from "./item-arme.js";
 | 
					import { RdDItemArme } from "./item-arme.js";
 | 
				
			||||||
import { RdDItemCompetence } from "./item-competence.js";
 | 
					import { RdDItemCompetence } from "./item-competence.js";
 | 
				
			||||||
@@ -320,7 +320,7 @@ export class RdDCombatManager extends Combat {
 | 
				
			|||||||
      initOffset = 10;
 | 
					      initOffset = 10;
 | 
				
			||||||
      caracForInit = combatant.actor.getReveActuel();
 | 
					      caracForInit = combatant.actor.getReveActuel();
 | 
				
			||||||
      initInfo = "Possession"
 | 
					      initInfo = "Possession"
 | 
				
			||||||
    } else if (action.name == 'autre') {
 | 
					    } else if (action.action == 'autre') {
 | 
				
			||||||
      initOffset = 2;
 | 
					      initOffset = 2;
 | 
				
			||||||
      initInfo = "Autre Action"
 | 
					      initInfo = "Autre Action"
 | 
				
			||||||
    } else if (action.action == 'haut-reve') {
 | 
					    } else if (action.action == 'haut-reve') {
 | 
				
			||||||
@@ -455,9 +455,9 @@ export class RdDCombat {
 | 
				
			|||||||
        : "Vous devez choisir une cible à attaquer!");
 | 
					        : "Vous devez choisir une cible à attaquer!");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
      const defender = target?.actor
 | 
					      const defender = target?.actor;
 | 
				
			||||||
      const defenderTokenId = target?.id
 | 
					      const defenderTokenId = target?.id;
 | 
				
			||||||
      if ( defender.type == 'entite' && defender.system.definition.typeentite == 'nonincarne') {
 | 
					      if ( defender.type == 'entite' && defender.system.definition.typeentite == ENTITE_NONINCARNE) {
 | 
				
			||||||
        ui.notifications.warn("Vous ne pouvez pas cibler une entité non incarnée !!!!");
 | 
					        ui.notifications.warn("Vous ne pouvez pas cibler une entité non incarnée !!!!");
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        return this.create(attacker, defender, defenderTokenId, target)
 | 
					        return this.create(attacker, defender, defenderTokenId, target)
 | 
				
			||||||
@@ -799,7 +799,7 @@ export class RdDCombat {
 | 
				
			|||||||
  async _onAttaqueNormale(attackerRoll) {
 | 
					  async _onAttaqueNormale(attackerRoll) {
 | 
				
			||||||
    console.log("RdDCombat.onAttaqueNormale >>>", attackerRoll);
 | 
					    console.log("RdDCombat.onAttaqueNormale >>>", attackerRoll);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    attackerRoll.dmg = RdDBonus.dmg(attackerRoll, this.attacker.getBonusDegat(), this.defender.isEntiteCauchemar());
 | 
					    attackerRoll.dmg = RdDBonus.dmg(attackerRoll, this.attacker.getBonusDegat(), this.defender.isEntite());
 | 
				
			||||||
    let defenderRoll = { attackerRoll: attackerRoll, passeArme: attackerRoll.passeArme, show: {} }
 | 
					    let defenderRoll = { attackerRoll: attackerRoll, passeArme: attackerRoll.passeArme, show: {} }
 | 
				
			||||||
    attackerRoll.show = {
 | 
					    attackerRoll.show = {
 | 
				
			||||||
      cible: this.target ? this.defender.system.name : 'la cible',
 | 
					      cible: this.target ? this.defender.system.name : 'la cible',
 | 
				
			||||||
@@ -1248,8 +1248,8 @@ export class RdDCombat {
 | 
				
			|||||||
  async accorderEntite(when = 'avant-encaissement') {
 | 
					  async accorderEntite(when = 'avant-encaissement') {
 | 
				
			||||||
    if (when != game.settings.get(SYSTEM_RDD, "accorder-entite-cauchemar")
 | 
					    if (when != game.settings.get(SYSTEM_RDD, "accorder-entite-cauchemar")
 | 
				
			||||||
      || this.defender == undefined
 | 
					      || this.defender == undefined
 | 
				
			||||||
      || !this.defender.isEntiteCauchemar()
 | 
					      || !this.defender.isEntite([ENTITE_INCARNE])
 | 
				
			||||||
      || this.defender.isEntiteCauchemarAccordee(this.attacker)) {
 | 
					      || this.defender.isEntiteAccordee(this.attacker)) {
 | 
				
			||||||
      return true;
 | 
					      return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,19 +1,29 @@
 | 
				
			|||||||
 | 
					import { RdDActor } from "./actor.js";
 | 
				
			||||||
import { Misc } from "./misc.js";
 | 
					import { Misc } from "./misc.js";
 | 
				
			||||||
import { RdDDice } from "./rdd-dice.js";
 | 
					import { RdDDice } from "./rdd-dice.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const words = [ 'pore', 'pre', 'flor', 'lane', 'turlu', 'pin', 'a', 'alph', 'i', 'onse', 'iane', 'ane', 'zach', 'arri', 'ba', 'bo', 'bi', 
 | 
					const words = ['pore', 'pre', 'flor', 'lane', 'turlu', 'pin', 'a', 'alph', 'i', 'onse', 'iane', 'ane', 'zach', 'arri', 'ba', 'bo', 'bi',
 | 
				
			||||||
              'alta', 'par', 'pir', 'zor', 'zir', 'de', 'pol', 'tran', 'no', 'la', 'al' , 'pul', 'one', 'ner', 'nur', 'mac', 'mery',
 | 
					  'alta', 'par', 'pir', 'zor', 'zir', 'de', 'pol', 'tran', 'no', 'la', 'al', 'pul', 'one', 'ner', 'nur', 'mac', 'mery',
 | 
				
			||||||
              'cat', 'do', 'di', 'der', 'er', 'el', 'far', 'fer', 'go', 'guer', 'hot', 'jor', 'jar', 'ji', 'kri', 'ket', 'lor', 'hur',
 | 
					  'cat', 'do', 'di', 'der', 'er', 'el', 'far', 'fer', 'go', 'guer', 'hot', 'jor', 'jar', 'ji', 'kri', 'ket', 'lor', 'hur',
 | 
				
			||||||
              'lar', 'lir', 'lu', 'pot', 'pro', 'pra', 'pit', 'qua', 'qui', 're', 'ral', 'sal', 'sen', 'ted', 'to', 'ta', 'lars', 'ver',
 | 
					  'lar', 'lir', 'lu', 'pot', 'pro', 'pra', 'pit', 'qua', 'qui', 're', 'ral', 'sal', 'sen', 'ted', 'to', 'ta', 'lars', 'ver',
 | 
				
			||||||
              'vin', 'ov', 'wal', 'ry', 'ly', '' ];
 | 
					  'vin', 'ov', 'wal', 'ry', 'ly', ''];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* -------------------------------------------- */
 | 
					/* -------------------------------------------- */
 | 
				
			||||||
export class RdDNameGen {
 | 
					export class RdDNameGen {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static async getName( msg, params ) {
 | 
					  static async getName(msg, params) {
 | 
				
			||||||
    let name = Misc.upperFirst( await RdDDice.rollOneOf(words) + await RdDDice.rollOneOf(words) )
 | 
					    const html = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-command-nom.html`, {
 | 
				
			||||||
    //console.log(name);
 | 
					      nom: Misc.upperFirst(await RdDDice.rollOneOf(words) + await RdDDice.rollOneOf(words))
 | 
				
			||||||
    ChatMessage.create( { content: `Nom : ${name}`, whisper: ChatMessage.getWhisperRecipients("GM") } );
 | 
					    });
 | 
				
			||||||
 | 
					    ChatMessage.create({ content: html, whisper: ChatMessage.getWhisperRecipients("GM") });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static async onCreerActeur(event) {
 | 
				
			||||||
 | 
					    const button = event.currentTarget;
 | 
				
			||||||
 | 
					    await RdDActor.create({
 | 
				
			||||||
 | 
					        name: button.attributes['data-nom'].value,
 | 
				
			||||||
 | 
					        type: button.attributes['data-type'].value
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {renderSheet: true});
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					import { ENTITE_BLURETTE, ENTITE_INCARNE, ENTITE_NONINCARNE } from "./constants";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Extend the base Dialog entity by defining a custom window to perform roll.
 | 
					 * Extend the base Dialog entity by defining a custom window to perform roll.
 | 
				
			||||||
 * @extends {Dialog}
 | 
					 * @extends {Dialog}
 | 
				
			||||||
@@ -7,15 +9,19 @@ export class RdDEncaisser extends Dialog {
 | 
				
			|||||||
  /* -------------------------------------------- */
 | 
					  /* -------------------------------------------- */
 | 
				
			||||||
  constructor(html, actor) {
 | 
					  constructor(html, actor) {
 | 
				
			||||||
    // Common conf
 | 
					    // Common conf
 | 
				
			||||||
    const buttonsCreatures = {
 | 
					    let buttons = {};
 | 
				
			||||||
      "mortel": { label: "Mortel", callback: html => this.performEncaisser("mortel") },
 | 
					    if (!actor.isEntite()){
 | 
				
			||||||
      "non-mortel": { label: "Non-mortel", callback: html => this.performEncaisser("non-mortel") },
 | 
					      buttons = {
 | 
				
			||||||
      "sonne": { label: "Sonné", callback: html => this.actor.setSonne() },
 | 
					        "mortel": { label: "Mortel", callback: html => this.performEncaisser("mortel") },
 | 
				
			||||||
    };
 | 
					        "non-mortel": { label: "Non-mortel", callback: html => this.performEncaisser("non-mortel") },
 | 
				
			||||||
    const buttonsEntitesCauchemar = {
 | 
					        "sonne": { label: "Sonné", callback: html => this.actor.setSonne() },
 | 
				
			||||||
      "cauchemar": { label: "cauchemar", callback: html => this.performEncaisser("cauchemar") }
 | 
					      };
 | 
				
			||||||
    };
 | 
					    }
 | 
				
			||||||
    const buttons = actor.isEntiteCauchemar() ? buttonsEntitesCauchemar : buttonsCreatures;
 | 
					    else if (actor.isEntite([ENTITE_BLURETTE, ENTITE_INCARNE])){
 | 
				
			||||||
 | 
					      buttons = {
 | 
				
			||||||
 | 
					        "cauchemar": { label: "cauchemar", callback: html => this.performEncaisser("cauchemar") }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let dialogConf = {
 | 
					    let dialogConf = {
 | 
				
			||||||
      title: "Jet d'Encaissement",
 | 
					      title: "Jet d'Encaissement",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,6 +11,7 @@ import { RdDDice } from "./rdd-dice.js";
 | 
				
			|||||||
import { RdDItem } from "./item.js";
 | 
					import { RdDItem } from "./item.js";
 | 
				
			||||||
import { Monnaie } from "./item-monnaie.js";
 | 
					import { Monnaie } from "./item-monnaie.js";
 | 
				
			||||||
import { RdDPossession } from "./rdd-possession.js";
 | 
					import { RdDPossession } from "./rdd-possession.js";
 | 
				
			||||||
 | 
					import { RdDNameGen } from "./rdd-namegen.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* -------------------------------------------- */
 | 
					/* -------------------------------------------- */
 | 
				
			||||||
// This table starts at 0 -> niveau -10
 | 
					// This table starts at 0 -> niveau -10
 | 
				
			||||||
@@ -703,6 +704,7 @@ export class RdDUtility {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // gestion bouton tchat Acheter
 | 
					    // gestion bouton tchat Acheter
 | 
				
			||||||
    html.on("click", '.button-acheter', event => DialogItemAchat.onButtonAcheter(event));
 | 
					    html.on("click", '.button-acheter', event => DialogItemAchat.onButtonAcheter(event));
 | 
				
			||||||
 | 
					    html.on("click", '.button-creer-acteur', event => RdDNameGen.onCreerActeur(event));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Gestion du bouton payer
 | 
					    // Gestion du bouton payer
 | 
				
			||||||
    html.on("click", '.payer-button', event => {
 | 
					    html.on("click", '.payer-button', event => {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@
 | 
				
			|||||||
  "url": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/",
 | 
					  "url": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/",
 | 
				
			||||||
  "license": "LICENSE.txt",
 | 
					  "license": "LICENSE.txt",
 | 
				
			||||||
  "flags": {},
 | 
					  "flags": {},
 | 
				
			||||||
  "version": "10.0.5",
 | 
					  "version": "10.0.6",
 | 
				
			||||||
  "scripts": [],
 | 
					  "scripts": [],
 | 
				
			||||||
  "esmodules": [
 | 
					  "esmodules": [
 | 
				
			||||||
    "module/rdd-main.js"
 | 
					    "module/rdd-main.js"
 | 
				
			||||||
@@ -500,7 +500,7 @@
 | 
				
			|||||||
  "relationships": {},
 | 
					  "relationships": {},
 | 
				
			||||||
  "socket": true,
 | 
					  "socket": true,
 | 
				
			||||||
  "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v10/system.json",
 | 
					  "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v10/system.json",
 | 
				
			||||||
  "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.0.5.zip",
 | 
					  "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.0.6.zip",
 | 
				
			||||||
  "protected": false,
 | 
					  "protected": false,
 | 
				
			||||||
  "gridDistance": 1,
 | 
					  "gridDistance": 1,
 | 
				
			||||||
  "gridUnits": "m",
 | 
					  "gridUnits": "m",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -65,6 +65,7 @@
 | 
				
			|||||||
                {{#select data.definition.typeentite}}
 | 
					                {{#select data.definition.typeentite}}
 | 
				
			||||||
                <option value="incarne">Incarnée</option>
 | 
					                <option value="incarne">Incarnée</option>
 | 
				
			||||||
                <option value="nonincarne">Non Incarnée</option>
 | 
					                <option value="nonincarne">Non Incarnée</option>
 | 
				
			||||||
 | 
					                <option value="blurette">Blurete</option>
 | 
				
			||||||
                {{/select}}
 | 
					                {{/select}}
 | 
				
			||||||
              </select>
 | 
					              </select>
 | 
				
			||||||
            </li>
 | 
					            </li>
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										16
									
								
								templates/chat-command-nom.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								templates/chat-command-nom.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					<h4>Proposition de nom: {{nom}}</h4>
 | 
				
			||||||
 | 
					<span class="chat-card-button-area">
 | 
				
			||||||
 | 
					  <a class="button-creer-acteur chat-card-button"
 | 
				
			||||||
 | 
					    data-nom='{{nom}}'
 | 
				
			||||||
 | 
					    data-type='personnage'
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					  Créer un Personnage</a>
 | 
				
			||||||
 | 
					</span>
 | 
				
			||||||
 | 
					<span class="chat-card-button-area">
 | 
				
			||||||
 | 
					  <a class="button-creer-acteur chat-card-button"
 | 
				
			||||||
 | 
					    data-nom='{{nom}}'
 | 
				
			||||||
 | 
					    data-type='creature'>
 | 
				
			||||||
 | 
					  Créer une créature</a>
 | 
				
			||||||
 | 
					</span>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Reference in New Issue
	
	Block a user