Gestion intensite
This commit is contained in:
		
							
								
								
									
										144
									
								
								modules/imperium5-actor-pm-sheet.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								modules/imperium5-actor-pm-sheet.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,144 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Extend the basic ActorSheet with some very simple modifications
 | 
			
		||||
 * @extends {ActorSheet}
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import { Imperium5Utility } from "./imperium5-utility.js";
 | 
			
		||||
import { Imperium5RollDialog } from "./imperium5-roll-dialog.js";
 | 
			
		||||
 | 
			
		||||
/* -------------------------------------------- */
 | 
			
		||||
export class Imperium5ActorPMSheet extends ActorSheet {
 | 
			
		||||
 | 
			
		||||
  /** @override */
 | 
			
		||||
  static get defaultOptions() {
 | 
			
		||||
 | 
			
		||||
    return mergeObject(super.defaultOptions, {
 | 
			
		||||
      classes: ["fvtt-imperium5", "sheet", "actor"],
 | 
			
		||||
      template: "systems/fvtt-imperium5/templates/actor-pm-sheet.html",
 | 
			
		||||
      width: 720,
 | 
			
		||||
      height: 760,
 | 
			
		||||
      tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "combat" }],
 | 
			
		||||
      dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
 | 
			
		||||
      editScore: true
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async getData() {    
 | 
			
		||||
    let actorData = duplicate(this.object.system)
 | 
			
		||||
 | 
			
		||||
    let formData = {
 | 
			
		||||
      title: this.title,
 | 
			
		||||
      id: this.actor.id,
 | 
			
		||||
      type: this.actor.type,
 | 
			
		||||
      img: this.actor.img,
 | 
			
		||||
      name: this.actor.name,
 | 
			
		||||
      editable: this.isEditable,
 | 
			
		||||
      cssClass: this.isEditable ? "editable" : "locked",
 | 
			
		||||
      system: actorData,
 | 
			
		||||
      archetype: this.actor.getArchetype(),
 | 
			
		||||
      specialites: this.actor.getSpecialites(),
 | 
			
		||||
      familiarites: this.actor.getFamiliarites(),
 | 
			
		||||
      nature: this.actor.getNatureProfonde(),
 | 
			
		||||
      traits: this.actor.getTraits(),
 | 
			
		||||
      symbioses: this.actor.getSymbioses(),
 | 
			
		||||
      equipements: this.actor.getEquipements(),
 | 
			
		||||
      capacites: this.actor.getCapacites(),
 | 
			
		||||
      singularites: this.actor.getSingularites(),
 | 
			
		||||
      contacts: this.actor.getContacts(),
 | 
			
		||||
      effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
 | 
			
		||||
      limited: this.object.limited,
 | 
			
		||||
      options: this.options,
 | 
			
		||||
      owner: this.document.isOwner,
 | 
			
		||||
      editScore: this.options.editScore,
 | 
			
		||||
      isGM: game.user.isGM
 | 
			
		||||
    }
 | 
			
		||||
    this.formData = formData;
 | 
			
		||||
 | 
			
		||||
    console.log("PM : ", formData, this.object);
 | 
			
		||||
    return formData;
 | 
			
		||||
  }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  /** @override */
 | 
			
		||||
  activateListeners(html) {
 | 
			
		||||
    super.activateListeners(html);
 | 
			
		||||
 | 
			
		||||
    // Everything below here is only needed if the sheet is editable
 | 
			
		||||
    if (!this.options.editable) return;
 | 
			
		||||
    
 | 
			
		||||
    html.bind("keydown", function(e) { // Ignore Enter in actores sheet
 | 
			
		||||
      if (e.keyCode === 13) return false;
 | 
			
		||||
    });  
 | 
			
		||||
 | 
			
		||||
    // Update Inventory Item
 | 
			
		||||
    html.find('.item-edit').click(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".item");
 | 
			
		||||
      let itemId = li.data("item-id");
 | 
			
		||||
      const item = this.actor.items.get( itemId );
 | 
			
		||||
      item.sheet.render(true);
 | 
			
		||||
    });
 | 
			
		||||
    // Delete Inventory Item
 | 
			
		||||
    html.find('.item-delete').click(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".item");
 | 
			
		||||
      Imperium5Utility.confirmDelete(this, li);
 | 
			
