Compare commits
No commits in common. "master" and "fvtt-les-heritiers-10.0.14" have entirely different histories.
master
...
fvtt-les-h
1
.gitignore
vendored
@ -1 +0,0 @@
|
||||
.history/
|
10
README.md
@ -1,8 +1,8 @@
|
||||
# Système Foundry pour Les Héritiers (French RPG, Titam France/Sombres Projets)
|
||||
# Système Foundry pour Hawkmoon (French RPG, Titam France/Sombres Projets)
|
||||
|
||||
## EN
|
||||
|
||||
Unofficial system for Les Heritiers (from Titam France).
|
||||
Unofficial system for Hawkmoon (French version from Titam France).
|
||||
|
||||
This system has been approved by Département des Sombres Projets ( http://www.titam-france.fr/ ), thanks !
|
||||
|
||||
@ -10,7 +10,7 @@ Books are mandatory to play and are available at : http://www.titam-france.fr
|
||||
|
||||
## FR
|
||||
|
||||
Système non-officiel pour le JDR Les Héritiers (Titam France/Sombres Projets).
|
||||
Système non-officiel pour le JDR Hawkmoon (Titam France/Sombres Projets).
|
||||
|
||||
Ce système a été autorisé par le Département des Sombres Projets ( http://www.titam-france.fr/ ), merci à eux !
|
||||
|
||||
@ -18,7 +18,7 @@ Les livres du jeu sont nécessaires pour jouer, et sont disponibles ici : http:/
|
||||
|
||||
# Credits
|
||||
|
||||
Les Héritiers, is a property of Titam France/Sombres Projets.
|
||||
Hawkmoon, le jeu de rôle du Troisième Millénaire, is a property of Titam France/Sombres Projets.
|
||||
|
||||
# Developmement
|
||||
|
||||
@ -26,4 +26,4 @@ LeRatierBretonnien
|
||||
|
||||
# Tests, icones et saisie des données
|
||||
|
||||
Prêtre, Carter
|
||||
Prêtre, Blondin, Zechrub/Chris, Kyllian, Lightbringer
|
||||
|
Before Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 192 KiB |
46
lang/fr.json
@ -1,23 +1,31 @@
|
||||
{
|
||||
"TYPES": {
|
||||
"Actor": {
|
||||
"personnage": "Personnage",
|
||||
"pnj": "PNJ"
|
||||
},
|
||||
"Item": {
|
||||
"accessoire": "Accessoire",
|
||||
"arme": "Arme",
|
||||
"atoutfeerique": "Atout féerique",
|
||||
"avantage": "Avantage",
|
||||
"capacitenaturelle": "Capacité naturelle",
|
||||
"competence": "Compétence",
|
||||
"contact": "Contact",
|
||||
"desavantage": "Désavantage",
|
||||
"equipement": "Equipement",
|
||||
"fee": "Fée",
|
||||
"pouvoir": "Pouvoir",
|
||||
"profil": "Profil",
|
||||
"protection": "Protection"
|
||||
"ACTOR": {
|
||||
"TypePersonnage": "Personnage",
|
||||
"TypeCellule": "Cellule",
|
||||
"TypeCreature": "Créature"
|
||||
},
|
||||
|
||||
"ITEM": {
|
||||
"TypeArtefact": "Artefact",
|
||||
"TypeArme": "Arme",
|
||||
"TypeTalent": "Talent",
|
||||
"TypeHistorique": "Historique",
|
||||
"TypeProfil": "Profil",
|
||||
"TypeCompetence": "Compétence",
|
||||
"TypeProtection": "Protection",
|
||||
"TypeMonnaie": "Monnaie",
|
||||
"TypeEquipement": "Equipement",
|
||||
"TypeRessource": "Ressource",
|
||||
"TypeContact": "Contact"
|
||||
|
||||
},
|
||||
|
||||
"HAWKMOON": {
|
||||
"ui": {
|
||||
"editContact": "Modifier le contact",
|
||||
"deleteContact": "Supprimer le contact",
|
||||
"editTrait": "Modifier le trait",
|
||||
"deleteTrait": "Supprimer le trait"
|
||||
}
|
||||
}
|
||||
}
|
@ -11,11 +11,11 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
||||
template: "systems/fvtt-les-heritiers/templates/actor-sheet.html",
|
||||
width: 780,
|
||||
height: 840,
|
||||
width: 640,
|
||||
height: 720,
|
||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||
editScore: false
|
||||
@ -24,7 +24,7 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
const objectData = foundry.utils.duplicate(this.object)
|
||||
const objectData = duplicate(this.object)
|
||||
|
||||
let formData = {
|
||||
title: this.title,
|
||||
@ -38,37 +38,26 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
||||
limited: this.object.limited,
|
||||
skills: this.actor.getSkills(),
|
||||
utileSkillsMental :this.actor.organizeUtileSkills("mental"),
|
||||
utileSkillsPhysical :this.actor.organizeUtileSkills("physical"),
|
||||
utileSkills :this.actor.organizeUtileSkills(),
|
||||
futileSkills :this.actor.organizeFutileSkills(),
|
||||
contacts: this.actor.organizeContacts(),
|
||||
armes: foundry.utils.duplicate(this.actor.getWeapons()),
|
||||
monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
|
||||
pouvoirs: foundry.utils.duplicate(this.actor.getPouvoirs()),
|
||||
fee: foundry.utils.duplicate(this.actor.getFee() || {} ),
|
||||
protections: foundry.utils.duplicate(this.actor.getArmors()),
|
||||
armes: duplicate(this.actor.getWeapons()),
|
||||
monnaies: duplicate(this.actor.getMonnaies()),
|
||||
fee: duplicate(this.actor.getFee() || {} ),
|
||||
protections: duplicate(this.actor.getArmors()),
|
||||
combat: this.actor.getCombatValues(),
|
||||
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
|
||||
avantages: foundry.utils.duplicate(this.actor.getAvantages()),
|
||||
atouts: foundry.utils.duplicate(this.actor.getAtouts()),
|
||||
capacites: foundry.utils.duplicate(this.actor.getCapacites()),
|
||||
desavantages: foundry.utils.duplicate(this.actor.getDesavantages()),
|
||||
profils: foundry.utils.duplicate(this.actor.getProfils()),
|
||||
equipements: duplicate(this.actor.getEquipments()),
|
||||
avantages: duplicate(this.actor.getAvantages()),
|
||||
atouts: duplicate(this.actor.getAtouts()),
|
||||
capacites: duplicate(this.actor.getCapacites()),
|
||||
desavantages: duplicate(this.actor.getDesavantages()),
|
||||
pvMalus: this.actor.getPvMalus(),
|
||||
heritage: game.settings.get("fvtt-les-heritiers", "heritiers-heritage"),
|
||||
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}),
|
||||
playernotes: await TextEditor.enrichHTML(this.object.system.biodata.playernotes, {async: true}),
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
editScore: this.options.editScore,
|
||||
config: game.system.lesheritiers.config,
|
||||
isGM: game.user.isGM,
|
||||
isPNJ: (this.actor.type == "pnj")
|
||||
isGM: game.user.isGM
|
||||
}
|
||||
this.formData = formData;
|
||||
|
||||
@ -77,42 +66,19 @@ export class HeritiersActorSheet extends ActorSheet {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
dialogRecupUsage() {
|
||||
new Dialog({
|
||||
title: "Récupération des Points d'Usage",
|
||||
content: "<p>Combien de Points d'Usage souhaitez-vous récupérer ?</p>",
|
||||
buttons: {
|
||||
one: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "1 Point",
|
||||
callback: () => {
|
||||
this.actor.recupUsage(1)
|
||||
}
|
||||
},
|
||||
two: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "2 Points",
|
||||
callback: () => {
|
||||
this.actor.recupUsage(2)
|
||||
}
|
||||
},
|
||||
four: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "4 Points",
|
||||
callback: () => {
|
||||
this.actor.recupUsage(4)
|
||||
}
|
||||
},
|
||||
all: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Tous les Points",
|
||||
callback: () => {
|
||||
this.actor.recupUsage(100)
|
||||
}
|
||||
getCelluleTalents( ) {
|
||||
let talents = []
|
||||
for(let cellule of game.actors) {
|
||||
if (cellule.type == "cellule") {
|
||||
let found = cellule.system.members.find( it => it.id == this.actor.id)
|
||||
if (found) {
|
||||
talents = talents.concat( cellule.getTalents() )
|
||||
}
|
||||
}
|
||||
}).render(true)
|
||||
}
|
||||
return talents
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** @override */
|
||||
activateListeners(html) {
|
||||
@ -164,48 +130,11 @@ 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-attaque-brutale-arme').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollAttaqueBrutaleArme(armeId)
|
||||
})
|
||||
html.find('.roll-attaque-charge-arme').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollAttaqueChargeArme(armeId)
|
||||
})
|
||||
html.find('.roll-assomer-arme').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item")
|
||||
let armeId = li.data("item-id")
|
||||
this.actor.rollAssomerArme(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('.dialog-recup-usage').click((event) => {
|
||||
this.dialogRecupUsage()
|
||||
})
|
||||
|
||||
html.find('.item-add').click((event) => {
|
||||
const itemType = $(event.currentTarget).data("type")
|
||||
|
@ -39,14 +39,13 @@ export class HeritiersActor extends Actor {
|
||||
|
||||
if (data.type == 'personnage') {
|
||||
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
|
||||
data.items = []
|
||||
for (let skill of skills) {
|
||||
if (skill.system.categorie == "utile") {
|
||||
data.items.push(skill.toObject())
|
||||
}
|
||||
}
|
||||
data.items = skills.map(i => i.toObject())
|
||||
}
|
||||
if (data.type == 'pnj') {
|
||||
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" } })
|
||||
}
|
||||
|
||||
return super.create(data, options);
|
||||
@ -54,8 +53,26 @@ export class HeritiersActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
prepareArme(arme) {
|
||||
arme = foundry.utils.duplicate(arme)
|
||||
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||
arme = duplicate(arme)
|
||||
let combat = this.getCombatValues()
|
||||
if (arme.system.typearme == "contact" || arme.system.typearme == "contactjet") {
|
||||
let bonusDefense = 0
|
||||
arme.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
|
||||
arme.system.attrKey = "pui"
|
||||
arme.system.totalDegats = arme.system.degats + "+" + combat.bonusDegatsTotal
|
||||
arme.system.totalOffensif = this.system.attributs.pui.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff
|
||||
arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.seuildefense + bonusDefense
|
||||
arme.system.isdefense = true
|
||||
}
|
||||
if (arme.system.typearme == "jet" || arme.system.typearme == "tir") {
|
||||
arme.system.competence = duplicate(this.items.find(item => item.type == "competence" && item.name.toLowerCase() == "armes à distance"))
|
||||
arme.system.attrKey = "adr"
|
||||
arme.system.totalOffensif = this.system.attributs.adr.value + arme.system.competence.system.niveau + arme.system.bonusmaniementoff
|
||||
arme.system.totalDegats = arme.system.degats
|
||||
if (arme.system.isdefense) {
|
||||
arme.system.totalDefensif = combat.defenseTotal + arme.system.competence.system.niveau + arme.system.seuildefense
|
||||
}
|
||||
}
|
||||
return arme
|
||||
}
|
||||
|
||||
@ -70,23 +87,13 @@ export class HeritiersActor extends Actor {
|
||||
return armes
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getOtherMeleeWeapons(excludeArme) {
|
||||
let armes = []
|
||||
for (let arme of this.items) {
|
||||
if (HeritiersUtility.isArmeMelee(arme) && arme.id != excludeArme._id) {
|
||||
armes.push(this.prepareArme(arme))
|
||||
}
|
||||
}
|
||||
return armes
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getMonnaies() {
|
||||
return this.items.filter(it => it.type == "monnaie")
|
||||
}
|
||||
|
||||
/* ----------------------- --------------------- */
|
||||
addMember(actorId) {
|
||||
let members = foundry.utils.duplicate(this.system.members)
|
||||
let members = duplicate(this.system.members)
|
||||
members.push({ id: actorId })
|
||||
this.update({ 'system.members': members })
|
||||
}
|
||||
@ -96,62 +103,41 @@ 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.getItemSorted(["equipement", "accessoire"])
|
||||
return this.items.filter(item => item.type == "equipement")
|
||||
}
|
||||
getAvantages() {
|
||||
return this.getItemSorted(["avantage"])
|
||||
return this.items.filter(item => item.type == "avantage")
|
||||
}
|
||||
getDesavantages() {
|
||||
return this.getItemSorted(["desavantage"])
|
||||
return this.items.filter(item => item.type == "desavantage")
|
||||
}
|
||||
getMonnaies() {
|
||||
return this.getItemSorted(["monnaie"])
|
||||
return this.items.filter(item => item.type == "monnaie")
|
||||
}
|
||||
getArmors() {
|
||||
return this.getItemSorted(["protection"])
|
||||
return this.items.filter(item => item.type == "protection")
|
||||
}
|
||||
getTalents() {
|
||||
return this.getItemSorted(["talent"])
|
||||
return this.items.filter(item => item.type == "talent")
|
||||
}
|
||||
getContacts() {
|
||||
return this.getItemSorted(["contact"])
|
||||
return this.items.filter(item => item.type == "contact")
|
||||
}
|
||||
getAtouts() {
|
||||
return this.getItemSorted(["atoutfeerique"])
|
||||
return this.items.filter(item => item.type == "atoutfeerique")
|
||||
}
|
||||
getCapacites() {
|
||||
return this.getItemSorted(["capacitenaturelle"])
|
||||
return this.items.filter(item => item.type == "capacitenaturelle")
|
||||
}
|
||||
getFee() {
|
||||
return this.items.find(item => item.type == "fee")
|
||||
}
|
||||
getProfils() {
|
||||
return this.getItemSorted(["profil"])
|
||||
}
|
||||
getPouvoirs() {
|
||||
let pouvoirs = []
|
||||
for (let item of this.items) {
|
||||
if (item.type == "pouvoir") {
|
||||
let itemObj = foundry.utils.duplicate(item)
|
||||
itemObj.maxUsage = this.getPouvoirUsageMax(item)
|
||||
pouvoirs.push(itemObj)
|
||||
}
|
||||
}
|
||||
HeritiersUtility.sortArrayObjectsByName(pouvoirs)
|
||||
return pouvoirs
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getSkills() {
|
||||
let comp = []
|
||||
for (let item of this.items) {
|
||||
item = foundry.utils.duplicate(item)
|
||||
item = duplicate(item)
|
||||
if (item.type == "competence") {
|
||||
comp.push(item)
|
||||
}
|
||||
@ -160,52 +146,19 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
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") {
|
||||
organizeUtileSkills() {
|
||||
let comp = {}
|
||||
for (let key in game.system.lesheritiers.config.competenceProfil) {
|
||||
if (game.system.lesheritiers.config.competenceProfil[key].kind == kind)
|
||||
comp[key] = { skills: [], niveau: this.system.competences[key].niveau }
|
||||
comp[key] = []
|
||||
}
|
||||
for (let item of this.items) {
|
||||
if (item.type == "competence") {
|
||||
if (item.system.categorie == "utile" && comp[item.system.profil]) {
|
||||
this.prepareUtileSkill(item)
|
||||
comp[item.system.profil].skills.push(item)
|
||||
if (item.system.categorie == "utile") {
|
||||
comp[item.system.profil].push(item)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
return comp
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -218,7 +171,6 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
}
|
||||
}
|
||||
HeritiersUtility.sortArrayObjectsByName(comp)
|
||||
return HeritiersUtility.sortByName(comp)
|
||||
}
|
||||
|
||||
@ -259,11 +211,6 @@ export class HeritiersActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async prepareData() {
|
||||
super.prepareData();
|
||||
|
||||
let pvMax = (this.system.caracteristiques.con.rang * 3) + 9 + this.system.pv.mod
|
||||
if (this.system.pv.max != pvMax) {
|
||||
this.update({ 'system.pv.max': pvMax })
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -285,7 +232,7 @@ export class HeritiersActor extends Actor {
|
||||
getItemById(id) {
|
||||
let item = this.items.find(item => item.id == id);
|
||||
if (item) {
|
||||
item = foundry.utils.duplicate(item)
|
||||
item = duplicate(item)
|
||||
}
|
||||
return item;
|
||||
}
|
||||
@ -293,7 +240,7 @@ export class HeritiersActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async equipItem(itemId) {
|
||||
let item = this.items.find(item => item.id == itemId)
|
||||
if (item?.system) {
|
||||
if (item && item.system) {
|
||||
let update = { _id: item.id, "system.equipped": !item.system.equipped }
|
||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||
}
|
||||
@ -304,12 +251,10 @@ 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)
|
||||
}
|
||||
if (dataType.toLowerCase() == "number") {
|
||||
value = Number(value)
|
||||
} else {
|
||||
value = String(value)
|
||||
}
|
||||
let update = { _id: item.id, [`system.${itemField}`]: value };
|
||||
this.updateEmbeddedDocuments("Item", [update])
|
||||
@ -319,15 +264,15 @@ export class HeritiersActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
getPvMalus() {
|
||||
if (this.system.pv.value > 0) {
|
||||
if (this.system.pv.value < 5) {
|
||||
return { name: "Santé", value: -2 }
|
||||
}
|
||||
if (this.system.pv.value < this.system.pv.max / 2) {
|
||||
return { name: "Santé", value: -1 }
|
||||
return -1
|
||||
}
|
||||
return { name: "Santé", value: 0 }
|
||||
if (this.system.pv.value < 5) {
|
||||
return -2
|
||||
}
|
||||
return 0
|
||||
}
|
||||
return { name: "Moribond(e)", value: -50 }
|
||||
return "Moribond(e)"
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -343,7 +288,7 @@ export class HeritiersActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getCarac(attrKey) {
|
||||
return foundry.utils.duplicate(this.system.caracteristiques)
|
||||
return duplicate(this.system.caracteristiques)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -354,7 +299,7 @@ export class HeritiersActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async equipGear(equipmentId) {
|
||||
let item = this.items.find(item => item.id == equipmentId);
|
||||
if (item?.system) {
|
||||
if (item && item.system.data) {
|
||||
let update = { _id: item.id, "system.equipped": !item.system.equipped };
|
||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||
}
|
||||
@ -364,13 +309,13 @@ export class HeritiersActor extends Actor {
|
||||
getSubActors() {
|
||||
let subActors = [];
|
||||
for (let id of this.system.subactors) {
|
||||
subActors.push(foundry.utils.duplicate(game.actors.get(id)));
|
||||
subActors.push(duplicate(game.actors.get(id)));
|
||||
}
|
||||
return subActors;
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async addSubActor(subActorId) {
|
||||
let subActors = foundry.utils.duplicate(this.system.subactors);
|
||||
let subActors = duplicate(this.system.subactors);
|
||||
subActors.push(subActorId);
|
||||
await this.update({ 'system.subactors': subActors });
|
||||
}
|
||||
@ -392,7 +337,7 @@ export class HeritiersActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async incDecAdversite(adv, incDec = 0) {
|
||||
let adversite = foundry.utils.duplicate(this.system.adversite)
|
||||
let adversite = duplicate(this.system.adversite)
|
||||
adversite[adv] += Number(incDec)
|
||||
adversite[adv] = Math.max(adversite[adv], 0)
|
||||
this.update({ 'system.adversite': adversite })
|
||||
@ -439,7 +384,7 @@ export class HeritiersActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async setPredilectionUsed(compId, predIdx) {
|
||||
let comp = this.items.get(compId)
|
||||
let pred = foundry.utils.duplicate(comp.system.predilections)
|
||||
let pred = duplicate(comp.system.predilections)
|
||||
pred[predIdx].used = true
|
||||
await this.updateEmbeddedDocuments('Item', [{ _id: compId, 'system.predilections': pred }])
|
||||
}
|
||||
@ -461,7 +406,7 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
if (arme.system.totalDefensif > maxDef) {
|
||||
maxDef = arme.system.totalDefensif
|
||||
bestArme = foundry.utils.duplicate(arme)
|
||||
bestArme = duplicate(arme)
|
||||
}
|
||||
}
|
||||
return bestArme
|
||||
@ -476,7 +421,7 @@ export class HeritiersActor extends Actor {
|
||||
for (let auto of talent.system.automations) {
|
||||
if (auto.eventtype === "prepare-roll") {
|
||||
if (auto.competence.toLowerCase() == competence.name.toLowerCase()) {
|
||||
talent = foundry.utils.duplicate(talent)
|
||||
talent = duplicate(talent)
|
||||
talent.system.bonus = auto.bonus
|
||||
talent.system.baCost = auto.baCost
|
||||
talents.push(talent)
|
||||
@ -487,23 +432,7 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
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
|
||||
}
|
||||
getCurrentResistancePhysique() {
|
||||
return this.system.combat.resistancephysique.value
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getTricherie() {
|
||||
return this.system.rang.tricherie.value
|
||||
@ -516,27 +445,9 @@ export class HeritiersActor extends Actor {
|
||||
incDecTricherie(value) {
|
||||
let tricherie = this.system.rang.tricherie
|
||||
tricherie.value += value
|
||||
if (tricherie.value < 0 || tricherie.value > tricherie.max) {
|
||||
ui.notifications.warn("Pas assez de points de Tricherie !")
|
||||
return false
|
||||
}
|
||||
tricherie.value = Math.max(tricherie.value, 0)
|
||||
tricherie.value = Math.min(tricherie.value, tricherie.max)
|
||||
this.update({ 'system.rang.tricherie': tricherie })
|
||||
return true
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getPireCompetence(compName1, compName2) {
|
||||
let comp1 = this.items.find(it => it.name == compName1)
|
||||
let comp2 = this.items.find(it => it.name == compName2)
|
||||
if (comp1 && comp2) {
|
||||
if (comp1.system.niveau > comp2.system.niveau) {
|
||||
return comp1
|
||||
} else {
|
||||
return comp2
|
||||
}
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -552,27 +463,17 @@ export class HeritiersActor extends Actor {
|
||||
rollData.tricherie = this.getTricherie()
|
||||
rollData.heritage = this.getHeritages()
|
||||
rollData.useTricherie = false
|
||||
rollData.useSpecialite = false
|
||||
rollData.useHeritage = false
|
||||
rollData.pouvoirPointsUsage = 1
|
||||
rollData.rulesMalus.push(this.getPvMalus())
|
||||
rollData.pvMalus = this.getPvMalus()
|
||||
|
||||
if (compId) {
|
||||
rollData.competence = foundry.utils.duplicate(this.items.get(compId) || {})
|
||||
this.prepareUtileSkill(rollData.competence)
|
||||
rollData.competence = duplicate(this.items.get(compId) || {})
|
||||
rollData.actionImg = rollData.competence?.img
|
||||
}
|
||||
if (compName) {
|
||||
rollData.competence = foundry.utils.duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
||||
if (rollData.competence?.name) {
|
||||
this.prepareUtileSkill(rollData.competence)
|
||||
rollData.actionImg = rollData.competence?.img
|
||||
} else {
|
||||
rollData.competence = undefined
|
||||
}
|
||||
rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
||||
rollData.actionImg = rollData.competence?.img
|
||||
}
|
||||
HeritiersUtility.updateWithTarget(rollData)
|
||||
|
||||
return rollData
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
@ -599,25 +500,6 @@ 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"
|
||||
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)
|
||||
@ -628,217 +510,45 @@ export class HeritiersActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollAttaqueArme(armeId) {
|
||||
async rollArmeOffensif(armeId) {
|
||||
let arme = this.items.get(armeId)
|
||||
if (arme) {
|
||||
arme = foundry.utils.duplicate(arme)
|
||||
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||
let competenceName = "Tir"
|
||||
let key = "prec"
|
||||
if (arme.system.isMelee) {
|
||||
competenceName = "Mêlée"
|
||||
key = "agi"
|
||||
}
|
||||
let rollData = this.getCommonRollData(undefined, competenceName)
|
||||
rollData.carac = this.system.caracteristiques[key]
|
||||
rollData.caracKey = key
|
||||
rollData.arme = arme
|
||||
rollData.mode = "arme"
|
||||
rollData.armes = this.getOtherMeleeWeapons(arme)
|
||||
if (rollData.defenderTokenId && arme.system.isMelee) {
|
||||
rollData.cacheDifficulte = true
|
||||
}
|
||||
console.log(">>>> ARME", rollData)
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
if (arme.type == "arme") {
|
||||
arme = this.prepareArme(arme)
|
||||
}
|
||||
let rollData = this.getCommonRollData(arme.system.attrKey, arme.system.competence._id)
|
||||
rollData.arme = arme
|
||||
HeritiersUtility.updateWithTarget(rollData)
|
||||
console.log("ARME!", rollData)
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollAttaqueBrutaleArme(armeId) {
|
||||
async rollArmeDegats(armeId, targetVigueur = undefined) {
|
||||
let arme = this.items.get(armeId)
|
||||
if (arme) {
|
||||
let key = "for"
|
||||
let competenceName = "Mêlée"
|
||||
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||
let rollData = this.getCommonRollData(undefined, competenceName)
|
||||
rollData.carac = this.system.caracteristiques[key]
|
||||
rollData.caracKey = key
|
||||
rollData.arme = foundry.utils.duplicate(arme)
|
||||
rollData.mode = "attaquebrutale"
|
||||
rollData.armes = this.getOtherMeleeWeapons(arme)
|
||||
rollData.rulesMalus.push({ name: "Attaque brutale", value: -2 })
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
if (arme.type == "arme") {
|
||||
arme = this.prepareArme(arme)
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async rollAttaqueChargeArme(armeId) {
|
||||
let arme = this.items.get(armeId)
|
||||
if (arme) {
|
||||
let key = "agi"
|
||||
arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||
let pireCompetence = this.getPireCompetence("Mêlée", "Mouvement")
|
||||
let rollData = this.getCommonRollData(undefined, pireCompetence.name)
|
||||
rollData.carac = this.system.caracteristiques[key]
|
||||
rollData.caracKey = key
|
||||
rollData.arme = foundry.utils.duplicate(arme)
|
||||
rollData.armes = this.getOtherMeleeWeapons(arme)
|
||||
rollData.mode = "attaquecharge"
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
console.log("DEGATS", arme)
|
||||
let roll = new Roll("1d10+" + arme.system.totalDegats).roll({ async: false })
|
||||
await HeritiersUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
|
||||
let nbEtatPerdus = 0
|
||||
if (targetVigueur) {
|
||||
nbEtatPerdus = Math.floor(roll.total / targetVigueur)
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollAssomerArme(armeId) {
|
||||
let arme = this.items.get(armeId)
|
||||
if (arme) {
|
||||
let competenceName = "Mêlée"
|
||||
//arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
||||
let rollData = this.getCommonRollData(undefined, competenceName)
|
||||
rollData.carac = this.system.caracteristiques["agi"]
|
||||
rollData.caracKey = "agi"
|
||||
rollData.arme = foundry.utils.duplicate(arme)
|
||||
rollData.mode = "assommer"
|
||||
if (rollData.defenderTokenId) {
|
||||
rollData.cacheDifficulte = true
|
||||
}
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
let rollData = {
|
||||
arme: arme,
|
||||
finalResult: roll.total,
|
||||
alias: this.name,
|
||||
actorImg: this.img,
|
||||
actorId: this.id,
|
||||
actionImg: arme.img,
|
||||
targetVigueur: targetVigueur,
|
||||
nbEtatPerdus: nbEtatPerdus
|
||||
}
|
||||
}
|
||||
HeritiersUtility.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-degats-result.html`, rollData)
|
||||
})
|
||||
|
||||
/* -------------------------------------------- */
|
||||
pouvoirPassifDialog(pouvoir) {
|
||||
let rollData = this.getCommonRollData()
|
||||
rollData.pouvoir = pouvoir
|
||||
rollData.mode = "pouvoirpassif"
|
||||
rollData.pouvoirPointsUsage = 0
|
||||
rollData.noRoll = true
|
||||
|
||||
let d = new Dialog({
|
||||
title: "Activer le pouvoir passif " + pouvoir.name,
|
||||
content: "<p>Choisissez le nombre de Points d'Usage</p>",
|
||||
buttons: {
|
||||
one: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "1 Point d'Usage",
|
||||
callback: () => {
|
||||
rollData.pouvoirPointsUsage = 1;
|
||||
HeritiersUtility.rollHeritiers(rollData);
|
||||
}
|
||||
},
|
||||
two: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "2 Points d'Usage",
|
||||
callback: () => {
|
||||
rollData.pouvoirPointsUsage = 2;
|
||||
HeritiersUtility.rollHeritiers(rollData);
|
||||
}
|
||||
},
|
||||
three: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "3 Points d'Usage",
|
||||
callback: () => {
|
||||
rollData.pouvoirPointsUsage = 3;
|
||||
HeritiersUtility.rollHeritiers(rollData);
|
||||
}
|
||||
},
|
||||
four: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "4 Points d'Usage",
|
||||
callback: () => {
|
||||
rollData.pouvoirPointsUsage = 4;
|
||||
HeritiersUtility.rollHeritiers(rollData);
|
||||
}
|
||||
},
|
||||
close: {
|
||||
icon: '<i class="fas fa-times"></i>',
|
||||
label: "Annuler",
|
||||
callback: () => {
|
||||
}
|
||||
}
|
||||
},
|
||||
default: "one",
|
||||
render: html => console.log("Pouvoir passif"),
|
||||
close: html => console.log("No option")
|
||||
});
|
||||
d.render(true);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollPouvoir(pouvoirId) {
|
||||
let pouvoir = this.items.get(pouvoirId)
|
||||
if (pouvoir) {
|
||||
if (pouvoir.system.pouvoirtype == "passif") {
|
||||
this.pouvoirPassifDialog(pouvoir)
|
||||
return
|
||||
}
|
||||
|
||||
let rollData = this.getCommonRollData(undefined, undefined)
|
||||
|
||||
rollData.pouvoirMaxUsage = this.getPouvoirUsageMax(pouvoir)
|
||||
rollData.pouvoir = foundry.utils.duplicate(pouvoir)
|
||||
rollData.mode = "pouvoir"
|
||||
|
||||
if (pouvoir.system.feeriemasque != "autre") {
|
||||
rollData.pouvoirBase = foundry.utils.duplicate(this.system.rang[pouvoir.system.feeriemasque.toLowerCase()])
|
||||
rollData.pouvoirBase.label = "Féerie"
|
||||
if (pouvoir.system.istest && !pouvoir.system.carac) {
|
||||
ui.notifications.warn("Le pouvoir actif " + pouvoir.name + " n'a pas de caractéristique associée")
|
||||
}
|
||||
if ( pouvoir.system.istest) {
|
||||
rollData.carac = foundry.utils.duplicate(this.system.caracteristiques[pouvoir.system.carac])
|
||||
rollData.caracKey = pouvoir.system.carac
|
||||
} else {
|
||||
rollData.noRoll = true
|
||||
HeritiersUtility.rollHeritiers(rollData);
|
||||
return;
|
||||
//this.incDecPointsUsage(pouvoir.id, -rollData.pouvoirPointsUsage)
|
||||
//ui.notifications.warn("Le pouvoir actif " + pouvoir.name + " a été utilisé, dépense de " + pouvoirPointsUsage + " points d'usage")
|
||||
}
|
||||
}
|
||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||
rollDialog.render(true)
|
||||
}
|
||||
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
incDecPointsUsage(pouvoirId, value) {
|
||||
let pouvoir = this.items.get(pouvoirId)
|
||||
let newValue = pouvoir.system.pointsusagecourant + value
|
||||
newValue = Math.max(newValue, 0)
|
||||
newValue = Math.min(newValue, this.getPouvoirUsageMax(pouvoir))
|
||||
this.updateEmbeddedDocuments('Item', [{ _id: pouvoirId, 'system.pointsusagecourant': newValue }])
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getPouvoirUsage(pouvoirId) {
|
||||
let pouvoir = this.items.get(pouvoirId)
|
||||
return pouvoir.system.pointsusagecourant
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getPouvoirUsageMax(pouvoir) {
|
||||
if (pouvoir.system.masquetype == "masque") {
|
||||
return this.system.rang.masque.value
|
||||
}
|
||||
return this.system.rang.feerie.value
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
recupUsage(value) {
|
||||
let updates = []
|
||||
for (let pouvoir of this.items) {
|
||||
if (pouvoir.type == "pouvoir") {
|
||||
let newValue = pouvoir.system.pointsusagecourant + value
|
||||
newValue = Math.max(newValue, 0)
|
||||
newValue = Math.min(newValue, this.getPouvoirUsageMax(pouvoir))
|
||||
updates.push({ _id: pouvoir.id, 'system.pointsusagecourant': newValue })
|
||||
}
|
||||
}
|
||||
if (updates.length > 0) {
|
||||
this.updateEmbeddedDocuments('Item', updates)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ export const HERITIERS_CONFIG = {
|
||||
"prec": "Précision",
|
||||
"esp": "Esprit",
|
||||
"per": "Perception",
|
||||
"pres": "Prestance",
|
||||
"pres": "Présence",
|
||||
"san": "Sang-Froid"
|
||||
},
|
||||
|
||||
@ -17,25 +17,17 @@ export const HERITIERS_CONFIG = {
|
||||
"futile": "Futile"
|
||||
},
|
||||
|
||||
contactType: {
|
||||
contact: "Contact",
|
||||
allie: "Allié",
|
||||
ennemi: "Ennemi",
|
||||
interet: "Personne d'interêt"
|
||||
},
|
||||
|
||||
competenceProfil : {
|
||||
"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"}
|
||||
"aventurier": "Aventurier",
|
||||
"roublard": "Roublard",
|
||||
"combattant": "Combattant",
|
||||
"erudit": "Erudit",
|
||||
"savant": "Savant",
|
||||
"gentleman": "Gentleman"
|
||||
},
|
||||
baseTestPouvoir: {
|
||||
"feerie": "Féerie",
|
||||
"masque": "Masque",
|
||||
"autre": "Autre"
|
||||
"Masque": "Masque"
|
||||
},
|
||||
resistancePouvoir: {
|
||||
"aucune": "Aucune",
|
||||
@ -50,10 +42,6 @@ export const HERITIERS_CONFIG = {
|
||||
"passif": "Passif",
|
||||
"metamorphose": "Métamorphose"
|
||||
},
|
||||
statutMasque: {
|
||||
"masque": "Masqué",
|
||||
"demasque":"Démasqué"
|
||||
},
|
||||
niveauPouvoir: {
|
||||
"normal": "Normal",
|
||||
"profond": "Profond",
|
||||
@ -64,40 +52,21 @@ export const HERITIERS_CONFIG = {
|
||||
"demasque": "Démasqué"
|
||||
},
|
||||
seuilsDifficulte: {
|
||||
"-1": "Aucun/Non applicable",
|
||||
"5": "Enfantine (5)",
|
||||
"6": "Triviale (6)",
|
||||
"7": "Moins Triviale (7)",
|
||||
"8": "Aisée (8)",
|
||||
"9": "Moins Aisée (9)",
|
||||
"10": "Normale (10)",
|
||||
"11": "Moins Normale (11)",
|
||||
"12": "Compliquée (12)",
|
||||
"13": "Plus Compliquée (13)",
|
||||
"14": "Difficile (14)",
|
||||
"15": "Plus Difficile (15)",
|
||||
"16": "Très Difficile (16)",
|
||||
"17": "Très Très Difficile (17)",
|
||||
"18": "Critique (18)",
|
||||
"19": "Plus Critique (19)",
|
||||
"20": "Insurmontable (20)",
|
||||
"21": "Très Insurmontable (21)",
|
||||
"22": "Surhumaine (22)",
|
||||
"23": "Très Surhumaine (23)",
|
||||
"24": "Epique (24)",
|
||||
"25": "Plus Epique (25)",
|
||||
"26": "Légendaire (26)",
|
||||
"27": "Très Légendaire (27)",
|
||||
"28": "Mythique (28)",
|
||||
"29": "Plus Mythique (29)",
|
||||
"30": "Divine (30)"
|
||||
},
|
||||
|
||||
attaqueCible: {
|
||||
"none": "Aucune",
|
||||
"membre": "Membre",
|
||||
"main": "Main",
|
||||
"tete": "Tête/Coeur"
|
||||
"0": "Aucun/Non applicable",
|
||||
"5": "Enfantine",
|
||||
"6": "Triviale",
|
||||
"8": "Aisée",
|
||||
"10": "Normale",
|
||||
"12": "Compliquée",
|
||||
"14": "Difficile",
|
||||
"16": "Très Difficile",
|
||||
"18": "Critique",
|
||||
"20": "Insurmontable",
|
||||
"22": "Surhumaine",
|
||||
"24": "Epique",
|
||||
"26": "Légendaire",
|
||||
"28": "Mythique",
|
||||
"30": "Divine"
|
||||
},
|
||||
|
||||
categorieArme : {
|
||||
@ -145,66 +114,7 @@ export const HERITIERS_CONFIG = {
|
||||
"traditionnelle": "Traditionnelle",
|
||||
"moderne": "Moderne",
|
||||
"orientale": "Orientale"
|
||||
},
|
||||
typeContact: {
|
||||
"contact": "Contact",
|
||||
"allie": "Allié",
|
||||
"ennemi": "Ennemi",
|
||||
"interet": "Personne d'interêt"
|
||||
},
|
||||
niveauContact: {
|
||||
"1": "1",
|
||||
"2": "2",
|
||||
"3": "3",
|
||||
},
|
||||
pointsUsageList: {
|
||||
"1": "1",
|
||||
"2": "2",
|
||||
"3": "3",
|
||||
"4": "4",
|
||||
},
|
||||
attaquePlusieursList : {
|
||||
"0": "0",
|
||||
"1": "+1",
|
||||
"2": "+2",
|
||||
},
|
||||
attaque2ArmesListe: [
|
||||
{value: "0", label: "Aucun"},
|
||||
{value: "-4", label: "Deux armes à 1 main"},
|
||||
{value: "-2", label: "Deux armes naturelles"},
|
||||
{value: "-2", label: "Avec spécialisation \"Mauvaise Main\""}
|
||||
],
|
||||
typeProfil: {
|
||||
"mineur": "Mineur",
|
||||
"majeur": "Majeur",
|
||||
},
|
||||
bonusMalusContext: [
|
||||
{value: "-6", label: "-6"},
|
||||
{value: "-5", label: "-5"},
|
||||
{value: "-4", label: "-4"},
|
||||
{value: "-3", label: "-3"},
|
||||
{value: "-2", label: "-2"},
|
||||
{value: "-1", label: "-1"},
|
||||
{value: "0", label: "0"},
|
||||
{value: "1", label: "+1"},
|
||||
{value: "2", label: "+2"},
|
||||
{value: "3", label: "+3"},
|
||||
{value: "4", label: "+4"},
|
||||
{value: "5", label: "+5"},
|
||||
{value: "6", label: "+6"}
|
||||
],
|
||||
listNiveau: {
|
||||
"0": "0",
|
||||
"1": "1",
|
||||
"2": "2",
|
||||
"3": "3",
|
||||
"4": "4",
|
||||
"5": "5",
|
||||
"6": "6",
|
||||
"7": "7",
|
||||
"8": "8",
|
||||
"9": "9",
|
||||
"10": "10"
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -3,24 +3,23 @@
|
||||
* @extends {ActorSheet}
|
||||
*/
|
||||
|
||||
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
|
||||
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
|
||||
import { HeritiersUtility } from "./heritiers-utility.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class HeritiersActorPNJSheet extends HeritiersActorSheet {
|
||||
export class HeritiersCreatureSheet extends HeritiersActorSheet {
|
||||
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
|
||||
return foundry.utils.mergeObject(super.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,
|
||||
template: "systems/fvtt-les-heritiers/templates/creature-sheet.html",
|
||||
width: 640,
|
||||
height: 720,
|
||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||
editScore: false
|
||||
})
|
||||
}
|
||||
|
||||
}
|
@ -9,7 +9,7 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
return mergeObject(super.defaultOptions, {
|
||||
classes: ["fvtt-les-heritiers", "sheet", "item"],
|
||||
template: "systems/fvtt-les-heritiers/templates/item-sheet.html",
|
||||
dragDrop: [{ dragSelector: null, dropSelector: null }],
|
||||
@ -48,7 +48,7 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
const objectData = foundry.utils.duplicate(this.object)
|
||||
const objectData = duplicate(this.object)
|
||||
let formData = {
|
||||
title: this.title,
|
||||
id: this.id,
|
||||
@ -62,19 +62,9 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||
options: this.options,
|
||||
owner: this.document.isOwner,
|
||||
config: game.system.lesheritiers.config,
|
||||
isArmeMelee: HeritiersUtility.isArmeMelee(this.object),
|
||||
description: await TextEditor.enrichHTML(this.object.system.description, {async: true}),
|
||||
mr: (this.object.type == 'specialisation'),
|
||||
isGM: game.user.isGM,
|
||||
usageMax: -1
|
||||
}
|
||||
|
||||
// Items specific data
|
||||
if (this.object.type == 'pouvoir' && this.document.isOwner && this.actor) {
|
||||
formData.usageMax = this.actor.getPouvoirUsageMax(this.object)
|
||||
if (this.object.system.pointsusagecourant == -1) {
|
||||
this.object.system.pointsusagecourant = formData.usageMax
|
||||
}
|
||||
isGM: game.user.isGM
|
||||
}
|
||||
|
||||
//this.options.editable = !(this.object.origin == "embeddedItem");
|
||||
@ -96,7 +86,7 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
postItem() {
|
||||
let chatData = foundry.utils.duplicate(HeritiersUtility.data(this.item));
|
||||
let chatData = duplicate(HeritiersUtility.data(this.item));
|
||||
if (this.actor) {
|
||||
chatData.actor = { id: this.actor.id };
|
||||
}
|
||||
@ -138,52 +128,52 @@ export class HeritiersItemSheet extends ItemSheet {
|
||||
})
|
||||
|
||||
html.find('#add-specialite').click(ev => {
|
||||
let spec = foundry.utils.duplicate(this.object.system.specialites)
|
||||
spec.push( { name: "Nouvelle Spécialité", id: foundry.utils.randomID(16), used: false })
|
||||
let spec = duplicate(this.object.system.specialites)
|
||||
spec.push( { name: "Nouvelle Spécialité", id: randomID(16), used: false })
|
||||
this.object.update( { 'system.specialites': spec })
|
||||
})
|
||||
html.find('.delete-specialite').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".specialite-item")
|
||||
let index = li.data("specialite-index")
|
||||
let spec = foundry.utils.duplicate(this.object.system.specialites)
|
||||
let spec = duplicate(this.object.system.specialites)
|
||||
spec.splice(index,1)
|
||||
this.object.update( { 'system.specialites': spec })
|
||||
})
|
||||
html.find('.edit-specialite').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".specialite-item")
|
||||
let index = li.data("specialite-index")
|
||||
let spec = foundry.utils.duplicate(this.object.system.specialites)
|
||||
let spec = duplicate(this.object.system.specialites)
|
||||
spec[index].name = ev.currentTarget.value
|
||||
spec[index].id = spec[index].id || foundry.utils.randomID(16)
|
||||
spec[index].id = spec[index].id || randomID(16)
|
||||
this.object.update( { 'system.specialites': spec })
|
||||
})
|
||||
html.find('.edit-specialite-description').change(ev => {
|
||||
const li = $(ev.currentTarget).parents(".specialite-item")
|
||||
let index = li.data("specialite-index")
|
||||
let spec = foundry.utils.duplicate(this.object.system.specialites)
|
||||
let spec = duplicate(this.object.system.specialites)
|
||||
spec[index].description = ev.currentTarget.value
|
||||
spec[index].id = spec[index].id || foundry.utils.randomID(16)
|
||||
spec[index].id = spec[index].id || randomID(16)
|
||||
this.object.update( { 'system.specialites': spec })
|
||||
})
|
||||
|
||||
html.find('#add-automation').click(ev => {
|
||||
let autom = foundry.utils.duplicate(this.object.system.automations)
|
||||
autom.push( { eventtype: "on-drop", name: "Automatisation 1", competence: "", minLevel: 0, id: foundry.utils.randomID(16) })
|
||||
let autom = duplicate(this.object.system.automations)
|
||||
autom.push( { eventtype: "on-drop", name: "Automatisation 1", competence: "", minLevel: 0, id: randomID(16) })
|
||||
this.object.update( { 'system.automations': autom })
|
||||
})
|
||||
html.find('.delete-automation').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".automation-item")
|
||||
let index = li.data("automation-index")
|
||||
let autom = foundry.utils.duplicate(this.object.system.automations)
|
||||
let autom = duplicate(this.object.system.automations)
|
||||
autom.splice(index,1)
|
||||
this.object.update( { 'system.automations': autom })
|
||||
})
|
||||
html.find('.automation-edit-field').change(ev => {
|
||||
let index = $(ev.currentTarget).data("automation-index")
|
||||
let field = $(ev.currentTarget).data("automation-field")
|
||||
let auto = foundry.utils.duplicate(this.object.system.automations)
|
||||
let auto = duplicate(this.object.system.automations)
|
||||
auto[index][field] = ev.currentTarget.value
|
||||
auto[index].id = auto[index].id || foundry.utils.randomID(16)
|
||||
auto[index].id = auto[index].id || randomID(16)
|
||||
this.object.update( { 'system.automations': auto })
|
||||
})
|
||||
|
||||
|
@ -15,9 +15,8 @@ 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",
|
||||
profil: "systems/fvtt-les-heritiers/assets/icons/profil.webp",
|
||||
equipement: "systems/fvtt-les-heritiers/assets/icons/equipement.webp",
|
||||
fee: "systems/fvtt-les-heritiers/assets/icons/faery_type.webp"
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -11,7 +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";
|
||||
import { HeritiersItem } from "./heritiers-item.js";
|
||||
@ -46,8 +46,6 @@ Hooks.once("init", async function () {
|
||||
CONFIG.Combat.documentClass = HeritiersCombat
|
||||
CONFIG.Actor.documentClass = HeritiersActor
|
||||
CONFIG.Item.documentClass = HeritiersItem
|
||||
// Create an object of bonus/malus from -6 to +6 signed
|
||||
HERITIERS_CONFIG.bonusMalus = Array.from({ length: 7 }, (v, k) => toString(k - 6))
|
||||
game.system.lesheritiers = {
|
||||
HeritiersUtility,
|
||||
config: HERITIERS_CONFIG
|
||||
@ -57,7 +55,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", HeritiersActorPNJSheet, { types: ["pnj"], makeDefault: true })
|
||||
Actors.registerSheet("fvtt-les-heritiers", HeritiersCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||
|
||||
Items.unregisterSheet("core", ItemSheet);
|
||||
Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })
|
||||
@ -80,17 +78,31 @@ function welcomeMessage() {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async function importDefaultScene() {
|
||||
let exists = game.scenes.find(j => j.name == "Accueil");
|
||||
if (!exists) {
|
||||
const scenes = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.scenes")
|
||||
let newDocuments = scenes.filter(i => i.name == "Accueil");
|
||||
await game.scenes.documentClass.create(newDocuments);
|
||||
game.scenes.find(i => i.name == "Accueil").activate();
|
||||
// Register world usage statistics
|
||||
function registerUsageCount(registerKey) {
|
||||
if (game.user.isGM) {
|
||||
game.settings.register(registerKey, "world-key", {
|
||||
name: "Unique world key",
|
||||
scope: "world",
|
||||
config: false,
|
||||
default: "",
|
||||
type: String
|
||||
});
|
||||
|
||||
let worldKey = game.settings.get(registerKey, "world-key")
|
||||
if (worldKey == undefined || worldKey == "") {
|
||||
worldKey = randomID(32)
|
||||
game.settings.set(registerKey, "world-key", worldKey)
|
||||
}
|
||||
// Simple API counter
|
||||
let regURL = `https://www.uberwald.me/fvtt_appcount/count.php?name="${registerKey}"&worldKey="${worldKey}"&version="${game.release.generation}.${game.release.build}"&system="${game.system.id}"&systemversion="${game.system.version}"`
|
||||
//$.ajaxSetup({
|
||||
//headers: { 'Access-Control-Allow-Origin': '*' }
|
||||
//})
|
||||
$.ajax(regURL)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* Foundry VTT Initialization */
|
||||
/* -------------------------------------------- */
|
||||
@ -107,15 +119,14 @@ Hooks.once("ready", function () {
|
||||
});
|
||||
}
|
||||
|
||||
import("https://www.uberwald.me/fvtt_appcount/count-class-ready.js").then(moduleCounter=>{
|
||||
console.log("ClassCounter loaded", moduleCounter)
|
||||
moduleCounter.ClassCounter.registerUsageCount()
|
||||
}).catch(err=>
|
||||
console.log("No stats available, giving up.")
|
||||
)
|
||||
welcomeMessage();
|
||||
importDefaultScene();
|
||||
registerUsageCount('fvtt-les-heritiers')
|
||||
welcomeMessage()
|
||||
|
||||
// CSS patch for v9
|
||||
if (game.version) {
|
||||
let sidebar = document.getElementById("sidebar");
|
||||
sidebar.style.width = "min-content";
|
||||
}
|
||||
});
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -125,7 +136,7 @@ Hooks.on("chatMessage", (html, content, msg) => {
|
||||
if (content[0] == '/') {
|
||||
let regExp = /(\S+)/g;
|
||||
let commands = content.match(regExp);
|
||||
if (game.system.lesheritiers.commands.processChatCommand(commands, content, msg)) {
|
||||
if (game.system.mournblade.commands.processChatCommand(commands, content, msg)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ export class HeritiersRollDialog extends Dialog {
|
||||
/* -------------------------------------------- */
|
||||
static async create(actor, rollData) {
|
||||
|
||||
let options = { classes: ["HeritiersDialog"], width: 420, height: 'fit-content', 'z-index': 99999 };
|
||||
let options = { classes: ["HeritiersDialog"], width: 320, height: 'fit-content', 'z-index': 99999 };
|
||||
let html = await renderTemplate('systems/fvtt-les-heritiers/templates/roll-dialog-generic.html', rollData);
|
||||
|
||||
return new HeritiersRollDialog(actor, rollData, html, options);
|
||||
@ -13,62 +13,35 @@ export class HeritiersRollDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
constructor(actor, rollData, html, options, close = undefined) {
|
||||
let buttons = {
|
||||
rolld8: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d8",
|
||||
callback: () => { this.roll("d8") }
|
||||
}
|
||||
}
|
||||
let enableD10 = false
|
||||
let enableD12 = false
|
||||
if (rollData.mode == "pouvoir" || rollData.competence?.system.niveau > 0) {
|
||||
enableD10 = true
|
||||
}
|
||||
if (rollData.mode == "pouvoir" || rollData.competence?.system.niveau > 1) {
|
||||
enableD12 = true
|
||||
}
|
||||
if (enableD10) {
|
||||
buttons.rolld10 = {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Lancer 1d10",
|
||||
callback: () => { this.roll("d10") }
|
||||
}
|
||||
}
|
||||
if (enableD12) {
|
||||
buttons.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 = {
|
||||
title: "Test de Capacité",
|
||||
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
|
||||
}
|
||||
// Overwrite in case of carac only -> 1d8
|
||||
// Overwrite in case of carac only -> 1d10
|
||||
if (rollData.mode == "carac") {
|
||||
conf.buttons = {
|
||||
rolld8: {
|
||||
@ -91,16 +64,7 @@ export class HeritiersRollDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
roll(dice) {
|
||||
if (dice == "heritage") {
|
||||
this.rollData.useHeritage = true
|
||||
}
|
||||
else {
|
||||
if (dice == "tricherie") {
|
||||
this.rollData.useTricherie = true
|
||||
} else {
|
||||
this.rollData.mainDice = dice
|
||||
}
|
||||
}
|
||||
this.rollData.mainDice = dice
|
||||
HeritiersUtility.rollHeritiers(this.rollData)
|
||||
}
|
||||
|
||||
@ -118,30 +82,16 @@ export class HeritiersRollDialog extends Dialog {
|
||||
this.rollData.sdValue = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#caracKey').change(async (event) => {
|
||||
//console.log("caracKey", event.currentTarget.value)
|
||||
this.rollData.caracKey = String(event.currentTarget.value)
|
||||
})
|
||||
html.find('#bonus-malus-context').change((event) => {
|
||||
this.rollData.bonusMalusContext = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#bonus-attaque-plusieurs').change((event) => {
|
||||
this.rollData.bonusAttaquePlusieurs = Number(event.currentTarget.value)
|
||||
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
|
||||
})
|
||||
html.find('#pouvoirPointsUsage').change((event) => {
|
||||
this.rollData.pouvoirPointsUsage = Number(event.currentTarget.value)
|
||||
})
|
||||
html.find('#attaqueDos').change((event) => {
|
||||
this.rollData.attaqueDos = event.currentTarget.checked
|
||||
})
|
||||
html.find('#bonus-attaque-seconde-arme').change((event) => {
|
||||
this.rollData.secondeArme = String(event.currentTarget.value)
|
||||
})
|
||||
html.find('#attaque-cible').change((event) => {
|
||||
this.rollData.attaqueCible = String(event.currentTarget.value)
|
||||
})
|
||||
|
||||
}
|
||||
}
|
@ -2,45 +2,6 @@
|
||||
import { HeritiersCombat } from "./heritiers-combat.js";
|
||||
import { HeritiersCommands } from "./heritiers-commands.js";
|
||||
|
||||
const __facesAdjacentes = {
|
||||
"d8": {
|
||||
1: [4, 8, 6],
|
||||
2: [7, 5, 3],
|
||||
3: [2, 8, 6],
|
||||
4: [1, 5, 7],
|
||||
5: [2, 4, 8],
|
||||
6: [1, 7, 3],
|
||||
7: [2, 4, 6],
|
||||
8: [1, 3, 5]
|
||||
},
|
||||
"d10": {
|
||||
1: [4, 6, 9, 7],
|
||||
2: [6, 8, 5, 9],
|
||||
3: [7, 5, 8, 10],
|
||||
4: [10, 6, 7, 1],
|
||||
5: [3, 9, 2, 8],
|
||||
6: [1, 4, 2, 9],
|
||||
7: [1, 3, 4, 10],
|
||||
8: [2, 10, 5, 3],
|
||||
9: [1, 5, 6, 2],
|
||||
10: [8, 4, 3, 7]
|
||||
},
|
||||
"d12": {
|
||||
1:[2, 3, 4, 5, 6],
|
||||
2: [1, 6, 8, 12, 3],
|
||||
3: [1, 4, 11, 12, 2],
|
||||
4: [1, 5, 10, 11, 3],
|
||||
5: [1, 6, 9, 10, 4],
|
||||
6: [1, 2, 8, 9, 5],
|
||||
7: [8, 9, 10, 11, 12],
|
||||
8: [2, 6, 9, 7, 12],
|
||||
9: [5, 10, 7, 8, 6],
|
||||
10: [4, 11, 7, 9, 5],
|
||||
11: [7, 10, 4, 3, 12],
|
||||
12: [2, 8, 7, 11, 3]
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class HeritiersUtility {
|
||||
|
||||
@ -83,14 +44,15 @@ export class HeritiersUtility {
|
||||
/* -------------------------------------------- */
|
||||
static sortByName(table) {
|
||||
return table.sort(function (a, b) {
|
||||
return a.name.localeCompare(b.name);
|
||||
})
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static sortArrayObjectsByName(myArray) {
|
||||
myArray.sort((a, b) => {
|
||||
return a.name.localeCompare(b.name);
|
||||
let fa = a.name.toLowerCase(),
|
||||
fb = b.name.toLowerCase();
|
||||
if (fa < fb) {
|
||||
return -1;
|
||||
}
|
||||
if (fa > fb) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
})
|
||||
}
|
||||
|
||||
@ -104,14 +66,6 @@ export class HeritiersUtility {
|
||||
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
|
||||
this.skills = skills.map(i => i.toObject())
|
||||
|
||||
game.settings.register("fvtt-les-heritiers", "heritiers-heritage", {
|
||||
name: "Points d'héritage",
|
||||
hint: "Points d'héritage du groupe",
|
||||
scope: "world",
|
||||
config: true,
|
||||
default: 0,
|
||||
type: Number
|
||||
})
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -140,21 +94,10 @@ export class HeritiersUtility {
|
||||
let rollData = message.getFlag("world", "heritiers-roll")
|
||||
let actor = this.getActorFromRollData(rollData)
|
||||
await actor.setPredilectionUsed(rollData.competence._id, predIdx)
|
||||
rollData.competence = foundry.utils.duplicate(actor.getCompetence(rollData.competence._id))
|
||||
rollData.competence = duplicate(actor.getCompetence(rollData.competence._id))
|
||||
HeritiersUtility.rollHeritiers(rollData)
|
||||
})
|
||||
|
||||
html.on("click", '.roll-tricherie-2', async event => {
|
||||
let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
|
||||
let message = game.messages.get(messageId)
|
||||
let rollData = message.getFlag("world", "heritiers-roll")
|
||||
let actor = this.getActorFromRollData(rollData)
|
||||
if ( await actor.incDecTricherie(-2) ) {
|
||||
rollData.forcedValue = Number($(event.currentTarget).data("dice-value"))
|
||||
HeritiersUtility.rollHeritiers(rollData)
|
||||
}
|
||||
})
|
||||
|
||||
html.on("click", '.roll-chat-degat', async event => {
|
||||
let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
|
||||
let message = game.messages.get(messageId)
|
||||
@ -172,7 +115,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);
|
||||
}
|
||||
@ -251,7 +194,7 @@ export class HeritiersUtility {
|
||||
|
||||
let id = rollData.rollId;
|
||||
let oldRollData = this.rollDataStore[id] || {};
|
||||
let newRollData = foundry.utils.mergeObject(oldRollData, rollData);
|
||||
let newRollData = mergeObject(oldRollData, rollData);
|
||||
this.rollDataStore[id] = newRollData;
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
@ -269,6 +212,7 @@ export class HeritiersUtility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static onSocketMesssage(msg) {
|
||||
//console.log("SOCKET MESSAGE", msg.name, game.user.character.id, msg.data.defenderId);
|
||||
if (msg.name == "msg_update_defense_state") {
|
||||
this.updateDefenseState(msg.data.defenderId, msg.data.rollId);
|
||||
}
|
||||
@ -325,8 +269,8 @@ export class HeritiersUtility {
|
||||
/* -------------------------------------------- */
|
||||
static computeMonnaieDetails(valueSC) {
|
||||
let po = Math.floor(valueSC / 400)
|
||||
let pa = Math.floor((valueSC - (po * 400)) / 20)
|
||||
let sc = valueSC - (po * 400) - (pa * 20)
|
||||
let pa = Math.floor((valueSC - (po*400)) / 20)
|
||||
let sc = valueSC - (po*400) - (pa*20)
|
||||
return {
|
||||
po: po, pa: pa, sc: sc, valueSC: valueSC
|
||||
}
|
||||
@ -339,253 +283,102 @@ export class HeritiersUtility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static computeResult(actor, rollData) {
|
||||
let isTricherieHeritage = rollData.useHeritage || rollData.useTricherie
|
||||
|
||||
rollData.diceResult = -1
|
||||
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
|
||||
|
||||
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 foundryTotal = 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.diceValue = Math.max(Math.max(resTab[0], resTab[1]), resTab[2])
|
||||
rollData.finalResult = rollData.roll.total - foundryTotal + rollData.diceValue
|
||||
|
||||
// Gestion des résultats spéciaux
|
||||
if (!isFailure && (rollData.useHeritage || rollData.useTricherie)) {
|
||||
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.isSuccess = 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.isSuccess = true
|
||||
rollData.isCriticalSuccess = true
|
||||
rollData.isSuite = true
|
||||
}
|
||||
if (rollData.useTricherie) {
|
||||
if ( rollData.useTricherie) {
|
||||
actor.incDecTricherie(-1)
|
||||
}
|
||||
if (rollData.useHeritage) {
|
||||
if ( rollData.useHeritage) {
|
||||
this.incDecHeritage()
|
||||
}
|
||||
|
||||
} else {
|
||||
rollData.finalResult = rollData.roll.total
|
||||
let rollValue = rollData.forcedValue || rollData.roll.terms[0].results[0].result
|
||||
rollData.diceResult = rollValue
|
||||
rollData.diceValue = rollValue
|
||||
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
|
||||
}
|
||||
}
|
||||
if ( !rollData.forcedValue) {
|
||||
rollData.adjacentFaces = foundry.utils.duplicate(__facesAdjacentes[rollData.mainDice][rollData.diceValue])
|
||||
}
|
||||
}
|
||||
//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)
|
||||
rollData.isCriticalSuccess = ((rollData.finalResult - rollData.sdValue) >= 7)
|
||||
rollData.isCriticalFailure = ((rollData.finalResult - rollData.sdValue) <= -7)
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static computeArmeDegats(rollData, actor) {
|
||||
rollData.degatsArme = rollData.arme.system.degats + rollData.marge
|
||||
if (rollData.attaqueDeuxArmes != 0 && rollData.secondeArme) {
|
||||
let secondeArme = actor.items.get(secondeArme)
|
||||
if (secondeArme) {
|
||||
rollData.degatsArme += secondeArme.system.degats
|
||||
rollData.degatsArme += actor.system.caracteristiques.for.value
|
||||
}
|
||||
} else {
|
||||
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)
|
||||
}
|
||||
if (rollData.mode == "attaquecharge") {
|
||||
rollData.degatsArme += 3
|
||||
}
|
||||
}
|
||||
if (rollData.attaqueCible == "membre") {
|
||||
rollData.degatsArme -= 2
|
||||
}
|
||||
if (rollData.attaqueCible == "main") {
|
||||
rollData.degatsArme -= 3
|
||||
}
|
||||
if (rollData.attaqueCible == "tete") {
|
||||
rollData.degatsArme *= 3
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
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)
|
||||
// Si compétence > 0 et d8 -> echec critique impossible
|
||||
if (rollData?.competence?.system.niveau > 0 && rollData?.mainDice == "d8") {
|
||||
rollData.isCriticalFailure = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
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 displayAsssomer(rollData, actor, nomAttaque, etatAssomer, valeurDefense) {
|
||||
rollData.defenderMode = nomAttaque
|
||||
rollData.etatAssommer = etatAssomer
|
||||
rollData.defenderValue = valeurDefense
|
||||
rollData.marge = 0
|
||||
this.computeMarge(rollData, valeurDefense)
|
||||
rollData.dureeAssommer = (rollData.marge) ? rollData.marge * 2 : 1
|
||||
this.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-assommer-result.html`, rollData)
|
||||
}, rollData, "selfroll")
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
static async rollHeritiers(rollData) {
|
||||
|
||||
let actor = this.getActorFromRollData(rollData)
|
||||
|
||||
if ( rollData.mode == "pouvoir" && actor.getPouvoirUsage(rollData.pouvoir._id) < rollData.pouvoirPointsUsage) {
|
||||
ui.notifications.warn("Pas assez de points d'usage pour ce pouvoir.")
|
||||
return
|
||||
}
|
||||
|
||||
//rollData.actionImg = "systems/fvtt-les-heritiers/assets/icons/" + actor.system.attributs[rollData.attrKey].labelnorm + ".webp"
|
||||
if (rollData.caracKey == "pre") rollData.caracKey = "pres"; // Patch tomanage wrong carac key
|
||||
rollData.carac = foundry.utils.duplicate(actor.system.caracteristiques[rollData.caracKey])
|
||||
rollData.carac = duplicate(actor.system.caracteristiques[rollData.caracKey])
|
||||
|
||||
if (rollData.forcedValue) {
|
||||
rollData.diceFormula = rollData.forcedValue
|
||||
} else {
|
||||
if (rollData.useTricherie || rollData.useHeritage) {
|
||||
rollData.diceFormula = "{1d8, 1d10, 1d12}"
|
||||
} else {
|
||||
rollData.diceFormula = "1" + rollData.mainDice + "kh1"
|
||||
}
|
||||
}
|
||||
|
||||
let rangValue = 0
|
||||
if (rollData.rang) {
|
||||
rangValue = rollData.rang.value
|
||||
}
|
||||
rollData.nbDice = (rollData.useTricherie || rollData.useHeritage) ? 3 : 1
|
||||
rollData.diceFormula = rollData.nbDice + rollData.mainDice + "kh1"
|
||||
//console.log("BEFORE COMP", rollData)
|
||||
if (rollData.competence) {
|
||||
let compmod = 0 // Bonus de compétence à 0 dans Les Heritiers
|
||||
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.carac.value}+${rollData.pouvoirBase.value}+${rangValue}+${rollData.bonusMalusContext}`
|
||||
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
|
||||
rollData.diceFormula += `+${rollData.carac.value}+${rollData.competence.system.niveau}+${rollData.bonusMalusContext}+${compmod}`
|
||||
} else {
|
||||
rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.bonusMalusContext}`
|
||||
rollData.diceFormula += `+${rollData.carac.value}+${rollData.bonusMalusContext}`
|
||||
}
|
||||
let ruleMalus = 0
|
||||
for (let malus of rollData.rulesMalus) {
|
||||
ruleMalus += malus.value
|
||||
}
|
||||
rollData.diceFormula += `+${ruleMalus}`
|
||||
rollData.diceFormula += `+${rollData.pvMalus}`
|
||||
|
||||
// Gestion bonus attaque à plusieurs
|
||||
let bonusAttaque = rollData.bonusAttaquePlusieurs
|
||||
if (rollData.attaqueDos) {
|
||||
bonusAttaque = 2
|
||||
if (rollData.bonusAttaquePlusieurs) {
|
||||
bonusAttaque = 3 // Valeur max, cf règle page 197
|
||||
}
|
||||
}
|
||||
rollData.diceFormula += `+${bonusAttaque}`
|
||||
|
||||
// Gestion attaque avec 2 armes
|
||||
if (rollData.attaqueDeuxArmes != 0) {
|
||||
rollData.diceFormula += `+${rollData.attaqueDeuxArmes}`
|
||||
}
|
||||
// Gestion des attaques ciblées
|
||||
if (rollData.attaqueCible != "none") {
|
||||
if (rollData.attaqueCible == "membre") {
|
||||
rollData.diceFormula += `-2`
|
||||
}
|
||||
if (rollData.attaqueCible == "main") {
|
||||
rollData.diceFormula += `-3`
|
||||
}
|
||||
if (rollData.attaqueCible == "tete") {
|
||||
rollData.diceFormula += `-6`
|
||||
}
|
||||
if (rollData.arme && rollData.arme.type == "arme") {
|
||||
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
|
||||
}
|
||||
|
||||
if ( !rollData.noRoll) {
|
||||
let myRoll = await new Roll(rollData.diceFormula).roll()
|
||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||
rollData.roll = foundry.utils.duplicate(myRoll)
|
||||
console.log(">>>> ", myRoll)
|
||||
this.computeResult(actor, rollData)
|
||||
this.computeMarge(rollData, rollData.sdValue) // Calcul de la marge si seuil présent
|
||||
}
|
||||
let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
|
||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||
rollData.roll = myRoll
|
||||
console.log(">>>> ", myRoll)
|
||||
|
||||
rollData.finalResult = myRoll.total
|
||||
this.computeResult(actor, rollData)
|
||||
if (rollData.mode == "init") {
|
||||
actor.setFlag("world", "last-initiative", rollData.finalResult)
|
||||
}
|
||||
|
||||
// Gestion pouvoir et points d'usage
|
||||
if (rollData.mode == "pouvoir" || rollData.mode == "pouvoirpassif") {
|
||||
actor.incDecPointsUsage(rollData.pouvoir._id, -rollData.pouvoirPointsUsage)
|
||||
}
|
||||
|
||||
this.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData)
|
||||
}, rollData)
|
||||
|
||||
// Gestion attaque standard
|
||||
if ((rollData.mode == "arme" || rollData.mode == "attaquebrutale" || rollData.mode == "attaquecharge") &&
|
||||
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.")
|
||||
}
|
||||
}
|
||||
// Gestion assomer
|
||||
if (rollData.mode == "assommer" && rollData.defenderTokenId && rollData.arme) {
|
||||
await this.displayAsssomer(rollData, actor, "Assommer", "Surprise", rollData.defenderResistancePhysique)
|
||||
await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Résistance+6", rollData.defenderResistancePhysique + 6)
|
||||
await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Parade", rollData.defenderParade)
|
||||
await this.displayAsssomer(rollData, actor, "Assommer", "Conscient, Esquive", rollData.defenderEsquive + 6)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async bonusRollHeritiers(rollData) {
|
||||
rollData.bonusFormula = rollData.addedBonus
|
||||
|
||||
let bonusRoll = await new Roll(rollData.bonusFormula).roll()
|
||||
let bonusRoll = new Roll(rollData.bonusFormula).roll({ async: false })
|
||||
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
||||
rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)
|
||||
rollData.bonusRoll = bonusRoll
|
||||
|
||||
rollData.finalResult += rollData.bonusRoll.total
|
||||
|
||||
@ -602,10 +395,6 @@ export class HeritiersUtility {
|
||||
return game.users.filter(filter).map(user => user._id);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static isArmeMelee(arme) {
|
||||
return (arme.type == "arme" && (arme.system.categorie == "lourde" || arme.system.categorie == "blanche" || arme.system.categorie == "improvise"))
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
static getWhisperRecipients(rollMode, name) {
|
||||
switch (rollMode) {
|
||||
@ -623,7 +412,7 @@ export class HeritiersUtility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static blindMessageToGM(chatOptions) {
|
||||
let chatGM = foundry.utils.duplicate(chatOptions);
|
||||
let chatGM = duplicate(chatOptions);
|
||||
chatGM.whisper = this.getUsers(user => user.isGM);
|
||||
chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content;
|
||||
console.log("blindMessageToGM", chatGM);
|
||||
@ -687,17 +476,11 @@ export class HeritiersUtility {
|
||||
/* -------------------------------------------- */
|
||||
static getBasicRollData() {
|
||||
let rollData = {
|
||||
rollId: foundry.utils.randomID(16),
|
||||
rollId: randomID(16),
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
sdList: game.system.lesheritiers.config.seuilsDifficulte,
|
||||
sdValue: -1,
|
||||
bonusAttaquePlusieurs: 0,
|
||||
attaqueDeuxArmes: 0,
|
||||
attaqueDos: false,
|
||||
bonusMalusContext: 0,
|
||||
attaqueCible: "none",
|
||||
config: game.system.lesheritiers.config,
|
||||
rulesMalus: []
|
||||
sdValue: 0,
|
||||
bonusMalusContext: 0
|
||||
}
|
||||
return rollData
|
||||
}
|
||||
@ -708,18 +491,18 @@ export class HeritiersUtility {
|
||||
if (target) {
|
||||
rollData.defenderTokenId = target.id
|
||||
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
||||
rollData.defenderName = defender.name
|
||||
rollData.defenderParade = defender.getCurrentParade()
|
||||
rollData.defenderEsquive = defender.getCurrentEsquive()
|
||||
rollData.defenderResistancePhysique = defender.getCurrentResistancePhysique()
|
||||
rollData.armeDefense = defender.getBestDefenseValue()
|
||||
rollData.targetVigueur = defender.getVigueur()
|
||||
if (rollData.armeDefense) {
|
||||
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, rollMode = undefined) {
|
||||
if (rollMode == undefined) {
|
||||
rollMode = game.settings.get("core", "rollMode")
|
||||
}
|
||||
static createChatWithRollMode(name, chatOptions, rollData = undefined) {
|
||||
this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions, rollData)
|
||||
}
|
||||
|
||||
|
@ -1 +0,0 @@
|
||||
MANIFEST-000147
|
@ -1,8 +0,0 @@
|
||||
2024/08/11-14:35:37.830180 7f47842006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.841219 7f47842006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.841349 7f47842006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.791107 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.791244 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.797592 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.818175 7f4782e006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.818252 7f4782e006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
@ -1,8 +0,0 @@
|
||||
2024/08/06-21:52:34.084831 7fbe516006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.094922 7fbe516006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.095027 7fbe516006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.976722 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.976743 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:32.009094 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:32.009385 7fbe50c006c0 Manual compaction at level-0 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:32.009440 7fbe50c006c0 Manual compaction at level-1 from '!items!1NhJH4IJpxsGmLB8' @ 72057594037927935 : 1 .. '!items!y1yOenfAJTsb3r6e' @ 0 : 0; will stop at (end)
|
@ -1 +0,0 @@
|
||||
MANIFEST-000147
|
@ -1,8 +0,0 @@
|
||||
2024/08/11-14:35:37.866313 7f4784c006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.876628 7f4784c006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.876748 7f4784c006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.811252 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.811312 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.818015 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.818222 7f4782e006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.818265 7f4782e006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
@ -1,8 +0,0 @@
|
||||
2024/08/06-21:52:34.116385 7fbe534006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.126061 7fbe534006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.126143 7fbe534006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.939443 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.939481 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.976609 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:32.009370 7fbe50c006c0 Manual compaction at level-0 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:32.009427 7fbe50c006c0 Manual compaction at level-1 from '!items!1ETVaPBtjDtzelK1' @ 72057594037927935 : 1 .. '!items!zbsVCsWxRzkzzG1N' @ 0 : 0; will stop at (end)
|
@ -1 +0,0 @@
|
||||
MANIFEST-000147
|
@ -1,8 +0,0 @@
|
||||
2024/08/11-14:35:37.810719 7f47856006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.822942 7f47856006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.823030 7f47856006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.797833 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.797891 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.804238 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.818194 7f4782e006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.818278 7f4782e006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
@ -1,8 +0,0 @@
|
||||
2024/08/06-21:52:34.069717 7fbe52a006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.079875 7fbe52a006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.079931 7fbe52a006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.870139 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.870173 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.904478 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:32.009329 7fbe50c006c0 Manual compaction at level-0 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:32.009400 7fbe50c006c0 Manual compaction at level-1 from '!items!0fPXtA5LkLgG8uDj' @ 72057594037927935 : 1 .. '!items!zvtBlG6KCIn0oCVk' @ 0 : 0; will stop at (end)
|
@ -1 +0,0 @@
|
||||
MANIFEST-000147
|
@ -1,8 +0,0 @@
|
||||
2024/08/11-14:35:37.752147 7f47842006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.763231 7f47842006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.763321 7f47842006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.762051 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.762167 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.768978 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.790765 7f4782e006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.790869 7f4782e006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
@ -1,8 +0,0 @@
|
||||
2024/08/06-21:52:34.016780 7fbe516006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.027353 7fbe516006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.027446 7fbe516006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.729942 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.730003 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.768395 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:31.869947 7fbe50c006c0 Manual compaction at level-0 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:31.870007 7fbe50c006c0 Manual compaction at level-1 from '!items!0EAAt0qSzcD9VRBH' @ 72057594037927935 : 1 .. '!items!zfpjROW9LDAlXUkN' @ 0 : 0; will stop at (end)
|
@ -1 +0,0 @@
|
||||
MANIFEST-000147
|
@ -1,8 +0,0 @@
|
||||
2024/08/11-14:35:37.792985 7f4784c006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.804663 7f4784c006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.804793 7f4784c006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.769225 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.769288 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.776053 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.790785 7f4782e006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.790919 7f4782e006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
@ -1,8 +0,0 @@
|
||||
2024/08/06-21:52:34.054034 7fbe534006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.065082 7fbe534006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.065180 7fbe534006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.802367 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.802389 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.832600 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:31.869974 7fbe50c006c0 Manual compaction at level-0 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:31.869999 7fbe50c006c0 Manual compaction at level-1 from '!items!0cNSRJVPk3GbvxfD' @ 72057594037927935 : 1 .. '!items!yWDg2KlXEz33TSmZ' @ 0 : 0; will stop at (end)
|
@ -1 +0,0 @@
|
||||
MANIFEST-000147
|
@ -1,8 +0,0 @@
|
||||
2024/08/11-14:35:37.734005 7f47856006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.745943 7f47856006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.746038 7f47856006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.776285 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.776344 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.783086 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.790801 7f4782e006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.790907 7f4782e006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
@ -1,8 +0,0 @@
|
||||
2024/08/06-21:52:34.001824 7fbe52a006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.012892 7fbe52a006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.012951 7fbe52a006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.832758 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.832813 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.869708 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:31.869983 7fbe50c006c0 Manual compaction at level-0 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:31.870021 7fbe50c006c0 Manual compaction at level-1 from '!items!0V86n4TU8NegrR2B' @ 72057594037927935 : 1 .. '!items!zEl2NQsnCpELVWzh' @ 0 : 0; will stop at (end)
|
@ -1 +0,0 @@
|
||||
MANIFEST-000147
|
@ -1,8 +0,0 @@
|
||||
2024/08/11-14:35:37.768123 7f47838006c0 Recovering log #145
|
||||
2024/08/11-14:35:37.780266 7f47838006c0 Delete type=3 #143
|
||||
2024/08/11-14:35:37.780376 7f47838006c0 Delete type=0 #145
|
||||
2024/08/11-14:39:33.783340 7f4782e006c0 Level-0 table #150: started
|
||||
2024/08/11-14:39:33.783403 7f4782e006c0 Level-0 table #150: 0 bytes OK
|
||||
2024/08/11-14:39:33.790567 7f4782e006c0 Delete type=0 #148
|
||||
2024/08/11-14:39:33.790815 7f4782e006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.790893 7f4782e006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
@ -1,8 +0,0 @@
|
||||
2024/08/06-21:52:34.031942 7fbe520006c0 Recovering log #141
|
||||
2024/08/06-21:52:34.041612 7fbe520006c0 Delete type=3 #139
|
||||
2024/08/06-21:52:34.041667 7fbe520006c0 Delete type=0 #141
|
||||
2024/08/06-23:00:31.768505 7fbe50c006c0 Level-0 table #146: started
|
||||
2024/08/06-23:00:31.768526 7fbe50c006c0 Level-0 table #146: 0 bytes OK
|
||||
2024/08/06-23:00:31.802256 7fbe50c006c0 Delete type=0 #144
|
||||
2024/08/06-23:00:31.869963 7fbe50c006c0 Manual compaction at level-0 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:31.870013 7fbe50c006c0 Manual compaction at level-1 from '!items!2QqvtClSVnh5ejXu' @ 72057594037927935 : 1 .. '!items!xzRJ6JP1HqoqxLdj' @ 0 : 0; will stop at (end)
|
@ -1 +0,0 @@
|
||||
MANIFEST-000148
|
@ -1,8 +0,0 @@
|
||||
2024/08/11-14:35:37.846774 7f47838006c0 Recovering log #146
|
||||
2024/08/11-14:35:37.859344 7f47838006c0 Delete type=3 #144
|
||||
2024/08/11-14:35:37.859473 7f47838006c0 Delete type=0 #146
|
||||
2024/08/11-14:39:33.804398 7f4782e006c0 Level-0 table #151: started
|
||||
2024/08/11-14:39:33.804435 7f4782e006c0 Level-0 table #151: 0 bytes OK
|
||||
2024/08/11-14:39:33.811039 7f4782e006c0 Delete type=0 #149
|
||||
2024/08/11-14:39:33.818208 7f4782e006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.818290 7f4782e006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
@ -1,8 +0,0 @@
|
||||
2024/08/06-21:52:34.099478 7fbe520006c0 Recovering log #142
|
||||
2024/08/06-21:52:34.110385 7fbe520006c0 Delete type=3 #140
|
||||
2024/08/06-21:52:34.110514 7fbe520006c0 Delete type=0 #142
|
||||
2024/08/06-23:00:31.904657 7fbe50c006c0 Level-0 table #147: started
|
||||
2024/08/06-23:00:31.904695 7fbe50c006c0 Level-0 table #147: 0 bytes OK
|
||||
2024/08/06-23:00:31.939251 7fbe50c006c0 Delete type=0 #145
|
||||
2024/08/06-23:00:32.009353 7fbe50c006c0 Manual compaction at level-0 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:32.009413 7fbe50c006c0 Manual compaction at level-1 from '!items!19r9ijZUyvnlIqgm' @ 72057594037927935 : 1 .. '!items!zON0h5SjFyANjPnA' @ 0 : 0; will stop at (end)
|
@ -1 +0,0 @@
|
||||
MANIFEST-000146
|
@ -1,7 +0,0 @@
|
||||
2024/08/11-14:35:37.883245 7f47856006c0 Recovering log #144
|
||||
2024/08/11-14:35:37.895329 7f47856006c0 Delete type=3 #142
|
||||
2024/08/11-14:35:37.895444 7f47856006c0 Delete type=0 #144
|
||||
2024/08/11-14:39:33.836949 7f4782e006c0 Level-0 table #149: started
|
||||
2024/08/11-14:39:33.837017 7f4782e006c0 Level-0 table #149: 0 bytes OK
|
||||
2024/08/11-14:39:33.844766 7f4782e006c0 Delete type=0 #147
|
||||
2024/08/11-14:39:33.851315 7f4782e006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
@ -1,7 +0,0 @@
|
||||
2024/08/06-21:52:34.132281 7fbe52a006c0 Recovering log #140
|
||||
2024/08/06-21:52:34.142883 7fbe52a006c0 Delete type=3 #138
|
||||
2024/08/06-21:52:34.142989 7fbe52a006c0 Delete type=0 #140
|
||||
2024/08/06-23:00:32.009525 7fbe50c006c0 Level-0 table #145: started
|
||||
2024/08/06-23:00:32.009564 7fbe50c006c0 Level-0 table #145: 0 bytes OK
|
||||
2024/08/06-23:00:32.046125 7fbe50c006c0 Delete type=0 #143
|
||||
2024/08/06-23:00:32.165305 7fbe50c006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
@ -1 +0,0 @@
|
||||
MANIFEST-000116
|
@ -1,8 +0,0 @@
|
||||
2024/08/11-14:35:37.899642 7f47842006c0 Recovering log #114
|
||||
2024/08/11-14:35:37.910975 7f47842006c0 Delete type=3 #112
|
||||
2024/08/11-14:35:37.911099 7f47842006c0 Delete type=0 #114
|
||||
2024/08/11-14:39:33.844932 7f4782e006c0 Level-0 table #119: started
|
||||
2024/08/11-14:39:33.844982 7f4782e006c0 Level-0 table #119: 0 bytes OK
|
||||
2024/08/11-14:39:33.851094 7f4782e006c0 Delete type=0 #117
|
||||
2024/08/11-14:39:33.851332 7f4782e006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2024/08/11-14:39:33.863651 7f4782e006c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
@ -1,8 +0,0 @@
|
||||
2024/08/06-21:52:34.146274 7fbe516006c0 Recovering log #110
|
||||
2024/08/06-21:52:34.157668 7fbe516006c0 Delete type=3 #108
|
||||
2024/08/06-21:52:34.157768 7fbe516006c0 Delete type=0 #110
|
||||
2024/08/06-23:00:32.098671 7fbe50c006c0 Level-0 table #115: started
|
||||
2024/08/06-23:00:32.098750 7fbe50c006c0 Level-0 table #115: 0 bytes OK
|
||||
2024/08/06-23:00:32.127456 7fbe50c006c0 Delete type=0 #113
|
||||
2024/08/06-23:00:32.165357 7fbe50c006c0 Manual compaction at level-0 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
||||
2024/08/06-23:00:32.212632 7fbe50c006c0 Manual compaction at level-1 from '!scenes!8DjkNeeujp2qff1N' @ 72057594037927935 : 1 .. '!scenes!ypDutqjqZcr7lx6I' @ 0 : 0; will stop at (end)
|
@ -78,7 +78,9 @@
|
||||
.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;
|
||||
}
|
||||
|
||||
.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 {
|
||||
color: rgb(41, 38, 38);
|
||||
}
|
||||
@ -86,13 +88,6 @@
|
||||
background: rgba(0,0,0,0.75);
|
||||
}
|
||||
|
||||
.page-heading {
|
||||
color: #151c1f;
|
||||
}
|
||||
.heading-link {
|
||||
color: #151c1f;
|
||||
}
|
||||
|
||||
.window-app.sheet .window-content {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
@ -443,7 +438,7 @@ table {border: 1px solid #7a7971;}
|
||||
background-repeat: repeat;
|
||||
}
|
||||
|
||||
.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"] {
|
||||
.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"] {
|
||||
/*color: rgba(36, 37, 37, 0.75);*/
|
||||
/*background: rgba(255, 255, 255, 0.05);*/
|
||||
/*border: 2px saddlebrown;*/
|
||||
@ -573,7 +568,6 @@ ul, li {
|
||||
|
||||
.specialisation-label {
|
||||
font-size: 0.8rem;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.carac-label,
|
||||
@ -653,15 +647,7 @@ 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;
|
||||
}
|
||||
@ -1024,6 +1010,8 @@ ul, li {
|
||||
}
|
||||
|
||||
#sidebar #sidebar-tabs i{
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
display: inline-block;
|
||||
background-position:center;
|
||||
background-size:cover;
|
||||
@ -1031,6 +1019,23 @@ ul, li {
|
||||
|
||||
}
|
||||
|
||||
/*#sidebar #sidebar-tabs i.fa-comments:before, #sidebar #sidebar-tabs i.fa-fist-raised:before, #sidebar #sidebar-tabs i.fa-users:before, #sidebar #sidebar-tabs i.fa-map:before, #sidebar #sidebar-tabs i.fa-suitcase:before, #sidebar #sidebar-tabs i.fa-book-open:before, #sidebar #sidebar-tabs i.fa-th-list:before, #sidebar #sidebar-tabs i.fa-music:before, #sidebar #sidebar-tabs i.fa-atlas:before, #sidebar #sidebar-tabs i.fa-cogs:before {content: "";}
|
||||
#sidebar #sidebar-tabs i.fa-comments {background: url("img/ui/icon_sidebar_chat.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-fist-raised {background: url("img/ui/icon_sidebar_fight.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-users {background: url("img/ui/icon_sidebar_actor.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-map {background: url("img/ui/icon_sidebar_scene.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-suitcase {background: url("img/ui/icon_sidebar_item.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-book-open {background: url("img/ui/icon_sidebar_journal.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-th-list {background: url("img/ui/icon_sidebar_rolltable.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-music {background: url("img/ui/icon_sidebar_music.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-atlas {background: url("img/ui/icon_sidebar_compendium.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-cogs {background: url("img/ui/icon_sidebar_settings.svg") no-repeat;}
|
||||
|
||||
#combat #combat-controls {
|
||||
box-shadow: inset 0 0 2rem rgba(0,0,0,0.5);
|
||||
}
|
||||
*/
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
/* Control, Tool, hotbar & navigation */
|
||||
|
||||
@ -1199,17 +1204,7 @@ ul, li {
|
||||
top:1px;
|
||||
}
|
||||
|
||||
h4.entry-name.document-name {
|
||||
color: #f3eeee;
|
||||
}
|
||||
.compendium h4.entry-name.document-name {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.fxmaster {
|
||||
background: #443e37E0;
|
||||
background-color: #443e37E0;
|
||||
}
|
||||
.button-sheet-roll {
|
||||
box-shadow: inset 0px 1px 0px 0px #a6827e;
|
||||
background: linear-gradient(to bottom, #41545a 5%, #2e5561 100%);
|
||||
@ -1233,25 +1228,11 @@ h4.entry-name.document-name {
|
||||
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
|
||||
background-color: rgb(56, 33, 33);
|
||||
}
|
||||
.roll-tricherie-2 {
|
||||
margin: 2px 2px 2px 2px;
|
||||
box-shadow: inset 0px 1px 0px 0px #a6827e;
|
||||
background: linear-gradient(to bottom, #41545a 5%, #2e5561 100%);
|
||||
background-color: #7d5d3b00;
|
||||
border-radius: 4px;
|
||||
border: 1px ridge #846109;
|
||||
padding: 1px 1px 0px 1px;
|
||||
text-decoration: none;
|
||||
text-shadow: 0px 1px 0px #4d3534;
|
||||
}
|
||||
.button-sheet-roll:active {
|
||||
position:relative;
|
||||
top:1px;
|
||||
}
|
||||
.button-sheet-roll-long1 {
|
||||
max-width: 6.1rem;
|
||||
min-width: 6.1rem;
|
||||
}
|
||||
|
||||
.defense-sheet {
|
||||
border-radius: 4px;
|
||||
text-align: center;
|
||||
@ -1445,10 +1426,6 @@ h4.entry-name.document-name {
|
||||
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;
|
||||
|
145
system.json
@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "fvtt-les-heritiers",
|
||||
"description": "Les Héritiers pour FoundryVTT",
|
||||
"version": "12.0.4",
|
||||
"version": "10.0.14",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Uberwald/LeRatierBretonnien",
|
||||
@ -15,13 +15,11 @@
|
||||
"esmodules": [
|
||||
"modules/heritiers-main.js"
|
||||
],
|
||||
"grid": {
|
||||
"distance": 5,
|
||||
"units": "m"
|
||||
},
|
||||
"gridDistance": 5,
|
||||
"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-12.0.4.zip",
|
||||
"download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.0.14.zip",
|
||||
"languages": [
|
||||
{
|
||||
"lang": "fr",
|
||||
@ -30,163 +28,87 @@
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"packFolders": [
|
||||
{
|
||||
"name": "Les Héritiers",
|
||||
"sorting": "m",
|
||||
"color": "#00435c",
|
||||
"folders": [
|
||||
{
|
||||
"name": "Création de Personnage",
|
||||
"sorting": "a",
|
||||
"color": "#00435c",
|
||||
"packs": [
|
||||
"competences",
|
||||
"atouts-feeriques",
|
||||
"avantages",
|
||||
"capacites",
|
||||
"competences",
|
||||
"desavantages",
|
||||
"pouvoirs",
|
||||
"profils",
|
||||
"archetypes-fees"
|
||||
],
|
||||
"folders": []
|
||||
},
|
||||
{
|
||||
"name": "Equipement",
|
||||
"sorting": "a",
|
||||
"color": "#00435c",
|
||||
"packs": [
|
||||
"armes-et-protection"
|
||||
],
|
||||
"folders": []
|
||||
}
|
||||
],
|
||||
"packs":
|
||||
["scenes"]
|
||||
}
|
||||
],
|
||||
"packs": [
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Compétences",
|
||||
"name": "competences",
|
||||
"path": "packs/competences",
|
||||
"path": "packs/competences.db",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Avantages",
|
||||
"name": "avantages",
|
||||
"path": "packs/avantages",
|
||||
"path": "packs/avantages.db",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Désavantages",
|
||||
"name": "desavantages",
|
||||
"path": "packs/desavantages",
|
||||
"path": "packs/desavantages.db",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Capacités Naturelles",
|
||||
"name": "capacites",
|
||||
"path": "packs/capacites",
|
||||
"path": "packs/capacites.db",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Atouts Féériques",
|
||||
"name": "atouts-feeriques",
|
||||
"path": "packs/atouts-feeriques",
|
||||
"path": "packs/atouts-feeriques.db",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Fées",
|
||||
"name": "archetypes-fees",
|
||||
"path": "packs/archetypes-fees",
|
||||
"path": "packs/archetypes-fees.db",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Pouvoirs",
|
||||
"name": "pouvoirs",
|
||||
"path": "packs/pouvoirs",
|
||||
"path": "packs/pouvoirs.db",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Armes et Protections",
|
||||
"name": "armes-et-protection",
|
||||
"path": "packs/armes-et-protection",
|
||||
"path": "packs/armes-et-protection.db",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Profils",
|
||||
"name": "profils",
|
||||
"path": "packs/profils",
|
||||
"path": "packs/profils.db",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Scene",
|
||||
"label": "Scènes",
|
||||
"name": "scenes",
|
||||
"path": "packs/scenes",
|
||||
"system": "fvtt-les-heritiers",
|
||||
"flags": {},
|
||||
"ownership": {
|
||||
"PLAYER": "OBSERVER",
|
||||
"ASSISTANT": "OWNER"
|
||||
}
|
||||
"private": false,
|
||||
"flags": {}
|
||||
}
|
||||
],
|
||||
"primaryTokenAttribute": "sante.vigueur",
|
||||
@ -199,7 +121,8 @@
|
||||
"url": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers",
|
||||
"background": "systems/fvtt-les-heritiers/assets/ui/wallpaper_foundry2.webp",
|
||||
"compatibility": {
|
||||
"minimum": "11",
|
||||
"verified": "12"
|
||||
"minimum": "10",
|
||||
"verified": "10",
|
||||
"maximum": "10"
|
||||
}
|
||||
}
|
@ -2,27 +2,20 @@
|
||||
"Actor": {
|
||||
"types": [
|
||||
"personnage",
|
||||
"pnj"
|
||||
"creature"
|
||||
],
|
||||
"templates": {
|
||||
"biodata": {
|
||||
"biodata": {
|
||||
"name": "",
|
||||
"activite":"",
|
||||
"nomhumain": "",
|
||||
"activites": "",
|
||||
"profilmajeur": "",
|
||||
"profilmineur": "",
|
||||
"fortune": 0,
|
||||
"traitscaracteres": "",
|
||||
"tailledemasquee": "",
|
||||
"taillemasquee": "",
|
||||
"poidsmasquee": "",
|
||||
"poidsdemasquee": "",
|
||||
"apparencemasquee": "",
|
||||
"apparencedemasquee": "",
|
||||
"titrefamille": "",
|
||||
"langues": "",
|
||||
"factionfeerique": "",
|
||||
"typetaille": "",
|
||||
"age": 0,
|
||||
"poids": "",
|
||||
"taille": "",
|
||||
@ -30,13 +23,9 @@
|
||||
"sexe": "",
|
||||
"yeux": "",
|
||||
"description": "",
|
||||
"revesetranges": "",
|
||||
"secretsdecouverts": "",
|
||||
"questions": "",
|
||||
"habitat": "",
|
||||
"notes": "",
|
||||
"statut": "",
|
||||
"playernotes":"",
|
||||
"gmnotes": ""
|
||||
}
|
||||
},
|
||||
@ -98,9 +87,9 @@
|
||||
"max": 1
|
||||
},
|
||||
"pres": {
|
||||
"label": "Prestance",
|
||||
"labelnorm": "prestance",
|
||||
"abbrev": "pres",
|
||||
"label": "Présence",
|
||||
"labelnorm": "presence",
|
||||
"abbrev": "pre",
|
||||
"kind": "mental",
|
||||
"value": 1,
|
||||
"rang": 0,
|
||||
@ -116,25 +105,20 @@
|
||||
"max": 1
|
||||
}
|
||||
},
|
||||
"statutmasque": "masque",
|
||||
"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
|
||||
@ -142,43 +126,36 @@
|
||||
},
|
||||
"pv": {
|
||||
"value": 0,
|
||||
"max": 0,
|
||||
"mod": 0
|
||||
"max": 0
|
||||
},
|
||||
"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
|
||||
}
|
||||
@ -193,8 +170,6 @@
|
||||
"demasquee": 0
|
||||
},
|
||||
"parade": {
|
||||
"masquee": 0,
|
||||
"demasquee": 0,
|
||||
"value": 0
|
||||
},
|
||||
"resistancephysique": {
|
||||
@ -234,12 +209,6 @@
|
||||
"biodata",
|
||||
"core"
|
||||
]
|
||||
},
|
||||
"pnj": {
|
||||
"templates": [
|
||||
"biodata",
|
||||
"core"
|
||||
]
|
||||
}
|
||||
},
|
||||
"Item": {
|
||||
@ -255,26 +224,24 @@
|
||||
}
|
||||
},
|
||||
"types": [
|
||||
"accessoire",
|
||||
"arme",
|
||||
"atoutfeerique",
|
||||
"avantage",
|
||||
"capacitenaturelle",
|
||||
"competence",
|
||||
"contact",
|
||||
"desavantage",
|
||||
"equipement",
|
||||
"fee",
|
||||
"avantage",
|
||||
"desavantage",
|
||||
"capacitenaturelle",
|
||||
"pouvoir",
|
||||
"profil",
|
||||
"protection"
|
||||
"atoutfeerique",
|
||||
"competence",
|
||||
"arme",
|
||||
"protection",
|
||||
"accessoire",
|
||||
"contact",
|
||||
"profil"
|
||||
],
|
||||
"profil": {
|
||||
"profiltype": "majeur",
|
||||
"description": ""
|
||||
},
|
||||
"contact": {
|
||||
"contacttype": "",
|
||||
"feetype": 0,
|
||||
"description": ""
|
||||
},
|
||||
"fee": {
|
||||
@ -314,8 +281,6 @@
|
||||
"activation": "",
|
||||
"istest": false,
|
||||
"feeriemasque": "feerie",
|
||||
"zoneffet": "",
|
||||
"testautre": "",
|
||||
"carac": "pre",
|
||||
"duree": "",
|
||||
"cibles": "",
|
||||
@ -323,7 +288,6 @@
|
||||
"portee": "",
|
||||
"resistance": "",
|
||||
"resistanceautre":"",
|
||||
"pointsusagecourant": -1,
|
||||
"isvirulence": false,
|
||||
"virulence":"",
|
||||
"description": ""
|
||||
|
@ -1,485 +0,0 @@
|
||||
<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.value}}" data-dtype="Number" disabled />
|
||||
<span> </span>
|
||||
|
||||
<select class="item-field-label-medium" type="text" name="system.statutmasque" value="{{system.statutmasque}}" data-dtype="string">
|
||||
{{selectOptions config.statutMasque selected=system.statutmasque}}
|
||||
</select>
|
||||
|
||||
<span> </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"> </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">
|
||||
{{selectOptions @root.config.listNiveau selected=skill.system.niveau}}
|
||||
</select>
|
||||
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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"> </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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-equip" title="Equipé">{{#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="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="protection" title="Ajouter une protection"><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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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-medium"></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" />
|
||||
<span class="item-field-label-medium"></span>
|
||||
<label class="item-field-label-long roll-style"><a class="dialog-recup-usage item-field-label-long">Récup. P. d'Usage</a></label>
|
||||
</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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="avantage" title="Ajouter un avantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="desavantage" title="Ajouter un Désavantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="atoutfeerique" title="Ajouter un Atout féerique"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Usage</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="pouvoir" title="Ajouter un pouvoir"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</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}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
|
||||
<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>
|
||||
<span class="item-field-label-medium">{{pouvoir.system.pointsusagecourant}}/{{pouvoir.maxUsage}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="capacitenaturelle" title="Ajouter une Capacité naturelle"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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"> </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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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>
|
@ -14,8 +14,7 @@
|
||||
{{#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>
|
||||
<h4 class="item-name-label competence-name"><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"
|
||||
@ -31,8 +30,7 @@
|
||||
{{#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>
|
||||
<h4 class="item-name-label competence-name"><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"
|
||||
@ -44,30 +42,18 @@
|
||||
</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}}" disabled
|
||||
data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.pv.mod" value="{{system.pv.mod}}"
|
||||
data-dtype="Number" />
|
||||
<label class="item-field-label-short">Malus</label>
|
||||
<input type="text" class="item-field-label-short" value="{{pvMalus.value}}" data-dtype="Number" disabled />
|
||||
<span> </span>
|
||||
|
||||
<select class="item-field-label-medium" type="text" name="system.statutmasque"
|
||||
value="{{system.statutmasque}}" data-dtype="string">
|
||||
{{selectOptions config.statutMasque selected=system.statutmasque}}
|
||||
</select>
|
||||
|
||||
<span> </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 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> </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>
|
||||
@ -76,12 +62,10 @@
|
||||
{{!-- 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="contact">Contacts</a>
|
||||
<a class="item" data-tab="biodata">Bio</a>
|
||||
<a class="item" data-tab="notes">Notes</a>
|
||||
<a class="item" data-tab="fee">Fée</a>
|
||||
<a class="item" data-tab="biodata">Bio&Notes</a>
|
||||
</nav>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
@ -92,23 +76,43 @@
|
||||
|
||||
<div class="flexcol">
|
||||
|
||||
<div class="grid-2col">
|
||||
{{#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"> </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>
|
||||
{{#each utileSkillsPhysical as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil
|
||||
config=config}}
|
||||
<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>
|
||||
{{/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>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{{#each utileSkillsMental as |skillDef keyProfil|}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil
|
||||
config=config}}
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
@ -120,24 +124,22 @@
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="competence" title="Ajouter une compétence futile"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</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"
|
||||
<span class="item-field-label-long2"><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">
|
||||
{{selectOptions @root.config.listNiveau selected=skill.system.niveau}}
|
||||
<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="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></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}}
|
||||
@ -158,41 +160,39 @@
|
||||
<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" />
|
||||
<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-short"> </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" />
|
||||
<input type="text" class="item-field-label-short" name="system.combat.parade.value" value="{{system.combat.parade.value}}" 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-short"> </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-short"> </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" />
|
||||
<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-short"> </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" />
|
||||
<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>
|
||||
|
||||
@ -205,10 +205,13 @@
|
||||
<h3><label class="items-title-text">Armes</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Dégats</label>
|
||||
<label class="short-label">Attaque</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Attaque</label>
|
||||
<label class="short-label">Défense</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Dégats</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
@ -222,33 +225,19 @@
|
||||
<span class="item-name-label competence-name">{{arme.name}}</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
{{arme.system.degats}}
|
||||
<button class="roll-arme-offensif button-sheet-roll">Attaquer</button>
|
||||
</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-attaque-arme button-sheet-roll">Attaque</button>
|
||||
<button class="roll-arme-degats button-sheet-roll">{{arme.system.totalDegats}}</button>
|
||||
</span>
|
||||
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-assomer-arme button-sheet-roll">Assomer</button>
|
||||
</span>
|
||||
|
||||
{{#if arme.system.isMelee}}
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-attaque-charge-arme button-sheet-roll">Charger</button>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<button class="roll-attaque-brutale-arme button-sheet-roll button-sheet-roll-long1">Attaque
|
||||
brutale</button>
|
||||
</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-equip" title="Equipé">{{#if arme.system.equipped}}<i
|
||||
<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="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></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}}
|
||||
@ -266,7 +255,7 @@
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="protection" title="Ajouter une protection"><i
|
||||
<a class="item-control item-add" data-type="arme" title="Ajouter une arme"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
@ -279,8 +268,8 @@
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></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}}
|
||||
@ -299,8 +288,8 @@
|
||||
<span class="item-field-label-long2">{{fee.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></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>
|
||||
</div>
|
||||
@ -308,22 +297,13 @@
|
||||
<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-medium"></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" />
|
||||
<span class="item-field-label-medium"></span>
|
||||
<label class="item-field-label-long roll-style"><a class="dialog-recup-usage item-field-label-long">Récup.
|
||||
P. d'Usage</a></label>
|
||||
<label class="item-field-label-medium">Féerie</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>
|
||||
<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>
|
||||
@ -338,8 +318,6 @@
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="avantage" title="Ajouter un avantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each avantages as |avantage key|}}
|
||||
@ -348,8 +326,8 @@
|
||||
<span class="item-field-label-long2">{{avantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></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}}
|
||||
@ -364,8 +342,6 @@
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="desavantage" title="Ajouter un désavantage"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each desavantages as |desavantage key|}}
|
||||
@ -374,8 +350,8 @@
|
||||
<span class="item-field-label-long2">{{desavantage.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></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}}
|
||||
@ -390,8 +366,6 @@
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="atoutfeerique" title="Ajouter un atout féerique"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each atouts as |atout key|}}
|
||||
@ -400,58 +374,14 @@
|
||||
<span class="item-field-label-long2">{{atout.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></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 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>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Usage</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="pouvoir" title="Ajouter un pouvoir"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</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}}" />
|
||||
<span class="item-field-label-long2 roll-style"><a class="roll-pouvoir">{{pouvoir.name}}</a></span>
|
||||
<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>
|
||||
<span class="item-field-label-medium">{{pouvoir.system.pointsusagecourant}}/{{pouvoir.maxUsage}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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">
|
||||
@ -460,8 +390,6 @@
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="capacitenaturelle" title="Ajouter une capacité naturelle"><i
|
||||
class="fas fa-plus"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{#each capacites as |capa key|}}
|
||||
@ -470,8 +398,8 @@
|
||||
<span class="item-field-label-long2">{{capa.name}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'item"><i class="fas fa-trash"></i></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}}
|
||||
@ -483,148 +411,14 @@
|
||||
|
||||
</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"> </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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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"> </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"> </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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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"> </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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Editer l'item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Supprimer l'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" />
|
||||
<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>
|
||||
</ul>
|
||||
</div>
|
||||
@ -633,12 +427,7 @@
|
||||
<div>
|
||||
<ul>
|
||||
<li class="flexrow item">
|
||||
<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>
|
||||
<label class="generic-label">Sexe</label>
|
||||
<input type="text" class="" name="system.biodata.sex" value="{{system.biodata.sex}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
@ -652,23 +441,18 @@
|
||||
<div>
|
||||
<ul>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Taille Masquée</label>
|
||||
<input type="text" class="" name="system.biodata.taillemasquee" value="{{system.biodata.taillemasquee}}"
|
||||
<label class="generic-label">Taille</label>
|
||||
<input type="text" class="" name="system.biodata.size" value="{{system.biodata.size}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<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">Type de taille</label>
|
||||
<input type="text" class="" name="system.experience.typetaille" value="{{system.experience.typetaille}}"
|
||||
<label class="generic-label">Cheveux</label>
|
||||
<input type="text" class="" name="system.biodata.hair" value="{{system.biodata.hair}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Points d'héritage</label>
|
||||
<input type="text" class="" name="system.rang.heritage.value" value="{{system.rang.heritage.value}}"
|
||||
<label class="generic-label">Expérience</label>
|
||||
<input type="text" class="" name="system.experience.value" value="{{system.experience.value}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
|
||||
@ -678,66 +462,32 @@
|
||||
<div>
|
||||
<ul>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Poids Masqué</label>
|
||||
<input type="text" class="" name="system.biodata.poidsmasquee" value="{{system.biodata.poidsmasquee}}"
|
||||
<label class="generic-label">Yeux</label>
|
||||
<input type="text" class="" name="system.biodata.eyes" value="{{system.biodata.eyes}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">Poids Démasqué</label>
|
||||
<input type="text" class="" name="system.biodata.poidsdemasquee" value="{{system.biodata.poidsdemasquee}}"
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Main préférée</label>
|
||||
<input type="text" class="" name="system.biodata.preferredhand" value="{{system.biodata.preferredhand}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">XP</label>
|
||||
<input type="text" class="" name="system.experience.value" value="{{system.experience.value}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="generic-label">XP pour tricher</label>
|
||||
<input type="text" class="" name="system.experience.pourtricher" value="{{system.experience.pourtricher}}"
|
||||
<li class="flexrow item">
|
||||
<label class="generic-label">Poids</label>
|
||||
<input type="text" class="" name="system.biodata.weight" value="{{system.biodata.weight}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab notes" data-group="primary" data-tab="notes">
|
||||
|
||||
<span>
|
||||
<h3>Historique</h3>
|
||||
<h3>Description</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>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>
|
||||
<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>
|
||||
|
||||
</section>
|
||||
|
@ -1,43 +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>Défense de {{defenderName}} : {{defenderMode}} ({{defenderValue}})</li>
|
||||
|
||||
{{#if isSuccess}}
|
||||
<li>Marge : {{marge}}</li>
|
||||
<li>Degats de l'arme : {{degatsArme}}</li>
|
||||
|
||||
{{#if (eq attaqueCible "membre")}}
|
||||
<li><strong>Cible un membre : La cible a -2 de malus sur ces actions avec ce membre (mouvement 2 si jambes)</strong>
|
||||
</li>
|
||||
{{/if}}
|
||||
{{#if (eq attaqueCible "main")}}
|
||||
<li><strong>Cible une main : La cible ne peut plus utiliser sa main</strong></li>
|
||||
{{/if}}
|
||||
|
||||
{{#if isCriticalSuccess}}
|
||||
<Li>Critique : Aubaine ou +2 aux dégats ci-dessus</li>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<li>Echec face à la {{defenderMode}} !</li>
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
@ -18,13 +18,11 @@
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
<li>Assomer {{defenderName}} en état de : {{etatAssommer}}</li>
|
||||
|
||||
{{#if isSuccess}}
|
||||
<li>Marge : {{marge}}</li>
|
||||
<li>{{defenderName}} est assomé pour {{dureeAssommer}} minutes !</li>
|
||||
{{else}}
|
||||
<li>{{defenderName}} n'a pas été assomé et est conscient la tentative !</li>
|
||||
<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>
|
@ -18,76 +18,33 @@
|
||||
|
||||
<div>
|
||||
<ul>
|
||||
<li class="heritiers-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
|
||||
|
||||
{{#if rang}}
|
||||
<li>{{rang.label}} : {{rang.value}}</li>
|
||||
{{/if}}
|
||||
<li class="hawkmoon-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
|
||||
|
||||
{{#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 (eq mode "assommer")}}
|
||||
<li>Attaque pour assommer</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if pouvoir}}
|
||||
<li>Pouvoir : {{pouvoir.name}}</li>
|
||||
<li>Effet : {{pouvoir.system.effet}}</li>
|
||||
<li>Points d'usage consommés : {{pouvoirPointsUsage}}</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if forcedValue}}
|
||||
<li>Vous dépense 2 points de Tricherie et utilisé une face adjacente du dé !</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if noRoll}}
|
||||
{{else}}
|
||||
<li>Formule : {{diceFormula}}</li>
|
||||
<li>Résultat du dé : {{diceResult}} </li>
|
||||
<li>Résultat du dé : {{diceResult}}</li>
|
||||
|
||||
{{#if adjacentFaces}}
|
||||
<li>Faces Adjacentes :
|
||||
{{#each adjacentFaces as |value key|}}
|
||||
<a class="roll-tricherie-2" data-dice-value="{{value}}">{{value}}</a>
|
||||
{{/each}}
|
||||
</li>
|
||||
{{/if}}
|
||||
<li>Total : {{finalResult}}</li>
|
||||
|
||||
<li>Total : {{finalResult}} {{#if (gt sdValue "-1")}}(Marge : {{marge}}){{/if}}</li>
|
||||
|
||||
|
||||
{{#if (gt sdValue "-1")}}
|
||||
<li>Seuil de difficulté : {{sdValue}}</li>
|
||||
{{#if sdValue}}
|
||||
{{#if isSuccess}}
|
||||
<li class="chat-success">Succès...
|
||||
<li class="chat-success">Succés...
|
||||
</li>
|
||||
{{else}}
|
||||
<li class="chat-failure">Echec...</li>
|
||||
{{/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}}
|
||||
<li class="chat-success">Réussite Critique !!!</li>
|
||||
{{/if}}
|
||||
{{#if isCriticalFailure}}
|
||||
<li class="chat-failure">Echec Critique !!!</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
356
templates/creature-sheet.html
Normal file
@ -0,0 +1,356 @@
|
||||
<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">
|
||||
|
||||
<ul class="item-list alternate-list">
|
||||
|
||||
<li class="item flexrow ">
|
||||
<h4 class="item-name-label competence-name">Ressources</h4>
|
||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||
name="system.ressources.value" value="{{system.ressources.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Tab Navigation --}}
|
||||
<nav class="sheet-tabs tabs" data-group="primary">
|
||||
<a class="item" data-tab="principal">Technique</a>
|
||||
<a class="item" data-tab="competences">Compétences</a>
|
||||
<a class="item" data-tab="talents">Talents</a>
|
||||
<a class="item" data-tab="armes">Armes</a>
|
||||
<a class="item" data-tab="biodata">Bio&Notes</a>
|
||||
</nav>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{!-- Main Tab --}}
|
||||
<div class="tab principal" data-group="primary" data-tab="principal">
|
||||
|
||||
<div class="grid grid-2col">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.attributs as |attr key|}}
|
||||
<li class="item flexrow " data-attr-key="{{key}}">
|
||||
<img class="item-name-img" src="systems/fvtt-les-heritiers/assets/icons/{{attr.labelnorm}}.webp">
|
||||
<span class="item-name-label competence-name item-field-label-medium"><a
|
||||
class="roll-attribut">{{attr.label}}</a></span>
|
||||
<select class="status-small-label color-class-common edit-item-data competence-niveau" type="text"
|
||||
name="system.attributs.{{key}}.value" value="{{attr.value}}" data-dtype="Number">
|
||||
{{#select attr.value}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</li>
|
||||
{{/each}}
|
||||
<li class="item flexrow">
|
||||
<img class="item-name-img" src="systems/fvtt-les-heritiers/assets/icons/vitesse.webp">
|
||||
<span class="item-name-label competence-name item-field-label-medium">Vitesse</span>
|
||||
<input type="text" class="padd-right numeric-input item-field-label-short" name="system.vitesse.value"
|
||||
value="{{system.vitesse.value}}" data-dtype="Number" />
|
||||
</li>
|
||||
</ul>
|
||||
<h4 class="item-name-label competence-name">Santé</h4>
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<label class="label-name item-field-label-short">Vigueur</label>
|
||||
<label class="label-name item-field-label-short">{{system.sante.vigueur}}</label>
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="label-name item-field-label-short">Etat</label>
|
||||
<select class="label-name item-field-label-medium" type="text" name="system.sante.etat" value="{{system.sante.etat}}" data-dtype="Number">
|
||||
{{#select system.sante.etat}}
|
||||
{{> systems/fvtt-les-heritiers/templates/partial-sante-etat.html}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h4 class="item-name-label competence-name">Combat</h4>
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<button class="chat-card-button roll-initiative">Initiative</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<h4 class="item-name-label competence-name">Adversité</h4>
|
||||
<ul class="item-list alternate-list">
|
||||
{{#each system.adversite as |adv key|}}
|
||||
<li class="item flexrow" data-adversite="{{key}}">
|
||||
<a class="adversite-modify plus-minus-button" data-adversite-value="-1">-</a>
|
||||
<div class="icon-adversite-container">
|
||||
<img class="icon-adversite" src="systems/fvtt-les-heritiers/assets/icons/gemme_{{key}}.webp">
|
||||
<div class="adversite-text">{{adv}}</div>
|
||||
</div>
|
||||
<a class="adversite-modify plus-minus-button" data-adversite-value="1">+</a>
|
||||
<div class=""> </div>
|
||||
<div class=""> </div>
|
||||
<div class=""> </div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Competence Tab --}}
|
||||
<div class="tab competences" data-group="primary" data-tab="competences">
|
||||
|
||||
<div class="flexrow">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Compétences</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Niveau</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
</li>
|
||||
{{#each skills as |skill key|}}
|
||||
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
|
||||
<img class="item-name-img" src="{{skill.img}}" />
|
||||
<span class="item-name-label competence-name"><a class="roll-competence item-field-label-short"
|
||||
data-attr-key="tochoose">{{skill.name}}</a></span>
|
||||
<select class="status-small-label color-class-common edit-item-data competence-niveau" 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>
|
||||
|
||||
{{#if (ne skill.system.attribut1 "none")}}
|
||||
<button class="roll-competence button-sheet-roll" data-attr-key="{{skill.system.attribut1}}">{{upper
|
||||
skill.system.attribut1}} : {{skill.system.attribut1total}}</button>
|
||||
{{/if}}
|
||||
{{#if (ne skill.system.attribut2 "none")}}
|
||||
<button class="roll-competence button-sheet-roll" data-attr-key="{{skill.system.attribut2}}">{{upper
|
||||
skill.system.attribut2}} : {{skill.system.attribut2total}}</button>
|
||||
{{/if}}
|
||||
{{#if (ne skill.system.attribut3 "none")}}
|
||||
<button class="roll-competence button-sheet-roll" data-attr-key="{{skill.system.attribut3}}">{{upper
|
||||
skill.system.attribut3}} : {{skill.system.attribut3total}}</button>
|
||||
{{/if}}
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Talents Tab --}}
|
||||
<div class="tab talents" data-group="primary" data-tab="talents">
|
||||
|
||||
<div class="flexrow">
|
||||
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Talents</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Résumé</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
</li>
|
||||
{{#each talents as |talent key|}}
|
||||
<li class="item flexrow " data-item-id="{{talent._id}}" data-item-type="competence">
|
||||
<img class="item-name-img" src="{{talent.img}}" />
|
||||
<span class="item-name-label competence-name">{{talent.name}}</span>
|
||||
<span class="item-name-label item-field-label-long2">{{talent.system.resumebonus}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
<div class="sheet-box color-bg-archetype">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<span class="item-name-label-header">
|
||||
<h3><label class="items-title-text">Talents de Cellule</label></h3>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Résumé</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
</li>
|
||||
{{#each talentsCell as |talent key|}}
|
||||
<li class="item flexrow " data-item-id="{{talent._id}}" data-item-type="competence">
|
||||
<img class="item-name-img" src="{{talent.img}}" />
|
||||
<span class="item-name-label competence-name">{{talent.name}}</span>
|
||||
<span class="item-name-label item-field-label-long2">{{talent.system.resumebonus}}</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{!-- Equipement Tab --}}
|
||||
<div class="tab armes" data-group="primary" data-tab="armes">
|
||||
|
||||
<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éfense</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Dégats</label>
|
||||
</span>
|
||||
<div class="item-filler"> </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">
|
||||
{{#if arme.system.equipped}}
|
||||
<button class="roll-arme-offensif button-sheet-roll">{{arme.system.totalOffensif}}</button>
|
||||
{{else}}
|
||||
<button disabled class="roll-arme-offensif button-sheet-roll">{{arme.system.totalOffensif}}</button>
|
||||
{{/if}}
|
||||
</span>
|
||||
|
||||
{{#if arme.system.isdefense}}
|
||||
<span class="item-field-label-short arme-defensif item-field-label-short"><label
|
||||
class="arme-defensif item-field-label-short defense-sheet">{{arme.system.totalDefensif}}</label></span>
|
||||
{{else}}
|
||||
<span class="item-field-label-short arme-defensif item-field-label-short"><label
|
||||
class="arme-defensif item-field-label-short defense-sheet">N/A</label></span>
|
||||
{{/if}}
|
||||
|
||||
<span class="item-field-label-short">
|
||||
{{#if arme.system.equipped}}
|
||||
<button class="roll-arme-degats button-sheet-roll">{{arme.system.totalDegats}}</button>
|
||||
{{else}}
|
||||
<button disabled class="roll-arme-degats button-sheet-roll">{{arme.system.totalDegats}}</button>
|
||||
{{/if}}
|
||||
</span>
|
||||
|
||||
<div class="item-filler"> </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"> </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"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{!-- Biography Tab --}}
|
||||
<div class="tab biodata" data-group="primary" data-tab="biodata">
|
||||
|
||||
<span>
|
||||
<h3>Description</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>Habitat</h3>
|
||||
</span>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
{{editor habitat target="system.biodata.habitat" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</form>
|