Compare commits

...

8 Commits

Author SHA1 Message Date
5e5ddd1c3b Rework combat 2023-04-08 20:21:09 +02:00
a72108db5b Rework combat 2023-04-08 18:50:30 +02:00
6a46faadc2 Rework combat 2023-04-08 18:49:54 +02:00
e95f7de0c5 Fix divers 2023-04-08 09:55:08 +02:00
9d3ef8cbeb CSS journal fix 2023-04-07 16:56:37 +02:00
c6ec1b74a2 Petits fixes 2023-03-13 20:39:38 +01:00
1b12dc44c9 Fiches de PNJ 2023-03-13 09:00:49 +01:00
f26cd7670c Various fixes 2023-03-11 12:11:27 +01:00
18 changed files with 956 additions and 240 deletions

View File

@@ -1,8 +1,7 @@
{ {
"ACTOR": { "ACTOR": {
"TypePersonnage": "Personnage", "TypePersonnage": "Personnage",
"TypeCellule": "Cellule", "TypePNJ": "PNJ"
"TypeCreature": "Créature"
}, },
"ITEM": { "ITEM": {

View File

@@ -0,0 +1,26 @@
/**
* Extend the basic ActorSheet with some very simple modifications
* @extends {ActorSheet}
*/
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
import { HeritiersUtility } from "./heritiers-utility.js";
/* -------------------------------------------- */
export class HeritiersActorPNJSheet extends HeritiersActorSheet {
/** @override */
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["fvtt-les-heritiers", "sheet", "actor"],
template: "systems/fvtt-les-heritiers/templates/actor-pnj-sheet.html",
width: 780,
height: 840,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
editScore: false
})
}
}

View File

@@ -14,8 +14,8 @@ export class HeritiersActorSheet extends ActorSheet {
return mergeObject(super.defaultOptions, { return mergeObject(super.defaultOptions, {
classes: ["fvtt-les-heritiers", "sheet", "actor"], classes: ["fvtt-les-heritiers", "sheet", "actor"],
template: "systems/fvtt-les-heritiers/templates/actor-sheet.html", template: "systems/fvtt-les-heritiers/templates/actor-sheet.html",
width: 640, width: 780,
height: 720, height: 840,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }], tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }], dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
editScore: false editScore: false
@@ -38,7 +38,8 @@ export class HeritiersActorSheet extends ActorSheet {
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)), effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
limited: this.object.limited, limited: this.object.limited,
skills: this.actor.getSkills(), skills: this.actor.getSkills(),
utileSkills :this.actor.organizeUtileSkills(), utileSkillsMental :this.actor.organizeUtileSkills("mental"),
utileSkillsPhysical :this.actor.organizeUtileSkills("physical"),
futileSkills :this.actor.organizeFutileSkills(), futileSkills :this.actor.organizeFutileSkills(),
contacts: this.actor.organizeContacts(), contacts: this.actor.organizeContacts(),
armes: duplicate(this.actor.getWeapons()), armes: duplicate(this.actor.getWeapons()),
@@ -60,10 +61,13 @@ export class HeritiersActorSheet extends ActorSheet {
secretsdecouverts: await TextEditor.enrichHTML(this.object.system.biodata.secretsdecouverts, {async: true}), secretsdecouverts: await TextEditor.enrichHTML(this.object.system.biodata.secretsdecouverts, {async: true}),
questions: await TextEditor.enrichHTML(this.object.system.biodata.questions, {async: true}), questions: await TextEditor.enrichHTML(this.object.system.biodata.questions, {async: true}),
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}), habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
playernotes: await TextEditor.enrichHTML(this.object.system.biodata.playernotes, {async: true}),
options: this.options, options: this.options,
owner: this.document.isOwner, owner: this.document.isOwner,
editScore: this.options.editScore, editScore: this.options.editScore,
isGM: game.user.isGM config: game.system.lesheritiers.config,
isGM: game.user.isGM,
isPNJ: (this.actor.type == "pnj")
} }
this.formData = formData; this.formData = formData;
@@ -136,6 +140,14 @@ export class HeritiersActorSheet extends ActorSheet {
const key = $(event.currentTarget).data("key") const key = $(event.currentTarget).data("key")
this.actor.rollCarac(key, false) this.actor.rollCarac(key, false)
}) })
html.find('.roll-rang').click((event) => {
const key = $(event.currentTarget).data("rang-key")
this.actor.rollRang(key, false)
})
html.find('.roll-root-competence').click((event) => {
const compKey = $(event.currentTarget).data("attr-key")
this.actor.rollRootCompetence(compKey)
})
html.find('.roll-competence').click((event) => { html.find('.roll-competence').click((event) => {
const li = $(event.currentTarget).parents(".item") const li = $(event.currentTarget).parents(".item")
let compId = li.data("item-id") let compId = li.data("item-id")

View File

@@ -46,11 +46,7 @@ export class HeritiersActor extends Actor {
} }
} }
} }
if (data.type == 'creature') { if (data.type == 'pnj') {
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.skills-creatures")
data.items = skills.map(i => i.toObject())
data.items.push({ name: "Arme naturelle 1", type: 'arme', img: "systems/fvtt-les-heritiers/assets/icons/melee.webp", system: { typearme: "contact", bonusmaniementoff: 0, seuildefense: 0, degats: "0" } })
data.items.push({ name: "Arme naturelle 2", type: 'arme', img: "systems/fvtt-les-heritiers/assets/icons/melee.webp", system: { typearme: "contact", bonusmaniementoff: 0, seuildefense: 0, degats: "0" } })
} }
return super.create(data, options); return super.create(data, options);
@@ -141,7 +137,7 @@ export class HeritiersActor extends Actor {
return this.getItemSorted( ["capacitenaturelle"]) return this.getItemSorted( ["capacitenaturelle"])
} }
getFee() { getFee() {
return this.items.filter(item => item.type =="fee") return this.items.find(item => item.type =="fee")
} }
getProfils() { getProfils() {
return this.getItemSorted( ["profil"]) return this.getItemSorted( ["profil"])
@@ -164,7 +160,7 @@ export class HeritiersActor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
prepareUtileSkill(item) { prepareUtileSkill(item) {
let specList = [] let specList = []
if (item.system.categorie == "utile") { if (item && item.system.categorie && item.system.categorie == "utile") {
for (let spec of item.system.specialites) { for (let spec of item.system.specialites) {
specList.push(spec.name) specList.push(spec.name)
} }
@@ -174,23 +170,25 @@ export class HeritiersActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
organizeUtileSkills() { organizeUtileSkills(kind = "mental") {
let comp = {} let comp = {}
for (let key in game.system.lesheritiers.config.competenceProfil) { for (let key in game.system.lesheritiers.config.competenceProfil) {
comp[key] = [] if ( game.system.lesheritiers.config.competenceProfil[key].kind == kind)
comp[key] = { skills: [], niveau: this.system.competences[key].niveau }
} }
for (let item of this.items) { for (let item of this.items) {
if (item.type == "competence") { if (item.type == "competence") {
if (item.system.categorie == "utile") { if (item.system.categorie == "utile" && comp[item.system.profil]) {
this.prepareUtileSkill(item) this.prepareUtileSkill(item)
comp[item.system.profil].push(item) comp[item.system.profil].skills.push(item)
} }
} }
} }
for (let key in comp) { for (let key in comp) {
HeritiersUtility.sortArrayObjectsByName(comp[key]) HeritiersUtility.sortArrayObjectsByName(comp[key].skills)
} }
return comp return Object.fromEntries(Object.entries(comp).sort())
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
organizeContacts() { organizeContacts() {
@@ -482,6 +480,20 @@ export class HeritiersActor extends Actor {
} }
return talents return talents
} }
/* -------------------------------------------- */
getCurrentParade() {
if ( this.system.statutmasque == "masque") {
return this.system.combat.parade.masquee
}
return this.system.combat.parade.demasquee
}
/* -------------------------------------------- */
getCurrentEsquive() {
if ( this.system.statutmasque == "masque") {
return this.system.combat.esquive.masquee
}
return this.system.combat.esquive.demasquee
}
/* -------------------------------------------- */ /* -------------------------------------------- */
getTricherie() { getTricherie() {
@@ -524,9 +536,15 @@ export class HeritiersActor extends Actor {
} }
if (compName) { if (compName) {
rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {}) rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
this.prepareUtileSkill(rollData.competence) if (rollData.competence && rollData.competence.name) {
rollData.actionImg = rollData.competence?.img this.prepareUtileSkill(rollData.competence)
rollData.actionImg = rollData.competence?.img
} else {
rollData.competence = undefined
}
} }
HeritiersUtility.updateWithTarget(rollData)
return rollData return rollData
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -553,6 +571,26 @@ export class HeritiersActor extends Actor {
rollDialog.render(true) rollDialog.render(true)
} }
/* -------------------------------------------- */
async rollRang(key, isInit = false) {
let rollData = this.getCommonRollData()
rollData.mode = "rang"
rollData.rang = this.system.rang[key]
rollData.rangKey = key
let rollDialog = await HeritiersRollDialog.create(this, rollData)
rollDialog.render(true)
}
/* -------------------------------------------- */
async rollRootCompetence(compKey) {
let rollData = this.getCommonRollData()
rollData.mode = "competence"
console.log("Compkey", compKey)
rollData.competence = {name: this.system.competences[compKey].label, system: { niveau: this.system.competences[compKey].niveau }}
console.log("RollDatra", rollData)
let rollDialog = await HeritiersRollDialog.create(this, rollData)
rollDialog.render(true)
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollCompetence(compId) { async rollCompetence(compId) {
let rollData = this.getCommonRollData(compId) let rollData = this.getCommonRollData(compId)

View File

@@ -25,12 +25,12 @@ export const HERITIERS_CONFIG = {
}, },
competenceProfil : { competenceProfil : {
"aventurier": "Aventurier", "aventurier": {kind: "physical", name: "Aventurier"},
"roublard": "Roublard", "roublard": {kind: "physical",name: "Roublard"},
"combattant": "Combattant", "combattant": {kind: "physical",name:"Combattant"},
"erudit": "Erudit", "erudit": {kind: "mental",name:"Erudit"},
"savant": "Savant", "savant": {kind: "mental",name:"Savant"},
"gentleman": "Gentleman" "gentleman": {kind: "mental",name:"Gentleman"}
}, },
baseTestPouvoir: { baseTestPouvoir: {
"feerie": "Féerie", "feerie": "Féerie",
@@ -50,6 +50,10 @@ export const HERITIERS_CONFIG = {
"passif": "Passif", "passif": "Passif",
"metamorphose": "Métamorphose" "metamorphose": "Métamorphose"
}, },
statutMasque: {
"masque": "Masqué",
"demasque":"Démasqué"
},
niveauPouvoir: { niveauPouvoir: {
"normal": "Normal", "normal": "Normal",
"profond": "Profond", "profond": "Profond",
@@ -60,20 +64,32 @@ export const HERITIERS_CONFIG = {
"demasque": "Démasqué" "demasque": "Démasqué"
}, },
seuilsDifficulte: { seuilsDifficulte: {
"0": "Aucun/Non applicable", "-1": "Aucun/Non applicable",
"5": "Enfantine", "5": "Enfantine",
"6": "Triviale", "6": "Triviale",
"7": "Moins Triviale",
"8": "Aisée", "8": "Aisée",
"7": "Moins Aisée",
"10": "Normale", "10": "Normale",
"11": "Moins Normale",
"12": "Compliquée", "12": "Compliquée",
"13": "Plus Compliquée",
"14": "Difficile", "14": "Difficile",
"15": "Plus Difficile",
"16": "Très Difficile", "16": "Très Difficile",
"17": "Très Très Difficile",
"18": "Critique", "18": "Critique",
"19": "Plus Critique",
"20": "Insurmontable", "20": "Insurmontable",
"20": "Très Insurmontable",
"22": "Surhumaine", "22": "Surhumaine",
"23": "Très Surhumaine",
"24": "Epique", "24": "Epique",
"25": "Plus Epique",
"26": "Légendaire", "26": "Légendaire",
"26": "Très Légendaire",
"28": "Mythique", "28": "Mythique",
"29": "Plus Mythique",
"30": "Divine" "30": "Divine"
}, },

View File

@@ -11,6 +11,7 @@
import { HeritiersActor } from "./heritiers-actor.js"; import { HeritiersActor } from "./heritiers-actor.js";
import { HeritiersItemSheet } from "./heritiers-item-sheet.js"; import { HeritiersItemSheet } from "./heritiers-item-sheet.js";
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js"; import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
import { HeritiersActorPNJSheet } from "./heritiers-actor-pnj-sheet.js";
import { HeritiersCreatureSheet } from "./heritiers-creature-sheet.js"; import { HeritiersCreatureSheet } from "./heritiers-creature-sheet.js";
import { HeritiersUtility } from "./heritiers-utility.js"; import { HeritiersUtility } from "./heritiers-utility.js";
import { HeritiersCombat } from "./heritiers-combat.js"; import { HeritiersCombat } from "./heritiers-combat.js";
@@ -55,7 +56,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-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true }) Actors.registerSheet("fvtt-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true })
Actors.registerSheet("fvtt-les-heritiers", HeritiersCreatureSheet, { types: ["creature"], makeDefault: true }) Actors.registerSheet("fvtt-les-heritiers", HeritiersActorPNJSheet, { types: ["pnj"], makeDefault: true })
Items.unregisterSheet("core", ItemSheet); Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true }) Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })

View File

@@ -13,32 +13,46 @@ export class HeritiersRollDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
constructor(actor, rollData, html, options, close = undefined) { constructor(actor, rollData, html, options, close = undefined) {
let buttons = {
rolld8: {
icon: '<i class="fas fa-check"></i>',
label: "Lancer 1d8",
callback: () => { this.roll("d8") }
},
rolld10: {
icon: '<i class="fas fa-check"></i>',
label: "Lancer 1d10",
callback: () => { this.roll("d10") }
},
rolld12: {
icon: '<i class="fas fa-check"></i>',
label: "Lancer 1d12",
callback: () => { this.roll("d12") }
}
}
if (rollData.tricherie) {
buttons["rollTricherie"] = {
icon: '<i class="fas fa-check"></i>',
label: "Lancer avec 1 Point de Tricherie",
callback: () => { this.roll("tricherie") }
}
}
if (rollData.heritage) {
buttons["rollHeritage"] = {
icon: '<i class="fas fa-check"></i>',
label: "Lancer avec 1 Point d'Héritage",
callback: () => { this.roll("heritage") }
}
}
buttons["Cancel"] = {
icon: '<i class="fas fa-times"></i>',
label: "Annuler",
callback: () => { this.close() }
}
let conf = { let conf = {
title: "Test de Capacité", title: "Test de Capacité",
content: html, content: html,
buttons: buttons: buttons,
{
rolld8: {
icon: '<i class="fas fa-check"></i>',
label: "Lancer 1d8",
callback: () => { this.roll("d8") }
},
rolld10: {
icon: '<i class="fas fa-check"></i>',
label: "Lancer 1d10",
callback: () => { this.roll("d10") }
},
rolld12: {
icon: '<i class="fas fa-check"></i>',
label: "Lancer 1d12",
callback: () => { this.roll("d12") }
},
cancel: {
icon: '<i class="fas fa-times"></i>',
label: "Annuler",
callback: () => { this.close() }
}
},
close: close close: close
} }
// Overwrite in case of carac only -> 1d10 // Overwrite in case of carac only -> 1d10
@@ -64,7 +78,16 @@ export class HeritiersRollDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
roll(dice) { roll(dice) {
this.rollData.mainDice = dice if (dice == "heritage") {
this.rollData.useHeritage = true
}
else {
if (dice == "tricherie") {
this.rollData.useTricherie = true
} else {
this.rollData.mainDice = dice
}
}
HeritiersUtility.rollHeritiers(this.rollData) HeritiersUtility.rollHeritiers(this.rollData)
} }

View File

@@ -42,32 +42,16 @@ export class HeritiersUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static sortByName(table) { static sortByName(table) {
return table.sort(function (a, b) { return table.sort(function (a, b) {
let fa = a.name.toLowerCase(), return a.name.localeCompare(b.name);
fb = b.name.toLowerCase();
if (fa < fb) {
return -1;
}
if (fa > fb) {
return 1;
}
return 0;
}) })
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static sortArrayObjectsByName(myArray) { static sortArrayObjectsByName(myArray) {
myArray.sort((a, b) => { myArray.sort((a, b) => {
let fa = a.name.toLowerCase(); return a.name.localeCompare(b.name);
let fb = b.name.toLowerCase();
if (fa < fb) {
return -1;
}
if (fa > fb) {
return 1;
}
return 0;
}) })
} }
@@ -130,6 +114,7 @@ export class HeritiersUtility {
'systems/fvtt-les-heritiers/templates/partial-item-header.html', 'systems/fvtt-les-heritiers/templates/partial-item-header.html',
'systems/fvtt-les-heritiers/templates/partial-item-description.html', 'systems/fvtt-les-heritiers/templates/partial-item-description.html',
'systems/fvtt-les-heritiers/templates/partial-item-nav.html', 'systems/fvtt-les-heritiers/templates/partial-item-nav.html',
'systems/fvtt-les-heritiers/templates/partial-utile-skills.html',
'systems/fvtt-les-heritiers/templates/partial-list-niveau.html' 'systems/fvtt-les-heritiers/templates/partial-list-niveau.html'
] ]
return loadTemplates(templatePaths); return loadTemplates(templatePaths);
@@ -284,88 +269,139 @@ export class HeritiersUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static computeMonnaieDetails(valueSC) { static computeMonnaieDetails(valueSC) {
let po = Math.floor(valueSC / 400) let po = Math.floor(valueSC / 400)
let pa = Math.floor((valueSC - (po*400)) / 20) let pa = Math.floor((valueSC - (po * 400)) / 20)
let sc = valueSC - (po*400) - (pa*20) let sc = valueSC - (po * 400) - (pa * 20)
return { return {
po: po, pa: pa, sc: sc, valueSC: valueSC po: po, pa: pa, sc: sc, valueSC: valueSC
} }
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static incDecHeritage() { static incDecHeritage() {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static computeResult(actor, rollData) { static computeResult(actor, rollData) {
rollData.diceResult = -1 let isTricherieHeritage = rollData.useHeritage || rollData.useTricherie
let resTab = []
for ( let res of rollData.roll.terms[0].results) {
rollData.diceResult = Math.max(res.result, rollData.diceResult)
resTab.push(res.result)
}
let isFailure = false
if (rollData.mainDice.includes("d10")) {
if ( rollData.diceResult == 1) {
rollData.finalResult -= 3
isFailure = true
}
}
if (rollData.mainDice.includes("d12")) {
if ( rollData.diceResult == 1 || rollData.diceResult == 2) {
rollData.finalResult -= 5
isFailure = true
}
}
// Heritage/Tricherie management
rollData.marge = 0 rollData.marge = 0
if (!isFailure && (rollData.useHeritage || rollData.useTricherie)) {
if (isTricherieHeritage) {
let resTab = [rollData.roll.terms[0].results[0].result, rollData.roll.terms[0].results[1].result, rollData.roll.terms[0].results[2].result]
rollData.diceResult = resTab[0] + "," + resTab[1] + "," + resTab[2]
let subResult = Math.max(Math.max(resTab[0], resTab[1]), resTab[2])
if (resTab[1] == 1) { resTab[1] -= 4 }
if (resTab[2] == 1) { resTab[2] -= 6 }
if (resTab[2] == 2) { resTab[2] -= 7 }
rollData.finalResult = rollData.roll.total - subResult + Math.max(Math.max(resTab[0], resTab[1]), resTab[2])
// Gestion des résultats spéciaux
resTab = resTab.sort() resTab = resTab.sort()
if ( (resTab[0] == resTab[1]) && (resTab[1] == resTab[2])) { if ((resTab[0] == resTab[1]) && (resTab[1] == resTab[2])) {
rollData.marge = 7 rollData.marge = 7
rollData.isSuccess = true rollData.isSuccess = true
rollData.isCriticalSuccess = true rollData.isCriticalSuccess = true
rollData.isBrelan = true
} }
if ((resTab[0]+1 == resTab[1]) && (resTab[1]+1 == resTab[2]) ) { if ((resTab[0] + 1 == resTab[1]) && (resTab[1] + 1 == resTab[2])) {
rollData.marge = 7 rollData.marge = 7
rollData.isSuccess = true rollData.isSuccess = true
rollData.isCriticalSuccess = true rollData.isCriticalSuccess = true
} rollData.isSuite = true
if ( rollData.useTricherie) { }
if (rollData.useTricherie) {
actor.incDecTricherie(-1) actor.incDecTricherie(-1)
} }
if ( rollData.useHeritage) { if (rollData.useHeritage) {
this.incDecHeritage() this.incDecHeritage()
} }
} else {
rollData.finalResult = rollData.roll.total
let rollValue = rollData.roll.terms[0].results[0].result
rollData.diceResult = rollData.roll.terms[0].results[0].result
if (rollData.mainDice.includes("d10")) {
if (rollValue == 1) {
rollData.finalResult -= 3 + rollValue // substract 3 and the 1 value that has been added
}
}
if (rollData.mainDice.includes("d12")) {
if (rollValue == 1 || rollValue == 2) {
rollData.finalResult -= 5 + rollValue // Remove also the dice result has it has been added already
}
}
} }
//rollData.finalResult = Math.max(rollData.finalResult, 0)
//console.log("Result : ", rollData) }
if (rollData.marge == 0 && rollData.sdValue > 0 ) {
rollData.marge = rollData.finalResult - rollData.sdValue /* -------------------------------------------- */
rollData.isSuccess = (rollData.finalResult >= rollData.sdValue) static computeArmeDegats(rollData, actor) {
rollData.isCriticalSuccess = ((rollData.finalResult - rollData.sdValue) >= 7) rollData.degatsArme = rollData.arme.system.degats + rollData.marge
rollData.isCriticalFailure = ((rollData.finalResult - rollData.sdValue) <= -7) if (rollData.arme.system.categorie == "lourde") {
rollData.degatsArme += actor.system.caracteristiques.for.value
} }
if (rollData.arme.system.categorie == "blanche" || rollData.arme.system.categorie == "improvise") {
rollData.degatsArme += Math.max(0, actor.system.caracteristiques.for.value - 2)
}
}
/* -------------------------------------------- */
static computeMarge(rollData, seuil) {
if (rollData.marge == 0 && seuil >= 0) {
rollData.marge = rollData.finalResult - seuil
rollData.isSuccess = (rollData.finalResult >= seuil)
rollData.isCriticalSuccess = ((rollData.finalResult - seuil) >= 7)
rollData.isCriticalFailure = ((rollData.finalResult - seuil) <= -7)
}
}
/* -------------------------------------------- */
static async displayUneDefense(rollData, actor, nomDefense, valeurDefense) {
rollData.defenderMode = nomDefense
rollData.defenderValue = valeurDefense
rollData.marge = 0
this.computeMarge(rollData, valeurDefense)
if (rollData.isSuccess) {
this.computeArmeDegats(rollData, actor)
}
this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-cc-result.html`, rollData)
}, rollData, "selfroll")
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async rollHeritiers(rollData) { static async rollHeritiers(rollData) {
let actor = this.getActorFromRollData(rollData) let actor = this.getActorFromRollData(rollData)
if (typeof (rollData.pvMalus) != "number") {
ui.notifications.warn("Votre personnage est Moribond(e). Aucun jet autorisé")
return
}
//rollData.actionImg = "systems/fvtt-les-heritiers/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp" //rollData.actionImg = "systems/fvtt-les-heritiers/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp"
rollData.carac = duplicate(actor.system.caracteristiques[rollData.caracKey]) rollData.carac = duplicate(actor.system.caracteristiques[rollData.caracKey])
rollData.nbDice = (rollData.useTricherie || rollData.useHeritage) ? 3 : 1 if (rollData.useTricherie || rollData.useHeritage) {
rollData.diceFormula = rollData.nbDice + rollData.mainDice + "kh1" rollData.diceFormula = "{1d8, 1d10, 1d12}"
//console.log("BEFORE COMP", rollData) } else {
rollData.diceFormula = "1" + rollData.mainDice + "kh1"
}
let rangValue = 0
if (rollData.rang) {
rangValue = rollData.rang.value
}
if (rollData.competence) { if (rollData.competence) {
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0 let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
let specBonus = (rollData.useSpecialite) ? 1 : 0 let specBonus = (rollData.useSpecialite) ? 1 : 0
rollData.diceFormula += `+${rollData.carac.value}+${rollData.competence.system.niveau}+${specBonus}+${rollData.bonusMalusContext}+${compmod}` rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.competence.system.niveau}+${specBonus}+${rollData.bonusMalusContext}+${compmod}`
} else if (rollData.pouvoirBase) { } else if (rollData.pouvoirBase) {
rollData.diceFormula += `+${rollData.pouvoirBase.value}+${rollData.bonusMalusContext}` rollData.diceFormula += `+${rollData.pouvoirBase.value}+${rangValue}+${rollData.bonusMalusContext}`
} else { } else {
rollData.diceFormula += `+${rollData.carac.value}+${rollData.bonusMalusContext}` rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.bonusMalusContext}`
} }
rollData.diceFormula += `+${rollData.pvMalus}` rollData.diceFormula += `+${rollData.pvMalus}`
@@ -373,28 +409,28 @@ export class HeritiersUtility {
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode")) await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
rollData.roll = myRoll rollData.roll = myRoll
console.log(">>>> ", myRoll) console.log(">>>> ", myRoll)
rollData.finalResult = myRoll.total
this.computeResult(actor, rollData) this.computeResult(actor, rollData)
this.computeMarge(rollData, rollData.sdValue) // Calcul de la marge si seuil présent
if (rollData.mode == "init") { if (rollData.mode == "init") {
actor.setFlag("world", "last-initiative", rollData.finalResult) actor.setFlag("world", "last-initiative", rollData.finalResult)
} }
// Compute damages, cf p 187
if (rollData.arme && rollData.isSuccess) {
rollData.degatsArme = rollData.arme.system.degats + rollData.marge
if (rollData.arme.system.categorie == "lourde" ) {
rollData.degatsArme += actor.system.caracteristiques.for.value
}
if (rollData.arme.system.categorie == "blanche" || rollData.arme.system.categorie == "improvise" ) {
rollData.degatsArme += Math.max(0, actor.system.caracteristiques.for.value - 2)
}
}
this.createChatWithRollMode(rollData.alias, { this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData) content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData)
}, rollData) }, rollData)
if (rollData.defenderTokenId && rollData.arme) {
if (rollData.arme.system.categorie != "trait" && rollData.arme.system.categorie != "poing" && rollData.arme.system.categorie != "epaule" ) {
await this.displayUneDefense(rollData, actor, "Parade", rollData.defenderParade)
await this.displayUneDefense(rollData, actor, "Esquive", rollData.defenderEsquive)
} else if (rollData.sdValue) {
this.displayUneDefense(rollData, actor, "A Distance", rollData.sdValue)
} else {
ui.notifications.warn("Pas de difficulté positionnée pour l'attaque à distance.")
}
}
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@@ -504,7 +540,7 @@ export class HeritiersUtility {
rollId: randomID(16), rollId: randomID(16),
rollMode: game.settings.get("core", "rollMode"), rollMode: game.settings.get("core", "rollMode"),
sdList: game.system.lesheritiers.config.seuilsDifficulte, sdList: game.system.lesheritiers.config.seuilsDifficulte,
sdValue: 0, sdValue: -1,
bonusMalusContext: 0 bonusMalusContext: 0
} }
return rollData return rollData
@@ -516,18 +552,17 @@ export class HeritiersUtility {
if (target) { if (target) {
rollData.defenderTokenId = target.id rollData.defenderTokenId = target.id
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
rollData.armeDefense = defender.getBestDefenseValue() rollData.defenderName = defender.name
rollData.targetVigueur = defender.getVigueur() rollData.defenderParade = defender.getCurrentParade()
if (rollData.armeDefense) { rollData.defenderEsquive = defender.getCurrentEsquive()
rollData.difficulte = rollData.armeDefense.system.totalDefensif
} else {
ui.notifications.warn("Aucune arme de défense équipée, difficulté manuelle à positionner.")
}
} }
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static createChatWithRollMode(name, chatOptions, rollData = undefined) { static createChatWithRollMode(name, chatOptions, rollData = undefined, rollMode = undefined) {
if (rollMode == undefined) {
rollMode = game.settings.get("core", "rollMode")
}
this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions, rollData) this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions, rollData)
} }

View File

@@ -78,9 +78,7 @@
.window-app input, .fvtt-les-heritiers .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, .fvtt-les-heritiers .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;
} }
.fvtt-les-heritiers .sheet-header select option {
background-color: rgb(68, 25, 25);
}
.fvtt-les-heritiers .sheet-header input, .fvtt-les-heritiers .sheet-header select { .fvtt-les-heritiers .sheet-header input, .fvtt-les-heritiers .sheet-header select {
color: rgb(41, 38, 38); color: rgb(41, 38, 38);
} }
@@ -88,6 +86,13 @@
background: rgba(0,0,0,0.75); background: rgba(0,0,0,0.75);
} }
.page-heading {
color: #151c1f;
}
.heading-link {
color: #151c1f;
}
.window-app.sheet .window-content { .window-app.sheet .window-content {
margin: 0; margin: 0;
padding: 0; padding: 0;
@@ -438,7 +443,7 @@ table {border: 1px solid #7a7971;}
background-repeat: repeat; background-repeat: repeat;
} }
.window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] { .window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header select, .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] {
/*color: rgba(36, 37, 37, 0.75);*/ /*color: rgba(36, 37, 37, 0.75);*/
/*background: rgba(255, 255, 255, 0.05);*/ /*background: rgba(255, 255, 255, 0.05);*/
/*border: 2px saddlebrown;*/ /*border: 2px saddlebrown;*/
@@ -653,6 +658,9 @@ ul, li {
padding-left: 0.25rem; padding-left: 0.25rem;
margin-right: 0.25rem; margin-right: 0.25rem;
} }
.specialisarion-margin {
margin-left: 1.5rem;
}
.short-label { .short-label {
flex-grow: 1; flex-grow: 1;
} }

View File

@@ -1,7 +1,7 @@
{ {
"id": "fvtt-les-heritiers", "id": "fvtt-les-heritiers",
"description": "Les Héritiers pour FoundryVTT", "description": "Les Héritiers pour FoundryVTT",
"version": "10.0.25", "version": "10.0.35",
"authors": [ "authors": [
{ {
"name": "Uberwald/LeRatierBretonnien", "name": "Uberwald/LeRatierBretonnien",
@@ -19,7 +19,7 @@
"gridUnits": "m", "gridUnits": "m",
"license": "LICENSE.txt", "license": "LICENSE.txt",
"manifest": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/raw/branch/master/system.json", "manifest": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/raw/branch/master/system.json",
"download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.0.25.zip", "download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.0.35.zip",
"languages": [ "languages": [
{ {
"lang": "fr", "lang": "fr",

View File

@@ -2,7 +2,7 @@
"Actor": { "Actor": {
"types": [ "types": [
"personnage", "personnage",
"creature" "pnj"
], ],
"templates": { "templates": {
"biodata": { "biodata": {
@@ -36,6 +36,7 @@
"habitat": "", "habitat": "",
"notes": "", "notes": "",
"statut": "", "statut": "",
"playernotes":"",
"gmnotes": "" "gmnotes": ""
} }
}, },
@@ -115,20 +116,25 @@
"max": 1 "max": 1
} }
}, },
"statutmasque": "masque",
"rang": { "rang": {
"tricherie": { "tricherie": {
"label": "Tricherie",
"value": 0, "value": 0,
"max": 0 "max": 0
}, },
"feerie": { "feerie": {
"label": "Féerie",
"value": 0, "value": 0,
"max": 0 "max": 0
}, },
"masque": { "masque": {
"label": "Masque",
"value": 0, "value": 0,
"max": 0 "max": 0
}, },
"heritage": { "heritage": {
"label": "Héritage",
"value": 0, "value": 0,
"max": 0, "max": 0,
"scenarios": 0 "scenarios": 0
@@ -141,31 +147,37 @@
"competences": { "competences": {
"aventurier": { "aventurier": {
"label": "Aventurier", "label": "Aventurier",
"niveau": 0,
"rang": 0, "rang": 0,
"pp": 0 "pp": 0
}, },
"combattant": { "combattant": {
"label": "Aventurier", "label": "Aventurier",
"niveau": 0,
"rang": 0, "rang": 0,
"pp": 0 "pp": 0
}, },
"erudit": { "erudit": {
"label": "Erudit", "label": "Erudit",
"niveau": 0,
"rang": 0, "rang": 0,
"pp": 0 "pp": 0
}, },
"gentleman": { "gentleman": {
"label": "Gentleman", "label": "Gentleman",
"niveau": 0,
"rang": 0, "rang": 0,
"pp": 0 "pp": 0
}, },
"roublard": { "roublard": {
"label": "Roublard", "label": "Roublard",
"niveau": 0,
"rang": 0, "rang": 0,
"pp": 0 "pp": 0
}, },
"savant": { "savant": {
"label": "Savant", "label": "Savant",
"niveau": 0,
"rang": 0, "rang": 0,
"pp": 0 "pp": 0
} }
@@ -180,6 +192,8 @@
"demasquee": 0 "demasquee": 0
}, },
"parade": { "parade": {
"masquee": 0,
"demasquee": 0,
"value": 0 "value": 0
}, },
"resistancephysique": { "resistancephysique": {
@@ -219,6 +233,12 @@
"biodata", "biodata",
"core" "core"
] ]
},
"pnj": {
"templates": [
"biodata",
"core"
]
} }
}, },
"Item": { "Item": {

View File

@@ -0,0 +1,480 @@
<form class="{{cssClass}}" autocomplete="off">
{{!-- Sheet Header --}}
<header class="sheet-header">
<div class="header-fields background-sheet-header">
<div class="flexrow">
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
<div class="flexcol">
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
<div class="flexrow">
<div class="flexrow">
<ul class="item-list alternate-list">
{{#each system.caracteristiques as |carac key|}}
{{#if (eq kind "physical")}}
<li class="item flexrow ">
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-dtype="Number" />
</li>
{{/if}}
{{/each}}
</ul>
</div>
<div class="flexrow">
<ul class="item-list alternate-list">
{{#each system.caracteristiques as |carac key|}}
{{#if (eq kind "mental")}}
<li class="item flexrow ">
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.caracteristiques.{{key}}.value" value="{{carac.value}}" data-dtype="Number" />
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.caracteristiques.{{key}}.rang" value="{{carac.rang}}" data-dtype="Number" />
</li>
{{/if}}
{{/each}}
</ul>
</div>
</div>
<div class="flexrow">
<label class="item-field-label-short">PV</label>
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" data-dtype="Number" />
<label class="item-field-label-short">Malus</label>
<input type="text" class="item-field-label-short" value="{{pvMalus}}" data-dtype="Number" disabled />
<span>&nbsp;&nbsp;</span>
<select class="item-field-label-medium" type="text" name="system.statutmasque" value="{{system.statutmasque}}" data-dtype="string">
{{#select system.statutmasque}}
{{#each config.statutMasque as |categ cKey|}}
<option value="{{cKey}}">{{categ}}</option>
{{/each}}
{{/select}}
</select>
<span>&nbsp;&nbsp;</span>
<label class="item-field-label-short">Tricherie</label>
<input type="text" class="item-field-label-short" name="system.rang.tricherie.value" value="{{system.rang.tricherie.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.rang.tricherie.max" value="{{system.rang.tricherie.max}}" data-dtype="Number" />
</div>
</div>
</div>
</header>
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="competences">Compétences</a>
<a class="item" data-tab="atouts">Atouts&Matériel</a>
<a class="item" data-tab="combat">Combat</a>
<a class="item" data-tab="notes">Notes</a>
</nav>
{{!-- Sheet Body --}}
<section class="sheet-body">
{{!-- Competence Tab --}}
<div class="tab competences" data-group="primary" data-tab="competences">
<div class="flexcol">
<div class="grid-2col">
<div>
{{#each utileSkillsPhysical as |skillDef keyProfil|}}
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil isPNJ=true}}
{{/each}}
</div>
<div>
{{#each utileSkillsMental as |skillDef keyProfil|}}
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil isPNJ=true}}
{{/each}}
</div>
</div>
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow">
<span class="item-field-label-long2">
<h3><label class="items-title-text">Compétences Futiles</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Niveau</label>
</span>
<div class="item-filler">&nbsp;</div>
</li>
{{#each futileSkills as |skill key|}}
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
<span class="item-field-label-long2 roll-style"><a class="roll-competence item-field-label-short"
data-attr-key="tochoose">{{skill.name}}</a></span>
<select class="item-field-label-short edit-item-data" type="text"
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
{{#select skill.system.niveau}}
{{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
{{/select}}
</select>
<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 combat" data-group="primary" data-tab="combat">
<ul class="item-list alternate-list">
<li class="item flexrow">
<button class="chat-card-button roll-initiative">Initiative (actuelle : {{initiative}} )</button>
</li>
<li class="item flexrow list-item items-title-bg">
<label class="item-field-label-medium"><strong>Esquive</strong></label>
<label class="item-field-label-medium">Masquée</label>
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
<label class="item-field-label-medium">Démasquée</label>
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
<label class="item-field-label-medium"><strong>Parade</strong></label>
<label class="item-field-label-medium">Masquée</label>
<input type="text" class="item-field-label-short" name="system.combat.parade.masquee" value="{{system.combat.parade.masquee}}" data-dtype="Number" />
<label class="item-field-label-medium">Démasquée</label>
<input type="text" class="item-field-label-short" name="system.combat.parade.demasquee" value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
</li>
<li class="item flexrow list-item items-title-bg">
<label class="item-field-label-long">Rés. physique</label>
<input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value" value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
<label class="item-field-label-long">Rés. psychique</label>
<input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value" value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
<label class="item-field-label-medium">Protection : </label>
<input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" />
</li>
<li class="item flexrow list-item items-title-bg">
<label class="item-field-label-long">Effets secondaires</label>
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" />
<label class="item-field-label-long">Dissimulation : </label>
<input type="text" class="item-field-label-short" name="system.combat.dissimulation.value" value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
</li>
<li class="item flexrow list-item items-title-bg">
<label class="item-field-label-long"><strong>Corps à Corps</strong></label>
<label class="item-field-label-medium">Masqué</label>
<input type="text" class="item-field-label-short" name="system.combat.corpsacorps.masquee" value="{{system.combat.corpsacorps.masquee}}" data-dtype="Number" />
<label class="item-field-label-medium">Démasqué</label>
<input type="text" class="item-field-label-short" name="system.combat.corpsacorps.demasquee" value="{{system.combat.corpsacorps.demasquee}}" data-dtype="Number" />
</li>
<li class="item flexrow list-item items-title-bg">
<label class="item-field-label-long"><strong>A distance</strong></label>
<label class="item-field-label-medium">Masqué</label>
<input type="text" class="item-field-label-short" name="system.combat.tir.masquee" value="{{system.combat.tir.masquee}}" data-dtype="Number" />
<label class="item-field-label-medium">Démasqué</label>
<input type="text" class="item-field-label-short" name="system.combat.tir.demasquee" value="{{system.combat.tir.demasquee}}" data-dtype="Number" />
</li>
</ul>
<div class="flexcol">
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Armes</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Attaque</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Dégats</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
class="fas fa-plus"></i></a>
</div>
</li>
{{#each armes as |arme key|}}
<li class="item flexrow " data-item-id="{{arme._id}}" data-item-type="arme">
<img class="item-name-img" src="{{arme.img}}" />
<span class="item-name-label competence-name">{{arme.name}}</span>
<span class="item-field-label-short">
<button class="roll-attaque-arme button-sheet-roll">Attaquer</button>
</span>
<span class="item-field-label-short">
{{arme.system.degats}}
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-equip" title="Worn">{{#if arme.system.equipped}}<i
class="fas fa-circle"></i>{{else}}<i class="fas fa-genderless"></i>{{/if}}</a>
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Protections</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Protection</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
class="fas fa-plus"></i></a>
</div>
</li>
{{#each protections as |protection key|}}
<li class="item flexrow " data-item-id="{{protection._id}}" data-item-type="protection">
<img class="item-name-img" src="{{protection.img}}" />
<span class="item-name-label competence-name">{{protection.name}}</span>
<span class="item-field-label-short arme-defensif"><label
class="arme-defensif">{{protection.system.protection}}</label>
</span>
<div class="item-filler">&nbsp;</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>
{{!-- atouts Tab --}}
<div class="tab atouts" data-group="primary" data-tab="atouts">
<div class="flexrow">
<li class="item flexrow " data-item-id="{{fee._id}}" data-item-type="avantage">
<img class="item-name-img" src="{{fee.img}}" />
<span class="item-field-label-long2">{{fee.name}}</span>
<div class="item-filler">&nbsp;</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>
</div>
<div class="flexrow">
<ul>
<li class="flexrow item">
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="feerie">Féerie</a></label>
<input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
<span class="item-field-label-long"></span>
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="masque">Masque</a></label>
<input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
</li>
</ul>
</div>
<div class="flexcol">
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Avantages</label></h3>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each avantages as |avantage key|}}
<li class="item flexrow " data-item-id="{{avantage._id}}" data-item-type="avantage">
<img class="item-name-img" src="{{avantage.img}}" />
<span class="item-field-label-long2">{{avantage.name}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Désavantages</label></h3>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each desavantages as |desavantage key|}}
<li class="item flexrow " data-item-id="{{desavantage._id}}" data-item-type="desavantage">
<img class="item-name-img" src="{{desavantage.img}}" />
<span class="item-field-label-long2">{{desavantage.name}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Atouts Féériques</label></h3>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each atouts as |atout key|}}
<li class="item flexrow " data-item-id="{{atout._id}}" data-item-type="atout">
<img class="item-name-img" src="{{atout.img}}" />
<span class="item-field-label-long2">{{atout.name}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header item-field-label-long2-img">
<h3><label class="items-title-text">Pouvoirs</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">Masque</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">Type</label>
</span>
<span class="item-field-label-medium">
<label class="short-label">Niveau</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each pouvoirs as |pouvoir key|}}
<li class="item flexrow " data-item-id="{{pouvoir._id}}" data-item-type="pouvoir">
<img class="item-name-img" src="{{pouvoir.img}}" />
{{#if pouvoir.system.istest}}
<span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
{{else}}
<span class="item-field-label-long2">{{pouvoir.name}}</span>
{{/if}}
<span class="item-field-label-medium">{{upperFirst pouvoir.system.masquetype}}</span>
<span class="item-field-label-medium">{{upperFirst pouvoir.system.pouvoirtype}}</span>
<span class="item-field-label-medium">{{upperFirst pouvoir.system.niveau}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Capacités Naturelles</label></h3>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each capacites as |capa key|}}
<li class="item flexrow " data-item-id="{{capa._id}}" data-item-type="capacite">
<img class="item-name-img" src="{{capa.img}}" />
<span class="item-field-label-long2">{{capa.name}}</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}}
</ul>
</div>
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Equipements</label></h3>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="equipement" title="Créer un équipement"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each equipements as |equip key|}}
<li class="item flexrow " data-item-id="{{equip._id}}" data-item-type="equipement">
<img class="item-name-img" src="{{equip.img}}" />
<span class="item-field-label-long2">{{equip.name}}</span>
<div class="item-filler">&nbsp;</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="tab notes" data-group="primary" data-tab="notes">
<span>
<h3>Historique</h3>
</span>
<div class="medium-editor item-text-long-line">
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
</div>
</div>
</section>
</form>

View File

@@ -41,14 +41,23 @@
</ul> </ul>
</div> </div>
</div> </div>
<div class="flexrow"> <div class="flexrow">
<label class="item-field-label-short">PV</label> <label class="item-field-label-short">PV</label>
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" data-dtype="Number" />
<label class="item-field-label-short">Malus</label> <label class="item-field-label-short">Malus</label>
<input type="text" class="item-field-label-short" value="{{pvMalus}}" data-dtype="Number" disabled /> <input type="text" class="item-field-label-short" value="{{pvMalus}}" data-dtype="Number" disabled />
<span>&nbsp;&nbsp;</span>
<select class="item-field-label-medium" type="text" name="system.statutmasque" value="{{system.statutmasque}}" data-dtype="string">
{{#select system.statutmasque}}
{{#each config.statutMasque as |categ cKey|}}
<option value="{{cKey}}">{{categ}}</option>
{{/each}}
{{/select}}
</select>
<span>&nbsp;&nbsp;</span> <span>&nbsp;&nbsp;</span>
<label class="item-field-label-short">Tricherie</label> <label class="item-field-label-short">Tricherie</label>
<input type="text" class="item-field-label-short" name="system.rang.tricherie.value" value="{{system.rang.tricherie.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.rang.tricherie.value" value="{{system.rang.tricherie.value}}" data-dtype="Number" />
@@ -78,42 +87,21 @@
<div class="flexcol"> <div class="flexcol">
{{#each utileSkills as |skillList keyProfil|}} <div class="grid-2col">
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow">
<span class="item-field-label-long">
<h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Niveau</label>
</span>
<div class="item-filler">&nbsp;</div>
</li>
{{#each skillList as |skill key|}}
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
<span class="item-field-label-long roll-style"><a class="roll-competence item-field-label-short"
data-attr-key="tochoose">{{skill.name}}</a></span>
<select class="item-field-label-short edit-item-data" type="text"
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
{{#select skill.system.niveau}}
{{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
{{/select}}
</select>
<input type="checkbox" class="item-field-label-short edit-item-data" data-item-field="predilection" {{checked skill.system.predilection}}/> <div>
{{#each utileSkillsPhysical as |skillDef keyProfil|}}
<span class="item-field-label-long2">{{skill.specList}}</span> {{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil}}
<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}} {{/each}}
</ul> </div>
<div>
{{#each utileSkillsMental as |skillDef keyProfil|}}
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil}}
{{/each}}
</div>
</div> </div>
{{/each}}
<div class="sheet-box color-bg-archetype"> <div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list"> <ul class="item-list alternate-list">
@@ -164,24 +152,31 @@
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
<label class="item-field-label-medium">Démasquée</label> <label class="item-field-label-medium">Démasquée</label>
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
<label class="item-field-label-short">&nbsp;&nbsp;</label>
<label class="item-field-label-medium"><strong>Parade</strong></label> <label class="item-field-label-medium"><strong>Parade</strong></label>
<input type="text" class="item-field-label-short" name="system.combat.parade.value" value="{{system.combat.parade.value}}" data-dtype="Number" /> <label class="item-field-label-medium">Masquée</label>
<input type="text" class="item-field-label-short" name="system.combat.parade.masquee" value="{{system.combat.parade.masquee}}" data-dtype="Number" />
<label class="item-field-label-medium">Démasquée</label>
<input type="text" class="item-field-label-short" name="system.combat.parade.demasquee" value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
</li> </li>
<li class="item flexrow list-item items-title-bg"> <li class="item flexrow list-item items-title-bg">
<label class="item-field-label-long">Rés. physique</label> <label class="item-field-label-long">Rés. physique</label>
<input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value" value="{{system.combat.resistancephysique.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value" value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
<label class="item-field-label-short">&nbsp;&nbsp;</label>
<label class="item-field-label-long">Rés. psychique</label> <label class="item-field-label-long">Rés. psychique</label>
<input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value" value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value" value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
<label class="item-field-label-short">&nbsp;&nbsp;</label>
<label class="item-field-label-medium">Protection : </label> <label class="item-field-label-medium">Protection : </label>
<input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" />
</li> </li>
<li class="item flexrow list-item items-title-bg"> <li class="item flexrow list-item items-title-bg">
<label class="item-field-label-long">Effets secondaires</label> <label class="item-field-label-long">Effets secondaires</label>
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" /> <input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" />
<label class="item-field-label-short">&nbsp;&nbsp;</label>
<label class="item-field-label-long">Dissimulation : </label> <label class="item-field-label-long">Dissimulation : </label>
<input type="text" class="item-field-label-short" name="system.combat.dissimulation.value" value="{{system.combat.dissimulation.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.combat.dissimulation.value" value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
</li> </li>
<li class="item flexrow list-item items-title-bg"> <!-- <li class="item flexrow list-item items-title-bg">
<label class="item-field-label-long"><strong>Corps à Corps</strong></label> <label class="item-field-label-long"><strong>Corps à Corps</strong></label>
<label class="item-field-label-medium">Masqué</label> <label class="item-field-label-medium">Masqué</label>
<input type="text" class="item-field-label-short" name="system.combat.corpsacorps.masquee" value="{{system.combat.corpsacorps.masquee}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.combat.corpsacorps.masquee" value="{{system.combat.corpsacorps.masquee}}" data-dtype="Number" />
@@ -194,7 +189,7 @@
<input type="text" class="item-field-label-short" name="system.combat.tir.masquee" value="{{system.combat.tir.masquee}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.combat.tir.masquee" value="{{system.combat.tir.masquee}}" data-dtype="Number" />
<label class="item-field-label-medium">Démasqué</label> <label class="item-field-label-medium">Démasqué</label>
<input type="text" class="item-field-label-short" name="system.combat.tir.demasquee" value="{{system.combat.tir.demasquee}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.combat.tir.demasquee" value="{{system.combat.tir.demasquee}}" data-dtype="Number" />
</li> </li> -->
</ul> </ul>
<div class="flexcol"> <div class="flexcol">
@@ -295,11 +290,11 @@
<div class="flexrow"> <div class="flexrow">
<ul> <ul>
<li class="flexrow item"> <li class="flexrow item">
<label class="item-field-label-medium">Féerie</label> <label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="feerie">Féerie</a></label>
<input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
<span class="item-field-label-long"></span> <span class="item-field-label-long"></span>
<label class="item-field-label-medium">Masque</label> <label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="masque">Masque</a></label>
<input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
</li> </li>
@@ -650,18 +645,28 @@
<div class="medium-editor item-text-long-line"> <div class="medium-editor item-text-long-line">
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}} {{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
</div> </div>
<span>
<h3>Notes diverses</h3>
</span>
<div class="medium-editor item-text-long-line">
{{editor playernotes target="system.biodata.playernotes" button=true owner=owner editable=editable}}
</div>
<span> <span>
<h3>Rêves étranges</h3> <h3>Rêves étranges</h3>
</span> </span>
<div class="medium-editor item-text-long-line"> <div class="medium-editor item-text-long-line">
{{editor revesetranges target="system.biodata.revesetranges" button=true owner=owner editable=editable}} {{editor revesetranges target="system.biodata.revesetranges" button=true owner=owner editable=editable}}
</div> </div>
<span> <span>
<h3>Secrets découverts</h3> <h3>Secrets découverts</h3>
</span> </span>
<div class="medium-editor item-text-long-line"> <div class="medium-editor item-text-long-line">
{{editor secretsdecouverts target="system.biodata.secretsdecouverts" button=true owner=owner editable=editable}} {{editor secretsdecouverts target="system.biodata.secretsdecouverts" button=true owner=owner editable=editable}}
</div> </div>
<span> <span>
<h3>Questions en suspens</h3> <h3>Questions en suspens</h3>
</span> </span>

View File

@@ -0,0 +1,34 @@
<div class="chat-message-header">
{{#if actorImg}}
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
{{/if}}
<h4 class=chat-actor-name>{{alias}}</h4>
</div>
<hr>
{{#if actionImg}}
<div>
<img class="chat-icon" src="{{actionImg}}" alt="{{name}}" />
</div>
{{/if}}
<div class="flexcol">
</div>
<div>
<ul>
<li>Défense de {{defenderName}} : {{defenderMode}} ({{defenderValue}})</li>
{{#if isSuccess}}
<li>Marge : {{marge}}</li>
<li>Degats de l'arme : {{degatsArme}}</li>
{{#if isCriticalSuccess}}
<Li>Critique : Aubaine ou +2 aux dégats ci-dessus</li>
{{/if}}
{{else}}
<li>Echec face à la {{defenderMode}} !</li>
{{/if}}
</ul>
</div>

View File

@@ -1,28 +0,0 @@
<div class="chat-message-header">
{{#if actorImg}}
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
{{/if}}
<h4 class=chat-actor-name>{{alias}}</h4>
</div>
<hr>
{{#if actionImg}}
<div>
<img class="chat-icon" src="{{actionImg}}" alt="{{name}}" />
</div>
{{/if}}
<div class="flexcol">
</div>
<div>
<ul>
<li>Arme : {{arme.name}} (+{{arme.system.totalDegats}})</li>
<li>Dégats : {{finalResult}}</li>
{{#if targetVigueur}}
<li>Vigueur de la cible : {{targetVigueur}}</li>
<li>Etats Combativité supplémentaires perdus (manuel): {{nbEtatPerdus}} </li>
{{/if}}
</ul>
</div>

View File

@@ -20,6 +20,10 @@
<ul> <ul>
<li class="heritiers-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li> <li class="heritiers-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
{{#if rang}}
<li>{{rang.label}} : {{rang.value}}</li>
{{/if}}
{{#if competence}} {{#if competence}}
<li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li> <li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li>
{{#if useSpecialite}} {{#if useSpecialite}}
@@ -38,26 +42,26 @@
<li>Formule : {{diceFormula}}</li> <li>Formule : {{diceFormula}}</li>
<li>Résultat du dé : {{diceResult}} </li> <li>Résultat du dé : {{diceResult}} </li>
<li>Total : {{finalResult}} (Marge : {{marge}})</li> <li>Total : {{finalResult}} {{#if (gt sdValue "-1")}}(Marge : {{marge}}){{/if}}</li>
{{#if (gt sdValue "-1")}}
{{#if sdValue}}
{{#if isSuccess}} {{#if isSuccess}}
<li class="chat-success">Succés... <li class="chat-success">Succès...
{{#if arme}}
<li>Dégats : {{degatsArme}}</li>
{{/if}}
</li> </li>
{{else}} {{else}}
<li class="chat-failure">Echec...</li> <li class="chat-failure">Echec...</li>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{#if isBrelan}}
<li class="chat-success">Brelan sur 3 dés !</li>
{{/if}}
{{#if isSuite}}
<li class="chat-success">Suite sur 3 dés !</li>
{{/if}}
{{#if isCriticalSuccess}} {{#if isCriticalSuccess}}
<li class="chat-success">Réussite Critique !!!</li> <li class="chat-success">Réussite Critique !!!</li>
{{#if arme}}
<li>Vous pouvez augmenter les dégats de +2 ou bien bénéficier d'une Aubaine.</li>
{{/if}}
{{/if}} {{/if}}
{{#if isCriticalFailure}} {{#if isCriticalFailure}}
<li class="chat-failure">Echec Critique !!!</li> <li class="chat-failure">Echec Critique !!!</li>

View File

@@ -0,0 +1,50 @@
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow">
{{#if isPNJ}}
<span class="item-field-label-long roll-style">
<a class="roll-root-competence item-field-label-short" data-attr-key="{{keyProfil}}">
<h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
</a>
</span>
{{else}}
<span class="item-field-label-long">
<h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
</span>
{{/if}}
<span class="item-field-label-short">
<label class="short-label">Niveau</label>
</span>
{{#if isPNJ}}
<span class="item-field-label-short">
<input type="text" data-dtype="Number" class="item-field-label-short" name="system.competences.{{keyProfil}}.niveau" value="{{skillDef.niveau}}">
</span>
{{/if}}
<div class="item-filler">&nbsp;</div>
</li>
{{#each skillDef.skills as |skill key|}}
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
<span class="item-field-label-long roll-style"><a class="roll-competence item-field-label-short"
data-attr-key="tochoose">{{skill.name}}</a></span>
<select class="item-field-label-short edit-item-data" type="text"
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
{{#select skill.system.niveau}}
{{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
{{/select}}
</select>
<input type="checkbox" class="item-field-label-short edit-item-data" data-item-field="predilection" {{checked skill.system.predilection}}/>
<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>
{{#if (count skill.specList)}}
<li class="item flexrow" data-item-id="{{skill._id}}" data-item-type="competence">
<span class="specialisarion-margin item-field-label-long2">{{skill.specList}}</span>
</li>
{{/if}}
{{/each}}
</ul>
</div>

View File

@@ -8,6 +8,13 @@
<div class="flexcol"> <div class="flexcol">
{{#if (eq mode "rang")}}
<div class="flexrow">
<span class="roll-dialog-label">{{rang.label}}</span>
<span class="roll-dialog-label">{{rang.value}}</span>
</div>
{{/if}}
{{#if (eq mode "carac")}} {{#if (eq mode "carac")}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Caracteristique</span> <span class="roll-dialog-label">Caracteristique</span>
@@ -64,20 +71,6 @@
<span class="small-label roll-dialog-label">{{pvMalus}}</span> <span class="small-label roll-dialog-label">{{pvMalus}}</span>
</div> </div>
{{#if tricherie}}
<div class="flexrow">
<span class="roll-dialog-label">Utiliser 1 point de Tricherie ({{tricherie}}) ?</span>
<input type="checkbox" class="item-field-label-short" id="useTricherie" {{checked useTricherie}}/>
</div>
{{/if}}
{{#if heritage}}
<div class="flexrow">
<span class="roll-dialog-label">Utiliser 1 point d'Heritage ? ({{heritage}})</span>
<input type="checkbox" class="item-field-label-short" id="useHeritage" {{checked useHeritage}}/>
</div>
{{/if}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Bonus/Malus </span> <span class="roll-dialog-label">Bonus/Malus </span>
<select class="roll-dialog-label" id="bonus-malus-context" type="text" value="{{bonusMalusContext}}" <select class="roll-dialog-label" id="bonus-malus-context" type="text" value="{{bonusMalusContext}}"