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; |     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 */ |   /** @override */ | ||||||
|   activateListeners(html) { |   activateListeners(html) { | ||||||
| @@ -183,7 +157,6 @@ export class Imperium5ActorSheet extends ActorSheet { | |||||||
|  |  | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
|   async _onDropItemUNUSED(event, dragData) { |   async _onDropItemUNUSED(event, dragData) { | ||||||
|     console.log(">>>>>> DROPPED!!!!") |  | ||||||
|     let item = await Imperium5Utility.searchItem( dragData) |     let item = await Imperium5Utility.searchItem( dragData) | ||||||
|     if (item == undefined) { |     if (item == undefined) { | ||||||
|       item = this.actor.items.get( dragData.data._id ) |       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") || [] ) |     let item = duplicate(this.items.filter( it => it.type == "contact") || [] ) | ||||||
|     return item  |     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() { |   getUnusedParadigmes() { | ||||||
|     let paraList = [] |     let paraList = [] | ||||||
|     for(let k in this.system.paradigmes) { |     for(let k in this.system.paradigmes) { | ||||||
| @@ -276,6 +280,8 @@ export class Imperium5Actor extends Actor { | |||||||
|     rollData.img = this.img |     rollData.img = this.img | ||||||
|     rollData.capacites = this.getUnusedCapacites() |     rollData.capacites = this.getUnusedCapacites() | ||||||
|     rollData.paradigmes = this.getUnusedParadigmes() |     rollData.paradigmes = this.getUnusedParadigmes() | ||||||
|  |     rollData.ressources = this.getResources() | ||||||
|  |     rollData.selectedRessources = [] | ||||||
|     rollData.selectedParadigme = "none" |     rollData.selectedParadigme = "none" | ||||||
|     rollData.karma = this.system.karma.value |     rollData.karma = this.system.karma.value | ||||||
|  |  | ||||||
|   | |||||||
| @@ -11,6 +11,7 @@ | |||||||
| import { Imperium5Actor } from "./imperium5-actor.js"; | import { Imperium5Actor } from "./imperium5-actor.js"; | ||||||
| import { Imperium5ItemSheet } from "./imperium5-item-sheet.js"; | import { Imperium5ItemSheet } from "./imperium5-item-sheet.js"; | ||||||
| import { Imperium5ActorSheet } from "./imperium5-actor-sheet.js"; | import { Imperium5ActorSheet } from "./imperium5-actor-sheet.js"; | ||||||
|  | import { Imperium5ActorPMSheet } from "./imperium5-actor-pm-sheet.js"; | ||||||
| import { Imperium5Utility } from "./imperium5-utility.js"; | import { Imperium5Utility } from "./imperium5-utility.js"; | ||||||
| import { Imperium5Combat } from "./imperium5-combat.js"; | import { Imperium5Combat } from "./imperium5-combat.js"; | ||||||
| import { Imperium5Item } from "./imperium5-item.js"; | import { Imperium5Item } from "./imperium5-item.js"; | ||||||
| @@ -50,6 +51,7 @@ Hooks.once("init", async function () { | |||||||
|   // Register sheet application classes |   // Register sheet application classes | ||||||
|   Actors.unregisterSheet("core", ActorSheet) |   Actors.unregisterSheet("core", ActorSheet) | ||||||
|   Actors.registerSheet("fvtt-imperium5", Imperium5ActorSheet, { types: ["character"], makeDefault: true }) |   Actors.registerSheet("fvtt-imperium5", Imperium5ActorSheet, { types: ["character"], makeDefault: true }) | ||||||
|  |   Actors.registerSheet("fvtt-imperium5", Imperium5ActorPMSheet, { types: ["pm"], makeDefault: true }) | ||||||
|  |  | ||||||
|   Items.unregisterSheet("core", ItemSheet) |   Items.unregisterSheet("core", ItemSheet) | ||||||
|   Items.registerSheet("fvtt-imperium5", Imperium5ItemSheet, { makeDefault: true } ) |   Items.registerSheet("fvtt-imperium5", Imperium5ItemSheet, { makeDefault: true } ) | ||||||
|   | |||||||
| @@ -68,8 +68,8 @@ export class Imperium5RollDialog extends Dialog { | |||||||
|       this.rollData.useArchetype = event.currentTarget.checked |       this.rollData.useArchetype = event.currentTarget.checked | ||||||
|       this.updatePCPool() |       this.updatePCPool() | ||||||
|     })     |     })     | ||||||
|     html.find('#select-use-aide').change(async (event) =>  { |     html.find('#select-aide-pj').change(async (event) =>  { | ||||||
|       this.rollData.useAide = event.currentTarget.checked |       this.rollData.nbAide = Number(event.currentTarget.value) | ||||||
|       this.updatePCPool() |       this.updatePCPool() | ||||||
|     }) |     }) | ||||||
|     html.find('#select-use-karma').change(async (event) =>  { |     html.find('#select-use-karma').change(async (event) =>  { | ||||||
|   | |||||||
| @@ -13,6 +13,7 @@ export class Imperium5Utility { | |||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
|   static async init() { |   static async init() { | ||||||
|     Hooks.on('renderChatLog', (log, html, data) => Imperium5Utility.chatListeners(html)); |     Hooks.on('renderChatLog', (log, html, data) => Imperium5Utility.chatListeners(html)); | ||||||
|  |     Hooks.on("getChatLogEntryContext", (html, options) => Imperium5Utility.chatRollMenu(html, options)) | ||||||
|  |  | ||||||
|     Hooks.on("getCombatTrackerEntryContext", (html, options) => { |     Hooks.on("getCombatTrackerEntryContext", (html, options) => { | ||||||
|       Imperium5Utility.pushInitiativeOptions(html, options); |       Imperium5Utility.pushInitiativeOptions(html, options); | ||||||
| @@ -54,10 +55,10 @@ export class Imperium5Utility { | |||||||
|         accum += block.fn(i); |         accum += block.fn(i); | ||||||
|       return accum; |       return accum; | ||||||
|     }) |     }) | ||||||
|     Handlebars.registerHelper('times', function(n, block) { |     Handlebars.registerHelper('times', function (n, block) { | ||||||
|       var accum = ''; |       var accum = ''; | ||||||
|       for(var i = 1; i <= n; ++i) |       for (var i = 1; i <= n; ++i) | ||||||
|           accum += block.fn(i); |         accum += block.fn(i); | ||||||
|       return accum; |       return accum; | ||||||
|     }) |     }) | ||||||
|   } |   } | ||||||
| @@ -72,9 +73,9 @@ export class Imperium5Utility { | |||||||
|       default: false, |       default: false, | ||||||
|       type: Boolean |       type: Boolean | ||||||
|     }) |     }) | ||||||
|     game.settings.register("fvtt-imperium5", "use-singularite", { |     game.settings.register("fvtt-imperium5", "use-specialite", { | ||||||
|       name: "Utilisation complémentaire des Singularités", |       name: "Utilisation complémentaire des Spécialités", | ||||||
|       hint: "Si coché, les Singularités peuvent permettre de réduire de 1 la valeur d'un dé", |       hint: "Si coché, les Spécialités peuvent permettre de réduire de 1 la valeur d'un dé", | ||||||
|       scope: "world", |       scope: "world", | ||||||
|       config: true, |       config: true, | ||||||
|       default: false, |       default: false, | ||||||
| @@ -129,11 +130,11 @@ export class Imperium5Utility { | |||||||
|       this.applyParadigme(rollData, paraKey) |       this.applyParadigme(rollData, paraKey) | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|     html.on("click", '.apply-singularite', event => { |     html.on("click", '.apply-specialite', event => { | ||||||
|       let resultIndex = $(event.currentTarget).data("result-index") |       let resultIndex = $(event.currentTarget).data("result-index") | ||||||
|       let rollData = this.getRollDataFromMessage(event) |       let rollData = this.getRollDataFromMessage(event) | ||||||
|       rollData.previousMessageId = Imperium5Utility.findChatMessageId(event.currentTarget) |       rollData.previousMessageId = Imperium5Utility.findChatMessageId(event.currentTarget) | ||||||
|       this.applySingularite(rollData, resultIndex) |       this.applySpecialite(rollData, resultIndex) | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|     html.on("change", '.transfer-success', event => { |     html.on("change", '.transfer-success', event => { | ||||||
| @@ -143,6 +144,23 @@ export class Imperium5Utility { | |||||||
|       this.applySuccessTransfer(rollData, nbSuccess) |       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) { |   static chatRollMenu(html, options) { | ||||||
|  |     let canApply = li => canvas.tokens.controlled.length && li.find(".imperium5-roll").length | ||||||
|     let id = rollData.rollId; |     let canApplyIntensite = function (li) { | ||||||
|     let oldRollData = this.rollDataStore[id] || {}; |       let message = game.messages.get(li.attr("data-message-id")) | ||||||
|     let newRollData = mergeObject(oldRollData, rollData); |       let rollData = message.getFlag("world", "imperium5-roll-data") | ||||||
|     this.rollDataStore[id] = newRollData; |       return (rollData.currentIntensite > 0) | ||||||
|   } |     } | ||||||
|   /* -------------------------------------------- */ |     options.push( | ||||||
|   static saveRollData(rollData) { |       { | ||||||
|     game.socket.emit("system.fvtt-imperium5", { |         name: "Ajouer +3 (1 point de Bonne Aventure)", | ||||||
|       name: "msg_update_roll", data: rollData |         icon: "<i class='fas fa-user-plus'></i>", | ||||||
|     }); // Notify all other clients of the roll     |         condition: canApply && canApplyIntensite, | ||||||
|     this.updateRollData(rollData); |         callback: li => Imperium5Utility.applyBonneAventureRoll(li, -1, "+3") | ||||||
|   } |       } | ||||||
|  |     ) | ||||||
|   /* -------------------------------------------- */ |     return options | ||||||
|   static getRollData(id) { |  | ||||||
|     return this.rollDataStore[id]; |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /* -------------------------------------------- */ |   /* -------------------------------------------- */ | ||||||
| @@ -330,7 +346,7 @@ export class Imperium5Utility { | |||||||
|       let capa = rollData.capacites.find(c => c._id == rollData.usedCapacite) |       let capa = rollData.capacites.find(c => c._id == rollData.usedCapacite) | ||||||
|       capaDice = capa.system.aide |       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) |     return Math.max(val, 0) | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -350,8 +366,21 @@ export class Imperium5Utility { | |||||||
|     if (rollData.useEntropieReussite && myRoll.terms[2].results[0].result == 7) { |     if (rollData.useEntropieReussite && myRoll.terms[2].results[0].result == 7) { | ||||||
|       rollData.successGM++ |       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 |     // Calcul réussites | ||||||
|     this.computeReussites(rollData) |     this.computeReussites(rollData) | ||||||
|     rollData.realSuccessPC = rollData.successPC // To manage source transfer |     rollData.realSuccessPC = rollData.successPC // To manage source transfer | ||||||
|  |     this.computeIntensite(rollData) | ||||||
|  |  | ||||||
|     let msg = await this.createChatWithRollMode(rollData.alias, { |     let msg = await this.createChatWithRollMode(rollData.alias, { | ||||||
|       content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData) |       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] |     let res = rollData.resultsPC[resultIndex] | ||||||
|     res.result = (res.result > 1) ? res.result-1 : res.result |     res.result = (res.result > 1) ? res.result - 1 : res.result | ||||||
|     this.computeReussites(rollData) |     this.computeReussites(rollData) | ||||||
|     rollData.useSingularites = false |     rollData.useSpecialite = false | ||||||
|     rollData.singulariteApplied = true |     rollData.specialiteApplied = true | ||||||
|     let msg = await this.createChatWithRollMode(rollData.alias, { |     let msg = await this.createChatWithRollMode(rollData.alias, { | ||||||
|       content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData) |       content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData) | ||||||
|     }) |     }) | ||||||
| @@ -428,10 +458,9 @@ export class Imperium5Utility { | |||||||
|   /* -------------------------  ------------------- */ |   /* -------------------------  ------------------- */ | ||||||
|   static async applySuccessTransfer(rollData, nbSuccess) { |   static async applySuccessTransfer(rollData, nbSuccess) { | ||||||
|     let actor = game.actors.get(rollData.actorId) |     let actor = game.actors.get(rollData.actorId) | ||||||
|     actor.transferToSource( nbSuccess) |     actor.transferToSource(nbSuccess) | ||||||
|     rollData.realSuccessPC -= nbSuccess |     rollData.realSuccessPC -= nbSuccess | ||||||
|     rollData.sourceTransfer = nbSuccess |     rollData.sourceTransfer = nbSuccess | ||||||
|     rollData.nbUnitesNarration = Math.max(rollData.realSuccessPC - 1, 0) |  | ||||||
|     let msg = await this.createChatWithRollMode(rollData.alias, { |     let msg = await this.createChatWithRollMode(rollData.alias, { | ||||||
|       content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData) |       content: await renderTemplate(`systems/fvtt-imperium5/templates/chat-generic-result.html`, rollData) | ||||||
|     }) |     }) | ||||||
| @@ -439,36 +468,6 @@ export class Imperium5Utility { | |||||||
|     this.removeChatMessageId(rollData.previousMessageId) |     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) { |   static async rerollDice(actorId, diceIndex = -1) { | ||||||
|     let actor = game.actors.get(actorId) |     let actor = game.actors.get(actorId) | ||||||
| @@ -562,12 +561,13 @@ export class Imperium5Utility { | |||||||
|       realiteDice: 0, |       realiteDice: 0, | ||||||
|       ameMalus: 0, |       ameMalus: 0, | ||||||
|       useArchetype: false, |       useArchetype: false, | ||||||
|       useAide: false, |       nbAide: 0, | ||||||
|       useKarma: false, |       useKarma: false, | ||||||
|       usedCapacite: "none", |       usedCapacite: "none", | ||||||
|       seuil: 2, |       seuil: 2, | ||||||
|  |       currentIntensite: -1, | ||||||
|       nbSuccessSource: 0, |       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") |       useEntropieReussite: game.settings.get("fvtt-imperium5", "use-entropie-reussite") | ||||||
|     } |     } | ||||||
|     Imperium5Utility.updateWithTarget(rollData) |     Imperium5Utility.updateWithTarget(rollData) | ||||||
|   | |||||||
| @@ -57,10 +57,10 @@ | |||||||
|  |  | ||||||
| /* Fonts */ | /* Fonts */ | ||||||
| .sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item { | .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 */ | } /* For title, sidebar character and scene */ | ||||||
| .sheet nav.sheet-tabs { | .sheet nav.sheet-tabs { | ||||||
|   font-size: 1.2rem; |   font-size: 0.8rem; | ||||||
| } /* For nav and title */ | } /* 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 { | .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; |   font-size: 0.8rem; | ||||||
| @@ -446,7 +446,7 @@ section.sheet-body{padding: 0.25rem 0.5rem;} | |||||||
| } | } | ||||||
|  |  | ||||||
| .sheet nav.sheet-tabs { | .sheet nav.sheet-tabs { | ||||||
|   font-size: 1.0rem; |   font-size: 0.8rem; | ||||||
|   font-weight: bold; |   font-weight: bold; | ||||||
|   height: 2.5rem; |   height: 2.5rem; | ||||||
|   flex: 0 0 3rem; |   flex: 0 0 3rem; | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
|       "flags": {} |       "flags": {} | ||||||
|     } |     } | ||||||
|   ], |   ], | ||||||
|   "version": "10.0.6", |   "version": "10.0.9", | ||||||
|   "compatibility": { |   "compatibility": { | ||||||
|     "minimum": "10", |     "minimum": "10", | ||||||
|     "verified": "10", |     "verified": "10", | ||||||
| @@ -67,5 +67,5 @@ | |||||||
|   "background": "images/ui/imperium5_welcome_page.webp", |   "background": "images/ui/imperium5_welcome_page.webp", | ||||||
|   "url": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5", |   "url": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5", | ||||||
|   "manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-imperium5/raw/branch/master/system.json", |   "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": { |   "Actor": { | ||||||
|     "types": [ |     "types": [ | ||||||
|       "character" |       "character", | ||||||
|  |       "pm" | ||||||
|     ], |     ], | ||||||
|     "templates": { |     "templates": { | ||||||
|       "biodata": { |       "biodata": { | ||||||
| @@ -21,7 +22,8 @@ | |||||||
|           "description": "", |           "description": "", | ||||||
|           "rebuild": "", |           "rebuild": "", | ||||||
|           "contacts": "", |           "contacts": "", | ||||||
|           "gmnotes": "" |           "gmnotes": "", | ||||||
|  |           "archetype": "" | ||||||
|         } |         } | ||||||
|       }, |       }, | ||||||
|       "core": { |       "core": { | ||||||
| @@ -126,6 +128,20 @@ | |||||||
|           "seuil": 0, |           "seuil": 0, | ||||||
|           "reserve": 0 |           "reserve": 0 | ||||||
|         } |         } | ||||||
|  |       }, | ||||||
|  |       "pmcore": { | ||||||
|  |         "ames": { | ||||||
|  |           "niveau": 0, | ||||||
|  |           "intensite": 1, | ||||||
|  |           "riposte": 1, | ||||||
|  |           "cohesions": [ | ||||||
|  |             { | ||||||
|  |               "max": 1, | ||||||
|  |               "value": 1 | ||||||
|  |             } | ||||||
|  |           ], | ||||||
|  |           "rupture": 0 | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "character": { |     "character": { | ||||||
| @@ -133,6 +149,12 @@ | |||||||
|         "biodata", |         "biodata", | ||||||
|         "core" |         "core" | ||||||
|       ] |       ] | ||||||
|  |     }, | ||||||
|  |     "pm": { | ||||||
|  |       "templates": [ | ||||||
|  |         "biodata", | ||||||
|  |         "pmcore" | ||||||
|  |       ] | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "Item": { |   "Item": { | ||||||
| @@ -168,7 +190,7 @@ | |||||||
|       "description": "" |       "description": "" | ||||||
|     }, |     }, | ||||||
|     "ressource": { |     "ressource": { | ||||||
|       "value": 0, |       "ressource": 0, | ||||||
|       "description": "" |       "description": "" | ||||||
|     }, |     }, | ||||||
|     "capacite": { |     "capacite": { | ||||||
| @@ -178,15 +200,15 @@ | |||||||
|       "description": "" |       "description": "" | ||||||
|     }, |     }, | ||||||
|     "singularite": { |     "singularite": { | ||||||
|       "value": 0, |       "ressource": 0, | ||||||
|       "description": "" |       "description": "" | ||||||
|     }, |     }, | ||||||
|     "equipement": { |     "equipement": { | ||||||
|       "value": 0, |       "ressource": 0, | ||||||
|       "description": "" |       "description": "" | ||||||
|     }, |     }, | ||||||
|     "contact": { |     "contact": { | ||||||
|       "value": 0, |       "ressource": 0, | ||||||
|       "description": "" |       "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> | ||||||
| @@ -5,90 +5,118 @@ | |||||||
|   <h4 class=chat-actor-name>{{alias}}</h4> |   <h4 class=chat-actor-name>{{alias}}</h4> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|   <hr> | <hr> | ||||||
|  |  | ||||||
|   <div class="flexcol"> | <div class="flexcol"> | ||||||
|     </div> | </div> | ||||||
|  |  | ||||||
|     <div> | <div> | ||||||
|       <ul> |   <ul> | ||||||
|         <li>Réserve : {{humanFormula}}</li> |     <li class="imperium5-roll">Réserve : {{humanFormula}}</li> | ||||||
|         <li>Score :  |     <li>Score : | ||||||
|             ( |       ( | ||||||
|               {{#each resultsPC as |r k|}} |       {{#each resultsPC as |r k|}} | ||||||
|               {{#if @root.useSingularites}} |       {{#if @root.useSpecialite}} | ||||||
|                 <a class="apply-singularite common-button" data-result-index="{{k}}">{{r.result}}</a> |       <a class="apply-specialite common-button" data-result-index="{{k}}">{{r.result}}</a> | ||||||
|               {{else}} |       {{else}} | ||||||
|                 {{r.result}} |       {{r.result}} | ||||||
|               {{/if}} |       {{/if}} | ||||||
|               {{/each}} |       {{/each}} | ||||||
|             ) |       ) | ||||||
|             ( |       ( | ||||||
|               {{#each roll.terms.2.results as |r k|}} |       {{#each roll.terms.2.results as |r k|}} | ||||||
|               {{r.result}}  |       {{r.result}} | ||||||
|               {{/each}} |       {{/each}} | ||||||
|             ) |       ) | ||||||
|             ( |       ( | ||||||
|               {{#each roll.terms.4.results as |r k|}} |       {{#each roll.terms.4.results as |r k|}} | ||||||
|               {{r.result}}  |       {{r.result}} | ||||||
|               {{/each}} |       {{/each}} | ||||||
|             ) |       ) | ||||||
|         </li> |     </li> | ||||||
|  |  | ||||||
|         {{#if singulariteApplied}} |     {{#if specialiteApplied}} | ||||||
|         <li>Une Singularité a réduit de 1 le résultat du dé</li> |     <li>Une Spécialité a réduit de 1 le résultat du dé</li> | ||||||
|         {{/if}} |     {{/if}} | ||||||
|  |  | ||||||
|         {{#if usedParadigme}} |     {{#if usedParadigme}} | ||||||
|         <li>Paradigme utilisé : {{usedParadigme}}</li> |     <li>Paradigme utilisé : {{usedParadigme}}</li> | ||||||
|         {{/if}} |     {{/if}} | ||||||
|  |  | ||||||
|         <li>Seuil : {{seuil}} |     <li>Seuil : {{seuil}} | ||||||
|           {{#if (count paradigmes)}} |       {{#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}}" | ||||||
|               {{#select selectedParadigme}} |         data-dtype="String"> | ||||||
|               <option value="none">Pas de paradigme</option> |         {{#select selectedParadigme}} | ||||||
|               {{#each paradigmes as |para key|}} |         <option value="none">Pas de paradigme</option> | ||||||
|               <option value="{{para.key}}">{{para.label}} ({{para.value}})</option> |         {{#each paradigmes as |para key|}} | ||||||
|               {{/each}} |         <option value="{{para.key}}">{{para.label}} ({{para.value}})</option> | ||||||
|               {{/select}} |         {{/each}} | ||||||
|           </select>     |         {{/select}} | ||||||
|           {{/if}}   |       </select> | ||||||
|         </li> |       {{/if}} | ||||||
|  |     </li> | ||||||
|  |  | ||||||
|         <li>Succés : {{realSuccessPC}} |     <li>Unités de narration : {{realSuccessPC}} | ||||||
|           {{#if realSuccessPC}} |       {{#if realSuccessPC}} | ||||||
|             <select class="common-button transfer-success" type="text" value="{{nbSuccessSource}}" data-dtype="Number"> |       <select class="common-button transfer-success" type="text" value="{{nbSuccessSource}}" data-dtype="Number"> | ||||||
|               {{#select nbSuccessSource}} |         {{#select nbSuccessSource}} | ||||||
|               <option value="none">0 succès -> Source</option> |         <option value="none">0 -> Source</option> | ||||||
|               {{#times realSuccessPC}} |         {{#times realSuccessPC}} | ||||||
|               <option value="{{this}}">{{this}} succès -> Source</option> |         <option value="{{this}}">{{this}} -> Source</option> | ||||||
|               {{/times}} |         {{/times}} | ||||||
|               {{/select}} |         {{/select}} | ||||||
|             </select>     |       </select> | ||||||
|           {{/if}} |       {{/if}} | ||||||
|         </li> |     </li> | ||||||
|  |  | ||||||
|         {{#if sourceTransfer}} |     {{#if realSuccessPC}} | ||||||
|         <li>Succés transférés à la Source : {{sourceTransfer}}</li> |     <li>Ressource : | ||||||
|         {{/if}} |       <select class="common-button select-ressource" type="text" value="none" data-dtype="String"> | ||||||
|  |         {{#select "none"}} | ||||||
|         <li>Succés de Réalité : {{successGM}}</li> |         <option value="none">Aucun</option> | ||||||
|          |         {{#each ressources as |ressource key|}} | ||||||
|         <li>Unités de narration : {{nbUnitesNarration}}</li> |         <option value="{{ressource._id}}">{{ressource.name}} ({{ressource.system.ressource}})</option> | ||||||
|          |         {{/each}} | ||||||
|         {{#if nbKarma}} |         {{/select}} | ||||||
|         <li>Points de Karma utilisés : {{nbKarma}}</li> |       </select> | ||||||
|         {{/if}} |     </li> | ||||||
|  |     {{/if}} | ||||||
|         {{#if bonPresage}} |  | ||||||
|         <li>Bon Présage !</li> |  | ||||||
|         {{/if}} |  | ||||||
|         {{#if mauvaisPresage}} |  | ||||||
|         <li>Mauvais Présage !</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> |       </ul> | ||||||
|     </div> |     </li> | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|   </div> |     {{#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> | ||||||
|  |  | ||||||
|  |     {{#if nbKarma}} | ||||||
|  |     <li>Points de Karma utilisés : {{nbKarma}}</li> | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|  |     {{#if bonPresage}} | ||||||
|  |     <li>Bon Présage !</li> | ||||||
|  |     {{/if}} | ||||||
|  |     {{#if mauvaisPresage}} | ||||||
|  |     <li>Mauvais Présage !</li> | ||||||
|  |     {{/if}} | ||||||
|  |  | ||||||
|  |   </ul> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | </div> | ||||||
| @@ -9,33 +9,41 @@ | |||||||
|   <div class="flexcol"> |   <div class="flexcol"> | ||||||
|  |  | ||||||
|     <div class="flexrow"> |     <div class="flexrow"> | ||||||
|       <span class="roll-dialog-label">Malus : {{ameMalus}}</span> |       <span class="roll-dialog-label">Ruptures : {{ameMalus}}</span> | ||||||
|     </div> |     </div> | ||||||
|     <div class="flexrow"> |     <div class="flexrow"> | ||||||
|       <span class="roll-dialog-label">Utiliser l'Archetype ? : </span> |       <span class="roll-dialog-label">Utiliser l'Archetype ? : </span> | ||||||
|       <input class="ame-checkbox" id="select-use-archetype" type="checkbox" {{checked useArchetype}}> |       <input class="ame-checkbox" id="select-use-archetype" type="checkbox" {{checked useArchetype}}> | ||||||
|     </div> |     </div> | ||||||
|     <div class="flexrow"> |     <div class="flexrow"> | ||||||
|       <span class="roll-dialog-label">Aide d'un autre personnage ? : </span> |       <span class="roll-dialog-label">Aides ? : </span> | ||||||
|       <input class="ame-checkbox" id="select-use-aide" type="checkbox" {{checked useAide}}> |       <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> |     </div> | ||||||
|     {{#if karma}} |     {{#if karma}} | ||||||
|       <div class="flexrow"> |     <div class="flexrow"> | ||||||
|         <span class="roll-dialog-label">Utiliser une capacité : </span> |       <span class="roll-dialog-label">Utiliser une capacité : </span> | ||||||
|         <select class="roll-dialog-label" id="select-capacite" type="text" name="usedCapacite" value="{{usedCapacite}}" |       <select class="roll-dialog-label" id="select-capacite" type="text" name="usedCapacite" value="{{usedCapacite}}" | ||||||
|           data-dtype="Number"> |         data-dtype="Number"> | ||||||
|           {{#select usedCapacite}} |         {{#select usedCapacite}} | ||||||
|           <option value="none">Aucune</option> |         <option value="none">Aucune</option> | ||||||
|             {{#each capacites as |capa key|}} |         {{#each capacites as |capa key|}} | ||||||
|             <option value="{{capa._id}}">{{capa.name}} ({{capa.system.aide}})</option> |         <option value="{{capa._id}}">{{capa.name}} ({{capa.system.aide}})</option> | ||||||
|             {{/each}} |         {{/each}} | ||||||
|           {{/select}} |         {{/select}} | ||||||
|         </select> |       </select> | ||||||
|       </div> |     </div> | ||||||
|       <div class="flexrow"> |     <div class="flexrow"> | ||||||
|         <span class="roll-dialog-label">Utiliser 1 Point de Karma ? : </span> |       <span class="roll-dialog-label">Utiliser 1 Point de Karma ? : </span> | ||||||
|         <input class="ame-checkbox" id="select-use-karma" type="checkbox" {{checked useKarma}}> |       <input class="ame-checkbox" id="select-use-karma" type="checkbox" {{checked useKarma}}> | ||||||
|       </div> |     </div> | ||||||
|     {{/if}} |     {{/if}} | ||||||
|     <div class="flexrow"> |     <div class="flexrow"> | ||||||
|       <span class="roll-dialog-label">Total : <span id="ame-total">{{ame.value}}</span>d8</span> |       <span class="roll-dialog-label">Total : <span id="ame-total">{{ame.value}}</span>d8</span> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user