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
|
## 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 !
|
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
|
## 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 !
|
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
|
# 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
|
# Developmement
|
||||||
|
|
||||||
@ -26,4 +26,4 @@ LeRatierBretonnien
|
|||||||
|
|
||||||
# Tests, icones et saisie des données
|
# 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": {
|
||||||
"Actor": {
|
"TypePersonnage": "Personnage",
|
||||||
"personnage": "Personnage",
|
"TypeCellule": "Cellule",
|
||||||
"pnj": "PNJ"
|
"TypeCreature": "Créature"
|
||||||
},
|
},
|
||||||
"Item": {
|
|
||||||
"accessoire": "Accessoire",
|
"ITEM": {
|
||||||
"arme": "Arme",
|
"TypeArtefact": "Artefact",
|
||||||
"atoutfeerique": "Atout féerique",
|
"TypeArme": "Arme",
|
||||||
"avantage": "Avantage",
|
"TypeTalent": "Talent",
|
||||||
"capacitenaturelle": "Capacité naturelle",
|
"TypeHistorique": "Historique",
|
||||||
"competence": "Compétence",
|
"TypeProfil": "Profil",
|
||||||
"contact": "Contact",
|
"TypeCompetence": "Compétence",
|
||||||
"desavantage": "Désavantage",
|
"TypeProtection": "Protection",
|
||||||
"equipement": "Equipement",
|
"TypeMonnaie": "Monnaie",
|
||||||
"fee": "Fée",
|
"TypeEquipement": "Equipement",
|
||||||
"pouvoir": "Pouvoir",
|
"TypeRessource": "Ressource",
|
||||||
"profil": "Profil",
|
"TypeContact": "Contact"
|
||||||
"protection": "Protection"
|
|
||||||
|
},
|
||||||
|
|
||||||
|
"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 */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
return mergeObject(super.defaultOptions, {
|
||||||
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
||||||
template: "systems/fvtt-les-heritiers/templates/actor-sheet.html",
|
template: "systems/fvtt-les-heritiers/templates/actor-sheet.html",
|
||||||
width: 780,
|
width: 640,
|
||||||
height: 840,
|
height: 720,
|
||||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
||||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||||
editScore: false
|
editScore: false
|
||||||
@ -24,7 +24,7 @@ export class HeritiersActorSheet extends ActorSheet {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async getData() {
|
async getData() {
|
||||||
const objectData = foundry.utils.duplicate(this.object)
|
const objectData = duplicate(this.object)
|
||||||
|
|
||||||
let formData = {
|
let formData = {
|
||||||
title: this.title,
|
title: this.title,
|
||||||
@ -38,37 +38,26 @@ export class HeritiersActorSheet extends ActorSheet {
|
|||||||
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
|
||||||
limited: this.object.limited,
|
limited: this.object.limited,
|
||||||
skills: this.actor.getSkills(),
|
skills: this.actor.getSkills(),
|
||||||
utileSkillsMental :this.actor.organizeUtileSkills("mental"),
|
utileSkills :this.actor.organizeUtileSkills(),
|
||||||
utileSkillsPhysical :this.actor.organizeUtileSkills("physical"),
|
|
||||||
futileSkills :this.actor.organizeFutileSkills(),
|
futileSkills :this.actor.organizeFutileSkills(),
|
||||||
contacts: this.actor.organizeContacts(),
|
armes: duplicate(this.actor.getWeapons()),
|
||||||
armes: foundry.utils.duplicate(this.actor.getWeapons()),
|
monnaies: duplicate(this.actor.getMonnaies()),
|
||||||
monnaies: foundry.utils.duplicate(this.actor.getMonnaies()),
|
fee: duplicate(this.actor.getFee() || {} ),
|
||||||
pouvoirs: foundry.utils.duplicate(this.actor.getPouvoirs()),
|
protections: duplicate(this.actor.getArmors()),
|
||||||
fee: foundry.utils.duplicate(this.actor.getFee() || {} ),
|
|
||||||
protections: foundry.utils.duplicate(this.actor.getArmors()),
|
|
||||||
combat: this.actor.getCombatValues(),
|
combat: this.actor.getCombatValues(),
|
||||||
equipements: foundry.utils.duplicate(this.actor.getEquipments()),
|
equipements: duplicate(this.actor.getEquipments()),
|
||||||
avantages: foundry.utils.duplicate(this.actor.getAvantages()),
|
avantages: duplicate(this.actor.getAvantages()),
|
||||||
atouts: foundry.utils.duplicate(this.actor.getAtouts()),
|
atouts: duplicate(this.actor.getAtouts()),
|
||||||
capacites: foundry.utils.duplicate(this.actor.getCapacites()),
|
capacites: duplicate(this.actor.getCapacites()),
|
||||||
desavantages: foundry.utils.duplicate(this.actor.getDesavantages()),
|
desavantages: duplicate(this.actor.getDesavantages()),
|
||||||
profils: foundry.utils.duplicate(this.actor.getProfils()),
|
|
||||||
pvMalus: this.actor.getPvMalus(),
|
pvMalus: this.actor.getPvMalus(),
|
||||||
heritage: game.settings.get("fvtt-les-heritiers", "heritiers-heritage"),
|
|
||||||
initiative: this.actor.getFlag("world", "last-initiative") || -1,
|
initiative: this.actor.getFlag("world", "last-initiative") || -1,
|
||||||
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
|
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}),
|
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
|
||||||
playernotes: await TextEditor.enrichHTML(this.object.system.biodata.playernotes, {async: true}),
|
|
||||||
options: this.options,
|
options: this.options,
|
||||||
owner: this.document.isOwner,
|
owner: this.document.isOwner,
|
||||||
editScore: this.options.editScore,
|
editScore: this.options.editScore,
|
||||||
config: game.system.lesheritiers.config,
|
isGM: game.user.isGM
|
||||||
isGM: game.user.isGM,
|
|
||||||
isPNJ: (this.actor.type == "pnj")
|
|
||||||
}
|
}
|
||||||
this.formData = formData;
|
this.formData = formData;
|
||||||
|
|
||||||
@ -77,42 +66,19 @@ export class HeritiersActorSheet extends ActorSheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
dialogRecupUsage() {
|
getCelluleTalents( ) {
|
||||||
new Dialog({
|
let talents = []
|
||||||
title: "Récupération des Points d'Usage",
|
for(let cellule of game.actors) {
|
||||||
content: "<p>Combien de Points d'Usage souhaitez-vous récupérer ?</p>",
|
if (cellule.type == "cellule") {
|
||||||
buttons: {
|
let found = cellule.system.members.find( it => it.id == this.actor.id)
|
||||||
one: {
|
if (found) {
|
||||||
icon: '<i class="fas fa-check"></i>',
|
talents = talents.concat( cellule.getTalents() )
|
||||||
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)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).render(true)
|
}
|
||||||
|
return talents
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/** @override */
|
/** @override */
|
||||||
activateListeners(html) {
|
activateListeners(html) {
|
||||||
@ -164,49 +130,12 @@ export class HeritiersActorSheet extends ActorSheet {
|
|||||||
const key = $(event.currentTarget).data("key")
|
const key = $(event.currentTarget).data("key")
|
||||||
this.actor.rollCarac(key, false)
|
this.actor.rollCarac(key, false)
|
||||||
})
|
})
|
||||||
html.find('.roll-rang').click((event) => {
|
|
||||||
const key = $(event.currentTarget).data("rang-key")
|
|
||||||
this.actor.rollRang(key, false)
|
|
||||||
})
|
|
||||||
html.find('.roll-root-competence').click((event) => {
|
|
||||||
const compKey = $(event.currentTarget).data("attr-key")
|
|
||||||
this.actor.rollRootCompetence(compKey)
|
|
||||||
})
|
|
||||||
html.find('.roll-competence').click((event) => {
|
html.find('.roll-competence').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item")
|
const li = $(event.currentTarget).parents(".item")
|
||||||
let compId = li.data("item-id")
|
let compId = li.data("item-id")
|
||||||
this.actor.rollCompetence(compId)
|
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) => {
|
html.find('.item-add').click((event) => {
|
||||||
const itemType = $(event.currentTarget).data("type")
|
const itemType = $(event.currentTarget).data("type")
|
||||||
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
|
this.actor.createEmbeddedDocuments('Item', [{ name: `Nouveau ${itemType}`, type: itemType }], { renderSheet: true })
|
||||||
|
@ -39,14 +39,13 @@ export class HeritiersActor extends Actor {
|
|||||||
|
|
||||||
if (data.type == 'personnage') {
|
if (data.type == 'personnage') {
|
||||||
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
|
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
|
||||||
data.items = []
|
data.items = skills.map(i => i.toObject())
|
||||||
for (let skill of skills) {
|
|
||||||
if (skill.system.categorie == "utile") {
|
|
||||||
data.items.push(skill.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);
|
return super.create(data, options);
|
||||||
@ -54,8 +53,26 @@ export class HeritiersActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
prepareArme(arme) {
|
prepareArme(arme) {
|
||||||
arme = foundry.utils.duplicate(arme)
|
arme = duplicate(arme)
|
||||||
arme.system.isMelee = HeritiersUtility.isArmeMelee(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
|
return arme
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,23 +87,13 @@ export class HeritiersActor extends Actor {
|
|||||||
return armes
|
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() {
|
getMonnaies() {
|
||||||
return this.items.filter(it => it.type == "monnaie")
|
return this.items.filter(it => it.type == "monnaie")
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------- --------------------- */
|
/* ----------------------- --------------------- */
|
||||||
addMember(actorId) {
|
addMember(actorId) {
|
||||||
let members = foundry.utils.duplicate(this.system.members)
|
let members = duplicate(this.system.members)
|
||||||
members.push({ id: actorId })
|
members.push({ id: actorId })
|
||||||
this.update({ 'system.members': members })
|
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() {
|
getEquipments() {
|
||||||
return this.getItemSorted(["equipement", "accessoire"])
|
return this.items.filter(item => item.type == "equipement")
|
||||||
}
|
}
|
||||||
getAvantages() {
|
getAvantages() {
|
||||||
return this.getItemSorted(["avantage"])
|
return this.items.filter(item => item.type == "avantage")
|
||||||
}
|
}
|
||||||
getDesavantages() {
|
getDesavantages() {
|
||||||
return this.getItemSorted(["desavantage"])
|
return this.items.filter(item => item.type == "desavantage")
|
||||||
}
|
}
|
||||||
getMonnaies() {
|
getMonnaies() {
|
||||||
return this.getItemSorted(["monnaie"])
|
return this.items.filter(item => item.type == "monnaie")
|
||||||
}
|
}
|
||||||
getArmors() {
|
getArmors() {
|
||||||
return this.getItemSorted(["protection"])
|
return this.items.filter(item => item.type == "protection")
|
||||||
}
|
}
|
||||||
getTalents() {
|
getTalents() {
|
||||||
return this.getItemSorted(["talent"])
|
return this.items.filter(item => item.type == "talent")
|
||||||
}
|
}
|
||||||
getContacts() {
|
getContacts() {
|
||||||
return this.getItemSorted(["contact"])
|
return this.items.filter(item => item.type == "contact")
|
||||||
}
|
}
|
||||||
getAtouts() {
|
getAtouts() {
|
||||||
return this.getItemSorted(["atoutfeerique"])
|
return this.items.filter(item => item.type == "atoutfeerique")
|
||||||
}
|
}
|
||||||
getCapacites() {
|
getCapacites() {
|
||||||
return this.getItemSorted(["capacitenaturelle"])
|
return this.items.filter(item => item.type == "capacitenaturelle")
|
||||||
}
|
}
|
||||||
getFee() {
|
getFee() {
|
||||||
return this.items.find(item => item.type == "fee")
|
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() {
|
getSkills() {
|
||||||
let comp = []
|
let comp = []
|
||||||
for (let item of this.items) {
|
for (let item of this.items) {
|
||||||
item = foundry.utils.duplicate(item)
|
item = duplicate(item)
|
||||||
if (item.type == "competence") {
|
if (item.type == "competence") {
|
||||||
comp.push(item)
|
comp.push(item)
|
||||||
}
|
}
|
||||||
@ -160,52 +146,19 @@ export class HeritiersActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
prepareUtileSkill(item) {
|
organizeUtileSkills() {
|
||||||
let specList = []
|
|
||||||
if (item?.system?.categorie == "utile") {
|
|
||||||
for (let spec of item.system.specialites) {
|
|
||||||
specList.push(spec.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
item.nbSpec = specList.length
|
|
||||||
item.specList = specList.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
organizeUtileSkills(kind = "mental") {
|
|
||||||
let comp = {}
|
let comp = {}
|
||||||
for (let key in game.system.lesheritiers.config.competenceProfil) {
|
for (let key in game.system.lesheritiers.config.competenceProfil) {
|
||||||
if (game.system.lesheritiers.config.competenceProfil[key].kind == kind)
|
comp[key] = []
|
||||||
comp[key] = { skills: [], niveau: this.system.competences[key].niveau }
|
|
||||||
}
|
}
|
||||||
for (let item of this.items) {
|
for (let item of this.items) {
|
||||||
if (item.type == "competence") {
|
if (item.type == "competence") {
|
||||||
if (item.system.categorie == "utile" && comp[item.system.profil]) {
|
if (item.system.categorie == "utile") {
|
||||||
this.prepareUtileSkill(item)
|
comp[item.system.profil].push(item)
|
||||||
comp[item.system.profil].skills.push(item)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return comp
|
||||||
for (let key in comp) {
|
|
||||||
HeritiersUtility.sortArrayObjectsByName(comp[key].skills)
|
|
||||||
}
|
|
||||||
return Object.fromEntries(Object.entries(comp).sort())
|
|
||||||
}
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
organizeContacts() {
|
|
||||||
let contactList = {}
|
|
||||||
for (let item of this.items) {
|
|
||||||
if (item.type == "contact") {
|
|
||||||
let c = contactList[item.system.contacttype] || { label: game.system.lesheritiers.config.contactType[item.system.contacttype], list: [] }
|
|
||||||
c.list.push(item)
|
|
||||||
contactList[item.system.contacttype] = c
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (let key in contactList) {
|
|
||||||
HeritiersUtility.sortArrayObjectsByName(contactList[key].list)
|
|
||||||
}
|
|
||||||
return contactList
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -218,7 +171,6 @@ export class HeritiersActor extends Actor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
HeritiersUtility.sortArrayObjectsByName(comp)
|
|
||||||
return HeritiersUtility.sortByName(comp)
|
return HeritiersUtility.sortByName(comp)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,11 +211,6 @@ export class HeritiersActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async prepareData() {
|
async prepareData() {
|
||||||
super.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) {
|
getItemById(id) {
|
||||||
let item = this.items.find(item => item.id == id);
|
let item = this.items.find(item => item.id == id);
|
||||||
if (item) {
|
if (item) {
|
||||||
item = foundry.utils.duplicate(item)
|
item = duplicate(item)
|
||||||
}
|
}
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
@ -293,7 +240,7 @@ export class HeritiersActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async equipItem(itemId) {
|
async equipItem(itemId) {
|
||||||
let item = this.items.find(item => item.id == 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 }
|
let update = { _id: item.id, "system.equipped": !item.system.equipped }
|
||||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
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)
|
let item = this.items.find(item => item.id == itemId)
|
||||||
if (item) {
|
if (item) {
|
||||||
console.log("Item ", item, itemField, dataType, value)
|
console.log("Item ", item, itemField, dataType, value)
|
||||||
if (dataType) {
|
if (dataType.toLowerCase() == "number") {
|
||||||
if (dataType.toLowerCase() == "number") {
|
value = Number(value)
|
||||||
value = Number(value)
|
} else {
|
||||||
} else {
|
value = String(value)
|
||||||
value = String(value)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
let update = { _id: item.id, [`system.${itemField}`]: value };
|
let update = { _id: item.id, [`system.${itemField}`]: value };
|
||||||
this.updateEmbeddedDocuments("Item", [update])
|
this.updateEmbeddedDocuments("Item", [update])
|
||||||
@ -319,15 +264,15 @@ export class HeritiersActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getPvMalus() {
|
getPvMalus() {
|
||||||
if (this.system.pv.value > 0) {
|
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) {
|
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) {
|
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) {
|
async equipGear(equipmentId) {
|
||||||
let item = this.items.find(item => item.id == 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 };
|
let update = { _id: item.id, "system.equipped": !item.system.equipped };
|
||||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||||
}
|
}
|
||||||
@ -364,13 +309,13 @@ export class HeritiersActor extends Actor {
|
|||||||
getSubActors() {
|
getSubActors() {
|
||||||
let subActors = [];
|
let subActors = [];
|
||||||
for (let id of this.system.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;
|
return subActors;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async addSubActor(subActorId) {
|
async addSubActor(subActorId) {
|
||||||
let subActors = foundry.utils.duplicate(this.system.subactors);
|
let subActors = duplicate(this.system.subactors);
|
||||||
subActors.push(subActorId);
|
subActors.push(subActorId);
|
||||||
await this.update({ 'system.subactors': subActors });
|
await this.update({ 'system.subactors': subActors });
|
||||||
}
|
}
|
||||||
@ -392,7 +337,7 @@ export class HeritiersActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async incDecAdversite(adv, incDec = 0) {
|
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] += Number(incDec)
|
||||||
adversite[adv] = Math.max(adversite[adv], 0)
|
adversite[adv] = Math.max(adversite[adv], 0)
|
||||||
this.update({ 'system.adversite': adversite })
|
this.update({ 'system.adversite': adversite })
|
||||||
@ -439,7 +384,7 @@ export class HeritiersActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async setPredilectionUsed(compId, predIdx) {
|
async setPredilectionUsed(compId, predIdx) {
|
||||||
let comp = this.items.get(compId)
|
let comp = this.items.get(compId)
|
||||||
let pred = foundry.utils.duplicate(comp.system.predilections)
|
let pred = duplicate(comp.system.predilections)
|
||||||
pred[predIdx].used = true
|
pred[predIdx].used = true
|
||||||
await this.updateEmbeddedDocuments('Item', [{ _id: compId, 'system.predilections': pred }])
|
await this.updateEmbeddedDocuments('Item', [{ _id: compId, 'system.predilections': pred }])
|
||||||
}
|
}
|
||||||
@ -461,7 +406,7 @@ export class HeritiersActor extends Actor {
|
|||||||
}
|
}
|
||||||
if (arme.system.totalDefensif > maxDef) {
|
if (arme.system.totalDefensif > maxDef) {
|
||||||
maxDef = arme.system.totalDefensif
|
maxDef = arme.system.totalDefensif
|
||||||
bestArme = foundry.utils.duplicate(arme)
|
bestArme = duplicate(arme)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return bestArme
|
return bestArme
|
||||||
@ -476,7 +421,7 @@ export class HeritiersActor extends Actor {
|
|||||||
for (let auto of talent.system.automations) {
|
for (let auto of talent.system.automations) {
|
||||||
if (auto.eventtype === "prepare-roll") {
|
if (auto.eventtype === "prepare-roll") {
|
||||||
if (auto.competence.toLowerCase() == competence.name.toLowerCase()) {
|
if (auto.competence.toLowerCase() == competence.name.toLowerCase()) {
|
||||||
talent = foundry.utils.duplicate(talent)
|
talent = duplicate(talent)
|
||||||
talent.system.bonus = auto.bonus
|
talent.system.bonus = auto.bonus
|
||||||
talent.system.baCost = auto.baCost
|
talent.system.baCost = auto.baCost
|
||||||
talents.push(talent)
|
talents.push(talent)
|
||||||
@ -487,23 +432,7 @@ export class HeritiersActor extends Actor {
|
|||||||
}
|
}
|
||||||
return talents
|
return talents
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
|
||||||
getCurrentParade() {
|
|
||||||
if (this.system.statutmasque == "masque") {
|
|
||||||
return this.system.combat.parade.masquee
|
|
||||||
}
|
|
||||||
return this.system.combat.parade.demasquee
|
|
||||||
}
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
getCurrentEsquive() {
|
|
||||||
if (this.system.statutmasque == "masque") {
|
|
||||||
return this.system.combat.esquive.masquee
|
|
||||||
}
|
|
||||||
return this.system.combat.esquive.demasquee
|
|
||||||
}
|
|
||||||
getCurrentResistancePhysique() {
|
|
||||||
return this.system.combat.resistancephysique.value
|
|
||||||
}
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getTricherie() {
|
getTricherie() {
|
||||||
return this.system.rang.tricherie.value
|
return this.system.rang.tricherie.value
|
||||||
@ -516,27 +445,9 @@ export class HeritiersActor extends Actor {
|
|||||||
incDecTricherie(value) {
|
incDecTricherie(value) {
|
||||||
let tricherie = this.system.rang.tricherie
|
let tricherie = this.system.rang.tricherie
|
||||||
tricherie.value += value
|
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.max(tricherie.value, 0)
|
||||||
tricherie.value = Math.min(tricherie.value, tricherie.max)
|
tricherie.value = Math.min(tricherie.value, tricherie.max)
|
||||||
this.update({ 'system.rang.tricherie': tricherie })
|
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,33 +463,23 @@ export class HeritiersActor extends Actor {
|
|||||||
rollData.tricherie = this.getTricherie()
|
rollData.tricherie = this.getTricherie()
|
||||||
rollData.heritage = this.getHeritages()
|
rollData.heritage = this.getHeritages()
|
||||||
rollData.useTricherie = false
|
rollData.useTricherie = false
|
||||||
rollData.useSpecialite = false
|
|
||||||
rollData.useHeritage = false
|
rollData.useHeritage = false
|
||||||
rollData.pouvoirPointsUsage = 1
|
rollData.pvMalus = this.getPvMalus()
|
||||||
rollData.rulesMalus.push(this.getPvMalus())
|
|
||||||
|
|
||||||
if (compId) {
|
if (compId) {
|
||||||
rollData.competence = foundry.utils.duplicate(this.items.get(compId) || {})
|
rollData.competence = duplicate(this.items.get(compId) || {})
|
||||||
this.prepareUtileSkill(rollData.competence)
|
|
||||||
rollData.actionImg = rollData.competence?.img
|
rollData.actionImg = rollData.competence?.img
|
||||||
}
|
}
|
||||||
if (compName) {
|
if (compName) {
|
||||||
rollData.competence = foundry.utils.duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
|
||||||
if (rollData.competence?.name) {
|
rollData.actionImg = rollData.competence?.img
|
||||||
this.prepareUtileSkill(rollData.competence)
|
|
||||||
rollData.actionImg = rollData.competence?.img
|
|
||||||
} else {
|
|
||||||
rollData.competence = undefined
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
HeritiersUtility.updateWithTarget(rollData)
|
|
||||||
|
|
||||||
return rollData
|
return rollData
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollInitiative() {
|
async rollInitiative() {
|
||||||
let rollData = this.getCommonRollData(undefined, "Art de la guerre")
|
let rollData = this.getCommonRollData(undefined, "Art de la guerre")
|
||||||
rollData.mode = "init"
|
rollData.mode = "init"
|
||||||
if (this.system.caracteristiques["san"].value > this.system.caracteristiques["per"].value) {
|
if (this.system.caracteristiques["san"].value > this.system.caracteristiques["per"].value) {
|
||||||
rollData.caracKey = "san"
|
rollData.caracKey = "san"
|
||||||
} else {
|
} else {
|
||||||
@ -588,36 +489,17 @@ export class HeritiersActor extends Actor {
|
|||||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||||
rollDialog.render(true)
|
rollDialog.render(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollCarac(key, isInit = false) {
|
async rollCarac(key, isInit = false) {
|
||||||
let rollData = this.getCommonRollData()
|
let rollData = this.getCommonRollData()
|
||||||
rollData.mode = "carac"
|
rollData.mode = "carac"
|
||||||
rollData.carac = this.system.caracteristiques[key]
|
rollData.carac = this.system.caracteristiques[key]
|
||||||
rollData.caracKey = key
|
rollData.caracKey = key
|
||||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
||||||
rollDialog.render(true)
|
rollDialog.render(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async rollRang(key, isInit = false) {
|
|
||||||
let rollData = this.getCommonRollData()
|
|
||||||
rollData.mode = "rang"
|
|
||||||
rollData.rang = this.system.rang[key]
|
|
||||||
rollData.rangKey = key
|
|
||||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
|
||||||
rollDialog.render(true)
|
|
||||||
}
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async rollRootCompetence(compKey) {
|
|
||||||
let rollData = this.getCommonRollData()
|
|
||||||
rollData.mode = "competence"
|
|
||||||
rollData.competence = { name: this.system.competences[compKey].label, system: { niveau: this.system.competences[compKey].niveau } }
|
|
||||||
console.log("RollDatra", rollData)
|
|
||||||
let rollDialog = await HeritiersRollDialog.create(this, rollData)
|
|
||||||
rollDialog.render(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollCompetence(compId) {
|
async rollCompetence(compId) {
|
||||||
let rollData = this.getCommonRollData(compId)
|
let rollData = this.getCommonRollData(compId)
|
||||||
@ -628,217 +510,45 @@ export class HeritiersActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async rollAttaqueArme(armeId) {
|
async rollArmeOffensif(armeId) {
|
||||||
let arme = this.items.get(armeId)
|
let arme = this.items.get(armeId)
|
||||||
if (arme) {
|
if (arme.type == "arme") {
|
||||||
arme = foundry.utils.duplicate(arme)
|
arme = this.prepareArme(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)
|
|
||||||
}
|
}
|
||||||
|
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)
|
let arme = this.items.get(armeId)
|
||||||
if (arme) {
|
if (arme.type == "arme") {
|
||||||
let key = "for"
|
arme = this.prepareArme(arme)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
}
|
console.log("DEGATS", arme)
|
||||||
/* -------------------------------------------- */
|
let roll = new Roll("1d10+" + arme.system.totalDegats).roll({ async: false })
|
||||||
async rollAttaqueChargeArme(armeId) {
|
await HeritiersUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
|
||||||
let arme = this.items.get(armeId)
|
let nbEtatPerdus = 0
|
||||||
if (arme) {
|
if (targetVigueur) {
|
||||||
let key = "agi"
|
nbEtatPerdus = Math.floor(roll.total / targetVigueur)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
}
|
let rollData = {
|
||||||
|
arme: arme,
|
||||||
/* -------------------------------------------- */
|
finalResult: roll.total,
|
||||||
async rollAssomerArme(armeId) {
|
alias: this.name,
|
||||||
let arme = this.items.get(armeId)
|
actorImg: this.img,
|
||||||
if (arme) {
|
actorId: this.id,
|
||||||
let competenceName = "Mêlée"
|
actionImg: arme.img,
|
||||||
//arme.system.isMelee = HeritiersUtility.isArmeMelee(arme)
|
targetVigueur: targetVigueur,
|
||||||
let rollData = this.getCommonRollData(undefined, competenceName)
|
nbEtatPerdus: nbEtatPerdus
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
}
|
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",
|
"prec": "Précision",
|
||||||
"esp": "Esprit",
|
"esp": "Esprit",
|
||||||
"per": "Perception",
|
"per": "Perception",
|
||||||
"pres": "Prestance",
|
"pres": "Présence",
|
||||||
"san": "Sang-Froid"
|
"san": "Sang-Froid"
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -16,26 +16,18 @@ export const HERITIERS_CONFIG = {
|
|||||||
"utile": "Utile",
|
"utile": "Utile",
|
||||||
"futile": "Futile"
|
"futile": "Futile"
|
||||||
},
|
},
|
||||||
|
|
||||||
contactType: {
|
|
||||||
contact: "Contact",
|
|
||||||
allie: "Allié",
|
|
||||||
ennemi: "Ennemi",
|
|
||||||
interet: "Personne d'interêt"
|
|
||||||
},
|
|
||||||
|
|
||||||
competenceProfil : {
|
competenceProfil : {
|
||||||
"aventurier": {kind: "physical", name: "Aventurier"},
|
"aventurier": "Aventurier",
|
||||||
"roublard": {kind: "physical",name: "Roublard"},
|
"roublard": "Roublard",
|
||||||
"combattant": {kind: "physical",name:"Combattant"},
|
"combattant": "Combattant",
|
||||||
"erudit": {kind: "mental",name:"Erudit"},
|
"erudit": "Erudit",
|
||||||
"savant": {kind: "mental",name:"Savant"},
|
"savant": "Savant",
|
||||||
"gentleman": {kind: "mental",name:"Gentleman"}
|
"gentleman": "Gentleman"
|
||||||
},
|
},
|
||||||
baseTestPouvoir: {
|
baseTestPouvoir: {
|
||||||
"feerie": "Féerie",
|
"feerie": "Féerie",
|
||||||
"masque": "Masque",
|
"Masque": "Masque"
|
||||||
"autre": "Autre"
|
|
||||||
},
|
},
|
||||||
resistancePouvoir: {
|
resistancePouvoir: {
|
||||||
"aucune": "Aucune",
|
"aucune": "Aucune",
|
||||||
@ -50,10 +42,6 @@ export const HERITIERS_CONFIG = {
|
|||||||
"passif": "Passif",
|
"passif": "Passif",
|
||||||
"metamorphose": "Métamorphose"
|
"metamorphose": "Métamorphose"
|
||||||
},
|
},
|
||||||
statutMasque: {
|
|
||||||
"masque": "Masqué",
|
|
||||||
"demasque":"Démasqué"
|
|
||||||
},
|
|
||||||
niveauPouvoir: {
|
niveauPouvoir: {
|
||||||
"normal": "Normal",
|
"normal": "Normal",
|
||||||
"profond": "Profond",
|
"profond": "Profond",
|
||||||
@ -64,42 +52,23 @@ export const HERITIERS_CONFIG = {
|
|||||||
"demasque": "Démasqué"
|
"demasque": "Démasqué"
|
||||||
},
|
},
|
||||||
seuilsDifficulte: {
|
seuilsDifficulte: {
|
||||||
"-1": "Aucun/Non applicable",
|
"0": "Aucun/Non applicable",
|
||||||
"5": "Enfantine (5)",
|
"5": "Enfantine",
|
||||||
"6": "Triviale (6)",
|
"6": "Triviale",
|
||||||
"7": "Moins Triviale (7)",
|
"8": "Aisée",
|
||||||
"8": "Aisée (8)",
|
"10": "Normale",
|
||||||
"9": "Moins Aisée (9)",
|
"12": "Compliquée",
|
||||||
"10": "Normale (10)",
|
"14": "Difficile",
|
||||||
"11": "Moins Normale (11)",
|
"16": "Très Difficile",
|
||||||
"12": "Compliquée (12)",
|
"18": "Critique",
|
||||||
"13": "Plus Compliquée (13)",
|
"20": "Insurmontable",
|
||||||
"14": "Difficile (14)",
|
"22": "Surhumaine",
|
||||||
"15": "Plus Difficile (15)",
|
"24": "Epique",
|
||||||
"16": "Très Difficile (16)",
|
"26": "Légendaire",
|
||||||
"17": "Très Très Difficile (17)",
|
"28": "Mythique",
|
||||||
"18": "Critique (18)",
|
"30": "Divine"
|
||||||
"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"
|
|
||||||
},
|
|
||||||
|
|
||||||
categorieArme : {
|
categorieArme : {
|
||||||
"trait": "Arme de trait",
|
"trait": "Arme de trait",
|
||||||
"poing": "Arme de poing",
|
"poing": "Arme de poing",
|
||||||
@ -145,66 +114,7 @@ export const HERITIERS_CONFIG = {
|
|||||||
"traditionnelle": "Traditionnelle",
|
"traditionnelle": "Traditionnelle",
|
||||||
"moderne": "Moderne",
|
"moderne": "Moderne",
|
||||||
"orientale": "Orientale"
|
"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}
|
* @extends {ActorSheet}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
|
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
|
||||||
import { HeritiersUtility } from "./heritiers-utility.js";
|
import { HeritiersUtility } from "./heritiers-utility.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class HeritiersActorPNJSheet extends HeritiersActorSheet {
|
export class HeritiersCreatureSheet extends HeritiersActorSheet {
|
||||||
|
|
||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
return mergeObject(super.defaultOptions, {
|
||||||
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
classes: ["fvtt-les-heritiers", "sheet", "actor"],
|
||||||
template: "systems/fvtt-les-heritiers/templates/actor-pnj-sheet.html",
|
template: "systems/fvtt-les-heritiers/templates/creature-sheet.html",
|
||||||
width: 780,
|
width: 640,
|
||||||
height: 840,
|
height: 720,
|
||||||
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
|
||||||
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
|
||||||
editScore: false
|
editScore: false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -9,7 +9,7 @@ export class HeritiersItemSheet extends ItemSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
return mergeObject(super.defaultOptions, {
|
||||||
classes: ["fvtt-les-heritiers", "sheet", "item"],
|
classes: ["fvtt-les-heritiers", "sheet", "item"],
|
||||||
template: "systems/fvtt-les-heritiers/templates/item-sheet.html",
|
template: "systems/fvtt-les-heritiers/templates/item-sheet.html",
|
||||||
dragDrop: [{ dragSelector: null, dropSelector: null }],
|
dragDrop: [{ dragSelector: null, dropSelector: null }],
|
||||||
@ -48,7 +48,7 @@ export class HeritiersItemSheet extends ItemSheet {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async getData() {
|
async getData() {
|
||||||
const objectData = foundry.utils.duplicate(this.object)
|
const objectData = duplicate(this.object)
|
||||||
let formData = {
|
let formData = {
|
||||||
title: this.title,
|
title: this.title,
|
||||||
id: this.id,
|
id: this.id,
|
||||||
@ -61,20 +61,10 @@ export class HeritiersItemSheet extends ItemSheet {
|
|||||||
limited: this.object.limited,
|
limited: this.object.limited,
|
||||||
options: this.options,
|
options: this.options,
|
||||||
owner: this.document.isOwner,
|
owner: this.document.isOwner,
|
||||||
config: game.system.lesheritiers.config,
|
config: game.system.lesheritiers.config,
|
||||||
isArmeMelee: HeritiersUtility.isArmeMelee(this.object),
|
|
||||||
description: await TextEditor.enrichHTML(this.object.system.description, {async: true}),
|
description: await TextEditor.enrichHTML(this.object.system.description, {async: true}),
|
||||||
mr: (this.object.type == 'specialisation'),
|
mr: (this.object.type == 'specialisation'),
|
||||||
isGM: game.user.isGM,
|
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//this.options.editable = !(this.object.origin == "embeddedItem");
|
//this.options.editable = !(this.object.origin == "embeddedItem");
|
||||||
@ -96,7 +86,7 @@ export class HeritiersItemSheet extends ItemSheet {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
postItem() {
|
postItem() {
|
||||||
let chatData = foundry.utils.duplicate(HeritiersUtility.data(this.item));
|
let chatData = duplicate(HeritiersUtility.data(this.item));
|
||||||
if (this.actor) {
|
if (this.actor) {
|
||||||
chatData.actor = { id: this.actor.id };
|
chatData.actor = { id: this.actor.id };
|
||||||
}
|
}
|
||||||
@ -138,52 +128,52 @@ export class HeritiersItemSheet extends ItemSheet {
|
|||||||
})
|
})
|
||||||
|
|
||||||
html.find('#add-specialite').click(ev => {
|
html.find('#add-specialite').click(ev => {
|
||||||
let spec = foundry.utils.duplicate(this.object.system.specialites)
|
let spec = duplicate(this.object.system.specialites)
|
||||||
spec.push( { name: "Nouvelle Spécialité", id: foundry.utils.randomID(16), used: false })
|
spec.push( { name: "Nouvelle Spécialité", id: randomID(16), used: false })
|
||||||
this.object.update( { 'system.specialites': spec })
|
this.object.update( { 'system.specialites': spec })
|
||||||
})
|
})
|
||||||
html.find('.delete-specialite').click(ev => {
|
html.find('.delete-specialite').click(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".specialite-item")
|
const li = $(ev.currentTarget).parents(".specialite-item")
|
||||||
let index = li.data("specialite-index")
|
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)
|
spec.splice(index,1)
|
||||||
this.object.update( { 'system.specialites': spec })
|
this.object.update( { 'system.specialites': spec })
|
||||||
})
|
})
|
||||||
html.find('.edit-specialite').change(ev => {
|
html.find('.edit-specialite').change(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".specialite-item")
|
const li = $(ev.currentTarget).parents(".specialite-item")
|
||||||
let index = li.data("specialite-index")
|
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].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 })
|
this.object.update( { 'system.specialites': spec })
|
||||||
})
|
})
|
||||||
html.find('.edit-specialite-description').change(ev => {
|
html.find('.edit-specialite-description').change(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".specialite-item")
|
const li = $(ev.currentTarget).parents(".specialite-item")
|
||||||
let index = li.data("specialite-index")
|
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].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 })
|
this.object.update( { 'system.specialites': spec })
|
||||||
})
|
})
|
||||||
|
|
||||||
html.find('#add-automation').click(ev => {
|
html.find('#add-automation').click(ev => {
|
||||||
let autom = foundry.utils.duplicate(this.object.system.automations)
|
let autom = duplicate(this.object.system.automations)
|
||||||
autom.push( { eventtype: "on-drop", name: "Automatisation 1", competence: "", minLevel: 0, id: foundry.utils.randomID(16) })
|
autom.push( { eventtype: "on-drop", name: "Automatisation 1", competence: "", minLevel: 0, id: randomID(16) })
|
||||||
this.object.update( { 'system.automations': autom })
|
this.object.update( { 'system.automations': autom })
|
||||||
})
|
})
|
||||||
html.find('.delete-automation').click(ev => {
|
html.find('.delete-automation').click(ev => {
|
||||||
const li = $(ev.currentTarget).parents(".automation-item")
|
const li = $(ev.currentTarget).parents(".automation-item")
|
||||||
let index = li.data("automation-index")
|
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)
|
autom.splice(index,1)
|
||||||
this.object.update( { 'system.automations': autom })
|
this.object.update( { 'system.automations': autom })
|
||||||
})
|
})
|
||||||
html.find('.automation-edit-field').change(ev => {
|
html.find('.automation-edit-field').change(ev => {
|
||||||
let index = $(ev.currentTarget).data("automation-index")
|
let index = $(ev.currentTarget).data("automation-index")
|
||||||
let field = $(ev.currentTarget).data("automation-field")
|
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][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 })
|
this.object.update( { 'system.automations': auto })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -15,9 +15,8 @@ export const defaultItemImg = {
|
|||||||
arme: "systems/fvtt-les-heritiers/assets/icons/weapon.webp",
|
arme: "systems/fvtt-les-heritiers/assets/icons/weapon.webp",
|
||||||
accessoire: "systems/fvtt-les-heritiers/assets/icons/item.webp",
|
accessoire: "systems/fvtt-les-heritiers/assets/icons/item.webp",
|
||||||
protection: "systems/fvtt-les-heritiers/assets/icons/armor.webp",
|
protection: "systems/fvtt-les-heritiers/assets/icons/armor.webp",
|
||||||
fee: "systems/fvtt-les-heritiers/assets/icons/faery_type.webp",
|
fee: "systems/fvtt-les-heritiers/assets/icons/faery_type.webp"
|
||||||
profil: "systems/fvtt-les-heritiers/assets/icons/profil.webp",
|
|
||||||
equipement: "systems/fvtt-les-heritiers/assets/icons/equipement.webp",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
import { HeritiersActor } from "./heritiers-actor.js";
|
import { HeritiersActor } from "./heritiers-actor.js";
|
||||||
import { HeritiersItemSheet } from "./heritiers-item-sheet.js";
|
import { HeritiersItemSheet } from "./heritiers-item-sheet.js";
|
||||||
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
|
import { HeritiersActorSheet } from "./heritiers-actor-sheet.js";
|
||||||
import { HeritiersActorPNJSheet } from "./heritiers-actor-pnj-sheet.js";
|
import { HeritiersCreatureSheet } from "./heritiers-creature-sheet.js";
|
||||||
import { HeritiersUtility } from "./heritiers-utility.js";
|
import { HeritiersUtility } from "./heritiers-utility.js";
|
||||||
import { HeritiersCombat } from "./heritiers-combat.js";
|
import { HeritiersCombat } from "./heritiers-combat.js";
|
||||||
import { HeritiersItem } from "./heritiers-item.js";
|
import { HeritiersItem } from "./heritiers-item.js";
|
||||||
@ -46,8 +46,6 @@ Hooks.once("init", async function () {
|
|||||||
CONFIG.Combat.documentClass = HeritiersCombat
|
CONFIG.Combat.documentClass = HeritiersCombat
|
||||||
CONFIG.Actor.documentClass = HeritiersActor
|
CONFIG.Actor.documentClass = HeritiersActor
|
||||||
CONFIG.Item.documentClass = HeritiersItem
|
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 = {
|
game.system.lesheritiers = {
|
||||||
HeritiersUtility,
|
HeritiersUtility,
|
||||||
config: HERITIERS_CONFIG
|
config: HERITIERS_CONFIG
|
||||||
@ -57,7 +55,7 @@ Hooks.once("init", async function () {
|
|||||||
// Register sheet application classes
|
// Register sheet application classes
|
||||||
Actors.unregisterSheet("core", ActorSheet);
|
Actors.unregisterSheet("core", ActorSheet);
|
||||||
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true })
|
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorSheet, { types: ["personnage"], makeDefault: true })
|
||||||
Actors.registerSheet("fvtt-les-heritiers", HeritiersActorPNJSheet, { types: ["pnj"], makeDefault: true })
|
Actors.registerSheet("fvtt-les-heritiers", HeritiersCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||||
|
|
||||||
Items.unregisterSheet("core", ItemSheet);
|
Items.unregisterSheet("core", ItemSheet);
|
||||||
Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })
|
Items.registerSheet("fvtt-les-heritiers", HeritiersItemSheet, { makeDefault: true })
|
||||||
@ -80,17 +78,31 @@ function welcomeMessage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async function importDefaultScene() {
|
// Register world usage statistics
|
||||||
let exists = game.scenes.find(j => j.name == "Accueil");
|
function registerUsageCount(registerKey) {
|
||||||
if (!exists) {
|
if (game.user.isGM) {
|
||||||
const scenes = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.scenes")
|
game.settings.register(registerKey, "world-key", {
|
||||||
let newDocuments = scenes.filter(i => i.name == "Accueil");
|
name: "Unique world key",
|
||||||
await game.scenes.documentClass.create(newDocuments);
|
scope: "world",
|
||||||
game.scenes.find(i => i.name == "Accueil").activate();
|
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 */
|
/* Foundry VTT Initialization */
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -106,16 +118,15 @@ Hooks.once("ready", function () {
|
|||||||
user: game.user._id
|
user: game.user._id
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
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] == '/') {
|
if (content[0] == '/') {
|
||||||
let regExp = /(\S+)/g;
|
let regExp = /(\S+)/g;
|
||||||
let commands = content.match(regExp);
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ export class HeritiersRollDialog extends Dialog {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async create(actor, rollData) {
|
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);
|
let html = await renderTemplate('systems/fvtt-les-heritiers/templates/roll-dialog-generic.html', rollData);
|
||||||
|
|
||||||
return new HeritiersRollDialog(actor, rollData, html, options);
|
return new HeritiersRollDialog(actor, rollData, html, options);
|
||||||
@ -13,62 +13,35 @@ export class HeritiersRollDialog extends Dialog {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
constructor(actor, rollData, html, options, close = undefined) {
|
constructor(actor, rollData, html, options, close = undefined) {
|
||||||
let buttons = {
|
|
||||||
rolld8: {
|
|
||||||
icon: '<i class="fas fa-check"></i>',
|
|
||||||
label: "Lancer 1d8",
|
|
||||||
callback: () => { this.roll("d8") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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 = {
|
let conf = {
|
||||||
title: "Test de Capacité",
|
title: "Test de Capacité",
|
||||||
content: html,
|
content: html,
|
||||||
buttons: buttons,
|
buttons:
|
||||||
|
{
|
||||||
|
rolld8: {
|
||||||
|
icon: '<i class="fas fa-check"></i>',
|
||||||
|
label: "Lancer 1d8",
|
||||||
|
callback: () => { this.roll("d8") }
|
||||||
|
},
|
||||||
|
rolld10: {
|
||||||
|
icon: '<i class="fas fa-check"></i>',
|
||||||
|
label: "Lancer 1d10",
|
||||||
|
callback: () => { this.roll("d10") }
|
||||||
|
},
|
||||||
|
rolld12: {
|
||||||
|
icon: '<i class="fas fa-check"></i>',
|
||||||
|
label: "Lancer 1d12",
|
||||||
|
callback: () => { this.roll("d12") }
|
||||||
|
},
|
||||||
|
cancel: {
|
||||||
|
icon: '<i class="fas fa-times"></i>',
|
||||||
|
label: "Annuler",
|
||||||
|
callback: () => { this.close() }
|
||||||
|
}
|
||||||
|
},
|
||||||
close: close
|
close: close
|
||||||
}
|
}
|
||||||
// Overwrite in case of carac only -> 1d8
|
// Overwrite in case of carac only -> 1d10
|
||||||
if (rollData.mode == "carac") {
|
if (rollData.mode == "carac") {
|
||||||
conf.buttons = {
|
conf.buttons = {
|
||||||
rolld8: {
|
rolld8: {
|
||||||
@ -91,16 +64,7 @@ export class HeritiersRollDialog extends Dialog {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
roll(dice) {
|
roll(dice) {
|
||||||
if (dice == "heritage") {
|
this.rollData.mainDice = dice
|
||||||
this.rollData.useHeritage = true
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (dice == "tricherie") {
|
|
||||||
this.rollData.useTricherie = true
|
|
||||||
} else {
|
|
||||||
this.rollData.mainDice = dice
|
|
||||||
}
|
|
||||||
}
|
|
||||||
HeritiersUtility.rollHeritiers(this.rollData)
|
HeritiersUtility.rollHeritiers(this.rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,30 +82,16 @@ export class HeritiersRollDialog extends Dialog {
|
|||||||
this.rollData.sdValue = Number(event.currentTarget.value)
|
this.rollData.sdValue = Number(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#caracKey').change(async (event) => {
|
html.find('#caracKey').change(async (event) => {
|
||||||
//console.log("caracKey", event.currentTarget.value)
|
|
||||||
this.rollData.caracKey = String(event.currentTarget.value)
|
this.rollData.caracKey = String(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#bonus-malus-context').change((event) => {
|
html.find('#bonus-malus-context').change((event) => {
|
||||||
this.rollData.bonusMalusContext = Number(event.currentTarget.value)
|
this.rollData.bonusMalusContext = Number(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
html.find('#bonus-attaque-plusieurs').change((event) => {
|
html.find('#useTricherie').change((event) => {
|
||||||
this.rollData.bonusAttaquePlusieurs = Number(event.currentTarget.value)
|
this.rollData.useTricherie = event.currentTarget.checked
|
||||||
})
|
})
|
||||||
html.find('#useSpecialite').change((event) => {
|
html.find('#useHeritage').change((event) => {
|
||||||
this.rollData.useSpecialite = event.currentTarget.checked
|
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 { HeritiersCombat } from "./heritiers-combat.js";
|
||||||
import { HeritiersCommands } from "./heritiers-commands.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 {
|
export class HeritiersUtility {
|
||||||
|
|
||||||
@ -81,16 +42,17 @@ export class HeritiersUtility {
|
|||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static sortByName(table) {
|
static sortByName(table) {
|
||||||
return table.sort(function (a, b) {
|
return table.sort(function (a, b) {
|
||||||
return a.name.localeCompare(b.name);
|
let fa = a.name.toLowerCase(),
|
||||||
})
|
fb = b.name.toLowerCase();
|
||||||
}
|
if (fa < fb) {
|
||||||
|
return -1;
|
||||||
/* -------------------------------------------- */
|
}
|
||||||
static sortArrayObjectsByName(myArray) {
|
if (fa > fb) {
|
||||||
myArray.sort((a, b) => {
|
return 1;
|
||||||
return a.name.localeCompare(b.name);
|
}
|
||||||
|
return 0;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,14 +66,6 @@ export class HeritiersUtility {
|
|||||||
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
|
const skills = await HeritiersUtility.loadCompendium("fvtt-les-heritiers.competences")
|
||||||
this.skills = skills.map(i => i.toObject())
|
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 rollData = message.getFlag("world", "heritiers-roll")
|
||||||
let actor = this.getActorFromRollData(rollData)
|
let actor = this.getActorFromRollData(rollData)
|
||||||
await actor.setPredilectionUsed(rollData.competence._id, predIdx)
|
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)
|
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 => {
|
html.on("click", '.roll-chat-degat', async event => {
|
||||||
let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
|
let messageId = HeritiersUtility.findChatMessageId(event.currentTarget)
|
||||||
let message = game.messages.get(messageId)
|
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-header.html',
|
||||||
'systems/fvtt-les-heritiers/templates/partial-item-description.html',
|
'systems/fvtt-les-heritiers/templates/partial-item-description.html',
|
||||||
'systems/fvtt-les-heritiers/templates/partial-item-nav.html',
|
'systems/fvtt-les-heritiers/templates/partial-item-nav.html',
|
||||||
'systems/fvtt-les-heritiers/templates/partial-utile-skills.html'
|
'systems/fvtt-les-heritiers/templates/partial-list-niveau.html'
|
||||||
]
|
]
|
||||||
return loadTemplates(templatePaths);
|
return loadTemplates(templatePaths);
|
||||||
}
|
}
|
||||||
@ -251,7 +194,7 @@ export class HeritiersUtility {
|
|||||||
|
|
||||||
let id = rollData.rollId;
|
let id = rollData.rollId;
|
||||||
let oldRollData = this.rollDataStore[id] || {};
|
let oldRollData = this.rollDataStore[id] || {};
|
||||||
let newRollData = foundry.utils.mergeObject(oldRollData, rollData);
|
let newRollData = mergeObject(oldRollData, rollData);
|
||||||
this.rollDataStore[id] = newRollData;
|
this.rollDataStore[id] = newRollData;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -269,6 +212,7 @@ export class HeritiersUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static onSocketMesssage(msg) {
|
static onSocketMesssage(msg) {
|
||||||
|
//console.log("SOCKET MESSAGE", msg.name, game.user.character.id, msg.data.defenderId);
|
||||||
if (msg.name == "msg_update_defense_state") {
|
if (msg.name == "msg_update_defense_state") {
|
||||||
this.updateDefenseState(msg.data.defenderId, msg.data.rollId);
|
this.updateDefenseState(msg.data.defenderId, msg.data.rollId);
|
||||||
}
|
}
|
||||||
@ -325,267 +269,116 @@ export class HeritiersUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static computeMonnaieDetails(valueSC) {
|
static computeMonnaieDetails(valueSC) {
|
||||||
let po = Math.floor(valueSC / 400)
|
let po = Math.floor(valueSC / 400)
|
||||||
let pa = Math.floor((valueSC - (po * 400)) / 20)
|
let pa = Math.floor((valueSC - (po*400)) / 20)
|
||||||
let sc = valueSC - (po * 400) - (pa * 20)
|
let sc = valueSC - (po*400) - (pa*20)
|
||||||
return {
|
return {
|
||||||
po: po, pa: pa, sc: sc, valueSC: valueSC
|
po: po, pa: pa, sc: sc, valueSC: valueSC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static incDecHeritage() {
|
static incDecHeritage() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static computeResult(actor, rollData) {
|
static computeResult(actor, rollData) {
|
||||||
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
|
rollData.marge = 0
|
||||||
|
if (!isFailure && (rollData.useHeritage || rollData.useTricherie)) {
|
||||||
if (isTricherieHeritage) {
|
|
||||||
let resTab = [rollData.roll.terms[0].results[0].result, rollData.roll.terms[0].results[1].result, rollData.roll.terms[0].results[2].result]
|
|
||||||
rollData.diceResult = resTab[0] + "," + resTab[1] + "," + resTab[2]
|
|
||||||
let 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
|
|
||||||
resTab = resTab.sort()
|
resTab = resTab.sort()
|
||||||
if ((resTab[0] == resTab[1]) && (resTab[1] == resTab[2])) {
|
if ( (resTab[0] == resTab[1]) && (resTab[1] == resTab[2])) {
|
||||||
rollData.marge = 7
|
rollData.marge = 7
|
||||||
rollData.isSuccess = true
|
rollData.isSuccess = true
|
||||||
rollData.isCriticalSuccess = true
|
rollData.isCriticalSuccess = true
|
||||||
rollData.isBrelan = true
|
|
||||||
}
|
}
|
||||||
if ((resTab[0] + 1 == resTab[1]) && (resTab[1] + 1 == resTab[2])) {
|
if ((resTab[0]+1 == resTab[1]) && (resTab[1]+1 == resTab[2]) ) {
|
||||||
rollData.marge = 7
|
rollData.marge = 7
|
||||||
rollData.isSuccess = true
|
rollData.isSuccess = true
|
||||||
rollData.isCriticalSuccess = true
|
rollData.isCriticalSuccess = true
|
||||||
rollData.isSuite = true
|
}
|
||||||
}
|
if ( rollData.useTricherie) {
|
||||||
if (rollData.useTricherie) {
|
|
||||||
actor.incDecTricherie(-1)
|
actor.incDecTricherie(-1)
|
||||||
}
|
}
|
||||||
if (rollData.useHeritage) {
|
if ( rollData.useHeritage) {
|
||||||
this.incDecHeritage()
|
this.incDecHeritage()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
//rollData.finalResult = Math.max(rollData.finalResult, 0)
|
||||||
rollData.finalResult = rollData.roll.total
|
//console.log("Result : ", rollData)
|
||||||
let rollValue = rollData.forcedValue || rollData.roll.terms[0].results[0].result
|
if (rollData.marge == 0 && rollData.sdValue > 0 ) {
|
||||||
rollData.diceResult = rollValue
|
rollData.marge = rollData.finalResult - rollData.sdValue
|
||||||
rollData.diceValue = rollValue
|
rollData.isSuccess = (rollData.finalResult >= rollData.sdValue)
|
||||||
if (rollData.mainDice.includes("d10")) {
|
rollData.isCriticalSuccess = ((rollData.finalResult - rollData.sdValue) >= 7)
|
||||||
if (rollValue == 1) {
|
rollData.isCriticalFailure = ((rollData.finalResult - rollData.sdValue) <= -7)
|
||||||
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])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
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) {
|
static async rollHeritiers(rollData) {
|
||||||
|
|
||||||
let actor = this.getActorFromRollData(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"
|
//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 = duplicate(actor.system.caracteristiques[rollData.caracKey])
|
||||||
rollData.carac = foundry.utils.duplicate(actor.system.caracteristiques[rollData.caracKey])
|
|
||||||
|
|
||||||
if (rollData.forcedValue) {
|
rollData.nbDice = (rollData.useTricherie || rollData.useHeritage) ? 3 : 1
|
||||||
rollData.diceFormula = rollData.forcedValue
|
rollData.diceFormula = rollData.nbDice + rollData.mainDice + "kh1"
|
||||||
} else {
|
//console.log("BEFORE COMP", rollData)
|
||||||
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
|
|
||||||
}
|
|
||||||
if (rollData.competence) {
|
if (rollData.competence) {
|
||||||
let compmod = 0 // Bonus de compétence à 0 dans Les Heritiers
|
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
|
||||||
let specBonus = (rollData.useSpecialite) ? 1 : 0
|
rollData.diceFormula += `+${rollData.carac.value}+${rollData.competence.system.niveau}+${rollData.bonusMalusContext}+${compmod}`
|
||||||
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}`
|
|
||||||
} else {
|
} else {
|
||||||
rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.bonusMalusContext}`
|
rollData.diceFormula += `+${rollData.carac.value}+${rollData.bonusMalusContext}`
|
||||||
}
|
}
|
||||||
let ruleMalus = 0
|
rollData.diceFormula += `+${rollData.pvMalus}`
|
||||||
for (let malus of rollData.rulesMalus) {
|
|
||||||
ruleMalus += malus.value
|
|
||||||
}
|
|
||||||
rollData.diceFormula += `+${ruleMalus}`
|
|
||||||
|
|
||||||
// Gestion bonus attaque à plusieurs
|
if (rollData.arme && rollData.arme.type == "arme") {
|
||||||
let bonusAttaque = rollData.bonusAttaquePlusieurs
|
rollData.diceFormula += `+${rollData.arme.system.bonusmaniementoff}`
|
||||||
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.noRoll) {
|
let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
|
||||||
let myRoll = await new Roll(rollData.diceFormula).roll()
|
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
rollData.roll = myRoll
|
||||||
rollData.roll = foundry.utils.duplicate(myRoll)
|
console.log(">>>> ", myRoll)
|
||||||
console.log(">>>> ", myRoll)
|
|
||||||
this.computeResult(actor, rollData)
|
|
||||||
this.computeMarge(rollData, rollData.sdValue) // Calcul de la marge si seuil présent
|
|
||||||
}
|
|
||||||
|
|
||||||
|
rollData.finalResult = myRoll.total
|
||||||
|
this.computeResult(actor, rollData)
|
||||||
if (rollData.mode == "init") {
|
if (rollData.mode == "init") {
|
||||||
actor.setFlag("world", "last-initiative", rollData.finalResult)
|
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, {
|
this.createChatWithRollMode(rollData.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData)
|
content: await renderTemplate(`systems/fvtt-les-heritiers/templates/chat-generic-result.html`, rollData)
|
||||||
}, rollData)
|
}, rollData)
|
||||||
|
|
||||||
// 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) {
|
static async bonusRollHeritiers(rollData) {
|
||||||
rollData.bonusFormula = rollData.addedBonus
|
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"));
|
await this.showDiceSoNice(bonusRoll, game.settings.get("core", "rollMode"));
|
||||||
rollData.bonusRoll = foundry.utils.duplicate(bonusRoll)
|
rollData.bonusRoll = bonusRoll
|
||||||
|
|
||||||
rollData.finalResult += rollData.bonusRoll.total
|
rollData.finalResult += rollData.bonusRoll.total
|
||||||
|
|
||||||
@ -602,10 +395,6 @@ export class HeritiersUtility {
|
|||||||
return game.users.filter(filter).map(user => user._id);
|
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) {
|
static getWhisperRecipients(rollMode, name) {
|
||||||
switch (rollMode) {
|
switch (rollMode) {
|
||||||
@ -623,7 +412,7 @@ export class HeritiersUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static blindMessageToGM(chatOptions) {
|
static blindMessageToGM(chatOptions) {
|
||||||
let chatGM = foundry.utils.duplicate(chatOptions);
|
let chatGM = duplicate(chatOptions);
|
||||||
chatGM.whisper = this.getUsers(user => user.isGM);
|
chatGM.whisper = this.getUsers(user => user.isGM);
|
||||||
chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content;
|
chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content;
|
||||||
console.log("blindMessageToGM", chatGM);
|
console.log("blindMessageToGM", chatGM);
|
||||||
@ -687,17 +476,11 @@ export class HeritiersUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getBasicRollData() {
|
static getBasicRollData() {
|
||||||
let rollData = {
|
let rollData = {
|
||||||
rollId: foundry.utils.randomID(16),
|
rollId: randomID(16),
|
||||||
rollMode: game.settings.get("core", "rollMode"),
|
rollMode: game.settings.get("core", "rollMode"),
|
||||||
sdList: game.system.lesheritiers.config.seuilsDifficulte,
|
sdList: game.system.lesheritiers.config.seuilsDifficulte,
|
||||||
sdValue: -1,
|
sdValue: 0,
|
||||||
bonusAttaquePlusieurs: 0,
|
bonusMalusContext: 0
|
||||||
attaqueDeuxArmes: 0,
|
|
||||||
attaqueDos: false,
|
|
||||||
bonusMalusContext: 0,
|
|
||||||
attaqueCible: "none",
|
|
||||||
config: game.system.lesheritiers.config,
|
|
||||||
rulesMalus: []
|
|
||||||
}
|
}
|
||||||
return rollData
|
return rollData
|
||||||
}
|
}
|
||||||
@ -708,18 +491,18 @@ export class HeritiersUtility {
|
|||||||
if (target) {
|
if (target) {
|
||||||
rollData.defenderTokenId = target.id
|
rollData.defenderTokenId = target.id
|
||||||
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
let defender = game.canvas.tokens.get(rollData.defenderTokenId).actor
|
||||||
rollData.defenderName = defender.name
|
rollData.armeDefense = defender.getBestDefenseValue()
|
||||||
rollData.defenderParade = defender.getCurrentParade()
|
rollData.targetVigueur = defender.getVigueur()
|
||||||
rollData.defenderEsquive = defender.getCurrentEsquive()
|
if (rollData.armeDefense) {
|
||||||
rollData.defenderResistancePhysique = defender.getCurrentResistancePhysique()
|
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) {
|
static createChatWithRollMode(name, chatOptions, rollData = undefined) {
|
||||||
if (rollMode == undefined) {
|
|
||||||
rollMode = game.settings.get("core", "rollMode")
|
|
||||||
}
|
|
||||||
this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions, rollData)
|
this.createChatMessage(name, game.settings.get("core", "rollMode"), chatOptions, rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 {
|
.window-app input, .fvtt-les-heritiers .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
|
.fvtt-les-heritiers .sheet-header select option {
|
||||||
|
background-color: rgb(68, 25, 25);
|
||||||
|
}
|
||||||
.fvtt-les-heritiers .sheet-header input, .fvtt-les-heritiers .sheet-header select {
|
.fvtt-les-heritiers .sheet-header input, .fvtt-les-heritiers .sheet-header select {
|
||||||
color: rgb(41, 38, 38);
|
color: rgb(41, 38, 38);
|
||||||
}
|
}
|
||||||
@ -86,13 +88,6 @@
|
|||||||
background: rgba(0,0,0,0.75);
|
background: rgba(0,0,0,0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
.page-heading {
|
|
||||||
color: #151c1f;
|
|
||||||
}
|
|
||||||
.heading-link {
|
|
||||||
color: #151c1f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.window-app.sheet .window-content {
|
.window-app.sheet .window-content {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@ -443,7 +438,7 @@ table {border: 1px solid #7a7971;}
|
|||||||
background-repeat: repeat;
|
background-repeat: repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header 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);*/
|
/*color: rgba(36, 37, 37, 0.75);*/
|
||||||
/*background: rgba(255, 255, 255, 0.05);*/
|
/*background: rgba(255, 255, 255, 0.05);*/
|
||||||
/*border: 2px saddlebrown;*/
|
/*border: 2px saddlebrown;*/
|
||||||
@ -573,7 +568,6 @@ ul, li {
|
|||||||
|
|
||||||
.specialisation-label {
|
.specialisation-label {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
font-style: italic;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.carac-label,
|
.carac-label,
|
||||||
@ -653,15 +647,7 @@ ul, li {
|
|||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
padding-top: 7px;
|
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 {
|
.short-label {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
@ -1024,6 +1010,8 @@ ul, li {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#sidebar #sidebar-tabs i{
|
#sidebar #sidebar-tabs i{
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
background-position:center;
|
background-position:center;
|
||||||
background-size:cover;
|
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 */
|
/* Control, Tool, hotbar & navigation */
|
||||||
|
|
||||||
@ -1199,17 +1204,7 @@ ul, li {
|
|||||||
top:1px;
|
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 {
|
.button-sheet-roll {
|
||||||
box-shadow: inset 0px 1px 0px 0px #a6827e;
|
box-shadow: inset 0px 1px 0px 0px #a6827e;
|
||||||
background: linear-gradient(to bottom, #41545a 5%, #2e5561 100%);
|
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: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
|
||||||
background-color: rgb(56, 33, 33);
|
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 {
|
.button-sheet-roll:active {
|
||||||
position:relative;
|
position:relative;
|
||||||
top:1px;
|
top:1px;
|
||||||
}
|
}
|
||||||
.button-sheet-roll-long1 {
|
|
||||||
max-width: 6.1rem;
|
|
||||||
min-width: 6.1rem;
|
|
||||||
}
|
|
||||||
.defense-sheet {
|
.defense-sheet {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -1445,10 +1426,6 @@ h4.entry-name.document-name {
|
|||||||
max-width: 14rem;
|
max-width: 14rem;
|
||||||
min-width: 14rem;
|
min-width: 14rem;
|
||||||
}
|
}
|
||||||
.item-field-label-long2-img {
|
|
||||||
max-width: 16rem;
|
|
||||||
min-width: 16rem;
|
|
||||||
}
|
|
||||||
.item-field-label-long3 {
|
.item-field-label-long3 {
|
||||||
padding-top: 6px;
|
padding-top: 6px;
|
||||||
flex-grow:1;
|
flex-grow:1;
|
||||||
|
145
system.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"id": "fvtt-les-heritiers",
|
"id": "fvtt-les-heritiers",
|
||||||
"description": "Les Héritiers pour FoundryVTT",
|
"description": "Les Héritiers pour FoundryVTT",
|
||||||
"version": "12.0.4",
|
"version": "10.0.14",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Uberwald/LeRatierBretonnien",
|
"name": "Uberwald/LeRatierBretonnien",
|
||||||
@ -15,13 +15,11 @@
|
|||||||
"esmodules": [
|
"esmodules": [
|
||||||
"modules/heritiers-main.js"
|
"modules/heritiers-main.js"
|
||||||
],
|
],
|
||||||
"grid": {
|
"gridDistance": 5,
|
||||||
"distance": 5,
|
"gridUnits": "m",
|
||||||
"units": "m"
|
|
||||||
},
|
|
||||||
"license": "LICENSE.txt",
|
"license": "LICENSE.txt",
|
||||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/raw/branch/master/system.json",
|
"manifest": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/raw/branch/master/system.json",
|
||||||
"download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-12.0.4.zip",
|
"download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.0.14.zip",
|
||||||
"languages": [
|
"languages": [
|
||||||
{
|
{
|
||||||
"lang": "fr",
|
"lang": "fr",
|
||||||
@ -30,163 +28,87 @@
|
|||||||
"flags": {}
|
"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": [
|
"packs": [
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Compétences",
|
"label": "Compétences",
|
||||||
"name": "competences",
|
"name": "competences",
|
||||||
"path": "packs/competences",
|
"path": "packs/competences.db",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"flags": {},
|
"private": false,
|
||||||
"ownership": {
|
"flags": {}
|
||||||
"PLAYER": "OBSERVER",
|
|
||||||
"ASSISTANT": "OWNER"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Avantages",
|
"label": "Avantages",
|
||||||
"name": "avantages",
|
"name": "avantages",
|
||||||
"path": "packs/avantages",
|
"path": "packs/avantages.db",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"flags": {},
|
"private": false,
|
||||||
"ownership": {
|
"flags": {}
|
||||||
"PLAYER": "OBSERVER",
|
|
||||||
"ASSISTANT": "OWNER"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Désavantages",
|
"label": "Désavantages",
|
||||||
"name": "desavantages",
|
"name": "desavantages",
|
||||||
"path": "packs/desavantages",
|
"path": "packs/desavantages.db",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"flags": {},
|
"private": false,
|
||||||
"ownership": {
|
"flags": {}
|
||||||
"PLAYER": "OBSERVER",
|
|
||||||
"ASSISTANT": "OWNER"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Capacités Naturelles",
|
"label": "Capacités Naturelles",
|
||||||
"name": "capacites",
|
"name": "capacites",
|
||||||
"path": "packs/capacites",
|
"path": "packs/capacites.db",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"flags": {},
|
"private": false,
|
||||||
"ownership": {
|
"flags": {}
|
||||||
"PLAYER": "OBSERVER",
|
|
||||||
"ASSISTANT": "OWNER"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Atouts Féériques",
|
"label": "Atouts Féériques",
|
||||||
"name": "atouts-feeriques",
|
"name": "atouts-feeriques",
|
||||||
"path": "packs/atouts-feeriques",
|
"path": "packs/atouts-feeriques.db",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"flags": {},
|
"private": false,
|
||||||
"ownership": {
|
"flags": {}
|
||||||
"PLAYER": "OBSERVER",
|
|
||||||
"ASSISTANT": "OWNER"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Fées",
|
"label": "Fées",
|
||||||
"name": "archetypes-fees",
|
"name": "archetypes-fees",
|
||||||
"path": "packs/archetypes-fees",
|
"path": "packs/archetypes-fees.db",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"flags": {},
|
"private": false,
|
||||||
"ownership": {
|
"flags": {}
|
||||||
"PLAYER": "OBSERVER",
|
|
||||||
"ASSISTANT": "OWNER"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Pouvoirs",
|
"label": "Pouvoirs",
|
||||||
"name": "pouvoirs",
|
"name": "pouvoirs",
|
||||||
"path": "packs/pouvoirs",
|
"path": "packs/pouvoirs.db",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"flags": {},
|
"private": false,
|
||||||
"ownership": {
|
"flags": {}
|
||||||
"PLAYER": "OBSERVER",
|
|
||||||
"ASSISTANT": "OWNER"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Armes et Protections",
|
"label": "Armes et Protections",
|
||||||
"name": "armes-et-protection",
|
"name": "armes-et-protection",
|
||||||
"path": "packs/armes-et-protection",
|
"path": "packs/armes-et-protection.db",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"flags": {},
|
"private": false,
|
||||||
"ownership": {
|
"flags": {}
|
||||||
"PLAYER": "OBSERVER",
|
|
||||||
"ASSISTANT": "OWNER"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Item",
|
"type": "Item",
|
||||||
"label": "Profils",
|
"label": "Profils",
|
||||||
"name": "profils",
|
"name": "profils",
|
||||||
"path": "packs/profils",
|
"path": "packs/profils.db",
|
||||||
"system": "fvtt-les-heritiers",
|
"system": "fvtt-les-heritiers",
|
||||||
"flags": {},
|
"private": false,
|
||||||
"ownership": {
|
"flags": {}
|
||||||
"PLAYER": "OBSERVER",
|
|
||||||
"ASSISTANT": "OWNER"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "Scene",
|
|
||||||
"label": "Scènes",
|
|
||||||
"name": "scenes",
|
|
||||||
"path": "packs/scenes",
|
|
||||||
"system": "fvtt-les-heritiers",
|
|
||||||
"flags": {},
|
|
||||||
"ownership": {
|
|
||||||
"PLAYER": "OBSERVER",
|
|
||||||
"ASSISTANT": "OWNER"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"primaryTokenAttribute": "sante.vigueur",
|
"primaryTokenAttribute": "sante.vigueur",
|
||||||
@ -199,7 +121,8 @@
|
|||||||
"url": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers",
|
"url": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers",
|
||||||
"background": "systems/fvtt-les-heritiers/assets/ui/wallpaper_foundry2.webp",
|
"background": "systems/fvtt-les-heritiers/assets/ui/wallpaper_foundry2.webp",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "11",
|
"minimum": "10",
|
||||||
"verified": "12"
|
"verified": "10",
|
||||||
|
"maximum": "10"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,27 +2,20 @@
|
|||||||
"Actor": {
|
"Actor": {
|
||||||
"types": [
|
"types": [
|
||||||
"personnage",
|
"personnage",
|
||||||
"pnj"
|
"creature"
|
||||||
],
|
],
|
||||||
"templates": {
|
"templates": {
|
||||||
"biodata": {
|
"biodata": {
|
||||||
"biodata": {
|
"biodata": {
|
||||||
"name": "",
|
"name": "",
|
||||||
"activite":"",
|
"activite":"",
|
||||||
"nomhumain": "",
|
"profilmajeur": "",
|
||||||
"activites": "",
|
"profilmineur": "",
|
||||||
"fortune": 0,
|
"fortune": 0,
|
||||||
"traitscaracteres": "",
|
"traitscaracteres": "",
|
||||||
"tailledemasquee": "",
|
|
||||||
"taillemasquee": "",
|
"taillemasquee": "",
|
||||||
"poidsmasquee": "",
|
"poidsmasquee": "",
|
||||||
"poidsdemasquee": "",
|
|
||||||
"apparencemasquee": "",
|
"apparencemasquee": "",
|
||||||
"apparencedemasquee": "",
|
|
||||||
"titrefamille": "",
|
|
||||||
"langues": "",
|
|
||||||
"factionfeerique": "",
|
|
||||||
"typetaille": "",
|
|
||||||
"age": 0,
|
"age": 0,
|
||||||
"poids": "",
|
"poids": "",
|
||||||
"taille": "",
|
"taille": "",
|
||||||
@ -30,13 +23,9 @@
|
|||||||
"sexe": "",
|
"sexe": "",
|
||||||
"yeux": "",
|
"yeux": "",
|
||||||
"description": "",
|
"description": "",
|
||||||
"revesetranges": "",
|
|
||||||
"secretsdecouverts": "",
|
|
||||||
"questions": "",
|
|
||||||
"habitat": "",
|
"habitat": "",
|
||||||
"notes": "",
|
"notes": "",
|
||||||
"statut": "",
|
"statut": "",
|
||||||
"playernotes":"",
|
|
||||||
"gmnotes": ""
|
"gmnotes": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -98,9 +87,9 @@
|
|||||||
"max": 1
|
"max": 1
|
||||||
},
|
},
|
||||||
"pres": {
|
"pres": {
|
||||||
"label": "Prestance",
|
"label": "Présence",
|
||||||
"labelnorm": "prestance",
|
"labelnorm": "presence",
|
||||||
"abbrev": "pres",
|
"abbrev": "pre",
|
||||||
"kind": "mental",
|
"kind": "mental",
|
||||||
"value": 1,
|
"value": 1,
|
||||||
"rang": 0,
|
"rang": 0,
|
||||||
@ -116,25 +105,20 @@
|
|||||||
"max": 1
|
"max": 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"statutmasque": "masque",
|
|
||||||
"rang": {
|
"rang": {
|
||||||
"tricherie": {
|
"tricherie": {
|
||||||
"label": "Tricherie",
|
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 0
|
"max": 0
|
||||||
},
|
},
|
||||||
"feerie": {
|
"feerie": {
|
||||||
"label": "Féerie",
|
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 0
|
"max": 0
|
||||||
},
|
},
|
||||||
"masque": {
|
"masque": {
|
||||||
"label": "Masque",
|
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 0
|
"max": 0
|
||||||
},
|
},
|
||||||
"heritage": {
|
"heritage": {
|
||||||
"label": "Héritage",
|
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 0,
|
"max": 0,
|
||||||
"scenarios": 0
|
"scenarios": 0
|
||||||
@ -142,43 +126,36 @@
|
|||||||
},
|
},
|
||||||
"pv": {
|
"pv": {
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"max": 0,
|
"max": 0
|
||||||
"mod": 0
|
|
||||||
},
|
},
|
||||||
"competences": {
|
"competences": {
|
||||||
"aventurier": {
|
"aventurier": {
|
||||||
"label": "Aventurier",
|
"label": "Aventurier",
|
||||||
"niveau": 0,
|
|
||||||
"rang": 0,
|
"rang": 0,
|
||||||
"pp": 0
|
"pp": 0
|
||||||
},
|
},
|
||||||
"combattant": {
|
"combattant": {
|
||||||
"label": "Aventurier",
|
"label": "Aventurier",
|
||||||
"niveau": 0,
|
|
||||||
"rang": 0,
|
"rang": 0,
|
||||||
"pp": 0
|
"pp": 0
|
||||||
},
|
},
|
||||||
"erudit": {
|
"erudit": {
|
||||||
"label": "Erudit",
|
"label": "Erudit",
|
||||||
"niveau": 0,
|
|
||||||
"rang": 0,
|
"rang": 0,
|
||||||
"pp": 0
|
"pp": 0
|
||||||
},
|
},
|
||||||
"gentleman": {
|
"gentleman": {
|
||||||
"label": "Gentleman",
|
"label": "Gentleman",
|
||||||
"niveau": 0,
|
|
||||||
"rang": 0,
|
"rang": 0,
|
||||||
"pp": 0
|
"pp": 0
|
||||||
},
|
},
|
||||||
"roublard": {
|
"roublard": {
|
||||||
"label": "Roublard",
|
"label": "Roublard",
|
||||||
"niveau": 0,
|
|
||||||
"rang": 0,
|
"rang": 0,
|
||||||
"pp": 0
|
"pp": 0
|
||||||
},
|
},
|
||||||
"savant": {
|
"savant": {
|
||||||
"label": "Savant",
|
"label": "Savant",
|
||||||
"niveau": 0,
|
|
||||||
"rang": 0,
|
"rang": 0,
|
||||||
"pp": 0
|
"pp": 0
|
||||||
}
|
}
|
||||||
@ -193,8 +170,6 @@
|
|||||||
"demasquee": 0
|
"demasquee": 0
|
||||||
},
|
},
|
||||||
"parade": {
|
"parade": {
|
||||||
"masquee": 0,
|
|
||||||
"demasquee": 0,
|
|
||||||
"value": 0
|
"value": 0
|
||||||
},
|
},
|
||||||
"resistancephysique": {
|
"resistancephysique": {
|
||||||
@ -234,12 +209,6 @@
|
|||||||
"biodata",
|
"biodata",
|
||||||
"core"
|
"core"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"pnj": {
|
|
||||||
"templates": [
|
|
||||||
"biodata",
|
|
||||||
"core"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Item": {
|
"Item": {
|
||||||
@ -255,26 +224,24 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"types": [
|
"types": [
|
||||||
"accessoire",
|
|
||||||
"arme",
|
|
||||||
"atoutfeerique",
|
|
||||||
"avantage",
|
|
||||||
"capacitenaturelle",
|
|
||||||
"competence",
|
|
||||||
"contact",
|
|
||||||
"desavantage",
|
|
||||||
"equipement",
|
|
||||||
"fee",
|
"fee",
|
||||||
|
"avantage",
|
||||||
|
"desavantage",
|
||||||
|
"capacitenaturelle",
|
||||||
"pouvoir",
|
"pouvoir",
|
||||||
"profil",
|
"atoutfeerique",
|
||||||
"protection"
|
"competence",
|
||||||
|
"arme",
|
||||||
|
"protection",
|
||||||
|
"accessoire",
|
||||||
|
"contact",
|
||||||
|
"profil"
|
||||||
],
|
],
|
||||||
"profil": {
|
"profil": {
|
||||||
"profiltype": "majeur",
|
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"contact": {
|
"contact": {
|
||||||
"contacttype": "",
|
"feetype": 0,
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"fee": {
|
"fee": {
|
||||||
@ -314,8 +281,6 @@
|
|||||||
"activation": "",
|
"activation": "",
|
||||||
"istest": false,
|
"istest": false,
|
||||||
"feeriemasque": "feerie",
|
"feeriemasque": "feerie",
|
||||||
"zoneffet": "",
|
|
||||||
"testautre": "",
|
|
||||||
"carac": "pre",
|
"carac": "pre",
|
||||||
"duree": "",
|
"duree": "",
|
||||||
"cibles": "",
|
"cibles": "",
|
||||||
@ -323,7 +288,6 @@
|
|||||||
"portee": "",
|
"portee": "",
|
||||||
"resistance": "",
|
"resistance": "",
|
||||||
"resistanceautre":"",
|
"resistanceautre":"",
|
||||||
"pointsusagecourant": -1,
|
|
||||||
"isvirulence": false,
|
"isvirulence": false,
|
||||||
"virulence":"",
|
"virulence":"",
|
||||||
"description": ""
|
"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|}}
|
{{#each system.caracteristiques as |carac key|}}
|
||||||
{{#if (eq kind "physical")}}
|
{{#if (eq kind "physical")}}
|
||||||
<li class="item flexrow ">
|
<li class="item flexrow ">
|
||||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac"
|
<h4 class="item-name-label competence-name"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||||
data-key="{{key}}">{{carac.label}}</a></h4>
|
|
||||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
<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" />
|
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"
|
<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|}}
|
{{#each system.caracteristiques as |carac key|}}
|
||||||
{{#if (eq kind "mental")}}
|
{{#if (eq kind "mental")}}
|
||||||
<li class="item flexrow ">
|
<li class="item flexrow ">
|
||||||
<h4 class="item-name-label competence-name roll-style"><a class="roll-carac"
|
<h4 class="item-name-label competence-name"><a class="roll-carac" data-key="{{key}}">{{carac.label}}</a></h4>
|
||||||
data-key="{{key}}">{{carac.label}}</a></h4>
|
|
||||||
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
<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" />
|
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"
|
<input type="text" class="padd-right status-small-label color-class-common item-field-label-short"
|
||||||
@ -44,30 +42,18 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flexrow">
|
|
||||||
<label class="item-field-label-short">PV</label>
|
<div class="flexrow">
|
||||||
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}"
|
<label class="item-field-label-short">PV</label>
|
||||||
data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.pv.value" value="{{system.pv.value}}" data-dtype="Number" />
|
||||||
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" disabled
|
<input type="text" class="item-field-label-short" name="system.pv.max" value="{{system.pv.max}}" data-dtype="Number" />
|
||||||
data-dtype="Number" />
|
<label class="item-field-label-short">Malus</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.pv.mod" value="{{system.pv.mod}}"
|
<input type="text" class="item-field-label-short" value="{{pvMalus}}" data-dtype="Number" disabled />
|
||||||
data-dtype="Number" />
|
<span> </span>
|
||||||
<label class="item-field-label-short">Malus</label>
|
<label class="item-field-label-short">Tricherie</label>
|
||||||
<input type="text" class="item-field-label-short" value="{{pvMalus.value}}" data-dtype="Number" disabled />
|
<input type="text" class="item-field-label-short" name="system.rang.tricherie.value" value="{{system.rang.tricherie.value}}" data-dtype="Number" />
|
||||||
<span> </span>
|
<input type="text" class="item-field-label-short" name="system.rang.tricherie.max" value="{{system.rang.tricherie.max}}" data-dtype="Number" />
|
||||||
|
</div>
|
||||||
<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>
|
||||||
</div>
|
</div>
|
||||||
@ -76,12 +62,10 @@
|
|||||||
{{!-- Sheet Tab Navigation --}}
|
{{!-- Sheet Tab Navigation --}}
|
||||||
<nav class="sheet-tabs tabs" data-group="primary">
|
<nav class="sheet-tabs tabs" data-group="primary">
|
||||||
<a class="item" data-tab="competences">Compétences</a>
|
<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="combat">Combat</a>
|
||||||
<a class="item" data-tab="equipement">Equipement</a>
|
<a class="item" data-tab="equipement">Equipement</a>
|
||||||
<a class="item" data-tab="contact">Contacts</a>
|
<a class="item" data-tab="fee">Fée</a>
|
||||||
<a class="item" data-tab="biodata">Bio</a>
|
<a class="item" data-tab="biodata">Bio&Notes</a>
|
||||||
<a class="item" data-tab="notes">Notes</a>
|
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
{{!-- Sheet Body --}}
|
{{!-- Sheet Body --}}
|
||||||
@ -92,23 +76,43 @@
|
|||||||
|
|
||||||
<div class="flexcol">
|
<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>
|
<input type="checkbox" class="item-field-label-short" name="skill.system.predilection" {{checked skill.system.predilection}}/>
|
||||||
{{#each utileSkillsPhysical as |skillDef keyProfil|}}
|
|
||||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil
|
{{#each skill.system.specialites as |specialite key|}}
|
||||||
config=config}}
|
<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}}
|
{{/each}}
|
||||||
</div>
|
</ul>
|
||||||
|
|
||||||
<div>
|
|
||||||
{{#each utileSkillsMental as |skillDef keyProfil|}}
|
|
||||||
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillDef=skillDef keyProfil=keyProfil
|
|
||||||
config=config}}
|
|
||||||
{{/each}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
|
||||||
<div class="sheet-box color-bg-archetype">
|
<div class="sheet-box color-bg-archetype">
|
||||||
<ul class="item-list alternate-list">
|
<ul class="item-list alternate-list">
|
||||||
@ -120,24 +124,22 @@
|
|||||||
<label class="short-label">Niveau</label>
|
<label class="short-label">Niveau</label>
|
||||||
</span>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<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>
|
</li>
|
||||||
{{#each futileSkills as |skill key|}}
|
{{#each futileSkills as |skill key|}}
|
||||||
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
|
<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>
|
data-attr-key="tochoose">{{skill.name}}</a></span>
|
||||||
|
|
||||||
<select class="item-field-label-short edit-item-data" type="text" data-item-field="niveau"
|
<select class="item-field-label-short" type="text"
|
||||||
value="{{skill.system.niveau}}" data-dtype="Number">
|
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
|
||||||
{{selectOptions @root.config.listNiveau selected=skill.system.niveau}}
|
{{#select skill.system.niveau}}
|
||||||
|
{{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
|
||||||
|
{{/select}}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<div class="item-controls item-controls-fixed">
|
<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-edit" title="Edit 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-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@ -158,41 +160,39 @@
|
|||||||
<li class="item flexrow list-item items-title-bg">
|
<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"><strong>Esquive</strong></label>
|
||||||
<label class="item-field-label-medium">Masquée</label>
|
<label class="item-field-label-medium">Masquée</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee"
|
<input type="text" class="item-field-label-short" name="system.combat.esquive.masquee" value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
|
||||||
value="{{system.combat.esquive.masquee}}" data-dtype="Number" />
|
|
||||||
<label class="item-field-label-medium">Démasquée</label>
|
<label class="item-field-label-medium">Démasquée</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee"
|
<input type="text" class="item-field-label-short" name="system.combat.esquive.demasquee" value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
|
||||||
value="{{system.combat.esquive.demasquee}}" data-dtype="Number" />
|
|
||||||
<label class="item-field-label-short"> </label>
|
|
||||||
<label class="item-field-label-medium"><strong>Parade</strong></label>
|
<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.value" value="{{system.combat.parade.value}}" data-dtype="Number" />
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.parade.masquee"
|
|
||||||
value="{{system.combat.parade.masquee}}" data-dtype="Number" />
|
|
||||||
<label class="item-field-label-medium">Démasquée</label>
|
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.parade.demasquee"
|
|
||||||
value="{{system.combat.parade.demasquee}}" data-dtype="Number" />
|
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow list-item items-title-bg">
|
<li class="item flexrow list-item items-title-bg">
|
||||||
<label class="item-field-label-long">Rés. physique</label>
|
<label class="item-field-label-long">Rés. physique</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value"
|
<input type="text" class="item-field-label-short" name="system.combat.resistancephysique.value" value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
|
||||||
value="{{system.combat.resistancephysique.value}}" data-dtype="Number" />
|
|
||||||
<label class="item-field-label-short"> </label>
|
|
||||||
<label class="item-field-label-long">Rés. psychique</label>
|
<label class="item-field-label-long">Rés. psychique</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value"
|
<input type="text" class="item-field-label-short" name="system.combat.resistancepsychique.value" value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
|
||||||
value="{{system.combat.resistancepsychique.value}}" data-dtype="Number" />
|
|
||||||
<label class="item-field-label-short"> </label>
|
|
||||||
<label class="item-field-label-medium">Protection : </label>
|
<label class="item-field-label-medium">Protection : </label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.protection.value"
|
<input type="text" class="item-field-label-short" name="system.combat.protection.value" value="{{system.combat.protection.value}}" data-dtype="Number" />
|
||||||
value="{{system.combat.protection.value}}" data-dtype="Number" />
|
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow list-item items-title-bg">
|
<li class="item flexrow list-item items-title-bg">
|
||||||
<label class="item-field-label-long">Effets secondaires</label>
|
<label class="item-field-label-long">Effets secondaires</label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires"
|
<input type="text" class="item-field-label-short" name="system.combat.effetssecondaires" value="{{system.combat.effetssecondaires}}" data-dtype="String" />
|
||||||
value="{{system.combat.effetssecondaires}}" data-dtype="String" />
|
|
||||||
<label class="item-field-label-short"> </label>
|
|
||||||
<label class="item-field-label-long">Dissimulation : </label>
|
<label class="item-field-label-long">Dissimulation : </label>
|
||||||
<input type="text" class="item-field-label-short" name="system.combat.dissimulation.value"
|
<input type="text" class="item-field-label-short" name="system.combat.dissimulation.value" value="{{system.combat.dissimulation.value}}" data-dtype="Number" />
|
||||||
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>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@ -205,10 +205,13 @@
|
|||||||
<h3><label class="items-title-text">Armes</label></h3>
|
<h3><label class="items-title-text">Armes</label></h3>
|
||||||
</span>
|
</span>
|
||||||
<span class="item-field-label-short">
|
<span class="item-field-label-short">
|
||||||
<label class="short-label">Dégats</label>
|
<label class="short-label">Attaque</label>
|
||||||
</span>
|
</span>
|
||||||
<span class="item-field-label-short">
|
<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>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
@ -222,33 +225,19 @@
|
|||||||
<span class="item-name-label competence-name">{{arme.name}}</span>
|
<span class="item-name-label competence-name">{{arme.name}}</span>
|
||||||
|
|
||||||
<span class="item-field-label-short">
|
<span class="item-field-label-short">
|
||||||
{{arme.system.degats}}
|
<button class="roll-arme-offensif button-sheet-roll">Attaquer</button>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="item-field-label-short">
|
<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>
|
||||||
|
|
||||||
<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-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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>
|
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-edit" title="Edit 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-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@ -266,7 +255,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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>
|
class="fas fa-plus"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
@ -279,8 +268,8 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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-edit" title="Edit 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-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@ -292,15 +281,15 @@
|
|||||||
|
|
||||||
{{!-- Fee Tab --}}
|
{{!-- Fee Tab --}}
|
||||||
<div class="tab fee" data-group="primary" data-tab="fee">
|
<div class="tab fee" data-group="primary" data-tab="fee">
|
||||||
|
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<li class="item flexrow " data-item-id="{{fee._id}}" data-item-type="avantage">
|
<li class="item flexrow " data-item-id="{{fee._id}}" data-item-type="avantage">
|
||||||
<img class="item-name-img" src="{{fee.img}}" />
|
<img class="item-name-img" src="{{fee.img}}" />
|
||||||
<span class="item-field-label-long2">{{fee.name}}</span>
|
<span class="item-field-label-long2">{{fee.name}}</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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-edit" title="Edit 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-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</div>
|
</div>
|
||||||
@ -308,22 +297,13 @@
|
|||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<ul>
|
<ul>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short"
|
<label class="item-field-label-medium">Féerie</label>
|
||||||
data-rang-key="feerie">Féerie</a></label>
|
<input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
|
||||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.value"
|
<input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
|
||||||
value="{{system.rang.feerie.value}}" data-dtype="Number" />
|
<span class="item-field-label-long"></span>
|
||||||
<input type="text" class="item-field-label-short" name="system.rang.feerie.max"
|
<label class="item-field-label-medium">Masque</label>
|
||||||
value="{{system.rang.feerie.max}}" data-dtype="Number" />
|
<input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
|
||||||
<span class="item-field-label-medium"></span>
|
<input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
|
||||||
<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>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -338,8 +318,6 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{#each avantages as |avantage key|}}
|
{{#each avantages as |avantage key|}}
|
||||||
@ -348,8 +326,8 @@
|
|||||||
<span class="item-field-label-long2">{{avantage.name}}</span>
|
<span class="item-field-label-long2">{{avantage.name}}</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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-edit" title="Edit 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-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@ -364,8 +342,6 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{#each desavantages as |desavantage key|}}
|
{{#each desavantages as |desavantage key|}}
|
||||||
@ -374,8 +350,8 @@
|
|||||||
<span class="item-field-label-long2">{{desavantage.name}}</span>
|
<span class="item-field-label-long2">{{desavantage.name}}</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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-edit" title="Edit 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-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@ -390,8 +366,6 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{#each atouts as |atout key|}}
|
{{#each atouts as |atout key|}}
|
||||||
@ -400,58 +374,14 @@
|
|||||||
<span class="item-field-label-long2">{{atout.name}}</span>
|
<span class="item-field-label-long2">{{atout.name}}</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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-edit" title="Edit 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-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</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">
|
<div class="sheet-box color-bg-archetype">
|
||||||
<ul class="item-list alternate-list">
|
<ul class="item-list alternate-list">
|
||||||
<li class="item flexrow list-item items-title-bg">
|
<li class="item flexrow list-item items-title-bg">
|
||||||
@ -460,8 +390,6 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{#each capacites as |capa key|}}
|
{{#each capacites as |capa key|}}
|
||||||
@ -470,8 +398,8 @@
|
|||||||
<span class="item-field-label-long2">{{capa.name}}</span>
|
<span class="item-field-label-long2">{{capa.name}}</span>
|
||||||
<div class="item-filler"> </div>
|
<div class="item-filler"> </div>
|
||||||
<div class="item-controls item-controls-fixed">
|
<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-edit" title="Edit 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-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
@ -483,148 +411,14 @@
|
|||||||
|
|
||||||
</div>
|
</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 --}}
|
{{!-- Biography Tab --}}
|
||||||
<div class="tab biodata" data-group="primary" data-tab="biodata">
|
<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">
|
<div class="flexrow">
|
||||||
<ul>
|
<ul>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="item-field-label-long2">Nom humain</label> <input type="text" class=""
|
<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" />
|
||||||
name="system.biodata.nomhumain" value="{{system.biodata.nomhumain}}" data-dtype="String" />
|
|
||||||
</li>
|
|
||||||
<li class="flexrow item">
|
|
||||||
<label class="item-field-label-long2">Activités</label> <input type="text" class=""
|
|
||||||
name="system.biodata.activites" value="{{system.biodata.activites}}" data-dtype="String" />
|
|
||||||
</li>
|
|
||||||
<li class="flexrow item">
|
|
||||||
<label class="item-field-label-long2">Apparence masquée</label> <input type="text" class=""
|
|
||||||
name="system.biodata.apparencemasquee" value="{{system.biodata.apparencemasquee}}" data-dtype="String" />
|
|
||||||
</li>
|
|
||||||
<li class="flexrow item">
|
|
||||||
<label class="item-field-label-long2">Apparence démasquée</label> <input type="text" class=""
|
|
||||||
name="system.biodata.apparencedemasquee" value="{{system.biodata.apparencedemasquee}}"
|
|
||||||
data-dtype="String" />
|
|
||||||
</li>
|
|
||||||
<li class="flexrow item">
|
|
||||||
<label class="item-field-label-long2">Titre et Famille</label> <input type="text" class=""
|
|
||||||
name="system.biodata.titrefamille" value="{{system.biodata.titrefamille}}" data-dtype="String" />
|
|
||||||
</li>
|
|
||||||
<li class="flexrow item">
|
|
||||||
<label class="item-field-label-long2">Factions féériques</label> <input type="text" class=""
|
|
||||||
name="system.biodata.factionfeerique" value="{{system.biodata.factionfeerique}}" data-dtype="String" />
|
|
||||||
</li>
|
|
||||||
<li class="flexrow item">
|
|
||||||
<label class="item-field-label-long2">Traits de caractères dominants</label> <input type="text" class=""
|
|
||||||
name="system.biodata.traitscaracteres" value="{{system.biodata.traitscaracteres}}" data-dtype="String" />
|
|
||||||
</li>
|
|
||||||
<li class="flexrow item">
|
|
||||||
<label class="item-field-label-long2">Langues</label> <input type="text" class=""
|
|
||||||
name="system.biodata.langues" value="{{system.biodata.langues}}" data-dtype="String" />
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -633,12 +427,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label">Fortune</label>
|
<label class="generic-label">Sexe</label>
|
||||||
<input type="text" class="" name="system.biodata.fortune" value="{{system.biodata.fortune}}"
|
|
||||||
data-dtype="String" />
|
|
||||||
</li>
|
|
||||||
<li class="flexrow item">
|
|
||||||
<label class="generic-label">Genre</label>
|
|
||||||
<input type="text" class="" name="system.biodata.sex" value="{{system.biodata.sex}}"
|
<input type="text" class="" name="system.biodata.sex" value="{{system.biodata.sex}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
@ -652,23 +441,18 @@
|
|||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="generic-label">Taille Masquée</label>
|
<label class="generic-label">Taille</label>
|
||||||
<input type="text" class="" name="system.biodata.taillemasquee" value="{{system.biodata.taillemasquee}}"
|
<input type="text" class="" name="system.biodata.size" value="{{system.biodata.size}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="generic-label">Taille Démasquée</label>
|
<label class="generic-label">Cheveux</label>
|
||||||
<input type="text" class="" name="system.biodata.tailledemasquee"
|
<input type="text" class="" name="system.biodata.hair" value="{{system.biodata.hair}}"
|
||||||
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}}"
|
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label">Points d'héritage</label>
|
<label class="generic-label">Expérience</label>
|
||||||
<input type="text" class="" name="system.rang.heritage.value" value="{{system.rang.heritage.value}}"
|
<input type="text" class="" name="system.experience.value" value="{{system.experience.value}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
@ -678,66 +462,32 @@
|
|||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="item flexrow">
|
<li class="item flexrow">
|
||||||
<label class="generic-label">Poids Masqué</label>
|
<label class="generic-label">Yeux</label>
|
||||||
<input type="text" class="" name="system.biodata.poidsmasquee" value="{{system.biodata.poidsmasquee}}"
|
<input type="text" class="" name="system.biodata.eyes" value="{{system.biodata.eyes}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="flexrow item">
|
||||||
<label class="generic-label">Poids Démasqué</label>
|
<label class="generic-label">Main préférée</label>
|
||||||
<input type="text" class="" name="system.biodata.poidsdemasquee" value="{{system.biodata.poidsdemasquee}}"
|
<input type="text" class="" name="system.biodata.preferredhand" value="{{system.biodata.preferredhand}}"
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
<li class="item flexrow">
|
<li class="flexrow item">
|
||||||
<label class="generic-label">XP</label>
|
<label class="generic-label">Poids</label>
|
||||||
<input type="text" class="" name="system.experience.value" value="{{system.experience.value}}"
|
<input type="text" class="" name="system.biodata.weight" value="{{system.biodata.weight}}"
|
||||||
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}}"
|
|
||||||
data-dtype="String" />
|
data-dtype="String" />
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="tab notes" data-group="primary" data-tab="notes">
|
|
||||||
<span>
|
<span>
|
||||||
<h3>Historique</h3>
|
<h3>Description</h3>
|
||||||
</span>
|
</span>
|
||||||
<div class="medium-editor item-text-long-line">
|
<div class="medium-editor item-text-long-line">
|
||||||
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
|
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<span>
|
|
||||||
<h3>Notes diverses</h3>
|
|
||||||
</span>
|
|
||||||
<div class="medium-editor item-text-long-line">
|
|
||||||
{{editor playernotes target="system.biodata.playernotes" button=true owner=owner editable=editable}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<span>
|
|
||||||
<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>
|
</div>
|
||||||
|
|
||||||
</section>
|
</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>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Assomer {{defenderName}} en état de : {{etatAssommer}}</li>
|
<li>Arme : {{arme.name}} (+{{arme.system.totalDegats}})</li>
|
||||||
|
<li>Dégats : {{finalResult}}</li>
|
||||||
{{#if isSuccess}}
|
{{#if targetVigueur}}
|
||||||
<li>Marge : {{marge}}</li>
|
<li>Vigueur de la cible : {{targetVigueur}}</li>
|
||||||
<li>{{defenderName}} est assomé pour {{dureeAssommer}} minutes !</li>
|
<li>Etats Combativité supplémentaires perdus (manuel): {{nbEtatPerdus}} </li>
|
||||||
{{else}}
|
|
||||||
<li>{{defenderName}} n'a pas été assomé et est conscient la tentative !</li>
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
@ -18,76 +18,33 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<li class="heritiers-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
|
<li class="hawkmoon-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
|
||||||
|
|
||||||
{{#if rang}}
|
|
||||||
<li>{{rang.label}} : {{rang.value}}</li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if competence}}
|
{{#if competence}}
|
||||||
<li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li>
|
<li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li>
|
||||||
{{#if useSpecialite}}
|
|
||||||
<li>Bonus de spécialité +1</li>
|
|
||||||
{{/if}}
|
|
||||||
{{/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>Formule : {{diceFormula}}</li>
|
||||||
<li>Résultat du dé : {{diceResult}} </li>
|
<li>Résultat du dé : {{diceResult}}</li>
|
||||||
|
|
||||||
{{#if adjacentFaces}}
|
<li>Total : {{finalResult}}</li>
|
||||||
<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}} {{#if (gt sdValue "-1")}}(Marge : {{marge}}){{/if}}</li>
|
{{#if sdValue}}
|
||||||
|
|
||||||
|
|
||||||
{{#if (gt sdValue "-1")}}
|
|
||||||
<li>Seuil de difficulté : {{sdValue}}</li>
|
|
||||||
{{#if isSuccess}}
|
{{#if isSuccess}}
|
||||||
<li class="chat-success">Succès...
|
<li class="chat-success">Succés...
|
||||||
</li>
|
</li>
|
||||||
{{else}}
|
{{else}}
|
||||||
<li class="chat-failure">Echec...</li>
|
<li class="chat-failure">Echec...</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if isBrelan}}
|
|
||||||
<li class="chat-success">Brelan sur 3 dés !</li>
|
|
||||||
{{/if}}
|
|
||||||
{{#if isSuite}}
|
|
||||||
<li class="chat-success">Suite sur 3 dés !</li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if isCriticalSuccess}}
|
{{#if isCriticalSuccess}}
|
||||||
<li class="chat-success">Réussite Critique !!!</li>
|
<li class="chat-success">Réussite Critique !!!</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if isCriticalFailure}}
|
{{#if isCriticalFailure}}
|
||||||
<li class="chat-failure">Echec Critique !!!</li>
|
<li class="chat-failure">Echec Critique !!!</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</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>
|