Compare commits

...

14 Commits

29 changed files with 1322 additions and 156 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
assets/icons/erudit.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
assets/icons/gentleman.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
assets/icons/profil.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
assets/icons/roublard.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@@ -1,8 +1,7 @@
{
"ACTOR": {
"TypePersonnage": "Personnage",
"TypeCellule": "Cellule",
"TypeCreature": "Créature"
"TypePNJ": "PNJ"
},
"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, {
classes: ["fvtt-les-heritiers", "sheet", "actor"],
template: "systems/fvtt-les-heritiers/templates/actor-sheet.html",
width: 640,
height: 720,
width: 780,
height: 840,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
editScore: false
@@ -38,10 +38,13 @@ export class HeritiersActorSheet extends ActorSheet {
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
limited: this.object.limited,
skills: this.actor.getSkills(),
utileSkills :this.actor.organizeUtileSkills(),
utileSkillsMental :this.actor.organizeUtileSkills("mental"),
utileSkillsPhysical :this.actor.organizeUtileSkills("physical"),
futileSkills :this.actor.organizeFutileSkills(),
contacts: this.actor.organizeContacts(),
armes: duplicate(this.actor.getWeapons()),
monnaies: duplicate(this.actor.getMonnaies()),
pouvoirs: duplicate(this.actor.getPouvoirs()),
fee: duplicate(this.actor.getFee() || {} ),
protections: duplicate(this.actor.getArmors()),
combat: this.actor.getCombatValues(),
@@ -50,14 +53,19 @@ export class HeritiersActorSheet extends ActorSheet {
atouts: duplicate(this.actor.getAtouts()),
capacites: duplicate(this.actor.getCapacites()),
desavantages: duplicate(this.actor.getDesavantages()),
profils: duplicate(this.actor.getProfils()),
pvMalus: this.actor.getPvMalus(),
initiative: this.actor.getFlag("world", "last-initiative") || -1,
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
revesetranges: await TextEditor.enrichHTML(this.object.system.biodata.revesetranges, {async: true}),
secretsdecouverts: await TextEditor.enrichHTML(this.object.system.biodata.secretsdecouverts, {async: true}),
questions: await TextEditor.enrichHTML(this.object.system.biodata.questions, {async: true}),
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
options: this.options,
owner: this.document.isOwner,
editScore: this.options.editScore,
isGM: game.user.isGM
isGM: game.user.isGM,
isPNJ: (this.actor.type == "pnj")
}
this.formData = formData;
@@ -130,11 +138,29 @@ export class HeritiersActorSheet extends ActorSheet {
const key = $(event.currentTarget).data("key")
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) => {
const li = $(event.currentTarget).parents(".item")
let compId = li.data("item-id")
this.actor.rollCompetence(compId)
})
html.find('.roll-attaque-arme').click((event) => {
const li = $(event.currentTarget).parents(".item")
let armeId = li.data("item-id")
this.actor.rollAttaqueArme(armeId)
})
html.find('.roll-pouvoir').click((event) => {
const li = $(event.currentTarget).parents(".item")
let pouvoirId = li.data("item-id")
this.actor.rollPouvoir(pouvoirId)
})
html.find('.item-add').click((event) => {
const itemType = $(event.currentTarget).data("type")

View File

@@ -39,13 +39,14 @@ export class HeritiersActor extends Actor {
if (data.type == 'personnage') {
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
data.items = skills.map(i => i.toObject())
data.items = []
for (let skill of skills) {
if (skill.system.categorie == "utile") {
data.items.push(skill.toObject())
}
if (data.type == 'creature') {
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" } })
}
}
if (data.type == 'pnj') {
}
return super.create(data, options);
@@ -103,35 +104,46 @@ export class HeritiersActor extends Actor {
}
/* ----------------------- --------------------- */
getItemSorted( types) {
let items = this.items.filter(item => types.includes(item.type )) || []
HeritiersUtility.sortArrayObjectsByName(items)
return items
}
getEquipments() {
return this.items.filter(item => item.type == "equipement")
return this.getItemSorted( ["equipement", "accessoire"] )
}
getAvantages() {
return this.items.filter(item => item.type == "avantage")
return this.getItemSorted( ["avantage"])
}
getDesavantages() {
return this.items.filter(item => item.type == "desavantage")
return this.getItemSorted( ["desavantage"])
}
getMonnaies() {
return this.items.filter(item => item.type == "monnaie")
return this.getItemSorted( ["monnaie"])
}
getArmors() {
return this.items.filter(item => item.type == "protection")
return this.getItemSorted( ["protection"])
}
getTalents() {
return this.items.filter(item => item.type == "talent")
return this.getItemSorted( ["talent"])
}
getContacts() {
return this.items.filter(item => item.type == "contact")
return this.getItemSorted( ["contact"])
}
getAtouts() {
return this.items.filter(item => item.type == "atoutfeerique")
return this.getItemSorted( ["atoutfeerique"])
}
getCapacites() {
return this.items.filter(item => item.type == "capacitenaturelle")
return this.getItemSorted( ["capacitenaturelle"])
}
getFee() {
return this.items.find(item => item.type == "fee")
return this.items.find(item => item.type =="fee")
}
getProfils() {
return this.getItemSorted( ["profil"])
}
getPouvoirs() {
return this.getItemSorted( ["pouvoir"])
}
/* -------------------------------------------- */
getSkills() {
@@ -146,19 +158,52 @@ export class HeritiersActor extends Actor {
}
/* -------------------------------------------- */
organizeUtileSkills() {
prepareUtileSkill(item) {
let specList = []
if (item.system.categorie == "utile") {
for (let spec of item.system.specialites) {
specList.push(spec.name)
}
}
item.nbSpec = specList.length
item.specList = specList.toString()
}
/* -------------------------------------------- */
organizeUtileSkills(kind = "mental") {
let comp = {}
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) {
if (item.type == "competence") {
if (item.system.categorie == "utile") {
comp[item.system.profil].push(item)
if (item.system.categorie == "utile" && comp[item.system.profil]) {
this.prepareUtileSkill(item)
comp[item.system.profil].skills.push(item)
}
}
}
return comp
for (let key in comp) {
HeritiersUtility.sortArrayObjectsByName(comp[key].skills)
}
return Object.fromEntries(Object.entries(comp).sort())
}
/* -------------------------------------------- */
organizeContacts() {
let contactList = {}
for (let item of this.items) {
if (item.type == "contact") {
let c = contactList[item.system.contacttype] || { label: game.system.lesheritiers.config.contactType[item.system.contacttype], list: [] }
c.list.push(item)
contactList[item.system.contacttype] = c
}
}
for (let key in contactList) {
HeritiersUtility.sortArrayObjectsByName(contactList[key].list)
}
return contactList
}
/* -------------------------------------------- */
@@ -171,6 +216,7 @@ export class HeritiersActor extends Actor {
}
}
}
HeritiersUtility.sortArrayObjectsByName(comp)
return HeritiersUtility.sortByName(comp)
}
@@ -251,11 +297,13 @@ export class HeritiersActor extends Actor {
let item = this.items.find(item => item.id == itemId)
if (item) {
console.log("Item ", item, itemField, dataType, value)
if (dataType) {
if (dataType.toLowerCase() == "number") {
value = Number(value)
} else {
value = String(value)
}
}
let update = { _id: item.id, [`system.${itemField}`]: value };
this.updateEmbeddedDocuments("Item", [update])
}
@@ -463,15 +511,18 @@ export class HeritiersActor extends Actor {
rollData.tricherie = this.getTricherie()
rollData.heritage = this.getHeritages()
rollData.useTricherie = false
rollData.useSpecialite = false
rollData.useHeritage = false
rollData.pvMalus = this.getPvMalus()
if (compId) {
rollData.competence = duplicate(this.items.get(compId) || {})
this.prepareUtileSkill(rollData.competence)
rollData.actionImg = rollData.competence?.img
}
if (compName) {
rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
this.prepareUtileSkill(rollData.competence)
rollData.actionImg = rollData.competence?.img
}
return rollData
@@ -500,6 +551,26 @@ export class HeritiersActor extends Actor {
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) {
let rollData = this.getCommonRollData(compId)
@@ -508,7 +579,43 @@ export class HeritiersActor extends Actor {
let rollDialog = await HeritiersRollDialog.create(this, rollData)
rollDialog.render(true)
}
/* -------------------------------------------- */
async rollAttaqueArme(armeId) {
let arme = this.items.get(armeId)
if (arme) {
let competenceName = "Tir"
let key = "prec"
if (arme.system.categorie == "blanche" || arme.system.categorie == "improvise") {
competenceName = "Mêlée"
key = "agi"
}
let rollData = this.getCommonRollData(undefined, competenceName)
rollData.carac = this.system.caracteristiques[key]
rollData.caracKey = key
rollData.arme = duplicate(arme)
rollData.mode = "arme"
let rollDialog = await HeritiersRollDialog.create(this, rollData)
rollDialog.render(true)
}
}
/* -------------------------------------------- */
async rollPouvoir(pouvoirId) {
let pouvoir = this.items.get(pouvoirId)
if (pouvoir) {
let rollData = this.getCommonRollData(undefined, undefined)
if ( pouvoir.system.feeriemasque != "autre") {
rollData.pouvoirBase = duplicate(this.system.rang[pouvoir.system.feeriemasque.toLowerCase()])
rollData.pouvoirBase.label = "Féerie"
rollData.carac = duplicate(this.system.caracteristiques[pouvoir.system.carac])
rollData.caracKey = pouvoir.system.carac
}
rollData.pouvoir = duplicate(pouvoir)
rollData.mode = "pouvoir"
let rollDialog = await HeritiersRollDialog.create(this, rollData)
rollDialog.render(true)
}
}
/* -------------------------------------------- */
async rollArmeOffensif(armeId) {
let arme = this.items.get(armeId)

View File

@@ -8,7 +8,7 @@ export const HERITIERS_CONFIG = {
"prec": "Précision",
"esp": "Esprit",
"per": "Perception",
"pres": "Présence",
"pres": "Prestance",
"san": "Sang-Froid"
},
@@ -17,17 +17,25 @@ export const HERITIERS_CONFIG = {
"futile": "Futile"
},
contactType: {
contact: "Contact",
allie: "Allié",
ennemi: "Ennemi",
interet: "Personne d'interêt"
},
competenceProfil : {
"aventurier": "Aventurier",
"roublard": "Roublard",
"combattant": "Combattant",
"erudit": "Erudit",
"savant": "Savant",
"gentleman": "Gentleman"
"aventurier": {kind: "physical", name: "Aventurier"},
"roublard": {kind: "physical",name: "Roublard"},
"combattant": {kind: "physical",name:"Combattant"},
"erudit": {kind: "mental",name:"Erudit"},
"savant": {kind: "mental",name:"Savant"},
"gentleman": {kind: "mental",name:"Gentleman"}
},
baseTestPouvoir: {
"feerie": "Féerie",
"Masque": "Masque"
"masque": "Masque",
"autre": "Autre"
},
resistancePouvoir: {
"aucune": "Aucune",

View File

@@ -15,8 +15,9 @@ export const defaultItemImg = {
arme: "systems/fvtt-les-heritiers/assets/icons/weapon.webp",
accessoire: "systems/fvtt-les-heritiers/assets/icons/item.webp",
protection: "systems/fvtt-les-heritiers/assets/icons/armor.webp",
fee: "systems/fvtt-les-heritiers/assets/icons/faery_type.webp"
fee: "systems/fvtt-les-heritiers/assets/icons/faery_type.webp",
profil: "systems/fvtt-les-heritiers/assets/icons/profil.webp",
equipement: "systems/fvtt-les-heritiers/assets/icons/equipement.webp",
}
/**

View File

@@ -11,6 +11,7 @@
import { HeritiersActor } from "./heritiers-actor.js";
import { HeritiersItemSheet } from "./heritiers-item-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 { HeritiersUtility } from "./heritiers-utility.js";
import { HeritiersCombat } from "./heritiers-combat.js";
@@ -55,7 +56,7 @@ Hooks.once("init", async function () {
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
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.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })

View File

@@ -90,6 +90,9 @@ export class HeritiersRollDialog extends Dialog {
html.find('#useTricherie').change((event) => {
this.rollData.useTricherie = event.currentTarget.checked
})
html.find('#useSpecialite').change((event) => {
this.rollData.useSpecialite = event.currentTarget.checked
})
html.find('#useHeritage').change((event) => {
this.rollData.useHeritage = event.currentTarget.checked
})

View File

@@ -44,15 +44,14 @@ export class HeritiersUtility {
/* -------------------------------------------- */
static sortByName(table) {
return table.sort(function (a, b) {
let fa = a.name.toLowerCase(),
fb = b.name.toLowerCase();
if (fa < fb) {
return -1;
return a.name.localeCompare(b.name);
})
}
if (fa > fb) {
return 1;
}
return 0;
/* -------------------------------------------- */
static sortArrayObjectsByName(myArray) {
myArray.sort((a, b) => {
return a.name.localeCompare(b.name);
})
}
@@ -115,6 +114,7 @@ export class HeritiersUtility {
'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-nav.html',
'systems/fvtt-les-heritiers/templates/partial-utile-skills.html',
'systems/fvtt-les-heritiers/templates/partial-list-niveau.html'
]
return loadTemplates(templatePaths);
@@ -337,24 +337,34 @@ export class HeritiersUtility {
static async rollHeritiers(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.carac = duplicate(actor.system.caracteristiques[rollData.caracKey])
rollData.nbDice = (rollData.useTricherie || rollData.useHeritage) ? 3 : 1
rollData.diceFormula = rollData.nbDice + rollData.mainDice + "kh1"
//console.log("BEFORE COMP", rollData)
let rangValue = 0
if (rollData.rang) {
rangValue = rollData.rang.value
}
if (rollData.competence) {
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
rollData.diceFormula += `+${rollData.carac.value}+${rollData.competence.system.niveau}+${rollData.bonusMalusContext}+${compmod}`
let specBonus = (rollData.useSpecialite) ? 1 : 0
rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.competence.system.niveau}+${specBonus}+${rollData.bonusMalusContext}+${compmod}`
} else if (rollData.pouvoirBase) {
rollData.diceFormula += `+${rollData.pouvoirBase.value}+${rangValue}+${rollData.bonusMalusContext}`
} else {
rollData.diceFormula += `+${rollData.carac.value}+${rollData.bonusMalusContext}`
rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.bonusMalusContext}`
}
rollData.diceFormula += `+${rollData.pvMalus}`
if (rollData.arme && rollData.arme.type == "arme") {
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
}
let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
rollData.roll = myRoll
@@ -366,6 +376,17 @@ export class HeritiersUtility {
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, {
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData)
}, rollData)

File diff suppressed because one or more lines are too long

View File

@@ -647,7 +647,15 @@ ul, li {
margin: 4px 0;
padding-top: 7px;
}
.roll-style {
background-color: rgba(56, 32, 32, 0.4);
border-radius: 0.25rem;
padding-left: 0.25rem;
margin-right: 0.25rem;
}
.specialisarion-margin {
margin-left: 1.5rem;
}
.short-label {
flex-grow: 1;
}
@@ -1426,6 +1434,10 @@ ul, li {
max-width: 14rem;
min-width: 14rem;
}
.item-field-label-long2-img {
max-width: 16rem;
min-width: 16rem;
}
.item-field-label-long3 {
padding-top: 6px;
flex-grow:1;

View File

@@ -1,7 +1,7 @@
{
"id": "fvtt-les-heritiers",
"description": "Les Héritiers pour FoundryVTT",
"version": "10.0.14",
"version": "10.0.29",
"authors": [
{
"name": "Uberwald/LeRatierBretonnien",
@@ -19,7 +19,7 @@
"gridUnits": "m",
"license": "LICENSE.txt",
"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.14.zip",
"download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.0.29.zip",
"languages": [
{
"lang": "fr",

View File

@@ -2,20 +2,27 @@
"Actor": {
"types": [
"personnage",
"creature"
"pnj"
],
"templates": {
"biodata": {
"biodata": {
"name": "",
"activite":"",
"profilmajeur": "",
"profilmineur": "",
"nomhumain": "",
"activites": "",
"fortune": 0,
"traitscaracteres": "",
"tailledemasquee": "",
"taillemasquee": "",
"poidsmasquee": "",
"poidsdemasquee": "",
"apparencemasquee": "",
"apparencedemasquee": "",
"titrefamille": "",
"langues": "",
"factionfeerique": "",
"typetaille": "",
"age": 0,
"poids": "",
"taille": "",
@@ -23,6 +30,9 @@
"sexe": "",
"yeux": "",
"description": "",
"revesetranges": "",
"secretsdecouverts": "",
"questions": "",
"habitat": "",
"notes": "",
"statut": "",
@@ -87,8 +97,8 @@
"max": 1
},
"pres": {
"label": "Présence",
"labelnorm": "presence",
"label": "Prestance",
"labelnorm": "prestance",
"abbrev": "pre",
"kind": "mental",
"value": 1,
@@ -107,18 +117,22 @@
},
"rang": {
"tricherie": {
"label": "Tricherie",
"value": 0,
"max": 0
},
"feerie": {
"label": "Féerie",
"value": 0,
"max": 0
},
"masque": {
"label": "Masque",
"value": 0,
"max": 0
},
"heritage": {
"label": "Héritage",
"value": 0,
"max": 0,
"scenarios": 0
@@ -131,31 +145,37 @@
"competences": {
"aventurier": {
"label": "Aventurier",
"niveau": 0,
"rang": 0,
"pp": 0
},
"combattant": {
"label": "Aventurier",
"niveau": 0,
"rang": 0,
"pp": 0
},
"erudit": {
"label": "Erudit",
"niveau": 0,
"rang": 0,
"pp": 0
},
"gentleman": {
"label": "Gentleman",
"niveau": 0,
"rang": 0,
"pp": 0
},
"roublard": {
"label": "Roublard",
"niveau": 0,
"rang": 0,
"pp": 0
},
"savant": {
"label": "Savant",
"niveau": 0,
"rang": 0,
"pp": 0
}
@@ -170,6 +190,8 @@
"demasquee": 0
},
"parade": {
"masquee": 0,
"demasquee": 0,
"value": 0
},
"resistancephysique": {
@@ -209,6 +231,12 @@
"biodata",
"core"
]
},
"pnj": {
"templates": [
"biodata",
"core"
]
}
},
"Item": {
@@ -233,15 +261,17 @@
"competence",
"arme",
"protection",
"equipement",
"accessoire",
"contact",
"profil"
],
"profil": {
"profiltype": "majeur",
"description": ""
},
"contact": {
"feetype": 0,
"contacttype": "",
"description": ""
},
"fee": {
@@ -281,6 +311,8 @@
"activation": "",
"istest": false,
"feeriemasque": "feerie",
"zoneffet": "",
"testautre": "",
"carac": "pre",
"duree": "",
"cibles": "",

View File

@@ -0,0 +1,470 @@
<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>
<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

@@ -14,7 +14,7 @@
{{#each system.caracteristiques as |carac key|}}
{{#if (eq kind "physical")}}
<li class="item flexrow ">
<h4 class="item-name-label competence-name"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
<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"
@@ -30,7 +30,7 @@
{{#each system.caracteristiques as |carac key|}}
{{#if (eq kind "mental")}}
<li class="item flexrow ">
<h4 class="item-name-label competence-name"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
<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"
@@ -62,10 +62,12 @@
{{!-- 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="fee">Fée</a>
<a class="item" data-tab="combat">Combat</a>
<a class="item" data-tab="equipement">Equipement</a>
<a class="item" data-tab="fee">Fée</a>
<a class="item" data-tab="biodata">Bio&Notes</a>
<a class="item" data-tab="contact">Contacts</a>
<a class="item" data-tab="biodata">Bio</a>
<a class="item" data-tab="notes">Notes</a>
</nav>
{{!-- Sheet Body --}}
@@ -76,43 +78,21 @@
<div class="flexcol">
{{#each utileSkills as |skillList keyProfil|}}
<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"><a class="roll-competence item-field-label-short"
data-attr-key="tochoose">{{skill.name}}</a></span>
<select class="item-field-label-short" 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="grid-2col">
<input type="checkbox" class="item-field-label-short" name="skill.system.predilection" {{checked skill.system.predilection}}/>
{{#each skill.system.specialites as |specialite key|}}
<span class="item-field-label-long2">{{specialite.name}}</span>
<div>
{{#each utileSkillsPhysical as |skillDef keyProfil|}}
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil}}
{{/each}}
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
</div>
</li>
<div>
{{#each utileSkillsMental as |skillDef keyProfil|}}
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil}}
{{/each}}
</ul>
</div>
{{/each}}
</div>
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
@@ -127,10 +107,10 @@
</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"><a class="roll-competence item-field-label-short"
<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" type="text"
<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}}
@@ -164,7 +144,10 @@
<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>
<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 class="item flexrow list-item items-title-bg">
<label class="item-field-label-long">Rés. physique</label>
@@ -207,9 +190,6 @@
<span class="item-field-label-short">
<label class="short-label">Attaque</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Défense</label>
</span>
<span class="item-field-label-short">
<label class="short-label">Dégats</label>
</span>
@@ -225,11 +205,11 @@
<span class="item-name-label competence-name">{{arme.name}}</span>
<span class="item-field-label-short">
<button class="roll-arme-offensif button-sheet-roll">Attaquer</button>
<button class="roll-attaque-arme button-sheet-roll">Attaquer</button>
</span>
<span class="item-field-label-short">
<button class="roll-arme-degats button-sheet-roll">{{arme.system.totalDegats}}</button>
{{arme.system.degats}}
</span>
<div class="item-filler">&nbsp;</div>
@@ -297,11 +277,11 @@
<div class="flexrow">
<ul>
<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.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
<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.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
</li>
@@ -382,6 +362,48 @@
</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">
@@ -411,15 +433,137 @@
</div>
{{!-- Equipement Tab --}}
<div class="tab equipement" data-group="primary" data-tab="equipement">
<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>
{{!-- Contact Tab --}}
<div class="tab contact" data-group="primary" data-tab="contact">
<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-long3">
<h3><label class="items-title-text">Contacts, Allies et Ennemis</label></h3>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="contact" title="Créer un contact"><i class="fas fa-plus"></i></a>
</div>
</li>
</div>
{{#each contacts as |contactList idx|}}
<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">{{contactList.label}}</label></h3>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="contact" title="Créer un contact"><i class="fas fa-plus"></i></a>
</div>
</li>
{{#each contactList.list as |contact key|}}
<li class="item flexrow " data-item-id="{{contact._id}}" data-item-type="contact">
<img class="item-name-img" src="{{contact.img}}" />
<span class="item-field-label-long2">{{contact.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>
{{/each}}
</div>
{{!-- Biography Tab --}}
<div class="tab biodata" data-group="primary" data-tab="biodata">
<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">Profils</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">Type</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each profils as |profil key|}}
<li class="item flexrow " data-item-id="{{profil._id}}" data-item-type="profil">
<img class="item-name-img" src="{{profil.img}}" />
<span class="item-field-label-long2">{{profil.name}}</span>
<span class="item-field-label-medium">{{upperFirst profil.system.profiltype}}</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="flexrow">
<ul>
<li class="flexrow item">
<label class="item-field-label-long2">Nom humain</label> <input type="text" class="" name="system.biodata.nomhumain" value="{{system.biodata.nomhumain}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Activités</label> <input type="text" class="" name="system.biodata.activites" value="{{system.biodata.activites}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Apparence masquée</label> <input type="text" class="" name="system.biodata.apparencemasquee" value="{{system.biodata.apparencemasquee}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Apparence démasquée</label> <input type="text" class="" name="system.biodata.apparencedemasquee" value="{{system.biodata.apparencedemasquee}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Titre et Famille</label> <input type="text" class="" name="system.biodata.titrefamille" value="{{system.biodata.titrefamille}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Factions féériques</label> <input type="text" class="" name="system.biodata.factionfeerique" value="{{system.biodata.factionfeerique}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Traits de caractères dominants</label> <input type="text" class="" name="system.biodata.traitscaracteres" value="{{system.biodata.traitscaracteres}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Langues</label> <input type="text" class="" name="system.biodata.langues" value="{{system.biodata.langues}}" data-dtype="String" />
</li>
</ul>
</div>
@@ -427,7 +571,12 @@
<div>
<ul>
<li class="flexrow item">
<label class="generic-label">Sexe</label>
<label class="generic-label">Fortune</label>
<input type="text" class="" name="system.biodata.fortune" value="{{system.biodata.fortune}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Genre</label>
<input type="text" class="" name="system.biodata.sex" value="{{system.biodata.sex}}"
data-dtype="String" />
</li>
@@ -441,18 +590,18 @@
<div>
<ul>
<li class="item flexrow">
<label class="generic-label">Taille</label>
<input type="text" class="" name="system.biodata.size" value="{{system.biodata.size}}"
<label class="generic-label">Taille Masquée</label>
<input type="text" class="" name="system.biodata.taillemasquee" value="{{system.biodata.taillemasquee}}"
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}}"
<label class="generic-label">Taille Démasquée</label>
<input type="text" class="" name="system.biodata.tailledemasquee" value="{{system.biodata.tailledemasquee}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Expérience</label>
<input type="text" class="" name="system.experience.value" value="{{system.experience.value}}"
<label class="generic-label">Type de taille</label>
<input type="text" class="" name="system.experience.typetaille" value="{{system.experience.typetaille}}"
data-dtype="String" />
</li>
@@ -462,31 +611,45 @@
<div>
<ul>
<li class="item flexrow">
<label class="generic-label">Yeux</label>
<input type="text" class="" name="system.biodata.eyes" value="{{system.biodata.eyes}}"
<label class="generic-label">Poids Masqué</label>
<input type="text" class="" name="system.biodata.poidsmasquee" value="{{system.biodata.poidsmasquee}}"
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="flexrow item">
<label class="generic-label">Poids</label>
<input type="text" class="" name="system.biodata.weight" value="{{system.biodata.weight}}"
<li class="item flexrow">
<label class="generic-label">Poids Démasqué</label>
<input type="text" class="" name="system.biodata.poidsdemasquee" value="{{system.biodata.poidsdemasquee}}"
data-dtype="String" />
</li>
</ul>
</div>
</div>
</div>
<div class="tab notes" data-group="primary" data-tab="notes">
<span>
<h3>Description</h3>
<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>
<span>
<h3>Rêves étranges</h3>
</span>
<div class="medium-editor item-text-long-line">
{{editor revesetranges target="system.biodata.revesetranges" button=true owner=owner editable=editable}}
</div>
<span>
<h3>Secrets découverts</h3>
</span>
<div class="medium-editor item-text-long-line">
{{editor secretsdecouverts target="system.biodata.secretsdecouverts" button=true owner=owner editable=editable}}
</div>
<span>
<h3>Questions en suspens</h3>
</span>
<div class="medium-editor item-text-long-line">
{{editor questions target="system.biodata.questions" button=true owner=owner editable=editable}}
</div>
</div>

View File

@@ -18,20 +18,39 @@
<div>
<ul>
<li class="hawkmoon-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}}
<li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li>
{{#if useSpecialite}}
<li>Bonus de spécialité +1</li>
{{/if}}
{{/if}}
{{#if arme}}
<li>Attaque avec : {{arme.name}}</li>
{{/if}}
{{#if pouvoir}}
<li>Pouvoir : {{pouvoir.name}}</li>
<li>Effet : {{pouvoir.system.effet}}</li>
{{/if}}
<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}}</li>
{{#if sdValue}}
{{#if isSuccess}}
<li class="chat-success">Succés...
{{#if arme}}
<li>Dégats : {{degatsArme}}</li>
{{/if}}
</li>
{{else}}
<li class="chat-failure">Echec...</li>
@@ -40,6 +59,9 @@
{{#if isCriticalSuccess}}
<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 isCriticalFailure}}
<li class="chat-failure">Echec Critique !!!</li>

View File

@@ -11,16 +11,20 @@
<div class="tab details" data-group="primary" data-tab="details">
<ul class="item-list alternate-list">
<li class="flexrow item">
<li class="flexrow item">
<label class="generic-label item-field-label-long">Type : </label>
<select class="item-field-label-long" type="text" name="system.contacttype" value="{{system.contacttype}}" data-dtype="String">
{{#select system.contacttype}}
<option value="contact">Contact</option>
<option value="allie">Allié</option>
<option value="ennemi">Ennemis</option>
<option value="interet">Personne d'interêt</option>
{{/select}}
</select>
</li>
<li class="flexrow item">
<label class="generic-label item-field-label-long">Niveau : </label>
<select class="item-field-label-long" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number">
{{#select system.niveau}}

View File

@@ -0,0 +1,40 @@
<form class="{{cssClass}}" autocomplete="off">
{{> systems/fvtt-les-heritiers/templates/partial-item-header.html}}
{{> systems/fvtt-les-heritiers/templates/partial-item-nav.html}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-les-heritiers/templates/partial-item-description.html}}
<div class="tab details" data-group="primary" data-tab="details">
<ul class="item-list alternate-list">
<li class="flexrow item">
<label class="generic-label item-field-label-long">Lieu : </label>
<input type="text" class="item-field-label-long" name="system.lieu"
value="{{system.lieu}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label item-field-label-long">Prix : </label>
<input type="text" class="item-field-label-short" name="system.prix"
value="{{system.prix}}" data-dtype="Number" />
</li>
<li class="flexrow item">
<label class="generic-label item-field-label-long">Quantité : </label>
<input type="text" class="item-field-label-short" name="system.quantite"
value="{{system.quantite}}" data-dtype="Number" />
</li>
<li class="flexrow item">
<label class="generic-label item-field-label-long">Equipé ? : </label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.equipped" {{checked system.equipped}}/>
</li>
</div>
</section>
</form>

View File

@@ -73,6 +73,12 @@
</select>
</li>
{{#if (eq system.feeriemasque "autre")}}
<li class="flexrow item">
<label class="generic-label item-field-label-long2">Jet </label>
<input type="text" class="padd-right status-small-label color-class-common item-field-label-long3" name="system.testautre" value="{{system.testautre}}" data-dtype="String" />
</li>
{{else}}
<li class="flexrow item">
<label class="generic-label item-field-label-long2">+ Carac </label>
<select class="status-small-label color-class-common item-field-label-long" type="text"
@@ -86,12 +92,19 @@
</li>
{{/if}}
{{/if}}
<li class="flexrow item">
<label class="generic-label item-field-label-long2">Cibles </label>
<input type="text" class="padd-right status-small-label color-class-common item-field-label-long3"
name="system.cibles" value="{{system.cibles}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label item-field-label-long2">Durée </label>
<input type="text" class="padd-right status-small-label color-class-common item-field-label-long3" name="system.duree" value="{{system.duree}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label item-field-label-long2">Effet </label>
<textarea rows="6" type="text" class="padd-right color-class-common item-field-label-long3" name="system.effet"
@@ -124,6 +137,13 @@
</li>
{{/if}}
<li class="flexrow item">
<label class="generic-label item-field-label-long2">Zone d'effet </label>
<input type="text" class="padd-right status-small-label color-class-common item-field-label-long3"
name="system.zoneeffet" value="{{system.zoneeffet}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label item-field-label-long2">Virulence (ie Poison) ? </label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"

View File

@@ -12,8 +12,15 @@
<div class="tab details" data-group="primary" data-tab="details">
<ul class="item-list alternate-list">
<li class="flexrow item">
<label class="generic-label item-field-label-long">Type : </label>
<select class="item-field-label-long" type="text" name="system.profiltype" value="{{system.profiltype}}" data-dtype="String">
{{#select system.profiltype}}
<option value="mineur">Mineur</option>
<option value="majeur">Majeur</option>
{{/select}}
</select>
</li>
</ul>
</div>

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">
{{#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")}}
<div class="flexrow">
<span class="roll-dialog-label">Caracteristique</span>
@@ -31,6 +38,32 @@
<span class="roll-dialog-label">{{competence.name}}</span>
<span class="small-label roll-dialog-label">{{competence.system.niveau}}</span>
</div>
{{#if competence.nbSpec}}
<div class="flexrow">
<span class="roll-dialog-label">Spécialités : {{competence.specList}}</span>
</div>
<div class="flexrow">
<span class="roll-dialog-label">Bonus de spécialité ?</span>
<input type="checkbox" class="item-field-label-short" id="useSpecialite" {{checked useSpecialite}}/>
</div>
{{/if}}
{{/if}}
{{#if pouvoir}}
<div class="flexrow">
<span class="roll-dialog-label">Pouvoir : </span>
<span class="small-label roll-dialog-label">{{pouvoir.name}}</span>
</div>
<div class="flexrow">
<span class="roll-dialog-label">Activation : </span>
<span class="small-label roll-dialog-label">{{pouvoir.system.activation}}</span>
</div>
{{#if pouvoirBase}}
<div class="flexrow">
<span class="roll-dialog-label">{{pouvoirBase.label}} : </span>
<span class="small-label roll-dialog-label">{{pouvoirBase.value}}</span>
</div>
{{/if}}
{{/if}}
<div class="flexrow">