		||||
    });
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    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('.lock-unlock-sheet').click((event) => {
 | 
			
		||||
      this.options.editScore = !this.options.editScore;
 | 
			
		||||
      this.render(true);
 | 
			
		||||
    });    
 | 
			
		||||
    html.find('.item-link a').click((event) => {
 | 
			
		||||
      const itemId = $(event.currentTarget).data("item-id")
 | 
			
		||||
      const item = this.actor.getOwnedItem(itemId);
 | 
			
		||||
      item.sheet.render(true);
 | 
			
		||||
    });    
 | 
			
		||||
    html.find('.item-equip').click(ev => {
 | 
			
		||||
      const li = $(ev.currentTarget).parents(".item");
 | 
			
		||||
      this.actor.equipItem( li.data("item-id") );
 | 
			
		||||
      this.render(true);      
 | 
			
		||||
    });
 | 
			
		||||
    html.find('.update-field').change(ev => {
 | 
			
		||||
      const fieldName = $(ev.currentTarget).data("field-name");
 | 
			
		||||
      let value = Number(ev.currentTarget.value);
 | 
			
		||||
      this.actor.update( { [`${fieldName}`]: value } );
 | 
			
		||||
    });    
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  /** @override */
 | 
			
		||||
  setPosition(options = {}) {
 | 
			
		||||
    const position = super.setPosition(options);
 | 
			
		||||
    const sheetBody = this.element.find(".sheet-body");
 | 
			
		||||
    const bodyHeight = position.height - 192;
 | 
			
		||||
    sheetBody.css("height", bodyHeight);
 | 
			
		||||
    return position;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async _onDropItemUNUSED(event, dragData) {
 | 
			
		||||
    let item = await Imperium5Utility.searchItem( dragData)
 | 
			
		||||
    if (item == undefined) {
 | 
			
		||||
      item = this.actor.items.get( dragData.data._id )
 | 
			
		||||
    }
 | 
			
		||||
    //this.actor.preprocessItem( event, item, true )
 | 
			
		||||
    super._onDropItem(event, dragData)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  /** @override */
 | 
			
		||||
  _updateObject(event, formData) {
 | 
			
		||||
    // Update the Actor
 | 
			
		||||
    return this.object.update(formData);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -59,32 +59,6 @@ export class Imperium5ActorSheet extends ActorSheet {
 | 
			
		||||
    return formData;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async openGenericRoll() {
 | 
			
		||||
    let rollData = Imperium5Utility.getBasicRollData()
 | 
			
		||||
    rollData.alias = "Dice Pool Roll", 
 | 
			
		||||
    rollData.mode  = "generic"
 | 
			
		||||
    rollData.title = `Dice Pool Roll`
 | 
			
		||||
    rollData.img = "icons/dice/d12black.svg"
 | 
			
		||||
    
 | 
			
		||||
    let rollDialog = await Imperium5RollDialog.create( this.actor, rollData);
 | 
			
		||||
    rollDialog.render( true );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async rollIDR( itemId, diceValue) { 
 | 
			
		||||
    let item = this.actor.items.get( itemId) ?? {name: "Unknown"}
 | 
			
		||||
    let myRoll = new Roll(diceValue+"x").roll({ async: false })
 | 
			
		||||
    await Imperium5Utility.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
 | 
			
		||||
    let chatData = {
 | 
			
		||||
      user: game.user.id,
 | 
			
		||||
      rollMode: game.settings.get("core", "rollMode"),
 | 
			
		||||
      whisper: [game.user.id].concat(ChatMessage.getWhisperRecipients('GM')),
 | 
			
		||||
      content: `${this.actor.name} has roll IDR for ${item.name} : ${myRoll.total}`
 | 
			
		||||
    }
 | 
			
		||||
    ChatMessage.create(chatData)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  /** @override */
 | 
			
		||||
  activateListeners(html) {
 | 
			
		||||
@@ -183,7 +157,6 @@ export class Imperium5ActorSheet extends ActorSheet {
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  async _onDropItemUNUSED(event, dragData) {
 | 
			
		||||
    console.log(">>>>>> DROPPED!!!!")
 | 
			
		||||
    let item = await Imperium5Utility.searchItem( dragData)
 | 
			
		||||
    if (item == undefined) {
 | 
			
		||||
      item = this.actor.items.get( dragData.data._id )
 | 
			
		||||
 
 | 
			
		||||
@@ -111,6 +111,10 @@ export class Imperium5Actor extends Actor {
 | 
			
		||||
    let item = duplicate(this.items.filter( it => it.type == "contact") || [] )
 | 
			
		||||
    return item 
 | 
			
		||||
  }
 | 
			
		||||
  getResources() {
 | 
			
		||||
    let item = duplicate(this.items.filter( it => it.type == "equipement" || it.type == "singularite" || it.type == "capacite" || it.type == "contact") || [] )
 | 
			
		||||
    return item 
 | 
			
		||||
  }
 | 
			
		||||
  getUnusedParadigmes() {
 | 
			
		||||
    let paraList = []
 | 
			
		||||
    for(let k in this.system.paradigmes) {
 | 
			
		||||
@@ -276,6 +280,8 @@ export class Imperium5Actor extends Actor {
 | 
			
		||||
    rollData.img = this.img
 | 
			
		||||
    rollData.capacites = this.getUnusedCapacites()
 | 
			
		||||
    rollData.paradigmes = this.getUnusedParadigmes()
 | 
			
		||||
    rollData.ressources = this.getResources()
 | 
			
		||||
    rollData.selectedRessources = []
 | 
			
		||||
    rollData.selectedParadigme = "none"
 | 
			
		||||
    rollData.karma = this.system.karma.value
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,7 @@
 | 
			
		||||
import { Imperium5Actor } from "./imperium5-actor.js";
 | 
			
		||||
import { Imperium5ItemSheet } from "./imperium5-item-sheet.js";
 | 
			
		||||
import { Imperium5ActorSheet } from "./imperium5-actor-sheet.js";
 | 
			
		||||
import { Imperium5ActorPMSheet } from "./imperium5-actor-pm-sheet.js";
 | 
			
		||||
import { Imperium5Utility } from "./imperium5-utility.js";
 | 
			
		||||
import { Imperium5Combat } from "./imperium5-combat.js";
 | 
			
		||||
import { Imperium5Item } from "./imperium5-item.js";
 | 
			
		||||
@@ -50,6 +51,7 @@ Hooks.once("init", async function () {
 | 
			
		||||
  // Register sheet application classes
 | 
			
		||||
  Actors.unregisterSheet("core", ActorSheet)
 | 
			
		||||
  Actors.registerSheet("fvtt-imperium5", Imperium5ActorSheet, { types: ["character"], makeDefault: true })
 | 
			
		||||
  Actors.registerSheet("fvtt-imperium5", Imperium5ActorPMSheet, { types: ["pm"], makeDefault: true })
 | 
			
		||||
 | 
			
		||||
  Items.unregisterSheet("core", ItemSheet)
 | 
			
		||||
  Items.registerSheet("fvtt-imperium5", Imperium5ItemSheet, { makeDefault: true } )
 | 
			
		||||
 
 | 
			
		||||
@@ -68,8 +68,8 @@ export class Imperium5RollDialog extends Dialog {
 | 
			
		||||
      this.rollData.useArchetype = event.currentTarget.checked
 | 
			
		||||
      this.updatePCPool()
 | 
			
		||||
    })    
 | 
			
		||||
    html.find('#select-use-aide').change(async (event) =>  {
 | 
			
		||||
      this.rollData.useAide = event.currentTarget.checked
 | 
			
		||||
    html.find('#select-aide-pj').change(async (event) =>  {
 | 
			
		||||
      this.rollData.nbAide = Number(event.currentTarget.value)
 | 
			
		||||
      this.updatePCPool()
 | 
			
		||||
    })
 | 
			
		||||
    html.find('#select-use-karma').change(async (event) =>  {
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@ export class Imperium5Utility {
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async init() {
 | 
			
		||||
    Hooks.on('renderChatLog', (log, html, data) => Imperium5Utility.chatListeners(html));
 | 
			
		||||
    Hooks.on("getChatLogEntryContext", (html, options) => Imperium5Utility.chatRollMenu(html, options))
 | 
			
		||||
 | 
			
		||||
    Hooks.on("getCombatTrackerEntryContext", (html, options) => {
 | 
			
		||||
      Imperium5Utility.pushInitiativeOptions(html, options);
 | 
			
		||||
@@ -72,9 +73,9 @@ export class Imperium5Utility {
 | 
			
		||||
      default: false,
 | 
			
		||||
      type: Boolean
 | 
			
		||||
    })
 | 
			
		||||
    game.settings.register("fvtt-imperium5", "use-singularite", {
 | 
			
		||||
      name: "Utilisation complémentaire des Singularités",
 | 
			
		||||
      hint: "Si coché, les Singularités peuvent permettre de réduire de 1 la valeur d'un dé",
 | 
			
		||||
    game.settings.register("fvtt-imperium5", "use-specialite", {
 | 
			
		||||
      name: "Utilisation complémentaire des Spécialités",
 | 
			
		||||
      hint: "Si coché, les Spécialités peuvent permettre de réduire de 1 la valeur d'un dé",
 | 
			
		||||
      scope: "world",
 | 
			
		||||
      config: true,
 | 
			
		||||
      default: false,
 | 
			
		||||
@@ -129,11 +130,11 @@ export class Imperium5Utility {
 | 
			
		||||
      this.applyParadigme(rollData, paraKey)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    html.on("click", '.apply-singularite', event => {
 | 
			
		||||
    html.on("click", '.apply-specialite', event => {
 | 
			
		||||
      let resultIndex = $(event.currentTarget).data("result-index")
 | 
			
		||||
      let rollData = this.getRollDataFromMessage(event)
 | 
			
		||||
      rollData.previousMessageId = Imperium5Utility.findChatMessageId(event.currentTarget)
 | 
			
		||||
      this.applySingularite(rollData, resultIndex)
 | 
			
		||||
      this.applySpecialite(rollData, resultIndex)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    html.on("change", '.transfer-success', event => {
 | 
			
		||||
@@ -143,6 +144,23 @@ export class Imperium5Utility {
 | 
			
		||||
      this.applySuccessTransfer(rollData, nbSuccess)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    html.on("change", '.select-ressource', async event => {
 | 
			
		||||
      // Filter / remove the ressource
 | 
			
		||||
      let rollData = this.getRollDataFromMessage(event)
 | 
			
		||||
      let ressource = rollData.ressources.find(r => r._id == event.currentTarget.value)
 | 
			
		||||
      rollData.selectedRessources.push(ressource)
 | 
			
		||||
      rollData.ressources = rollData.ressources.filter(r => r._id != event.currentTarget.value)
 | 
			
		||||
      rollData.realSuccessPC--;
 | 
			
		||||
      this.computeIntensite(rollData)
 | 
			
		||||
      // Update the roll data in the message
 | 
			
		||||
      rollData.previousMessageId = Imperium5Utility.findChatMessageId(event.currentTarget)
 | 
			
		||||
      let msg = await this.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
        content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData)
 | 
			
		||||
      })
 | 
			
		||||
      msg.setFlag("world", "imperium5-roll-data", rollData)
 | 
			
		||||
      this.removeChatMessageId(rollData.previousMessageId)  
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -237,24 +255,22 @@ export class Imperium5Utility {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static updateRollData(rollData) {
 | 
			
		||||
 | 
			
		||||
    let id = rollData.rollId;
 | 
			
		||||
    let oldRollData = this.rollDataStore[id] || {};
 | 
			
		||||
    let newRollData = mergeObject(oldRollData, rollData);
 | 
			
		||||
    this.rollDataStore[id] = newRollData;
 | 
			
		||||
  static chatRollMenu(html, options) {
 | 
			
		||||
    let canApply = li => canvas.tokens.controlled.length && li.find(".imperium5-roll").length
 | 
			
		||||
    let canApplyIntensite = function (li) {
 | 
			
		||||
      let message = game.messages.get(li.attr("data-message-id"))
 | 
			
		||||
      let rollData = message.getFlag("world", "imperium5-roll-data")
 | 
			
		||||
      return (rollData.currentIntensite > 0)
 | 
			
		||||
    }
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static saveRollData(rollData) {
 | 
			
		||||
    game.socket.emit("system.fvtt-imperium5", {
 | 
			
		||||
      name: "msg_update_roll", data: rollData
 | 
			
		||||
    }); // Notify all other clients of the roll    
 | 
			
		||||
    this.updateRollData(rollData);
 | 
			
		||||
    options.push(
 | 
			
		||||
      {
 | 
			
		||||
        name: "Ajouer +3 (1 point de Bonne Aventure)",
 | 
			
		||||
        icon: "<i class='fas fa-user-plus'></i>",
 | 
			
		||||
        condition: canApply && canApplyIntensite,
 | 
			
		||||
        callback: li => Imperium5Utility.applyBonneAventureRoll(li, -1, "+3")
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static getRollData(id) {
 | 
			
		||||
    return this.rollDataStore[id];
 | 
			
		||||
    )
 | 
			
		||||
    return options
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -330,7 +346,7 @@ export class Imperium5Utility {
 | 
			
		||||
      let capa = rollData.capacites.find(c => c._id == rollData.usedCapacite)
 | 
			
		||||
      capaDice = capa.system.aide
 | 
			
		||||
    }
 | 
			
		||||
    let val = rollData.ame.value + capaDice + ((rollData.useKarma) ? 1 : 0) + ((rollData.useArchetype) ? 1 : 0) + ((rollData.useAide) ? 1 : 0) + rollData.ameMalus
 | 
			
		||||
    let val = rollData.ame.value + capaDice + ((rollData.useKarma) ? 1 : 0) + ((rollData.useArchetype) ? 1 : 0) + rollData.nbAide + rollData.ameMalus
 | 
			
		||||
    return Math.max(val, 0)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -350,8 +366,21 @@ export class Imperium5Utility {
 | 
			
		||||
    if (rollData.useEntropieReussite && myRoll.terms[2].results[0].result == 7) {
 | 
			
		||||
      rollData.successGM++
 | 
			
		||||
    }
 | 
			
		||||
    // Calcul unité de narration
 | 
			
		||||
    rollData.nbUnitesNarration = Math.max(rollData.successPC - 1, 0)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static computeIntensite(rollData) {
 | 
			
		||||
    rollData.totalIntensite = 0
 | 
			
		||||
    let pi = 3
 | 
			
		||||
    let nbSuccess = rollData.realSuccessPC
 | 
			
		||||
    while (nbSuccess) {
 | 
			
		||||
      rollData.totalIntensite += pi
 | 
			
		||||
      pi = 2 // 3 for the first, 2 after
 | 
			
		||||
      nbSuccess--
 | 
			
		||||
    }
 | 
			
		||||
    for(let r of rollData.selectedRessources) {
 | 
			
		||||
      rollData.totalIntensite += r.system.ressource
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
@@ -386,6 +415,7 @@ export class Imperium5Utility {
 | 
			
		||||
    // Calcul réussites
 | 
			
		||||
    this.computeReussites(rollData)
 | 
			
		||||
    rollData.realSuccessPC = rollData.successPC // To manage source transfer
 | 
			
		||||
    this.computeIntensite(rollData)
 | 
			
		||||
 | 
			
		||||
    let msg = await this.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
      content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData)
 | 
			
		||||
@@ -412,12 +442,12 @@ export class Imperium5Utility {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------------------------- */
 | 
			
		||||
  static async applySingularite(rollData, resultIndex) {
 | 
			
		||||
  static async applySpecialite(rollData, resultIndex) {
 | 
			
		||||
    let res = rollData.resultsPC[resultIndex]
 | 
			
		||||
    res.result = (res.result > 1) ? res.result - 1 : res.result
 | 
			
		||||
    this.computeReussites(rollData)
 | 
			
		||||
    rollData.useSingularites = false
 | 
			
		||||
    rollData.singulariteApplied = true
 | 
			
		||||
    rollData.useSpecialite = false
 | 
			
		||||
    rollData.specialiteApplied = true
 | 
			
		||||
    let msg = await this.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
      content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData)
 | 
			
		||||
    })
 | 
			
		||||
@@ -431,7 +461,6 @@ export class Imperium5Utility {
 | 
			
		||||
    actor.transferToSource(nbSuccess)
 | 
			
		||||
    rollData.realSuccessPC -= nbSuccess
 | 
			
		||||
    rollData.sourceTransfer = nbSuccess
 | 
			
		||||
    rollData.nbUnitesNarration = Math.max(rollData.realSuccessPC - 1, 0)
 | 
			
		||||
    let msg = await this.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
      content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData)
 | 
			
		||||
    })
 | 
			
		||||
@@ -439,36 +468,6 @@ export class Imperium5Utility {
 | 
			
		||||
    this.removeChatMessageId(rollData.previousMessageId)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------  ------------------- */
 | 
			
		||||
  static async updateRoll(rollData) {
 | 
			
		||||
 | 
			
		||||
    let diceResults = rollData.diceResults
 | 
			
		||||
    let sortedRoll = []
 | 
			
		||||
    for (let i = 0; i < 10; i++) {
 | 
			
		||||
      sortedRoll[i] = 0;
 | 
			
		||||
    }
 | 
			
		||||
    for (let dice of diceResults) {
 | 
			
		||||
      sortedRoll[dice.result]++
 | 
			
		||||
    }
 | 
			
		||||
    let index = 0;
 | 
			
		||||
    let bestRoll = 0;
 | 
			
		||||
    for (let i = 0; i < 10; i++) {
 | 
			
		||||
      if (sortedRoll[i] > bestRoll) {
 | 
			
		||||
        bestRoll = sortedRoll[i]
 | 
			
		||||
        index = i
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    let bestScore = (bestRoll * 10) + index
 | 
			
		||||
    rollData.bestScore = bestScore
 | 
			
		||||
    rollData.finalScore = bestScore + rollData.negativeModifier + rollData.positiveModifier
 | 
			
		||||
 | 
			
		||||
    this.saveRollData(rollData)
 | 
			
		||||
 | 
			
		||||
    this.createChatWithRollMode(rollData.alias, {
 | 
			
		||||
      content: await renderTemplate(`systems/fvtt-weapons-of-the-gods/templates/chat-generic-result.html`, rollData)
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /* -------------------------  ------------------- */
 | 
			
		||||
  static async rerollDice(actorId, diceIndex = -1) {
 | 
			
		||||
    let actor = game.actors.get(actorId)
 | 
			
		||||
@@ -562,12 +561,13 @@ export class Imperium5Utility {
 | 
			
		||||
      realiteDice: 0,
 | 
			
		||||
      ameMalus: 0,
 | 
			
		||||
      useArchetype: false,
 | 
			
		||||
      useAide: false,
 | 
			
		||||
      nbAide: 0,
 | 
			
		||||
      useKarma: false,
 | 
			
		||||
      usedCapacite: "none",
 | 
			
		||||
      seuil: 2,
 | 
			
		||||
      currentIntensite: -1,
 | 
			
		||||
      nbSuccessSource: 0,
 | 
			
		||||
      useSingularites: game.settings.get("fvtt-imperium5", "use-singularite"),
 | 
			
		||||
      useSpecialite: game.settings.get("fvtt-imperium5", "use-specialite"),
 | 
			
		||||
      useEntropieReussite: game.settings.get("fvtt-imperium5", "use-entropie-reussite")
 | 
			
		||||
    }
 | 
			
		||||
    Imperium5Utility.updateWithTarget(rollData)
 | 
			
		||||
 
 | 
			
		||||
@@ -57,10 +57,10 @@
 | 
			
		||||
 | 
			
		||||
/* Fonts */
 | 
			
		||||
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item {
 | 
			
		||||
  font-size: 1.0rem;
 | 
			
		||||
  font-size: 0.8rem;
 | 
			
		||||
} /* For title, sidebar character and scene */
 | 
			
		||||
.sheet nav.sheet-tabs {
 | 
			
		||||
  font-size: 1.2rem;
 | 
			
		||||
  font-size: 0.8rem;
 | 
			
		||||
} /* For nav and title */
 | 
			
		||||
.window-app input, .foundryvtt-vadentis .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
 | 
			
		||||
  font-size: 0.8rem;
 | 
			
		||||
@@ -446,7 +446,7 @@ section.sheet-body{padding: 0.25rem 0.5rem;}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.sheet nav.sheet-tabs {
 | 
			
		||||
  font-size: 1.0rem;
 | 
			
		||||
  font-size: 0.8rem;
 | 
			
		||||
  font-weight: bold;
 | 
			
		||||
  height: 2.5rem;
 | 
			
		||||
  flex: 0 0 3rem;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
      "flags": {}
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "version": "10.0.6",
 | 
			
		||||
  "version": "10.0.9",
 | 
			
		||||
  "compatibility": {
 | 
			
		||||
    "minimum": "10",
 | 
			
		||||
    "verified": "10",
 | 
			
		||||
@@ -67,5 +67,5 @@
 | 
			
		||||
  "background": "images/ui/imperium5_welcome_page.webp",
 | 
			
		||||
  "url": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5",
 | 
			
		||||
  "manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5/raw/branch/master/system.json",
 | 
			
		||||
  "download": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5/archive/fvtt-imperium5-v10.0.6.zip"
 | 
			
		||||
  "download": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5/archive/fvtt-imperium5-v10.0.7.zip"
 | 
			
		||||
}
 | 
			
		||||
@@ -1,7 +1,8 @@
 | 
			
		||||
{
 | 
			
		||||
  "Actor": {
 | 
			
		||||
    "types": [
 | 
			
		||||
      "character"
 | 
			
		||||
      "character",
 | 
			
		||||
      "pm"
 | 
			
		||||
    ],
 | 
			
		||||
    "templates": {
 | 
			
		||||
      "biodata": {
 | 
			
		||||
@@ -21,7 +22,8 @@
 | 
			
		||||
          "description": "",
 | 
			
		||||
          "rebuild": "",
 | 
			
		||||
          "contacts": "",
 | 
			
		||||
          "gmnotes": ""
 | 
			
		||||
          "gmnotes": "",
 | 
			
		||||
          "archetype": ""
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      "core": {
 | 
			
		||||
@@ -126,6 +128,20 @@
 | 
			
		||||
          "seuil": 0,
 | 
			
		||||
          "reserve": 0
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      "pmcore": {
 | 
			
		||||
        "ames": {
 | 
			
		||||
          "niveau": 0,
 | 
			
		||||
          "intensite": 1,
 | 
			
		||||
          "riposte": 1,
 | 
			
		||||
          "cohesions": [
 | 
			
		||||
            {
 | 
			
		||||
              "max": 1,
 | 
			
		||||
              "value": 1
 | 
			
		||||
            }
 | 
			
		||||
          ],
 | 
			
		||||
          "rupture": 0
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "character": {
 | 
			
		||||
@@ -133,6 +149,12 @@
 | 
			
		||||
        "biodata",
 | 
			
		||||
        "core"
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
    "pm": {
 | 
			
		||||
      "templates": [
 | 
			
		||||
        "biodata",
 | 
			
		||||
        "pmcore"
 | 
			
		||||
      ]
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "Item": {
 | 
			
		||||
@@ -168,7 +190,7 @@
 | 
			
		||||
      "description": ""
 | 
			
		||||
    },
 | 
			
		||||
    "ressource": {
 | 
			
		||||
      "value": 0,
 | 
			
		||||
      "ressource": 0,
 | 
			
		||||
      "description": ""
 | 
			
		||||
    },
 | 
			
		||||
    "capacite": {
 | 
			
		||||
@@ -178,15 +200,15 @@
 | 
			
		||||
      "description": ""
 | 
			
		||||
    },
 | 
			
		||||
    "singularite": {
 | 
			
		||||
      "value": 0,
 | 
			
		||||
      "ressource": 0,
 | 
			
		||||
      "description": ""
 | 
			
		||||
    },
 | 
			
		||||
    "equipement": {
 | 
			
		||||
      "value": 0,
 | 
			
		||||
      "ressource": 0,
 | 
			
		||||
      "description": ""
 | 
			
		||||
    },
 | 
			
		||||
    "contact": {
 | 
			
		||||
      "value": 0,
 | 
			
		||||
      "ressource": 0,
 | 
			
		||||
      "description": ""
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										415
									
								
								templates/actor-pm-sheet.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										415
									
								
								templates/actor-pm-sheet.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,415 @@
 | 
			
		||||
<form class="{{cssClass}}" autocomplete="off">
 | 
			
		||||
 | 
			
		||||
  {{!-- Sheet Header --}}
 | 
			
		||||
  <header class="sheet-header">
 | 
			
		||||
    <div class="header-fields">
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <div>
 | 
			
		||||
          <h1 class="charname margin-right"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
 | 
			
		||||
          {{!-- Sheet Tab Navigation --}}
 | 
			
		||||
          <nav class="sheet-tabs tabs" data-group="primary">
 | 
			
		||||
            <a class="item tab-title" data-tab="principal">Principal</a>
 | 
			
		||||
            <a class="item tab-title" data-tab="biodata">Bio</a>
 | 
			
		||||
          </nav>
 | 
			
		||||
        </div>
 | 
			
		||||
        <img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </header>
 | 
			
		||||
 | 
			
		||||
  {{!-- Sheet Body --}}
 | 
			
		||||
  <section class="sheet-body">
 | 
			
		||||
 | 
			
		||||
    {{!-- Combat Tab --}}
 | 
			
		||||
    <div class="tab principal" data-group="primary" data-tab="principal">
 | 
			
		||||
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
 | 
			
		||||
        <div class="flexrow">
 | 
			
		||||
          <div class="sheet-box color-bg-ame ">
 | 
			
		||||
            <span class="flexrow">
 | 
			
		||||
              <img class="ame-icon" src="systems/fvtt-imperium5/images/icons/ame_transparent.webp">
 | 
			
		||||
              <h4 class="ame-margin title-font">AMES</h4>
 | 
			
		||||
            </span>
 | 
			
		||||
            
 | 
			
		||||
            <div class="ame-block">
 | 
			
		||||
              <span class="flexrow">
 | 
			
		||||
                <h4 class="ame-margin ame-subtitle">Niveau</h4>
 | 
			
		||||
                <input type="text" class="input-numeric-short padd-right status-small-label color-class-common"
 | 
			
		||||
                name="typedata.ames.niveau" value="{{system.ames.niveau}}" data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}} />          
 | 
			
		||||
              </span>
 | 
			
		||||
 | 
			
		||||
              <span class="flexrow">
 | 
			
		||||
                <h4 class="ame-margin ame-subtitle">Intensité</h4>
 | 
			
		||||
                <input type="text" class="input-numeric-short padd-right status-small-label color-class-common"
 | 
			
		||||
                name="typedata.ames.intensite" value="{{system.ames.intensite}}" data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}} />         
 | 
			
		||||
              </span>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="flexrow">
 | 
			
		||||
          <div class="sheet-box color-bg-archetype ">
 | 
			
		||||
            <span class="flexrow">
 | 
			
		||||
              <img class="ame-icon" src="systems/fvtt-imperium5/images/icons/archetype_transparent.webp">
 | 
			
		||||
              <h4 class="ame-margin title-font">ARCHETYPE</h4>
 | 
			
		||||
            </span>
 | 
			
		||||
            <h4 class="ame-margin"></h4>
 | 
			
		||||
            <ul>
 | 
			
		||||
              <li class="item stat flexrow" data-item-id="{{archetype._id}}">
 | 
			
		||||
                <img class="sheet-competence-img" src="{{archetype.img}}" /></a>
 | 
			
		||||
                <span class="item-name-label">{{archetype.name}}</span>
 | 
			
		||||
                <div class="item-filler"> </div>
 | 
			
		||||
                <div class="item-controls item-controls-fixed">
 | 
			
		||||
                  <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                  <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
                </div>
 | 
			
		||||
              </li>
 | 
			
		||||
            </ul>
 | 
			
		||||
 | 
			
		||||
            <h4 class="ame-margin">Spécialités</h4>
 | 
			
		||||
            <ul>
 | 
			
		||||
              {{#each specialites as |spec key|}}
 | 
			
		||||
              <li class="item stat flexrow " data-item-id="{{spec._id}}">
 | 
			
		||||
                <img class="sheet-competence-img" src="{{spec.img}}" /></a>
 | 
			
		||||
                <span class="item-name-label">{{spec.name}}</span>
 | 
			
		||||
                <div class="item-filler"> </div>
 | 
			
		||||
                <div class="item-controls item-controls-fixed">
 | 
			
		||||
                  <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                  <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
                </div>
 | 
			
		||||
              </li>
 | 
			
		||||
              {{/each}}
 | 
			
		||||
            </ul>
 | 
			
		||||
 | 
			
		||||
            <h4 class="ame-margin">Familiarités :</h4>
 | 
			
		||||
            <ul>
 | 
			
		||||
              {{#each familiarites as |fami key|}}
 | 
			
		||||
              <li class="item stat flexrow " data-item-id="{{fami._id}}">
 | 
			
		||||
                <img class="sheet-competence-img" src="{{fami.img}}" /></a>
 | 
			
		||||
                <span class="item-name-label">{{fami.name}}</span>
 | 
			
		||||
                <div class="item-filler"> </div>
 | 
			
		||||
                <div class="item-controls item-controls-fixed">
 | 
			
		||||
                  <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                  <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
                </div>
 | 
			
		||||
              </li>
 | 
			
		||||
              {{/each}}
 | 
			
		||||
            </ul>
 | 
			
		||||
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-paradigme ">
 | 
			
		||||
 | 
			
		||||
          <span class="flexrow">
 | 
			
		||||
            <img class="ame-icon" src="systems/fvtt-imperium5/images/icons/paradigme_transparent.webp">
 | 
			
		||||
            <h4 class="ame-margin title-font">PARADIGMES</h4>
 | 
			
		||||
          </span>
 | 
			
		||||
          <ul>
 | 
			
		||||
            {{> systems/fvtt-imperium5/templates/actor-partial-paradigmes.html}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype ">
 | 
			
		||||
 | 
			
		||||
          <span class="flexrow">
 | 
			
		||||
            <img class="ame-icon" src="systems/fvtt-imperium5/images/icons/nature_transparent.webp">
 | 
			
		||||
            <h4 class="ame-margin title-font">NATURE PROFONDE</h4>
 | 
			
		||||
          </span>
 | 
			
		||||
          <ul>
 | 
			
		||||
            <li class="item stat flexrow " data-item-id="{{nature._id}}">
 | 
			
		||||
              <img class="sheet-competence-img" src="{{nature.img}}" />
 | 
			
		||||
              <span class="item-name-label">{{nature.name}}</span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
          </ul>
 | 
			
		||||
 | 
			
		||||
          <h4 class="ame-margin">Traits</h4>
 | 
			
		||||
          <ul>
 | 
			
		||||
            {{#each traits as |trait key|}}
 | 
			
		||||
            <li class="item stat flexrow " data-item-id="{{trait._id}}">
 | 
			
		||||
              <img class="sheet-competence-img" src="{{trait.img}}" />
 | 
			
		||||
              <span class="item-name-label">{{trait.name}}</span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
 | 
			
		||||
          <h4 class="ame-margin">Symbioses :</h4>
 | 
			
		||||
          <ul>
 | 
			
		||||
            {{#each symbioses as |symbiose key|}}
 | 
			
		||||
            <li class="item stat flexrow " data-item-id="{{symbiose._id}}">
 | 
			
		||||
              <img class="sheet-competence-img" src="{{symbiose.img}}" />
 | 
			
		||||
              <span class="item-name-label">{{symbiose.name}}</span>
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    {{!-- Equipement Tab --}}
 | 
			
		||||
    <div class="tab ressources" data-group="primary" data-tab="ressources">
 | 
			
		||||
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Equipement</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Intensité</label>
 | 
			
		||||
              </span>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each equipements as |equip key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{equip._id}}">
 | 
			
		||||
              <img class="item-name-img" src="{{equip.img}}" />
 | 
			
		||||
              <span class="item-name-label">{{equip.name}}</span>
 | 
			
		||||
              <span class="item-field-label-short">{{equip.system.value}}</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">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Capacités</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Aide</label>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Ressource</label>
 | 
			
		||||
              </span>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each capacites as |capa key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{capa._id}}">
 | 
			
		||||
              <img class="item-name-img" src="{{capa.img}}" /></a>
 | 
			
		||||
              <span class="item-name-label">{{capa.name}}</span>
 | 
			
		||||
              <span class="item-field-label-short"">{{capa.system.aide}}</span>
 | 
			
		||||
              <span class=" item-field-label-short"">{{capa.system.ressource}}</span>
 | 
			
		||||
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
 | 
			
		||||
        <div class="sheet-box color-bg-archetype">
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Singularités</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Intensité</label>
 | 
			
		||||
              </span>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each singularites as |singul key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{singul._id}}">
 | 
			
		||||
              <img class="item-name-img" src="{{singul.img}}" />
 | 
			
		||||
              <span class="item-name-label">{{singul.name}}</span>
 | 
			
		||||
              <span class="item-field-label-short">{{singul.system.value}}</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">
 | 
			
		||||
              <span class="item-name-label-header">
 | 
			
		||||
                <h3><label class="items-title-text">Contacts/Finances</label></h3>
 | 
			
		||||
              </span>
 | 
			
		||||
              <span class="item-field-label-short">
 | 
			
		||||
                <label class="short-label">Intensité</label>
 | 
			
		||||
              </span>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{#each contacts as |contact key|}}
 | 
			
		||||
            <li class="item flexrow " data-item-id="{{contact._id}}">
 | 
			
		||||
              <img class="item-name-img" src="{{contact.img}}" />
 | 
			
		||||
              <span class="item-name-label">{{contact.name}}</span>
 | 
			
		||||
              <span class="item-field-label-short">{{contact.system.value}}</span>
 | 
			
		||||
 | 
			
		||||
              <div class="item-filler"> </div>
 | 
			
		||||
              <div class="item-controls item-controls-fixed">
 | 
			
		||||
                <a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
 | 
			
		||||
                <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </li>
 | 
			
		||||
            {{/each}}
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    {{!-- Biography Tab --}}
 | 
			
		||||
    <div class="tab biodata" data-group="primary" data-tab="biodata">
 | 
			
		||||
      <div class="grid grid-3col">
 | 
			
		||||
        <div>
 | 
			
		||||
          <ul class="item-list alternate-list">
 | 
			
		||||
            <li class="item flexrow">
 | 
			
		||||
              <label class="generic-label">Imperium</label>
 | 
			
		||||
              <input type="text" class="" name="system.biodata.imperium" value="{{system.biodata.imperium}}"
 | 
			
		||||
                data-dtype="String" />
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="item flexrow">
 | 
			
		||||
              <label class="generic-label">ADM ID</label>
 | 
			
		||||
              <input type="text" class="" name="system.biodata.admid" value="{{system.biodata.admid}}"
 | 
			
		||||
                data-dtype="String" />
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="item flexrow">
 | 
			
		||||
              <label class="generic-label">Age</label>
 | 
			
		||||
              <input type="text" class="" name="system.biodata.age" value="{{system.biodata.age}}" data-dtype="String" />
 | 
			
		||||
            </li>
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div>
 | 
			
		||||
          <ul>
 | 
			
		||||
            <li class="flexrow item">
 | 
			
		||||
              <label class="generic-label">Poids</label>
 | 
			
		||||
              <input type="text" class="" name="system.biodata.weight" value="{{system.biodata.weight}}"
 | 
			
		||||
                data-dtype="String" />
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="flexrow item">
 | 
			
		||||
              <label class="generic-label">Sexe</label>
 | 
			
		||||
              <input type="text" class="" name="system.biodata.sex" value="{{system.biodata.sex}}" data-dtype="String" />
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="item flexrow">
 | 
			
		||||
              <label class="generic-label">Taille</label>
 | 
			
		||||
              <input type="text" class="" name="system.biodata.size" value="{{system.biodata.size}}" data-dtype="String" />
 | 
			
		||||
            </li>
 | 
			
		||||
          </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div>
 | 
			
		||||
          <li class="item flexrow">
 | 
			
		||||
            <label class="generic-label">Yeux</label>
 | 
			
		||||
            <input type="text" class="" name="system.biodata.eyes" value="{{system.biodata.eyes}}" data-dtype="String" />
 | 
			
		||||
          </li>
 | 
			
		||||
          <li class="flexrow item">
 | 
			
		||||
            <label class="generic-label">Main préférée</label>
 | 
			
		||||
            <input type="text" class="" name="system.biodata.preferredhand" value="{{system.biodata.preferredhand}}"
 | 
			
		||||
              data-dtype="String" />
 | 
			
		||||
          </li>
 | 
			
		||||
          <li class="item flexrow">
 | 
			
		||||
            <label class="generic-label">Cheveux</label>
 | 
			
		||||
            <input type="text" class="" name="system.biodata.hair" value="{{system.biodata.hair}}" data-dtype="String" />
 | 
			
		||||
          </li>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <div>
 | 
			
		||||
          <h3>Apparence actuelle : </h3>
 | 
			
		||||
          <div class="form-group small-editor">
 | 
			
		||||
            {{editor system.biodata.appactual target="system.biodata.appactual" button=true owner=owner
 | 
			
		||||
            editable=editable}}
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div>
 | 
			
		||||
          <h3>Autres identités : </h3>
 | 
			
		||||
          <div class="form-group small-editor">
 | 
			
		||||
            {{editor system.biodata.identities target="system.biodata.identities" button=true owner=owner
 | 
			
		||||
            editable=editable}}
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <div>
 | 
			
		||||
          <h3>Traits particuliers : </h3>
 | 
			
		||||
          <div class="form-group small-editor">
 | 
			
		||||
            {{editor system.biodata.traits target="system.biodata.traits" button=true owner=owner
 | 
			
		||||
            editable=editable}}
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div>
 | 
			
		||||
          <h3>Souvenirs quantiques : </h3>
 | 
			
		||||
          <div class="form-group small-editor">
 | 
			
		||||
            {{editor system.biodata.memories target="system.biodata.memories" button=true owner=owner
 | 
			
		||||
            editable=editable}}
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <div class="flexrow">
 | 
			
		||||
        <div>
 | 
			
		||||
          <h3>Rebuild : </h3>
 | 
			
		||||
          <div class="form-group small-editor">
 | 
			
		||||
            {{editor system.biodata.rebuild target="system.biodata.rebuild" button=true owner=owner
 | 
			
		||||
            editable=editable}}
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div>
 | 
			
		||||
          <h3>Relations, contacts et acolytes : </h3>
 | 
			
		||||
          <div class="form-group small-editor">
 | 
			
		||||
            {{editor system.biodata.contacts target="system.biodata.contacts" button=true owner=owner
 | 
			
		||||
            editable=editable}}
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
      <h3>Qui suis-je : </h3>
 | 
			
		||||
      <div class="form-group editor">
 | 
			
		||||
        {{editor system.biodata.whoami target="system.biodata.whoami" button=true owner=owner
 | 
			
		||||
        editable=editable}}
 | 
			
		||||
      </div>
 | 
			
		||||
      <hr>
 | 
			
		||||
      <h3>Notes : </h3>
 | 
			
		||||
      <div class="form-group editor">
 | 
			
		||||
        {{editor system.biodata.notes target="system.biodata.notes" button=true owner=owner editable=editable}}
 | 
			
		||||
      </div>
 | 
			
		||||
      <hr>
 | 
			
		||||
      </article>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
  </section>
 | 
			
		||||
</form>
 | 
			
		||||
@@ -12,12 +12,12 @@
 | 
			
		||||
 | 
			
		||||
<div>
 | 
			
		||||
  <ul>
 | 
			
		||||
        <li>Réserve : {{humanFormula}}</li>
 | 
			
		||||
    <li class="imperium5-roll">Réserve : {{humanFormula}}</li>
 | 
			
		||||
    <li>Score :
 | 
			
		||||
      (
 | 
			
		||||
      {{#each resultsPC as |r k|}}
 | 
			
		||||
              {{#if @root.useSingularites}}
 | 
			
		||||
                <a class="apply-singularite common-button" data-result-index="{{k}}">{{r.result}}</a>
 | 
			
		||||
      {{#if @root.useSpecialite}}
 | 
			
		||||
      <a class="apply-specialite common-button" data-result-index="{{k}}">{{r.result}}</a>
 | 
			
		||||
      {{else}}
 | 
			
		||||
      {{r.result}}
 | 
			
		||||
      {{/if}}
 | 
			
		||||
@@ -35,8 +35,8 @@
 | 
			
		||||
      )
 | 
			
		||||
    </li>
 | 
			
		||||
 | 
			
		||||
        {{#if singulariteApplied}}
 | 
			
		||||
        <li>Une Singularité a réduit de 1 le résultat du dé</li>
 | 
			
		||||
    {{#if specialiteApplied}}
 | 
			
		||||
    <li>Une Spécialité a réduit de 1 le résultat du dé</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if usedParadigme}}
 | 
			
		||||
@@ -45,7 +45,8 @@
 | 
			
		||||
 | 
			
		||||
    <li>Seuil : {{seuil}}
 | 
			
		||||
      {{#if (count paradigmes)}}
 | 
			
		||||
            <select class="common-button select-apply-paradigme" type="text" value="{{selectedParadigme}}" data-dtype="String">
 | 
			
		||||
      <select class="common-button select-apply-paradigme" type="text" value="{{selectedParadigme}}"
 | 
			
		||||
        data-dtype="String">
 | 
			
		||||
        {{#select selectedParadigme}}
 | 
			
		||||
        <option value="none">Pas de paradigme</option>
 | 
			
		||||
        {{#each paradigmes as |para key|}}
 | 
			
		||||
@@ -56,27 +57,54 @@
 | 
			
		||||
      {{/if}}
 | 
			
		||||
    </li>
 | 
			
		||||
 | 
			
		||||
        <li>Succés : {{realSuccessPC}}
 | 
			
		||||
    <li>Unités de narration : {{realSuccessPC}}
 | 
			
		||||
      {{#if realSuccessPC}}
 | 
			
		||||
      <select class="common-button transfer-success" type="text" value="{{nbSuccessSource}}" data-dtype="Number">
 | 
			
		||||
        {{#select nbSuccessSource}}
 | 
			
		||||
              <option value="none">0 succès -> Source</option>
 | 
			
		||||
        <option value="none">0 -> Source</option>
 | 
			
		||||
        {{#times realSuccessPC}}
 | 
			
		||||
              <option value="{{this}}">{{this}} succès -> Source</option>
 | 
			
		||||
        <option value="{{this}}">{{this}} -> Source</option>
 | 
			
		||||
        {{/times}}
 | 
			
		||||
        {{/select}}
 | 
			
		||||
      </select>
 | 
			
		||||
      {{/if}}
 | 
			
		||||
    </li>
 | 
			
		||||
 | 
			
		||||
    {{#if realSuccessPC}}
 | 
			
		||||
    <li>Ressource :
 | 
			
		||||
      <select class="common-button select-ressource" type="text" value="none" data-dtype="String">
 | 
			
		||||
        {{#select "none"}}
 | 
			
		||||
        <option value="none">Aucun</option>
 | 
			
		||||
        {{#each ressources as |ressource key|}}
 | 
			
		||||
        <option value="{{ressource._id}}">{{ressource.name}} ({{ressource.system.ressource}})</option>
 | 
			
		||||
        {{/each}}
 | 
			
		||||
        {{/select}}
 | 
			
		||||
      </select>
 | 
			
		||||
    </li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if (count selectedRessources)}}
 | 
			
		||||
    <li>Ressources utilisées : </li>
 | 
			
		||||
      <ul class="ul-level1">
 | 
			
		||||
        {{#each selectedRessources as |ressource key|}}
 | 
			
		||||
          <li>
 | 
			
		||||
            {{ressource.name}} ({{ressource.system.ressource}});
 | 
			
		||||
          </li>
 | 
			
		||||
        {{/each}}
 | 
			
		||||
      </ul>
 | 
			
		||||
    </li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if totalIntensite}}
 | 
			
		||||
    <li>Intensité totale : {{totalIntensite}}</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    {{#if sourceTransfer}}
 | 
			
		||||
    <li>Succés transférés à la Source : {{sourceTransfer}}</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 | 
			
		||||
    <li>Succés de Réalité : {{successGM}}</li>
 | 
			
		||||
 | 
			
		||||
        <li>Unités de narration : {{nbUnitesNarration}}</li>
 | 
			
		||||
        
 | 
			
		||||
    {{#if nbKarma}}
 | 
			
		||||
    <li>Points de Karma utilisés : {{nbKarma}}</li>
 | 
			
		||||
    {{/if}}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,15 +9,23 @@
 | 
			
		||||
  <div class="flexcol">
 | 
			
		||||
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">Malus : {{ameMalus}}</span>
 | 
			
		||||
      <span class="roll-dialog-label">Ruptures : {{ameMalus}}</span>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">Utiliser l'Archetype ? : </span>
 | 
			
		||||
      <input class="ame-checkbox" id="select-use-archetype" type="checkbox" {{checked useArchetype}}>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
      <span class="roll-dialog-label">Aide d'un autre personnage ? : </span>
 | 
			
		||||
      <input class="ame-checkbox" id="select-use-aide" type="checkbox" {{checked useAide}}>
 | 
			
		||||
      <span class="roll-dialog-label">Aides ? : </span>
 | 
			
		||||
      <select class="roll-dialog-label" id="select-aide-pj" type="text" name="nbAide" value="{{nbAide}}"
 | 
			
		||||
        data-dtype="Number">
 | 
			
		||||
        {{#select nbAide}}
 | 
			
		||||
        <option value="0">0</option>
 | 
			
		||||
        <option value="1">1</option>
 | 
			
		||||
        <option value="2">2</option>
 | 
			
		||||
        <option value="3">3</option>
 | 
			
		||||
        {{/select}}
 | 
			
		||||
      </select>
 | 
			
		||||
    </div>
 | 
			
		||||
    {{#if karma}}
 | 
			
		||||
    <div class="flexrow">
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user